实时压缩是指数据写入之前先进行压缩,使用的存储空间比实际的数据量更少,达到有效使用磁碟存储目的,在有限计算资源的限制下,提高图形系统处理数据的能力。
在处理方法上,同一时间内个压缩处理单元以连锁步伐方式同步完成同种操作,即同时完成对图像数据的读取、量化、编码、存储,系统对图像数据再进行压缩处理。
基本介绍
- 中文名:实时压缩
- 外文名: real-time compression
- 实时资料库:PIant Information、Info-PIus
- 目的:节省存储空间
- 压缩算法:SDA、Lzw等
- 判别算法标準:解压缩误差、数据压缩率
研究背景
背景
在最近几十年中,许多研究人员对实时资料库和实时数据管理进行了深入的研究。在流程工业控制领域,比较有代表性的实时资料库产品有由OSI Software Inc开发的、着名的PIant Information 系统和由Aspen TechnoIogy Inc开发的Info-PIus 系统。
数据压缩是实时资料库中一个比较关键的课题,为了节省存储空间,一个历史数据在被送入历史资料库前进行数据压缩处理是必要的,因为需要确信写入数据缓冲池的历史数据是重要的。此外,正如大家所知,历史数据压缩算法对于解压缩历史数据也是非常重要的,需要高效的数据压缩算法来满足在实时资料库中大量数据信息的存储需要,为此,OSI Software Inc.开发了着名的旋转门压缩算法(SDA)。
为了有效使用磁碟存储,需要对历史数据进行实时压缩,不仅需要很高的数据压缩率,而且需要高精度的数据压缩。
方向与现状
国内外相关研究主要集中在数字地图压缩和模式识别后图形的简化,研究目标主要分3类:
- min—ε,压缩后形态点数目已知,要求形变最小;
- min—#,压缩后最大形变已知,要求形态点数最小;
- min—rate,压缩后最大形变已知,要求数据营最小。
历史数据压缩
当有历史数据来临时,根据感测器的测量精度高低,历史数据首先通过必要的平滑处理和压缩处理,确定是否需要存储在历史资料库中。当确定要存储后,首先将数据存储在历史数据缓冲池中,待缓冲存满后,再将数据成块地存入当前历史档案中,历史数据档案以伫列形式存放,当存满后,选择最早的历史数据档案作为可用的空历史档案(图)。
历史资料库数据流

图中历史数据缓冲伫列是实时资料库系统的核心与历史库的连线桥樑,用于缓冲实时库核心发来的实时数据。数据平滑是对测量噪声进行处理,根据仪器的测量精度来确定数据是否需要平滑处理。数据压缩是不可缺少的一步,通过压缩处理确定需要存储的关键数据点,然后将关键的数据点写进历史数据缓冲池中。历史数据缓冲池是历史数据在记忆体中的主要缓冲空间,用于存储近期历史数据,从而提高了近期历史数据的存取效率,减少了不必要的磁碟操作。
历史数据档案伫列是历史数据存储的主要磁碟空间,在伫列中起码要有一个历史数据档案,某时刻历史数据的追加只在当前历史数据档案进行。当历史档案存满以后,设定下一个可用的空历史数据档案为当前历史数据档案;当已无空档案时,则将最早的档案清空。
压缩算法技术
LZW算法
基本处理过程
字典编码的基本处理过程比较简单。首先从输入数据流中读取待压缩的文本串,放入先行缓冲区,然后进行编码。把先行缓冲区中的内容与字典视窗中的内容进行比较,如果有相匹配的部分,则按规定的格式用代码表示输入字元串。经匹配、编码后的数据流从先行缓冲区依次进入到字典视窗中,成为字典的一部分。由于文本视窗的大小是固定的,因此原有字典中的一部分内容将从视窗的另一端滑出。
这样,数据不断地由先行缓冲区一端补充到字典视窗,同时又不断有数据从该视窗的另一端滑出,类似于用一个固定大小的视窗从输入文本上滑过。因此,LZW压缩算法又被称为滑动窗压缩。随着视窗的滑动,字典的内容不断地发生变化,就好像字典中旧的短语被抛弃,新的短语被加入到字典中,滑动视窗中总保持着最近刚处理过的文本。使用固定大小视窗进行术语匹配,而不是在所有已经编码的信息中匹配,是因为匹配算法的时间消耗d太多,必须限制字典的大小才能保证算法的效率;随着压缩的进程滑动字典视窗,使其中总包含最近编码过的信息,因为对大多数信息而言,要编码的字元串往往在最近的上下文中更容易找到匹配串。字典编码压缩原理示意图如图所示。
字典编码压缩原理示意图

