matlab程序设计入门20PPT 19-影像显示与读写.ppt_第1页
matlab程序设计入门20PPT 19-影像显示与读写.ppt_第2页
matlab程序设计入门20PPT 19-影像显示与读写.ppt_第3页
matlab程序设计入门20PPT 19-影像显示与读写.ppt_第4页
matlab程序设计入门20PPT 19-影像显示与读写.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、MATLAB 程序设计入门篇影像显示与读写,张智星 .tw .tw/jang 清大资工系 多媒体检索实验室,19-1 MATLAB的影像格式,MATLAB 最常处理的影像格式为索引影像(Indexed Images) 显示此类型影像的语法如下: image(X) colormap(map) 其中X为影像的数据矩阵,map为色盘矩阵。 色盘矩阵的大小为K3,每个横列由三个元素所组成,分别是R(红) 、G(绿)、B(蓝) ,每个元素的范围为01 X的值为1K,也就是当X(i, j)的值为p,则像素点(i, j) 的颜色为map

2、(p, :)这一列的值所决定。,显示索引影像范例一,在下例中,我们使用MATLAB显示内建的小丑图。 范例19-1:image01.m,load clown.mat% 加载小丑影像数据,含变量 X 和 map image(X);% 显示影像 colormap(map)% 取用色盘矩阵,显示索引影像范例一,显示索引影像范例二,由于由X 是索引影像,因此其最小值是 1, 最大值会等于 map 的列数(即可显示之颜色数目),可验证如下: 范例19-2 :image02.m,load clown.mat% 加载小丑影像数据,含变量 X 和 map fprintf(min(min(X) = %dn, m

3、in(min(X); fprintf(max(max(X) = %dn, max(max(X); fprintf(size(map, 1) = %dn, size(map, 1);,显示索引影像范例二,min(min(X) = 1 max(max(X) = 81 size(map, 1) = 81 由范例可知,此小丑影像共含有 81 种不同的颜色。,显示索引影像范例三,要正确地显示索引影像则需要正确的色盘,以上面的小丑影像为例,如果使用随机数产生的色盘则会产生下面的结果: 范例19-3:image03.m,load clown.mat% 加载小丑影像数据,含变量 X 和 map newmap

4、= rand(size(map); image(X); colormap(newmap),显示索引影像范例三,显示索引影像范例四,如果我们的色盘矩阵只有 K 个横列,但是 X 的某些元素值小于 1 或大于 K,则我们可以使用imagesc指令将 X 的最小值转换成 1,最大值转成 K,其它中间值则依线性关系转换成介于 1 与 K 的值,举例如下: 范例19-4:imagesc01.m,:,X = peaks; imagesc(X); colormap(gray); min(min(X)% 显示 X 的最小值 max(max(X)% 显示 X 的最大值,显示索引影像范例四,ans = -6.54

5、66 ans = 8.0752 具有上述特性的影像数据称为强度影像(Intensity Images),一般经由数值运算产生的矩阵均属此类,因此均可由 imagesc 来显示。,显示索引影像范例五,image 指令亦接受全彩影像(Truecolor Images)。全彩影像可以表示成一个 mn3 的矩阵 X,其中 X (:, :, 1) 代表红色的强度。X (:, :, 2) 代表绿色的强度,X (:, :, 3) 则代表蓝色的强度。 X的值的范围可以是下列两种:介于01的浮点数或是0255的uint8(详见本章第三节) ,举例来说: 范例19-5:image04.m,X = imread(a

6、nnie19980405.jpg); image(X) size(X),显示索引影像范例五,ans = 480 640 3,19-2 影像的显示与打印,MATLAB 在显示影像时,会将之置于预设的图轴之中,并以此图轴的长宽比来成像,因而造成影像的失真。若要以影像本身的长宽比来成像,可加入 axis image,如下: 范例19-6:image05.m,load mandrill.mat image(X); colormap(map); axis image,以原影像长宽比例显示范例,将影像对应到屏幕上的点的范例,若要使影像数据的每一点对应至屏幕上的一个像素(Pixel),可输入如下: 范例19

7、-7:image06.m,load mandrill.mat m, n = size(X); figure (unit, pixel, position, 200, 200, n, m); image(X); colormap(map); set(gca, position, 0, 0, 1, 1);,范例:将影像对应到屏幕上的点,此范例产生图形如同前一个范例,如果你的屏幕分辨率较低,图形会变大。 上述范例程序代码中, figure 的 position 性质为 200, 200, n, m,代表窗口的左下角位置是 200, 200(以 pixel 为单位),而窗口的宽度为 n,高度为 m,正

8、好可以符合影像的大小。 gca 传回使用中的图轴,最后一个叙述将图轴的位置设为整个窗口的大小,使用了正规化的单位 。,19-2 影像的显示与打印,在打印影像时,MATLAB 会根据窗口的 Paper position 性质来调整图形的长宽比,使得印出的影像再度变形。欲防止情况,可用下列指令: set(gcf, PaperPositionMode, auto) 若要使 Paper Position Mode 的默认值就是“auto”,可在 startup.m 档案中加入下一行: set(0, DefaultFigurePaperPositionMode, auto),19-3 8-bit影像,在

9、 MATLAB 第 5 版之后,提供了 uint8 的数据型态。 由于 uint8 只有 8 个位,所以能表示的数值范围为 0 至 255(=28-1) 之间的整数 。,8-bit影像范例,由于 8-bit 影像数据的最小值为 0,和一般的双精准索引影像数据相差 1,因此在两种数据相互转换时,要特别小心。例如: 范例19-8:uint801.m,load clown.mat Z8 = uint8(X-1);% 将 X-1 转成 uint8 的数据型态 close all% 关掉所有的图形窗口 image(Z8) colormap(map),8-bit影像范例,19-3 8-bit影像,若要将

10、8-bit 影像转回双精准影像,可输入如下: Z64 = double(Z8)+1; uint8 数据型态亦可用于全彩影像数据,此时每一像素的原色(R,G 或 B)范围为 0 至 255 间的整数,而不再是 0 至 1 的实数。,19-3 8-bit影像,欲将双精准的全彩影像转作 uint8 数据型态,可输入如下: RGB8 = uint8(round(RGB64*255); 其中 RGB64 为双精准的全彩影像数据,而 RGB8 则是 unit8 的 8-bit 影像数据。反之,若欲进行反转换,可输入如下: RGB64 = double(RGB8)/255; 关于影像类别及其数据型态的关系,

11、可见下表:,影像类别及型态关系表,19-4 影像档案的读取与写入,imread 指令可用于读取影像档案。 imwrite 则可用于写入影像档案。 这两个指令可以处理的影像格式有下列几种:,imread及imwrite支持的格式,19-4 影像档案的读取与写入,imread 指令可以读取上述格式的影像档案,并进行必要之转换,如下: 对于强度影像,imread 将数据以 uint8 的矩阵(大小为 mn)传回。 对于索引影像,imread 将数据以 uint8 的矩阵(大小为 mn)传回,并同时传回一个双精准的色盘矩阵,其每个元素值介于0,1。 对于全彩矩阵,imread 将数据以 uint8 的矩阵(大小为 mn3)传回。,使用imread读取全彩jpg影像,imread 可读出下列全彩影像: 范例19-9:uint802.m,RGB = imread(simulinkteam.jpg); image(RGB),使用imread读取全彩jpg影像,影像档案写入范例,imwrite 指令可将数据写成影像文件如下: 范例19-10:imwrite01.m 上述最后一列叙述将会呼叫 Windows 操作系统下的应用程序来开启 myClow

温馨提示

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

评论

0/150

提交评论