2

私はmatlabにかなり慣れていませんが、状況は次のとおりです。私は海の衛星画像を持っています。そこには少しの陸地といくつかの船が写っています。しきい値処理を使用してバイナリ マスクと bwlabel を作成し、水上のボートに一致する一連のラベルを作成することができました。これは、ボート (および陸地) の上にラベルを重ね合わせた画像です。

ここに画像の説明を入力

画像からわかるように、ラベルはボートとその両側のいくつかの薄暗いサイドローブを囲んでいます。サイドローブではなくボートのみをカバーする新しいラベル セットを作成する方法を見つける必要があります。さまざまな明るさのボートを含む画像がたくさんあり、そのうちのいくつかは他のボートのサイドローブよりも暗いため、単に明るいしきい値を使用することはできません.

だから私が求めているのは、この画像から色付きのセクションを抽出し、それらをさらに分析して (個々のセグメントにしきい値を設定するか、ヒストグラムなどを使用して)、ボートのみを含む新しいラベルのセットを作成する方法があるかどうかです。 、元の画像に対するこれらの新しいラベルの位置をそのまま維持して、それらを元の画像に再度重ね合わせることができますか? もしそうなら、どのように?

ありがとう!

4

2 に答える 2

2

ここでいくつかの質問。

1. この画像から色付きの部分を抽出する方法はありますか?

はい。

から取得したラベル画像をbwlabelL元の画像を とするI。次に、S = regionprops(L,'BoundingBox');の各領域に関連付けられたバウンディング ボックスが表示されLます。I2 = imcrop(I,S(2).BoundingBox);で領域を抽出するために使用しS(2)ます。S(2)のラベル2に対応するかどうかを確認する必要がありますL(そうでない場合は、それを修正するのは簡単です)。

2. それらをさらに分析して (個々のセグメントのしきい値を設定するか、ヒストグラムなどを使用して)、ボートのみを含む新しいラベル セットを作成します。

それほど簡単ではありません。これは、イメージに大きく依存します。MATLAB の既定のしきい値関数を操作して、機能させることができます。トリミングされた各イメージのバイナリ マスクを取得するとします (例: IB1)。

3. また、これらの新しいラベルの元の画像に対する位置をそのまま維持して、それらを元の画像に再び重ね合わせることができますか?

はい。バウンディング ボックスのセットがあるのでS、新しいマスクを に置き換えるだけLです。

L(round(S(1).BoundingBox(2):S(1).BoundingBox(2)+S(1).BoundingBox(4)),... round(S(1).BoundingBox(1):S(1).BoundingBox(1)+S(1).BoundingBox(3))) = IB1;

I1改良されたマスクはどこにありますか。に割り当てるときに、マスク内のゼロ以外の値をすべてラベル インデックスに設定することを忘れないでくださいL

roundが使用される理由の詳細については、こちらを参照してください

于 2013-07-19T17:17:57.497 に答える
0

古い画像にラベル付きの領域 (またはラベル値が異なるため im_label~=0) を掛けて、無関係な情報を削除し、背景が削除された後に "whatever" メソッドを使用して画像を再度処理できますか?

于 2013-07-19T13:33:35.023 に答える