Kinect开启骨骼平滑算法的方法
来源:互联网 发布:linux 16进制转10进制 编辑:程序博客网 时间:2024/05/16 16:05
这几天做Kinect开发,需要检测手在三维空间中的位置,检测时不免会出现抖动的情况,这时候可以调用SDK自带的平滑算法。
调用方法:(以下代码使用的是最新SDK 1.5正式版)
声明传感器变量
KinectSensor sensor;
然后窗口的Load事件中我们都要写:
this.sensor.SkeletonStream.Enable();
此时的函数不接受任何参量,也就是系统不会进行平滑,开启平滑算法的方法就是向Enable()方法中传参
声明TransformSmoothParameters变量
TransformSmoothParameterssmoothParameters;
为平滑算法的参数赋值:
smoothParameters.Smoothing = 0.5f; // 设置处理骨骼数据帧时的平滑量,接受一个0-1的浮点值,值越大,平滑的越多。0表示不进行平滑。
//smoothParameters.Correction; // 接受一个从0-1的浮点型,值越小,修正越多
//smoothParameters.JitterRadius; // 抖动半径,单位为m,如果关节点“抖动”超过了设置的这个半径,将会被纠正到这个半径之内
//smoothParameters.MaxDeviationRadius; // 用来和抖动半径一起来设置抖动半径的最大边界,任何超过这一半径的点都不会认为是抖动产生的,而被认定为是一个新的点。该属性为浮点型,单位为米
//smoothParameters.Prediction; // 返回用来进行平滑需要的骨骼帧的数目
this.sensor.SkeletonStream.Enable(smoothParameters); // 开启骨骼流,利用平滑
阈值的选取没有什么方法,大家需要根据具体情况调整……这是最囧的一点,我也曾经想过一些平滑算法,但是水平不够,效果也不好
平滑的原理就是低通滤波器
注意:
一定要提前定义一个TransformSmoothParameters变量,然后用这个变量作为Enable()方法的参数;
走过的弯路:
由于没有定义一个临时的变量TransformSmoothParameters smoothParameters作为Enable的参数,而是直接对this.sensor.SkeletonStream.SmoothParameters赋值,就会提示错误:
无法修改××的返回值,因为它不是变量
- Kinect开启骨骼平滑算法的方法
- Kinect 骨骼追踪数据的处理方法
- Kinect API 自带骨骼数据平滑处理
- Kinect V2开发(6)骨骼数据平滑处理
- Kinect驱动Ogre的骨骼动画
- Kinect骨骼关节数据的获取
- Kinect 骨骼追踪数据处理
- Kinect开发 骨骼示意图
- kinect骨骼追踪
- kinect获取的20个骨骼点坐标
- Kinect提取骨骼数据---新版本
- KINECT骨骼关节点对照表
- MFC kinect 实现骨骼识别
- 骨骼算法
- 等值线平滑算法的优化
- Kinect防抖平滑参数设置
- Kinect开发学习笔记之(七)骨骼数据的提取
- Kinect开发学习笔记之(七)骨骼数据的提取(转)
- 浅析Hadoop文件格式
- C# Process.Start()方法详解
- 加入滚动条的html代码
- Json介绍
- 解析抓取时间为汉字格式的(汉字的时间格式转化为数字格式)
- Kinect开启骨骼平滑算法的方法
- QT 远程调试
- JavaScript动态创建Html内容
- 发送短信
- 孙鑫《VC++深入详解》完整版PDF 下载
- 遍历Hashtable中的key和value的几种方法
- 【hdu】 Intersection 线段相交 cross+quick
- c语言集合
- jsp中折叠式标签的代码实现