29

Wykonuję kalibrację aparatu z tsai algo. Mam matrycę intrensiczną i zewnętrzną, ale jak mogę zrekonstruować współrzędne 3D z tej inormacji?Uzyskaj współrzędne 3D z piksela obrazu 2D, jeśli znane są parametry zewnętrzne i wewnętrzne

enter image description here

1) można użyć Gaussa eliminacji znajdowania X, Y, Z, W i punktów wynosi X/W, Y/W, Z/W, jednolitego systemu.

2) mogę użyć podejście OpenCV documentation:

enter image description here

wiem u, v, R, t, mogę obliczyć X,Y,Z.

Jednak obie metody kończą się różnymi wynikami, które nie są poprawne.

Co robię źle?

+0

Bardzo dobra odpowiedź, proszę, jeśli ta odpowiedź pomoże, proszę zaznaczyć ją jako poprawną – vgonisanz

Odpowiedz

25

Jeśli masz zewnętrzne parametry, masz wszystko. Oznacza to, że możesz mieć Homografię z zewnątrz (zwaną także CameraPose). Stanowią jest macierz 3x4, homography jest macierz 3x3 H zdefiniowane jako

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

z K jest aparat wewnętrzną matrycą R1 i R2 są dwie pierwsze kolumny macierzy rotacji , R; t to wektor tłumaczenia.

Następnie znormalizuj dzielenie wszystkiego przez t3.

Co dzieje się z kolumną r3, nie używamy tego? Nie, ponieważ jest zbędny, ponieważ jest produktem krzyżowym dwóch pierwszych kolumn pozy.

Teraz, gdy masz homografię, wyświetlaj punkty. Twoje punkty 2d to x, y. Dodaj im z = 1, więc teraz są w 3d. Wyświetl je w następujący sposób:

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

Mam nadzieję, że to pomoże.

+2

Czy błędnie napisałeś kolumny? czy może masz na myśli kolumnę (r12 r22 r32) i (r13 r23 i r33) zamiast tego? – EliteTUM

+3

Poprawiłem kolumny –

+1

Czy nie zakładasz, że pozy dotyczą wartości z == 0? Możesz to określić. Trzecia kolumna pozy jest tylko nadmiarowa, jeśli współrzędne wejściowe zawsze mają z == 0. – Hammer