首页 > 其他分享 >几何校准 和 ros环境下标定Balser相机

几何校准 和 ros环境下标定Balser相机

时间:2024-11-26 21:33:08浏览次数:5  
标签:校准 camera image 标定 相机 畸变 Balser 图像 ros

几何校准

基本概念

内参数

  1. 内参数是相机内部的参数,与相机的位置无关,由镜头和感光元器件的特性决定。
  2. 包括:主距,主点,畸变参数

畸变参数

径向畸变:正和负径向畸变

  • [@] 正径向畸变 (桶形畸变):
    • 在这种畸变中,图像中心附近的点会向外移动,图像看起来像是从中心向外膨胀,尤其是在图像的边缘部分,变形最为显著。
    • 关键点: 随着点到图像中心的距离增加,畸变也增加。即,距离越远,图像拉伸得越厉害。这种畸变的增量与角度无关,仅与点到中心的距离有关。
  • [@] 负径向畸变 (枕形畸变):
    • 在这种畸变中,图像中的点向内收缩,图像看起来像是被压入到中心,尤其是在图像的边缘部分,收缩更为明显。
    • 关键点: 随着点到图像中心的距离增加,畸变也增加,但方向相反,即图像被向中心挤压。这个畸变的增量同样与角度无关,仅与点到中心的距离有关。
  • 切向畸变 (Tangential Distortion)
    • 切向畸变会使图像中的直线发生一定的扭曲,通常是由于镜头安装在相机上时没有完全对准成像平面而引起的。这个畸变会导致图像中的直线变成曲线,但不像径向畸变那样规则。
    • 切向畸变往往会导致图像的一部分看起来倾斜或弯曲,尤其是在图像的角落处。

镜头畸变的数学模型

棋盘格标定

(5 封私信 / 81 条消息) 为何opencv张正友相机标定需要十几张棋盘格照片? - 知乎 (zhihu.com)
详解见知乎,此方法的推导有所不懂。
获取各参数:
棋盘格标定算法流程

  1. 通过世界坐标系下的棋盘格角点坐标和图像坐标系下的角点坐标计算单应矩阵H
  2. 通过外参中旋转矩阵提供的约束建立约束方程,并使用至少3张图(3个不同位置拍摄棋盘格)来计算相机的内参K
  3. 通过已知的H和K反推出外参R,t
  4. 将畸变系数初始化为0,并将1.2.3计算出的内参、外参作为初始值进行非线性优化

实践

ros 环境下标定Balser相机

参考教程

摄像头标定--camera_calibration-CSDN博客
csdn 付费资源下载网站
视频教程(5) Calibration of USB camera for AprilTag package in ROS - YouTube
标定棋盘格下载 Camera Calibration Pattern Generator – calib.io
本教程在已经配置好 basler 相机的 pylon 环境下进行。
详细环境配置参考 : ubuntu20.04安装basler相机ROS驱动并使用ROS采集数据_basler相机 ros-CSDN博客 (注意看评论可规避一些坑,师弟师妹看课题组思维导图,都有介绍)

代码

  1. 首先安装必要的包:
sudo apt install ros-noetic-camera-calibration
  1. 创建新终端,启动 ROS 核心:
roscore
  1. 新开终端,启动 Basler 相机(这是我 basler sdk 的存放位置):
source ~/ROS_Basler_camera/catkin_ws/devel/setup.bash
roslaunch pylon_camera pylon_camera_node.launch
  1. 检查相机是否正常工作(新开终端):
# 查看图像话题
rostopic list | grep image

# 查看图像流是否正常
rosrun image_view image_view image:=/pylon_camera_node/image_raw
  1. 如果图像正常,新开终端运行标定程序(根据你的标定板参数修改):
# 假设标定板是 8x11 格子(内角点 7x10),格子尺寸 16mm
rosrun camera_calibration cameracalibrator.py --size 7x10 --square 0.016 image:=/pylon_camera_node/image_raw camera:=/pylon_camera_node

命令界面:

