镜头畸变矫正——LDC

一、什么是畸变?畸变的成因?

        理想的成像模型是小孔成像;小孔越小,图像越清晰;小孔越大,图像越模糊。但是小孔越小图像也越暗,对光的利用率低,且不能调节光圈和焦距。于是现在的相机大多都加上了透镜提高了光的利用率;但是因为制造工艺的差异导致不大可能做到镜头各个位置的放大倍率都相同,所以便引进了畸变的问题。

1、小孔成像

假设图中箭头为可发光的箭头,其顶部产生的光线沿直线传播向周围辐射,但仅有穿过小孔的那一条光线到达了投影屏幕,从而形成了一个像素。同样地,箭头其他部位发射的光线也会穿过小孔在投影屏幕中形成多个像素,最终这些个像素组成了“箭头”的祥子。

由图可知,由于光线沿直线传播,箭头顶部的光线在穿过小孔后到达了屏幕底部,箭头底部的光线到达了屏幕顶部,所以小孔成像为倒立的实像。通过控制投影屏幕的位置,我们可以得到不同大小的像。


问题1:为什么是小孔成像,孔大一点不行么?

之所以必须为小孔,是因为要确保由发光箭头每个部位发射的光线,只有少部分通过小孔到达屏幕并在某一点或小面积区域形成像素。

如果小孔增大,以箭头顶部为例,顶部发射的光线就会在通过小孔后在屏幕较大面积区域形成像素,同样,箭头其他部位发射的光线也会形成较大面积的像素,两者或多部分的像素互相重叠,最终只会看到一片光斑,而不是“像”。用现代术语解释,也就是小孔越大,形成的“像”分辨率越低,图像越模糊,最终只会是一片光斑。

2、透镜成像

在上图中,再现了相机的基本成像过程,其中,凸透镜代表镜头,而孔阑又被叫做孔径光阑,就是我们常说的光圈,观察屏就是传感器。因此我们可以下结论,小孔成像与凸透镜成像其实是在描述同样一个过程,只是凸透镜成像中有了透镜的参与,将大孔径下的像进行了“提前”成像,也正是因为有了凸透镜改变了原本的光线路径,因此相机成像过程就偏离了传统的小孔成像,在计算成像关系时需要将凸透镜的焦距等因素考虑进去。

3、畸变的含义和成因

        畸变是指光学系统对物体所成的像相对于物体本身而言的失真程度,是光学透镜的固有特性,其直接原因是因为镜头的边缘部分和中心部分的放大倍率不一样导致。畸变并不影响像的清晰程度,只改变物体的成像形状,畸变是一种普遍存在的光学现象。

        镜头畸变是镜头工艺的固有属性;好的镜头加工会好些镜头畸变也更小些,还可以通过算法矫正畸变,但是做不到消除

图像畸变

        畸变的类型可以分为三类:桶型畸变、枕型畸变和线性畸变。我们常见到的是桶形畸变,由镜头中透镜物理性能以及镜片组结构引起的成像画面呈桶形膨胀状的失真现象,我们在使用广角镜头或使用变焦镜头的广角端时,最容易引起桶形失真现象。

1)镜头畸变

i) 透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。

ii) 镜头的畸变主要分为径向畸变切向畸变两类。

 参考文章:

小孔成像原理 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/623166601
图像—图像边缘畸变解决办法 - TP-LINK视觉安防https://security.tp-link.com.cn/service/detail_article_4518.html

二、相机的成像过程

        相机的成像过程实质上是坐标系的转换。首先空间中的点由 “世界坐标系” 转换到 “相机坐标系”,然后再将其投影到成像平面 ( 图像物理坐标系 ) ,最后再将成像平面上的数据转换到图像像素坐标系

为便于理解不同坐标系间的差异,引入两个定义:

相对坐标系:依托于某物体的空间位置、旋转角度而定义的坐标系,会随着物体移动发生变化

绝对坐标系:不依托于其他任何物体,在指定后不变且唯一

 1、像素坐标系( 图像像素坐标系 )

