2011-09-17 10 views
6

Ho cercato di capire come fare un'omografia tra due piani e convertirla in una trasformazione proiettiva. Matlab lo fa automaticamente, ma ho cercato di capire come MATlab implementa la conversione.Trasformazione da omografia a proiettiva

+0

Di quale funzione MATLAB stai parlando? – Jacob

+0

Ho calcolato l'omografia utilizzando una trasformazione lineare diretta. Mi stavo chiedendo come funziona maketform ('projective', homographyMat). Grazie! –

risposta

2

Un'omografia è una trasformata proiettiva che mappa le linee alle linee, mantiene il rapporto incrociato, ma non mantiene il parallelismo o altre grandezze di similitudine (angoli, distanze, ecc.). Un'omografia può essere espressa come una matrice 3x3 omogenea e calcolata in molti (davvero molti) modi diversi in base al tuo problema.

Il più tipico è determinare le corrispondenze in 4 punti tra i due piani e utilizzare la Trasformazione lineare diretta (DLT). Ci sono anche molte implementazioni del DLT. Se hai familiarità con OpenCV, puoi facilmente ottenere tale matrice di omografia usando cv::findHomography (http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography).

In generale, vi consiglio di dare un'occhiata al libro "Multiple View Geometry" di Hartley & Zisserman, che spiega in dettaglio il concetto di omografia nel contesto della visione artificiale.

3

Potete guardare il codice sorgente in Toolbox \ immagini \ immagini \ maketform.m

almeno entro l'editor è possibile arrivare a questo colpendo F4 sul nome della funzione.

Problemi correlati