Main Content

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

構造化要素

モルフォロジー膨張演算および収縮演算の本質的な部分は、入力イメージを調べるために使用する構造化要素です。構造化要素は処理されるイメージのピクセルを識別するための行列であり、各ピクセルの処理で使用される近傍を定義します。入力イメージの中では、処理するオブジェクトと同じサイズと形状の構造化要素を選択することが一般的です。たとえば、イメージの中の線を検出するには、線形の構造化要素を作成します。

構造化要素には、"フラット""非フラット" の 2 種類があります。フラットな構造化要素は 2 次元または多次元のバイナリ値の近傍であり、true のピクセルがモルフォロジー計算に組み込まれ、false のピクセルは除外されます。構造化要素の中心ピクセルは "原点" と呼ばれ、処理されるイメージ内のピクセルを識別します。関数 strel を使用してフラットな構造化要素を作成します。バイナリ イメージおよびグレースケール イメージのフラットな構造化要素を使用できます。次の図はフラットな構造化要素を示しています。

非フラットな構造化要素は、処理されるイメージのピクセルを識別するための double 型行列であり、そのピクセルの処理で使用される近傍を定義します。非フラットな構造化要素には、モルフォロジーの計算で加算オフセットとして使用される有限値が含まれます。行列の中心ピクセルは "原点" と呼ばれ、処理されるイメージ内のピクセルを識別します。値 -Inf をもつ近傍内のピクセルは計算に使用されません。非フラットな構造化要素を作成するには、関数 offsetstrel を使用します。非フラットな構造化要素を使用できるのはグレースケール イメージに限られます。

構造化要素の原点の決定

モルフォロジー関数は、次のコードを使用して任意のサイズと次元の構造化要素の原点座標を得ることができます。

origin = floor((size(nhood)+1)/2)

ここで、nhood は構造化要素を定義する近傍です。フラットな構造化要素の近傍を確認するには、strel オブジェクトの Neighborhood プロパティを表示します。非フラットな構造化要素の近傍を確認するには、offsetstrel オブジェクトの Offset プロパティを表示します。

たとえば、次の図はフラットな菱形の構造化要素の原点を示しています。

構造化要素の分解

性能を高めるため、関数 strel と関数 offsetstrel は構造化要素をより小さい部分に分解します。これは、"構造化要素の分解" として知られている手法です。

たとえば、11 行 11 列の正方形構造化要素による膨張は、1 行 11 列の構造化要素を使用してから 11 行 1 列の構造化要素を使用して膨張することによって達成できます。これにより、実際の速度がそれほど向上しない場合でも、5.5 の因子の理論上の速度が向上されます。

'disk' および 'ball' 形状で使用される構造化要素分解は、近似であり、その他すべての分解は完全一致になります。分解はフラットな構造化要素の近傍行列がすべて 1 でない限り、任意の要素の構造化要素と共に使用されません。

分解の中で使用されている構造化要素のシーケンスを表示するには、decompose メソッドを使用します。strel オブジェクトと offsetstrel オブジェクトはいずれも decompose メソッドをサポートします。decompose メソッドは分解したものから構成される構造化要素の配列を返します。たとえば、菱形の構造化要素の分解内に作成された構造化要素群を示します。

SE = strel('diamond',4)
SE = 

strel is a diamond shaped structuring element with properties:

      Neighborhood: [9x9 logical]
    Dimensionality: 2

decompose メソッドを呼び出します。このメソッドは構造化要素の配列を返します。

decompose(SE)
ans = 

  3x1 strel array with properties:

    Neighborhood
    Dimensionality

参考

|

関連するトピック