这个例子展示了如何使用正则反卷积去模糊图像。正则化反褶积可以有效地应用于已知有限信息的加性噪声和约束(如平滑度)的恢复图像。采用正则化滤波的约束最小二乘恢复算法对模糊和噪声图像进行恢复。
读取并显示一个没有模糊或噪声的原始图像。
我= im2double (imread (“tissue.png”));imshow(我);标题(原始图像的);文本(大小(我,2),大小(我,1)+ 15,...图片由约翰霍普金斯大学艾伦·帕廷提供,...“字形大小”7“HorizontalAlignment”,“对”);
模拟可能由失焦镜头造成的模糊图像。首先,创建一个点扩散函数,PSF
,通过使用fspecial
函数,并指定大小为11 × 11的高斯滤波器和标准偏差为5。然后,将点扩散函数与图像进行卷积imfilter
.
PSF = fspecial (“高斯”11日,5);模糊= imfilter (PSF,我“conv”);
在模糊图像中加入零均值高斯噪声imnoise
函数。
noise_mean = 0;noise_var = 0.02;blurred_noisy = imnoise(模糊,“高斯”、noise_mean noise_var);
显示模糊噪声图像。
imshow (blurred_noisy)标题(“模糊和嘈杂的图像”)
利用该方法恢复模糊图像deconvreg
函数,提供噪声功率(NP)作为第三输入参数。为了说明算法对噪声功率的敏感性,本例执行了三次恢复。
对于第一次恢复,使用真正的NP。注意,示例在这里输出两个参数。第一个返回值,reg1
,是恢复后的图像。第二个返回值,lagra
,是正则反褶积收敛于其上的标量拉格朗日乘子。这个值将在后面的示例中使用。
NP = noise_var *元素个数(我);[reg1, lagra] = deconvreg (PSF, blurred_noisy NP);imshow (reg1)标题(“恢复为真正的NP”)
对于第二次恢复,使用稍微高估的噪声功率。修复的分辨率很差。
reg2 = deconvreg (PSF, blurred_noisy NP * 1.3);imshow (reg2)标题(“大NP恢复”)
对于第三次修复,使用稍微低估的噪声功率。恢复有压倒性的噪声放大和铃声从图像边界。
reg3 = deconvreg (PSF, blurred_noisy NP / 1.3);imshow (reg3)标题(“用更小的NP恢复”)
你可以减少噪声放大和沿着图像边界的铃声,通过调用edgetaper
函数在反褶积之前。图像恢复对噪声功率参数的敏感性降低。
小幅= edgetaper (blurred_noisy PSF);reg4 = deconvreg (PSF,小幅NP / 1.3);imshow (reg4)标题(“用更小的NP和锥形边缘恢复”)
恢复模糊和噪声图像,假设最优解已经找到,相应的拉格朗日乘子已知。在这种情况下,噪声功率(NP)的任何值都被忽略。
为了说明算法对拉格朗日乘数的敏感性,本例执行了三次恢复。第一次修复使用lagra
的输出reg1
恢复执行。
reg5 = deconvreg (PSF,小幅[],lagra);imshow (reg5)标题(“恢复与LAGRA”)
第二次修复使用100*lagra
这增加了约束的重要性。默认情况下,这会导致图像的过度平滑。
reg6 = deconvreg (PSF,小幅[],lagra * 100);imshow (reg6)标题(“用大拉格拉恢复”)
第三次修复使用了lagra
/100,这削弱了约束(图像的平滑要求)。它放大了噪音。对于拉格朗日乘子为0的极端情况,重构为纯逆滤波。
reg7 = deconvreg (PSF,小幅[],lagra / 100);imshow (reg7)标题(“用小拉格拉修复”)
使用正则化算子的不同约束来恢复模糊和有噪声的图像。不使用图像平滑的默认拉普拉斯约束,只在一维(1-D拉普拉斯)约束图像平滑。
Regop = [-1 2 -1];reg8 = deconvreg (blurred_noisy PSF, [], lagra, regop);imshow (reg8)标题("受到一维拉普拉斯方程的约束")
deconvreg
|imnoise
|fspecial
|imfilter