图片浏览器知识总结.doc

上传人:自*** 文档编号:124760023 上传时间:2020-03-13 格式:DOC 页数:5 大小:83KB
返回 下载 相关 举报
图片浏览器知识总结.doc_第1页
第1页 / 共5页
图片浏览器知识总结.doc_第2页
第2页 / 共5页
图片浏览器知识总结.doc_第3页
第3页 / 共5页
图片浏览器知识总结.doc_第4页
第4页 / 共5页
图片浏览器知识总结.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《图片浏览器知识总结.doc》由会员分享,可在线阅读,更多相关《图片浏览器知识总结.doc(5页珍藏版)》请在金锄头文库上搜索。

1、图像的编码和解码能够对数据进行压缩并大大减少其数据量是因为数据存在大量的数据冗余,即存在冗余的、可预测的和不必要的数据。数据量(D)与其所表达的信息量(I)一般并不相等,它们之间存在如下关系:I=D-dudu0其中,du代表数据的冗余量,如冗余量du=0,则不需要也不能对数据进行有效压缩。即,需要并能够对数据进行有效压缩的条件是du0。而图像数据中广泛存在着数据冗余。数据冗余一般有4种形式,即统计冗余、信息熵冗余、结构冗余、知识冗余。利用冗余进行图像数据压缩包括两个相反的过程。l 数据编码:即对原始图像数据进行编码,以减小其数据量。l 数据解码:即把编码压缩的图像数据还原成原始的表示形式。由于

2、数据编码和数据解码是互逆的过程,只要研究好数据编码就能处理好数据解码。根据冗余类型的不同,人们提出了不同的数据编码方法,根据不同的出发点可把数据编码方法进行不同的分类。(1)以对编码数据在解码后能否完全一致的还原为原始数据为标准,可将数据编码方法划分为如下两类。l 无失真编码(可逆编码):编码数据进行解码后的数据与编码前的原始数据完全相同,没有任何失真。l 有失真编码(不可逆编码):编码数据进行解码后的数据与编码前的数据有一定的偏差或失真,但在视觉效果上基本相同。(2)根据数据编码的实现原理可以把数据编码划分为预测编码、变换编码、信息熵编码、亚抽样与内插编码、矢量量化编码、基于神经网络的编码、

3、分频带编码、结构编码、基于知识的编码和混合编码等10类。其中,信息熵编码中的哈夫曼编码(Huffman Coding)、LZW(Lempel Ziv Welch Compression)编码、游程长度编码(Run Length Coding)和算术编码(Arithmetic Coding)都是常用的无失真图像编码方式。由于本设计并未涉及到上述所有的编码算法,故在此不再进行一一说明,在后面的内容中会对使用到的算法及其实现进行详细论述。BMP图像BMP图像,即通常所说的位图(Bitmap),是Windows系统中最为常见的图像格式。Windows 3.0以前的版本只支持与设备相关位图DDB(Dev

4、ice Dependent Bitmap)。DDB是一种内部位图格式,它显示的图像依计算机显示系统的设置不同而不同,因此一般不存储为文件,与通常所说的BMP图像不同。在Windows.h中,结构体BITMAP定义了DDB位图的类型、宽度、高度、颜色格式和像素位值等,代码如下:typedef struct tagBITMAP int bmType;/位图类型,必须设为0 int bmWidth; /位图宽度 int bmHeight;/位图高度 int bmWidthBytes;/位图中每一扫描行中的字节数 BYTE bmPlanes;/颜色层数 BYTE bmBitsPixel;/每一像素所占

5、的位数 void FAR*bmBits; /存放像素值内存块的地址BITMAP;DDB中不包括颜色信息,显示时是以系统的调色板为基础进行像素的颜色映射的。Windows只能保证系统调色板的前20种颜色稳定不变,所以DDB只能保证正确显示少于20色的位图。Windows SDK提供标准的DDB位图操作函数;MFC中定义了CBitmap类来说明DDB位图,其中封装了与DDB位图操作相关的数据结构和函数。Windows 3.1以上版本提供了对设备无关位图DIB(Device Independent Bitmap)的支持。DIB位图可以在不同的机器或系统中显示位图所固有的图像。相对于DDB而言,DIB

