[scikit-image] 41. 非局所平均フィルタによる画像のノイズ低減(skimage.restoration denoise_nl_means)

python

はじめに

ここでは、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.23.1 documentation
Non-local Means Filterの実装 - Qiita
この記事はレイトレ合宿4!?アドベントカレンダー5週目の記事になります。レイトレ合宿!?レイトレ合宿は、お手製のレンダラーを持ち寄る集会です。今回初参加させてもらうことになりました。よろしくお…

コメント