はじめに
Pythonを使って、スポーツの動作を可視化していきたたいと思います。
前回はOpenPoseを使ったバッティングフォーム解析をやりました。
今回は、ピッチングの動作解析です。前回と同じOpenPoseに加えて、OpenCV、Pandasを使って動作を可視化してきたいと思います。
動作分析内容
- 骨格検出
- 軌道(手首)の可視化
- 角度変化(肩・肘・腰)の可視化
環境
- 撮影カメラ 自分のスマホ(HTC U11)
- 解析環境
- windows10 home(64bit/CPU)
- Google Colaboratory(python3/CPU)
- ライブラリ(DeNA/Chainer_Realtime_Multi-Person_Pose_Estimation)
骨格検出
ピッチングの動画から「DeNA/Chainer_Realtime_Multi-Person_Pose_Estimation」を使って、
骨格を自動で検出します。
骨格だけの動画を見てみる
今回も野球素人のピッチング動画です。ピッチングそのもののうまい下手はとりあえず・・・
骨格の座標
検出した骨格のxy座標情報⇒GitHub
軌道(手首)の可視化
画像に軌跡をプロット
右手首の軌跡を動画に重ねてみます。どのような軌道で投げているのか少し分かりやすくなりました。
実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/1_draw_motion.ipynb
散布図で見てみる
多項式回帰(3次)で見てみる
散布図と同時に、回帰式も見てみます。
軌道の大まかな傾向(?)が見えてくるような気がします。
実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/2_prot_scatter_chart.ipynb
角度変化(肩・肘・腰)の可視化
折れ線グラフで見てみる
ピッチングの開始・終了までの肩、肘、腰の角度変化を見てみます。
肩(赤)と腰(青)は同じような角度変化をしているようです。
右肘(紫)は最初曲げており(角度が小さく)、だんだん伸びている(角度が大きく)なっていく様子が見て取れます。
実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/3_prot_line_chart.ipynb
相関関係を見てみる
肩・肘・腰の角度変化に相関関係があるか見てみます。
うーん、、、相関が見えるような見えないような・・・。
ソースコード
csv、画像、Jupyter Notebook
https://github.com/nanako-ut/analyze-motion
- images.zip ・・・骨格検出後の画像
- motion_data.csv ・・・骨格のXY座標
- 1_draw_motion.ipynb ・・・ 画像に軌跡をプロット
- 2_prot_scatter_chart.ipynb ・・・散布図と回帰
- 3_prot_line_chart.ipynb ・・・折れ線グラフ
おわりに
選手1人分のデータを分析してみました。1人分のデータの中から何がしかの特徴はあまり見えてきませんでしたが、、複数選手を分析してみたら、選手個々人の特徴が見いだせそうな気もします。
軌道、角度は選手別に何がしかのグループ分けができそう。