Implementação do tipo RANSAC para conjuntos 2D arbitrários

TL; DR: Existe uma implementação em C ++ do RANSAC ou de outros algoritmos de correspondência robustos que podem ser usados livremente com conjuntos de pontos 2D arbitrários?

Eu sei que existem muitas implementações que incluem ou fazem uso de algoritmos de correspondência como o RANSAC (Random Sampling Consensus). Eles são freqüentemente usados em aplicativos de visão computacional e encontrados em bibliotecas comoOpenCV, PCL, etc. O algoritmo geral é bem conhecido e vários siteslistas os diferentes passos.

Agora, todas as implementações "avançadas" (feitas para OpenCV, PCL etc.) que encontrei são para tipos específicos de problemas com um conjunto subjacente de suposições. No OpenCV, você deseja encontrar a matriz de homografia entre uma primeira imagem e uma parte de uma segunda imagem (este exemplo) No PCL, você está no domínio das nuvens de pontos 3D e, no meu conhecimento, só pode corresponder a formas específicas já definidas (uma linha, uma esfera, etc.)

O que eu "simplesmente" quero fazer é pegar um conjunto de pontos 2D arbitrário (que pode conter algum ruído) e encontrar uma correspondência em um conjunto maior de pontos 2D (que também contém ruído e outros pontos). Ele não precisa exigir nenhum treinamento específico do modelo além da introdução dos dois conjuntos de pontos. Estou no processo de implementá-lo eu mesmo em C ++, mas:

Não sou de forma alguma um programador experiente e preciso que tudo seja executado rapidamente; A implementação anterior feita por mim de algoritmos conhecidos (detecção de borda, desfoque Gaussiano etc.) provou ser significativamente mais lenta (> 10x) do que a implementação comprovada.

Simplesmente arrancar uma implementação de código aberto já existente (como o OpenCV) provou estar além dos meus recursos atuais (muitas dependências e modelo de implementação virtual e mais ...)

Então, se alguém souber de uma implementação C ++ livremente utilizável (como BSD) e comprovada que eu perdi ...

questionAnswers(3)

yourAnswerToTheQuestion