运动捕捉数据的描述ASF/AMC

运动捕捉数据有多种格式:ASF/AMC,BVH,C3D等,这三个是比较常用的,一般的matlab实验用的是ASF/AMC,其次就是BVH。

ASF/AMC文件格式是Acclaim Games公司设计开发的,全称是Acclaim Skeleton File/Acclaim Motion Capture data,其中ASF是骨架文件信息,AMC是运动数据信息。分开存储的好处就是一个ASF骨架可以运用到不同的AMC中,而不必要对每个AMC运动数据都写入一个ASF骨架信息,减少了数据冗余。

原始的运动数据文件可以去卡内基梅隆大学的网站去找:http://mocap.cs.cmu.edu/

关于ASF和AMC文件的读取,很多论文中都提到了使用Neil Lawrence的MOCAP工具包,github地址为:https://github.com/lawrennd/mocap

鉴于以上github上基本都会出现getline这个函数的问题,我当时是花费了一天时间去折腾这个函数,可能在老版本中getline可以获取文件的每一行,但是新版本的matlab的getline函数作用变了,好像是获取在当前窗口画线的点坐标,具体用法没看,反正就是函数用途变了,然后找到新版的matlab应该是用fgetl去获取文本的每一行,然后修改后的版本可以在我的csdn上传文件中下载,地址:http://download.csdn.net/detail/zb1165048017/9687818

ASF文件:

ASF文件是骨架信息。定义了运动的初始姿态。

#开头的部分是ASF文件的声明部分。

:version         是运动捕获设备的类型

:name            是运动捕获设备的名称

:units              是相关的度量单位的信息,比如"units_length"的值为0.45,表示数据都乘以0.45后存储,且数据的存储单位为英寸

:documentation             是对文档的描述信息

:root                是人体骨架模型根节点的信息,作为根节点,它没有长度和旋转信息。其中,“order”的TX,TY,TZ,RX,RY,RZ是顺序为x轴,y轴,z轴方向上的平移和旋转信 息;“axis”根节点对应的三个旋转轴;“position”是根节点在世界坐标系下的初始位置;“orientation”代表根节点在世界坐标系下的初始位置方向,也就是整体骨架模型的朝向。

:bonedata       包括了人体骨架模型的其它30个节点的信息,每个节点的信息都从“begin”开始到“end”结束。其中,“id”是关节的编号,“那么”是关节的名称。“direction”是该关节在世界坐标系下x轴,y轴,z轴的方向单位向量。“length”是该关节与其父关节之间的骨骼长度。“axis”该节点的局部坐标系相对于世界坐标系的x轴,y轴,z轴的旋转量。“dof”(degree of freedom)是x轴,y轴,z轴的旋转自由度。“limits”是x轴,y轴,z轴的自由度变化范围。

:hierarchy  是人体骨架模型的树状层次关系,每一行的第一个是父节点,后面跟着其子节点。

可以看出ASF文件是给出了AMC运动数据格式的模板,是重用AMC文件的基础。

AMC文件:

AMC是运动数据文件,具体数据格式严格遵循ASF文件中的定义。文件开始以“#”开头的部分,是ACM文件的声明部分,主要声明所用骨骼文件,然后以帧序号为开头的各帧运动数据。在每一帧的运动数据中,“root”的数据包含当前帧根节点的平移和旋转信息,顺序与ASF文件中“dof”的定义保持一致。值的注意的是,在AMC文件中,所有的旋转信息均是以欧拉角的形式保存的。

AMC文件中各关节空间旋转信息是通过欧拉角表示的,欧拉角是三维空间中表示旋转的方法之一,由于欧拉角存在万向锁问题,由此在表征三维空间旋转时,我们往往采用四元数。
欧拉角四元数相关知识,请参考前面的:http://blog.csdn.net/zb1165048017/article/details/48579877

【强调】根节点的6个自由度分别代表xyz三维空间中的位置,然后才是xyz朝向
%test测试路径和朝向的关系
clear
clc
%绕圈走路
skel=acclaimReadSkel('./data/13.asf');
[channels1,skel]=acclaimLoadChannels('./data/training data/run/111_23.amc',skel);%直线走路
[channels2,skel]=acclaimLoadChannels('./data/training data/run/09_01.amc',skel);
x=channels1(:,1);
z=channels1(:,3);
plot(x,z)




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应用深度学习(台大陈蕴侬李宏毅) Part1

History of Deep Learning Big Data & GPU 端到端 Universality Theorem Core Factors for Applied Deep Learning 参考文献 http://v.qq.com/vplus/578e2d6f5e1fadc1/foldervideos/8n1000201qzzkx5 Deep Learning ◦Goodfellow, Bengio, and Courville, “Deep Learning…

世界坐标

世界坐标是最直观反映人体在世界坐标系下运动位置的变化信息,对分析运动行为有重要的作用。下面介绍如何根据ASF/AMC文件计算人体各个关节的世界坐标。 根据前面讲的ASF/AMC文件的格式,可以知道人体运动可以看做是通过根节点root的平移以及其他关节绕其父…

12bit灰度图像映射到8bit显示及python 实现

图像显示和打印面临的一个问题是:图像的亮度和对比度能否充分突出关键部分。这里所指的“关键部分”在 CT 里的例子有软组织、骨头、脑组织、肺、腹部等等。 技术问题 1、显示器往往只有 8-bit, 而数据有 12- 至 16-bits。 2、如果将数据的 min 和 max…

