はじめに
画像ノイズ低減テクニック:3つの方法を比較
この記事では、Python用の画像処理ライブラリであるscikit-imageを使用して、画像から不要なノイズを効果的に除去する方法を解説します。特に以下の3つの代表的なノイズ低減アルゴリズムに焦点を当てます:
- Total Variation(TV)フィルタリング(denoise_tv_chambolle)
- バイラテラルフィルタリング(denoise_bilateral)
- ウェーブレット変換を用いたノイズ除去(denoise_wavelet)
それぞれの手法の理論的背景、実装方法、パラメータ調整のコツ、そして実際のノイズ画像に対する効果を比較していきます。
コード

解説
モジュールのインポート
画像データの読み込みとスライス
マミラリア属の満月画像を読み込み、球体の左上部分をスライスして抽出しました。

画像にノイズを加える
random_noise()で分散(var)を指定することでノイズが加わった画像が生成します。
Total Variation (TV) フィルタリング
Total Variationフィルタリングは、画像の全変動(勾配の絶対値の合計)を最小化することでノイズを除去する手法です。このアプローチは、エッジを保持しながらノイズを効果的に除去できる特徴があります。
理論的背景
Total Variationフィルタリングは、Rudin-Osher-Fatehi(ROF)モデルとも呼ばれ、画像の滑らかさと元の画像との類似性のバランスを取りながら最適化を行います。画像の変動(勾配の絶対値)を減らすことで、ノイズを抑制しつつ、重要なエッジ情報を保持します。
パラメータ調整のポイント
- weight:正則化の強さを制御します(値が大きいほど滑らかになります)
- eps:収束判定の閾値
- max_num_iter:最大反復回数
画像の全変動を最小限に抑えることでノイズを低減しています。
バイラテラルフィルタによるノイズ低減
バイラテラルフィルタは、画素間の空間的距離と色の類似性の両方を考慮するフィルタです。エッジを保存しながらノイズを効果的に除去できる特徴があります。
理論的背景
バイラテラルフィルタは、各画素に対して周囲の画素の加重平均を計算します。重みは空間的距離(ガウシアンカーネル)と色の類似性(別のガウシアンカーネル)の両方に基づいて決定されます。これにより、エッジ付近では同じエッジ上の画素からの影響が強くなり、エッジをぼかさずにノイズを除去できます。
パラメータ調整のポイント
- sigma_color:色の類似性の重みを制御(値が大きいほど異なる色の画素も平均化)
- sigma_spatial:空間的距離の重みを制御(値が大きいほど遠い画素も平均化)
- multichannel:カラー画像の場合はTrue、グレースケール画像の場合はFalse
ウェーブレットノイズ除去フィルタによるノイズ低減
ウェーブレット変換は、画像を異なる周波数成分に分解し、各成分に対して処理を行う手法です。ノイズは主に高周波成分に現れるため、これらの成分を選択的に抑制することでノイズを除去できます。
理論的背景
ウェーブレット変換は、画像を異なるスケールと方向の成分に分解します。ノイズは通常、小さなウェーブレット係数として現れるため、しきい値処理によってこれらの係数を抑制することでノイズを除去できます。重要な特徴は大きな係数として保持されるため、画像の重要な構造を維持しながらノイズを効果的に除去できます。
パラメータ調整のポイント
- wavelet:使用するウェーブレット関数(’db8’、’sym8’、’coif5’など)
- mode:しきい値処理の方法(’soft’または’hard’)
- wavelet_levels:分解レベル数
- multichannel:カラー画像の場合はTrue、グレースケール画像の場合はFalse
画像の表示
それでは、3つのノイズ除去手法の効果を直接比較してみましょう。ImageGridを使用して画像を表示しています。grid[5]には軸のみが表示されてしまうため、.axis(“off”)を使用して非表示にしています。
各手法の特徴と適用シーン
Total Variation (TV) フィルタリング
- 長所:エッジを保持しながらノイズを効果的に除去、パラメータが少なく調整が容易
- 短所:過度に平滑化すると「階段効果」が発生することがある
- 適用シーン:自然画像、医用画像など、明確なエッジを持つ画像に適している
バイラテラルフィルタリング
- 長所:エッジを非常に効果的に保存、自然な見た目の結果が得られる
- 短所:計算コストが高い、強いノイズに対しては効果が限定的
- 適用シーン:写真画像の自然なノイズ除去、テクスチャを保持したい場合
ウェーブレット変換によるノイズ除去
- 長所:様々な種類のノイズに対応可能、細部とエッジの保持が可能
- 短所:パラメータ調整が複雑、不適切な設定でアーティファクトが発生することがある
- 適用シーン:複雑なテクスチャを持つ画像、低コントラスト画像
まとめ
この記事では、scikit-imageライブラリを使用した3つの代表的なノイズ除去手法について解説しました。それぞれの手法には固有の長所と短所があり、画像の特性やノイズの種類に応じて適切な手法を選択することが重要です。
実際のアプリケーションでは、以下の点を考慮することをお勧めします:
- 画像の種類とノイズの特性に合わせて手法を選択する
- 複数の手法を組み合わせることで、より良い結果が得られることもある
- パラメータの最適化は画像ごとに異なるため、実験的に最適値を見つける
scikit-imageの優れた点は、これらの高度なアルゴリズムを簡単に使用できることです。この記事で紹介した手法を基に、あなたに最適なノイズ除去戦略を見つけてください。
コメント