I’m trying to work this out following the formula from https://support.pix4d.com/hc/en-us/articles/202977149-What-does-the-Output-Params-Folder-contain-#label12 but I’m hitting a bit of a road block. Presumably I can get the X and Y coordinates of any pixel in the orthomosaic by using the world file (world coordinates + pixel location * pixel size), and the Z coordinate from the DSM, however when I multiply these coordinates by a matrix from the [project]_pmatrix.txt file I get some very large values, so I tried doing the same with the point cloud and got the same results.
Let’s say I pick a point from my cloud in the Pix4D Mapper desktop app: the point coordinates (X, Y, Z) are (612834, 6022815, 334) using WGS84. The app shows me several images which contain this point, and I pick one where the pixel coordinates corresponding to my chosen point are (1499, 1112) in an image of size 4000 x 3000. I take the matrix corresponding to this image and multiply it with the point coordinates to get a new set of coordinates (x,y,z) which gives(14190732177, 4139527026, 723498). Dividing x and y by z gives me a pixel location of (19614, 5799), which is clearly incorrect.
What am I doing wrong? Some of the matrix values look a bit odd, so I’ve copied it below; could this be the culprit? My map is ~650m by ~450m at a resolution of ~3cm.
115.596942 2344.501702 -1828.104356 15491.701779
2434.055636 449.028246 -923.594688 -340498.232885
0.227681 0.097014 -0.968891 -18.233849