コンテンツにスキップ

比較

Warning

比較機能は試験的な機能のため、今後変更する可能性があります。

比較について

抽出済みのキーポイントを 2 つ用いて、2 つの画像/動画の動作を比較することができます。

比較の仕様

比較は、比較元sourceの画像/動画を基準に、比較対象targetにおいて、どの方向どの程度差異があるかを算出するものです。 また、部位ごとおよびフレームごとに比較を行い、値を算出します。 部位については検出する部位を参照して下さい。

動画の長さが異なる場合や画像と動画の比較の場合のように、キーポイントの長さが異なる場合は、比較対象のキーポイントは比較元の長さになるように調整します。 比較結果は、部位ごとに比較元と同じ長さのフレーム単位で出力されることになります。

Notice

比較元が画像(フレームの長さ 1)の場合で比較対象の動画の場合、比較対象の動画の最初の 1 フレームが比較に使用されます。

差異の方向

比較元sourceの部位のキーポイント点を基準に、比較対象targetの同じ部位のキーポイント点がどの方向にずれているかを表します。 上方向を 0 度とし、時計回りに 0~360 度の範囲で算出します。

comparison_direction

差異の程度

比較元sourceの部位のキーポイント点を基準に、比較対象targetの同じ部位のキーポイント点がどの程度ずれているかの距離を表します。 比較する 2 人の人物の大きさが同程度になるように調整しており、人物の大きさに依存せず距離は 0~1 の値をとります。

データフォーマット

AnyMotion で取得される比較結果のデータフォーマットの仕様項目は以下の通りです。

  • 1 つの比較結果は複数のフレームが配列形式で格納される
    • 画像同士の比較であれば配列に 1 つの連想配列となる
  • 1 つのフレームは部位毎の比較情報が連想配列形式で格納される
  • 部位毎の比較情報は "nose": {"distance": 0.03, "direction": 20} のように 部位名: {"distance": 距離, "direction": 方向} で定義される
  • 比較しているフレームのいずれかに未検出のキーポイントがあった場合は当該フレームでその部位名は除外される
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
  [
    {
      "nose": {
        "distance": 0.03,
        "direction": 20
      },
      "leftEye": {
        "distance": 0.02,
        "direction": 30
      },
      "leftShoulder": {
        "distance": 0.12,
        "direction": 320
      },
      "leftElbow": {
        "distance": 0.07,
        "direction": 40
      }
    },
    ...
  ]

比較を行う

比較を行うには、POST /comparisonsを用います。比較元となるキーポイントsourceと比較対象となるキーポイントtargetを指定します。

サンプルコード

1
2
3
4
5
6
7
8
curl -X POST \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer <アクセストークン>" \
     -d '{
         "sourceId": "<比較元キーポイントID>",
         "targetId": "<比較対象キーポイントID>"
     }' \
     'https://api.customer.jp/anymotion/v1/comparisons/'

比較結果を取得する

GET /comparisons/:idを用いることで、比較結果を取得できます。

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

Hint

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

サンプルコード

Hint

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

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