第4章MATLAB图像显示.docx

上传人:b****7 文档编号:10849454 上传时间:2023-02-23 格式:DOCX 页数:19 大小:1.95MB
下载 相关 举报
第4章MATLAB图像显示.docx_第1页
第1页 / 共19页
第4章MATLAB图像显示.docx_第2页
第2页 / 共19页
第4章MATLAB图像显示.docx_第3页
第3页 / 共19页
第4章MATLAB图像显示.docx_第4页
第4页 / 共19页
第4章MATLAB图像显示.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

第4章MATLAB图像显示.docx

《第4章MATLAB图像显示.docx》由会员分享,可在线阅读,更多相关《第4章MATLAB图像显示.docx(19页珍藏版)》请在冰豆网上搜索。

第4章MATLAB图像显示.docx

第4章MATLAB图像显示

第四章图像显示

Matlab进行图像处理的步骤如下:

读取图像到Matlab工作空间

对图像矩阵进行格式转换

对图像矩阵数据进行处理

↓↓

显示图像保存图像

【目录】

一、读图像和图像信息

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');

[X5,MAP5]=imread('演示图像-24位色.tif');

[X6,MAP6]=imread('演示图像-48位色.tif');

 

图像类型

简称

显示的颜色数

特点

1位单色

单色

21=2种(黑、白)

每象素对应一个值,取值为0和1

8位灰度

黑白

28=256个(黑到白)

每象素对应一个值,取值为0-255,每值对应一灰度

8位彩色

256色

28=256种彩色

每象素对应一个值,取值为0-255,每值对应一颜色

16位灰度

216=65536个(黑到白)

每象素对应一个值,取值为0-65535,每值对应一灰度

24位彩色

真彩色

28×28×28=16M种彩色

每象素对应三个值,分别代表R、G、B,取值为0-255

48位彩色

216×216×216=0.25G种色

每象素对应三个值,分别代表R、G、B,取值为0-65535

whos

NameSizeBytesClass

MAP10x00doublearray

MAP20x00doublearray

MAP3256x36144doublearray

MAP40x00doublearray

MAP50x00doublearray

MAP60x00doublearray

X1427x427182329logicalarray

X2427x427182329uint8array

X3427x427182329uint8array

X4427x427364658uint16array

X5427x427x3546987uint8array

X6427x427x31093974uint16array

Grandtotalis1824058elementsusing2558750bytes

2、读取图像信息

可以通过调用imfinfo函数获得与图像文件有关的信息,格式如下:

INFO=imfinfo('FILENAME.FMT')其中:

返回的INFO是Matlab的一个结构体。

【例】查看图像信息

INFO=imfinfo('演示图像-48位色.tif')

INFO=

Filename:

[1x36char]

FileModDate:

'23-May-201222:

14:

23'

FileSize:

1107548

Format:

'tif'

FormatVersion:

[]

Width:

427

Height:

427

BitDepth:

48

ColorType:

'truecolor'

FormatSignature:

[7373420]

ByteOrder:

'little-endian'

NewSubfileType:

0

BitsPerSample:

[161616]

Compression:

'Uncompressed'

PhotometricInterpretation:

'RGB'

StripOffsets:

13528

SamplesPerPixel:

3

RowsPerStrip:

427

StripByteCounts:

1093974

XResolution:

2.7115

YResolution:

2.7115

ResolutionUnit:

'Inch'

Colormap:

[]

PlanarConfiguration:

'Chunky'

TileWidth:

[]

TileLength:

[]

TileOffsets:

[]

TileByteCounts:

[]

Orientation:

1

FillOrder:

1

GrayResponseUnit:

0.0100

MaxSampleValue:

[655356553565535]

MinSampleValue:

0

Thresholding:

1

NewSubFileType:

0

Software:

'AdobePhotoshop7.0'

DateTime:

'2010:

05:

2322:

14:

23'

二、图像显示

