图像处理
- BMP
Microsoft Windows所定义的文件格式,最早应用在微软公式的Micosoft Windows窗口系统中。具有一下特点:
- 只存放一幅图像;
- 只能存储单色、16色、256色和真彩色(RGB)4种图像数据;
- 图像数据有压缩和非压缩两种处理方式;
- 调色板的数据存储格式不固定,与文件头的某些具体参数(如像素位bbp、压缩算法等)密切相关。其中,Windows设有RLE4和RLE8两种压缩方式。
BMP图像文件的文件结构分为表头(54byte)、调色板(RGB无)、图像数据三部分。
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //Specifies the file type, must be BM
DWORD bfSize; //Specifies the size, in bytes, of the bitmap file
WORD bfReserved1; //Reserved; must be zero
WORD bfReserved2; //Reserved; must be zero
DWORD bfOffBits; //Specifies the offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
- GIF(Graphics Interchanger Format)
最初由CompuServe公司在网络中用于在线传输图像数据。经常用于网页的动画、透明等特9技制作。具有一下特点:
- 具有多元化结构,能够存储多张图像;
- 调色板具有通用调色板和局部调色板之分;
- 采用了LZW压缩法;
- 图像数据一个byte存储一个pixel;
- 图像数据具有顺序排列和交叉排列两种方式;
- 最多只能存储256色图像。
GIF图像文件结构一般由表头、通用调色板、图像数据区(可选)以及4个补充区(可选)组成。
- TIF(Tag Image File Format)
现有图像格式中最复杂的一种,由Aldus和微软开发设计,提供了各种信息存储的完备手段。其主要特点:
- 应用指针实现多幅图像存储;
- 除规定表头必须在文件前端,标记信息区和图像数据库可随意存放;
- 接受RBB之外的CMYK、YcbCr等多种图像模式
- 可存储多份调色板数据;
- 提供多种不同的数据压缩方法;
- 图像数据可分割成几部分分别存档。
TIF图像文件主要由表头、标识信息区和图像数据区三部分组成。
- JPEG(Joint Photographic Experts Group)
全称为“连续色调静态图像的数字压缩和编码”。
JPEG标准只是定义了一个规范的编码数据流,并没有规定图像数据文件的格式。其特点有:
- 既可用于灰度图像又可用于彩色图像
- 采用离散余弦变换、量化、行程与哈夫曼编码等技术
- 支持无损(压缩比2:1)和有损(压缩比20:1和25:1且没有明显的品质退化)
- Motion JPEG-->Motion Video JPEG
- 算法与彩色空间无关,处理的彩色图像是单独的彩色分量图像。
- JPEG在使用DCT进行有损压缩时,压缩比可调整
图像类型
图像类型指数组数值与像素颜色之间定义的关系。
- 二进制图像
每个像素将取(0、1)中的一个,使用unit8或双精度类型的数组类存储。
- 索引图像
把像素值直接作为RGB调色板下标。在Matlab 7.0中,索引图像包含一个数据矩阵X(unit8、unit16或双精度)和一个颜色映射矩阵map(m×3)
- 灰度图像
通常用一个unit8、unit16或双精度类型的数组来描述,其实质是一个数据矩阵I,数据代表了一定范围内的灰度级。通常0代表黑色,1、255或65635代表白色。
- 多帧图像
在Matlab 7.0中,它是一个四维数组,其中第四维用来指定帧的序号。
- RGB图像
尺寸为m×n的彩色图像来说,在Matlab 7.0中则存储为一个m×n×3的多维数据数组。
图像类型转换
- 图像颜色浓淡处理(图像抖动)
- X = dither( RGB, map )
- X = dither( RGB, map, Qm, Qe ):Qm表示沿每个颜色轴反转颜色图的量化的位数,Qe表示颜色空间计算误差的量化位数。如果Qe<Qm,则不进行抖动操作。
- 灰度图像与索引图像互转
- [ X, map ] = gray2ind( I, n )
- I = ind2gray( X, map )
- RGB图像转换为灰度图像
- I = rgb2gray( RGB )
- Newmap = rgb2gray( map )
- RGB图像与索引图像互转
- [ X, map ] = rgb2ind( RGB )
- [ X, map ] = rgb2ind( RGB, tol ):均匀量化法,tol去0.0~1.0
- [ X, map ] = rgb2ind( RGB, n ):最小方差量化方法,map中包括至少n种颜色
- X = rgb2ind( RGB, map ):颜色图近似法
- RGB = ind2rgb( X, map )
- 通过阈值化方法将图像转换为二值图像
- BW = im2bw( I, level ):level为给定阈值,取值范围为[0,1]
- 通过阈值化方法从灰度图像产生二值图像
- X = grayslice( I, n ):均匀量化为伪彩色图像
- X = grayslice( I, v ):v为阈值向量
- 将矩阵转换为灰度图像
- I = mat2gray( X, [xmin, xmax] )
图像的显示
- 标准图像显示技术
- imshow( … )
- 特殊图像现实技术
- 添加颜色条
RGB = imread('saturn.png');
I = rgb2gray(RGB);
h = [1 2 1; 0 0 0; -1 -2 -1];
I2 = filter2(h, I);
imshow(I2,[]),colorbar
- 显示多帧图像阵列
Matlab 7.0支持的多帧图像的文件格式包括HDF和TIFF两种。
%定义一个4维矩阵
mri = uint8(zeros(128,128,1,27));
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
end
%多帧显示
montage(mri,map);
- 纹理映射
Matlab 7.0提供了一个对图像进行纹理映射处理的函数warp,使之显示在三维空间中,三维空间的面可以是柱面、球面以及自定义的三维曲目。
[x,y, z] = cyliner;
I = imread( 'test.png' );
warp( x, y, z, I );
常用图像格式
浙公网安备 33010602011771号