0

我有一个来自学校的线性回归方程,它给出一个介于 1 和 -1 之间的值,表示一组数据点是否足够接近线性函数

在此处输入图像描述

和这里给出的方程

http://people.hofstra.edu/stefan_waner/realworld/calctopic1/regression.html

在一条线的最佳拟合下。我想使用这些基于 3 空间 (x,y,z) 中的点进行简单的手势检测 - 向前、向后、向左、向右、向上、向下。首先我会看看它们是否落在 3 维中的 2 条线上,然后我会看看这条线的斜率是接近零还是无穷大。

这对于功能性手势识别是否足够快?如果没有,有人可以提出替代算法吗?

4

1 回答 1

1

如果我正确理解了您的问题,那么(1)您在此处描述的计算可能足够快,(2)它实际上可能无法执行您想要的操作,以及(3)实际上会很慢的东西实施将在别处。

所以,我认为你提议这样做。(1) 连续数次在三维空间中识别……某物……(也许是用户的手)的位置。(2) 对于(比如说){x,y} 和 {x,z} 中的每一个,查看每个点的这两个坐标,计算相关系数(这是您的公式所描述的)并查看它是否接近 +- 1. (3) 如果两个相关系数都接近 +-1,则这些点大致位于一条直线上;计算那条线的梯度(使用类似于相关系数的公式)。(4) 如果梯度都非常接近 0 或 +- 无穷大,那么您的线大约平行于一个轴,这就是您要识别的情况。

1:速度够快吗?您可能会以每秒 50 帧左右的速度进行采样,并且您的手势可能需要一秒钟才能执行。因此,您将拥有大约 50 个职位。因此,您需要的算术运算总数可能是几百个(包括适度数量的平方根)。在最坏的情况下,您可能会在慢速 ARM 处理器或其他东西上以模拟浮点执行此操作;在这种情况下,每个算术运算可能需要几百个周期,所以整个事情可能是 100k 个周期,对于运行在 100MHz 的非常慢的处理器来说,这大约是一毫秒。您不会对进行此计算所花费的时间有任何问题。

2:这是对的吗?目前尚不清楚这是正确的计算。例如,假设您的用户的手沿 x 轴快速来回移动几次;这会给你一个积极的结果;那是你要的吗?假设用户尝试了您想要的手势,但移动的角度略有错误;你可能会得到一个否定的结果。假设它们正好沿着 x 轴移动一点,然后沿着 y 轴移动一点;那么在 {x,y}、{x,z} 和 {y,z} 平面上的投影都将通过您的测试。这些似乎都是您可能不想要的结果。

3:真正的成本在哪里?这一切都假设您已经获得 (x,y,z) 坐标。获得这些可能会比处理它们更昂贵。例如,如果您有某种基于相机的系统,那么每一帧都会有一些重要的图像处理。或者,也许您正在整合来自加速度计的数据(顺便说一下,这可能会产生令人讨厌的不准确位置结果);您可能正在执行一些过滤和其他计算以获取位置数据。我敢打赌,执行这样的计算的成本将大大低于首先获取坐标的成本。

于 2012-04-25T14:08:32.440 回答