Знайдіть на малюнку конкретний рядок


9

Я хочу знайти межу між кольором синього та кольором сірим на наступному малюнку:

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

Точніше, кінцеві точки цього рядка.

Чи перетворення Хаффа є вибором? Якщо так, як я повинен налаштувати зображення перед використанням Hough?

Будь-який спосіб вирішити це було б корисно.


Зробіть виявлення ребер до перетворення Хауфа. Це перетворить цей перехід у яскраву лінію з чорною обома сторонами
ендоліт

Відповіді:


10

Загалом, для такого типу проблем вам потрібен детектор кромки, як і детектор краю Canny. Трансформація Хаффа корисна для вилучення ліній, а не ребер.

Однак у цьому конкретному випадку вам краще зробити щось на кшталт:

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

оскільки це таке просте зображення.


0

Для зображення це просте ядро ​​згортання, як описано нижче, добре знайде краї:

[-1 2 - 1]

Це дає по одному крайовому пікселю в кожній крайовій точці. Ні суєти, ні мюс. Кенні занадто причетний до цієї проблеми. Якщо ви хочете знайти крайові точки для ліній під будь-яким кутом, то ви можете використовувати простий лаплакійський, лаплакійський гауссовий (LoG) або різницю гауссового (DoG). Sobel і Prewitt також прості, але недоречні, оскільки дають лінію "подвійної товщини".

Тут описана лукава швидка реалізація Хаффа: http://www.ic.uff.br/~laffernandes/projects/kht/index.html

Існують також алгоритми "параметри Hough", які дуже швидкі, але трохи складні в реалізації та налагодженні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.