È possibile ottenere una vista frontale parallela della posizione dell'immagine o della fotocamera mediante relazione di punti 2D-3D?
-
27-10-2019 - |
Domanda
È possibile ottenere la vista frontale parallela della posizione dell'immagine o della telecamera mediante relazione di punti 2D-3D usando OpenCV
?
Per questo ho parametri intrinseci ed estrinseci. Ho anche coordinate 3D di serie di punti di controllo (che si trovano in un piano) sull'immagine (relazione 2D-3D).
In effetti ho bisogno di posizione e orientamento della fotocamera, ma non è difficile trovarla se riesco a convertire l'immagine in vista frontale.
Se non è possibile fare con OpenCV, sono le altre librerie che possono risolvere questo compito?
Soluzione
La soluzione si basa sulle formule nella documentazione di OpenCV Calibrazione della fotocamera e ricostruzione 3D
Consideriamo la forma numerica senza coefficiente di distorsione (in contrasto con la forma della matrice).
abbiamo u
e v
.
È facile da calcolare x'
e y'
.
Ma x
e y
non possiamo essere calcolati perché possiamo scegliere qualsiasi diverso zero z
.
La riga in 3D corrisponde a un punto nell'immagine 2D.
Per risolvere questo prendiamo due punti per z=1
e z=2
. Quindi troviamo 2 punti nello spazio 3D che specificano la linea (x1,y1,z1)
e (x2,y2,z2)
.
Quindi possiamo applicare R
-1 a (x1,y1,z1)
e (x2,y2,z2)
che si traduce in linea determinata da due punti (X1, Y1, Z1)
e (X1, Y1, Z1)
.
Poiché i nostri punti di controllo si trovano su un piano (let Pere è z = 0 per semplicità) possiamo trovare corrispondente X
e Y
punto che è un punto in 3d.
Dopo aver applicato la normalizzazione da mm
Ai pixel otteniamo un'immagine frontale parallela.
(Se abbiamo l'immagine di input distorta, dovremmo prima indesurare)