当前位置:文档之家› 基于工业实时数据的压缩算法研究

基于工业实时数据的压缩算法研究

基于工业实时数据的压缩算法研究
基于工业实时数据的压缩算法研究

矢量数据主要压缩方法及比较

矢量数据主要压缩方法及比较 张旭 测绘工程 211305020021 摘要:矢量数据主要是指城市大比例尺地形图。此系统中图层主要分为底图层、道路层、单位层,合理的分层便于进行叠加分析、图形的 阐述矢量数据压缩的概念,详细的对常见的矢量空间数据压缩方法了介绍与评价,并对一些改进方法做了介绍,希望通过本文的总结,大家能够更好地了解矢量数据及其压缩方法。 关键词:矢量数据,压缩方法 引言:矢量数据结构中,传统的方法是几何图形及其关系用文件方式组织,而属性数据通常采用关系型表文件记录,两者通过实体标识符连接。由于这一特点使得在某些方面有便利和独到之处,例如在计算长度、面积、形状和图形编辑、几何变换操作中,有很高的效率和精度。

矢量空间数据压缩 GIS中的矢量数据可分为点状图形要素、线状图形要素、面状图形要素。但从压缩的角度来看,矢量数据的压缩主要是线状图形要素的压缩,因为点状图形要素可看成是特殊的线状图形要素,面状图形要素的基础也是线状图形要素,需要由一条或多条线状图形要素围成。因此,线状图形要素的压缩就成为矢量数据压缩中最重要的问题。 矢量数据压缩是从组成曲线的点集合A中抽取一个子集B,用这个子集B在一定的精度范围内尽可能地反映原数据集合A,而这个子集B 的点数应尽可能少。矢量数据压缩与化简的核心是在不扰乱拓扑关系的前提下对原始采样数据进行合理的删减。 对矢量数据进行压缩除了能节约存贮空间,加快网络传输速度之外,其本质的原因在于原始的数据存在一定的冗余。这种数据冗余一方面是数据采样过程中不可避免产生的;另一方面是由于具体应用变化而产生,比如大比例尺的矢量数据用于小比例尺的应用时,就会存在不必要的数据冗余。因此应该根据具体应用来选择合适的矢量数据压缩与化简算法。 2、矢量数据压缩率与压缩误差 压缩率和压缩误差是评价一个矢量数据压缩算法的基本要素。分别以N和n表示矢量数据压缩前后的结点数。矢量数据压缩率为压缩后点的数量与压缩前点的数量之比,即η= (N-n) / N * 100%。 目前,描述压缩误差的方法主要有三种,分别是最大位移距离、位移距离之和以及偏差面积。假设压缩前的曲线为Fs,…,Ft,压缩后的线

数据压缩,算法的综述

数据压缩算法的综述 S1******* 许申益 摘要:数据压缩技术在数据通讯和数据存储应用中都有十分显著的益处。随着数据传输技术和计算机网络通讯技术的普及应用,以及在计算机应用中,应用软件的规模和处理的数据量的急剧增加,尤其是多媒体技术在计算机通讯领域中的出现,使数据压缩技术的研究越来越引起人们的注意。本文综述了在数据压缩算法上一些已经取得的成果,其中包括算术编码、字典式压缩方法以及Huffman码及其改进。 关键字:数据压缩;数据存储;计算机通讯;多媒体技术 1.引言 数据压缩技术在数据通讯和数据存储应用中都有十分显著的益处。在数据的存储和表示中常常存在一定的冗余度,一些研究者提出了不同的理论模型和编码技术降低了数据的冗余度。Huffman 提出了一种基于统计模型的压缩方法,Ziv Jacob 提出了一种基于字典模型的压缩方法。随着数据传输技术和计算机网络通讯技术的普及应用,以及在计算机应用中,应用软件的规模和处理的数据量的急剧增加,尤其是多媒体技术在计算机和通讯两个领域中的出现,使数据压缩技术的研究越来越引起人们的注意。本文综述了在数据压缩算法上的一些已经取得的成果。 本文主要介绍了香农范诺编码以及哈弗曼算法的基本思想,运用其算法的基本思想设计了一个文件压缩器,用Java 语言内置的优先队列、对象序列化等功能实现了文件压缩器的压缩和解压功能。 2数据压缩算法的分类 一般可以将数据压缩算法划分为静态的和动态的两类。动态方法又是又叫做适应性(adaptive)方法,相应的,静态方法又叫做非适应性方法(non-adaptive)。 静态方法是压缩数据之前,对要压缩的数据经过预扫描,确定出信源数据的

