ドキュメンテーション

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

モルフォロジーの膨張と収縮

"モルフォロジー" とは、イメージを処理する過程で形状ベースの画像処理操作の総称です。モルフォロジー演算は、構造化要素を入力イメージに適用し、同じサイズの出力イメージを作成します。モルフォロジー演算では、出力イメージ内の各ピクセルの値は入力イメージ内の対応するピクセルと近傍との比較に基づいています。近傍のサイズと形状を選択すると、入力イメージの特定の形状に敏感なモルフォロジー演算を作成できます。

最も基本的なモルフォロジー演算は膨張と収縮です。膨張はイメージ内のオブジェクトの境界にピクセルを加えます。一方、収縮は境界のピクセルを除去します。イメージ内のオブジェクトに加えたり、オブジェクトから削除するピクセルの数は、イメージを処理するために使用する "構造化要素" のサイズと形状により異なります。モルフォロジーな膨張と収縮操作において、出力イメージの中の任意に与えられたピクセルの状態は、入力イメージのピクセルとその近傍に対して適用するルールにより決定されます。ピクセルを処理するために使用されるルールによって、膨張または収縮のいずれの操作をするかが定義されます。次の表は、膨張と収縮に関するルールを示します。

膨張と収縮に関するルール

操作

ルール

膨張

出力ピクセル値は、入力ピクセル近傍の中ですべてのピクセルの "最大" 値です。バイナリ イメージの場合、ピクセルの中に値 1 のものが存在すると、出力ピクセルは 1 になります。

収縮

出力ピクセル値は、入力ピクセル近傍の中ですべてのピクセルの "最小" 値です。バイナリ イメージの場合、ピクセルの中に値 0 のものが存在すると、出力ピクセルは 0 になります。

次の図は、バイナリ イメージの膨張を示しています。構造化要素が対象となるピクセル (丸印で表示) の近傍をどのように定義するかを確認してください。(詳細は構造化要素を参照してください)。膨張関数は、近傍のピクセルにルールを適用し、出力イメージの対応する場所に値を出力します。図の中で、モルフォロジー膨張関数は構造化要素で定義された近傍の中の要素の 1 つが "on" であるため、出力ピクセルの値を 1 に設定します。

バイナリ イメージのモルフォロジー膨張処理

次の図は、この処理をグレースケール イメージに対して行った場合を示しています。図は、入力イメージの中で特定したピクセルの処理を示しています。関数がどのようにして、入力ピクセルの近傍にルールを適用しているか、出力イメージの中の対応するピクセルの値として近傍内のすべてのピクセルの中での最高値を使用しているかを確認してください。

グレースケール イメージのモルフォロジー膨張処理

イメージ境界でのピクセルの処理 (パディング動作)

入力イメージに関心のあるピクセル上で、モルフォロジー関数を構造化要素の原点に配置します。イメージのエッジでのピクセルは、構造化要素で定義された近傍の一部をイメージの境界を越えて拡大します。

境界ピクセルを処理するために、モルフォロジー関数は (あたかも行や列を追加したかのように) 定義されていないピクセルに値を割り当てて、イメージをパディングします。これらのパディングのピクセルの値は、膨張操作と収縮操作に応じて変化します。次の表には、バイナリ イメージとグレースケール イメージの両方に対して膨張と収縮を行う場合のパディングに関するルールが記載されています。

イメージのパディングのルール

操作

ルール

膨張

イメージ境界を越えたピクセルは、使用しているデータ型で与えられる最小値を割り当てます。

バイナリ イメージの場合、これらのピクセルは 0 と仮定しています。グレースケール イメージの場合、uint8 イメージの最小値は 0 です。

収縮

イメージ境界を越えたピクセルには、使用しているデータ型で与えられる "最大" 値が割り当てられます。

バイナリ イメージの場合、これらのピクセルは 1 と仮定しています。グレースケール イメージの場合、uint8 イメージの最小値は 255 です。

メモ:

膨張操作に対して最小値を、収縮操作に対して最大値を使用することで、ツールボックスは "境界の影響" を避けることができます。ここでは、出力イメージの境界近傍は残りのイメージと同化することはありません。たとえば、収縮を最小値でパディングする場合、イメージの収縮を行うと、出力イメージの周りは黒で縁どられます。