一种字符型报文压缩方法.pdf

上传人:32 文档编号:4753020 上传时间:2018-11-06 格式:PDF 页数:13 大小:1.13MB
返回 下载 相关 举报
摘要
申请专利号:

CN201210241220.4

申请日:

2012.07.12

公开号:

CN102811113A

公开日:

2012.12.05

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 1/00申请日:20120712|||公开

IPC分类号:

H04L1/00

主分类号:

H04L1/00

申请人:

中国电子科技集团公司第二十八研究所

发明人:

常传文; 李玮; 茅文深; 鉴福升; 林明; 夏宁; 吴杰; 姚浩

地址:

210007 江苏省南京市白下区苜蓿园东街1号

优先权:

专利代理机构:

南京苏高专利商标事务所(普通合伙) 32204

代理人:

柏尚春

PDF下载: PDF下载
内容摘要

本发明公开了一种字符型报文压缩方法,该方法对于频率表的更新给出了一种优化的自适应更新方法,一是在编码过程中逐字符进行更新,即对本条报文中各个字符进行算术编码后,均更新频率表。对频率表的更新会占用一定的计算量,若计算资源受限,第一种方式无法适用。本发明可采用另外一种方式,即频率表的更新以若干条报文为单位进行,对单条报文逐个字符进行算术编码后,仅记录各个字符出现的次数,在达到设定的若干条报文编码结束后再根据记录情况进行频率表的更新。本发明可有效地实现报文的无损压缩,改善了报文共享、存储、分发等应用过程中遇到的延时较高、占用多余带宽、使用较大存储资源等问题,使压缩比接近或达到熵编码理论的最大值。

权利要求书

1: 一种字符型报文压缩方法, 其特征在于 : 包括如下步骤 : 假设该字符型报文的字符集合为 A, 其字符个数为 n, 字符概率为 Pi, 则有 ai ∈ A 其中 1 ≤ i ≤ n (1) 预处理 在初次使用字符型报文格式进行编码时, 需要初始化频率表 _Adapt_Table, 并将其赋 给频率表 _Adapt_Table ; (2) 接收一条报文 假设所述接收到的一条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即 bj ∈ A, 其中 1 ≤ j ≤ m (3) 读入字符 将所述接收到的报文 Message 的各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概 率为 Pbj ; (4) 算术编码 根据当前的频率表 _Adapt_Table, 并结合当前字符频率 Pbj 对该字符进行算术编码 ; 算术编码的具体步骤为 : 假设算术编码所采用的初始编码区间为 [0,Max], Max 为区间最大值, 设置为 0xFFFF, 编码过程中区间为 [Low,High], 区间范围为 Range, 其中 Low 为区间下沿, 初始为 0, High 为 区间上沿, 初始为 Max, 读入字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小于该符 号的频率的总计 ; (41) 初始化 初始化编码区间 [0,Max], 建立频率表 ; (42) 读入字符 bj 将所述报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概率为 Pbj ; (43) 更新区间 根据当前频率表以及 Pbj 和 CumPbj, 更新区间 [Low,High], 具体计算公式如下 : Range = High-Low+1 High = Low+Range*(CumPbj+Pbj)-1 Low = Low+Range*CumPbj (44) 归一化 检查区间 [Low,High] 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 [Low,High] 进行归一化操作 ; 对区间 [Low,High] 进行归一化操作, 具体分为以下三种情况 : 情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将次高 位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ; 情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并 将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ; 2 情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并 将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。 (45) 判断是否更新频率表 若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ; (46) 更新频率表 更新所述编码字符的频率 Pbj 以及相应的累计频率 CumPbj, 即更新频率表 ; (47) 判断是否结束 若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。 (5) 判断是否更新频率表 根据实际需求, 在编码过程中, 所述频率表 _Adapt_Table 更新或者逐字符进行, 即对 本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 或者以若干条报文为单位 进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定 的若干条报文编码结束后再根据记录情况进行频率表的更新 ; 若需要更新频率表 _Adapt_ Table, 则执行下一步骤 (6) , 否则跳转到步骤 (7) ; (6) 更新频率表 通过更新字符 bj 的频率 Pbj, 进而更新频率表 _Adapt_Table ; (7) 本条报文编码是否结束 如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否则执 行下一步骤 (8) ; (8) 判断是否有下一条报文 若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ; (9) 判断是否更新频率表 对于采用所述以若干条报文为单位进行更新频率表 _Adapt_Table 方法的情况下, 在 本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否则跳转到步骤 (2) , 读入下一条报文, 继续编码 ; (10) 更新频率表 使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ; (11) 结束 结束本次编码。2: 如权利要求 1 所述的字符型报文压缩方法, 其特征在于 : 对频率表的初始化提出按 经验值和等概率两种方式, 其中, 按经验值方式针对报文的字符集合特点, 结合具体使用环 境, 分配给 Pi 具体值, 从而创建字符集合的经验值静态频率表 _Exper_Table, 并将其赋给频 率表 _Adapt_Table ; 而等概率方式则是创建等概率静态频率表 _EqualPro_Table, 即 并将其赋给频率表 _Adapt_Table。3: 如权利要求 1 所述的字符型报文压缩方法, 其特征在于 : 解码是编码的逆过程。

说明书


