第一次认识李诞是在吐槽大会,第二次看到李诞是在奇葩说,第三次是在腾讯视频新推出的节目《奇遇人生》中重新认识他。他在微博中发的开心点,人间不值得总会被奇葩说的辩手拿出来调侃,但或许这就是李诞的人生态度向往自由,活的潇洒。
李诞喜欢搞笑,喜欢看书,同时也喜欢喝酒。似乎酒在他的生活中必不可少。
奇遇人生里说到买房这个事,李小牧说:“租房住才是最合理的,你经常可以换地方,你买那个房子一辈子也就住在那儿,多不好玩。”
是呀,我们年轻人现在结婚必备房子车子票子,生活的重担已经把我们压得喘不过气来了,对于大多数年轻人来说,这句话应该都会有共鸣。
在我们观看视频的同时,细心的观众可能会发现图像并没有进行过多的处理,画面的构图和清晰度也保持着真实感。那么是怎样拍出这样的画面感呢?小编在这里介绍一种等距投影模型的鱼眼相机如何转换成全景视频的方法。
对于全景视频大家已经不陌生了,图1就是标准的全景视频截图。通过佩戴VR眼镜和利用VR视频播放器能够体验沉浸式感觉(上下左右前后观看视频),当然,观众看到的画面依赖于摄影机拍摄的点,不能随心移动,这是和VR视频的最大区别。
如何生成全景视频,大家可能很少关注过。本文将会介绍一种简单的生成全景视频的方法,基本能够满足爱好者的摄影和观影需求。
人的双眼视角能够达到188度,而一般的手机拍照视角大概只能能达到90度左右,鱼眼相机一般在200度以上所以生成全景视频的成本最低,也最接近全景画面。本文采用了一个视角为236度的鱼眼相机来生成全景画面。
鱼眼相机外形相对于一般相机来说也比较奇特,镜头比较突出,有点像鱼的眼睛(估计这就是鱼眼镜头的来历吧,当然,拍的效果也像鱼看到的世界)。如图2所示,就是一种常见的鱼眼相机,某宝上500块左右即可入手——这也是笔者用来制作全景视频的相机。
鱼眼相机的投影模型有等距投影模型、等立体角投影模型、正交投影模型和体式投影模型等,感兴趣的可自行查找资料。本文使用的相机是等距投影模型。
等距投影公式为r = fθ,成像点的位置r与入射角成正比,比例系数为f(可理解为焦距相关参数)。2D图像上θ对应的等高线为半径等比例变化的同心圆。简单地讲,就是成像上的点距离圆心为r,当r相等时,则表示此类点入射角θ相等,且r-n和r n的两点与r点入射角θ差值相同。
图4是视角为236度的鱼眼镜头成像效果,相同入射角的点在成像上会形成一个同心圆,如图中绿色同心圆上点所示。且图中180度的同心圆距离90度同心圆,和距离270度的同心圆相等。这就是等距投影模型的实际含义。
我们知道,视频是由图像帧序列编码而成,全景视频也不例外——由全景图像序列帧编码生成。标准的全景视频帧宽高比为2:1,这是因为VR通用播放器使用的是等距圆柱投影模型。
这种投影方式在日常生活中也有应用:地球仪。小编依稀记得小学的社会实践课有手工制作地球仪的课程:准备一张地球仪贴纸和对应的球即可。
有过经验的人都知道,图5贴纸能够完全包在一个半径为贴纸高的1/π的球面上,地理常识也告诉我们:该贴纸的高度代表地球仪上的纬度、宽度代表地球仪的经度。
如果把这个贴纸外围用红线框起来,然后测量下就会发现:宽高比为2:1。其实观察下也知道:宽为该球圆周长,高为半个圆周长,二者比必然为2:1。
这就是等距圆柱投影:垂直方向上采用等距投影,水平方向采用圆柱投影,即用一个圆柱形的圆筒把球面包围起来。
简言之:标准的全景视频帧之所以将宽高比设置为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)值。这就是大家常说的经纬拆分法。
现在问题就简单了:已知点P(m,n)和R,求α和r的值是多少?对的,初中数学题。但这样算会带来一个问题:并不能保证全景图像和鱼眼图像是一一对应关系,且从图5可看出,全景图像的点会比鱼眼图像点要多(白色部位),这就会导致生成的全景图像存在很多"漏洞"。为了解决这个问题,我们可以将这个初中数学题反过来,已知全景图像点P'(x,y),宽高w、h,和鱼眼图像360度圆半径R以及鱼眼图像中心点O(cx,cy),求鱼眼图像中对应的点P(x',y')。
通过以上步骤即可算出全景图图像。
经过以上转的视频观看会发现有毛毛躁躁的感觉,这也是直接使用上文的公式转换带来的问题,使用一些常见的插值算法能够在一定程度上降低毛躁的效果。当然,如果原鱼眼视频本来分辨率就低,生成的全景视频,特别是使用播放器播放的视频都无法避免模糊的现象,毕竟播放器播放的只是全景视频的一部分。