[Opencv] Przejście z położenia pkt. na zdjęciu do współrzędnych świata realnego

0

cześć, mam problem. Otóż zaznaczam pkt. na zdjęciu, dostaje jego koordynaty w uk. współrzędnych zdjęcia(2d) teraz chcę przejść na współrzędne świata realnego(3d ale zakładam Z = 0)
Kalibruję kamerę za pomocą programiku z przykładów opencv :
https://github.com/opencv/opencv/blob/master/samples/cpp/tutorial_code/calib3d/camera_calibration/camera_calibration.cpp
Kalibruje na tablicy z szachów(18 zdjęć tablicy)
Teraz dzięki calibrateCamera mam matryce rotacji,kamery i translacji a błąd program podaje mi 0.23 .testowo w Gnu Octave najpierw sobie sprawdzam zgodnie z wzorem który jest w ostatnim poście https://stackoverflow.com/questions/30502687/image-coordinate-to-world-coordinate-opencv

R = rotationVectorToMatrix(R)' # To jest nie potrzebne ze względu na to że calibrateCamera zwraca już takową macierz
H=K*[R T];`
Q=inv([H(:,1) H(:,2) -[px;py;1]])*-H(:,4);
W=Q(1:2)

Teraz octave podaje mi wynik jako
155.226
-70.492

Ok czyli rozumiem lewy górny róg zdjęcia to początek uk. współrzędnych. Jako że zrobiłem zdjęcie suwmiarki i wybrałem pkt. na zdjęciu odpowiadający 41 mm(w takich jednostkach kalibrowałem kamerę) to wynik -70,4 mm jest bez sensu(tzn. - może być bo oś Y szła by w dół tutaj) ok. 30 mm różnicy przy średnim błędzie(RMS)0.23 ?

Co robię źle?

1 użytkowników online, w tym zalogowanych: 0, gości: 1