《MATLAB图像处理界面设计(共32页).doc》由会员分享,可在线阅读,更多相关《MATLAB图像处理界面设计(共32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第1章 绪论1.1 课题研究目的及意义数字图像处理(Digital Image Processing),就是利用数字计算机或者其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。应用MATLAB友好的界面和丰富、实用、高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像信号处理的基本方法,进而能够解决相关的工程和科研中的问题。1.2 课题分析
2、数字图像处理技术在各个行业得到广泛的应用。其交互式的图形界面是操作者方便使用这些技术的途径。本题目将编制一个简易的图形界面读取各种格式的原始图像数据,并对它们自动分析和处理,得到所需要的有用信息,并把相关的信息显示出来,以便于工作人员研究分析。本文是基于MATLAB图形用户界面进行数字图像处理软件包的设计,详细介绍了图形用户界面的功能及使用方法,所设计软件包中包括图像处理技术的多个方面,并用MATLAB的图像处理工具箱进行了算法的实现。1.3 MATLAB基本知识介绍1.3.1 MATLAB的概述MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWor
3、ks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使MATLAB广
4、受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.1.3.2 MATLAB主要功能它是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用它,可以较使用传统的编程语言,如C、C+等,更快的解决技术计算问题。高级语言可用于技术计算;开发环境可对代码、文件和数据进行管理;数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等;二维和三维图形函数可用于可视化数据;各种工具可用于构建自定义的图形用户界面;各种函数可将基于matlab的算法与外部应用程序和语言;其应
5、用范围非常广,包括信号和图像处理、通迅、控制系统设计、测试和测量等众多应用领域。1.3.3 MATLAB语言的特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要
6、特点。(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。(2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。 (3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。(4)程序限制不严格,程序设计自由度大。例如,在MATL
7、AB里,用户无需对矩阵预定义就可使用。(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。(6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。(8)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功
8、能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox, signl processing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。(9)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以
9、及加入自己的文件构成新的工具箱。1.3.4 MATLAB在图像处理中的应用图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。 (1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp、tif、tiffpcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image(
10、)、imshow()等等。 (2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算 ,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。(3) 图像变换。MATLAB 提供了一维和二维离散傅立叶变换(DFT) 、快速傅立叶变换(FFT) 、离散余弦变换 (DCT) 及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。(4) 图像的分析和增强。针对图像的统计计算MATLAB 提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。(5) 图像的数学形态学处理。针对二值图像,MATLAB 提供了数学形
11、态学运算函数;腐蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开 (Open)、闭(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等丰富的数学形态学运算。以上所提到的 MATLAB在图像中的应用都是由相应的MATLAB函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可。具体的用法可参考MATLAB丰富的帮助文档。图像边缘对图像识别和计算机分析十分有用,在MATLAB中,函数 edge()用于灰度图像边缘的提取,它支持六种不同的边缘提取方法,即Sobel方法、Prewitt 方法、Robert 方法,Laplacian2Gaussian方法、过零点
12、方法和Canny方法。第2章 整体设计2.1 设计思路利用matlab的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能:1)图像的读取和保存。2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。4)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。5)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存。6)能对图像加入各种噪声,并通过几
13、种滤波算法实现去噪并显示结果。2.2 整体界面图2.2.1 总体设计界面布局图2.2.2 菜单栏的设计图2.2.3 功能切换选择组显示区域:左侧显示原图,右侧显示操作的图片操作区域:上方菜单栏:包括文件、编辑、图像编辑等功能左侧快捷操作:包含一些常用操作,还原、旋转、裁剪、撤销下方功能切换选择组:包含一些图片处理的常用操作,噪声、滤除噪声、频谱分析等。 第3章 具体设计与功能的实现3.1 文件3.1.1 打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文
14、件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。程序如下所示:filename,pathname=uigetfile(*.jpg;*.bmp;*.tif;*.*,载入图像);if isequal(f
15、ilename,0)|isequal(pathname,0) errordlg(没有选中文件,载入图片失败); return;else file=pathname,filename; global S %设置一个全局变量S,保存初始图像路径,以便之后的还原操作 S=file; x=imread(file); set(handles.axes1,HandleVisibility,ON); axes(handles.axes1); imshow(x); set(handles.axes1,HandleVisibility,OFF); axes(handles.axes2); imshow(x);
16、handles.img=x; guidata(hObject,handles);End (a) (b)图3.1.1 (a)(b)载入新图像3.1.2 保存同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。程序如下所示:sfilename ,sfilepath=uiputfile(*.jpg;*.bmp;*.tif;*.*,保存图像文件,untitled.jpg); if isequal(sfilename,sfilepath,0,0) sfile
17、fullname=sfilepath ,sfilename; imwrite(handles.img,sfilefullname); else msgbox(取消保存,保存失败); End图3.1.2 图像的保存3.1.3 退出退出程序如下所示: close(gcf);3.2 编辑3.2.1 图片的缩放图3.2.1 编辑菜单下的缩放功能 在MATLAB中,用函数imresize来实现对图像的放大或缩小。该函数的调用格式如下: Bimresize(A,m,method) 其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bi
18、cubic”(双三次插值),缺省值为“nearest”。 Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);图3.2.2 输入缩放倍数图3.2.3 放大后的图片图3.2.5缩小后的图片图3.2.6 各文件的大小图片上并不能够看出放大缩小后图片的明显变化,从文件大小可以看到明显差别,缩放的程序如下:% 最邻近插值function Untitled_20_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=输入缩放倍数:;defans=2
19、;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imresize(handles.img,p1,nearest); %用最邻近插值法实现图片的缩放 imshow(f);handles.img=f;guidata(hObject,handles);% 双线性插值function Untitled_21_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=输入缩放倍数:;defans=1;p=inputdlg(prompt,inp
20、ut,1,defans);p1=str2num(p1);f=imresize(handles.img,p1,bilinear); %用双线性插值法实现图片的缩小 imshow(f);handles.img=f;guidata(hObject,handles);3.2.2 图片的翻转图3.2.1 编辑菜单下的翻转功能 函数flipud是实现一个二维矩阵的上下翻转,如a=1 2;3 4,经过该函数处理后,原矩阵变为3 4;1 2;所以利用该函数也可以对图像进行上下翻转处理。但由于该函数针对二维数据的处理,所以在翻转前需要先对图片进行灰度处理。3.2.2.1 左右翻转图3.2.2.1.1 图像的左右
21、翻转3.2.2.2 上下翻转图3.2.2.1.1 图像的上下翻转程序如下所示:% 左右翻转function Untitled_14_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;f=fliplr(handles.img);imshow(f);handles.img=f;guidata(hObject,handles);%上下翻转function Untitled_15_Callback(hObject, eventdata, handles)global Taxes(handles.axe
22、s2);T=getimage;f=flipud(handles.img);imshow(f);handles.img=f;guidata(hObject,handles);3.3 图像 图像菜单包括灰度处理、亮度调整和对比度调整。图3.3.1 图像菜单 3.3.1 灰度 可利用rgb2gray(X)函数对其他图像进行灰度图像的转化。效果如下图所示:图3.3.1.1 图片的灰度处理程序如下所示:function Untitled_18_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;x=rgb
23、2gray(handles.img); %灰度处理imshow(x);handles.img=x;guidata(hObject,handles);3.3.2 调整3.3.2.1亮度 亮度的调整分为增强和减弱,函数调用格式分别为:f=immultiply(handles.img,p1); f=imdivide(handles.img,p1); 亮度增强操作:图3.3.2.1.1输入亮度增强倍数图3.3.2.1.1亮度增强效果亮度减弱操作:图3.3.2.1.1输入亮度减弱倍数 图3.3.2.1.1亮度减弱效果 %亮度增强global Taxes(handles.axes2);T=getimage
24、;prompt=增强倍数;defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=immultiply(handles.img,p1); imshow(f);handles.img=f;guidata(hObject,handles);% 亮度减弱function Untitled_23_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=减弱倍数;defans=1;p=inputdlg(prompt,input,1,
25、defans);p1=str2num(p1);f=imdivide(handles.img,p1); imshow(f);handles.img=f;guidata(hObject,handles);3.3.2.2 对比度对比度调整的函数调用格式为:y=imadjust(handles.img, , ,p1);输入的值大于一则增强对比度,小于一则减小对比度图3.3.2.2.1 输入调整倍数图3.3.2.2.2 图像对比度的增强和减弱(左一为原图)其程序如下所示:%对比度的调整function Untitled_19_Callback(hObject, eventdata, handles)ax
26、es(handles.axes2);T=getimage;prompt=输入倍数;defans=1;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);y=imadjust(handles.img, , ,p1);imshow(y);handles.img=y;guidata(hObject,handles);3.4 快捷操作 快捷操作栏在界面的左侧,包含还原、旋转、裁剪(截图)和撤销。3.4.1 还原%还原function pushbutton1_Callback(hObject, eventdata, handles)global Saxes(
27、handles.axes2);y=imread(S);f=imshow(y);handles.img=y;guidata(hObject,handles); 图3.4.1 快捷操作3.4.2 旋转 用函数imrotate来实现对图像的插值旋转。 该函数的调用格式如下:Bimrotate(A,angle,method,crop) 其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。图3.4.2.1 输入旋转角度图3.4.2.2 将图像旋转30度程序如下所示:%用双线性插值法进行图像的任意角度的旋转f
28、unction pushbutton3_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;prompt=Angle:;defans=0;p=inputdlg(prompt,input,1,defans);p1=str2num(p1);f=imrotate(handles.img,p1,bilinear,crop); %用双线性插值法进行旋转imshow(f);handles.img=f;guidata(hObject,handles);3.4.3 裁剪在MATLAB中,用函数imcrop实现对
29、图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。Imcrop函数的调用格式如下: y=imcrop(handles.img);图3.4.3.1 剪切后的图像程序如下所示:%图像的裁剪(截图)function pushbutton2_Callback(hObject, eventdata, handles)global Taxes(handles.axes2);T=getimage;x=imcrop(handles.img); imshow(x);handles.img=x;guidata(hObject,handl
30、es);3.4.4 撤销 撤销上一步的操作。通过另设一个全局变量T保存是上一次操作后的图像。实现程序如下所示:function pushbutton4_Callback(hObject, eventdata, handles)axes(handles.axes2);global Timshow(T); handles.img=T;guidata(hObject,handles); 该程序段只是简单的显示图像的功能,其中全局变量T中储存的是上一步操作处理后的图像信息。在以上的各段功能程序段中可见均有 “T=getimage;”,此句把当前操作前的图像,即上一次操作后的图像信息赋予全局变量T。3.
31、5 噪声 经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现:y=imnoise(handles.img,gaussian,p1,p2);%高斯噪声y=imnoise(x,salt & pepper,p1); %椒盐噪声y=imnoise(handles.img,speckle,p1); %乘性噪声 图3.5.1 噪声叠加噪声后的图像如下图所示: (a) (b)(c) (d)图3.5.2 三种噪声的叠加效果(a)原图(b)叠加椒盐噪声(c)叠加高斯噪声(d)叠加乘性噪声程序如下所示:function radiobutton1_Callback(hObject, ev
32、entdata, handles)axes(handles.axes2);x=(handles.img);y=imnoise(x,salt & pepper,0.04); %叠加0.04的椒盐噪声imshow(y);imwrite(y,salt.jpg);title(添加椒盐噪声)function radiobutton2_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y=imnoise(x,gaussian,0,0.05); %叠加0.05的高斯噪声imshow(y);imwrite(y,ga
33、ussian.jpg);title(添加高斯噪声)function radiobutton3_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y=imnoise(x,speckle,0.05); %叠加0.05的乘性噪声imshow(y);imwrite(y,speckle.jpg);title(添加乘性噪声)3.6 滤除噪声图3.6.1噪声的滤除这里选择三种滤波方法,k=medfilt2(handles.noise_img);%中值滤波k=wiener2(handles.noise_img,5,
34、5);%自适应滤波k=filter2(fspecial(average,3),handles.noise_img)/255;%平滑滤波 此处以椒盐噪声的滤除为例:(a) (b)(c) (d) (e)图3.6.2 三种噪声的滤除方法(a)原图(b)添加椒盐噪声(c)中值滤波(d)线性滤波(e)自适应滤波程序如下所示:%中值滤波function radiobutton4_Callback(hObject, eventdata, handles)axes(handles.axes2);k=medfilt2(handles.img);imshow(k);handles.img=k;guidata(hO
35、bject,handles);%线性滤波function radiobutton5_Callback(hObject, eventdata, handles)axes(handles.axes2);T=getimage;h=1 1 1;1 1 1;1 1 1;H=h/9;i=double(handles.img);k=convn(i,h);imshow(k,);handles.img=k;guidata(hObject,handles);%自适应滤波function radiobutton6_Callback(hObject, eventdata, handles)axes(handles.a
36、xes2);T=getimage;k=wiener2(handles.img,5,5);imshow(k);handles.img=k;guidata(hObject,handles);3.7 频谱分析图3.7.1 频谱分析3.7.1 巴特沃斯低通滤波器经过巴特沃斯低通滤波器处理后的图像如下图所示: 图3.7.1.1 低通滤波器滤波后function radiobutton8_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y1=imnoise(x,salt & pepper);f=double(
37、y1); % 数据类型转换 g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵M,N=size(g); nn=2; % 二阶巴特沃斯低通滤波器d0=50; %截止频率为50m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn); %计算低通滤波器传递函数 result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imsho
38、w(y3); % 显示滤波处理后的图像imwrite(y3,butterdi.jpg);3.7.2 高斯高通滤波器经过高斯高通滤波器处理后的图像如下图所示:图3.7.2.1 高通滤波器滤波后function radiobutton9_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);y1=imnoise(x,gaussian);f=double(y1); % 数据类型转换k=fft2(f); % 傅立叶变换g=fftshift(k); % 转换数据矩阵M,N=size(g);nn=2;d0=25;
39、%截止频率为25m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); % 计算高通滤波器传递函数 if d=d0 h=0; else h=1; end result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3);imwrite(y3,gaussiangao.jpg);3.7.3 频谱图为了得到图像的频谱图,先要对数据进行傅里叶变换,用fft2函数对二维数据进行快速傅里叶变换,同时为了
40、更好的观察频谱图,需要把fft2变换后的数据进行平移,利用fftshift函数,把快速傅里叶变换的DC 组件移到光谱中心。这样图像能量的低频成分将集中到频谱中心,图像上的边缘、线条细节信息等高频成分将分散在图像频谱的边缘。如下图所示:图3.7.3.1 频谱图程序如下所示:function radiobutton11_Callback(hObject, eventdata, handles)axes(handles.axes2);x=(handles.img);J2=fft2(x); %傅立叶变换K2=fftshift(J2); %转换数据矩阵imshow(log(abs(K2),); %显示频
41、谱图3.8 颜色模型转换图3.8.1 颜色模型转换RGB颜色模型到HSV模型的转换程序: axes(handles.axes2);x=(handles.img);if isrgb(x) HSV=rgb2hsv(x); imshow(HSV);else msgbox(灰度图像,不能转换,转换失败);end转换后的结果为:图3.8.2 RGB模式转HSV模式转化为ntsc和ycbcr模型,只要改为相应的函数即可。函数如下: rgb2ntsc(x); % rgb模型转ntsc模型rgb2ycbcr(x); % rgb模型转ycbcr模型图3.8.3 RGB模式转NTSC模式和YCBCR模式3.9 直
42、方图图3.9.1 直方图用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.9.2 直方图均衡图3.9.3 直方图统计程序如下所示:%直方图均衡function radiobutton15_Ca