鱼眼照片生成全景图算法的研究与实现

2011-03-31 15:01

程菊明 1, 刘连芳 2, 3, 陈          山 3

CHENG Ju- ming1, LIU Lian- fang2, 3, CHEN Shan3

 

1.许 昌 学 院 计 算 机 科 学 技 术 学 院 , 河 南 许 昌 461000

2.广 西 大 学 计 算 机 与 电 子 信 息 学 院 , 南 宁 530004

3.南 宁 平 方 软 件 公 司 , 南 宁 530004

1.Dept. of Computer Science&Technology, College of Xuchang, Xuchang, Henan 461000, China

2.College of Computer&Electronics, Guangxi University, Nanning 530004, China

3.Company of Nanning Pingsoft, Nanning 530004, China

CHENG J u - ming, LIU Lian - fang, CHEN Shan.Resear ch and pr actice of fisheye - photo’s distor tion cor r ection .Computer

Engineer ing and Applications, 2007, 43( 6) : 220- 222.

 

Abstr act :    First we compare the differences of two algorithms about distortion of fisheye - photo, then, in order to mosaic the fisheye - photo’s distorted photos, we improve the similar- curve based algorithm.At the last, we give the methods of eliminate the seams of the mosaiced- photo.

Key wor ds: fisheye photo;sphere-anchor;longitude and latitude projection;image stitching

 

摘要:首先比较了校正鱼眼图片的两种算法所得结果的差异,然后针对鱼眼展开图的拼接过程将基于特征曲线匹配算法加以改进,并在最后提出消除接缝的方法,实验得到了较理想的结果。

关键词:鱼眼照片;球面定标;经纬映射;图像拼接

文章编号:1002-8331(2007)06-0220-03文献标识码:A   中图分类号:TP391

 

1引言

全景拼图(Panorama Mosaic)是一种应用较广的基于图像的绘制技术(Image Based Rendering)。在虚拟现实领域中,利用全景图像表示实景可代替复杂的3D 场景建模和绘制。通常

有三种全景模式:圆柱形全景模式,球形全景模式和立方体全

景模式。

柱面全景模式是讨论最多也是相对较成熟的技术,但是在这种投影模式下,只能环顾四周,不能向上或向下进行查看。采用立方体全景模式和球形全景模式可以得到更多的观察自由

度。但是对于立方体全景模式,进行映射时需要对立方体的6

个面分别映射,而且获取照片相对困难,另外在映射时不仅有水平方向上的对齐,还要有上下方向的照片同四周照片的对齐,所以拼接起来也相对较困难。

目前还有一种方法是采用视角为183°的鱼眼镜头拍摄,

这样只需两张鱼眼照片就可以获取整个场景的信息,将这两张照片处理后投射在球体或立方体上,就可以得到在任意角度观察的效果。这种方法用户使用起来简便快捷,所以也是目前采

用较多的方法。对于这种方法需要解决的问题主要有3个方面:首先需要将得到的鱼眼照片进行校正得到展开图;其次要

对展开图进行拼接;最后要对拼接的结果进行平滑处理。

 

下面第二部分比较两种鱼眼图片展开的算法,第三部分讨

论鱼眼展开图的拼接的方法,第四部分讲述了本文对拼接得到的全景图进行平滑的方法。

 

2鱼眼图片的展开方法

鱼眼照片是一张圆形图(如图1),不能直接用于拼接,需要将其展开成方形图才能拼接在一起。所以首先需要将其展

开,采用下面方法完成。

2.1提取鱼眼圆形图

在将鱼眼图片展开为方形图之前,首先需要提取出相应的鱼眼图片轮廓,采用判断灰度值跳变的方法完成。由于鱼眼照片除掉中间的圆形以外其余部分都是黑色的,所以可以采用下面的步骤实现:

(1)在垂直方向上,先从上至下扫描整幅鱼眼照片,在每次的扫描循环中记录发生第一次有灰度值跳变的点的坐标值,记

录为圆形图的起始位置,得到一组数据,取这一组数据的中点

作为圆形图的最上面一点T;

(2)从反向以与步骤(1)相同的方法进行扫描,同样得到一组点,取中点作为圆形图的最下端一点B;

(3)在水平方向上重复步骤(1)和(2),分别记录为圆形图

 

 

