APP下载

一种基于拼接算法的鱼眼图像畸变校正方法

2020-03-05何志东张建伟梁斌斌

现代计算机 2020年3期
关键词:鱼眼畸变标定

何志东,张建伟,梁斌斌

(1.四川大学计算机学院,成都610065;2.四川川大智胜软件股份有限公司,成都610045)

0 引言

鱼眼镜头是一种视角达到了180°甚至更高的广角镜头,超过了人类的肉眼所能看到的范围,且一般以固定姿态方式工作不需要旋转和扫描,因此鱼眼镜头能在视频监控、机器视觉、机场消防安全等公共安全风险防控等领域发挥巨大作用。但是为了获得超大广角,鱼眼镜头不得不在成像结构方面放弃传统的小孔成像原理,这就带来了严重的图像畸变,视觉效果欠佳[1]。如何高效且较为鲁棒地解决鱼眼图像的畸变问题已经成为众多学者的研究方向。

常见的鱼眼图像的畸变校正方法,包括基于相机标定的校正方法以及基于投影变换的校正方法。基于标定的校正方法一般是建立数学模型,虽然多项式拟合往往可以获得较高精度,但对专业标定设备要求较高,且其结果是数学模型上的对应关系,对于人眼主观感受上的提升有限[2-5]。而基于投影变换模型的校正方法则是利用相机的光学成像过程的本质,以重投影变换的方式来校正图像,虽然其校正精度相对于标定法有所下降,但校正原理解简单,且实现方便结果贴近人眼的直接视觉感受[6-8]。一般而言,对于基于投影变换模型的校正方法,普遍采用的模型包括球面投影,柱面投影以及经纬度投影等[9]。各种基于投影变换模型做畸变矫正的方法均有一些缺陷,本文提出一种将原始鱼眼图像进行平面投影,通过合理投影方式得到多个视野有重复区域的图像块,再以半投影变换的图像拼接算法的思想生成目标图像的算法。实验结果表明,本文算法作为一种颇为新颖的方法,达到了预期的效果。

1 相关工作

相关学者为了提高畸变校正的视觉效果做了大量研究。杨晶晶等[10]据投影的不变性原理数学推导出畸变直线的斜率,提出了基于几何性质的鱼眼镜头成像的校正算法;杨玲等[11]提出以经纬映射的鱼眼图像校正设计方法,将有畸变的鱼眼照片进行直接重投影;王岚等[12]采用基于改进遗传模拟退火算法的BP神经网络对相机畸变进行校正,虽不是完全针对鱼眼相机,但是对畸变校正提供了一个新颖的思路;潘志昊等[13]提出一种基于深度学习的鱼眼图像畸变校正的方法,利用了卷积神经网络对畸变图像的特征进行提取,并创建了一个规模可观的鱼眼畸变图像的数据集供训练使用。宋阳等[14]提出在鱼眼图像径向畸变的标定中使用圆柱形棋盘格,无需考虑透视关系以及镜头模板间的距离。

在图像拼接领域,经典算法是Brown[15]等提出的AutoStitch,该算法首先是使用一个全局单应性矩阵对齐,使用柱面投影,再以Bundle Adjustment算法优化最终以多频带融合图像的经典拼接算法。Gao[16]则提出将待拼接的目标场景分成前景和背景两个平面,有别于经典的一个全局单应性矩阵,Gao使用两个单应性矩阵分别对齐前景和背景;Zaragoza等[17]参考了Gao的多单应性矩阵的思想,提出了APAP算法,将待拼接的图像等距离划分为相同的网格,而每个网格都可以对应一个单应性矩阵对齐,不俗的效果的同时也带来了运算量过大的问题;Chang等[18]提出一种新颖的参数变换思想SPHP即半投影变换,结合了投影变换和相似变换的思想,通过将待拼接图像之间的重叠区域的投影变换外推到非重叠区域中,几何变换模型逐渐从投影变为相似,平滑地衔接了两张图片,减少了投影失真结果更加自然。雒培磊[19]等使用了深度学习的方法来做影像拼接,以卷积神经网络对待拼接的图像进行特征提取,再以相关滤波对不同层的特征做相关性分析,取得了不俗的效果。

2 本文算法

本文算法流程主要包括鱼眼相机参数标定、重投影和图像块的拼接3个步骤。

2.1 鱼眼镜头的标定

普通相机镜头的光学成像模型一般遵循经典的小孔成像原理,有成像公式:

上式φ表示物方视角,f为焦距,r为像点与主点的距离,若φ=±90°,有r=±∞,因此普通的镜头的相机视场角度不会太大。而鱼眼镜头有着特殊的物理组成及比较独特的光学折射关系,成像也不再遵循传统的小孔成像原理,因而可以将视角提高至接近甚至大于180°。图1中可见,在经典成像模型中无法入射进传感器的光线在鱼眼镜头模型中也能被穿过镜头从而被传感器捕获从而采样。