处理对象
Lzw算法有3个重要的对象:输入数据流、输出编码流和一张用于编码的字元串表。输入数据流是指被压缩数据;输出编码流是指压缩后输出的编码流;字元串表存储的是数据的索引号,相同块的数据只输出第一块的索引号,从而实现了数据的压缩。其压缩算法的过程为:
(1)初始化索引号及字元串表。将索引号赋初值,同时将字元串表清零;
(2)从数据流中读入字元作为前缀,并将其赋给变数old;
(3)从数据流中读入字元放到变数new中;
(4)变数old左移8位与变数new相加,组成新的字元串,并查找字元串表,若表中存在组成的新字元串,则取出表中索引号给变数old,转到过程(3);若表中不存在,则将变数old中的数据输出,然后判断表中索引号是否大于最大设定值(如12位编码的最大设定值为4096),若小于最大设定值则将新的字元串的值放到当前索引号的位置,同时索引号加1,然后转到过程(2);若索引号大于最大设定值,则说明字元串表满,则输出串结束符,接着从过程(1)重新开始数据压缩。
矢量压缩技术
矢量压缩技术主要分为近似方法和量化编码方法2类。近似方法通过减少组成矢量的点进行压缩;量化编码方法根据某些方式将矢量坐标量化为相关性较强的形式。然后编码压缩。
近似方法由Douglas等于1973年提出,国内外一些学者对其进行了改进,近似方法压缩过程效率较低,时间和空间複杂度为O(N2),使用动态规划可提高其效率,将空间複杂度降为O(N),时间複杂度降为O(N)~O(N2).
量化编码方法的相关研究主要有Shekhar等提出的聚类方法,Kolesnikov等提出的链码方法[和基于动态规划的方法。聚类方法的空间複杂度为O(N),时间複杂度大于O(N),并且需要额外空间存储字典;动态规划方法空间複杂度为O(N),时间複杂度为O(N)~O(N2);链码方法将曲线转化成链码序列,然后使用上下文相关的文本压缩算法压缩,效率较低,当容限较小时,链码序列较长,压缩效果较差。
近似方法和量化编码方法的时间空间複杂度较高,不能在移动计算环境中实时压缩解压缩海量数据。目前移动计算环境中常用的曲线压缩方法是类型转换方法,这种方法将坐标由浮点数转化为整型数存储,其优点是速度可以满足实时性要求,缺点是压缩程度有限。
压缩算法比较
判断一个压缩算法好坏的一个重要指标是比较它的解压缩误差。对于测试数据集,当误差约束满足时,当前测试点通过压缩测试、不需要存储;否则,它将被记录,并被存储到资料库中,此时,新的存储点将取代原来的上一个存储点,并作为新的、数据压缩的起始点。
判断压缩算法好坏的另一个指标是数据压缩率,这是实时资料库中压缩算法的一个很重要指标,这里定义为(M-N)/M,其中,M 为总测试点数,N 是存储点数。
实时压缩系统
系统结构与组成原理
为充分发挥硬体具有的并行计算能力,在设计上採用多路并行、数个功能、时序完全相同的压缩处理单元同步工作的阵列式系统结构。
压缩系统原理图

在同一时刻,各个压缩处理单元以连锁步伐方式同步完成同种操作,即同时完成对图像数据的读取、量化、编码、存储。系统处理速度为压缩处理单元的N倍。多路并行和阵列处理,提高了系统的模组化程度,使得系统容易通过扩充处理单元来加快处理速度以适应不同的要求,保证了系统具有高速实时压缩能力及良好的扩展和重构能力.整个系统工作原理及过程如下:
压缩系统以数据驱动的方式工作,原始图像数据以行扫描方式经过格式转换器,转变为4×4数据块,转换后的数据经锁存后,由数据分配器,按固定时序送人各个输入数据快取区,压缩处理单元从数据快取区读人数据,而后其内部的分类器、量化器同时计算处理,编码器、缓冲器以流水线方式顺序处理,压缩结果经缓冲器进入输出快取区,经数据合併后,送人数据存储器或传输信道;由于图像数据子区複杂程度不一致,当连续出现纹理複杂块时,压缩倍率降低,输出数据量大,有可能导致信道阻塞,反之,当连续出现平坦块时,压缩倍率高,输出数据量小,可能导致信道空闲;为此,应根据输出快取区内数据量动态调整压缩倍率,这可以通过改变分类器的阈值 、 实现.输入/输出快取区的设立达到了数据输入、压缩、输出并行流水处理的效果。