APP下载

鱼眼图像提取与校正的研究与实现

2017-05-12王政川

现代计算机 2017年9期
关键词:鱼眼经度像素点

王政川

(四川大学计算机学院,成都 610000)

鱼眼图像提取与校正的研究与实现

王政川

(四川大学计算机学院,成都 610000)

鱼眼图像提取与校正是多通道投影显示系统的关键技术之一。对鱼眼校正常用球面成像模型进行实验验证,并分析模型在使用中的误差分布。对鱼眼图有效区域提取与展开进行实验与分析。最后还对相关算法进行优缺点比较,复杂度分析,并结合实验结果,提出算法的改进方法。

图像提取;图像校正;鱼眼

1 球面鱼眼成像模型验证试验与结果分析

鱼眼球面透视投影成像模型是鱼眼校正中的经典模型,然而大家在使用之前往往忽略了对模型本身的验证,因为该模型仅仅是一个理论模型,如果不进行验证,就无法确认其正确性与准确度。在实际使用中,外界因素会产生哪些影响,会造成多大误差,这都是需要事先知道的实验条件,尤其是当我们需要进行精确的鱼眼操作的时候。本节将对该模型进行一个数学验证实验。

图1 实验用鱼眼图原图

验证工作如下:测量图1中每个点到相机的实际距离并算出任意两个点到相机连线的夹角,在鱼眼图上找到点的对应位置并通过球面坐标求出两点与球心连线的夹角。理论上,通过计算得到的结果和实际测量的结果应当相同。

实验用鱼眼图(图1)有效区域半径R=14.5圆心O(13.9,9.3),C表示相机,D表示距离,图中各点用“P+标号”代替,θ表示测量得到的角,γ表示计算得到的角,δ表示相对误差,实验数据如下:

图2 箱型图示意图

计算10组数据的四分位数Q1=2.02,Median=3.78,Q3=5.09,Avg=3.8783,四分位距 IQR=Q3-Q1=3.07,min=Q1-1.5*IQR=-2.585,max=Q3+1.5*IQR=9.695。可见第一组数据落在了箱型图的最大值范围之外,故舍弃。

重新计算四分位数。Q1=2.02,Median=3.74,Q3= 4.21,Avg=3.2137,四分位距 IQR=2.19,min=-1.265,max=7.495。修正后的数据,全部9组数据皆落在箱型图最小值和最大值之间。

图3 原始数据箱型图

图4 修正后数据箱型图

通过这个实验,证明了球面鱼眼成像模型的正确性,能够用来模拟真实的鱼眼成像规律。从实验数据还可以看出,数据误差分布稳健,百分之三点几的平均误差在接受范围内。因此得出结论,球面投影模型符合我们的使用需求。

2 鱼眼图像有效区域提取

2.1 面积统计算法与分析

面积统计法基于有效区域内灰度值小的像素点较少的观点,如果有大量灰度值较小的像素点出现在有效区域内,进行边界识别就可能出现严重误差,从而影响提取的有效区域形状,导致图象信息丢失,并最终影响到鱼眼图校准结果。定义一个阈值T,将像素灰度值大于T的总和sum求出来,同时计算像素的灰度值大于T的一次矩Σx,Σy。因此,很容易得出以下结论:

其中r是有效区域半径,(xc,yc)是有效区域中心点坐标。

事实上,在某些特殊情况下,有效区域内有可能存在很多像素点灰度值较小,例如,夜间拍摄或拍摄深色背景场景,甚至在夜间拍摄深色背景场景,场景中灰度值较小像素点很多,如果按照上述公式计算,误差将非常大。因此反过来想,有效区域外像素点显然是黑色的,灰度值极小甚至是零灰度值。我们可以统计有效区域外像素点灰度值小于T的总数计算像素灰度值小于T的一次矩那么:

面积统计法思想非常简单,就是把鱼眼图中所有像素的灰度平均值作为阈值(当然,这个阈值可以自己设置),并和每个像素逐一比较,然后确定某个像素是否在有效区域内。因此,当有大量黑色像素点或者灰度值极小像素点在有效区域内时,以这种方式来提取有效区域会产生一个较大的误差。因此,该方法的适用性不强。

2.2 扫描线逼近算法与分析

扫描线逼近法基于有效区域内像素灰度差比有效区域外像素灰度差大很多的观点,来确定有效区域的外接矩形,从而确定有效区域的边界。该算法对于有效区域内部的深色像素不是很敏感,因此可以有效克服面积统计算法的缺陷。

图5 扫描线逼近法

有效区域包含鱼眼图的场景信息,该区域内像素的灰度值普遍比有效区域外像素的灰度值要大得多,因此有效区域内的极限灰度差比有效区域外的极限灰度差也要大的多。根据这个特性,扫描线逼近法原理如下:以鱼眼图的行列来创建扫描线,从鱼眼图边界开始从上往下,从左至右的向有效区域的中心点扫描,当扫描线进入有效区域,如图5中扫描线从left1位置扫到left2位置,由于在有效区域包含彩色像素,所以扫描线上的像素的极限灰度差会突然增大,所以我们可以先设定一个阈值T,当扫描线上的像素点的极限灰度差大于所设阈值T时,我们可以认为扫描线已经达到有效区域的左边缘。计算扫描线上的像素点的最大灰度Imax和最小灰度Imin,从而获得该扫描线的像素的极限灰度差Isub:

