图像拼接(image stitching)

# OpenCV中stitching的使用

OpenCV提供了高级别的函数封装在Stitcher类中,使用很方便,不用考虑太多的细节。

低级别函数封装在detail命名空间中,展示了OpenCV算法实现的很多步骤和细节,使熟悉如下拼接流水线的用户,方便自己定制。

 可见OpenCV图像拼接模块的实现是十分精密和复杂的,拼接的结果很完善,但同时也是费时的,完全不能够实现实时应用。

官方提供的stitching和stitching_detailed使用示例,分别是高级别和低级别封装这两种方式正确地使用示例。两种结果产生的拼接结果相同,后者却可以允许用户,在参数变量初始化时,选择各项算法。

具体算法流程:

  1. 命令行调用程序,输入源图像以及程序的参数
  2. 特征点检测,判断是使用surf还是orb,默认是surf。
  3. 对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置信度保存下来。
  4. 对图像进行排序以及将置信度高的图像保存到同一个集合中,删除置信度比较低的图像间的匹配,得到能正确匹配的图像序列。这样将置信度高于门限的所有匹配合并到一个集合中。
  5. 对所有图像进行相机参数粗略估计,然后求出旋转矩阵
  6. 使用光束平均法进一步精准的估计出旋转矩阵。
  7. 波形校正,水平或者垂直
  8. 拼接
  9. 融合,多频段融合,光照补偿,

 

猜你喜欢

转载自www.cnblogs.com/carsonzhu/p/11649414.html