图像像素坐标系为固定在图像上的以像素为单位的平面直角坐标系,其原点位于图像左上角,X轴与Y轴平行于图像物理坐标系的X和Y轴,其依托于图像物体坐标系,同样是相对坐标系

像素坐标就是像素在图像中的位置。一般像素坐标系的左上角的顶点就是原点,水平向右是u轴,垂直向下是v轴。

在上图中,任意一个像素点的坐标可以表示为(ui,vi),单位是像素

2、图像坐标系( 图像物理坐标系 )

图像物理坐标系原点为透镜光轴与成像平面的交点,X轴与Y轴分别平行于相机坐标系的X与Y轴,是二维平面直角坐标系,单位为毫米,其依托于相机坐标系,故也为相对坐标系

将像素坐标系的原点平移到图像的中心,就定为图像坐标系的原点。

在图中,假设图像中心的像素坐标是(u0,v0),像素的长宽分别表示为​,那么,图像坐标系的坐标(x,y)与像素坐标系的坐标(u,v)之间的关系可以表示为:

图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm,1/dx和1/dy为每毫米有多少个像素(一般相机像元dx=dy)。

这种加法的形式不利于计算机的计算,因此类似于上文使用齐次坐标系进行计算,齐次坐标在增加向量维度的同时不改变向量的自由度,上式可以转换为:          

上式将向量中的加法运算转换成乘法运算,方便计算机的运行。得到了图像坐标系​ 与像素坐标系​ 的转换的数学模型
 

 3、相机坐标系与相机内参

相机坐标系以相机的光心作为原点,X轴为水平方向,Y轴为竖直方向,Z轴指向相机所观察的方向,其随相机的移动而变化,即为相对坐标系

相机坐标系是以相机的光轴作为Z轴,光线在相机光学系统的中心位置就是原点Oc(实际上就是透镜的中心),相机坐标系的水平轴Xc与垂直轴Yc分别于图像坐标系的X轴和Y轴平行。在图中,相机坐标系的原点与图像坐标系的原点之间的距离OcOi之间的距离为f(也就是焦距)

相机坐标系(Xc,Yc,Zc) 与图像坐标系(x, y) 的转换:相机坐标系是一个三维坐标系,图像坐标系是二维坐标系,三维到二维有一个降维的过程,主要是丢掉了深度这一维度,坐标向量由三维转为二维。

图2 相机坐标系与图像坐标系转换示意图

由三角形的相似关系,可以得到如下公式:                         

将其转为齐次坐标系下为:                    

至此推导出了相机坐标系​ 与图像坐标系​ 的转换数学模型。
 

由上面两个数学模型可以得到一个三维空间中的点从相机坐标系到像素坐标系的整个投影过程,其数学形式为:

 通过对中间变换矩阵的整合可以得到:

其中​ 称为相机的内参矩阵,用​K来表示。

通过上述式子的演绎推导,就可以得到一个相机的内参数矩阵K​ ,相机的内参矩阵K有4个未知的数据,这四个数据与相机的构造相关。为​ 的简写形式表示相机的焦距,是单位像素的长和宽。是像素坐标系下图像中间未知的坐标。通常相机的内部参数在相机出厂的时候已经做了标定,属于已知量。所以标定时需要知道该sensor得像元大小和镜头的焦距大小来确定相机的内参矩阵

4、世界坐标系与相机外参

世界坐标系可以任意选择,为假想坐标系,在被指定后随即 不变且唯一,即为绝对坐标系

世界坐标系的原点是Ow,而Xw,Yw,Zw轴并不是与其他坐标系平行的,而是有一定的角度,并且有一定的平移。

世界坐标系(Xw,Yw,Zw) 与相机坐标系(Xc,Yc,Zc) 的转换:相机坐标系是一个不稳定的坐标系,因为随着相机的移动会改变原点的位置以及各个坐标轴的方向。在三维重建或者相机定位的过程中需要一个稳定不变的世界坐标系。在世界坐标系中,可以将所有的坐标进行统一。

