python opencv 实现图像超分辨率_如何使用OpenCV实现多张图像拼接

先来看看OpenCV官方的例子得到效果是非常的好,输入的images如下:

5596e09bfc8597c325f29fb9528636b1.png

效果:

3cc2e5f2e11799cd2ee220c758799ffc.png

#Stitcher类与detail命名空间

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

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

5e3d02ce453bff1a56a8bb31ae25a81a.png

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

我在研究detail源码时,由于水平有限,并不能自由灵活地对各种部件取其所需,取舍随意。

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

5e3d02ce453bff1a56a8bb31ae25a81a.png

这涉及到以下算法流程:

命令行调用程序,输入源图像以及程序的参数

特征点检测,判断是使用surf还是orb,默认是surf。

对图像的特征点进行匹配,使用最近邻和次近邻方法,

将两个最优的匹配的置信度保存下来。

对图像进行排序以及将置信度高的图像保存到同一个集合中,

删除置信度比较低的图像间的匹配,得到能正确匹配的图像序列。

这样将置信度高于门限的所有匹配合并到一个集合中。

对所有图像进行相机参数粗略估计,然后求出旋转矩阵

使用光束平均法进一步精准的估计出旋转矩阵。

波形校正,水平或者垂直

拼接

融合,多频段融合,光照补偿。

另外在拼接的时候可以设置不同warper,这样会对拼接之后的图像生成不同效果,常见的效果包括

  1. 鱼眼相机
  2. 环视(平面曲翘)
  3. 默认

如下图所示:

58a4d5a7db549d007ae32dce1814073d.png
82c491ee349c5a0244688fb0128d8ebd.png

代码演示:

#include #include using namespace cv;using namespace std;int main(int argc, char** argv) { vector files; glob("D:/images/zsxq/1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值