2011-09-17 15 views
6

He estado tratando de encontrar la manera de tomar una homografía entre dos planos y convertirla en una transformación proyectiva. Matlab hace esto automáticamente, pero he estado tratando de descubrir cómo matlab implementa la conversión.Homography to Projective transform

+0

¿De qué función de MATLAB estás hablando? – Jacob

+0

He calculado la homografía usando una transformación lineal directa. Me preguntaba cómo funciona maketform ('proyectivo', homographyMat). ¡Gracias! –

Respuesta

2

Una homografía es una transformación proyectiva que asigna líneas a líneas, mantiene la relación cruzada, pero no mantiene el paralelismo u otras magnitudes de similitud (ángulos, distancias, etc.). Una homografía se puede expresar como una matriz homogénea de 3x3, y puede calcularse de muchas (realmente, muchas) formas diferentes según su problema.

El más típico es determinar correspondencias de 4 puntos entre los dos planos y usar la Transformada Lineal Directa (DLT). También hay muchas implementaciones del DLT. Si está familiarizado con OpenCV, puede obtener fácilmente dicha matriz de homografía usando cv::findHomography (http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography).

En general, le recomiendo que eche un vistazo al libro "Geometría de vista múltiple" de Hartley & Zisserman, que explica en detalle el concepto de homografías en el contexto de la visión artificial.

3

Usted puede mirar en el código fuente en la caja de herramientas \ images \ images \ maketform.m

Al menos dentro del editor se puede llegar a esta pulsando F4 en el nombre de la función.