课程设计: 基于OpenCV的多图像拼接、配准与美化(附源代码)

0 效果展示

待拼接图片:

拼接后图片:

在这里插入图片描述

1 系统架构设计

在这里插入图片描述


对项目所要求达成的目标,将图像拼接系统的整体流程分为三个阶段:

特征工程。该阶段主要实现对图像边缘、角点等特征位置的检测;对检测的局部特征生成具有鲁棒性、独特性、多量性、可扩展性的定量描述——特征描述子

基于特征描述子使用数值计算方法,结合重投影误差等匹配性能指标筛选匹配特征点对。该阶段还会对不同的特征检测算法、特征匹配策略进行性能比较、评估与分析。

图像配准。该阶段主要实现对无匹配点的滤除——增强抗噪能力与鲁棒性;图像映射的单应性估计;基于单应性矩阵将图像进行透视变换与拷贝,保持待拼接图像间坐标描述的一致性。

图像美化。该阶段主要用于消除图像配准阶段产出图像的明显拼接缝隙和毛刺,主要实现图像均衡化——基于 像素调整平衡不同拼接图像间的光照强度差异;基于 加权平滑图像拼接的缝隙处;基于拉普拉斯金字塔方法进行图像融合,使拼接图像更自然、美观。

2 软件架构设计

在这里插入图片描述

在这里插入图片描述

3 特征匹配

主要采用:暴力匹配、最值匹配、交叉匹配、KNN匹配、RANSAC匹配

在这里插入图片描述

单纯靠特征匹配是不够的,因为会引入大量误匹配点,需要进行匹配优化

Lowe’s匹配优化:

Lowe’s 匹配优化算法核心原理是:通过 K K K近邻查找算法,选择 K K K个和目标特征点最相似的点,若这 K K K个匹配对间的区别足够大,则选择最相似的作为目标特征点的匹配点,否则舍弃。

由于本项目针对的目标图像尺寸较小,因此通常选择 K = 2 K=2 K=2,即最近邻匹配。 2个点间的区别用距离比率

α = d ( F d s t , F a ) d ( F d s t , F b ) \alpha =\frac{d\left( F_{dst},F_a \right)}{d\left( F_{dst},F_b \right)} α=d(Fdst,Fb)d(Fdst,Fa)

来衡量,比率阈值根据不同的特征检测算法有所不同,达到此比率则认为目标特征点的两个匹配对区别足够大,可以加入优秀匹配点集。

此外上述的距离相似度度量 d d d对不同的检测算法亦有区别,本项目中对于ORB、BRISK等二进制描述算法采用汉明距离度量,在保证精度的情况下大幅提高匹配效率;对于SIFT、SURF等浮点型描述算法则采用 L 2 L2 L2范数度量。

值得注意的是,在算法开始前需要比较两个输入特征描述子的尺寸,因为在特征匹配
时匹配器有两个参数——查询索引(Query Index)与匹配索引(Train Index),当使用特征较多的描述子去查询特征较少的描述子时可能发生向量越界的情况,因此算法统一使用小特征描述子去查询大特征描述子中对应的匹配点。

在这里插入图片描述
可以看出,优化的效果还是很明显的

4 生成特征描述子

主要采用了下面四种方法

在这里插入图片描述
从实验结果看,SIFT算法性能最佳
在这里插入图片描述

5 图像拼接与配准

方法是计算相邻两张待拼接图片间的单应性矩阵,然后将其中一张图片通过单应性矩阵映射到另一张图片的坐标系即可。

考虑到RANSAC算法能够对计算单应性矩阵选取的参数进行迭代,并根据内集合的评判结果选取效果更好的匹配关键点计算得到的单应性矩阵,最终计算得到的单应性矩阵能适应最大数量的关键点,因此使用RANSAC算法计算得到的单应性矩阵应用于图像拼接后能得到最好的效果。自定义RANSAC单应性矩阵算法应用于图像拼接的结果与使用findHomography库函数的RANSAC方法的结果对比如图所示。

在这里插入图片描述

同时对比代码的运行结果如图所示,可以看出自定义的RANSAC求解算法和库函数中直接调用的RANSAC计算方式会产生约为0.5%的误差,可以视为算法的误差,可能由在单应性矩阵计算过程中变量类型转换过程中,变量在float和double类型之间转换产生的数据溢出和对于置信度取值不同等原因导致,在实际应用中可忽略不计。

在这里插入图片描述


6 图像平滑与美化

方法:拉普拉斯金字塔融合

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
最终效果:
在这里插入图片描述

7 源码地址

有帮助烦请star~
计算机视觉课程设计之多图像拼接、配准与美化

猜你喜欢

转载自blog.csdn.net/FRIGIDWINTER/article/details/121028856