对设备无关位图的访问

上传人:第*** 文档编号:54406663 上传时间:2018-09-12 格式:PPT 页数:31 大小:1.45MB
返回 下载 相关 举报
对设备无关位图的访问_第1页
第1页 / 共31页
对设备无关位图的访问_第2页
第2页 / 共31页
对设备无关位图的访问_第3页
第3页 / 共31页
对设备无关位图的访问_第4页
第4页 / 共31页
对设备无关位图的访问_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《对设备无关位图的访问》由会员分享,可在线阅读,更多相关《对设备无关位图的访问(31页珍藏版)》请在金锄头文库上搜索。

1、对设备无关位图的访问,讲解内容 图像数字化概念、图像文件BMP格式、Visual C+软件界面及相关功能介绍 重点:图像数字化和图像文件BMP格式 难点:图像文件BMP格式,3.1 图像数字化 图像数字化是将一幅画面转化成计算机能处理的形式数字图像的过程。 模拟图像 数字图像 正方形点阵 具体来说,就是把一幅图画分割成如上图所示 的一个个小区域(像元或像素),并将各小区域灰度用整数来表示,形成一幅点阵式的数字图像。它包括采样和量化两个过程。像素的位置和灰度就是像素的属性。,3.3.1采样 将空间上连续的图像变换成离散点的操作称为采样。,3.3.2量化 经采样图像被分割成空间上离散的像素,但其灰

2、度是连续的,还不能用计算机进行处理。 将像素灰度转换成离散的整数值的过程叫量化。 表示像素明暗程度的整数称为像素的灰度级(或灰度值或灰度)。 一幅数字图像中不同灰度级的个数称为灰度级数,用G表示。,一般来说, ,g就是表示存储图像像素灰度值所需的比特位数。 若一幅数字图像的量化灰度级数G=256=28级,灰度取值范围一般是0255的整数,由于用8bit就能表示灰度图像像素的灰度值,因此常称8 bit 量化。 从视觉效果来看,采用大于或等于6比特位量化的灰度图像,视觉上就能令人满意。 一幅大小为MN、灰度级数为G的图像所需的存储空间,即图像的数据量,大小为 MNg (bit),灰度级数就代表一幅

3、数字图像的层次。图像数据的实际层次越多视觉效果就越好。,数字图像根据灰度级数的差异可分为:黑白图像、灰度图像和彩色图像。 黑白图像 图像的每个像素只能是黑或白,没有中间的过渡,故又称为二值图像。二值图像的像素值为0或1。 例如,灰度图像 灰度图像是指灰度级数大于2的图像。但它不包含彩色信息。 彩色图像 彩色图像是指每个像素由R、G、B分量构成的图像,其中R、B、G是由不同的灰度级来描述。,问题: 这些黑白、灰度、彩色数字化图像如何表述呢? 又应该以何种形式储存下来便于处理和分析呢? 解决办法: 设备无关位图DIB,3.2 设备无关位图DIB,按不同的方式进行组织或存储数字图像像素的灰度,就得到

4、不同格式的图像文件。图像文件按其格式的不同具有相应的扩展名。常见的图像文件格式按扩展名分为:RAW格式、BMP格式、TGA格式、PCX格式、GIF格式、TIFF格式、JPG格式等。这些格式是或都可被转换成DIB格式文件。 设备无关位图DIB本身携带有自己的颜色信息,与设备无关,任何运行Windows操作系统的计算机均可处理DIB,也只有采用DIB格式的文件被Win32 API所直接支持。,1.BMP格式文件 BMP文件是DIB中比较典型的一种,其文件可分为两大部分,文件头部分和象素点阵部分。文件头包含了DIB的结构数据,进一步分为三段,因此BMP一共由以下四个部分组成: 1)14字节的文件头;

