数字图像处理实验三中值滤波和均值滤波实验报告

合集下载

实验三 均值滤波和中值滤波

实验三 均值滤波和中值滤波

实验三图像滤波实验3.13*3均值滤波一.实验目的1.熟悉MATLAB图像处理工具箱及均值滤波函数的使用;2.理解和掌握3*3均值滤波的方法和应用;二.实验设备1.PC机一台;2.软件MATLAB;三.程序设计在MATLAB环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。

closeall;I=imread('cameraman.tif');figure;subplot(2,3,1);imshow(I);%加入Gaussian噪声J1=imnoise(I,'gaussian',0,0.005);subplot(2,3,2);imshow(J1);%加入椒盐噪声J2=imnoise(I,'salt&pepper',0.02);subplot(2,3,3);imshow(J2);h=fspecial('average',[33]);G1=imfilter(J1,h);subplot(2,3,5);imshow(G1);G2=imfilter(J2,h);subplot(2,3,6);imshow(G2);四.实验步骤1.启动MATLAB双击桌面MATLAB图标启动MATLAB环境;2.在MATLAB命令窗口中输入相应程序。

书写程序时,首先读取图像,一般调用MATLAB自带的图像,如:cameraman图像;再调用相应的图像增强(均值滤波)函数,设置参数;最后输出处理后的图像;3.浏览源程序并理解含义;4.运行,观察显示结果;5.结束运行,退出;五.实验结果观察MATLAB环境下原始图像经3*3均值滤波处理后的结果。

(a)原始图像(b)3*3均值滤波处理后的图像图(3)六.实验报告要求输入一幅灰度图像,给出其图像经3*3均值滤波处理后的结果,然后对每一点的灰度值和它周围24个点,一共25个点的灰度值进行均值滤波,看看对25个点取均值与对9个点进行均值滤波有什么区别?有没有其他的算法可以改进滤波效果。

数字图像处理实验报告-基于Matlab

数字图像处理实验报告-基于Matlab

华东师范大学电子工程系2017.6实验1:图像灰度级修正【实验目的】掌握常用的图像灰度级修正方法(灰度变换法和直方图均衡化),加深对直方图的理解。

观察图像的增强效果,对灰度级修正前后的图像加以比较。

【实验内容】1)编程实现图像的灰度变换,改变图像的输入、输出映射参数范围(线性拉伸和反比);2)修改参数gamma值(大于、小于、等于1),观察处理结果;3)对图像直方图作均衡化处理,显示均衡前后的图像及其直方图。

【实验代码】original=imread('lena.bmp');linstr=imadjust(original,[0.3 0.7],[0 1]); %线性拉伸opposite=imadjust(original,[0 1],[1 0]); %反比above=imadjust(original,[0 1],[0 1],2); %gamma>1equal=imadjust(original,[0 1],[0 1],1); %gamma=1below=imadjust(original,[0 1],[0 1],0.5); %gamma<1subplot(3,3,1);imshow(original);title('原图像');subplot(3,3,2);imshow(linstr);title('线性拉伸');subplot(3,3,3);imshow(opposite);title('反比');subplot(3,3,4);imshow(above);title('gamma>1');subplot(3,3,5);imshow(equal);title('gamma=1');subplot(3,3,6);imshow(below);title('gamma<1');subplot(3,3,7);imhist(original);title('原图像直方图'); histequal=histeq(original);%对图像均衡化subplot(3,3,8);imshow(histequal);title('均衡后的图像'); subplot(3,3,9);imhist(histequal);title('均衡图像的直方图'); axis([0 256 0 2000]);【输出图像】【实验思考】根据以下图片以及实验结果可知gamma>1时图像整体变暗,灰度级整体变小;gamma<1时图像整体变亮,灰度级整体变小;而gamma=1时,图像维持不变。

均值滤波,中值滤波报告

均值滤波,中值滤波报告

数字与图像处理报告
姓名:罗钰婧班级:12信国学号:20121378032
1.均值滤中值滤波对去除噪声
⑴.椒盐噪声:出现位置是随机的,但噪声的幅值是基本相同的。

对于椒盐噪声,中值滤波比均值滤波好。

因为椒盐噪声图像中既有干净点又有污染点,中值滤波是选适当的点来代替污染点,随意处理效果好;
而噪声均值不为0,所以均值滤波不能很好的去除椒盐噪声。

⑵.高斯噪声:出现位置是一定的(每一个点上),噪声的幅值是随机的。

对于高斯噪声,均值滤波比中指滤波好。

因为图像中每个点都是污染点,中值滤波找不到合适的干净点。

而正态分布的均值为0,所以均值滤波可以较好的减弱噪声。

对于中值滤波,可以发现取的领域越大,图像越模糊。

因为随着领域变大,精度降低。

同中值滤波,可以发现取的领域越大,图像越模糊。

2.傅里叶变换频谱图
3.伪彩色。

数字图像处理滤波报告

数字图像处理滤波报告

2010年4月一,实验目的。

1.了解在数字图像处理中滤波的概念和意义。

2.掌握数字图像处理滤波程序。

二,实验原理。

图像的中值滤波是一种非线性的图像处理方法,它通过对邻域内像素按灰度排序的结果决定中心像素的灰度。

图像的中值滤波是统计排序滤波器的一种常见应用,它是通过对邻域内采样数据进行排序并取得中值来决定中心像素灰度的一种处理手段,图像的中值滤波在少量离散杂点的消除方面效果显著。

前面介绍过图像简单平滑和高斯平滑,以这两种算法为代表的平滑线性滤波算法在消除离散型杂点方面,都采取的是将杂点的干扰分摊到整个邻域中的每个像素,以减少杂点的影响,然而这样做的代价就是图像清晰度的大量损失。

如图11-14所示,a表示一个5×5邻域的像素灰度,其中中点位置的像素为孤立的杂点,b为对a进行一次简单平滑处理的结果,c 为对b进行简单平滑的结果,从图中可看出简单平滑将杂点对图像的影响分担到了邻域的其他像素。

图11-14 孤立杂点的简单平滑从图11-14中可以发现简单平滑对于孤立的杂点消除较为有效,而对于稍大的杂点或是密集的杂点,图像简单平滑的效果就不够理想。

如图11-15所示,其中a表示一个5×5邻域的像素灰度,其中灰度为0的点为杂点,b为对a进行简单平滑的结果,从图中可以看出简单平滑使画面质量严重下降,并且并没有很好地去除杂点影响。

图11-15 稍大杂点的简单平滑分析原因,可以发现平滑线性滤波器的工作原理可以比喻为用水冲洗桌面上的污点,冲洗的结果污点并没有消失,只是被淡化,如果污点较大较密集,则冲洗的结果是整个桌面都被污点所影响。

尝试换一种思路,如果不采取冲淡污点的办法而是将污点直接去除,这样就可以避免污点数量较多时难以去除的困难,这也就是中值滤波的基本思想。

