Kinect 开发小记:穿越艾泽拉斯,调戏红龙女王

简介:

怎么玩穿越?从楼梯上摔下?被车撞?被雷电劈?太危险鸟!最新穿越方式:一台 Kinect 即可。

去年上半年开发了一个Kinect项目,这是一个类似于虚拟演播室的项目,它使用 Kinect 实时捕捉图像,将人物抠出来,然后与图像、其它视频或其它程序里的内容实时合成。

过完年了,与对方约定的保密期也过去了,且撰文总结一下,谈谈开发这个项目过程中的体会。

先上图,去年夏天拍的。

wps_clip_image-31943

在这张图的电脑屏幕上有一个睿智的中年大叔,哦……这不是我,这是魔兽世界里大名鼎鼎的青铜龙王诺兹多姆。走在最前方那个让诺兹多姆仰望、让战五渣侧目、让绿龙女王害羞、让红龙女王情不自禁、把萨尔气得跳了大漩涡的英俊潇洒的人类大帅哥才是我。

好一副穿越的场景。这个场景怎么来的呢?

主角就是Kinect。具体步骤为:

(1)人物站在房间中做动作;

(2)Kinect 找到人物的景深图和彩图,配准后,将人物抠出来;

(3)对抠出来的图进行处理,让它变得稳定平滑;

(4)后台解码待合成的视频,将抠图与视频进行图像融合,然后一帧、一帧的在屏幕上显示;

(5)这个照片是手中拿的IPad实时拍下来的。

来段新录制的视频(由于是一边跑程序一边录制的,看起来比较卡。实际情况比这流畅,大概能到每秒10帧。我的显卡比较烂,换好显卡更流畅):

(萨尔你这么苦大仇深的看着我干啥?)

项目总结:

(1)Kinect 的景深图非常的不稳定。如何让它稳定的贴合人体的边缘是个非常困难的事情。虽然做了一定的工作,效果只能说是可接受,而并不完美。

(2)抠出来的图不能直接贴上去,而要使用图像融合技术让边缘过度尽量自然。常见的图像融合方法有拉普拉斯融合和泊松融合。这里借 XXX Tech 博客里的的一张图来说明,直接贴图、泊松融合和拉普拉斯融合的对比。

wps_clip_image-31946

为性能起见,我采用的是拉普拉斯融合。泊松融合太复杂了,直接放弃。后来又发现了更好的高性能算法,鉴于当时效果对方已经满意了,就没具体实现。

(3)性能!性能!

整个项目一大半时间在优化性能。因为要实时视频解码,要实时从Kinect处拿到彩色图片和景深图片,实时配准,实时稳定边缘,实时图像融合,以上操作最少要达到每秒十几帧,因此需要极度的压榨性能。压榨到什么程度呢?压榨到CPU和图像尺寸近似的情况下,我用C#写的拉普拉斯混合性能是别人论文中VC版本性能的几十倍(不是说C#比VC快,优化的是拉普拉斯混合算法本身),以至于只用C#单线程就实现了640×480大小的拉普拉斯混合。后来,对方要做1280×960分辨率的,C#歇菜了,直接上了CUDA。

Kinect感想:

(1)Kinect为我们提供了一个非常经济的获得景深图、骨骼图的设备;

(2)除了游戏外,使用这套设备我们可以做很多事情,比如,能自动跟踪垃圾的垃圾桶试衣服,以及本文讲的这个可用于虚拟演播室。

发挥想象力吧,想象你K歌的时候,Kinect把你融合进大屏幕中,就像你本人在舞台上一样,这种震撼和体验。

想象轻易的穿越进各种各样的视频之中,想象可以轻松的拍摄各种场景照片 ……

Kinect 为我们打开了第一步,也仅仅只是第一步,要用它做些事情,只会Kinect SDK的话走不远。

以Kinect试衣服为例子。

wps_clip_image-26506

从上面这图,可以看到它采用的只是单纯贴图技术,且贴的不紧。

为什么贴的不紧?

——没准确找到人物的轮廓。

为什么没有准确找到人物的轮廓?

——Kinect的景深图不稳定。

怎么能找到准确的轮廓?

——这就复杂了。我预感需要三个一起用上才行:Kinect自带的景深图,自然抠图技术和前景/背景建模。三个用上后估计能够得到准确的人物轮廓。

找到准确的轮廓后可以做什么?

——可以换背景,换场景。

这是锦上添花。

——那么,或许可以结合计算机动画和图像变形技术,做关节动画,这样你做动作,服装也会跟着你做动作,尤其是有袖子的服装。

只会Kinect,上面这些都做不了。要用Kinect开发现实应用,重点在Kinect之外。

本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2013/02/24/2923962.html如需转载请自行联系原作者


xiaotie 集异璧实验室(GEBLAB)

相关文章
|
Linux
linux 交叉编译libpng,libjpeg库
linux 交叉编译libpng,libjpeg库
368 1
|
12月前
|
传感器 监控 物联网
什么是 Salesforce IoT Cloud
Salesforce IoT Cloud 是一款由 Salesforce 提供的物联网平台,能够连接和管理各种设备数据,通过分析实时数据流,帮助企业及时响应客户的需求和问题,优化业务流程,提升客户体验。
|
Web App开发 定位技术 C#
|
机器学习/深度学习 安全 算法
【网络安全】隐私计算迎来千亿级风口,一文讲清它的技术理论基础。
【网络安全】隐私计算迎来千亿级风口,一文讲清它的技术理论基础。
216 0
|
Java C语言
STM32使用printf重定向到USART(串口)并打印数据到串口助手
STM32使用printf重定向到USART(串口)并打印数据到串口助手
948 1
STM32使用printf重定向到USART(串口)并打印数据到串口助手
|
XML Java 数据格式
深入了解 Spring Boot 核心特性、注解和 Bean 作用域
Spring Boot 是基于 Spring Framework 构建应用程序的框架,Spring Framework 是一个广泛使用的用于构建基于 Java 的企业应用程序的开源框架。Spring Boot 旨在使创建独立的、生产级别的 Spring 应用程序变得容易,您可以"只是运行"这些应用程序。
289 0
|
Java Linux iOS开发
查看服务器上的 Java 版本
查看服务器上的 Java 版本
1742 1
|
算法 Java
一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
顾名思义,快速幂就是快速算底数的n次幂。你可能疑问,求n次幂算n次叠乘不就行了?当n巨大无比时候,如果需要末尾有效尾数值等信息这个可能超出计算机运算范围。
1101 0
一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
|
SQL 存储 Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——二、产品架构及原理
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——二、产品架构及原理