Main Content

正則化フィルターを使用したイメージのブレ除去

この例では、正規化の逆畳み込みを使用してイメージのブレを除去する方法を示します。正則化の逆畳み込みは、加法性ノイズについての制限情報が既知で、復元されるイメージに制約 (滑らかさなど) が適用される場合、有効に利用することができます。ブレとノイズを含むイメージは、正則化フィルターを使った制約付き最小二乗復元アルゴリズムにより復元されます。

ガウスぼかしとガウス ノイズのシミュレーション

ブレやノイズのない初期状態のイメージを読み取って表示します。

I = im2double(imread("tissue.png"));
imshow(I)
title("Original Image")
text(size(I,2),size(I,1)+15, ...
    "Image courtesy of Alan Partin, Johns Hopkins University", ...
    FontSize=7,HorizontalAlignment="right")

ピンぼけのレンズによって発生するブレを含むイメージをシミュレートします。まず、関数 fspecial を使用し、サイズが 11 x 11 で標準偏差が 5 のガウス フィルターを指定することにより、点像分布関数 PSF を作成します。その後、imfilter を使用して、点像分布関数とイメージを畳み込みます。

PSF = fspecial("gaussian",11,5);
blurred = imfilter(I,PSF,"conv");

関数 imnoise を使用して、ブレを含むイメージにゼロ平均のガウス ノイズを追加します。

noise_mean = 0;
noise_var = 0.02;
blurred_noisy = imnoise(blurred,"gaussian",noise_mean,noise_var);

ブレとノイズを含むイメージを表示します。

imshow(blurred_noisy)
title("Blurred and Noisy Image")

推定されたノイズ パワーを使用したイメージの復元

ノイズ パワー (NP) を 3 番目の入力パラメーターとして指定した関数 deconvreg を使用して、ブレを含むイメージを復元します。ノイズ パワー値へのアルゴリズムの感度を示すために、この例では、3 つの復元を実行します。

最初の復元では、真の NP を使用します。この例では、2 つのパラメーターが出力されることに注意してください。最初の戻り値 reg1 は、復元されたイメージです。2 番目の戻り値 lagra はスカラーであり、正規化の逆畳み込みが収束するラグランジュ乗数です。この値は後ほど例で使用されます。

NP = noise_var*numel(I);
[reg1,lagra] = deconvreg(blurred_noisy,PSF,NP);
imshow(reg1)
title("Restored with True NP")

2 番目の復元では、わずかに過大推定されたノイズ パワーを使用します。この復元では解像度が低下します。

NP_scale1 = 1.1;
reg2 = deconvreg(blurred_noisy,PSF,NP*NP_scale1);
imshow(reg2)
title("Restored with Larger NP")

3 番目の復元では、わずかに過小推定されたノイズ パワーを使用します。ノイズ パワー乗算器が小さくなると、ノイズ増幅およびイメージの境界線からのリンギングが強くなります。

NP_scale2 = 0.9;
reg3 = deconvreg(blurred_noisy,PSF,NP*NP_scale2);
imshow(reg3)
title("Restored with Smaller NP")

ノイズ増幅およびリンギングの低減

逆畳み込みの前に関数 edgetaper を呼び出して、ノイズ増幅およびイメージの境界線のリンギングを低減できます。このイメージ復元ではノイズ パワー パラメーターに対する感度が低下します。

tapered = edgetaper(blurred_noisy,PSF);
reg4 = deconvreg(tapered,PSF,NP*NP_scale2);
imshow(reg4)
title("Restored with Smaller NP and Edge Tapering")

ラグランジュ乗数の使用

最適解が既に見つかり、対応するラグランジュ乗数が既知であると仮定して、ブレとノイズを含むイメージを復元します。この場合、ノイズ パワー NP に渡された値が無視されます。

ラグランジュ乗数へのアルゴリズムの感度を示すために、この例では、3 つの復元を実行します。最初の復元では、以前に実行した reg1 復元の lagra 出力を使用します。

reg5 = deconvreg(tapered,PSF,[],lagra);
imshow(reg5)
title("Restored with LAGRA")

2 番目の復元では、reg1 復元の lagra 出力より大きい値を使用します。値が大きくなると、制約の有意性が増大します。既定の設定では、イメージが過剰に平滑化されています。

lagra_scale1 = 100;
reg6 = deconvreg(tapered,PSF,[],lagra*lagra_scale1);
imshow(reg6)
title("Restored with Large LAGRA")

3 番目の復元では、reg1 復元の lagra 出力より小さい値を使用します。値が小さくなると、制約 (イメージの平滑化要件のセット) が弱くなります。これによりノイズが増幅されます。ラグランジュ乗数が 0 に等しい極端な場合、再構成は純粋な逆フィルターになります。

lagra_scale2 = 0.01;
reg7 = deconvreg(tapered,PSF,[],lagra*lagra_scale2);
imshow(reg7)
title("Restored with Small LAGRA")

異なる平滑化の制約の使用

正則化演算子に別の制約を使用して、ブレとノイズを含むイメージを復元します。イメージの平滑化に既定のラプラシアン制約を使用する代わりに、3 行 3 列のガウスのラプシアン (LoG) 演算子を使用してイメージの平滑化を制約します。

h = fspecial("log",3);
reg8 = deconvreg(blurred_noisy,PSF,[],lagra,h);
imshow(reg8)
title("Constrained by LoG Operator")

参考

| | |

関連するトピック