前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用鱼眼相机拍出全景视频

用鱼眼相机拍出全景视频

作者头像
天天P图攻城狮
发布2023-04-10 11:40:27
1.3K0
发布2023-04-10 11:40:27
举报
文章被收录于专栏:天天P图攻城狮天天P图攻城狮

我们要干什么

对于全景视频大家已经不陌生了,图1就是标准的全景视频截图。通过佩戴VR眼镜和利用VR视频播放器能够体验沉浸式感觉(上下左右前后观看视频),当然,观众看到的画面依赖于摄影机拍摄的点,不能随心移动,这是和VR视频的最大区别。

图1 VR视频截图

如何生成全景视频,大家可能很少关注过。本文将会介绍一种简单的生成全景视频的方法,基本能够满足爱好者的摄影和观影需求。

鱼眼相机快速介绍

人的双眼视角能够达到188度,而一般的手机拍照视角大概只能能达到90度左右,鱼眼相机一般在200度以上所以生成全景视频的成本最低,也最接近全景画面。本文采用了一个视角为236度的鱼眼相机来生成全景画面。

鱼眼相机外形相对于一般相机来说也比较奇特,镜头比较突出,有点像鱼的眼睛(估计这就是鱼眼镜头的来历吧,当然,拍的效果也像鱼看到的世界)。如图2所示,就是一种常见的鱼眼相机,淘宝上500块左右即可入手——这也是笔者用来制作全景视频的相机。

图2 一种鱼眼相机外观

鱼眼相机的投影模型有等距投影模型、等立体角投影模型、正交投影模型和体式投影模型等,感兴趣的可自行查找资料。本文使用的相机是等距投影模型。

图3 投影模型示意图(图片来源于网络)

等距投影公式为r = fθ,成像点的位置r与入射角成正比,比例系数为f(可理解为焦距相关参数)。2D图像上θ对应的等高线为半径等比例变化的同心圆。简单地讲,就是成像上的点距离圆心为r,当r相等时,则表示此类点入射角θ相等,且r-n和r+n的两点与r点入射角θ差值相同。

如图4所示。

图4 等距投影模型的鱼眼成像示意图

图4是视角为236度的鱼眼镜头成像效果,相同入射角的点在成像上会形成一个同心圆,如图中绿色同心圆上点所示。且图中180度的同心圆距离90度同心圆,和距离270度的同心圆相等。这就是等距投影模型的实际含义。

鱼眼相机图像如何转成全景图像

我们知道,视频是由图像帧序列编码而成,全景视频也不例外——由全景图像序列帧编码生成。标准的全景视频帧宽高比为2:1,这是因为VR通用播放器使用的是等距圆柱投影模型。这种投影方式在日常生活中也有应用:地球仪。

笔者依稀记得小学的社会实践课有手工制作地球仪的课程:准备一张地球仪贴纸和对应的球即可。如图5所示。

图5 地球仪贴纸(图片来源于网络)

有过经验的人都知道,图5贴纸能够完全包在一个半径为贴纸高的1/π的球面上,地理常识也告诉我们:该贴纸的高度代表地球仪上的纬度、宽度代表地球仪的经度。如果把这个贴纸外围用红线框起来,然后测量下就会发现:宽高比为2:1。其实观察下也知道:宽为该球圆周长,高为半个圆周长,二者比必然为2:1。这就是等距圆柱投影:垂直方向上采用等距投影,水平方向采用圆柱投影,即用一个圆柱形的圆筒把球面包围起来。

简言之:标准的全景视频帧之所以将宽高比设置为2:1,目的是能够将该视频“贴”在一个球面上。而这个球,就是大部分全景视频播放模型(下次有机会再仔细讨论这个问题吧)。

也就是说,如果要将图4中的鱼眼图像转成全景图像,就需要将其转为一副宽比2:1,且能贴合在一球面的图像。

为了使问题简单点,假设我们的鱼眼相机放在一个球内,图4即为该球内表面拍摄成的图像(假设球内表面就是一个全景屏幕)。那么该球内面和图4成像有对应关系(由于鱼眼视角只有236度,超过部分理解为内表面屏没有显示该画面),我们常喜欢用经纬度这个词来表示球表面位置,那么该关系可理解为:图4中绿线对应该球的纬度线,黄线为经度线,而成像边缘为南极点(像中已经成了一圈圆),成像中心点为北极点。

