2015-01-27 3 views
1

В изображении есть несколько конкретных пикселей, вокруг которых я хочу найти минимальный локальный градиент. Я могу сделать это достаточно легко для всех пикселей изображения:Как выполнять операции над окрестностями конкретных пикселей в 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)); 

предполагая (х, у) бегите от (0 .. n, 0 .. m). Эффект, который я собираюсь, такой же, как приращение счетчика циклов на шаг больше 1.

Также есть способ записать, какие координаты x, y минимальной точки градиента были?

ответ

0

Ничего не мешает вам определить выражение, которое обращается к координатам. Насколько я понимаю grad(x*f(i)) должен работать. Ты это пробовал ?

Что касается второго вопроса, вы можете просто использовать функцию Halide argmin.

 Смежные вопросы

  • Нет связанных вопросов^_^