2

2D 画像を同様の値のブロブに効率的にセグメント化するにはどうすればよいですか? 指定された入力は整数の配列で、グレー以外のピクセルの色相とグレーのピクセルの明るさを含みます。

私は Java を使用して仮想移動ロボットを作成しており、セグメンテーションを使用してマップとカメラからの画像を分析しています。これはComputer Visionではよく知られている問題ですが、ロボットの場合はパフォーマンスが重要になるため、いくつかの入力が必要でした。重要なのはアルゴリズムなので、どの言語でもコードを投稿できます。

4

5 に答える 5

3

色空間とピクセル数でダウンサンプリングし、ビジョンメソッド(おそらく平均シフト)を使用して、結果をアップスケールします。

ダウンサンプリングはノイズに対するロバスト性も高め、意味のあるセグメントを取得する可能性を高めるため、これは良いことです。

滑らかさが必要な場合は、後でフラッドフィルを使用してエッジを滑らかにすることができます。

もう少し考えます(あなたのコメントに応じて)。

1) ダウンサンプリングしたときにブレンドしましたか? y[i]=(x[2i]+x[2i+1])/2 これにより、ノイズが除去されるはずです。

2) どのくらい速くしたいですか?

3) 動的な平均シフトを試しましたか?

于 2008-12-10T08:53:10.737 に答える
2

効率が良すぎるかどうかはわかりませんが、Kohonen ニューラル ネットワーク(または、自己組織化マップ; SOM) を使用して、各ピクセルに元の色と位置が含まれ、色のみが使用される類似の値をグループ化してみてください。こうほうへんグルーピング。

ただし、Kohonen ネットワークに関する私の知識は、データのグループ化に使用されているということなので、これを実装する前に読む必要があります。そのため、シナリオのパフォーマンス/実行可能性のオプションが何であるかはわかりません。

ホップフィールド ネットワークもあります。それらは、私が読んだものからグループ分けすることができます。

于 2008-12-10T10:33:15.697 に答える
0

私が今持っているもの:

  1. に初期化された、入力イメージと同じサイズのバッファーを作成しUNSEGMENTEDます。
  2. 対応するバッファ値が ではないイメージ内の各ピクセルについてUNSEGMENTED、ピクセル値を使用してバッファをあふれさせます。

    a. フラッディングの境界チェックは、ピクセルがEPSILON元のピクセルの値の範囲内 (現在は 10 に設定) にあるかどうかをチェックすることによって行われます。

    b. フラッド フィリング アルゴリズム

考えられる問題:

2.a. の境界チェックは、フラッド フィリング アルゴリズムで何度も呼び出されます。エッジ検出を使用して境界線を事前に計算できれば、それをルックアップに変えることができますが、現在のチェックよりも時間がかかる可能性があります。

private boolean isValuesCloseEnough(int a_lhs, int a_rhs) {
    return Math.abs(a_lhs - a_rhs) <= EPSILON;
}

可能な拡張:

のすべてのピクセルをチェックする代わりにUNSEGMENTED、いくつかの点をランダムに選ぶことができます。約 10 個のブロブが予想される場合は、その順序でランダム ポイントを選択するだけで十分な場合があります。欠点は、有用ではあるが小さなブロブを見逃す可能性があることです。

于 2008-12-10T08:29:24.247 に答える
0

フラッド フィルの代替は、接続されたコンポーネントアルゴリズムです。そう、

  1. ピクセルを安価に分類します。たとえば、色空間でピクセルを分割します。
  2. cc を実行してブロブを見つけます
  3. かなりのサイズのブロブを保持する

このアプローチは、初期の視覚アプローチで広く使用されています。たとえば、独創的な論文「Blobworld: A System for Region-Based Image Indexing and Retrieval」。

于 2009-02-18T09:52:19.397 に答える
0

Eyepatch (eyepatch.stanford.edu) をチェックしてください。セグメンテーションに使用できるさまざまなフィルターを提供することで、調査段階で役立つはずです。

于 2008-12-14T17:29:43.097 に答える