Converting 3D point to 2D pixel position using callibration data
Hi There,
I'm in the process of registering a camera image from a GoPro to a mesh generated from a lidar scanner. For this I need to transform a 3D point in the camera frame to a 2D pixel point in the image. I've found the calibration data for the camera using the camera_calibration package and I've found this page:
http://wiki.ros.org/image_pipeline/Ca... Which describes the transformations I'm looking for, however I don't understand the notation used in section 3 to describe the actual vector operations to achieve the transformation I need.
Is there a package which encapsulates this transformation? Or can someone explain what:
X' = [R,t]X transform
sx = X' projection
x* = d(x) distortion
q = Kx* pixel coordinates
means in terms of vector operations.
Thanks, Pete
I'm pretty sure there is a package, but I can't come up with the name right now.
You probably should also take into account that several 3d points will be projected onto the same pixel. As your camera and the lidar do not have the same position, you will have only project visible points into the camera and not the points that are occluded by other 3d objects.
There's the image_proc package, but that only seems to produce a rectilinear image from the distorted wide angle image. I need a function to transform 3D points directly, I may have to dig into the source files for this.