图像中有许多特定像素,我想在其周围找到最小局部渐变。我可以很容易地为图像中的所有像素做到这一点:
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坐标是什么?
答案 0 :(得分:0)
没有什么能阻止你定义访问坐标的表达式。
据我所知,grad(x*f(i))
应该有效。你试过吗?
关于第二个问题,您可以简单地使用Halide argmin函数。