计算机仿真技术与CAD-基于MATLAB的电气工程(第2版) 课件 第4章MATLAB图形处理_第1页
计算机仿真技术与CAD-基于MATLAB的电气工程(第2版) 课件 第4章MATLAB图形处理_第2页
计算机仿真技术与CAD-基于MATLAB的电气工程(第2版) 课件 第4章MATLAB图形处理_第3页
计算机仿真技术与CAD-基于MATLAB的电气工程(第2版) 课件 第4章MATLAB图形处理_第4页
计算机仿真技术与CAD-基于MATLAB的电气工程(第2版) 课件 第4章MATLAB图形处理_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1本章内容

MATLAB的基本绘图命令;

MATLAB的基本绘图命令;

MATLAB的图形控制命令;

MATLAB的图形修饰命令;

MATLAB的图像、声音与动画处理命令。第4章MATLAB图形处理2MATLAB受到控制界广泛接受的另一个重要原因是因为它提供了十分方便的一系列绘图命令。例如线性坐标、对数坐标、半对数坐标及极坐标等命令,它还允许用户同时打开若干图形窗口,对图形进行标注文字说明等,它使得图形绘制和处理的复杂工作变得简单得令人难以置信。34.1.1二维图形的绘制1.利用函数绘制二维图形在MATLAB中,最基本的二维图形的绘图函数为plot(),其他的绘制函数都是以plot()为基础的,而且调用格式都和该函数类似。因此,在本小节将详细介绍plot()的使用方法。4.1二维图形

在MATLAB中,二维图形和三维图形在绘制方法上有较大的差别。相对而言,绘制二维图形比三维图形要简单。4(1)基本形式

MATLAB最基本的绘图函数为plot()。如果y是一个n维向量,那么plot(y)绘制一个y元素和y元素排列序号1,2,…,n之间关系的线性坐标图。如果y是一个n

m维矩阵,那么plot(y)将同时绘制出每列元素与其排列序号1,2,…,n之间关系的m条曲线。5例如>>y=[00.480.8410.910.60.14];>>plot(y)则显示如图4-1所示曲线。6

如果x和y是两个等长向量,那么plot(x,y)将绘制一条x和y的之间关系的线性坐标图。例如>>x=0:0.01:2*pi;y=sin(x);plot(x,y)则显示如图4-2所示曲线。7(2)多重线型

在同一图形中可以绘制多重线型,基本命令格式为plot(x1,y1,x2,y2,…,xn,yn)

以上命令可将x1对y1,x2对y2,…,xn对yn的图形绘制在一个图形中,而且分别采用不同的颜色或线型。8图4-3例如以下命令可显示如图4-3所示曲线。>>x=0:0.1:2*pi;plot(x,sin(x),x,cos(x))92.利用鼠标绘制图形

MATLAB允许利用鼠标来点选屏幕点,命令格式为

[x,y,button]=ginput(n)其中n为选择点的数目,返回的x,y

向量分别存储被点中的n个点的坐标,而button亦为一个n维向量,它的各个分量为鼠标键的标号,如button(i)=1,则说明第i次按下的是鼠标左键,而该值为2或3则分别对应于中键和右键。10

例4-1用鼠标左键绘制折线,同时在鼠标左键点中的位置输出一个含有该位置信息的字符串,利用鼠标中键或右键中止绘制。解

MATLAB程序

%ex4_1.mclf;axis([0,10,0,5]);holdon;x=[];y=[];fori=1:100[x1,y1,button]=ginput(1);chstr=['(',num2str(x1),',',num2str(y1),')'];text(x1,y1,chstr);x=[x,x1];y=[y,y1];line(x,y)if(button~=1);break;endendholdoff111.图形修饰及文本标注

MATLAB中对于同一图形中的多重线,不仅可分别定义其线型,而且可分别选择其颜色,带有选项的曲线绘制命令的调用格式为

plot(x1,y1,选项,x2,y2,选项2,…,xn,yn,选项n)其中x1,x2,…,xn为x轴变量,y1,y2,…,yn为y轴变量,选项如下表4-1所示。4.1.2二维图形的修饰12选项意义选项意义-实线.用点号绘制各数据点––虚线×叉号线—.点划线。圆圈线:点线*星号线y黄色g绿m洋红色b蓝c青色w白r红k黑表4-1MATLAB的绘图命令的各种选项

13

上表中的线型和颜色选项可以同时使用,例如>>

