Windows下256色DIB位图的显示与保存

Windows下256色DIB位图的显示与保存

杨宠;刘瑞祥

【期刊名称】《电脑编程技巧与维护》

【年(卷),期】1997(000)006

【摘要】Windows中的位图有两种:依赖于设备的位图(DDB)和与设备无关的位图(DIB)。前者与显示设备所使用的位模式之间有一种近似的相互关系,后者描述的却是图形的实际外形,而不是某特定的显示设备欲显示的图形的内部表示。由于这种外部定义可以使用于任何显示设备,所以被称为与设备无关的位图。与设备无关的位图通常以文件的形式保存在磁盘上,这就是我们常说的BMP文件。 BMP文件中保存的DIB可分为单色、16色、256色和真彩色四种,单色和16色的DIB色彩不够丰富,而真彩色的DIB位图文件又过于庞大。

【总页数】5页(P27-31)

【作者】杨宠;刘瑞祥

【作者单位】华中理工大学;华中理工大学

【正文语种】中文

【中图分类】TP311

【相关文献】

1.Windows下的位图在VxWorks中大字显示的实现 [J], 周祖洋;傅建纲;万杨

2.在Windows下实现多幅大尺寸位图的显示与浏览 [J], 王伯尊;张凤茹

3.WindoWs下多幅大尺寸位图的显示与浏览 [J], 王珏;葛冬梅

4.Windows下多幅大尺寸位图的显示与浏览 [J], 李为民;黄瑜

5.建立草地管理系统中Windows下多幅大尺寸位图的显示与浏览 [J], 才永男因版权原因,仅展示原文概要,查看原文内容请购买

位图显示原理

