これは サッカーのキックのバイオメカニクス の実践編です。前回はキックをフェーズに分解しました。今回は MATLAB で実際に解析します——OpenPose の JSON 出力から、関節角度・平滑化した信号・各フェーズのタイミング・結果テーブルを作ります。
1. OpenPose の JSON を読み込む
OpenPose はフレームごとに JSON を出力します。dir でファイル一覧を取得し、ループで各ファイルを fileread で読み、jsondecode でパースして data{i}.people(1).pose_keypoints_2d を取り出します。このベクトルは BODY_25 の25関節ぶん、各関節が X・Y・信頼度(confidence)の順に並んでいるので、3つの行列に分けます——X = P(1:3:end)、Y = P(2:3:end)、Conf = P(3:3:end)。結果は 25関節 × フレーム数(ここでは64)になります。

関節の並び順は OpenPose で固定です(「OpenPose BODY_25」で検索)。順序が分かれば、どの行がどの関節かが分かります。
2. 関節角度を計算する
関節角度は、2つの体節(ベクトル)のなす角です。膝なら、膝→足首のベクトルと膝→股関節のベクトルを取り、堅牢な2引数の逆正接を使います: atan2d(|det([v1; v2])|, dot(v1, v2))。行列式が「対辺」(外積の大きさ)、内積が「隣辺」に相当します。そこから 180° を引いて解剖学的な角度にします。

関節ごとの調整:
- 膝:
180 - atan2d(...)。膝は現実的に180°を超えません。 - 股関節: 180 を引かない——股関節は180°を超え得るため。符号でバックスイング(負)とフォワードスイング(正)を区別します。右股関節はさらに符号を反転(鏡像側)し、内積も負にして符号を揃えます。
- 足首:
90 - atan2d(...)。自然な立位の足首は約90°だからです。
3. データを平滑化(カットオフはパワースペクトルで決める)
生の角度はノイズが多いので、Butterworth ローパスフィルタで平滑化します。決めるべきはカットオフ周波数だけで、パワースペクトルから客観的に選べます。フレームレートをサンプリング周波数(fs = 240)として pspectrum(angle, fs) を実行し、パワー vs 周波数をプロット: 本来の信号は低周波に集中し、パワーはノイズ床へ落ちます。ここではその境目が約 19 Hz です。

次に [b,a] = butter(2, 19/(fs/2), 'low') でフィルタを作り、ゼロ位相の filtfilt(b, a, angle) で適用します。結果はきれいな平滑波形です。

4. 角速度・フェーズ・接地
平滑化した角度から角速度(とその最大値)を計算し、バイオメカニクス記事と同じキネマティクスから各フェーズを特定します。最大股関節角度がバックスイングの終わり、最大膝角度がレッグコッキングとレッグアクセラレーションの目印です。各フェーズは動作全体に対する割合(そのフレーム番号÷総数×100)で表します。
注意が要るのは支持脚の接地(landing)です。自動——足首の鉛直位置が最も低いフレーム——でも、画像フレームを送って目視で読み取っても構いません(ここでは約45フレーム目)。支持脚のフェーズ(衝撃吸収、エネルギー伝達)は、その膝キネマティクスから続けて求めます。
5. 結果をテーブルにまとめる
最後に、名前付きの MATLAB table に全部まとめます——蹴り脚の最大股関節角度(51°)、最大膝角度(90°)、最大膝角速度、股関節・膝の衝撃吸収/エネルギー伝達の範囲や速度など、計14変数です。writetable で CSV に保存すれば、被験者や試技の比較ができます。

まとめ
これで、再現可能なパイプラインが完成です: OpenPose のキーポイントを入力し、関節角度とフェーズ指標を出力——すべて数十行の MATLAB で。同じロジックは Python にもそのまま移せます(無料ツール派に)。バイオメカニクス解説と合わせれば、マーカーレスのキック解析の「何を」と「どうやって」の両方が揃います。
著者について
Takashi Fukushima — スポーツ・運動科学 × Human Pose Estimation × Computer Vision × XR を横断して研究・開発しています。
- YouTube(登録): Takashi Fukushima|Sports Science & Pose Estimation
- 研究(ORCID): orcid.org/0000-0002-7318-3384
- ウェブサイト: takashifukushima.com
- お問い合わせ: お問い合わせフォーム