当前位置:文档之家› 2.图像格式转换

2.图像格式转换

2.图像格式转换
2.图像格式转换

2.图像格式转换

2.1. MATLAB支持的图像文件格式有:

⑴PCX(VC z indows Paintbrus)格式:可处理1位、4位、8位、16位、24位等图像数

据。文件内容包括文件头(128E)、图像数据和扩展色图数据。

⑵BMP(Windows Bitmap)格式:有1位、4位、8位、24位、32位非压缩图像,8位

RLE(Runlengtli Encoded)的图像。文件内容包括文件头(一个BITMAP

FILEHEADER数据结构)、位图信息数据块(位图信息头BIT'IAP

INFOHEADER和一个颜色表)和图像数据。

⑶HDF(Hie“rchical Data Format)格式:分等级的数据格式。有8位、24位光栅图像数

据集。

(4) JPEG(Joint Photographic Experts Group)格式:一种联合专家组的图像丿k缩格式。

⑸TIFF(Tagged Image File Format)格式:加标签的图像文件格式。可处理1 位、4位、

8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像, 1位

CCITT压缩图像等。文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。

(6)XWD(X Windows Dump)格式:包括1 位、8 位Zpixmaps, XYBitmaps,位

X\Tixmaps o

PNG (Portable Network Graphics),包括 1 位、2 位、4 位、8 位、16 位灰度图像;8位和16位索引图像:24位48位真彩色图像。

(7)GIF(Graphics Interchange Format)格式:图形交换格式。任何1位到8位的可交换

图像。

(8)ICO(VJ z indows Icon resource)格式:图标资源。有1位、4位、8位非压缩图像。

(9)CUR(Microsoft Windows Cursor resource)格式:光标资源。有1 位、4 位、8位非

压缩图像。

(10)PBM (Portable Bitmap)格式:轻便的位图格式。

(11)PGM(Portable Graymap)格式:轻便的灰度图像

(12)PPM(Portable Pixmap)格式:轻便的像素图像

(13)RAS(Sun Raster image)格式:有1位Bitmap> 8位索引、24位真彩色和带有透

明度的32位真彩色。

(14)PNM (Portable Anymap)格式

(15)PNG (Portable Network Graphics)格式

2.2. MATLAB可以处理的图像类型

在MATLAB的图像处理工具箱里,一幅图像可能包括一个数据矩阵,也可以包含一个色图矩阵。除了这些基本的图像类型外,MATLAB还支持由多帧图像组

成的图像序列,下面分别介绍。

2.2.1.索引

索引图像包括一个数据矩阵X和一个色图阵MAP。其中X可以是无符号8位整型、无符号16位整型或者双精度浮点型数据;MAP是一个包含三列若干行的数据阵列,其每一个元素值均为[0, 1]之间的双精度浮点数据。MAP矩阵的每一行分别表示红色、绿色、蓝色的颜色值。索引数据中的每一个X值对应到MAP 中的一行颜色值。改变MAP中的颜色值可以改变索引图像的颜色。

需要说明的是,图像矩阵与色图之间的关系取决于图像数据矩阵的类型。如果图像数据矩阵是双精度的数据类型,则1指向MAP中的第一行,值2指向MAP 中的笫二行,依此类推;如果图像矩阵是8位无符号的整数或16位无符整数,则由于存在一个偏移量,使得值0指向MAP中的第一行,值1指向MAP中的第二行,依此类推。

【例2.2.1-1]显示一幅索引图像。

[X,MAP] =imread (1trees ? tif 1);

imshow (X);

colormap(MAP);

pause (5)冷暂停5秒

colormap (jet) %使用MATLAB定义的色图,缺省的是jet(64)

pause (5) %暂停5 秒

[x,map] =imread ( 1 canoe ? ;

colormap (map) ; %应用 canoe ? tif 的颜色图

2. 2.2.灰度图像

灰度图像是一个数据矩阵I,而矩阵I 中的数据均代表了在一定范围内的颜 色灰度值。I 中的元素可以是双精度的浮点类型、8位或16位无符号整数类型。 灰度图像用一个预定义的色图来显示它即:colormap (gray)。Gray 是一个64级 的色图。 在MATLAB 中可以调用图像色彩缩放函数imagesc 来对图像进行预处理,然 后再

转换成灰度图像以调整灰度的深浅,也可以用函数imshow 来显示灰度图像。

Imagesc 函数的格式为imagesc (I, scale);其中,I 可以是灰度图像或色图; scale 用于确定灰度的范围。

【例2. 2. 2-1]显示一幅灰度图像moon, tif 。

