1 图像噪声分类
一般图像去噪中常见的噪声有以下几种:
加性噪声 、乘性噪声 、量化噪声 、“椒盐”噪声 、高斯噪声 及冲击噪声。
根据噪声产生的来源,大致可以分为外部噪声和内部噪声两大类。
2 图像降噪算法
(1)邻域平均法
邻域平均法是一种利用Box模板对图像进行模板操作(卷积操作)的图像平滑方法,所谓Box模板是指模板中所有系数都取相同值的模板,常用的3×3和5×5模板如下:
给图像加入噪声密度为0.02的椒盐噪声,选择3×3模板降噪.,Matlab实现如下:
I = imread('1.tif');
J = imnoise(I,'salt & pepper',0.02);
H = [1 1 1;1 1 1;1 1 1];
H = H/9
J1=filter2(H,J,'same');
figure;
subplot(221), imshow(I), title('原始图像');
subplot(222), imshow(J), title('加噪图像');
subplot(223), imshow(J1,[]), title('邻域平均法滤波图像');
(2)中值滤波
中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。
给图像加入噪声密度为0.02的椒盐噪声,分别选择3×3模板、5×5模板、7×7和9×9模板进行降噪。
I = imread('1.tif');
j= imnoise(I,'salt & pepper',0.02);
j1= medfilt2(j,[3 3]);
j2= medfilt2(j,[5 5]);
j3= medfilt2(j,[7 7]);
j4= medfilt2(j,[9 9]);
subplot(321), imshow(I), title('原始图像');
subplot(322), imshow(j), title('加噪salt&pepper图像');
subplot(323), imshow(j1), title('中值滤波图像(3x3)');
subplot(324), imshow(j2), title('中值滤波图像(5x5)');
subplot(325), imshow(j3), title('中值滤波图像(7x7)');
subplot(326), imshow(j4), title('中值滤波图像(9x9)');
给图像加入噪声密度为0.02的椒盐噪声,分别用邻域平均法和中值滤波法对图像进行降噪,Matlab仿真结果如下:
中值滤波和邻域平均滤波对高斯噪声降噪的仿真结果对比如下:
(3)基于离散余弦变换的图像降噪
对于一幅图像来说在分析其频率特性时,它的边缘,突变部分以及颗粒噪声往往代表图像信号的高频分量,而大面积的图像背景区则代表图像信号的低频分量。
根据此特点使用滤波的方法滤除其高频部分也就能够去除噪声,使图像得到一定的平滑。
由卷积定理知识可知空间域的卷积就等于变换域里信号和滤波器的频域形式相乘,即有:
给图像加入均值为0,方差为0.02的高斯噪声,用离散余弦变换法进行降噪。
RGB = imread('1.tif');
I = rgb2gray(RGB);
subplot(321);imshow(RGB);title('彩色图像');
subplot(322);imshow(I);title('黑白图像');
h= imnoise(I,'gaussian');
subplot(323);imshow(h);title('加噪图像');
J = dct2(h);
subplot(324);imshow(log(abs(J)),[]);title('离散余弦变换所得频谱');colorbar;
[m,n]=size(J);m1=floor(m/2);n1=floor(n/2);
d=1500;
for i=1:m;
for j=1:n;
distance=sqrt((i-m1)^2+(j-n1)^2);
if distance<=d
h=1;
else h=0;
end;
J(i,j)=h*J(i,j);
end;
end;
K = idct2(J);
K=K/256;
subplot(325);imshow(K);title('滤波后离散余弦反变换恢复图像');
(4)基于小波变换的图像降噪
小波变换在时频域具有很好的局部性,其变尺度的特性使得小波变换对确定的信号具有一种“集中”的能力。
如果一个信号的能量在小波变换域集中于少数系数上,那么,这些系数的取值大于在小波变换域内能量分散在大量系数上的信号或噪声的小波系数值。含有噪声的图像经过小变换后,图像信号和噪声信号表现出不同的特征:信号的能量主要集中在一些亮线上,而大部分系数的值逼近于0;噪声的分布和信号的分布相反,它的系数均匀分布于整个尺度空间,幅度相差不大(在大尺度下会对噪声起到一定的平滑作用)。这一特性为基于小波变换的图像降噪提供了依据。
给图像加入均值为0,方差为0.02的高斯噪声,用小波函数coif2对图像进行分解。
X = imread('1.tif');
subplot(2,2,1);
imshow(X);
title('原始图像');
XXX=imnoise(X,'gaussian');
subplot(2,2,2);
imshow(XXX);
title('加噪图像');
[C,S]=wavedec2(XXX,2,'coif2');
a1 = wrcoef2('a',C,S,'coif2',1);
a1=uint8(a1);
subplot(2,2,3);
imshow(a1);
title('图像第一层重构降噪效果');
[C,S]=wavedec2(XXX,2,'coif2');
a1 = wrcoef2('a',C,S,'coif2',2);
a1=uint8(a1);
subplot(2,2,4);
imshow(a1);
title('图像第二层重构降噪效果');
给图像加入均值为0,方差为0.005的高斯噪声,分别用小波函数coif2和sym4对图像进行分解。
I=imread('1.tif');
subplot(321);imshow(I);title('原始图像');
j=imnoise(I,'gaussian',0,0.005);
[c,I]=wavedec2(j,2,'sym4');
j1=wrcoef2('a',c,I,'sym4',1);
j2=wrcoef2('a',c,I,'sym4',2);
[c,s]=wavedec2(j,2,'coif2');
j3=wrcoef2('a',c,s,'coif2',1);
j4=wrcoef2('a',c,s,'coif2',2);
subplot(322);imshow(j);title('含噪图像');
subplot(323);imshow(j1);title('第一次降噪图像(sym4)');
subplot(324);imshow(j3);title('第一次降噪图像(coif2)');
subplot(325);imshow(j2);title('第一次降噪图像(sym4)');
subplot(326);imshow(j4);title('第一次降噪图像(coif2)');。