没有经过校准的camera拍摄的图片是有畸变的.如下图:
而我们希望得到的图片是这样的
ros中提供了一个程序camera_calibration帮助我们去做校准.
具体怎么校准参考
https://blog.csdn.net/xinwenfei/article/details/81235072
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
首先是安装ros-kinetic-uvc-camera,运行就可以产生
/image_raw
/camera_info
两个topic. 再运行camera_calibration做校准.
校准完毕后会生成一个yaml文件
格式如下:
image_width: 2448 image_height: 2050 camera_name: prosilica camera_matrix: rows: 3 cols: 3 data: [4827.94, 0, 1223.5, 0, 4835.62, 1024.5, 0, 0, 1] distortion_model: plumb_bob distortion_coefficients: rows: 1 cols: 5 data: [-0.41527, 0.31874, -0.00197, 0.00071, 0] rectification_matrix: rows: 3 cols: 3 data: [1, 0, 0, 0, 1, 0, 0, 0, 1] projection_matrix: rows: 3 cols: 4 data: [4827.94, 0, 1223.5, 0, 0, 4835.62, 1024.5, 0, 0, 0, 1, 0]
http://wiki.ros.org/camera_calibration_parsers 这是一个对校准文件做格式转换的程序
然后,调用摄像头驱动的程序去拍到图片的时候要去读取这个yaml文件,对拍到的图像做校准处理.这样得到的就是无畸变的图像了.