




免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、 课程设计目的.3二、 课程设计要求.3三、 课程设计的内容.3四、 题目分析.3五、 总体设计.4六、 具体设计.56.1、 文件.56.1.1、打开.56.1.2、保存.56.1.3、退出.56.2、编辑.56.2.1、灰度.56.2.2、亮度.66.2.3、截图.76.2.4、缩放.76.3、旋转.96.3.1、上下翻转.96.3.2、左右翻转.96.3.3任意角度翻转.96.4、噪声.106.5、滤波.106.6、直方图统计116.7、频谱分析.126.7.1、频谱图 .126.7.2、通过高通滤波器 .126.7.3、通过低通滤波器. .136.8、灰度图像处理 . .146.8.1、二值图像. .146.8.2、创建索引图像 .146.9、颜色模型转换. .146.10、操作界面设计.15七、 程序调试及结果分析.15八、 心得体会.16九、 参考文献.17十、 附录.18图像灰度修正算法实现及应用前言数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。关键词:MATLAB,数字图像处理一、设计任务及要求1.1课程设计目的综合运用MATLAB工具箱实现图像处理的GUI程序设计。1.2课程设计要求1、生成衣服教案且动态范围小的图像;2、采用直方图均衡法修正灰度范围;3、比较修正前后图像变化;4、总结二、课程设计的内容2.1 学习MATLAB程序设计利用MATLAB图像处理工具箱,设计和实现自己的图像。按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 以下几点是程序必须实现的功能。1)图像的读取和保存。2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。题目分析信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有很多的功能需要用到。(1)、将一个RGB图像转换为灰度图像。(2)、可以对图像做各种变换。(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型。2.2 总体设计1、 先采集图像后进行编辑2、 直方图修正3、 利用matlab工具观察图像修正4、 安装调试三、 具体设计3.1 文件3.1.1、打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。3.1.2、保存同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。3.1.3、退出退出比较简单,程序如下所示:clc;close all;close(gcf); 3.2编辑3.2.1、灰度由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y);但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为:y=rgb2gray(handles.img); imshow(y);这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img); imshow(y);else msgbox(这已经是灰度图像,转换失败);end如果原图是RGB,执行该操作的结果如下图:如果原图本身已经是灰度图像了,执行该操作弹出如 右图所示的提示对话框3.2.2、亮度用imadjust函数,其调用格式如下: g=imadust(f,low_in high_in,low_out high_out),gamma)gamma 表示映射性质,默认值是1 表示线性映射。由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给low_in high_in,low_out high_out,gamma这五个参数,如下一组命令建立了如图所示的输入对话框:prompt=输入参数1,输入参数2,输入gamma;defans=0 0.7,0 1,1;p=inputdlg(prompt,输入参数,1,defans);但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。 0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图:亮度调整的tag名为ld,取值范围01,gamma值的tag名为gamma,取值范围为05。获取滑动条参数的程序如下:handles.beta=get(handles.ld,value);handles.gm=get(handles.gamma,value);执行该操作,调节滑动条到上图所示位置,结果如下图:3.2.3、截图在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。Imcrop函数的调用格式如下: y=imcrop(handles.img);不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:3.2.4、缩放在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下:Bimresize(A,m,method)其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置: 虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。 缩小后的结果如下: 3.3 直方图统计直方图均衡化的基本思想是把原始图像的灰度直方图从比较集中的某个灰度区间变换为在全部灰度范围内均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。如果用t、 s 分别表示目标图像和原始图像上的像素点( x, y) ,均衡化处理函数可表示为t= EH( s) , 这里函数EH 需要满足两个条件:EH( s)在0 s L21 范围内是一个单值递增函数, 这是为了保证原图各灰度级在变换后灰度的排列次序保持不变;对0 s L 21 有0 EH( s) L 21, 这是为了保证变换前后图像灰度值的动态范围保持一致性。可以证明累积分布函数( cumulative dist ributiofunction, CDF)满足上述两个条件并能将 s 的分布转换为t 的均匀分布。此时有:tk= EH( sk) = E ( ni/ n) = E ps( si )其中0 sk 1; k= 0, 1, 2, , , L21。上述求和区间为0 到k。根据上式可以由原图像的各像素灰度值直接求得直方图均衡化后各像素的灰度值。在实际中还需对t k取整以满足数字图像的要求。直观地讲, 直方图均衡化导致图像的对比度增加。但值得注意的是,均衡化处理后的图像只能是近似均匀分布。均衡化图像的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了,因此,原来灰度不同的像素经处理后可能变得相同,形成了一片相同灰度的区域, 各区域之间有了明显的边界,从而出现了伪轮廓。 下面用imhist函数对图像数据进行直方图统计,x=imhist(handles.img(:,:,1); bar(horz,x); 其中,x矩阵的数据是0255灰度值的统计个数,如果直接对x矩阵数据进行图形图显示,由于有256个数据,在坐标系中就会很密集,为了更清楚的显示条形图,所以在程序设计时,把x数据进行部分提取,x1=x(1:10:256);horz=1:10:256;bar(horz,x1);除了显示数据的直方图统计外,还可以对图像进行均衡处理,所用到的函数是histeq,这两个函数同样只使用于二维数据,所以也要对二维和三维数据分开处理。 直方图显示和均衡后的图像分别如下图所示 3.4 灰度图像处理3.4.1、二值图像 用j=im2bw(x);来对灰度图像到二值图像的转换。转换结果为:3.4.2、创建索引图像用X = grayslice(I,n)函数来实现,转换后得到的图像为:3.5 操作界面设计为了使整个操作界面更加的美观,对背景颜色和字体颜色进行设置。四、 程序调试及结果分析在程序设计过程中,碰到很多的问题。a) 一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理呢?这主要是对MATLAB函数的不够清楚,用到的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次。比如,彩色图像的滤波处理,直方图均衡等。b) 同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就会出错?这是由于设计程序时,本身程序是有针对性的,有些程序只能对灰度图像有效,有些对彩色图像有效,但是用户并不清楚这些,所以在设计的过程中就要考虑全面,要分开设计。在本次课程设计中,我均对每个程序的开始时,用if isrgb(x)进行判断。c) 本次设计存在一个比较大的问题,就是每次操作都是独立的。我认为应该是整个程序设计过程中对变量的设置没有做好,应该每次操作后,把处理后的数据保存在一个全局变量,这样还要对处理后的数据进行在处理时,只要把这个全局变量作为原始数据带入就可。五、 心得体会1、在这次课程设计过程中,感触很深,由于对MATLAB图像处理的函数不熟悉,导致自己走了很多的弯路。2、通过本次课程设计,使自己对MATLAB设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。3、在实际操作中,可以根据原始图像的特征和用户的不同需要选择不同的灰度修正方法;一种方法修正之后的效果不理想, 还可以多种方法结合使用; 也许将原始图像作为一个整体处理效果始终不理想,还可以将原始图像分割成若干子图像(模板) ,然后对每一个模板根据其不同的灰度特征选择不同的修正方法。总而言之, 灰度修正的目的是获得视觉效果更好或更有用的图像,我们称其为图像质量。然而关于图像质量有其特殊性,它没有通用、 固定或公认的标准,全凭观察者的主观判断。因此图像质量的评价不可能用计算机实现,经过处理之后的目标图像只有交由用户自己作为最终的评判者。六、 附录19function 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)end-function 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);end-function exit_Callback(hObject, eventdata, handles)clc;close all;close(gcf);-%编辑菜单的程序-function edit_Callback(hObject, eventdata, handles)-function huidu_Callback(hObject, eventdata, handles)%灰度处理axes(handles.axes2);if isrgb(handles.img) y=rgb2gray(handles.img); %RGBimshow(y);else msgbox(这已经是灰度图像,转换失败);end -function liangdu_Callback(hObject, eventdata, handles)%亮度处理 prompt=输入参数1,输入参数2,输入gamma; defans=0 0.7,0 1,1; p=inputdlg(prompt,输入参数,1,defans); p1=str2num(p1); p2=str2num(p2); p3=str2num(p3); gamma=p3; x=(handles.img); y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y);-function jietu_Callback(hObject, eventdata, handles)%截图set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);y=imcrop(handles.img);imshow(y); handles.Timage=y;-function fangda_Callback(hObject, eventdata, handles)-function lingjz_Callback(hObject, eventdata, handles)%邻近插值放大axes(handles.axes2);prompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,nearest); %最近邻插值法放大imshow(y);-function shuangxianfa_Callback(hObject, eventdata, handles)%双线放大axes(handles.axes2);prompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,bilinear); %最近邻插值法放大imshow(y); -function shuangsanci_Callback(hObject, eventdata, handles)%双三次放大axes(handles.axes2);prompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,bicubic); imshow(y);-function suoxiao_Callback(hObject, eventdata, handles)%邻近插值缩小 axes(handles.axes2); prompt=输入放大倍数:; defans=0.2; p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,nearest); %最近邻插值法缩小 imshow(y);-function shuangxian_Callback(hObject, eventdata, handles)%双线性缩小axes(handles.axes2);prompt=输入放大倍数:;defans=0.2;p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,bilinear); %最近邻插值法缩小imshow(y); -function shuangsancisuox_Callback(hObject, eventdata, handles)%双三次缩小axes(handles.axes2);prompt=输入放大倍数:;defans=0.2;p=inputdlg(prompt,输入放大倍数,1,defans);p1=str2num(p1);y=imresize(handles.img,p1,bicubic); imshow(y); -function zhifangtutongji_Callback(hObject, eventdata, handles)-function red_Callback(hObject, eventdata, handles)%R直方图set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);x=imhist(handles.img(:,:,1); %直方图统计x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,xtick,0:50:255);-function gray_Callback(hObject, eventdata, handles)%G直方图set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);if isrgb(handles.img) x=imhist(handles.img(:,:,2); %直方图统计x1=x(1:10:256);horz=1:10:256;bar(horz,x1);set(handles.axes2,xtick,0:50:255);else msgbox(这是灰度图像,旋转失败);end-function blue_Callback(hObject, eventdata, handles)%B直方图set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);if isrgb(handles.img) x=imhist(handles.img(:,:,3); %直方图统计x1=x(1:10:256);horz=1:10:256;bar(horz,x1);%axis(0 255 0 150000);set(handles.axes2,xtick,0:50:255);%set(handles.axes2,ytick,0:2000:15000);else msgbox(这是灰度图像,旋转失败);end-function junheng_Callback(hObject, eventdata, handles)%直方图均衡set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);if isrgb(handles.img) a=histeq(handles.img(:,:,1); b=histeq(handles.img(:,:,2); c=histeq(handles.img(:,:,3); k(:,:,1)=a; k(:,:,2)=b; k(:,:,3)=c; imshow(k);elseh=histeq(handles.img); %直方图均衡imshow(h);end-%接下来这段程序是灰度图像处理程序-function huiduchuli_Callback(hObject, eventdata, handles)-function erzhituxiang_Callback(hObject, eventdata, handles)%二值图像axes(handles.axes2);x=(handles.img);if isrgb(x) msgbox(这是彩色图像,不能转换为二值图像,转换失败);elsej=im2bw(x);imshow(j);end-function tuxiangfushi_Callback(hObject, eventdata, handles)%图像腐蚀axes(handles.axes2);x=(handles.img);if isrgb(x) msgbox(这是彩色图像,不能进行图像腐蚀,失败);elsej=im2bw(x);se=eye(5);bw=bwmorph(j,erode);imshow(bw);end-function suoyintuxiang_Callback(hObject, eventdata, handles)%创建索引图像axes(handles.axes2);x=(handles.img);if isrgb(x) msgbox(这是彩色图像,不能创建索引图像,创建失败);elsey=grayslice(x,16);axes(handles.axes2);imshow(y,jet(16);end-%这段是颜色模型的转换-function ysmx_Callback(hObject, eventdata, handles)-function hsv_Callback(hObject, eventdata, handles)%RGB图像转HSVaxes(handles.axes2);x=(handles.img);if isrgb(x) HSV=rgb2hsv(x); imshow(HSV);else msgbox(这是灰度图像,不能转换,转换失败);end-function ntsc_Callback(hObject, eventdata, handles)%RGB转NTSCaxes(handles.axes2);x=(handles.img);if isrgb(x)ntsc=rgb2ntsc(x);imshow(ntsc);else msgbox(这是灰度图像,不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气焊工中级试题及答案
- 交通三控试题及答案
- 傅雷家书考试题及答案
- 2025年国家特种设备安全管理人员(A证)考试练习题库(含答案)
- 医养结合人才培训班理论考试题(含答案)
- 医疗机构消毒技术规范培训试题及答案
- 2025心肺复苏理论考试试题(含答案)
- 2025年安全知识竞赛题库及答案
- 2024年农村农业《果树生产技术》知识试题与答案
- 北京培训知识课件
- 《2025游戏账号交易合同书》
- 2025年事业单位会计岗考试题库
- 2025年秋季开学教师大会上教学副校长讲话:回到课堂的原点走向教学的深处
- 2025事业单位招聘考试时事政治考试题库及答案(考点梳理)
- 2025年少先队知识竞赛试题库附答案
- GB/T 9775-2025纸面石膏板
- 防蚊培训课件
- 弥漫性大B细胞淋巴瘤病例讨论
- 2025年医院血透室人员培训工作计划
- 2025年公务员考试时政热点必做题(附答案)
- 护理烫伤不良事件分析及整改措施
评论
0/150
提交评论