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

经典干货|相机模型与张氏标定

视觉测量使用的日益广泛和频繁,对于基础知识的学习是掌握机器视觉的学习的关键;本文针对成像模型,坐标系转换和相机标定等知识进行简介。

虽然网上相关资料很多,但是本人在学习过程中同样为某些概念所困扰,写下学习总结一方面希望通过本文能为初学者解答相关概念,另一方面希望能够作为总结,加深自身印象。

文章包含 3 大部分,第一部分介绍相机成像模型,针对小孔成像原理和透视成像原理进行描述;第二部分介绍成像过程中的四个坐标系和三次坐标转换;第三部分介绍使用最多的自由平面相机标定法:张氏标定法;

成像简介

在实际成像过程中,经常会使用针孔模型作为相机成像模型的近似;针孔成像的原理:现实世界源于物体的光线穿过针孔,在底板上投影成一幅倒立的图像;

图一:针孔成像原理

图二:左图为2维针孔成像模型;右图为透视投影模型

对针孔模型进行二维化简,可以看出物体光线经过小孔后成倒立的像;但是成倒立的像表述比较口;因此对小孔成像进行化简成右图的形式,右图也称为透视投影模型;透视成像模型与小孔模型相比,光心位于成像平面的后方,成正立的实像,更符合实际成像过程;

透视投影将三维空间点投影到二维平面上,对于三维空间中一点,与相机光心,投影点三点连线在同一条线上;后续我们将使用透视投影模型作为成像分析的基础。

坐标系转换

在投射投影模型中成像具有以下几个过程,涉及到 4 个坐标系之间的三个转换:

图三:相机成像过程

坐标系介绍

1.空间三维坐标系

三维空间坐标系即世界坐标系,是一个绝对的坐标系,所有三维点在世界坐标系下能够反映各自的位置关系;世界坐标系的原点是不固定的,随着应用场景不同,世界坐标系原点不同;在相机标定过程中,世界坐标系置于标定板的棋盘格的左上端。

图四:世界坐标系

世界坐标系和相机三维坐标系都是三维坐标系,但是坐标系原点不同;两个三维坐标系可通过平移和旋转进行相互转换;物理意义:一个三维点在世界坐标系下的坐标可通过平移和旋转,转换到另一个不同原点的三维坐标系下。

图五:平移和旋转转换三维坐标系

假设世界坐标系下物体点 P 的坐标( Xw, Yw, Zw),经过旋转矩阵 R 和平移矩阵 t 变换后,转换为相机坐标系下坐标( Xc, Yc, Zc ),则转换过程可表为:

用矩阵表达:

是相机模型的外参

2.相机三维坐标系

相机坐标系是以相机光心 O 为原点的三维坐标系,世界坐标系下的三维点通过欧式变换(平移和旋转),可转换到相机坐标系中;相机坐标系的点到图像坐标系的点,通过透视变换进行转换;其中图像坐标系是一个二维坐标系,可理解为相机坐标系中距离相机光心 距离为f(Zc=f) ,与光心 Zc=0平 面平行的一个平面;

图六:透视变换

将所有相机光心的坐标投影到 Zc=f 的平面上则:

矩阵形式:

3.图像坐标系

图七:图像坐标系

图像坐标系( Zc = f 的平面)是二维坐标系,描述相机坐标系中投影点在图像上的投影位置,一般坐标中心在相机Zc坐标轴上,xy坐标轴分别与相机坐标系中 XY轴平行;图像坐标系描述透视变换后空间点在图像上成像的位置坐标;

4.像素坐标系

图像坐标 (x,y) 转换到像素坐标 (u,v) ,通过量化像素大小,计算投影点所在的像素位置;其中单个像素在x轴上的大小dx,y轴上的大小dy;一般在摄影测量中像素坐标系的原点在左下方;计算机视觉中像素坐标系的原点在左上方;本文以计算机视觉为准,原点在左上方如图7所示;

使用矩阵的形式表达:

为了获取齐次坐标,最后一行可以添加 1 进行补充;

由于存在加工误差,像素不是绝对的矩形,是平行四边形形状;引入倾斜因子 

图八:像素倾斜

此时公式(3)可描述成

,在实际标定过程中有时可认为 s=0,进行省略。 

成像过程介绍

联立(1)(2)(3)式可以获得,世界坐标系一点P(Xw,Yw,Zw) 到像素坐标的计算过程:

通过推导相机模型,知道相机的内参 K 和外参[R t],下面将介绍如何求解相机内参和外参;对于相机标定我们介绍张氏标定;后续会出相机标定的专题,介绍 DLT 直接线性求解法,Tsai 两步法等常见的标定方法,畸变矫正方法以及相关的非线性优化知识等。

