ドキュメンテーション

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

モルフォロジー再構成について

モルフォロジー再構成は、マーカー イメージの等高線が "マスク イメージ" と呼ばれる 2 番目のイメージ内に収まるまで、概念的には "マーカー イメージ" と呼ばれるイメージの繰り返し膨張として見なされます。モルフォロジー再構成では、マーカー イメージのピークは "広がります" (膨張します)。

以下の図はこの処理を 1 次元で示しています。個々の連続的な膨張はマスクの下に拘束されます。膨張によってイメージが変更されなくなると、処理が停止します。最後の膨張は再構成されたイメージです (メモ: この操作を実際にツールボックスで実装する場合は、はるかに効率的に実行することができます。詳細は、imreconstruct のリファレンス ページを参照してください)。次の図は、マーカーの連続した膨張を示します。

マスクに拘束されたマーカー イメージの繰り返し膨張

モルフォロジー再構成はモルフォロジー膨張に基づいていますが、次のような固有な性質をもっています。

  • 処理はイメージと構造化要素でなく、マーカーとマスクである 2 つのイメージに基づいています。

  • 処理は構造化要素でなく、ピクセルの連結性の概念に基づいています。

  • 処理は、安定するまで繰り返されます。つまり、イメージがこれ以上変化しなくなるまで処理されます。

マーカーとマスクについて

モルフォロジー再構成は "マーカー" と呼ばれる 1 つのイメージを処理する場合は、"マスク" と呼ばれる別のイメージの特性をベースにしています。マーカー イメージ内の高い点 (ピーク) によって処理の開始場所が決まります。イメージの値は変更しなくなるまで処理は続行されます。

モルフォロジー再構成を示すには、次の簡単なイメージを考えてみましょう。このイメージには 2 つの主な領域 (値 14 と値 18 を含んでいるピクセルの集合) があります。背景には主に値 10 が設定されており、いくつかのピクセルは値 11 に設定されています。

このイメージをモルフォロジーに再構成するには、以下の手順に従います。

  1. マーカー イメージを作成します。膨張と収縮における構造化要素と同様に、マーカー イメージの特性によってモルフォロジー再構成で実行される処理が決定します。マーカー イメージ内のピークによって、強調するマスク イメージ内のオブジェクトの位置を識別します。

    マーカー イメージを作成する方法の 1 つに、imsubtract を使用してマスク イメージから定数を差し引くという方法があります。

    marker = imsubtract(A,2)
    marker =
         8     8     8     8     8     8     8     8     8     8
         8    12    12    12     8     8     9     8     9     8
         8    12    12    12     8     8     8     9     8     8
         8    12    12    12     8     8     9     8     9     8
         8     8     8     8     8     8     8     8     8     8
         8     9     8     8     8    16    16    16     8     8
         8     8     8     9     8    16    16    16     8     8
         8     8     9     8     8    16    16    16     8     8
         8     9     8     9     8     8     8     8     8     8
         8     8     8     8     8     8     9     8     8     8
    
  2. 関数 imreconstruct を呼び出し、イメージをモルフォロジーに再構成します。強度ピーク以外のすべての強度変動がどのように削除されたかを、出力イメージで確認してください。

    recon = imreconstruct(marker, mask)

ピークと谷の検出

グレースケール イメージは 3 つの次元で考えられます。x 軸と y 軸はピクセルの位置を表し、z 軸は各ピクセルの強度を表します。この解釈では、強度の値は地形図に示すように高度を表します。イメージ内の高い強度と低い強度の領域 (地形学用語ではピークと谷と呼ぶ) は、関連するイメージ オブジェクトを表すことがよくあるため、重要なモルフォロジー特徴となり得ます。

たとえば、複数の球面オブジェクトのイメージでは、高い強度の点はオブジェクトの頂点を表す場合があります。モルフォロジー処理を使用して、これらの最大値はイメージ内のオブジェクトを特定できます。

この節では、以下のトピックについて説明します。

用語

この節では以下の用語を使用します。

用語

定義

大域的な最大値

イメージ内で最大の値をもつ局所的な最大値。詳細は、この表の中の局所的な最大値の部分を参照してください。

大域的な最小値

イメージ内で最小の値をもつ局所的な最小値。詳細は、この表の中の局所的な最小値の部分を参照してください。

局所的な最大値

周りと比べて小さくなく、またはそれ以上のものもないものから構成される一定強度をもつピクセルの結合している部分。つまり、同じ強度値 t をもつピクセルの連結要素で、周りのピクセルは t より大きい強度値をもつものが存在しません。

局所的な最小値

周りと比べて大きくなく、またそれ以下もないものから構成される一定強度をもつピクセルの結合している部分。つまり、同じ強度値 t をもつピクセルの連結要素で、周りのピクセルは t より小さい強度値をもつものが存在しません。

最大値と最小値の関数について

イメージは複数の局所的な最大値と最小値をもつことができますが、大域的な最大値と最小値は 1 つしかもつことができません。イメージのピークまたは谷を特定すると、モルフォロジー再構成に使用されるマーカー イメージを作成できます。

次の図は、この概念を 1 次元で示しています。

高い強度または低い強度の検出

