版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 作 业课程名称:医学信息技术导论(matlab部分)姓 名: 梅世宇 学 号: 201058002 班 级: 电医1001 教 师: 唐洪老师 日 期: 2012年7月7日 一题目学习图像的椒盐噪声及其产生方法,学习均值滤波、中值滤波、自适应中值滤波。(1)自行选择灰度图,加以一定的椒盐噪声;(2)分别用均值滤波、中值滤波、自适应中值滤波等方法消除噪声;(3)分别用不同的椒盐噪声参数,多次尝试以上三种滤波器的效果,总结出结论。二求解方法的原理 1.椒盐噪声:顾名思义,椒为黑色,代表灰度值为0;盐为白色,代表灰度值为255。椒盐噪声呈现在图像上即为可调密度的黑白斑点;2.信噪比:英文名称
2、叫做SNR或S/N(SIGNAL-NOICE RATE),是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号,并且该种信号并不随原信号的变化而变化。图象的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图象信噪比,即信号与噪声的方差之比。首先计算图象所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正。本题目处理的是灰度图,针对灰度图,SNR=(洁净图片中的像素点的灰度值
3、之和)/abs(噪声图片的灰度值之和-洁净图片中的灰度值之和)为该图像的信噪比。3.均值滤波器:均值滤波器是一种线性滤波器,即取滑动矩形窗口内像素的灰度均值作为中心像素的灰度值,它能较好地抑制图象中的加性噪声。但是,线性滤波器会引起图象的钝化或模糊,使得图象中物体边界产生位移。如果图象受到乘性噪声或脉冲噪声的干扰,如超声波及雷达成像中普遍存在的斑点噪声, 线性滤波器就不能取得预期的效果。4.中值滤波器:中值滤波是对一个滑动矩形窗口内的象素灰度值排序, 用其中间值代替窗口中心象素的灰度, 它是一种非线性滤波器. 中值滤波器对脉冲干扰及椒盐噪声的抑制效果好, 同时能够保持图象的边沿特征.5.自适应
4、中值滤波器:中值滤波由于可对长拖尾概率分布的噪声起到良好的平滑效果且可对图像中的某些细节起到保护作用, 因而在图像降噪处理中得到了比较广泛的应用,但标准中值滤波去脉冲噪声的性能受滤波窗口尺寸的影响较大, 在抑制图像噪声和保护细节两方存在以下矛盾:窗口滤波小, 可较好地保护图像中某些细节, 但滤除噪声的能力会受到限制; 滤波窗口大, 可加强噪声抑制能力, 但对细节的保护能力会减弱, 有时会滤去图像中的一些细线、尖锐边角等重要细节, 从而破坏图像的几何结构这种矛盾在图像中噪声干扰较大时表现得尤为明显。根据实际的模拟,在脉冲噪声强度大于0.2时,常规中值滤波效果就显得不是令人满意。自适应中值滤波器的
5、滤波方式和常规的中值滤波器一样,都使用一个矩形区域的窗口Sxy,不同的是在滤波过程中,自适应滤波器会根据一定的设定条件改变(增加)滤波窗的大小,同时当判断滤波窗中心的像素是噪声时,该值用中值代替,否则不改变其当前像素值,这样用滤波器的输出来替代像素(x,y)处(窗中心的坐标)的值。自适应中值滤波器可以处理噪声概率更大的脉冲噪声,同时能够更好地保持图像细节。6.总结与比较:从几种滤波原理来讲,对于椒盐噪声,中值滤波能更好地消除孤立的噪声点,达到好的效果;但不知自适应滤波会不会有更好的结果,能不能缓解中值滤波中提到的矛盾,期待既能很好的消除噪声,又能保存细节部分。7.自适应滤波中的噪声监测: 设原
6、始图像某一点为(x,y),对以点(x,y)为中心的噪声检测窗口W中的 N=(2n+1)*(2n+1)个点的灰度值进行了排序运算,得到了一个向量Aij: 其中,xij1xij2xij3 0,且ZA2 0,则转到B 层. 否则,增大窗口尺寸. 如果窗口尺寸小于Smax,则重复A 层. 否则,输出Zx,y .B 层:ZB1 = Zx,y - Zmin,ZB2 = Zmax - Zx,y,如果ZB1 0,且ZB2 0,则输出Zx,y . 否则输出Zmed .A 层用来判断Zmed是否为一脉冲,B 层用来判断Zx,y是否为一脉冲. 如果Zmed和Zx,y都不是脉冲,则算法就利用输出一个不变的像素值Zx,
7、y来代替邻域中值作为输出,以避免必要的细节损失. 为了改进标准中值滤波算法处理空间密度较大的冲激噪声能力不足的问题自适应中值滤波算法采用了通过扩大窗口来相对地减少冲激噪声空间密度的这一策略.三.matlab程序3.1变量说明main.mRGB:输入的彩色图片I:转化后的灰度图,灰度值0255J:加入噪声的图像avefiltm.mx:待处理图片n:滤波矩阵的长(宽)度,必须是大于1的奇数a:一个n*n,元素都是1的矩阵i,j:原图像的行,列数c:滤波处理后的n*n矩阵midfiltm.me:行向量adpmedian.mSmax:最大滤波矩阵的行数,大于1的奇数k:每次滤波矩阵的行数,大于1的奇数
8、zmin,zmed,zmax:矩阵中元素的最大,中,最小值processUsingLevelB:0或1的逻辑判断3.2程序代码main.mRGB=imread(D:111.png,png); %读入彩色图片i=rgb2gray(RGB); %彩色转化成灰度图isubplot(2,3,1),imshow(i),title(灰度图); %显示灰度图iJ=imnoise(i,salt & pepper,0.1); %加入椒盐躁声subplot(2,3,2),imshow(J); title(加入噪声); i2=avefiltm(J,5); %进行均值滤波subplot(2,3,4),imshow(i
9、2);title(均值滤波); i3=midfiltm(J,5);subplot(2,3,5),imshow(i3);title(中值滤波); %进行中值滤波i4=adpmedianm(J,5);subplot(2,3,6),imshow(i4);title(自适应中值滤波); %进行自适应中值滤波avefiltm.mfunction d=avefiltm(x,n) if(nl) %必须对n进行判定 else end a(1:n,1:n)=1; %a即nn模板,元素全是1 p=size(x); %【size】用来求矩阵大小 输出为行树和列数 x1=double(x); x2=x1; for i
10、=1:p(1)-n+1for j=1:p(2)-n+1 %循环 A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素 c=x1(i:i+(n-1),j:j+(n-1).*a; %矩阵相乘 s=sum(sum(c); %【sum】求c矩阵和 x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %模板各元素的均值赋给中心位置的元素 endend %【uint8】未被赋值的元素取原值 应该是需要加上的,不加效果其实差不多d=uint8(x2); endfunction f = adpmedian(g,Smax)if(Smaxl.)elseendM,N=size(g);f=g
11、;f(:)=0;alreadyProcessed=false(size(g);%开始滤波.for k=3:2:Smax %k*k 的极小值滤波 zmin=ordfilt2(g,1,ones(k,k),symmetric); %k*k 的极大值滤波 zmax=ordfilt2(g,k*k,ones(k,k),symmetric); % k*k 的中值滤波 zmed=medfilt2(g,k,k,symmetric); % 判断Z med 是否为一脉冲,第一条件 processUsingLevelB=(zmedzmin)&(zmaxzmed)&alreadyProcessed; % 判断Z x,y
12、 是否为一脉冲,第二条件zB=(gzmin)&(zmaxg);outputZxy=processUsingLevelB&zB;outputZmed=processUsingLevelB&zB;% 输出一个不变的像素值Z x,y 来代替邻域中值作为输出F(outputZxy)=g(outputZxy);% 输出中值滤波的值作为输出f(outputZmed)=zmed(outputZmed);alreadyprocessed = alreadyProcessed|processUsingLevelB;if(all(alreadyProcessed(:) break;endend四.仿真结果椒盐参数
13、:0.02 滤波窗口 5椒盐参数:0.1 滤波窗口 5椒盐参数:0.2 滤波窗口 9五.结论与思考随着椒盐参数的增大,均值滤波的效果越来越差,图像逐渐模糊,而中值滤波却能很好的恢复原图。随着滤波窗口的增大,中值滤波的效果也变差,原图中的有些细节和边缘表现得不清楚,相比来说,自适应滤波后的图像更好。但是本次自编滤波函数和软件自带程序相比有很大的缺点,噪声图像边缘会有像素区过滤不到,造成不完全的滤波。关于边缘部分噪声处理的相关方法,我会进行后续的学习。根据在网上查资料,看论文,自适应滤波还有很多的方法和不同的想法,例如改变滤波窗口的形状等。通过本次对图像噪声的处理,在网上和图书馆查阅大量资料,我了
14、解到噪声的分类,产生,滤波和信噪比等概念,知道了滤波的基本原理和方式。不过在实际的课堂报告中,我也发现自己对噪声和滤波的认识有所偏差,可能是时间仓促,在大量资料中一扫而过没能认真完全的去对每个名词进行查阅,造成加入了很多自己的偏差理解。Matlab的图像信号处理是一门很有意思的课程,以后应该从基础开始,一点点再重新学习,而不能像这次一样仓促完成作业。通过实际的编程操作,我掌握了基本的滤波方式。不同的滤波方式针对不同的噪声,为了获得更好的图像,我们需要不断的改进滤波方式,怎样去正确的判断一个噪声点,怎样去合理的替换噪声点像素,是我们需要解决的关键问题。编程过程中也出现了很多小问题,短短的程序却经常出错,通过百度我解决了这些问题,我也对每个错误进行截图保存。 最后衷心感谢唐洪老师的指导,虽然是短短的四周,但老师的授课和作业方式很好,每个精心准备的题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论