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.
fonte
Respostas:
Uma transformação Hough generalizada é exatamente o que você deseja. A dificuldade é fazê-lo com eficiência, porque o espaço dos círculos em 3D tem seis dimensões (três para o centro, duas para orientar o plano, uma para o raio). Isso parece excluir um cálculo direto.
Uma possibilidade é dar uma espiada no resultado através de uma sequência de transformações mais simples de Hough. Por exemplo, você pode começar com a transformação (usual) de Hough para detectar subconjuntos planares: esses requerem apenas uma grade 3D para o cálculo. Para cada subconjunto plano detectado, corte os pontos originais ao longo desse plano e execute uma transformação Hough generalizada para detecção de círculo. Isso deve funcionar bem, desde que a imagem original não tenha muitos pontos coplanares (exceto os formados pelos círculos) que poderiam abafar o sinal gerado pelos círculos.
Se os tamanhos dos círculos tiverem um limite superior predeterminado, você poderá economizar bastante computação: em vez de olhar para todos os pares ou triplos de pontos na imagem original, você poderá focar em pares ou triplos em uma vizinhança delimitada de cada ponto.
fonte
fonte