ツールボックスにはイメージ内の高い強度または低い強度を見つけるために使用できる関数が含まれています。

  • 関数 imregionalmax と関数 imregionalmin"すべての" の局所的な最小値または最大値を識別します。

  • 関数 imextendedmax と関数 imextendedmin は指定したしきい値より大きい、またはそれ未満の局所的な最小値または最大値を識別します。

関数はグレースケール イメージを入力として受け入れ、バイナリ イメージを出力として返します。出力バイナリ イメージでは、局所的な最小値または最大値は 1 に設定されています。それ以外のすべてのピクセルは 0 に設定されています。

たとえば、次の簡単なイメージには 2 つの主な局所的な最大値 (値 13 と値 18 を含んでいるピクセルのブロックの集合) と 11 に設定されたいくつかの小さい最大値が含まれています。

imregionalmax によって返されるバイナリ イメージはこれらのすべての局所的な最大値の位置を正確に特定します。

B = imregionalmax(A)

強度の変化が著しいイメージの領域 (つまり、ピクセルと近傍ピクセルの間の差が指定のしきい値よりも大きい、またはそれ未満である) のみを特定するとします。たとえば、サンプル イメージ A でこれらの局所的な最大値 (近傍よりも単位が 2 つ以上大きい値) のみを検出するには、imextendedmax を使用します。

B = imextendedmax(A,2)

最小値と最大値の非表示

イメージ内では個々の小さい強度変動が局所的な最小値または最大値を表します。有意な最小値または最大値のみを必要とし、背景テクスチャにより生じた残りの小さい最小値や最大値はいらない場合があります。

これらの重要性の低い最小値と最大値を削除する一方で、有意な最小値と最大値を保持するには、関数 imhmax または関数 imhmin を使用します。これらの関数を使用すると、コントラスト条件またはしきい値レベル h を指定できます。この結果、h 未満の最大値と h より大きい最小値はすべて非表示になります。

メモ:

関数 imregionalminimregionalmaximextendedmin、および imextendedmax はイメージ内の局所的な最小値と最大値の位置を特定するバイナリ イメージを返します。関数 imhmax と関数 imhmin は変更されたイメージを生成します。

たとえば、次の簡単なイメージには 2 つの主な局所的な最大値 (値 14 と値 18 を含んでいるピクセルのブロックの集合) と 11 に設定されたいくつかの小さい最大値が含まれています。

2 つの有意な最大値を除いたすべての局所的な最大値を削除するには、imhmax を使用し、しきい値を 2 に指定します。imhmax は最大値のみに影響することに注目してください。その他のピクセル値は変更されません。2 つの有意な最大値はそのままですが、高さは小さくなります。

B = imhmax(A,2)

次の図は、サンプル イメージの 2 番目の列を 1 次元で示したもので、imhmax によってイメージのプロファイルがどのように変化するかがわかります。

最小値に制限を設定

関数 imimposemin を使用して、イメージ内の特定の最小値 (暗い色のオブジェクト) を強調できます。関数 imimposemin は、モルフォロジー再構成を使用して、指定した最小値以外のすべての最小値をイメージから削除します。

最小値に制限を設定する処理を示すために、以下のコードでは、2 つの主な局所的な最小値と他のいくつかの局所的な最小値を含んでいる簡単なイメージを作成します。

mask = uint8(10*ones(10,10));
mask(6:8,6:8) = 2;
mask(2:4,2:4) = 7;
mask(3,3) = 5;
mask(2,9) = 9;
mask(3,8) = 9;
mask(9,2) = 9;
mask(8,3) = 9

マーカー イメージの作成

深度が最も大きい 2 つの最小値を強調し、他のすべての最小値を削除するイメージを取得するには、目的の 2 つの最小値の位置を正確に特定するマーカー イメージを作成します。マーカー イメージを作成するには、特定のピクセルを指定の値に明示的に設定するか、他のモルフォロジー関数を使用しマスク イメージで強調する特徴を抽出します。

この例では、関数 imextendedmin を使用し、深度が最も大きい 2 つの最小値の位置を示すバイナリ イメージを取得します。

marker = imextendedmin(mask,1)

マーカー イメージのマスクへの適用

imimposemin を使用し、マーカー イメージによって指定された点でマスク イメージに新しい最小値を作成します。マーカー イメージによって指定されたピクセルの値を imimposemin がどのようにしてデータ型でサポートされた最小値 (uint8 の値に対して 0) に設定するかを確認してください。また、imimposemin は、他の最小値を削除するためにイメージ内の他のピクセル値もすべて変更します。

I = imimposemin(mask,marker)
I =
    11    11    11    11    11    11    11    11    11    11
    11     8     8     8    11    11    11    11    11    11
    11     8     0     8    11    11    11    11    11    11
    11     8     8     8    11    11    11    11    11    11
    11    11    11    11    11    11    11    11    11    11
    11    11    11    11    11     0     0     0    11    11
    11    11    11    11    11     0     0     0    11    11
    11    11    11    11    11     0     0     0    11    11
    11    11    11    11    11    11    11    11    11    11
    11    11    11    11    11    11    11    11    11    11

次の図は、imimposemin がイメージの 2 列目のプロファイルをどのように変更するかを 1 次元で示しています。

最小値に制限を設定

関連するトピック