Sto provando a scrivere del codice che calcolerà la matrice fondamentale per determinare la relazione tra le immagini stereo. Ho iniziato con il libro di Hartley e Zisserman che la maggior parte delle persone consiglia, ma non aveva esempi pratici e il codice di esempio era in MATLAB che non ho. Poi sono passato a An introduction to 3D Computer Vision Techniques and Algorithms che è più pratico e contiene esempi reali. Ho implementato l'algoritmo consigliato in 8 punti usando Python e numpy, ma ho difficoltà a verificarne la validità.Come calcolare la matrice fondamentale per la visione stereo
Sto utilizzando il set di dati elencato a pagina 48 (utilizzare quel link sopra per vedere un estratto di Google Libri) di quel libro. Quando normalizzo i punti, ottengo gli stessi risultati di quel libro. Tuttavia, quando uso funzione SVD di numpy per calcolare la matrice fondamentale, ottengo il seguente valore di F:
[[-0.01851684 -0.21631176 -0.67036356]
[ 0.2605251 -0.01023853 0.14234079]
[ 0.63748775 -0.09404508 -0.00220713]]
Questa matrice soddisfa l'equazione p_R^* F * p_L = 0 così sembra corretto. Tuttavia, è molto diverso dalla matrice calcolata nel libro. Ho cercato di controllare due volte la risposta utilizzando cv.FindFundamentalMat di OpenCV() e ho ottenuto una terza risposta:
[[ 22.98129082 271.46453857 853.74273682]
[-334.1673584 -4.84123087 -175.99523926]
[-809.88891602 125.99833679 1. ]]
Non sto Come vengono calcolati gli altri due matrici, ma non riesco a trovare alcun esempio di fondamentale calcolo a matrice sul web per verificare la mia implementazione dell'algoritmo a 8 punti. Il fatto che la mia implementazione restituisca un valore che soddisfa l'equazione mi dà fiducia, ma sono preoccupato di aver fatto qualcosa di sciocco, motivo per cui non posso abbinare i risultati del libro o di OpenCV.
hai iniziato con i punti normalizzati dal set di dati o con i punti originali per ottenere le due matrici fondamentali sopra? –