图像拼接中的算法

来源:互联网 发布:厦门美工培训班 编辑:程序博客网 时间:2024/05/19 05:06

我把之前的学习总结成一份文档:

《图像拼接综述》点击打开链接_图像拼接 综述与算法综述


之前一个则是对图像拼接的介绍,这部分是算法介绍

图像拼接基础调研和综述


1       图像拼接中的算法

1.1                 图像预处理

通过几何变形校正方法对采集到的图像进行校正后,可以使得相同景物在图像重叠区域所成的像有相同的形状和一致的空间相对位置。

1.2                 图像特征检测

图像特征检测包括如下几种类型的特征检测:

1.       闭合区域

2.       轮廓和边缘区域

3.       角点

4.       线条

1.2.1               闭合区域

闭合区域特征是通过图像分割的方法来检测到的,分割的精度会大大地影响配准的结果。近年来,选择尺度不变区域特征引起了关注,虚拟圆的思想来计算图像之间平移和尺度的变化,虚拟圆是一个半径最大的圆,这个圆所涵括的背景区域不包含边缘点,一对虚拟圆就足够求出平移和尺度的变化量,它相对于图像边缘特征来说鲁棒性更强,但缺点是易受局部变化的影响

1.2.2               边缘和轮廓

边缘和轮廓——所谓边缘轮廓是指甚周围像素灰度有阶越变化或屋顶变化的那些像素的集合。在选取基准特征块时,人们首先会注意到含有一些主体信息、纹理相对复杂、易吸引眼球的物体,并把它作为参照物。边缘轮廓信息正好反映了图像不易受外界光照条件(对光照条件不敏感)的影响而产生剧烈变化的内在性质及像素灰度相对变化的特征,抗灰度和几何畸变能力强,稳定可靠。诸如有Canny算子、LoG(高斯一拉普拉斯)算子、Sobel检测算子。

1.2.2.1                    轮廓边缘检测算子

边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。

经典的边界提取技术大都基于微分运算。首先通过平滑来滤除图像中的噪声,然后进行一阶微分或二阶微分运算,求得梯度最大值或二阶导数的过零点,最后选取适当的阈值来提取边界。

1.2.2.2                    Roberts边缘算子

Roberts算子是一种利用局部差分算子寻找边缘的算子。

Roberts算子边缘定位准,但是对噪声敏感。适用于边缘明显而且噪声较少的图像分割,在应用中经常用Roberts算子来提取道路。

1.2.2.3                    Sobel边缘算子

Sobel边缘算子中的每个像素都用这两个核做卷积。这两个核分别对垂直边缘和水平边缘响应最大,两个卷积的最大值作为该点的输出位。运算结果是一幅边缘幅度图像。

Sobel算子认为邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越大,产生的影响越小。

1.2.2.4                    Prewitt边缘算子

Prewitt边缘算子的卷积和如图2.3所示,图像中的每个像素都用这两个核做卷积,取最大值作为输出,也产生一幅边缘幅度图像。

Prewitt算子在一个方向求微分,而在另一个方向求平均,因而对噪声相对不敏感,有抑制噪声作用。但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。

1.2.2.5                    Laplacian边缘算子

拉普拉斯算子一种二阶边缘检测算子,它是一个线性的、移不变算子。是对二维函数进行运算的二阶导数算子,对一个连续函数f (x, y)它在图像中的位置(x, y)

1.2.2.6                    Log边缘算子

现在介绍一种利用图像强度二阶导数的零交叉点来求边缘点的算法对噪声十分敏感,所以在边缘增强前滤除噪声。为此,马尔(Marr)和希尔得勒斯(Hildreth)根据人类视觉特性提出了一种边缘检测的方法,该方法将高斯滤波和拉普拉斯检测算子结合在一起进行边缘检测的方法,故称为Log(Laplacian of Gassian )算法。也称之为拉普拉斯高斯算法。

拉普拉斯算子对图像中的嗓声相当敏感。而且它常产生双像素宽的边缘,也不能提供边缘方向的信息。高斯-拉普拉斯算子是效果较好的边沿检测器。

高斯——拉普拉斯算子把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平化掉噪声,再进行边缘检测,所以效果更好。

1.2.2.7                    Canny边缘算子

检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值的像素点。图像边缘检测必须满足两个条件:一是必须能有效地抑制噪声;二是必须尽量精确确定边缘的位置。既要提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感。

