Hello everyone,

I used agisoft to do 3D reconstruction of random objects. I want to reproject the 3D points I extracted from photoscan (vertex of the 3D mesh of my object whose coordinates looks like -16.37 46.83 372.0356 ... in the camera coordinate system (i.e optical center of the first camera is 0 0 0) I guess) within the images. In order to do so, I also exported the xml calibration file.

I know that lots of people asked for the same question but I don't find any clear answer on how to use the xml file parameters to reproject 3D points in my images.

I am using matlab so it is quite easy for me to extract the parameters from the xml file.

Basically i used the <transform> parameters to generate the external camera parameters matrix E (i.e Rotation and translation) and I obtain a matrix which looks like:

R t

0 0 0 1

which seems to be correct.

Then I create the internal camera parameters matrix K:

fx 0 cx

0 fy cy

0 0 1

Finally I reproject the 3D point Q using the following formula:

q_ = K * M * E * Q

q = [ q_(1)/q_(3) ; q_(2)/q_(3)]

with M a transfert matrix defined as

1 0 0 0

0 1 0 0

0 0 1 0

However, the reprojected points seem to be shifted in the image (they are not reprojected onto the object). Am I missing something? Could you please explain me how to use the xml camera file to build a valid reprojection matrix?

Thank you very much for your help