Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

イメージの膨張による形状の拡大

この例では、関数imdilateを使用してイメージを膨張させる方法を説明します。モルフォロジー膨張演算はイメージ内の前景オブジェクトを拡大するか、太くします。

1 つの前景オブジェクト (イメージの中央にある 1 をもつ四角形の領域) を含むシンプルなサンプル バイナリ イメージを作成します。

BW = zeros(9,10);
BW(4:6,4:7) = 1
BW = 9×10

     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     1     1     1     1     0     0     0
     0     0     0     1     1     1     1     0     0     0
     0     0     0     1     1     1     1     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0

imshow(imresize(BW,40,'nearest'))

imdilate で使用する構造化要素を作成します。幾何オブジェクトを膨張させる場合は通常、膨張させるオブジェクトと同じ形状の構造化要素を作成します。

SE = strel('square',3)
SE = 
strel is a square shaped structuring element with properties:

      Neighborhood: [3x3 logical]
    Dimensionality: 2

入力イメージと構造化要素を imdilate に渡してイメージを膨張させます。膨張によって 1 のランクが前景オブジェクトのすべての面にどのように追加されるかを確認してください。

BW2 = imdilate(BW,SE)
BW2 = 9×10

     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     1     1     1     1     1     1     0     0
     0     0     1     1     1     1     1     1     0     0
     0     0     1     1     1     1     1     1     0     0
     0     0     1     1     1     1     1     1     0     0
     0     0     1     1     1     1     1     1     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0

imshow(imresize(BW2,40,'nearest'))

比較のために、形状の異なる構造化要素を作成します。新しい構造化要素を使用して元のイメージを膨張させます。

SE2 = strel('diamond',1);
BW3 = imdilate(BW,SE2);
imshow(imresize(BW3,40,'nearest'))