Canny边缘检测基本原理:

(1)具有既能滤去噪声又保持边缘特性的边缘检测最优滤波器,其采用一阶微分滤波器。采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像卷积进行滤波;然后对滤波后的图像寻找图像梯度的局部最大值,以此来确定图像边缘。根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。

(2)类似与Marr(LOG)边缘检测方法,也属于先平滑后求导数的方法。

Canny边缘检测算法:

step1:用高斯滤波器平滑图象;

step2:用一阶偏导的有限差分来计算梯度的幅值和方向;

step3:对梯度幅值进行非极大值抑制;

step4:用双阈值算法检测和连接边缘。

Canny算子检测方法的优点:①低误码率,很少把边缘点误认为非边缘点;②高定位精度,即精确地把边缘点定位在灰度变化最大的像素上;③抑制虚假边缘。

1.2.2.8                    轮廓边缘检测算子总结

这些经典的边缘提取算子,虽然各自不同,有不同的长处,但是它们也有共同的特点:每种算子对应的预定义的边缘是它们最适合使用的情形,也就是说它们有针对性。这一点在应用中是有优越性的,它们的针对性可以帮助我们完成特定的任务。同时这也是算子的局限性,对于一般的问题或者情况未知的问题,预定义边缘的方法可能不会达到最佳效果。

1.2.3               角点特征检测算法

在特征提取方法中,准确选取图像中的特征点,可以减少计算的数据量,相比提取图像边缘特征,能够更好地满足实时处理的要求。在图像的特征点中,人们比较关注获取图像的角点信息,这是因为角点保留了图像中的重要的局部信息,一副图像中角点的像素点个数占整幅图像像素点的比例不超过0.1%,同时角点具有如旋转不变性,几乎不受光照条件的影响等良好性质,因此,一个快速有效的角点检测方法对图像处理工作能否达到令人期待的效果至关重要。此外,角点特征提取技术不仅在基于特征的图像配准中有广泛的应用,在图像理解与模式识别等领域中也是研究人员关注的热点。

角点位置的精度影响到拼接的效果,如果图像中抽取的角点位置不精确,会导致单应性变换矩阵的参数不精确,拼接融合后图像有一定的模糊,成为“鬼影”。

角点检测分为基于几何和基于灰度两种方法。

1.       基于几何方法——前者采用图像分割的方法抽取图像边缘,然后在边缘处寻找有意义的拐点,在图像比较复杂时,检测的效果很不理想。但如果把局部梯度相乘,梯度方向会发生改变,能很好的分离出角点。

2.       基于灰度方法——有人则发现灰度图像的所有的曲率与边缘法线成正例,而与边缘强度成反比。有人提出兴趣点检测器,图像上的一个局部窗口在四个方向上平移,求取亮度的平均变化。Harris 和Stephens修改了此算法,估计一次微分的自相关。这些方法由于都对图像进行了微分,因此对噪声敏感。Smith 和Brady 发现的SUSAN算法不依赖于图像的微分,对噪声有很强的适应性。

1.2.3.1                    角点类型

 

优秀的角点检测方法需要满足如下标准:

(1).所有真实的角点都被发现到;

(2).没有虚假的角点被当做角点检测出来;

(3).角点在图像中的定位精确;

(4).角点检测器必须对噪声有鲁棒性;

(5).角点检测算子的效率应该是高效的

检测算法的发展:

 

1.2.3.2                    Harris 角点检测算子

这是一种高效并且直至今日仍然得到广泛使用的角点检测算法。相比Moravec算子,Harris 算子的计算量很高,不过它良好的检测结果使得此算子很快取代Moravec算子在实践中得以广泛应用。

1.2.3.3                    SUSAN (Small Univalue Segment AssimilatingNucleus)算子

是由英国牛津大学的Smiht.M 和Brday.J.M在1977年提出的。该算法的基本原理是基于一个窗口区域“USAN” (Univalve Segmnet Assimilating Nueleus),根据检测点与检测点的局部区域灰度值的变化程度进行判别。由于此算法不用对图像灰度值求导数,计算速度快,精度好,并且抗噪能力也很强,在实践中应用广泛,尤其是用于实时检测。

1.2.3.4                    Trajkovic算子

同样使用SUSAN 算法中USAN 的定义,Trajkovic 等人1988 年提出了最小亮度变化(Minium Intensity Change)角点检测算法,与SUSAN 算法不同的是,该算法判断一个核心点为角点是过核心点的任意一条直线与USAN 区域的交点的个数,以及该核心点与USAN 区域的位置。该算法在实时应用中的速度非常理想。

