编者按:GoPro等第一人称摄像设备已经几乎成为了极限运动者的标配,但拍摄过程中的抖动常会让画面非常糟糕。微软Hyperlapse技术实现了将第一人称录像转化成稳定而流畅的视频。该成果的论文已发表在SIGGRAPH
2014大会。

微软研究院研究员Johannes
Kopf头戴GoPro在攀登舒克桑山(Mount
Shuksan)

可以头戴的GoProiON这些第一人称摄像设备如今几乎成为了极限运动者的标配,无论是远足、登山还是漂流,一段从第一人称视角出发记录下主人公全程见闻的录像都会是日后弥足珍贵的回忆。但是,由于行进过程无可避免中的跑动和攀爬,有时剧烈抖动的画面就会令观看者顿时兴致全无。更糟糕的是当你想把全过程的视频快进,以免视频太过冗长让人失去兴趣时,抖动却会被进一步放大。

有类似苦恼的,还有微软研究院研究员Johannes
Kopf
。Johannes是一名登山爱好者,一直想和朋友们分享自己从大本营出发到登顶的全过程。但当他试图将用GoPro拍摄下的录像快进浓缩成较短的视频时,他意识到自己想要和朋友们分享的愿望要落空了,因为市面上没有一种修复抖动的软件能让抖动的画面稳定下来。传统的抖动修复技术是将画面边缘的像素删除,来使得前后画面连贯起来。但面对第一人称的头戴式录像,晃动使得画面发生跳跃,要得到可以观看的视频就需要全新的解决思路。

于是Johannes与微软交互视觉媒体组(Interactive
Visual Media
Group
)合作,开始了名为“Hyperlapse”的全新技术的研发,它能将抖动的第一人称录像转化成具有延时摄影效果、且稳定而流畅的视频。效果请见演示视频:

Johannes和同事们采取的方法是,首先根据原始视频,通过算法还原相机在拍摄过程中的运动轨迹,以及相机相对于每一帧画面中物体的距离和角度。接着,优化并模拟出一条相比原来更顺滑的相机运动轨迹,并从原始视频中抓取、拼接像素来重建在这条新轨迹下的场景,从而输出一段延时摄影效果的稳定、流畅的视频。

相机运动路径的还原与重构

日前,该项成果的论文已经被在温哥华召开的SIGGRAPH
2014
接受。SIGGRAPH是由ACM
SIGGRAPH(美国计算机协会计算机图形专业组)主办的计算机图形与交互技术年度顶级会议。下面的视频更详细地介绍了背后的技术原理:

Johannes表示这绝不是这项技术的终点。他和同事们已经设计了一系列新算法来让加快渲染新视频的过程和减轻对计算机运算能力的负荷,最终他们计划将这项技术产品化,将其以Windows
应用的形式呈现给普通用户。

——————————————————————————————————————————————

相关阅读:

Hyperlapse: Technology that
can dramatically smooth motion in first-person
videos

微软研究院在2014年SIGGRAPH的成果展示

2014年SIGGRAPH官方网站

欢迎关注:

微软亚洲研究院官方网站:http://www.msra.cn/zh-cn/default.aspx

微软亚洲研究院人人网主页:http://page.renren.com/600674137

微软亚洲研究院微博:http://t.sina.com.cn/msra

微软Hyperlapse技术:让第一人称摄像稳定而流畅的更多相关文章

  1. Microsoft Hyperlapse——让第一人称视频更快更流畅

    Hyperlapse--让第一人称视频更快更流畅" title="Microsoft Hyperlapse--让第一人称视频更快更流畅"> 职业摄影师Nick Di ...

  2. 微软HoloLens技术解谜

    HoloLens 是什么? HoloLens 是微软发布的可穿戴式增强现实计算设备,它拥有这么几个关键要素: 它是增强现实产品,即 Augmented Reality(AR),AR 技术将计算机生成的 ...

  3. 微软开放技术(中国)携 CKAN 和 OData 技术引入基于 Azure 的开放数据平台

    今天,微软开放技术(中国)通过微软公有云Azure引入一个全新的开放数据平台,该平台基于开源数据门户解决方案 CKAN,以及由微软开放技术(中国)特别针对中国市场优化的ODATA插件来增强其国际化和本 ...

  4. 微软的技术态度 -- 从其对于CRT的设计考虑说起

    很多人从C语言学习过来的人都知道,在编写程序时用到的像printf这样的函数,是作为该语言标准库函数提供的,这也是C语言标准中规定的内容.因此,操作系统必须对其保持一定程度上的透明,也就是说,作为一个 ...

  5. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

  6. 【转】265行JavaScript代码的第一人称3D H5游戏Demo

    译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...

  7. 微软RPC技术学习小结

    RPC,即Remote Procedure Call,远程过程调用,是进程间通信(IPC, Inter Process Communication)技术的一种.由于这项技术在自己所在项目(Window ...

  8. 微软的技术态度 -- 从其对于CRT的设计考虑说起(Thought on the CRT - What Microsoft Prefers)

    很多人从C语言学习过来的人都知道,在编写程序时用到的像printf这样的函数,是作为该语言标准库函数提供的,这也是C语言标准中规定的内容.因此,操作系统必须对其保持一定程度上的透明,也就是说,作为一个 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://g ...

随机推荐

  1. c语言:函数的递归调用

    c语言可以将代码模块化,这是其很重要的一个特性. 说道代码模块化,我们很自然的就会联想到函数.而函数中,比较难的一个知识点就是函数的递归调用. 值得注意的是,函数的递归调用在现实工作并不是很常用,但是 ...

  2. SeetaFaceEngine系列2:Face Alignment编译和使用

    前面一篇写了编译人脸检测部分,现在就介绍下人脸配准部分,SeetaFace的Face Alignment通过人脸的五个关键点来配准人脸,也就是双眼.鼻尖.两个嘴角. 这部分的编译也和上一篇一样,步骤如 ...

  3. PHP学习之-文件上传

    一.PHP文件上传 HTML部分 <form action="file_big.php" method="post" enctype="mult ...

  4. Java线程——synachronized关键字的作用(一)

    在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...

  5. 61)普通类的.h和.cpp分离

    //标头.h文件 //这个是在C中这样写 #ifndef HH_01//开始写小写 hh_01 然后选中这个 crtl+shift+u 就变成大写了 #define HH_01 #endif //在C ...

  6. 吴裕雄--天生自然ShellX学习笔记:Shell echo命令

    Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出.命令格式: echo string 您可以使用echo实现更复杂的输出格式控制. 1.显示普通字符串: echo ...

  7. drf_jwt手动签发与校验-drf小组件:过滤-筛选-排序-分页

    签发token 源码的入口:完成token签发的view类里面封装的方法. 源码中在请求token的时候只有post请求方法,主要分析一下源码中的post方法的实现. settings源码: 总结: ...

  8. session和token区别

    分布式系统认证/授权目前分布式系统存在两种常用的认证授权方式:分布式session和token 1.session的概念 session中存放登录用户的个人信息,创建session时,随机生成一个se ...

  9. django的认证演变过程分析

    认证规则图: django不分离 drf分类 认证规则演变图 数据库session认证:低效 缓存认证:高效 jwt认证:高效 缓存认证:不易并发 jwt认证:易并发

  10. mysql引擎与物理文件

    SELECT VERSION();show GLOBAL VARIABLES like '%PARTITION%';-- 查看分区情况 show GLOBAL VARIABLES like '%dat ...