6、是一种外部位图格式,经常存储为常见的以BMP为后缀的位图文件(有时也以DIB为后缀)。因此,通常所说的BMP图像,即是DIB位图。BMP位图文件包括4部分,即位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据,BMP位图文件的结构如图3.1所示。位图文件头结构BITMAPFILEHEADER位图信息头结构BITMAPINFOHEADER位图颜色表RGBQUAD位图像素数据图3.1 BMP位图文件的结构下面介绍BMP文件头、BMP位图信息头、颜色表这3个结构体在Windows.h中的定义。1. BMP文件头BMP

7、文件头含有BMP文件的类型、文件的大小、位图文件的保留字、位图数据距文件头的偏移量等信息。定义如下:typedef struct tagBITMAPFILEHEADER UINT bfType;/位图文件的类型,必须为BM DWORD bfSize;/位图文件的大小,以字节为单位 UINT bfReserved1;/位图文件保留字,必须为0 UINT bfReserved2;/位图文件保留字,必须为0 DWORD bfOffBits;/位图数据距文件头的偏移量,以字节为单位 BITMAPFILEHEADER;2. BMP位图信息头BMP位图信息头用于说明位图的尺寸等信息,定义如下:typede

8、f struct tagBIMAPINFOHEADER 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; /位图的大

9、小,以字节为单位 LONG biXPelsPerMeter; /位图水平分辨率,每米像素数 LONG biYPelsPerMeter; /位图垂直分辨率,每米像素数 DWORD biClrUsed; /位图实际使用的颜色表中的颜色数 DWORD biClrImportant; /位图显示过程中重要的颜色数 BITMAPINFOHEADER;3. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,且定义一种颜色,定义如下:typedef struct tagRGBQUAD BYTE rgbBlue;/蓝色的亮度(值范围为0255) BYTE rgbGre

10、en;/绿色的亮度(值范围为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个表项;当biBitCount=24时,没有颜色表项。位图数据记录

11、了位图的每一个像素值,记录顺序是在扫描行内从左到右、扫描行之间从下到上。位图的一个像素值所占的字节数如下:l 当biBitCount=1时,8个像素占1个字节。l 当biBitCount=4时,2个像素占1个字节。l 当biBitCount=8时,1个像素占1个字节。l 当biBitCount=24时,1个像素占3个字节。Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充,一个扫描行所占的字节数计算方法如下:DataSizePerLine=(biWidthbiBitCount+31)/8这是本设计中的一个关键点,无论对图像进行何种变换,都要进行扫描行的

12、4字节对齐。除了上述的Windows BMP以外,还有一种与其结构相似,但不完全相同的另一种BMP图像,即OS/2采用的BMP。其与Windows BMP的主要区别是位图信息结构(信息头结构和颜色表结构)不同。而它们的图像位数据的存储方式是完全一样的。本设计只讨论Windows系统下的BMP图像,故对OS/2使用的BMP不进行详细分析。模块划分本设计的实现基于微软的MFC应用程序框架,故软件也采用了文档(Document)/视图(View)结构,并使用单文档界面(Single Document Interface,简称SDI)。程序框架在响应它生成的标准用户接口“打开”命令时创建文档/视图结构,由于软件只需提供浏览的供能,因此将生成的标准框架中的“新建”命令禁用,其创建次序如下。步骤1:程序启动时,WinMain()函数调用应用程序对象的InitInstance()函数,并在其中创建文档模板。步骤2:程序运行过程中,选择“文件”|“打开”命令,框架将调用CWinApp:OnFileOpen()函数,并使用已创建的文档模板创建文档。步骤3:文档模板创建主框架窗口。步骤4:主框架窗口创建文档对应的视图。程序中文档/视图结构的各对象交互关系如图4.1所示。图4.1 文档/视图结构对象交互关系以MVC(Model-View-Controller)应用程序结构划分的模块如图4.2所示。

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

当前位置:首页 > 办公文档 > 总结/报告

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