张氏标定求解基础知识

相机标定,是使用大量观测值进行参数模型拟合的过程,在此拟合的参数模型是已知的,所以尽可能探索获取大量观察值的方案,如果观测值之间还满足一些其他的几何约束,就更有助于求解具体单个参数值;

张氏标定是一种提供观察值的方案,同时观察值之间还满足一定的几何约束(平面约束);

假设某图像上坐标m=

,齐次表达式m̅ =,世界坐标系一点坐标𝑀=,齐次形式M̅=;

则相机模型为:

其中s为尺度因子,外参[Rt],内参矩阵A

其中

为焦距的值(像素为单位),(u0,v0)为像主点坐标(像素单位);为像元轴的倾斜因子;

使用张氏标定时,世界坐标系固定在标定板上,且Z=0:

因此:

又由于:

张氏标定通过观察置于一个平面的标定图像,获取

与的映射关系单应性矩阵H,然后计算内参和外参的过程。

求解过程:近似解

定义:

则:

推导出:

由于 r1, r2 是正交矩阵的列向量,两两正交且为单位向量;

则具有如下两个约束:

则:

令:

注意到B是对称矩阵,可用6维向量表示:

已知 1 个单应性矩阵提供 2 个约束,线性方程组 b 有 6 个未知数(5 个内参+1 个尺度因子),

n>=3 个单应性矩阵可求取全部未知数;

n=2 时,令 γ=0,此时添加一个约束:

n=1 时可计算两个内参 α 和 β,此时要求 u0 和 v0是已知的;

由矩阵

,内参矩阵可通过 B 矩阵进行求解:

求取内参之后,根据内参矩阵 A 矩阵获取外参:

不足和改进

对于上面的解法,都在旋转矩阵 R=

是正交矩阵约束下求解的;

但是实际上由于噪声和干扰的存在,旋转矩阵不一定是正交的,因此此种计算方式获取的内参和外参有一定的误差;为了获取较精准的结果,可通过先对旋转矩阵 R 求取最接近的正交矩阵,

计算

式中R为要求的旋转矩阵,Q为上式中初步求取的含噪声的旋转矩阵;

公式(15)计算最小的F范数转换成获取最大的

矩阵的迹。

对 Q 矩阵进行奇异值分解为

,其中S=。此时定义一个正交矩阵 Z,则Z=,则

从等式中可以计算当

存在最大值,此时Z=I为公式(15)的解。

最大似然估计

上面的通过最小化代数几何获取的近似解求取的参数矩阵,不具有物理意义;通过最大似然估计进行计算精确值;上述计算的结果存在噪声,以旋转矩阵为正交举证为假设的前提进行计算的,虽然通过计算

获取了最接近的正交旋转举证,但是前面的计算已经包含了误差的影响,对于高精度的结果影响较大,下面需要通过非线性优化进行计算相机参数模型的精确解;

我们通过获取的n张图片,每张图片上面m个模型点。假设图片上的点具有随机正态分布的噪声点;则最大似然估计结果由下面的最小化公式获取:

其中

中,为第 i 张图片中三维空间中的投影点。旋转矩阵R 由一个三维向量进行参数化参与计算,三维向量与旋转轴平行,数值与旋转角大小一致;矩阵 R 和向量 r 通过罗德里格斯公式进行计算。最小化的过程是一个非线性最小化问题,根据 Levenberg-Marquardt 算法进行求解;求解过程中需要给定初始值A,,可将上面计算的近似解作为初始值使用。

畸变系数矫正

到目前为止,我们还未考虑畸变情况,所有推导都是无畸变的理想状态;对视对于便携式镜头的畸变是不可忽略的,广角镜头和鱼眼镜头畸变更大,尤其是径向畸变;在本节中我们将讨论畸变情况,一般只考虑2项径向畸变

,3 项切向畸变;在实际效果中,对像素畸变大小的影响排序:

图九:畸变图像

径向畸变是由于镜头自身凸透镜的固有特效造成,光线在远离透镜中心的地方比靠近中心的地方更加弯曲,因此镜头的畸变与距离镜头中心距离有关;

畸变是影响镜头透视成像结果,对于透视成像无畸变坐标(x,y),施加畸变后成像坐标

,则

其中:

,表示距离镜头中心的距离;

对于透视变换的畸变对像素坐标的影响,无畸变的理想像素(𝑣,𝑤),经过畸变影响后位置

;由公式可知,像素坐标和相机坐标的变换关系:

