ドキュメンテーション

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

imerode

構文

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

説明

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

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

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

IM2 = imerode(___,PACKOPT,M)IM がパックされたバイナリ イメージかどうかを指定し、パックされている場合は、パックされていない元のイメージの行数 M を与えます。PACKOPT は次のいずれかの値をとることができます。既定値は、中かっこ ({}) で囲まれています。

説明

'ispacked'

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

{'notpacked'}

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

PACKOPT'ispacked' の場合、M の値を指定しなければなりません。

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

説明

{'same'}

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

'full'

すべての収縮処理を計算します。

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

クラス サポート

IM は、数値または論理値で、任意の次元にすることができます。IM が論理値で、構造化要素がフラットな場合、出力イメージは論理値になります。その他の場合、出力イメージは、入力と同じクラスになります。入力がパックされたバイナリの場合、出力もパックされたバイナリになります。

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

すべて折りたたむ

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

originalBW = imread('text.png');

フラットなライン状の構造化要素を作成します。

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

構造化要素を使用してイメージを収縮させます。

erodedBW = imerode(originalBW,se);

元のイメージと収縮されたイメージを表示します。

figure
imshow(originalBW)

figure
imshow(erodedBW)

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

originalI = imread('cameraman.tif');

非フラットな offsetstrel オブジェクトを作成します。

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

イメージを収縮します。

erodedI = imerode(originalI,se);

元のイメージと収縮されたイメージを表示します。

figure
imshow(originalI)

figure
imshow(erodedI)

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

originalBW = imread('text.png');

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

se = strel('line',11,90);
erodedBW = imerode(gpuArray(originalBW),se);
figure, imshow(originalBW), figure, imshow(erodedBW)

GPUarray を作成してイメージを収縮します。

erodedBW = imerode(gpuArray(originalBW),se);

元のイメージと収縮されたイメージを表示します。

figure, imshow(originalBW), figure, imshow(erodedBW)

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

originalI = imread('cameraman.tif');

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

se = strel('disk',5);

GPUarray を作成してイメージを収縮します。

erodedI = imerode(gpuArray(originalI),se);

元のイメージと収縮されたイメージを表示します。

figure
imshow(originalI)
figure
imshow(erodedI)

バイナリ ボリュームを作成します。

load mristack
BW = mristack < 100;

立方体の構造化要素を作成します。

se = strel('cube',3)
se = 
strel is a cube shaped structuring element with properties:

      Neighborhood: [3×3×3 logical]
    Dimensionality: 3

立方体の構造化要素を使用してボリュームを収縮します。

erodedBW = imerode(BW, se);

詳細

すべて折りたたむ

バイナリ収縮

A 行 B 列の "バイナリ収縮" は、A B のように記述され、集合演算 A B = {z|(Bz ⊆ A} で定義されます。すなわち、これはピクセル位置 z の集合です。ここで、位置 z に変換された構造化要素は、A の前景ピクセルと重複します。

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

グレースケール収縮

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

(A B)(x, y) = min {A(x + x′, y + y′) − B(x′, y′) | (x′, y′) ∊ DB}

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

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

(A B)(x, y) = min {A(x + x′, y + y′) | (x′, y′) ∊ DB}

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

アルゴリズム

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

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

参照

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

[2] Haralick, Robert M., and Linda 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 より前に導入

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