0

私は RANSAC アルゴリズム、つまりこの論文の RANSAC 実装を試しています:  http://cg.cs.uni-bonn.de/en/publications/paper-details/schnabel-2007-effective/

著者が提供したコードベースを使用します。Kinect 1 で取得したマグカップなどのオブジェクトをプリミティブな形状にセグメント化しようとしています。

私の問題は、同じオブジェクト ポイント クラウドでプリミティブ形状検出を実行するたびに、異なる結果が得られることです。たとえば、1 回の実行で 3 つの円柱と 1 つの円錐が検出され、次の実行で 2 つのトーラスと 1 つの球体が検出されます。 .

候補オブジェクト プリミティブの最初のポイントがランダムに選択されることはわかっています。そのため、コードでは、ランダム シード パラメータを静的な数値に設定しています。その場合、私の結果は常にあるべきものと同じです。しかし、RANSAC は、たとえば実際の時間のような非静的シードを使用しても、同じまたはほぼ同じ結果を生成するべきではありませんか?

4

2 に答える 2

1

RANSAC は RANdom SAmple Consensus の略で、反復アルゴリズムであり、その習慣的な形式では、反復回数が最大になった後、または特定の基準 (エラーの最小化) が達成された場合に停止します。「ランダム」部分とは、データセットによっては、RANSAC を適用しても必ずしも同じ結果が得られない可能性があることを意味します。特に、エラーを十分に最小化するのではなく、最大反復回数に達したために停止した場合はそうです。そのように動作する多くの数値ソルバーがあります。 コンピューティングでは、モンテカルロ アルゴリズムはランダム化されたアルゴリズムであり、その実行時間は決定論的ですが、その出力は特定の (通常は小さい) 確率で正しくない可能性があります。これは、いわゆる「ラスベガス」アルゴリズムの反対です。コンピューティングでは、ラスベガス アルゴリズムはランダム化されたアルゴリズムであり、常に正しい結果が得られます。つまり、常に正しい結果を生成するか、失敗について通知しますが、一連の時間/計算リソース内でそれを行うことを保証することはできません。

さて、あなたが言及した特定の実装についてはわかりませんが、これはその種のアルゴリズムでどのように機能するかです。

于 2015-04-21T14:44:12.390 に答える