эффективная линия от грубых координат преобразования - PullRequest
1 голос
/ 24 сентября 2011

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

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

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

tmp = (int) ((i * cos (angle)) + (j * sin (angle)));

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

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

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

1 Ответ

5 голосов
/ 24 сентября 2011

Вы можете решить свое уравнение для 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)
...