数字图像处理第四章
数字图像处理—图像复原
复原的目的是在预定意义上改善给定的图像。尽管图像增强和图像复原之间存在重叠的部分,但前者主要是主观的处理,而图像复原大部分是客观的处理。复原利用降质现象的先验知识试图重建或恢复一幅退化的图像。因此,复原技术倾向于对退化建模,并用相反的处理来恢复原始图像。
(一)图像退化/复原处理的模型
用退化函数对退化过程建模,它和附加噪声选项一起,作用于输入图像f(x,y),产生一幅退化的图像g(x,y):
图像退化/复原处理的模型:
复原的目标就是得到原始图像的估计。我们要使这个估计尽可能接近原始的输入图像。通常,我们对H和η(x,y)知道得越多,图像的估计就越接近f(x,y)。
如果H是线性的,空间不变的过程,那么退化图像在空间域将由下面的式子给出:
h(x,y)是退化函数的空间表示,“星号”表示卷积。空间域的卷积和频域的乘法组成了傅立叶变换对,所以我们可以用等价的频域表示来写出前面的模型:
由于退化是线性的,因此空间不变的退化函数可以由卷积来建模,类似地,复原处理有时候也称为反卷积。
(二)噪声模型
能够模拟噪声的行为和效果的能力是图像复原的核心。
2.1 用imnoise函数为图像添加噪声
图像处理工具箱釆用 imnoise 函数,使噪声污染一幅图像。这个函数有如下基本语法:
g = imnoise(f, type, parameters)
注意:函数 imnoise 在为图像添加噪声之前,将图像转换为范围在[0,1]的double类。
imnoise 函数有如下形式:
1.将均值为m,方差为var的高斯噪声加到图像 f 上。默认为均值是 0、方差是 0.01 的噪声。
g = imnoise(f, ’gaussian', m,var)
代码编写:
w = imread('D:\数字图像处理\第四章学习\tree.jpg');
%w = imread('D:\数字图像处理\第四章学习\building.jpg');
f = im2double(w); %把图像变为灰度图像
g = imnoise(f, 'gaussian', 0.1,0.01) ; %方差为0.01
%g = imnoise(f, 'gaussian', 0.1,0.05) ; %方差为0.05
%g = imnoise(f, 'gaussian', 0.1,0.2) ; %方差为0.2
subplot(2, 2, 1), imshow(w), title('原图像');
subplot(2, 2, 2), imshow(g,[]), title('均值为0.1方差为0.01的高斯噪声加到图像');
subplot(2, 2, 3), imshow(g,[]), title('均值为0.1方差为0.05的高斯噪声加到图像');
subplot(2, 2, 4), imshow(g,[]), title('均值为0.1方差为0.2的高斯噪声加到图像');
代码运行效果如下:
实验结论:明显看出对于同一张图片,高斯白噪声方差越大,图像越模糊。而对于不同类型图像,白天室外拍出的图片以及室内强光下拍出的图片在同样方差的高斯白噪声下,图像更清晰,而夜晚光线较差情况下拍出的图片(第一幅夜晚的树)在同样方差的高斯白噪声下,图像更模糊。所以在加入相同方差的高斯噪声的情况下,图像最终的显示效果也与图像自身的清晰度有关。
2.将均值为 0、局部方差为 V的高斯噪声添加到图像 f 上。其中,V 是与 f 大小相同的数组,其中包含了每个点的理想方差值。
g=imnoise (f,localvar,V)
编写代码:
w = imread('D:\数字图像处理\第四章学习\sea.jpg');
%w = imread('D:\数字图像处理\第四章学习\grapes.jpg');
%w = imread('D:\数字图像处理\第四章学习\building.jpg');
f = im2double(rgb2gray(w)); %把图像变为灰度图像
[n,m]=size(f);
v = rand(n,m);
g = imnoise(f,'localvar',v); %产生高斯噪声方法
subplot(1, 2, 1), imshow(w), title('原图像');
subplot(1, 2, 2), imshow(g), title('均值为0、局部方差为V的高斯噪声加到图像');
代码运行效果如下:
3.用椒盐噪声污染图像 f。其中,d是噪声密度(也就是包含噪声值的图像区域的百分比)。因此,大约d*nurael (f) 个像素受到影响。 默认的噪声密度是 0.05。
g=imnoise (f, 'salt & pepper ',d)
代码编写:
w = imread('D:\数字图像处理\第四章学习\tree.jpg');
f = im2double(rgb2gray(w)); %把图像变为灰度图像
g = imnoise (f, 'salt & pepper',0.12);
subplot(1, 3, 1), imshow(w), title('原图像');
subplot(1, 3, 2), imshow(f), title('原图像的灰度图像');
subplot(1, 3, 3), imshow(g), title('椒盐噪声加到图像');
代码运行效果如下:
4. 用方程式 g=f+n.*f 将乘性噪声添加到图像 f 上。其中,n是均值为 0、方差为 v 的均匀分布的随机噪声。var 的默认值是0.04。
g = imnoise(f,'speckle',v)
编写代码:
w = imread('D:\数字图像处理\第四章学习\face.jpg');
%w = imread('D:\数字图像处理\第四章学习\xiaoma