第4章MATLAB图像显示_第1页
第4章MATLAB图像显示_第2页
第4章MATLAB图像显示_第3页
第4章MATLAB图像显示_第4页
第4章MATLAB图像显示_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 图像显示Matlab进行图像处理的步骤如下:读取图像到Matlab工作空间对图像矩阵进行格式转换对图像矩阵数据进行处理 显示图像 保存图像【目录】一、读图像和图像信息21、读取图像22、读取图像信息3二、图像显示41、imshow(I,n)52、imshow(I,low,high)53、imshow(BW)64、imshow(X,MAP)105、imshow(RGB)116、显示多帧图像序列117、imshow filename148、subimage14三、保存图像151、imwrite函数15四、图像数据格式转换151、索引图像162、灰度图像163、真彩色图像164、二值图像17

2、一、读图像和图像信息1、读取图像函数imread可以从任何Matlab支持的图像文件格式中,以任意位深度读取一幅图像。格式为:X,MAP=imread('FILENAME.FMT'),其中:FILENAME为需要读入的图像文件名称,FMT为图像格式。【例】图像读取演示X1,MAP1=imread('演示图像1位黑白.tif');X2,MAP2=imread('演示图像8位灰度.tif');X3,MAP3=imread('演示图像256色.tif');X4,MAP4=imread('演示图像16位灰度.tif');X

3、5,MAP5=imread('演示图像24位色.tif');X6,MAP6=imread('演示图像48位色.tif');图像类型简称显示的颜色数特 点1位单色单色21=2种(黑、白)每象素对应一个值,取值为0和18位灰度黑白28=256个(黑到白)每象素对应一个值,取值为0255,每值对应一灰度8位彩色256色28=256种彩色每象素对应一个值,取值为0255,每值对应一颜色16位灰度216=65536个(黑到白)每象素对应一个值,取值为065535,每值对应一灰度24位彩色真彩色28×28×28=16M种彩色每象素对应三个值,分别代表R、

4、G、B,取值为025548位彩色216×216×216=0.25G种色每象素对应三个值,分别代表R、G、B,取值为065535whos Name Size Bytes Class MAP1 0x0 0 double array MAP2 0x0 0 double array MAP3 256x3 6144 double array MAP4 0x0 0 double array MAP5 0x0 0 double array MAP6 0x0 0 double array X1 427x427 182329 logical array X2 427x427 182329 u

5、int8 array X3 427x427 182329 uint8 array X4 427x427 364658 uint16 array X5 427x427x3 546987 uint8 array X6 427x427x3 1093974 uint16 arrayGrand total is 1824058 elements using 2558750 bytes 2、读取图像信息可以通过调用imfinfo函数获得与图像文件有关的信息,格式如下:INFO=imfinfo('FILENAME.FMT')其中:返回的INFO是Matlab的一个结构体。【例】查看图像信息I

6、NFO=imfinfo('演示图像48位色.tif') INFO = Filename: 1x36 char FileModDate: '23-May-2012 22:14:23' FileSize: 1107548 Format: 'tif' FormatVersion: Width: 427 Height: 427 BitDepth: 48 ColorType: 'truecolor' FormatSignature: 73 73 42 0 ByteOrder: 'little-endian' NewSubfi

7、leType: 0 BitsPerSample: 16 16 16 Compression: 'Uncompressed' PhotometricInterpretation: 'RGB' StripOffsets: 13528 SamplesPerPixel: 3 RowsPerStrip: 427 StripByteCounts: 1093974 XResolution: 2.7115 YResolution: 2.7115 ResolutionUnit: 'Inch' Colormap: PlanarConfiguration: '

8、Chunky' TileWidth: TileLength: TileOffsets: TileByteCounts: Orientation: 1 FillOrder: 1 GrayResponseUnit: 0.0100 MaxSampleValue: 65535 65535 65535 MinSampleValue: 0 Thresholding: 1 NewSubFileType: 0 Software: 'Adobe Photoshop 7.0 ' DateTime: '2010:05:23 22:14:23 ' 二、图像显示Matlab的图像

9、显示函数主要有imshow、image、imview、colorbar和subimage五个。imview函数打开专门用于图像显示的浏览器。函数imview与imshow的区别在于用imview函数打开的图像浏览器可以对图像进行一些简单的操作。image函数与imshow的区别在于,image函数创建的图像由纵横坐标。1、imshow(I,n)显示灰度级为n的图像,n缺省为256。【例】按256灰度级显示I=imread('moon.tif');imshow(I,256)colorbar 【例】按8灰度级显示I=imread('moon.tif');imshow

10、(I,8)colorbar 2、imshow(I,low,high)以灰度范围low,high显示图像,如果不知道灰度范围,可以用imshow(I,)显示。【例】按最大灰度范围显示I=imread('moon.tif');imshow(I,)colorbar 【例】按指定灰度范围显示I=imread('moon.tif');imshow(I,64,128)colorbar 小结:显示灰度图像的格式为: imshow(I) I为所显示的灰度图像的数据矩阵imshow(I,n) n为整数,代表多要显示图像的灰度等级数,默认为256imshow(I,low,high)

11、 low和high表示数据数组的最小值和最大值;如果使用空矩阵(),指定数据范围,imshow将自动进行数据标度。3、imshow(BW)显示二值图像。【例】双精度灰度图像bw1=zeros(100,100);bw1(2:2:98,2:2:98)=1;imshow(bw1);whos bw1 Name Size Bytes Class bw1 100x100 80000 double arrayGrand total is 10000 elements using 80000 bytes【例】8位的灰度图像bw1=zeros(100,100);bw1(2:2:98,2:2:98)=1;bw2=

