MediaPipe Pose 33ランドマーク完全一覧

投稿日: 2026年5月2日 対象読者: MediaPipeを使う開発者 / ポーズ推定を実装したい方

この記事はこんな方向け:

  • MediaPipe Poseの全ランドマークの番号と位置を知りたい方
  • 特定の関節だけ使いたいがインデックスが分からない方
  • visibility スコアの活用方法を知りたい方

TL;DR

  • MediaPipe Poseは33個のランドマークを返す(顔11点・上半身12点・下半身10点)
  • 各ランドマークは { x, y, z, visibility } の4値を持つ
  • visibility0.5未満の関節は信頼度が低く、スキップ推奨
  • 左右の判定はカメラ視点ではなく人物視点(鏡に映したときの左右)

はじめに

MediaPipe Poseを実装していると「肩のインデックスは何番だっけ?」「左右のどちらが15番?」と迷うことがあります。公式ドキュメントには図がありますが、実装中にサッと確認したいときに開くのは少し手間です。

この記事では、33個のランドマークを一覧で整理し、よく使う関節の選び方と visibility の活用方法を解説します。Pose Mirrorでの実際の使用例も紹介します。

ランドマーク一覧

全身の配置図(テキスト図)

          0 (鼻)
    1,3 ---- 2,4  (目 内側・外側)
    5          6  (目 外側端)
    7          8  (耳)
    9         10  (口 左端・右端)

        11 --- 12  (肩)
       /         \
     13           14  (肘)
      |             |
     15           16  (手首)
   17,19,21   18,20,22  (指)

        23 --- 24  (腰)
       /         \
     25           26  (膝)
      |             |
     27           28  (足首)
   29,31       30,32  (かかと・つま先)

左右の見方: 奇数インデックス(11,13,15...)が人物の左側、偶数(12,14,16...)が人物の右側です。正面から見るとカメラ視点と左右逆になります。

顔・頭部(0〜10)

インデックス 部位 備考
0 顔の中心・向き推定に使える
1 左目(内側)
2 右目(内側)
3 左目(外側)
4 右目(外側)
5 左目(外側端)
6 右目(外側端)
7 左耳 横顔では低精度になりやすい
8 右耳
9 口(左端)
10 口(右端)

上半身(11〜22)

インデックス 部位 よく使う組み合わせ
11 左肩 11→13(左上腕の向き)
12 右肩 12→14(右上腕の向き)
13 左肘 13→15(左前腕の向き)
14 右肘 14→16(右前腕の向き)
15 左手首
16 右手首
17 左手(人差し指付け根) 手の詳細が必要な場合
18 右手(人差し指付け根)
19 左手(小指付け根)
20 右手(小指付け根)
21 左親指
22 右親指

下半身(23〜32)

インデックス 部位 よく使う組み合わせ
23 左腰 23→25(左大腿の向き)
24 右腰 24→26(右大腿の向き)
25 左膝 25→27(左すねの向き)
26 右膝 26→28(右すねの向き)
27 左足首
28 右足首
29 左かかと
30 右かかと
31 左つま先
32 右つま先

コードでのアクセス方法

pose.onResults((results) => {
  const lm = results.poseLandmarks;
  if (!lm) return; // 人物が未検出

  // よく使う関節へのアクセス例
  const leftShoulder  = lm[11]; // { x, y, z, visibility }
  const rightShoulder = lm[12];
  const leftElbow     = lm[13];
  const nose          = lm[0];

  // visibility で信頼度をチェックしてから使う
  if (leftShoulder.visibility > 0.5) {
    console.log(
      `左肩: x=${leftShoulder.x.toFixed(3)}, y=${leftShoulder.y.toFixed(3)}`
    );
  }
});

座標の意味:

  • x, y:画像サイズを1とした正規化値(0〜1)。左上が(0,0)、右下が(1,1)
  • z:腰を基準にした奥行き(手前が負)。精度はx,yより低め
  • visibility:関節の検出信頼度(0〜1)

visibilityの正しい使い方

各ランドマークの visibility は、その関節がどれだけ確実に映っているかを示します。

// NG: visibility を無視してそのまま使う(精度が低い関節のデータも混入する)
const shoulder = { x: lm[11].x, y: lm[11].y };

// OK: 信頼度が高い関節のみ使う
if (lm[11].visibility > 0.5) {
  const shoulder = { x: lm[11].x, y: lm[11].y };
  applyToModel(shoulder);
}

visibility が低くなりやすいケース:

状況 影響を受ける関節
横向き・後ろ向きの写真 見えていない側の全関節
手足が体に重なっている 重なった手足
体の一部が画面の外に切れている 切れた部分の関節
暗い・ぼけた画像 全般的に低下

Pose Mirrorでの使用例

Pose Mirrorでは全33点を使うのではなく、3Dデッサン人形の関節に対応する12点に絞って使用しています。

// Pose Mirrorで実際に使っている関節(12点)
const jointMap = {
  leftShoulder:  lm[11],
  rightShoulder: lm[12],
  leftElbow:     lm[13],
  rightElbow:    lm[14],
  leftWrist:     lm[15],
  rightWrist:    lm[16],
  leftHip:       lm[23],
  rightHip:      lm[24],
  leftKnee:      lm[25],
  rightKnee:     lm[26],
  leftAnkle:     lm[27],
  rightAnkle:    lm[28],
};

顔(0〜10)は3Dモデルの頭部向きには使用していません。指の細かい動き(17〜22)も現時点では非対応です。これらを追加することで、より精密なポーズ反映が実現できます。

まとめ

  • ランドマークは 0〜32の固定インデックスで管理されている
  • 左右は人物視点(鏡のように見たときの左右)
  • visibility < 0.5 の関節は信頼度が低いためスキップする
  • 3Dポーズ反映に必要な主要関節は11〜28の18点(腕・脚の付け根〜末端)

ぜひ Pose Mirror で実際に33ランドマークがどのように3Dポーズに変換されるか確かめてみてください!


関連記事:

参考資料

← ポートフォリオ TOP へ戻る