首页数学计算数学MATLAB基础与应用 07 第七章 图形图像处理.pptx

07 第七章 图形图像处理.pptx

页数:41页文件大小:777.3 KB来源: MATLAB基础与应用ppt课件

本课件讲解MATLAB图形绘制与图像处理:从plot等二维绘图函数与图形修饰入手,介绍三维曲线、三维曲面与网格图的绘制方法,说明图形句柄的获取与属性设置,并给出图像读写、显示、变换与简单增强处理的实现方式。

第7章图形图像处理封面,标示本章主题为MATLAB二维三维绘图、图形句柄与图像处理
第7章知识结构图,列出二维图像、三维图像、图形句柄与图像处理四节内容
7.1二维图像plot函数页,说明多条曲线时按ColorOrder与LineStyleOrder属性循环取色取线型
查看本课件的文字版(共 41 页,供检索与复制)

第1页:第7章 图形图像处理

本页为《MATLAB基础与应用》第7章 图形图像处理的章节封面。

第2页:本章知识结构

本章知识结构

  • 7.1 二维图像
  • 7.2 三维图像
  • 7.3 图形句柄
  • 7.4 图像处理

第3页:7.1 plot函数与线条颜色

7.1 二维图像 1.plot函数:在线条多于一条时,若用户没有指定使用颜色,则 plot 循环使用由当前坐标轴颜色顺序属性(current axes ColorOrder property)定义的颜色,以区别不同的线条。在用完上述属性值后,plot 又循环使用由坐标轴线型顺序属性(axes LineStyleOrder property)定义的线型,以区别不同的线条。

第4页:例7-1 绘制二维曲线

例7-1:在 0≤x≤2π 区间内,绘制曲线 y=2e-0.5xcos(4πx)。程序如下:

x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y)

第5页:图7.1 二维图形绘制

图7.1 二维图形绘制:上述程序绘制得到的衰减振荡曲线。

第6页:例7-2 标记两曲线交叉点

例7-2:在同一坐标内,分别用不同线型和颜色绘制曲线 y1=0.2e-0.5xcos(4πx) 和 y2=2e-0.5xcos(πx),标记两曲线交叉点。程序如下:

x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)<1e-2); % 查找y1与y2相等点(近似相等)的下标 x1=x(k); % 取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); % 求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp');

说明:源文件中 y2 的表达式抽取时缺失后半段(写作 2*exp(-0.5*x).*)),此处按题目给出的 y2=2e^-0.5x·cos(πx) 补全。

第7页:图7.2 不同样式的二维曲线

图7.2 不同样式的二维曲线绘制:两条曲线分别以实线与黑色点线绘制,交叉点以蓝色五角星标记。

第8页:例7-3 添加图形标注

例7-3:在 0≤x≤2π 区间内,绘制曲线 y1=2e-0.5x 和 y2=cos(4πx),并给图形添加图形标注。程序如下:

x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{\pi}'); % 加图形标题 xlabel('Variable X'); % 加X轴说明 ylabel('Variable Y'); % 加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); % 在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend('y1',' y2')

结果如图7.3所示。

第9页:图7.3 legend图例说明

图7.3 legend 图例说明二维图:图形上方为标题,横纵轴各有说明,右上角给出 y1、y2 图例。

第10页:subplot函数与例7-4

subplot函数:subplot(m,n,p) 将当前图形窗口分成 m×n 个绘图区,即每行 n 个、共 m 行,区号按行优先编号,且选定第 p 个区为当前活动区。

例7-4:在一个图形窗口中同时绘制正弦、余弦、正切、余切曲线,程序为:

x=linspace(0,2*pi,60); y=sin(x); z=cos(x); t=sin(x)./(cos(x)+eps); % eps为系统内部常数 ct=cos(x)./(sin(x)+eps); subplot(2,2,1); % 分成2×2区域且指定1号为活动区 plot(x,y);

第11页:例7-4(续)四个子图设置

