このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
事前学習済みのニューラル ネットワークを使用した、カラー イメージからのノイズ除去
この例では、ノイズ除去畳み込みニューラル ネットワークを使用して RGB イメージからガウス ノイズを除去する方法を示します。
カラー イメージをワークスペースに読み取り、データをデータ型 double
に変換します。初期状態のカラー イメージを表示します。
pristineRGB = imread("lighthouse.png"); pristineRGB = im2double(pristineRGB); imshow(pristineRGB) title("Pristine Image")
分散 0.01 のゼロ平均ガウス ホワイト ノイズをイメージに追加します。関数 imnoise
は、各カラー チャネルに対してノイズを個別に追加します。ノイズを含むカラー イメージを表示します。
noisyRGB = imnoise(pristineRGB,"gaussian",0,0.01); imshow(noisyRGB) title("Noisy Image")
事前学習済みのノイズ除去畳み込みニューラル ネットワーク DnCNN は、シングル チャネル イメージで動作します。ノイズを含む RGB イメージを 3 つの個別のカラー チャネルに分割します。
[noisyR,noisyG,noisyB] = imsplit(noisyRGB);
事前学習済み DnCNN ネットワークを読み込みます。
net = denoisingNetwork("dncnn");
DnCNN ネットワークを使用して各カラー チャネルからノイズを除去します。
denoisedR = denoiseImage(noisyR,net); denoisedG = denoiseImage(noisyG,net); denoisedB = denoiseImage(noisyB,net);
ノイズ除去後のカラー チャネルを再度組み合わせてノイズ除去後の RGB イメージを作成します。ノイズ除去後のカラー イメージを表示します。
denoisedRGB = cat(3,denoisedR,denoisedG,denoisedB);
imshow(denoisedRGB)
title("Denoised Image")
ノイズの多いイメージとノイズ除去後のイメージのピーク S/N 比 (PSNR) を計算します。PSNR が大きいほどノイズの相対シグナルが小さく、画質が高くなります。
noisyPSNR = psnr(noisyRGB,pristineRGB);
fprintf("\n The PSNR value of the noisy image is %0.4f.",noisyPSNR);
The PSNR value of the noisy image is 20.6395.
denoisedPSNR = psnr(denoisedRGB,pristineRGB);
fprintf("\n The PSNR value of the denoised image is %0.4f.",denoisedPSNR);
The PSNR value of the denoised image is 29.6857.
ノイズの多いイメージとノイズ除去後のイメージの構造類似度 (SSIM) インデックスを計算します。SSIM インデックスが 1 に近いほど参照イメージに合致し、画質が高くなります。
noisySSIM = ssim(noisyRGB,pristineRGB);
fprintf("\n The SSIM value of the noisy image is %0.4f.",noisySSIM);
The SSIM value of the noisy image is 0.7393.
denoisedSSIM = ssim(denoisedRGB,pristineRGB);
fprintf("\n The SSIM value of the denoised image is %0.4f.",denoisedSSIM);
The SSIM value of the denoised image is 0.9507.
実際には、イメージのカラー チャネルにはしばしば相関ノイズが存在します。相関イメージ ノイズを除去するには、まず RGB イメージを、L*a*b* 色空間など、輝度チャネルのある色空間に変換します。輝度チャネルのノイズのみを除去し、ノイズ除去後のイメージを変換して RGB 色空間に戻します。
参考
denoisingNetwork
| denoiseImage
| rgb2lab
| lab2rgb
| psnr
| ssim
| imnoise