Camera and projection matrix units


I have problem with understanding Projection and camera matrix.
So when I calibrated camera I got my camera matrix I guess in pixels. My translate matrix which I wil use for calulating Projection matrix is in milimeters. So I am guessing I have to convert Camera matrix units into mm, is that right? I am not sure how I supposed to do it. I need this projection matrix for using triangulatePoints() and I am little off of good result so now I am searching for issues in matrix.


you do not convert anything.

if you want to be exact about it, the metric units go poof during the projection of 3D points onto the 2D image plane. you get unitless numbers that express the tangent of the angle of a viewing ray.

“the camera matrix” is a product of a bunch of things

  • the projection part “copies” the z component of a point into the affine (4th) component, which later is used in a division (“projection”)
  • the screen-space translation (cx, cy) and scaling part (fx, fy)

Thank you for explanation. I saw this post in other forum so this what they are saying is wrong?

they don’t know what they are talking about. they generate hypotheses, i.e. make stuff up.

the first comment in the screenshot absolutely has no experience in this matter. ignore it.

the second comment… it’s impossible to verify what they did. I’m sure they don’t know what they did. or they used the wrong words. a camera pose matrix certainly contains “real-world” units of length, in the translation part. the camera projection matrix (the thing with fx, cx, cy) does not, it contains pixels (in the translation part).