MATLAB图像显示与格式转换Word文档下载推荐.docx
《MATLAB图像显示与格式转换Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB图像显示与格式转换Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
真彩图像的每个像素直接用R、G、B三个字节来表示颜色,因此不需要调色板。
2、图像类型
图像类型
简称
显示的颜色数
特点
1位单色
单色
21=2种(黑、白)
每象素对应一个值,取值为0和1
8位灰度
黑白
28=256个(黑到白)
每象素对应一个值,取值为0-255,每值对应一灰度
8位彩色
256色
28=256种彩色
每象素对应一个值,取值为0-255,每值对应一颜色
16位灰度
216=65536个(黑到白)
每象素对应一个值,取值为0-65535,每值对应一灰度
24位彩色
真彩色
28×
28=16M种彩色
每象素对应三个值,分别代表R、G、B,取值为0-255
48位彩色
216×
216=0.25G种色
每象素对应三个值,分别代表R、G、B,取值为0-65535
3、图像文件格式
文件
类型
说明
1位
8位
灰度
彩色
16位
24位
48位
BMP
微软视窗系统图像文件格式
√
×
GIF
用于网页上的动画、透明
TIFF
可储存多幅图像
PCX
Paintbrush软件图像格式
JPG
连续色调静态图像数字压缩
PSD
Photoshop软件图像格式
二、读图像和图像信息
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'
whos
NameSizeBytesClass
MAP10x00doublearray
MAP20x00doublearray
MAP3256x36144doublearray
MAP40x00doublearray
MAP50x00doublearray
MAP60x00doublearray
X1427x427182329logicalarray
X2427x427182329uint8array
X3427x427182329uint8array
X4427x427364658uint16array
X5427x427x3546987uint8array
X6427x427x31093974uint16array
Grandtotalis1824058elementsusing2558750bytes
2、读取图像信息
可以通过调用imfinfo函数获得与图像文件有关的信息,格式如下:
INFO=imfinfo(FILENAME,'
)其中:
返回的INFO是Matlab的一个结构体。
【例】查看图像信息
INFO=imfinfo('
)
INFO=
Filename:
[1x36char]
FileModDate:
'
23-May-200422:
14:
23'
FileSize:
1107548
Format:
tif'
FormatVersion:
[]
Width:
427
Height:
BitDepth:
48
ColorType:
truecolor'
FormatSignature:
[7373420]
ByteOrder:
little-endian'
NewSubfileType:
0
BitsPerSample:
[161616]
Compression:
Uncompressed'
PhotometricInterpretation:
RGB'
StripOffsets:
13528
SamplesPerPixel:
3
RowsPerStrip:
StripByteCounts:
1093974
XResolution:
2.7115
YResolution:
ResolutionUnit:
Inch'
Colormap:
PlanarConfiguration:
Chunky'
TileWidth:
TileLength:
TileOffsets:
TileByteCounts:
Orientation:
1
FillOrder:
GrayResponseUnit:
0.0100
MaxSampleValue:
[655356553565535]
MinSampleValue:
Thresholding:
NewSubFileType:
Software:
AdobePhotoshop7.0'
DateTime:
2004:
05:
2322:
23'
三、图像类别与数据格式
双精度类:
Double
(每个元素占8个字节)
整数类:
Unit8
(每个元素占1个字节)
整数类(Unit16)
(每个元素占2个字节)
真
彩
图
像
数组大小:
m×
n×
3
(:
:
1)-红色分量
2)-绿色分量
3)-蓝色分量
元素取值:
[0,1]
(无调色板)
[0,255]
[0,65535]
索
引
图像数组大小:
n
图像元素取值:
[1,p]
色度矩阵:
p×
色度元素值:
[0,p-1]
灰
度
图像元素值:
二
值
图像元素值:
0或1
四、图像显示
Matlab的图像显示函数主要有imshow、colorbar和subimage三个。
1、imshow(I,n)
显示灰度级为n的图像,n缺省为256。
【例】按256灰度级显示
I=imread('
moon.tif'
imshow(I,256)
colorbar
【例】按8灰度级显示
imshow(I,8)
2、imshow(I,[low,high])
以灰度范围[low,high]显示图像,如果不知道灰度范围,可以用imshow(I,[])显示。
【例】按最大灰度范围显示
imshow(I,[])
【例】按指定灰度范围显示
imshow(I,[64,128])
3、imshow(BW)
显示二值图像。
【例】双精度灰度图像
bw1=zeros(100,100);
bw1(2:
2:
98,2:
98)=1;
imshow(bw1);
whosbw1
bw1100x10080000doublearray
Grandtotalis10000elementsusing80000bytes
【例】8位的灰度图像
bw2=uint8(bw1);
imshow(bw2,[]);
colorbar
whosbw2
bw2100x10010000uint8array
Grandtotalis10000elementsusing10000bytes
【例】二值图像
bw3=bw2~=0;
imshow(bw3);
whosbw3
bw3100x10010000logicalarray
【例】显示二值图像
BW=imread('
circles.tif'
imshow(BW);
【例】取反显示二值图像
imshow(~BW);
clf
imshow(BW,[100;
001]);
4、imshow(X,MAP)
显示索引图像,X为数据图像矩阵,MAP为调色板。
【例】显示索引图像
[X,MAP]=imread('
canoe.tif'
imshow(X,MAP);
【例】显示伪彩色图像
imshow(I,jet(256))
5、imshow(RGB)
显示真彩色图像。
【例】
rgb=imread('
flowers.tif'
imshow(rgb);
6、imshowfilename
直接显示图像。
【例】直接显示图像
imshow('
I=getimage;
whosI
I537x358192246uint8array
Grandtotalis192246elementsusing192246bytes
7、subimage
多图显示多个调色板的图像。
loadtrees;
[x2,map2]=imread('
forest.tif'
subplot(2,1,1),subimage(X,map);
subplot(2,1,2),subimage(x2,map2);
【例】不用专用函数显示多图
subplot(2,1,1),imshow(x2,map2);
subplot(2,1,2),imshow(X,map);
五、保存图像
1、imwrite函数
imwrite(I,'
文件名'
'
文件格式'
)-保存无调色板的图像
imwrite(X,MAP,'
)-保存有调色板的图像
imwrite(...,'
)-文件名中含格式
参数'
值'
)-指定保存参数
文件格式:
bmp、jpg、pcx、tif。
【例】将tif图像保存为jpg图像
[x,map]=imread('
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、灰度图像
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、二值图像
假设BW8表示8位二值图像,BW64表示双精度二值图像,则有:
BW64=double(BW8)uint8格式转double格式
BW8=uint8(BW64)~=0double格式转uint8格式
plot3(X,Y,Z,'
bo'
)