38

Я просто занимаюсь приключениями и делаю свой первый шаг ребенка к компьютерному зрению. Я попытался реализовать Преобразование Хафа самостоятельно, но я просто не получаю всю картину. Я прочитал запись в википедии и даже оригинальное «использование преобразования hough для обнаружения линий и кривых в картинках» Ричарда Дуды и Питера Харта, но не помогло.Explain Hough Transformation

Может кто-нибудь помочь объяснить мне более дружелюбный язык?

ответ

32

Общепринято рассматривать линию в координатах прямоугольника, то есть y = mx + b. Как гласит статья Википедии, линия также может быть выражена в полярной форме. Преобразование Hough использует это изменение представления (для строк, во всяком случае. Обсуждение также может быть применено к кругам, эллипсам и т. Д.).

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

Чтобы подвести итог, пиксели «зажгли» в краевой изображения преобразуются в полярной форме, то есть их положение представляется с использованием направление тета и расстояние г - вместо х и у. (Центр изображения обычно используется в качестве контрольной точки для этого изменения координат.)

преобразования

Хока, по существу, гистограмма. Предполагается, что сопоставление граничных пикселей с теми же тетами и r определяет линию на изображении. Чтобы вычислить частоту возникновения, theta и r дискретизированы (разделены на несколько ячеек). После того как все пиксели краев были преобразованы в полярную форму, бункеры анализируются для определения линий в исходном изображении.

Распространено искать N наиболее частые параметры - или порог таких параметров, что рассчитывает меньше, чем некоторые п игнорируются.

Я не уверен, что этот ответ лучше, чем источники, которые вы изначально представляли, - есть ли определенный момент, за который вы застряли?

+0

Ваш ответ хороший. Он вновь подтверждает материал, который я прочитал в другом месте. Ответ, приведенный ниже, также сказал мне, что у меня возникли проблемы с отображением: рассчитывается вся возможная комбинация параметров. Поэтому моя голова становится более понятной, просто слушая ее по-разному. – Haoest

+3

Для просмотра места для голосования доступно [http://gmarty.github.io/hough-transform-js/](http://gmarty.github.io/hough-transform-js/) – user1311069

15

Преобразование Хафа - это способ нахождения наиболее вероятных значений, которые представляют собой линию (или круг, или многое другое).

Вы передаете преобразование Хафа изображения строки в качестве входного сигнала. Это изображение будет содержать два типа пикселей: те, которые являются частью линии, и те, которые являются частью фона.

Для каждого пикселя, который является частью линии, вычисляются все возможные комбинации параметров. Например, если пиксель в координате (1, 100) является частью линии, то это может быть частью линии, где градиент (m) = 0 и y-перехват (c) = 100. Он также может быть частью m = 1, c = 99; или m = 2, c = 98; или m = 3, c = 97; и так далее. Вы можете решить линейное уравнение y = mx + c, чтобы найти все возможные комбинации.

Каждый пиксель дает один голос каждому из параметров (m и c), которые могли бы его объяснить. Таким образом, вы можете себе представить, если ваша линия имеет 1000 пикселей в нем, то правильная комбинация m и c будет иметь 1000 голосов.

Комбинация m и c, которая имеет наибольшее количество голосов, является тем, что возвращается в качестве параметров для линии.

+0

очень полезно, спасибо. – Haoest

102

Вот очень простое, визуальное объяснение того, как Хаф Transform работы для обнаружения линий на изображении:

enter image description here

+0

Спасибо за замечательное иллюстрированное объяснение! Очень хорошо! –

+1

Отличный пример! Возможно, потребуется немного, вы упомянули линии рисования вдоль краев и показали, что эти ребра являются точными, но на самом деле эти линии являются лишь касательной к этим краям. – SIslam

+0

@mlai, Вы создали это изображение? Если это так, я могу использовать его для своих магистерских диссертаций, если вы не можете показать мне, где вы его получили, мне это нравится?!?! Спасибо –

1

Вот другая точка зрение (один используется в пилотном эпизоде ​​телешоу Numbers): Представьте себе, что спринклер с газонами, похожий на фонтан, был где-то на лужайке раньше, бросая капли воды вокруг себя. Теперь спринклер ушел, но капли остаются. Представьте, что каждый капля превращается в собственный спринклер, сам изгоняющий капельки вокруг себя - во всех направлениях, потому что капля не знает, в каком направлении она появилась. Это будет рассеивать много воды на земле, за исключением того, что будет пятно, где много воды попадает из всех капель одновременно. Это место, где был оригинальный спринклер.

Приложение к (например) обнаружению линии аналогично. Каждая точка изображения является одной из исходных капель; когда он действует как спринклер, он отправляет свои собственные капли, обозначающие все линии, которые могут проходить через эту точку. Места, где много вторичных капель земли представляют параметры линии, которая проходит через множество точек изображения - VOILA! Обнаружена линия!