图1鱼眼镜头的光线路径示意图

如图2是在世界坐标系OwXwYwZw,鱼眼镜头坐标系OcXcYcZc和图像坐标系OXYZ下的鱼眼镜头的成像原理模型示意图,其对应的原点分别是点Ow,Oc,O。其中,Zc轴方向为鱼眼镜头光轴方向。Pw(X,Y,Z)为空间中一点,Pc(x,y,z)为点Pw线性投影到镜头球面的点在相机坐标系上的位置,P,(u,v)为理想情况下,即小孔成像原理中点Pc投影到图像坐标系中的点,P(u,v)点为点Pc实际投影在图像坐标系上的点。点Pw的最终实际像点为P点,而非点P,,可见从成像可以发现,经过鱼眼镜头成像后,成像点发生了偏移。

图2鱼眼镜头的成像模型示意图

需对鱼眼镜头进行标定过后才能恢复鱼眼镜头的光学模型。本文采用标定方法的是Scaramuzza[20]等人发布的OcamCalib镜头标定工具。OcamCalib工具箱自开源以来凭借出色的准确度和鲁棒性,在标定包括鱼眼相机在内的任何全向相机时得到了相关研究员的广泛认可。OcamCalib通过改变相机和标定棋盘格之间的不同位置与角度,采集到多张图片进行计算,得到相机的内参和外参。如图2中鱼眼图像的某一点P(u,v),可以通过该工具箱,在图2的球面上获得与其唯一对应的三维坐标点Pw。有关系式如下:

在式(2)和式(3)中,f(ρ)的值与鱼眼图像像素点到图像中心距离ρ相关。f(ρ)的阶数N是由标定人员自己定义,系数a0,a1,a2,a3···aN是相机的内参,这些参数即是通过OcamCalib标定工具计算得出。同样地,外参由此工具计算后,用1个3×3的矩阵给出,前2列分别是对应x和y坐标的旋转系数,第3列表示平移矢量。相机所在参考系可以由外参确定。对在非线性标定中的参数优化,使用广泛认可的非线性最小二乘法Levenberg-Marquardt算法和Bundle Adjustment光束平差法。在本文算法中,所需要的参数只有能将鱼眼图像映射到三维坐标的相机内参和畸变系数。

2.2 投影

在得到相机相关参数后利用该相机的成像关系做图像重投影。如图3所示,是一个将鱼眼图像重投影至平面图像的投影模式立体图。平面投影为用多个相同平面与球相切,鱼眼图中心点为O点,平面呈正四边形且四个顶点与O点的连线之间的夹角为60°,该夹角称为相机视场角度。以面ABCD中的点为例,P1为图像上的点P(u,v)通过标定相机后所求得的第一部分中对应的球面三维坐标,P2为该坐标映射到平面ABCD上的交点。

图3投影立体示意图

如图4所示,是与立体图相对应的投影模式俯视图。其中线段AC对应图3中平面ABCD的AC边,Q点是该线段的中点,QO为光轴方向,半圆形虚线代表鱼眼镜头,虚线外的五个线段是自定义的五个与圆相切平面。在一个轴中鱼眼图像被投影在了5个连续的平面,平面有两个维度的轴,因此图像会被投影在5×5=25个平面上,即分成了25个子图像。仍以球面三维坐标点P1为例,有关系式如下:

式中θ为P1O和QO的夹角,即光线和光轴的夹角,l为PQ的弧长f为半圆的半径。通过上式即可通过球面三维坐标点的相对位置l求得P2Q,结合上文相机标定参数即可求得鱼眼图像各像素点到投影后目标图像的一一映射关系。

为了能使图像正常拼接,将平面投影过后的多张图像进行融合在一起,在重投影时须制造重叠区域。本文采用多次平面投影获得多张图像,且多个平面之间设计了重叠区域,图4所示,相机视场角度设为60°,相机以45°旋转角进行旋转且无平移操作,图中阴影区域即为相邻投影的重叠区域。

图4投影平面俯视示意图

2.3 图像块拼的拼接

与Brown[15]等提出的使用一个全局单应性矩阵对齐的基础上柱面投影,再以Bundle Adjustment算法优化参数并最终以多频带进行融合的经典拼接算法不同,Chang等[18]提出一种新颖的参数变换思想SPHP,即半投影变换,结合了投影变换和相似变换的思想,通过将待拼接图像之间的重叠区域的投影变换外推到非重叠区域中,在图像上的几何变换模型逐渐从投影变换变为相似变换,平滑地衔接了两张图片,结果更加自然。虽然该方法在拼接处可能存在重影和隆起,但是在物体的形状保持方面有较好的效果。Chang等首先计算用以进行图像变换的单应矩阵H,然后为了变换后的图像进行保形而计算WH-1。在这个变换中,W是一个3段分段函数,对应如图6中的3个区域:在u≤u1,u1≤u≤u2,u2≤u时分别对应RH,RT,RS。其中,区域RH是直接投影变换模型;区域RS存在一个曲面方程,三维空间上是一个平滑的二次曲面,衔接了两个不同的几何变换模型区域;区域RT则采用相似变换模型。公式表达如下:

