Виявити кругові візерунки в даних хмарних даних


10

Для деякого алгоритму відновлення обсягу, над яким я працюю, мені потрібно виявити довільну кількість кругових шаблонів у даних 3d-точок (що надходять від пристрою LIDAR). Шаблони можуть бути довільно орієнтовані в просторі, і вважати, що вони лежать (хоча і не ідеально) у тонких 2d площинах. Ось приклад з двома колами в одній площині (хоча пам’ятайте, що це 3d-пробіл):

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

Я спробував багато підходів .. найпростіший (але той, що працює найкраще до цих пір) - це кластеризація на основі розрізнених наборів графіка найближчого сусіда. Це працює досить добре, коли візерунки знаходяться далеко один від одного, але менше, так як кола, як у прикладі, дійсно близькі один до одного.

Я спробував K-засоби, але це не справляється: я підозрюю, що розташування кільцевих точок може не підходити. Плюс у мене є додаткова проблема - не знати заздалегідь значення К.

Я спробував більш складні підходи, засновані на виявленні циклів у найближчому сусідньому графіку, але те, що я отримав, було занадто крихким або обчислювально дорогим.

Я також читав про багато споріднених тем (перетворення Хаффа тощо), але, здається, ніщо не ідеально застосовується в цьому конкретному контексті. Будь-яка ідея чи натхнення будуть вдячні.


Простіше питання: як би ви вирішили виявити відрізки ліній у двовимірних даних?
charles.y.zheng

".. як ті, що в прикладах"? Які приклади? Чи можете ви додати посилання?
onestop

Перетворення Хаффа - очевидний вибір. Це має добре працювати.
whuber

Тим часом я просто отримав достатньо репутації, щоб додати приклад зображення, про який я мав на увазі.
Чаввін

3
Це не проблема кластеризації. У статистиці "кластери" складаються з наборів об'єктів, які взаємно ближче один до одного, ніж інші об'єкти. Близькість не захоплює циркулярність: тому ні K-засоби, ні будь-який інший алгоритм кластеризації не працюватимуть. З цієї причини це питання, ймовірно, краще вписується в обробку зображень або на ГІС-сайти, де ви можете знайти експертів з цього питання.
whuber

Відповіді:


9

Узагальнена трансформація Хаффа - саме те, що ви хочете. Складність полягає в тому, щоб зробити це ефективно, адже простір кіл у 3D має шість розмірів (три для центру, два для орієнтації на площину, один для радіуса). Це, здається, виключає прямий розрахунок.

Однією з можливостей є підкрадання результату шляхом послідовності більш простих перетворень Хоф. Наприклад, ви можете почати з (звичайного) перетворення Hough для виявлення планарних підмножин: для обчислення потрібна лише 3D сітка. Для кожного виявленого плоского підмножини наріжте початкові точки уздовж цієї площини та виконайте узагальнене перетворення Хоффа для виявлення кола. Це повинно працювати добре за умови, що в оригінальному зображенні немає багато копланарних точок (окрім тих, що утворюються колами), які могли б заглушити сигнал, породжений колами.

Якщо розміри кола мають заздалегідь задану верхню межу, ви потенційно можете заощадити багато обчислень: замість того, щоб переглядати всі пари чи трійки точок у вихідному зображенні, ви можете зосередитись на парах чи трійках у межах обмеженого сусідства кожної точки.


Я б спробував поєднати всі запропоновані підходи: спочатку кластер базується лише на відстані, як обговорювався оригінальний плакат, який дасть вам кластери, які можуть складатися з декількох кіл. Потім використовуйте Hough для виявлення планарних підмножин у кожному кластері. Потім у межах кожного планарного підмножини знову використовуйте Hough для пошуку кіл. Якщо цей останній крок дорогий, можливо, ви зможете зробити ефективне коротке замикання: спробуйте кілька трійки, відгадайте коло та побачите, чи значна частина точок у вашій підмножині лежить дуже близько до цього кола. Якщо так, записати це коло та видалити всі ці точки, а потім продовжити.
Ерік П.

3
Остання ідея називається RANSAC і, ймовірно, може бути використана сама, особливо якщо кількість кіл на одному зображенні невелика.
SheldonCooper

Дякую за ілюмінаційні ідеї! Багатоступінчаста трансформація Хаффа здається мені найпотужнішим і загальним рішенням, але RANSAC дійсно виглядає простішим у здійсненні і може бути достатньою мірою в моєму контексті. Одна з проблем, яку я швидко помітив при цьому, - це випадок, коли ви маєте шаблони неврівноважених розмірів, що, очевидно, зміщує вибірку до більших об'єктів. Будь-які думки щодо цієї проблеми?
cjauvin

Виявивши більшу окружність, видаліть усі точки, що належать їй, від вибірки.
SheldonCooper

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