モルフォロジー演算のタイプ
"モルフォロジー" とは、イメージを処理する過程で形状ベースのイメージ処理操作の総称です。モルフォロジー演算は、構造化要素を入力イメージに適用し、同じサイズの出力イメージを作成します。モルフォロジー演算では、出力イメージ内の各ピクセルの値は入力イメージ内の対応するピクセルと近傍との比較に基づいています。
モルフォロジーの膨張と収縮
最も基本的なモルフォロジー演算は膨張と収縮です。膨張はイメージ内のオブジェクトの境界にピクセルを加えます。一方、収縮は境界のピクセルを除去します。イメージ内のオブジェクトに加えたり、オブジェクトから削除するピクセルの数は、イメージを処理するために使用する "構造化要素" のサイズと形状により異なります。モルフォロジーな膨張と収縮操作において、出力イメージの中の任意に与えられたピクセルの状態は、入力イメージのピクセルとその近傍に対して適用するルールにより決定されます。ピクセルを処理するために使用されるルールによって、膨張または収縮のいずれの操作をするかが定義されます。次の表は、膨張と収縮に関するルールを示します。
膨張と収縮に関するルール
操作 | ルール | 例 (元のイメージと処理されたイメージ) |
---|---|---|
膨張 | 出力ピクセル値は、近傍の中ですべてのピクセルの "最大" 値です。バイナリ イメージの場合、近傍のピクセルの中に値 モルフォロジー膨張によりオブジェクトの可視性が増し、オブジェクト内の小さな穴が埋まります。ラインは太く見えるようになり、塗りつぶされた形状は大きく見えるようになります。 | |
収縮 | 出力ピクセル値は、近傍の中ですべてのピクセルの "最小" 値です。バイナリ イメージの場合、近傍のピクセルの中に値 モルフォロジー収縮により、浮遊しているようなピクセルや細いラインがなくなり、実質的なオブジェクトだけが残ります。残っているラインは細く見えるようになり、形状は小さく見えるようになります。 | |
次の図は、バイナリ イメージの膨張を示しています。構造化要素は、対象となるピクセル (丸印で表示) の近傍を定義します。膨張関数は、近傍のピクセルにルールを適用し、出力イメージの対応する場所に値を出力します。図の中で、モルフォロジー膨張関数は構造化要素で定義された近傍の中の要素の 1 つが "on" であるため、出力ピクセルの値を 1
に設定します。詳細については、構造化要素を参照してください。
バイナリ イメージのモルフォロジー膨張処理
次の図は、この処理をグレースケール イメージに対して行った場合を示しています。膨張関数は、丸印で示した対象となるピクセルの近傍にルールを適用します。出力イメージでは、対応するピクセルの値に、すべての近傍ピクセルの中での最大値が割り当てられています。以下の図で、出力ピクセルの値は 16
です。これは、構造化要素で定義された近傍の中でこの値が最大であるためです。
グレースケール イメージのモルフォロジー膨張処理
膨張と収縮に基づく演算
膨張と収縮は、イメージ処理演算を行う場合に組み合わせて使用されることが頻繁にあります。たとえば、イメージのモルフォロジー オープニングの定義は、同じ構造化要素を使用して収縮を行い、その後で膨張を行います。膨張と収縮を組み合わせてイメージから小さなオブジェクトを除去し、大きなオブジェクトの境界を滑らかにすることができます。
次の表は、ツールボックスで用意されている、膨張と収縮をベースにした共通のモルフォロジー演算を実行する関数の一覧です。
関数 | モルフォロジーな定義 | 例 (元のイメージと処理されたイメージ) |
---|---|---|
モルフォロジー オープニングを実行します。オープニング演算は、イメージを収縮させてから、その収縮したイメージを膨張させます。両方の演算で同じ構造化要素を使用します。 モルフォロジー オープニングは、イメージから小さなオブジェクトと細いラインを除去し、イメージ内のより大きなオブジェクトの形状とサイズはそのままにする場合に便利です。例については、モルフォロジー オープニングを使用した大きなイメージの特徴の抽出を参照してください。 | | |
モルフォロジー クロージングを実行します。クロージング演算は、イメージを膨張させてから、その膨張したイメージを収縮させます。両方の演算で同じ構造化要素を使用します。 モルフォロジー クロージングは、イメージの小さな穴を塗りつぶし、イメージ内の大きな穴やオブジェクトの形状とサイズはそのままにする場合に便利です。 | | |
bwskel | バイナリ イメージ内のオブジェクトを "骨格化" します。骨格化のプロセスでは、穴や分岐の存在といったオブジェクトの本質的な構造を変えずに、すべてのオブジェクトを中心線に収縮させます。 | |
bwperim | バイナリ イメージのオブジェクトの周囲を検出します。ピクセルは、非ゼロの場合、周囲の一部です。また、ゼロの値をとる少なくとも 1 つのピクセルに連結しています。このため、内部にある穴のエッジは、オブジェクトの周囲の一部と見なされます。 | |
bwhitmiss | バイナリ ヒットミス変換を実行します。ヒットミス変換は、バイナリ イメージの近傍が 1 つの構造化要素の形状と一致し、重ならない 2 番目の構造化要素の形状とは一致しないピクセルを維持します。 ヒットミス変換を使用して、イメージ内のパターンを検出できます。 |
この例では、中心の右上に近傍がある 1 つの構造化要素と、中心の左下に近傍がある 2 番目の構造化要素を使用します。変換を行うと、右上にのみ近傍があるピクセルが維持されます。 |
imtophat | モルフォロジー トップハット変換を実行します。トップハット変換は、イメージのオープニングを行い、オープニング後のイメージを元のイメージから取り除きます。 トップハット変換は、不均一な明るさのグレースケール イメージでコントラストの強調に使用できます。変換によって、イメージ内の小さな明るいオブジェクトを分離することもできます。 | |
imbothat | モルフォロジー ボトムハット変換を実行します。ボトムハット変換は、イメージのクロージングを行って、クロージング後のイメージから元のイメージを取り除きます。 ボトムハット変換は、近傍内の他のピクセルより暗いピクセルを孤立させます。このため、この変換は、グレースケール イメージの中の強度トラフの検出に使用できます。 | |
参考
imclose
| imopen
| imdilate
| imerode