在中值滤波算法中,对于孤立像素的属性并不非常关注,而是认为图像中的每个像素都跟邻域内其他像素有着密切的关系,对于每一个邻域,算法都会在采样得到的若干像素中,选择一个最有可能代表当前邻域特征的像素的灰度作为中心像素灰度,这样就有效避免了离散型杂点对图像的影响。

中值滤波&均值滤波

中值滤波&均值滤波

数字图像处理作业(中值滤波&均值滤波)学院:电子信息工程学院专业:控制工程姓名:苏良碧1中值滤波1.1、中值滤波原理:中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。

二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)},其中,f(x,y),g(x,y)分别为原始图像和处理后图像。

W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

1.2、实现方法:(1)通过从图像中的某个采样窗口取出奇数个数据进行排序;(2)用排序后的中值取代要处理的数据即可;1.3、matlab程序(zhongzhilvbo.m)clear;close all;I=imread('I3_256.bmp');figure,imshow(I),title('原始图象');J=imnoise(I,'salt&pepper',0.02);imshow(J);title('噪声干扰图像')X=J;a=3;b=3;%3*3的邻域k=floor(a*b/2)+1;%求出中值,即k=5[M,N]=size(X);%求出输入图像的行数M和列数Nuint8Y=zeros(M,N);funBox=zeros(a,b);temp=zeros(a*b);%X(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素for i=1:M-afor j=1:N-bfunBox=X(i:i+a,j:j+b);%把图像中的一个3*3领域赋给funboxtemp=funBox(:);%把领域中的每个元素赋给temptempSort=sort(temp);%对其中的像素值进行排序Y(i,j)=tempSort(k);%将模板的中值(k=5)赋给模板中心位置的元素end;end;figure,imshow(Y);title('中值滤波图像')1.4、结果:2均值滤波2.1、均值滤波原理均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。

空间滤波实验报告

空间滤波实验报告

空间滤波实验报告空间滤波实验报告引言:空间滤波是数字图像处理中常用的一种方法,它通过对图像像素进行加权平均或其他操作,以改善图像的质量和增强特定的图像细节。

在本次实验中,我们将探索几种常见的空间滤波技术,并评估它们在不同图像上的效果。

一、均值滤波均值滤波是一种简单的空间滤波方法,它通过计算像素周围邻域的平均值来平滑图像。

在本次实验中,我们选择了一张包含噪声的图像进行均值滤波处理。

结果显示,均值滤波能够有效地减少噪声,但同时也会导致图像的细节模糊化。

这是因为均值滤波是一种线性滤波方法,它对所有像素都施加相同的权重,无法区分图像中的边缘和纹理。

二、中值滤波中值滤波是一种非线性滤波方法,它通过将像素周围邻域的像素值排序并选取中间值来进行滤波。

与均值滤波相比,中值滤波能够更好地保留图像的细节信息。

在实验中,我们使用了一张包含椒盐噪声的图像进行中值滤波处理。

结果显示,中值滤波能够有效去除椒盐噪声,同时也能够保持图像的细节纹理。

这是因为中值滤波对于噪声像素有较好的鲁棒性,能够准确地估计图像中的真实像素值。

三、高斯滤波高斯滤波是一种基于高斯函数的空间滤波方法,它通过对像素周围邻域的像素值进行加权平均来平滑图像。

与均值滤波不同的是,高斯滤波对于不同像素位置的权重是不同的,它能够更好地保持图像的细节和边缘。

在实验中,我们对一张包含高斯噪声的图像进行了高斯滤波处理。

结果显示,高斯滤波能够有效地降低噪声水平,同时也能够保持图像的细节纹理。

这是因为高斯滤波能够根据像素周围邻域的像素值分布来调整权重,从而更好地平衡了图像的平滑度和细节保留。

四、边缘检测除了平滑图像,空间滤波还可以用于边缘检测。

边缘检测是一种常用的图像处理任务,它能够准确地提取图像中的边缘信息。

在实验中,我们使用了一张包含边缘的图像进行了边缘检测实验。

通过应用一种基于梯度的空间滤波算子,我们成功地提取出了图像中的边缘信息。

结果显示,边缘检测能够有效地突出图像中的边缘,但同时也会引入一定的噪声。

中值滤波器实验报告

中值滤波器实验报告

数字图像处理实验实验三中值滤波器实验目的●深入理解空域滤波的概念,掌握模板卷积的计算方法●掌握中值滤波器的构建方法,并会中值滤波器对图像进行噪声去除。

实验要求1.读入lena图像,将lena图像转换为灰度图,可用rgb2gray2.用imnoise加入方差为0.2的椒盐噪声。

3.用medfilt2函数对图像进行空间滤波,所用模板为3*3的中值滤波器。

4.改用5*5的中值滤波器重做3中的步骤,比较结果的不同。

实验原理在图像处理中,在进行如边缘检测这样的进一步处理之前,通常需要首先进行一定程度的降噪。

中值滤波是一种非线性数字滤波器技术,经常用于去除图像或者其它信号中的噪声。

这个设计思想就是检查输入信号中的采样并判断它是否代表了信号,使用奇数个采样组成的观察窗实现这项功能。

观察窗口中的数值进行排序,位于观察窗中间的中值作为输出。

然后,丢弃最早的值,取得新的采样,重复上面的计算过程。

中值滤波是图像处理中的一个常用步骤,它对于斑点噪声(en:speckle noise)和椒盐噪声(en:salt-and-pepper noise)来说尤其有用。

保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。

实验心得1.MA TLAB中提供的加噪声的函数和中值滤波函数对本实验的实现提供了便利,直接调用函数即可实现本实验。

2.实验可以分别使用相同类型但方差不同的噪声、模板半径不同的中值滤波器进行实验,用控制变量法观察噪声方差、中值滤波器模板半径对滤波效果的影响。

3.实验可以通过中值滤波器对不同类型噪声污染后的图像的滤波效果进行比较,体会中值滤波器对不同噪声的滤波效果。

4. 自己编写函数对图像进行噪声污染和滤波时,为了方便,不考虑图像边缘滤波,这样程序编写较为方便,而另一方面,图像的滤波不彻底,其边缘噪声不能滤去。

实验源代码1. 用系统函数对图像进行噪声污染和滤波:clcclear all%读入位于D盘\tuxiang的lena图像A=imread('D:\tuxiang\lena.bmp');%将读入的彩色图像转化为灰度图像B=rgb2gray(A);%对图像加入方差为0.2的椒盐噪声C=imnoise(B,'salt & pepper',0.2);F=imnoise(B,'salt & pepper',0.5);%对图像加入均值为0,方差为0.01的高斯噪声I=imnoise(B,'gaussian',0,0.05);%用模板为3*3的中值滤波器对噪声污染后的图像进行空间滤波D=medfilt2(C,[3,3]);G=medfilt2(F,[3,3]);J=medfilt2(I,[3,3]);%用模板为5*5的中值滤波器对噪声污染后的图像进行空间滤波E=medfilt2(C,[5,5]);H=medfilt2(F,[5,5]);K=medfilt2(I,[5,5]);%绘制原始图像figuresubplot(2,2,1);imshow(B);title('原始图像');%绘制被噪声污染的图像subplot(2,2,2);imshow(C);title('方差0.2的椒盐噪声污染后的图像');%绘制用3*3模板的中值滤波器滤波后的图像subplot(2,2,3);imshow(D);title('3*3模板滤波后的后的图像');%绘制用5*5模板的中值滤波器滤波后的图像subplot(2,2,4);imshow(E);title('5*5模板滤波后的后的图像');%绘制原始图像figuresubplot(2,2,1);imshow(B);title('原始图像');%绘制被噪声污染的图像subplot(2,2,2);imshow(F);title('方差0.5的椒盐噪声污染后的图像');%绘制用3*3模板的中值滤波器滤波后的图像subplot(2,2,3);imshow(G);title('3*3模板滤波后的后的图像');%绘制用5*5模板的中值滤波器滤波后的图像subplot(2,2,4);imshow(H);title('5*5模板滤波后的后的图像');%绘制原始图像figuresubplot(2,2,1);imshow(B);title('原始图像');%绘制被噪声污染的图像subplot(2,2,2);imshow(I);title('均值为0、方差0.05的高斯噪声污染后的图像');%绘制用3*3模板的中值滤波器滤波后的图像subplot(2,2,3);imshow(J);title('3*3模板滤波后的后的图像');%绘制用5*5模板的中值滤波器滤波后的图像subplot(2,2,4);imshow(K);title('5*5模板滤波后的后的图像');2. 自己编写程序对图像进行噪声污染和滤波:clcclear allrow=512;%图像的行像素点col=512;%图像的列像素点n1=3;n2=5;N1=zeros(n1*n1);%申明3*3模版,且初始化N2=zeros(n2*n2);%申明5*5模版,且初始化%读入位于D盘\tuxiang的lena图像A=imread('D:\tuxiang\lena.bmp');%将读入的彩色图像转化为灰度图像B=rgb2gray(A);n=rand(row,col);C=B;%申明被噪声污染后的图像C,且初始化%生成噪声污染图像,达到和系统椒盐噪声污染相同的效果for i=1:rowfor j=1:colif(n(i,j)<=0.1)C(i,j)=0;elseif(n(i,j)>=0.9)C(i,j)=255;endendendendD=C;%申明用3*3模版滤波后的图像D,且初始化E=C;%申明用5*5模版滤波后的图像D,且初始化%用模版为3*3的中值滤波器进行滤波,不考虑边缘for x=2:row-1for y=2:col-1N1=[C(x-1,y-1:y+1),C(x,y-1:y+1),C(x+1,y-1:y+1)];N1=sort(N1);D(x,y)=N1((n1*n1+1)/2);endend%用模版为5*5的中值滤波器进行滤波,不考虑边缘for x=3:row-2for y=3:col-2N2=[C(x-2,y-2:y+2),C(x-1,y-2:y+2),C(x,y-2:y+2),C(x+1,y-2:y+2),C(x+2,y-2:y+2)]; N2=sort(N2);E(x,y)=N2((n2*n2+1)/2);endend%绘制原始图像、被噪声污染后的图像及用两种模版滤波后的图像figuresubplot(2,2,1);imshow(B);title('原始图像');subplot(2,2,2);imshow(C);title('噪声污染后的图像');subplot(2,2,3);imshow(D);title('3*3模版滤波后的图像');subplot(2,2,4);imshow(E);title('5*5模版滤波后的图像');实验结果(一)用系统函数对图像进行噪声污染和滤波:1.在原始图像上所加的噪声为方差为0.2的椒盐噪声,分别用模板为3*3的中值滤波器和模板为5*5的中值滤波器对加噪声后的图像进行空间滤波2.在原始图像上所加的噪声为方差为0.5的椒盐噪声,分别用模板为3*3的中值滤波器和模板为5*5的中值滤波器对加噪声后的图像进行空间滤波3.在原始图像上所加的噪声为均值为0、方差为0.05的椒盐噪声,分别用模板为3*3的中值滤波器和模板为5*5的中值滤波器对加噪声后的图像进行空间滤波(二)自己编写程序对图像进行噪声污染和滤波:实验结果分析1.图像在同种椒盐噪声污染的情况下,用模板为5*5的中值滤波器对被噪声污染后的图像进行空间滤波,效果比模板为3*3的中值滤波器好;因为在一定范围内增大滤波器模板的半径,其半径范围内的图像像素点都被污染的概率减小。

均值滤波的实验报告

均值滤波的实验报告

均值滤波的实验报告引言在图像处理领域,均值滤波是一种常用的图像平滑方法。

它通过计算像素周围邻域的平均值来替代该像素的灰度值,以达到图像平滑的效果。

均值滤波可以有效地去除图像中的噪声,同时也能够保持图像的整体特征。

本实验旨在探究均值滤波对图像的影响,并比较不同滤波半径下的滤波效果。

实验步骤1. 实验环境准备:在计算机上安装图像处理软件,并导入实验所需图像。

2. 实验设计:选择适当大小的滤波半径,并记录下实验所用的滤波半径。

3. 均值滤波处理:对图像进行均值滤波处理,根据实验设置的滤波半径计算每个像素的邻域平均灰度值,并用该平均值替代原像素的灰度值。

4. 实验结果观察:观察并记录均值滤波后的图像效果,包括图像的平滑度、噪声去除程度等。

5. 不同滤波半径的对比:重复步骤3-4,使用不同的滤波半径进行均值滤波处理,比较不同半径下的滤波效果。

6. 结果分析:根据实验观察和对比结果,分析均值滤波在不同滤波半径下的优缺点。

实验结果经过实验,我们得到了以下结果:实验图像下图为实验所用原始图像,以及采用不同滤波半径进行均值滤波处理后的图像。

![原始图像](image/original_image.jpg)![滤波半径为3的处理结果](image/result_radius_3.jpg)![滤波半径为5的处理结果](image/result_radius_5.jpg)![滤波半径为7的处理结果](image/result_radius_7.jpg)结果观察通过对比实验图像,我们可以得到以下观察结果:1. 均值滤波能够有效地去除图像中的噪声,使图像更加平滑。

2. 随着滤波半径的增加,图像的平滑度增加,噪声去除程度也更好。

3. 但是,当滤波半径较大时,图像细节会被模糊化,失去一部分细节信息。

结果分析根据实验结果观察,我们可以得出以下分析结论:1. 均值滤波对图像处理中的噪声去除具有较好的效果,能够使图像更加平滑。

2. 滤波半径的选择对均值滤波的效果有重要影响。

数字图像处理实验-滤波

数字图像处理实验-滤波

实验三1.实验目的:(1)对指定图像进行均值、中值滤波增强,比较增强的效果;(2)对图片进行噪声处理,进行图像恢复;2.实验内容:对指定图像进行均值、中值滤波增强,比较增强的效果。

图1是一张原始人物图像,图2是一张近似20%像素带有冲激噪声后的人物图像。

现分别利用①5×5区域的邻域平均法和②5×5中值滤波法对图2进行去噪声处理,进行图像恢复。

将原始图像及增强后的图像都显示于屏幕上,观察两种方法对去噪的不同作用。

图1图23.实验结果(代码&结果可视化)1、利用已有的图像处理应用软件集成环境编写相应的平滑程序。

5×5邻域平均法:邻域平均是最简单的平滑滤波,即是将原图的一个像素的灰度值和它周围邻近的24个像素的灰度值相加,然后求得的平均值作为新图该像素的灰度值。

具体算法类似与图像锐化。

5×5中值滤波法:采用滑动窗口法设窗口为5×5 的矩形,该窗口在被处理的图像上逐点移动内含25个像素,每次移动均计算一次中值,赋给窗口中间点,作为其灰度,具体算法类似邻域平均。

2、核心程序:邻域平均核心算法类似梯度锐化,本报告只给出中值滤波的核心程序:// 开始中值滤波// 行(除去边缘几行)for(i = iFilterMY; i < lHeight - iFilterH + iFilterMY + 1; i++){// 列(除去边缘几列)for(j = iFilterMX; j < lWidth - iFilterW + iFilterMX + 1; j++){// 指向新DIB第i行第j个像素的指针lpDst = (unsigned char*)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j;// 读取滤波器数组for (k = 0; k < iFilterH; k++){for (l = 0; l < iFilterW; l++){lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i + iFilterMY - k) + j - iFilterMX + l;// 保存像素值aValue[k * iFilterW + l] = *lpSrc;}}// 获取中值* lpDst = GetMedianNum(aValue, iFilterH * iFilterW);}}4.实验分析和总结采用滤波器(低频/高频)处理后的图像可以更加平滑,可以对图像去除噪音,恢复到原始图像。

MATLAB数字图像均值和中值滤波实验-新

MATLAB数字图像均值和中值滤波实验-新

实验数字图像的空间域滤波
一、实验目的
1、理解图像空间域滤波的原理;
2、掌握图像均值滤波、中值滤波的原理与实现方法;
3、掌握上述方法的改进方法。

二、实验原理
均值滤波的主要步骤为:
(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)将模板上系数与模板下对应象素相乘;
(3)将所有乘积相加;
(4)将和(模板的输出响应)赋给途中对应模板中心位置的象素。

中值滤波的主要步骤为:
(1)将模板在途中漫游,并将模板中心与途中某个象素位置重合;(2)读取模板下各对应象素的灰度值;
(3)将这些灰度值从小到大排成1列;
(4)找出这些值里排在中间的1个;
(5)将这个中间值赋给对应模板中心位置的象素。

三、实验内容
基本要求:
1、自己编程实现图像的均值滤波;
2、自己编程实现图像的中值滤波;
3、利用matlab图像处理工具箱中的函数实现图像的上述处理;
扩展要求:
4、实现一种图像加权中值滤波或加权均值滤波;
四、实验步骤
1、编程实现图像的均值滤波
程序代码:
运行程序得到如下结果:
2、编程实现图像的中值滤波
程序代码:
运行程序后得到如下结果:
3、实现一种图像加权中值滤波或加权均值滤波设计x模板为:
运行程序可得均值滤波后的结果:
运行程序可得中值滤波后的结果:
五、实验结果分析
从实验结果可以看出,中值滤波较均值滤波效果好些,并且滤波与所选的模板有关,若选择权值相同(本实验为0.1/9)相对不同权值的效果好些。

模板的不同对均值滤波的影响较大。

数字图像处理——均值滤波

数字图像处理——均值滤波

实验项目:灰度图像均值滤波一、实验内容目的:掌握搭建一个Visual C++应用工程的基本流程,能创建一个基于MFC的Visual C++数字图像处理平台,实现位图文件的读写、显示、存储操作。

对灰度图像均值滤波熟悉均值滤波原理,编程实现灰度图像均值滤波功能,探讨其去噪特性及其适用性。

处理算子原理:二值化:选定一个阈值,大于部分变成白色,小于部分变成黑色。

局部平滑(n*n模版):均等的对待邻域中的每一个像素,将各个像素灰度的平均值作为中心像素值输出。

实现图像的平滑。

超限像素平滑:利用局部平滑的模版得到一个平均灰度值与原像素做差取绝对值,在与设定的阈值做比较。

大与阈值取平均值,反之取原像素。

有选择保边缘平滑:对一像素的5*5邻域,采用特定的掩模(一个3*3正方形、4个五边形、4个六边形共9个领域)计算各个掩模的均值和方差,按方差进行排序,最小方差对应的掩模灰度均值作为输出值。

通过给定的原始文件编写C++程序,利用平台进行原理和代码的转换,最终实现灰度图像的平滑处理。

二、算法实现的主要内容二值化:void CMy0107View::OnBinary(){CYuzhi dlg;dlg.DoModal();UpdateData(TRUE);if(m_flag == 24){AfxMessageBox("只处理8位图像!");return;}BYTE *pData = new BYTE[m_dwWidth*m_dwHeight];BYTE *pOld = pData;memcpy(pData, m_pBitmap, m_dwWidth*m_dwHeight);DWORD i,j;for(i=0;i<m_dwHeight;i++){for(j=0;j<m_dwWidth;j++){if(*pData >= dlg.m_yuzhi) *pData = 255;else *pData = 0;pData++;}}pData = pOld;memcpy(m_pBitmap, pData, m_dwWidth*m_dwHeight);if(pData) delete []pData;Invalidate(TRUE);}3*3均值滤波:void CMy0107View::On33junzhi(){float averg;BYTE *p_data;int wide,height;p_data=m_pBitmap;wide=m_dwWidth;height=m_dwHeight;BYTE* p_temp=new BYTE[wide*height];int size=wide*height;memset(p_temp,255,size);for(int j=1;j<height-1;j++){for(int i=1;i<wide-1;i++){averg=0;averg=(int)(p_data[(j-1)*wide+(i-1)]+p_data[(j-1)*wide+i]+p_data[(j-1)*wide+(i+1)]+p_data[j*wide+(i-1)]+p_data[j*wide+i+1]+p_data[(j+1)*wi de+(i-1)]+p_data[(j+1)*wide+i]+p_data[(j+1)* wide+i+1])/8;p_temp[j*wide+i]=averg;}}memcpy(p_data,p_temp,wide*height);delete p_temp;Invalidate(TRUE);}N*N均值滤波:void CMy0107View::OnNnjunzhi(){DWORD size;NNJUNZHI dlg;dlg.DoModal();UpdateData(TRUE);n=dlg.m_n;int xx,yy,n2,sum,sum2,sum3;int wide,height;BYTE *p_data;p_data=m_pBitmap;wide=m_dwWidth;height=m_dwHeight;size=wide*height;BYTE* p_temp=new BYTE [size];memset(p_temp,255,size);if(n<3||n%2!=1)//确认n为奇数AfxMessageBox("请输入一个大于等于3的奇数");if(n>=3&&n%2==1)n2=(n-1)/2;for(intj=n2;j<height-n2;j++){for(inti=n2;i<wide-n2;i++){ //求N*N屏蔽窗口内的总和sumsum=0;for(yy=j-n2;yy<=j+n2;yy++)for(xx=i-n2;xx<=i+n2;xx++)sum+=p_data[yy*wide+xx];//把n*n屏蔽窗口内的平均值四舍五入后作为显示图像像素值p_temp[j*wide+i]=(int)((float)sum/(n*n)+0.5 );}}memcpy(p_data,p_temp,size);delete p_temp;Invalidate(TRUE);}超限像素平滑:(3*3窗口)void CMy0107View::OnPinghua(){ PINGHUA dlg;dlg.DoModal();UpdateData(TRUE);float averg;BYTE *p_data; int m;m=dlg.m_m;int wide,height;p_data=m_pBitmap;wide=m_dwWidth;height=m_dwHeight;BYTE* p_temp=new BYTE[wide*height];int size=wide*height;memset(p_temp,255,size);for(int j=1;j<height-1;j++){for(int i=1;i<wide-1;i++){averg=0;//求周围8近邻均值averg=(int)(p_data[(j-1)*wide+(i-1)]+p_data[(j-1)*wide+i]+p_data[(j-1)*wide+(i+1)]+p_data[j*wide+(i-1)]+p_data[j*wide+i+1]+p_data[(j+1)*wi de+(i-1)]+p_data[(j+1)*wide+i]+p_data[(j+1)* wide+i+1])/8;if(abs(p_temp[j*wide+i]-averg)>m)p_temp[j*wide+i]=averg;}}memcpy(p_data,p_temp,wide*height);delete p_temp;Invalidate(TRUE);}有选择保边缘平滑:(9区域)void CMy0107View::OnJubupingjun(){ DWORD size;int wide,height;int n,ji[9],nmin;float mean[9],bunsan[9],bmin;BYTE *p_data;p_data=m_pBitmap;wide=m_dwWidth;height=m_dwHeight;size=wide*height;BYTE* p_temp=new BYTE[size];memset(p_temp,255,size);for(int j=2;j<=height-3;j++)for(int i=2;i<=wide-3;i++){//求9种近邻区域的均值及其方差//第1近邻区域ji[0]=p_data[(j-1)*wide+(i-1)];ji[1]=p_data[(j-1)*wide+i];ji[2]=p_data[(j-1)*wide+(i+1)];ji[3]=p_data[j*wide+(i-1)];ji[4]=p_data[j*wide+i];ji[5]=p_data[j*wide+(i+1)];ji[6]=p_data[(j+1)*wide+(i-1)];ji[7]=p_data[(j+1)*wide+i];ji[8]=p_data[(j+1)*wide+(i+1)];mean[0]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6]+ji[7]+ji[8])/9;bunsan[0]=0;for(n=0;n<=8;n++) bunsan[0]+=ji[n]*ji[n]-mean[0]*mean[0];//第2近邻区域ji[0]=p_data[(j-2)*wide+(i-1)];ji[1]=p_data[(j-2)*wide+i];ji[2]=p_data[(j-2)*wide+(i+1)];ji[3]=p_data[(j-1)*wide+(i-1)];ji[4]=p_data[(j-1)*wide+i];ji[5]=p_data[(j-1)*wide+(i+1)];ji[6]=p_data[j*wide+i];mean[1]=(float)(ji[0]+ji[1]+ji[2]+ji[3]+ji[ 4]+ji[5]+ji[6])/7;bunsan[1]=0;for(n=0;n<=6;n++) bunsan[1]+=ji[n]*ji[n]-mean[1]*mean[1];//第3近邻区域ji[0]=p_data[(j-1)*wide+(i-2)];ji[1]=p_data[(j-1)*wide+(i-1)];ji[2]=p_data[j*wide+(i-2)];ji[3]=p_data[j*wide+(i-1)];ji[4]=p_data[j*wide+i];ji[5]=p_data[(j+1)*wide+(i-2)];ji[6]=p_data[(j+1)*wide+(i-1)];mean[2]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[2]=0;for(n=0;n<=6;n++) bunsan[2]+=ji[n]*ji[n]-mean[2]*mean[2];//第4近邻区域ji[0]=p_data[j*wide+i];ji[1]=p_data[(j+1)*wide+(i-1)];ji[2]=p_data[(j+1)*wide+i];ji[3]=p_data[(j+1)*wide+(i+1)];ji[4]=p_data[(j+2)*wide+(i-1)];ji[5]=p_data[(j+2)*wide+i];ji[6]=p_data[(j+2)*wide+(i+1)];mean[3]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[3]=0;for(n=0;n<=6;n++) bunsan[3]+=ji[n]*ji[n]-mean[3]*mean[3];//第5近邻区域ji[0]=p_data[(j-1)*wide+(i+1)];ji[1]=p_data[(j-1)*wide+(i+2)];ji[2]=p_data[j*wide+i];ji[3]=p_data[j*wide+(i+1)];ji[4]=p_data[j*wide+(i+2)];ji[5]=p_data[(j+1)*wide+(i+1)];ji[6]=p_data[(j+1)*wide+(i+2)];mean[4]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[4]=0;for(n=0;n<=6;n++) bunsan[4]+=ji[n]*ji[n]-mean[4]*mean[4]; //第6近邻区域ji[0]=p_data[(j-2)*wide+(i+1)];ji[1]=p_data[(j-2)*wide+(i+2)];ji[2]=p_data[(j-1)*wide+i];ji[3]=p_data[(j-1)*wide+(i+1)];ji[4]=p_data[(j-1)*wide+(i+2)];ji[5]=p_data[j*wide+i];ji[6]=p_data[j*wide+(i+1)];mean[5]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[5]=0;for(n=0;n<=6;n++) bunsan[5]+=ji[n]*ji[n]-mean[5]*mean[5];//第7近邻区域ji[0]=p_data[(j-2)*wide+(i-2)];ji[1]=p_data[(j-2)*wide+(i-1)];ji[2]=p_data[(j-1)*wide+(i-2)];ji[3]=p_data[(j-1)*wide+(i-1)];ji[4]=p_data[(j-1)*wide+i];ji[5]=p_data[j*wide+(i-1)];ji[6]=p_data[j*wide+i];mean[6]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[6]=0;for(n=0;n<=6;n++) bunsan[6]+=ji[n]*ji[n]-mean[6]*mean[6];//第8近邻区域ji[0]=p_data[j*wide+(i-1)];ji[1]=p_data[j*wide+i];ji[2]=p_data[(j+1)*wide+(i-2)];ji[3]=p_data[(j+1)*wide+(i-1)];ji[4]=p_data[(j+1)*wide+i];ji[5]=p_data[(j+2)*wide+(i-2)];ji[6]=p_data[(j+2)*wide+(i-1)];mean[7]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[7]=0;for(n=0;n<=6;n++) bunsan[7]+=ji[n]*ji[n]-mean[7]*mean[7];//第9近邻区域ji[0]=p_data[j*wide+i];ji[1]=p_data[j*wide+(i+1)];ji[2]=p_data[(j+1)*wide+i];ji[3]=p_data[(j+1)*wide+(i+1)];ji[4]=p_data[(j+1)*wide+(i+2)];ji[5]=p_data[(j+2)*wide+(i+1)];ji[6]=p_data[(j+2)*wide+(i+2)];mean[8]=(float)(ji[0]+ji[1]+ji[2]+j i[3]+ji[4]+ji[5]+ji[6])/7;bunsan[8]=0;for(n=0;n<=6;n++) bunsan[6]+=ji[n]*ji[n]-mean[8]*mean[8];//求方差最小的近邻区域nminbmin=bunsan[0];nmin=0;for(n=0;n<=6;n++){if(bmin>bunsan[n]){bmin=bunsan[n];nmin=n;}//把nmin 的值四舍五入后作为显示图像的值p_temp[j*wide+i]=(int)(mean[nmin]+0 .5);}}memcpy(p_data,p_temp,size);delete p_temp;Invalidate(TRUE);三、处理结果原图二值3*3 5*5 超限保边。

图像滤波平滑实验报告

图像滤波平滑实验报告

图像滤波平滑实验报告引言图像滤波平滑是数字图像处理中的基本操作之一。

通过应用合适的滤波器,可以减少图像中的噪声、平滑细节,从而改善图像的质量和观感。

本实验旨在探究图像滤波平滑的原理和方法,并通过实验验证其效果。

实验目的1. 了解图像滤波平滑的基本原理。

2. 学习常用的图像滤波平滑方法及其优缺点。

3. 掌握图像滤波平滑的实际应用。

实验步骤本实验使用Python编程语言进行图像处理。

以下是具体的实验步骤:1. 下载并安装Python及相关库。

2. 导入所需的库,包括NumPy(用于处理数值计算)和OpenCV(用于图像处理)。

3. 读取待处理的图像。

4. 使用不同的滤波器对图像进行平滑处理。

5. 对比不同滤波器的效果,并进行分析。

实验结果与分析本实验选取了三种常用的图像滤波平滑方法:均值滤波、中值滤波和高斯滤波。

下面分别对它们的效果进行分析。

1. 均值滤波均值滤波是一种简单的滤波方法,它将每个像素的灰度值设置为周围像素的平均值。

它适用于轻度噪声的去除,但会模糊图像的细节。

实验结果显示,均值滤波可以有效地减少图像中的噪声,但同时也导致图像变得模糊。

2. 中值滤波中值滤波是一种非线性滤波方法,它将每个像素的灰度值设置为周围像素的中值。

相较于均值滤波,中值滤波能够更好地保留图像的边缘和细节。

实验结果显示,中值滤波在去除噪声的同时对图像的细节损失较小。

3. 高斯滤波高斯滤波是一种基于高斯函数的线性滤波方法,它将每个像素的灰度值设置为周围像素的加权平均值。

高斯滤波对于去除高斯噪声效果显著,同时也能保持图像细节的清晰度。

实验结果显示,高斯滤波对图像的平滑效果较好。

实验总结本实验通过对比不同的图像滤波平滑方法,发现不同的方法适用于不同场景的图像处理。

均值滤波适合轻度噪声、对图像细节要求较低的场景;中值滤波适合去除椒盐噪声、能较好地保留图像细节;而高斯滤波则适用于去除高斯噪声、较好地平滑图像。

在实际应用中,我们需要根据图像的特点和需求选择合适的滤波方法。

数字图像处理 实验报告(完整版)

数字图像处理 实验报告(完整版)

数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。

7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。

其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。

数字图像处理实验三中值滤波和均值滤波实验报告

数字图像处理实验三中值滤波和均值滤波实验报告

数字图像处理实验三均值滤波、中值滤波的计算机实现12281166 崔雪莹计科1202 班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC++ 6。

0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。

二、实验的软、硬件平台:硬件:微型图像处理系统,包括:主机,PC机;摄像机;软件:操作系统:WINDOWS2000或WINDOWSXP应用软件:VC++6.0三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察处理结果。

四、实验要求:1)学习VC+确6。

0编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。

五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。

边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。

均值氓浜1W赵六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。

本次实验更加增加了对数字图像处理的了解与学习。

七、实验程序代码注释及分析// HistDemoADIg.h :头文件//#in elude "ImageWnd.h"#pragma once// CHistDemoADIg 对话框classCHistDemoADIg : public CDialogEx{//构造public:CHistDemoADlg(CWnd* pParent = NULL); // 标准构造函数intnWidth;intnHeight;intnLen;intnByteWidth;BYTE *lpBackup;BYTE *lpBitmap;BYTE *lpBits;CStringFileName;CImageWndsource,dest;// 对话框数据enum { IDD = IDD_HISTDEMOA_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:voidLoadBitmap(void);afx_msg void OnOpen();afx_msg void OnHist();voidHistogramEq(void);voidNoColor(void);void HistogramEq1(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMeanFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMedianFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput); afx_msgvoid OnBnClickedClose();afx_msg void OnBnClickedMeanfilter();afx_msg void OnBnClickedMedianfilter();};HistDemoADlg.cpp 对HistDemoADlg.h 进行具体的实现,OnOpen() 函数响应ID 为IDC_OPEN的按钮事件,而且会调取文件选择对话框,选取文件之后,会显示在原始图像区域显示对应的位图图像,OnHist()函数会响应ID为IDC_HIST的按钮事件,调用HistogramEq()进行直方图均衡化的处理,HistogramEq()会调用HistogramEq1()进行直方图均衡化的处理,并用dst.setlmage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。

滤波去噪实验报告(3篇)

滤波去噪实验报告(3篇)

第1篇一、实验目的本次实验旨在通过计算机辅助技术,对图像进行处理,以实现图像去噪的目的。

通过对比不同滤波算法的效果,分析其优缺点,并了解滤波去噪在图像处理中的应用。

二、实验原理数字图像处理(DIP)是利用计算机对图像信号进行处理的技术。

在图像采集、获取、编码和传输过程中,往往会出现不同程度的噪声污染,影响图像质量。

去噪技术旨在减少或消除图像中的噪声,提高图像质量。

常见的去噪方法包括空域滤波、频域滤波和小波变换滤波等。

本实验主要研究以下几种滤波方法:1. 空域滤波:利用图像像素值的空间相关性,通过局部邻域内的像素值来估计当前像素值,从而达到去噪的目的。

2. 频域滤波:将图像从空间域转换到频域,对频域内的噪声进行处理,再转换回空间域得到去噪后的图像。

3. 小波变换滤波:将图像分解为不同尺度和位置的细节和小波系数,对噪声进行处理,再重构图像。

三、实验设备与软件1. 实验设备:计算机、显示器、鼠标、键盘等。

2. 实验软件:MATLAB。

四、实验步骤1. 加载含噪声的图像。

2. 对图像进行空域滤波,包括均值滤波、中值滤波和高斯滤波等。

3. 对图像进行频域滤波,包括低通滤波和高通滤波等。

4. 对图像进行小波变换滤波,包括小波分解和小波重构等。

5. 对比不同滤波方法的效果,分析其优缺点。

6. 撰写实验报告。

五、实验结果与分析1. 空域滤波效果对比:(1)均值滤波:去除噪声效果较好,但会模糊图像细节。

(2)中值滤波:去除噪声效果较好,且能较好地保留图像细节。

(3)高斯滤波:去除噪声效果较好,但会对图像边缘产生模糊。

2. 频域滤波效果对比:(1)低通滤波:去除高频噪声,保留低频信号,但可能对图像边缘产生模糊。

(2)高通滤波:去除低频噪声,突出高频信号,但可能对图像细节产生模糊。

3. 小波变换滤波效果:(1)小波分解:将图像分解为不同尺度和位置的细节和小波系数,便于噪声处理。

(2)小波重构:将处理后的细节和小波系数进行重构,得到去噪后的图像。

中值滤波与均值滤波

中值滤波与均值滤波
PUSH CX
MOVCX,N
SUBCX,DX
MOVSI,0
RECMP:
MOVAL,TADA2[SI]
CMPAL,TADA2[SI+1];比较相邻两数据的大小
JLE L1;若前者小于等于后者,跳转到L1
XCHGAL,TADA2[SI+1];若前者大于后者,则两者交换
XCHGAL,TADA2[SI]
L1:
开始
ﻩ结束
三、程序清单
1、中值滤波:
DATASSEGMENT
TADA1DB 65,72,33,84,43
NEQU$-TADA1
DATASENDS
CODESSEGMENT
ASSUMECS:CODES,DS:DATAS
START:
MOVAX,DATAS
MOV DS,AX;给DS段赋值
MOV CX,N-1;设置N-1轮比较次数
中值滤波与均值滤波
———————————————————————————————— 作者:
———————————————————————————————— 日期:

四川大学电气信息学院
微机原理与接口技术
实验报告
实验名称:中值滤波与均值滤波
实验地点:二基楼A514
年级:2014级
姓名:宋雅婕
学号:20
CMP AL,D2[SI+1];比较相邻两数据的大小
JLEL1;若前者小于等于后者,跳转到L1
XCHG AL,D2[SI+1];若前者大于后者,则两者交换
XCHGAL,D2[SI]
L1:
INCSI
LOOP RECMP
POPCX
RET
MP ENDP
CODESENDS

数字图像处理实验 图像空间滤波

数字图像处理实验  图像空间滤波

数字图像处理实验报告实验三图像空间滤波1、实验目的图像的空间滤波能够实现对图像锐化、亮度增强等操作,通过此功能能够得到所需图像,进行观察各种滤波器的区别与使用范围。

2、实验步骤(1).通过如下污染一幅图像的方式创建一组带噪声的图像:•a加入高斯噪声 b加入椒盐噪声•使用如下技术:•创建2个平滑线形滤波器并分别对上述加噪图像实现线性滤波,比较其优劣, 并写入实验报告:•[ 1 1 1 [ 1 2 1• 1 1 1 2 4 2• 1 1 1 ] 1 2 1 ](2).实现中值滤波对上述加噪图像的处理结果,总结中值滤波和均值滤波各适合用于处理的噪声类型,并写入实验报告。

(3).对一幅模糊的图像使用两种锐化空间滤波器进行增强,并比较效果。

3、实验源码(1)加入高斯噪声makeI=imnoise(W,'gaussian',0,0.005);figure,imshow(makeI);imwrite(makeI,'3-1-gaussian.jpg')(2)加入椒盐噪声makeI=imnoise(W,'salt & pepper',0.01);figure,imshow(makeI);imwrite(makeI,'3-1-salt.jpg')(3)创建两个平滑线性滤波器h=[1 1 1;1 1 1; 1 1 1]a.高斯噪声的图像I=imread('3-1-gaussian.jpg')K=rgb2gray(I)imshow(i)h=[1 1 1;1 1 1;1 1 1]I2 = filter2(h,K);imshow(I2,[]), colorbarb.椒盐噪声的图像W=imread('3-1-salt.jpg')T=rgb2gray(W)I2 = filter2(h,T);imshow(I2,[]), colorbarh=[1 2 1;2 4 2;1 2 1]a.高斯噪声的图像h=[1 2 1;2 4 2;1 2 1]I2 = filter2(h,i);imshow(I2,[]), colorbarb.椒盐噪声的图像I2 = filter2(h,T);imshow(I2,[]), colorbar实现中值滤波(椒盐),观察处理结果可知适于处理椒盐噪声R=imread('3-1-salt.jpg')T=rgb2gray(R)makeI=medfilt2(T,'symmetric');figure,imshow(makeI);实现中值滤波(高斯)R=imread('3-1-gaussian.jpg')T=rgb2gray(R)makeI=medfilt2(T,'symmetric');figure,imshow(makeI);4、实验截图原图加入高斯噪声后如下图:加入椒盐噪声后如下图:A.高斯噪声的图像处理如下:B .椒盐噪声的图像处理如下:平滑线性滤波器h=[1 2 1;2 4 2;1 2 1] A .对高斯噪声图像的处理如下:B.对椒盐噪声图像的处理如下:对已加入椒盐噪声的图像的处理如下:对已加入高斯噪声图像的处理如下:5、实验小结通过本次实验的观察:(1)、中值滤波更适于处理含有椒盐噪声的图像,噪声有明显的消除。

实验三均值滤波和中值滤波

实验三均值滤波和中值滤波

实验三 均值滤波和中值滤波实验目的进一步了解 MatLab 软件 /语言,学会使用 MatLab 对图像作滤波处理,使学生有机会掌握滤波 算法,体会滤波效果。

了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配 套的实践机会。

(1) 学生应当完成对于给定图像 +噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。

(2) 利用 MATLAB 软件实现空域滤波的程序:I=imread('electric.tif');J = imnoise(I,'gauss',0.02); J = imnoise(I,'salt & pepper',0.02); (注意空格 ) %添加椒盐噪声figure,imshow(K);figure,imshow(L);figure,imshow(M);figure,imshow(N);三、实验设备与软件(1) IBM-PC 计算机系统(2) MatLab 软件 /语言包括图像处理工具箱 (Image Processing Toolbox)(3) 实验所需要的图片实验要求%添加高斯噪声ave1=fspecial('average',3);ave2=fspecial('average',5); K =filter2(ave1,J)/255; L =filter2(ave2,J)/255; M =medfilt2(J,[3 3]); N =medfilt2(J,[4 4]);%产生3X3的均值模版 %产生5X5的均值模版 %均值滤波 3X3 %均值滤波 5X5 %中值滤波 3X3 模板 % 中值滤波 4X4 模板四、实验内容与步骤a)调入并显示原始图像 Sample2-1.jpg 。

