10

そのため、作成された反復最接近点(ICP)アルゴリズムがあり、モデルを点群に適合させます。知らない人のための簡単なチュートリアルとして、ICPは、ポイントをモデルに適合させ、最終的にモデルとポイントの間に均一な変換行列を提供する単純なアルゴリズムです。

これが簡単な画像チュートリアルです。

手順1.モデルセット内でデータセットに最も近いポイントを見つけます。

ステップ2:たくさんの楽しい数学(時には勾配降下またはSVDに基づく)を使用して、雲を互いに近づけ、ポーズが形成されるまで繰り返します。

![図2] [2]

そのビットはシンプルで機能しているので、私が助けたいのは次のとおりです。 私が持っているポーズが良いものであるかどうかをどのように判断しますか?

だから現在私は2つのアイデアを持っていますが、それらは一種のハッキーです:

  1. ICPアルゴリズムにはいくつのポイントがありますか。つまり、私がほとんどポイントに適合していない場合、私はポーズが悪いと思います:

    しかし、ポーズが実際に良い場合はどうなりますか?少しのポイントでもそうかもしれません。私は良いポーズを拒否したくない:

図5

したがって、ここで確認できるのは、低いポイントが適切な場所にある場合、実際には非常に良い位置を占めることができるということです。

したがって、調査された他のメトリックは、使用されたポイントに対する提供されたポイントの比率でした。これが例です

図6

これで、外れ値になるために遠すぎるポイントを除外します。これは、ICPが機能するための適切な開始位置が必要であることを意味しますが、私はそれで問題ありません。上記の例では、保証は「いいえ」と表示されます。これは悪いポーズです。含まれるポイントとポイントの比率は次のとおりであるため、これは正しいでしょう。

2/11 < SOME_THRESHOLD

それは良いことですが、三角形が逆さまになっている上記の場合は失敗します。すべてのポイントがICPによって使用されるため、逆三角形が適切であると言えます。

この質問に答えるのにICPの専門家である必要はありませ。私は良いアイデアを探しています。ポイントの知識を使用して、それが良いポーズの解決策であるかどうかをどのように分類できますか?

これらのソリューションの両方を一緒に使用することは良い提案ですが、私に言わせれば、それはかなり不完全なソリューションであり、それをしきい値に設定するのは非常に愚かです。

これを行う方法についてのいくつかの良いアイデアは何ですか?

PS。コードを追加したい場合は、ぜひ行ってください。私はC++で作業しています。

PPS。誰かがこの質問にタグを付けるのを手伝ってくれます。どこに置くべきかわかりません。

4

3 に答える 3

3

考えられるアプローチの 1 つは、ポーズを形状と向きで比較することです。

形状の比較は、アイソメトリーまでハウスドルフ距離で行うことができます。つまり、次の場合、ポーズは同じ形状です。

d(I(actual_pose), calculated_pose) < d_threshold

実験からどこd_thresholdを見つけるべきか。XI のアイソメトリック修正は、異なる角度による回転を考慮するため、この場合は十分なようです。

ポーズは同じ形をしていますか? 向きを比較する必要があります。向きを比較するために、やや単純化したFreksa モデルを使用できます。ポーズごとに値を計算する必要があります

{x_y min, x_y max, x_z min, x_z max, y_z min, y_z max}

次に、ポーズの対応する値間の各差が壊れないことを確認します。これanother_thresholdも実験から導き出されました。

うまくいけば、これはある程度理にかなっています。少なくとも、これから目的に役立つ何かを引き出すことができます.

于 2012-11-30T06:56:28.877 に答える
1

ICPは、点群とモデルの間の距離を最小化しようとしますね。実行後の実際の距離に基づいて評価するのが最も理にかなっているのではないでしょうか。

フィットしようとする各ポイントと最も近いモデルポイントの間の距離の2乗の合計を最小化しようとしていると思います。したがって、品質の指標が必要な場合は、その合計を正規化して、適切なポイント数で割ってみませんか。はい、外れ値はそれをいくらか混乱させますが、それらはまたあなたの適合をいくらか混乱させるでしょう。

ICPが最小化するものよりも多くの洞察を提供する計算は、アルゴリズム自体に組み込む方が便利であるため、それも最小化できるようです。=)

アップデート

アルゴリズムがよくわからなかったと思います。ポイントのサブセットを繰り返し選択し、エラーを最小限に抑えるためにそれらを変換してから、これらの2つのステップを繰り返すようです。その場合、理想的なソリューションは、エラーを可能な限り小さく保ちながら、可能な限り多くのポイントを選択します。

2つの用語を組み合わせるのは弱い解決策のように思えますが、私にはあなたが望むものの正確な説明のように聞こえ、アルゴリズムの2つの主要な機能をキャプチャします(はい?)。のようなものを使用して評価することerror + B * (selected / total)は、勾配降下(および同様の)MLアルゴリズムの過剰適合問題に対処するために正則化が使用される方法と精神的に類似しているように見えます。Bに適切な値を選択するには、いくつかの実験が必要です。

于 2012-11-30T05:50:00.617 に答える
1

あなたの例を見ると、試合の良し悪しを決める要素の1つが点数の質だと思います。メトリックを計算する際に重み係数を使用/計算できますか?

たとえば、同一のフィーチャを定義している可能性が高いため、同一線上または同一平面上にあるポイント、または空間的に近いポイントに重みを付けることができます。それはおそらくあなたの逆三角形を拒否することを可能にするでしょう(ポイントが一直線上にあり、それは全体的なポーズの優れた指標ではないため)が、船体を大まかに定義するコーナーケースは問題ありません.

あるいは、ポイントがポーズの周りにどのように分布しているかに重み付けする必要があるかもしれません。ここでも、小さな不明瞭な機能を一致させるのではなく、適切なカバレッジを確保しようとします。

于 2012-12-06T16:58:42.937 に答える