x=0:0.1:2*pi;>>plot(x,sin(x),’-g’,x,cos(x),’-.r’)14

绘制完曲线后,MATLAB还允许用户使用它提供的特殊绘图函数来对屏幕上已有的图形加注释、题头或坐标网格。例如>>

x=0:0.1:2*pi;y=sin(x);plot(x,y)>>title(‘FigureExample’)%给出题头>>xlabel(‘Thisisxaxis’)%x轴的标注>>ylabel(‘Thisisyaxis’)%y轴的标注>>grid%增加网格>>legand(‘sin(x)’)%加图例15

除了在标准位置书写标题和轴标志以外,MATLAB还允许在图形窗口的位置利用line()和text()命令画直线或写字符串,它们的调用格式分别为

line(x,y)和text(x,y,chstr,选项)其中line()函数在给定的图形窗口上绘制一条由向量x和y定义的折线,text()函数是在指定的点(x,y)处写一个chstr绘出的字符串,而选项决定x,y坐标的单位,如选项为’sc’,则x,y表示规范化的窗口相对坐标,其范围为0到1,即左下角坐标为(0,0),而右上角的坐标为(1,1)。

16

用text()命令可以在图形中的任意位置加上文本说明,但是必须知道其位置坐标,而利用另一个函数gtext(),则可以用鼠标来对要添加的文本字符串定位。在MATLAB的工作空间中键入下列命令>>gtext(‘sin(x)’)

那么在图中,将会出现一个十字叉,用鼠标拖动它到添加文本的位置,单击鼠标,gtext()命令中的文本字符串sin(x)就自动添加到指定的位置。172.图形控制

MATLAB允许将一个图形窗口分割成n×m部分,对每一部分可以用不同的坐标系单独绘制图形,窗口分割命令的调用格式为

subplot(n,m,k)其中n,m分别表示将这个图形窗口分割的行列数,k表示每一部分的代号,例如想将窗口分割成4×3个部分,则右下角的代号为12,MATLAB最多允许9×9的分割。18

尽管MATLAB可以自动根据要绘制曲线数据的范围选择合适的坐标系,使得曲线能够尽可能清晰地显示出来,但是,如果觉得自动选择的坐标还不合适时,还可以用手动的方式来选择新的坐标系,调用函数的格式为

axis([xmin,xmax,ymin,ymax])

另外,MATLAB还提供了清除图形窗口命令clg、保持当前窗口的图形命令hold、放大和缩小窗口命令zoom等。194.1.3二维特殊图形除了基本的绘图命令plot()外,MATLAB还允许绘制极坐标曲线、对数坐标曲线、条形图和阶梯图等,其常用的函数如表4-2所示。函数名意义常用调用格式函数名意义常用调用格式polar()极坐标图polar(x,y)semilogx()x-半对数图semilogx(x,y)semilogy()y-半对数图semilogy(x,y)loglog()对数图logog(x,y)bar()二维条形图bar(x,y)stairs()阶梯图stairs(x,y)comet()彗星状轨迹图comet(x,y)compass()罗盘图compass(x,y)quiver()磁力线图quiver(x,y)stem()火柴杆图stem(x,y)feather()羽毛状图feather(x,y)fill()二维填充函数fill(x,y,c)errorbar()误差限图errorbar(x,y,ym,yM)hist()直方图hist(y,n)表4-2特殊二维曲线绘制函数201.极坐标曲线极坐标曲线绘制函数的调用格式为polar(theta,rho,选项)其中,theta和rho分别为长度相同的角度向量和幅值向量;选项的内容和plot()函数的基本一致。212.对数和半对数曲线

对数和半对数曲线绘制函数的调用格式分别为

semilogx(x,y,选项)

%绘制横轴为对数标度的图形,选项同plot()semilogy(x,y,选项)

%绘制纵轴为对数标度的图形,选项同plot()loglog(x,y,选项)

%绘制两个轴均为对数标度的图形函数semilogx()仅对横坐标进行对数变换,而纵坐标仍保持线性坐标;而semilogy()只对纵坐标进行对数变换,而横坐标仍保持线性坐标;loglog()则分别对横纵坐标都进行对数变换(最终得出全对数坐标的曲线来)。选项的定义与plot()函数的完全一致。22例4-2

利用图形窗口分割方法将下列极坐标方程ρ=cos(θ/3)+1/9用四种绘图方式画在不同的窗口中。解

MATLAB程序

