机器视觉标定讲解

B站 :道传科技上位机 观看教

一、什么是相机标定

相机标定(Camera Calibration)是指通过实验或算法手段确定相机的内部参数(如焦距、主点坐标、畸变系数)和外部参数(如旋转矩阵、平移向量)的过程。这些参数共同描述了相机的成像模型,使得三维空间中的物体能够被准确投影到二维图像平面上。

**二、**标定的核心意义

1**.**几何映射关系的建立:标定解决了"像素如何对应物理尺寸"的问题,例如在工业检测中,标定后的系统可通过图像直接计算工件的实际尺寸。

**2.**畸变校正:真实镜头存在径向畸变(桶形、枕形)和切向畸变(梯形),标定可消除图像变形,提升测量精度。

**3.**多传感器协同:在双目视觉或激光雷达-相机融合系统中,标定确定不同传感器间的坐标系转换关系,确保数据一致性。

三、坐标系和相机成像以及参数

一.四种坐标系

1.世界坐标系(World Coordinate System):描述物体在真实空间中的绝对位置。

2.相机坐标系(Camera Coordinate System):以相机光心为原点,光轴为Z轴。

3.图像坐标系(Image Coordinate System):以光轴与成像平面的交点为原点,单位为毫米。

4.像素坐标系(Pixel Coordinate System):以图像左上角为原点,单位为像素。

二、内参和外参矩阵

除了世界坐标系, 后面三个坐标系只跟相机本身有关。 相机内参表达的就是这三个坐标之间的转换关系, 而相机外参表达的是相机与世界坐标系之间的转换关系。成像的过程实质上是几个坐标系的转换。首先空间中的一点由世界坐标系转换到相机坐标系 ,然后再将其投影到物理成像平面 ( 成像平面坐标系 ) ,最后再将成像平面上的数据转换像素坐标系 。

从世界坐标到像素坐标总共有3步转换, 前面2个合在一起就是相机内参, 最后一个是相机外参。如下左图所示

三、畸形模型

四、内参标定方法

棋盘格标定法(张正友标定法):使用已知尺寸的棋盘格标定板,通过多角度拍摄图像,提取角点并求解单应性矩阵,结合最小二乘法优化内外参数。此方法精度高、操作简便,是工业界主流。步骤:拍摄多幅棋盘格图像(通常需15-20张)。检测角点并亚像素优化。利用线性最小二乘解算初始参数。通过Levenberg-Marquardt算法非线性优化,最小化重投影误差。如下左图

圆形标定板:利用圆形标记点,适用于高精度场景(如医疗影像),但对离焦敏感。如下右图

五、外参的标定方法

外参标定的核心是:已知多个点分别在相机坐标系下的坐标和在世界坐标系下的坐标, 求它们之间的映射关系。
常用求解PnP 的方法,即已知多个点, 在像素坐标系的二维坐标, 和在世界坐标系的三维坐标,并且已知内参, 求解旋转平移矩阵。

六、双目标定的标定方法

双目标定的主要目的是确定两个摄像头之间的相对位置关系,以便通过视差计算物体的三维信息‌。双目视觉系统通过两个摄像头获取图像,利用视差原理来计算物体的深度信息。为了实现这一目的,需要对两个摄像头进行精确的标定,以确定它们之间的位置关系和参数‌。
可以看到,为了将两个图像调整到同一平面且中心水平对齐(外极线校准),我们需要知道两个摄像头的相对位置关系,具体来讲就是:旋转矩阵R和平移矩阵T,然后对应将图像做旋转和平移即可。获取立体校正的参数就是立体标定要做的工作,实际上只是对每个镜头进行前面单目标定,用单目标定的参数计算得到立体校正的参数。

双目视觉技术在机器人导航、三维重建、测量和增强现实等领域有广泛应用。通过精确的双目标定,可以提高系统的准确性和可靠性,确保机器人或设备能够准确地感知和理解周围环境,从而执行复杂的任务‌

七、其他标定方法

一、 自标定方法

基于场景约束:利用自然场景中的平行线、消失点等几何特征推导参数,适用于无法放置标定物的场合(如户外SLAM)。

基于深度学习:使用神经网络直接从图像回归参数,无需显式建模,但需大量标注数据。

二、 零失真相机标定

通过LCD显示屏生成相移光栅,建立像素级映射关系,适用于广角镜头和复杂畸变矫正,精度可达亚像素级。

八、一些关键的算子和流程

准备阶段:

1. 首先要获取相机的初始内参(焦距,畸变系数,单个像素的宽,单个像素高,图像 坐标的中心值横坐标,图像坐标中心值的纵坐标,图像宽度,图像高度)

2. 根据标定板的大小利用 gen_caltab 算子,生成描述文件。(保存到指定位置)

3. 拍摄 14---20 组标定板图像(eye_in_hand),并准确记录每组图像在拍摄时 TOOL_IN_BASE 位姿(此位姿从机器人中读取)。 备注:在获取标定图像时,标定板不动,机器人末端的摆动要尽可能的全面,绕各 个轴的旋转角要尽量的大。标定板要出现在相机视野的各个角落。理论上图像越多, 角度越全面,标定精度越高。

标定阶段:

1. 读取相机初始内参,设置描述文件路径

2. 创建标定数据模型 create_calib_data

3. 设置相机的参数类型 set_calib_data_cam_parm

4. 设置标定板的数据类型(此处用到了描述文件)

5. 设置标定模式 set_calib_data(我使用的是非线性的方法)

6. 循环读取图像将标定板的位姿信息和机器人末端在基坐标系位姿(TOOL_IN_BASE) 保存到标定数据模型中。

7. 进行手眼标定 calibrate_hand_eye 备注:手眼标定最终获得的是相机与机器人末端的位姿关系(Camera_In_Tool)。在循 环输入 TOOL_IN_BASE 时其输入格式一定要是 YZX 的(至少我试过 XYZ,YZY 是不行的), 到此标定就结束了。 如果是使用该标定结果的话,要先选择参考的平面进行一步标定获得参考的 obj_in_cam, 然后再计算抓取物体点与 obj_in_cam 的关系。所用到的方程如下:

B站 :道传科技上位机 观看教程视频

相关推荐
千宇宙航2 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
jndingxin5 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
晨同学03276 小时前
opencv的颜色通道问题 & rgb & bgr
人工智能·opencv·计算机视觉
kyle~9 小时前
计算机视觉---RealSense深度相机技术
人工智能·数码相机·计算机视觉·机器人·嵌入式·ros·传感器
看到我,请让我去学习10 小时前
OpenCV开发-初始概念
人工智能·opencv·计算机视觉
双翌视觉10 小时前
机器视觉对位中的常见模型与技术原理
数码相机·计算机视觉·机器视觉
PyAIExplorer11 小时前
基于 OpenCV 的图像 ROI 切割实现
人工智能·opencv·计算机视觉
澪-sl14 小时前
基于CNN的人脸关键点检测
人工智能·深度学习·神经网络·计算机视觉·cnn·视觉检测·卷积神经网络
静心问道18 小时前
SqueezeBERT:计算机视觉能为自然语言处理在高效神经网络方面带来哪些启示?
人工智能·计算机视觉·自然语言处理
顾道长生'1 天前
(Arxiv-2025)通过动态 token 剔除实现无需训练的高效视频生成
计算机视觉·音视频·视频生成