opencv使用经纬法把鱼眼照片展开

5 篇文章 0 订阅

前两天工作需要买了一个佳能8-15mm的鱼眼镜头,8mm镜头其实成像就是180度的鱼眼镜头,成像效果如下图:

这里写图片描述

这里因为买的相机body是全画幅的,CCD长宽比是3:2的,所以调至镜头到8mm是不能占满整个CCD,以前的博客有写过这么把全景照片或者视频展示的资料和实现情况贴出来:鼠标控制全景照片观看

我就想如果前后拍两张或者拍三张那么就不需要用很多个镜头拼接,只需要2-3个鱼眼镜头拼接就行了,现在主流的全景摄像头也就是用两个大鱼眼镜头拼接(如下图gear360)

这里写图片描述

图像或者视频拼接opencv的stitching模块很多,直接用或者你是相关专业的自己cmake后改源码也可以,这个我也不重复啰嗦了,我刚好手头也有gear360拍摄了一下照片:

这里写图片描述

这是拼接以后的,没拼接前就是两个大圆圈
这里写图片描述

gear360的镜头是195度的,所以它是能够有重叠部分进行匹配和拼接的,但我个人觉得他的两个镜头的拼接过程中特征查找和匹配可能是一次成型,也就是选好一个拼接最好的距离范围后定好拼接参数,以后所以的都按照这个来,拼接的时候只做融合部分,不然实时效率不可能这么高,而且相片能固定大小。不扯这么远,那么现在这个canno的8mm成像照片肯定不能就这样进行拼接,肯定要展成矩形,也就是像把一个地球给展成世界地图一样,现在是半球(180°)也应该展成什么从北纬90°到南纬90°,本初子午线到东经180°嘛,所以查阅资料发现这样的方式成为经纬法,自行百度鱼眼照片经纬法展开之类的,专利论文都一大堆,我这就不重复了。

通过理解以后参考一些论文以及代码,这里参考了论文:经纬法传送门 以及在github上面把一个哥们成型的代码抠了我需要的那部分改动了一小点,github传送门 。把这个下下来后,把findCircleParameter和corrctor代码抠出来就行,这里面两个步骤也就是一个找我们这个照片的圆参数,后一个也就是用经纬法展开这个鱼眼照片了,里面记得params.distMap是选择LATITUDE_LONGTITUDE,这哥们是把这个作为他的毕业设计,所以详细的在他的paper目录下还有他的论文,大家也可以多参考参考。我因为有些应用附加在上面,所以代码很累赘,我把自己的来源都摆出来,希望大家还是多去看一下这些,不做拿来主义,我以前基本上也是把来来源都贴出来,说下自己怎么做的就点到为止了,我自己的代码也就不贴了,自己动手,体会更深,如有不明白,可以一起讨论。然后我再贴实现的效果。

有效圆形区域提取:

有效圆形区域提取

经纬展开图:

经纬展开图

OPENGL全景观看:

视角1:
这里写图片描述
视角2:
这里写图片描述

  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值