图像的位图数据是一个二维数组,用数学方式表示就一个矩阵,矩阵的每一个元素对应图像中的一个像素。当保存图像时候,不但要保存图像的位图数据矩阵,还要将每个像素的颜色保存下来。颜色的记录是利用颜色表来完成的,
颜色表:也叫颜色查找表,试图向像素数据的颜色索引方式表,以一个4色位图数据为例,则其颜色表又4个项目,表中的每一行记录一种颜色的RGB三个分量值,这样当表示一个像素的颜色时候,只需要指出该像素的的颜色在第几行,及就是改颜色在表中的索引即可,假设该4色位图的颜色表如下,
并假设该4色位图大小为8*8,其图像数据的矩阵表示如图所示。
该位图有4种颜色,(最多也只能有4种颜色,对于位图矩阵种的(3,4)的像素值为2,则其颜色表由颜色表种第3行决定,索引从零开始,该行的颜色为绿色(0,255,0)。
为了简单起见,上面的颜色表每一个记录只记录了三个分量R G B实际上一副BMP图像其颜色表的每一个记录是由4个分量组成,分别是R G B三个分量和一个保留位。参考:C++数字图像处理-bmp格式图像读写
有一个特例对于真彩色图像,每个像素占储存空间3个字节(3*8=24位),分别对应R \G\B三分量,每个像素都已经记录了该像素的颜色值,因此真彩色位图不需要颜色表。