b)利用 imnoise 命令在图像 Sample2-1.jpg 上加入高斯 (gaussian) 噪声c)利用预定义函数fspecial命令产生平均(average)滤波器。

均值中值滤波以及边缘检测剖析

均值中值滤波以及边缘检测剖析

《数字图像处理》实验报告标题:数字图像的中值,均值滤波和边缘检测算法姓名:学号:班级:数字图像滤波原理及方法和边缘检测算法一.滤波原理图像滤波,即在尽量保留图像细节特征的条件下对目标像的噪声(包括高斯噪声、椒盐噪声、随机噪声)进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接响到后续图像处理和分析的有效性和可靠性。

由于成像系统、传输介质和记录设备等的不完善,数字图像在其形成、传输记录过程中往往会受到多种噪声的污染。

另外,在图像处理的某些环节当输入的像对象并不如预想时也会在结果图像中引入噪声。

这些噪声在图像上常表现为一引起较强视觉效果的孤立象素点或象素块。

一般,噪声信号与要研究的对象不相关它以无用的信息形式出现,扰乱图像的可观测信息。

对于数字图像信号,噪声表为或大或小的极值,这些极值通过加减作用于图像象素的真实灰度值上,在图像造成亮、暗点干扰,极大降低了图像质量,影响图像复原、分割、特征提取、图识别等后继工作的进行。

