1

重複の可能性:
ぼやけた画像で細い線を検出する

タイトルが示すように、パターンの境界を検出しようとしています。添付画像では、基本的に3つの異なるパターンを見ることができます。

  1. ストライプラインを閉じる
  2. 1本の太いL字ライン
  3. 1と2の間のエリア

私はこれらの 3 つ、たとえば 3 つの別々の画像を分離しようとしています。回答がどこに行くかによって異なりますが、必要に応じてさらに画像をアップロードします。アイデアまたはコードの両方が役立ちます。

ここに画像の説明を入力

4

3 に答える 3

2

モルフォロジーを使用して、この問題を解決できます(「解決」の値によっては)。まず、画像をより均一にするために、無関係な最小値を削除します。これを行う1つの方法は、高さ<の最小値を抑制する極小値にh-dome変換を使用することですh。さて、細い線をつなぎたいと思います。それは、長さの水平線を持つ形態学的開口部によって達成されlます。線がマージされた場合、現在の画像の極小値が背景になります。したがって、穴を埋めて関連するコンポーネントを取得できます。次のコードは、これらのタスクを要約したものです。

f = rgb2gray(imread('http://i.stack.imgur.com/02X9Z.jpg'));
hm = imhmin(f, h);
o = imopen(hm, strel('line', l, 0));
result = imfill(~imregionalmin(o), 'holes');

今、あなたは決定する必要がありhますl。このパラメーターhは、入力のスケールとは関係がないため、より簡単であると予想されます。この例では、[10、30]の範囲の値が適切に機能します。l多分粒度分布分析を決定することは役立つかもしれません。もう1つの方法はresult、より大きなL字型と細い線の領域に対応する2つの重要な連結成分が含まれているかどうかを確認することです。l一つずつ増やす必要はありません。二分探索に似た何かを実行できます。

これが、、およびとの画像です([13、19]の画像はここでも同様に機能します)hm。このアプローチにより、パラメーターの選択に柔軟性がもたらされ、適切な値の選択/検索が容易になります。oresulth = 30l = 15l

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

2つの最大のコンポーネント間のスペースの面積を計算するには、それらをマージして、新しく接続されたコンポーネント内の黒いピクセルを数えるだけです。

于 2012-12-12T15:30:11.450 に答える
0

アイデアを捨てるだけです。画像を2値化し、連結成分のラベル付けを行うことができます。次に、幅などの連結成分に対していくつかの分析を実行して、領域を区別します。

于 2012-12-12T16:03:44.803 に答える
0

ウィンドウ (10x10 ピクセル?) を渡し、そのウィンドウの特徴を収集できます。機能は、そのウィンドウ内の累積勾配 (エッジ)と同じくらい単純なものである可能性があります。ウィンドウが十分に大きい限り、これはさまざまな領域を区別します。

次に、各ウィンドウをデータ ポイントとして使用して、クラスタリングを実行できます。または、パターンがそれほど変化しない場合は、簡単なしきい値を実行して、どのデータ ポイントがどのパターンに属しているかを判断できます (大きな勾配の合計は小さな線に属します)。 : より多くのエッジがあり、最小の勾配の合計は最も太い線に属します: 1 つのエッジのみとその間のエッジは、他の「中間」パターンに属します。

この分類ができたら、必要に応じて個別の画像を作成できます。

于 2012-12-12T14:11:11.573 に答える