一种字符型报文压缩方法

文档序号:7858809阅读:324来源:国知局
专利名称:一种字符型报文压缩方法
技术领域
本发明涉及一种基于字符型报文的有效压缩方法,根据字符型报文具有一个有限字符集合的特点,引入静态频率空间且自适应地更新,并结合算术编码等相关技术,取得了良好的压缩效果。本发明适用于任何基于有限字符集合报文压缩的诸如共享、存储、传输等场合,尤其是对报文传输实时性要求比较高的情况下,经实际验证均可良好地满足其应用需求。
背景技术
数据压缩方法按照压缩前后信息量是否有损失可分为两种类型,分别为有损压缩 和无损压缩。有损压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据有所不同;而无损压缩是指使用压缩后的数据进行重构后,数据与原来的数据完全相同,本发明专利所阐述的方法是一种无损压缩方法。无损数据压缩按照实现技术划分,可分为预测、字典、统计三大类。预测编码主要是根据离散信号之间存在着一定关联性的特点,利用前面的一个或多个信号对下一个信号进行预测,然后对实际值和预测值的差(预测误差)进行编码,典型的方法有DPCM,ADPCM等,它们较适合用于声音、图像数据的压缩。字典编码主要是利用数据本身包含较多重复的字符串的特性,其基本原理是不断的从字符流中提取新的字符串,然后用代号来代替这个字符串,从而实现压缩,典型的方法有LZW编码等。LZW编码是通过在编码过程中动态生成一个字符串表,用较短的代号来代替较长的字符串来实现压缩。统计编码又称为熵编码方法,主要根据字符出现概率的分布特征而进行压缩,典型的方法有行程编码、霍夫曼编码、算术编码等。行程编码的基本原理是用一个符号值或串代替具有相同值的连续符号,使符号长度少于原始数据的长度,适用于同一符号连续出现多次的场合;霍夫曼编码的基本原理是对出现概率大的信息符号编短码字,对出现概率小的信息符号编长码字;算术编码的概念是由Peter Elias于1960年提出,但是其虽然在数学上成立,并不能通过计算机实现,当时并未得到实际应用。1976年,R. Pasco和J. Rissanen分别用定长的寄存器实现了有限精度的算术编码,使其能够在计算机上实现,其基本原理是将编码的消息表示成实数0和I之间的一个间隔,消息越长,编码表示它的间隔越小,表示这一间隔所需的二进制位就越多,发生概率较大的符号在编码的时候使区间较慢的变化,编码结果中就产生较少的位数,整个编码过程采用了以一个单独的浮点数来代替一串输入符号的思想,避开了使用一个特定码字代替一输入符号,也即霍夫曼编码中比特数必须取整的问题。相比之下,算术编码有更高的效率和优越性,尤其是当信源中包含的符号比较少时,比如只有两个符号,算术编码明显更有优势,而霍夫曼编码几乎起不到任何的压缩效果。通信报文(后续简称报文)的使用非常普遍,比如雷达目标信息、位置信息、时间信息等,其主要由字符组成。字符是指计算机中使用的字母、数字和符号等,其存储需要一个字节,具体详见ASC II码表。随着信息时代的来临,各种报文的存储呈现海量特性,为共享、存储、分发带来较大压力。比如覆盖整个城市的车辆(公交车、出租车)监控、调度系统,各车辆将自身属性(如位置、状态)等通过特定报文格式传输至中心,其移动特性决定必须通过无线方式进行通信,同时,中心会为各车辆建立历史情况数据库,数量巨大的车辆信息给通信、存储带来不便。在实际使用中,为便于观察、交互,大量使用了具有字符特征的报文格式,比如广泛使用的NMEA-0183的报文格式,其是美国国家海洋电子协会为海用电子设备制定的标准格式,目前业已成为GPS导航设备统一的标准协议。目前,对于字符型报文格式的使用(如传输、存储),基本上都是未经压缩直接处理,从现有的文献和已公开材料查询,采用的压缩方案有I.采用B⑶码对报文进行压缩B⑶码亦称二进制码十进制数或二 -十进制代码,是一种二进制的数字编码形式, 适用于对O、这十个数字进行处理,固定使用4位二进制数来表示十个数字。
该方案适用范围有限,仅适用对数字字符进行压缩,对于字母等并不适用。2.采用扩展B⑶码对报文进行压缩将字符集合中所有字符二进制化,并使用二进制化后的数据代表字符,以实现压缩。比如有100个字符集合,对其二进制化,则每个字符将分配7个二进制位。该方案是一种典型的等概率的霍夫曼编码方法,认为各字符是等概率的,并未考虑字符概率特征,存在位浪费,压缩比有限。3.采用霍夫曼编码对报文进行压缩霍夫曼编码使用变长编码表对源符号进行编码,其中变长编码表是通过一种评估源符号出现频率的方法得到的,出现频率大的符号使用较短的编码,反之使用较长的编码。传统的霍夫曼编码是一种静态的编码方法,其主要通过统计原始数据中各字符出现的频率,并由此创建霍夫曼树,从而对原始数据进行编码,这种方法在实际应用系统中有很大局限性,特别在诸如通信等实时传输、处理系统中。因此,在报文压缩上并未得到广泛的应用。自适应霍夫曼编码是对上述方法的一种动态编码方法,已在报文压缩上得到应用,它对数据编码的依据是动态变化的霍夫曼树,即对第N+1个字符的编码是根据原始数据中前N个字符得到的霍夫曼树来进行的,每读入一个字符就要调整字符的计数,并进行霍夫曼树的更新,从而确保编码效率最高。该方案未考虑联合概率,且由于编码过程中比特数必须取整,使压缩效率产生折扣,造成了输出码流的浪费。

