ROS 摄像头参数标定


1. 缘由意义

在图像测量过程以及机器视觉应用中
为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型
这些几何模型参数就是相机参数

无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节
其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性
因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在


2. 目的

求出相机的内、外参数,以及畸变参数


3. 标定


3.1. 准备

以Ubuntu20环境为例,ROS版本为noetic

先使用以下命令安装摄像头标定功能包camera_calibration及其相关工具:

$ sudo apt install ros-noetic-usb-cam ros-noetic-camera-calibration ros-noetic-image-view ros-noetic-image-proc

硬件方面除了摄像头,还需要如图所示棋盘格图案的标定靶

在这里插入图片描述

可以打印出来或在电脑屏幕显示


3.2. 启动摄像头

首先使用以下命令启动usb摄像头

roslaunch usb_cam usb_cam-test.launch

在这里插入图片描述
启动时会出现警告
在这里插入图片描述
因为相机启动时自动检查矫正文件,而现在还没有
这个就是我们需要求的文件,目前缺失没关系

如果使用的是Realsense相机,则需要修改usb_cam-test.launch文件中video_device的值,默认/dev/video0
我这边没有前置摄像头,所以一般RGB图像是在/dev/video4,通过修改一下就好了
修改usb_cam-test.launch的方法:1.先进入功能包$ roscd usb_cam ; 2.再进入launch文件夹:$ cd launch;3.编辑文件:sudo gedit usb_cam-test.launch

现在工具齐全,可以开始标定了


3.3. 启动标定程序

新建窗口使用以下命令启动标定程序,需要加载将被校准的图像主题:

rosrun camera_calibration cameracalibrator.py ––size 8x6 ––square 0.025 image:=/usb_cam/image_raw camera:=/usb_cam

Cameracalibrator.py 标定程序需要以下几个输入参数:

  1. Size:标定靶的内部角点个数,这里使用的棋盘格一共六行,每行有八个内部角点
  2. Square:这个参数对应每个棋盘格的边长,单位是米(根据实际情况调整
  3. Image和camera:设置摄像头发布的图像话题

根据使用的摄像头和标定靶尺寸相应修改以上参数,即可


3.4. 开始标定

在没有标定成功前,右边的按钮都为灰色,不能点击
将标定靶放在摄像头视野内,应该可以看到以下图形界面
在这里插入图片描述

为了提高标定的准确性
应该尽量让标定把出现在摄像头视野范围内的各个区域,界面右上角的进度条会提示标定进度

  • X:标定靶在摄像头视野中的左右移动
  • Y:标定靶在摄像头视野中的上下移动
  • Size:标定靶在摄像头视野中的前后移动
  • Skew:标定靶在摄像头视野中的倾斜转动

不断在视野中移动标定配,直到CALIBRATE按钮变色,表示标定程序的参数采集完成
最好保证所有的进度条都是绿色满格的
在这里插入图片描述

点击CALBRATE按钮
标定程序开始自动计算摄像头的标定参数,并显示:

**** Calibrating ****
mono pinhole calibration...

这个过程满要等待段时间(几分钟), 界面可能会变成灰色无响应状态,期间不要关闭
参数计算完成后界面回复,而且终端也会有标定结果的显示

[image]

width
640

height
480

[narrow_stereo]

camera matrix
615.057435 0.000000 333.735616
0.000000 615.163616 263.417049
0.000000 0.000000 1.000000

distortion
0.261680 -0.651886 0.000347 -0.014690 0.000000

rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000

projection
629.375916 0.000000 326.497955 0.000000
0.000000 634.527771 263.175221 0.000000
0.000000 0.000000 1.000000 0.000000

当前显示的图片为校准过后的
可以通过调整下方scale滑条调整
在这里插入图片描述
刻度为0.0意味着图像的大小,以便校正图像中的所有像素都是有效的
校正后的图像没有边框,但原始图像中的一些像素被丢弃

刻度为1.0意味着原始图像中的所有像素都是可见的
但是校正后的图像有黑色边框,在原始图像中没有输入像素


3.5. 数据保存

点击save按钮,终端会打印生成文件及路径(计算机目录/tmp下)
在这里插入图片描述
在计算机目录打开/tmp文件夹,可以看到calibrationdata.tar.gz
解压文件后从中找到ost.yaml文件
在这里插入图片描述

点击commit按钮,提交数据并退出程序
可以看到提示写入文件head_camera.yaml

writing calibration data to /home/jove20/.ros/camera_info/head_camera.yaml

也就是开始欠缺的,现在重新启动摄像头的话就无上述警告了

查看文件内容也就是之前保存的ost.yaml文件,只不过文件里面的参数camera_name改为head_camera

在这里插入图片描述


3.6. 纠正

简单地加载校准文件并不能纠正图像
要进行更正,可以使用Image_proc
摄像头节点运行的情况下进行视觉处理:

$ ROS_NAMESPACE=usb_cam rosrun image_proc image_proc

下图为严重畸变摄像头拍摄:
在这里插入图片描述

订阅image_rect_color图像,很明显的可以看到与原图像的对比


参考: camera_calibration


谢谢

  • 16
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论
ROS单目相机标定是一种通过使用ROS(机器人操作系统)来校准单目相机的方法。校准相机的目的是确定相机的内部参数(例如焦距和畸变系数),以便在图像处理和计算机视觉应用中正确地测量和估计物体的位置和大小。为了进行ROS单目相机标定,可以参考ROS Wiki提供的教程。首先,需要安装相应的ROS软件包,例如使用以下命令安装ROS Melodic版本的相机标定软件包: sudo apt-get install ros-melodic-camera-calibration 然后,确保相机已经通过ROS发布了图像,可以使用以下命令列出ROS主题以检查图像是否已发布: rostopic list 通过执行以上步骤,您就可以开始进行ROS单目相机标定了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ROS单目相机标定](https://blog.csdn.net/weixin_44709392/article/details/124169293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [1.ROS机器视觉:单目摄像头的调用与标定](https://blog.csdn.net/wzfafabga/article/details/127206880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氢键H-H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值