このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
imerode
イメージの収縮
説明
例
ラインの構造化要素を使用したバイナリ イメージの収縮
バイナリ イメージをワークスペースに読み取ります。
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)
立方体の構造化要素を使用した MRI スタック ボリュームの収縮
バイナリ ボリュームを作成します。
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);
入力引数
I
— 入力イメージ
グレースケール イメージ | バイナリ イメージ | パックされたバイナリ イメージ
入力イメージ。任意の次元のグレースケール イメージ、バイナリ イメージまたはパックされたバイナリ イメージとして指定します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
SE
— 構造化要素
strel
オブジェクト | offsetstrel
オブジェクト | strel
オブジェクトの配列 | offsetstrel
オブジェクトの配列
構造化要素。スカラー strel
オブジェクトまたは offsetstrel
オブジェクトとして指定します。SE
は strel
オブジェクトまたは offsetstrel
オブジェクトの配列にもなります。この場合、imerode
は、各構造化要素を続けて使用して入力イメージの収縮を複数実行します。
imerode
は、データ型 logical
のイメージを除くすべてのイメージに対してグレースケールの収縮処理を実行します。この場合、構造化要素はフラットでなければなりません。imerode
はバイナリ収縮を実行します。
nhood
— 構造化要素近傍
0
と 1
から成る行列
構造化要素近傍。0
と 1
から成る行列として指定します。
例: [0 1 0; 1 1 1; 0 1 0]
m
— 元のパックされていないイメージの行の次元
正の整数
元のパックされていないイメージの行の次元。正の整数を指定します。
データ型: double
shape
— 出力イメージのサイズ
'same'
(既定値) | 'full'
出力イメージのサイズ。次のいずれかに指定します。
値 | 説明 |
---|---|
| 出力イメージは入力イメージと同じサイズです。 |
| すべての収縮処理を計算します。 |
データ型: char
| string
出力引数
詳細
バイナリ収縮
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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
imerode
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computer
ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、imerode
によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。入力イメージ
I
は 2 次元または 3 次元でなければなりません。構造化要素引数
SE
は単一の要素でなければなりません。構造化要素の配列はサポートされていません。構造化要素の配列を使用した場合と同じ結果を得るには、関数を順次呼び出します。ターゲットが
MATLAB Host Computer
の場合、引数packopt
およびshape
はコンパイル時の定数でなければなりません。ターゲットがその他のプラットフォームの場合には、packopt
構文はサポートされません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
入力イメージ
I
は 2 次元または 3 次元でなければなりません。パックされたバイナリ入力イメージ (
packopt
構文) はサポートされません。チャネル数が 3 つよりも多い 3 次元イメージの場合、C/C++ コードのみ生成されます。
構造化要素引数
SE
はコンパイル時の定数でなければなりません。CUDA® コードは、1 次元または 2 次元の構造化要素についてのみ生成されます。構造化要素が 3 次元の場合、C/C++ コードが生成されます。3 次元を超える構造化要素ではコード生成はサポートされません。フラットでない構造化要素では、C/C++ コードのみ生成されます。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意および制限:
gpuArray
入力はuint8
型またはlogical
型でなければなりません。構造化要素
SE
はフラットで 2 次元でなければなりません。GPU では
packopt
引数はサポートされていません。
詳細については、GPU でのイメージ処理を参照してください。
バージョン履歴
R2006a より前に導入R2022b: スレッドベース環境のサポート
imerode
は、スレッドベースの環境をサポートするようになりました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)