- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多媒体实验3--数字图像处理
实验三 图像显示与处理(2学时)
BMP是Bitmap(位图)的简写,是Windows操作系统中的标准图像文件格式。Windows 3.0以前的BMP图文件格式与显示设备有关,称为设备相关位图DDB文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此称为设备无关位图DIB(device-independent bitmap)格式。
BMP文件由4部分组成:位图文件头(BITMAPFILEHEADER)、位图信息头(BITMAPINFOHEADER)、彩色表(RGBQUAD)和图像数据阵列。对应的数据结构定义如下(来自MSDN)。
typedef struct tagBITMAPFILEHEADER {
WORD bfType; // file type, must be BM
DWORD bfSize; // size (bytes) of the bitmap file
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; // offset (bytes) from this structure to the bitmap bits
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, *PBITMAPINFO;
typedef struct tagRGBQUAD {
BYTE rgbBlue; BYTE rgbGreen;
BYTE rgbRed; BYTE rgbReserved;
} RGBQUAD;
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; // bytes required by the structure
LONG biWidth; LONG biHeight;
WORD biPlanes; // number of planes, must be 1
WORD biBitCount; // number of bits-per-pixel
DWORD biCompression; // BI_RGB: uncompressed
DWORD biSizeImage; // size(bytes) of image, set to 0 for BI_RGB bitmaps
LONG biXPelsPerMeter; // horizontal resolution
LONG biYPelsPerMeter; // vertical resolution
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
自然界所有颜色都可由红、绿、蓝(R,G,B)组合而成。R/G/B各自分成256级,这种分级概念称为量化,这样就能表示256×256×256约1600万种颜色,这对于人眼来说已经足够丰富了。对于颜色数远远少于1600万种的彩色图,可以用一个表:表中的每一行记录一种颜色的R、G、B值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。这张R、G、B的表,就是我们常说的调色板(Palette),另一种叫法是颜色查找表LUT(Look Up Table)。
用R、G、B颜色表示所有的颜色叫做真彩色图(true color)。表示真彩色图时,每个象素直接用R、G、B三个分量字节表示,而不采用调色板技术。真彩色图又叫做24位色图。在Windows下,RGB颜色阵列存储的格式其实BGR。而32位的RGB位图像素数据格式是:蓝色B值、绿色G值、红色R值、透明通道A值。透明通道也称Alpha通道,该值是该像素点的透明属性,取值在0(全透明)到255(不透明)之间。
Step 1.1
2、BMP文件加载
加载文件的目的是要得到图片属性及RGB数据,以便将其绘制在DC上。
首先,加载文件头:
BITMAPFILEHEADER header;
file.read((char*)header,sizeof(header));
然后,加载位图信息头:
BITMAPINFOHEADER infoheader;
file.read
您可能关注的文档
- 【步步高】(全国通用)2017版高考生物一轮复习第八单元生命活动的调节第31讲植物的激素调节课件详解.ppt
- 【啊哈算法】算法11:堆——神奇的优先队列(上)详解.docx
- 大学生兼职情况调查问卷解读.pptx
- 【步步高】2014-2015学年高中化学专题1第三单元金属的腐蚀与防护学案苏教版选修4详解.doc
- 【步步高】(全国通用)2017版高考生物一轮复习第八单元生命活动的调节第31讲植物的激素调节新人教版详解.doc
- 大学计算机基础2014-1解读.ppt
- 大学科技信息检索第9章解读.ppt
- 大学生创新精神和实践能力培养解读.pptx
- 大学生旅游决策行为模式分析解读.pptx
- 大学生创新训练计划项目申请表解读.doc
文档评论(0)