您好,欢迎访问三七文档
实验名称:图像的噪声处理一、实验目的1、用中值滤波法对图像进行处理2、通过对算法和代码的修改,从而用另一种方法——噪声消除法对图像进行处理二、基本原理1、中值滤波:是对一个滑动窗口(模板)内的诸像素灰度值排序,然后用中间的一个值来代替窗口中心像素的原来的灰度值。2、噪声消除法:顺序检测每一个像素,如果一个像素的幅度大于或小于起领域平均值,且达到一定的程度,即一个像素的幅度和其领域平均值的差值的绝对值达到一定的程度,则判定该像素为噪声,继而用其领域平均值来代替该像素。数学表达三、实验步骤1、打开Matlab,在工作区中敲入如下的代码:代码解释:clear;clc;清空工作区A=imread('pout.tif');打开图片B=imnoise(A,'salt&pepper',0.25);加入噪声C=B;[height,width]=size(C);对工作区的高宽进行定义forj=2:height-1因为图像的边缘不用处理,所以从第二行的第二个像素点开始进行处理fori=2:width-1同上一样,从第二列的第二个像素点开始m=1;n=1;foryy=j-1:j+1这几行是利用循环制造出一个forxx=i-1:i+13*3的矩阵出来,并利用循环对block(m,n)=B(yy,xx);图像中的所有像素点进行处理n=n+1;endm=m+1;n=1;endOne=reshape(block,9,1);将表格中9个像素值列出来sequece=sort(One);对9个像素值从小到大进行排序media=sequece(5);取中间的一个像素值赋给mediaC(j,i)=media;在将media的值赋予表格中间的一个值endendfigure(1);控制出现一个窗口subplot(1,3,1);设置子图,表示有1行3列共3个子图,正在绘制第1个imshow(A);显示A所表示的图axis('square');title('原始图像');标题“原始图像”subplot(1,3,2);设置子图,表示有1行3列共3个子图,正在绘制第2个imshow(B);显示B所表示的图axis('square');title('加入噪声后的图像');标题“加入噪声后的图像”subplot(1,3,3);设置子图,表示有1行3列共3个子图,正在绘制第3个imshow(C);显示C所表示的图axis('square');title('中值滤波后的图像');标题“中值滤波后的图像”2、对上述代码的第18到21行进入如下的修改:将原代码替换成如下的代码即可:avg=mean(mean(block));求表格中9个像素值的平均值dif=avg-C(j,i);求某个像素值和其领域像素平均值的差值dif=abs(dif);求差值的绝对值ifdifT进行判断,如果差值的绝对值大于所设定的C(j,i)=avg;T值,就将领域的平均值赋予这个像素值。end否则,就不替换。到此,两个实验的代码就写好了。四、实验结果对代码进行调试,在无错误的情况下,可得到以下的实验结果:实验实验2五、实验总结空间域图像平滑有很多方法,比如噪声消除法,领域平均法,中值滤波法,梯度倒数加权法,选择式掩模平滑法等。各有各的特点,实验1用的是中值滤波法,实验2用的噪声去除法,后者虽是另一种方法,其实只是在前者的基础上换了少部分代码,可见对代码的掌握尤为重要,在以后的学习中会更加注意这一点的,多多练习。
本文标题:图像的噪声处理
链接地址:https://www.777doc.com/doc-2558558 .html