如何在Halide中对特定像素的邻域执行操作?

时间:2015-01-27 13:26:39

标签: halide

图像中有许多特定像素,我想在其周围找到最小局部渐变。我可以很容易地为图像中的所有像素做到这一点:

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坐标是什么?

1 个答案:

答案 0 :(得分:0)

没有什么能阻止你定义访问坐标的表达式。 据我所知,grad(x*f(i))应该有效。你试过吗?

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