title('sin(x)'); axis ([0 2*pi -1 1]); subplot(2,2,2); plot(x,z); title('cos(x)'); axis ([0 2*pi -1 1]); subplot(2,2,3); plot(x,t); title('tangent(x)'); axis ([0 2*pi -40 40]); subplot(2,2,4); plot(x,ct); title('cotangent(x)'); axis ([0 2*pi -40 40]);

结果如图7.4所示。

第12页:图7-4 subplot功能图

图7-4 subplot功能图:同一窗口内按2×2排列正弦、余弦、正切、余切四条曲线。

第13页:fplot函数

函数f(x)曲线:fplot函数则可自适应地对函数进行采样,能更好地反应函数的变化规律。fplot函数格式 fplot(fname,lims,tol),其中 fname 为函数名,以字符串形式出现,lims 为变量取值范围,tol 为相对允许误差,其系统默认值为 2e-3。

第14页:例7-5 用fplot绘制曲线

例7-5:绘制正弦、余弦曲线。

>> fplot('sin(x)',[0 2*pi],'-+') >> fplot('[sin(x),cos(x)]',[0 2*pi],1e-3,'·') % 同时绘制正弦、余弦曲线

为绘制 f(x)=cos(tan(πx)) 曲线,可先建立函数文件 fct.m,其内容为:

function y=fct(x) y=cos(tan(pi*x));

用 fplot 函数调用 fct.m 函数,其命令为:fplot('fct',[0 1],1e-4)

第15页:例7-6 绘制条形图

2.条形图形 例7-6:函数 bar(x,y) 可以绘制条形图形,如下列程序段将绘制条形图形。

x=[-2.5:0.25:2.5]; y=exp(-x.*x); bar(x,y); % 绘制条形图命令

结果如图7.6所示。

第16页:fill函数绘制填充图形

3.填充图形:fill(x,y,'c') 函数用来绘制并填充二维多边图形,x 和 y 为二维多边形顶点坐标向量,字符‘c’规定填充颜色。下述程序段绘制一正方形并以黄色填充:

x=[0 1 1 0 0]; % 正方形顶点坐标向量 y=[0 0 1 1 0]; fill(x,y,'y'); % 绘制并以黄色填充正方形

再如:

x=[0:0.025:2*pi]; y=sin(3*x); fill(x,y,[0.5 0.3 0.4]); % 颜色向量

第17页:7.2 plot3绘制三维曲线

7.2 三维图像 plot3函数:最基本的三维图形函数为 plot3,它是将二维函数 plot 的有关功能扩展到三维空间,用来绘制三维图形。函数格式 plot3(x1,y1,z1,c1,x2,y2,z2,c2,…),其中 x1,y1,z1… 表示三维坐标向量,c1、c2… 表示线形或颜色。

例7.7:绘制三维螺旋曲线,其程序为:

t=0:pi/50:10*pi; y1=sin(t), y2=cos(t); plot3(y1,y2,t); title('helix'), text(0,0,0,'origin'); xlabel('sin(t)'), ylabel('cos(t)'), zlabel('t'); grid;

第18页:mesh函数与三维网格图

图7.7 三维螺旋曲线。

mesh函数:mesh函数用于绘制三维网格图。在不需要绘制特别精细的三维曲面结构图时,可以通过绘制三维网格图来表示三维曲面。三维曲面的网格图最突出的优点是它较好地解决了实验数据在三维空间的可视化问题。

第19页:例7-8 绘制三维网格曲面

例7-8:下列程序绘制三维网格曲面图。

