基于BWT和PPM的XMAC数据无损压缩方法研究
摘要:正交多极子阵列声波测井仪(XMAC-II)采集交叉偶极X、Y方向各8个接收器及单极8个接收器的阵列数据,所采用的XTF文件格式使得解释完成后的数据存储要占用大量硬盘空间,因此对阵列声波数据进行有效的编码和压缩,对于减少存储空间、节约企业运行成本具有重要意义。本文在分析声波波列数据特征的基础上,提出了一种将16位二进制数据的高8位和低8位分别编码的无损压缩策略,其中高8位采用部分匹配预测(PPM)编码方式,低8位经过BW变换、前移编码后再采用PPM编码。实验表明,本文方法的压缩率不仅优于传统的Huffman、LZW、RLE等算法,还优于目前流行的WinZip、Bzip2等软件。
字符串长度压缩关键词:数据无损压缩 BWT PPM
XMAC-II仪器采用的XTF文件格式直接将每个时间采样点的值以十六位整型方式存储,未经优化编码,占用空间较大,仅600m井段的数据就要占用250M字节。按照胜利测井公司每年平均施工110井次、每井次测量井段2000m计算,解释完成后的数据存档就需要占用大约92G的硬盘空间。因此,对XTF文件进行压缩编码非常必要。作者详细分析了阵列声波数据的特点,发现数据具有以下两个特征:(1)波列数据比较连续,相邻数据差值较小,具有较强的相关性;(2)大部分数据
在基线附近上下波动。此外,由数据的二进制形式可以看到高8位数据在变化幅度不大的地方基本保持不变,且波峰、波谷位置附近高8位也大致相同。对于低8位数据来说,虽然相邻时刻的值不可能完全相同,但某一个值也会重复出现。有鉴于此,本文提出一种新的无损压缩策略,即对高8位采用部分匹配预测算法(PPM)编码,而对规律性较差的低8位先采用Burrows-Wheeler变换使相同值在一定程度上集中在一起,经过前移编码后再使用PPM编码,从而实现更高的压缩率。
1 算法实现
1.1 数据预处理
1.1.1 Burrows-Wheeler变换(BWT)
BW变换[1]是一种有效的数据变换方法。对于长度为n的输入符号串S,BW变换将其改序成另一个符号串L,新的符号串L按如下步骤生成:
①出字符串S中最小的字符a并保存到数组F中;
②将最小字符所在位置的前一个字符存放到字符数组L中,这就是所要得到的新符号串L;
③将最小字符后所有字符移到该符号串S的开始位置,最小字符串前的符号串依次向后移动,组成新的符号串S′,然后返回到第一步,直到将字符串S中的所有字符处理完;
④在处理完某个字符后,必定得到一个新的符号串S′和原始的符号串S相同,记录下此时已经处理的字符的个数,记为I,解码时会用到。
1.1.2 前移编码(MTF)
经过BW变换所产生的符号串L具有如下特性:相同符号在L中的分布趋于集中,即在L中的某一区域内某一符号x的出现概率很大,而在其他区域则很小。这样L便适合采用前移编码[1]进行去相关。
L中某符号x出现概率相对集中于某一区域的特性,正好是前移编码能实现高效压缩的条件。具体实现步骤如下:
①初始化一个字符表数组A,此数组中含有字符串S的所有字符(对相同的字符只记录一次);
②对于寻在A中的位置,将在它前面的符号数保存到数组C中,然后把移到A的开头。
数组C即为前移编码结果,当L中某字符连续出现时,C中将会出现大量的0,于是C适合用统计模型方法进行编码。
1.2 部分匹配预测算法(PPM)
PPM(Prediction by Partial Matching)是一种上下文统计模型编码技术,其基本思想就是利用最近输入的几个字符(叫做上下文模型),来预测下一个字符。其中,模型的长度k可以从0到已输入字符的最大长度km不等。PPM算法分为建模和编码两个过程,对于k长度的上下文模型来说,首先要计算在输入字符串中,每个k长度的字符串后面不同字符出现的次数,然后可以得到该上下文模型的预测概率,即为建模过程。
定义一个已知字符串模型的最大长度为k,当下一个输入的字符已经由该上下文模型预测出时,该输入字符出现的概率就是预测概率。而当下一个字符不能由上下文模型预测出时,输入字符的概率无法得到,这时,就需要用到“逃逸(escape)”概率。添加逃逸上下文预测模型是为了防止零概率字符的情况出现。“逃逸”概率将模型从k跳到k-1,如果k-1长度的模型能预测出该字符,就能得到相应的预测概率。如果不能,该过程将一直进行直到某个模型可以预测出该字符。为了保证无论出现什么字符,最后“逃逸”过程都能结束,最低长度的模型中必须包括字母表中所有
的字符。逃逸上下文预测模型概率的计算方法有多种,每一种方法对应PPM一种类型。
2 实验结果与分析
实验过程中,将传统的字典编码方法LZW、熵编码算法、游程长度编码(RLE),以及当前比较流行的WinZip软件(基于Windows平台)和Bzip2软件的压缩效果与本文方法的压缩结果进行对比。实验数据为胜利油区YI7-7井中3000~3430m井段的XMAC-II实测数据,并选择其中TFWV01二维曲线的所有8个接收器测量信号,共计30860k字节。
本文方法在所有方法中压缩率是最高的,达到了50.541%;Bzip2压缩率也较高,究其原因是采用了BW变换和Huffman编码;采用RLE算法压缩后数据量反而增大,作者通过实验证明这是由于阵列声波数据中相同值的采样点分布很不集中造成的。由此可见,本文方法采取将数据分为高8位和低8位分别压缩,并在数据预处理时进行BW变换以提高压缩率的策略是正确的。
3 结语
正交多极子阵列声波数据存档占用大量硬盘空间的问题亟待解决,而目前胜利测井公司在工作流程中使用的Unix系统中的Compress程序压缩率仅达到10%左右,不能满足需要。本文提出
的新的无损压缩策略,针对阵列声波数据特点,并采用高压缩性能的部分匹配预测算法(PPM)和BW变换及前向编码,能够将阵列声波数据的压缩率提高到50%以上,可以节约大量的计算机资源,其程序源码也可以移植到Unix平台上,因此这种方法具有良好的应用前景。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论