数字图像处理(六)图像降噪处理

坚强是说给别人听的谎言 提交于 2020-03-11 12:41:28

1.噪声

1.1噪声分类
噪声是图像干扰的重要原因。一幅图像在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。
根据噪声和信号的关系可将其分为三种形式:(f(x,y)表示给定原始图像,g(x,y)表示图像信号,n(x,y)表示噪声。)
1)加性噪声,此类噪声与输入图像信号无关,含噪图像可表示为f(x,y)=g(x,y)+ n(x,y),信道噪声及光导摄像管的摄像机扫描图像时产生的噪声就属这类噪声。
2)乘性噪声,此类噪声 与图像信号有关,含噪图像可表示为f(x,y)=g(x,y)+ n(x,y)g(x,y),飞点扫描器扛描图像时的噪声,电视图像中的相干噪声,胶片中的颗粒噪声就属于此类噪声。
3)量化噪声,此类噪声 与输入图像信号无关,是量化过程存在量化误差,再反映到接收端而产生。
1.2椒盐噪声
椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割弓|起。去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。
路面图像属于结构光图像,使用区域分割技术中的阈值分割法消除白噪声及部分椒盐噪声,而不能使用中值滤波对白噪声及椒盐噪声进行滤波,因为滤波模板在图像中漫游时会改变光条中像素的真实灰度分布,给随后的重心法细化过程带来负面影响。
大量的实验研究发现,由摄像机拍摄得到的图像受离散的脉冲、椒盐噪声和零均值的高斯噪声的影响较严重。噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。因此,实时采集的图像需进行滤波处理。消除图像中的噪声成份叫做图像的平滑化或滤波操作。
噪声是指两种噪声,一 种是盐噪声( salt noise ) ,另一种是胡椒噪声( pepper noise )。盐=白色,椒=黑色。前者是高灰度噪声,后者属于低灰度噪声。椒盐噪声同时出现,呈现在图像上就是黑白杂点。
噪声类型是 ‘salt & pepper’ 一定注意空格的位置 这里比较严格。当噪声类型是’salt & pepper’的时候,第三个参数的意思是噪声密度,比如0.1,那么总像素个数的10%为黑白点,当然是黑点还是白点都是随机的。
在这里插入图片描述

I=imread('下载.jpg');
G=rgb2gray(I);
J = imnoise(G,'salt & pepper',0.05);
J1= imnoise(G,'salt & pepper',0.05);
J2= imnoise(G,'salt & pepper',0.05);
[M,N]=size(J);
for i=1:M
for j=1:N
if(J1(i,j)==255)
J1(i,j)=0;
else
J1(i,j)=J1(i,j);
end
end
end
for i=1:M
for j=1:N
if(J2(i,j)==0)
J2(i,j)=255;
else
J2(i,j)=J2(i,j);
end
end
end
A= meshgrid(1:3, 1:3);
A1= meshgrid(1:5, 1:5);
A2= meshgrid(1:8, 1:8);
figure(1)
subplot(221);imshow(G);title('原始灰度图像');
subplot(222);imshow(J);title('添加椒盐噪声图像');
subplot(223);imshow(J1);title('添加胡椒噪声图像');
subplot(224);imshow(J2);title('添加盐噪声图像');

在这里插入图片描述

t=imread('下载.jpg');
subplot(1,4,1),imshow(t),title('原图');
t1=imnoise(t,'salt & pepper',0.1);
subplot(1,4,2),imshow(t1),title('加入噪声密度:0.1的椒盐噪声');
t2=imnoise(t,'salt & pepper',0.2);
subplot(1,4,3),imshow(t2),title('加入噪声密度:0.2的椒盐噪声');
t3=imnoise(t,'salt & pepper',0.3);
subplot(1,4,4),imshow(t3),title('加入噪声密度:0.3的椒盐噪声');

3.图像降噪处理方法

3.1中值滤波
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。但在条纹中心分析方法中作用不大。
实现方法
(1)通过从图像中的某个采样窗口取出奇数个数据进行排序;
(2)用排序后的中值取代要处理的数据即可。
实际应用
中值滤波法对消除椒盐噪声非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大。中值滤波在图像处理中,常用于保护边缘信息,是经典的平滑噪声的方法。
中值滤波器将受干扰的像素值替换为模板区域的中值,同时它可以保护图像尖锐的边缘,且比相同尺寸的线性平滑滤波器引起的模糊更少,消除脉冲噪声的效果较好。
在这里插入图片描述

