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


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

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

    文章包含 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.

  • 相关阅读:
    JavaScript高级程序设计(第四版)--学习记录之对象、类和面向对象编程(中)
    SpringBoot基础篇 (1)
    java基于ssm+jsp的教学视频学习网站
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter1-初始 Linux Shell
    用 C# 自己动手编写一个 Web 服务器
    VBA-自定义面板,使用SQL查询Excel数据
    应急响应-日志分析
    Python线程(thread)
    将 Python 与 RStudio IDE 配合使用(R与Python系列第一篇)
    音频抗丢包以及暴力重传实现抗丢包80%
  • 原文地址:https://blog.csdn.net/soaring_casia/article/details/126621478