関数 > 画像処理 > コンボリューションとフィルタ > 例: メジアンフィルタと分位フィルタ
例: メジアンフィルタと分位フィルタ
medsmoothおよびgetnoiseは、各画素とその 8 つの近傍点 (3 x 3 の正方形のカーネル) の輝度の中央値 (0.5 分位) を求めます。medsmooth 関数はフィルタ後の画像を返し、getnoise は元の画像とフィルタ後の画像の差を返します。
中央値の代わりにユーザー定義のカーネルと分位を使用する場合、quantfiltを使用します。
中央値フィルタでは、ノイズが除去されるだけでなく、鋭く小さな特徴が画像から除去される傾向があります。
この例の使用方法については、画像処理の例についてを参照してください。
medsmooth
1. 画像を読み込みます。
クリックしてこの式をコピー
2. 画像にノイズを付加します。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 元の画像とノイズを含む画像を比較します。
(fruit.bmp)
(fruit_n.bmp)
4. medsmooth を使用して画像をフィルタします。
クリックしてこの式をコピー
クリックしてこの式をコピー
(fruit_f.bmp)
getnoise
この関数は、メジアンフィルタが適用された画像行列から元の画像行列を引きます。
1. ノイズを含む画像に getnoise 関数を適用します。
クリックしてこの式をコピー
クリックしてこの式をコピー
(fruit_gn.bmp)
getnoise 関数は、フィルタ後の画像からノイズを引くことと同じです。
クリックしてこの式をコピー
2. 2 つの画像の差の絶対値を計算して表示します。
クリックしてこの式をコピー
クリックしてこの式をコピー
(fruit_an.bmp)
quantfilt
3 x 3 の正方形のカーネルを使用したメジアンフィルタは汎用性が十分ではなく、適切なフィルタが行われないことがあります。たとえば、鋭いコーナーを多数含む画像をこの方法によってフィルタすると、コーナーピクセルが除去されることがよくあります。これを回避するには、quantfilt 関数で、上記で指定した 3 x 3 の正方形のカーネルを使用するのではなく、十字状のメジアンフィルタカーネルを使用します。
一般的なパターンを使用し、これにノイズを少し付加します。
1. パターン画像を読み込みます。
クリックしてこの式をコピー
2. 画像にノイズを付加します。
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 元の画像とノイズを含む画像を比較します。
(pattern.bmp)
(pattern_n2.bmp)
4. quantfilt 関数で 0.5 分位 (メジアン値) と 3 x 3 の正方形のカーネルを使用して、ノイズを含む画像をフィルタします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
5. quantfilt 関数で 0.5 分位 (メジアン値) と十字状のカーネルを使用して、ノイズを含む画像をフィルタします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
6. フィルタ後の 2 つのパターンを比較します。
(pattern_sq.bmp)
(pattern_cr.bmp)
正方形のカーネルでは、正方形のエッジ、直線、コーナーが十字状のカーネルよりも大きく劣化しています。
非メジアン分位
quantfilt 関数のもう一つの使用方法として、メジアン値 (0.5) 以外の分位を選択することで、画像全体の輝度を変更できます。たとえば、0.0 分位を選択した場合、ピクセルとその近傍点の最小値をとり、1.0 分位を選択した場合にはその最大値をとります (これらはグレースケールモルフォロジーの侵食/膨張とよく似ています)。
1. 分位を 0.0 に設定することで、元のパターンの暗い領域が膨張し、明るい領域が侵食されるようにします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
2. 分位を 1.0 に設定することで、元のパターンの明るい領域が膨張し、暗い領域が侵食されるようにします。
クリックしてこの式をコピー
クリックしてこの式をコピー
クリックしてこの式をコピー
3. 元のパターンを暗いパターンおよび明るいパターンと比較します。
(pattern.bmp)
(pattern_drk.bmp)
(pattern_lit.bmp)
これは役に立ちましたか?