实时压缩

更新时间:2022-09-18 11:07

实时压缩是指数据写入之前先进行压缩,使用的存储空间比实际的数据量更少,达到有效使用磁盘存储目的,在有限计算资源的限制下,提高图形系统处理数据的能力。

研究背景

背景

在最近几十年中,许多研究人员对实时数据库和实时数据管理进行了深入的研究。在流程工业控制领域,比较有代表性的实时数据库产品有由OSI Software Inc开发的、著名的PIant Information 系统和由Aspen TechnoIogy Inc开发的Info-PIus 系统。

数据压缩是实时数据库中一个比较关键的课题,为了节省存储空间,一个历史数据在被送入历史数据库前进行数据压缩处理是必要的,因为需要确信写入数据缓冲池的历史数据是重要的。此外,正如大家所知,历史数据压缩算法对于解压缩历史数据也是非常重要的,需要高效的数据压缩算法来满足在实时数据库中大量数据信息的存储需要,为此,OSI Software Inc.开发了著名的旋转门压缩算法(SDA)。

为了有效使用磁盘存储,需要对历史数据进行实时压缩,不仅需要很高的数据压缩率,而且需要高精度的数据压缩。

方向与现状

国内外相关研究主要集中在数字地图压缩和模式识别后图形的简化,研究目标主要分3类:

历史数据压缩

当有历史数据来临时,根据传感器的测量精度高低,历史数据首先通过必要的平滑处理和压缩处理,确定是否需要存储在历史数据库中。当确定要存储后,首先将数据存储在历史数据缓冲池中,待缓冲存满后,再将数据成块地存入当前历史文件中,历史数据文件以队列形式存放,当存满后,选择最早的历史数据文件作为可用的空历史文件(图1)。

图1中历史数据缓冲队列是实时数据库系统的核心与历史库的连接桥梁,用于缓冲实时库核心发来的实时数据。数据平滑是对测量噪声进行处理,根据仪器的测量精度来确定数据是否需要平滑处理。数据压缩是不可缺少的一步,通过压缩处理确定需要存储的关键数据点,然后将关键的数据点写进历史数据缓冲池中。历史数据缓冲池是历史数据在内存中的主要缓冲空间,用于存储近期历史数据,从而提高了近期历史数据的存取效率,减少了不必要的磁盘操作。

历史数据文件队列是历史数据存储的主要磁盘空间,在队列中起码要有一个历史数据文件,某时刻历史数据的追加只在当前历史数据文件进行。当历史文件存满以后,设定下一个可用的空历史数据文件为当前历史数据文件;当已无空文件时,则将最早的文件清空。

压缩算法技术

LZW算法

基本处理过程

字典编码的基本处理过程比较简单。首先从输入数据流中读取待压缩的文本串,放入先行缓冲区,然后进行编码。把先行缓冲区中的内容与字典窗口中的内容进行比较,如果有相匹配的部分,则按规定的格式用代码表示输入字符串。经匹配、编码后的数据流从先行缓冲区依次进入到字典窗口中,成为字典的一部分。由于文本窗口的大小是固定的,因此原有字典中的一部分内容将从窗口的另一端滑出。

这样,数据不断地由先行缓冲区一端补充到字典窗口,同时又不断有数据从该窗口的另一端滑出,类似于用一个固定大小的窗口从输入文本上滑过。因此,LZW压缩算法又被称为滑动窗压缩。随着窗口的滑动,字典的内容不断地发生变化,就好像字典中旧的短语被抛弃,新的短语被加入到字典中,滑动窗口中总保持着最近刚处理过的文本。使用固定大小窗口进行术语匹配,而不是在所有已经编码的信息中匹配,是因为匹配算法的时间消耗d太多,必须限制字典的大小才能保证算法的效率;随着压缩的进程滑动字典窗口,使其中总包含最近编码过的信息,因为对大多数信息而言,要编码的字符串往往在最近的上下文中更容易找到匹配串。字典编码压缩原理示意图如图2所示。

处理对象

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数据块,转换后的数据经锁存后,由数据分配器,按固定时序送人各个输入数据缓存区,压缩处理单元从数据缓存区读人数据,而后其内部的分类器、量化器同时计算处理,编码器、缓冲器以流水线方式顺序处理,压缩结果经缓冲器进入输出缓存区,经数据合并后,送人数据存储器或传输信道;由于图像数据子区复杂程度不一致,当连续出现纹理复杂块时,压缩倍率降低,输出数据量大,有可能导致信道阻塞,反之,当连续出现平坦块时,压缩倍率高,输出数据量小,可能导致信道空闲;为此,应根据输出缓存区内数据量动态调整压缩倍率,这可以通过改变分类器的阈值 、 实现.输入/输出缓存区的设立达到了数据输入、压缩、输出并行流水处理的效果。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}