二进制数

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 二进制数(binaries)是逢2进位的进位制,0、1是基本算符;计算机运算基础采用二进制。电脑的基础是二进制。在早期设计的常用的进制主要是十进制(因为我们有十个手指,所以十进制是比较合理的选择,用手指可以表示十个数字,0的概念直到很久以后才出现,所以是1-10而不是0-9)。电子计算机出现以后,使用电子管来表示十种状态过于复杂,所以所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子计算机采用二进制来表示数字和数据。常用的进制还有8进制和16进制,在电脑科学中,经常会用到16进制,而十进制的使用非常少,这是因为16进制和二进制有天然的联系:4个二进制位可以表示从0到15的数字,这刚好是1个16进制位可以表示的数据,也就是说,将二进制转换成16进制只要每4位进行转换就可以了。 二进制的“00101000”直接可以转换成16进制的“28”。字节是电脑中的基本存储单位,根据计算机字长的不同,字具有不同的位数,现代电脑的字长一般是32位的,也就是说,一个字的位数是32。字节是8位的数据单元,一个字节可以表示0-255的十进制数据。对于32位字长的现代电脑,一个字等于4个字节,对于早期的16位的电脑,一个字等于2个字节。 例子: 如十进制10 变二进制 10/2 = 5 余0 5/2 = 2 余1 2 /2 =1 余0 1/2 = 0 余1 计算结束,把余数从后向前写出:1010,即十制10 变为二进制后是1010; 二进制计算与十进制计算类似,只不过是逢二进。以加法为例: 0 + 0 = 0 0+1 =1 1+0 = 0 1+1= 10 //如二进制100 + 101计算 1 0 0 + 1 0 1 ---------- 1 0 0 1 相当于十进制4+5 = 9

道格拉斯普克压缩算法

道格拉斯普克压缩算法 #include using namespace std; struct FromTo { int from; int to; }; vector DouglasPeuckerDataCompress(vector pts,double tolerance) { double distance = 0; int nStart = 0; int nEnd = pts.size()-1; int numPt = 0; bool flag = true; FromTo from_to; vector Stack; vector numPoints; numPoints.push_back(0); do { distance = GetMaxArcLength(pts,nStart,nEnd,numPt); if (distance > tolerance) { numPoints.push_back(numPt); from_to.from = numPt; from_to.to = nEnd; Stack.push_back(from_to); nEnd = numPt; } else { if (Stack.empty()) flag = false; else { from_to = Stack[Stack.size()-1]; nStart = from_to.from;

nEnd = from_to.to; Stack.erase(Stack.end()-1); } } } while(flag); numPoints.push_back(pts.size()-1); vector pnts; for (int i = 0; i != pts.size(); ++i) { if (find(numPoints.begin(),numPoints.end(),i) != numPoints.end()) pnts.push_back(pts[i]); } return pnts; } double GetMaxArcLength(vector pts,int nStart,int nEnd,int& numPoint) { double maxLength = 0; double distance = 0; for (int i = nStart+1; i != nEnd; ++i) { distance = DistancePointToLine(pts[i],pts[nStart],pts[nEnd]); if (distance > maxLength) { maxLength = distance; numPoint = i; } } return maxLength; } double DistancePointToLine(pointD pt,pointD pt1,pointD pt2) { if (!DoubleEqual(pt1.x,pt2.x)) //不垂直 { double k1 = (pt2.y - pt1.y)/(pt2.x - pt1.x); double b1 = pt2.y - pt2.x * k1; if (!DoubleEqual(0,k1)) { double k2 = (-1)/k1;

五种大数据压缩算法

?哈弗曼编码 A method for the construction of minimum-re-dundancy codes, 耿国华1数据结构1北京:高等教育出版社,2005:182—190 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997. 冯桂,林其伟,陈东华.信息论与编码技术[M].北京:清华大学出版社,2007. 刘大有,唐海鹰,孙舒杨,等.数据结构[M].北京:高等教育出版社,2001 ?压缩实现 速度要求 为了让它(huffman.cpp)快速运行,同时不使用任何动态库,比如STL或者MFC。它压缩1M数据少于100ms(P3处理器,主频1G)。 压缩过程 压缩代码非常简单,首先用ASCII值初始化511个哈夫曼节点: CHuffmanNode nodes[511]; for(int nCount = 0; nCount < 256; nCount++) nodes[nCount].byAscii = nCount; 其次,计算在输入缓冲区数据中,每个ASCII码出现的频率: for(nCount = 0; nCount < nSrcLen; nCount++) nodes[pSrc[nCount]].nFrequency++; 然后,根据频率进行排序: qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare); 哈夫曼树,获取每个ASCII码对应的位序列: int nNodeCount = GetHuffmanTree(nodes); 构造哈夫曼树 构造哈夫曼树非常简单,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样,新节点就是两个被替换节点的父

