ノイズ除去(noise removal / denoising) は、画像に混入した不要な変動成分(ノイズ)を取り除き、元の信号をできるだけ忠実に復元する処理のこと。
カメラのセンサーの熱雑音、低照度環境での量子ノイズ、伝送路でのビット誤りなど、様々な原因でノイズが発生する。ノイズ除去は画像処理パイプラインの前処理として広く使われており、後続の特徴抽出・認識精度に大きく影響する。
本節では代表的なノイズの種類と、それぞれに対して有効なフィルタリング手法を学ぶ。
評価指標:PSNR¶
ノイズ除去の効果を定量的に評価するために PSNR(Peak Signal-to-Noise Ratio、最大信号対雑音比) を使う。
1. ノイズの種類¶
ガウシアンノイズ(Gaussian Noise)¶
最も一般的なノイズモデル。各ピクセルに平均 0・標準偏差 の正規分布に従う乱数が加算される。
カメラの熱雑音・アンプのランダムノイズなどを模している。 が大きいほどノイズが強くなる。
ソルト&ペッパーノイズ(Salt & Pepper Noise)¶
画像のランダムな位置に、真っ白(255)または真っ黒(0)の画素が散在するノイズ。インパルスノイズとも呼ばれる。センサーの欠陥や伝送エラーで発生する。
スペックルノイズ(Speckle Noise)¶
超音波画像やレーダー画像に特有のノイズ。画素値に乗算的に加わる。

2. 線形フィルタ¶
線形フィルタ は、注目画素とその周辺画素の線形結合(重み付き平均)で出力値を計算するフィルタ。演算が単純で高速だが、エッジもぼかしてしまう欠点がある。
平均フィルタ(Box / Mean Filter)¶
カーネル内の全画素の 単純平均 を取る最もシンプルなフィルタ。
# 平均フィルタ:カーネルサイズの比較
kernel_sizes = [3, 5, 9]
blurred_mean = {k: cv2.blur(noisy_gaussian, (k, k)) for k in kernel_sizes}
fig, axes = plt.subplots(1, 4, figsize=(18, 4))
axes[0].imshow(noisy_gaussian)
axes[0].set_title(f"ガウシアンノイズ\nPSNR={psnr(img, noisy_gaussian):.1f} dB", fontsize=11)
axes[0].axis('off')
for ax, k in zip(axes[1:], kernel_sizes):
result = blurred_mean[k]
ax.imshow(result)
ax.set_title(f"平均フィルタ ({k}×{k})\nPSNR={psnr(img, result):.1f} dB", fontsize=11)
ax.axis('off')
fig.suptitle("平均フィルタ:カーネルサイズの影響", fontsize=14, fontweight='bold')
plt.tight_layout()
plt.show()
ガウシアンフィルタ(Gaussian Filter)¶
カーネルの重みを ガウス関数(正規分布) に従って設定したフィルタ。中心画素に大きな重みを置き、周辺になるほど重みが小さくなる。単純平均より自然なぼかしが得られる。


3. 非線形フィルタ¶
非線形フィルタ は、近傍画素の統計量(中央値など)や画素値の類似度に基づいて出力を決めるフィルタ。計算コストは高いが、エッジを保ちながらノイズを除去できるものが多い。
メディアンフィルタ(Median Filter)¶
カーネル内の全画素を並べ替えて 中央値(メジアン) を出力する。外れ値(極端に白・黒なピクセル)を自動的に排除するため、ソルト&ペッパーノイズに対して特に強い。


バイラテラルフィルタ(Bilateral Filter)¶
ガウシアンフィルタの弱点である「エッジのぼけ」を解消するために開発されたフィルタ。空間的な近さだけでなく、画素値の類似度 も重みに組み込む。


Non-Local Means(NLM)¶
「画像内の類似したパッチ(局所領域)は同じ信号から生成されている」という仮定に基づく手法。注目画素の近傍だけでなく、画像全体から類似パッチを探して 重み付き平均を取る。

まとめ:全手法の比較¶
各ノイズに対してすべてのフィルタを適用し、PSNR で定量比較する。



各手法のまとめ¶
| 手法 | 計算コスト | エッジ保持 | ガウシアン | S&P | 特徴 |
|---|---|---|---|---|---|
| 平均フィルタ | 低 | 弱い | △ | △ | 最もシンプル |
| ガウシアンフィルタ | 低 | 弱い | ○ | △ | 自然なぼかし |
| メディアンフィルタ | 中 | 中程度 | △ | ◎ | S&P に最強 |
| バイラテラルフィルタ | 高 | 強い | ○ | △ | エッジを保ちながら平滑化 |
| Non-Local Means | 非常に高 | 強い | ◎ | ○ | 最高品質(遅い) |