假设

,则畸变对像素坐标影响的数学模型为:

切向畸变是由于透镜和 CCD 的安装位置误差导致。因此,如果存在切向畸变,一个矩形被投影到成像平面上时,很可能会变成一个梯形。切向畸变需要两个额外的畸变参数来描述,矫正前后的像素坐标关系为:

综述我们一般使用 5 个畸变参数来描述透镜畸变,对于高精度测量,可选用更多项畸变系数进行畸变描述和校正;

则最终含有5项畸变系数的标定模型:

至此张氏标定理论部分基本已经讲完,后续将会介绍实践部分和精度影响。

张氏标定进行总结

1. 打印一个标定棋盘格,棋盘格粘贴在平面上;(进行高精度标定,可在陶瓷板上面达标棋盘格)

2. 移动棋盘格进行拍摄图片,为了获取最佳标定结果,一般拍摄 10 张以上图片会更好;

3. 提取图片中的角点坐标m(u,v);

4. 通过近似解估计内参和外参结果;

5. 使用线性最小二乘法估算畸变系数;

6. 最小化所有参数;

实验部分

实验部分使用α和β的相对误差及u0和v0的绝对误差探究0均值高斯噪声,标定图片数量以及标定平面倾斜角度对误差的影响结果;

1. 高斯噪声对标定结果的影响

3个确定位置的平面进行标定,对不同的标定图片施 0均值不同σ的高斯噪声,则α和β的相对误差及u0 和v0的绝对误差线性变化,数值从0.1pixel到 1.5pixel;说明随着高斯噪声的σ越大对误差的影响越大;

2. 标定图片数量对结果影响

随着标定图片数量的增加,相对误差和绝对误差的数值越来越低,因此一般标定建议标定数量至少10张图片;

3. 标定平面倾斜角度对结果的影响

当两幅图片只具有位移,没有旋转时,外参不会分别产生约束,两个单应矩阵具有一定的转化关系,此时两张图片产生退化配置,只有一张图片提供外参约束;因此在标定板移动时,旋转角度要大一些,实验探究旋转角度对标定结果的影响;当两幅图片的旋转角度小于 5°时,产生退化配置,标定误差非常大;一般建议移动标定板时,角度 45°和 70°之间最佳;

总结

本文介绍相机的成像模型以及常见的 2 维平面标定方法,介绍小孔成像模型以及透视成像模型,成像过程中 4 个坐标系和 3 次坐标系变换,以及常见的 2D平面标定法,张氏标定的相关介绍;本文的来源参考网上的知识进行相关知识的总结,后续也将推出视觉测试方面的连载系列博客;如果能够为同学解答一些小的疑惑,本人将无比荣幸;本人知识有限,写作手法生疏,如果有些地方描述不清晰烦请指教,本人将在下次写作中改正;欢迎各位同学进行相关知识交流。

参考文献

1.  Z. Zhang, "A flexible new technique for camera calibration," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 22, no. 11, pp. 1330-1334, Nov. 2000,doi: 10.1109/34.888718.

2.https://blog.csdn.net/rs_lys/article/details/113248118.

相关文章:

  • 裂变营销引爆用户增长:拼多多式的老带新活动
  • 基于FTP模式更新Winform程序
  • 金仓数据库 KingbaseES 插件参考手册 T(2)
  • LeetCode每日一题JAVA、JavaSrcipt题解——2022.08.11-08.20
  • java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
  • 有限元和神经网络结合,人脑神经网络和宇宙
  • 手写一个二叉搜索树(BST)
  • 高通WLAN框架学习(36)-- ACS(Auto Channel Selection)自动信道选择
  • 程序流程控制(Java)
  • 分布式事务seata入门
  • 深度神经网络训练
  • 盒模型小知识点
  • Hbase-9-HBase操作-过滤器
  • matlab gui编程教程,matlab如何使用gui
  • win10如何禁止CDR软件访问网络的设置方法教程
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Centos6.8 使用rpm安装mysql5.7
  • Date型的使用
  • js
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 动态魔术使用DBMS_SQL
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 那些年我们用过的显示性能指标
  • 驱动程序原理
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我感觉这是史上最牛的防sql注入方法类
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用Canvas画一棵二叉树
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​io --- 处理流的核心工具​
  • ​什么是bug?bug的源头在哪里?
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (力扣)1314.矩阵区域和
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)Mysql的优化设置
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net IE10 _doPostBack 未定义
  • .Net MVC4 上传大文件,并保存表单
  • .pop ----remove 删除
  • []FET-430SIM508 研究日志 11.3.31