几种视频压缩算法对比

视频压缩算法对比 视频2008-05-23 10:10:09 阅读557 评论0 字号:大中小订阅 视频压缩标准及比较原始的数字视频信号的数据量是相当惊人的,例如,NTSC 图像以大约640X480的分辨率,24bist/象素,每秒30帧的质量传输时,则视频数据有640X480x24X30=221Mb/S或28MB/s秒,显然这样庞大的数据流对大多数传输线路来说是无法承受的,而且也是无法存储的。为此人们开始专门研究将这些视频、音频数据流进行压缩。很多压缩编码标准相继推出,主要有JPEG月吐一JPEG‘,幻,_H.261旧.263和MPEG等标准。其中JPEG标准主要是用在静止图像的压缩。M一PJEG是将PJEG改进后用到运动图像上,在压缩比不高时,有较好的复现图像质量,但占用存储空间大;在压缩比高的情况下,复现图像质量差。.H261爪.263标准是专门为用于图像质量要求不高的视频会议和可视电话设计。MpEG(MovnigPictureExPertGorPu即活动图像专家组)。它是由150(国际标准化组织)和正(c国际电工委员会)于1988年联合成立的。专门致力于运动图像及伴音编码标准化工作。它们推出了MPEG编码标准【1卜,1l。到现在为止,专家组己制定了MPEG一1,MPEG一2和MPEG一4三种标准,由于其标准化、较大的压缩比及较高的画面质量,成为视频压缩系统首选算法。 MPEGI是一种压缩比高但图像质量稍差的技术;而MPEGZ技术主要专注于图像质量,压缩比小,因此需要的存储空间就大;MPEG4技术是时下比较流行的技术,使用这种技术可以节省空间、提高图像质量、节省网络传输带宽等优点。 来自:https://www.doczj.com/doc/f11326466.html,/blog/static/80720305200842310109120/

图像压缩算法性能的测试与分析工具

图像压缩算法性能的测试与分析工具1 蔡正兴,张虹 中国矿业大学计算机科学与技术学院,江苏徐州 (221008) 摘要:本文研究了图像压缩算法性能的评价方法,提出了图像压缩算法性能的测试算法,包括横向比较测试和纵向分解测试,并在此基础上设计并实现了压缩算法性能的测试与分析工具。该工具能够测试和分析压缩算法的性能,并自动生成各种分析图表,为用户提供了方便,具有较大的实用价值。为了提高评价的效率、准确性和全面性,文中提出了测试图像的选择方法和测试结果的分析方法,具有一定的理论意义。 关键词:压缩性能,测试方法,分析方法,图像选择方法 1. 引言 近年来,图像压缩得到快速发展[1],各种算法层出不穷,比如有损的压缩算法可以在低失真的条件下达到高压缩比[2,3],而无损的压缩算法则可以保证重建图像的无失真[4]。因此在实际应用中得知各种压缩算法的性能及特点是必要的。在评价图像压缩算法性能时主要考虑压缩比、重建质量、时间复杂度、空间复杂度和实现代价这几个方面[5],其中较为重要的是压缩比、重建质量和时间复杂度。为了计算这些压缩性能指标,常常使用一些工具软件,比如在图像处理领域广泛使用的MATLAB系列软件,它提供了大量的内置函数[6],操作方便,功能强大,但它不是评价图像压缩算法性能的专业工具,需要进行二次开发,不能有效的分析和评价压缩性能。其次,利用性能指标来评价压缩方法,尽管方便快捷,但还不能反映图像压缩算法的全部特点。例如,在考虑变换编码系统的失真性质时,一般采用MSE(均方误差),有时利用MSE计算得到的重建质量很好,但视觉效果却不好,这是因为MSE对图像中的失真显著性不敏感[7],可见,性能指标仅仅是对压缩算法进行宏观上的评价,无法评价每个过程对压缩性能的影响。再次,在评价压缩性能时,不可避免地要使用测试图像,用户在选择测试图像时带有随机性,不利于全面地评价压缩方法。针对这些不足,本文设计了图像压缩算法性能的测试与分析工具——AutoTA。AutoTA的目标是自动地对图像压缩算法进行测试与分析,并生成各种分析图表,全面的评价图像压缩算法的性能。AutoTA具有广泛的应用前景,科研人员利用AutoTA可横向比较各种压缩算法的性能,也可纵向分析压缩算法的特点;工程技术人员也可以根据AutoTA的测试结果,在实际应用中选择合适的图像压缩算法。 2. 压缩算法性能指标 压缩性能指标是评价压缩算法的重要方面,也是AutoTA分析图像压缩算法性能的重要依据,下面将描述相关的性能指标。 2.1压缩比 压缩比是指压缩过程中输入数据量和输出数据量之比,反映了图像压缩算法的压缩性能,当压缩比小于1时为正压缩,当压缩比大于1时为负压缩。压缩比的计算公式为: 1本课题得到国家自然科学基金项目(编号:60372102)、教育部博士点基金项目(编号:20030290011)、软件新技术国家重点实验室课题(编号:A200309)资助。

