[デジタル画像処理実験 3]: ソルトアンドペッパーノイズとガウスノイズ画像における平均値フィルタリング、メディアンフィルタリング、ガウスフィルタリングとその適用比較

序文

この記事では、平均値フィルタリング、メディアン フィルタリング、ガウス フィルタリングのコード実装と、塩胡椒ノイズとガウス ノイズ画像におけるノイズ除去効果の比較を紹介します。


1. 平均値フィルタリング

平均値フィルタリングとは、画像上の注目画素(特定の座標を持つ画素)に対して、注目画素自身とその周囲の隣接画素を含むテンプレートを与え、元の画素値を全画素の平均値に置き換えることです。テンプレート内で. .

平均フィルタリングはコンボリューションによって実現され、一般的なコンボリューション カーネル サイズは 3×3、5×5、7×7 などです。以下は 3×3 コンボリューション カーネルです。これは、すべてのピクセルの平均値がピクセルの置き換えに使用されるためです。元のピクセル値なので、テンプレートのすべての重みは同じであると考えることができます。ここでは 3×3 コンボリューション カーネルなので、それらはすべて 1/9 です。具体的な操作は、2 つの行列を乗算して加算することです。 。
ここに画像の説明を挿入

コードは以下のように表示されます。

import cv2

# 读图
old_img = cv2.imread("lena.tif")

# 均值滤波
new_img = cv2.blur(old_img, (3, 3))  # 后面的卷积核大小可以自己定义,如(5, 5)

# 结果对比
cv2.imshow("old_img", old_img)
cv2.imshow("new_img", new_img)
cv2.waitKey(0)

結果は以下の通り、左が古い画像、右が新しい画像(平均値フィルタ後の画像)ですが、5×5になると違いがより顕著になります。
ここに画像の説明を挿入

2.メディアンフィルタリング

メディアン フィルターは、コンボリューション カーネルの範囲内の数値を小さいものから大きいものに並べ替え、その中央値を取得して元の画像のコンボリューション カーネルの中心位置の値を置き換えます。次の図に示すように、サイズコンボリューション カーネルの中心位置の値は元の画像 2 で、コンボリューション カーネル内の 9 つ数値がソートされて、2、5、6、7、16、25 になります、28、44、80。したがって、中央の 2 は 16 に置き換えられます。

なお、メディアンフィルタはコンボリューションカーネルのサイズに達していればよく、3×3コンボリューションカーネルなど、コンボリューションカーネル内の各位置の値は知る必要はありません。元画像の特定の座標だけを中心として、3×3の範囲の数値をソートし、中央値を取る必要があります。
ここに画像の説明を挿入
コードは以下のように表示されます:

import cv2

# 读图
old_img = cv2.imread("lena.tif")

# 中值滤波
medianBlur_img = cv2.medianBlur(old_img, 3)

cv2.imshow("old_img", old_img)
cv2.imshow("medianBlur_img", medianBlur_img)
cv2.waitKey(0)

ここに画像の説明を挿入

3. ガウスフィルタリング

単純な局所平均法の欠点 (画像のぼやけ) を克服するために、エッジと詳細を保存する多くの局所平滑化アルゴリズムが提案されています。これらの出発点はすべて、近隣のサイズ、形状、方向、パラメータと平均、近隣の各店舗の重み係数を選択する方法に焦点を当てています。

画像ガウス平滑化も近傍平均の考え方に基づいて画像を平滑化する手法であり、画像ガウス平滑化では画像を平均化する際に、異なる位置のピクセルに異なる重みを与えます。ガウス スムージングは​​単純なスムージングとは異なります。近傍のピクセルを平均するときに、異なる位置のピクセルに異なる重みを与えます。下の図に示す 3×3 フィールドと 5×5 フィールドのガウス テンプレート。このうち 16 は、3×3 コンボリューション カーネル内のすべての数値を足すと 16 になるためであり、273 も同じであるためです
ここに画像の説明を挿入

import cv2

# 读图
old_img = cv2.imread("lena.tif")

# 高斯滤波
GaussianBlur_img = cv2.GaussianBlur(old_img, (3,3), 0) # 第一个参数:原图像;第二个参数:卷积核大小;第三个参数:X方向上的高斯核标准偏差。

# 显示
cv2.imshow("old_img", old_img)
cv2.imshow("GaussianBlur_img", GaussianBlur_img)
cv2.waitKey(0)

ここに画像の説明を挿入

4. 塩コショウノイズの除去効果の比較

ごま塩ノイズの画像は次のとおりです。
ここに画像の説明を挿入
3 つのフィルタの効果は次のとおりです。左から右へ、平均値フィルタ、メディアン フィルタ、ガウス フィルタです。
ここに画像の説明を挿入
したがって、塩胡椒ノイズの場合は、メディアン フィルターが良い選択です。

5. ガウスノイズの除去効果の比較

ガウス ノイズ イメージは次のとおりです。
ここに画像の説明を挿入
3 つのフィルタ効果は次のとおりです。左から右へ、平均値フィルタ、メディアン フィルタ、ガウス フィルタです。
ここに画像の説明を挿入
私も行ってきましたが、ほんの少しだけですが、効果は似たような感じです。

批判を楽しみにしています


おすすめ

転載: blog.csdn.net/weixin_45887062/article/details/125645977
おすすめ