LoginSignup
52
53

More than 5 years have passed since last update.

Pythonでスポーツ動作分析(野球・ピッチング編)

Posted at

はじめに

Pythonを使って、スポーツの動作を可視化していきたたいと思います。

前回はOpenPoseを使ったバッティングフォーム解析をやりました。
今回は、ピッチングの動作解析です。前回と同じOpenPoseに加えて、OpenCV、Pandasを使って動作を可視化してきたいと思います。

動作分析内容

  1. 骨格検出
  2. 軌道(手首)の可視化
  3. 角度変化(肩・肘・腰)の可視化

環境

  • 撮影カメラ 自分のスマホ(HTC U11)
  • 解析環境
    • windows10 home(64bit/CPU)
    • Google Colaboratory(python3/CPU)
  • ライブラリ(DeNA/Chainer_Realtime_Multi-Person_Pose_Estimation)

骨格検出

ピッチングの動画から「DeNA/Chainer_Realtime_Multi-Person_Pose_Estimation」を使って、
骨格を自動で検出します。

骨格だけの動画を見てみる

今回も野球素人のピッチング動画です。ピッチングそのもののうまい下手はとりあえず・・・

pitching_all.gif

骨格の座標

検出した骨格のxy座標情報⇒GitHub

軌道(手首)の可視化

画像に軌跡をプロット

右手首の軌跡を動画に重ねてみます。どのような軌道で投げているのか少し分かりやすくなりました。

pitching_line.gif

実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/1_draw_motion.ipynb

散布図で見てみる

右手首の軌道を散布図にしてみます。
lmplot_0.png

多項式回帰(3次)で見てみる

散布図と同時に、回帰式も見てみます。
軌道の大まかな傾向(?)が見えてくるような気がします。

regplot_0.png

実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/2_prot_scatter_chart.ipynb

角度変化(肩・肘・腰)の可視化

折れ線グラフで見てみる

ピッチングの開始・終了までの肩、肘、腰の角度変化を見てみます。
肩(赤)と腰(青)は同じような角度変化をしているようです。
右肘(紫)は最初曲げており(角度が小さく)、だんだん伸びている(角度が大きく)なっていく様子が見て取れます。
main_data_0.png

実行ソース
https://github.com/nanako-ut/analyze-motion/blob/master/3_prot_line_chart.ipynb

相関関係を見てみる

肩・肘・腰の角度変化に相関関係があるか見てみます。
うーん、、、相関が見えるような見えないような・・・。

pairplot_data.png

ソースコード

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人分のデータの中から何がしかの特徴はあまり見えてきませんでしたが、、複数選手を分析してみたら、選手個々人の特徴が見いだせそうな気もします。
軌道、角度は選手別に何がしかのグループ分けができそう。

52
53
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
53