第1章 Windows位图和调色板
- 格式:pdf
- 大小:333.13 KB
- 文档页数:12
Windows位图和Leptonica位图的转换Windows位图(BMP)和Leptonica位图的转换是图像处理中常见的操作。
Windows位图是一种常见的位图图像格式,通常用于存储图像。
而Leptonica是一个开放源码的图像处理库,拥有丰富的图像处理功能。
在实际应用中,我们常常需要将Windows位图和Leptonica位图进行相互转换,以便利用它们各自的优势和功能。
本文将详细介绍Windows 位图和Leptonica位图的特点,以及它们之间的转换方法。
一、Windows位图(BMP)的特点Windows位图(BMP)是一种常见的位图图像格式,它采用无损压缩的方式存储图像数据。
Windows位图使用的是RGB颜色模式,每个像素由红、绿、蓝三个色彩通道组成,可以表示出丰富的颜色。
Windows位图支持多种色彩深度,包括1位、4位、8位、16位、24位和32位等,能够适应不同的图像需求。
Windows位图还支持无损压缩和有损压缩两种方式,可以根据实际需求选择合适的压缩方式,以便在保证图像质量的同时减小文件大小。
二、Leptonica位图的特点Leptonica是一个开放源码的图像处理库,它提供了丰富的图像处理功能,包括图像的加载、保存、处理、分析等。
Leptonica库支持多种图像格式,包括BMP、PNG、JPEG等,能够满足不同图像处理需求。
Leptonica库使用的是灰度图像格式,每个像素只有一个灰度值,适合于图像处理和分析。
Leptonica库还提供了丰富的图像处理函数,包括图像平滑、边缘检测、形态学处理等,能够满足不同的图像处理需求。
在实际应用中,我们经常需要将Windows位图和Leptonica位图进行相互转换,以便在不同的图像处理场景中使用。
下面将介绍Windows位图和Leptonica位图之间的转换方法。
```#include <leptonica/allheaders.h>Pix *pix = pixRead(inputFile);if (pix == nullptr) {fprintf(stderr, "Error: cannot read input file\n");return 1;}pixDestroy(&pix);return 0;}```在上面的示例代码中,我们使用了Leptonica库中的`pixRead`函数加载Windows位图,并使用`pixWrite`函数将其转换为Leptonica位图格式。
第一章1.连续图像中,图像为一个二维平面,(x,y)图像中的任意一点,f(x,y)为图像于(x,y)于处的值。
连续图像中,(x,y)的取值是连续的,f(x,y)也是连续的数字图像中,图像为一个由有限行有限列组成的二维平面,(i,j)为平面中的任意一点,g(i,j)则为图像在(i,j)处的灰度值,数字图像中,(i,j) 的取值是不连续的,只能取整数,对应第i行j列,g(i,j) 也是不连续的,表示图像i行j列处图像灰度值。
联系:数字图像g(i,j)是对连续图像f(x,y)经过采样和量化这两个步骤得到的。
其中g(i,j)=f(x,y)|x=i,y=j2. 图像工程的内容可分为图像处理、图像分析和图像理解三个层次,这三个层次既有联系又有区别,如下图所示。
图像处理的重点是图像之间进行的变换。
尽管人们常用图像处理泛指各种图像技术,但比较狭义的图像处理主要是对图像进行各种加工,以改善图像的视觉效果并为自动识别奠定基础,或对图像进行压缩编码以减少所需存储空间图像分析主要是对图像中感兴趣的目标进行检测和测量,以获得它们的客观信息,从而建立对图像的描述。
如果说图像处理是一个从图像到图像的过程,则图像分析是一个从图像到数据的过程。
这里的数据可以是目标特征的测量结果,或是基于测量的符号表示,它们描述了目标的特点和性质。
图像理解的重点是在图像分析的基础上,进一步研究图像中各目标的性质和它们之间的相互联系,并得出对图像内容含义的理解以及对原来客观场景的解释,从而指导和规划行动。
如果说图像分析主要以观察者为中心来研究客观世界,那么图像理解在一定程度上是以客观世界为中心,借助知识、经验等来把握整个客观世界(包括没有直接观察到的事物)的。
联系:图像处理、图像分析和图像理解处在三个抽象程度和数据量各有特点的不同层次上。
图像处理是比较低层的操作,它主要在图像像素级上进行处理,处理的数据量非常大。
图像分析则进入了中层,分割和特征提取把原来以像素描述的图像转变成比较简洁的非图形式的描述。
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,与设备无关的位图)的概念以及二者的区别。
第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组合值颜色R G B红255 0 0蓝0 255 0绿0 0 255黄255 255 0紫255 0 255青0 255 255白255 255 255黑0 0 0灰128 128 128你大概已经明白了,当一幅图中每个象素赋予不同的RGB值时,能呈现出五彩缤纷的颜色了,这样就形成了彩色图。
第一章windows位图和调色板关于图像的存储方法:Ex:有一个长宽各位200个像素,颜色数为16色的彩色图,每一个像素都用RGB 3个分量表示。
①最易想到,最原始的存储方法:因为每个分量有256个级别,要用8bit,即1 byte 来表示,所以每个像素需要用3 byte。
So,整个图像要用200 * 200 * 3,约120k byte。
②调色板palette我们用一个表,表中每一行记录一种颜色的R G B 值,而列数等于颜色数。
这样一行需要3 byte (R G B 各占1 byte),16 个状态需要16 行。
所以,表占用的字节共3 * 16 = 48 byte。
图像只有16个颜色,就是16种状态,只需要4 bit = 0.5byte 用来给它们编号,以在表中查找到该颜色的具体RGB 值。
这样,采用调色板存储该图像共需要的存储空间是:200 * 200 * 16 * 0.5 + 3 * 16 (byte)这样所占用的字节数约为前面的1/6,节省了不少呢。
另,关于真彩色图的存储:所谓真彩色图,是指他的颜色数高达256 * 256 * 256,也就是包含了RGB颜色表示方法中的所有颜色。
但是并不是说一幅图包含了所有的颜色,而是说它具有显示所有颜色的能力。
即最多可以包含所有的颜色。
如果这时还要采用调色板技术:调色板:颜色数* 3 = 256 * 256 * 256 * 3颜色的索引:log (256 * 256 * 256)= 24 bit = 3 byte而直接利用R G B三个分量表示一个像素只需要3byte 而已。
反而节省了存储调色板的空间。
所以:对于2色位图,用1位就可以表示该像素的颜色,一个字节可以表示8个像素。
对于16色位图,用4位可以表示一个像素的颜色,一个字节可以表示2个像素。
对于256色位图,一个字节刚好可以表示1个像素。
Notice:①每一行的字节数必须是4的整数倍,如果不是需要补齐。
Windows程序设计复习题一选择题1 下列程序设计方法中,()是一种基于对象的程序设计方法。
A: MFC程序设计B: 使用WindowsAPI编程C: 使用VisualBasic语言编程 D: 使用C#程序设计语言编程2 MFC程序框架中,最先执行的函数是()。
A: WinMain函数B: CWinApp类的构造函数C: CWinApp类的InitInstance函数D: Cwnd的OnCreate函数3 CWinApp类中用()成员函数实现了对消息环的封装。
A: InitInstance( ) B: Run()C: OnIdle() D: WndProc()4 消息的4个参数中,表示消息类型的参数是()。
A: HWND hwnd B: messageID C: wParam D: lParam5下列各消息中,与程序的菜单命令、工具栏按钮或对话框按钮相对应的消息是()。
A: WM_CHAR B: WM_COMMAND C: WM_CREATE D: WM_PAINT6 MFC消息映射机制中,下列消息映射表BEGIN_MESSAGE_MAP(CGraphicsView, CScrollView)ON_WM_PAINT()END_MESSAGE_MAP()把WM_PAINT消息映射到()。
A: CGraphicsView类OnPaint函数B: CGraphicsView类OnDraw函数。
C: CScrollView类的OnPaint函数D: CScrollView类的OnDraw成员函数。
7 下列MFC类中,不直接支持消息映射的MFC基类是(),A: CCmdTarget B: CWinAPP C: CWnd D: CMap8 下列集合类中,其内部是使用散列表技术实现的MFC类的是()。
A: CArray B: CList C: CMap D: CPtrList9 下列CWnd类成员函数中,用于任何消息的可覆盖函数是()。
第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分别表示该位置点的红、绿、蓝三种原色的颜色分量值。
PHOTOSHOP 教案第一课:基础操作一、图像类型:1.位图:由像素构成的图像,优点是色彩丰富,可在不同的软件中自由引用;缺点是文件大2.矢量图:由线条和色块构成的图像,优点是文件小,图像放大不会失真;缺点是色彩不丰富二、文件的基本操作:1.建立新的图像文件:按Ctrl并双击空白处(72为显示模式、150为报纸模式、300为打印模式);2.打开图文件:直接双击空白处;3.保存图像文件:单击“文件”/“保存”或按Ctrl+S(保存类型为PSD格式);也可另存为其它格式;4.复制图像文件:单击“图像”/“复制”命令,起个名字即可;三、设置颜色:直接单击前景或背景色板后,在“拾色器”选择想要的颜色;1.RGB颜色:分别代表“红、绿、蓝”,取值范围0~255之间,数值越高颜色越鲜亮,称为加色法原理,属光照模式,颜色偏亮,是Photoshop专用模式;2.CMYK颜色:分别代表“青、红、黄、黑”,取值范围0~100之间,数值越高颜色越暗沉,称为减色法原理,属打印模式,颜色偏暗,是CoreIDRAW专用模式;3.HSB模式:H(色相)、S(饱和度)、B(亮度);四、填充颜色:按Alt+Delete填充前景色,按Ctrl+Delete填充背景色,按X可将前、背景色切换,按D可恢复默认的黑白前、背景色;五、撤消操作:1.撤消一次:按Ctrl+Z2.撤消多次:按Ctrl+Alt+ZPHOTOSHOP 教案第二课:工作选区(一)一、选区的画法:1.矩形:按Shift可画正方,按“空格键” 移动当前选区;2.圆形:按Shift可画正圆,按“空格键” 移动当前选区;3.手动套索:手动套索可随意选择;4.多边形:多边形套索可精确选择图像,按Delete可返回上一步操作,按住“空格键”可移动视图选择其它的地方;5.磁性套索:用于颜色对比较强的图像;6.魔术棒:也是用于颜色对比较强的图像,但比较快;容差值越大,选择的范围越广;二、移动选区中的内容:单击移动工具后,可将选择的地方移动;三、选区的取消:单击“选择”/“取消选择”项或按Ctrl+D;四、选区的编辑:单击“选择”/“变换选区”项;1.中心按比例缩放:Shift + Alt+拖动对角;2.羽化选区:单击“选择”/“羽化”项或按Ctrl+Alt+D,可将选区变得柔和;3.反选:单击“选择”/“反选”按Ctrl+ Shift +I,选区将反转选择;4.选取相似:单击“选择”/“选取相似”,可将颜色相似的地方全部选择;作业:古钱、圆柱体、画风景、合成图象等;阿PHOTOSHOP 教案第三课:工作选区(二)一、选区的修整:1.新选区:每次画出的选区都是新的,原来的将被换掉;2.加选区:在原来的选区上加入新画的选区(按Shift);3.减选区:从原来的选区上减去(按Alt);4.相交选区:相交的部分被保留(Shift+Alt);二、选区的变换:不改变当图形形状,只是改变选区的形状;1.移动选区:单击“选择”/“变换选区”项,可缩放或旋转选区,点右键可选择不同的变换类型;2.等比缩放选区:按Shift+Alt时拖动控制框的对角或对边;3.水平或垂直移动选区:移动选区的过程中按住Shift;三、复制选区内容:1.同一个文档中复制:选择某个地方,按住Alt用移动工具拖动可复制;2.不同一个文档复制:将其它文档移动或选择某个地方移动到当前文档可复制;3.不同一个文档复制并粘贴入:Ctrl+A全选;Ctrl+C复制;ctrl+Shift+V粘贴入。
BMP格式BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。
随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。
这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。
所以,目前BMP在单机上比较流行。
目录BMP文件格式分析1bmp位图和调色板的概念RGB颜色阵列??1加载文件?1、加载文件头?12、加载位图信息头?13、行对齐?14、加载图片数据?15、绘制?16、3D(OpenGL)的不同之处?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作扩展名)。
1.2 文件结构位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节阵列,它具有如下所示的形式。
Windows自带的“画图”程序不少朋友都瞧不起Windows自带的“画图”程序,它看上去也确实简陋,不那么起眼,可其基本功能却不含糊。
它可以编辑、处理图片,为图片加上文字说明,对图片进行挖、补、裁剪,还支持翻转、拉伸、反色等操作。
它的工具箱包括画笔、点、线框及橡皮擦、喷枪、刷子等一系列工具。
具有完成一些常见的图片编辑器的基本功能。
用它来处理图片,方便实用,效果不错。
特别是初学者,如能充分利用它的各种技巧,就可以避免学习那些庞大的图像处理软件之劳累。
1、截取屏幕画面如要截取屏幕上显示的画面,只需先按下Print Screen键(如欲截取当前活动窗口中画面则要同时按“Alt+Print Screen”键),然后选择“开始→附件→画图”,启动画图程序。
点“编辑→粘贴”或按“Ctrl+V”键,即将桌面或活动窗口画面粘贴到“画图”中,点击“文件→保存”或按“Ctrl+S”键即可保存为图片文件。
2、准确粘贴文件准确粘贴文件:在PhotoShop中,软件会监视其剪贴板所容纳位图的大小。
新建位图时,会默认使用剪贴板中的位图大小,但这在“画图”中却行不通。
其实,我们要使“画图”准确粘贴文件,只要通过“图像”菜单下的“属性”命令设置默认区域高和宽都为1像素,这样在“画图”中按下Ctrl+V键来粘贴图像时会打开一个对话框,问“剪贴板中的图像比位图大。
想扩大位图吗?”,按下“是”按钮即可以当前剪贴板中文件大小准确粘贴文件了。
3、快速粘贴选择区域在一般软件中要粘贴选择区域,都必须先选中,然后再使用复制和粘贴命令。
不过,在“画图”中,我们只要先用鼠标框选部分区域,然后按住Ctrl不松开,再拖动所选区域即可,这一技巧在要用某一块位图填充一大块空缺时非常有用。
4、整体把握图片在画图中,按下Ctrl+F键可以全屏幕观看图片文件,全屏幕状态下按下任意键可返回到编辑状态。
另外,在“画图”中,我们按下Ctrl+Page Down键可使位图以200%比例显示。
第一章位图的基本格式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中定义了两种位图文件类型,即一般位图文件格式与设备无关位图文件格式。