写在前面
1. 你用什么数据标定的就用对应的内参,如果缩放了图像就要同时缩放内参(包括fx,fy,cx,cy,d0,d1,d2,d3,d4)。(比如说:我程序中用的是1920x1080的图像,那我就是需要用在HD=1920x1080下标定的内参,标定时采集的图像也应该是1920x1080的)
**备注:**相机内参主要是fx fy cx cy。其中cx cy表示图像中心点,下采样后,均按比例缩小。fx 表示f*a 其中f表示焦距 a表示底片中 1m内含有多少个像素。当图像下采样后,f没变,但a随比例正比变化,所以fx fy也按比例减小。--图像下采样后对应的相机内参矩阵怎么变?
2.标定时应该选择光照充足的环境(开始标定彩色相机时纳闷为什么一直捕捉不到,后来实验室加开了一排灯后效果明显变好,坑啊,,)
3. 从标定流程中可以看出,我们不同相机的内参以及配准的标定是需要依次分别进行的,即标定完一个相机,再采集下一个相机的图像进行标定。
4.若选择标定板的尺寸不同记得更改程序
5. 深度相机测量范围:0.5 ~ 4.5 m
6. 关于单位:内参矩阵的单位是像素;由于fx=f/dx,dx:mm/Pix,故(u,v)单位是像素,图像归一化坐标系(x,y)及其之后的单位是mm;尺度因子相当于Zc的长度;重投影误差单位为像素。
7.标定结果的储存与说明(/home/junwang/catkin_ws/src/iai_kinect2/kinect2_bridge/data):
calib_color.yaml :彩色相机的内参和畸变
calib_depth.yaml :depthShift: -4.2799976633573998e+01??
calib_ir.yaml :彩色相机的内参和畸变
calib_pose.yaml:配准数据
8.在启动相机时调用标定的数据:
首先,寻找符合序列号(010733764647)的文件夹中的数据;
[Info] [Freenect2Impl] found valid Kinect v2 @2:7 with serial 010733764647//标定后的数据的存放位置
如若没有,则按照data文件夹中文件名的排序进行调用。
使用iai_kinect2標定说明
在ubuntu下使用KinectV2需要做两件事情,一是,编译KinectV2自带的开源驱动libfreenect;二是,使用Kinect2_bridge在ROS下采集他的图像。
iai_kinect中含有四个模块,我们主要用他的bridge进行图像间的转换;此外,还要使用kinect2_registration进行标定。
标定之后呢,会得到kinect2彩色头、深度头、红外头的内参和外参,它们都以yaml模式存储在你的机器内。kinect2_bridge会自动检测你的标定文件**(自动是按data文件夹中的内参命名顺序调用)**,对