ドキュメンテーション

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

imdilate

構文

IM2 = imdilate(IM,SE)
IM2 = imdilate(IM,NHOOD)
IM2 = imdilate(___,PACKOPT)
IM2 = imdilate(___,SHAPE)
gpuarrayIM2 = imdilate(gpuarrayIM,___)

説明

IM2 = imdilate(IM,SE) は、グレースケール イメージ、バイナリ イメージまたはパックされたバイナリ イメージ IM に膨張操作を行い、結果のイメージ IM2 を返します。引数 SE は、構造化要素オブジェクトまたは構造化要素オブジェクトの配列で、関数 strel または offsetstrel で作成されます。

IM が論理値の場合、構造化要素はフラットでなければなりません。この場合、imdilate はバイナリ膨張を実行します。その他の場合、imdilate はグレースケール膨張を実行します。SE が構造化要素オブジェクトの配列の場合、imdilate は、連続的に個々の構造化要素を使用して入力イメージの膨張を複数実行します。

IM2 = imdilate(IM,NHOOD) は、イメージ IM を膨張処理します。ここで、NHOOD は、構造化要素近傍を指定する 0 と 1 から構成される行列です。これは、構文 imdilate(IM,strel(NHOOD)) と等価です。関数 imdilate は、floor((size(NHOOD)+1)/2) で近傍の中心要素を決定します。

IM2 = imdilate(___,PACKOPT)IM がパックされたバイナリ イメージかどうかを指定します。PACKOPT は以下のいずれかの値をとることができます。既定値は、中かっこ ({}) で囲まれています。

説明

'ispacked'

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

{'notpacked'}

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

IM2 = imdilate(___,SHAPE) は出力イメージのサイズを指定します。SHAPE は次のいずれかの値をとることができます。既定値は、中かっこ ({}) で囲まれています。

説明

{'same'}

入力イメージと同じサイズの出力イメージを作成します。PACKOPT の値が 'ispacked' の場合、SHAPE'same' でなければなりません。

'full'

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

gpuarrayIM2 = imdilate(gpuarrayIM,___) は、GPU (グラフィックス処理装置) で処理を実行します。ここで、gpuarrayIM はグレースケール イメージまたはバイナリ イメージを含む gpuArray です。gpuarrayIM2 は入力イメージと同じクラスの gpuArray です。PACKOPT 構文は GPU ではサポートされていないので注意してください。この構文では Parallel Computing Toolbox™ が必要です。

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

クラス サポート

IM は、論理値か数値のいずれかで、実数で非スパースでなければなりません。それは任意の次元にできます。IM が logical の場合、SE はフラットでなければなりません。出力は入力と同じクラスになります。入力がパックされたバイナリの場合、出力もパックされたバイナリになります。

gpuarrayIMuint8 型または logical 型の gpuArray でなければなりません。gpuarray と併用する場合、構造化要素はフラットかつ 2 次元でなければなりません。出力は入力と同じクラスになります。

すべて折りたたむ

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

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);

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

figure
imshow(originalI)
figure
imshow(dilatedI)

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

se1 = strel('line',3,0)
se2 = strel('line',3,90)
se1 = 

strel is a line shaped structuring element with properties:

      Neighborhood: [1 1 1]
    Dimensionality: 2


se2 = 

strel is a line shaped structuring element with properties:

      Neighborhood: [3×1 logical]
    Dimensionality: 2

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

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

     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)

バイナリ イメージを読み取ります。

 originalBW = imread('text.png');

構造化要素を作成します。

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

垂直線の構造化要素を使用してイメージを膨張させ、結果を比較します。この例において、イメージが imdilate に渡される際、どのようにして関数 gpuArray に渡されるのかに注意してください。

dilatedBW = imdilate(gpuArray(originalBW),se);
figure, imshow(originalBW), figure, imshow(dilatedBW)

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

 originalI = imread('cameraman.tif');

構造化要素を作成します。

 se = strel('disk',5);

ローリング ボールの構造化要素を使用して、グレースケール イメージに膨張を適用します。

dilatedI = imdilate(gpuArray(originalI),se);
figure, imshow(originalI), figure, imshow(dilatedI)

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。汎用の MATLAB Host Computer ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、この関数によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細は、「Image Processing Toolbox のコード生成について」を参照してください。

コード生成時には、以下の点に注意してください。

  • 入力イメージ IM は 2 次元または 3 次元でなければなりません。

  • 構造化要素引数 SE は単一の要素でなければなりません。構造化要素の配列はサポートされていません。構造化要素の配列を使用した場合と同じ結果を得るには、関数を順次呼び出します。

  • ターゲットが MATLAB Host Computer の場合、引数 PACKOPT および SHAPE はコンパイル時の定数でなければなりません。ターゲットがその他のプラットフォームの場合には、PACKOPT 構文はサポートされません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

アルゴリズム

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 より前に導入

この情報は役に立ちましたか?