的最左一点L 和最右一点R;

(4)分别计算直线LR 和TB 的长度,如果两者不等,则按照它们的比值将原图进行压缩或拉伸,使得圆形图变为标准的圆形;

(5)将标准的圆形鱼眼图像按照第(4)步得到的直径和圆心把轮廓勾勒出来,如图1所示。

2.2校正算法

得到标准圆形鱼眼图后,对其校正主要有两种算法,一种是用球面坐标定位法,另一种是经纬映射法[3]。

(1)球面坐标定位法[1,4]。

这种方法是将球面上具有相同纬度的点映射为相同的垂直直线,原理如图2所示。图中的k 点和h 点映射到平面上位于水平坐标为χh 的垂直直线上。

(2)经纬映射法[2,3]。

假设在球面上的任意一点P,它的经度映射为矩形的水平坐标,纬度映射为矩形的垂直坐标,这样整个球面映射得到的

平面图是一张2:1的矩形图,半球面就是一张方形图,如图3

所示。经纬映射法的步骤如下:

 

 

①首先根据鱼眼的等距成像模型[5]计算鱼眼图片上任意一点(x,y)在单位球面上的坐标,它们的关系如式(1),其中f 为焦距,在实践中取单位球半径作为f 值,θ和#为球面坐标;

 

  

②建立经纬映射图上的坐标点P( x′, y′)和它在球面上对应的球面坐标。可以用关系式(2)来 计算,其中f与式(1)相同,

α和β为P对应的球面坐标;

③最后以球 面 坐 标 为 中 介 建 立 起 鱼 眼 照 片 和 经 纬 映 射 图 之 间 的 关 系采用式(3)将(θ,)和(α,β)进行相互的关系如图4所示。经过以上的变换,就可以将鱼眼图片校正为方形图。

 

经过实验比较发现,采用经纬映射方法得到的展开图的展

开程度明显比球面定标方法得到的展开图的展开程度高。它们的结果比较如图5所示。

 

3鱼眼展开图的拼接

将两幅183°鱼眼照片按照上述方法分别展开后,需要将它们拼接在一起才能构成全景图。

将两幅有重叠区域的图片进行拼接的算法有很多,它们大

体可分为两类,即特征无关的方法和基于特征的方法。基于相位相关度[7,8]方法属于特征无关的方法,它是基于互功率谱的相位估计,直接计算出这两幅图像简单的平移关系。基于特征匹配方法比较多,比如基于特征轮廓的匹配[6]、基于特征模板的匹配以及基于特征曲线的匹配等等。

但是以上这些方法都是针对于柱面全景图而言的,柱面全景图两幅待拼接的图像重叠区域较大,所以采用上述方法往往能取得较好的效果,但是对于两幅183°鱼眼图片展开图,它们的重叠区域非常小,从视域范围可知,每幅图像仅有两侧各

1.5°的范围属于重叠区域,如果简单采用上述方法的任何一种都不能得到希望的效果。所以在实践过程中将基于相似曲线的

匹配方法加以改进,经过验证证明可以达到满意的效果。

3.1基于相似曲线匹配的原理

设有两幅待拼接的左右图像,它们的高和宽相同,基于相似曲线匹配的原理按照下面的步骤进行:

(1)对每一幅图像从左至右计算每一列中梯度最大的点,

将该点的坐标记录下来。梯度最大是指该点相对于其周围的点而言灰度的跳变值最大。所以就要将彩色的图像先取出其每一

点的灰度值。灰度值的计算方法采用将RGB 转换为YIQ 色度

Y=0.299R+0.587G+0.114B

得到每一点的灰度值之后就可以计算对应于该点的梯度值了。梯度值的计算方法采用下式完成:

 

 其中(i,j)表示图中任意一点的坐标,Mag(i,j)表示梯度值,这样按照下述规则很容易求出每一列中梯度最大的点,并将其坐

标值记录下来。

求每列梯度的最大点时所遵循原则为:

①当该列中梯度最大的点有两个或两个以上时,取距离图像水平中线距离最近的点作为该列的梯度最大点;

②当两个点距离图像水平中线相等时,取上方的点作为该列梯度最大点。

(2)按照上述方法,将所求得的梯度最大点的坐标描出来,

