はじめに
ここでは、skimage restoration denoise_nl_meansの非局所平均フィルタにより、ノイズを低減する例について説明する。
コード
解説
モジュールのインポート
画像データの読み込みと型変更
マミラリア・満月の画像を読み込む。
データ形式を0-1のfloat型ににする。
ノイズの乗った画像の生成
random_noise()の分散(var)を指定することでノイズが加わった画像が生成する。sigmaを大きくするとノイズも大きくなる。
ノイズのsigma値の推測
estimate_sigmaにより、ノイズの乗った画像のノイズのsigma値を推測することができる。
非局所平均フィルタによるノイズの低減
非局所平均フィルタはエッジ保存型のノイズフィルタであり、所定の範囲のデータに重みをかけてブレンドすることで画像を滑らかにする。
patch_sizeはノイズ除去に使用されるパッチのサイズで、
patch_distance はノイズ除去に使用されるパッチを検索する距離の最大値となる。6の場合、13×13の領域で検索が行われる。
hはカットオフ値で、 hを高くすると、画像が滑らかになるが、エッジがぼやける。標準偏差σのガウスノイズの場合、hの値をわずかに小さいσとすることでうまく行くことが多い。
sigmaを設定すると、ノイズ除去性能が向上する。
fast_modeをTrueにするとアルゴリズムが変化し、計算速度が早くなる。
画像の表示
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
参考
Non-local means denoising for preserving textures — skimage 0.25.0 documentation
Non-local Means Filterの実装 - Qiita
この記事はレイトレ合宿4!?アドベントカレンダー5週目の記事になります。レイトレ合宿!?レイトレ合宿は、お手製のレンダラーを持ち寄る集会です。今回初参加させてもらうことになりました。よろしくお…
コメント