LZ77压缩算法实验报告

LZ77压缩算法实验报告 一、实验内容 使用C++编程实现LZ77压缩算法的实现。 二、实验目的 用LZ77实现文件的压缩。 三、实验环境 1、软件环境:Visual C++ 6.0 2、编程语言:C++ 四、实验原理 LZ77 算法在某种意义上又可以称为“滑动窗口压缩”,这是由于该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为术语字典,要压缩的字符串如果在该窗口中出现,则输出其出现位置和长度。使用固定大小窗口进行术语匹配,而不是在所有已经编码的信息中匹配,是因为匹配算法的时间消耗往往很多,必须限制字典的大小才能保证算法的效率;随着压缩的进程滑动字典窗口,使其中总包含最近编码过的信息,是因为对大多数信息而言,要编码的字符串往往在最近的上下文中更容易找到匹配串。 五、LZ77算法的基本流程 1、从当前压缩位置开始,考察未编码的数据,并试图在滑动窗口中找出最长的匹 配字符串,如果找到,则进行步骤2,否则进行步骤3。 2、输出三元符号组( off, len, c )。其中off 为窗口中匹

配字符串相对窗口边 界的偏移,len 为可匹配的长度,c 为下一个字符。然后将窗口向后滑动len + 1 个字符,继续步骤1。 3、输出三元符号组( 0, 0, c )。其中c 为下一个字符。然后将窗口向后滑动 len + 1 个字符,继续步骤1。 六、源程序 /********************************************************************* * * Project description: * Lz77 compression/decompression algorithm. * *********************************************************************/ #include #include #include #include #define OFFSET_CODING_LENGTH (10) #define MAX_WND_SIZE 1024 //#define MAX_WND_SIZE (1<

LZSS压缩算法实验报告

实验名称:LZSS压缩算法实验报告 一、实验内容 使用Visual 6..0 C++编程实现LZ77压缩算法。 二、实验目的 用LZSS实现文件的压缩。 三、实验原理 LZSS压缩算法是词典编码无损压缩技术的一种。LZSS压缩算法的字典模型使用了自适应的方式,也就是说,将已经编码过的信息作为字典, 四、实验环境 1、软件环境:Visual C++ 6.0 2、编程语言:C++ 五、实验代码 #include #include #include #include /* size of ring buffer */ #define N 4096 /* index for root of binary search trees */ #define NIL N /* upper limit for g_match_len. Changed from 18 to 16 for binary compatability with Microsoft COMPRESS.EXE and EXPAND.EXE #define F 18 */ #define F 16 /* encode string into position and length if match_length is greater than this: */ #define THRESHOLD 2 /* these assume little-endian CPU like Intel x86

