ガイド付きフィルターを使用したフラッシュあり/フラッシュなしのノイズ除去の実行
R2026bこの例では、ガイド付きフィルターを使用して、エッジを維持しながらイメージを平滑化し、ノイズを低減する方法を説明します。この例では、同じシーンの 2 つの写真を使用します。1 つはフラッシュを使用して撮影したもの、もう 1 つはフラッシュなしで撮影したものです。フラッシュなしのバージョンでは、色は維持されていますが、光量が少ないためノイズが多くなっています。この例では、フラッシュを使用して撮影したバージョンをガイド イメージとして使用します。
フィルター処理するイメージをワークスペースに読み取ります。この例では、フラッシュなしで撮影したいくつかのおもちゃのイメージを使用します。光量が少ないため、このイメージにはノイズが多く含まれています。
A = imread("toysnoflash.png"); figure imshow(A) title("Input Image - Camera Flash Off")

ガイド イメージとして使用するイメージをワークスペースに読み取ります。この例で使用するガイド イメージは、同じシーンをフラッシュを使用して撮影した写真です。
G = imread("toysflash.png"); figure imshow(G) title("Guidance Image - Camera Flash On")

ガイド付きフィルタリング演算を実行します。関数 imguidedfilter を使用すると、フィルター処理に使用する近傍のサイズを指定できます。既定は 5 行 5 列の正方形です。この例では 3 行 3 列の近傍を使用します。フィルターで実行する平滑化の量も指定できます。この値には任意の正の数値を指定できます。これを行う方法の 1 つは、まず既定値を使用して結果を表示することです。平滑化を減らしてエッジ保存を増やす場合は、このパラメーターの値を小さくします。平滑化を増やす場合は、値を大きくします。この例では、平滑化パラメーターの値を設定します。
nhoodSize = 3;
smoothValue = 0.001*diff(getrangefromclass(G)).^2;
B = imguidedfilter(A,G,NeighborhoodSize=nhoodSize,DegreeOfSmoothing=smoothValue);
figure
imshow(B)
title("Filtered Image")
元のイメージの一部をクローズアップして調べ、フィルター処理されたイメージと比較して、このエッジ保存平滑化フィルターの効果を確認します。
figure h1 = subplot(1,2,1); imshow(A) title("Region in Original Image") axis on h2 = subplot(1,2,2); imshow(B) title("Region in Filtered Image") axis on linkaxes([h1 h2]) xlim([520 660]) ylim([150 250])