I=imreadC moon, t 辻'); imshow(I);

1= IMREAD C circuit. tif J ); Imshow (I);

RGB 图像,即真彩色图像,在MATLAB 中存储为数据矩阵。数组中的元素定

义 了图像中每一个像素的红、绿、蓝颜色值。每一个像素需要用24位二进制数来 存储R, G, B 三种颜色的亮度值。R, G, B 值的组合表示了像素的颜色。 【例2. 2. 3-1]显示一幅RGB 图像。

RGB=imread(* board, tif'); imshow (RGB);

二值图像与灰度图像一样,二值图像只需要一个数据矩阵,每个像素只取两 个离散

的值0, 1对应于white 和blacker.值图像是以0和1的逻辑矩阵存储的。

【例224?1】显示一幅二值图像。

BW=imread(, circuitbw. tif');

2. 2.

3. RGB

2. 2.4.

一值图像

imshow(BW);

2. 2.5.数据矩阵

符合图像格式的数据矩阵也可以认为是一幅图像。【例2.2.5-1】使用数据矩阵生成图像。

M=magic(100);

m=M/max (M(:));

imshow (m);

m=mat2gray (M) ; %相当于m=M/max (M(:)) figure; imshow (m);

2. 2. 6. 像序列

对于大多数应用,需要一组与时间或视角有关联的图像序列,而不只是单个的图像。例如核磁共振成像(MRI)和动画。

MATLAB的图像处理工具箱支持在同一矩阵中存储多个图像,我们把每个图像叫作一帧。图像序列(矩阵)是一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成笫四维。比如,一个包含5幅400X300真彩色图像序列,其大小是400X300X3X5 ,而相似的多帧索引图像或灰度图像的大小是400X300X1X5。

在MATLAB中,用前面讲过的cat函数可以把一些单一的图像合并成图像序列。在图像序中每个图像需要有相同的大小,如果是索引图像,色图也要一致。【例2.2. 6-1]多帧核磁共振成像的图像。

clear;

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

for frame=l: 27

[mri (:, :>:, frame), map] =imread C mri. tif1, frame);

end

montage (mri, map) ;%用蒙太奇函数显示所有的帧图像。

mril=mri (:, :, :, 1) ;mri3=mri (:, :, :, 3) ;mri6=mri (:, :, :, 6); mrix=ca t (4, mril, mri3, mri6);

figure;

montage (mrix, map);%用蒙太奇函数显示mrix 所有的帧图像。

数字图像和数据矩阵共有3种类型,它之间是可以转换的。各种类型之间转 换函数由下图示:

【例2. 3-1]图像类型转换示例,抖动函数的应用。

RGB= i mread('board, tif'); imshow(RGB);

X=dither(RGB. hot);%X=dither(RGB, jet); imshow(X 9 hot) ;%imshow(X 9 jet);

I=rgb2gray(RGB); imshow(l); BW=dither(l); imshow (BW):

2.4.

图像数据类之间的转换

MATLAB 支持的图像数据类可分为Logical, uint& uintl6, double 四类,它们 之

2.3 ?

图像类型转换

I 二ind2gray(X, map)

[X, map ]二gray2ind (I, n)

BW=im2bw(RGB ?level)

厂 A

IRGBM 彩色图像RGB=Ind2rgb (X9 nlap)

(6SPUW

【皆.X 〕

Bwndx-heru) Bw".m2bwplevel)

可以相互转换。为了利用自定义的函数对图像进行处理,一般都要求将图像的数据类转换成double类,当处理完成后,可根据需要再转换成其它类。

图像处理工具箱(IPT)中用于图像数据类之间转换的函数:

[mqge_Type_YesNo=[s_Im 次ge_Type_CommQnd(ImQge_Type_Army)如果数组数据Image_T\-pe_Ariay是对应的图像类型,Image_Type_YesNo值返回b否则返回0o

图像数据类的判断函数

【例2.4-1]数据类判断示例。delay=3;%显示的持续时间为3秒. RGB=

i mread('board, tif*); Image_Type_YesNol=isrgb(RGB); if(Image_Type_YesNol==l); image (RGB); title ('正常显示'); end

相关主题
文本预览
相关文档 最新文档