-- need byte-swap function for big endian CPU */ #define READ_LE32(X) *(uint32_t *)(X) #define WRITE_LE32(X,Y) *(uint32_t *)(X) = (Y) /* this assumes sizeof(long)==4 */ typedef unsigned long uint32_t; /* text (input) size counter, code (output) size counter, and counter for reporting progress every 1K bytes */ static unsigned long g_text_size, g_code_size, g_print_count; /* ring buffer of size N, with extra F-1 bytes to facilitate string comparison */ static unsigned char g_ring_buffer[N + F - 1]; /* position and length of longest match; set by insert_node() */ static unsigned g_match_pos, g_match_len; /* left & right children & parent -- these constitute binary search tree */ static unsigned g_left_child[N + 1], g_right_child[N + 257], g_parent[N + 1]; /* input & output files */ static FILE *g_infile, *g_outfile; /***************************************************************************** initialize trees *****************************************************************************/ static void init_tree(void) { unsigned i; /* For i = 0 to N - 1, g_right_child[i] and g_left_child[i] will be the right and left children of node i. These nodes need not be initialized. Also, g_parent[i] is the parent of node i. These are initialized to NIL (= N), which stands for 'not used.' For i = 0 to 255, g_right_child[N + i + 1] is the root of the tree for strings that begin with character i. These are initialized to NIL. Note there are 256 trees. */ for(i = N + 1; i <= N + 256; i++) g_right_child[i] = NIL; for(i = 0; i < N; i++) g_parent[i] = NIL; } /***************************************************************************** Inserts string of length F, g_ring_buffer[r..r+F-1], into one of the trees (g_ring_buffer[r]'th tree) and returns the longest-match position and length via the global variables g_match_pos and g_match_len. If g_match_len = F, then removes the old node in favor of the new one, because the old one will be deleted sooner.

无损压缩算法的比较和分析

Adaptive-Huffman-Coding 自适应霍夫曼编码 压缩比:1.79 分析: 霍夫曼算法需要有关信息源的先验统计知识,而这样的信息通常很难获得,即使能够获得这些统计数字,符号表的传输仍然是一笔相当大的开销。 自适应压缩算法能够解决上述问题,统计数字是随着数据流的到达而动态地收集和更新的。概率再不是基于先验知识而是基于到目前为止实际收到的数据。随着接收到的符号的概率分布的改变,符号将会被赋予新的码字,这在统计数字快速变化的多媒体数据中尤为适用。 Lempel-Ziv-Welch 基于字典的编码 压缩比:1.86 分析: LZW算法利用了一种自适应的,基于字典的压缩技术。和变长编码方式不同,LZW使用定长的码字(本次实验使用12位定长码字)来表示通常会在一起出现的符号/字符的变长的字符串。 LZW编码器和解码器会在接受数据是动态的创建字典,编码器和解码器也会产生相同的字典。 编码器的动作有时会先于解码器发生。因为这是一个顺序过程,所以从某种意义上说,这是可以预见的。

算术编码(arithmetic coding) 压缩比:2 分析: 算术编码是一种更现代化的编码方法,在实际中不赫夫曼编码更有效。 算术编码把整个信息看作一个单元,在实际中,输入数据通常被分割成块以免错误传播。 算术编码将整个要编码的数据映射到一个位于[0,1)的实数区间中。并且输出一个小于1同时大于0的小数来表示全部数据。利用这种方法算术编码可以让压缩率无限的接近数据的熵值,从而获得理论上的最高压缩率。 比较分析: 一般来说,算术编码的性能优于赫夫曼编码,因为前者将整个消息看作一个单元,而后者受到了必须为每一个符号分配整数位的限制。 但是,算术编码要求进行无限精度的实数运算,这在仅能进行有限精度运算的计算机系统是无法进行的。随着研究的深入,有学者提出了一种基于整数运算的算术编码实现算法。在编码和解码的过程还需要不时的调整区间大小,以免精度不足,加大了实现的难度。 在3种无损压缩算法中,LZW算法相对来说,实现最为简单,但其压缩效果要在数据源足够大的时候,才能显现出来。

数据库二进制数据流处理