BMP文件格式分析 简介 BMP(B it m a p-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP 为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(d evice-d ependent b itmap)文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图 DIB(d evice-i ndependent b itmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB 位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。 文件结构 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。 位图文件结构可综合在表6-01中。 表01 位图文件结构内容摘要

UINT bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 其中: ? bfType 说明文件的类型.(该值必需是0x4D42,也就是字符'BM'。我们不需要判断OS/2的位图标识,这么做现在来看似乎已经没有什么意义了,而且如果要支持OS/2的位图,程序将变得很繁琐。所以,在此只建议你检察'BM'标识)? bfSize 说明文件的大小,用字节为单位bfReserved1 保留,必须设置为0 bfReserved2 保留,必须设置为0 bfOffBits 说明从文件头开始到实际的图象数据之间的字节的偏移量。这个参数是非常有用的,因为位图信息头和调色板的长度会根据不同情况而变化,所以你可以用这个偏移值迅速的从文件中读取到位数据。 2. 位图信息头 位图信息用BITMAPINFO结构来定义,它由位图信息头 (bitmap-information header)和彩色表(color table)组成,前者用BITMAPINFOHEADER结构定义,后者用RGBQUAD结构定义。BITMAPINFO结构具有如下形式: typedef struct tagBITMAPINFO { /* bmi */ BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO; 其中: ? bmiHeader 说明BITMAPINFOHEADER结构,其中包含了有关位图的尺寸及位格式等信息

深入GDI图像显示

深入GDI图像显示 摘要:本文首先给出了一种结合了DIB和DDB两种位图优点的图像显示方法,其次对GDI函数的高级应用,如透明位图显示、图像旋转显示、图像镜像显示进行了研究。 关键词:GDI图像显示,特殊GDI函数的应用,透明位图显示,图像几何变换显示 图像信息是人类认识世界的重要知识来源,人类获得的70%以上的信息来自于眼睛摄取的丰富和真切的图像。图像与计算机相结合带给人们近乎神奇的图像艺术。对于程序开发者来说,实现高速的绘图是设计漂亮友好的用户界面的基础和关键所在。 在Win32图像程序设计中,图像显示的方法主要有:GDI,DirectDraw,OpenGL等技术,本文仅讨论利用GDI函数实现位图的显示。Windows使用的位图有两种:设备无关位图DIB(Device IndependentBitmap)和设备相关位图DDB(Device Dependent Bitmap)。DDB位图一般用HBITMAP句柄或CBitmap对象保存,Windows 提供的创建DDB位图的函数主要有CreateCompatibleBitmap()、CreateBitmap()和CreateBitmapIndirect()。出于效率的关系,一般创建彩色位图用CreateCompatibleBitmap()函数,因为它创建的位图格式与显示DC的格式一致,用SelectObject()选入DC和显示的速度要快,另外两个函数多用来创建单色位图。也可以创建与显示DC不同

格式的位图,但这样灰使得显示速度略为变慢。 由于DDB位图的设备相关性,因此它在显示速度方面有优势,但是同时也限制了DDB位图只能在相关DC上才能有效显示。而这时DIB位图的优势就体现出来了,DIB位图具有良好的设备无关性,可以包含诸如调色板、分辨率等信息。可以使得应用程序独立于操作系统,因此得到了广泛的应用。在Win32中DIB位图的显示技术有了较大的提高,与DDB位图相比,两者差别并不是很明显。但是可以对DDB位图操作的GDI函数远远多于DIB位图。另外获取和操作DDB位图数据比较麻烦,而DIB位图可以采用直接分配内存来保存,因此在位图数据获取和操作上具有一定的优势。本文给出一种充分结合了两者优点的图像显示技术,并且深入研究了诸如透明位图显示,图像旋转显示、镜像显示、梯度填充等GDI高级功能应用。 一、位图显示新方法 用于操作DIB图像的应用类有许多,笔者在"电脑编程与技巧"杂志99年第10期, 介绍了一个封装的通用图像基类(CImage),可完成DIB 图像数据的管理和一些基本处理功能。其中大多的DIB类都采用直接分配内存的方式,然后用DIB操作函数来实现图像的显示。这种方式在Win98中,DIB操作函数将DIB内存直接写入显示内存中,但是在NT 中,操作系统首先将DIB拷贝到服务器端创建一个DDB,然后再将DDB 内存写入显存中,因此图像显示速度就会变慢。具体的原理有兴趣的读

Visual C++中DDB与DIB位图编程全攻略

Visual C++中DDB与DIB位图编程全攻略 1. 基本概念 先来用通俗的语句讲解位图和调色板的概念。 我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)三基色组合而成。针对含有红、绿、蓝色成分的多少,可以对其分别分成0~255个等级,而红、绿、蓝的不同组合共有256×256×256种,因此约能表示1600万种颜色。对于人眼而言,这已经是"真彩色"了。 对每个像素进行了(R,G,B)量化的图像就是位图,其在计算机中对应文件的扩展名一般为.bmp。既然用R,G,B的量化值就可以直接记录一张位图的所有像素,那我们需要调色板干什么呢? 首先,我们可以计算完全利用(R,G,B)组合来存储一个800×600的位图所需要的空间为: 800×600×3 = 1440000(字节)=1.37M(字节) 惊人的大!因此,调色板横空出世了,它的功能在于缓解位图文件存储空间过大的问题。 假设一个位图为16色,其像素总数为800×600。我们只需要用4个bit就可以存储这个位图的每个像素在16种颜色中所处的等级,然后调色板提供了这16种等级对应的(R,G,B)值,这样,存储这个16色位图只需要: 800×600×4/8 = 240000(字节)= 0.22 M(字节) 额外的存储R,G,B表的开销(即调色板Palette,也称为颜色查找表LUT)仅仅为16×3=48字节。 存储空间被大为减少! 常见的位图有单色、16色、256色、16位及24位真彩色5种,对于前三者(即不大于256色)都可以调色板方式进行存储,而对16位及24位真彩色以调色板进行存储是不划算的,它们直接按照R,G,B分量进行存储。 在此基础上我们来分析DDB位图(Device-dependent bitmap,与设备相关的位图)与DIB位图(Device-independent bitmap,与设备无关的位图)的概念以及二者的区别。 DDB依赖于具体设备,它只能存在于内存中(视频内存或系统内存),其颜色模式必须与特定的输出设备相一致,使用系统调色板。一般只能载入色彩较简单的DDB位图,对于颜色较丰富的位图,需使用DIB才能长期保存。

位图基础

第1章位图基础 本章要点: ?数字图像的基本概念 ?与设备相关位图(DDB) ?与设备无关位图(DIB) ? CDib类库的建立 ?数字图像处理的应用 1.1数字图像的基本概念 计算机屏幕上显示出来的画面通常有两种描述方法:一种为图形,另一种为图像。图形、图像在存储结构和表示方法上有着根本的区别。图形是矢量结构的画面存储形式,是由指令集合组成的描述,这些指令描述构成一幅图的所有直线、圆、圆弧、矩形、曲线等的位置、维数和大小、形状、颜色,显示时需要相应的软件读取这些命令,并将其转变为屏幕上所显示的形状和颜色,图形记录的主要内容是坐标值或坐标值序列,对一般画面内容的颜色或亮度隐含且统一地描述,因此,矢量结构显式地表现画面内容的坐标值。图像是以栅格结构存储画面内容,栅格结构将一幅图划分为均匀分布的栅格,每个栅格称为像素,显式地记录每一像素的光度值(亮度或彩色),所有像素位置按规则方式排列,像素位置的坐标值却是有规则地隐含。图像由数字阵列信息组成,用以描述图像中各像素点的强度与颜色,因此图像适合于表现含有大量细节(如明暗变化、场景复杂和多种颜色等)的画面,并可直接、快速地在屏幕上显示出来。图像占用存储空间较大,一般需要进行数据压缩。 色度学理论认为,任何颜色都可由红(Red)、绿(Green)、蓝(Blue)三种基本颜色按照不同的比例混合得到。红、绿、蓝被称为三原色,简称RGB三原色。在PC的显示系统中,显示的图像是由一个个像素组成的,每一个像素都有自己的颜色属性,像素的颜色是基于RGB 模型的,每一个像素的颜色由红,绿,蓝三原色组合而成。3种颜色值的结合确定了在图像上看到的颜色。人眼看到的图像都是连续的模拟图像,其形状和形态表现由图像各位置的颜色所决定。因此,自然界的图像可用基于位置坐标的三维函数来表示,即: f(x,y,z)={f red(x,y,z) ,f green(x,y,z), f blue(x,y,z)} 其中f表示空间坐标为(x,y,z)位置点的颜色, f red 、f green、 f blue分别表示该位置点的红、绿、蓝三种原色的颜色分量值。他们都是空间的连续函数,即连续空间的每一点都有一个精确的值与之相对应。 为了研究的方便,主要考虑平面图像。平面上每一点仅包括两个坐标值,因此,平面图像函数是连续的二维函数,即: f(x,y)={f red(x,y) ,f green(x,y), f blue(x,y)} 数字图像是连续图像f(x,y)的一种近似表示,通常用由采样点的值所组成的矩阵来表示:

第1章 Windows位图和调色板

第1章Windows位图和调色板 1.1 位图和调色板的概念 如今Windows(3.x以及95,98,NT)系列已经成为绝大多数用户使用的操作系统,它比DOS成功的一个重要因素是它可视化的漂亮界面。那么Windows是如何显示图象的呢?这就要谈到位图(bitmap)。 我们知道,普通的显示器屏幕是由许许多多点构成的,我们称之为象素。显示时采用扫描的方法:电子枪每次从左到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行,就扫过了一屏。为了防止闪烁,每秒要重复上述过程几十次。例如我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。 我们称这种显示器为位映象设备。所谓位映象,就是指一个二维的象素矩阵,而位图就是采用位映象方法显示和存储的图象。举个例子,图1.1是一幅普通的黑白位图,图1.2是被放大后的图,图中每个方格代表了一个象素。我们可以看到:整个骷髅就是由这样一些黑点和白点组成的。 图1.1 骷髅 图1.2 放大后的骷髅位图 那么,彩色图是怎么回事呢? 我们先来说说三元色RGB概念。 我们知道,自然界中的所有颜色都可以由红、绿、蓝(R,G,B)组合而成。有的颜色含有红色成分多一些,如深红;有的含有红色成分少一些,如浅红。针对含有红色成分的多少,可以分成0到255共256个等级,0级表示不含红色成分;255级表示含有100%的红色成分。同样,绿色和蓝色也被分成256级。这种分级概念称为量化。 这样,根据红、绿、蓝各种不同的组合我们就能表示出256×256×256,约1600万种颜色。这么多颜色对于我们人眼来说已经足够丰富了。 表1.1 常见颜色的RGB组合值

BMP

BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP 文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP 文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows 环境中运行的图形图像软件都支持BMP图像格式。

424D 46900000 0000 0000 4600 0000 2800 0000 8000 0000 9000 0000 0100*1000 0300 0000 0090 0000 A00F 0000 A00F0000 0000 00000000 0000*00F8 E007 1F00 0000*02F1 84F1 04F1 84F1 84F1 06F2 84F1 06F2 04F2 86F2 06F2 86F2 86F2 .... .... 在Visual C++ 6.0中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下: typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; 也就是说BYTE是无符号的char型(char型本质上也是一种1个字节的整型),WORD是无符号short型,DWORD是无符号long型。 而在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。 即:BYTE=unsigned char(完全等同) WORD=unsigned short(完全等同) DWORD=unsigned long(完全等同)

windows DC

对Windows程序中设备上下文DC(device context)的理解: DC实际上是GDI内部保存的数据结构。 DC与特定的显示设备(如显示器或打印机)相关。 对于显示器,DC总是与显示器上的特定视窗相关。 DC中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。 例如,对於TextOut,DC的属性确定了文字的颜色、文字的背景色、x座标和y座标映射到视窗的显示区域的方式,以及显示文字时Windows使用的字体。 MSDN的解释: 一个DC是一个结构,它定义了一系列图形对象的集合以及它们相关的属性,以及影响输出效果的一些图形模式。这些图形对象包括一个画线的笔,一个填充和painting的画刷,一个用来向屏幕拷贝的位图,一个定义了一系列颜色集合的调色板,一个用来剪裁等操作的区域,一个做painting和drawing操作的路径。 一个应用程序从不直接地访问(access)dc,常见的取得dc的方式有以下几种: SDK's way: 1. BeginPaint case WM_PAINT: HDC hdc = BeginPaint(hwnd, &ps); EndPaint(hwnd, &ps); MSDN的解释: BeginPaint函数自动地设置dc的剪裁区域,这个剪裁区域,剪裁的是由Inv alidateRect 或InvalidateRgn 函数触发的窗口无效区域,或者是系统给出的无效区域,当窗口被sizing, moving, creating, scrolling, or any other operation that affects the client area. 一个应用程序从不调用BeginPaint,除了在收到一个WM_PAINT消息的时候;每一BeginP aint调用之后,需要调用EndPaint函数。 2.GetXXXDC GetDC取得与窗口客户区相关的dc,GetWindowDC取得与整个窗口(包括客户区和非客户区)相关的dc。 我对dc的理解是: -------------------------------------- dc表示的是当前窗口或区域的作图环境设置。 比如,使用BeginPaint取得的dc表明了,当前无效区域的作图环境设置。比如,它的作图环境是画笔蓝色,画刷红色。使用GetXXXDC取得的dc表明取得的特定窗口的当前作图环境设置。比如,它的作图环境是画笔蓝色,画刷红色。 当我们取得一个dc的时候,我们同时取得了相关的当前窗口或区域的范围,BeginPaint取得的dc与某一窗口的无效区相关,GetXXXDC取得的dc与某一窗口的客户区或整个窗口相关。dc是gdi函数(drawline,textout...)需要的一个参数,为什么需要这个参数呢,因为我们需要知道当前画笔的颜色,坐标系的设置等等。 当程序需要绘图时,它必须先取得设备上下文句柄。在取得了该句柄后,Windows用内定的属性值填入内部设备上下文结构。可以通过调用不同的GDI函数改变这些预设值。利用其它的G DI函数可以取得这些属性的目前值。当然,还有其它的GDI函数能够在窗口的显示区域真正地绘图。 -------------------------------------- 还有一类重要的dc,内存DC,是一个虚拟的内存设备上下文,我们对它进行绘图等操作,不会显示在屏幕或打印机上,而我们可以在它完成之后,拷贝到屏幕上或打印机上来输出,这样我们可以避免因为操作而给屏幕带来的闪烁,对于打印机而言,打印只能是从上往下打,而我们在MEMDC 中,可以随意进行操作,这样可以输出直接在打印机上输出所达不到的效果.

BMP图像的读写8位和24位

大学计算机科学与技术学院《数字图像处理》课程实验 报告书 实验名BMP文件的读写(8位和24位) 班级计121 姓名进 学号1213022016 2014年6月16 日

一、实验容 1、了解BMP文件的结构 2、8位位图和24位位图的读取 二、BMP图形文件简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统部各图像绘制操作都是以BMP为基础的。Windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP图象文件与显示设备无关,因此把这种BMP图象文件格式称为设备无关位图DIB(device-independent bitmap)格式(注:Windows 3.0以后,在系统中仍然存在DDB位图,象BitBlt()这种函数就是基于DDB位图的,只不过如果你想将图像以BMP格式保存到磁盘文件中时,微软极力推荐你以DIB格式保存),目的是为了让Windows能够在任何类型的显示设备上显示所存储的图象。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。 位图文件结构容摘要

BMP图片格式

BMP图片格式 简介: BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。 由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 文件结构: 典型的BMP图像文件由四部分组成: 1:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息; 2:位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息; 3:调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板; 4:位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。 位图的类型: 位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。DDB位图在早期的Windows系统(Windows 3.0以前)中是很普遍的,事实上它也是唯一的。然而,随着显示器制造技术的进步,以及显示设备的多样化,DDB位图的一些固有的问题开始浮现出来了。比如,它不能够存储(或者说获取)创建这张图片的原始设备的分辨率,这样,应用程序就不能快速的判断客户机的显示设备是否适合显示这张图片。为了解决这一难题,微软创建了DIB位图格式。 设备无关位图 (Device-Independent Bitmap) DIB位图包含下列的颜色和尺寸信息: *原始设备(即创建图片的设备)的颜色格式。 *原始设备的分辨率。 *原始设备的调色板 *一个位数组,由红、绿、蓝(RGB)三个值代表一个像素。 *一个数组压缩标志,用于表明数据的压缩方案(如果需要的话)。 以上这些信息保存在BITMAPINFO结构中,该结构由BITMAPINFOHEADER结构和两个或更多个RGBQUAD结构所组成。BITMAPINFOHEADER结构所包含的成员表

数字图像处理-位图基础知识

第一章位图的基础知识 现代计算机和其他电子设备进行和完成的一系列工作为图像采集、获取、编码、存储、和传输,图像的合成和产生、图像的显示、绘制、和输出,图像变换、增强、恢复和重建,特征的提取和测量,目标的检测、表达和描述,序列图像的校正,图像数据库的建立、索引、查询和抽取,图像的分类、表示和识别,3D景物的重建复原,图像模型的建立,图像知识的利用和匹配,图像场景的解释和理解,以及基于它们的推理、判断、决策和行为规划。 图像增强图像增强是用以改善供人观看的图像的主观质量,而不一定追究图像降质的原因。 图像复原找出图像降质的原因,并尽可能消除它,使图像恢复本来面目。常用的恢复有纠正几何失真、从已知图像信号和噪声信号的统计入手,用Wiener滤波等方法来改善信噪比。图像变换图像处理的方法可以分为两大类空域法和频域法。常用的图像变换有傅里叶变换、DCT变换、小波变换等。 图像编码根据香农的率失真真理,在传输和存储时,都可对数字图像进行一定方式编码,删除其中冗余信息,实现不失真压缩,或在容许失真限度内的进行有失真压缩,以换取更大的压缩率。 图像配准可以近似的看成匹配的过程,简单地说就是根据图像的某系区域或者特征,在另一幅图中找到对应的区域或者特征。图像配准在图像识别、图像拼接、三维图像的重建等方面有着重要的应用。 图像分析和特征提取图像分析的内容分为特征提取、符号描述、目标检测、今晚匹配和识别等几个部分。图像特征和指图像场中可用作标志的属性,其中有些是视觉直接感受到自然特征,如区域的亮度、彩色、纹理、或轮廓等有些事需要通过变换或测量才可得到的人为特征,如各种变换频谱、直方图、矩等。图像特征提取就是从图像中提取出某些可能涉及到高层语义信息的图像特征。 目标和运动检测自动目标检测和交互目标检测。 图像分割人能方便地佛纳甘一副图像中找出感性趣的物体和区域,而要让计算机做到这一点需要他客观的测度,使之能按照灰度、颜色或几何特征性质等把一些物体或区域加以分离。形状描述对于已经分离出来的区域或物体边界,用适当的数学语言来表示其统计或者区域之间的关系,得出一种简练的表达方式。 图像识别识别的景物是相对简单的原始是视觉机制理论不够完善,完善的视觉模型尚未建立。模板匹配、统计识别等是一些常用的识别方法。 一副图像所包含的信息首先表现为光的强度I,它是随空间坐标(x,y),光线的波长u和时间t而变化的,图像函数可以表示为I = f (x,y,u,t) ; 若之考虑光的能量而不考虑光的波长,在视觉效果上只有黑白深浅之分,而无彩色变化,这时称为黑白图像(灰度图像)图像模型可表示为 I = f (x,y, t) =∫(0 –无穷) f(x, y, u,t)V(u)du 当考虑到波长光的彩色效应,则为彩色图像。根据三基色原理,任何一种彩色可以分解为红、绿、蓝三种基色彩色图像可表示为 I = { R(x,y,t), G(x,y,t),B(x,y,t)}

第2章图像的显示

第2章图像的显示 本章要点: 调色板的基本应用 图像的特效显示 2.1 调色板的基本应用 图像显示是最基本同时也是最重要的一种图像处理技术。因为对于计算机来说,图像显示几乎无处不用,要学好图像处理,首先就要了解显示的原理和实现的方法。 现实世界的颜色很多,但计算机只能表示其中的部分颜色。每一种颜色经过数字化处理之后,转变成了数字的形态,即由若干个位(Bit)组成,图像中能够表示的颜色与每一种颜色所需的位数有关。每一种颜色所需位数与存储颜色的情况如下: 1位2种颜色 2位4种颜色 4位16种颜色 8位256种颜色 16位65536种颜色 24位1677万种颜色 32位1677万种颜色和256级灰度值 36位687亿种颜色和4096级灰度值 为了计算机能更好的重现实际图像,就需要采用一定的技术来管理颜色。微软Windows NT,Windows95/98等提供了真彩色和调色板两种相似的处理颜色的方法。 通常所称的标准VGA显示模式是8位显示模式,即在该模式下能显示256种颜色;而高彩色(HI COLOR)显示是16位显示模式,能显示65536种颜色,也称64K色;还有一种真彩色()显示模式是24位显示模式,能显示1677万种颜色,也称16M 色,这是现在一般PC机所能达到的最高颜色显示模式,在该模式下看到的真彩色图像的色彩已和高清晰度照片没什么差别了。 在Windows操作系统中不是真彩色系统的位图文件中都含有颜色索引表,在显示时可以采用调色板技术,将文件中自带的颜色显示出来。 在第一章已经介绍了256色位图文件中含有BMP文件由文件头、位图信息头、颜色信息表和图像数据四部分组成。256色位图文件输入到计算机后,在计算机内通常采用二维数组来表示图像的矩阵。位图文件中所有颜色信息表组成颜色索引表,颜色索引表中装有该文件所有颜色的R、G、B各分量值,每个像素的像素值是颜色索引表的索引号。 调色板中的颜色值指定了屏幕上像素的红、绿、蓝三个基色的混合比例,调色板就是在256色显示系统中,将图像中出现的256种颜色组成颜色表,对这些颜色按8位,即0至255进行编号,每一编号代表其中的一种颜色,在这种颜色中颜色编号叫做颜色的索引号。屏幕上的每个像素对应一个颜色号,不同的像素的颜色对应不同的调色板颜色值。图像的像素值并不是颜色值,而是颜色在调色板查找表中的索引号。 调色板是一组独立于存储各个像素颜色编号存储区的视频存储区。为了确定每个颜色编号所对应的真实颜色,显示硬件要参考调色板的颜色值。在调色板系统中,每一幅图像都

256色非压缩BMP图片制作

256色非压缩BMP图片制作 2009-10-24 256色,就是显示器只能显示256种颜色的模式,即2^8(二的八次方)种颜色。多少色指是它能显示颜色数的量,数值越大,所显示的图像就越艳丽,色彩越丰富。256色我们需要8位即一个字节来表示一个象素包含的信息,所包含的数据量就是16色的两倍。 BMP是DOS 和Window s 兼容计算机上的标准Window s 图像格式。BMP 格式支持RGB、索引颜色、灰度和位图颜色模式。您可以为图像指定Window s 或OS/2? 格式,以及高达32 位/通道的位深度。对于使用Window s 格式的 4 位和8 位图像,还可以指定RLE 压缩。BMP 图像通常是自下而上编写出;但您也可以选择“翻转行序”选项,自上而下编写。您还可以点按“高级模式”选择其他编码方法。(“翻转行序”和“高级模式”对于游戏程序员和其他使用DirectX的人员而言最有用。) 这里讨论的256色BMP图片主要应用于开机LOGO、系统启动盘背景图片和WIN98壁纸等比较特殊的场合,大小规格都比较明确,如640×480和800×600等,有的还要求为非压缩BMP图片。我们可以通过搜索网络得到图片然后直接应用,但对展现个性有所限制,想要得到心水的图片比较难,另一种途径就是自己制作。制作的方法有三种,需要的技巧各异,得到的效果也不同,下面逐一介绍。 一、利用系统自带的画图工具MS P aint 使用画图工具最为简单,主要是保存文件时要正确选择文件类型,只要保存时选择BMP,然后保存就可以了。 画图工具只适合制作简单的16色或256色的图片,这样的图片没有复杂的线条结构也没有复杂的色彩变化,否则转换后的图片将失色严重,甚至不堪入目。画图工具在改变图片的大小方面很弱,操作极不简便。 下图是用A CDSEE转换的256色BMP图片效果,与原图基本一致。

图像文件格式BMP文件格式详解

BMP文件格式 BMP文件格式是Microsoft Windows下最常见的图像文件格式之一,它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大;BMP 文件的图像深度可选lbit、4bit、8bit及24bit;BMP文件存储数据时,图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,需要在后端补0,凑足4的倍数;由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像都支持BMP图像格式; 典型的BMP文件由四部分组成: 1、位图头文件数据结构 主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息; 2、信息数据结构 包含图象的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息; 3、 包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板; 4、位图数据 记录了位图的每一个像素值或该对应像素的颜色表的索引值,图像记录顺序是 在扫描行内是从左到右, 扫描行之间是从下到上;这种格式我们又称为Bottom_Up位图,当然与之相对的还有Up_Down形式的位图,它的记录顺序是从上到下的,对于这种形式的位图,也不存在压缩形式; BMP文件结构 位图文件bitmap file, BMP格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式; 以后的BMP格式与显示设备无关,因此把这种BMP格式称为设备无关位图Device Independentbit Bitmap , DIB格式, Windows能够在任何类型的显示设备上显示BMP位图;BMP位图默认的文件扩展名是bmp; 1、文件结构 位图文件可看成由4个部分组成:位图文件头Bitmap-File、位图信息头 Bitmap-Information Header、彩色表Color Table和定义位图的字节阵列,它们的名称和符号如下表1所示:

bmp存储结构

BMP文件是Windows保存图像的一种通用文件格式,在数字图像处理方面占有重要的地位。BMP文件中保存的图像数据是一种DIB(Device-Independent Bitmap,即设备无关位图),DIB是标准的Windows位图格式,它自带颜色信息,因此调色板管理非常容易。有许多文章是关于讲述如何将BMP文件读取、显示的,而如何将数据保存为BMP文件则不是太多,本文作者通过一个实例讲述这一过程。 一、 BMP文件的结构 要想把数据正确地保存为BMP文件,首先对BMP文件的结构应该有一个清晰的了解。一个BMP文件大体上分成如下4个部分,如图1所示。 ①王军伟,在读博士研究生,中国农业大学(东区)214#信箱,研究方向:图像处理,智能交通 1、第一部分为位图文件头BITMAPFILEHEADER,它是一个结构,其定义如下: typedef struc tagBITMAPFILEHEADER{ WORD bfType; WORD bfSize; WORD bfReserved1; WORD bfReserved2; WORD bfOffBits; }BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER; 该结构的长度是固定的,为14个字节,各个域的说明如下:  bfType:指定文件类型,必须是0x4d42,即字符串“BM”。  bfSize:指定文件大小,包括这14个字节。  bfReserved1,bfReserved2:保留字,为0。  bfOffBits:从文件头到实际的位图数据的偏移字节数,即图1中前三个部分的长度之和。 2、第二部分为位图信息头BITMAPINFOHEADER,它也是一个结构,其定义如下: typedef struc tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage;

汇编语言显示bmp图像文件-实验报告-附源码

1.问题描述 用汇编语言编写程序,该程序能打开并显示一个.bmp位图图像文件。 原本设想该程序在命令提示符下输入文件路径后直接打开文件,但是在用DosBox 测试时发现不能寻找系统路径,后来将程序改成直接打开当前文件夹下的某个文件,不再输入文件路径。 这个程序对图片文件格式有一定的要求,首先显示模式为320*200的256色模式,故位图属性应该是256色位图,即位深度为8。 2.位图相关知识 BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。由于它可以不作任何变换地保存图像像素域的数据,因此成为我们取得RAW数据的重要来源。Windows的图形用户界面(graphical user interfaces)也在它的内建图像子系统GDI中对BMP格式提供了支持。 BMP文件的数据按照从文件头开始的先后顺序分为四个部分: bmp文件头(bmp file header):提供文件的格式、大小等信息; 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息; 调色板(color palette):可选,如使用索引来表示图像,调色板就是索引与其对应的颜色的映射表; 位图数据(bitmap data):用来保存图像数据; 色彩深度又叫色彩位数,即位图中要用多少个二进制位来表示每个点的颜色,是分辨率的一个重要指标。常用有1位(单色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增强色),24位和32位(真彩色)等。其中24位和32位位图中没有调色板。 在这个实验中,因为程序显示模式为256色,于是我采用8位色彩深度的位图图片。 因此,我用windows的画图工具制作了一个320*200大小的256色位图图片。如图所示:

BMP位图格式详解

位图格式BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP为扩展名保存。 打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。 现在讲解BMP的4个组成部分: 1.文件头信息块 0000-0001 :文件标识,为字母ASCII码“BM”。 0002-0005 :文件大小。 0006-0009 :保留,每字节以“00”填写。 000A-000D :记录图像数据区的起始位置。各字节的信息含义依次为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。 2.图像描述信息块 000E-0011:图像描述信息块的大小,常为28H。 0012-0015:图像宽度。 0016-0019:图像高度。 001A-001B:图像的plane总数(恒为1)。 001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。 001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。 0022-0025:图像区数据的大小。 0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。 002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。 002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。 3.颜色表 颜色表的大小根据所使用的颜色模式而定:2色图像为8字节;16色图像位64字节;256色图像为1024字节。其中,每4字节表示一种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,一般不需要)。即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色,依此类推。 4.图像数据区 颜色表接下来位是位图文件的图像数据区,在此部分记录着每点像素对应的颜色号,其记录方式也随颜色模式而定,既2色图像每点占1位;16色图像每点占4位;256色图像每点占8位;真彩色图像每点占24位。所以,整个数据区的大小也会随之变化。究其规律而言,可的出如下计算公式:图像数据信息大小=(图像宽度*图像高度*记录像素的位数)

bmp位图调色板

调色板 调色板概述每个应用程序都有自己的调色板,使用调色板时要先向系统申请,调色板分为前台调色板和后台调色板,windows为优先级高的程序分配前台调色板. 我们经常会发现当启动一个大一点的程序时,桌面和其他应用程序的颜色变得粗糙起来,就是因为其他应用程序的调色板正在转为后台调色板. Windows系统内部保留了一个20种颜色的调色板,用来显示窗口,菜单等通用界面每个设备上下文都拥有一个逻辑调色板,如果要使用内部系统调色板(20种颜色)之外的颜色,则应该创建一个新的逻辑调色板并将其选入到设备上下文中.再把设备上下文中的逻辑调色板实现到系统调色板中,新的颜色才能实现.在逻辑调色板被实现到系统调色板时,Windows会建立一个调色板映射表,当设备上下文用逻辑调色板中的颜色绘图时,GDI绘图函数会查询调色板映射表以把像素值从逻辑调色板的索引转换成系统调色板的索引. 创建调色板BOOL CreatePalette(LPLOGPALETTE lpLogPalette ); 其中lpLogPalette是一个指向LOGPALETTE 结构的指针 typedef struct tagLOGPALETTE { WORD palVersion; //windows版本号,一般是0x300 WORD palNumEntries; //调色板中颜色表项的数目PALETTEENTRY palPalEntry[1]; //每个表项的颜色和使用方法 } LOGPALETTE; typedef struct tagPALETTEENTRY { BYTE peRed; //红(0-255) BYTE peGreen;// 绿 BYTE peBlue; //蓝 BYTE peFlags; //一般为0 } PALETTEENTRY; 上面只是建立了一个逻辑调色板,而逻辑调色板只是一张孤立的颜色表,并不能对系统产生影响,所以要使用调色板还需要下面这些函数CPalette* SelectPalette(CPalette* pPalette,BOOL bForceBackground ); 这个函数用来将一个调色板载入设备上下文,第一个参数是一个调色板指针,第二个参数用来指定调色板作为前景色还是背景色使用,为TURE时,作为背景色使用,为FALSE时,当窗口是活动窗口或活动窗口的子窗口是,调色板将做为前景色使用,否则做为背景色来使用.如果使用调色板的是一个内存设备上下文,则该参数被忽略. UINT RealizePalette( ); 该函数把设备上下文中的逻辑调色板实现到系统调色板中, 函数的返回值表明调色板映射表中有多少项被改变了这两个函数的使用如下: CPalette *pOldPalette ; CWindowDC dc(this) ; pOldPalette=dc.SelectPalette(&pal, FALSE) ;

位图的基本格式

位图的基本格式

第一章位图的基本格式 1.1位图文件格式的产生及发展 BMP图像文件格式是微软公司为其Windows环境设置的标准图像格式,而且Windows系统软件中还同时内含了一系列支持BMP图像处理的API函数,随着Windows 在世界范围内的不断普及,BMP文件格式无疑也已经成为PC 机上的流行图像文件格式。它的主要特点可以概括为:文件结构与PCX文件格式类似,每个文件只能存放一幅图像;图像数据是否采用压缩方式存放,取决于文件的大小与格式,即压缩处理成为图像文件的一个选项,用户可以根据需要进行选择。其中,非压缩格式是BMP图像文件所采用的一种通用格式。但是,如果用户确定将BMP文件格式压缩处理,则Windows设计了两种压缩方式:如果图像为16色模式,则采用RLE4压缩方式,若图像为256色模式,则采用RLE8压缩方式。同时,BMP图像文件格式可以存储单色、16色、256色以及真彩色四种图像数据,其数据的排列顺序与一般文件不同,它以图像的左下角为起点存储图像,而不是以图像的左上角为起点;而且BMP图像文件格式中还存在另外一个与众不同的特点,即其调色板数据所采用的数据结构中,红、绿、蓝三种基色数据的排列顺序也恰好与其它图像文件格式相反。总之,BMP图像文件格式拥有许多适合于Windows环境的新特色,而且随着Windows版本的不断更新,微软公司也在不断改进其BMP图像文件格式,例如:当前BMP图像文件版本中允许采用32位颜色表,而且针对32位Windows 的产生,相应的API函数也在不断地推陈出新,这些无疑都同时促成了BMP文件格式的不断风靡。但由于BMP文件格式只适合于Windows上的应用软件,而对于DOS环境中的各种应用软件则无法提供相应的支持手段,因此这无疑是阻碍BMP文件格式的流通程度超过PCX文件格式的一个重要因素。 1.2 位图文件的类型 Windows中定义了两种位图文件类型,即一般位图文件格式与设备无关位图文件格式。其中,由于设备无关位图(DIB)文件格式具有更强的灵活性与完整的图像数据、压缩方式等定义。BMP图像文件的结构可以分为如下三个部分:文件头、调色板数据以及图像数据。其中文件头的长度为固定值54个字节;调色板数据对所有不超过256色的图像模式都需要进行设置,即使是单色图像模式也不例外,但是对于真彩色图像模式,其对应的BMP文件结构中却不存在相应调色板数据的设置信息;图像数据既可以采用一定的压缩算法进行处理,也可以不必对图像数据进行压缩处理,这不仅与图像文件的大小相关,而且也与对应的图像处理软件是否支持经过压缩处理的BMP图像文件相关。以下将分别介绍BMP图像文件结构中的这三个重要组成部分。特别值得注意的是:BMP 图像文件结构设计得相当简单,这无疑有利于图像文件的处理速度,但是同时也使得BMP图像文件格式具有一定的局限性,即一个BMP图像文件只能存储一幅图像。 1.3 BMP文件格式的结构定义 BMP图像文件的文件头定义Windows中将BMP图像文件的文件头分成两

相关主题
相关文档
最新文档