当Isub〉T时,就表示扫描线已经扫描到有效区域的边缘位置。按照这个步骤就能够求出有效区域的四个边界(top,bottom,left,right),从而提取出鱼眼图的有效区域的中心坐标和半径:

对这个算法的时间复杂度做个简单分析。假设一个鱼眼图的大小是W*H,有效区域的半径为R,将迭代过程中对单个像素点的操作或者运算记为一次基本操作,时间复杂度记为O(1),那么面积统计算法对图象中所有像素灰度进行了比较,时间复杂度是O(W*H);而改进后的面积统计法只扫描了有效区域外的点,时间复杂度是O(W*H-π*R^2);扫描线逼近法只对有效区域外接矩形外的像素进行了一次或两次基本操作(图象的四个角落均被重复扫描了一次,如图7中的区域1,3,5,7),时间复杂度是:O(2*W*H-2*W*R-2*H*R)。很难说明这两种算法谁的效率更好。为了消除扫描线逼近法操作过程中的重复计算,提高算法效率,我们提出一种改进方法。

图6 改进后的扫描线逼近法示意图

图6可以看出,按照通常的扫描线逼近法,图象左上、右上、左下、右下四部分(即图中 1,3,5,7四个区域)都被重复扫描,若像素较多,则会严重影响扫描效率。所以只要扫描过一个点,就将其删除,以避免重复扫描。一种典型的扫描顺序是,先从上往下扫描1,2,3三个区域并且删除像素,然后从下往上扫描7,6,5三个区域并删除像素,最后扫描8和4两个区域。由此可见,改进后的扫描方法,时间复杂度仅为O(W*H-4*R^2),相比改进后面积统计法O(W*H-π*R^2)有所提高,效率占优。

2.3 实验结果与分析

分析一下实验结果。第一,由于计算中的误差,有效区域中心向左偏移了一定距离。第二,由于中心偏移,有效区域右边界包含了一部分无效图像信息,而有效区域左边界则损失了部分有效信息。第三,实验组3的结果向我们展示了所设定的搜索阈值T对有效区域提取的具体影响,由于第三组图像采集时环境光线暗淡,所以影响了程序对边界的判断,这说明良好的实验环境是多么重要。

图7 有效区域提取实验图1

图8 有效区域提取实验图2

图9 有效区域提取实验图3

3 鱼眼图像校正

3.1 经度校正算法与分析

直接投影球面坐标进行校正并不明智,通过球面坐标推导出经纬度再展开鱼眼图得到校正图像,就是经纬映射校正算法。然而这种算法只是在算法层面的理论计算,理论上效果会非常不错。但在实际使用中会由于浮点精度出现严重误差,导致结果不理想。故我们可以用其他方法来替代经纬度映射,也就是基于经度的校正算法。

图10 经纬展开示意图

图11 经度展开示意图

这种方法是从经纬映射简化而来,只考虑像素的经度或纬度的一种,忽略掉另一个方向。首先找到有效区域的中心点和半径,并尽量将有效区域转换成标准圆。按照这个方法,相同经度的不同像素在展开后具有相同的列坐标值,如H和K两点具有相同的x坐标值。在纬度方向上的像素,从左侧到右侧边缘具有相同角度差,并且与之对应的线段dx在水平方向上均匀切割经度,使得相邻经线在水平方向间距相同。由此可以得到校正公式:

基于经度的校正方法非常容易用代码实现,然而垂直方向上下两端出的失真校正效果非常不理想,越靠近端部,校正效果越差。

3.2 分割圆算法与分析

分割圆的校正方法首先分割鱼眼图成为一系列的同心圆,然后使用变换函数把同心圆映射成同心矩形,这样就将失真的鱼眼图恢复成符合视觉习惯的透视投影图像。这种校正只是让像素点进行径向上的移动,很容易推出转换公式。

图12 同心圆分割坐标系示意图

图13 圆分割算法示意图

鱼眼图中像素坐标(x,y)满足如下条件:

其中width和height分别表示鱼眼图的宽度与高度,像素到图像中心的距离为:鱼眼图同心分割是通过改变R的值来执行的:

鱼眼图同校正图像素坐标间的对应函数关系如下:

这个算法相比于基于经度的校正更加简单,只需要严格按照一一映射的变换函数,将同心圆上的像素点校正到该同心圆的外切正方形上对应的位置。算法同等对待鱼眼图中每个像素,有效避免了在上一节提到的算法中,上端和下端像素校正效果不理想的情况。此外,分割圆算法还适用于非标准椭圆形鱼眼图。

3.3 实验结果与分析

图14 经度校正

