基于FPGA的图像拼接融合算法
一、图像拼接
1.0 拼接算法设计
- 预处理(图像矫正)图像矫正通过计算图像灰度值,赋值给目标像素,将目标像素与源数据比较,然后将图像边缘的值插入到目标点;对图像消除彩色分量(对提取特征无影响),只提取亮度分量;得到的灰度图像噪声更小,细节更明显。
- 特征点检测,SIFT 操作从输入图像与不同高斯滤波器的离散卷积开始。高斯滤波器是一种广泛使用的图像平滑算法,定义为:
上式中,G为(x,y)点的高斯核,σ为高斯参数。使用较大的 σ 值会对图像产生更大的平滑效果。图像与高斯核的离散卷积生成具有较少噪声和较少细节的图像。在 SIFT 中,高斯核的离散卷积是用四个不同的 σ 值完成的。逐渐增大的 σ 值用于生成一组模糊图像或八度音阶(意思频率减半,低频部分对应灰度图中变化平缓的部分,高频部分对应灰度图中变化剧烈的部分)。
通过查找局部最大值或最小值,从 DoG 空间中提取关键点。如果一个像素是由顶层 9 个像素、中间层 8 个像素和底层 9 个像素组成的 26 像素邻域内的局部最大值或最小值,则该像素被认为是关键点。 - 特征点描述,是特定关键点的唯一标识符。 SIFT 使用关键点的梯度幅度和方向作为描述符的基础。 一个点的梯度大小和方向可以通过图像与 Sobel 滤波器的离散卷积来计算。为了生成关键点描述符,计算每个关键点周围 16x16 窗口内每个点的梯度幅度和方向。 16x16 窗口的梯度幅度与高斯核卷积。将每个 4x4 单元格中的梯度幅度组合起来,使 16x16 窗口减少到 4x4 窗口和 16 个梯度方向。最后,这 16 个梯度方向被转移到 8 个 bin 中。因此,构建了一个 128 个元素的向量,作为关键点描述符。
- 关键点匹配,比较来自两个相机传感器的视频帧中关键点的关键点描述符。如果两个关键点(每个相机传感器一个)的关键点描述符之间的差异低于误差阈值,则将它们视为关键点对。将它们的关键点描述符之间差异最小的关键点对作为参考关键点。
- 图像混合,加权平均方法用于将两个帧混合成单个图像。重叠区域的像素值等于两帧像素的加权平均值。根据重叠像素和相应帧的边界之间的距离选择权重。
1.1 融合算法设计
- 红外图像与微光图像融合的主要目的是通过融合可以得到一幅兼具两幅图像特点的融合结果。融合图像中包含源图像的光谱信息隐藏目标可以更好的显示。目标物在图像中较为显著,因此会更有利于后续的应用。红外图像是一种热辐射成像,图像中的目标热源部分会非常突出,灰度值明显高于其他区域。
- RPCA(鲁棒主成分分析,Robust Principal Component Analysis)是低秩矩阵恢复模型,已经在视频监控,计算机视觉等许多领域得到广泛应用。RPCA模型可将数据矩阵表示为低秩矩阵和稀疏矩阵的叠加。
- 稀疏矩阵表示图像的显著特征,低秩矩阵包含图像的细节纹理等背景信息。分别融合后发现融合效果目标信息显著,效果较好。
- 源图像经过 RPCA 变换后得到稀疏分量和低秩分量,分别表示不同的图像信息。
- 在红外图像中,显著区域是相对背景比较突出的一部分图像内容。因此,稀疏分量的特征可以描述源图像的目标等显著信息,低秩矩阵建模为红外图像的主要背景信息。
- NSCT 作为一种多尺度变换,它可以多分辨率多方向的分解提取图像的信息。采用 NSCT 变换的方法融合源图像的低秩分量可以更好得到目标图像的低秩分量。在得到融合之后的低秩分量和稀疏分量后通过叠加可以得到融合结果。
1.2 设计架构
整个设计通过多路输入将数据多层拼接,来实现图像的融合显示。