要构造一种有效抑制噪声的滤波机必须考虑两个基本问题能有效地去除目标和背景中的噪声;同时,能很好地护图像目标的形状、大小及特定的几何和拓扑结构特征。

二.滤波方式(1)中值滤波:中值滤波由Turky在1971年提出,最初用于时间序列分析,后来被用于图像理, 并在去噪复原中取得了较好的效果。

中值滤波器是基于次序统计完成信号恢的一种典型的非线性滤波器,其基本原理是把图像或序列中心点位置的值用该域的中值替代,具有运算简单、速度快、除噪效果好等优点,曾被认为是非线波的代表。

然而,一方面中值滤波因不具有平均作用,在滤除诸如高斯噪声之非冲激噪声时会严重损失信号的高频信息,使图像的边缘等细节模糊;另一方中值滤波的滤波效果常受到噪声强度以及滤波窗口的大小和形状等因素的制约了使中值滤波器具有更好的细节保护特性及适应性,人们提出了许多中值滤波器的改进算法!标准中值滤波算法的基本思想是将滤波窗口内的最大值和最小值均视为噪声,用滤波窗口内的中值代替窗口中心像素点的灰度,在一定程度上抑制了噪声。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验三均值滤波、中值滤波的计算机实现12281166 崔雪莹计科1202 班一、实验目的:1)熟悉均值滤波、中值滤波处理的理论基础;2)掌握均值滤波、中值滤波的计算机实现方法;3)学习VC++ 6。

