镜头畸变是怎么产生的

1、问题背景   最近在做的项目有畸变校正的需求,但测试镜头畸变时,发现畸变的形态不太正常。如下图所示中间向内凹、四周向外凸,感觉像是曲线型的。   但常见的畸变就两种,一种是向内收的枕形畸变,另一种是向外凸的桶形畸变,所以本篇文章主要是对这个问题做一个分析,   以及总结一下什么是畸变、畸变是怎么产生的、畸变的计算。   2、问题分析   关于畸变,是属于像差的一种,肯定是和镜头相关的。遇到我上面的问题具体该怎么处理呢?   最简单的方法就是对着图卡(一般是点阵图/棋盘格)去拍 raw 图,将有问题现象的 raw 图反馈给镜头厂去确认。   一开始我是給的上面点阵图的那张 raw,他们反馈看现象是不太正常,但说我拍歪了,让再摆正重新拍一张。   随即又拍了张摆正的解析力卡的 raw 给他们,因为是确认边缘直线变曲线的问题,所以用其他图卡能复现现象也行。   如下是这颗模组的规格,反馈说是这颗镜头的视场角是120度,属于广角镜头,只要畸变 外视场的放大倍率:y2/h2时,所成的像是从中心是往外放大的,也就是桶形畸变。反之则是枕形畸变。   而具体出现桶形畸变还是枕形畸变,取决于光圈的位置,当光圈在透镜前面或后面时,会限制光线的行为。   当光圈在镜头前面,像的高度减小了,也就是像缩小了,就造成了桶形失真。复杂的镜头,例如后焦距广角镜头,往往就会出现桶形失真,因为前组镜头会充当后组的光圈。   当光圈在镜头后面,像的高度增加了,也就是放大了,就是枕形失真。远焦镜头的后组为负,会导致枕形失真。   下面这幅图片是对应的三维图,更加清晰的看出光圈与镜头的关系。   b、畸变产生的原因 从上面的概念我们了解到,畸变产生的根本原因是镜头像场中央区的放大倍率和边缘区的放大倍率不一致导致,那为什么不一致呢?     请看如上这个光路图,a 和 b一个是轴上点,一个是轴外点。过 b 点作辅助光轴,也就是这个虚线,与像面交于 b0′,b0′点即为 b点的理想像点。   另一方面,b点若是以细光束成像,则像点是b′点,注意,细光束成像是没有球差和慧差的,但是有场曲,所以b在细光束下成像像点实际在b', b′b0′为b点的场曲。   当b点以主光线成像时,看黄色主光线,这时注意,主光线是宽光束,存在球差和慧差,所以宽光束成像时,黄色主光线交辅轴于b1′点,所以b1′b′为b点的球差。   所以,综合球差慧差场曲的影响,主光线最终经b1′点交像面于bz′点,那实际像点bz’就偏离了理想像点b0′。   再看看位于光轴上的a点,主光线与光轴重合,主光线的像点与理想像点在像面的中心点a′重合,因此轴上点成像没有偏差,但是轴外点的像高和理想像高有差异,造成中心和边缘的放大倍率不同,这就产生了畸变。   所以,由以上分析可以看出,畸变的形成既有场曲的因素也有球差的因素。   注: 篇幅有限,这里就不再解释关于球差,慧差,场曲的概念了,后续文章会再单独描述;   c、关于畸变的计算 再回到上面镜头的spec,描述了镜头的 tv 畸变是10.5%,光学畸变是20%,那这两者的区别是什么,具体是如何计算的?   1)、关于光学畸变: 光学畸变是对应镜头的指标,描述的是物体所成像的理想位置和实际位置的偏差,如下光路图中的轴外一点b,实际像点bz',理想像点为b0′。   可以用理想像高y’,和实际像高 yz’ 的比值来描述偏离程度, 公式为:( yz'-y' ) / y' x 100%;     可以用此项目中的镜头规格来做具体的验证,镜头的光学畸变是随视场范围变化而变化的,规格书给出的20%是最大的光学畸变值,   所以我们要计算出最大的理想像高,也就是计算当是最大视场范围时成像时的理想像高是多少。     最大的视场角如上规格书,对角线方向的 fov 值为120° (如下图 ɵ = 60° ),焦距 f 是2.13mm,理想像高为:tan 60° x 2.13 = 3.689mm;   而最大实际像高就是 sensor 对角线长的一半:5.867 / 2 = 2.934mm; 则镜头最大光学畸变为:(2.934-3.689)/ 3.689 x 100% = - 20% ; 2)、关于 tv 畸变: tv畸变是对应所拍摄出的图片而言的,体现图像的变形程度,我们平常用 imatest 软件所测试的就是tv畸变的值。    tv 是 transverse vertical,横向竖向的意思。   关于tv畸变的计算它有smia 和 traditional tv distortion 两种,如下示意图所示: smia tv distortion = 100% * ( a-b )/b ;a = ( a1+a2 )/2 traditional tv distortion = 100% * ∆h/h   如上 smia tv distortion 计算中,a = ( a1+a2 )/2 = h+2∆h,b = h,则 100% *(a-b)/b = 2∆h/h,所以 smia tv distortion = 2x traditional tv distortion。   还是以此项目中用到的镜头来做具体的验证,规格书中给出的tv 畸变值是10.5%,且是smia tv 畸变;     如下是实拍的棋盘格的图,用来计算 smia tv畸变,拍两条横向直线,让他们与图像的上下边相切。     两条直线与图像左侧相交,得到两个坐标,计算出纵向像素差a1。同样的方法可以得到右侧的纵向像素差a2。两条直线间的距离就是图像的高b,畸变值就是((a1+a2)/2 - b)/b。   用画图工具打开后,就可以得到每个点的像素位置,如下图的坐标所示,先算出左侧的像素差(2944-176=2768),右侧的像素差(2937-169=2768),中间的像素差为3120,   可以计算出畸变值为:((2768+2768)/2 - 3120)/3120 = -11.2%),结果有点误差,但也不大,实际测试一般都是用 imatest 软件去计算,能了解一下具体是怎么计算的就可以了。  


中兴通讯云终端W100助力打造远程安全办公解决方案
小米松果发布会前瞻:或发布小米5C以及红米4X
百花齐放!阳春四月,济南太阳能+多能互补展泉城竞艳!
以创新激活企业数字生命力,软通动力“友”话说
嵌入式安全模块在电子产品版权保护领域的应用
镜头畸变是怎么产生的
浅谈排针排母的应用
一文读懂电子罗盘是什么?
超高算力在人工智能领域如何应用?技术专家带你实战解读
mapreduce 中MAP进程的数量怎么控制?
基于Berkeley DB的机房环境监控系统
信号电缆故障原因分析及处理方法
中国风智能门锁拥有防盗报警功能,保证家庭的安全
索尼“频频”说要放弃手机业务,然而越做越大!索尼手机利润同比暴涨7倍
5G三年成厦,泛在千兆为应用造榫卯
城市综合体如何做好消防安全建设?
TSMC短期内无可替代
怎么选择最合适的液位传感器
通信技术:JESD204C和JESD204B区别分析
头部动力电池企业的产能扩张计划,开启了锂电设备行业的红利窗口