数字图像处理论文,图像去噪
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图象处理(论文)
学院计算机学院
专业计算机科学与技术班级 12(7)班
姓名李荣
学号**********
2014年6月25日
图像去噪算法论文
图像在生成或传输过程中常常因受到各种噪声的干扰和影响而使图像爱那个的质量下降,对后续的图像处理(如分割、理解等)产生不利影响。
因此,图像爱那个去噪是图像处理中的一个重要环节。
而对图像去噪的方法又可以分为两类,一种是在空间域内对图像进行去噪,一种是将图像变换到频域进行去噪的处理。
一般数字图像系统中的常见噪声主要有高斯噪声和椒盐噪声,还有加性、乘性噪声等,如上,减少噪声的方法,可以在图像空间域或在图像频率域完成。
在空间域对图像处理主要有均值滤波算法和中值滤波算法。
图像频率域去噪方法是对图像进行某种变换,将图像从空间域转换到频率域,对频率域中的变换系数进行处理,再进行反变换将图像从频率域转换到空间域来达到去除图像噪声的目的。
将图像从空间转换到变换域的变换方法很多,常用的有傅立叶变换、小波变换等。
在这节课上我学习的是借助Matlab软件对图像进行处理。
在图像去噪方面,在Matlab 中常用的去噪函数有imfilter( ), wiener2( ), medfilt2( ), ordfilt2( )以及小波分析工具箱提供的wrcoef2( )和wpdencmp( )等,好像随着Matlab的发展,有些函数变了,不过早大致上变化不大,也有可能是我下载的Matlab不完整吧,总之在实践过程中有些错误让我很纠结。
因为我是刚接触到这类知识,所以很多都还不懂,虽然从课上有了一些了解,但我觉得还远远不够,然而最近实在时间不多,只能等
以后再去详细的学习了。
我不敢说我以后会有多熟悉它,只能尽量,因为每一款出名的软件都有各自的市场,而我很难涉及到每个市场,只能当作业余去了解如今有这么一款什么软件可以做什么,如果在以后在这方面有需要时不至于两眼一抹黑。
现在我只能照搬看到的代码,观察比较各个算法对于图像去噪的效果。
刚开始时,我原本以为我可以将一些像素较低的图像处理成较清晰的图像,而现在我仍然这样想,只是却不是我现在能做的了的了。
我们所拍摄出来的照片因为不同的设备而有不同的结果,不同的图像格式就会有不同的信息,不同的格式所需要的内存也会不一样,还跟图像的像素有关,不同的格式所采集到的信息也会有所不同,那么就可以这样认为,高质量的可以向低质量的转换,但低质量要转换成高质量的却不是那么容易的,不过我认为这仍然可以,而且我也相信现在的科技能够实现了,不过这个我就不知道了,对于现在的我来说有点远。
因为这里是借助Matlab来实现的,也就是通过编译代码实现的,而我觉得代码类的学习刚开始都需要大量的进行读、写代码,让它们留在自己的脑海里并能随时调用。
而且不单单是代码,还要了解这个行业的发展。
如下是我在观察图像去噪算法的效果截取的一些图片,以供比较。
对添加高斯噪声的图像进行算术均值和几何均值滤波:
I = imread('imge.jpg');%读取图像
I = im2double(I);
J = imnoise(I,'gaussian',0.05);%添加高斯噪声
PSF = fspecial('average',3);
K = imfilter(J,PSF);%算术均值滤波
L = exp(imfilter(log(J),PSF));%几何均值滤波
%按I、J、K、L顺序显示:
K1=imfilter(J,fspecial('average',3)); %模板尺寸为3
K2=imfilter(J,fspecial('average',5));% 模板尺寸为5
K3=imfilter(J,fspecial('average',7)); %模板尺寸为7
K4=imfilter(J,fspecial('average',9)); %模板尺寸为9
通过上面的效果比较可以看出,对于有高斯噪声的图像来说,这
两种去噪算法显然是算术均值滤波较好,虽然整体图像变得模糊了,但噪声确实是去掉了,随着模版尺寸越大,图像变得更加模糊,所以我觉得它是因为图像整体平滑模糊才使得噪声隐去而已;而几何均值滤波虽然看来比之算术均值滤波丢失的图像细节要少,但效果也不是很好。
再看看逆谐波均值滤波的效果,同时与之前两种均值滤波比较。
Q1 = 1.6;Q2 = -1.6;
k1 = imfilter(I.^(Q1+1),PSF);k2 = imfilter(I.^Q1,PSF);
l1 = imfilter(I.^(Q2+1),PSF);l2 = imfilter(I.^Q2,PSF);
K = k1./k2;L = l1./l2;
这个图像去噪算法相比之前的两种好的太多了,虽然也会有点模糊,但它丢失的细节不多。
在查阅资料时也看到逆谐波均值滤波器比较适合脉冲噪声的减少或消除,当Q 值为正数时,对“胡椒”噪声的消除有一定效果;当Q值为负数时,适用于消除“盐”噪声。
当Q=- 1 时,逆谐波均值滤波器就等同于谐波均值滤波器;当Q=0时,为算术均值滤波器。
谐波均值滤波器比较适合去除高斯噪声,对正脉冲
(即盐点)噪声的处理效果也比较好,但是不适合于负脉冲(即胡椒点)噪声的消除。
下面是顺序统计滤波的几个算法比较。
顺序统计滤波器的原理为:滤波器在任意点的输出由滤波器包围的图像区域中像素点的排序结果决定。
二维中值滤波复原图像:
J = imnoise(I,'salt & pepper',0.05);
K = medfilt2(J, [3 3]);%按I、J、K顺序显示:
二维排序滤波复原图像:
J = imnoise(I,'salt & pepper',0.1);
domin = [0 1 1 0; 1 1 1 1; 1 1 1 1; 0 1 1 0];
K = ordfilt2(J,6,domin);
在观察以上两种二维滤波后发现,我所举的两个代码结果我没看出来有什么区别,最大的区别就是添加的噪声多少而已。
而且和逆谐波均值滤波器比较,因为例子单一,所以效果哪个更好我没看出来。
采用最大值最小值进行滤波:
>> J = imnoise(I,'salt & pepper',0.01);
>> K = ordfilt2(J,1,ones(4,4));%最大值滤波
>> L = ordfilt2(J,9,ones(3));%最小值滤波
从图像显示中可以看出,最大值滤波会将色度降低,觉得处理后的图像有点蒙尘的感觉。
因为图像各部分具有不同的特征,我们不可能用均值等算法来去噪,我们在去噪的同时还要保留图像的特征,所以还有自适应滤波:RGB = imread('imge.jpg');
I = rgb2gray(RGB);
I = imcrop(I,[0, 0, 1024, 1024]);
J = imnoise(I,'gaussian',0,0.03);
[K, noise] = wiener2(J, [5, 5]);
以上说的都是空间域上的去噪,还有频域上的去噪,如小波图像去噪等。
小波变换和中值滤波实现图像去噪:
X = imread('imge.jpg');
X = double(rgb2gray(X));
init = 2055615866;
randn('seed',init)
X1 = X+25*randn(size(X));
[thr,sorh,keepapp] = ddencmp('den','wv',X1);
X2 = wdencmp('gbl',X1,'sym4',2,thr,sorh,keepapp); X3 = X;
for i=2:577;
for j=2:579
Xtemp=0;
for m=1:3
for n=1:3
Xtemp = Xtemp+X1((i+m)-2,(j+n)-2);
end
end
Xtemp = Xtemp/9;
X3(i-1,j-1) = Xtemp;
end
end
再看了小波调用wdencmp函数去噪后的效果后,我只感觉不咋的,比之空间域的去噪不如,而小波的中值滤波,感觉对图像没有什么改变,或者颜色变淡了点算一个吧。
我觉得是我看不懂吧,因为在for循环里面的语句我不理解它的作用。
总的来说,这是一门博大精深的技术,而每一个如此大内存的软件它所代表的也是一个市场。
图像去噪在很多方面起着重要作用,无论是个人还是组织都好,都有需求。
日常中,我们再看图像时,总是希望它很清晰,即使放大之后,但是很多因为格式、像素等问题导致一旦放大就表示看不了了。
所以在刚接触时,我就在想,什么时候我自己能够将我需要清晰的图像处理出来,这就是我所想的,也是我会去做的,有一天我会实现的!
参考:王英和曾光宇的图像去噪算法研究论文---《电脑与信息技术》。