求视频运动次数的算法

通过对视频序列帧的分析,计算出在规定时限内如跳绳、仰卧起坐、俯卧撑等运动的次数。谢谢。

卧槽这是开发者来求算法的 :dog:

第一次见啊

本人学习的不是计算机专业,也不清楚您需要使用哪种计算机语言,没办法给您一个成熟的算法,但可以给您提供一个思路,希望能帮到您。

简而言之:选取一个在运动中发生周期性变化的物理量 x,然后寻找满足如下条件的变量 x 的个数,即 x 随时间变化过程中极值出现的次数:x-1 < x ≦ x1。其中 x-1 是 x 左侧的值,而 x1 是 x 右侧的值。极值出现的次数,基本等于已完成的周期性运动的次数。

既然是周期性运动,那么将动点的 x 或 y 座标对时间 t 作图,将得到一周期性曲线。曲线出现了多少个波峰,则该动点就完成了多少个周期的运动。

将运动员头顶作为动点进行跟踪,那么,在跳绳运动中,运动员每跳一次绳,动点的 y 座标就出现一次最大值。俯卧撑运动同理。

而在仰卧起坐运动中,还是以运动员头顶为动点,每做一次仰卧起坐动作,动点的 x 座标就出现一次最大值。

那么问题就简单了:怎么测量某一变量变化过程中出现的峰值并记录?

假如变量 x 中,x0 是峰值,那么肯定存在:

x_{-1} < x_0 < x_1

但问题来了,有时候由于软件精度的问题,这个极值可能不是单点极值,而是多点极值。那么这时候,我们只需要统计出现了多少个极值左侧的端点即可。如下图,粉色块代表多点极值,而橙色块是用于计数的极值点。

此时对 x0 有:

x_{-1} < x_0 = x_1

综上所述,要统计变量 x 在变化过程中出现了多少个极值点,只需统计满足下列条件的点出现了多少次:

x_-1 < x \leq x_1
1 Like

这个物理量可以是肢体位置,而这个可以使用一些姿态估计算法获取。如果说使用相对位置的话甚至不需要根据运动类别人工选择某些特定的关节点。

你要考虑到人体动作的不规范, 所以需要较高的容错性.

对于个人用户来说, 实现这个算法, 不如硬件更可靠.

比如 能计数的跳绳, 手肘与膝盖相碰的计数器. 等等.

有可能是已经录完的视频要核查吧, 比如检查学生的视频作业,或者比赛复核之类的

哈哈,请教最佳答案

哈哈,谢谢,答案