没有经过校准的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文件,对拍到的图像做校准处理.这样得到的就是无畸变的图像了.