1.2.3.5                    Harris-Laplace算子

Harris-LapLace算子,这种算法对图像尺度变化具有很强的鲁棒性,用高斯差分滤波估计拉普拉斯变换,并在尺度空间检测极值,但是它的计算量大。

1.2.3.6                    总结

Harris角点检测算法、SUSAN 角点检测算法具有良好的旋转不变性,且对光照不敏感等特点。

Harris 角点算法对图像进行了微分,对噪声有一定的敏感性,SUSAN 算法对噪声不敏感,且速度比Harris 算法更快——SUSAN 模板为一圆形模板,中间的一点称为核子。将其在图像的每个象素点上移动,根据预先设定的亮度阈值比较模板内的各点像素值与核子像素值,若相似,归入USAN 区域,否则将其剔除。

Harris和SUSAN子检测到的角点都不具有尺度的不变性,后两种算子检测到的角点具有尺度不变性,但是Harris-Laplace算子检测到的角点在图像区域内分布不均,纹理丰富的区域可能检测到较多的角点,纹理稀疏或者平滑的区域可能检测到较少的角点,高斯差分算子检测角点则比较复杂。

1.2.4               梯度表示SIFT

角点检测对于尺度是变化的,为此要有新方法,即梯度特性。

SIFT算法是David G.Lowe在1999年首先提出的用于目标识别的一个方法,首先对两幅图像在尺度和灰度两个空间进行特征检测,利用拉普拉斯金字塔的性质消除尺度变化的影响,确定关键点的位置和所处的尺度,然后用关键点邻域梯度的主方向作为该点的方向特征,以实现算子对尺度和方向的无关性,生成关键点的SIVF特征向量,利用该向量进行匹配。David Lowe在2004年总结了现有的给予不变量技术的特征检测算法,井正式提出了一种基于尺度空间的、对图像缩放、旋转甚至仿射变挟保持不变性的图像局部特征描述算子一SIFT,即尺度不变特征变换。

SIFT算法生成图像特征的主要步骤有以下几个:

(1)尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

(2)关键点的定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

(3)方向的确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

(4)关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

1.2.5               监控中的特殊应用场景

由于特征匹配的计算量是与检测到的特征点的数量是密切相关的,特征点的数量多,那么在匹配时计算量就大。为了能够快速匹配:

限定图像角点检测的区域,由于所使用的相机是固联在一起的,相机所拍摄两幅图像之间的重叠范围保持不变,大约在30%一50%之间,那么可以把特征检测的区域限定在这个范围之内,从而可以极大地减小特征检测和匹配的计算量。

 

 

 

 

 

1.3                 图像特征匹配

特征点匹配是指找出需要配准的两幅图像中正确匹配的特征点。由于拍摄时间、拍摄视点、拍摄角度、光照等条件的变化,使拍摄的图像存在旋转、缩放、射影变换、光照变化等。在这种条件下,要实现正确匹配是非常困难的。因而确定一个合适的准则进行匹配就显得尤为重要了。

Ø       基于像素平方和(SumofSquared Differences,简称SSD)的匹配方法

Ø       基于自相关(CrossCorrelation)的匹配方法

1.3.1               SSD匹配

首先对需要配准的两幅图像分别提取Harris特征点,分别得到两个特征点集合,以每一个特征点为中心,将其邻域窗口W的像素值作为该特征点的描述符,对于图像1中的每一个特征点Pf分别计算其与图像2中提取的各个特征点的邻域像素值差的平方和。

评价:

因为它直接利用图像的灰度信息值,所以最大的缺点就是对光照的变化十分敏感,一旦需要配准的两幅图像在重叠区域的曝光不一致,那么该方法将不再准确。其次,是进行特征点匹配时采用的邻域窗口为矩形,当需要配准的两幅图像存在较大角度的旋转和较大尺度的缩放时,特征点邻域窗口的特征将产生较大的改变,因此对于图像的旋转和缩放就会比较敏感。这种误差的累积对后期的多幅图像的配准造成影响。

1.3.2               自相关匹配(CC)与NCC

该方法不直接利用特征点邻域的灰度值,而是依据特征点邻域像素灰度值的互相关系数(Cross Correlation)为匹配原则进行匹配。

评价:

