2012-01-22 26 views
10

La función OpenCV findhomography() encuentra una transformación homográfica entre los puntos coincidentes de dos imágenes. (Consulte Definition)OpenCV: parámetro de confianza RANSAC para encontrar una homografía

Para encontrar subconjuntos coincidentes de puntos, se puede usar RANSAC.

Aquí está la trampa: En contraste con otra función en OpenCV que utilizan RANSAC (por ejemplo findfundamentalMat (Ver Definition)) el parámetro RANSAC para confianzano puede ser cambiado. Solo el umbral de reproyección se puede pasar como un argumento.

Miré en la fuente OpenCV, y para findhomography() la confianza está codificada a 0,995.

Para mis propósitos, necesito aumentar esto. ¿Hay alguna forma de hacerlo sin cambiar el valor en el origen de OpenCV?

¿Hay alguna razón por la cual esto debe codificarse?

PD: He añadido un cambio request under Ticket 1557 para la siguiente subversión.

Respuesta

5

La razón para estar codificados es que para la mayoría de los usuarios, esta es una muy buena opción.

Quizás usted fue el primero en sentir la necesidad de algo más. Pero esta es la razón por la cual OpenCV está abierto: tome el código, modifíquelo, haga un parche y proponga al equipo de desarrollo de OpenCV lo que quiera.

Y, ¿estás seguro de que esto es lo que necesitas? Por lo general, un umbral de reproyección más ajustado hará el truco. Si tiene problemas, pueden estar en otro lugar: algunos puntos mal elegidos, un error de ajuste demasiado grande en la coincidencia de puntos, etc.

+1

Tienes razón: podría cambiarlo yo mismo y participar en el desarrollo. De hecho, esto es lo que hice en mi subversión local y funciona bien. – user834985

5

Bueno, usted no es el primero que necesita cambiar las variables o funciones en OpenCV. En realidad, estamos cambiando muchas funciones de OpenCV para hacerlas más rápidas y eficientes para teléfonos móviles. Si desea cambiar RANSAC, basta con crear una copia de la clase con un nombre diferente

class CvModelEstimator2 
{ 

} 

en su código, y modificarlo a sí mismo como sea necesario. También puede cambiar el número máximo de iteraciones para RANSAC, el valor predeterminado es muy alto y hace que la aplicación sea realmente lenta.

Cuestiones relacionadas