发明名称 游长缩减的二元序列压缩编码方法
摘要 本发明公开了一种游长缩减的二元序列压缩编码方法,它包括:首先将待压缩文件转换为由0和1组成的二值码序列;再将该二值码序列转换为游长序列,计算游长序列中0游长与1游长的算术平均值;获取0游长与1游长的最大缩减次数;生成游长缩减后的游长子序列及其游长缩减前后的转换关系的二值码表;构造游长子序列经缩减后的游长子序列长度编码表,依次拼接各游长子序列长度编码表,生成游长序列的长度编码表;生成游长转换关系编码表;分别在长度编码表和游长序列转换关系编码表的首部加入文件头数据,生成二值码序列的压缩编码表。该方法能够避免对较短游长重新编码,导致的编码位数增加,提高编解码效率,算法简单,易于实现。
申请公布号 CN102651795B 申请公布日期 2014.10.01
申请号 CN201210148367.9 申请日期 2012.05.15
申请人 上海大学 发明人 高健;饶珺;宋奥;刘万;孙瑞鹏;朱继
分类号 H04N1/41(2006.01)I 主分类号 H04N1/41(2006.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 陆聪明
主权项 一种游长缩减的二元序列压缩编码方法,其特征在于,所述方法是在计算机中依次按以下步骤实现的:步骤(1),将二元序列中的二元分别用数值“0”和“1”表示,二元序列转换为0和1组成的二值码序列;步骤(2),计算步骤(1)所述的二值码序列中全体0游程和全体1游程的游程长度,用游程长度值依次取代二元序列中全体游程后,生成游长序列,其中,0游程对应的游程长度为0游长,1游程对应的游程长度为1游长;步骤(3),分别计算步骤(2)所述游长序列中全体0游程和全体1游程的游程长度算术平均值,分别选取游长序列中0游长与1游长的最大临界游长n;步骤(4),对步骤(2)中所述的游长序列按每组1024个游长单元进行分组,得到游长序列的各个游长子序列,分组后每个游长子序列的单元个数均为1024,最后一个子序列的单元个数为:                                 N=1024+(M%1024)                                    (1)其中,N为最后一个游长子序列的单元个数,M为游长序列总的单元个数,符号“%”表示求余;步骤(5),分别计算步骤(4)所述游长子序列中的全体0游长和全体1游长在临界游长取值为1,2,…,n时的编码位数,n为最大临界游长,确定最佳临界0游长和最佳临界1游长,具体如下:步骤(5‑1)、分别确定游长子序列中全体0游长和全体1游长在临界游长为p时的编码位数,其中1≤p≤n,具体如下:步骤(5‑1‑1)、确定游长子序列中全体0游长在临界游长为p时的编码位数选取游长子序列中游长大于等于p的全体0游长,对选取后的各0游长值加上p后整除2,得到0游长缩减后新的0游长,余数为0或1,余数表示0游长缩减前后的转换关系的一位码元,新的0游长值加1为原0游长在临界游长为p时的编码位数,将上述选取后的全体0游长在临界游长为p时的编码位数相加,其和记为S<sub>0</sub>,并将S<sub>0</sub>与游长子序列中全体0游长小于p的0游长值相加,得到游长子序列中全体0游长在临界游长为p时的编码位数;步骤(5‑1‑2)、确定游长子序列中全体1游长在临界游长为p时的编码位数选取游长子序列中游长大于等于p的全体1游长,对选取后的各1游长值加上p后整除2,得到1游长缩减后新的1游长,余数为0或1,余数表示1游长缩减前后的转换关系的一位码元,新的1游长值加1为原1游长在临界游长为p时的编码位数,将上述选取后的全体1游长在临界游长为p时的编码位数相加,其和记为S<sub>1</sub>,并将S<sub>1</sub>与游长子序列中全体1游长小于p的1游长值相加,得到游长子序列中全体1游长在临界游长为p时的编码位数;步骤(5‑2)、分别确定游长子序列中0游长与1游长的最佳临界游长,具体如下:选取游长子序列中全体0游长在其对应的各临界游长中编码位数最小值,该最小值对应的临界游长为最佳临界0游长;选取游长子序列中全体1游长在其对应的各临界游长中编码位数最小值,该最小值对应的临界游长为最佳临界1游长;步骤(6),按步骤(5‑2)所述的最佳临界0游长和最佳临界1游长,对步骤(4)所述的各个游长子序列利用步骤(5)所述方法进行缩减,生成游长缩减后的游长子序列及其游长缩减前后的转换关系的二值码表,具体如下:步骤(6‑1)、选取游长子序列中游长大于等于最佳临界0游长的全体0游长,对选取后的各0游长加上最佳临界0游长后整除2,得到游长缩减后新的0游长,余数为0或1,余数表示0游长缩减前后的转换关系的一位码元,0游长缩减后的长度值所对应的一串0元与转换关系码元为0游长的压缩编码,小于最佳临界0游长的全体0游长不重新编码;步骤(6‑2)、选取游长子序列中游长大于等于最佳临界1游长的全体1游长,对选取后的各1游长加上最佳临界1游长后整除2,得到游长缩减后新的1游长,余数为0或1,余数表示1 游长缩减前后的转换关系的一位码元,1游长缩减后的长度值所对应的一串1元与转换关系码元为1游长的压缩编码;小于最佳临界1游长的全体1游长不重新编码;步骤(6‑3)、将缩减前后转换关系码元按0游长和1游长交替的方式依次摆放,生成游长子序列缩减前后转换关系二值码表;步骤(7),构造游长子序列经缩减后的游长子序列长度编码表,依次拼接各游长子序列长度编码表,生成步骤(2)所述游长序列的长度编码表,具体如下:对步骤(6)所述的游长缩减后的游长子序列,按0和1交替的方式依次摆放其所对应的一串0元和一串1元,生成游长子序列缩减后的二值码子序列,将二值码子序列加上2个前缀,前缀为游长子序列中全体0游长和全体1游长是否可缩减的状态标记,以及0游长和1游长的最佳临界游长,其中,压缩状态标记用0或1表示,0表示不可缩减,所对应的游长子序列中的全体0游长或全体1游长经缩减后的编码位数大于原游长子序列中全体0游长或全体1游长的编码位数,则不可重新编码,第一个前缀为0,第二个前缀为“空”,“空”表明无需在此前缀处填入数据;压缩状态标记1表示可缩减,第一个前缀为1,第二个前缀为最佳临界游长;将置入前缀后的二值码子序列称为游长子序列的长度编码表,依次将游长子序列的长度编码表拼接起来,生成步骤(2)所述游长序列的长度编码表;步骤(8),依次拼接步骤(6)所述的游长子序列游长缩减前后的转换关系二值码子序列,生成游长转换关系编码表;步骤(9),合并步骤(7)所述游长序列的长度编码表及步骤(8)所述的游长序列转换关系编码表,生成步骤(1)所述二值码序列的压缩编码表。
地址 200444 上海市宝山区上大路99号