Альтернативи перетворенню Хоффа для виявлення сітчастої структури


16

У мене є зображення, яке складається з декількох "кутів", які утворюють сітку:

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

Після деяких пошуків Хоф здався непоганим, бо його не турбують перерви в лініях. Однак у мене проблема полягає в тому, що мої лінії "жирні", і будь-яке виявлення ребер, яке я запускаю (у цьому випадку Кенні), підбирає краї лінії, а не середину:

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

Це означає, що трансформація Хаффа закінчується вибиранням однієї (або обох) сторін моїх сіток, а не середини.

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

З огляду на те, що я знаю, що шукаю (ця сітоподібна форма, завжди приблизно однакова), чи є кращий спосіб виконати частину «виявлення краю», щоб дати мені центральні лінії, чи я повинен шукати зовсім іншим методом?


У контексті ця сітка буде порівнюватися з номінальною сіткою для проведення калібрування камери Tsai.
Benjol

"Виявлення ребер, які я запускаю, відбирає краї рядка" Так, тому що виявлення ребер перетворює краї в хребти, а ваше зображення вже є хребтами. Край - це межа між світлим і темним.
ендоліт

Відповіді:


10

Трансформація Хауфа справді допомогла б підібрати Сітку в цьому випадку. Для "тонких" ліній, ви можете розглянути операцію " Скелетонізація"

Це створило б такий образ: Виведення скелета

Завдяки тому, як працює скелетонізація, вона все одно буде створювати деякі лінії, які будуть здаватися нерелевантними для сітки, але ці лінії у напрямку "помилкових" напрямків не так вже й багато (принаймні на даному зображенні), щоб заплутати виявлення ліній трансформації Хофа. Занадто багато, і він чітко підбере два основні набори ліній у різних напрямках. (Ось як виглядає вихід HT:) введіть тут опис зображення

Якщо ви використовуєте MATLAB, ви можете перевірити цю довідкову сторінку


Спасибі! Це дуже допомагає. Ще не отримав мою ліцензію MATLAB, але я спробував це за допомогою SimpleSkeletonization AForge, і він працює краще ... Хоча все ще не ідеально. Я перегляну цю тему пізніше, коли отримаю реальні дані для перевірки.
Benjol

Ви можете спробувати спершу встановити граничне значення оригінального зображення на деякому порозі, який, здається, створює "оптимальні" лінії жирової сітки. Що я маю на увазі під оптимальним, це те, що вони принаймні пов'язані. Це може підвищити ефективність скелетонізації, але у вас буде додатковий параметр для визначення (поріг). Можливо, варто також розглянути, як покращити набуття зображення.
A_A

так, як я вже говорив, коли у мене будуть реальні дані, з якими варто грати, варто буде витратити свій час на точну настройку системи. Одне з головних сумнівів, які я маю щодо Хоґа в цілому, полягає в тому, що дискретизація тети буде працювати проти потрібної точності пікселів. (Це, і я не зовсім переконаний, що аберація об'єктива не означатиме, що лінії можуть бути вигнуті, немає прямих ...)
Benjol

11

Альтернативою Хоховій трансформації буде Радонова трансформація ( 1 , 2 ). Приблизний опис алгоритму виявлення сітчастої структури може виглядати так:

1. Perform Radon Transform from 0 to 180 degrees.
2. Find the two highest maxima in the angle bins.
3. For the two angles with maximal amplitude find the local maxima within the bin.
4. You can use the constraint that the maxima should have even spacing to deal with outliers.

Редагувати :

Ось невеликий фрагмент matlab для ілюстрації кроку 1-3:

im = imread('grid.png');
[R, xp] = radon(im, 0:180);
imagesc(0:180, xp, R)

Результат Радонської трансформації

plot(max(R)) % the two maxima are at 65 & 117 degrees

Максима за всіма кутами

plot(R(:, 65))

Максима при 65 градусах

plot(R(:,117))

Максима на 117 градусів

Щоб відповісти на ваше запитання з коментарів: Мені здається, що з одного із наведених вами образів прикладів, що цей метод є більш надійним щодо невеликих дефектів виявленої сітки. Скелети рідко дають прямі лінії, що може бути недоліком для подальшої трансформації Хоуфа.


Спасибі, чи не могли б ви сказати мені декількома словами, яку перевагу ви очікуєте від перетворення Радону в порівнянні з трансформацією Хога?
Benjol

@benjol, я оновив свою відповідь.
Бьорнц

Дуже приємно, велике спасибі Як тільки ІТ дозволить мені отримати доступ до Matlab, я спробую це!
Benjol

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