%ex4_2.mtheta=0:0.1:6*pi;rho=cos(theta/3)+1/9;subplot(2,2,1);polar(theta,rho);subplot(2,2,2);plot(theta,rho);subplot(2,2,3);semilogx(theta,rho);gridsubplot(2,2,4);hist(rho,15)则显示如图4-4所示曲线。23图4-424

与线性坐标向量的选取不同,在MATLAB下还给出了一个实用的函数logspace()按对数等间距的分布来产生一个向量,该函数的调用格式为x=logspace(n,m,z)其中10n和10m分别表示向量的起点和终点,而z表示需要产生向量点个数,当这参数忽略时,z将采用默认值50。254.1.4二维函数图形

MATLAB还允许调用函数fplot()或ezplot()来直接绘制出函数的图形,其函数的调用格式为fplot(f,[a,b],N)和ezplot(f,g,[a,b],N)其中,f,g为函数名,它既可为自定义的任意M函数,也可为基本数学函数;[a,b]为绘图区间;N为点数,默认时将取N=25。例如绘制如图3-2所示的正弦函数在一个周期内的曲线,可采用如下命令

>>fplot('sin',[0,2*pi])26

利用函数ezplot()可以直接绘制隐函数曲线,隐函数即满足f(x,y)=0方程的x,y之间的关系式。因为很多隐函数无法求出x,y之间的关系,所以无法先定义一个x向量再求出相应的y向量,从而不能采用plot()函数来绘制其曲线。另外,即使能求出x,y之间的显式关系,但不是单值绘制,则绘制起来也是很麻烦的。27

例4-3试绘制隐函数的曲线。

MATLAB命令如下。>>ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')

执行以上MATLAB命令,结果显示如图4-5所示曲线。284.2三维图形在MATLAB中,尽管二维绘图和三维绘图在很多地方是一致的,但是三维图形在很多方面是二维图形没有涉及的。因此,本节将详细介绍三维图形的绘制方法。294.2.1三维图形的绘制1.三维曲线的绘制与二维图形相对应,MATLAB提供了plot3()函数,它允许在一个三维空间内绘制出三维的曲线,该函数的调用格式为

plot3(x,y,z,选项)其中x,y,z为维数相同的向量,分别存储曲线的三个坐标的值,选项的意义同plot()函数。例利用以下命令,可得到图4-6所示曲线。>>t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)30图4-6312.三维曲面的绘制在绘制三维曲线时,除了需要绘制单根曲线外,通常还需要绘制三维曲线的网格图和表面图,即三维曲面图。在MATLAB中,他们对应的函数分别为mesh()函数和surf()函数。32如果已知二元函数,则可以绘制出该函数的三维曲线的网格图和表面图。在绘制三维图之前,应该先调用meshgrid()函数生成网格矩阵数据x和y,然后可以按函数公式用点运算的方式计算出z矩阵,最后就可以用mesh()函数和surf()函数进行三维图形绘制了。他们的调用格式分别为

mesh(x,y,z,c)和surf(x,y,z,c)其中,x,y,z分别构成该曲面的x,y和z向量;c为颜色矩阵,表示在不同的高度下的颜色范围,如果省略此选项,则会自动地假定c=z,亦颜色的设定是正比于图形的高度的,这样就可以得出层次分明的三维图形来。33例4-4试绘制二元函数的曲线。解

MATLAB命令如下。>>[x,y]=meshgrid(-3:0.1:3,-2:0.1:2);>>z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);mesh(x,y,z)执行以上命令便可得到图4-7所示曲线。34关于三维图形的绘制,常用的其他命令有

surf(x,y,z)%绘制三维表面图形

surfc(x,y,z)%绘制带有等高线的三维表面图形

surf1(x,y,z)%绘制带有阴影的三维表面图形

waterfall(x,y,z)%绘制瀑布形三维图形

contour(x,y,z)%等高线图形。354.2.2三维图形的修饰对于三维图形,除了可以像二维图形那样编辑线型、颜色外,还可以编辑三维图形的视角、材质和照明等。

1.三维图形的旋转

MATLAB三维图形显示中提供了修改视角的功能,允许用户从任意的角度观察三维图形,实现视角转换有两种方法:其一是使用图形窗口工具栏中提供的三维图形转换按钮来可视地对图形进行旋转;其二是用view()函数和rotate()函数有目的地进行旋转。36(1)视角控制函数view()

