使用维纳滤波解模糊图像
这个例子展示了如何使用维纳反褶积解模糊图像。维纳反褶积时可以有效地使用图像和加性噪声的频率特性是已知的,至少某种程度上。
阅读原始图像
读取和显示原始图像没有模糊或噪音。
Ioriginal = imread (“cameraman.tif”);imshow (Ioriginal)标题(原始图像的)
模拟和恢复运动模糊,没有噪音
模拟可能由于摄像机运动模糊图像。首先,创建一个点扩散函数,PSF
,通过使用fspecial
功能和指定线性运动在21像素11度的角。然后,点扩散函数进行卷积图像通过使用imfilter
。
原始图像数据类型uint8
。如果你通过uint8
图像imfilter
,那么函数将数字转换的输出以返回另一个uint8
的形象。减少量子化错误,将图像转换为双
在调用之前imfilter
。
PSF = fspecial (“运动”21岁,11);Idouble = im2double (Ioriginal);模糊= imfilter (Idouble PSF,“conv”,“圆”);imshow(模糊)标题(模糊图像的)
恢复模糊图像通过使用deconvwnr
函数。模糊图像没有噪音,这样你就可以省略noise-to-signal (NSR)输入参数。
wnr1 = deconvwnr(模糊,PSF);imshow (wnr1)标题(“恢复模糊图像”)
模拟和恢复运动模糊和高斯噪声
添加零均值高斯噪声的模糊图像通过使用imnoise
函数。
noise_mean = 0;noise_var = 0.0001;blurred_noisy = imnoise(模糊,“高斯”、noise_mean noise_var);imshow (blurred_noisy)标题(模糊和噪声图像)
试图恢复嘈杂的图像通过使用模糊deconvwnr
没有提供一个噪声估计。默认情况下,维纳滤波器恢复假设NSR = 0。在这种情况下,维纳滤波器恢复相当于理想逆滤波器,可以在输入图像噪声非常敏感。
在这个例子中,这个恢复的噪声放大到如此程度的图像内容。
wnr2 = deconvwnr (blurred_noisy PSF);imshow (wnr2)标题(模糊噪声图像的恢复(NSR = 0) ')
试图恢复嘈杂的图像通过使用模糊deconvwnr
用一个更实际的价值估计的噪声。
signal_var = var (Idouble (:));NSR = noise_var / signal_var;wnr3 = deconvwnr (PSF, blurred_noisy NSR);imshow (wnr3)标题(模糊噪声图像的恢复(NSR)估计的)
模拟和恢复运动模糊和8位量化噪声
甚至一个视觉听不清的声音会影响结果。噪声的一个来源是量子化错误处理图像uint8
表示。早些时候,为了避免量子化错误,这个例子模拟一个模糊的图像从原始图像数据类型双
。现在,探索量子化错误恢复的影响,模拟原模糊图像从原始图像uint8
数据类型。
blurred_quantized = imfilter (Ioriginal PSF,“conv”,“圆”);imshow (blurred_quantized)标题(“模糊量化的图像”)
试图恢复模糊量化图像通过使用deconvwnr
没有提供一个噪声估计。即使没有了更多的噪音,这个恢复退化与恢复模糊图像的数据类型双
。
wnr4 = deconvwnr (blurred_quantized PSF);imshow (wnr4)标题(量化模糊图像的恢复(NSR = 0) ');
试图恢复模糊量化图像通过使用deconvwnr
用一个更实际的价值估计的噪声。
uniform_quantization_var = (1/256) ^ 2/12;signal_var = var (Idouble (:));NSR = uniform_quantization_var / signal_var;wnr5 = deconvwnr (PSF, blurred_quantized NSR);imshow (wnr5)标题(量化模糊图像的恢复(NSR)估计的);
另请参阅
deconvwnr
|fspecial
|imfilter
|imnoise