5、 2)40字节的信息头; 3)调色板; 4)位图数据。,1)位图文件头BITMAPFILEHEADER 它的结构如下: typedef struct tagBITMAPFILEHEADER WORD bfType; /*指定文件类型,必须是0x424D,即字符串“BM” */ DWORD bfSize; /*指定文件大小 */ WORD bfReserved1;/*保留字 */ WORD bfReserved2; /*保留字 */ DWORD bfOffBits;/*文件头到实际的位图数据的偏移字节数 * / BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER;

6、 该结构的长度是固定的,为14个字节 。 bfType用来标识本文件为BMP位图文件 bfSize记录此位图文件的实际长度 bfOffBits位图阵列相对于文件头的偏移距离,2)位图信息头BITMAPINFOHEADER 结构的长度为40个节 , 其结构如下: typedef struct tagBITMAPINFOHEADER DWORD bfSize; /* 指定这个结构的大小,为40个字节 LONG biWidth; /*指定图像的宽度,单位是像素 LONG biHeight; /*指定图像的高度,单位是像素 WORD biPlanes; /*必须是1 WORD biBitCount;

7、/*指定表示颜色位数,1(黑白)8(256色)、24(真彩色) DWORD biCompression; /*指定是否压缩,分别为BI_RGB、BI_RLE4、BI_RLE8,一般情况下置为BI_RGB不压缩模式 DWORD biSizeImage; /*指定实际的位图数据占用的字节数 LONG biXPelsPerMeter; /*指定目标设备的水平分辨率 LONG biYPersPerMeter; /*指定目标设备的垂直分辨率 DWORD biClrUsed; /*指定本图像实际用到的颜色数 DWORD biClrImportant; /*指定本图像中重要的颜色数 BITMAPINFOHE

8、ADER, FAR *LPBITMAPINFOHEADER;,3)palette(调色板) 调色板实际上是一个数组 ,数组中每个元素的类型为一个RGBQUAD结构,占4个字节。结构定义如下: typedef struct tagRGBQUAD BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; RGBQUAD; 有些位图,比如真彩色图,没有调色板。他们的位图信息头后直接是位图数据。 4)位图数据 它分两种情况:对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值;对于真彩色图,图像数据就是实际的R、G、B值。对于某一

9、坐标点(x,y)处的地址计算公式为: 灰度图: 位图象素点阵首地址(图像高度-1-y)*图像宽度(必须是4的倍数)+x 彩色图: 位图象素点阵首地址(图像高度-1-y)*图像宽度3(必须是4的倍数)+x3,对于2色位图,用1位就可以表示该像素的颜色,因此一个字节可以表示8个像素; 对于16色位图,用4位可以表示一个像素的颜色,所以1个字节可以表示2个像素; 对于256色位图,一个字节刚好表示一个像素;,a)位图是1,4,8位时,有调色板。,对于真彩色图,3个字节才能表示1个像素.,b) 位图是24位(真彩色)时,无调色板,Rn,Gn,Bn,:,R2,G2,B2,R1,G1,B1,举例说明:le

10、na.bmp lenacaise.bmp,图像信息: 灰度BMP图像; 彩色BMP图像; 宽度为140; 宽度为140; 高度为140; 高度为140; 不压缩; 不压缩; 采用灰度调色板; 没有调色板; 文件长度20680。 文件长度58856。 根据上述这些信息,利用VC以二进制方式打开文件并找出文件中在文件头部分所对应的值,图片信息比较:lena.bmp lenacaise.bmp,文件头: bfType “BM” “BM” bfSize 20680 58856 bfReserved1 0 0 bfReserved2 0 0 bfOffBits 1078 54 信息头: bfSize 4

11、0 40 biWidth 140 140 biHeight 140 140 biBitCount 8 24,位图文件头lena.bmp在VC中打开的二进制内容,位图信息头lena.bmp在VC中打开的二进制内容,调色板lena.bmp在VC中打开的二进制内容,bfType-BM,位图文件头 lenacaise.bmp在VC中打开的二进制内容,位图信息头 lenacaise.bmp在VC中打开的二进制内容,上述内容中无调色板,对于灰度图像,如何定位图像中任一点在图像文件中的位置,并找到该点象素的值?,如图(x,y)=(100,100)处地址:位图象素点阵首地址(139100)140100 见下页

12、:,如图(x,y)=(100,100)处地址:位图象素点阵首地址(139-100)1401006638=0x19EE,如下图(0x4E)=(78):,对于真彩色图,3个字节才能表示1个像素,如何定位图像中任一点在图像文件中的位置,并找到该点象素的值?,如图(x,y)=(100,100)处地址:位图象素点阵首地址(139-100)1403字节1003字节,见下页:,如图(x,y)=(100,100)处地址:位图象素点阵首地址(139-100)1403字节1003字节5442000300167340x415E,如下图:(0x49,0x2F,0x82)=(73,47,130),与上图正好对应。,举例

13、说明:lena.bmp lenacaise.bmp,图像信息: 灰度BMP图像; 彩色BMP图像; 宽度为140; 宽度为140; 高度为140; 高度为140; 不压缩; 不压缩; 采用灰度调色板; 没有调色板; 根据上述已知的这些信息,计算灰度图和彩色图文件头大小(其中位图文件头、信息文件头、调色板分别多少)、位图象素点阵大小?,学习资料: 孙鑫老师的Visual C+视频教程,视频共分20课,平均每课两个多小时 http:/ Visual C+软件界面及相关功能介绍 Visual C+是C+语言的可视化编程工具,1、Visual C+开发环境介绍 (1)工作空间窗口 类浏览方式 在Cla

14、ssView Tab页内,树状栏内每个节点对应一个类,分别为CAboutDlg、CImageShowApp、CImageShowDoc、CImageShowView、CMainFrame类以及Globals全局目录。 资源浏览方式 在ResourceView Tab页内,可对每种资源进行编辑或修改,如添加菜单、添加工具栏、添加对话框以及添加图标等等,如下图:,文件浏览方式 在左下方的FileView Tab页内,从中可看到Source Files、Header Files、Resource Files等,分别为程序实现文件(.cpp)、头文件(.h)和资源文件,一般情况下,每组相同文件名的头文件和实现文件对应一个类;除了上述的这些文件外,还有创建的中间文件,具体如下表:,(2)向导栏 方便查找类、类中成员变量、类中成员函数以及编译、链接及调试的工具条按钮窗口。 (3)源代码窗口 代码编辑窗口。 (4)输出信息窗口 输出编译、链接等信息。 2、Windows编程模型 (1)应用程序创建过程图,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号