Hyperlapse快速视频背后的技术细节

最近,Instagram又推出了一杀手级应用——Hyperlapse。通过这个软件,需要上万元才能拍出的延时视频,现在只需要一部iPhone就可以完成了。他们的工程师发布了一篇博文,介绍了这个软件在稳定视频方面所用的算法。

Hyperlapse

延时视频可以让你在15秒内欣赏完日落,可以让你观看大雾漫过山头的景象,就像河水从石头上流过一样。但是拍摄的时候需要移动相机,拍摄起来也非常耗时,在以前,拍这种东西需要昂贵的专业设备,和后期复杂的软件进行处理。但是现在,Hyperlapse简化了这个过程。这个app只有一个简单的帧率按钮,用以调整视频的速度。每个人都可以轻松的进行延时视频的创作了。以下是技术细节的简单介绍。

Stabilization for Hyperlapse from Instagram from Instagram on Vimeo.

相机的稳定

画面的稳定是至关重要的,但是又不能要求拍摄者是专业的摄影师,或者让他们戴上专业的辅助设备。所以就要处理相机防抖的问题。这里的算法是用了手机内置的陀螺仪,结合视频中的帧,来计算出抖动的方向。

tumblr_inline_nayzheqFiv1qm4rc3

得到抖动的方向之后,再利用稳定算法对每一帧进行处理,得到平缓的视频。

tumblr_inline_nayzhpOB4E1qm4rc3

最后得到的视频,有一部分是不可视的,因为边缘地区并不是每一帧都有的。比如,在某一时刻手往左抖了,那么可视画面就应该向左移。

1

软件的稳定

原来的视频是30fps进行播放的,对视频加速之后,依然要30fps播放。如果是选择的 6X 速度,那么软件就会每6帧保留一帧,其余的进行删除,这样,就达到了6倍的速度。最后的稳定处理只针对保留的帧进行,不是每一帧都记录的区域,就被排出在可视区域之外了。这样就保证了即使是抖得很厉害的视频,也能处理地很平缓。

自适应可视区域大小

前文说到,要稳定视频就要丢弃一些边缘区域。所以就要在分辨率和稳定方面做出取舍。Hyperlapse也是可以自动处理的。

2

视频中,左边删掉的部分较小,因为在拍摄的时候是站着的,而在右边走动中拍摄的时候,删掉的部分就比较多。即,视频抖动的越厉害,最后的可视区域越小。即使是12倍的加速,在经过处理之后,也能得到平缓的视频。

最后的工作

(开发软件时)前90%的代码要花费你90%的开发时间,剩余的10%的代码要花费你余下的90%的开发时间。 The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

——Tom Cargill,贝尔实验室

 为了能让用户实时预览加速的效果,攻城狮们做了大量的工作。就在你拖动加速滑块的时候,Hyperlapse在背后所做的工作有:

  1. 从原始视频中获取新的帧(更新速度)。
  2. 从得到的帧中重新计算稳定视频的方向,对帧进行处理。
  3. 前台将之前得到的帧和方向快进,让用户先预览其效果。
  4. 一旦后台稳定处理结束,就将结果替换到前台,用户就能看到真正的效果了。

最后的成果就是:你通过你个简单的按钮就可以对视频进行延时处理。而且得到的视频依然是平稳且精彩的!

后记:这个软件再一次让我们体验到软件对我们的生活带来的巨大便利,每一个人创作的机会越来越多,软件给我们的生活带来了无限多的可能性。我越来越相信,代码改变生活。上文所涉及的技术是根据原文及自己的理解写的,可能会有理解不正确的部分,欢迎指正。文中视频指向Vimeo,需要翻墙观看。

Hyperlapse快速视频背后的技术细节”已经有2条评论

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注