专利名称::一种对二进制数据进行无损编码压缩的方法
技术领域:
:本发明涉及计算机数据的无损压缩和无损变换分析领域。
背景技术:
:熵的提出有100多年历史,当今的无损压缩技术是建立在1948年香农提出的“信息熵”概念的基础上。从“信息熵”的定义<formula>formulaseeoriginaldocumentpage4</formula>可以看出,它依赖信息出现的频率(或叫“信息量冗余”),针对文本结构中的冗余性以及语言中词的使用频率的统计。但“信息熵”的缺陷也很明显它不能很好的分析和表达数据中的信息内容。
发明内容本发明主要目的在于针对现有技术的不足,提出一种全新的排列编码压缩和编码变换的方法,可以很好的弥补“信息熵”的缺陷,更好的分析和表达数据中的信息内容。本发明由以下部分组成1二进制数据排列分组的方法;2二进制数据排列值和排列数计算的方法;3二进制数据排列编码压缩的方法;4二进制数据多次排列编码的变换方法;5对编码后数据解码的方法。前述二进制数据排列分组的方法实施步骤为步骤101对一段二进制数据扫描,扫描方向可以从左到右,也可以从右到左方向顺序扫描,得出比特位数和比特‘1’(或比特‘0’)的个数,设比特数的长度为N,比特‘1’(或比特‘0’)的个数为X,本方法称此为二进制数据的N:X排列。步骤102二进制数据的N:X排列,有纵向排列和横向排列2种排列方法;任意一段二进制数据不论采用哪种排列方法和扫描方向,在N:X排列中都有特定的排列值。我们列举一段二进制数据的比特数是7,包含比特‘1’的个数是2,排列规则如表1所示表1:N:X(7:2)排列规则<table>tableseeoriginaldocumentpage4</column></row><table><table>tableseeoriginaldocumentpage5</column></row><table>步骤103二进制数据的N:X排列(X为比特‘1或比特‘0’的个数),不论采用哪种排列方法和哪种扫描方向,都存在一个相同的排列数。我们列举1到8比特数的二进制数据的排列数,对应的排列数如表2所示表2:、比特数数据中比特‘ο,的个I数据中比特'1’的个ZIZ<formula>formulaseeoriginaldocumentpage6</formula><table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>注任意二进制数据中“数据中比特‘1,的个数”、“数据中比特‘0’的个数”、“扫描方向从右到左”、“扫描方向从左到右”的组合方式,参照表1和表2做相应推导;在运算的过程中,如果X采用比特‘1’个数的模式,称基1模式,否者为基0模式;除非特别说明,以下我们都以“扫描方向从右到左、基1模式”为叙述方式。表2中7:2的排列数是21,其中每种排列称7:2的排列值。(如表1)前述二进制数据排列值和排列数计算的方法实施步骤为步骤201纵向排列值计算方法<formula>formulaseeoriginaldocumentpage8</formula>N是二进制数据的比特长度;X是二进制数据中包含多少个比特‘1’;ni是扫描起点到当前比特‘1’的比特数;xi是扫描原点到当前比特‘1’所有比特‘1’的个数值;当(ni-1)小于xi时,(ni-1):xi值为0;相应排列数做累加。注X采用基1模式。(如采用基0模式,本点比特‘1’换成比特‘0’,扫描方向不限)步骤202横向排列值计算方法<formula>formulaseeoriginaldocumentpage9</formula>N是二进制数据的比特数;X是二进制数据中包含多少个比特‘1’;ni是扫描比特‘0’到‘1’跳变时剩余的比特数和之前连续比特‘0’之和;xi是扫描比特‘0’到‘1’跳变时剩余的比特‘1’的个数;k在{1,2,..N}中,当前比特‘1’之前的连续比特‘0’个数;玄((《/-幻:0"_-1)当(xi-l)等于0时,1)等于k值;相应排列值做累加;1I注X采用基1模式。(如采用基0模式,本点比特‘1’换成比特‘0’,比特‘0’换成比特‘1’,扫描方向不限)步骤203排列数对称方法ni:xi=ni(ni-xi)步骤204排列数的累加计算方法ni:xi=(ni-1)(xi)+(ni_l)(xi-l)注当(ni-1)小于xi时,(ni-1):xi值为0。步骤205排列数的展开计算方法当ni<=2*xi时ni:xi=(xi(xi_0))*((ni-xi)0)+(xi(xi-l))*((ni-xi)1)…(xi:(xi-(ni-xi)))*((ni-xi):(ni-xi))当ni>=2*xi时ni:xi=((ni-xi):xi)*(xi:0)+((ni-xi):(xi-l))*(xi:1)…((ni-xi):(xi-xi))*(xi:xi)前述二进制数据排列编码压缩的方法实施步骤为步骤301纵向编码任意一段二进制数据N:X的排列都可根据步骤201、203、204、205进行计算,编码结果由排列值、N值、X值三部分组成。步骤302横向编码任意一段二进制数据N:X的排列都可根据步骤202、203、204、205进行计算,编码结果由排列值、N值、X值三部分组成。前述二进制数据多次排列编码的变换方法实施步骤为步骤401对二进制数据进行多次排列编码的变换方法,就是对每次编码的结果进行再次编码,以达到最终编码值为0的目的。而每次记录的X(比特‘1’或比特‘0’)值、编码次数、N值即为变换结果。纵向排列的高位比特‘0’不影响计算结果,所以等位和不等位多次纵向排列编码都能起到变换的目的。前述对编码后数据解码的方法实施步骤为步骤501纵向编码的解码过程解码方向是编码扫描方向的反方向,编码和解码要采用相同的模式进行工作当编码采用基1模式时,解码也必须采用相同的模式进行解码;当解码值大于等于步骤201中的(ni-l):Xi排列数时,当前比特值为‘1’,否者为比特‘0,。步骤502横向编码的解码过程解码方向是编码扫描方向的同方向,编码和解码要采用相同的模式进行工作当编码采用基1模式,解码也必须采用相同的模式进行解码;当解码值大于等于步骤202中的;t((/-幻的排列值时,求出k的最大值,当前(k+1)位比特值为‘1’(如果采用基0模式,则为比特‘0’),之前的k位都是比特‘0’(如果采用基0模式,则为比特‘1’);当解码值小于步骤202中的(ni-o)(xi-1)的排列值时,当前比特位为‘1’(如果采用基0模式,则为比特‘0’)。具体实施例方式1、纵向编码一段二进制数据是32比特,内容是‘00001010100010101010101010100011,,扫描方向从右到左,采用基1模式N=32,X=13;那么A(N,X)=(1-1)1+(2-1)2+(6-1)3+(8-1)4+(10-1)5+(12-1):6+(14-1):7+(16-1):8+(18-1)9+(20-1)10+(24-1):11+(26_1)12+(28-1)13=0+0+10+35+126+462+1716+6435+24310+92378+1352078+5200300+20058300=26736150‘26736150,(十进制)=‘1100101111111011000010110,(二进制)编码结果‘1100101111111011000010110,(25比特),并记录N和X的值。2、横向编码一段二进制数据是7比特,内容是‘1000100’,扫描方向从右到左,采用基1模式N=7,X=2;那么A(N,X)=((7-1)(2-1)+(7-2)(2-1))+3=(6:1+51)+3=6+5+3=14这段二进制数据有2处比特‘0’到‘1’的跳变。第1处k等于2,ni等于7,xi等于2,所以此处做k次排列数的累积;第2处k等于3,ni等于4,xi等于1,由于xi_l等于0,所以此处的排列值等于k;‘14’(十进制)=‘1110’(二进制)编码结果‘1110’(4比特),并记录N和X的值。3、多次排列编码的变换一段二进制数据,二进制值是‘00111000010001100100100101000111,,十进制值是‘944130375’,N=32;根据纵向排列值的计算方法,可以计算出多次排列编码的变换,最终编码值为0。过程如表3所示表3多次排列编码变换<table>tableseeoriginaldocumentpage11</column></row><table>可以证明,任何二进制数据不论是横向编码或纵向编码,都存在多次编码的收敛性(最终编码值为0)。故任何二进制数据都具有变换的特点。4、纵向解码过程假定编码后的一段二进制数据为‘1100101111111011000010110,,等效十进制数‘26736150’,数据的原始比特数是32,内容中有13个比特‘1’。解码过程步骤如表4所示表4:解码过程<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>解码当比特‘1,的当前比N比较当前(ni-l):xi的排列数前值个数(xi)特值<table>tableseeoriginaldocumentpage13</column></row><table>注表4中每当解码值大于等于步骤201中的(ni-1):xi排列数时,“解码当前值”减去“(ni-l):xi的排列数”,“比特‘1,的个数”减1。解码结果=‘00001010100010101010101010100011,,解码正确。5、横向解码过程假定编码后的一段二进制数据为‘1110’,等效十进制数‘14’,数据的原始比特数是7,内容中有2个比特‘1’,采用基1模式。解码过程步骤如表5所示表5解码过程<table>tableseeoriginaldocumentpage14</column></row><table>^等于解I码当前值)~~OOO解码结束注表5中每当求出最大k值后,“解码当前值”减去“f((m'-A:):0·-1)的排列1值”,“比特‘1,的个数”减1,“N”减k。解码结果=‘1000100,,解码正确。权利要求一种对二进制数据进行无损编码压缩的方法,其特征在于,所述方法对任意二进制数据进行排列计算,排列计算结果的比特位数小于原数据本身,再对其排列结果进行重复排列运算,最终排列值计算结果为0,本方法由以下部分组成(1)二进制数据排列分组的方法;(2)二进制数据排列值和排列数计算的方法;(3)二进制数据排列编码压缩的方法;(4)二进制数据多次排列编码的变换方法;(5)对编码后数据解码的方法。2.根据权利要求1所述的一种对二进制数据进行无损编码压缩的方法,其特征在于所述的二进制数据排列分组的方法实施步骤为步骤101对一段二进制数据扫描,扫描方向可以从左到右,也可以从右到左方向顺序扫描,得出比特位数和比特‘1’(或比特‘0’)的个数,设比特数的长度为N,比特‘1’(或比特‘0’)的个数为X,本方法称此排列为二进制数据的N:X排列;步骤102二进制数据的N:X排列,有纵向排列和横向排列2种排列方法;任意一段二进制数据不论采用哪种排列方法和扫描方向,在N:X排列中都有特定的排列值;步骤103二进制数据的N:X排列(X为比特‘1或比特‘0’的个数),不论采用哪种排列方法和哪种扫描方向,都存在一个相同的排列数。在运算的过程中,如果X采用比特‘1’个数的模式,称基1模式,否者为基0模式。3.根据权利要求1所述的一种对二进制数据进行无损编码压缩的方法,其特征在于所述的二进制数据排列值和排列数计算的方法实施步骤为步骤201纵向排列值计算方法<formula>formulaseeoriginaldocumentpage2</formula>N是二进制数据的比特长度;X是二进制数据中包含多少个比特‘1’;ni是扫描起点到当前比特‘1’的比特数;xi是扫描原点到当前比特‘1’所有比特‘1’的个数值;当(ni-1)小于xi时,(ni-Ι)xi值为0;相应排列数做累加;注X采用基1模式(如采用基0模式,本点比特‘1’换成比特‘0’,扫描方向不限)步骤202:横向排列值计算方法<formula>formulaseeoriginaldocumentpage2</formula>N是二进制数据的比特数;X是二进制数据中包含多少个比特‘1’;ni是扫描比特‘0’到‘1’跳变时剩余的比特数和之前连续比特‘0’之和;xi是扫描比特‘0’到‘1’跳变时剩余的比特‘1’的个数;k在{1,2,..N}中,当前比特‘1’之前的连续比特‘0’个数;<formula>formulaseeoriginaldocumentpage2</formula>等于0时<formula>formulaseeoriginaldocumentpage2</formula>等于k值;相应排列值做累加;11注x采用基1模式(如采用基0模式,本点比特‘1’换成比特‘0’,比特‘0’换成比特‘1’,扫描方向不限)步骤203排列数对称方法<formula>formulaseeoriginaldocumentpage2</formula>步骤204排列数的累加计算方法ni:xi=(ni-1)(xi)+(ni-l)(xi-1);注当(ni-1)小于xi时,(ni-1):xi值为0步骤205排列数的展幵计算方法当ni<=2*xi时ni:xi=(xi(xi-0))*((ni-xi):0)+(xi:(xi-1))*((ni-xi):1)...(xi:(xi-(ni-xi)))*((ni-xi):(ni-xi));当ni>=2*xi时ni:xi=((ni-xi):xi);!<(xi:0)+((ni-xi):(xi-1))*(xi:1)...((ni-xi):(xi-xi))*(xi:xi)。4.根据权利要求1所述的一种对二进制数据进行无损编码压缩的方法,其特征在于所述的二进制数据排列编码压缩的方法实施步骤为步骤301纵向编码任意一段二进制数据N:X的排列都可根据步骤201、203、204、205进行计算,编码结果由排列值、N值、X值三部分组成;步骤302横向编码任意一段二进制数据N:X的排列都可根据步骤202、203、204、205进行计算,编码结果由排列值、N值、X值三部分组成。5.根据权利要求1所述的一种对二进制数据进行无损编码压缩的方法,其特征在于所述的二进制数据多次编码的变换方法实施步骤为步骤401对二进制数据进行多次排列编码的变换方法,就是对每次编码的结果进行再次编码,以达到最终编码值为0的目的。而每次记录的X(比特‘1’或比特‘0’)值、编码次数、N值即为变换结果。纵向排列的高位比特‘0’不影响计算结果,所以等位和不等位多次纵向排列编码都能起到变换的目的。6.根据权利要求1所述的一种对二进制数据进行无损编码压缩的方法,其特征在于所述的对编码后数据解码的方法的实施步骤为步骤501纵向编码的解码过程解码方向是编码扫描方向的反方向,编码和解码要采用相同的模式进行工作当编码采用基1模式时,解码也必须采用相同的模式进行解码;当解码值大于等于步骤201中的(ni-l):Xi排列数时,当前比特值为‘1’,否者为比特‘0’;步骤502横向编码的解码过程解码方向是编码扫描方向的同方向,编码和解码要采用相同的模式进行工作当编码采用基1模式,解码也必须采用相同的模式进行解码;当解码值大于等于步骤202中的<formula>formulaseeoriginaldocumentpage3</formula>的排列值时,求出k的最大值,当前(k+1)位比特值为‘1’(如果采用基0模式,则为比特‘0’),之前的k位都是比特‘0’(如果采用基0模式,则为比特‘1’);当解码值小于步骤202中的(ni-o)(xi-1)的排列值时,当前比特位为‘1,(如果采用基0模式,则为比特‘0’)。全文摘要本发明涉及计算机数据的无损压缩和无损变换分析领域,是一种对二进制数据进行无损编码压缩的方法。这种全新方法将超越现今的压缩方法,它将是信息加工领域的一次革新。本方法是通过对二进制数据进行排列,对相应的“0”和“1”进行排列运算,计算出二进制数据的排列值,这个排列值和比特‘1’的个数(或比特‘0’的个数)就是压缩结果,对排列值再次进行排列编码运算,最终的编码结果值为0,表现为任意值数据进行多次排列编码后的收敛性。本发明适用于数据压缩,数据变换,数据加密,视频和音频中的无损编码。文档编号H03M7/30GK101807924SQ20101012647公开日2010年8月18日申请日期2010年3月17日优先权日2010年3月17日发明者黄斐芝申请人:黄斐芝