29

Sto effettuando la calibrazione della videocamera da tsai algo. Ho una matrice intrensale ed estrinseca, ma come posso ricostruire le coordinate 3D da quella inormazione?Ottieni le coordinate 3D dal pixel dell'immagine 2D se sono noti i parametri intrinseci e intrinseci

enter image description here

1) posso usare eliminazione gaussiana find X, Y, Z, W e quindi punti saranno X/W, Y/W, Z/W sistema omogeneo.

2) posso usare l'approccio OpenCV documentation:

enter image description here

ne so u, v, R, t, posso calcolare X,Y,Z.

Tuttavia entrambi i metodi finiscono in risultati diversi che non sono corretti.

Cosa sto sbagliando?

+0

Risposta molto buona, per favore, se la risposta di aiuto, spuntare come corretta – vgonisanz

risposta

25

Se hai parametri estrinseci hai tutto. Ciò significa che puoi avere Homography dagli estrins (anche chiamato CameraPose). Posa è una matrice 3x4, omografia è una matrice 3x3, H definito come

    H = K*[r1, r2, t],  //eqn 8.1, Hartley and Zisserman 

con K essendo la telecamera matriciale intrinseca, r1 e r2 essendo le prime due colonne della matrice di rotazione , R; t è il vettore di traduzione.

Quindi normalizzare dividendo tutto per t3.

Cosa succede alla colonna r3, non la usiamo? No, perché è ridondante in quanto è il prodotto incrociato delle 2 prime colonne di posa.

Ora che hai un'omografia, proietta i punti. I tuoi 2d punti sono x, y. Aggiungili a z = 1, quindi ora sono 3d. Proiettarli come segue:

 p   = [x y 1]; 
     projection = H * p;     //project 
     projnorm = projection/p(z);  //normalize 

Spero che questo aiuti.

+2

potrebbe essere che hai scritto le colonne sbagliate? volevi forse dire colonna (r12 r22 r32) e (r13 r23 e r33) invece? – EliteTUM

+3

Ho corretto le colonne –

+1

Non state supponendo che la posa sia relativa a z == 0? Si consiglia di specificarlo. La terza colonna della posa è ridondante solo se le coordinate in arrivo hanno sempre z == 0. – Hammer