图14是经度校正的结果,图片垂直方向上的像素点坐标校正效果非常好,在水平方向上,除了靠近画面中线部分的校正效果比较可观之外,画面上下两端出现了严重的拱形失真的情况。这也是经度或纬度校正方法的缺陷。关于展开图还有一个有趣的现象,就是校正后图像所包含信息变少了。这是因为将圆形鱼眼图展开之后,画幅会有一定程度增大,而实验在创建校正图片的时候是按照原图的尺寸创建,故原图中有效区域边缘的像素在校正后会超出图片尺寸范围导致边缘信息丢失。

图15 圆分割校正

图15为分割圆的校正展开结果。这是一种比较死板的算法,因其有严格的一一映射的变换函数,实际上是将鱼眼图中像素分成上下左右四个三角区域分别校正,校正结果非常特殊。图像水平方向和垂直方向两端的校正效果相比基于经度的校正方法更加理想,然而反倒是画面中间的矫正效果不够好。这是因为从同心圆到同心正方形的坐标变换上,并没有针对画面中心与边缘的差异进行距离微调,直接忽略了画面不同部分之间形变量的差异。而且在图像对角线上的校正出现了矫枉过正的情况,导致图像四角出现了新的畸变。

基于上述两种方法获得的灵感,提出了种简单的改进方法,也是对经纬映射展开的一种近似。图16是实验结果。可以看出校正效果比较优秀。分割圆的校正方法将鱼眼图的扭曲看成同心圆线对圆线上的像素进行校正,却没有考虑画面不同部位的扭曲程度差异。如果把基于经度的校正思想加入到分割圆中,垂直方向校正和水平方向校正结合起来,同时考虑扭曲程度的差异。根据径向畸变和切向畸变的相对独立,我们先将一个像素点矫正到纬度坐标展开后的位置,然后再对新的像素坐标进行经度坐标展开。最后用校正后的像素点周围点对其进行插值。由于坐标的对称性,经纬展开的先后顺序可调换。

图16 一种简单改进的鱼眼校正

从图中可以看到,经过校正后,水平方向和垂直方向的扭曲基本不存在。然而这种方法会使得展开后的图象信息损失更加严重,而且在靠近对角线边缘的地方矫正效果依旧不太理想。更为严重的是,画面相比单纯的经度展开立体感更不明显。这也是经纬映射展开算法最大的问题。

4 结语

通过实验,发现选用球面模型来模拟鱼眼镜头成像比较实用,模型简易,便于计算和理解,比较适合于鱼眼图的失真校正。2D鱼眼校正算法因为不需涉及空间信息,可以直接确定原图与校正图对应点的坐标变换,理论简单。但是2D鱼眼校正也正因为不涉及空间点信息,忽略了像素点深度,导致校正后图像空间感立体感缺失,让观察者觉得图像中景物都处于同一平面上。经度校正法作为典型的2D校正方法,计算量较小,是比较实用的校正方法之一。

[1]王大宇,崔汉国,陈军.鱼眼图像轮廓提取及校正研究[J].计算机设计,2007,28(6):2878-2879.

[2]崔汉国,陈军,王大宇.基于鱼眼图像的虚拟漫游研究[J].系统仿真学报,2007,9(5):1504-1506.

[3]Castleman K R.Digital Image Processing[M].北京:清华大学出版社,2003.

[4]陈兵旗,孙明.Visual C++实用图像处理[M].北京:清华大学出版社,2004.

[5]Clifford A.Shaffer.数据结构与算法分析(C++版)(第二版)[M].北京:电子工业出版社,2012.

[6]英向华,胡占义.一种基于球面透视投影约束的鱼眼镜头校正方法[J].计算机学报,2003,26(12):1702-1708.

[7]王俊杰,徐小刚,胡运发等.鱼眼投影在虚拟实景中的应用研究[J].小型微型计算机系统,2004,25(2):287-290.

作者简介:

王政川(1992-),男,四川绵阳人,硕士研究生,研究方向为图像处理与合成

Research and Implementation of Fisheye Image Extraction and Correction

WANG Zheng-chuan
(Computer College Science,Sichuan University,Chengdu 610000)

Fisheye extraction and correction is one of the key technologies of multi-channel projection display system.The spherical imaging model for fisheye correction is tested and verified in detail,and analyzes the error distribution in the actual use of this model.Analyzes and implements Fisheye effective region extraction and expansion are by coding.Finally compares the advantages and disadvantages of the algorithms mentioned,analyzes the complexity,and proposes a method to improve the algorithms according to the results.

Image Extraction;Image Correction;Fisheye

1007-1423(2017)09-0078-07

10.3969/j.issn.1007-1423.2017.09.019

2017-03-16

2017-03-20

猜你喜欢

鱼眼经度像素点
面向鱼眼图像的人群密度估计
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
对时差计算方法的探讨
基于像素点筛选的舰船湍流尾迹检测算法
微信扫一扫马上看视频鱼眼视频 小程序每天带你看最有意思的摄影视频
基于canvas的前端数据加密
鱼眼明目鱼头补脑是真的吗?
巧用规律妙解“日期变更题”
如何计算地方时