ドキュメンテーション

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

imreconstruct

モルフォロジー再構成

説明

J = imreconstruct(marker,mask) は、イメージ mask の下で、イメージ marker のモルフォロジー再構成を行い、その再構成を J に返します。marker の要素は、mask の対応する要素以下でなければなりません。marker の値が mask の対応する要素よりも大きい場合、imreconstruct はその値を mask のレベルに切り下げてから処理を開始します。

オプションで、2 次元イメージのモルフォロジー再構成を GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

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

すべて折りたたむ

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

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;

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

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

入力引数

すべて折りたたむ

入力イメージ。数値配列または logical 配列として指定します。

GPU を使用してモルフォロジー再構成を実行するには、marker を 2 次元数値行列または logical 行列を含む gpuArray として指定します。imreconstruct は GPU 上の RGB イメージと 3 次元イメージをサポートしていません。

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

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

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

マスク イメージ。サイズとデータ型が marker と同じ数値配列または logical 配列として指定します。

GPU を使用してモルフォロジー再構成を実行するには、mask を 2 次元数値行列または logical 行列を含む gpuArray として指定します。imreconstruct は GPU 上の RGB イメージと 3 次元マスク イメージをサポートしていません。

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

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

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

ピクセルの連結性。次の表のいずれかの値を指定します。既定の連結性は 2 次元イメージでは 8、3 次元イメージでは 26 です。

平均

2 次元連結性

4 連結

ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。

8 連結

ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。

3 次元連結性

6 連結

面が接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

18 連結

面またはエッジが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

26 連結

面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

  • 右上の奥または左下の奥など、3 つの方向の組み合わせ

高次元の場合、imreconstruct は既定値 conndef(ndims(marker),'maximal') を使用します。

連結性は、01 から成る 3 × 3 × ... × 3 行列を指定し、任意の次元に対してより一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素に関して対称でなければなりません。詳細は、カスタム連結性の定義を参照してください。

データ型: double | logical

出力引数

すべて折りたたむ

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

GPU を使用してモルフォロジー再構成を実行する場合、J は数値行列または logical 行列を含む gpuArray として返されます。

ヒント

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

  • パフォーマンスに関する注意事項: データ型 logicaluint8uint16single および double の場合、この関数はハードウェア最適化を利用して高速化できます。ハードウェア最適化では、markermask が 2 次元イメージで、conn4 または 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 より前に導入