このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
正則化フィルターを使用したイメージのブレ除去
この例では、正規化の逆畳み込みを使用してイメージのブレを除去する方法を示します。正則化の逆畳み込みは、加法性ノイズについての制限情報が既知で、復元されるイメージに制約 (滑らかさなど) が適用される場合、有効に利用することができます。ブレとノイズを含むイメージは、正則化フィルターを使った制約付き最小二乗復元アルゴリズムにより復元されます。
ガウスぼかしとガウス ノイズのシミュレーション
ブレやノイズのない初期状態のイメージを読み取って表示します。
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")
参考
deconvreg
| imnoise
| fspecial
| imfilter