x=[0:0.15:2*pi]; y=[0:0.15:2*pi]; z=sin(y')*cos(x); % 矩阵相乘 mesh(x,y,z);

结果如图7.8所示。

第20页:surf函数绘制三维曲面

surf函数:surf 用于绘制三维曲面图,各线条之间的补面用颜色填充,surf 函数和 mesh 函数的调用格式一致。函数格式 surf(x,y,z),其中 x、y 控制X和Y轴坐标,矩阵 z 是由 x、y 求得的曲面上Z轴坐标。

例7-9:下列程序绘制三维曲面图形。

x=[0:0.15:2*pi]; y=[0:0.15:2*pi]; z=sin(y')*cos(x); % 矩阵相乘 surf(x,y,z); xlabel('x-axis'), ylabel('y-axis'), zlabel('z-label'); title('3-D surf');

第21页:图7.9 三维曲面图

结果如图7.9所示:三维曲面图,各补面以颜色填充,坐标轴分别标注 x-axis、y-axis、z-label。

第22页:三维图形的视点控制

三维图形的控制 视点:视点位置可由方位角和仰角表示。方位角又称旋转角,为视点位置在XY平面上的投影与X轴形成的角度,正值表示逆时针,负值表示顺时针;仰角又称视角,为XY平面的上仰或下俯角,正值表示视点在XY平面上方,负值表示视点在XY平面下方。

从不同视点绘制三维图形的函数为 view,view(az,el) 中的 az 为方位角,el 为仰角。通过系统提供的多峰函数 peaks 的绘制例子,可进一步说明视点对图形的影响,以及 view(az,el) 函数的使用。

第23页:例7-10 不同视角图形(一)

例7-10:不同视角图形。

p=peaks; % 系统提供的多峰函数 subplot(2,2,1); mesh(peaks,p); view(-37.5,30); % 指定子图1的视点 title('azimuth=-37.5,elevation=30') subplot(2,2,2); mesh(peaks,p); view(-17,60); % 指定子图2的视点 title('azimuth=-17,elevation=60') subplot(2,2,3); mesh(peaks,p);

第24页:例7-10 不同视角图形(二)

view(-90,0); % 指定子图3的视点 title('azimuth=-90,elevation=0') subplot(2,2,4); mesh(peaks,p); view(-7,-10); % 指定子图4的视点 title('azimuth=-7,elevation=-10')

结果如图7.10所示。

第25页:图7.10 不同视角图形

图7.10 不同视角图形:同一多峰函数 peaks 在四组不同方位角与仰角下的网格图对比。

第26页:7.3 图形句柄的概念

7.3 图形句柄 句柄:在MATLAB系统中,绘图命令产生的每一个部分称为图形对象,系统在创建每一个对象时,都为该对象分配唯一的一个值,称其为句柄,因此句柄就是图形对象标识符。

对象、句柄以及图形对象等概念其实质是统一的,系统将每一个对象按树型层次结构组织起来,这些对象包括根对象(通常为计算机屏幕)、图形窗口、坐标系统、线条、曲面、文本串、用户界面控制等。

第27页:根对象与句柄操作函数

根对象:根对象可包含一个或多个图形窗口对象,而一个图形窗口对象又可包含一组或多组坐标系子对象,线条、文本等其它对象都是坐标系的子对象。所有创建对象的函数当父对象不存在时,都会自动创建它。

计算机屏幕作为根对象自动建立,其句柄值为0;而 Hf_f=figure 命令则建立图形窗口对象,并返回它的句柄值给变量 Hf_f。图形窗口的句柄为一整数,并显示在该窗口的标题栏,其它图形对象的句柄为浮点数。MATLAB提供了一系列与句柄操作有关的函数,如 gcf、gca 等。为便于识别,用大写字母开头的变量表示句柄,如 Hf_f 等。

第28页:图像类型

图像类型

(1)矢量图像
利用数学的矢量方式纪录图像内容,以线条和色块为主,容易放大、缩小或旋转,且不易失真,精确度高,可以绘制3D图像,但是不易做成色彩丰富的图像。
(2)位图图像
将图像中每一个像素点转换成一个数据。如果以8位记录,可以表现出256种颜色,所以色彩丰富,通常有16色、256色、增强16位和真彩色24位。但随着颜色数和分辨率的提高,存储空间大,且较易失真,用数码相机和扫描仪获得的图像都属于位图。

第29页:图像度量指标

图像度量指标

(1)像素
是图像在计算机显示中的度量单位,可以变化,可大可小。
(2)分辨率
是用于度量图像在显示器中清晰程度的一个参数,分辨率越高,图像越清晰。分辨率是与像素相关的,即单位长度上的像素数就是分辨率,由此可知分辨率越高,像素的几何尺寸就越小。

第30页:图像文件的大小

(3)图像文件的大小:指一幅图像在计算机中保存时所占用的磁盘空间,其大小与所用的颜色模式有关。灰度图像中的每一个灰度像素只占用一个字节(8位),RGB图像中红、绿、蓝各占用一个字节。另外,图像文件的大小也直接与其分辨率有关,原因是当分辨率增加时,一幅图像所包含的像素量急剧增加。

第31页:imwrite输出图像文件

7.4 图像处理 图像的输出:(1)以图像文件的形式输出,应用函数 imwrite,格式是:

imwrite(A,'filename','fmt') imwrite(X,map,'filename','fmt') imwrite(…,'filename') imwrite(…,Param1,Val1,Param2,Val2,…)

命令中各参数含义可以参照前面 imread 命令,也可在MATLAB命令窗口输入 help imwrite 来获得提示信息。imwrite 获得的文件存放在MATLAB的 work 文件夹中。

第32页:image与imagesc函数

(2)以图像的形式输出,函数为 image(imshow)。image 的格式是:

image(Z) image(x,y,Z) image(…,'PropertyName',PropertyValue,…) image('PropertyName',PropertyValue,…) handle=image(…)

其中,x、y 分别表示图像显示位置的左上角坐标,Z 表示所需显示的图像。函数 imagesc 与 image 函数类似,但是可以自动标度输入数据。关于 image 中各参数的意义可以使用 help image 查询。

第33页:例7-11 按256灰度级显示

图像显示:MATLAB的图像显示函数主要有 imshow、colorbar 和 subimage 三个。例7-11:按256灰度级显示。

I=imread('moon.tif'); imshow(I,256) colorbar

结果如图7.11所示。

第34页:图7.11 图像256灰度级显示

图7.11 图像256灰度级显示:图像细节层次丰富,右侧 colorbar 给出灰度与颜色的对应关系。

第35页:例7-12 按8灰度级显示

例7-12:按8灰度级显示。

I=imread('moon.tif'); imshow(I,8) colorbar imshow(BW) % 显示二值图像

结果如图7.12所示。

第36页:例7-13、例7-14 二值图像

例7-13:显示二值图像。

BW=imread('circles.tif'); imshow(BW);

结果如图7.13所示。

例7-14:取反显示二值图像。

BW=imread('circles.tif'); imshow(~BW);

结果如图7.14所示。

第37页:例7-15 多图显示

例7-15:多图显示多个调色板的图像。

load trees; [x2,map2]=imread('forest.tif'); subplot(2,1,1), subimage(X,map); colorbar subplot(2,1,2), subimage(x2,map2); colorbar

结果如图7.15所示。

第38页:图7.21 多图显示

图7.21 多图显示:上、下两个子图分别以各自调色板显示,并各带一条颜色条。

第39页:阅读材料 注释的技巧

阅读材料 1.注释的技巧:选中你要加注释的内容,然后选择工具菜单「text|comment」就可以了;如果要把注释变为语句,同样选中要转变的语句,然后用鼠标选择「text|uncomment」就可以了,用键盘的快捷键是 Ctrl+R。

或者选中你要加注释的内容,右击鼠标选择「comment」;如果要把注释变为语句,同样选中要转变的语句,然后右击鼠标选择「uncomment」取消注释,用键盘的快捷键是 Ctrl+T。

第40页:figure命令新建绘图窗口

2.figure命令新建一个绘图窗口:figure 可以打开一个空的绘图窗口,接下来的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个 figure 窗口时,在命令窗口中执行如 plot 等命令将覆盖当前 figure 窗口中的对象,所谓的当前 figure 窗口也就是最后一次查看的窗口(可以用命令 gcf 得到)。

figure(N) 将编号为N的窗口置为当前 figure,出现在所有窗口的最前面;如果该窗口不存在,则新建一个编号为N的空白 figure。

第41页:三维网格图导出到Word

3.将MATLAB绘制的三维网格图贴到word里:如果需要位图,好处是所见即所得,坏处是图像精度差,不能放缩。

  1. 用拷屏 Alt+PrintScreen
  2. 在图形窗口菜单 Edit\Copy Options…\ 选择 Bitmap,可以选择透明背景,然后 Edit\Copy Figure
顶部目录