欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数字图像处理课程设计 matlab12页word.doc

    • 资源ID:33985070       资源大小:505.50KB        全文页数:12页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字图像处理课程设计 matlab12页word.doc

    如有侵权,请联系网站删除,仅供学习与交流数字图像处理课程设计 matlab【精品文档】第 12 页数字图像处理课程设计文档 目录一、 课程设计目的.2二、 课程设计要求.2三、 课程设计的内容.2四、 课题分析.3五、 总体设计.3六、 具体设计.46.1、 文件.46.1.1、打开.46.1.2、保存.46.1.3、打印.46.1.4、退出.46.2、直方图统计.46.2.1、R直方图.46.2.2、G直方图.46.2.3、B直方图.46.3、图像增强处里.56.3.1、直方图均衡化.56.3.2、对比度展宽.66.3.3、动态范围调整.66.3.4、空间域平滑算法.6 6.3.4.1、均值滤波.7 6.3.4.2、中值滤波7 6.3.4.3、边界保持滤波86.4、图像分割.8 6.4.1、均匀性度量法8 6.4.2、类间最大距离法.9 6.4.3、局部阈值法.96.5、颜色空间转化.9 6.5.1、RGB转HSV10 6.5.2、RGB转HIS.106.6、其他图像处理功能10 6.6.1、锐化.10 6.6.2、傅里叶.10七、 程序调试及结果分析.11八、 心得体会.11九、 参考文献.11十、 附录.12基于MATLAB的图像处理的课程设计一、课程设计目的1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。二、课程设计要求1、 要求独立完成设计项目,开发工具为MATLAB,也可为C、C+、java等,具体自选。各组长有责任督促组员完成任务并提交报告;2、 时间为4月28日6月28日为其两个月的业余时间。三、课程设计的内容学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 整个系统要完成的基本功能大致如下:1、 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;2、 数字图像的统计信息功能:直方图的统计及绘制;3、 数字图像的增强处理功能:(1) 直方图的均衡化(2) 对比度展宽(3) 动态范围调整(4) 空间域平滑算法的各种算法(如均值滤波、中值滤波、边界保持的滤波方法等) 4、数字图像由RGB转换成HIS空间并分别显示其分量图。 5、数字图像分割功能:可采用两种以上方法进行图像分割。总体设计 由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示:四、 具体设计6.1、 文件6.1.1、打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“ name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.image。6.1.2、保存同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。6.1.4、退出退出比较简单,程序如下所示:clc;close all;close(gcf); 6.1.3、打印 打印功能没能实现,将它设置为不可使用,可用如下代码实现 set(handles.print, 'Enable','off' ); %放在open_callback函数末尾 set(handles.print, 'Enable','off' );%放在two_OpeningFcn中 6.2、 直方图统计6.2.1、R直方图由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示R直方图像,把三维图像降为二维,且是当最后一个参数为1时是R直方图:x=imhist(handles.image(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y); 处理前后图片效果如下:6.2.2、G直方图 G直方图与R直方图的程序差不多只需将数值为1的R直方图变成2即可成为G直方图x=imhist(handles.image(:,:,2);6.2.3、B直方图 同理可得B直方图x=imhist(handles.image(:,:,3);RGB三种直方图统计图如下: 原图 R直方图 G直方图 B直方图6.3、 图像增强处理6.3.1、直方图均衡化 在balance_Callback回退函数中实现直方图均衡化 每个回退函数中都要获取图片,上面的RGB直方图也一样需获取打开的图片。打开图片的为以下程序代码: set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2); 直方图均衡化是判断是否为灰度图。用函数isrgb了来判断,不是灰度则将其转化,否则就直接用函数:histeq(handles.image)% handles.image是获取的图片来直方图均衡化处理图片图片前后效果如下: 6.3.2、 对比度展宽对图像的对比度展宽刻可自己编写算法来处理,同样的,处理结果如图: 6.3.3、动态范围调整 共图像处理功能未能实现,程序中已给出处理其图像的代码,但有错误,不能找出其错位,将其正确的处理,原因是:nw=1./(b-a).*(h-a.*ones(sx,sy);Error:Matrix dimensions must agree 也查过资料修改该语句,有的资料说是乘除和幂方要改成点乘点除,点幂方,这个是合理,但是改正后仍然有错,是在无能为力,代码在后面将给出,可供参考。 6.3.4、空间域平滑算法 6.3.4.1、均值滤波 经常用到的噪声有两种,高斯噪声,椒盐噪声,可以通过以下两个函数来实现:y=imnoise(handles.img,'gaussian',p1,p2);%高斯噪声y=imnoise(x,'salt & pepper',p1); %椒盐噪声 均值滤波中可对高斯滤波,也可以对椒盐滤波,设计过程中采用其一种图片进行处理。但两种处理的效果就不同,对高斯噪声处理的效果更加明显均值滤波是一种采取平均灰度值的方法进行滤波,用imnoise获得噪声的图片。这个函数可获得高斯噪声,亦可获得椒盐噪声。在采用函数conv2进行均值处理,处理前后的图片比较如下: 6.3.4.2、中值滤波 中值滤波同均值滤波的程序差不多,只是进行滤波的原理不同,则采用不同的函数进行代替,用以下函数可进行中值滤波处理:I = imnoise(handles.image,'salt & pepper', 0.02);imshow(I);j=medfilt2(I);前后图片效果如下: 6.3.4.3、边界保持滤波 原理不同,采用knn函数是处理边界保持滤波的,程序代码的形式跟前两种滤波差不多:I = imnoise(handles.image,'salt & pepper', 0.02); imshow(I);j=knn2(I); 前后图片效果如下:6.4、 图像分割: 图象分割是按照某些特性(如灰度级,频谱,颜色,纹理等)将图象划分成一些区域,在这些区域内其特性是相同的或者说是均匀的,两个相邻区域彼此特性则是不同的,其间存在着边缘或边界 6.4.1、均匀性度量法当图像被分为目标物和背景两个类时,属于同一类别的像素值分布方差最小,也即具有均匀性。给定一初始阈值Th=Th0,将图像分为C1和C2两类 分别计算两类中的方差分别计算两类在图像中的分布概率选择最佳阈值 Th=Th*, 将图像分为C1和C2两类,满足均匀性度量方法的处理结果: 6.4.2、类间最大距离法.采用最佳阈值分割后,两类之间的差异最大,且差异采用两类中心与阈值间的距离差度量给定一初始阈值Th=Th0,将图像分为C1和C2两类 分别计算两类的灰度均值计算相对距离度量值 s选择最佳阈值 Th=Th*, 将图像分为C1和C2两类 图片效果:6.4.3、局部阈值法不均匀照射,物体背景对比明显, 不能只使用一门限灰度级校正。图象分成小块,选择局部门限局部阈值法的处理前后结果:6.5、 颜色空间转化 6.5.1、RGB转HSV色彩空间相互转化:其中有很多种色彩空间,这里只介绍两种转换关系:RGB转HSV,图像处理中有专门的函数将其进行转化,即rgb2hvs函数转化图像前后对比如下:6.5.2、RGB转HIS 首先获取图像的 RGB 3个通道R=w(:,:,1);G=w(:,:,2);B=w(:,:,3);观察HSI通道图像因系统没有rgb2hsi函数,只有rgb2hsv函数,可自己编写程序实现算法,用一个循环处理,分别得到HIS的色度,饱和度以及强度图,代码在后面实现图形处理效果如下:6.6、 其他图像处理功能 6.6.1、锐化 6.6.2、傅里叶这两个是附加的图像处理功能,在次不做过多的说明,可向大家看看处理图像结果进行对比一下,看看效果,可在后面附上代码锐化.四种傅里叶变参考文献【1】 郑阿奇,曹戈,赵阳.MATLAB实用教程M.北京:电子工业出版社【2】 精通matlab61.5_(北航_张志涌).pdf【3】MATLAB 编程 (第二版) MATLAB Programming for Engineers Second Edition)Stephen J. Chapman 著 邢树军 郑碧波 译【4】相关的MATLAB图像处理函数五、 附录function varargout = two(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', two_OpeningFcn, . 'gui_OutputFcn', two_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before erzhi is made visible.function two_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.%接下来是菜单的程序function file_Callback(hObject, eventdata, handles)%文件打开程序function open_Callback(hObject, eventdata, handles) name,path=uigetfile('*.bmp','载入图像');if isequal(name,0)|isequal(path,0) errordlg('没有选中文件','出错'); return;else x=imread(path,name); axes(handles.axes1); imshow(x); handles.img=x; handles.noise_img=x; guidata(hObject,handles)endfunction save_Callback(hObject, eventdata, handles)%文件保存 filename,pathname = uiputfile('*.bmp','图片保存为');if isequal(filename,pathname,0,0) errordlg('没有保存','出错'); return;elsefile=strcat(pathname,filename);(handles.axes2);i=getimage(gca);imwrite(i,file);endfunction exit_Callback(hObject, eventdata, handles)clc;close all;close(gcf);% 直方图function zhf_Callback(hObject, eventdata, handles)function red_Callback(hObject, eventdata, handles)% R直方图data (see GUIDATA)set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imhist(handles.image(:,:,1);x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,'xtick',0:50:255); -function green_Callback(hObject, eventdata, handles)% G直方图set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imhist(handles.image(:,:,2); x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,'xtick',0:50:255); function blue_Callback(hObject, eventdata, handles)% B直方图set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);%if isrgb(handles.img)x=imhist(handles.image(:,:,3); x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,'xtick',0:50:255);%图像增强处理function zhf_Callback(hObject, eventdata, handles)function balance_Callback(hObject, eventdata, handles)%直方图均衡化set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);if isrgb(handles.image) a=histeq(handles.image(:,:,1); b=histeq(handles.image(:,:,2); c=histeq(handles.image(:,:,3); k(:,:,1)=a; k(:,:,2)=b; k(:,:,3)=c; imshow(k);else h=histeq(handles.image); imshow(h);endfunction zq_Callback(hObject, eventdata, handles)function duibidu_Callback(hObject, eventdata, handles)%对比度展宽set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);h=im2double(handles.image);sx,sy=size(h);nw=h.0.3;subplot(2,2,1);imshow(h); title('original');subplot(2,2,2);imshow(nw);title('r=0.4');subplot(2,2,3);imshow(h.0.5);title('r=0.7');subplot(2,2,4);imshow(h.2);title('r=3');function dongtai_Callback(hObject, eventdata, handles)%动态调整范围set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);h=im2double(handles.image);a=0.01;b=0.35;sx,sy=size(h);w,n=find(h(:)<=a);h(n)=0;w1,n1=find(h(:)>b);h(n1)=1;nw=1./(b-a).*(h-a.*ones(sx,sy);subplot(1,2,1);imshow(h);subplot(1,2,2);imshow(nw);%空间域平滑算法function pinghua_Callback(hObject, eventdata, handles)function junzhi_Callback(hObject, eventdata, handles)%均值滤波h=1 1 1;1 1 1;1 1 1;h=h/9;set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imnoise(handles.image,'gaussian',0,0.02);imshow(x);j=conv2(x,h);figure,imshow(j,);function zhongzhi_Callback(hObject, eventdata, handles)%中值滤波set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);% I=imnoise(I,'gaussian',0,0.02);I = imnoise(handles.image,'salt & pepper', 0.02);% j=medfilt2(I);figure,imshow(j,);function bianjie_Callback(hObject, eventdata, handles)% 边界保持滤波set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);% I=imnoise(I,'gaussian',0,0.02);I = imnoise(handles.image,'salt & pepper', 0.02); imshow(I);j=knn2(I);figure,imshow(j,);function junyunxing_Callback(hObject, eventdata, handles)%均与性度量法set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);v=double(handles.image);sx,sy=size(v);num=sx*sy;t=;for th=6:254r1,c1=find(v(:)>=th);r2,c2=find(v(:)<th);if(length(r1)=0 & length(c1)=0 )L1=v(r1); else L1=;endif(length(r2)=0 & length(c2)=0 )L2=v(r2);else L2=;endm1=mean(L1(:); m2=mean(L2(:);Var1=sum(L1(:)-m1).2);Var2=sum(L2(:)-m2).2);Var1=var(L1(:);Var2=var(L2(:);P1=length(L1(:)/num;P2=length(L2(:)/num;t=t,P1*Var1+P2*Var2;endc,l=min(t); B=v;r1,c1=find(v(:)>=l+5);r2,c2=find(v(:)<l+5);B(r1)=255; B(r2)=0;imshow(uint8(B);function jubuyuzhi_Callback(hObject, eventdata, handles) %局部阈值法set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);v=rgb2gray(handles.image);imshow(v); R=zeros(size(v);H = FSPECIAL('gaussian',9,2.4);v = imfilter(v,H); t=graythresh(v); t=t*255;c,l=find( v(:)>t);R(c)=1;x,y=size(R); q=R;for i=10:x-10 for j=10:y-10 if R(i,j)=0 t=R(i-1,j-1),R(i-1,j),R(i-1,j+1),R(i,j-1),R(i,j+1),R(i+1,j-1),R(i+1,j),R(i+1,j+1); if sum(t)=0 q(i,j)=1; end end endendfigure, imshow(q,);function leijianzuidajuli_Callback(hObject, eventdata, handles) %类间最大法set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);X=rgb2gray(handles.image);r,c=size(X);figure (1)subplot(1,2,1)imshow(X)R=zeros(1,256);for i=50:150 Xi0=X0<=i; N0=sum(sum(Xi0); Xm0=X0(Xi0); u0=sum(Xm0)/N0; Xi1=X0>i; N1=sum(sum(Xi1); Xm1=X0(Xi1); u1=sum(Xm1)/N1; R(i+1)=(u1-i)*(i-u0)/(u1-u0)2);endTh=find(R=max(R(51:151)-1X2=zeros(r,c);for i=1:r for j=1:c X2(i,j)=X0(i,j)>Th; endendsubplot(2,2,2)imshow(X2)%颜色空间转化function hsv_Callback(hObject, eventdata, handles)%RGB转HSVset(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);hv=rgb2hsv(handles.image); subplot(2,2,1);imshow(hv); title('RGBHSV');%RGB=reshape(ones(64,1)*reshape(jet(64),1,192),64,64,3); H=hv(:,:,1); S=hv(:,:,2); V=hv(:,:,3); subplot(2,2,2);imshow(H) ; title('§§');subplot(2,2,3);imshow(S); title('§§');subplot(2,2,4);imshow(V);title('§§');function HIS_Callback(hObject, eventdata, handles)%RGB转HSIset(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);W=im2double(handles.image);%获得double型的图形矩阵m,n,q=size(W);R=W(:,:,1);G=W(:,:,2);B=W(:,:,3);% 改变通道来观察图像H=zeros(m,n);S=H;for i1=1:m for i2=1:n numerator=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2); denominator=sqrt(R(i1,i2)-G(i1,i2)2+(R(i1,i2)-B(i1,i2)*(G(i1,i2)-B(i1,i2); theta=acos(numerator/denominator)*180/pi; if(B(i1,i2)<=G(i1,i2) H(i1,i2)=theta; else H(i1,i2)=360-theta; end min1=min(R(i1,i2),G(i1,i2); min1=min(B(i1,i2),min1); S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2)*min1; endendI=(R+G+B)/3;figure,subplot(1,3,1),imshow(H,),title('色度图H');set(gcf,'outerposition',get(0,'screensize');set(gcf,'NumberTitle','off','Name','HSI通道图像');subplot(1,2,2),imshow(S),title('饱和度图S');subplot(1,2,3),imshow(I),title('强度图I');%其他图像处理function fly_Callback(hObject, eventdata, handles) %傅里叶变化set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);m,n=size(handles.image);d=zeros(m,n); d(60:100,60:100)=1;w=fft2(d);w1=fftshift(w);sx,sy=size(d);subplot(2,2,1); imshow(d);subplot(2,2,2); imshow(abs(w1);for i=1:sx t= fft(d(i,:); len=length(t)/2; F1(i,:)=(t(len+1:end),t(1:len);endfor i=1:sy F2=fft(F1(:,i); len=length(F2)/2; F(:,i)=(F2(len+1:end);F2(1:len);endsubplot(2,2,3);imshow(abs(F1);subplot(2,2,4);imshow(abs(F);function ruihua_Callback(hObject, eventdata, handles)%锐化k=2;h1=-1 0 1;-k 0 k;-1 0 1;h2=1 k 1;0 0 0;-1 -k -1;set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);I=rgb2gray(handles.image);subplot(121);imshow(I);J1(:,:)=conv2(I(:,:),h1);J2(:,:)=conv2(I(:,:),h2);J=abs(J1)+abs(J2);subplot(122);imshow(J),0 255);

    注意事项

    本文(数字图像处理课程设计 matlab12页word.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开