私は、類似性スコアを比較して与えるために、モーションデータの分析を含むプロジェクトに取り組んでいます。アプリケーションでデータを収集して表示できるようになりましたが、アルゴリズムの方向性が必要です。
目標:加速度計から記録された 2 つの (x,y,z) モーション データの時系列が与えられ、類似性スコア (実数、最終的には 0 から 100) を計算します。これにより、記録からモーションがどの程度類似しているかの尺度が得られます。
例:これは私のソフトウェアからのいくつかの画像で、私が収集したデータのアイデア (およびそれらの類似度スコアがどうあるべきかについての私の意見) を示しています。
これはかなり良いスコアになるはずです
多分これはもっと悪いスコアになるはずです
成績が良くないはず
かなりひどい
よしスコア
かなり良い
良くない
いくつかのアイデア:私はオーディオ処理とコンピューター ビジョンの経験があるので、最初のアイデアはそこから生まれます。まず最初に、信号をローパス フィルター処理することを考えていました (q: どの LPF ですか? たくさんあります)。その後、ダイナミック タイム ワーピングを試みました。このように、x1 と x2、y1 と y2 などを比較します。ただし、これは、x2 シリーズが z2 シリーズにどのように関連するかと比較して、x1 シリーズが z1 にどのように関連するかなどの重要な情報を失っているように私には思えます。
私が考えていたもう 1 つの考えは、おそらくMFCCを使用して、周波数領域で分析を行うことでした。これは、私が理解している音声認識の一般的な手法です。
「機械学習をやめろ」というアプローチもあります。テンプレート化されたジェスチャを保存し、ある種の魔法を実行して認識できるようにすることができました。これは私の好みではありませんが (大量のトレーニング データを必要とせずにこれを実行できるようにしたいと考えています)、誰かが「ああ、これは 間違いなくうまくいくだろう」というようなスキームを知っている場合は、確かに.
ソフトウェア + 実装:このプロジェクトはJavaで行われており、私のデータは次の形式になっています。
float[150] x1;
float[150] y1;
float[150] z1; //note: x2,y2,z2 will be of different length, but similar
したがって、アルゴリズムの提案に基づいて使用するライブラリを推奨したい場合は、非常に簡単に使用できます。
その他:オリエンテーションの問題があります。ただし、私の計画は、サンプルの 1 つを「参照」として取得しx[i],y[i],z[i]
、他のすべてのポイントを回転させて一致させることです。次に、比較を行います。このための現在の計画は、この回転式を使用しています:ロドリゲスの回転式これは理にかなっていますか?