标定完成界面:点击保存 save,保存路径在 tmp/calibrationdata. tar. gz

yaml文件就是我们需要的标定结果输出结果:


标签:校准,camera,image,标定,相机,畸变,Balser,图像,ros
From: https://www.cnblogs.com/zyhlearning/p/18571025

相关文章

  • WIN10 离线环境安装 Microsoft.WindowsTerminal
    如果遇到离线安装后打开报错“文件系统错误12029”说明安装方式错误,没有配置license导致下面是安装步骤:1.下载安装文件windows10下载Microsoft.WindowsTerminal_1.21.3231.0_8wekyb3d8bbwe.msixbundle_Windows10_PreinstallKit.zip下载地址https://github.com/micro......
  • 树莓派4b4g(已安装ubuntu20.04及ros1)+大疆混合固态激光雷达mid360(已在rviz中可显示数据
    首先安装FileZilla文件传输软件,获取树莓派ip后,可实现ubuntu与windows文件自由传递。推荐下面这篇安装使用方法。https://blog.csdn.net/SoloVersion/article/details/124579221目录1、配置大疆mid360并在rviz显示2、树莓派启动mid360,运行fast-lio1、配置大疆mid360并在rvi......
  • Win11系统缺失Microsoft.VisualBasic.Compatibility.Data.resources.dll文件的解决方
    在Windows11操作系统中,用户可能会遇到系统提示找不到Microsoft.VisualBasic.Compatibility.Data.resources.dll文件的问题。这个DLL文件是.NETFramework的一部分,特别是与VisualBasic应用程序的兼容性相关。当这个文件缺失或损坏时,依赖它的应用程序可能无法正常运行,导致错误......
  • ros2学习日记_241124_ros相关链接
    前言提醒:文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。文章目录前言Ros相关网址Ros相关网址鱼香......
  • 如何利用ros搭建虚拟场景通过仿真机器人完成一次简单的SLAM建图、导航规划(超简单)?——
    一:什么是SLAM,SLAM和导航规划又有什么关系?SLAM(SimultaneousLocalizationandMapping,即同时定位与建图)是一种在未知或动态环境中自行驶的重要技术。主要通过设备上的传感器(如激光雷达、深度摄像头、惯性测量单元IMU等)实时感知周围环境,同时估计自身的位姿(位置和朝向)以及构建......
  • 轴承故障诊断 (12)基于交叉注意力特征融合的VMD+CNN-BiLSTM-CrossAttention故障识别模
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!P......
  • ROS个人学习记录(跟随教程【Autolabor初级教程】ROS机器人入门:https://www.bilibili.co
    参考文档:http://www.autolabor.com.cn/book/ROSTutorials/index.html1.5ROS架构1.5.1ROS文件系统ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构大致可以如下图所示:WorkSpace---自定义的工作空间|---build:编译空间,用于存放CMake和catkin的缓存信息、配置......
  • ros2_control 架构分析(2)-HardwareInterface
    1.介绍在ROS2_control框架中,hardware模块负责与物理硬件进行直接通信。它抽象了三类硬件:system、sensor和actuator,分别对应复杂的系统、仅输出数据的传感器和仅接收输入的执行器。2.类与接口在ROS2_control中,system、sensor和actuator作为三个核心类存在被上层调用,它们各自......
  • SpringSecurity + Spnego + Kerberos 实现AD域单点登录
    SpringSecurity+Spnego+Kerberos实现AD域单点登录文章目录SpringSecurity+Spnego+Kerberos实现AD域单点登录前言一、域是什么?二、单点登录是什么?三、如何实现四、Kerberos五、Spnego介绍六、spring-ldap连接域实现域用户管理七、单点登录案例前言本文......
  • 【ROS2实操三】动作通信
    概念关于action通信,我们先从之前导航中的应用场景开始介绍,描述如下:        机器人导航到某个目标点,此过程需要一个节点A发布目标信息,然后一个节点B接收到请求并控制移动,最终响应目标达成状态信息。        乍一看,这好像是服务通信实现,因为需求中要A发送......