第5章MATLAB绘图教案.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.7.1 图像显示 1. imread和imwrite函数 imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。 2. image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 * 例5.37 在E盘根目录下有一图像文件flower.jpg,在图形窗口显示该图像。 程序如下: [x,cmap]=imread(e:\flower.jpg); %读取图像的数据阵和色图阵 image(x); %显示图像 colormap(cmap); axis image off %保持宽高比并取消坐标轴 * 5.7.2 动画的分类制作方法 从动画的制作方法可以分为逐帧动画、形变动画与路径动画; 从制作工具上可以分为语言制作动画与软件制作动画; * 逐帧动画 1. 逐帧动画、形变动画与路径动画 可以使用Matlab中的函数moviein()与getframe等完成逐帧动画设计,使用函数movie()播放逐帧动画。 逐帧动画、形变动画与路径动画是三种基本的动画制作方式,每个动画制作软件都提供这三种动画制作方法。这里研究如何使用Matlab语言实现这三种动画。一方面,在以后的实际应用中,可以直接使用语言进行动画设计;另一方面,可以探索动画制作软件的开发机理,以便更好的使用动画制作软件。 * 在前面介绍的动画制作方法中,电影动画制作中有一段程序,程序完成了一个简单的逐帧动画。 该程序段就是使用了moviein()、getframe与movie()这几个函数,完成了一个从多面体转化成球体的动画。其实,这几个函数是通用的逐帧动画制作函数,利用这几个函数,可以制作出各种各样的逐帧动画。 M=moviein(16); for j=1:16 sphere(j); axis equal M(:,j)=getframe; end movie(M,10) * for i=1:15 k=int2str(i); k1=strcat(D:\picture\,k,.jpg); a1=imread(k1); image(a1); m(:,i)=getframe; end movie(m,2) 例 修改前述的动画制作程序,完成编号图像动画制作。 一共15张墙纸图片,存储在D:\picture文件夹下。 从上例可以看到,只要把图像编号,就可以制作出逐帧动画,也就是可以完成序列图像播放。目前,有些动画作品就是先手工绘制,然后扫入计算机,进行动画编辑与制作。制作的方法与上例类似。 软件制作逐帧动画与语言制作逐帧动画本质上是相同的。软件Flash与3D MAX等都提供了逐帧动画制作功能,其方法也是把每一帧图像或图形存入播放数组,然后进行逐帧播放。 * 形变动画 动画制作软件都提供了形变动画制作功能。首先给定一个物体的初始形状,然后给定终止形状,中间过程的各个帧使用插值计算来实现。 插值计算的关键是找好初始与终结两个时刻的对应顶点(关键点),然后计算中间各帧的顶点(关键点),最后,使用类似 surf 的函数绘制每一帧。 一般的形变动画都是靠计算给出中间帧,这虽然增加了计算时间,但是不需要存储大量的中间图像(图形),节省了存储空间。 * 例 作动画演示peaks图形逐渐趋近于平面的过程。 p=peaks(11); h=axes(Position,[0,0,1,1],visible,off) for i=1:10 p1=p/i;surf(p1) set(h,Zlim,[0 10]) axis off; pause(0.3) end 程序运行时,随着i的增加,曲面的高度逐渐缩小,形成了动画效果。为了更好的观察,设置固定了坐标系的Z轴范围为[0 10]。 * 例 作动画演示一个图形逐渐演化成peaks图形的过程。 p=peaks(16);s=sphere(15); for i=30:-2:1 p1=s+p/i;surf(p1);axis off;pause(0.1); end 程序中,先使用peaks函数产生图形数据,再使用sphere函数产生数据,然后对这些数据进行组合,实现从一个图形到peaks图形的转变。下图是一些中间帧。 * 注:sphere函数产生数据后,使用surf函数

文档评论(0)

贪玩蓝月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档