在中间区RT中的定义是逐渐改变其几何变换模型从H( )u,v到的函数。分段变换与经典变换的区别如图5所示,(a)是原始图像,(b)是传统的投影变换得到个图像而(c)是上文所提及的对应3个区域进行不同几何变换得到的投影变换,显然有着更好的保形效果。

图5经典投影变换和半投影变换对比图

通过如图6所示的在半投影变换下的俯视图,可以更加理解分段半投影变换。在拼接流程结束后图中AC段和EF段继续保留原有的平面投影模型下的图像,而FA段则对应了RT区域。这相当于在平面投影的时候,各个相邻平面的重叠区域部分通过一个直纹面方程进行投影,从而取代了相交平面各自的投影,才使得拼接图像之间平滑衔接减少失真。

3 实验

本次实验采用鱼眼镜头是DETU公司生产的Sphere S型号1200w像素全景相机,附带的镜头视角达到了236°。实验平台配置为Windows10,MAT⁃LAB2017b,原始鱼眼图像如图7所示。为避免拍摄时候抖动影像采样,在鱼眼标定部分,固定鱼眼镜头,使用棋盘格围绕鱼眼镜头进行多次采样挑选10张成像质量较好的图片输入给OcamCalib开源工具箱,会自动检测出棋盘格内的网格角点。本文使用的标定板具有17×8=136个角点,其中一张鱼眼照片尺寸为4032×3024。正如图2所示,OcamCalib开源工具箱在求出了相机参数后,即可计算从鱼眼成像照片到球面三维坐标系的转换。

图6半投影变换下的俯视图示意

图7鱼眼相机采集的原图

如图8所示,在经过平面投影后,鱼眼原图像被重投影成为了25个图像块,且相邻两图像之间具有一定的视角重叠区域,每个图像块的像素大小完全相同,边缘图像块因为投影方式会有约一半大小的黑边。对每一个经过重投影生成的图像块而言,都是是消除了鱼眼畸变地带来的视觉效果,即可认为单张图是完成了鱼眼的畸变矫正。由于多图的图像拼接运算量过于巨大计算相当耗时,且在进行特征点的提取和矩阵运算是占用运算能力和内存很大,笔者因实验设备老旧计算机性能孱弱,舍弃了几张边缘带黑边的子图,但是这并不影响对算法最终效果的评价。

图8原图投影后的子图像

投影后的部分子图通过上文所提及的拼接算法后生成的图像如图9所示。整体看,畸变曲线基本全部校正为直线。从图像中间往边缘看,中间部分由于径向畸变而弯曲的书桌边缘已经矫正得较为竖直且平滑,而边缘部分的电脑显示器也得到了很好的恢复,由扭曲的形状矫正成了较为直观的矩形。并且因为平面透视投影面大小选取适当,边缘的图像没有产生很强的拉伸效果,符合人眼的视觉特性。虽然由于拼接算法本身的局限在拼接处有局部出现微弱的隆起现象,但是并不影响整个鱼眼矫正图像较为自然,符合人的直观感受。这里由于篇幅限制,不将实验图像细节结果一一列出,总体而言,校正后的图像清晰亮度分布均匀画质较好,且图像真实感器,达到了畸变矫正要求。

图9本文算法矫正后图像

4 结语

本文通过将鱼眼图像投影到多个平面分割成多个子图,且相邻子图之间具有视角重叠区域,再此基础上通过半投影变换构造直纹面方程的图像拼接方式将各个子图重新拼接为一张较为完成的图像以达到鱼眼图像畸变校正的目的。最终实验表明该算法矫正效果达到预期,生成图像质量较好,总体符合人眼的视觉直观特性。在鱼眼镜头畸变校正领域具有一定的创新性,提供了一个新的思路。但是本文亦存在改进的地方:

(1)使用范围受限,有一定的误差。拼接算法需要对图像中特征点进行提取,故不同环境下生成的矫正图可能并不一致且需要重新运行拼接程序,不便于离线操作。

(2)数据运算较大,提取特征和矩阵运算都需要较大的运算能力和内存空间。

(3)图像效果受拼接算法的影响可能出现局部重影和隆起而影响视觉效果。

猜你喜欢

鱼眼畸变标定
基于能量变分法的曲线组合箱梁畸变效应分析
面向鱼眼图像的人群密度估计
薄壁箱梁畸变的Galerkin解法*
大型焊接容器局部热处理防畸变工装优化设计
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
《癌变·畸变·突变》中国科技核心期刊收录证书
使用朗仁H6 Pro标定北汽绅宝转向角传感器
CT系统参数标定及成像—2
CT系统参数标定及成像—2