ドキュメンテーション

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

imreconstruct

モルフォロジー再構成

構文

IM = imreconstruct(marker,mask)
IM = imreconstruct(marker,mask,conn)
IM = imreconstruct(gpuarrayMarker,gpuarrayMask)

説明

IM = imreconstruct(marker,mask) は、イメージ mask の下で、イメージ marker のモルフォロジー再構成を行います。markermask は同じサイズを持つ 2 つの強度イメージまたは 2 つのバイナリ イメージです。返されるイメージ IM は、入力イメージに応じて強度イメージまたはバイナリ イメージになり、入力イメージと同じサイズです。

markermask と同じサイズでなければなりません。また、その要素は mask の対応する要素以下でなければなりません。marker の値が mask の対応する要素よりも大きい場合、imreconstruct はその値を mask のレベルに切り下げてから処理を開始します。

既定の設定では、imreconstruct は 2 次元イメージに対して 8 連結、3 次元イメージに対して 26 連結を使用します。高次元に対しては、imreconstructconndef(ndims(I),’maximal’) を使用します。

IM = imreconstruct(marker,mask,conn) は、指定した連結性を使用してモルフォロジー再構成を行います。

IM = imreconstruct(gpuarrayMarker,gpuarrayMask) は GPU でモルフォロジー再構成を実行します。入力の marker イメージと mask イメージは gpuArray でなければなりません。この構文では Parallel Computing Toolbox™ が必要です。

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

グレースケール イメージを読み取り、それを表示します。

I = imread('snowflakes.png');
figure
imshow(I)

イメージのコントラストを調整してマスク イメージを作成し、結果を表示します。

mask = adapthisteq(I);
figure
imshow(mask)

モルフォロジーの膨張を使用して、イメージ内で高い強度のオブジェクトを識別するマーカー イメージを作成し、結果を表示します。

se = strel('disk',5);
marker = imerode(mask,se);
imshow(marker)

マスク内で高い強度のオブジェクトを識別するマーカー イメージを使用して、マスク イメージでモルフォロジー オープン処理を実行します。結果を表示します。

obr = imreconstruct(marker,mask);
figure
imshow(obr,[])

論理イメージをワークスペースに読み取って表示します。これがマスク イメージになります。

mask = imread('text.png');
figure
imshow(mask)

セグメンテーションで抽出するオブジェクトをイメージ内で識別するマーカー イメージを作成します。この例では、"watershed" という語の "w" を識別します。

marker = false(size(mask));
marker(13,94) = true;

マーカー イメージを使用して、マスク イメージのセグメンテーションを実行します。

im = imreconstruct(marker,mask);
figure
imshow(im)

マスク イメージを読み取って gpuArray を作成します。

mask = gpuArray(imread('text.png'));
figure, imshow(mask),

マーカー イメージ gpuArray を作成します。

marker = gpuArray.false(size(mask));
marker(13,94) = true;

セグメンテーションを実行して結果を表示します。

im = imreconstruct(marker,mask);
figure, imshow(im)

入力引数

すべて折りたたむ

入力イメージ。非スパース数値配列または論理配列として指定します。

例: se = strel('disk',5); marker = imerode(mask,se);

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

マスク イメージ。非スパース数値配列または論理配列として指定します。

例: mask = imread('text.png');

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

連結性。次のテーブルのいずれかの値で指定します。

意味

2 次元連結性

4

4 連結近傍

8

8 連結近傍

3 次元連結性

6

6 連結近傍

18

18 連結近傍

26

26 連結近傍

連結性は、conn01 を要素とする 3 x 3 x ... x 3 行列として使用すると、任意の次元に対してより一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素に関して対称でなければなりません。

例: obr = imreconstruct(marker,mask,4);

データ型: double | logical

GPU での入力イメージ。gpuArray として指定します。

例: marker = gpuArray(imread(‘text.png’));

GPU でのマスク イメージ。gpuArray として指定します。

例: mask = gpuArray(imread(‘text.png’));

出力引数

すべて折りたたむ

再構成イメージ。入力イメージに応じて、入力イメージと同じサイズの数値配列または論理配列として返されます。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。汎用の MATLAB Host Computer ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、この関数によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細は、「Image Processing Toolbox のコード生成について」を参照してください。

コードを生成する際、オプションの 3 番目の入力引数 conn はコンパイル時の定数でなければなりません。また、値 4 または 8 のみをとることができます。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

ヒント

  • モルフォロジー再構成は、いくつかの他の Image Processing Toolbox™ の関数 imclearborderimextendedmaximextendedminimfillimhmaximhminimimposemin に対するアルゴリズムの基になっています。

  • パフォーマンスに関する注意事項: この関数は、logicaluint8 および single の各データ型に対し、ハードウェアの最適化を利用してより速やかな実行ができます。ハードウェア最適化では、markermask が 2 次元イメージで、conn が 4 または 8 である必要があります。

アルゴリズム

関数 imreconstruct は、[1] で説明した高速のハイブリッド グレースケール再構成アルゴリズムを使用します。

参照

[1] Vincent, L., "Morphological Grayscale Reconstruction in Image Analysis: Applications and Efficient Algorithms," IEEE Transactions on Image Processing, Vol. 2, No. 2, April, 1993, pp. 176-201.

R2006a より前に導入

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