我用的OpenCV和openNi校準Kinect和我的高清攝像頭,在RGBDCaptureKinect的方法, 它使用freenect_camera_to_world到我writre freenect_camera_to_world自己,但
產地代碼:
// camera -> world coordinate helper function
void freenect_camera_to_world(freenect_device* dev, int cx, int cy, int wz, double* wx, double* wy)
{
double ref_pix_size = dev->registration.zero_plane_info.reference_pixel_size;
double ref_distance = dev->registration.zero_plane_info.reference_distance;
// We multiply cx and cy by these factors because they come from a 640x480 image,
// but the zero plane pixel size is for a 1280x1024 image.
// However, the 640x480 image is produced by cropping the 1280x1024 image
// to 1280x960 and then scaling by .5, so aspect ratio is maintained, and
// we should simply multiply by two in each dimension.
double factor = 2 * ref_pix_size * wz/ref_distance;
*wx = (double)(cx - DEPTH_X_RES/2) * factor;
*wy = (double)(cy - DEPTH_Y_RES/2) * factor;
}
我自己編寫freenect_camera_to_world函數,但我不知道是不是?
void freenect_camera_to_world(int cx,int cy,int wz, double *wx,double *wy)
{
double ref_pix_size = 0.1042; //how can I know these two value for my kienct?
double ref_distance = 120.0;
double factor = 2*ref_pix_size*wz/ref_distance;
*wx = (double)(cx - DEPTH_X_RES/2)*factor;
*wy = (double)(cy - DEPTH_Y_RES/2)*factor;
}
1,我怎麼能知道我的kienct這兩個值?ref_pix_size & ref_distance
2,它是爲「零面像素尺寸爲1280×1024的圖像。」一個標準? ?