Я пытаюсь реализовать алгоритм преобразования Хафа. Алгоритм работает, но медленно. В настоящее время я вычисляю ро по этому уравнению в двух циклах:
для я = 1: длина (х)
j=1; for theta = -pi/2:nBinsTheta:pi/2-nBinsTheta ro =round(x(i).*cos(theta) + y(i).*sin(theta)); .... j = j + 1; end
конец
Как я могу упростить это, чтобы работать без циклов? Мне нужно вычислить ro без петель, но как мне это сделать, чтобы охватить все возможные тета?
РЕДАКТИРОВАТЬ: Теперь мне нужно знать, как добавить 1 к обозначенной ячейке в матрице аккумулятора с заданным вектором координат x и y. Например, скажем, что у меня есть такие векторы, как:
x: [1 2 1 3]
y: [1 3 1 4]
Я хотел бы решить эту проблему без циклов. Я знаю, что мне нужно преобразовать в линейные индексы, используя sub2ind, но проблема в том, что будет много таких же линейных индексов, например, что я дал, будет 2x1 (1 ,1 координата повторяется дважды). Если вы попытаетесь добавить 1 так:
A([1 1]) = A([1 1]) + 1;
он добавит 1 только один раз, это моя проблема.
j
там? - person Divakar   schedule 16.11.2014