关键词不能为空

当前您在: 主页 > 英语 >

BMP格式及RGB详讲

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-19 12:34
tags:

-

2021年2月19日发(作者:row是什么意思)


BMP


图像文件格式



对于现存的所有的图像文件格式,我们在这里主要介绍


BMP


图 像文件格式,并且文件


里的图像数据是未压缩的,


因为图像的数 字化处理主要是对图像中的各个像素进行相应的处


理,而未压缩的


BMP


图像中的像素数值正好与实际要处理的数字图像相对应,这种格式的

< p>
文件最合适我们对之进行数字化处理。


请读者记住,


压缩过的图像是无法直接进行数字化处


理的,如


JPEG



GIF


等格式的文件,此时首先要对图像 文件解压缩,这就要涉及到一些比较


复杂的压缩算法。后续章节中我们将针对特殊的文件 格式如何转换为


BMP


格式的文件问题


作专门的论述,经过转换,我们就可以利用得到的未压缩的


BMP


文件格式进行后续处理。


对于


JPEG



GIF


等格式,由于涉及到压缩算法,这要求读者掌握一定 的信息论方面的知识,


如果展开的话,


可以写一本书,


限于篇幅原因,我们只作一般性的讲解,有兴趣的朋友可以


参考相关书籍 资料。




一、


BMP


文件结构





1. BMP


文件组成





BMP


文件由文件头、位图信息头、 颜色信息和图形数据四部分组成。文件头主要包含文件


的大小、文件类型、图像数据偏离 文件头的长度等信息;位图信息头包含图象的尺寸信息、


图像用几个比特数值来表示一个 像素、


图像是否压缩、


图像所用的颜色数等信息。


颜色信息


包含图像所用到的颜色表,


显示图像时需用 到这个颜色表来生成调色板,


但如果图像为真彩


色,既图像的每 个像素用


24


个比特来表示,文件中就没有这一块信息,也就不 需要操作调


色板。


文件中的数据块表示图像的相应的像素值,< /p>


需要注意的是:


图像的像素值在文件中的


存放顺序为从左到右,从下到上,也就是说,在


BMP


文件中首 先存放的是图像的最后一行


像素,


最后才存储图像的第一行像素 ,


但对与同一行的像素,


则是按照先左边后右边的的顺


序存储的;


另外一个需要读者朋友关注的细节是:


文件存储图像的每一行像素值时,


如果存


储该行像素值所占的 字节数为


4


的倍数,则正常存储,否则,需要在后端补


0


,凑足


4


的倍


数。





2. BMP


文件头





BMP


文 件头数据结构含有


BMP


文件的类型、文件大小和位图起始位置 等信息。其结构定义


如下


: typedef struct tagBITMAPFILEHEADER


{


WORD bfType; //


位图文件的类型,必须为“


BM




DWORD bfSize; //


位图文件的大小,以字节为单位



WORD bfReserved1; //


位图文件保留字,必须为


0


WORD bfReserved2; //


位图文件保留字,必须为


0


DWORD bfOffBits; //


位图数据的起始位 置,


以相对于位图文件头的偏移量表示,


以字节为单

< p>



} BITMAPFILEHEADER


;该结构占据


14


个字节。




3.


位图信息头





BMP


位图信息头数据用于说明位图 的尺寸等信息。其结构如下:




typedef struct tagBITMAPINFOHEADER{


DWORD biSize; //


本结构所占用字节数



LONG biWidth; //


位图的宽度,以像素为单位



LONG biHeight; //


位图的高度,以像素为单位



WORD biPlanes; //


目标设备的平面数不清,必须为


1


WORD biBitCount//


每个像素所需的位数, 必须是


1(


双色


), 4(16



)



8(256< /p>



)



24(< /p>


真彩色


)


之一



DWORD biCompression; //


位图压缩类型,


必须是



0(


不压缩


),1(BI_RLE8


压缩类型


)



2(BI_RL E4


压缩类型


)


之一

< br>


DWORD biSizeImage; //


位图的大小,以字节为单位



LONG biXPelsPerMeter; //


位图水平分辨率,每米像素数



LONG biYPelsPerMeter; //


位图垂直分辨率,每米像素数



DWORD biClrUsed;//


位图实际使用的颜色表中的颜色数



DWORD biClrImportant;//


位图显示过程中重要的颜色数



} B ITMAPINFOHEADER


;该结构占据


40

< p>
个字节。





注意:


对于


BMP


文件 格式,


在处理单色图像和真彩色图像的时候,


无论图象数据多么 庞大,


都不对图象数据进行任何压缩处理,一般情况下,如果位图采用压缩格式,那么< /p>


16


色图像


采用


RLE4


压缩算法,


256


色图像采用


RLE8


压缩算法。




4.


颜色表





颜色表用于说明位图中的颜色,


它有若干个表项,


每一个表项是一个


RGBQUAD


类型的结构,


定义一种颜色。


RGBQUAD


结构的定义 如下


:




typedef struct tagRGBQUAD {


BYTErgbBlue;//


蓝色的亮度

< br>(


值范围为


0-255)


BYTErgbGreen; //


绿色的亮度


(


值范围为


0-255)


BYTErgbRed; //


红色的亮度

< br>(


值范围为


0-255)


BYTErgbReserved;//


保留,必须为


0


} RGBQUAD;




< p>
颜色表中


RGBQUAD


结构数据的个数由


BITMAPINFOHEADER


中的


b iBitCount


项来确定,当


biBitCount=1, 4,8


时,分别有


2,16,256


个 颜色表项,当


biBitCount=24


时,图像为真彩色, 图


像中每个像素的颜色用三个字节表示,分别对应


R

< p>


G



B


值,图像文件没有颜色表项。位


图信息头和颜色表组成位图信息,


BITMAPINFO


结构定义如下


:



typedef struct tagBITMAPINFO {

-


-


-


-


-


-


-


-



本文更新与2021-02-19 12:34,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/667491.html

BMP格式及RGB详讲的相关文章