Kinect - 如何计算 1 秒内手关节的加速度 [关闭]

Posted

技术标签:

【中文标题】Kinect - 如何计算 1 秒内手关节的加速度 [关闭]【英文标题】:Kinect - how to compute the acceleration of hand joints over 1 sec [closed] 【发布时间】:2012-05-02 08:40:49 【问题描述】:

我有一个使用 Microsoft Kinect 相机设备的应用程序。

在每一点,我都可以获得我手在 3 维空间 ( X - Y - Z ) 中的位置,并且我想计算我的手在每个轴上每秒的加速度。

基本上,我有一个起点的坐标,以及从该起点开始一秒钟后的坐标,我想计算我的手在这两个点之间的加速度。

StartPoint - (x1, y1, z1)

EndPoint after 1 sec from StartPoint ( 30 frames ) - (x2, y2, z2)

Acceleration between StartPoint and EndPoint = ?

我也可以获得我手随时间的所有其他坐标,但我想计算起点和终点之间的时间段内的加速度。

你能解释一下或者告诉我怎么做吗?

【问题讨论】:

这不是 Kinect 问题。这是一个基本的数学/物理问题。答案是你不能提供你的信息。加速度 (a) 是速度 (v) 随时间的变化 (a = dv/dt),因此您需要两次速度测量,因此 a=(v1-v0)/(t1-t0)。你没有两个速度测量值,你有两个位置测量值,这意味着你可以计算速度,v = dp/dt = (p1-p0)/(t1-t0)。 这就是为什么我提到我有一个 kinect。使用 kinect,我可以每秒获得关节的位置。此外,考虑到 1 秒有 30 帧这一事实,它会计算您的关节在每一帧的位置。所以我有很多位置,不仅仅是那两个。我提到那两个是因为我想计算它们之间的加速度。 我在物理 SX 网站上看到了您的帖子。请勿重复发布。 ugrad.math.ubc.ca/coursedoc/math101/notes/applications/… 【参考方案1】:

StartPoint 到 EndPoint 的距离是一个有 3 个值的向量,它可以给你速度(距离单位/秒)

velocity(EndPoint.X - StartPoint.X, EndPoint.Y - StartPoint.Y, EndPoint.Z - StartPoint.Z)

现在,如果您想要加速度,您必须对两个 velocity 值执行相同操作:起点的速度和一秒后的速度。

acceleration(EndVelocity.X - StartVelocity.X, EndVelocity.Y - StartVelocity.Y, EndVelocity.Z - StartVelocity.Z)

acceleration 表示每个轴(X、Y 和 Z)的加速度,用(距离单位/秒²)表示

【讨论】:

以上是关于Kinect - 如何计算 1 秒内手关节的加速度 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

怎么样利用kinect按帧记录关节/骨骼节点的三维坐标?

使用网络摄像头(不是 Kinect)确定骨骼关节

Kinect关节识别

如何在没有来自 Kinect Window SDK 的 Coordinatemapper 的情况下将 3D 骨骼关节映射回 2D 彩色图像

kinect 关节坐标值以相反的方式变化

Kinect关节数据