如何使用 MediaPipe 标准化视频帧中的手部标志位置?

问题描述 投票:0回答:1

我正在开发一个项目,需要在所有帧中使用 MediaPipe 跟踪和分析多个视频中的手部动作。我面临的挑战是拍摄对象与相机的距离不同,导致检测到的手的大小在帧与帧之间发生变化,并且由于运动,我无法使用这些点的位置。我想标准化不同帧中手部标志的大小,以便更准确地比较动作。

考虑到与相机的方向和距离的变化,如何标准化视频中检测到的手部标志的位置和/或大小?我正在寻找一种方法来调整手部标志的缩放、旋转和平移。

normalization mediapipe
1个回答
0
投票

一方面,您可以很容易地标准化坐标以考虑比例和平移:

  1. 识别 x 坐标彼此距离最远的手指。
  2. 这些 x 坐标 xmin 和 xmax 将是您的 0 和 1 标准化值。
  3. 然后,对于每个其他手指,获取其 x 坐标 xn 并应用常规归一化公式:(xn - xmin)/(xmax - xmin)
  4. 对 y 轴重复此过程。

现在,所有坐标都已标准化。但是,您应该注意,旋转手会影响标准化坐标。这是因为旋转有点棘手,主要是因为:

  • 如果旋转平面垂直于相机(例如,将手掌面向相机,并将旋转轴设为与手掌和相机交叉的轴),则按照上述步骤标准化坐标这是行不通的,因为即使你做出相同的手势,手指的相对位置也会发生变化。尽管如此,如果您假设两个常量坐标始终位于底部和底部,例如手腕 (0) 和中指顶部 (12)(请参见下图),则可以解决此问题。如果是这种情况,您将必须学习三角学,以便将 Mediapipe 提出的 x 轴和 y 轴更改为由穿过地标 (0) 和 (12) 的线及其垂直线定义的新轴.

这是一项相当棘手的任务,因此您想要添加到标准化的复杂性完全取决于您的用例。祝你好运!愿代码与您同在...

© www.soinside.com 2019 - 2024. All rights reserved.