Как определить 45-градусные края на изображении - PullRequest
7 голосов
/ 17 декабря 2011

Если вместо получения всех ребер, я хочу только ребра, которые составляют углы 45 градусов. Что такое метод, чтобы обнаружить это?

Можно ли обнаружить все ребра, а затем как-нибудь запустить ограниченное грубое преобразование, чтобы определить, какие ребра составляют 45 градусов?

Ответы [ 3 ]

4 голосов
/ 18 декабря 2011

Что не так с использованием элемента диагональной структуры и простым свертыванием изображения ??

Подробнее

Пожалуйста, прочитайте здесь , и должно стать понятно, как построить структурирующий элемент. Если вы знакомы со сверткой, то вы можете построить простую структурную матрицу, которая усиливает диагонали без теории

{ 0,  1,  2}, 
{-1,  0,  1}, 
{-2, -1,  0}

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

Принимая пример. Следующая картинка

enter image description here

, свернутый в приведенной выше матрице, дает изображение с уровнем серого, где самые высокие значения пикселей имеют те линии, которые в точности равны 45 градусам.

enter image description here

Теперь подход состоит в том, чтобы просто преобразовать изображение в двоичную форму. Et voila

enter image description here

1 голос
/ 18 декабря 2011

Если вы используете ядро, но хотите получить уравнения для линий, то вам все равно придется выполнить подгонку линий после того, как будут найдены краевые пиксели.Если вы уверены, что линии ровно под 45 градусов, то для определения уравнения линии достаточно знать точку (x, y) на любой обнаруженной линии или отрезке.

Пространство параметров Hough (rho, theta) может использовать любые диапазоны rho и theta, которые вы хотите.Вы можете предварительно обработать изображение, чтобы расположить соседние пиксели под нужным углом.Например, дать «бонусную точку» краевому пикселю, если он имеет 8 соседей под соответствующим углом.Вы, безусловно, можете смешать метод на основе ядра (например, предложенный галирутан) с параметрическим или беспараметрическим алгоритмом Хоу.

Недавняя реализация Хоу работает на невероятно высоких скоростях, поэтому, если вы ищете быстрое решениеВы можете скачать открытый исходный код, а затем просто отфильтровать выходные данные.

«Обнаружение линий в реальном времени с помощью улучшенной схемы голосования с преобразованием Хафа» Фернандеса и Оливейры http://www.ic.uff.br/~laffernandes/projects/kht/index.html

0 голосов
/ 17 декабря 2011

Прежде всего, это можно сделать как постобработку.Результат Hough находится в пространстве параметров (угол, радиус).Таким образом, вы можете просто взять срез, скажем, угол = (45-5,45 + 5) и все радиусы.

Альтернативный метод состоит в том, что выходные данные обнаружения края будут содержать только 45/135 угловых границ.

...