Разбиение координат на 3 подпространства для устранения неограниченности - PullRequest
9 голосов
/ 04 ноября 2010

Я пытаюсь реализовать каскадное преобразование Хафа (я уже реализовал «нормальную» версию.), Но у меня возникают проблемы с пониманием следующего:

После применения HT к изображению яоставил с прямыми линиями в трудном пространстве.Каскадная версия HT требует, чтобы я разбил жесткое пространство на 3 подпространства, чтобы решить проблему неограниченных значений.

Как я могу это сделать?

Воткартина того, как расщепляется пространственное пространство: alt text

Чтобы восстановить ограниченность пространства параметров при сохранении симметричной пространственной двойственности, мы разделим пространство (a, b) натри ограниченных подпространства, как показано на рисунке ниже.Первое подпространство также имеет координаты a и b, но только для |а |<= 1 и |б |<= 1. Если |а |> 1 и |б |<= |а |точка (a, b) оказывается во втором подпространстве с координатами 1 / a и b / a.Если, наконец, |б |> 1 и |а |<|b |, мы используем третье подпространство с координатами 1 / b и a / b. </p>

Здесь я серьезно запутался, предположим, что у меня есть линия в рабочем пространстве.Как это будет разделяться, если это нарушает |а |<= 1 и |б |<= 1? </p>

Должен ли я просто пройти все пиксели в строке, и если рассматриваемый пиксель имеет координаты больше, чем |а |<= 1 и |б |<= 1, я строю его во 2-м подпространстве? </p>

Прошу прощения, если этот вопрос не приветствуется в Stack Overlow - есть ли другой сайт, где я могу задавать вопросы об алгоритмах?

Источник изображения и приведенная выше цитата

1 Ответ

1 голос
/ 04 октября 2011

Предположим, у вас есть точка (x, y).Под преобразованием Хафа, как представлено, оно переходит к линии

a x + b + y = 0

Это соответствует отдельной строке на каждом из ваших графиков подпространства:

Subspace 1: a x + b + y = 0
Subspace 2: x + (b/a) + (1/a) y = 0
Subspace 2: (a/b) x + 1 + (1/b) y = 0

Например, с точкой (2, 1) Вы получите три строки:

Subspace 1: 2a + b + 1 = 0
Subspace 2: 2 + (b/a) + (1/a) = 0
Subspace 2: 2(a/b) + 1 + (1/b) = 0

Или поместите в y = m x + c форму:

Subspace 1: y = -2x - 1
Subspace 2: y = -x - 2
Subspace 2: y = -x/2 - 1
...