Dado um conjunto de pontos (2D) ou seja, nuvem de pontos (PC), a pergunta é sobre um robust
, accurate
e computing-friendly
método para encontrar círculos (ou elipses em versão avançada).
A idéia intuitiva é usar a Pesquisa de força bruta em todos os pontos possíveis (como centro) {infinito!} E raios (novamente infinito!). Isso é extremamente extremamente lento e ineficiente.
Conforme demonstrado abaixo, cada círculo ajustado seria classificado com base no número de pontos ( nn
) posicionados na circunferência do círculo a uma distância menor que um limite ( t
). Portanto, há derr
para apresentar uma distância média.
De forma avançada, elipses são de interesse para serem ajustadas.
Alguma idéia, invadir o cérebro, experiências, comentários?
edge-detection
local-features
point-cloud
hough-transform
Desenvolvedor
fonte
fonte
Respostas:
As melhores idéias que exatamente tentam resolver esse problema são as transformações de Hough .
Basicamente, o sinal no espaço ocupado será
r, x, y
coordenado. Aquir
significa raio ex,y
significa centro. Todos os pontos podem pertencer a um ou muitos círculos. Portanto, no plano Hough, percorra todos os círculos possíveis onde esse ponto poderia pertencer e faça um +1. Esta não é uma pesquisa, apenas uma coleção.Agora, se um círculo real existir, muitos pontos serão adicionados e a pontuação desse
r, x, y
será muito maior do que todos os outros. Selecionar esse ponto permitirá que você escolha os círculos certos.Aqui está um artigo clássico de 1971 (antes de eu nascer!) Que inventou esse conceito.
Para o Tutorial, sugiro referências abaixo:
Especificamente para detecção de círculo, você pode consultar isso abaixo:
Esses métodos são muito eficientes e muito amigáveis ao computador.
fonte