Найти конкретную линию на картинке

9

Я хочу найти линию между синим цветом и серым цветом на следующем рисунке:

введите описание изображения здесь

Точнее, конечные точки этой линии.

Хаф трансформирует выбор? Если да, то как мне настроить картинку перед использованием Hough?

Любой способ решения этой проблемы был бы полезен.


источник
Сделайте обнаружение края перед преобразованием Хафа. Это превратит этот переход в яркую линию с черным с обеих сторон
эндолит

Ответы:

10

В общем, вам нужен детектор краев, такой как детектор краев Canny, для такого рода проблем. Преобразование Хафа полезно для выделения линий, а не краев.

Тем не менее, в этом конкретном случае вам лучше сделать что-то вроде:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);

так как это такое простое изображение.

Nzbuu
источник
0

Для изображения это простое ядро ​​свертки, подобное следующему, хорошо найдет ребра:

[-1 2 - 1]

Это дает один краевой пиксель в каждой краевой точке. Нет суеты, нет суеты. Кэнни слишком вовлечен в эту проблему. Если вы хотите найти граничные точки для линий под любым углом, то вы можете использовать простой лапласиан, лапласиан гауссов (LoG) или разность гауссов (DoG). Sobel и Prewitt также просты, но неуместны, поскольку они дают линию «двойной толщины».

Здесь описана злая быстрая реализация Hough: http://www.ic.uff.br/~laffernandes/projects/kht/index.html.

Существуют также алгоритмы «без параметров», которые очень быстры, но немного сложны в реализации и отладке.

Rethunk
источник