1

图像中有许多特定像素,我想在这些像素周围找到最小局部梯度。对于图像中的所有像素,我可以很容易地做到这一点:

Func grad, gradmin;
grad(x, y) = pow(input(x+1, y) - input(x-1, y), 2) + pow(input(x, y+1) - input(x, y-1), 2);

RDom r(-1, 3, -1, 3);
gradmin(x, y) = minimum(grad(x + r.x, y + r.y));

但是如何为图像中的一组特定像素做到这一点呢?如果它们是有图案的,是否可以做这样的事情?:

RDom r(-1, 3, -1, 3);
gradmin(x, y, i) = minimum(grad(x*f(i) + r.x, y*f(i) + r.y));

假设 (x, y) 从 运行(0 .. n, 0 .. m)。我要达到的效果与将循环计数器增加大于 1 的步长相同。

另外,有没有办法记录最小梯度点的x,y坐标是什么?

4

1 回答 1

0

没有什么可以阻止您定义访问坐标的表达式。据我了解grad(x*f(i))应该有效。你试过了吗?

关于第二个问题,您可以简单地使用 Halide argmin函数。

于 2015-06-12T11:44:57.553 回答