12、uint8(bw1);imshow(bw2,);colorbarwhos bw2 Name Size Bytes Class bw2 100x100 10000 uint8 arrayGrand total is 10000 elements using 10000 bytes【例】二值图像bw1=zeros(100,100);bw1(2:2:98,2:2:98)=1;bw2=uint8(bw1);bw3=bw2=0;imshow(bw3);whos bw3 Name Size Bytes Class bw3 100x100 10000 logical arrayGrand total is

13、10000 elements using 10000 bytes【例】显示二值图像BW=imread('circles.tif');imshow(BW); 【例】取反显示二值图像BW=imread('circles.tif');imshow(BW); 【例】显示二值图像clfBW=imread('circles.tif');imshow(BW,1 0 0;0 0 1); 小结:显示二值图像的格式为:imshow(BW)imshow(BW,map) 用色图map将0和1对应的像素点显示的颜色进行改变。4、imshow(X,MAP)显示索引图像,X为

14、数据图像矩阵,MAP为调色板。【例】显示索引图像X,MAP=imread('canoe.tif');imshow(X,MAP);colorbar 【例】显示伪彩色图像I=imread('moon.tif');imshow(I,jet(256)colorbar小结:显示索引图像的格式为:imshow(X,map)image(X) :带有坐标5、imshow(RGB)显示真彩色图像。【例】rgb=imread('flowers.tif');imshow(rgb); 6、显示多帧图像序列一个多帧的图像文件包含了一幅或多幅图像。MATLAB支持的多帧图像

15、文件格式是HDF和TIFF。多帧图像一旦被读入matlab内,多帧图像的图像帧被保存在图像数组的第四维中。多帧图像可以从磁盘中用imread指令导入或者由matlab创建。多帧图像有以下几种不同的显示方法:l 用imshow函数显示单帧图像;l 用montage函数显示所有帧图像;l 用immoive函数显把帧图像转换成动画显示。6.1 显示单帧图像例如:显示多帧图像数组I的第七帧命令为:imshow(I(:,:,:,7)clear allclcclfmri=uint8(zeros(128,128,1,27);%初始化一个27帧的图像数组for frame=1:27 mri(:,:,:,fra

16、me),map=imread('mri.tif');% 把对应的每一帧读入内存中endimshow(mri(:,:,:,7),map)%显示图像中的第七帧6.2 显示多帧图像 Montage函数用于在同一时间显示多帧图像中的所有帧,所有帧显示在同一图像对象中。调用格式如下:l montage(I):显示灰度图像I共K帧:mXnX1Xk数组l Montage(BW):显示二值图像BW共K帧:mXnX1Xk数组l Montage(X,MAP):显示索引图像X共K帧:mXnX1Xk数组l Montage(RGB):显示真彩色图像RGB共K帧:mXnX3Xk数组Montage函数把所有

17、帧图像以近似正方形的方式排序。对于每一帧图像的色图必须相同。显示多帧图像示例:clear allclcclfmri=uint8(zeros(128,128,1,27);%初始化一个27帧的图像数组for frame=1:27 mri(:,:,:,frame),map=imread('mri.tif');% 把对应的每一帧读入内存中endmontage(mri,map)%显示图像中的所有帧6.3 显示动画immovie函数可以从一个多帧图像数组中创建matlab动画例如:clear allclcclfmri=uint8(zeros(128,128,1,27);%初始化一个27帧的

18、图像数组for frame=1:27 mri(:,:,:,frame),map=imread('mri.tif');% 把对应的每一帧读入内存中endmov=immovie(mri,map);%创建动画帧结构movie(mov)%播放动画7、imshow filename直接从磁盘显示图像。【例】直接显示图像imshow('moon.tif');I=getimage;whos I Name Size Bytes Class I 537x358 192246 uint8 arrayGrand total is 192246 elements using 19224

19、6 bytes8、subimage多图显示多个调色板的图像。【例】load trees;x2,map2=imread('forest.tif');subplot(2,1,1),subimage(X,map);colorbarsubplot(2,1,2),subimage(x2,map2);colorbar 【例】不用专用函数显示多图load trees;x2,map2=imread('forest.tif');subplot(2,1,1),imshow(x2,map2);colorbarsubplot(2,1,2),imshow(X,map);colorbar三

20、、保存图像1、imwrite函数imwrite(I,'文件名','文件格式')保存无调色板的图像imwrite(X,MAP,'文件名','文件格式')保存有调色板的图像imwrite(.,'文件名')文件名中含格式imwrite(.,'参数','值')指定保存参数文件格式:bmp、jpg、pcx、tif等。【例】将tif图像保存为jpg图像x,map=imread('canoe.tif');imwrite(x,map,'canoe.jpg','

21、JPG','Quality',75)四、图像数据格式转换doubleuint8uint161、索引图像假设:X8表示8位的索引图像,X16表示16位的索引图像,X64表示双精度的索引图像,则有:X64=double(X8)+1 uint8格式转double格式X64=double(X16)+1 uint16格式转double格式X8=uint8(X64-1) double格式转uint8格式X16=uint16(X64-1) double格式转uint16格式X8=uint8(X16) uint16格式转uint8格式X16=uint16(X8) uint8格式转uint16格式2、灰度图像G=mat2gray(A,Amin,Amax)Amin Amax默认为A的最小和最大值 返回是个Double类型的值假设:I8表示8位的灰度图像,I16表示16位的灰度图像,

温馨提示

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

评论

0/150

提交评论