0 的编程方法;4)验证均值滤波、中值滤波处理理论;5)观察均值滤波、中值滤波处理的结果。

二、实验的软、硬件平台:硬件:微型图像处理系统,包括:主机,PC机;摄像机;软件:操作系统:WINDOWS2000或WINDOWSXP应用软件:VC++6.0三、实验内容:1)握高级语言编程技术;2)编制均值滤波、中值滤波处理程序的方法;3)编译并生成可执行文件;4)考察处理结果。

四、实验要求:1)学习VC+确6。

0编程的步骤及流程;2)编写均值滤波、中值滤波的程序;3)编译并改错;4)把该程序嵌入试验二给出的界面中(作适当修改);5)提交程序及文档;6)写出本次实验的体会。

五、实验结果截图实验均值滤波采用的是3X3的方块,取周围的像素点取得其均值代替原像素点。

边缘像素的处理方法是复制边缘的像素点,增加一个边框,计算里面的像素值得均值滤波。

均值氓浜1W赵六、实验体会本次实验在前一次的实验基础上增加均值滤波和中值滤波,对于椒盐噪声的处理,发现中值滤波的效果更为好一点,而均值滤波是的整个图像变得模糊了一点,效果差异较大。

本次实验更加增加了对数字图像处理的了解与学习。

