图像拼接实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像拼接
一、实验原理及实验结果
图像拼接就是将一系列针对同一场景的有重叠部分的图片拼接成整幅图像,使拼接后的图像最大程度地与原始场景接近,图像失真尽可能小。基于SIFT算法则能够对图像旋转、尺度缩放、亮度变化保持不变性,对视角变化,仿射变换,噪声也能保持一定程度的稳定性。本次实验运用SIFT匹配算法来提取图像的特征点,采用随机抽样一致性算法求解单应性矩阵并剔除错误的匹配对。最后用加权平均融合法将两帧图像进行拼接。具体过程为:首先选取具有重叠区域的两帧图像分别作为参考图像和待拼接图像,然后使用特征提取算法提取特征点,并计算特征点描述子,根据描述子的相似程度确定互相匹配的特征点对。再根据特征点对计算出待拼接图像相对于参考图像的单应性矩阵,并运用该矩阵对待拼接图像进行变换,最后将两帧图像进行融合,得到拼接后的图像。
1.特征点检测与匹配
特征点检测与匹配中的尺度空间理论的主要思想就是利用高斯核对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,再对这些序列就行尺度空间的特征提取。
二维的高斯核定义为:
G(x,y,σ)=
1
2πσ2
e−(x2+y2)2σ2
⁄
对于二维图像I(x,y),在不同尺度σ下的尺度空间表示I(x,y,σ)可由图像I(x,y)与高斯核的卷积得到:
L(x,y,σ)=G(x,y,σ)∗I(x,y)
其中,*表示在x 和 y方向上的卷积,L表示尺度空间,(x,y)代表图像I上的点。
为了提高在尺度空间检测稳定特征点的效率,可以利用高斯差值方程同原图像进行卷积来求取尺度空间极值:
D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))∗I(x,y)
= L(x,y,kσ)−L(x,y,σ)
其中k为常数,一般取k=√2。
SIFT算法将图像金字塔引入了尺度空间,首先采用不同尺度因子的高斯核对图像进行卷积以得到图像的不同尺度空间,将这一组图像作为金字塔图像的第一阶。接着对其中的2倍尺度图像(相对于该阶第一幅图像的2倍尺度)以2倍像素距离进行下采样来得到金字塔图像第二阶的第一幅图像,对该图像采用不同尺度因子的高斯核进行卷积,以获得金字塔图像第二阶的一组图像。再以金字塔图像第二阶中的2倍尺度图像以2倍像素距离进行下采样来得到金字塔图像第三阶的第
一幅图像,对该图像采用不同尺度因子的高斯核进行卷积,以获得金字塔图像第三阶的一组图像。这样依次类推,从而获得了高斯金字塔图像。每一阶相邻的高斯图像相减,就得到了高斯差分图像,即DOG图像。对DOG尺度空间每个点与相邻尺度和相邻位置的点逐个进行比较,得到的局部极值位置即为特征点所处的位置和对应的尺度。
为了寻找尺度空间的极值点,DOG尺度空间中中间层的每个像素点都需要跟同一层的相邻8个像素点以及它上一层和下一层的9个相邻像素点总共26个相邻像素点进行比较,以确保在尺度空间和二维图像空间都检测到局部极值。图像的高斯滤波保证了特征点不受噪声影响,DOG图像保证了特征点不受亮度差的影响,在高斯差分图像空间提取极值点保证了尺度不变性。
剔除不好特征点时,利用高斯差分算子检测到的特征点中,含有一些低对比度的特征点和不稳定的边缘特征点,需要进行剔除。使用泰勒级数将尺度空间方
程D(x,y,σ)展开:
D(X)=D+∂D T
∂X
X+
1
2
X T
∂2D
∂X2
X
其中X=(x,y,σ)T
,∂D
∂X
和∂
2D
∂X2
分别为一阶和二级偏导数矩阵。式中的一阶和二
阶导数可以通过附近区域的差分近似求得,求导并令其为零得出精确的极值位置X:
X=−∂2D−1
∂X2
∂D
∂X
则有
D(X)=D+1
2
∂D T ∂X
如果|D(X)|≥0.03,则保留该特征点,否则就丢弃。
为了去除不稳定的边缘特征点,可以获取特征点处的Hessian矩阵,主曲率可以通过一个2×2的Hessian矩阵H求出:
H=[D xx D xy D xy D yy]
设α和β分别为H阵的最大特征值和最小特征值,且α=rβ,则D(x,y,σ)的主曲率与特征值的大小成正比。令:
Tr(H)=D xx+D yy=α+β
Det(H)=D xx D yy−(D xy)2=αβ
Tr(H)2 Det(H)=
(α+β)2
αβ
=
(r+1)2
r
若Tr(H)2
Det(H)<(r+1)2
r
(一般取r=10),则保留该特征点,否则就丢弃。
为了实现特征点的选编不变性,可以利用特征点的主方向来实现。 (x,y)处的梯度值和方向分别为:
m(x,y)=√(L(x+1,y)−L(x−1,y))2+(L(x,y+1)−L(x,y−1))2
θ(x,y)=tan−1(L(x,y+1)−L(x,y−1))/ L(x+1,y)−L(x−1,y)
在以特征点为中心的邻域内进行采样,并用直方图统计邻域像素的梯度方向。梯度直方图的范围0°~360°,其中每45°一个柱,共8个柱。梯度直方图的峰
值则代表了该特征点处邻域梯度的主方向。这样对于每一个关键点,就拥有了三个信息:位置,尺度以及方向。接下来就是为每一个关键点建立一个特征描述符。
首先将坐标轴旋转为特征点的方向,以保证旋转不变性,接下来以特征点为中心取16×16的窗口,然后在每个4×4的图像小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值。此图中一共有4×4×8=128个数据,形成一个128维的SIFT特征向量即特征描述符。这种邻域领域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。此时,SIFT特征向量已经去除了尺度变化、旋转等几何变形因素的影响,再继续将特征向量的长度归一化,则可以进一步去除光照变化的影响。
提取出图像的特征点之后,就要进行特征点的匹配。本次实验以两个特征点描述子之间的欧氏距离作为特征点匹配的相似度准则。假设特征点p和q的特征
描述子分别为Des p和Des q,则其欧氏距离定义为:d=
√∑(Des p(i)−Des q(i))2
i=0 (127)
关键点的匹配可以采用穷举法。以待匹配图像的特征点R i为基准,在参考
<图像中搜索与其最邻近的特征点S if以及次邻近的特征点S is,若满足d(R i,S if)
d(R i,S is) Threshold则认为S if与R i为匹配的特征点对。
通过对阈值的设定,可以将两帧图像中没有匹配点的特征点去掉,只留下匹配的特征点对。
实验采用MATLAB编程,分别对一组交大图书馆的图像以及一组标准库中的图像进行特征点提取与匹配,结果如下图。