グレースケールモルフォロジー
• gray_close(M, Melem) - 行列 M に対して、構造要素 Melem を使用してグレースケールクロージングを実行します。
• gray_dilate(M, Melem, r_origin, c_origin) - 行列 M に対して、構造要素 Melem を使用して、行 r_origin 列 c_origin を原点としたグレースケール膨張を実行します。
• gray_erode(M, Melem, r_origin, c_origin) - 行列 M に対して、構造要素 Melem を使用して、行 r_origin 列 c_origin を原点としたグレースケール侵食を実行します。
• gray_open(M, Melem) - 行列 M に対して、構造要素 Melem を使用してグレースケールオープニングを実行します。
各関数は、モルフォロジー処理の結果が格納されている行列を返します。
引数
• M は画像行列です。
• Melem は構造要素のベクトルまたは行列です。
• r_origin、c_origin は、Melem の原点となる行と列を示す整数であり、符号によって処理の方向を指定します。
gray_erode 関数の詳細
2 値侵食では、構造要素を使用して各ピクセルを中心とした近傍を定義し、その近傍内に背景ピクセルが 1 つでもある場合には前景が背景になります。グレースケール侵食はこの拡張であり、入力画像のピクセル値から構造要素のピクセル値が減算されます。出力は、構造要素の境界内で最小となるピクセルの値です。
構造要素の値がすべて正の場合、グレースケール侵食によって次のような効果が得られます。
• 画像全体の明るさが低下します。
• 構造要素より小さく明るい領域が画像から除去されます。
• 画像の暗い領域が拡大します。
グレースケール画像と構造要素を、各点における高さをグレースケール値とする面として考えると、グレースケール侵食によって、入力面の高さは構造要素の高さの分だけ減少し、小さく高い特徴は完全に侵食されて除去されます。
画像の境界はゼロのグレースケール値で外方向に延びているものとして処理されるので、構造要素の大きさより画像のエッジに近い出力ピクセルは無効になることがあります。
gray_dilate 関数の詳細
2 値膨張では、構造要素を使用して各ピクセルを中心とした近傍を定義し、その近傍内に前景ピクセルが 1 つでもある場合には背景が前景になります。グレースケール膨張はこの拡張であり、構造要素を 180 度回転させてその中心をピクセル上に配置し、そのピクセルの値を入力画像に加算することで、出力の各ピクセルが求められます。出力ピクセルの値は、構造要素の境界内で最大となるピクセルの値です。
構造要素の値がすべて正の場合、グレースケール膨張によって次のような効果が得られます。
• 画像全体の明るさが増します。
• 構造要素より小さい暗い領域が画像から除去されます。
• 画像の明るい領域が拡大します。
グレースケール画像と構造要素を、各点における高さをグレースケール値とする面として考えると、グレースケール膨張によって、入力面の高さは構造要素の高さの分だけ増し、小さく深い谷は完全に埋められます。
画像の境界はゼロのグレースケール値で外方向に延びているものとして処理されるので、構造要素の大きさより画像のエッジに近い出力ピクセルは無効になることがあります。
gray_open 関数と gray_close 関数の詳細
グレースケールオープニングとグレースケールクロージングの定義方法は 2 値モルフォロジーのオープニング/クロージングとほぼ同じであり、オープニングではグレースケール侵食に続けてグレースケール膨張を行い、クロージングではグレースケール膨張に続けてグレースケール侵食を行います。膨張では構造要素が 180 度回転するので、オープニング処理とクロージング処理はどちらも構造要素の原点の影響を受けません。
• グレースケールオープニングの主な効果としては、全体の明るさを変えることなく、画像から小さく明るい特徴が除去されます。
• グレースケールクロージングの主な効果としては、全体の明るさを変えることなく、画像から小さく暗い特徴が除去されます。
• 画像の境界はゼロのグレースケール値で外方向に延びているものとして処理されるので、構造要素の大きさより画像のエッジに近い出力ピクセルは無効になることがあります。