假设点P是一个三维空间中的点,其在相机坐标系下的位置为Pc ,在世界坐标系下的位置为PwPwPc 可以通过一个变换矩阵相互转换,该变换矩阵可以细分为旋转矩阵(R) 和平移矩阵(t) 。其数学表达形式为:                                        

其中R有三个自由度,是一个3×3的矩阵,表示相机在世界坐标系下的旋转。t​ 表示相机的原点相对于世界坐标系或者说相机开始时的坐标系的原点变化,是一个3×1的矩阵。将上式展开为具体的形式为:                                 

其齐次坐标的形式可以表示为:                                   

可以将其简化为:                                              

其中​ 称为相机的外参矩阵,用T 来表示。

1)为什么需要世界坐标系?

        受限于相机FOV以及拍摄时的位置与角度,拍摄的单张图像所含信息有限,当需要把多张图像的信息聚合在一起时,所面临的一个问题就是 不同图像在拍摄时处于各自的 相机/物理/像素 坐标系中,这些相对坐标系绝大部分情况下并不相同,要同时处理多张图像信息,便必须将多张图像的信息放置于同一个坐标空间内,使用相同的标准进行描述。

即想将不同视点/视角拍摄的图像信息整合在一起就必须将所有的信息放在同一个坐标系下,这个坐标系应与各张图像的 相机/物体/像素 这些相对坐标系无关,在确定后应不变且唯一,即应为绝对坐标系,我们将这个坐标系称为 世界坐标系 。

2)世界坐标系的选取

在实践中,世界坐标系的选取可分为两种情况,单目相机与双目相机。

i)单目相机

在单目相机中,我们通常选择拍摄第一张图像时的相机坐标系作为世界坐标系,即以拍摄第一张图像时相机的光心(小孔)作为原点,X轴为水平方向,Y轴为竖直方向,Z轴指向拍摄第一张图像时相机所观察的方向。选定后世界坐标系便不再发生变化,即不变且唯一。

ii)双目相机

在双目相机(A,B)中,与单目相机大同小异,我们可选取其中一个相机A拍摄第一张图像时的相机坐标系为世界坐标系,即以相机A拍摄第一张图像时相机的光心(小孔)作为原点,X轴为水平方向,Y轴为竖直方向,Z轴指向拍摄第一张图像时相机A所观察的方向。

参考文章:

坐标系的转换这位大佬写的特别清晰:

相机与图像--小孔成像模型与坐标系--坐标系转换_Tian Fangzheng的博客-CSDN博客利用图像序列进行三维重建的过程,相当于把一张张由很多像素组成的二维图像还原到三维空间中的一个过程。通过了解整个投影的过程,就可以很容易理解如何利用图像进行三维重建,以及三维重建中的关键步骤是什么。该小节主要讲述单目相机的投影过程。A. 小孔成像模型与坐标系相机拍摄图像的过程可以简化成小孔成像的一种形式,利用这种形式可以很容易得到相机模型的数学表达式。通过相机的成像方式及其数学表达式,可以看出三维场景和图像中每一个像素之间的映射关系。通过这种映射关系,就可以将图像中的像素还原到三维空间中。若把一系列._小孔成像模型https://blog.csdn.net/TFZ941214/article/details/121235284

相机模型中的世界坐标系究竟指什么? - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/346131786

三、相机内外参与重投影误差

1、相机内外参组合

通过相机的内参和外参,可以将相机模型中的四个坐标系之间的变换全部联系起来,其数学形式为:

通过相机的内参以及外参可以将三维的空间点投影到图像的像素空间中。相机的内参一般是已知的 。

为相机的内参矩阵,为相机的外参矩阵

2、重投影误差

重投影是指从世界坐标系三维到像素坐标系二维的过程

重投影误差是指:当前带有镜头畸变的相机落在像素坐标系的实际位置与拟合出的畸变曲线(k1,k2,k3,p1,p2)之间的误差,重投影误差越小,说明拟合出的曲线与当前相机实际畸变越符合,矫正效果越好。

