《2022年图片浏览器知识总结.docx》由会员分享,可在线阅读,更多相关《2022年图片浏览器知识总结.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品_精品资料_图像的编码和解码能够对数据进行压缩并大大削减其数据量是由于数据存在大量的数据冗余,即存在冗余的、 可猜测的和不必要的数据. 数据量( D)与其所表达的信息量 ( I) 一般并不相等,它们之间存在如下关系:I=D-du du 0其中, du 代表数据的冗余量,如冗余量du=0,就不需要也不能对数据进行有效压缩.即,需要并能够对数据进行有效压缩的条件是du0.而图像数据中广泛存在着数据冗余.数据冗余一般有4 种形式,即统计冗余、信息熵冗余、结构冗余、学问冗余.利用冗余进行图像数据压缩包括两个相反的过程.数据编码:即对原始图像数据进行编码,以减小其数据量.数据解码: 即把编码压缩的图
2、像数据仍原成原始的表示形式.由于数据编码和数据解码是互逆的过程,只要争论好数据编码就能处理好数据解码.依据冗余类型的不同,人们提出了不同的数据编码方法,依据不同的动身点可把数据编码方法进行不同的分类.( 1)以对编码数据在解码后能否完全一样的仍原为原始数据为标准,可将数据编码方法划分为如下两类.无失真编码(可逆编码) :编码数据进行解码后的数据与编码前的原始数据完全相同,没有任何失真.有失真编码(不行逆编码) :编码数据进行解码后的数据与编码前的数据有肯定的偏差或失真,但在视觉成效上基本相同.(2)依据数据编码的实现原理可以把数据编码划分为猜测编码、变换编码、 信息熵编码、亚抽样与内插编码、矢
3、量量化编码、基于神经网络的编码、分频带 编码、结构编码、基于学问的编码和混合编码等10 类.其中,信息熵编码中的哈夫曼编码( Huffman Coding)、LZW (Lempel Ziv Welch Compression)编码、游程长度编码( Run Length Coding)和算术编码( Arithmetic Coding )都是常用的无失真图像编码方式.由于本设计并未涉及到上述全部的编码算法,故在此不再进行一一说明,在后面的内容中会对使用到的算法及其实现进行具体论述.BMP 图像BMP 图像,即通常所说的位图( Bitmap),是 Windows 系统中最为常见的图像格式. Wind
4、ows3.0 以前的版本只支持与设备相关位图DDB ( Device Dependent Bitmap).DDB 是一种内部位图格式,它显示的图像依运算机显示系 统的设置不同而不同,因此一般不储备为文件,与通常所说的BMP 图像不同.在 Windows.h 中,结构体 BITMAP 定义了 DDB 位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:typedef struct tagBITMAP可编辑资料 - - - 欢迎下载精品_精品资料_int bmType;int bmWidth;/位图类型,必需设为0位图宽度int bmHeight;int bmWidthBytes; BYTE
5、bmPlanes; BYTE bmBitsPixel;/位图高度位图中每一扫描行中的字节数颜色层数每一像素所占的位数void FAR*bmBits; /存放像素值内存块的的址BITMAP;DDB 中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的. Windows 只能保证系统调色板的前 20 种颜色稳固不变,所以 DDB 只能保证正确显示少于 20 色的位图. Windows SDK 供应标准的 DDB 位图操作函数. MFC 中定义了 CBitmap 类来说明 DDB 位图,其中封装了与 DDB 位图操作相关的数据结构和函数.Windows 3.1 以上版本供应了对设备无关
6、位图DIB ( Device Independent Bitmap)的支持. DIB 位图可以在不同的机器或系统中显示位图所固有的图像.相对于 DDB 而言, DIB 是一种外部位图格式,常常储备为常见的以BMP 为后缀的位图文件(有时也以 DIB 为后缀).因此,通常所说的 BMP 图像,即是 DIB 位图.BMP 位图文件包括 4 部分,即位图文件头结构 BITMAPFILEHEADER 、位图信息头结构 BITMAPINFOHEADER 、位图颜色表 RGBQUAD 和位图像素数据, BMP 位图文件的结构如图 3.1 所示.位图文件头结构 BITMAPFILEHEADER 位图信息头结
7、构 BITMAPINFOHEADER 位图颜色表 RGBQUAD位图像素数据图 3.1BMP 位图文件的结构下面介绍 BMP 文件头、BMP 位图信息头、颜色表这 3 个结构体在 Windows.h中的定义.1. BMP 文件头BMP 文件头含有 BMP 文件的类型、 文件的大小、 位图文件的保留字、位图数据距文件头的偏移量等信息.定义如下:typedef struct tagBITMAPFILEHEADERUINT bfType;/位图文件的类型,必需为BMDWORD bfSize;/位图文件的大小,以字节为单位UINT bfReserved1;/位图文件保留字,必需为0UINT bfRes
8、erved2;/位图文件保留字,必需为0DWORD bfOffBits; BITMAPFILEHEADER;/位图数据距文件头的偏移量,以字节为单位2. BMP 位图信息头BMP 位图信息头用于说明位图的尺寸等信息,定义如下:typedef struct tagBIMAPINFOHEADER可编辑资料 - - - 欢迎下载精品_精品资料_DWORD biSize;/本结构所占用字节数LONG biWidth;/位图的宽度,以像素为单位LONG biHeight;/位图的高度,以像素为单位WORD biPlanes;/目标设备的级别,必需为1WORD biBitCount;/每个像素所需的位数,
9、必需是1(双色)、/4( 16 色)、8 ( 256 色)或 24 (真彩色)之一DWORD biCompression;/位图压缩类型,必需是0 (不压缩)、/1( BI_RLE8压缩类型)或2 (BI_RLE压缩类型)之一DWORD biSizeImage;/位图的大小,以字节为单位LONG biXPelsPerMeter; /位图水平辨论率,每米像素数LONG biYPelsPerMeter; /位图垂直辨论率,每米像素数DWORD biClrUsed;/位图实际使用的颜色表中的颜色数 DWORD biClrImportant; /位图显示过程中重要的颜色数 BITMAPINFOHEAD
10、ER;3. 颜色表颜色表用于说明位图中的颜色,它有如干个表项,每一个表项是一个RGBQUAD 类型的结构,且定义一种颜色,定义如下:typedef struct tagRGBQUADBYTE rgbBlue;/蓝色的亮度(值范畴为0255 )BYTE rgbGreen;/绿色的亮度(值范畴为0255 )BYTE rgbRed;BYTE rgbReserved;/红色的亮度(值范畴为保留,必需为00255 ) RGBQUAD;位图信息头和颜色表组成位图信息, BITMAPINFO 结构定义如下:typedef struct tagBITMAPINFOBITMAPINFOHEADER bmiHea
11、der; RGBQUAD bmiColorsi; BITMAPINFO;颜色表中 RGBQUAD 结构数据的个数由 biBitCount 来确定,当 biBitCount=1 、4、8 时,分别有 2、16、256 个表项.当 biBitCount=24 时,没有颜色表项.位图数据记录了位图的每一个像素值,记录次序是在扫描行内从左到右、 扫描行之间从下到上.位图的一个像素值所占的字节数如下:当 biBitCount=1 时, 8 个像素占 1 个字节.当 biBitCount=4 时, 2 个像素占 1 个字节.当 biBitCount=8 时, 1 个像素占 1 个字节.当 biBitCou
12、nt=24 时, 1 个像素占 3 个字节.Windows 规定一个扫描行所占的字节数必需是4 的倍数(即以 long 为单位), 不足的以 0 填充,一个扫描行所占的字节数运算方法如下:DataSizePerLine=biWidthbiBitCount+31/8这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的4 字节对齐.除了上述的 Windows BMP 以外,仍有一种与其结构相像,但不完全相同的另一种 BMP 图像,即 OS/2 采纳的 BMP.其与 Windows BMP 的主要区分是位图信息结构(信息头结构和颜色表结构) 不同.而它们的图像位数据的储备方式可编辑资料
13、 - - - 欢迎下载精品_精品资料_是完全一样的.本设计只争论 Windows 系统下的 BMP 图像,故对 OS/2 使用的BMP 不进行具体分析.模块划分本设计的实现基于微软的MFC应用程序框架,故软件也采纳了文档(Document)/视图( View )结构,并使用单文档界面 (Single Document Interface, 简称 SDI).程序框架在响应它生成的标准用户接口“打开”命令时创建文档/ 视图结构,由于软件只需供应浏览的供能,因此将生成的标准框架中的“新建”命令禁用,其创建次序如下.步骤 1:程序启动时, WinMain 函数调用应用程序对象的 InitInstanc
14、e函数, 并在其中创建文档模板.步骤 2 : 程序运行过程中,挑选“文件”|“打开”命令,框架将调用CWinApp:OnFileOpen 函数,并使用已创建的文档模板创建文档.步骤 3: 文档模板创建主框架窗口.步骤 4: 主框架窗口创建文档对应的视图.程序中文档 /视图结构的各对象交互关系如图4.1 所示.文档模板GetDocTemplate 文档GetFirstViewPosition /GetNextView GetDocument 视图可编辑资料 - - - 欢迎下载精品_精品资料_GetParentFrame GetActiveView 主框窗口GetActiveDocument 可编辑资料 - - - 欢迎下载精品_精品资料_图 4.1文档/视图结构对象交互关系以 MVC ( Model-View-Controller )应用程序结构划分的模块如图4.2 所示.可编辑资料 - - - 欢迎下载精品_精品资料_Picture ViewerModelViewController图像解码、编码模块图像显示模块图像变换模块JPEG模块GIF模块OnDraPCX解TGA解BMP解/码/码/码编编编码码码模模模块块块全状图图图屏态像像像浏栏缩旋显览信放转示w模息模模模块显块块块示可编辑资料 - - - 欢迎下载