第四讲 MATLAB可视化
图像显示
【目录】
§4.1、图像文件格式................................................................................................................... 2 1、调色板 ................................................................................................................................ 2 2、图像类型 ............................................................................................................................ 2 3、图像文件格式 .................................................................................................................... 3 §4.2、读图像和图像信息 ........................................................................................................... 3 1、读取图像 ............................................................................................................................ 3 2、读取图像信息 .................................................................................................................... 4 §4.3、图像类别与数据格式 ....................................................................................................... 5 §4.4、图像显示 ........................................................................................................................... 7 1、imshow(I,n) ......................................................................................................................... 7 2、imshow(I,[low,high]) .......................................................................................................... 8 3、imshow(BW) ....................................................................................................................... 9 4、imshow(X,MAP) ............................................................................................................... 12 5、imshow(RGB) ................................................................................................................... 13 6、imshow filename ............................................................................................................... 14 7、subimage ........................................................................................................................... 14 §4.5、保存图像 ......................................................................................................................... 15 1、imwrite函数 ..................................................................................................................... 15 §4.6、图像数据格式转换 ......................................................................................................... 16 1、索引图像 .......................................................................................................................... 16 2、灰度图像 .......................................................................................................................... 16 3、真彩色图像 ...................................................................................................................... 17 4、二值图像 .......................................................................................................................... 17
图像显示 -1-
Matlab进行图像处理的步骤如下:
读取图像到Matlab工作空间 ↓ 对图像矩阵进行格式转换 ↓ 对图像矩阵数据进行处理 ↓ ↓ 显示图像 保存图像
§4.1、图像文件格式
1、调色板
调色板是包含不同颜色的颜色表,每种颜色以红、绿、蓝三种颜色的组合来表示,图像的每一个像素对应一个数字,而该数字对应调色板中的一种颜色。
调色板的单元个数是与图像的颜色数相对应的,256色图像的调色板就有256个单元。
真彩图像的每个像素直接用R、G、B三个字节来表示颜色,因此不需要调色板。
2、图像类型
特 点 每象素对应一个值,取值为01位单色 单色 21=2种(黑、白) 和1 每象素对应一个值,取值为08位灰度 黑白 28=256个(黑到白) -255,每值对应一灰度 每象素对应一个值,取值为08位彩色 256色 28=256种彩色 -255,每值对应一颜色 每象素对应一个值,取值为016位灰度 216=65536个(黑到白) -65535,每值对应一灰度 每象素对应三个值,分别代表24位彩色 真彩色 28×28×28=16M种彩色 R、G、B,取值为0-255 161618位彩色 2×2×2=0.25G种每象素对应三个值,分别代表图像类型 简称 显示的颜色数 图像显示 -2-
色 R、G、B,取值为0-65535
3、图像文件格式
文件 说明 类型 BMP 微软视窗系统图像文件格式 GIF 用于网页上的动画、透明 TIFF 可储存多幅图像 PCX Paintbrush软件图像格式 JPG 连续色调静态图像数字压缩 PSD Photoshop软件图像格式 1位 单色 √ √ √ √ × √ 8位 灰度 √ √ √ √ √ √ 8位 16位 24位 48位 彩色 灰度 彩色 彩色 √ × √ × √ × × × √ √ √ √ √ × √ × × × √ × √ √ √ √ §4.2、读图像和图像信息
1、读取图像
函数imread可以从任何Matlab支持的图像文件格式中,以任意位深度读取一幅图像。格式为:
[X,MAP]=imread(FILENAME,'FMT'),其中:
FILENAME-为需要读入的图像文件名称,FMT-为图像格式。
【例】图像读取演示
[X1,MAP1]=imread('演示图像-1位黑白.tif');
图像显示 -3-
[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
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 uint8 array X3 427x427 182329 uint8 array X4 427x427 3658 uint16 array X5 427x427x3 546987 uint8 array X6 427x427x3 1093974 uint16 array Grand total is 1824058 elements using 2558750 bytes
2、读取图像信息
可以通过调用imfinfo函数获得与图像文件有关的信息,格式如下: INFO=imfinfo(FILENAME,'FMT')其中: 返回的INFO是Matlab的一个结构体。
【例】查看图像信息
INFO=imfinfo('演示图像-48位色.tif')
INFO =
Filename: [1x36 char]
FileModDate: '23-May-2004 22:14:23' FileSize: 1107548 Format: 'tif' FormatVersion: [] Width: 427 Height: 427 BitDepth: 48
ColorType: 'truecolor'
图像显示 -4-
FormatSignature: [73 73 42 0] ByteOrder: 'little-endian' NewSubfileType: 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: '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: '2004:05:23 22:14:23 '
§4.3、图像类别与数据格式
双精度类:Double 整数类:Unit8 整数类(Unit16) (每个元素占8个字节) (每个元素占1个字节) (每个元素占2个字节) 数组大小:m×n×3 数组大小:m×n×3 数组大小:m×n×3 真 (:,:,1)-红色分量 (:,:,1)-红色分量 (:,:,1)-红色分量 彩 (:,:,2)-绿色分量 (:,:,2)-绿色分量 (:,:,2)-绿色分量 图 (:,:,3)-蓝色分量 (:,:,3)-蓝色分量 (:,:,3)-蓝色分量 像 元素取值:[0,1] 元素取值:[0,255] 元素取值:[0,65535] (无调色板) (无调色板) (无调色板) 图像显示 -5-
索 图像数组大小:m×n 引 图像元素取值:[1,p] 图 色度矩阵:p×3 像 色度元素值:[0,1]
图像数组大小:m×n 图像元素取值:[0,p-1] 色度矩阵:p×3 色度元素值:[0,255] 图像数组大小:m×n 图像元素取值:[0,p-1] 色度矩阵:p×3 色度元素值:[0,65535] 灰 图像数组大小:m×n 度 图像元素值:[0,1] 图 色度矩阵:p×3 像 色度元素值:[0,1]
图像数组大小:m×n 图像元素值:[0,255] 色度矩阵:p×3 色度元素值:[0,1] 图像数组大小:m×n 图像元素值:[0,65535] 色度矩阵:p×3 色度元素值:[0,1] 图像显示 -6-
二 值 图像数组大小:m×n 图 图像元素值:0或1 像 图像数组大小:m×n 图像元素值:0或1
§4.4、图像显示
Matlab的图像显示函数主要有imshow、colorbar和subimage三个。
1、imshow(I,n)
显示灰度级为n的图像,n缺省为256。
【例】按256灰度级显示
I=imread('moon.tif'); imshow(I,256) colorbar
图像显示 -7-
250200150100500 【例】按8灰度级显示 I=imread('moon.tif'); imshow(I,8) colorbar 250200150100500 2、imshow(I,[low,high]) 以灰度范围[low,high]显示图像,如果不知道灰度范围,可以用imshow(I,[])显示。
【例】按最大灰度范围显示
I=imread('moon.tif'); imshow(I,[]) colorbar
图像显示 -8-
250200150100500 【例】按指定灰度范围显示 I=imread('moon.tif'); imshow(I,[,128]) colorbar 120110100908070 3、imshow(BW) 显示二值图像。
【例】双精度灰度图像
bw1=zeros(100,100); bw1(2:2:98,2:2:98)=1; imshow(bw1); whos bw1
Name Size Bytes Class
图像显示 -9-
bw1 100x100 80000 double array Grand total is 10000 elements using 80000 bytes
【例】8位的灰度图像
bw1=zeros(100,100); bw1(2:2:98,2:2:98)=1; bw2=uint8(bw1); imshow(bw2,[]); colorbar whos bw2
Name Size Bytes Class
bw2 100x100 10000 uint8 array Grand total is 10000 elements using 10000 bytes 10.90.80.70.60.50.40.30.20.10 【例】二值图像 bw1=zeros(100,100);
图像显示 -10-
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 array Grand total is 10000 elements using 10000 bytes
【例】显示二值图像
BW=imread('circles.tif'); imshow(BW);
【例】取反显示二值图像
BW=imread('circles.tif');
图像显示 -11-
imshow(~BW);
【例】显示二值图像
clf
BW=imread('circles.tif'); imshow(BW,[1 0 0;0 0 1]);
4、imshow(X,MAP)
显示索引图像,X为数据图像矩阵,MAP为调色板。
【例】显示索引图像
[X,MAP]=imread('canoe.tif'); imshow(X,MAP); colorbar
图像显示 -12-
25020015010050 【例】显示伪彩色图像 I=imread('moon.tif'); imshow(I,jet(256)) colorbar 25020015010050 5、imshow(RGB) 显示真彩色图像。
【例】
rgb=imread('flowers.tif'); imshow(rgb);
图像显示 -13-
6、imshow filename
直接显示图像。
【例】直接显示图像
imshow('moon.tif'); I=getimage; whos I
Name Size Bytes Class
I 537x358 192246 uint8 array Grand total is 192246 elements using 192246 bytes
moon.tif
7、subimage
多图显示多个调色板的图像。
图像显示 -14-
【例】
load trees;
[x2,map2]=imread('forest.tif');
subplot(2,1,1),subimage(X,map);colorbar
subplot(2,1,2),subimage(x2,map2);colorbar 250501001502002505010015020025030035020015010050250501001501502002503005010015020025030035040010050200 【例】不用专用函数显示多图 load trees;
[x2,map2]=imread('forest.tif');
subplot(2,1,1),imshow(x2,map2);colorbar subplot(2,1,2),imshow(X,map);colorbar 25020015010050 §4.5、保存图像 1、imwrite函数
图像显示 -15-
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)
§4.6、图像数据格式转换
double uint8 1、索引图像
uint16 假设:X8-表示8位的索引图像,X16-表示16位的索引图像,X-表示双精度的索引图像,则有:
X=double(X8)+1 -uint8格式转double格式 X=double(X16)+1 -uint16格式转double格式 X8=uint8(X-1) -double格式转uint8格式 X16=uint16(X-1) -double格式转uint16格式 X8=uint8(X16) -uint16格式转uint8格式 X16=uint16(X8) -uint8格式转uint16格式
2、灰度图像
假设:I8-表示8位的灰度图像,I16-表示16位的灰度图像,I-表示双精度的灰度图像,则有:
I=double(I8/255) -uint8格式转double格式 I=double(I16/65535) -uint16格式转double格式 I8=uint8(round(I*255)) -double格式转uint8格式 I16=uint16(round(I*65535)) -double格式转uint16格式 I8=uint8(round(I16/257)) -uint16格式转uint8格式 I16=uint16(round(I8*257)) -uint8格式转uint16格式
图像显示 -16-
3、真彩色图像
假设:RGB8-表示8位的真彩图像,RGB16-表示16位的真彩图像,RGB-表示双精度的真彩图像,则有:
RGB=double(RGB8/255) -uint8格式转double格式 RGB=double(RGB16/65535) -uint16格式转double格式 RGB8=uint8(round(RGB*255)) -double格式转uint8格式 RGB16=uint16(round(RGB*65535)) -double格式转uint16格式 RGB8=uint8(round(RGB16/257)) -uint16格式转uint8格式 RGB16=uint16(round(RGB8*257)) -uint8格式转uint16格式
4、二值图像
假设BW8表示8位二值图像,BW表示双精度二值图像,则有: BW=double(BW8) uint8格式转double格式 BW8=uint8(BW)~=0 double格式转uint8格式 plot3(X,Y,Z,'bo')
图像显示 -17-
因篇幅问题不能全部显示,请点此查看更多更全内容