发明内容
发明目的本发明正是基于上述在处理字符型报文格式所遇到的问题,面向字符型报文格式,提出了一种通用无损报文压缩方法,该方法基于算术编码,并引入静态频率表和自适应频率表的建立,可有效地实现报文的无损压缩,改善了报文共享、存储、分发等应用过程中遇到的延时较高、占用多余带宽、使用较大存储资源等问题,使压缩比接近或达到熵编码理论的最大值。技术方案一种字符型报文压缩方法,包括如下步骤假设该字符型报文的字符集合为A,其字符个数为n,字符概率为Pi,则有Bi G A
权利要求
1.一种字符型报文压缩方法,其特征在于包括如下步骤 假设该字符型报文的字符集合为A,其字符个数为n,字符概率为Pi,则有 Bi G A y J.' =,其中 ISiSn1=1 (1)预处理 在初次使用字符型报文格式进行编码时,需要初始化频率表_Adapt_Table,并将其赋给频率; (2)接收一条报文 假设所述接收到的一条报文为Message,字符序列为B,序列元素个数为m,即 bj G A,其中 ISjSm (3)读入字符 将所述接收到的报文Message的各字符逐个读入,假设读入字符为b」,m,其概率为Pw ; (4)算术编码 根据当前的频率表_Adapt_Table,并结合当前字符频率Pbj对该字符进行算术编码; 算术编码的具体步骤为 假设算术编码所采用的初始编码区间为[O,Max],Max为区间最大值,设置为OxFFFF,编码过程中区间为[Low, High],区间范围为Range,其中Low为区间下沿,初始为0,High为区间上沿,初始为Max,读入字符为bp其频率为Pw,累计频率为CumPw,即符号值小于该符号的频率的总计; (41)初始化 初始化编码区间[O,Max],建立频率表; (42)读入字符4 将所述报文Message各字符逐个读入,假设读入字符为Ivm,其概率为Pbj ; (43)更新区间 根据当前频率表以及Pw和CumPbj,更新区间[Low, High],具体计算公式如下Range = High-Low+I High = Low+Range^ (CumPb j+Pbj) - ILow = Low+Range 氺 CumPbj (44)归一化 检查区间[Low,High]是否满足继续编码的条件,如果满足继续编码,否则对区间[Low, High]进行归一化操作; 对区间[Low,High]进行归一化操作,具体分为以下三种情况 情况一区间上沿最闻位是I,次闻位为0,下沿最闻位是0,次闻位是I,对之做将次闻位移出操作,即忽略掉次高位,并记录下忽略次高位的次数CaselNum ; 情况二 区间上下沿最高位均是0,则进行将上下沿左移I位,且上沿加I的操作,并将移出位添加到输出码流,此后检查CaselNum是否为0,若不为0,则将最高位取反称为CaselBit,并输出CaselNum个CaselBit至输出码流;情况三区间上下沿最高位均是1,则进行将上下沿左移I位,且上沿加I的操作,并将移出位添加到输出码流,此后检查CaselNum是否为O,若不为O,则将最高位取反称为CaselBit,并输出CaselNum个CaselBit至输出码流。
(45)判断是否更新频率表 若是,则执行下一步骤(46),否则跳转到步骤(47); (46)更新频率表 更新所述编码字符的频率Pw以及相应的累计频率CumPw,即更新频率表; (47)判断是否结束 若是,则结束此次编码,否则跳转到步骤(42),继续编码下一字符。
(5)判断是否更新频率表 根据实际需求,在编码过程中,所述频率表_Adapt_Table更新或者逐字符进行,即对本条报文Message中各个字符进行算术编码后,均更新频率表;或者以若干条报文为单位进行,即对单条报文逐个字符进行算术编码后,仅记录各个字符出现的次数,在达到设定的若干条报文编码结束后再根据记录情况进行频率表的更新;若需要更新频率表_Adapt_Table,则执行下一步骤(6),否则跳转到步骤(7); (6)更新频率表 通过更新字符N的频率Pw,进而更新频率表_Adapt_Table ; (7)本条报文编码是否结束 如果本条报文Message编码未结束,则跳转到步骤(3),继续编码下一个字符,否则执行下一步骤(8); (8)判断是否有下一条报文 若是,则执行步骤(9),否则执行步骤(11),即结束本次编码; (9)判断是否更新频率表 对于采用所述以若干条报文为单位进行更新频率方法的情况下,在本条报文Message编码结束后,如果要更新频率表则执行下一步骤,否则跳转到步骤(2),读入下一条报文,继续编码; (10)更新频率表 使用所记录的字符出现次数进行频率表_Adapt_Table的更新; (11)结束 结束本次编码。
2.如权利要求I所述的字符型报文压缩方法,其特征在于对频率表的初始化提出按经验值和等概率两种方式,其中,按经验值方式针对报文的字符集合特点,结合具体使用环境,分配给Pi具体值,从而创建字符集合的经验值静态频率表_EXper_Table,并将其赋给频率表_Adapt_Table ;而等概率方式则是创建等概率静态频率表_EqualPro_Table,即 n 1 1= ~ 并将其赋给频率表_Adapt_Table。 n !
3.如权利要求I所述的字符型报文压缩方法,其特征在于解码是编码的逆过程。
全文摘要
本发明公开了一种字符型报文压缩方法,该方法对于频率表的更新给出了一种优化的自适应更新方法,一是在编码过程中逐字符进行更新,即对本条报文中各个字符进行算术编码后,均更新频率表。对频率表的更新会占用一定的计算量,若计算资源受限,第一种方式无法适用。本发明可采用另外一种方式,即频率表的更新以若干条报文为单位进行,对单条报文逐个字符进行算术编码后,仅记录各个字符出现的次数,在达到设定的若干条报文编码结束后再根据记录情况进行频率表的更新。本发明可有效地实现报文的无损压缩,改善了报文共享、存储、分发等应用过程中遇到的延时较高、占用多余带宽、使用较大存储资源等问题,使压缩比接近或达到熵编码理论的最大值。
文档编号H04L1/00GK102811113SQ201210241220
公开日2012年12月5日 申请日期2012年7月12日 优先权日2012年7月12日
发明者常传文, 李玮, 茅文深, 鉴福升, 林明, 夏宁, 吴杰, 姚浩 申请人:中国电子科技集团公司第二十八研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1