一种字符型报文压缩方法

    技术领域 本发明涉及一种基于字符型报文的有效压缩方法, 根据字符型报文具有一个有限 字符集合的特点, 引入静态频率空间且自适应地更新, 并结合算术编码等相关技术, 取得了 良好的压缩效果。
     本发明适用于任何基于有限字符集合报文压缩的诸如共享、 存储、 传输等场合, 尤 其是对报文传输实时性要求比较高的情况下, 经实际验证均可良好地满足其应用需求。
     背景技术
     数据压缩方法按照压缩前后信息量是否有损失可分为两种类型, 分别为有损压缩 和无损压缩。有损压缩是指使用压缩后的数据进行重构 (或者叫做还原, 解压缩) , 重构后的 数据与原来的数据有所不同 ; 而无损压缩是指使用压缩后的数据进行重构后, 数据与原来 的数据完全相同, 本发明专利所阐述的方法是一种无损压缩方法。
     无损数据压缩按照实现技术划分, 可分为预测、 字典、 统计三大类。预测编码主要 是根据离散信号之间存在着一定关联性的特点, 利用前面的一个或多个信号对下一个信号 进行预测, 然后对实际值和预测值的差 ( 预测误差 ) 进行编码, 典型的方法有 DPCM, ADPCM 等, 它们较适合用于声音、 图像数据的压缩。 字典编码主要是利用数据本身包含较多重复的 字符串的特性, 其基本原理是不断的从字符流中提取新的字符串, 然后用代号来代替这个 字符串, 从而实现压缩, 典型的方法有 LZW 编码等。LZW 编码是通过在编码过程中动态生成 一个字符串表, 用较短的代号来代替较长的字符串来实现压缩。统计编码又称为熵编码方 法, 主要根据字符出现概率的分布特征而进行压缩, 典型的方法有行程编码、 霍夫曼编码、 算术编码等。行程编码的基本原理是用一个符号值或串代替具有相同值的连续符号, 使符 号长度少于原始数据的长度, 适用于同一符号连续出现多次的场合 ; 霍夫曼编码的基本原 理是对出现概率大的信息符号编短码字, 对出现概率小的信息符号编长码字 ; 算术编码的 概念是由 Peter Elias 于 1960 年提出, 但是其虽然在数学上成立, 并不能通过计算机实现, 当时并未得到实际应用。1976 年, R.Pasco 和 J.Rissanen 分别用定长的寄存器实现了有限 精度的算术编码, 使其能够在计算机上实现, 其基本原理是将编码的消息表示成实数 0 和 1 之间的一个间隔, 消息越长, 编码表示它的间隔越小, 表示这一间隔所需的二进制位就越 多, 发生概率较大的符号在编码的时候使区间较慢的变化, 编码结果中就产生较少的位数, 整个编码过程采用了以一个单独的浮点数来代替一串输入符号的思想, 避开了使用一个特 定码字代替一输入符号, 也即霍夫曼编码中比特数必须取整的问题。 相比之下, 算术编码有 更高的效率和优越性, 尤其是当信源中包含的符号比较少时, 比如只有两个符号, 算术编码 明显更有优势, 而霍夫曼编码几乎起不到任何的压缩效果。
     通信报文 (后续简称报文) 的使用非常普遍, 比如雷达目标信息、 位置信息、 时间信 息等, 其主要由字符组成。字符是指计算机中使用的字母、 数字和符号等, 其存储需要一个 字节, 具体详见 ASC Ⅱ码表。随着信息时代的来临, 各种报文的存储呈现海量特性, 为共享、 存储、 分发带来较大压力。比如覆盖整个城市的车辆 (公交车、 出租车) 监控、 调度系统, 各车辆将自身属性 (如位置、 状态) 等通过特定报文格式传输至中心, 其移动特性决定必须通 过无线方式进行通信, 同时, 中心会为各车辆建立历史情况数据库, 数量巨大的车辆信息给 通信、 存储带来不便。 在实际使用中, 为便于观察、 交互, 大量使用了具有字符特征的报文格 式, 比如广泛使用的 NMEA-0183 的报文格式, 其是美国国家海洋电子协会为海用电子设备 制定的标准格式, 目前业已成为 GPS 导航设备统一的标准协议。
     目前, 对于字符型报文格式的使用 (如传输、 存储) , 基本上都是未经压缩直接处 理, 从现有的文献和已公开材料查询, 采用的压缩方案有 :
     1. 采用 BCD 码对报文进行压缩
     BCD 码亦称二进制码十进制数或二 - 十进制代码, 是一种二进制的数字编码形式, 适用于对 0~9 这十个数字进行处理, 固定使用 4 位二进制数来表示十个数字。
     该方案适用范围有限, 仅适用对数字字符进行压缩, 对于字母等并不适用。
     2. 采用扩展 BCD 码对报文进行压缩
     将字符集合中所有字符二进制化, 并使用二进制化后的数据代表字符, 以实现压 缩。比如有 100 个字符集合, 对其二进制化, 则每个字符将分配 7 个二进制位。
     该方案是一种典型的等概率的霍夫曼编码方法, 认为各字符是等概率的, 并未考 虑字符概率特征, 存在位浪费, 压缩比有限。 3. 采用霍夫曼编码对报文进行压缩
     霍夫曼编码使用变长编码表对源符号进行编码, 其中变长编码表是通过一种评 估源符号出现频率的方法得到的, 出现频率大的符号使用较短的编码, 反之使用较长的编 码。传统的霍夫曼编码是一种静态的编码方法, 其主要通过统计原始数据中各字符出现的 频率, 并由此创建霍夫曼树, 从而对原始数据进行编码, 这种方法在实际应用系统中有很大 局限性, 特别在诸如通信等实时传输、 处理系统中。因此, 在报文压缩上并未得到广泛的应 用。自适应霍夫曼编码是对上述方法的一种动态编码方法, 已在报文压缩上得到应用, 它 对数据编码的依据是动态变化的霍夫曼树, 即对第 N+1 个字符的编码是根据原始数据中前 N 个字符得到的霍夫曼树来进行的, 每读入一个字符就要调整字符的计数, 并进行霍夫曼树 的更新, 从而确保编码效率最高。
     该方案未考虑联合概率, 且由于编码过程中比特数必须取整, 使压缩效率产生折 扣, 造成了输出码流的浪费。
     发明内容 发明目的 : 本发明正是基于上述在处理字符型报文格式所遇到的问题, 面向字符 型报文格式, 提出了一种通用无损报文压缩方法, 该方法基于算术编码, 并引入静态频率表 和自适应频率表的建立, 可有效地实现报文的无损压缩, 改善了报文共享、 存储、 分发等应 用过程中遇到的延时较高、 占用多余带宽、 使用较大存储资源等问题, 使压缩比接近或达到 熵编码理论的最大值。
     技术方案 : 一种字符型报文压缩方法, 包括如下步骤 :
     假设该字符型报文的字符集合为 A, 其字符个数为 n, 字符概率为 Pi, 则有
     ai ∈ A
     5CN 102811113 A
     说其中 1 ≤ i ≤ n明书3/8 页(1) 预处理
     在初次使用字符型报文格式进行编码时, 需要初始化频率表 _Adapt_Table, 具体 方式有两种 : 一是针对报文的字符集合特点, 结合具体使用环境, 分配给 Pi 具体值, 从而创 建字符集合的经验值静态频率表 _Exper_Table, 并将其具体值赋给频率表 _Adapt_Table ; 二是创建等概率静态频率表 _EqualPro_Table, 即
     并将其赋给频率表 _Adapt_Table。在实际使用过程中, 可根据具体需求来选择初 始化方式 ;
     (2) 接收一条报文
     假设所述接收到的一条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即
     bj ∈ A, 其中 1 ≤ j ≤ m
     (3) 读入字符
     将所述接收到的报文 Message 的各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概率为 Pbj ;
     (4) 算术编码
     根据当前的频率表 _Adapt_Table, 并结合当前字符频率 Pbj 对该字符进行算术编 码;
     (5) 判断是否更新频率表
     根据实际需求, 在编码过程中, 所述频率表 _Adapt_Table 更新可逐字符进行, 即 对本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单 位进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定 的若干条报文编码结束后再根据记录情况进行频率表的更新 ; 若需要更新频率表 _Adapt_ Table, 则执行下一步骤 (6) , 否则跳转到步骤 (7) ;
     (6) 更新频率表
     通过更新字符 bj 的频率 Pbj, 进而更新频率表 _Adapt_Table ;
     (7) 本条报文编码是否结束
     如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否 则执行下一步骤 (8) ;
     (8) 判断是否有下一条报文
     若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ;
     (9) 判断是否更新频率表
     对于采用所述以若干条报文为单位进行更新频率表 _Adapt_Table 方法的情况 下, 在本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否则跳转到步骤 (2) , 读入下一条报文, 继续编码 ;
     (10) 更新频率表
     使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ;
     结束本次编码。
     所述步骤 (4) 中算术编码, 包括如下步骤 :
     假设算术编码所采用的初始编码区间为 [0,Max], Max 为区间最大值, 一般设置为 0xFFFF, 编码过程中区间为 [Low,High], 区间范围为 Range, 其中 Low 为区间下沿, 初始为 0, High 为区间上沿, 初始为 Max, 读入字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小 于该符号的频率的总计。
     (41) 初始化
     初始化编码区间 [0,Max], 建立频率表 ;
     (42) 读入字符 bj
     将所述报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概率为 Pbj ;
     (43) 更新区间
     根据当前频率表以及 Pbj 和 CumPbj, 更新区间 [Low,High], 具体计算公式如下 :
     Range = High-Low+1
     High = Low+Range*(CumPbj+Pbj)-1
     Low = Low+Range*CumPbj
     (44) 归一化
     检查区间 [Low,High] 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 [Low,High] 进行归一化操作 ;
     (45) 判断是否更新频率表
     若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ;
     (46) 更新频率表
     更新所述编码字符的频率 Pbj 以及相应的累计频率 CumPbj, 即更新频率表 ;
     (47) 判断是否结束
     若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。
     所述步骤 44 中, 对区间 [Low,High] 进行归一化操作, 具体分为以下三种情况 :
     情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将 次高位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ;
     情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ;
     情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。
     归一化的目的是防止随着编码的进行, 区间变得越来越窄, 以至编解码出现错误。
     依照本节技术方案, 解码是编码的逆过程, 不再赘述。
     有益效果 : 本发明通过实际应用以及论证, 具有以下有益效果 :
     (1) 基于有限字符集合报文的特点, 将算术编码应用在其无损压缩上面, 充分发挥
     了算术编码的优点, 相比较 BCD 码、 霍夫曼编码等压缩方式具有更高的压缩比和效率。
     (2) 通过使用经验值频率表的建立, 使报文在压缩过程中的起始阶段就能够达到 较好的压缩效果 ;
     (3) 引入两种动态更新频率表的方法, 其中, 在编码过程中逐字符进行更新的方法 充分考虑了字符概率问题, 尽可能地增大了报文压缩比 ; 以若干条报文为单位进行更新的 方法更是满足了计算资源受限的环境 ; 附图说明
     图 1 为本发明实施例的流程图 ; 图 2 为本发明实施例中的算术编码的流程图。具体实施方式
     下面结合附图和具体实施例, 进一步阐明本发明, 应理解这些实施例仅用于说明 本发明而不用于限制本发明的范围, 在阅读了本发明之后, 本领域技术人员对本发明的各 种等价形式的修改均落于本申请所附权利要求所限定的范围。 如图 1 所示, 本方案在预处理步骤中完成频率表的初始化, 其通过采用等概率静 态频率表或者经验值静态概率表两种方式完成。 对于频率表的更新给出了一种优化的自适 应更新方法, 具体体现在步骤 (6) 和 (10) , 其采用两种方式, 一是在编码过程中逐字符进行 更新, 即对本条报文中各个字符进行算术编码后, 均更新频率表。 对频率表的更新会占用一 定的计算量, 若计算资源受限, 第一种方式无法适用。本发明可采用另外一种方式, 即频率 表的更新以若干条报文为单位进行, 对单条报文逐个字符进行算术编码后, 仅记录各个字 符出现的次数, 在达到设定的若干条报文编码结束后再根据记录情况进行频率表的更新。
     该方案中涉及到的变量说明如下 :
     ① _Exper_Table : 根据经验值建立起的静态频率表 ;
     ② _EqualPro_Table : 字符集合中各字符概率相等, 即等概率静态频率表 ;
     ③ _Adapt_Table : 编码过程中的自适应频率表。
     假设字符型报文中所有可能字符集合为 A, 集合元素个数为 n, 其中, 字符 ai 出现 概率为 Pi, 则有 :
     ai ∈ A
     其中 1 ≤ i ≤ n本发明采用的技术方案步骤如下, 具体流程图见附图 1 :
     (1) 预处理
     在初次使用该报文格式进行编码时, 需要初始化频率表 _Adapt_Table。具体方式 有两种, 一是可针对报文的字符集合特点, 结合具体使用环境, 分配给 Pi 具体值, 从而创建 字符集合的经验值静态频率表 _Exper_Table, 并将其具体值赋给 _Adapt_Table ; 二是创建 等概率静态频率表 _EqualPro_Table, 即
     并将其赋给 _Adapt_Table。在实际使用过程中, 可根据具体需求来选择初始化方 (2) 接收一条报文 假设该条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即 bj ∈ B, 其中 1 ≤ j ≤ m (3) 读入字符 将该条报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概率为式;
     Pbj ; (4) 算术编码
     根据当前的频率表, 并结合当前字符频率 Pbj 对该字符进行算术编码 ;
     (5) 是否更新频率表
     根据实际需求, 在编码过程中, 频率表 _Adapt_Table 更新可逐字符进行, 即对本 条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单位进 行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定的若 干条报文编码结束后再根据记录情况进行频率表的更新。
     具体步骤为若需要更新频率表 _Adapt_Table, 则执行下一步骤 (6) , 否则跳转到 步骤 (7) ;
     (6) 更新频率表
     通过更新字符 bj 的频率 Pbj, 进而更新频率表 _Adapt_Table ;
     (7) 本条报文编码是否结束
     如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否 则执行下一步骤 (8) ;
     (8) 是否有下一条报文
     若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ;
     (9) 是否更新频率表
     对 于 采 用 上 述 第 二 种 更 新 频 率 表 _Adapt_Table 方 法 的 情 况 下, 在本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否则跳转到步骤 (2) , 读入下一 条报文, 继续编码 ;
     (10) 更新频率表
     具体为使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ;
     (11) 结束
     结束本次编码。
     对于本发明采用的技术方案中的步骤 (4) 算术编码, 其详细过程如下, 且具体流程 图见附图 2 :
     假设算术编码所采用的初始编码区间为 [0,Max], Max 为区间最大值, 一般设置为 0xFFFF, 编码过程中区间为 [Low,High], 区间范围为 Range, 其中 Low 为区间下沿, 初始为 0, High 为区间上沿, 初始为 Max, 读入字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小 于该符号的频率的总计。
     (41) 初始化
     初始化编码区间 [0,Max], 建立频率表等 ;
     (42) 读入字符 bj
     将该条报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 ≤ j ≤ m, 其概率为 Pbj ;
     (43) 更新区间
     根据当前频率表以及 Pbj 和 CumPbj, 更新区间 [Low,High], 具体计算公式如下 :
     Range = High-Low+1
     High = Low+Range*(CumPbj+Pbj)-1
     Low = Low+Range*CumPbj
     (44) 归一化
     检查区间 [Low,High] 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 [Low,High] 进行归一化操作, 具体分为一下三种情况 :
     情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将 次高位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ;
     情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ;
     情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。
     归一化的目的是防止随着编码的进行 , 区间变得越来越窄 , 以至编解码出现错 误;
     (45) 是否更新频率表
     若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ;
     (46) 更新频率表
     更新该编码字符的频率 Pbj 以及相应的累计频率 CumPbj, 即更新频率表 ;
     (47) 是否结束
     若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。
     依照本节技术方案, 解码是编码的逆过程, 不再赘述。
     下面以定位信息中广泛使用的 NMEA-0183 的格式为例, 对本发明技术方案进行详 细说明, 但是本发明的保护范围不局限于所述实施例。
     具体以 NMEA-0183 中表示地理定位信息的报文格式为例, 并且假设本条报文 Message 为” $GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D” , 报文中各个字段以逗 号隔开, 各字段所代表的具体信息如下 :
     字段 0 : $GPGLL, 语句 ID, 表明该语句为 Geographic Position(GLL) 地理定位信 息;
     字段 1 : 纬度 ddmm.mmmm, 度分格式 (前导位数不足则补 0) ;
     字段 2 : 纬度 N(北纬) 或 S(南纬) ;
     字段 3 : 经度 dddmm.mmmm, 度分格式 (前导位数不足则补 0) ;字段 4 : 经度 E(东经) 或 W(西经) ;
     字段 5 : UTC 时间, hhmmss.sss 格式 ;
     字段 6 : 状态, A= 定位, V= 未定位 ;
     字段 7 : 校验值。
     此报文的具体编码步骤如下 :
     (1) 预处理
     针对报文字符集合中数字和逗号出现频繁等特点, 结合具体使用环境, 创建字符 集合的经验值静态频率表 _Exper_Table, 并将 _Adapt_Table 初始化为 _Exper_Table ;
     (2) 读入字符
     将该条报文 Message 各字符逐个读入 ;
     (3) 算术编码
     根据当前的频率表, 并结合当前字符频率对该字符进行算术编码 ;
     (4) 是否更新频率表
     根据实际需求, 在编码过程中, 频率表 _Adapt_Table 的更新可逐字符进行, 即对 本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单位 进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定的 若干条报文编码结束后再根据记录情况进行频率表的更新。 具体步骤为若需要更新频率表 _Adapt_Table, 则执行下一步骤 (5) , 否则跳转到 步骤 (6) ;
     (5) 更新频率表
     通过更新本次编码字符的频率, 进而更新频率表 _Adapt_Table ;
     (6) 本条报文编码是否结束
     如果本条报文 Message 编码未结束, 则跳转到步骤 (2) , 继续编码下一个字符, 否 则执行下一步骤 (7) ;
     (7) 结束
     结束本次编码。
    

