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")

Figure contains an axes object. The axes object with title Original Image contains 2 objects of type image, text.

ピンぼけのレンズによって発生するブレを含むイメージをシミュレートします。まず、関数 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")

Figure contains an axes object. The axes object with title Blurred and Noisy Image contains an object of type 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")

Figure contains an axes object. The axes object with title Restored with True NP contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Restored with Larger NP contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Restored with Smaller NP contains an object of type image.

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

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

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

Figure contains an axes object. The axes object with title Restored with Smaller NP and Edge Tapering contains an object of type image.

ラグランジュ乗数の使用

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

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

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

Figure contains an axes object. The axes object with title Restored with LAGRA contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Restored with Large LAGRA contains an object of type image.

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

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

Figure contains an axes object. The axes object with title Restored with Small LAGRA contains an object of type image.

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

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

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

Figure contains an axes object. The axes object with title Constrained by LoG Operator contains an object of type image.

参考

| | |

関連するトピック