机器视觉-相机标定及畸变矫正

摘要:本文首先介绍了针孔相机模型(线性模型),然后推导四个坐标轴变换的关系,引出R、T、K、D中包含相机的5个内参,6个外参。然后介绍相机畸变的原因以及畸变模型(非线性模型),引出相机的5个畸变参数。相机的标定是从空间点及其对应的像素点,获得相机的位置信息和内部参数信息的过程,16个相机参数的总结为此提供了模型基础。最后通过这16个参数建立的模型对失真的图片进行矫正。

1 相机线性模型

摄像机的线性模型是在理想情况下的成像模型,即光学中的中心投影,我们通常也称为针孔模型

1.1 针孔相机模型

在介绍摄像机标定参数之前,需要先简单说一下针孔摄像机的原理。投影平面到小孔的距离为焦距f,物体到小孔的距离为Z,其中物体和投影是倒立相似的关系,下图为针孔摄像机的投影示意 。

如果按照实际的投影关系建立坐标系,那么投影坐标和物体坐标的符号总是相反的,考虑起来不太方便,于是在“数学上”把投影平面平移到其关于小孔对称的位置,这样投影坐标和物体坐标符号就相同了,示意图如下:

根据三角形相似的原理,可以列出如下等式:

\frac{f}{Z}=\frac{l_{ty}}{l_{wt}}

1.2 相机中的坐标系

在视觉测量中,需要进行的一个重要预备工作是定义四个坐标系的意义,即世界坐标系摄像机坐标系 、 图像坐标系像素坐标系  。

  • {world},{camera},{picture}和{pixel}坐标系的坐标用下标来区分,分别是W,c,p,pix
  • {world},{camera},{picture}坐标系单位为长度,一般为mm;{pixel}坐标系单位为像素,一般为pix
  • {world}坐标系为世界坐标系,可以任意指定,其他坐标系都有明确的定义
  • {camera}坐标系为摄像机坐标系,原点在小孔的位置,z轴与光轴重合,Xc轴和Yc轴分别和投影面两边平行
  • {picture}坐标系为图像坐标系,光轴和投影面的交点为原点,Xp轴和Yp轴分别和投影面两边平行
  • {pixel}坐标系为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点Opix,uv轴和投影面两边重合

1.3 各个坐标系的坐标转换

1.3.1 {world}到{camera}

设某点在{world}坐标系中的坐标为P_{W}=\left [ x_{W},y_{W},z_{W}, \right ]^{T},该点在{camera}坐标系中的坐标为P_{c}=\left [ x_{c},y_{c},z_{c}, \right ]^{T},则有

                                                                                        P_{c}=\begin{vmatrix} R& T\\ 0& 1 \end{vmatrix} P_{W}                                        

其中R是正交旋转矩阵:

                                                                                   R=\begin{vmatrix} r_{11} &r_{12} &r_{13} \\ r_{21} &r_{22} &r_{23} \\ r_{31} &r_{32} &r_{33} \end{vmatrix}                                          

T是平移矩阵:

                                                                                     T=\left [ t_{x},t_{y},t_{z}, \right ]^{T}                                               

确定R需要3个参数,确定T需要3个参数,共需6个参数,这6个参数称为摄像机的外部参数。(在单目相机中外参没有多少意义。只有在双目相机中,以另一个摄像头为坐标系,得出的相对另一个摄像头的旋转和平移矩阵才有实际意义)

1.3.2 {camera}到{picture}

