эффективная линия из координат преобразования hough

я работаю с hough преобразованием (полярные координаты). я хотел бы вычислить векторное представление линии от координаты от преобразования hough.

моя текущая реализация перебирает все координаты пикселей в изображении от (0,0) до (M, N), где M и N — размер изображения. когда цикл пересекает пространство, вычисляется это значение:

// угол и ро — полярные координаты из пространства хоу.

tmp = (int) ( (i * cos (угол) ) + ( j * sin (угол) ) );

где tmp - rho == 0, является частью строки, поэтому я отслеживаю эту позицию. когда цикл достигает конца изображения (i,j) == (M,N), цикл выполняется снова с противоположного направления (M, N) к (0,0).

первая (tmp-rho == 0), идущая слева направо, и вторая (tmp-rho == 0), идущая справа налево, являются координатами линии. Затем я вычитаю эти координаты пикселей, чтобы получить вектор линии в пространстве hough.

это ужасно неэффективно (медленно), и я на 100% уверен, что есть лучший способ вычислить это, но я не могу понять это. любая помощь будет принята с благодарностью!


person ct_    schedule 24.09.2011    source источник


Ответы (1)


Вы можете решить свое уравнение для i = 0, i = M, j = 0, j = N вместо цикла

rho = i * cos(angle) + j * sin(angle)

i = 0 --> j1 = rho / sin(angle)
i = M --> j2 = (rho - M*cos(angle)) / sin(angle)
j = 0 --> i1 = rho / cos(angle)
j = N --> i2 = (rho - N*sin(angle)) / cos(angle)
person 6502    schedule 24.09.2011
comment
Благодарность! Я боялся, что это окажется чем-то настолько простым. Я посмотрю сегодня вечером. - person ct_; 25.09.2011