Halide 如何在卤化物中特定像素的邻域上执行操作?

Halide 如何在卤化物中特定像素的邻域上执行操作?,halide,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)); 但是如何对图像中

在一幅图像中有许多特定的像素,我想在这些像素周围找到最小的局部梯度。我可以很容易地为图像中的所有像素执行此操作:

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坐标是多少?

没有什么可以阻止您定义访问坐标的表达式。 据我所知,gradx*fi应该可以工作。你试过了吗

关于第二个问题,你可以简单地使用卤化物函数