matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数

matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数

ID:43842543

大小:18.01 KB

页数:3页

时间:2019-10-15

matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数_第1页
matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数_第2页
matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数_第3页
资源描述:

《matLab 自编的 均值滤波、中值滤波、高斯滤波 图像处理函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、matLab自编的均值滤波、中值滤波、高斯滤波图像处理函数(转)虽然matlab里面有这些函数,但是要求自己编写,计算机视觉上有这个实验,是别人编写的。别人到网上找了半天才零散的找到一些碎片,整理以后发上来的!MatLab自编的均值滤波、中值滤波、高斯滤波图像处理函数。%自编的均值滤波函数。x是需要滤波的图像,n是模板大小(即n×n)functiond=avefilt(x,n)a(1:n,1:n)=1;%a即n×n模板,元素全是1p=size(x);%输入图像是p×q的,且p>n,q>nx1=double(x);x2=x1;%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元

2、素fori=1:p(1)-n+1forj=1:p(2)-n+1c=x1(i:i+(n-1),j:j+(n-1)).*a;%取出x1中从(i,j)开始的n行n列元素与模板相乘s=sum(sum(c));%求c矩阵(即模板)中各元素之和x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);%将模板各元素的均值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);%自编的中值滤波函数。x是需要滤波的图像,n是模板大小(即n×n)functiond=midfilt(x,n)p=size(x);%输入图像是p×q的,且p>n,q>nx1=double(x);x2

3、=x1;fori=1:p(1)-n+1forj=1:p(2)-n+1c=x1(i:i+(n-1),j:j+(n-1));%取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)e=c(1,:);%是c矩阵的第一行foru=2:ne=[e,c(u,:)];%将c矩阵变为一个行矩阵endmm=median(e);%mm是中值x2(i+(n-1)/2,j+(n-1)/2)=mm;%将模板各元素的中值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);%自编的高斯滤波函数,S是需要滤波的图象,n是均值,k是方差functiond=gaussfilt(k,n,s)

4、Img=double(s);n1=floor((n+1)/2);%计算图象中心fori=1:nforj=1:nb(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*k))/(4*pi*k);endend%生成高斯序列b。Img1=conv2(Img,b,'same');%用生成的高斯序列卷积运算,进行高斯滤波d=uint8(Img1);%此为程序主文件,包含主要功能单元,以及对子函数进行调用try%实验步骤一:彩色、灰度变换h=imread('photo.jpg');%读入彩色图片c=rgb2gray(h);%把彩色图片转化成灰度图片,256级figure,imshow(

5、c),title('原始图象');%显示原始图象g=imnoise(c,'gaussian',0.1,0.002);%加入高斯噪声figure,imshow(g),title('加入高斯噪声之后的图象');%显示加入高斯噪声之后的图象%实验步骤二:用系统预定义滤波器进行均值滤波n=input('请输入均值滤波器模板大小');A=fspecial('average',n);%生成系统预定义的3X3滤波器Y=filter2(A,g)/255;%用生成的滤波器进行滤波,并归一化figure,imshow(Y),title('用系统函数进行均值滤波后的结果');%显示滤波后的图象%实验步骤三

6、:用自己的编写的函数进行均值滤波Y2=avefilt(g,n);%调用自编函数进行均值滤波,n为模板大小figure,imshow(Y2),title('用自己的编写的函数进行均值滤波之后的结果');%显示滤波后的图象%实验步骤四:用Matlab系统函数进行中值滤波n2=input('请输入中值滤波的模板的大小');Y3=medfilt2(g,[n2n2]);%调用系统函数进行中值滤波,n2为模板大小figure,imshow(Y3),title('用Matlab系统函数进行中值滤波之后的结果');%显示滤波后的图象%实验步骤五:用自己的编写的函数进行中值滤波Y4=midfilt(g

7、,n2);%调用自己编写的函数进行中值滤波,figure,imshow(Y4),title('用自己编写的函数进行中值滤波之后的结果');%实验步骤六:用matlab系统函数进行高斯滤波n3=input('请输入高斯滤波器的均值');k=input('请输入高斯滤波器的方差');A2=fspecial('gaussian',k,n3);%生成高斯序列Y5=filter2(A2,g)/255;%用生成的高斯序列进行滤波figu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。