2012-11-28 12 views
10

私はiterative closest point(ICP)アルゴリズムを書いており、モデルをポイントクラウドに適合させることができます。知っていない人のための簡単なチュートリアルとして、ICPはモデルにポイントする単純なアルゴリズムであり、最終的にモデルとポイントの間に均質な変換マトリックスを提供します。ICP、内部メトリクスの保証

ここでは簡単な画像チュートリアルです。互いに接近して雲を引っ張る(時にはグラジエント型の降下やSVDに基づいて)楽しい数学の束を使用し、それまでは繰り返し:

ステップ2:

ステップ1.データセットに設定し、モデル内の最も近い点を探しますポーズが形成されている:

[図2] [2]

今、そのビットがあると私は助けをご希望のものを、シンプルかつ作業です! はどのように教えてください、私が持っているポーズがある場合いいもの?

だから、現在、私は2つのアイデアを持っているが、彼らは一種のハックです:

  1. ICPアルゴリズムであるどのように多くのポイント。つまり、ポイントがほとんどない場合は、ポーズが悪いと仮定します。

    ポーズが実際に良好な場合はどうなりますか?それは、たとえわずかな点であっても可能性があります。それでは、私たちはここを参照してくださいすることは、彼らが正しい場所にある場合は、低ポイントは実際には非常に良いポジションを作ることができるということです

Figure 5

:私は良いポーズを拒否したくありません。

したがって、調査された他の測定基準は、使用されたポイントに対する供給ポイントの比率です。ここでは例

Figure 6

だ今、私たちは、彼らが外れ値となりますので、あまりにも遠く離れているポイントをエクスクルード、今これはICPが動作するために、我々は良いスタート位置を必要とすることが、私はそれでOKです。さて、上記の例では保証は、これは悪いポーズで、NOと言うだろう、と含まれる点対ポイントの割合であるため、それは右のようになります。

2/11 < SOME_THRESHOLD 

はとても良いthatsのが、それは場合に失敗します三角形を上下に逆さまにした上に示されている。すべてのポイントがICPによって使用されているため、逆さまの三角形が良いと言えます。

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

この2つのソリューションを一緒に使用することは良い提案ですが、私に尋ねると非常に愚かな解決策です。

どうすればよいですか?

PS。いくつかのコードを追加したい場合は、それを行ってください。私はC++で働いています。

PPS。誰かがこの質問にタグを付けるのを助けます。どこに落ちるのかわかりません。

+0

ポーズはどのように定義されていますか?線分は? – FoolishSeth

+0

同次変換行列です。 –

+0

あなたは解決策を見つけましたか?あなたは答えで提供された何かを使ったことがありますか、あなた自身の何かを考え出しましたか? – Andrei

答えて

3

可能なアプローチの1つは、姿勢と姿勢を比較することです。

図形比較がHausdorff distance up to isometryで行うことができ、それはd_thresholdが実験から見出されるべきである

d(I(actual_pose), calculated_pose) < d_threshold 

場合ポーズは同じ形状のものです。 Xの等尺性修正として、異なる角度での回転を考える - この場合は十分であるように思われる。

ポーズは同じ形をしていますか、その向きを比較する必要があります。オリエンテーションを比較するには、やや簡略化したFreksa modelを使用します。それぞれについて、我々は値

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

を計算して、ポーズに対応する値の間の各差は、同様の実験から得られ、another_thresholdを破壊しないことを確認する必要があり提起します。

うまくいけば、これは、いくつかの理にかなっている、または少なくともあなたがここからあなたの目的のために有益な何かを描くことができます。

+0

私は今までこれを正しく読み取っていませんでした。 2番目の提案については、比較を行うために実際の姿勢が必要ですか?私たちは実際のポーズを持っていないので、動作しません。 –

1

ICPはそう、あなたのポイント・クラウドとモデルの間の距離を最小限に抑えようと?実行後の実際の距離に基づいて評価するのが最も理にかなっていませんか?

私はそれはあなたが合うようにしようとすると、最も近いモデル点各点間の距離の二乗の総和を最小化しようとすると仮定しています。ですから、品質に関する指標が必要な場合は、その合計を正規化するだけでなく、適合する点の数で割ってみましょう。はい、外れ値は多少それを混乱させますが、あなたもやはりあなたのフィット感を混乱させるでしょう。

それはそれが何であれICPが、それはあまりにもそれを最小限に抑えることができるように、アルゴリズム自体に組み込まれた、より有用であろう最小化されるよりも多くの洞察を提供し、あなたが思い付くことができます任意の計算のように思えます。 =)

更新

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

次の2つの条件を組み合わせること(はい?)弱いソリューションのように思えたが、それはあなたが何をしたいの正確な説明のように私に聞こえる、そしてそれは、アルゴリズムの二つの主要な特徴を捉えました。 error + B * (selected/total)のようなものを使用して評価することは、勾配降下(および同様の)MLアルゴリズムのオーバーフィット問題に対処するために正規化がどのように使用されるかと精神的に類似しているようです。 Bの値を適切に選択すると、いくつかの実験が必要になります。

+0

残念ながら、あなたが最小化しようとしている値に基づいて、姿勢が正しいことを保証することは、あまり良い考えではありません。ポーズが極小になるたびに、良いポーズが表示されます。 ICPが正しく動作していれば、実際には良い姿勢を示すでしょうが、これはあまり良くありません。 しかし、良い答えです。 –

+0

これはあまり意味がありません。もちろん、アルゴリズムは極小値に達することができますが、最小化しようとする値は、全体最適を見つけた場合と同じくらい小さくなりません。 – FoolishSeth

+0

通常の場合、ICPは可能ですが、ポイントの閾値除去では、それはしばしば全体的な最小値に似ているか小さいです。また、モデルポイントはデータポイントと正確に一致しないことを覚えておく必要があります。私たちはこの方法を試してみて、それが私たちの目的にはあまり適していないことを発見しました。 –

1

はあなたの例を見てみると、試合が良いか否かを判断するものの一つは、ポイントの品質であると思われます。メトリックを計算する際に重み係数を使用/計算できますか?彼らはおそらく同じ機能を定義するよう

はたとえば、あなたは、共同リニア/同一平面、または空間的に接近しているポイントを下に重み付けすることができます。それはおそらくあなたの逆さま三角形が拒否されることを可能にします(ポイントが線にあり、全体ポーズの偉大な指標ではない)が、大体船体を定義するので、コーナーケースは大丈夫でしょう。

また、ポーズの周りに点がどのように分布しているかを確認し、小さな不明瞭なフィーチャにマッチさせるのではなく、良好なカバレッジを確実にするようにしてください。

+0

良い提案です。これが行われた場所に論文や参考文献がありますか?また、計算強度について心配していますが、これは非常に集中的になると思いますか?モデルが複雑で、三角形、トラック、飛行機など、形状のカバレッジを調べるにはどうしたらいいですか? –

+0

Siggraphの議事録には何かがあるかもしれませんが、これは私が進むにつれてかなり上手くいっていますが、それは身近な問題のように感じます。とにかく、私はおそらくラフなオクトツリーを構築するのはかなり安いと思っています。カバレッジの指標としてマッチポイントを含むリーフノードの数を使用できます。 – JasonD

関連する問題