数据流处理 1.从数据库读取数据二进制流创建文件 public static string LoadFile(string filePath, string fileName) { try { if(CreateFolder(System.Environment.CurrentDirectory + filePath)) { if (!System.IO.File.Exists(System.Environment.CurrentDirectory + filePath + @"\" + fileName)) { //创建文件对象以创建文件的形式打开文件 System.IO.FileStream fs = new System.IO.FileStream(System.Environment.CurrentDirectory + filePath + @"\" + fileName, System.IO.FileMode.Create); byte[] Data = new byte[0]; object cell = AppServer.YsServiceBaseClient.DN_YS_SelectDATACELL("YS", fileName); Data = (byte[])cell; //将数组的内容写进文件 fs.Write(Data, 0, Data.Length); //关闭文件 fs.Close(); } } } catch { } //return System.IO.Path.GetFullPath(filePath + @"\" + fileName); return System.Environment.CurrentDirectory + filePath + @"\" + fileName; }

多媒体数据压缩实验报告

多媒体数据压缩实验报告 篇一:多媒体实验报告_文件压缩 课程设计报告 实验题目:文件压缩程序 姓名:指导教师:学院:计算机学院专业:计算机科学与技术学号: 提交报告时间:20年月日 四川大学 一,需求分析: 有两种形式的重复存在于计算机数据中,文件压缩程序就是对这两种重复进行了压 缩。 一种是短语形式的重复,即三个字节以上的重复,对于这种重复,压缩程序用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩。 第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均

匀,压缩比例就越大。 编码式压缩必须在短语式压缩之后进行,因为编码式压缩后,原先八位二进制值的字节就被破坏了,这样文件中短语式重复的倾向也会被破坏(除非先进行解码)。另外,短语式压缩后的结果:那些剩下的未被匹配的单、双字节和得到匹配的距离、长度值仍然具有取值分布不均匀性,因此,两种压缩方式的顺序不能变。 本程序设计只做了编码式压缩,采用Huffman编码进行压缩和解压缩。Huffman编码是一种可变长编码方式,是二叉树的一种特殊转化形式。编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性。根据 ascii 码文件中各 ascii 字符出现的频率情况创建 Huffman 树,再将各字符对应的哈夫曼编码写入文件中。同时,亦可根据对应的哈夫曼树,将哈夫曼编码文件解压成字符文件. 一、概要设计: 压缩过程的实现: 压缩过程的流程是清晰而简单的: 1. 创建 Huffman 树 2. 打开需压缩文件 3. 将需压缩文件中的每个 ascii 码对应的 huffman 编码按 bit 单位输出生成压缩文件压缩结束。

视频压缩格式的分析和对比(MJPEG、MPEG-4、H.264等)

视频压缩格式的分析和对比(MJPEG、MPEG-4、H.264等) 时间:2011-08-06 点击数:1977 视频压缩格式的分析和对比(MJPEG、MPEG-4、H.264等) 1.H.261 H.261又称为P*64,其中P为64kb/s的取值范围,是1到30的可变参数,它最初是针对在ISDN上实现电信会议应用特别是面对面的可视电话和视频会议而设计的。实际的编码算法类似于MPEG算法,但不能与后者兼容。H.261在实时编码时比MPEG所占用的CPU运算量少得多,此算法为了优化带宽占用量,引进了在图像质量与运动幅度之间的平衡折中机制,也就是说,剧烈运动的图像比相对静止的图像质量要差。因此这种方法是属于恒定码流可变质量编码而非恒定质量可变码流编码。 2.H.263 H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的。但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用,它在许多应用中可以认为被用于取代H.261。H.263的编码算法与H.261一样,但做了一些改善和改变,以提高性能和纠错能力。.263标准在低码率下能够提供比H.261更好的图像效果,两者的区别有:(1)H.263的运动补偿使用半象素精度,而H.261则用全象素精度和循环滤波;(2)数据流层次结构的某些部分在H.263中是可选的,使得编解码可以配置成更低的数据率或更好的纠错能力;(3)H.263包含四个可协商的选项以改善性能;(4)H.263采用无限制的运动向量以及基于语法的算术编码;(5)采用事先预测和与MPEG中的P-B帧一样的帧预测方法;(6)H.263支持5种分辨率,即除了支持H.261中所支持的QCIF和CIF外,还支持SQCIF、4CIF和16CIF,SQCIF相当于QCIF一半的分辨率,而4CIF和16CIF分别为CIF的4倍和16倍。 1998年IUT-T推出的H.263+是H.263建议的第2版,它提供了12个新的可协商模式和其他特征,进一步提高了压缩编码性能。如H.263只有5种视频源格式,H.263+允许使用更多的源格式,图像时钟频率也有多种选择,拓宽应用范围;另一重要的改进是可扩展性,它允许多显示率、多速率及多分辨率,增强了视频信息在易误码、易丢包异构网络环境下的传输。另外,H.263+对H.263中的不受限运动矢量模式进行了改进,加上12个新增的可选模式,不仅提高了编码性能,而且增强了应用的灵活性。H.263已经基本上取代了H.261。 二、M-JPEG M-JPEG(Motion- Join Photographic Experts Group)技术即运动静止图像(或逐帧)压缩技术,广泛应用于非线性编辑领域可精确到帧编辑和多层图像

基于DCT和DWT的遥感图像压缩算法比较_严俊雄

第8卷 第19期 2008年10月1671-1819(2008)18-5439-07 科 学 技 术 与 工 程 Sc ience T echno l ogy and Eng i nee ri ng V ol 18 N o 119 O ct . 2008Z 2008 Sci 1T ech 1Engng 1 基于DCT 和D W T 的遥感图像压缩算法比较 严俊雄 1,2 王 文1 李子扬 2,3 李 安1 陈 勃 1 (中国科学院对地观测与数字地球科学中心,北京100086;中国科学院研究生院2,北京100080;中国科学院光电研究院3,北京100080) 摘 要 由于遥感图像具有数据量大、分辨率高、覆盖范围广、纹理复杂、细节多、灰度变化大、目标小、空间相关性较差等特点,很难对其进行高比例压缩。因此遥感图像的及时显示、共享与数据传输问题,一直是遥感数据存储、处理与分析过程中存在的技术瓶颈。另一方面,在目前网络带宽有限的情况下,这也为G IS(地理信息系统)信息的实时动态应用造成了困难。因此,图像压缩在遥感数据存储、传输与共享等应用上有很重要的作用。探讨应用在遥感领域的DCT (JPEG )和D W T (JPEG 2000,EC W,M R SI D )算法,然后采用基于这些算法的技术工具比较压缩重建后图像的质量。最后,针对不同的遥感应用提出了一些建议。 关键词 DCT D W T 遥感图像 图像压缩中图法分类号 TP75111; 文献标志码 A 2008年6月19日收到 中国科学院知识创新工程青年人才领域 前沿项目资助 第一作者简介:严俊雄(1983)),男,中国科学院对地观测与数学地球科学中心研究生,研究方向:遥感卫星数据处理,E-m ai:l j xy -an@rs gs 1ac 1cn 。 所有图像压缩技术都是通过降低数据冗余度来达到压缩的目的。图像压缩分为无损压缩和有损压缩。无损压缩是指数据经过压缩后信息不受损失,还能完全恢复到压缩前的原样。有损压缩允许压缩过程中损失一定的信息,虽然不能完全恢复图像,但是所损失的部分应对原始图像的影响较小,但却提高了压缩比。根据编码理论,图像压缩又可分为概率统计编码、预测编码,变换编码等。常用的霍夫曼编码、算术编码、游程编码和LZ W 编码就都属于概率统计编码。由于这些编码都是基于图像的统计特性,因此压缩高冗余图像可以获得高压缩比,低冗余图像则对应低压缩比。预测编码则首先预测目标值,然后根据预测值与实际值的差进行量化和编码,最后在接收端解码,根据预测值和解码值重建图像。DPC M (D ifferentia l Pu lse Code M odu lation),作为最重要的预测编码方法,易于硬件实现,在许多领域得到了广泛的应用。它的最大的 弱点是降低了抗误码能力,容易造成误码扩散现象。 随着近年来数学方法与工具的发展,变换编码获得了长足的发展,成为了最有效的压缩方法之一。变换编码的基本思想是从频域(变换域)的角度减小数据相关性,通过正交变换将数据从相关性很强的空间域变换到相关性较弱的变换域,并通过保留方差较大的变换系数,舍弃方差较小的变换系数来实现压缩。常用的变换有K I 变换、DCT 变换、DST 变换、DFT 变换及D WT 变换等。作为最成熟的技术,DCT (D iscrete Cosi n e Transfo r m ,离散余弦变换)在很多领域得到了广泛应用。而D W T (D is -creteW ave letT ransfor m ,离散小波变换)因为其显著的特点也引起了越来越多的注意,许多学者进行了深入的研究。一系列基于DCT 和D W T 的压缩算法和工具涌现出来。本文主要讨论并比较基于DCT 和DWT 的压缩算法。 另外,基于自相似性和尺度变化无限性的分形图像压缩方法能获得相当高的压缩比和很好的压缩效果,具有很大的潜力。但这项技术还不够成熟,在图像压缩领域还不占主导地位。 1 遥感图像压缩的分类 遥感图像压缩可分为星上无损压缩、星上有损

数据快速压缩算法的C语言实现

价值工程 置,是一项十分有意义的工作。另外恶意代码的检测和分析是一个长期的过程,应对其新的特征和发展趋势作进一步研究,建立完善的分析库。 参考文献: [1]CNCERT/CC.https://www.doczj.com/doc/f11326466.html,/publish/main/46/index.html. [2]LO R,LEVITTK,OL SSONN R.MFC:a malicious code filter [J].Computer and Security,1995,14(6):541-566. [3]KA SP ER SKY L.The evolution of technologies used to detect malicious code [M].Moscow:Kaspersky Lap,2007. [4]LC Briand,J Feng,Y Labiche.Experimenting with Genetic Algorithms and Coupling Measures to devise optimal integration test orders.Software Engineering with Computational Intelligence,Kluwer,2003. [5]Steven A.Hofmeyr,Stephanie Forrest,Anil Somayaji.Intrusion Detection using Sequences of System calls.Journal of Computer Security Vol,Jun.1998. [6]李华,刘智,覃征,张小松.基于行为分析和特征码的恶意代码检测技术[J].计算机应用研究,2011,28(3):1127-1129. [7]刘威,刘鑫,杜振华.2010年我国恶意代码新特点的研究.第26次全国计算机安全学术交流会论文集,2011,(09). [8]IDIKA N,MATHUR A P.A Survey of Malware Detection Techniques [R].Tehnical Report,Department of Computer Science,Purdue University,2007. 0引言 现有的压缩算法有很多种,但是都存在一定的局限性,比如:LZw [1]。主要是针对数据量较大的图像之类的进行压缩,不适合对简单报文的压缩。比如说,传输中有长度限制的数据,而实际传输的数据大于限制传输的数据长度,总体数据长度在100字节左右,此时使用一些流行算法反而达不到压缩的目的,甚至增大数据的长度。本文假设该批数据为纯数字数据,实现压缩并解压缩算法。 1数据压缩概念 数据压缩是指在不丢失信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率的一种技术方法。或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。常用的压缩方式[2,3]有统计编码、预测编码、变换编码和混合编码等。统计编码包含哈夫曼编码、算术编码、游程编码、字典编码等。 2常见几种压缩算法的比较2.1霍夫曼编码压缩[4]:也是一种常用的压缩方法。其基本原理是频繁使用的数据用较短的代码代替,很少使用 的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。 2.2LZW 压缩方法[5,6]:LZW 压缩技术比其它大多数压缩技术都复杂,压缩效率也较高。其基本原理是把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串,如用数值0x100代替字符串ccddeee"这样每当出现该字符串时,都用0x100代替,起到了压缩的作用。 3简单报文数据压缩算法及实现 3.1算法的基本思想数字0-9在内存中占用的位最 大为4bit , 而一个字节有8个bit ,显然一个字节至少可以保存两个数字,而一个字符型的数字在内存中是占用一个字节的,那么就可以实现2:1的压缩,压缩算法有几种,比如,一个自己的高四位保存一个数字,低四位保存另外一个数字,或者,一组数字字符可以转换为一个n 字节的数值。N 为C 语言某种数值类型的所占的字节长度,本文讨论后一种算法的实现。 3.2算法步骤 ①确定一种C 语言的数值类型。 —————————————————————— —作者简介:安建梅(1981-),女,山西忻州人,助理实验室,研究方 向为软件开发与软交换技术;季松华(1978-),男,江苏 南通人,高级软件工程师,研究方向为软件开发。 数据快速压缩算法的研究以及C 语言实现 The Study of Data Compression and Encryption Algorithm and Realization with C Language 安建梅①AN Jian-mei ;季松华②JI Song-hua (①重庆文理学院软件工程学院,永川402160;②中信网络科技股份有限公司,重庆400000)(①The Software Engineering Institute of Chongqing University of Arts and Sciences ,Chongqing 402160,China ; ②CITIC Application Service Provider Co.,Ltd.,Chongqing 400000,China ) 摘要:压缩算法有很多种,但是对需要压缩到一定长度的简单的报文进行处理时,现有的算法不仅达不到目的,并且变得复杂, 本文针对目前一些企业的需要,实现了对简单报文的压缩加密,此算法不仅可以快速对几十上百位的数据进行压缩,而且通过不断 的优化,解决了由于各种情况引发的解密错误,在解密的过程中不会出现任何差错。 Abstract:Although,there are many kinds of compression algorithm,the need for encryption and compression of a length of a simple message processing,the existing algorithm is not only counterproductive,but also complicated.To some enterprises need,this paper realizes the simple message of compression and encryption.This algorithm can not only fast for tens of hundreds of data compression,but also,solve the various conditions triggered by decryption errors through continuous optimization;therefore,the decryption process does not appear in any error. 关键词:压缩;解压缩;数字字符;简单报文Key words:compression ;decompression ;encryption ;message 中图分类号:TP39文献标识码:A 文章编号:1006-4311(2012)35-0192-02 ·192·

相关主题
文本预览
相关文档 最新文档