可以在左右两幅图像上分别得到两条曲线。如果两幅图像具有重叠的公共部分,就意味着这两条曲线中的某一段具有很好的相似性。

比较这两条曲线,从中找出最相似的一段曲线,这段相似曲线的起始位置即为得到的重叠区域的起始坐标。寻找最佳匹配位置的方法如下:

在步骤1中求出的两幅图像的最大梯度数组中分别取长度为M 的子数列Sl 和Sr,它们的相似程度可以采用方差来计

算,即:

 

SimilM(Sl、Sr)越小则Sl 和Sr 越相似,从而就可以得到匹配的位置。

3.2将匹配的图像重叠区域分段

从上述方法可知,在寻找相似曲线的时候以一段固定长度M 作为查找窗口,M 必须具有足够的长度才能正确找到匹配曲线,但是对于两幅183°鱼眼照片,重叠的区域很小,所以不

能保证M 能取到足够的长度,采用以上方法误配的可能性非常大。

通过实验发现,如果按照正常的方法通过鱼眼镜头拍摄得到的两张照片,它的垂直偏移相差不是很大,所以本文提出采用下面的改进方法:

(1)将重叠区域分成若干段,然后在每一子段内使用特征曲线匹配的方法找到局部匹配位置,如图6所示,这样就得到n 对匹配位置,n 为分段的个数;

 

 2)然后在以上n 对匹配中选择SimilM(Sl,Sr)差值最小的那一对作为两幅图像的最佳匹配位置。

 

4接缝的平滑

两幅图像由于在拍摄时光照存在差异,所以往往会出现明暗不同,另外对于相接的部分,由于只是选中了一段区域的特征线作为匹配位置,所以在其它段还会有细微的错位发生,所

以需要对接缝处进行平滑处理。

(1)首先消除明暗差异,由于鱼眼展开图的重叠范围确定,所以本文采用灰度渐变的方法。计算两幅图像接缝两侧的灰度差值IM=IR-IL,然后从接缝开始向左向右均分该差值。

如IM>0表示左侧比右侧图像亮,则左侧图像从接缝开始向左每一列灰度值IL=IL-IM×i,i 从1到0渐变;右侧图像从接缝开始向右每一列灰度值IR=IR+IM×i,i 从0到1渐变。

(2)对于微小错位情况,采用邻域平均法对图像进行平滑。使用3×3邻域[9]进行平滑,则处理后的图像

 

5实验结果及结束语

 

图7是通过以上方法将两幅183°鱼眼照片展开然后拼合得到的全景图。从实验过程来看,当拍摄照片垂直方向旋转角较小时,能得到很好的结果,但是如果在拍摄时出现两幅照片垂直方向有较大旋转时,就会出现误配现象。所以对拍摄的经度要有一定的要求。但是在实际应用中,采用专门的设备往往可以较好的避免垂直旋转量过大的情况出现。

(收稿日期:2006年7月)

 

参考文献:

[1]Mundhenk  T N,Michael J R,Liao Xiao-qun,et al.Techniques for fisheye lens calibration using a minimal number of measurements[C]//Proc of the    SPIE Intelligent Robotics and Computer Vision Conference,Boston,Massachusetts,2000(11):8-9.

[2]王俊杰,徐小刚.鱼眼投影在虚拟实景中的应用研究[J].小型微型计

算机系统,2004,25(2):287-290.

[3]张茂军.虚拟现实系统[M].北京:科学出版社,2001.

[4]陈明伟,徐丹.球面坐标定位校正鱼眼图片并合成全景图的方法[J].

云南民族大学学报:自然科学版,2004,13(3):214-217.

[6]钟力,胡晓峰.重叠图像拼接算法[J].中国图象图形学报,1998,3(5):

367-369.

[7]Reddy B S,Chatterji B N.An FFT -based technique for transla-tion ,rotation and scale -invariant image registration [J].IEEE Trans Image Processing,1996,5(8):1266-1271.

[8]Xie Hong-jie.Automatic image registration based on FFT algorithm and IDL/ENVI[C]//International Conference on Remote Sensing and GIS/GPS2ICORG,2001.

[9]傅德胜,寿益禾.图形图像处理学[M].南京:东南大学出版社,2002