人工神经网络——径向基函数(RBF)神经网络

此博客排版不好,重新用Markdown写了一篇,同时附上了代码,戳这里 本文摘自:《模式识别与智能计算——matlab技术实现第三版》与《matlab神经网络43个案例分析》 【注】蓝色字体为自己的理解部分 径向基函数神经网络的优点&#xf…

基于RBF简单的matlab手写识别

GetFeature.m %将图像分为25块,计算每一块的空白部分所占比例 function dataGetFeature(I) [row,col]find(I0); %返回数字的上下左右的边界 II(min(row):max(row),min(col):max(col)); %截取手写数字图像,使其紧包含数字边界&…

李宏毅机器学习课程-Transfer Learning

深度学习 -> 强化学习 ->迁移学习(杨强教授报告) 李宏毅机器学习课程-Transfer Learning 迁移学习-吴恩达 freeze 待处理的 理解深层神经网络中的迁移学习及TensorFlow实现 Transfer Learning模式 Similar domain, different task…

matlab实现RBF的相关函数

摘自《matlab神经网络43个案例分析》 (1)newrb() 该函数可以用来设计一个近似径向基网络(approximate RBF)。调用格式为: [net,tr]newrb(P,T,GOAL,SPREAD,MN,DF) 其中P为Q组输入向量组成的R*Q位矩阵,T为Q组目标分类向量组成的S*Q维矩阵。GOAL为均方误…

李宏毅机器学习课程-Structured Learning

Simple structured learning framework for python pystruct-github Slides for explaining structured prediction and PyStruct -github 一、Structured Learning-Unifed Framework 之前的input and output 都是vectors Training阶段就是找一个F来评估&#xff…

MATLAB GPU编程基础

原文地址:http://blog.sina.com.cn/s/blog_863f5cf90102uyrh.html 从Matlab2013版本开始,matlab将可以直接调用gpu进行并行计算,而不再需要安装GPUmat库。这一改动的好处是原有的matlab内置函数都可以直接运用,只要数据格式是gpuA…

matlab之norm函数

简单点说就是用来计算范数的一个函数。 假设A是一个矩阵,那么norm(A)或者norm(A,2)计算的就是A的2范数;同理norm(A,1)计算的就是1范数了. 2范数:计算步骤是先计算A*A‘(这里A’代表转置,也就是原矩阵*(原…

word_cloud

word_cloud word_cloud wordcloud_server

matlab之reshape函数

简单来说,reshape(A,m,n)就是用来把原矩阵的元素,按照列读取排成一行,然后按照指定的m*n矩阵再按列放好。比如原矩阵为 A 1 2 3 4 5 6 7 8 9 10 11 12 我们先给他按列拍成一排(变相说…

matlab之unwrap函数

网上的说法: 要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一、二象限中的角度为0~pi,三四象限的角度为0~-pi。 若一个角度从0变到2pi,但实际得到的结果是…

画图网页http://weavesilk.com/

画图网页 http://weavesilk.com/

matlab之bsxfun函数

<span style"font-size:18px;color:#ff0000;">简单的调用方法&#xff1a;</span> bsxfun(plus&#xff0c;A&#xff0c;B)&#xff0c;其中plus代表的是加法&#xff0c;还可以换成减法minus&#xff0c;乘法times等&#xff0c;可以参考matlab里面的帮…

Python xrange与range的区别

xrange 与 range xrange 用法与 range 完全相同&#xff0c;所不同的是生成的不是一个list对象&#xff0c;而是一个生成器。 要生成很大的数字序列的时候&#xff0c;用xrange会比range性能优很多&#xff0c;因为不需要一上来就开辟一块很大的内存空间。 xrange 和 range 这…

受限玻尔兹曼机准备知识——蒙特卡洛方法

先了解几个基本概率知识&#xff0c;不急着看蒙特卡洛方法的定义&#xff0c;具体的MC方法参考网上各种资料。 两个比较好的学习MC方法的文章&#xff1a;蒙特卡洛方法入门 (结合了实例)和 蒙特卡洛方法 (推荐&#xff0c;非常详细) 更新日志&#xff1a;2016-11-19&#xff…

Google Colab 免费GPU服务器使用教程

Google Colab免费使用GPU服务器教程 Google Colab Free GPU Tutorial Colaboratory 相关查询命令!/opt/bin/nvidia-smi!pip install !apt-get install !pip install -q keras import keras !apt-get install libnvrtc8.0 !pip install mxnet-cu80 import mxnet as mx import te…

受限玻尔兹曼机准备知识——MCMC方法和Gibbs采样

先点明几个名词 MCMC方法&#xff1a;马尔可夫链-蒙特卡洛方法 (千万别叫成梅特罗波利斯蒙特卡罗方法了) Metropolis-Hastings采样&#xff1a;梅特罗波利斯-哈斯廷斯采样 Gibbs采样&#xff1a;吉布斯采样 还是介绍一下学习MCMC和Gibbs采样比较好的一个资料&#xff1a;随机采…

受限玻尔兹曼机——简单证明

花了很久看了一下玻尔兹曼机&#xff0c;感觉水有点深&#xff0c;总之一步一步来嘛~~~~ 先说一下一个非常好的参考资料&#xff1a; 受限玻尔兹曼机&#xff08;RBM&#xff09;学习笔记 &#xff0c;有兴趣的可以再看看这篇文章的参考文献或者博客&#xff0c;写的也非常好&…