3

I am trying to use Open3D library in python to plot a 3D model. My issue is that I am not able to update the camera intrinsic properties. I would like to know how to do it - if its possible. Currently its using default camera parameters.

rgbd_image = o3d.geometry.RGBDImage.create_from_tum_format(color_raw, depth_raw)

a = o3d.camera.PinholeCameraIntrinsicParameters
pcd = o3d.geometry.PointCloud.create_from_rgbd_image(
        rgbd_image,
        o3d.camera.PinholeCameraIntrinsic(
            o3d.camera.PinholeCameraIntrinsicParameters.Kinect2DepthCameraDefault))
# Flip it, otherwise the pointcloud will be upside down
pcd.transform([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]])
o3d.visualization.draw_geometries([pcd])

I would like to update the intrinsic matrix to [3131.58 0.00 1505.62 , 0.00 3131.58 2004.13, 0.00 0.00 1.00]

Thanks.

1 Answer 1

5

You have to declare an open3d.camera.PinholeCameraIntrinsic object then, initialize it with the required intersic matrix like this:

cam = o3d.camera.PinholeCameraIntrinsic()
cam.intrinsic_matrix =  [[3131.58, 0.00, 1505.62] , [0.00, 3131.58, 2004.13], [0.00, 0.00, 1.00]]

then, you can pass the object to the create_point_cloud_from_rgbd_image method like this:

pcd = o3d.geometry.create_point_cloud_from_rgbd_image(rgbd_image,cam)

N.B.

You could initialize the cam object using its non-default constructor to specify its width and height, like this:

cam = o3d.camera.PinholeCameraIntrinsic(W, H, Fx, Fy, Cx, Cy)

EDIT

After some search, I found that it's better to initialize the parameters like this, to be able to define both the intrinsic and the extrinsic matrices:

intrinsic = o3d.camera.PinholeCameraIntrinsic(w, h, fx,fy, cx, cy)
intrinsic.intrinsic_matrix = [[fx, 0, cx], [0, fy, cy], [0, 0, 1]]
cam = o3d.camera.PinholeCameraParameters()
cam.intrinsic = intrinsic
cam.extrinsic = np.array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 1.]])
pcd = o3d.geometry.create_point_cloud_from_rgbd_image(
    rgbd_image, cam.intrinsic, cam.extrinsic)
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you for your reply and help. Very useful.
I am trying to understand what X-Yaxis focal length and X-Y axis principle point are. Does it mean the X, Y of our camera + the X, Y of the point we are looking at?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.