Implementación tipo RANSAC para conjuntos 2D arbitrarios

TL; DR: ¿Existe una implementación en C ++ de RANSAC u otros algoritmos de correspondencia robustos que se puedan usar libremente con conjuntos de puntos 2D arbitrarios?

Sé que existen muchas implementaciones que incluyen o utilizan algoritmos de correspondencia como RANSAC (Random Sampling Consensus). A menudo se usan en aplicaciones de visión por computadora y se encuentran en bibliotecas comoOpenCV, PCL, etc. El algoritmo general es bien conocido y varios sitiosliza Los diferentes pasos.

Ahora, todas las implementaciones "avanzadas" (hechas para OpenCV, PCL, etc.) que he encontrado son para tipos específicos de problemas con un conjunto subyacente de supuestos. En OpenCV, desea encontrar la matriz de homografía entre una primera imagen y una parte de una segunda imagen (este ejemplo) En PCL, usted está en el ámbito de las nubes de puntos 3D y (que yo sepa) solo puede hacer coincidir formas específicas ya definidas (una línea, una esfera, etc.)

Lo que "simplemente" quiero hacer es tomar un conjunto arbitrario de puntos 2D (que puede contener algo de ruido) y encontrar una correspondencia en un conjunto más grande de puntos 2D (que también contiene algo de ruido y otros puntos). No tiene que requerir un entrenamiento de modelo específico que no sea ingresar los dos conjuntos de puntos. Estoy en el proceso de implementarlo yo mismo en C ++, pero:

De ninguna manera soy un programador experimentado y necesito que todo se ejecute bastante rápido; La implementación previa realizada por mí mismo de algoritmos bien conocidos (detección de bordes, desenfoque gaussiano, etc.) ha demostrado ser significativamente más lenta (> 10x) que la implementación comprobada.

Simplemente estafando una implementación de código abierto ya existente (como OpenCV) ha demostrado estar más allá de mis capacidades actuales (demasiadas dependencias y plantilla de implementación virtual y más ...)

Entonces, si alguien sabe de una implementación de C ++ libremente utilizable (como BSD) y comprobada que me he perdido ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta