




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字图像处理课程设计文档 目录一、 课程设计目的.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.
2、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,也
3、可为C、C+、java等,具体自选。各组长有责任督促组员完成任务并提交报告;2、 时间为4月28日6月28日为其两个月的业余时间。三、课程设计的内容学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 整个系统要完成的基本功能大致如下:1、 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;2、 数字图像的统计信息功能:直方图的统计及绘制;3、 数字图像的增强处理功能:
4、(1) 直方图的均衡化(2) 对比度展宽(3) 动态范围调整(4) 空间域平滑算法的各种算法(如均值滤波、中值滤波、边界保持的滤波方法等) 4、数字图像由RGB转换成HIS空间并分别显示其分量图。 5、数字图像分割功能:可采用两种以上方法进行图像分割。总体设计 由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示: 四、 具体设计6.1、 文件6.1.1、打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于
5、这个GUI程序的操作对象是图像文件。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“ name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.image。6.1.2、保存同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,
6、把数据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直方图像,把
7、三维图像降为二维,且是当最后一个参数为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_
8、Callback回退函数中实现直方图均衡化 每个回退函数中都要获取图片,上面的RGB直方图也一样需获取打开的图片。打开图片的为以下程序代码: set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2); 直方图均衡化是判断是否为灰度图。用函数isrgb了来判断,不是灰度则将其转化,否则就直接用函数:histeq(handles.image)% handles.image是获取的图片来直方图均衡化处理图片图片前后效果如下: 6.3.2、 对比度展宽对图像的对比度展宽刻可自己编写算法来处理,同样的,处
9、理结果如图: 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,'g
10、aussian',p1,p2);%高斯噪声y=imnoise(x,'salt & pepper',p1); %椒盐噪声 均值滤波中可对高斯滤波,也可以对椒盐滤波,设计过程中采用其一种图片进行处理。但两种处理的效果就不同,对高斯噪声处理的效果更加明显均值滤波是一种采取平均灰度值的方法进行滤波,用imnoise获得噪声的图片。这个函数可获得高斯噪声,亦可获得椒盐噪声。在采用函数conv2进行均值处理,处理前后的图片比较如下: 6.3.4.2、中值滤波 中值滤波同均值滤波的程序差不多,只是进行滤波的原理不同,则采用不同的函数进行代替,用以下函数可进行中值滤波处理: I
11、 = 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、 图像分割: 图象分割是按照某些特性(如灰度级,频谱,颜色,纹理等)将图象划分成一些区域,在这些区域内其特性
12、是相同的或者说是均匀的,两个相邻区域彼此特性则是不同的,其间存在着边缘或边界 6.4.1、均匀性度量法当图像被分为目标物和背景两个类时,属于同一类别的像素值分布方差最小,也即具有均匀性。给定一初始阈值Th=Th0,将图像分为C1和C2两类 分别计算两类中的方差分别计算两类在图像中的分布概率选择最佳阈值 Th=Th*, 将图像分为C1和C2两类,满足均匀性度量方法的处理结果: 6.4.2、类间最大距离法.采用最佳阈值分割后,两类之间的差异最大,且差异采用两类中心与阈值间的距离差度量给定一初始阈值Th=Th0,将图像分为C1和C2两类 分别计算两类的灰度均值计算相对距离度量值 s选择最佳阈值 Th
13、=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函数,可自己编
14、写程序实现算法,用一个循环处理,分别得到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. Ch
15、apman 著 邢树军 郑碧波 译【4】相关的MATLAB图像处理函数五、 附录17function 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', tw
16、o_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
17、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=uige
18、tfile('*.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)end-function save_Callback(hObject, eventdata, handles)%文件保存
19、filename,pathname = uiputfile('*.bmp','图片保存为');if isequal(filename,pathname,0,0) errordlg('没有保存','出错'); return;elsefile=strcat(pathname,filename);(handles.axes2);i=getimage(gca);imwrite(i,file);end-function exit_Callback(hObject, eventdata, handles)clc;close all;close
20、(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
21、.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
22、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(hOb
23、ject, 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(:,:
24、,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(
25、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,'Ha
26、ndleVisibility','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, eventda
27、ta, 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(hOb
28、ject, 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)
29、% 边界保持滤波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(han
30、dles.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=
31、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(hObjec
32、t, 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-
33、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');axe
34、s(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=zer
35、os(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
36、39;);%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,
37、 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 mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆2025年重庆市渝北区卫生事业单位招聘16人笔试历年参考题库附带答案详解
- 苏州2025年江苏苏州张家港市招聘事业编制教师231人笔试历年参考题库附带答案详解
- 潍坊2025年山东潍坊市市直事业单位招聘初级综合类岗位人员87人笔试历年参考题库附带答案详解
- 湖北2025年湖北大学面向社会专项招聘2人笔试历年参考题库附带答案详解
- 2025年度二级建造师《公路工程管理与实务》全真模拟卷
- 心内科护士工作总结及计划
- 药品退货管理的操作流程
- 《昆明的雨》课件
- 2025年小学语文毕业升学考试全真模拟卷(基础夯实版)-句子衔接能力提升
- 2025年小提琴专业水平测试卷:小提琴演奏技巧与音乐演奏技巧发展试题
- 2024年江西建设职业技术学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 16J914-1 公用建筑卫生间
- 教学课件:《新时代新征程》
- 隧道工程现场施工质量管理亮点
- 脑动静脉畸形血管内介入诊治PPT课件
- 医院医患关系培训课件:护患沟通技巧
- 培优的目的及作用
- 《汉字与中国文化》PPT课件
- DCDC电路工作原理详解及TPS54331使用详解
- 塑胶及喷油件检验标准
- 危险品押运资格考试题危险品押运证考试题.doc
评论
0/150
提交评论