可以利用函数view()来改变图形的观察点,该函数的调用格式为view(Az,E1)其中,方位角Az为视点在x-y平面投影点与y轴负方向之间的夹角,默认值为-37.5

;仰角E1为视点和x-y平面的夹角,默认值为30

。例如,俯视图可以由view(0,90)来设置;正视图可以由view(0,0)来设置;侧视图可以由view(90,0)来设置。37例4-5试在同一窗口中绘制二元函数曲面的三视图和三维表面图形。解

MATLAB命令如下。>>[x,y]=meshgrid(-3:0.1:3,-2:0.1:2);>>z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);>>subplot(2,2,1);surf(x,y,z);view(0,90);>>subplot(2,2,2);surf(x,y,z);view(90,0);>>subplot(2,2,3);surf(x,y,z);view(0,0);>>subplot(2,2,4);surf(x,y,z);执行以上命令便可得到图4-8所示曲线。3839(2)旋转控制函数rotate()

和前面的函数view()不同,函数rotate()则通过旋转变换改变原来图形对象的数据,将图形旋转一个角度。而函数view()则没有改变原始数据,只是改变视角。函数rotate()的调用格式为rotate(h,diretion,alpha)其中,参数h为被旋转对象;参数diretion有两种设置方法:球坐标设置法,将其设置为[theta,phi],其单位是“°”(度);直角坐标法,其设置为[x,y,z];参数alpha为旋转角度,方向按照右手法。40例4-6试在MATLAB中利用函数rotate()旋转三维图形。解

MATLAB命令如下。>>subplot(1,2,1);z=peaks(25);surf(z);title('Default');>>subplot(1,2,2);h=surf(z);title('Rotated');>>rotate(h,[-2,-2,0],30,[2,2,0]);colormapcool执行以上命令便可得到图4-9所示曲线。41

由以上两例可知,使用函数view()旋转的是坐标轴,而使用函数rotate()旋转的是图形对象本身,其坐标轴保持不变。

(3)动态旋转控制命令rotate3d

在MATLAB中,还提供了一个动态旋转命令rotate3d。使用该命令可以动态调整图形的视角,直到用户觉得合适为止,而不自行输入输入视角的角度参数。下面通过一个简单的例子来说明如何使用该命令。42例4-7试在MATLAB中利用命令rotate3d旋转三维图形的视角。解

MATLAB命令如下。>>surf(peaks(40));rotate3d;

(a)旋转前(b)旋转后43

执行前一条命令surf(peaks(40))便可得到图4-10(a)所示三维图形。执行后一条命令rotate3d,则在图4-10(a)中出现一个旋转的图标,此时可在图形窗口的区域中,按住鼠标的左键来调节图形的视角,并将当前图形的视角数值显示在图形窗口的下方,如图4-10(b)所示。如对于旋转后的图4-10(b),其方位角和仰角分别为Az=40,E1=-8。442.

三维图形的颜色控制图形的色彩是图形的主要表现因素,丰富的颜色变化可以让图形更具有表现力。在MATLAB中,提供了多种色彩控制命令,这些命令分别适用于不同的环境,可以对整个图形中的所有因素进行颜色设置。

(1)背景颜色设置在MATLAB中,设置图形背景颜色的函数是colordef(),该命令的调用格式为

colordefwhite%将图形的背景颜色设置为白色;

colordefblack%将图形的背景颜色设置为黑色;

colordefnone%图形背景和图形窗口颜色设置为默认;

colordef(fig,color_option)%将图形句柄fig的背景颜色设置由color_option设置的颜色。45(2)图形颜色设置

MATLAB采用颜色映像来处理图形颜色,就是RGB色系。在MATLAB中,每种颜色都是由三个基色的数组表示的。数组元素R、G和B在平[0,1]区间取值,分别表示颜色中的红、绿、蓝三种基色的相对亮度。通过对R、G和B大小的设置,可以调制出不同的颜色。当调制好相应的颜色后,就可以使用函数colormap()来设置图形的颜色,该命令的调用格式为colormap([R,G,B])其中,[R,G,B]是一个三列矩阵,行数不限,这个矩阵就是所谓的色图矩阵。在MATLAB中每一个图形只能有一个色图。色图可以通过矩阵元素的直接赋值来定义,也可以按照某个数据规律产生。46

MATLAB中预定义了一些色图矩阵CM,如表4-3所示。它们的维度由其调用格式来决定:CM%返回维度为64

