Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

imerode

説明

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

J = imerode(I,nhood) は、イメージ I を収縮させます。ここで、nhood は、構造化要素近傍を指定する 01 から構成される行列です。関数 imerode は、floor((size(nhood)+1)/2) で近傍の中心要素を決定します。

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

J = imerode(___,packopt,m) は入力イメージ I がパックされたバイナリ イメージかどうかを指定します。m はパックされていない元のイメージの行の次元を指定します。

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

すべて折りたたむ

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

originalBW = imread('text.png');

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

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

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

erodedBW = imerode(originalBW,se);

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

figure
imshow(originalBW)

Figure contains an axes. The axes contains an object of type image.

figure
imshow(erodedBW)

Figure contains an axes. The axes contains an object of type image.

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

originalI = imread('cameraman.tif');

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

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

イメージを収縮します。

erodedI = imerode(originalI,se);

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

figure
imshow(originalI)

Figure contains an axes. The axes contains an object of type image.

figure
imshow(erodedI)

Figure contains an axes. The axes contains an object of type image.

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

load mristack
BW = mristack < 100;

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

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

      Neighborhood: [3x3x3 logical]
    Dimensionality: 3

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

erodedBW = imerode(BW, se);

入力引数

すべて折りたたむ

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

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

構造化要素。スカラー strel オブジェクトまたは offsetstrel オブジェクトとして指定します。SEstrel オブジェクトまたは offsetstrel オブジェクトの配列にもなります。この場合、imerode は、各構造化要素を続けて使用して入力イメージの収縮を複数実行します。

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

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

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

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

説明

'notpacked'

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

'ispacked'

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

データ型: char | string

元のパックされていないイメージの行の次元。正の整数を指定します。

データ型: double

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

説明

'same'

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

'full'

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

データ型: char | string

出力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

バイナリ収縮

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