设空间点X_{c}在{camera}下:P_{c}=\left [ x_{c},y_{c},z_{c},1 \right ]^{T},其像点X_{p}在{picture}的齐次坐标为P_{p}=\left [ x_{p},y_{p},1 \right ]^{T},由图中相似三角形可得,

                                                                                       \left\{\begin{matrix} x_{p}=f\tfrac{x_{c}}{z_{c}}\\ y_{p}=f\tfrac{y_{c}}{z_{c}} \end{matrix}\right.                                                 

写成矩阵表示为,

                                                                            z_{c}P_{p}=\begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 &0 \\ 0& 0& 1 & 0 \end{bmatrix}P_{c}                                           

1.3.3 {picture}到{pixel}

s_{x}表示Xpix方向上单位mm的像素数,单位是pix/mm,s_{y}表示Ypix方向上单位mm的像素数,单位是pix/mm,x_{0}y_{0}表示投影平面中心在{pixel}中的坐标,设像素坐标P=\left ( u,v,1 \right )^{T}P = \left ( u,v,1 \right )^{T},则有

                                                                             \left\{\begin{matrix} u=x_{0}+x_{p}\cdot s_{x}\\ v=y_{0}+y_{p}\cdot s_{y}\end{matrix}\right.                                           

写成矩阵形式

                                               P_{pix}=\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=\begin{bmatrix} s_{x} & 0 &x_{0} \\ 0&s_{y} & y_{0}\\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x_{p}\\ y_{p}\\ 1 \end{bmatrix}=\begin{bmatrix} s_{x} & 0 &x_{0} \\ 0&s_{y} & y_{0}\\ 0 & 0 & 1 \end{bmatrix}P_{p}               

结合{picture}到{image}的变换,则{camera}到{pixel}的变换矩阵K为

                                                      K=\begin{bmatrix} s_{x}&0 &x_{0} \\ 0&s_{y} & y_{0}\\0 & 0& 1\end{bmatrix}\begin{bmatrix} f&0 &0 \\ 0&f &0\\0 & 0& 1\end{bmatrix}=\begin{bmatrix} f_{x}&0 &x_{0} \\ 0&f_{y} & y_{0}\\0 & 0& 1\end{bmatrix}                       

其中,f_{x}=s_{x}ff_{y}=s_{y}f称为相机在u轴和v轴方向上的尺度因子。

小结:f_{x}f_{y}x_{0}y_{0}这4个数叫做摄像机的内部参数,有时把焦距f也当作内部参数。因为这些参数只和摄像机有关系,和具体的摄像场景,和世界坐标系没有关系.f_{x}f_{y}的物理意义是摄像头感光芯片像素点的长宽比例,x_{0}y_{0}的物理意义是摄像头感光芯片安装时与理论中心的水平与垂直偏移量。

1.3.4 {world}到{pixel}

综上,可得:

                                                                      z_{c}\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=K\cdot \begin{bmatrix} R &T \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x_{w}\\ y_{w}\\ z_{w}\\ 1 \end{bmatrix}                                 

2 相机畸变模型

透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。径向畸变来自于透镜形状,切向畸变来自于整个摄像机的组装过程。畸变还有其他类型的畸变,但是没有径向畸变、切向畸变显著。

畸变图示

2.1 径向畸变

顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:

成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:
                                           

                                                              \left\{\begin{matrix} x_{0}=x\left ( 1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6} \right )\\ y_{0}=y\left ( 1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6} \right ) \end{matrix}\right.

公式里(x_{0}y_{0})是畸变点在成像仪上的原始位置,(xy)是产生畸变后新的位置,下图是距离光心不同距离上的点经过透镜径向畸变后点位的偏移示意图,可以看到,距离光心越远,径向位移越大,表示畸变也越大,在光心附近,几乎没有偏移。

2.2 切向畸变

切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:

                                                              \left\{\begin{matrix} x_{0}=x+\left [ 2p_{1} y+p_{2}\left ( r^{2}+2x^{2} \right )\right ]\\ y_{0}=y+\left [ 2p_{2} x+p_{1}\left ( r^{2}+2y^{2} \right )\right ] \end{matrix}\right.

下图显示某个透镜的切向畸变示意图,大体上畸变位移相对于左下——右上角的连线是对称的,说明该镜头在垂直于该方向上有一个旋转角度。

小结:单目摄像机透镜畸变校正需要确定的就是k1,k2,k3,p1,p2这5个参数,如果“鱼眼”现象不明显的话,常常使用k1,k2来校正径向畸变。

3,相机畸变矫正

大致流程如下,有待进一步完善

  1. 准备标定图片
  2. 对每一张标定图片,提取角点信息
  3. 对每一张标定图片,进一步提取亚像素角点信息
  4. 在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)
  5. 相机标定
  6. 对标定结果进行评价
  7.  查看标定效果——利用标定结果对棋盘图进行矫正

4,参考链接

机器视觉学习笔记(4)——单目摄像机标定参数说明_moverzp的博客-CSDN博客_单目摄像机
Step1:模型 16个相机参数(内参、外参、畸变参数)_bitdai2018-CSDN博客_相机内参
张正友标定法的真实理解_waeceo的专栏-CSDN博客_张正友标定法优点
镜头畸变矫正_waeceo的专栏-CSDN博客_畸变矫正
透镜畸变及校正模型_牧野的博客-CSDN博客_畸变模型
相机标定(Camera calibration)原理、步骤_aibotlab的博客-CSDN博客_calibration
相机内参的标定方法_IT的搬运工的博客-CSDN博客_相机内参标定
最详细、最完整的相机标定讲解_a083614的专栏-CSDN博客_相机标定方法
镜头畸变现象及其校正方法_满城风絮-CSDN博客_镜头畸变

  • 20
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值