Matlab编程资源库(7)图形修饰处理

一、视点处理

       MATLAB 提供了 设置视点 的函数 view ,其调用格式 为:
view(az,el)
       其中 az 方位角 el 仰角 ,它们均以度为单位。 系统缺省的视点定义为方位角-37.5° , 仰角30°

二、色彩处理

1 .颜色的向量表示
       MATLAB 除用字符表示颜色外,还可以用含有 3 元素的向量表示颜色。向量元素在 [0,1] 范围取 值, 3 个元素分别表示 绿 3 种颜色的相对 亮度,称为 RGB 三元组。
2 .色图
       色图 (Color map) MATLAB 系统引入的概念。在 MATLAB 中,每个图形窗口只能有一个色图。色图是m × 3 的数值矩阵,它的每一行是 RGB 三元 组。色图矩阵可以人为地生成,也可调用 MATLAB 提供的函数来定义色图矩阵。
3 .三维表面图形的着色
       三维表面图实际上就是在网格图的每一个网格片上 涂上颜色。 surf 函数用 缺省 的着色方式对网格片着色。除此之外,还可以用shading 命令来改变着 色方式。 shading faceted 命令将每个网格片用其高度对应的 颜色进行着色,但网格线仍保留着,其颜色是黑 色。这是系统的缺省着色方式。 shading flat 命令将每个网格片用同一个颜色进行着 色,且网格线也用相应的颜色,从而使得图形表 面显得更加光滑。shading interp命令在网格片内采用颜色插值处理, 得出的表面图显得最光滑。
5-23 3 种图形着色方式的效果展示。
程序如下:
[x,y,z]=sphere(20);
colormap(copper);
subplot(1,3,1);
surf(x,y,z);
axis equal
subplot(1,3,2);
surf(x,y,z);shading flat;
axis equal
subplot(1,3,3);
surf(x,y,z);shading interp;
axis equal

运行结果 :

三、光照处理

MATLAB 提供了 灯光 设置的函数,其调用格式为:
light ('Color', 选项 1,'Style', 选项 2,'Position', 选项 3)
5-24 光照处理后的球面。
程序如下:
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);axis equal;
light('Posi',[0,1,1]);
shading interp;
hold on;
plot3(0,1,1,'p');text(0,1,1,' light');
subplot(1,2,2);
surf(x,y,z);axis equal;
light('Posi',[1,0,1]);
shading interp;
hold on;
plot3(1,0,1,'p');text(1,0,1,' light');

运行结果 :

四、图形的裁剪处理

5-25 绘制三维曲面图,并进行插值着色处理,裁 掉图中 x y 都小于 0 部分。
程序如下:
[x,y]=meshgrid(-5:0.1:5);
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
surf(x,y,z);shading interp;
pause %程序暂停
i=find(x<=0&y<=0);
z1=z;z1(i)=NaN;
surf(x,y,z1);shading interp;

 运行结果 :

      为了展示裁剪效果,第一个曲面绘制完成后暂停, 然后显示裁剪后的曲面。

五、图像处理

1 imread imwrite 函数
       imread imwrite 函数分别用于将图像文件读入 MATLAB 工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。
       MATLAB 支持多 种图像文件格式,如 .bmp .jpg .jpeg .tif 等。
2 image imagesc 函数
       这两个函数用于图像显示。为了保证图像的显示效 果,一般还应使用 colormap 函数设置图像色图。
5-26 有一图像文件 flower.jpg ,在图形窗口显示 该图像。
程序如下:
[x,cmap]=imread('flower.jpg'); %读取图像的数据
阵和色图阵
image(x);colormap(cmap);
axis image off %保持宽高比并取消坐标轴

六、动画制作

MATLAB 提供 getframe moviein movie 函数进行 动画制作。
1 getframe 函数
       getframe 函数可截取一幅画面信息 ( 称为动画中的一 ) ,一幅画面信息形成一个很大的列向量。显 然,保存 n 幅图面就需一个大矩阵。
2 moviein 函数
       moviein(n) 函数用来建立一个足够大的 n 列矩阵。该 矩阵用来保存 n 幅画面的数据,以备播放。之所以 要事先建立一个大矩阵,是为了提高程序运行速
度。
3 movie 函数
      movie(m,n) 函数播放由矩阵 m 所定义的画面 n 次,缺 省时播放一次。
5-27 绘制了 peaks 函数曲面并且将它绕 z 轴旋转。
程序如下:
[X,Y,Z]=peaks(30); 
surf(X,Y,Z)
axis([-3,3,-3,3,-10,10])
axis off;
shading interp;
colormap(hot);
m=moviein(20); %建立一个20列大矩阵
for i=1:20
view(-37.5+24*(i-1),30) %改变视点
m(:,i)=getframe; %将图形保存到m矩阵
end 
movie(m,2); %播放画面2次

运行结果 :

 结语 

拥有梦想只是一种智力

实现梦想才是一种能力

!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT 青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值