一种字符型报文压缩方法.pdf_第1页
第1页 / 共13页
一种字符型报文压缩方法.pdf_第2页
第2页 / 共13页
一种字符型报文压缩方法.pdf_第3页
第3页 / 共13页
点击查看更多>>
资源描述

《一种字符型报文压缩方法.pdf》由会员分享,可在线阅读,更多相关《一种字符型报文压缩方法.pdf(13页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102811113 A (43)申请公布日 2012.12.05 CN 102811113 A *CN102811113A* (21)申请号 201210241220.4 (22)申请日 2012.07.12 H04L 1/00(2006.01) (71)申请人 中国电子科技集团公司第二十八研 究所 地址 210007 江苏省南京市白下区苜蓿园东 街 1 号 (72)发明人 常传文 李玮 茅文深 鉴福升 林明 夏宁 吴杰 姚浩 (74)专利代理机构 南京苏高专利商标事务所 ( 普通合伙 ) 32204 代理人 柏尚春 (54) 发明名称 一种字符型报文压缩方法 (57。

2、) 摘要 本发明公开了一种字符型报文压缩方法, 该 方法对于频率表的更新给出了一种优化的自适应 更新方法, 一是在编码过程中逐字符进行更新, 即 对本条报文中各个字符进行算术编码后, 均更新 频率表。 对频率表的更新会占用一定的计算量, 若 计算资源受限, 第一种方式无法适用。 本发明可采 用另外一种方式, 即频率表的更新以若干条报文 为单位进行, 对单条报文逐个字符进行算术编码 后, 仅记录各个字符出现的次数, 在达到设定的若 干条报文编码结束后再根据记录情况进行频率表 的更新。本发明可有效地实现报文的无损压缩, 改善了报文共享、 存储、 分发等应用过程中遇到的 延时较高、 占用多余带宽、 。

3、使用较大存储资源等问 题, 使压缩比接近或达到熵编码理论的最大值。 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 8 页 附图 2 页 1/2 页 2 1. 一种字符型报文压缩方法, 其特征在于 : 包括如下步骤 : 假设该字符型报文的字符集合为 A, 其字符个数为 n, 字符概率为 Pi, 则有 ai A 其中 1 i n (1) 预处理 在初次使用字符型报文格式进行编码时, 需要初始化频率表 _Adapt_Table, 并将其赋 给频率表 _Adapt_Table ; (2)。

4、 接收一条报文 假设所述接收到的一条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即 bj A, 其中 1 j m (3) 读入字符 将所述接收到的报文 Message 的各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概 率为 Pbj; (4) 算术编码 根据当前的频率表 _Adapt_Table, 并结合当前字符频率 Pbj对该字符进行算术编码 ; 算术编码的具体步骤为 : 假设算术编码所采用的初始编码区间为 0,Max, Max 为区间最大值, 设置为 0xFFFF, 编码过程中区间为 Low,High, 区间范围为 Range, 其中 Low 为区间下沿,。

5、 初始为 0, High 为 区间上沿, 初始为 Max, 读入字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小于该符 号的频率的总计 ; (41) 初始化 初始化编码区间 0,Max, 建立频率表 ; (42) 读入字符 bj 将所述报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概率为 Pbj; (43) 更新区间 根据当前频率表以及 Pbj和 CumPbj, 更新区间 Low,High, 具体计算公式如下 : Range High-Low+1 High Low+Range*(CumPbj+Pbj)-1 Low Low+Range*。

6、CumPbj (44) 归一化 检查区间 Low,High 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 Low,High 进行归一化操作 ; 对区间 Low,High 进行归一化操作, 具体分为以下三种情况 : 情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将次高 位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ; 情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并 将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取。

7、反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ; 权 利 要 求 书 CN 102811113 A 2 2/2 页 3 情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并 将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。 (45) 判断是否更新频率表 若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ; (46) 更新频率表 更新所述编码字符的频率 Pbj以及相。

8、应的累计频率 CumPbj, 即更新频率表 ; (47) 判断是否结束 若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。 (5) 判断是否更新频率表 根据实际需求, 在编码过程中, 所述频率表 _Adapt_Table 更新或者逐字符进行, 即对 本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 或者以若干条报文为单位 进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定 的若干条报文编码结束后再根据记录情况进行频率表的更新 ; 若需要更新频率表 _Adapt_ Table, 则执行下一步骤 (6) , 否则跳转到。

9、步骤 (7) ; (6) 更新频率表 通过更新字符 bj的频率 Pbj, 进而更新频率表 _Adapt_Table ; (7) 本条报文编码是否结束 如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否则执 行下一步骤 (8) ; (8) 判断是否有下一条报文 若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ; (9) 判断是否更新频率表 对于采用所述以若干条报文为单位进行更新频率表 _Adapt_Table 方法的情况下, 在 本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否则跳转到步骤 (2)。

10、 , 读入下一条报文, 继续编码 ; (10) 更新频率表 使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ; (11) 结束 结束本次编码。 2. 如权利要求 1 所述的字符型报文压缩方法, 其特征在于 : 对频率表的初始化提出按 经验值和等概率两种方式, 其中, 按经验值方式针对报文的字符集合特点, 结合具体使用环 境, 分配给Pi具体值, 从而创建字符集合的经验值静态频率表_Exper_Table, 并将其赋给频 率表 _Adapt_Table ; 而等概率方式则是创建等概率静态频率表 _EqualPro_Table, 即 并将其赋给频率表 _Adapt_Table。

11、。 3. 如权利要求 1 所述的字符型报文压缩方法, 其特征在于 : 解码是编码的逆过程。 权 利 要 求 书 CN 102811113 A 3 1/8 页 4 一种字符型报文压缩方法 技术领域 0001 本发明涉及一种基于字符型报文的有效压缩方法, 根据字符型报文具有一个有限 字符集合的特点, 引入静态频率空间且自适应地更新, 并结合算术编码等相关技术, 取得了 良好的压缩效果。 0002 本发明适用于任何基于有限字符集合报文压缩的诸如共享、 存储、 传输等场合, 尤 其是对报文传输实时性要求比较高的情况下, 经实际验证均可良好地满足其应用需求。 背景技术 0003 数据压缩方法按照压缩前后。

12、信息量是否有损失可分为两种类型, 分别为有损压缩 和无损压缩。有损压缩是指使用压缩后的数据进行重构 (或者叫做还原, 解压缩) , 重构后的 数据与原来的数据有所不同 ; 而无损压缩是指使用压缩后的数据进行重构后, 数据与原来 的数据完全相同, 本发明专利所阐述的方法是一种无损压缩方法。 0004 无损数据压缩按照实现技术划分, 可分为预测、 字典、 统计三大类。预测编码主要 是根据离散信号之间存在着一定关联性的特点, 利用前面的一个或多个信号对下一个信号 进行预测, 然后对实际值和预测值的差 ( 预测误差 ) 进行编码, 典型的方法有 DPCM, ADPCM 等, 它们较适合用于声音、 图像。

13、数据的压缩。 字典编码主要是利用数据本身包含较多重复的 字符串的特性, 其基本原理是不断的从字符流中提取新的字符串, 然后用代号来代替这个 字符串, 从而实现压缩, 典型的方法有 LZW 编码等。LZW 编码是通过在编码过程中动态生成 一个字符串表, 用较短的代号来代替较长的字符串来实现压缩。统计编码又称为熵编码方 法, 主要根据字符出现概率的分布特征而进行压缩, 典型的方法有行程编码、 霍夫曼编码、 算术编码等。行程编码的基本原理是用一个符号值或串代替具有相同值的连续符号, 使符 号长度少于原始数据的长度, 适用于同一符号连续出现多次的场合 ; 霍夫曼编码的基本原 理是对出现概率大的信息符号。

14、编短码字, 对出现概率小的信息符号编长码字 ; 算术编码的 概念是由Peter Elias于1960年提出, 但是其虽然在数学上成立, 并不能通过计算机实现, 当时并未得到实际应用。1976 年, R.Pasco 和 J.Rissanen 分别用定长的寄存器实现了有限 精度的算术编码, 使其能够在计算机上实现, 其基本原理是将编码的消息表示成实数 0 和 1 之间的一个间隔, 消息越长, 编码表示它的间隔越小, 表示这一间隔所需的二进制位就越 多, 发生概率较大的符号在编码的时候使区间较慢的变化, 编码结果中就产生较少的位数, 整个编码过程采用了以一个单独的浮点数来代替一串输入符号的思想, 避。

15、开了使用一个特 定码字代替一输入符号, 也即霍夫曼编码中比特数必须取整的问题。 相比之下, 算术编码有 更高的效率和优越性, 尤其是当信源中包含的符号比较少时, 比如只有两个符号, 算术编码 明显更有优势, 而霍夫曼编码几乎起不到任何的压缩效果。 0005 通信报文 (后续简称报文) 的使用非常普遍, 比如雷达目标信息、 位置信息、 时间信 息等, 其主要由字符组成。字符是指计算机中使用的字母、 数字和符号等, 其存储需要一个 字节, 具体详见 ASC 码表。随着信息时代的来临, 各种报文的存储呈现海量特性, 为共享、 存储、 分发带来较大压力。比如覆盖整个城市的车辆 (公交车、 出租车) 监。

16、控、 调度系统, 各 说 明 书 CN 102811113 A 4 2/8 页 5 车辆将自身属性 (如位置、 状态) 等通过特定报文格式传输至中心, 其移动特性决定必须通 过无线方式进行通信, 同时, 中心会为各车辆建立历史情况数据库, 数量巨大的车辆信息给 通信、 存储带来不便。 在实际使用中, 为便于观察、 交互, 大量使用了具有字符特征的报文格 式, 比如广泛使用的 NMEA-0183 的报文格式, 其是美国国家海洋电子协会为海用电子设备 制定的标准格式, 目前业已成为 GPS 导航设备统一的标准协议。 0006 目前, 对于字符型报文格式的使用 (如传输、 存储) , 基本上都是未经。

17、压缩直接处 理, 从现有的文献和已公开材料查询, 采用的压缩方案有 : 0007 1. 采用 BCD 码对报文进行压缩 0008 BCD 码亦称二进制码十进制数或二 - 十进制代码, 是一种二进制的数字编码形式, 适用于对 09 这十个数字进行处理, 固定使用 4 位二进制数来表示十个数字。 0009 该方案适用范围有限, 仅适用对数字字符进行压缩, 对于字母等并不适用。 0010 2. 采用扩展 BCD 码对报文进行压缩 0011 将字符集合中所有字符二进制化, 并使用二进制化后的数据代表字符, 以实现压 缩。比如有 100 个字符集合, 对其二进制化, 则每个字符将分配 7 个二进制位。 。

18、0012 该方案是一种典型的等概率的霍夫曼编码方法, 认为各字符是等概率的, 并未考 虑字符概率特征, 存在位浪费, 压缩比有限。 0013 3. 采用霍夫曼编码对报文进行压缩 0014 霍夫曼编码使用变长编码表对源符号进行编码, 其中变长编码表是通过一种评 估源符号出现频率的方法得到的, 出现频率大的符号使用较短的编码, 反之使用较长的编 码。传统的霍夫曼编码是一种静态的编码方法, 其主要通过统计原始数据中各字符出现的 频率, 并由此创建霍夫曼树, 从而对原始数据进行编码, 这种方法在实际应用系统中有很大 局限性, 特别在诸如通信等实时传输、 处理系统中。因此, 在报文压缩上并未得到广泛的应。

19、 用。自适应霍夫曼编码是对上述方法的一种动态编码方法, 已在报文压缩上得到应用, 它 对数据编码的依据是动态变化的霍夫曼树, 即对第 N+1 个字符的编码是根据原始数据中前 N 个字符得到的霍夫曼树来进行的, 每读入一个字符就要调整字符的计数, 并进行霍夫曼树 的更新, 从而确保编码效率最高。 0015 该方案未考虑联合概率, 且由于编码过程中比特数必须取整, 使压缩效率产生折 扣, 造成了输出码流的浪费。 发明内容 0016 发明目的 : 本发明正是基于上述在处理字符型报文格式所遇到的问题, 面向字符 型报文格式, 提出了一种通用无损报文压缩方法, 该方法基于算术编码, 并引入静态频率表 和。

20、自适应频率表的建立, 可有效地实现报文的无损压缩, 改善了报文共享、 存储、 分发等应 用过程中遇到的延时较高、 占用多余带宽、 使用较大存储资源等问题, 使压缩比接近或达到 熵编码理论的最大值。 0017 技术方案 : 一种字符型报文压缩方法, 包括如下步骤 : 0018 假设该字符型报文的字符集合为 A, 其字符个数为 n, 字符概率为 Pi, 则有 0019 ai A 说 明 书 CN 102811113 A 5 3/8 页 6 0020 其中 1 i n 0021 (1) 预处理 0022 在初次使用字符型报文格式进行编码时, 需要初始化频率表 _Adapt_Table, 具体 方式有。

21、两种 : 一是针对报文的字符集合特点, 结合具体使用环境, 分配给 Pi具体值, 从而创 建字符集合的经验值静态频率表 _Exper_Table, 并将其具体值赋给频率表 _Adapt_Table ; 二是创建等概率静态频率表 _EqualPro_Table, 即 0023 0024 并将其赋给频率表 _Adapt_Table。在实际使用过程中, 可根据具体需求来选择初 始化方式 ; 0025 (2) 接收一条报文 0026 假设所述接收到的一条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即 0027 bj A, 其中 1 j m 0028 (3) 读入字符 0029 将。

22、所述接收到的报文 Message 的各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概率为 Pbj; 0030 (4) 算术编码 0031 根据当前的频率表 _Adapt_Table, 并结合当前字符频率 Pbj对该字符进行算术编 码 ; 0032 (5) 判断是否更新频率表 0033 根据实际需求, 在编码过程中, 所述频率表 _Adapt_Table 更新可逐字符进行, 即 对本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单 位进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定 的若干条报文编码结束后再。

23、根据记录情况进行频率表的更新 ; 若需要更新频率表 _Adapt_ Table, 则执行下一步骤 (6) , 否则跳转到步骤 (7) ; 0034 (6) 更新频率表 0035 通过更新字符 bj的频率 Pbj, 进而更新频率表 _Adapt_Table ; 0036 (7) 本条报文编码是否结束 0037 如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否 则执行下一步骤 (8) ; 0038 (8) 判断是否有下一条报文 0039 若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ; 0040 (9) 判断是否更新频率表。

24、 0041 对于采用所述以若干条报文为单位进行更新频率表 _Adapt_Table 方法的情况 下, 在本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否则跳转到步骤 (2) , 读入下一条报文, 继续编码 ; 0042 (10) 更新频率表 0043 使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ; 说 明 书 CN 102811113 A 6 4/8 页 7 0044 (11) 结束 0045 结束本次编码。 0046 所述步骤 (4) 中算术编码, 包括如下步骤 : 0047 假设算术编码所采用的初始编码区间为 0,Max, Max 为区。

25、间最大值, 一般设置为 0xFFFF, 编码过程中区间为Low,High, 区间范围为Range, 其中Low为区间下沿, 初始为0, High 为区间上沿, 初始为 Max, 读入字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小 于该符号的频率的总计。 0048 (41) 初始化 0049 初始化编码区间 0,Max, 建立频率表 ; 0050 (42) 读入字符 bj 0051 将所述报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概率为 Pbj; 0052 (43) 更新区间 0053 根据当前频率表以及 Pbj和 CumPbj,。

26、 更新区间 Low,High, 具体计算公式如下 : 0054 Range High-Low+1 0055 High Low+Range*(CumPbj+Pbj)-1 0056 Low Low+Range*CumPbj 0057 (44) 归一化 0058 检查区间 Low,High 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 Low,High 进行归一化操作 ; 0059 (45) 判断是否更新频率表 0060 若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ; 0061 (46) 更新频率表 0062 更新所述编码字符的频率 Pbj以及相应的累计频率 CumP。

27、bj, 即更新频率表 ; 0063 (47) 判断是否结束 0064 若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。 0065 所述步骤 44 中, 对区间 Low,High 进行归一化操作, 具体分为以下三种情况 : 0066 情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将 次高位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ; 0067 情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 。

28、是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ; 0068 情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。 0069 归一化的目的是防止随着编码的进行, 区间变得越来越窄, 以至编解码出现错误。 0070 依照本节技术方案, 解码是编码的逆过程, 不再赘述。 0071 有益效果 : 本。

29、发明通过实际应用以及论证, 具有以下有益效果 : 0072 (1) 基于有限字符集合报文的特点, 将算术编码应用在其无损压缩上面, 充分发挥 说 明 书 CN 102811113 A 7 5/8 页 8 了算术编码的优点, 相比较 BCD 码、 霍夫曼编码等压缩方式具有更高的压缩比和效率。 0073 (2) 通过使用经验值频率表的建立, 使报文在压缩过程中的起始阶段就能够达到 较好的压缩效果 ; 0074 (3) 引入两种动态更新频率表的方法, 其中, 在编码过程中逐字符进行更新的方法 充分考虑了字符概率问题, 尽可能地增大了报文压缩比 ; 以若干条报文为单位进行更新的 方法更是满足了计算资源。

30、受限的环境 ; 附图说明 0075 图 1 为本发明实施例的流程图 ; 0076 图 2 为本发明实施例中的算术编码的流程图。 具体实施方式 0077 下面结合附图和具体实施例, 进一步阐明本发明, 应理解这些实施例仅用于说明 本发明而不用于限制本发明的范围, 在阅读了本发明之后, 本领域技术人员对本发明的各 种等价形式的修改均落于本申请所附权利要求所限定的范围。 0078 如图 1 所示, 本方案在预处理步骤中完成频率表的初始化, 其通过采用等概率静 态频率表或者经验值静态概率表两种方式完成。 对于频率表的更新给出了一种优化的自适 应更新方法, 具体体现在步骤 (6) 和 (10) , 其采。

31、用两种方式, 一是在编码过程中逐字符进行 更新, 即对本条报文中各个字符进行算术编码后, 均更新频率表。 对频率表的更新会占用一 定的计算量, 若计算资源受限, 第一种方式无法适用。本发明可采用另外一种方式, 即频率 表的更新以若干条报文为单位进行, 对单条报文逐个字符进行算术编码后, 仅记录各个字 符出现的次数, 在达到设定的若干条报文编码结束后再根据记录情况进行频率表的更新。 0079 该方案中涉及到的变量说明如下 : 0080 _Exper_Table : 根据经验值建立起的静态频率表 ; 0081 _EqualPro_Table : 字符集合中各字符概率相等, 即等概率静态频率表 ; 。

32、0082 _Adapt_Table : 编码过程中的自适应频率表。 0083 假设字符型报文中所有可能字符集合为 A, 集合元素个数为 n, 其中, 字符 ai出现 概率为 Pi, 则有 : 0084 ai A 0085 其中 1 i n 0086 本发明采用的技术方案步骤如下, 具体流程图见附图 1 : 0087 (1) 预处理 0088 在初次使用该报文格式进行编码时, 需要初始化频率表 _Adapt_Table。具体方式 有两种, 一是可针对报文的字符集合特点, 结合具体使用环境, 分配给 Pi具体值, 从而创建 字符集合的经验值静态频率表 _Exper_Table, 并将其具体值赋给 。

33、_Adapt_Table ; 二是创建 等概率静态频率表 _EqualPro_Table, 即 0089 说 明 书 CN 102811113 A 8 6/8 页 9 0090 并将其赋给 _Adapt_Table。在实际使用过程中, 可根据具体需求来选择初始化方 式 ; 0091 (2) 接收一条报文 0092 假设该条报文为 Message, 字符序列为 B, 序列元素个数为 m, 即 0093 bj B, 其中 1 j m 0094 (3) 读入字符 0095 将该条报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概率为 Pbj; 0096 (4) 算术编。

34、码 0097 根据当前的频率表, 并结合当前字符频率 Pbj对该字符进行算术编码 ; 0098 (5) 是否更新频率表 0099 根据实际需求, 在编码过程中, 频率表 _Adapt_Table 更新可逐字符进行, 即对本 条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单位进 行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定的若 干条报文编码结束后再根据记录情况进行频率表的更新。 0100 具体步骤为若需要更新频率表 _Adapt_Table, 则执行下一步骤 (6) , 否则跳转到 步骤 (7) ; 0101 (6)。

35、 更新频率表 0102 通过更新字符 bj的频率 Pbj, 进而更新频率表 _Adapt_Table ; 0103 (7) 本条报文编码是否结束 0104 如果本条报文 Message 编码未结束, 则跳转到步骤 (3) , 继续编码下一个字符, 否 则执行下一步骤 (8) ; 0105 (8) 是否有下一条报文 0106 若是, 则执行步骤 (9) , 否则执行步骤 (11) , 即结束本次编码 ; 0107 (9) 是否更新频率表 0108 对于采用上述第二种更新频率表 _Adapt_Table 方法的情况下, 在本条报文 Message 编码结束后, 如果要更新频率表则执行下一步骤, 否。

36、则跳转到步骤 (2) , 读入下一 条报文, 继续编码 ; 0109 (10) 更新频率表 0110 具体为使用所记录的字符出现次数进行频率表 _Adapt_Table 的更新 ; 0111 (11) 结束 0112 结束本次编码。 0113 对于本发明采用的技术方案中的步骤 (4) 算术编码, 其详细过程如下, 且具体流程 图见附图 2 : 0114 假设算术编码所采用的初始编码区间为 0,Max, Max 为区间最大值, 一般设置为 0xFFFF, 编码过程中区间为Low,High, 区间范围为Range, 其中Low为区间下沿, 初始为0, High 为区间上沿, 初始为 Max, 读入。

37、字符为 bj, 其频率为 Pbj, 累计频率为 CumPbj, 即符号值小 于该符号的频率的总计。 0115 (41) 初始化 说 明 书 CN 102811113 A 9 7/8 页 10 0116 初始化编码区间 0,Max, 建立频率表等 ; 0117 (42) 读入字符 bj 0118 将该条报文 Message 各字符逐个读入, 假设读入字符为 bj, 1 j m, 其概率为 Pbj; 0119 (43) 更新区间 0120 根据当前频率表以及 Pbj和 CumPbj, 更新区间 Low,High, 具体计算公式如下 : 0121 Range High-Low+1 0122 High。

38、 Low+Range*(CumPbj+Pbj)-1 0123 Low Low+Range*CumPbj 0124 (44) 归一化 0125 检查区间 Low,High 是否满足继续编码的条件, 如果满足继续编码, 否则对区间 Low,High 进行归一化操作, 具体分为一下三种情况 : 0126 情况一 : 区间上沿最高位是 1, 次高位为 0, 下沿最高位是 0, 次高位是 1, 对之做将 次高位移出操作, 即忽略掉次高位, 并记录下忽略次高位的次数 Case1Num ; 0127 情况二 : 区间上下沿最高位均是 0, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加。

39、到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流 ; 0128 情况三 : 区间上下沿最高位均是 1, 则进行将上下沿左移 1 位, 且上沿加 1 的操作, 并将移出位添加到输出码流, 此后检查 Case1Num 是否为 0, 若不为 0, 则将最高位取反称为 Case1Bit, 并输出 Case1Num 个 Case1Bit 至输出码流。 0129 归一化的目的是防止随着编码的进行 , 区间变得越来越窄 , 以至编解码出现错 误 ; 0130 (45) 是否更新频率表 01。

40、31 若是, 则执行下一步骤 (46) , 否则跳转到步骤 (47) ; 0132 (46) 更新频率表 0133 更新该编码字符的频率 Pbj以及相应的累计频率 CumPbj, 即更新频率表 ; 0134 (47) 是否结束 0135 若是, 则结束此次编码, 否则跳转到步骤 (42) , 继续编码下一字符。 0136 依照本节技术方案, 解码是编码的逆过程, 不再赘述。 0137 下面以定位信息中广泛使用的 NMEA-0183 的格式为例, 对本发明技术方案进行详 细说明, 但是本发明的保护范围不局限于所述实施例。 0138 具体以 NMEA-0183 中表示地理定位信息的报文格式为例, 。

41、并且假设本条报文 Message 为” $GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D” , 报文中各个字段以逗 号隔开, 各字段所代表的具体信息如下 : 0139 字段 0 : $GPGLL, 语句 ID, 表明该语句为 Geographic Position(GLL) 地理定位信 息 ; 0140 字段 1 : 纬度 ddmm.mmmm, 度分格式 (前导位数不足则补 0) ; 0141 字段 2 : 纬度 N(北纬) 或 S(南纬) ; 0142 字段 3 : 经度 dddmm.mmmm, 度分格式 (前导位数不足则补 0) ; 说 明 书。

42、 CN 102811113 A 10 8/8 页 11 0143 字段 4 : 经度 E(东经) 或 W(西经) ; 0144 字段 5 : UTC 时间, hhmmss.sss 格式 ; 0145 字段 6 : 状态, A= 定位, V= 未定位 ; 0146 字段 7 : 校验值。 0147 此报文的具体编码步骤如下 : 0148 (1) 预处理 0149 针对报文字符集合中数字和逗号出现频繁等特点, 结合具体使用环境, 创建字符 集合的经验值静态频率表 _Exper_Table, 并将 _Adapt_Table 初始化为 _Exper_Table ; 0150 (2) 读入字符 0151。

43、 将该条报文 Message 各字符逐个读入 ; 0152 (3) 算术编码 0153 根据当前的频率表, 并结合当前字符频率对该字符进行算术编码 ; 0154 (4) 是否更新频率表 0155 根据实际需求, 在编码过程中, 频率表 _Adapt_Table 的更新可逐字符进行, 即对 本条报文 Message 中各个字符进行算术编码后, 均更新频率表 ; 也可以若干条报文为单位 进行, 即对单条报文逐个字符进行算术编码后, 仅记录各个字符出现的次数, 在达到设定的 若干条报文编码结束后再根据记录情况进行频率表的更新。 0156 具体步骤为若需要更新频率表 _Adapt_Table, 则执行。

44、下一步骤 (5) , 否则跳转到 步骤 (6) ; 0157 (5) 更新频率表 0158 通过更新本次编码字符的频率, 进而更新频率表 _Adapt_Table ; 0159 (6) 本条报文编码是否结束 0160 如果本条报文 Message 编码未结束, 则跳转到步骤 (2) , 继续编码下一个字符, 否 则执行下一步骤 (7) ; 0161 (7) 结束 0162 结束本次编码。 说 明 书 CN 102811113 A 11 1/2 页 12 图 1 说 明 书 附 图 CN 102811113 A 12 2/2 页 13 图 2 说 明 书 附 图 CN 102811113 A 13 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1