BMP图像结构及其读写与灰度化.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BMP图像结构及其读写与灰度化

BMP图像的结构及读写和灰度化 2010-12-01 孙** 1.文档目的 本文档主要给出24位真彩BMP图像的结构、读写和灰度化方法。 2.一般BMP图像的结构 一般的bmp文件的结结构主要包括文件头,BMP信息头,调色板,位图数据内容 (1)BMP文件头(14字节) ,文件的第0字节到第13字节为BMP图像的文件头。BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。   其结构定义如下:   typedef struct tagBITMAPFILEHEADER   {   WORD bfType; // 位图文件的类型,必须为BM(0-1字节)   DWORD bfSize; // 位图文件的大小,以字节为单位(2-5字节)   WORD bfReserved1; // 位图文件保留字,必须为0(6-7字节)   WORD bfReserved2; // 位图文件保留字,必须为0(8-9字节)   DWORD bfOffBits; // 位图数据的起始位置,以相对于位图(10-13字节)   // 文件头的偏移量表示,以字节为单位   } BITMAPFILEHEADER; (2) BMP信息头 位图信息头(40字节),文件的第14个字节到第53个字节为BMP图像的信息头,位图信息头数据用于说明位图的尺寸等信息。   typedef struct tagBITMAPINFOHEADER{   DWORD biSize; // 本结构所占用字节数(14-17字节)   LONG biWidth; // 位图的宽度,以像素为单位(18-21字节)   LONG biHeight; // 位图的高度,以像素为单位(22-25字节)   WORD biPlanes; // 目标设备的级别,必须为1(26-27字节)   WORD biBitCount;// 每个像素所需的位数,必须是1(双色), 4(16色),8(256色)或24(真彩色)之一(28-29字节)   DWORD biCompression; // 位图压缩类型,必须是 0(不压缩), 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一(30-33字节)   DWORD biSizeImage; // 位图的大小,以字节为单位(34-37字节)   LONG biXPelsPerMeter; // 位图水平分辨率,每米像素数(38-41字节)   LONG biYPelsPerMeter; // 位图垂直分辨率,每米像素数(42-45字节)   DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数(46-49字节)   DWORD biClrImportant;// 位图显示过程中重要的颜色数(50-53字节)   } BITMAPINFOHEADER; (3) 调色板 调色板用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:   typedef struct tagRGBQUAD {   BYTE rgbBlue; // 蓝色的亮度(值范围为0-255)   BYTE rgbGreen; // 绿色的亮度(值范围为0-255)   BYTE rgbRed; // 红色的亮度(值范围为0-255)   BYTE rgbReserved;// 保留,必须为0   } RGBQUAD; 调色板中RGBQUAD结构数据的个数有biBitCount来确定: 当biBitCount=1,4,8时,分别有2,16,256个表项; 当biBitCount=24时,该BMP图像就是24Bit真彩图,没有调色板项。   (4):位图数据内容 位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数由biBitCount来确定: 当biBitCount=1时,8个像素占1个字节;   当biBitCount=4时,2个像素占1个字节;   当biBitCount=8时,1个像素占1个字节; 当biBitCount=24时,1个像素占3个字节; Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充。 例如: 24Bit真彩图每一行占的实际字节数: nBytesPerLine =[(bi.biWidth*3+3)/4*4 // bi.biWidth为图像宽度 灰度图每一行占的实际字

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档