单个kinect的人体重建,在Kinect SDK 1.8中,Kinect Fusion的效果已经很不错了。其缺点显而易见,一是扫描时间长,重建对象也需要长时间保持静态;二是需要人体或者kinect转动以实现全方位扫描,操作起来繁琐。而运用三个kinect来进行人体重建,只需要将三个kinect按照一定方位(比如两两相距120°角度)固定位置,人体即使不动也能实现对人体的全身扫描,相比之下时间花销短。

基于三个kinect的人体重建,首先要对三个kinect相机进行标定,得到相机内外参数。这样每个相机看到空间一点的坐标是一致的,三个相机坐标系得以统一。标定方法是两两标定,即取某一kinect相机(记为A)为参考,其他两个(记为B、C)分别与A标定,得到两组相机参数。这里,我是用的matlab自带的标定方法stereoCameraCalibrator,见链接matlab。例如,用两个处于同一水平线的kinect(如下图所示)进行标定测试,得到的参数是旋转矩阵R为:

0.9949 -0.0196   0.0991
0.0235 0.9990  -0.0384
-0.0983 0.0405    0.9943

平移向量T为:

-280.5068  2.5255   -25.4387

由标定结果可以看出,R矩阵接近于单位矩阵,表明两相机位置上是基本平行的。平移向量中-280.5068表示两相机x方向距离为28cm,而x方向的实际距离为26~27cm,这说明标定精度还是比较可靠的。

标定之后可以得到两组相机参数(旋转矩阵和平移向量),这在之后的点云拼接中会有用。

点云获取

通过sdk中内置的转换函数,将由kinect获取到的深度图像转换为点云数据,并保存。如下图所示为一个角度获取的点云。

点云处理

由于点云的数据量非常庞大,并且存在着冗余数据和噪声干扰,增加了计算复杂度。因此在点云拼接之前需要预先对点云进行处理。这其中的关键问题是提取点云数据中能反映曲面特征的点,精简数据并且去除噪声,提高重建的精度和效率。去噪方法是联合双边滤波算法

点云拼接 

三维点云拼接实质是将不同坐标系下得到的数据点云进行坐标变换,通过两片或多片数据点云中找出正确的排列关系,拼接成一片完整的数据点云。其中的关键问题就是利用旋转矩阵和平移矩阵,通过ICP算法对点云进行配准。

基于三个kinect的人体建模的更多相关文章

  1. 基于3D卷积神经网络的人体行为理解(论文笔记)(转)

    基于3D卷积神经网络的人体行为理解(论文笔记) zouxy09@qq.com http://blog.csdn.net/zouxy09 最近看Deep Learning的论文,看到这篇论文:3D Co ...

  2. 菜鸟学习Spring——SpringIoC容器基于三种配置的对比

    一.概述 对于实现Bean信息定义的目标,它提供了基于XML.基于注解及基于java类这三种选项.下面总结一下三种配置方式的差异. 二.Bean不同配置方式比较. 三.Bean不同配置方式的适用场合. ...

  3. Kinect测量人体身高的程序

    对着书上敲得,从中体会kinect骨骼识别与深度识别的原理.大体原理是懂了,但有些细节还没有完全弄明白. using System; using System.Collections.Generic; ...

  4. Unity之串口通信(基于三姿态传感器)

    原地址:http://www.cnblogs.com/alongu3d/archive/2013/05/02/3054962.html /******************************* ...

  5. Apache和Nignx基于三种方式搭建web站点并设置用户访问控制达到优化整个站点性能

    个人用户主页: 1:Vim  /etc/http/con.d/userdir: UserDir  disabled   //个人用户主页开启 UserDir   public_html    //指定 ...

  6. (三)Kinect姿势识别

    Kinect给我们内置了许多姿势如举手等,具体可参考枚举KinectGestures.Gestures,也可以通过Kinect姿势管理器,自定义姿势导入(坑较多,内置的基本够用了)也可以根据关节坐标自 ...

  7. 基于点云的3ds Max快速精细三维建模方法及系统的制作方法 插件开发

                                 基于点云的3ds Max快速精细三维建模方法及系统的制作方法[技术领域][0001]本发明涉及数字城市三维建模领域,尤其涉及一种基于点云的3d ...

  8. 3D建模与处理软件简介

    [前言]自半年前笔者发表博客“什么是计算机图形学”以来,时常有人来向笔者询问3D模型的构建方法与工具.笔者的研究方向是以3D技术为主,具体包括3D建模,3D处理及3D打印三个方面,在3D建模与处理方面 ...

  9. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

随机推荐

  1. WebAPI学习笔记

    WebAPI WebApi是添加到Asp.Net平台的一个新特性,可以快速的创建Web服务,并对客户端提供HTTP的API调用接口 WebApi是建立在MVC框架基础之上,但不属于MVC的一部分. 序 ...

  2. 动态权限<一>基本介绍

    android 6.0以上为了保护用户的隐私,和以往被人诟病的权限机制,确立了新的权限机制.从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授 ...

  3. Python 深浅复制

    (一)浅复制 复制列表最简单的方式是使用内置类型的构造方法: >>> l1 = [1, [2, 3], (4, 5)] >>> l2 = list(l1) > ...

  4. 雅虎工程师提供的CSS初始化示例代码

    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,b ...

  5. 作业要求20181113-4 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 03

    作业要求:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2385 版本控制:[https://git.coding.net/lglr201 ...

  6. FIsherman丶Team

    小组成员:郝恒杰,洪佳兴,张子祥 组长:郝恒杰 项目:Fisher Job(渔夫兼职) 简介: 我们的产品渔夫兼职是为了解决大学生兼职群体 的痛苦,他们需要一个好的渠道去找一个让自己满意的兼职,但是现 ...

  7. .net web 应用程序C#

    简介 开发环境:VS2015 ASP.NET:可以开发出几乎所有运行在Windows上的应用程序:.NET是一种架构,一种新的API:引入程序集代替DLL: ADO.NET:一组.NET组件提供对数据 ...

  8. 四则运算(Android)版

    实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...

  9. MOOK学习

    课程选择及其理由 课程:c++程序设计 教师:魏英 学校:西北工业大学 总共:48讲 选择理由:我其实之前找了好几个,但由于小白,思考了下(迷茫,感觉好像都不错),然后看了一下大家都选择了西北工业大学 ...

  10. JavaWeb应用的生命周期

    JavaWeb应用的生命周期是由Servlet容器来控制. 启动阶段 (1)读取web.xml配置文件数据 (2)为JavaWeb应用创建一个ServletContext对象 (3)对所有的Filte ...