このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ガイド付きフィルターを使用したフラッシュあり/フラッシュなしのノイズ除去の実行
この例では、ガイド付きフィルターを使用して、エッジを維持しながらイメージを平滑化し、ノイズを低減する方法を説明します。この例では、同じシーンの 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])