非線形フィルタリング
これらの機能では、形状を強調するため、またはノイズを除去するために、近傍ピクセルの非線形の組み合わせが使用されます。
ほとんどの場合は破壊的な機能であるため(トップハットおよびメディアンフィルタを除く)、ソース画像は目的画像によって上書きされます。破壊的な演算は速度が高まります。
いずれの場合も、例えばとのように、グレー画像とバイレベル同等物があります。
- これにより、カーネルに必要とされる形状が定義されます(通常は3x3マトリックス内)。
- このカーネルを画像上に重ね合わせて、一致が見つかったときに結果画像のピクセル値が算出されます:
- 侵食、膨張:画像領域を縮小/拡大させます。
- オープニング、クロージング:画像領域の境界ピクセルを除去します/追加します。
- 間引き、濃厚化:画像パターンマッチングを用いて侵食/膨張を行います。
- トップハットフィルタ:小さい画像ディテールをすべて残しながらその他の要素を取り除きます。
- 形態距離:ピクセルを黒にするために侵食が何回必要であるかを示します。
- 形態勾配:侵食および膨張プロセスの外側および内側のエッジを示します。
- メディアンフィルタ:インパルス性ノイズを除去します。
- ヒットアンドミス変換:前景/背景ピクセルのパターンを検出し、スケルトンを作成します。

半分の幅=3および半分の高さ=2の長方形カーネル(左)、半分の幅 =2の円形カーネル(右)
モルフォロジー演算子は、指定された形状(正方形、長方形または円形)の近傍の値を組み合わせ、その結果の値で中心ピクセルを置き換えます。
Three special cases are most often used erosion, dilation and median filter where : K can be 1 (minimum of the set), N (maximum) or N/2 (median).
侵食、膨張、オープニング、クロージング、トップハットおよび形態勾配の演算では、片方のサイズの長方形または円形カーネルが使用されます。カーネルサイズは結果に大きく影響します。
例
|
半分の幅/半分の高さ |
実際の |
|---|---|
|
0 |
1 |
|
1 |
3 |
|
2 |
5 |
|
3 |
7 |
これらの関数では3x3カーネルを使ってピクセル範囲を大きくしたり()小さくします():
- 間引き:線の太さを1ピクセルに抑えることでエッジ検出に役立ちます。
- 濃厚化:近似形状またはスケルトンの算出に役立ちます。
カーネル係数とピクセル近傍で一致が見つかると、濃厚化の場合はピクセル値が255、間引きの場合は0に設定されます。カーネル係数は次のとおりです:
- 0:黒ピクセルに一致、値 0
- 1:黒を除くピクセルに一致、値 > 0
- -1:無視
は2値画像(黒は0、白は0以外)の形態距離(ピクセルを黒にするための侵食の回数)を計算し、目的画像を作成します。目的画像の各ピクセルには、ソース画像で対応するピクセルの形態距離が含まれます。
形態勾配ではエッジ検出が行われ、エッジを除くすべての要素が除去されます。
形態勾配は、同構造の要素を用いた画像の膨張と侵食の差です。
MorphoGradientBox, MorphoGradientDisk.
膨張 – 侵食 = 勾配
メディアンフィルタはエッジや画像の鮮鋭度を保持しながらインパルス性ノイズを除去します。
It replaces every pixel by the median (central value) of its neighbors in a 3x3 or larger kernel, thus, outer pixels are discarded.

メディアンフィルタ:ソース画像と目的画像
ヒットアンドミス変換はBW8、BW16、C24画像またはROIに使用することができ、画像から前景/背景ピクセルの特定のパターンを検出します。
ヒットアンドミス変換
関数には3つの引数があります:
- ソース画像形式を示すポインタ(、または)
- ソース画像形式に応じた目的画像の種類を示すポインタ。
ソース画像と目的画像のサイズは同じでなければなりません。 - タイプのカーネル:カーネルオブジェクトで2つのコンストラクタを使用できます:
- EHitAndMissKernel(int startX, int startY, int endX, int endY) where:
startX, startY are coordinates of the top left of the kernel, must be less than or equal to zero.
endX, endY are coordinates of the bottom right of the kernel, must be greater than or equal to zero.
The constructed kernel has no explicit restrictions on its size, and the following characteristics:
kernel width = (endX – startX + 1), kernel height = (endY – startY + 1) - EHitAndMissKernel(unsigned int halfSizeX, unsigned int halfSizeY) where:
halfSizeX is half of the kernel width – 1, must be greater than zero.
halfSizeY is half of the kernel height – 1, must be greater than zero.
The constructed kernel has the following characteristics:
kernel width = ((2 x halfSizeX) + 1), kernel height = ((2 x halfSizeY) + 1)
kernel StartX = - halfSizeX, kernel StartY = - halfSizeY
- EHitAndMissKernel(int startX, int startY, int endX, int endY) where:
ヒットアンドミス変換はコーナーの位置を特定するために使用できます。
2値ソース画像
1. 左コーナーを検出してカーネルを定義します。左コーナーのピクセルのすぐ左、上、下には黒のピクセルがあり、すぐ右には白のピクセルがあります。左コーナーは次のヒットアンドミスカーネルによって検出されます:
- +
- + +
- +
2. ソース画像にフィルタを適用します。結果画像が適切にサイズ調整されているか確認してください。
結果画像:強調されたピクセルは菱形の左コーナーに位置している
3. 同様にして残りの3つのコーナーの位置を検出します。上記フィルタを回転させた3つのカーネルを宣言し、適用します。
4. 右、上、下のコーナーを検出します。
