写真のノイズを消す
写真のノイズを消します。暗い場所や高いISO感度などで撮影すると撮像素子の雑音に起因して写真にノイズが乗ってしまいます。OpenCVのノイズ除去機能fastNlMeansDenoisingColoredを使うことでノイズを低減できます。
環境
準備
次の画像ファイル'noise.jpg'をjupyter notebookファイルと同じディレクトリにコピーします。暗いところで高ISOで撮影したためノイズが乗ってザラザラしてします。
コード
まずはblurによるぼかしを試します。カーネルは9x9です。
import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('noise.jpg') dst = cv2.blur(img, (9, 9)) cv2.imwrite('blur.jpg', dst)
実行結果
ノイズ感はなくなりますが全体的にぼけてディテールが失われてしまいます。
コード
続いてfastNlMeansDenoisingColoredを試します。パラメーターはデフォルトです。
import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('noise.jpg') dst = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21) cv2.imwrite('denoise.jpg', dst)
実行結果
カラビナの形状をぼやかさずノイズ感を低減できます。
以下のサイトを参考にさせていただきました
OpenCV-Python Tutorials 1 documentation >> 画像のノイズ除去