图像拼接是一种将同一场景的多个重叠图像拼接成较大图像的方法。它在医学成像,计算机视觉,卫星数据,军事目标自动识别等领域具有重要意义。图像拼接的输出是两个输入图像的并集。通常使用五个步骤:
特征提取:检测所有输入图像中的特征点以进行图像配准:建立图像之间的几何对应关系,以便在共同的参照系中对它们进行变换,比较和分析。它大致可分为以下几类
直接使用图像的像素值的算法,例如,相关方法
用于频域处理的算法,例如基于FFT的方法;
低级特征,低级特征的算法,通常使用边和角,例如,基于特征的方法。
高级特征是高级特征的算法,通常用于重叠图像对象的部分,特征关系,如图论方法。
图像变形:图像变形是指重新投影其中一个图像的图像并将其放在更大的画布上。
图像融合混合:图像融合是改变边界附近图像的灰度,去除这些间隙,并创建混合图像,从而实现图像之间的平滑过渡。混合模式用于将两个层合并在一起。
特征点提取
该功能用于匹配图像块内部的两个输入图像中的元素。这些图像块是图像中的像素组。在输入图像上执行补丁匹配。具体说明如下:图1和图2给出了补丁的良好匹配,如下图所示,因为图2中的一个补丁看起来与图1中的补丁非常相似。当我们考虑图3和图4时,这里的补丁不匹配,因为图4有许多类似的补丁,看起来非常类似于图3中的补丁。因为像素的强度非常相似,所以不可能执行精确的特征匹配。
为了为图像对提供更好的特征匹配,角匹配用于定量测量。角落是一个很好的匹配功能。当视点改变时,角部特征是稳定的。此外,角落附近的强度突然变化。角点检测算法用于检测图像的角落。角点检测算法包括Harris角点检测算法,SIFT特征点检测算法(Scale Invariant Feature Transform),FAST角点检测算法,SURF特征点检测算法(Speeded-up robust feature
Harris角点检测算法:
Harris算法是一种基于Moravec算法的特征提取算法。1988年,C。Harris和M. J. Stephens设计了一个局部图像检测窗口。通过沿不同方向移动少量窗口,可以确定强度的平均变化。我们可以通过观察小窗口中的强度值来轻松识别角点。移动窗户时,平坦区域不会显示所有方向的强度变化。边缘区域的强度不会沿边缘方向变化。对于拐角,在所有方向上发生显着的强度变化。哈里斯角点检测器提供了一种检测平坦区域,边缘和角落的数学方法。Harris检测具有许多特征,例如旋转不变性和尺度可变性。位移下的强度变化:
其中,
![](http://img.e-com-net.com/image/info10/3a2936c56dda47d98e75c3b3edbfca5c.jpg)
是窗口函数,
![](http://img.e-com-net.com/image/info10/aa49d64f493d41c188b1009610320e5b.jpg)
是移动后的强度,
![](http://img.e-com-net.com/image/info10/cc5ce3e8e7e64be888db61734be8f83a.jpg)
是单个像素位置的强度。
![](http://img.e-com-net.com/image/info10/f855462559014e539a2a639b8d787722.jpg)
Harris角点检测算法如下:
对图像中的每个像素点
计算自相关矩阵
![](http://img.e-com-net.com/image/info10/05c05f07d049414c8b9219ab23805509.jpg)
(autocorrelation matrix M):
![](http://img.e-com-net.com/image/info10/756f3a7c849a41e9a2e883e59cdca2ef.jpg)
其中
是
![](http://img.e-com-net.com/image/info10/88e95c5c3fc4469db3b434df098d8fdc.jpg)
的偏导数
![](http://img.e-com-net.com/image/info10/ab845c19bf5a41598851cd5fc1f13ac5.jpg)
对图像中的每个像素点做高斯滤波,获得新的矩阵
,离散二维零均值高斯函数为
![](http://img.e-com-net.com/image/info10/1367d927d3ad4dd8bd2cd2ae2ae804c3.jpg)
![](http://img.e-com-net.com/image/info10/19f5c4d56ee64eb382a3586a6f9e22f0.jpg)
计算每个像素点(x,y)的角点度量,得到
,
![](http://img.e-com-net.com/image/info10/4c2b0d784ca34eca9aa38616a634c075.jpg)
的范围是
![](http://img.e-com-net.com/image/info10/a61430353c2447ce99cdd42fb797854e.jpg)
。
![](http://img.e-com-net.com/image/info10/d7c13900dc35490189822fcbffa8bcb4.jpg)
选择局部最大值点。Harris方法认为特征点与局部最大兴趣点的像素值对应。
设置阈值T,检测角点。如果
的局部最大值高于阈值
![](http://img.e-com-net.com/image/info10/5a4a636e372c4cc7873f868475007140.jpg)
,那么此点为角点。
![](http://img.e-com-net.com/image/info10/e16653039c9a46119726a12291acb957.jpg)
SIFT角点检测算法:
SIFT算法是一种尺度不变的特征点检测算法,可用于识别其他图像中的相似对象。SIFT图像特征表示为关键点描述符。当检查图像匹配时,提供两组关键点描述符作为最近邻搜索(NNS)的输入,并生成匹配的关键点描述符。
SIFT的计算分为四个阶段:
规模空间建设
尺度空间极值检测
关键点本地化
方向分配和定义关键点描述符
第一阶段是确定潜在的兴趣点。它使用高斯函数(DOG)的差异来搜索所有比例和图像位置。确定在第一阶段中找到的所有兴趣点的位置和比例。根据关键点的稳定性选择关键点。稳定的关键点可以抵抗图像失真。在方向分配链路中,SIFT算法计算稳定关键点周围的梯度方向。根据局部图像的梯度方向,为每个关键点分配一个或多个方向。对于一组输入帧,SIFT提取功能。图像匹配使用Best Bin First(BBF)算法来估计输入帧之间的初始匹配点。为了去除不属于重叠区域的不需要的角,使用RANSAC算法。它删除图像对中的错误匹配。通过定义框架的尺寸,长度和宽度,实现了框架的重新投影。最后,通过缝合获得最终输出拼接图像。拼接时,检查场景每帧中的每个像素是否属于失真的第二帧。如果是,则将来自第一帧的对应像素的值分配给像素。SIFT算法具有旋转不变性和尺度不变性。SIFT非常适合高分辨率图像中的目标检测。它是一种强大的图像比较算法,虽然速度较慢。SIFT算法的运行时间非常长,因为比较两个图像需要更多的时间。
FAST 算法
FAST是Trajkovic和Hedley在1998年创建的角点检测算法。对于FAST,角点检测优于边缘检测,因为角点具有二维强度变化,很容易与相邻点区分开。它适用于实时图像处理应用。
FAST角落探测器应满足以下要求:
检测到的位置应该是一致的,对噪声变化不敏感,并且不能在同一场景中移动多个图像。
准确; 检测到的角应尽可能靠近正确的位置。
速度; 角落探测器应该足够快。
原理:首先,在候选角周围选择16个像素。如果n(n通常为12)连续像素高于候选角加上阈值,或者低于候选角减去阈值,则该点是角(如图4所示)。
为了加速FAST算法,通常使用角点响应函数(CRF)。该函数根据局部邻域的图像强度给出角点强度值。图像由CRF计算,CRF的局部最大值作为角点。多网格技术用于提高算法的速度并抑制检测到的假角。FAST是一种准确,快速的算法,具有良好的定位(位置精度)和高点可靠性。FAST角点检测算法的难点在于选择最佳阈值。
SURF算法
加速鲁棒特征(SURF)角点检测器采用三个特征检测步骤。通过检测,描述和匹配,SURF通过考虑检测点的质量来加速位移的检测过程。它更侧重于加快匹配过程。Hessian矩阵和低维描述符用于显着提高匹配速度。SURF广泛用于计算机视觉社区。SURF在特征定位方面非常有效且稳健
图像匹配
在检测到特征点之后,我们需要以某种方式将它们相关联,这可以通过NCC或SDD(平方差和)方法来确定。
归一化互相关(NCC)
互相关通过分析第一图像中每个点周围的像素窗口并将它们与第二图像中每个点周围的像素Windows相关联来工作。将具有最大双向相关性的点作为对应对。
基于在两个图像位移(移位)中的每一个中计算的图像强度值到“窗口”之间的相似性
其中,
是窗口的平均值图像
![](http://img.e-com-net.com/image/info10/0e49633c339f4ef896c34ccd99264fd4.jpg)
和
![](http://img.e-com-net.com/image/info10/38df40eb78164fc998351467f62449c5.jpg)
分别是两张图片。
![](http://img.e-com-net.com/image/info10/e0cdb61261c6418cbc49486942e3efab.jpg)
是窗口的像素坐标,
![](http://img.e-com-net.com/image/info10/d4bc92b5ff414df99a828d9d1c172092.jpg)
是通过NCC系数计算出的位移或偏移。NCC系数的范围为
![](http://img.e-com-net.com/image/info10/2baa763328b7427a9e8800f8d2952567.jpg)
。NCC峰值相对应的位移参数表示两个图像之间的几何变换。此方法的优点是计算简单,但是速度特别慢。此外,此类算法要求源图像之间必须有显著的重叠。
![](http://img.e-com-net.com/image/info10/8336524327814a5491c85a28063416da.jpg)
互信息(MI)
相互信息测量基于两个图像之间的共享信息量的相似性。
两个图像之间的MI并以熵表示:
其中,
和
![](http://img.e-com-net.com/image/info10/3e7a72098a984d63ba1b6e8f0a26426c.jpg)
分别是
![](http://img.e-com-net.com/image/info10/34c9909a51e84b6d80260f131f62b1f3.jpg)
和
![](http://img.e-com-net.com/image/info10/c75bf046e35c4d78800cd6205039b127.jpg)
的熵。
![](http://img.e-com-net.com/image/info10/83dd4e4ae107436da88fe38239d69345.jpg)
表示两个图像之间的联合熵。
![](http://img.e-com-net.com/image/info10/98b1b78b1ffb4ad884b5744c88990dc4.jpg)
是
![](http://img.e-com-net.com/image/info10/0b6c7056d295464381c04cb08d9dce61.jpg)
可能的灰度值,
![](http://img.e-com-net.com/image/info10/3ae8ca7b59d040cc818477cf127518d3.jpg)
是
![](http://img.e-com-net.com/image/info10/83cde3e067f44df29f8b308365ba6a52.jpg)
的概率分布函数
![](http://img.e-com-net.com/image/info10/482cacd2f9134ca2aa9043b9dc11752e.jpg)
但是,我们可以从图中看到许多点是错误相关的。
计算单应矩阵
单应矩阵估计是图像马赛克的第三步。在单应性估计中,删除不属于重叠区域的不需要的角度。RANSAC算法用于单响应。
随机样本一致性算法
RANSAC算法是一种用于参数估计的鲁棒迭代方法。该算法是不确定的,因为它仅以一定的概率产生合理的结果,随着执行更多的迭代而增加。在存在大量可用数据分层的情况下,RANSAC算法用于以健壮的方式拟合模型。RANSAC算法在计算机视觉中有很多应用。
RANSAC原则
从数据集中随机选择一组数据和那个有效数据(以点为单位)来确定未确定的参数模型,这个模型测试数据集所有数据,满足模型数据成为内点,副点(通常是噪声测量方法,误差或不正确的数据点),迭代,直到某个参数模型得到最多点,然后该模型为最优模型。考虑以下假设:
可以从N个数据项估计参数。
可用数据项的总数是M.
随机选择的数据项作为良好模型的一部分的概率是。
如果有一个很好的拟合,那么算法退出而没有找到合适的概率是。
RANSAC步骤
随机选择N个数据(3个点对)
估计参数x(计算变换矩阵H)
在用户root中设置一个阈值,找到合适的M,为模型向量x K的数据总数(计算每个匹配点后的变换矩阵到相应的匹配点距离,根据预设的阈值将匹配点设置为分为内部和外部,如果内部点足够,H足够合理,所有点都在重新评估H)。
如果匹配数K足够大,请接受模型并退出
重复步骤1-4 L次
退出这一点
K的大小取决于我们认为正确结构的数据百分比以及图像中有多少结构。如果存在多个结构,则在成功拟合后,将删除拟合数据并重新执行RANSAC。
迭代次数L可以通过以下公式计算:
优点:鲁棒可以估计模型参数
缺点:迭代次数没有上限。设定的迭代次数将影响算法的时间复杂度和准确性,并且需要预设阈值
在执行RANSAC之后,我们只能在图像中看到正确的匹配,因为RANSAC找到与大多数点相关联的归位矩阵并将不正确的匹配作为异常值抛出
单应
利用两组相关点,下一步是建立两组点的变换关系,即图像变换关系。Homography是两个空间之间的映射,通常用于表示同一场景的两个图像之间的对应关系。它可以匹配大多数相关的特征点,并且可以实现图像投影,因此一个图像可以通过投影与另一个图像实现大面积重叠。
设2个图像的匹配点分别为
,
![](http://img.e-com-net.com/image/info10/523e82f3cf154fea82bfaf24e6a6d86d.jpg)
,则必须满足公式:
![](http://img.e-com-net.com/image/info10/80cc36c58d7a4cbbb906504b02ec200e.jpg)
且由于两向量共线,所以
![](http://img.e-com-net.com/image/info10/8c8415892b8a4280878cabf7e55aea8e.jpg)
其中,
![](http://img.e-com-net.com/image/info10/8cfe5d100e184f87806f1882e5c23645.jpg)
为8参数的变换矩阵,可知四点确定一个H
![](http://img.e-com-net.com/image/info10/6652f0cb4a4c4a2985d75d0c5a43169d.jpg)
令
则有
N个点对给出2N个线性约束。
![](http://img.e-com-net.com/image/info10/5a975702a3324b5ab93ac9c0ffdaa433.jpg)
通过RANSAC方法估计H:
首先,检测两个图像的角落
在角落之间应用方差归一化相关以收集具有足够高相关性的对以形成一组候选匹配。
选择四个点并计算H.
选择与同源性一致的对。如果Dist(Hp,q) 重复34步,直到足够的点对满足H. 因此,您获取满足此要求的所有点对,并通过公式重新计算H. 图像变形和融合 最后一步是转换所有输入图像并将它们融合成一致的输出图像。基本上,我们可以简单地将所有输入图像转换为称为复合全景平面的平面。 图像变形步骤 过渡平滑图像融合方法包括羽化,金字塔和渐变。 图形融合 最后一步是在重叠区域中混合像素颜色以避免接缝。最简单的使用形式是羽化,其使用加权平均颜色值来融合重叠像素。我们通常使用alpha因子,通常称为alpha通道,其在中心像素处具有值1,然后在与边界像素线性下降时变为0。当输出马赛克图像中至少有两个重叠图像时,我们将使用以下阿尔法值来计算一个像素的颜色:假设两个图像在输出图像中重叠; 每个像素在图像中,其中(R,G,B)是像素的颜色值。我们将计算拼接输出图像中(x,y)的像素值: 小结 以上内容简要概述了一些常用算法。Harris角点检测方法具有鲁棒性和旋转不变性。但是,它的规模各不相同。FAST算法具有旋转不变性和尺度不变性,具有更好的执行时间。但是当有噪音时,它的表现非常差。SIFT算法具有旋转不变性和尺度不变性,在噪声情况下更有效。它具有非常明显的特征。但是,它会受到光线变化的影响。该算法在执行时间和光照不变性方面具有良好的性能。 关注微信公众号:“图像算法”或者搜索imalg_cn 即可获取更多资源