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