# OpenCV中stitching的使用
OpenCV提供了高级别的函数封装在Stitcher类中,使用很方便,不用考虑太多的细节。
低级别函数封装在detail命名空间中,展示了OpenCV算法实现的很多步骤和细节,使熟悉如下拼接流水线的用户,方便自己定制。
可见OpenCV图像拼接模块的实现是十分精密和复杂的,拼接的结果很完善,但同时也是费时的,完全不能够实现实时应用。
官方提供的stitching和stitching_detailed使用示例,分别是高级别和低级别封装这两种方式正确地使用示例。两种结果产生的拼接结果相同,后者却可以允许用户,在参数变量初始化时,选择各项算法。
具体算法流程:
- 命令行调用程序,输入源图像以及程序的参数
- 特征点检测,判断是使用surf还是orb,默认是surf。
- 对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置信度保存下来。
- 对图像进行排序以及将置信度高的图像保存到同一个集合中,删除置信度比较低的图像间的匹配,得到能正确匹配的图像序列。这样将置信度高于门限的所有匹配合并到一个集合中。
- 对所有图像进行相机参数粗略估计,然后求出旋转矩阵
- 使用光束平均法进一步精准的估计出旋转矩阵。
- 波形校正,水平或者垂直
- 拼接
- 融合,多频段融合,光照补偿,