我们在日常生活中有时会遇到这样的情况:在使用家用照相机来拍摄一些体积比较大或是视域比较宽的景物时,我们常常面临一个选择:是牺牲图像的分辨率以求将整个景物包含在图片中,还是为了保证足够的分辨率而选择只拍摄景物的一个部分。由于普通相机的硬件限制,高分辨率和大视域全景图就像是鱼和熊掌一样——不可兼得。
此外,对于某些特殊领域来说,由于距离、角度等因素的限制,即便是在传感器分辨率增加的情况下,一些超大规模的场景也不可能用一张照片就采集到(如图1.1所示,航天图像在拍摄时,对于获取整个地球地表信息这样的超大规模的场景来说,不可能只用一张照片就可以完成,而图像拼接技术最早就出现在遥感技术领域),这时就需要将多幅具有相互重叠区域的图片组合成一幅完整的全景图,来满足用户对全景摄影的需求。
图1.1 航天图像的拍摄
图像拼接技术的提出具有很重要的意义。将多张图像进行无缝拼接得到大场景的全景图,实际上是在不增加硬件成本的条件下,利用软件处理技术实现普通相机对超宽视角景物的拍摄[1]。这样,我们就可以既保持图像的高分辨率,又可以扩大所得图像的视野范围。
文献[2]中提出,图像拼接技术主要包括五个步骤:
a)图像预处理。包括数字图像处理的基本操作(如去噪、边缘提取、直方图处理等)、建立图像的匹配模板以及对图像进行某种变换(如傅里叶变换、小波变换等)等操作。
b)图像配准。就是采用一定的匹配策略,找出待拼接图像中的模板或特征点在参考图像中对应的位置,进而确定两幅图像之间的变换关系。
c)建立变换模型。根据模板或者图像特征之间的对应关系,计算出数学模型中的各参数值,从而建立两幅图像的数学变换模型。
d)统一坐标变换。根据建立的数学转换模型,将待拼接图像转换到参考图像的坐标系中,完成统一坐标变换。
e)图像融合。将待拼接图像的重合区域进行融合得到拼接重构的平滑无缝全景图像。
以下为图像拼接的过程简图:
图像拼接过程简图
1.2 国内外研究现状
1.3 本文研究内容
SIFT尺度不变特征转换算法是本次毕业设计研究的重点。SIFT算法也是目前国内外特征点匹配研究领域的热点与难点,其匹配能力较强,可以处理两幅图像之间发生平移、旋转、仿射变换情况下的匹配问题,甚至在某种程度上对任意角度拍摄的图像也具备较为稳定的特征匹配能力。目前这种方法被广泛地应用于图像拼接、图像配准及目标识别等领域。本文采用一种优化的SIFT特征匹配算法,通过Visual C++语言进行编程,完成了将两幅有公共区域的图片合称为全景图片的程序。
2 基于SIFT的图像拼接技术
SIFT算法首先对两幅图像在灰度和尺度两个空间上进行特征检测,用过拉普拉斯金字塔消除尺度变化的影响,确定特征点的位置和所处的尺度,然后用特征点邻域梯度的主方向作为该点的方向特征,以实现算子对尺度和方向的无关性,生成特征点的SIFT特征向量,利用该向量进行匹配。
2.1 SIFT特征匹配算法
特征点检测是SIFT图像拼接技术的重点,也是难点。其特征点检测的准确程度直接影响到算法后期两张图片融合的效果。故这一部分是整个算法的基础。
2.1.1 尺度空间理论
文献[7]中对尺度空间理论进行了详细的论述。尺度空间的思想最早于1962年提出,在上世纪80年代逐渐得到关注和发展。此后,随着计算机视觉领域研究的兴起,尺度空间方法进入了快速发展阶段。 OpenCV基于SIFT的图像拼接算法研究(2):http://www.youerw.com/zidonghua/lunwen_66108.html