3的色图矩阵;CM(m)%返回维度为m3的色图矩阵。表4-3色图矩阵CM名称意义名称意义autumn红、黄色图bone红、黄色图cool青、品红浓淡色图copper纯铜色调浓淡色图gray灰色调浓淡色图hot黑红黄白色图hsv饱和色图jet蓝头红尾饱和色图47

例如利用以下命令,就可以设置图形的颜色为青、品红浓淡色,如图4-11所示。

>>surf(peaks(100));colormap(cool(512));图4-11颜色为青品红浓淡色的三维图48

在MATLAB中,除了colormap()函数外,还提供了多个用于设置图形中其他元素的函数命令,如caxis和colorbar,其中caxis命令的主要功能是设置数轴的颜色;colorbar命令的主要功能是显示指定颜色刻度的颜色标尺。他们常用的调用格式为caxis([cmin,cmax])%在[cmin,cmax]范围内与色图矩阵中的色值相对应,并依次为图形着色;caxisauto%自动计算出色值的范围;caxismanual%按照当前的色值范围来设置色图范围;colorbar%在图形右侧显示一个垂直的颜色标尺;colorbar(‘vert’)%添加一个垂直的颜色标尺到当前的坐标系中;colorbar('horiz')%添加一个水平的颜色标尺到当前的坐标系中。49(3)图形着色设置在MATLAB中,除了可以为图形设置不同的颜色外,还可以设置颜色的着色方式。对于绘图命令mesh、surf、pcolor和fill等创建的图形非数据处的着色,可利用shading命令,他的调用格式为

shadingflat%使用平滑方式为图形着色;

shadinginterp%使用平滑方式为图形着色;

shadingfaceted%使用平滑方式为图形着色。另外在MATLAB中,除了使用函数alpha()设置曲面数据点的透明度外,MATLAB还提供了函数alim()来设置透明度的上下限。503.

三维图形的消隐与透视在三维空间中绘制多个图形时,由于图形之间要相互覆盖,就涉及到消隐与透视的问题,消隐是指图形间相互重叠的部分不再显示,透视是指相互重叠的部分互不妨碍,全面显示。

hiddenon%图形间消隐,为默认值

hiddenoff%图形间透视例如利用以下命令,就可以得到如图4-12所示的图形。>>sphere;[x0,y0,z0]=sphere;>>x=2*x0;y=2*y0;z=2*z0;>>surf(x0,y0,z0);>>holdon;mesh(x,y,z);>>hiddenoff;axisequal51

4.2.3三维特殊图形除了基本的绘图命令plot3()和mesh()和surf()外,MATLAB还提供很多绘制三维图形的函数,其常用的函数如表4-4所示。表4-4特殊三维图形绘制函数函数名意义函数名意义bar3()三维垂直条形图slice()三维切片图bar3h()三维水平条形图contourslice()三维切面等位线图pie3()三维饼图streamslice()三维流线切面线图contour3()三维等高线waterfall()三维瀑布形图stem3()三维针图52

4.2.4三维函数图形与绘制二维函数图形类似,在MATLAB中,绘制三维函数的图形,同样也有一些简易命令。和三维绘图常见的各种命令相对应,三维图形的简易函数包括有ezmesh()、ezmeshc()、ezsurf()和ezsurfc()等。他们的调用格式与二维图形的简易函数调用格式相似。53

例4-8试绘制

的曲面线及等高线。解

MATLAB命令如下。

>>ezmeshc('y/(1+x^2+y^2)',[-5,5,-2*pi,2*pi])>>colormapcool

执行以上MATLAB命令,结果显示如图4-13所示曲线。544.3四维图形对于三维图形,在MATLAB中可以利用的函数关系来绘制图形。该函数的自变量只有两个,从自变量的角度来讲,就是二维的。但在实际生活和工程应用中,有时会遇到自变量个数为3的情况,这时自变量的定义域就是整个三维空间。而计算机是有显示维度的,它仅能显示三个空间的变量,不能表示第四维的空间变量。对于这种矛盾关系,MATLAB采用了颜色、等位线等手段来表示第四维的变量。55

在MATLAB中,使用slice()等相关函数来显示三维函数的切面图和等位线图,他们可以很方便地实现函数上的思维表现,slice()函数的常用调用格式为

slice(v,sx,sy,sz)%显示三元函数所确定的超立体形,在x,y和z三个坐标轴方向上的若干点的切片图,各点坐标轴由数量向量sx,sy和sz来指定;