Matlab的图像显示函数主要有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(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为整数,代表多要显示图像的灰度等级数,默认为256

imshow(I,[low,high])low和high表示数据数组的最小值和最大值;

如果使用空矩阵([]),指定数据范围,imshow将自动进行数据标度。

3、imshow(BW)

显示二值图像。

【例】双精度灰度图像

bw1=zeros(100,100);

bw1(2:

2:

98,2:

2:

98)=1;

imshow(bw1);

whosbw1

NameSizeBytesClass

bw1100x10080000doublearray

Grandtotalis10000elementsusing80000bytes

【例】8位的灰度图像

bw1=zeros(100,100);

bw1(2:

2:

98,2:

2:

98)=1;

bw2=uint8(bw1);

imshow(bw2,[]);

colorbar

whosbw2

NameSizeBytesClass

bw2100x10010000uint8array

Grandtotalis10000elementsusing10000bytes

【例】二值图像

bw1=zeros(100,100);

bw1(2:

2:

98,2:

2:

98)=1;

bw2=uint8(bw1);

bw3=bw2~=0;

imshow(bw3);

whosbw3

NameSizeBytesClass

bw3100x10010000logicalarray

Grandtotalis10000elementsusing10000bytes

【例】显示二值图像

BW=imread('circles.tif');

imshow(BW);

【例】取反显示二值图像

BW=imread('circles.tif');

imshow(~BW);

【例】显示二值图像

clf

BW=imread('circles.tif');

imshow(BW,[100;001]);

小结:

显示二值图像的格式为:

imshow(BW)

imshow(BW,map)用色图map将0和1对应的像素点显示的颜色进行改变。

4、imshow(X,MAP)

显示索引图像,X为数据图像矩阵,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支持的多帧图像文件格式是HDF和TIFF。

多帧图像一旦被读入matlab内,多帧图像的图像帧被保存在图像数组的第四维中。

多帧图像可以从磁盘中用imread指令导入或者由matlab创建。

多帧图像有以下几种不同的显示方法:

●用imshow函数显示单帧图像;

●用montage函数显示所有帧图像;

●用immoive函数显把帧图像转换成动画显示。

6.1显示单帧图像

例如:

显示多帧图像数组I的第七帧

命令为:

imshow(I(:

:

:

7))

clearall

clc

clf

mri=uint8(zeros(128,128,1,27));

%初始化一个27帧的图像数组

forframe=1:

27

[mri(:

:

:

frame),map]=imread('mri.tif');

%把对应的每一帧读入内存中

end

imshow(mri(:

:

:

7),map)%显示图像中的第七帧

6.2显示多帧图像

Montage函数用于在同一时间显示多帧图像中的所有帧,所有帧显示在同一图像对象中。

调用格式如下:

●montage(I):

显示灰度图像I共K帧:

mXnX1Xk数组

●Montage(BW):

显示二值图像BW共K帧:

mXnX1Xk数组

●Montage(X,MAP):

显示索引图像X共K帧:

mXnX1Xk数组

●Montage(RGB):

显示真彩色图像RGB共K帧:

mXnX3Xk数组

Montage函数把所有帧图像以近似正方形的方式排序。

对于每一帧图像的色图必须相同。

显示多帧图像示例:

clearall

clc

clf

mri=uint8(zeros(128,128,1,27));

%初始化一个27帧的图像数组

forframe=1:

27

[mri(:

:

:

frame),map]=imread('mri.tif');

%把对应的每一帧读入内存中

end

montage(mri,map)%显示图像中的所有帧

6.3显示动画

immovie函数可以从一个多帧图像数组中创建matlab动画

例如:

clearall

clc

clf

mri=uint8(zeros(128,128,1,27));

%初始化一个27帧的图像数组

forframe=1:

27

[mri(:

:

:

frame),map]=imread('mri.tif');

%把对应的每一帧读入内存中

end

mov=immovie(mri,map);%创建动画帧结构

movie(mov)%播放动画

7、imshowfilename

直接从磁盘显示图像。

【例】直接显示图像

imshow('moon.tif');

I=getimage;

whosI

NameSizeBytesClass

I537x358192246uint8array

Grandtotalis192246elementsusing192246bytes

8、subimage

多图显示多个调色板的图像。

【例】

loadtrees;

[x2,map2]=imread('forest.tif');

subplot(2,1,1),subimage(X,map);colorbar

subplot(2,1,2),subimage(x2,map2);colorbar

【例】不用专用函数显示多图

loadtrees;

[x2,map2]=imread('forest.tif');

subplot(2,1,1),imshow(x2,map2);colorbar

subplot(2,1,2),imshow(X,map);colorbar

 

三、保存图像

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','JPG','Quality',75)

四、图像数据格式转换

1、索引图像

假设:

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])

AminAmax默认为A的最小和最大值返回是个Double类型的值

假设:

I8-表示8位的灰度图像,I16-表示16位的灰度图像,I64-表示双精度的灰度图像,则有:

I64=double(I8/255)-uint8格式转double格式

I64=double(I16/65535)-uint16格式转double格式

I8=uint8(round(I64*255))-double格式转uint8格式

I16=uint16(round(I64*65535))-double格式转uint16格式

I8=uint8(round(I16/257))-uint16格式转uint8格式

I16=uint16(round(I8*257))-uint8格式转uint16格式

3、真彩色图像

假设:

RGB8-表示8位的真彩图像,RGB16-表示16位的真彩图像,RGB64-表示双精度的真彩图像,则有:

RGB64=double(RGB8/255)-uint8格式转double格式

RGB64=double(RGB16/65535)-uint16格式转double格式

RGB8=uint8(round(RGB64*255))-double格式转uint8格式

RGB16=uint16(round(RGB64*65535))-double格式转uint16格式

RGB8=uint8(round(RGB16/257))-uint16格式转uint8格式

RGB16=uint16(round(RGB8*257))-uint8格式转uint16格式

4、二值图像

G=im2bw(f,T)T默认为0.5

假设BW8表示8位二值图像,BW64表示双精度二值图像,则有:

BW64=double(BW8)uint8格式转double格式

BW8=uint8(BW64)~=0double格式转uint8格式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1