1 | initial version |
You are correct that the projection matrix P (dimensions 3 x 4) contains the extrinsic and intrinsic camera parameters and is intended to be used to map homogenous world coordinates (4 x 1) to homogeneous camera coordinates (3 x 1). When performing calibration of a single camera, constructing a projection matrix for the camera doesn't make much sense (since the calibration procedure has no way to determine the relation to an arbitrary world frame), and unsurprisingly the underlying OpenCV calibration function does not return one. The reason you see a projection matrix being created with the ROS calibration tool is that ROS is simply returning a CameraInfo message. This message is meant for passing information about arbitrary cameras (not just during calibration), where it makes sense to include information a camera's extrinsics. In your case the Matrix should be P = [K | 0], since your camera should initially have no orientation and no translation to world frame.