ドキュメンテーション

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

imerode

説明

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

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

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

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

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

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

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

入力引数

すべて折りたたむ

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

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

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

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

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

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

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

データ型: double

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

説明

'same'

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

'full'

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

データ型: char | string

出力引数

すべて折りたたむ

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

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

詳細

すべて折りたたむ

バイナリ収縮

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