七、实验程序代码注释及分析// HistDemoADIg.h :头文件//#in elude "ImageWnd.h"#pragma once// CHistDemoADIg 对话框classCHistDemoADIg : public CDialogEx{//构造public:CHistDemoADlg(CWnd* pParent = NULL); // 标准构造函数intnWidth;intnHeight;intnLen;intnByteWidth;BYTE *lpBackup;BYTE *lpBitmap;BYTE *lpBits;CStringFileName;CImageWndsource,dest;// 对话框数据enum { IDD = IDD_HISTDEMOA_DIALOG };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:voidLoadBitmap(void);afx_msg void OnOpen();afx_msg void OnHist();voidHistogramEq(void);voidNoColor(void);void HistogramEq1(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMeanFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput);voidMedianFilter(intnWidth,intnHeight,BYTE *lpInput,BYTE *lpOutput); afx_msgvoid OnBnClickedClose();afx_msg void OnBnClickedMeanfilter();afx_msg void OnBnClickedMedianfilter();};HistDemoADlg.cpp 对HistDemoADlg.h 进行具体的实现,OnOpen() 函数响应ID 为IDC_OPEN的按钮事件,而且会调取文件选择对话框,选取文件之后,会显示在原始图像区域显示对应的位图图像,OnHist()函数会响应ID为IDC_HIST的按钮事件,调用HistogramEq()进行直方图均衡化的处理,HistogramEq()会调用HistogramEq1()进行直方图均衡化的处理,并用dst.setlmage()显示处理之后的图像,以及NoColor()函数,对原始图像转化为灰度图像之后再显示。

