ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imdilate

構文

J = imdilate(I,SE)
J = imdilate(I,nhood)
J = imdilate(___,packopt)
J = imdilate(___,shape)

説明

J = imdilate(I,SE) は、グレースケール、バイナリまたはパックされたバイナリ イメージ I を膨張処理して、膨張されたイメージ J を返します。SE は関数 strel または offsetstrel で返される構造化要素オブジェクトまたはその配列です。

オプションで、膨張を GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

J = imdilate(I,nhood) は、イメージ I を膨張処理します。ここで、nhood は構造化要素近傍を指定する 0 と 1 から構成される行列です。imdilatefloor((size(nhood)+1)/2) で近傍の中心要素を決定します。

この構文は、imdilate(I,strel(nhood)) と等価です。

J = imdilate(___,packopt)I がパックされたバイナリ イメージであるかどうかを指定します。

GPU では、この構文はサポートされていません。

J = imdilate(___,shape) は出力イメージのサイズを指定します。

すべて折りたたむ

バイナリ イメージをワークスペースに読み取ります。

BW = imread('text.png');

垂直線状の構造化要素を作成します。

se = strel('line',11,90);

垂直線の構造化要素を使用してイメージを膨張させ、結果を比較します。

BW2 = imdilate(BW,se);
imshow(BW), title('Original')

figure, imshow(BW2), title('Dilated')

グレースケール イメージをワークスペースに読み取ります。

originalI = imread('cameraman.tif');

非フラットなボール形状の構造化要素を作成します。

se = offsetstrel('ball',5,5);

イメージを膨張します。

dilatedI = imdilate(originalI,se);

元のイメージと膨張したイメージを表示します。

imshowpair(originalI,dilatedI,'montage')

2 つのフラットなライン状の構造化要素を、それぞれ 0 度と 90 度で作成します。

se1 = strel('line',3,0)
se1 = 
strel is a line shaped structuring element with properties:

      Neighborhood: [1 1 1]
    Dimensionality: 2

se2 = strel('line',3,90)
se2 = 
strel is a line shaped structuring element with properties:

      Neighborhood: [3x1 logical]
    Dimensionality: 2

両方の構造化要素のシーケンスと、'full' オプションを使用して、スカラー値 1 を膨張します。

composition = imdilate(1,[se1 se2],'full')
composition = 3×3

     1     1     1
     1     1     1
     1     1     1

2 つの点を含む 3 次元論理ボリュームを作成します。

BW = false(100,100,100);
BW(25,25,25) = true;
BW(75,75,75) = true;

球状の構造化要素を使用して 3 次元ボリュームを膨張します。

se = strel('sphere',25);
dilatedBW = imdilate(BW,se);

膨張したイメージ ボリュームを可視化します。

figure
isosurface(dilatedBW, 0.5)

入力引数

すべて折りたたむ

入力イメージ。任意の次元のグレースケール イメージ、バイナリ イメージまたはパックされたバイナリ イメージとして指定します。

GPU を使用して膨張を実行するには、Iuint8 型または logical 型のイメージを含む gpuArray として指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

構造化要素。スカラー strel オブジェクトまたは offsetstrel オブジェクトとして指定します。SE は、strel オブジェクトまたは offsetstrel オブジェクトの配列にすることもできます。この場合、imdilate は各構造化要素を続けて使用して入力イメージの膨張を複数実行します。

imdilatelogical データ型のイメージを除くすべてのイメージに対してグレースケールの膨張処理を実行します。この場合、構造化要素はフラットでなければなりません。imdilate はバイナリ膨張を実行します。

GPU を使用して膨張を実行する場合、SE はフラットかつ 2 次元でなければなりません。

構造化要素近傍。0 と 1 から成る行列として指定します。

例: [0 1 0; 1 1 1; 0 1 0]

パックされたバイナリ イメージのインジケーター。次のいずれかに指定します。

説明

'notpacked'

I は、通常の配列として取り扱われます。

'ispacked'

I は、bwpack で出力されるパックされたバイナリ イメージとして取り扱われます。I は 2 次元の uint32 配列で、SE はフラットな 2 次元構造化要素でなければなりません。shape の値は 'same' でなければなりません。

メモ

GPU では packopt 引数はサポートされていません。

データ型: char | string

出力イメージのサイズ。次のいずれかに指定します。

説明

'same'

出力イメージは入力イメージと同じサイズです。packopt の値が 'ispacked' の場合、shape'same' でなければなりません。

'full'

すべての膨張処理を計算します。

データ型: char | string

出力引数

すべて折りたたむ

膨張されたイメージ。グレースケール イメージ、バイナリ イメージまたはパックされたバイナリ イメージとして返されます。入力イメージ I がパックされたバイナリの場合、J もパックされたバイナリになります。JI と同じクラスです。

GPU を使用して膨張を実行する場合、JI と同じクラスのグレースケール イメージまたはバイナリ イメージを含む gpuArray として返されます。

詳細

すべて折りたたむ

バイナリ膨張

B による A の "バイナリ膨張" は、AB のように記述され、次の集合演算で定義されます。

AB={z|(B^)zA},

ここで、B^ は構造化要素 B の鏡映です。すなわち、これはピクセル位置 z の集合です。ここで、反転した構造化要素は、z に変換された場合、A の前景ピクセルと重複します。構造化要素が反転しない膨張の定義を使用する場合もあることに注意してください。

バイナリ膨張の詳細については、[1] を参照してください。

グレースケール膨張

一般的な形式の "グレースケール膨張" では、構造化要素に高さが含まれます。B(x,y) による A(x,y) のグレースケール膨張は、次のように定義されます。

(AB)(x,y)=max{A(xx,yy)+B(x,y)|(x,y)DB},

ここで、DB は構造化要素 B の領域で、A(x,y) はイメージの領域外で −∞ と仮定されます。高さの値にゼロ以外の値を指定して構造化要素を作成するには、構文 strel(nhood,height) を作成します。ここで、height は高さの値を指定し、nhood は構造化要素の領域 DB に対応します。

最も一般的なグレースケール膨張は、フラットな構造化要素 (B(x,y) = 0) を使用して実行されます。このような構造化要素を使用するグレースケール膨張は、局所的最大値の演算と等価です。

(AB)(x,y)=max{A(xx,yy)|(x,y)DB}.

strel(nhood,height)strel('arbitrary',nhood,height) および strel('ball', ...) 以外のすべての strel 構文は、フラットな構造化要素を生成します。

アルゴリズム

imdilate は、構造化要素オブジェクトの分解を自動的に利用しています。また、分解された構造化要素オブジェクトを使用して、バイナリ膨張を行う場合、imdilate は、自動的にパックされたバイナリ イメージを使い、高速化を行います。

ビット圧縮を使用した膨張は、[3] を参照してください。

参照

[1] Gonzalez, R. C., R. E. Woods, and S. L. Eddins, Digital Image Processing Using MATLAB, Gatesmark Publishing, 2009.

[2] Haralick, R. M., and L. G. Shapiro, Computer and Robot Vision, Vol. I, Addison-Wesley, 1992, pp. 158-205.

[3] van den Boomgard, R, and R. van Balen, "Methods for Fast Morphological Image Transforms Using Bitmapped Images," Computer Vision, Graphics, and Image Processing: Graphical Models and Image Processing, Vol. 54, Number 3, pp. 254-258, May 1992.

拡張機能

参考

関数

オブジェクト

R2006a より前に導入