背景技术
现今,全景图技术有着越来越广泛的应用。尤其是球形全景图,它能够表现某一固定视点的全部视觉范围,而且能通过不同的投影方式表现出广角,鱼眼等多样的视觉效果,因此更加得到人们的重视。
现在已经存在很多的全景图拼接方法。但是大多数方法都是针对圆柱形映射的,球形全景图拼接方法较少。仅有的一些球形拼接方法也存在着各种局限性。
最简单的图像拼接方法就是,对具有一定重合区域的两幅图像进行特征点匹配。然而,精确的确定相邻图像之间对应的特征点是很困难的,往往需要手工干预。而且为了达到较好的拼接效果,这些匹配方法也要求相邻图像之间有很大的重合区域,这也是文献“Real-time Registration for Image Moisaicing”(E.Noirfalise,J.T.Lapresti,F.Jurie and M.Dhome.Blaise Pascal University)只能针对视频进行拼接的主要原因。
文献“Creating full view panoramic image mosaics and texture-mapped models”(Szeliski R,Shum H-Y SIGGRAPH’97,1997.251-258)使用基于Levenberg-Marquardt算法的优化技术来计算相邻图像之间的相关性。这种方法试图精确的计算两幅图像之间的三维变换关系,以达到良好的对齐效果。它的优点在于能精确的表达图像之间的三维变换关系,能生成各种环境映射模型的全景图;但由于它属于优化算法,在寻找图像对齐点时容易陷入局部极小值,所以对算法初始值的估计非常关键。
为了得到相对精确的初始值,文献“Spherical mosaics with quaternions anddense correlation”(Sayan C,Seth T.International Journal of Computer Vision,2000,37(3),259-73)设计了一套图像采集设备。这种设备在采集图像时,不但能保证所有的采样图像具有共同的投影中心,而且能够记录下图像之间的旋转角度。它的误差在1度左右,所以这个角度就可以作为优化算法的初始值。
借助硬件设备的支持,例如鱼眼相机,全景相机等,不但可以降低图像的采集数量,而且可以降低图像拼接中的误差积累,最终提高全景图的拼接效果。但是,这些硬件设备往往比较昂贵,所以这些方法缺乏实用性,很难被广泛应用。
此外,一些能够生成球形全景图的图像处理软件也已经出现。但是这些软件的图像拼接方法并不是全自动的,在图像的对齐,融合等很多方面都需要手工调整。
发明内容
针对现有技术所存在的种种缺点,本发明的目的在于提出一种自动球形全景图的生成方法。该方法只需使用普通的图像采集设备,并且操作简单易行。该方法不使用优化技术来降低图像对齐的误差积累,而是通过对图像进行分块拉伸的方法弥补误差,以达到无缝的球形拼接。
本方法的出发点是:从理论上讲,只有当所有的采样图像具有共同的视点的时候,球形全景图才能被精确的生成。但是在实际中,这一点很难得到满足。因此,精确的计算图像之间的三维旋转关系也是不现实的。本文的方法不要求严格的保证所有的采样图像具有共同的视点,同时允许计算图像之间的旋转关系时存在一定的误差。在生成球形全景图时,我们将通过对图像进行分块拉伸的方法弥补这些误差,以达到无缝的球形拼接。
本发明所采取的技术方案是:
一种自动球形全景图的生成方法,具体包括以下步骤:
1)在图像采样的时候,按照经纬度的方式旋转相机,并保证相邻的照片之间具有一定的重叠区域。拍照方法按照普通方式即可,例如使用普通的照相机和三脚架进行拍照。
2)为了计算方便,将采样图像进行分组。属于同一列的图像被分为同一组;
3)计算出所有相邻采样图像之间的平移量,并计算出所有采样图像的旋转矩阵和焦距。计算时,所有的采样图像按照具有相同的视点和焦距来处理,同时将相邻采样图像之间的旋转关系按照平移关系处理。
4)根据图像和球面之间三维投影关系,以及已经计算出的图像的焦距和旋转矩阵,将每组采样图像生成一个竖直分块图像。通过投影,将每组图像生成一个竖直分块图像,而不是将所有图像投影到一幅全景图上,从而避免误差积累。
5)通过拉伸将所有的水平分块图像拼接在一起,生成球形全景图。在拼接时将每个竖直分块图像分成一系列的水平分块图像,并计算相邻水平分块图像之间的平移关系,然后通过拉伸将所有的水平分块图像拼接在一起。
6)将球形全景图左右两端的重合部分裁减掉,并进行融合处理,以达到无缝的效果。
根据本发明的自动的球形全景图生成方法,以上各个步骤中具有以下优点:
步骤1)中在拍照的时候,按照经纬度的方式旋转相机,并保证相邻的照片之间具有一定的重叠区域。这种采样方式便于手工操作,同时便于图像之间旋转关系的计算。
步骤2)中采样图像的分组方式。将处在同一列上的采样图像分为同一组,便于竖直分块图像的生成。
步骤3)中的假设条件。为了便于计算,我们将所有的采样图像按照具有共同的视点和焦距处理,同时将相邻采样图像之间的旋转关系按照平移关系处理。
步骤4)中为了避免步骤3)中产生的误差积累,我们生成一系列的竖直分块图像,而不是将所有的采样图像投影到一幅全景图上。
步骤5)中为了解决竖直分块图像之间的平移误差,我们将竖直分块进一步分成一系列的水平分块图像,并计算它们之间的平移关系。
步骤6)中通过裁减和融合使球形全景图达到了无缝的效果。
以上步骤操作简单易行;没有使用局部和全局优化算法,因此计算速度快;通过对图像进行分块拉伸的方法弥补误差积累,以达到无缝的球形拼接。
最佳实施例详细描述
下面参照本发明的附图,更详细地描述本发明的最佳实施例。
本发明提供了一种自动球形全景图的生成方法,下面结合附图详细的说明本发明的自动球形全景图生成方法的具体步骤:
1)对全景图对象进行拍照。例如使用普通的照相机和三脚架进行拍照。
我们采用经纬度的方式表达球形全景图,即全景图的竖直方向表示球面的纬度变化方向,全景图的水平方向表示球面的经度变化方向,球形全景图的表达方式如图1所示,其中α表示经度,β表示纬度。
根据球形全景图表达方式的特点,我们同样按照经纬度的方式采集图像。如图2所示,首先将照相机固定在三脚架上,并且使照相机朝向某一个固定的水平方向上,然后沿竖直方向旋转相机并拍摄图像,同时保证相邻图像之间具有一定的重合区域;拍摄完一列后,将照相机沿水平方向旋转一定的角度,并保证相邻列之间存在一定的重合区域,按同样的方法拍摄新的一列图像;以此类推,直至所采样的图像覆盖了此视点上的所有的视觉范围。
2)将采样图像进行分组。
为了描述方便,我们将采样图像分为一系列的组。同一列上的图像属于同一组。图3显示了一个实例,处在同一列上的图像属于同一组。同时我们定义,每组中水平拍摄的图像称为水平图像。
3)计算采样图像的焦距和旋转矩阵。
我们按照所有采样图像具有共同的焦距f计算,并根据采样图像中所有水平图像之间的关系来近似求解焦距f。相邻的水平图像具有一定的重合区域。它们的关系可以用图4来表示(为了表达方便,图4用二维形式表示了水平图像之间的关系)。
根据图4可知,相邻水平图像之间是一种简单的旋转关系。当图像之间的旋转角度很小时,我们可以认为它们之间是一种平移关系。图5a和图5b用二维形式表示了它们之间真实的旋转关系和近似的平移关系。这样我们可以根据图5b,应用基于傅立叶变换的相位相关方法对相邻的水平图像作对齐处理,得到平移量d′。我们用d′代替图5a中的平移量d。
计算出所有相邻水平图像之间的平移量后,我们根据图4所示的关系可以得到下面的方程:
其中,di表示相邻赤道图像的平移量,f表示焦距。
求解此方程可以得到焦距f,同时还可以得到球形全景图的高和宽,公式如下。
u=πf; v=2πf
其中u,v分别表示球形全景图的高和宽。
接下来确定图像的旋转角度。首先确定水平图像的旋转角度,然后根据水平图像的旋转角度推导其他采样图像的旋转角度。为了计算方便,首先假设某一幅水平图像的相机坐标系与世界坐标系重合,因此它的水平旋转角度和竖直旋转角度都为0。
因为相邻水平图像之间符合图5所示的近似关系,所以它们之间的平移量可以被计算出来。因此,我们可以得到所有水平图像的旋转角度。它们的推导公式如下:
其中αiβi分别表示第i幅水平图像的水平旋转角度和竖直旋转角度;Δw和Δh表示相邻水平图像的偏移量,如图6所示。
处于同一组中的相邻图像也满足图5所示的近似关系。因此,按照同样的方法,我们可以得到同一组中的采样图像的旋转角度。计算公式如下:
其中,θ
i,
表示同一组中第i个采样图像的水平旋转角度和竖直旋转角度。因此,每幅采样图像的旋转矩阵R
i可以表示为:
4)通过投影生成一系列的竖直分块图像。
给出竖直分块图像上的一点,我们可以推导出它的球面坐标。根据采样图像的旋转角度,我们可以进一步确定该点应该被投影到哪一幅采样图像上。通过这样的映射关系,竖直分块图像就可以被计算出来。具体流程如下。
对竖直分块图像中的每一个象素点(i,j)作如下处理:
a)将此象素点的坐标转换为球面坐标。
b)用此球面坐标与采样图像的旋转角度比较,并选择距离最近的一幅采样图像。
c)旋转这一点到所选的采样图像的坐标系下。公式如下所示,其中R表示采样图像的旋转矩阵。
d)投影这一点到所选的采样图像上,找到对应的象素值,并对竖直分块图像着色。
图7显示了生成的一系列竖直分块图像。
5)将竖直分块图像进行分块对齐,并通过拉伸拼接在一起。
在理论上,相邻竖直分块图像之间是平移关系。但是,由于假设条件和近似求解,它们之间并不是严格的平移关系。为了使它们达到高精度的对齐效果,我们将各个竖直分块图像按高度平均分成n份,然后计算相邻水平分块图像的平移量。图8说明了水平分块的结果,其中,n的取值为5。
在对所有的水平分块图像对齐后,根据平移关系,它们就可以被映射到球形全景图上。但是在映射过程中,属于同一竖直分块图像的各个水平分块图像不是彼此连接在一起的,我们需要通过拉伸把它们连接在一起。拉伸方法分为两步:竖直拉伸和水平拉伸。
竖直拉伸的目的是使属于同一竖直分块图像的各个水平分块图像在竖直方向上连接在一起。9a显示了直接将属于同一竖直分块图像的水平分块图像映射到球形全景图上的结果,水平分块图像之间不是无缝的连接在一起的。竖直拉伸的方法为:首先,保持第i块水平分块图像的下边沿的两个顶点的位置不动,调整第i块水平分块图像的的上边沿的两个顶点位置与第i-1块的下边沿的两个顶点的位置重合;然后相应的调整此块图像内部区域的每一个象素的位置,如图9b所示。
水平拉伸的目的是使属于同一竖直分块图像的水平分块图像位于同一列上。方法是拉伸当前竖直分块图像的各行象素,使它们的右边沿在同列上,如图9c所示。
图10显示了相邻两幅竖直分块图像拼接的结果。
6)全景图左右两端的裁减。
为了形成无缝的全景图,需要对全景图的左右两端进行裁减。首先,按步骤5)将属于第一个竖直分块图像的各个水平分块图像映射到球形全景图的最右边,并记录对齐的边界,如图11a、11b所示;然后,将球形全景图左右两端的重合区域裁减掉,并将裁减后的图像边界拉伸到同一列上,如图11b、11c所示;最后,调整全景图左右两端的对应点的高度,使它们在同一水平位置上,如图11c、11d所示。图12显示了裁减后的球形全景图。
上述步骤示出了生成一幅球形全景图的全部步骤和过程,根据本发明的自动的球形全景图生成方法,只需使用普通的图像采集设备,并且操作简单易行;没有使用局部和全局优化算法,因此计算速度快;通过对图像进行分块拉伸的方法弥补误差积累,以达到无缝的球形拼接。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。