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
risposta
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.
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.
Di quale funzione MATLAB stai parlando? – Jacob
Ho calcolato l'omografia utilizzando una trasformazione lineare diretta. Mi stavo chiedendo come funziona maketform ('projective', homographyMat). Grazie! –