传感器标定(一)摄像头内参标定

一、使用ROS进行手动标定安装

1、安装 image-view &usb_cam ⽤于驱动相机

cpp 复制代码
sudo apt-get install ros-melodic-image-view
sudo apt-get install ros-melodic-usb-cam

2、查看系统视频设备

v4l2-

ctl -d /dev/video0 --all 查询所有相机具体的参数包括width和height

cpp 复制代码
ls /dev/video*
ls /dev/camera*
v4l2-ctl -d /dev/video0 --all

3、修改配置文件

cpp 复制代码
roscd usb_cam
cd launch
sudo gedit usb_cam-test.launch
cpp 复制代码
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<!-- modify the video device to your device -->
<param name="video_device" value="/dev/video0" />
<!-- modify the size of your device -->
<param name="image_width" value="1920" />
<param name="image_height" value="1080" />
<param name="pixel_format" value="yuyv" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
<node name="image_view" pkg="image_view" type="image_view" respawn="false"
output="screen">
<remap from="image" to="/usb_cam/image_raw"/>
<param name="autosize" value="true" />
</node>
</launch>

4、开启相机

启动有warning例如提⽰校准配置⽂件 head_camera.yaml not found ,这个是正常的,我们标定
完后才会⽣成这个配置⽂件。

cpp 复制代码
roslaunch usb_cam usb_cam-test.launch

5、根据棋盘格修改参数

  • ⼀个是size参数为棋盘格⻆点数量⽐如 8x9=72 个格⼦的棋盘格,⻆点个数为 7x8=63 个,size
    参数就要写 7x8 ;
  • 另外⼀个参数为square,传⼊的参数为棋盘格⼀个小格⼦的宽度(注意单位为m);
  • image:=/usb_cam/image_raw 标定当前订阅图像来源⾃名为 /usb_cam/image_raw 的
    topic;
  • camera:=/usb_cam 为摄像机名。
cpp 复制代码
rosrun camera_calibration cameracalibrator.py --size 7x6 --square 0.05 image:=/usb_cam/image_raw camera:=/usb_cam

6、图像采集

相机数据采集的过程需要分为两组互相配合,⼀组使⽤ROS程序进⾏采集;另⼀组⼿持棋盘格,在图像

视野范围内进⾏操作和移动。⽰例使⽤的标定板为 7×6 个 50mm×50mm ⼤小的标准棋盘格进⾏。注意,这

⾥的7×6指的是有横向7个⻆点(而⾮格⼦)与纵向6个⻆点。

  • ⼿持棋盘格要求:

    每次采集尽量保持稳定,最终成像光线适中,图像清晰;

    ⼿持棋盘格时不能对棋盘格进⾏遮挡,不能离开相机视野范围内;

    采集图像类型需要丰富多样,包含:近距离图像、中距离图像、远距离图像、左右倾斜图像、

    上下倾斜图像、轻微旋转图像、较⼤旋转图像、相机靠近左视野边缘图像、相机靠近右视野边

    缘图像等;采集有效图像的数量在50张左右。

  • 界⾯中的 X , Y , size , skew 的含义:

    X :表⽰标定板在视野中的左右位置。

    Y :表⽰标定板在视野中的上下位置。

    size :标定板在占视野的尺⼨⼤小,也可以理解为标定板离摄像头的远近。

    skew :标定板在视野中的倾斜位置

  • 标定实操技巧:

    在相机视野范围内且能识别棋盘格的前提下,左右、上下和前后移动范围尽可能⼤⼀些,将有助于更快

    地满⾜ X , Y , Size 的要求;边移动边扭转标定板,可以更快完成 Skew 。当 X 、 Y 、 Size 、 Skew 四个

    都变成绿⾊,然后就可以看到 CALIBRATE 这个按钮变成⻘⾊,表明已经采到⾜够多的图⽚数据可供标定

    了。

7、开始标定

点击 CALCULATE 进⾏标定会稍微有点卡顿,不要担⼼后台正在进⾏标定,标定完成后观察当前的相机界

⾯,

如果相机成像完全正常了,则说明标定成功了,在终端界⾯会有对应的参数 D K R P :

另外,点击标定界⾯右下⾯的 SAVE 和 COMMIT 按钮,可保存标定完成后的⽂件到路径

/tmp/calibrationdata.tar.gz 。

相关推荐
烟锁池塘柳03 小时前
Camera ISP Pipeline(相机图像信号处理管线)
图像处理·数码相机·信号处理
3DVisionary3 小时前
XTOP3D的DIC技术在极端条件下的应用解决方案
数码相机·3d·航空工业·全场应变测量·航空机匣内部四测头同步测量·反射镜辅助dic观测·四测头方案
视觉人机器视觉2 天前
3D与2D机器视觉机械臂引导的区别
人工智能·数码相机·计算机视觉·3d·视觉检测
LabVIEW开发2 天前
LabVIEW开发中的电机控制与相机像素差
数码相机·labview
pixle03 天前
Three.js 快速入门教程【二】透视投影相机
开发语言·javascript·数码相机
go54631584653 天前
python实现将RGB相机与事件相机的照片信息进行融合以进行目标检测
python·数码相机·目标检测
看星猩的柴狗4 天前
ROS-相机话题-获取图像-颜色目标识别与定位-目标跟随-人脸检测
数码相机
彩云的笔记4 天前
相机快门 deepseek
数码相机
视觉人机器视觉4 天前
机器视觉检测中,2D面阵相机和线扫相机的区别
人工智能·数码相机·计算机视觉·3d·视觉检测
虾球xz4 天前
游戏引擎学习第110天
数码相机·学习·游戏引擎