本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及無(wú)損數(shù)據(jù)處理方法。
背景技術(shù):
當(dāng)前區(qū)間編碼以及算術(shù)編碼雖然能對(duì)數(shù)據(jù)進(jìn)行一定程度的壓縮,但是其壓縮率并不高。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例的目的在于提供無(wú)損數(shù)據(jù)處理方法,以解決上述問(wèn)題。
第一方面,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理方法,所述方法包括:對(duì)初始編碼空間進(jìn)行空間擴(kuò)展得到擴(kuò)展后的空間,根據(jù)所述字符的靜態(tài)統(tǒng)計(jì)模型,對(duì)擴(kuò)展后的初始編碼空間進(jìn)行劃分,以獲得當(dāng)前待編碼字符對(duì)應(yīng)的編碼空間;對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間;根據(jù)所述字符的統(tǒng)計(jì)模型,對(duì)所述擴(kuò)展后的編碼空間進(jìn)行劃分,以獲得下一待編碼字符對(duì)應(yīng)的編碼空間;將下一待編碼字符作為當(dāng)前待編碼字符,直到所述待編碼數(shù)據(jù)中字符全部編碼完畢,獲得編碼結(jié)果;將所述編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù)作為編碼輸出,所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù)。
第二方面,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理方法,所述方法包括:獲取編碼輸出,所述編碼輸出包括編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù),所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù);根據(jù)初始解碼空間的大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù)獲得當(dāng)前解碼空間,所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù),所述第一系數(shù)為常數(shù)或者根據(jù)函數(shù)關(guān)系式計(jì)算的函數(shù)值,所述符號(hào)的累積頻度是指符號(hào)值小于所述符號(hào)的值的其它符號(hào)的頻度之和;根據(jù)第一統(tǒng)計(jì)參數(shù)、待編碼數(shù)據(jù)長(zhǎng)度、根據(jù)第一系數(shù)的增量函數(shù)關(guān)系得到解碼閾值;將所述編碼結(jié)果與所述解碼閾值進(jìn)行比較,得到解碼輸出;更新當(dāng)前解碼空間,更新解碼閾值,得到更新后的解碼閾值,判斷所述編碼結(jié)果是否大于等于所述更新后的解碼閾值,得出解碼輸出,直到所述第一統(tǒng)計(jì)參數(shù)為零,解碼完成。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,通過(guò)在編碼時(shí)對(duì)編碼空間進(jìn)行擴(kuò)展,來(lái)改變編碼輸出,使得編碼輸出進(jìn)一步被壓縮,壓縮率變大。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說(shuō)明如下。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理終端的方框圖。
圖2是本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)處理方法的流程圖。
圖3是本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)處理方法的部分流程圖。
圖4是本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)處理方法的流程圖。
圖5是本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)處理裝置的功能模塊示意圖。
圖6是本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)處理裝置的功能模塊示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類(lèi)似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。同時(shí),在本發(fā)明的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對(duì)重要性。
如圖1所示,是數(shù)據(jù)處理終端的方框示意圖。所述數(shù)據(jù)處理終端包括數(shù)據(jù)處理裝置、存儲(chǔ)器220、存儲(chǔ)控制器230、處理器240。
所述存儲(chǔ)器220、存儲(chǔ)控制器230、處理器240各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線或信號(hào)線實(shí)現(xiàn)電性連接。所述數(shù)據(jù)處理裝置包括至少一個(gè)可以軟件或固件(firmware)的形式存儲(chǔ)于所述存儲(chǔ)器中或固化在所述服務(wù)器200的操作系統(tǒng)(operating system,OS)中的軟件功能模塊。所述處理器240用于執(zhí)行存儲(chǔ)器220中存儲(chǔ)的可執(zhí)行模塊,例如所述數(shù)據(jù)處理裝置包括的軟件功能模塊或計(jì)算機(jī)程序。
其中,存儲(chǔ)器220可以是,但不限于,隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),只讀存儲(chǔ)器(Read Only Memory,ROM),可編程只讀存儲(chǔ)器(Programmable Read-Only Memory,PROM),可擦除只讀存儲(chǔ)器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲(chǔ)器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲(chǔ)器220用于存儲(chǔ)程序,所述處理器240在接收到執(zhí)行指令后,執(zhí)行所述程序,前述本發(fā)明實(shí)施例任一實(shí)施例揭示的流過(guò)程定義的服務(wù)器所執(zhí)行的方法可以應(yīng)用于處理器中,或者由處理器實(shí)現(xiàn)。
處理器240可能是一種集成電路芯片,具有信號(hào)的處理能力。上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,簡(jiǎn)稱(chēng)CPU)、網(wǎng)絡(luò)處理器(Network Processor,簡(jiǎn)稱(chēng)NP)等;還可以是數(shù)字信號(hào)處理器(DSP)、專(zhuān)用集成電路(ASIC)、現(xiàn)成可編程門(mén)陣列(FPGA)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
圖2示出了本發(fā)明一實(shí)施例提供的一種數(shù)據(jù)處理方法的流程圖,所述方法包括:
步驟S301,對(duì)初始編碼空間進(jìn)行空間擴(kuò)展得到擴(kuò)展后的空間,根據(jù)所述字符的靜態(tài)統(tǒng)計(jì)模型,對(duì)擴(kuò)展后的初始編碼空間進(jìn)行劃分,以獲得當(dāng)前待編碼字符對(duì)應(yīng)的編碼空間;
優(yōu)選的,所述靜態(tài)統(tǒng)計(jì)模型為所述待編碼數(shù)據(jù)中各個(gè)字符出現(xiàn)的頻度的統(tǒng)計(jì)模型。
例如:定義S表示符號(hào)集合;Ls表示S集合符號(hào)個(gè)數(shù),例如待編碼數(shù)據(jù)為010001010010,則s={0,1},Ls=2,假設(shè)靜態(tài)模型為:fk=1,k∈[0,Ls),則:f0=1,f1=1。
可以理解的是,可以把結(jié)束符也作為符號(hào)算進(jìn)所述符號(hào)集合中,即此時(shí)靜態(tài)模型fk=1,k∈[0,Ls),Ls=3,s={0,1,2},其中符號(hào)集合S中的2代表結(jié)束符,在解碼時(shí),可以將解碼出所述結(jié)束符作為標(biāo)志來(lái)判斷解碼是否結(jié)束。
其中,對(duì)初始編碼空間進(jìn)行空間擴(kuò)展得到擴(kuò)展后的空間的實(shí)施方式有多種,例如可以將初始編碼空間的大小乘以第一系數(shù)得到擴(kuò)展后的空間大小,擴(kuò)展后的空間的下限與初始編碼空間的下限相同,擴(kuò)展后的空間的上限為所述擴(kuò)展后的下限加上擴(kuò)展后的空間大小。
步驟S302,對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間;根據(jù)所述字符的統(tǒng)計(jì)模型,對(duì)所述擴(kuò)展后的編碼空間進(jìn)行劃分,以獲得下一待編碼字符對(duì)應(yīng)的編碼空間。
其中,所述對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間的實(shí)施方式有多種,下面簡(jiǎn)單介紹兩種實(shí)施方式,但是,可以理解的是,并不局限于此。
請(qǐng)參閱圖3,第一種實(shí)施方式可以是,所述對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間,包括:
步驟S311,根據(jù)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間的空間大小以及第一系數(shù),得到擴(kuò)展后的編碼空間的空間大小;
其中,所述第一系數(shù)為常數(shù)或者根據(jù)函數(shù)關(guān)系式計(jì)算的函數(shù)值。
例如,假設(shè)所述第一系數(shù)為αn,其中,αn可以為常數(shù),即αn的值不隨劃分區(qū)間的次數(shù)改變,或者αn=f(n),f為一種函數(shù)關(guān)系,即αn的值隨著劃分區(qū)間的次數(shù)改變,假設(shè)αn=1.5*n。
可以理解的是,R′n=Rn*αn,其中R′n表示將n次區(qū)間劃分后得到的區(qū)間進(jìn)行擴(kuò)展后得的的擴(kuò)展后的區(qū)間大小,Rn為表示n次區(qū)間劃分后得到的區(qū)間大小。
假設(shè)αn=1.5,第一次劃分后,若R1=10,R1’=R1*1.5=15,對(duì)于第二次劃分后,若R1=2,R1’=R1*1.5=3。
對(duì)于αn=1.5*n而言,第一次劃分后,若R1=10,R1’=R1*1.5*n=15,對(duì)于第二次劃分后,若R1=2,R1’=R1*1.5*n=6。
例如,當(dāng)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間的空間大小為R′len,第一系數(shù)為αlen,則擴(kuò)展后的編碼空間的空間大小為:R′len=Rlen-1*αlen。
也可以根據(jù)下述公式進(jìn)行實(shí)施:
其中,R′n為劃分n次后的編碼區(qū)間大小,R0為所述初始編碼空間的區(qū)間大小,αi為第一系數(shù),Ls為第二統(tǒng)計(jì)參數(shù),所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù)。
步驟S312,根據(jù)所述初始編碼空間的區(qū)間大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù),獲得所述擴(kuò)展后的編碼空間的下限值,所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù),所述符號(hào)的累積頻度是指符號(hào)值小于所述符號(hào)的值的其它符號(hào)的頻度之和。
作為一種實(shí)施方式,獲得所述擴(kuò)展后的S集合中第一個(gè)符號(hào)編碼空間的下限值可以根據(jù)下述公式得到:
第二個(gè)符號(hào):編碼區(qū)間下限為第一個(gè)符號(hào)區(qū)間下限加上R′n,以此類(lèi)推。
其中,L′n為擴(kuò)展后的編碼空間的下限值,R0為所述初始編碼空間的區(qū)間大小,為所述各個(gè)符號(hào)的累積頻度,Ls為第二統(tǒng)計(jì)參數(shù),αj為第一系數(shù)。
步驟S313,根據(jù)所述擴(kuò)展后的編碼空間的下限以及所述擴(kuò)展后的編碼空間的區(qū)間大小,得的所述擴(kuò)展后的編碼空間的上限。
假設(shè)所述擴(kuò)展后的編碼空間的下限為l′len,所述擴(kuò)展后的編碼空間的區(qū)間大小為R′len,所述擴(kuò)展后的編碼空間的上限H′len=L′len+R′len-1。
作為第二種所述方式,所述對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間,包括:根據(jù)所述初始編碼空間的區(qū)間大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù),獲得所述擴(kuò)展后的編碼空間的下限值以及上限值,所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù),所述符號(hào)的累積頻度是指符號(hào)值小于所述符號(hào)的值的其它符號(hào)的頻度之和。
其中,獲得所述擴(kuò)展后的編碼空間的下限值以及上限值可以根據(jù)下述公式得到:
其中,L′n為擴(kuò)展后的編碼空間的下限值,H′n為擴(kuò)展后的編碼空間的上限值,R0為所述初始編碼空間的區(qū)間大小,為所述各個(gè)符號(hào)的累積頻度,Ls為第二統(tǒng)計(jì)參數(shù),αj為第一系數(shù)。
可以理解的是,第一系數(shù)αn=αn-1時(shí),αn是屬于常數(shù),αn的增量即αn=α。計(jì)算劃分n次后的編碼區(qū)間大小R′n,以及對(duì)應(yīng)的編碼區(qū)間的下限值L′n的公式變化如下:
當(dāng)α′n≠αn時(shí),αn是屬于動(dòng)態(tài)值,αn的增量可增可減,由函數(shù)f約定。
計(jì)算劃分n次后的編碼區(qū)間大小R′n,以及對(duì)應(yīng)的編碼區(qū)間的下限值L′n,上限值H′n,可以直接使用公式:
進(jìn)行運(yùn)算即可。其中,L′n為擴(kuò)展后的編碼空間的下限值,H′n為擴(kuò)展后的編碼空間的上限值,R0為所述初始編碼空間的區(qū)間大小,為所述各個(gè)符號(hào)的累積頻度,Ls為第二統(tǒng)計(jì)參數(shù),αj為第一系數(shù)。
優(yōu)選的,在對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間之后,所述方法還包括:計(jì)算所述擴(kuò)展后的編碼空間的下限和所述擴(kuò)展后的編碼空間的上限,從高位到地位數(shù)值相同的數(shù)值;判斷所述從高位到地位數(shù)值相同的數(shù)值是否為零;如果否,則將所述擴(kuò)展后的編碼空間的下限的最高位作為編碼結(jié)果,并將所述擴(kuò)展后的編碼空間再次進(jìn)行擴(kuò)展,獲得下一待編碼字符對(duì)應(yīng)的編碼空間。如果是,則將所述擴(kuò)展后的編碼空間作為下一待編碼字符對(duì)應(yīng)的編碼空間。
其中,所述將所述擴(kuò)展后的編碼空間再次進(jìn)行擴(kuò)展,包括:將所述擴(kuò)展后的編碼空間的上限以及下限同時(shí)乘以一個(gè)數(shù)值。
其中,在二進(jìn)制中,同乘的數(shù)值m可以取值為2,十進(jìn)制中同乘的數(shù)值m可以取值10,十六進(jìn)制中,同乘的數(shù)值m可以取值16,當(dāng)然,可以理解是,同時(shí)乘以一個(gè)數(shù)值m的取值可以有多種,并不局限于上述實(shí)施例。
步驟S303,將下一待編碼字符作為當(dāng)前待編碼字符,直到所述待編碼數(shù)據(jù)中字符全部編碼完畢,獲得編碼結(jié)果;
其中,所述編碼結(jié)果可以是最后一個(gè)待編碼字符對(duì)應(yīng)的編碼空間內(nèi)的任意一個(gè)值,若最后一個(gè)待編碼字符對(duì)應(yīng)的編碼空間內(nèi)為[L′n,H′n],則編碼結(jié)果V′可以取值為:L′n≤V′<H′n。優(yōu)選的,取區(qū)間中從高位到低位非0數(shù)字最少的。
也可以將所述最后一個(gè)待編碼字符對(duì)應(yīng)的編碼空間的下限作為編碼結(jié)果,即V′=L′n。
步驟S304,將所述編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù)作為編碼輸出,所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù)。
例如:假設(shè)對(duì)符號(hào)序列1010000110010101000100010進(jìn)行編碼,定義S表示符號(hào)集合;Ls表示S集合符號(hào)個(gè)數(shù);那么每個(gè)符號(hào)出現(xiàn)的概率全部是按照進(jìn)行計(jì)算,L當(dāng)前區(qū)間的下限;H當(dāng)前編碼區(qū)間的上限;R為當(dāng)前編碼區(qū)間大小,其中R=H-L;Len表示待壓縮數(shù)據(jù)的總長(zhǎng)度。Rmax在初始編碼空間中是一個(gè)正整數(shù),在算術(shù)編碼中是1。
編碼步驟如下:
首先,初始化相關(guān)參數(shù),由于當(dāng)前的字符串中只有0和1,所以S∈{0,1},那么Ls=2。定義Rmax=100000000000,可以理解的是Rmax取值可以相對(duì)較大,T0=Ls,fk=1,k∈[0,Ls)即f0=1,f1=1,H0=R0=Rmax、L0=0。設(shè)定α0=1.1這里采用靜態(tài)系數(shù),即αn=α0。Len=0(待編碼數(shù)據(jù)長(zhǎng)度),Count=0(第一統(tǒng)計(jì)參數(shù),即所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù))。對(duì)初始編碼空間進(jìn)行擴(kuò)展得到擴(kuò)展后的空間R0=Rmax*α0=110000000000。根據(jù)所述字符的靜態(tài)統(tǒng)計(jì)模型,對(duì)擴(kuò)展后的初始編碼空間進(jìn)行劃分,得到
U′0=[0,54999999999],U′1=[55000000000,110000000000]。
接著,獲取第1個(gè)待編碼字符1。此時(shí)待編碼字符1對(duì)應(yīng)的編碼空間為U′1,,對(duì)待編碼字符1對(duì)應(yīng)的編碼空間為U′1進(jìn)行擴(kuò)展,根據(jù)公式
得R1=30250000000;得到擴(kuò)展后的編碼空間;根據(jù)所述字符的統(tǒng)計(jì)模型,對(duì)所述擴(kuò)展后的編碼空間進(jìn)行劃分后得到
U′0=[55000000000,85249999999],U′1=[85250000000,115500000000]。
并更新統(tǒng)計(jì)值:Count=Count+1,Len=Len+1。
然后獲取第2個(gè)待編碼字符0,同理計(jì)算出R2=16637500000,得到擴(kuò)展后的編碼空間;根據(jù)所述字符的統(tǒng)計(jì)模型,對(duì)所述擴(kuò)展后的編碼空間進(jìn)行劃分后得到U′0=[55000000000,71637499999],U′1=[71637500000,88275000000]。并更新統(tǒng)計(jì)值:Count=Count+0(由于此時(shí)待編碼字符為0,因此count的值不加1),Len=Len+1。
以此類(lèi)推,得到下表:
最后編碼結(jié)果取值V′=730429,當(dāng)αn=α0=1.1時(shí),比起傳統(tǒng)的編碼結(jié)果63118085,少2個(gè)數(shù)值,提高25%的壓縮比。將V′,Count,Len作為編碼輸出。
值得注意的是,對(duì)于第一系數(shù)是根據(jù)函數(shù)關(guān)系式計(jì)算的函數(shù)值,則需要輸出α0和函數(shù)關(guān)系式,或者提前在兩端進(jìn)行約定。
因此,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,通過(guò)在編碼時(shí)對(duì)編碼子空間范圍的改變,來(lái)改變編碼輸出,使得編碼輸出進(jìn)一步被壓縮,壓縮率變大。
圖4示出了本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)處理方法的流程圖,所述方法包括:
步驟S401,獲取編碼輸出,所述編碼輸出包括編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù),所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù);
可以理解的是,所述編碼輸出是與上一實(shí)施例中的編碼輸出相對(duì)應(yīng)的。
步驟S402,根據(jù)初始解碼空間的大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù)獲得當(dāng)前解碼空間,所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù),所述第一系數(shù)為常數(shù)或者根據(jù)函數(shù)關(guān)系式計(jì)算的函數(shù)值,所述符號(hào)的累積頻度是指符號(hào)值小于所述符號(hào)的值的其它符號(hào)的頻度之和;
作為一種實(shí)施方式,所述根據(jù)初始解碼空間的大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù)獲得當(dāng)前解碼空間可以通過(guò)下述公式獲得:
其中,L′n為擴(kuò)展后的S集合中第一個(gè)符號(hào)編碼空間的下限值,H′n為擴(kuò)展后的編碼空間的上限值,R0為所述初始編碼空間的區(qū)間大小,為所述各個(gè)符號(hào)的累積頻度,Ls為第二統(tǒng)計(jì)參數(shù),αj為第一系數(shù)。
步驟S403,根據(jù)第一統(tǒng)計(jì)參數(shù)、待編碼數(shù)據(jù)長(zhǎng)度、根據(jù)第一系數(shù)的增量函數(shù)關(guān)系得到解碼閾值;
可以通過(guò)下述公式獲得所述第一閾值T:
其中,qmax和qmin都是根據(jù)第一統(tǒng)計(jì)參數(shù)、待編碼數(shù)據(jù)長(zhǎng)度獲得。
例如,當(dāng)?shù)谝唤y(tǒng)計(jì)參數(shù)為9,待編碼長(zhǎng)度為25時(shí):
qmax為將9個(gè)1放在25位2進(jìn)制數(shù)的高9位后得到的二進(jìn)制數(shù),即:1111111110000000000000000,
qmin為將9個(gè)1放在25位2進(jìn)制數(shù)的低9位后得到的二進(jìn)制數(shù),即:0000000000000000111111111。
當(dāng)qmax對(duì)應(yīng)1111111110000000000000000和qmin對(duì)應(yīng)于0000000000000000111111111時(shí),那么T就一定會(huì)對(duì)應(yīng)于1000000000000000011111111,其中當(dāng)?shù)谝幌禂?shù)不為1時(shí),qmin、qmax或T可以通過(guò)公式:
計(jì)算得到,公式中的L′n即對(duì)應(yīng)qmin,H′n對(duì)應(yīng)qmax。其中,L′n為擴(kuò)展后的編碼空間的下限值,H′n為擴(kuò)展后的編碼空間的上限值,R0為所述初始編碼空間的區(qū)間大小,為所述各個(gè)符號(hào)的累積頻度,Ls為第二統(tǒng)計(jì)參數(shù),αj為第一系數(shù)。
通過(guò)上述方法,即可得出T對(duì)應(yīng)的值,當(dāng)?shù)谝粋€(gè)解碼出的是1時(shí),接下來(lái)T就對(duì)應(yīng)于1100000000000000001111111的編碼值。
其中,第一系數(shù)函數(shù)關(guān)系為:
y(n)=p(n)p(n+1)…p(Len),n∈[1,Len]
可以根據(jù)第一系數(shù)函數(shù)關(guān)系計(jì)算第二閥值t:
t=T*y(n),
其中y(n)根據(jù)T所對(duì)應(yīng)的序列根據(jù)上述公式計(jì)算出來(lái)的。所以當(dāng)?shù)谝粋€(gè)解碼出的是1時(shí),y(n)對(duì)應(yīng)于1100000000000000001111111。
y(n)既可作用于T,亦可作用于編碼結(jié)果。當(dāng)作用于編碼結(jié)果時(shí)用v′與T進(jìn)行比較。當(dāng)作用于T時(shí),用t與V′進(jìn)行比較,可以理解的是,t或者T都可以作為解碼閾值,當(dāng)將T作為解碼閾值時(shí),對(duì)應(yīng)的編碼結(jié)果為v′,當(dāng)將t作為解碼閾值時(shí),對(duì)應(yīng)的編碼結(jié)果為V′。
步驟S404,將所述編碼結(jié)果與所述解碼閾值進(jìn)行比較,得到解碼輸出;
若所述編碼結(jié)果大于等于所述解碼閾值,則輸出1;否則,輸出0。
步驟S405,更新當(dāng)前解碼空間,更新解碼閾值,得到更新后的解碼閾值,判斷所述編碼結(jié)果是否大于等于所述更新后的解碼閾值,得出解碼輸出,直到所述第一統(tǒng)計(jì)參數(shù)為零,解碼完成。
每次解碼后更新當(dāng)前解碼空間,更新解碼閾值,將已經(jīng)解碼出符號(hào)串作為新Q的上下界,計(jì)算出qmax、qmin和T,根據(jù)第一系數(shù)函數(shù)關(guān)系,得到t或v′,再跟編碼結(jié)果V′進(jìn)行比較得到需要輸出的符號(hào)。
例如:對(duì)接收到的編碼輸出進(jìn)行數(shù)據(jù)處理。
首先:初始化相關(guān)參數(shù),由于當(dāng)前的字符串中只有0和1,所以S∈{0,1},那么Ls=2。定義Rmax=100000000000,可以理解的是Rmax取值可以相對(duì)較大,T0=Ls,fk=1,k∈[0,Ls)即f0=1,f1=1,H0=R0=Rmax、L0=0。設(shè)定α0=1.1這里采用靜態(tài)系數(shù),即αn=α0。Len=0,count=0;由于是α0=1.1,y(n)≈1。所以取y(n)=1,Ty(n)=t或
獲取Count=9(第一統(tǒng)計(jì)參數(shù),即所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù)),Len=25(待編碼數(shù)據(jù)長(zhǎng)度)和編碼結(jié)果V′=730429。
根據(jù)公式:
獲得當(dāng)前解碼空間,t=T=55004691494。將編碼結(jié)果V′與t進(jìn)行比較。此時(shí)V′>550046,所以輸出1;Count=Count-1(只有解碼出符號(hào)1時(shí)才減1),Len=Len-1。
接著,根據(jù)1100000000000000001111111得出t=T=85252570554。V′<852525,輸出0;;Count=Coun-0(只有解碼出符號(hào)1時(shí)才減1),Len=Len-1。
然后,根據(jù)1010000000000000001111111得出t=T=71640070554。V′>716400,輸出符號(hào)1;Count=Count-1(只有解碼出符號(hào)1時(shí)才減1),Len=Len-1。
此時(shí),根據(jù)1011000000000000000111111得出t=T=80789529037。V′<807895,輸出符號(hào)0;
以此類(lèi)推,利用1010000000000000001111111與1010111111100000000000000繼續(xù)解碼。當(dāng)Len=0時(shí)解碼結(jié)束,解碼后的符號(hào)串為1010000110010101000100010,解碼過(guò)程如下表:
因此,本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,通過(guò)對(duì)接收到的編碼輸出進(jìn)行逆向求解,能夠無(wú)損的解出原始數(shù)據(jù),使得經(jīng)過(guò)壓縮的數(shù)據(jù)能夠得無(wú)損還原。
請(qǐng)參閱圖5,圖5是本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)處理裝置的功能模塊示意圖,所述數(shù)據(jù)處理裝置210包括第一處理模塊211,編碼模塊212,計(jì)算模塊213,以及輸出模塊214。
所述第一處理模塊211,用于對(duì)初始編碼空間進(jìn)行空間擴(kuò)展得到擴(kuò)展后的空間,根據(jù)所述字符的靜態(tài)統(tǒng)計(jì)模型,對(duì)擴(kuò)展后的初始編碼空間進(jìn)行劃分,以獲得當(dāng)前待編碼字符對(duì)應(yīng)的編碼空間;
所述編碼模塊212,用于對(duì)所述當(dāng)前編碼字符對(duì)應(yīng)的編碼空間進(jìn)行擴(kuò)展,得到擴(kuò)展后的編碼空間;根據(jù)所述字符的統(tǒng)計(jì)模型,對(duì)所述擴(kuò)展后的編碼空間進(jìn)行劃分,以獲得下一待編碼字符對(duì)應(yīng)的編碼空間;將下一待編碼字符作為當(dāng)前待編碼字符,直到所述待編碼數(shù)據(jù)中字符全部編碼完畢,獲得編碼結(jié)果;
所述輸出模塊213,用于將所述編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù)作為編碼輸出,所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù)。
以上各模塊可以是由軟件代碼實(shí)現(xiàn),此時(shí),上述的各模塊可存儲(chǔ)于數(shù)據(jù)處理終端的存儲(chǔ)器內(nèi)。以上各模塊同樣可以由硬件例如集成電路芯片實(shí)現(xiàn)。
請(qǐng)參閱圖6,圖6是本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)處理裝置的功能模塊示意圖,所述數(shù)據(jù)處理裝置810包括獲取模塊811,第一計(jì)算模塊812,第二計(jì)算模塊813,以及解碼輸出模塊814。
所述獲取模塊811,用于獲取編碼輸出,所述編碼輸出包括編碼結(jié)果、待編碼數(shù)據(jù)長(zhǎng)度以及第一統(tǒng)計(jì)參數(shù),所述第一統(tǒng)計(jì)參數(shù)為所述待編碼數(shù)據(jù)中包含1的個(gè)數(shù);
所述第一計(jì)算模塊812,用于根據(jù)初始解碼空間的大小、所述各個(gè)符號(hào)的累積頻度、第二統(tǒng)計(jì)參數(shù)以及第一系數(shù)獲得當(dāng)前解碼空間,所述第二統(tǒng)計(jì)參數(shù)為待編碼數(shù)據(jù)中包含字符種類(lèi)的個(gè)數(shù),所述第一系數(shù)為常數(shù)或者根據(jù)函數(shù)關(guān)系式計(jì)算的函數(shù)值,所述符號(hào)的累積頻度是指符號(hào)值小于所述符號(hào)的值的其它符號(hào)的頻度之和;
所述第二計(jì)算模塊813,用于根據(jù)第一統(tǒng)計(jì)參數(shù)、待編碼數(shù)據(jù)長(zhǎng)度、根據(jù)第一系數(shù)的增量函數(shù)關(guān)系得到解碼閾值;
所述解碼輸出模塊814,用于將所述編碼結(jié)果與所述解碼閾值進(jìn)行比較,得到解碼輸出;更新當(dāng)前解碼空間,更新解碼閾值,得到更新后的解碼閾值,判斷所述編碼結(jié)果是否大于等于所述更新后的解碼閾值,得出解碼輸出,直到所述第一統(tǒng)計(jì)參數(shù)為零,解碼完成。
以上各模塊可以是由軟件代碼實(shí)現(xiàn),此時(shí),上述的各模塊可存儲(chǔ)于數(shù)據(jù)處理終端的存儲(chǔ)器內(nèi)。以上各模塊同樣可以由硬件例如集成電路芯片實(shí)現(xiàn)。
需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
本發(fā)明實(shí)施例所提供的數(shù)據(jù)處理裝置,其實(shí)現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實(shí)施例相同,為簡(jiǎn)要描述,裝置及系統(tǒng)實(shí)施例部分未提及之處,可參考前述方法實(shí)施例中相應(yīng)內(nèi)容。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的裝置、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一起形成一個(gè)獨(dú)立的部分,也可以是各個(gè)模塊單獨(dú)存在,也可以?xún)蓚€(gè)或兩個(gè)以上模塊集成形成一個(gè)獨(dú)立的部分。
所述功能如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類(lèi)似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。