(整理)MATLAB图像显示与格式转换.
第五讲M A T L A B可视化(三)
图像显示
M a t l a b进行图像处理的步骤如下:
↓
↓
↓↓
【目录】
一、图像文件格式 (2)
1、调色板 (2)
2、图像类型 (2)
3、图像文件格式 (3)
二、读图像和图像信息 (3)
1、读取图像 (3)
2、读取图像信息 (4)
三、图像类别与数据格式 (6)
四、图像显示 (8)
1、i m s h o w(I,n) (8)
2、i m s h o w(I,[l o w,h i g h]) (9)
3、i m s h o w(B W) (10)
4、i m s h o w(X,M A P) (14)
5、i m s h o w(R G B) (15)
6、i m s h o w f i l e n a m e (16)
7、s u b i m a g e (17)
五、保存图像 (18)
1、i m w r i t e函数 (18)
六、图像数据格式转换 (18)
1、索引图像 (19)
2、灰度图像 (19)
3、真彩色图像 (19)
4、二值图像 (20)
【正文】
一、图像文件格式
1、调色板
调色板是包含不同颜色的颜色表,每种颜色以红、绿、蓝三种颜色的组合来表示,图像的每一个像素对应一个数字,而该数字对应调色板中的一种颜色。
调色板的单元个数是与图像的颜色数相对应的,256色图像的调色板就有256个单元。
真彩图像的每个像素直接用R、G、B三个字节来表示颜色,因此不需要调色板。
2、图像类型
3、图像文件格式
二、读图像和图像信息
1、读取图像
函数i m r e a d可以从任何M a t l a b支持的图像文件格式中,以任意位深度读取一幅图像。格式为:
[X,M A P]=i m r e a d(F I L E N A M E,'F M T'),其中:
F I L E N A M E-为需要读入的图像文件名称,F M T-为图像格式。
【例】图像读取演示
[X1,M A P1]=i m r e a d('演示图像-1位黑白.t i f');
[X2,M A P2]=i m r e a d('演示图像-8位灰度.t i f');
[X3,M A P3]=i m r e a d('演示图像-256色.t i f');
[X4,M A P4]=i m r e a d('演示图像-16位灰度.t i f');
[X5,M A P5]=i m r e a d('演示图像-24位色.t i f');
[X6,M A P6]=i m r e a d('演示图像-48位色.t i f');
w h o s
N a m e S i z e B y t e s C l a s s
M A P10x00d o u b l e a r r a y
M A P20x00d o u b l e a r r a y
M A P3256x36144d o u b l e a r r a y
M A P40x00d o u b l e a r r a y
M A P50x00d o u b l e a r r a y
M A P60x00d o u b l e a r r a y
X1427x427182329l o g i c a l a r r a y
X2427x427182329u i n t8a r r a y
X3427x427182329u i n t8a r r a y
X4427x427364658u i n t16a r r a y
X5427x427x3546987u i n t8a r r a y
X6427x427x31093974u i n t16a r r a y
G r a n d t o t a l i s1824058e l e m e n t s u s i n g2558750b y t e s
2、读取图像信息
可以通过调用i m f i n f o函数获得与图像文件有关的信息,格式如下:
I N F O=i m f i n f o(F I L E N A M E,'F M T')其中:
返回的I N F O是M a t l a b的一个结构体。
【例】查看图像信息
I N F O=i m f i n f o('演示图像-48位色.t i f')
I N F O=
F i l e n a m e:[1x36c h a r]
F i l e M o d D a t e:'23-M a y-200422:14:23'
F i l e S i z e:1107548
F o r m a t:'t i f'
F o r m a t V e r s i o n:[]
W i d t h:427
H e i g h t:427
B i t D e p t h:48
C o l o r T y p e:'t r u e c o l o r'
F o r m a t S i g n a t u r e:[7373420]
B y t e O r d e r:'l i t t l e-e n d i a n'
N e w S u b f i l e T y p e:0
B i t s P e r S a m p l e:[161616]
C o m p r e s s i o n:'U n c o m p r e s s e d'
P h o t o m e t r i c I n t e r p r e t a t i o n:'R G B'
S t r i p O f f s e t s:13528
S a m p l e s P e r P i x e l:3
R o w s P e r S t r i p:427
S t r i p B y t e C o u n t s:1093974
X R e s o l u t i o n:2.7115
Y R e s o l u t i o n:2.7115
R e s o l u t i o n U n i t:'I n c h'
C o l o r m a p:[]
P l a n a r C o n f i g u r a t i o n:'C h u n k y'
T i l e W i d t h:[]
T i l e L e n g t h:[]
T i l e O f f s e t s:[]
T i l e B y t e C o u n t s:[]
O r i e n t a t i o n:1
F i l l O r d e r:1
G r a y R e s p o n s e U n i t:0.0100
M a x S a m p l e V a l u e:[655356553565535]
M i n S a m p l e V a l u e:0
T h r e s h o l d i n g:1
N e w S u b F i l e T y p e:0
S o f t w a r e:'A d o b e P h o t o s h o p7.0'
D a t e T i m e:'2004:05:2322:14:23'
三、图像类别与数据格式
组大小:m×n 素值:[0,1]阵:p×3
素值:[0,1]图像数组大小:m×n
图像元素值:[0,255]
色度矩阵:p×3
色度元素值:[0,1]
图像数组
图像元素
色度矩阵
色度元素
四、图像显示
M a t l a b 的图像显示函数主要有i m s h o w 、c o l o r b a r 和s u b i m a g e 三个。
1、i m s h o w (I ,n )
显示灰度级为n 的图像,n 缺省为256。
【例】按256灰度级显示
I=i m r e a d('m o o n.t i f');
i m s h o w(I,256)
250
200
150
100
50
度级显示
I=i m r e a d('m o o n.t i f');
i m s h o w(I,8)
250
200
150
100
50
I,[l o w,h i g h])
以灰度范围[l o w,h i g h]显示图像,如果不知道灰度范围,可以用
i m s h o w(I,[])显示。
【例】按最大灰度范围显示
I=i m r e a d('m o o n.t i f');
i m s h o w(I,[])
250
200
150
100
50
灰度范围显示
I=i m r e a d('m o o n.t i f');
i m s h o w(I,[64,128])
120
110
100
90
80
70
B W)
显示二值图像。
【例】双精度灰度图像
b w1=z e r o s(100,100);
b w1(2:2:98,2:2:98)=1;
i m s h o w(b w1);
w h o s b w1
N a m e S i z e B y t e s C l a s s
b w1100x10080000d o u b l e a r r a y
G r a n d t o t a l i s10000e l e m e n t s u s i n g80000b y t e s
【例】8位的灰度图像
b w1=z e r o s(100,100);
b w1(2:2:98,2:2:98)=1;
b w2=u i n t8(b w1);
i m s h o w(b w2,[]);
c o l o r b a r
w h o s b w2
N a m e S i z e B y t e s C l a s s
b w2100x10010000u i n t8a r r a y
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
值图像
b w1=z e r o s(100,100);
b w1(2:2:98,2:2:98)=1;
b w2=u i n t8(b w1);
b w3=b w2~=0;
i m s h o w(b w3);
w h o s b w3
N a m e S i z e B y t e s C l a s s
b w3100x10010000l o g i
c a l a r r a y
G r a n d t o t a l i s10000e l e m e n t s u s i n g10000b y t e s
【例】显示二值图像
B W=i m r e a d('c i r c l e s.t i f');
i m s h o w(B W);
【例】取反显示二值图像
B W=i m r e a d('c i r c l e s.t i f');
i m s h o w(~B W);
【例】显示二值图像
c l f
B W=i m r e a d('c i r c l e s.t i f');
i m s h o w(B W,[100;001]);
4、i m s h o w(X,M A P)
显示索引图像,X为数据图像矩阵,M A P为调色板。【例】显示索引图像
[X,M A P]=i m r e a d('c a n o e.t i f');
i m s h o w(X,M A P);
c o l o r b a r
250
200
150
100
50
显示伪彩色图像
I=i m r e a d('m o o n.t i f');
i m s h o w(I,j e t(256))
250
200
150
100
50
R G B)
显示真彩色图像。
【例】
r g b=i m r e a d('f l o w e r s.t i f');
i m s h o w(r g b);
6、i m s h o w f i l e n a m e
直接显示图像。
【例】直接显示图像
i m s h o w('m o o n.t i f');
I=g e t i m a g e;
w h o s I
N a m e S i z e B y t e s C l a s s
I537x358192246u i n t8a r r a y
G r a n d t o t a l i s192246e l e m e n t s u s i n g192246b y t e s
moon.tif
7、s u b i m a g e
多图显示多个调色板的图像。
【例】
l o a d t r e e s ;
[x 2,m a p 2]=i m r e a d ('f o r e s t .t i f ');
s u b p l o t (2,1,1),s u b i m a g e (X ,m a p );c o l o r b a r 50
100
150
200
250
300
350
50100150200250
50
100150200250
50
100
150
200
250
300
350
400
50100
150200250300
50100150
200
250
函数显示多图
l o a d t r e e s ;
[x 2,m a p 2]=i m r e a d ('f o r e s t .t i f ');
s u b p l o t (2,1,1),i m s h o w (x 2,m a p 2);c o l o r b a r s u b p l o t (2,1,2),i m s h o w (X ,m a p );c o l o r b a r
50
1001502002501、i m w r i t e 函数
i m w r i t e (I ,'文件名','文件格式')-保存无调色板的图像 i m w r i t e (X ,M A P ,'文件名','文件格式')-保存有调色板的图像 i m w r i t e (...,'文件名')-文件名中含格式 i m w r i t e (...,'参数','值')-指定保存参数 文件格式:b m p 、j p g 、p c x 、t i f 。
【例】将t i f 图像保存为j p g 图像
[x ,m a p ]=i m r e a d ('c a n o e .t i f ');
i m w r i t e (x ,m a p ,'c a n o e .j p g ','J P G ','Q u a l i
t y ',75)
六、图像数据格式转换
假设:X8-表示8位的索引图像,X16-表示16位的索引图像,X64-表示双精度的索引图像,则有:
X64=d o u b l e(X8)+1-u i n t8格式转d o u b l e格式
X64=d o u b l e(X16)+1-u i n t16格式转d o u b l e格式
X8=u i n t8(X64-1)-d o u b l e格式转u i n t8格式
X16=u i n t16(X64-1)-d o u b l e格式转u i n t16格式
X8=u i n t8(X16)-u i n t16格式转u i n t8格式
X16=u i n t16(X8)-u i n t8格式转u i n t16格式
2、灰度图像
假设:I8-表示8位的灰度图像,I16-表示16位的灰度图像,I64-表示双精度的灰度图像,则有:
I64=d o u b l e(I8/255)-u i n t8格式转d o u b l e格式
I64=d o u b l e(I16/65535)-u i n t16格式转d o u b l e格式
I8=u i n t8(r o u n d(I64*255))-d o u b l e格式转u i n t8格式
I16=u i n t16(r o u n d(I64*65535))-d o u b l e格式转u i n t16格式
I8=u i n t8(r o u n d(I16/257))-u i n t16格式转u i n t8格式
I16=u i n t16(r o u n d(I8*257))-u i n t8格式转u i n t16格式
3、真彩色图像
假设:R G B8-表示8位的真彩图像,R G B16-表示16位的真彩图像,R G B64-表示双精度的真彩图像,则有:
R G B64=d o u b l e(R G B8/255)-u i n t8格式转d o u b l e格式
R G B64=d o u b l e(R G B16/65535)-u i n t16格式转d o u b l e格式
R G B8=u i n t8(r o u n d(R G B64*255))-d o u b l e格式转u i n t8格式
R G B16=u i n t16(r o u n d(R G B64*65535))-d o u b l e格式转u i n t16格式R G B8=u i n t8(r o u n d(R G B16/257))-u i n t16格式转u i n t8格式
R G B16=u i n t16(r o u n d(R G B8*257))-u i n t8格式转u i n t16格式
假设B W8表示8位二值图像,B W64表示双精度二值图像,则有:B W64=d o u b l e(B W8)u i n t8格式转d o u b l e格式
B W8=u i n t8(B W64)~=0d o u b l e格式转u i n t8格式
p l o t3(X,Y,Z,'b o')