Para algum algoritmo de reconstrução de volume em que estou trabalhando, preciso detectar um número arbitrário de padrões circulares nos dados de pontos 3D (provenientes de um dispositivo LIDAR). Os padrões podem ser arbitrariamente orientados no espaço e supõe-se que estejam (embora não perfeitamente) em planos 2d finos. Aqui está um exemplo com dois círculos no mesmo plano (embora lembre-se de que este é um espaço 3d):
Eu tentei muitas abordagens .. a mais simples (mas a que funciona melhor até agora) é agrupar com base em conjuntos separados do gráfico do vizinho mais próximo. Isso funciona razoavelmente bem quando os padrões estão distantes, mas menos com círculos como os do exemplo, muito próximos um do outro.
Eu tentei o K-means, mas não dá certo: suspeito que o arranjo de pontos circulares talvez não seja adequado. Além disso, tenho o problema adicional de não conhecer antecipadamente o valor de K.
Tentei abordagens mais complicadas, com base na detecção de ciclos no gráfico do vizinho mais próximo, mas o que obtive foi muito frágil ou computacionalmente caro.
Também li sobre muitos tópicos relacionados (transformação de Hough, etc), mas nada parece se aplicar perfeitamente nesse contexto específico. Qualquer idéia ou inspiração seria apreciada.