除了灰度图像,还有彩色图像,以RGB模型来说,一副24位彩色图像一个像素占3个字节,其中第一个字节为该点像素的B值,接下来依次为G值,R值。分别表示该点的蓝色,绿色,红色的分量值[4][5]。说明:RGB模型也称为加色法混色模型。它是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。其混色规律是:以等量的红、绿、蓝基色光混合时,有红+绿=黄色、红+蓝=紫色、绿+蓝=青色、红+绿+蓝=白色、三种基色光全无=黑色,加色法的混色规律可用图表示。其配色方程描述:F(物体颜色)=R(红色的百分比)+G(绿色的百分比)+B(蓝色的百分比)。
2.1.2 数字图像格式
图像文件一般由文件头和图像点阵数据两部分构成,文件头中一般包含文件标志,图像尺寸,颜色数等信息,这些信息由图像提供者定义;图像点阵数据包含该图像的每一点的颜色信息[6]。对于各种不同的图象文件格式,其文件头所包含的信息不尽相同,其中重要的是含有该文件所存储的图像信息的存储格式说明,对于图像处理程序来说,首先就是读取要处理的图象文件文件头信息,获得所有必需的信息,再据此读取图象点阵数据进行相应处理并正确显示。
BMP 是Microsoft Windows 操作系统所支持的主要图象文件格式之一,其格式简单,适应性强,但这种文件格式是非压缩的,故此文件所占的磁盘空间较大。在MFC 中也对BMP 文件格式提供了很好的支持。BMP 图像文件由以下四部分组成:位图文件头BITMAPFIL EHEADER 结构,位图信息头BITMAPINFIHEADER 结构,调色板PAL ETTE,位图像素数据。
第一部分是位图文件头结构定义如下:
typedef struct tagBITMAPFIL EHEADER
{
WORD bf Type ; ∥指定文件类型,必须0x424D ,即字符串“BM”
DWORD bfSize ; ∥指定文件大小,包括这14 个字节
WORD bfReserved1 ; ∥为保留字,不用考虑
WORD bfReserved2 ;
DWORD bf0ffBits ; ∥为从文件头到实际的位图数据的偏移字节数
}BITMAPFIL EHEADER ;
第二部分是位图信息头结构定义如下:
typedef struct tagBITMAPINFOHEADER
{源'自:优尔-'论/文'网"www.youerw.com
EWORD biSize ; ∥指定这个结构的长度为40 ,单位是字节
LONG biWidth ; ∥指定图像的宽度,单位是像素
LONG biHeight ; ∥指定图像的高度,单位是像素
WORD biPlanes ; ∥必须是1
WORD biBitcount ; ∥指定表示颜色时要用到的位数
DWORD biCompression ; ∥指定位图是否压缩
DWORD biSizeImage ; ∥指定实际的位图数据占用的字节数
LONG biXPelsPerMeter ; ∥指定目标设备的水平分辨率
LONG biYPelsPerMeter ; ∥指定目标设备的垂直分辨率
DWORD biClrUsed ; ∥指定本图像实际用到的颜色数
DWORD biClr Important ; ∥指定本图像中重要的颜色数
}BITMAPINORHEADER ;
第三部分是调色板调色板实际上是一个数组,共有biClrUsed 个元素(如果该值为零,则有2 的biBitCount次方个元素) ,数组中每个元素的类型是一个RGBQUAD结构,占4 个字节,其定义如下:
typedef struct tagRGBQUAD
{
BYTE rgbBlue ; ∥该颜色的蓝色分量
BYYE rgbGreen ; ∥该颜色的绿色分量;
BYTE rgbRed ; ∥该颜色的红色分量;
TE rgbReserved ; ∥保留值
}RGBQUAD ;
附:真彩色图像即大于24位的图像不需要调色板。
第四部分是实际的图像数据,对于用到调色板的位图,图像数据就是该像素值在调色板重的索引值,对于真彩色图,图像数据就是实际的R,G,B值。
C++图像文件处理工具的设计(3):http://www.youerw.com/jisuanji/lunwen_60877.html