Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

写真のノイズを消す

写真のノイズを消します。暗い場所や高いISO感度などで撮影すると撮像素子の雑音に起因して写真にノイズが乗ってしまいます。OpenCVのノイズ除去機能fastNlMeansDenoisingColoredを使うことでノイズを低減できます。

環境
  • windows10 home
  • jupyter notebook 6.3.0
  • Python 3.8.8
  • OpenCV 4.0.1
準備

次の画像ファイル'noise.jpg'をjupyter notebookファイルと同じディレクトリにコピーします。暗いところで高ISOで撮影したためノイズが乗ってザラザラしてします。
f:id:T_A_T:20210906181702j:plain

コード

まずは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)
実行結果

ノイズ感はなくなりますが全体的にぼけてディテールが失われてしまいます。
f:id:T_A_T:20210906181942j:plain

コード

続いて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)
実行結果

カラビナの形状をぼやかさずノイズ感を低減できます。
f:id:T_A_T:20210906182457j:plain

以下のサイトを参考にさせていただきました

OpenCV-Python Tutorials 1 documentation >> 画像のノイズ除去

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村