そのため、作成された反復最接近点(ICP)アルゴリズムがあり、モデルを点群に適合させます。知らない人のための簡単なチュートリアルとして、ICPは、ポイントをモデルに適合させ、最終的にモデルとポイントの間に均一な変換行列を提供する単純なアルゴリズムです。
これが簡単な画像チュートリアルです。
手順1.モデルセット内でデータセットに最も近いポイントを見つけます。
ステップ2:たくさんの楽しい数学(時には勾配降下またはSVDに基づく)を使用して、雲を互いに近づけ、ポーズが形成されるまで繰り返します。
![図2] [2]
そのビットはシンプルで機能しているので、私が助けたいのは次のとおりです。 私が持っているポーズが良いものであるかどうかをどのように判断しますか?
だから現在私は2つのアイデアを持っていますが、それらは一種のハッキーです:
ICPアルゴリズムにはいくつのポイントがありますか。つまり、私がほとんどポイントに適合していない場合、私はポーズが悪いと思います:
しかし、ポーズが実際に良い場合はどうなりますか?少しのポイントでもそうかもしれません。私は良いポーズを拒否したくない:
したがって、ここで確認できるのは、低いポイントが適切な場所にある場合、実際には非常に良い位置を占めることができるということです。
したがって、調査された他のメトリックは、使用されたポイントに対する提供されたポイントの比率でした。これが例です
これで、外れ値になるために遠すぎるポイントを除外します。これは、ICPが機能するための適切な開始位置が必要であることを意味しますが、私はそれで問題ありません。上記の例では、保証は「いいえ」と表示されます。これは悪いポーズです。含まれるポイントとポイントの比率は次のとおりであるため、これは正しいでしょう。
2/11 < SOME_THRESHOLD
それは良いことですが、三角形が逆さまになっている上記の場合は失敗します。すべてのポイントがICPによって使用されるため、逆三角形が適切であると言えます。
この質問に答えるのにICPの専門家である必要はありません。私は良いアイデアを探しています。ポイントの知識を使用して、それが良いポーズの解決策であるかどうかをどのように分類できますか?
これらのソリューションの両方を一緒に使用することは良い提案ですが、私に言わせれば、それはかなり不完全なソリューションであり、それをしきい値に設定するのは非常に愚かです。
これを行う方法についてのいくつかの良いアイデアは何ですか?
PS。コードを追加したい場合は、ぜひ行ってください。私はC++で作業しています。
PPS。誰かがこの質問にタグを付けるのを手伝ってくれます。どこに置くべきかわかりません。