《2022年图片浏览器知识总结 .pdf》由会员分享,可在线阅读,更多相关《2022年图片浏览器知识总结 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图像的编码和解码能够对数据进行压缩并大大减少其数据量是因为数据存在大量的数据冗余,即存在冗余的、 可预测的和不必要的数据。 数据量(D)与其所表达的信息量 (I)一般并不相等,它们之间存在如下关系:I=D-du du0 其中, 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 系统中最为常见的图像格式。 Windows 3.0 以前的版本只支
4、持与设备相关位图DDB (Device Dependent Bitmap )。DDB 是一种内部位图格式,它显示的图像依计算机显示系统的设置不同而不同,因此一般不存储为文件,与通常所说的BMP 图像不同。在 Windows.h 中,结构体 BITMAP 定义了 DDB 位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:typedef struct tagBITMAP 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 6 页 - - - - - - - - - - int bmType; /
5、位图类型,必须设为0 int bmWidth; /位图宽度 int bmHeight; /位图高度 int bmWidthBytes; /位图中每一扫描行中的字节数 BYTE bmPlanes; /颜色层数 BYTE bmBitsPixel; /每一像素所占的位数 void FAR* bmBits; /存放像素值内存块的地址BITMAP; DDB 中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的。 Windows 只能保证系统调色板的前20 种颜色稳定不变,所以DDB 只能保证正确显示少于20 色的位图。 Windows SDK 提供标准的 DDB 位图操作函数;MFC 中定
6、义了 CBitmap 类来说明 DDB 位图,其中封装了与DDB 位图操作相关的数据结构和函数。Windows 3.1 以上版本提供了对设备无关位图DIB (Device Independent Bitmap)的支持。 DIB 位图可以在不同的机器或系统中显示位图所固有的图像。相对于 DDB 而言, DIB 是一种外部位图格式,经常存储为常见的以BMP 为后缀的位图文件 (有时也以 DIB 为后缀) 。因此,通常所说的 BMP 图像,即是 DIB位图。BMP 位图文件包括 4 部分,即位图文件头结构BITMAPFILEHEADER 、位图信息头结构 BITMAPINFOHEADER 、 位图颜
7、色表 RGBQUAD 和位图像素数据,BMP 位图文件的结构如图3.1 所示。位图文件头结构BITMAPFILEHEADER 位图信息头结构BITMAPINFOHEADER 位图颜色表 RGBQUAD 位图像素数据图 3.1 BMP 位图文件的结构下面介绍 BMP 文件头、BMP 位图信息头、颜色表这 3 个结构体在 Windows.h中的定义。1. BMP 文件头BMP 文件头含有 BMP 文件的类型、 文件的大小、 位图文件的保留字、位图数据距文件头的偏移量等信息。定义如下:typedef struct tagBITMAPFILEHEADER UINT bfType; /位图文件的类型,必
8、须为BM DWORD bfSize; /位图文件的大小,以字节为单位 UINT bfReserved1; /位图文件保留字,必须为0 UINT bfReserved2; /位图文件保留字,必须为0 DWORD bfOffBits; /位图数据距文件头的偏移量,以字节为单位 BITMAPFILEHEADER; 2. BMP 位图信息头BMP 位图信息头用于说明位图的尺寸等信息,定义如下:typedef struct tagBIMAPINFOHEADER 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页
9、,共 6 页 - - - - - - - - - - DWORD biSize; /本结构所占用字节数 LONG biWidth; /位图的宽度,以像素为单位 LONG biHeight; /位图的高度,以像素为单位 WORD biPlanes; /目标设备的级别,必须为1 WORD biBitCount; /每个像素所需的位数,必须是1(双色)、 /4(16 色) 、8(256 色)或 24(真彩色)之一 DWORD biCompression; /位图压缩类型,必须是 0 (不压缩)、 /1(BI_RLE8压缩类型)或2(BI_RLE压缩类型)之一 DWORD biSizeImage; /
10、位图的大小,以字节为单位 LONG biXPelsPerMeter; /位图水平分辨率,每米像素数 LONG biYPelsPerMeter; /位图垂直分辨率,每米像素数 DWORD biClrUsed; /位图实际使用的颜色表中的颜色数 DWORD biClrImportant; /位图显示过程中重要的颜色数 BITMAPINFOHEADER; 3. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD 类型的结构,且定义一种颜色,定义如下:typedef struct tagRGBQUAD BYTE rgbBlue; /蓝色的亮度(值范围为0255 ) BYT
11、E rgbGreen; /绿色的亮度(值范围为0255 ) BYTE rgbRed; /红色的亮度(值范围为0255 ) BYTE rgbReserved; /保留,必须为0 RGBQUAD; 位图信息头和颜色表组成位图信息,BITMAPINFO 结构定义如下:typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColorsi; BITMAPINFO; 颜色表中 RGBQUAD 结构数据的个数由biBitCount 来确定, 当 biBitCount=1、4、8 时,分别有 2、16、256个表项;当 biBi
12、tCount=24 时,没有颜色表项。位图数据记录了位图的每一个像素值,记录顺序是在扫描行内从左到右、扫描行之间从下到上。位图的一个像素值所占的字节数如下:当 biBitCount=1 时,8 个像素占 1 个字节。当 biBitCount=4 时,2 个像素占 1 个字节。当 biBitCount=8 时,1 个像素占 1 个字节。当 biBitCount=24 时,1 个像素占 3 个字节。Windows 规定一个扫描行所占的字节数必须是4 的倍数 (即以 long 为单位) ,不足的以 0 填充,一个扫描行所占的字节数计算方法如下:DataSizePerLine=(biWidthbiBi
13、tCount+31)/8 这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的4 字节对齐。除了上述的 Windows BMP 以外,还有一种与其结构相似,但不完全相同的另一种 BMP 图像,即 OS/2 采用的 BMP。其与 Windows BMP 的主要区别是位图信息结构 (信息头结构和颜色表结构)不同。而它们的图像位数据的存储方式精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 6 页 - - - - - - - - - - 是完全一样的。本设计只讨论Windows 系统下的
14、 BMP 图像,故对 OS/2 使用的BMP 不进行详细分析。模块划分本设计的实现基于微软的MFC 应用程序框架,故软件也采用了文档(Document)/视图(View)结构,并使用单文档界面 (Single Document Interface ,简称 SDI)。程序框架在响应它生成的标准用户接口“打开”命令时创建文档/视图结构,由于软件只需提供浏览的供能,因此将生成的标准框架中的“新建”命令禁用,其创建次序如下。步骤 1: 程序启动时,WinMain() 函数调用应用程序对象的InitInstance()函数,并在其中创建文档模板。步骤2:程序运行过程中,选择“文件”|“打开”命令,框架将
15、调用CWinApp:OnFileOpen()函数,并使用已创建的文档模板创建文档。步骤 3:文档模板创建主框架窗口。步骤 4:主框架窗口创建文档对应的视图。程序中文档 /视图结构的各对象交互关系如图4.1 所示。文档模板GetDocTemplate () 文档GetFirstViewPosition ()/GetNextView () 视图GetDocument () GetActiveView () 主框窗口GetActiveDocument () GetParentFrame () 图 4.1 文档 /视图结构对象交互关系以 MVC (Model-View-Controller )应用程序
16、结构划分的模块如图4.2 所示。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 6 页 - - - - - - - - - - Picture Viewer Model View Controller 图像解码、编码模块图像显示模块图像变换模块PCX解码/编码模块TGA解码/编码模块BMP解码/编码模块JPEG模块GIF模块OnDraw () 状态栏信息显示图像缩放模块图像旋转模块全屏浏览模块图像显示模块精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 6 页 - - - - - - - - - - 文档编码:KDHSIBDSUFVBSUDHSIDHSIBF-SDSD587FCDCVDCJUH 欢迎下载 精美文档欢迎下载 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 6 页 - - - - - - - - - -