Main Content

imerode

説明

J = imerode(I,SE) は、構造化要素 SE を使用して、グレースケール イメージ、バイナリ イメージ、またはパックされたバイナリ イメージ I の収縮処理を行います。

J = imerode(I,nhood) は、イメージ I を収縮させます。ここで、nhood は、構造化要素近傍を指定する 01 から構成される行列です。

この構文は、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
imshow(erodedBW)

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

originalI = imread('cameraman.tif');

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

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

イメージを収縮します。

erodedI = imerode(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: [3x3x3 logical]
    Dimensionality: 3

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

erodedBW = imerode(BW, se);

入力引数

すべて折りたたむ

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

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

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

imerode は、データ型 logical のイメージを除くすべてのイメージに対してグレースケールの収縮処理を実行します。この場合、構造化要素はフラットでなければなりません。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 もパックされたバイナリになります。J のデータ型は I と同じです。

詳細

すべて折りたたむ

バイナリ収縮

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 構文は、フラットな構造化要素を生成します。

ヒント

  • イメージ I の次元が構造化要素の次元より高い場合、関数 imerode は、高次元のすべての平面に対して同じモルフォロジー収縮を適用します。

    この動作を使用して、RGB イメージのモルフォロジー収縮を行うことができます。カラー チャネル別に処理を行うには、RGB イメージの 2 次元構造化要素を指定します。

  • 構造化要素近傍を指定した場合、imerode は、floor((size(nhood)+1)/2) によって nhood の中心要素を決定します。

  • imerode は、構造化要素オブジェクト (存在する場合) の分解を自動的に利用しています。また、分解された構造化要素オブジェクトを使用してバイナリ収縮を行う場合、imerode は、自動的にバイナリ イメージ パックを行って収縮処理を高速化します[3]

参照

[1] Gonzalez, Rafael C., Richard E. Woods, and Steven L. Eddins. Digital Image Processing Using MATLAB. Third edition. Knoxville: Gatesmark Publishing, 2020.

[2] Haralick, Robert M., and Linda G. Shapiro. Computer and Robot Vision. 1st ed. USA: Addison-Wesley Longman Publishing Co., Inc., 1992, pp. 158-205.

[3] Boomgaard, Rein van den, and Richard van Balen. “Methods for Fast Morphological Image Transforms Using Bitmapped Binary Images.” CVGIP: Graphical Models and Image Processing 54, no. 3 (May 1, 1992): 252–58. https://doi.org/10.1016/1049-9652(92)90055-3.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

関数

オブジェクト