slice(x,y,z,v,sx,sy,sz)%显示三元函数所确定的超立体形,在x,y和z三个坐标轴方向上的若干点的切片图。也就说,如果函数有一个变量x取值x0,则函数变成一立体曲面的切片图。各点坐标轴由数量向量sx,sy和sz来指定;56slice(v,XI,YI,ZI)%显示由参数矩阵XI,YI和ZI确定的超立体图形的切片图。参数矩阵XI,YI和ZI定义了一个曲面,同时会在曲面的点上计算超立体v的值。

slice(

,'method')%参数method用来指定内插值的方法。常见的方法包括有linear、cubic和nearest等,分别对应不同的插值方法。与slice()相关的函数还有contourslice()和streamslice()等,他们分别可绘制出不同的切片图形。下面以三个例子来说明他们的使用方法。57例4-9在MATLAB中,绘制水体水下射流速度数据flow的切片图。解

MATLAB命令如下。>>[x,y,z,v]=flow;x1=min(min(min(x)));x2=max(max(max(x)));>>sx=linspace(x1+1.5,x2,4);slice(x,y,z,v,sx,0,0)>>shadinginterp;colormaphsv;alpha('color');colorbar执行以上MATLAB命令,结果显示如图4-14所示曲线。58例4-10在MATLAB中,绘制水体水下射流速度数据flow的切面等位线图。解

MATLAB命令如下。>>[x,y,z,v]=flow;x1=min(min(min(x)));x2=max(max(max(x)));>>v1=min(min(min(v)));v2=max(max(max(v)));>>cv=linspace(v1+1,v2,20);sx=linspace(x1+1.5,x2,4);>>contourslice(x,y,z,v,sx,0,0,cv);>>view([-12,30]);colormapcool;boxon;colorbar执行以上MATLAB命令,结果显示如图4-15所示曲线。59例4-11在MATLAB中,绘制函数peaks的流线切面图。解

MATLAB命令如下。>>clear;z=peaks;surf(z);shadinginterp;holdon;>>[cch]=contour3(z,20);set(ch,'edgecolor','b');>>[u,v]=gradient(z);h=streamslice(-u,-v);set(h,'color','k');>>fori=1:length(h);zi=interp2(z,get(h(i),'x'),get(h(i),'y'));set(h(i),'z',zi);end>>colormaphsv;view(30,50);axistight;colorbar执行以上MATLAB命令,结果显示如图4-16所示曲线。604.4图像与动画

MATLAB提供了强大的图像与动画处理函数,而这里由于篇幅限制,仅介绍简单的入门知识。

4.4.1图像处理在MATLAB中,图像处理工具箱提供了图像处理的强大功能。下面仅简单介绍几个常用的函数。611.读图像文件图像文件读取函数为imread()其调用格式为W=imread(文件名)

该命令将文件中的图像读入MATLAB工作空间,生成8位无符号整型三维数组W,其中W(:,:,1),W(:,:,2)和W(:,:,3)分别对应于彩色图像的红色、绿色和蓝色分量。如果文件中存储的是灰度图像,则W为矩阵,存储图像的像素值。

622.图像显示

MATLAB及其图像处理工具箱中提供了多个图像显示函数,如image(),imview(),imshow()和imtool(),它们各有特色。3.图像写回到文件

MATLAB可利函数imwrite()把数值矩阵代表的图像数据写回为标准格式的图像文件,其调用格式为imwrite(W,文件名)63

例如利用以下MATLAB命令,可以读取图像文件P1.JPG,并将其数值矩阵W代表的部分图像数据,写回到图像文件P2.JPG中,其显示结果如图4-17所示。>>W=imread('P1.JPG');image(W)%读取图像文件P1.JPG到矩阵W,并显示>>W1=W(280:1700,300:2200,:);%取图像矩阵W的部分值,并保存为W1>>imwrite(W1,'P2.JPG');figure;%将W1中的图像数据写到文件P2.JPG中>>W2=imread('P2.JPG');image(W2)%读取图像文件P2.JPG到矩阵W2,并显示64以上命令,首先将宽为1920像素,长为2560像素的真彩模式的图像文件P1.JPG经由函数imread()读入后,产生了一个1920

2560

3的三维数组W,数值数组W通过函数image()将其代表的图像显示在MATLAB的窗口下,并标出了像素坐标位置,如图4-17(a)所示;然后根据图4-17(a)中的像素坐标范围,适当选取图像的有效区域,利用函数imwrite()得到裁剪后的图像文件P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论