三、畸变矫正

1、径向畸变

        对于透镜而言,以透镜的中心作为原点,往外是透镜的半径的方向,当光线越靠近中心的位置,畸变越小,沿着半径方向远离中心的时候,畸变越大

径向畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,矫正公式如下:

公式里(x0,y0)是畸变点在成像仪上的原始位置,(x,y)是畸变校正后新的位置。通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述。

实现过程是,对输出图的点做遍历——以1080p的图像为例,从点(0,0)到点(1919,1079),一行一行的遍历——依次找到输出点(x, y)对应的原图点(x0, y0)的像素值,再将(x0, y0)的值赋给(x, y)。如果计算出来的对应的原图的点(x0, y0)不是整数,则用二次线性插值计算此点,然后赋值给(x, y)。

举个一维差值示例:

计算得到,要用x0=0.3位置的点赋值到纠正后的图像的对应点上。

x0=0的点RGB(120, 120, 240),x0=1的点RGB(100, 110, 250)。

那么可以计算x0=0.3位置的

R=120*(1-0.3)+100*0.3=114;

G=120*(1-0.3)+110*0.3=117;

B=240*(1-0.3)+250*0.3=243

完成所有遍历后,就得到了输出图像。
 

亚像素含义:

亚像素是指图像上每个像素点的坐标值不再是整数定位,而是浮点数定位。 如果利用亚像素技术将精度提高到0.1像素,相当于提高10倍的图像系统分析分辨率。

2、切向畸变

切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。

切向畸变数学模型可以用两个额外的参数p1和p2来描述:

3、畸变模型

同时对径向、切向畸变消除就是将两组式子合并。

最终可以得到5个畸变参数

Distortioncoefficients=(k1,k2,p1,p2,k3)

畸变参数的一般顺序是k1,k2,p1,p2,k3。之所以把k3放在最后其实也很容易理解,因为前面说了一般k1,k2用来处理径向畸变足矣,k3相对而言用的比较少。这些畸变是属于相机的内参的

在Opencv中他们被排列成一个5*1的矩阵,经常被定义为Mat矩阵的形式,如Mat distCoeffs=Mat(1,5,CV_32FC1,Scalar::all(0))

这5个参数就是相机标定中需要确定的相机的5个畸变系数。求得这5个参数后,就可以校正由于镜头畸变引起的图像的变形失真,下图显示根据镜头畸变系数校正后的效果:

参考文章:

相机标定的来龙去脉(详解标定原理、畸变矫正原理、使用经验)_畸变标定原理_zsffuture的博客-CSDN博客相机标定的意义在机器视觉领域,相机的标定是一个关键的环节,它决定了机器视觉系统能否有效的定位,能否有效的计算目标物。相机的标定基本上可以分为两种,第一种是相机的自标定;第二种是依赖于标定参照物的标定方法。前者是相机拍摄周围物体,通过数字图像处理的方法和相关的几何计算得到相机参数,但是这种方法标定的结果误差较大,不适合于高精度应用场合。后者是通过标定参照物,由相机成像,并通过数字图像处理的方法,..._畸变标定原理https://blog.csdn.net/weixin_42398658/article/details/105919829ISP(图像信号处理)之——镜头畸变校正_lyfwill的博客-CSDN博客透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。1. 径向畸变顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在短焦镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图: 成像仪光轴中心的畸变为0,沿着镜头半径..._畸变校正https://blog.csdn.net/lyfwill/article/details/81636281

如何基于opencv标定得到这五个畸变系数可以参考这位大佬的文章:

镜头畸变现象及其校正方法_Naruto_Q的博客-CSDN博客畸变纠正后,以圆为例,测试效果。http://www.ixueshu.com/document/ffb29c8956cd54b3.htmlhttp://blog.csdn.net/waeceo/article/details/50580808http://blog.csdn.net/dcrmg/article/details/52950141http://blog.csdn_镜头畸变https://blog.csdn.net/piaoxuezhong/article/details/75268535

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值