1

添付の画像[説明のみ]に示すように、ランダムな長さの3列の線があります。一定のNピクセルより短い線を削除したいのですが。

仮定:

  1. 行はすべて行になっています
  2. 線は1ピクセル幅です
  3. 線は境界線に接続されている場合があります。

私はこれを助けることができるアイデア/ガイドを探しています。ありがとう。ここに画像の説明を入力してください

4

1 に答える 1

2

基になる画像のバイナリ表現を直接処理する可能性をスキップして、この特定のタスクの非常に高速な実装を可能にするために、数学的形態学を使用して(効率的に)解決しましょう。

ここで必要なのは、長さの水平線とnそれに続く形態学的再構成による侵食です。前者は、長さが<の短い行を完全に削除しnます。後者は、除去されなかった侵食された線を完全に回復します。

を使用した例を次に示しn = 25ます。後者は実際の行の長さが指定されたものであることを保証しないため、構造化要素としてones(1, 25)代わりに使用しました。strel('line', 25, 0)

f = im2bw(imread('http://i.stack.imgur.com/1Uw0x.png'), 0);
g = imerode(f, strel('arbitrary', ones(1, 25)));
h = imreconstruct(g, f);

侵食および再構成された画像:

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

于 2012-12-13T20:25:55.483 に答える