Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Sebastian,

1. About finding the correct parameters

Focal length + Principal point:

A is called a camera matrix, or a matrix of intrinsic parameters. (cx, cy) is a principal point (that is usually at the image center), and fx, fy are the focal lengths expressed in pixel-related units. In "calibration_rgb.yaml" (for example), you can see the following lines:

camera_matrix:
   rows: 3
   cols: 3
   data: [ 526.37013657, 0.00000000, 313.68782938, 0.00000000, 526.37013657, 259.01834898, 0.00000000, 0.00000000, 1.00000000 ]
Skew coefficient:

Skew coefficient: The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c. In your case, it should be 90 degrees or PI/2 radians.

Distortions:

Distortions: The image distortion coefficients (radial and tangential distortions) are stored in the 5x1 vector kc. In "calibration_rgb.yaml" (for example), you can see the following lines:

distortion_coefficients:
   rows: 1
   cols: 5
   data: [ 0.18126525, -0.39866885, 0.00000000, 0.00000000, 0.00000000 ]

2. About openni and factory calibration

I don't know this driver much. I once heard that it might be reading the factory calibration from the device but I cannot say if this is true or not.

When I check the file openni_camera/launch/openni_kinect.launch, I see that the openni_node needs calibration information contained in a yaml file. So I tend to believe that it reads it from a file, not directly from the device, but this is only an assumption:

<rosparam command="load" file="$(find openni_camera)/info/openni_params.yaml" />

This is as far as my knowledge goes on the subject. For more information, you might want to explore the kinect and openni mailing lists.

I hope it helps,

Raph