// HistDemoADlg.cpp : 实现文件//#include "stdafx.h"#include "HistDemoA.h"#include "HistDemoADlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif#define Point(x,y) lpPoints[(x)+(y)*nWidth]#define Point1(x,y) lpPoints1[(x)+(y)*nWidth]// 用于应用程序“关于”菜单项的CAboutDlg 对话框classCAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)voidCAboutDlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CHistDemoADlg 对话框CHistDemoADlg::CHistDemoADlg(CWnd* pParent /*=NULL*/): CDialogEx(CHistDemoADlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);lpBitmap = 0;lpBackup = 0;}voidCHistDemoADlg::DoDataExchange(CDataExchange* pDX){ CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CHistDemoADlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_OPEN, &CHistDemoADlg::OnOpen)ON_BN_CLICKED(IDC_HIST, &CHistDemoADlg::OnHist)ON_BN_CLICKED(IDCLOSE, &CHistDemoADlg::OnBnClickedClose)ON_BN_CLICKED(IDC_MEANFILTER, &CHistDemoADlg::OnBnClickedMeanfilter)ON_BN_CLICKED(IDC_MEDIANFILTER,&CHistDemoADlg::OnBnClickedMedianfilter)END_MESSAGE_MAP() // CHistDemoADlg 消息处理程序BOOL CHistDemoADlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CStringstrAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){ pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标SetIcon(m_hIcon, FALSE); // 设置小图标// TODO: 在此添加额外的初始化代码source.Create(0,L"Source",WS_CHILD|WS_VISIBLE,CRect(40,40,360,280),this,10000);dest.Create(0,L"Destination",WS_CHILD|WS_VISIBLE,CRect(400,40,720,280),this ,10001);return TRUE; // 除非将焦点设置到控件,否则返回TRUE}voidCHistDemoADlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID& 0xFFF0) == IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码// 来绘制该图标。

对于使用文档/ 视图模型的MFC 应用程序,// 这将由框架自动完成。

相关文档
最新文档