现在要做的事情就是根据点P(x,y)计算出该点在球中的经纬度。将图4简化成图6。已知P点坐标(m,n),m,n为相对于圆心O坐标(圆心O一般在成像图像中点),和360度点成像半径R(可以根据当前图像有效边缘求得,如当前图像宽高为720,视角为236,那么360度视角的R为:720/(236/360)=1098),求出对应的全景图像的点位置P'(m',n'),而点(m',n')的值即是点P'的经纬度值,即为图6中的(α,r)值。这就是大家常说的经纬拆分法。

图6 鱼眼成像点P示意图

现在问题就简单了:已知点P(m,n)和R,求α和r的值是多少?对的,初中数学题。

但这样算会带来一个问题:并不能保证全景图像和鱼眼图像是一一对应关系,且从图5可看出,全景图像的点会比鱼眼图像点要多(白色部位),这就会导致生成的全景图像存在很多"漏洞"。为了解决这个问题,我们可以将这个初中数学题反过来,已知全景图像点P'(x,y),宽高w、h,和鱼眼图像360度圆半径R以及鱼眼图像中心点O(cx,cy),求鱼眼图像中对应的点P(x',y')?

通过以上步骤即可算出全景图图像。如图7所示。

图7 由鱼眼图像转成的全景图

转换的全景图像在超过视角的部分是一片黑,美观度着实难看,这时候可以考虑在黑的区域加一个logo或者图片,比如我们鹅厂可爱的QBaby,如图8左图所示。贴到黑处的地方如图8右所示。

图8 底部贴图效果

实现很简单,鱼眼图像转换是以图像中心为北极点,那么要想添加的QBaby在超出视角范围内显示,那么就以QBaby图像中心为南极点,并且最大显示范围要高于236度。由于这是固定部分,故处理视频的时候只需要贴一次即可。用VR图片播放器播放,效果如图9所示。

图9 VR图片浏览器观看贴图效果

分析与总结

经过以上转的视频观看会发现有毛毛躁躁的感觉,这也是直接使用上文的公式转换带来的问题,使用一些常见的插值算法能够在一定程度上降低毛躁的效果。当然,如果原鱼眼视频本来分辨率就低,生成的全景视频,特别是使用播放器播放的视频都无法避免模糊的现象,毕竟播放器播放的只是全景视频的一部分。而这个播放器如何解析全景视频,已经如何控制播放范围,这个问题将在以后的文章讨论,当然,现在网上也有很多方法,有意者自行查询。

本文的鱼眼相机只能拍到视角为236度以内的场景,线上有许多360度全景视频,这种视频制作方式一般是多个相机,然后对点进行配准和对齐在进行投影或者仿射变换等操作,单转成全景视频的原理和本文几乎一致。

将鱼眼相机拍摄视频转成全景视频,关键点就是对等距投影模型的理解以及对等距圆柱模型的理解。本文为了叙述直白,只是简单的言明了现象,感兴趣的同学请查相关文献以便进一步理解。

当然,这个只是一种方法,总有一些瑕疵之处,欢迎大家来指教并一起讨论。

作者简介:Aman, 天天P图 AND 工程师


文章后记: 天天P图是由腾讯公司开发的业内领先的图像处理,相机美拍的APP。欢迎扫码或搜索关注我们的微信公众号:“天天P图攻城狮”,那上面将陆续公开分享我们的技术实践,期待一起交流学习!

加入我们 天天P图技术团队长期招聘: (1) 深度学习(图像处理)研发工程师(上海) 工作职责

  • 开展图像/视频的深度学习相关领域研究和开发工作;
  • 负责图像/视频深度学习算法方案的设计与实现;
  • 支持社交平台部产品前沿深度学习相关研究。

工作要求

  • 计算机等相关专业硕士及以上学历,计算机视觉等方向优先;
  • 掌握主流计算机视觉和机器学习/深度学习等相关知识,有相关的研究经历或开发经验;
  • 具有较强的编程能力,熟悉C/C++、python;
  • 在人脸识别,背景分割,体态跟踪等技术方向上有研究经历者优先,熟悉主流和前沿的技术方案优先;
  • 宽泛的技术视野,创造性思维,富有想象力;
  • 思维活跃,能快速学习新知识,对技术研发富有激情。

(2) AND / iOS 开发工程师  (3) 图像处理算法工程师 期待对我们感兴趣或者有推荐的技术牛人加入我们(base 上海)!联系方式:ttpic_dev@qq.com

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 天天P图攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们要干什么
  • 鱼眼相机快速介绍
  • 鱼眼相机图像如何转成全景图像
  • 分析与总结
  • 作者简介:Aman, 天天P图 AND 工程师
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档