Ste*_*hke 7 python opencv signal-processing scipy openpose
使用OpenPose从视频中提取姿势数据时,我会得到很多抖动.这看起来不自然,我的结果看起来并不自然和人性化.
我从OpenPose模型获得的数据是我必须使用的,我无法提高模型的质量.处理整个视频剪辑并将15个解剖关键点存储在数据库中.我想使用一些信号处理来平滑这些数据.如何摆脱这种抖动?
Ste*_*hke 16
使用Savgol过滤器来平滑数据.
数据中存在抖动,因为视频是逐帧处理的.OpenPose模型很好,但不一致.该模型往往以随机方式出错.这导致身体部位的位置围绕真实值反弹.
幸运的是,这些数据通常围绕真值分布.这意味着可以使用Savgol滤波器来平滑数据,并从噪声数据中生成准确的值.
平滑的第一步是收集整个视频的姿势数据,并将其存储在.csv文件中.save_pose_data.py
有时模型会被扭转.在下一步中,交换身体部位,使左侧始终在左侧.swap_body_parts.py
身体部位#9是左膝,身体部位#12是右膝.有时模型混合了右膝和左膝位置.我必须确保:
x_coord for body part #9 < x_coord for body part #12
Run Code Online (Sandbox Code Playgroud)
所以,如果#9留在#12,我将交换这些位置.
最后是应用平滑的时候了.对于60 fps,我发现9到31之间的值适用于window_length参数(较低的是较不平滑,较高的是较平滑). smooth_with_savgol.py
在这个gif中,右肘(绿色)已经平滑,左肘(粉红色)没有.
还有比这更好的方法吗?完全,但这将会更加艰难.通常,平滑的结果来自跟踪而不是检测.消除抖动的一种方法是检测视频第一帧中的姿势,并使用跟踪与光流和OpenPose检测的组合.跟踪计算密集程度远低于检测,因此这种方法会更快.
将源视频的帧速率加倍然后对连续帧进行平均是一种简单的方法.但是,这需要从两倍的帧中提取姿势数据.这种方法需要大约两倍的时间.
或者,也许告诉骷髅人尝试热苹果酒而不是咖啡:)
归档时间: |
|
查看次数: |
2123 次 |
最近记录: |