ImageVerifierCode 换一换
你正在下载:

程序.docx

[预览]
格式:DOCX , 页数:48 ,大小:1.94MB ,
资源ID:10551573      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10551573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(程序.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

程序.docx

1、程序%将图片转化为二值图,根据直方图,以75分界 4if(I(i,j)75) 4Otsu阈值: 4谐波均值滤波器 5(三)利用直方图人工指定阈值对rice进行自动单阈值分割; 7滤波器 8(二)对图像加噪后分别使用MATLAB自带函数和自写函数进行平滑滤波,观察实验结果。 9(三)自写函数实现对图像的锐化操作。 9(四) 分别使用最大值、最小值和中值滤波器对图像进行处理 10最小值: 11中值: 12(五)分别使用理想和巴特沃斯高低通滤波器对图像进行滤波(高斯噪声) 12图像灰度变换 13%对数变换 143,反色变换 144.灰度图像均衡化 15点检测 15阈值 16Sobel 17%LOG

2、17%Canny 17(一) 调入给定的数字图像,并进行计算机均衡化处理,显示原图像的直方图和经过均衡化处理过的图像直方图。 19(二)对图像加噪后分别使用MATLAB自带函数和自写函数进行平滑滤波, 20运用拉普拉斯算子梯度增强法进行图像锐化 21%最大值滤波器 21最小值: 22%中值 23PSF 252、灰度直方图均衡 规格化 26程序二:filter和conv的不同 28程序三:滤波后信号幅度的变化 28MATLAB中提供了卷积运算的函数命令conv2,其语法格式为: 29MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为: 29Y = f

3、ilter2(h,X) 29Fspecial函数用于创建预定义的滤波算子 30ordfilt2函数 30图像的点运算: 30加法运算:rice和cameraman 313、 flower 变模糊 314、 减法运算:ri 32乘法运算 32缩放运算 33图像翻转 34图像剪切 34%将图片转化为二值图,根据直方图,以75分界I=imread(Cameraman.bmp);m n=size(I);for i=1:m for j=1:n if(I(i,j)75) I(i,j)=255;% 大于75,都变成背景色 else I(i,j)=0; end endend imshow(I);Otsu阈值:

4、I=imread(zhiwen.gif); T ,SM=graythresh(I); %otsu自动计算阈值函数,SM是可分性测度g=im2bw(I,T)figure,imshow(g)谐波均值滤波器图像分割与边缘检测(二)用各梯度算子对图像进行边缘检测;i=imread(rice1.jpg);g=rgb2gray(i);d=im2double(i);subplot(131),imshow(i),title(原图);gv,t=edge(g,sobel,0.075,horizontal);%I I是输入图像,Sobel是运用的方法,parameters是参数g是一个数组,t是edge用于确定参数

5、,T是阈值,dir(vertical)是检测的首选方向subplot(132),imshow(gv),title(水平方向);gv,t=edge(g,sobel,0.9,horizontal);subplot(133),imshow(gv),title(水平方向); %LOGi=imread(rice1.jpg);g=rgb2gray(i);d=im2double(i);subplot(131),imshow(i),title(原图);gv,t=edge(g,log,0.005,2.25);subplot(132),imshow(gv),title(高斯拉普拉斯LOG );gv,t=edge(

6、g,log,0.1,2.25); %2.25是代表标准差。默认为2subplot(133),imshow(gv),title(高斯拉普拉斯LOG );%Canny边缘检测器i=imread(rice1.jpg);g=rgb2gray(i);d=im2double(i);subplot(131),imshow(i),title(原图);gv,t=edge(g,canny, 0.04 0.1,1.5);% 0.04 0.1是两个阈值,1.5是平面滤波的标准差,默认值为1 subplot(132),imshow(gv),title(Canny边缘检测器); (四)用迭代法和OSTU法对rice进行自

7、动单阈值分割;x=imread(Lena.bmp);%figure;%imshow(x);m,n=size(x);N=m*n;num=zeros(1,256);p=zeros(1,256);for i=1:m for j=1:n num(x(i,j)+1)=num(x(i,j)+1)+1;endendfor i=0:255;p(i+1)=num(i+1)/N;endtotalmean=0; for i=0:255; totalmean=totalmean+i*p(i+1); end maxvar=0; for k=0:255kk=k+1; zerosth=sum(p(1:kk); firsth

8、=0; for h=0:k firsth=firsth+h*p(h+1); end var=totalmean*zerosth-firsth; var=var*var; var=var/(zerosth*(1-zerosth)+0.01); var=sqrt(var); if(varmaxvar) maxvar=var; point=k; end end threshold=point; I=imread(Lena.bmp); %I=rgb2gray(I); I=double(I); T=double(min(I(:)+max(I(:)/2; done=false; i=0;while don

9、e r1=find(IT);Tnew=(mean(I(r1)+mean(I(r2)/2;done=abs(Tnew-T)75) I1(i,j)=255;% 大于75,都变成背景色 else I1(i,j)=0; end endend subplot(133);imshow(I1);title(分割以后图);滤波器调入给定的数字图像,并进行计算机均衡化处理,显示原图像的直方图和经过均衡化处理过的图像直方图。观察均衡化后图像和直方图的变化。结果如图。 I1 = imread(flower.jpg); subplot(4,3,1),imshow(I1);%显示原图 I=rgb2gray(I1); s

10、ubplot(4,3,2),imshow(I);%将彩色图转化为灰度图 subplot(4,3,3),imhist(I,50);%每隔50隔像素点统计一次 h = histeq(I);%均衡化,画图片的直方图 subplot(4,3,4),imshow(h); subplot(4,3,5),imhist(h);%显示均衡化以后的图像 (二)对图像加噪后分别使用MATLAB自带函数和自写函数进行平滑滤波,观察实验结果。% 2平滑滤波%自带函数I=imread(Lena.bmp);i=imnoise(I,salt);%加盐噪subplot(2,2,1),imshow(i);h=fspecial(a

11、verage); %3*3的邻域平均模板,生成均值滤波器y=imfilter(i,h); %对图像进行滤波subplot(2,2,2),imshow(y);% 2平滑滤波%自写函数I=imread(Lena.bmp);i=imnoise(I,salt);%加盐噪subplot(2,2,1),imshow(i);Inew=myMidalp(i,3); %调用函数subplot(2,2,3),imshow(Inew)(三)自写函数实现对图像的锐化操作。运用拉普拉斯算子梯度增强法进行图像锐化 I,map=imread(Lena.bmp);Subplot(1,2,1)imshow(I,map); %m

12、ap:映射I=double(I); Gx,Gy=gradient(I); % 计算梯度G=sqrt(Gx.*Gx+Gy.*Gy); % 注意是矩阵点乘 J=I; K=find(G=7); J(Q)=255; Subplot(1,2,2),imshow(J,map);(4)分别使用最大值、最小值和中值滤波器对图像进行处理,观察实验结果。最大值:%最大值滤波器I2=imread(flower.jpg); I1=rgb2gray(I2); n=2; c=2; mask=ones(n,n); r1,c1=size(I1); subplot(2,2,1);imshow(I2);title(原始图像);

13、subplot(2,2,2);imshow(I1);title(灰度图像); I1=double(I1); I1_max=I1; mid=floor(n/2); for u=1:r1-n+1 for v=1:c1-n+1 A=I1(u:u+n-1,v:v+n-1); A=A.*mask; I1_max(u+mid,v+mid)=max(max(A); endendsubplot(2,2,3);imshow(I1_max(mid+1:r1-mid,mid+1:c1-mid),);title(最大值图像);最小值:%最小值滤波器I2=imread(flower.jpg); I1=rgb2gray(

14、I2); n=2; c=2; mask=ones(n,n); r1,c1=size(I1); subplot(2,2,1);imshow(I2);title(原始图像); subplot(2,2,2);imshow(I1);title(灰度图像); I1=double(I1);I1_min=I1; mid=floor(n/2); %floor:向下取整 for u=1:r1-n+1 for v=1:c1-n+1 A=I1(u:u+n-1,v:v+n-1); A=A.*mask; I1_min(u+mid,v+mid)=min(min(A); endendsubplot(2,2,3);imsho

15、w(I1_min(mid+1:r1-mid,mid+1:c1-mid),);title(最小值图像);中值:I=imread(Lena.bmp);noise=imnoise(I,salt);figure,imshow(noise);Inew=myMidal(noise,3);figure,imshow(Inew);(五)分别使用理想和巴特沃斯高低通滤波器对图像进行滤波(高斯噪声),讨论阈值的设定和阶数的选取。clc;I=imread(Lena.bmp);%读图F=fft2(I);%傅里叶变换,变为频域内的图newF=fftshift(F);%移频 M N =size(I);%获取图像的大小d0

16、=100;%M=60;N=60; c1=floor(M/2);%原点c2=floor(N/2);h1=zeros(M,N);%理想型% h2=zeros(M,N); %巴特沃斯型% h3=zeros(M,N); %高斯型% sigma=4;% n=4; %巴特沃斯阶数for i=1:M for j=1:N d=sqrt(i-c1)2+(j-c2)2); if d=d0 h1(i,j)=1;%若为低通,则为0 else h1(i,j)=0;%若为低通,则为1 end %h2(i,j)=1/(1+(d/d0)(2*n); %h3(i,j)=exp(-d2/(2*sigma2); endendA=h

17、1.*newF;%相当于GuvB=ifft2(A);%相当于Gxy imshow(log(abs(B),);draw2(h1,理想型);% draw2(h2,巴特沃斯);% draw2(h3,高斯); 图像灰度变换 一些常用灰度变换Matlab程序以及图像处理效果图1,二值化和阈值处理%图像二值化 (选取一个域值,(5) 将图像变为黑白图像)I=imread(C:Documents and SettingsAdministrator桌面DIP-E1增强DIP-E1增强p12.tif);bw=im2bw(I,0.5);%选取阈值为0.5subplot(1,3,1);imshow(I);title

18、(原图);subplot(1,3,2);imshow(bw);title(显示二值图像);J=find(I=150);I(J)=255;subplot(1,3,3);imshow(I);title( 图像二值化 ( 域值为150 ) );2非线性变换%对数变换I=imread(C:Documents and SettingsAdministrator桌面DIP-E1增强DIP-E1增强p12.tif);I=mat2gray(I);%对数变换不支持uint8类型数据,将一个矩阵转化为灰度图像的数据格式(double)J=log(I+1);subplot(1,2,1);Imshow(I);%显示图

19、像title(原图);subplot(1,2,2);Imshow(J);title(对数变换后的图像)3,反色变换I1=imread(C:Documents and SettingsAdministrator桌面DIP-E1增强DIP-E1增强p12.tif);figure,imshow(I);title(原始图像);I2=imcomplement(I1);figure,imshow(I2);title(反色后图像);4.灰度图像均衡化I=imread(C:Documents and SettingsAdministrator桌面DIP-E1增强DIP-E1增强p12.tif); J=hist

20、eq(I);subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(J);figure,subplot(1,2,1),imhist(I,64);subplot(1,2,2),imhist(J,64);点检测myMidal.mfunction d = myMidal( x,n )%x是给定的图像,n是滤波器的大小;本函数实现中值滤波heigth width=size(x);x1=double(x);x2=x1;%x2就是原图像,模板每滑动一次,就用加权平均值修改for i=1:width-n+1 for j=1:heigth-n+1 c=x1(i:i+n-

21、1,j:j+n-1);%矩阵n行*n列模板,i:i+n-1是n行,c就是模板划过的区域 mm=-sum(sum(c)+9*c(1+(n-1)/2,1+(n-1)/2);%第一次求和,是按列求和。得到一个行向量,向量的基础上都求和 sum ,在i行j列中 取中间值的坐标是 i+(n-1)/2 , j+(n-1)/2% e=reshape(c,1,n*n);%将c变成向量% mm=median(e);%取中间值 x2(i+(n-1)/2,j+(n-1)/2)=mm;%模板中间坐标,i+(n-1)/2表示行号,j+(n-1)/2是列号 endendx3=x2(2:height-1,2:width-1

22、);%去掉最外面的一行一列figure,imshow(uint8(x3);%double 是用来计算的,uint是用来直接显示的% T=max(max(abs(x3);%最大梯度的矩阵,每一列求出一个最大值,得到一个行矩阵,再求一次最大值T=20;m n=size(x3);%比max小的都是0for i=1:m for j=1:n if(abs(i,j)75) I1(i,j)=255;% 大于75,都变成背景色 else I1(i,j)=0; end endend subplot(133);imshow(I1);title(分割以后图); Sobeli=imread(rice1.jpg);g=

23、rgb2gray(i);d=im2double(i);subplot(131),imshow(i),title(原图);gv,t=edge(g,sobel,0.075,horizontal);%I是输入图像,Sobel是运用的方法,parameters是参数%g是一个数组,t是edge用于确定参数,T是阈值,dir(vertical)是检测的首选方向subplot(132),imshow(gv),title(水平方向);gv,t=edge(g,sobel,0.9,horizontal);subplot(133),imshow(gv),title(水平方向);%LOGi=imread(rice1

24、.jpg);g=rgb2gray(i);d=im2double(i);subplot(131),imshow(i),title(原图);gv,t=edge(g,log,0.005,2.25);subplot(132),imshow(gv),title(高斯拉普拉斯LOG);gv,t=edge(g,log,0.1,2.25);%2.25是代表标准差。默认为2subplot(133),imshow(gv),title(高斯拉普拉斯LOG);%Cannyi=imread(rice1.jpg);g=rgb2gray(i);d=im2double(i);subplot(131),imshow(i),ti

25、tle(原图);gv,t=edge(g,canny, 0.04 0.1,1.5);% 0.04 0.1是两个阈值,1.5是平面滤波的标准差,默认值为1subplot(132),imshow(gv),title(边缘检测器);%(三)利用直方图人工指定阈值对rice进行自动单阈值分割;I1=imread(Cameraman.bmp);subplot(131);imshow(I1);title(原图);I=im2bw(I1);subplot(132);imhist(I1);title(直方图);m n=size(I1);for i=1:m for j=1:n if(I1(i,j)75) I1(i,

26、j)=255;% 大于75,都变成背景色 else I1(i,j)=0; end endend subplot(133);imshow(I1);title(分割以后图); %(四)用迭代法和OSTU法对rice进行自动单阈值分割;x=imread(Lena.bmp);%figure;%imshow(x);m,n=size(x);N=m*n;num=zeros(1,256);p=zeros(1,256);for i=1:m for j=1:n num(x(i,j)+1)=num(x(i,j)+1)+1;endendfor i=0:255;p(i+1)=num(i+1)/N;endtotalmean=0; for i=0:255; totalmean=totalmean+i*p(i+1); end maxvar=0; for k=0:255kk=k+1; zerosth=sum(p(1:kk); firsth=0; for h=0:k firsth=firsth+h*p(h+1); end var=total

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1