コンテンツにスキップ

解析

解析について

抽出済みのキーポイントを用いて、角度の算出などの解析をすることができます。

キーポイントを解析する

キーポイント解析を行うには、POST /analysesを用います。 対象のキーポイントIDkeypointIDと解析ルールruleに従い実施したい解析内容を指定します。

解析ルールフォーマット

ruleには、Array形式で複数のルールを記載することができ、1つのルールには以下のプロパティが利用できます。

プロパティ タイプ 説明 必須
analysisType String 解析の種類
points Array 解析対象となるキーポイント
points[].pointType String キーポイント点の指定方法 -
points[].pointName String or Array 部位の名前
movieOption Object 動画のみ利用可能な解析 -
movieOption.statisticsType String 解析の種類
movieOptionを指定した場合、このプロパティは必須です。
1
movieOption.targetValue String 対象となる値
省略するとすべての値を対象とします。
-

analysisType

analysisTypeで指定できる値は次のとおりです。 解析内容により必要となる部位の数が異なります。

解析内容 analysisType 必要な部位数
座標値 coordinate 1
水平方向の差分 horizontalDifference 2
垂直方向の差分 verticalDifference 2
ユークリッド距離 euclideanDistance 2
ベクトル角 vectorAngle 3
回転角 rotationAngle 3

画像の場合、解析結果は1つですが、動画の場合、フレームごとに解析されるので、解析結果の数はフレーム数と一致します。

ベクトル角と回転角

ベクトル角は、1点目と2点目の部位をつなぐベクトルと2点目と3点目の部位をつなぐベクトルのなす角を0度 ~ 180度の範囲で算出します。

回転角は、下の図のように、1点目と2点目の部位をつなぐベクトルから2点目と3点目の部位をつなぐベクトルに対して反時計回りの方向の角度を0度 ~ 360度の範囲で算出します。

ベクトル角と回転角

Hint

ベクトル角は1点目と3点目を入れ替えても同じ値が算出されますが、回転角は1点目と3点目を入れ替えると異なる値が算出されます。

points

pointType には次の値が指定できます。

  • single
  • horizontalRight
    • 指定した部位の水平方向の右端を表します。
  • horizontalLeft
    • 指定した部位の水平方向の左端を表します。
  • verticalTop
    • 指定した部位の垂直方向の上端を表します。
  • verticalDown
    • 指定した部位の垂直方向の下端を表します。
  • midpoint
    • 2つの部位の中点を表します。
  • centroid
    • 指定した位置の重心を表します。

指定される箇所については、以下の図も参考にしてください。

point_type

pointName には次の値が指定できます。

Note

pointTypemidpointを指定した場合のみpointNameは配列で2つの部位を指定する必要があります。

pointTypesingleの場合のみpointTypepointNameを省略することが出来ます。

1
2
3
4
5
{
  "points": [
    "leftShoulder"
  ]
}

これは以下と同値です。

1
2
3
4
5
6
7
8
{
  "points": [
    {
      "pointType": "single",
      "pointName": "leftShoulder"
    }
  ]
}

movieOption

movieOptionを指定することで、analysisTypeで解析した結果を用いて、統計処理を行うことができます。

statisticsType には次の値が指定できます。

  • max
  • min
  • mean
  • median

targetValueには次の値が指定できます。 省略するとすべての値を対象とします。

  • all
    • analysisTypeの解析結果をすべての値を対象とします。
  • positive
    • analysisTypeの解析結果のうち正の値のみを対象とします。
  • negative
    • analysisTypeの解析結果のうち負の値のみを対象とします。

サンプルコード

以下の例では、左肩、左腰、左膝を結ぶベクトルのベクトル角を算出します。

Hint

<アクセストークン>の取得は、認証方式を参照してください。

解析は非同期で実施されます。処理時間は動画の長さなどにより変化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <アクセストークン>" \
     -d '{
         "keypointId": "<キーポイントID>",
         "rule": [{
             "analysisType": "vectorAngle",
             "points": ["leftShoulder","leftHip","leftKnee"]
         }]
     }' \
     'https://api.customer.jp/anymotion/v1/analyses/'

解析の処理状況および結果を取得する

GET /analyses/:idを用いることで、解析結果を取得できます。

リクエストには POST /analysesのレスポンスに含まれる id を指定します。 解析処理のステータスは、レスポンスの execStatus で確認することができます。 SUCCESS の場合、処理が完了しており,解析結果を取得することができます。

Hint

execStatusUNPROCESSEDPROCESSING の場合はまだ処理が完了していません。 時間をおいてから再度確認してください。

サンプルコード

Hint

<アクセストークン>の取得は、認証方式を参照してください。

1
2
3
curl -X GET \
    -H 'Authorization: Bearer <アクセストークン>' \
    'https://api.customer.jp/anymotion/v1/analyses/<解析ID>/'

  1. movieOptionを指定した場合、statisticsTypeは必須です。