该方法仍然对光照变化比较敏感,矩形窗口所带来的缺点仍然不可避免。为了消除这个缺陷,人们又提出了归一化互相关方法 (Normalized Cross Correlation)

 

 

1.4                 图像配准算法

1.4.1               RANSAC算法

1.4.1.1                    RANSAC算法应用的背景

计算出图像特征点问的相关性后,图像的相关点并不一定是匹配点,相关点的集合中会含有大量的不匹配的特征点。因此,还要进一步筛选出精确匹配的特征点对,这就需要一种容错能力很强的算法来提纯特征点集合。

如果有效数据占大多数,无效数据只是很少量时,我们可以通过最小二乘法或类似的方法来确定模型的参数和误差。如果无效数据很多(比如,超过了50%的数据是无效数据),最小二乘法就失效了,我们需要新的算法,然后就有人发明了RANSAC估计算法。

1.4.1.2                    RANSAC算法的基本解释

RANSAC是“RANdom SAmpleConsensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。该算法最早由Fischler和Bolles于1981年提出。

RANSAC的基本假设是:

(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;

(2)“局外点”是不能适应该模型的数据;

(3)除此之外的数据属于噪声。

局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设。

RANSAC也做了以下假设:给定一组(通常很小的)局内点,存在一个可以估计模型参数的过程;而该模型能够解释或者适用于局内点。

RANSAC(Random SampleConsensus)算法可以过滤包含很大一部分错误数据的数据集合,尤其适合场景分析,因为局部特征检测算子经常产生误差,这往往会影响后续算法的准确性。局部特征检测算子产生的误差主要有分类误差和度量误差两类。

分类误差主要是特征检测算子把图像的某一部分错误地认定为特征;

度量误差主要是当特征检测算子正确定位了特征,但却误算了它的某个参数(比如说在图像中的位置)。度量误差一般来说遵循正态分布,用典型的参数估计方法如最小方差对目标函数的优化可以排除其影响。而分类误差对参数估计的影响比度量误差的影响大的多,却往往不能用上面提到的方法来消除其影响。而RANSAC算法可以解决这个问题。

1.5                 图像融合算法

图像融合基本分三类:像素级、特征级、决策级。

迄今为止,数据融合方法主要是在像素级和特征级上进行的。常用的融合方法有HIS融合法、KL变换融合法、高通滤波融合法、小波变换融合法、金字塔变换融合法、样条变换融合法等。下面简要介绍其中的几种方法。

1.       HIS融合法

HIS融合法在多传感器影象像元融合方面应用较广,例如:一低分辨率三波段图象与一高分辨率单波段图象进行  融合处理。这种方法将三个波段的低分辨率的数据通过HIS变换转换到HIS空间,同时将单波段高分辨率图象进行对比度拉伸以使其灰度的均值与方差和HIS空间中亮度分量图象一致,然后将拉伸过的高分辨率图象作为新的亮度分量代入HIS反变换到原始空间中。这样获得的高分辨率彩色图象既具有较高空间分辨率,同时又具有与影象相同的色调和饱和度,有利于目视解译和计算机识别。

2.       KL变换融合法

KL变换融合法又称为主成分分析法。与HIS变换法类似,它将低分辨率的图象(三个波段或更多)作为输入分量进行主成分分析,而将高分辨率图象拉伸使其具有于第一主成分相同的均值和方差,然后用拉伸后的高分辨率影象代替主成分变换的第一分量进行逆变换。高空间分辨率数据与高光谱分辨率数据通过融合得到的新的数据包含了源图象的高分辨率和高光谱分辨率特征,保留了原图象的高频信息。这样,融合图象上目标细部特征更加清晰,光谱信息更加丰富。

3.       高通滤波融合法

高通滤波融合法将高分辨率图象中的边缘信息提取出来,加入到低分辨率高光谱图象中。首先,通过高通滤波器提取高分辨率图象中的高频分量,然后将高通滤波结果加入到高光谱分辨率的图象中,形成高频特征信息突出的融合影象。                         

4.       小波变换融合法

利用离散的小波变换,将N幅待融合的图象的每一幅分解成M幅子图象,然后在每一级上对来自N幅待融合图象的M幅子图象进行融合,得到该级的融合图象。在得到所有M级的融合图象后,实施逆变换得到融合结果。

1.5.1               融合算法总结

基于多尺度分解的图像融合方法(基于拉普拉斯塔形分解的图像融合算法、基于比率塔形分解的图像融合算法、基于对比度塔形分解的图像融合算法、基于小波分解的图像融合算法)和非多尺度分解的图像融合算法(像素灰度值加权平均、像素灰度值选小、像素灰度值选大)。

上面提及的各种算法都有其优劣:

Ø       基于非多尺度分解的图像融合算法思想简单,计算量也小,降噪效果明显,但是存在融合后图像对比度下降明显,融合效果主观评价比较勉强,定性评价指标较差,等诸多不足。

Ø       基于多尺度分解的图像融合算法,特别是以小波分解的方法为代表,其融合的物理意义明确,尤其是多方向性的特点非常符合人类视觉特性,融合效果较好但是也存在就算量大抗噪声影响差等不足。

 

2       OpenHW大赛的一个流程

 

1.           图像采集:采用了MTD9112传感器并且经过VHDCI高速接口传入到内存之中,该步骤相对比较容易,但也需要考虑图像存入和读出DDR2存储器所占用的时间以及由此带来的延迟。

2.           图像滤波:图像在传输的过程中可能会被干扰而产生噪声造成图像质量下降,这些噪声会影响到后面的处理,尤其是特征检测。因而需要对其进行滤波,常用的图像滤波方法有均值滤波、中值滤波、频域滤波等。为了减小运算量在本系统中采用均值滤波比较好,通过合理的设置滤波阈值减小图像变模糊的程度。

3.           特征检测:本系统中将采用SURF(speed up robust features)算法进行特征检测,,其性能超过SIFT算法并且能够获得更快的速度,可以对图像的旋转、尺度伸缩、光照、视角等变化保持不变性。Marek Kraft等采用基于SURF的特征描述器和FAST的特征检测器算法也在FPGA平台上实现了实时的图像特征检测与匹配。借鉴于以上一些文献的基础上,本系统采用了多IP核的结构来实现四路视频的拼接,参见硬件电路结构框图。而且由于本系统的四个摄像机的安装位置具有特殊性,一旦安装确定则相邻两个摄像机获得的视频帧之间重叠的部分的范围能够提前大致确定,并且该区域不会特别的大,这将极大的减小了图像特征检测的数据量,再结合算法和运算的优化,最终是能够达到实时要求的。

4.           特征匹配:由于前一步骤中已经检测出了相邻两幅图像之中的特征点,实现特征匹配即是在相邻两幅图像中找出唯一对应的那些特征点。本系统将采用基于局部二值模式LPB直方图的算法进行特征匹配。

5.           变换参数估计、拟合:为了准确的得到相邻两幅图像之间的变换关系,需要通过已经匹配的特征点来求解。通常通过最小二乘方法来拟合,得到变换参数。

6.           图像插值、重采样:由于图像配准的过程需要将除了参考图像之外的图像进行仿射变换,以得到同一坐标下的拼接图像。这个过程中需要对那些不在整数坐标的像素进行插值和重采样。常用的插值算法有最近邻插值、双线性插值、立方插值等,考虑到运算量和最终图像效果,本系统将采用双线性插值算法。

7.           图像调整融合:对于各路输入视频的相邻两路间的图像拼接,重合区域需要处理以免出现明显的接缝,并消除由于视角不一致和图像中有运动物体造成的图像模糊和鬼影现象。另外由于每个摄像头安装的位置不一样,所受到的光照也不一样,需要对拼接完的全景图像进行光照度的调节,以使整幅结果图像亮度均匀。本系统中对于重叠区域将采用淡入淡出的方法进行光照度的调整,在图像中使用两幅图像共同的贡献值作为融合图像的像素值,通过线性加权过渡函数实现靠近重叠区域边界的地方做平滑过渡处理。

8.           全景图像显示:由于拼接完的全景图像尺寸宽度将比每一路视频图像宽度大得多,因而在显示屏上将不能按照原来的分辨率全部显示,为了方便观看结果,可能需要对其进行缩放以适应整个显示屏幕大小或者可以通过键盘上的按键来进行部分的浏览查看。如果进行缩放则将需要对拼接完的每帧图像进行重采样,运算量较大,需要通过硬件实现。如果是用户通过按键浏览查看则只需要建立对应的存储映射,从DDR2存储器中取出对应视窗大小的图像即可,对于视窗中没有的区域进行像素默认值设定,这个过程相对简单也可以由硬件实现。