I=imread('下载.jpg');
G=rgb2gray(I);
J = imnoise(G,'salt & pepper',0.05);subplot(221),imshow(I);title('原图像');
subplot(222),imshow(J);title('添加椒盐噪声图像');
k1=medfilt2(J);
 subplot(223),imshow(k1);title('3*3模板中值滤波');

3.2最大值与最小值滤波
最大值滤波,即以模板内进行有序排列后最大像素值代替中心像素值,可以去除图像中的暗斑,使亮斑增大。
最小值滤波,即以模板内进行有序排列后最小像素值代替中心像素值,可以去除图像中的亮斑,使暗斑增大。
利用最大值滤波器对胡椒噪声进行处理,成功消除了胡椒噪声,但应注意到,它同时也从黑色物体的边缘移走了一些黑色像素。
利用最小值滤波器对盐噪声进行处理,在这种情况下,最小值滤波器比最大值滤波器效果更好,但它也从亮物体边缘移走了一些白色像素,使亮物体变小,暗物体变大,这是因为围绕着这些物体的白点被设置成了暗灰度级。

%%%%%%------------------图像复原之空间滤波---------------------------------
%读入图像,并转换为double型
I=imread('下载.jpg');G=rgb2gray(I);
J = imnoise(G,'salt & pepper',0.05);subplot(221),imshow(I);title('原图像');
subplot(222),imshow(J);title('添加椒盐噪声图像');
I_D=im2double(J);
[MM,NN]=size(I_D);
 
%%%%%----------------------2、顺序统计滤波器-------------------------------
%%======================= 2.2 最大值或最小值滤波器=========================
%最大值滤波适合处理带有“胡椒噪声”的图像
%最小值滤波器适合处理带有“盐”噪声的图像
%定义子窗口的尺寸
m=3;
n=3;
%确定要扩展的行列数
len_m=floor(m/2);
len_n=floor(n/2);
%将原始图像进行扩展,这里采用了镜像扩展,以进行图像边缘计算
I_D_pad=padarray(I_D,[len_m,len_n],'symmetric');
%获得扩展后的图像尺寸
[M,N]=size(I_D_pad);
J_Max=zeros(MM,NN);
%J_Min=zeros(MM,NN);
%逐点计算子窗口的最大/最小值
for i=1+len_m:M-len_m
    for j=1+len_n:N-len_n
        %从扩展图像中取出子图像
        Block=I_D_pad(i-len_m:i+len_m,j-len_n:j+len_n);
        %最大值滤波        
        J_Max(i-len_m,j-len_n)=max(max(Block));
        %最小值滤波        
         J_Min(i-len_m,j-len_n)=min(min(Block));        
    end
end
subplot(223),imshow(J_Max);
title('最大值滤波器');
subplot(224),imshow(J_Min);
title('最小值滤波器')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
利用最大值滤波器对胡椒噪声进行处理,成功消除了胡椒噪声,但应注意到,它同时也从黑色物体的边缘移走了一些黑色像素。
利用最小值滤波器对盐噪声进行处理,在这种情况下,最小值滤波器比最大值滤波器效果更好,但它也从亮物体边缘移走了一些白色像素,使亮物体变小,暗物体变大,这是因为围绕着这些物体的白点被设置成了暗灰度级。
3.3均值滤波
均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围n个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
不足之处
均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在 图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

I=imread('下载.jpg');%读取图像
I = rgb2gray(I);%灰度处理
J=imnoise(I,'salt & pepper',0.2);%加入椒盐噪声,密度为0.2
subplot(2,3,1);imshow(I);
title('原始图像');
subplot(2,3,2); imshow(J);
title('加入椒盐噪声之后的图像');
%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波
K1= medfilt2(J);%采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波
%采用MATLAB中的函数filter2对受噪声干扰的图像进行中值滤波
K2=filter2(fspecial('average',3),J)/255; %模板尺寸为3
K3=filter2(fspecial('average',5),J)/255;% 模板尺寸为5
K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9
subplot(2,3,3);imshow(K1);
title('中值滤波');
subplot(2,3,4); imshow(K2);
title('均值滤波,尺寸3');
subplot(2,3,5);imshow(K3);
title('均值滤波,尺寸5');
subplot(2,3,6);imshow(K4);
title('均值滤波,尺寸9'); 

在这里插入图片描述
均值滤波器简单的平滑了一幅图像的的局部变化,在模糊了图像的同时减少了噪声,但不能完全的消除噪声。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!