当前位置: 首页 > news >正文

ROS 摄像头参数标定

ROS 摄像头参数标定

  • 1. 缘由意义
  • 2. 目的
  • 3. 标定
    • 3.1. 准备
    • 3.2. 启动摄像头
    • 3.3. 启动标定程序
    • 3.4. 开始标定
    • 3.5. 数据保存
    • 3.6. 纠正

1. 缘由意义

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

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


2. 目的

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


3. 标定


3.1. 准备

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

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

$sudoaptinstallros-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--size8x6--square0.025image:=/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]width640height480[narrow_stereo]camera matrix615.0574350.000000333.7356160.000000615.163616263.4170490.0000000.0000001.000000distortion0.261680-0.6518860.000347-0.0146900.000000rectification1.0000000.0000000.0000000.0000001.0000000.0000000.0000000.0000001.000000projection629.3759160.000000326.4979550.0000000.000000634.527771263.1752210.0000000.0000000.0000001.0000000.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


谢谢

http://www.jsqmd.com/news/446785/

相关文章:

  • OBLITERATUS:解锁大模型无限潜力
  • 会穿搭才是真的美,聪明女人必学的搭配技巧,优雅高级又有气质
  • 为macOS Finder提供直观的剪切粘贴体验 - 实践
  • C#委托学习思维导图
  • 一、HTML简介与开发环境
  • 技术架构解析:如何构建高并发、合规的本地生活多平台抽佣系统
  • 小程序商城平台哪家强?做商城小程序选哪个制作平台? - 码云数智
  • [kotlin] 从Java到Kotlin:掌握基础语法差异的跃迁指南 - 指南
  • 小程序商城哪个平台好,SaaS小程序商城平台深度对比 - 码云数智
  • 小程序开发一个多少钱啊,三种方式的费用构成与适用场景 - 码云数智
  • 如何做一个微信小程序商城 - 码云数智
  • 两个空,一个空性:AI元人文指向同一个家
  • 小程序快速开发平台有哪些,SaaS小程序制作平台深度对比 - 码云数智
  • 小程序第三方开发平台有哪些 - 码云数智
  • 如何开发微信里的小程序,小程序自助搭建教程 - 码云数智
  • 怎么开通自己的小程序,零代码小程序搭建全攻略 - 码云数智
  • 实用指南:Jenkins高级管理
  • 二叉树的层序遍历-leetcode
  • B2B制造企业如何选择AI出海服务商?2026年主流平台能力与用户反馈解析 - 品牌2026
  • 制造业B2B企业出海营销如何提效?2026年AI智能体服务商能力全景解析 - 品牌2026
  • Whats respect
  • [Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿 - 指南
  • 软件测试经典面试题,助你面试加分
  • Whats respect。
  • 空性西传——用却无视
  • 有意思的开源软件
  • 原生Java NIO的核心“坑”与Netty的解决方案(深度解析)
  • pngjs
  • 立直麻将赛事记分系统介绍与优化改进
  • delphi的TReeView支持鼠标拖动节点