專利名稱:信號處理方法以及相應(yīng)的編碼方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及數(shù)據(jù)壓縮領(lǐng)域,以及更具體地,涉及一種處理數(shù)字信號以減少用于表示它們的數(shù)據(jù)量的方法。
本發(fā)明還涉及一種與所述信號處理方法相結(jié)合的數(shù)字信號編碼的方法,并且涉及一種相應(yīng)的編碼裝置。
背景技術(shù):
可變長度編碼,如在美國專利4,316,222文檔中所描述的可變長度編碼,被用于如視頻編碼的許多領(lǐng)域,以便對那些具有不等出現(xiàn)概率的符號進(jìn)行數(shù)字編碼出現(xiàn)頻率高的字符被指配以短的二進(jìn)制碼字,而那些出現(xiàn)頻率低的字符被指配以長的碼字。但是,這些編碼因?qū)χT如倒置、刪除、插入等錯誤非常敏感的缺點而遭受損害,這些錯誤的結(jié)果是導(dǎo)致同步丟失(自身導(dǎo)致一種錯誤狀態(tài)),而同步丟失導(dǎo)致在解碼比特流中擴(kuò)大的錯誤。當(dāng)繼續(xù)傳送時,許多字實際上可能被錯誤地解碼。
誤差距離是指一個解碼器能夠多快地從錯誤狀態(tài)中恢復(fù)同步,即直到重新同步之前被解碼的平均符號數(shù)ES=Σk=IPCkerr×Nk---(1)]]>其中I是碼字索引的集合, 是錯誤符號為Ck的概率,以及Nk是當(dāng)被破壞的符號為Ck時,直到同步之前要被解碼的平均符號數(shù)。對于一個較好地匹配于源統(tǒng)計的編碼,碼字Ck的概率可以由式PCk=2-lk]]>來近似,其中l(wèi)k是Ck的長度,并且錯誤符號為Ck的概率可以由式PCkerr=2-lk×(lk/l)]]>來近似,其中l(wèi)是該編碼的平均長度。這樣ES的表達(dá)式變?yōu)镋S=Σk∈I2-lk×lkl×Nk---(2)]]>根據(jù)所述表達(dá)式,最可能的(most probable)符號對ES有較大的影響,且因此而將使它們的貢獻(xiàn)最小化。為了這個目的,定義下列可變長度編碼族F(表達(dá)式(3))
其中1i和0i表示長度為i的全1串和全0串,而D和K是滿足K≤D的任意整數(shù)(
圖1給出了這樣一個(D,K)=(4,3)的快速同步編碼樹結(jié)構(gòu)的例子,其中黑色圓圈對應(yīng)于碼字而白色圓圈對應(yīng)于錯誤狀態(tài))。假定D和K充分大,則最可能(MP)的碼字,即最短的碼字,屬于族F的子集CMPCMP={1i0j1}i∈
j∈[1,D-1](4)在這些碼字上,可能有幾種類型的錯誤狀況(原始的碼字被轉(zhuǎn)換成一個有效碼字、兩個有效碼字的級聯(lián)、一個錯誤狀態(tài)或者一個有效碼字和一個錯誤狀態(tài)的級聯(lián))。考慮到從由一個錯誤碼字Ck造成的錯誤狀態(tài)ESk中恢復(fù)還依賴于跟隨在該錯誤狀態(tài)之后的碼字Ch,那么可以看到對于任意錯誤狀態(tài)例如(lK+lh<D且Ch≠lk),作為結(jié)果的近似誤差距離ES是有界限的(假定D和K足夠大),并且同步總是在對Ch解碼后恢復(fù)。
然而,盡管具有這種恢復(fù)性能,但這種結(jié)構(gòu)仍遠(yuǎn)非最優(yōu)平均長度而且沒有達(dá)到全部可能的壓縮,且因此它不能被應(yīng)用到任何給定的源。
發(fā)明概述因此本發(fā)明的一個目的就是提出一種處理方法,在該方法中定義碼字組的操作避免了這些局限性。
為此目的,本發(fā)明涉及一種處理數(shù)字信號以減少用于表示所述數(shù)字信號的數(shù)據(jù)量的方法以及借助一個可變長度編碼步驟形成一組碼字,使得數(shù)字信號的較為頻繁出現(xiàn)的值由較短碼長來表示,而那些以較低頻率出現(xiàn)的值由較長碼長來表示,所述可變長度編碼步驟包括一個定義子步驟,以產(chǎn)生所述碼字組,并且其中所用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且通過執(zhí)行以下步驟來構(gòu)造該編碼(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對于所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);
lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù); =在霍夫曼編碼中長度為lmax的碼字個數(shù);(b)對從lmax開始的每一個長度lcur,如果nlcur′≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定(anchor)到它(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度碼字來找到一個合適的前綴。
本發(fā)明的另一個目的是提出一種并入所述處理方法的數(shù)字信號編碼方法。
為此目的,本發(fā)明涉及一種數(shù)字信號編碼的方法,該方法至少包括以下步驟對所述的數(shù)字信號應(yīng)用一次正交變換以產(chǎn)生多個系數(shù),量化所述系數(shù)并且借助一個可變長度編碼步驟對量化后的系數(shù)編碼,其中,那些較為頻繁地出現(xiàn)的值由較短碼長來表示,而那些以較低頻率出現(xiàn)的值由較長碼長來表示,所述可變長度編碼步驟包括一個定義子步驟,以產(chǎn)生與所述數(shù)字信號相對應(yīng)的一組碼字,并且其中所使用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且所述編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對于所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù) =在霍夫曼編碼中長度為lmax的碼字個數(shù);(b)對從lmax開始的被稱為lcur的每一個長度,如果nlcur′≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度基本分支錨定到它(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度碼字來找到一個合適的前綴。
本發(fā)明還有一個目的是提出一種對應(yīng)于所述編碼方法的編碼裝置。
為此目的,本發(fā)明涉及一種用于對數(shù)字信號編碼的裝置,所述裝置包含至少一個被應(yīng)用于所述的輸入數(shù)字信號以產(chǎn)生多個系數(shù)的正交變換模塊、一個被耦合到所述的變換模塊以量化所述多個系數(shù)的量化器、以及一個被耦合到所述量化器以依照一種可變長度編碼算法對所述多個量化后的系數(shù)進(jìn)行編碼并且產(chǎn)生編碼數(shù)據(jù)比特流的可變長度編碼器,在所述系數(shù)編碼操作中,那些較為頻繁地出現(xiàn)的值由較短碼長來表示,而那些以較低的頻率出現(xiàn)的值由較長碼長來表示,所述系數(shù)編碼操作包括一個定義子步驟,以產(chǎn)生對應(yīng)于所述數(shù)字信號的一組碼字,并且在其中所使用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且所述編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù); =在霍夫曼編碼中長度為lmax的碼字個數(shù);(b)對從lmax開始的每一個長度lcur,如果nlcur′≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到它;(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴。
所提出的這種關(guān)于新的、一般的可變長度編碼樹結(jié)構(gòu)的原理,保留了霍夫曼編碼的最佳距離分布,同時也提供了對誤差距離的明顯改進(jìn),所述原理和引用文件中的解決方案的表現(xiàn)一樣好,但復(fù)雜性要小很多,所述原理允許對短的和較長的編碼都運用依照本發(fā)明的算法,比如舉例而言,被用在H.263視頻編碼器中的編碼。
附圖簡述現(xiàn)在本發(fā)明將參照附圖以更詳盡的方式加以描述,在附圖中圖1顯示了一種快速同步碼的樹結(jié)構(gòu)的一個例子;
圖2給出了根據(jù)本發(fā)明的一個同步優(yōu)化算法的流程圖;圖3是一個說明了根據(jù)本發(fā)明的解決方案與現(xiàn)有技術(shù)解決方案之間的對比的表格。
發(fā)明詳述由于對可變長度編碼族F而言,在上文中指出的根據(jù)現(xiàn)有技術(shù)的結(jié)構(gòu)的局限性來自于這一事實,即此編碼是深度同樣為D的K個基本分支的重復(fù)(圖1中虛線所示),因此本發(fā)明的主要思想是構(gòu)建多個碼,其中不同分支的大小可能變化。令L=(ni)i=1,2,...,lmax]]>為二進(jìn)制霍夫曼編碼的長度分布,其中ni指示相應(yīng)的碼長為i的碼字的個數(shù),而lmax指示最大的碼字長度,以及(通過構(gòu)造)使nlmax為偶數(shù)。于是由圖2中的流程圖給出的算法產(chǎn)生一個具有長度分布為L′=(ni′)i=1,2...,lmax]]>的編碼,該長度分布在執(zhí)行以下主步驟后等同于L-創(chuàng)建一個同步樹,帶有對于每個基本分支遞減的深度,(最初,使初始化參數(shù)為D=lmax,K=nlmax/2]]>而當(dāng)前的l=lcur=lmax),以確保nlmax′=nlmax]]>(圖2的上面部分)-對從lmax開始的每一個長度lcur,如果nlcur′≠nlcurr,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到該碼字(在圖2中,左邊的循環(huán)L1);-如果1k不能被用作前綴(或者因為lcur太小,或者因為使用1k會不可挽回地耗盡當(dāng)前的長度分布),則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴(在圖2中,右邊的循環(huán)L2,其中l(wèi)free,如圖2中所示,指示先前在循環(huán)L1中定義的第一個索引{i|ni-n′i|<0})。
本發(fā)明還涉及一種數(shù)字信號編碼的方法,該方法結(jié)合上文所描述的處理方法以減少表示輸入數(shù)字信號的數(shù)據(jù)量,所述方法允許通過一個可變長度編碼步驟來產(chǎn)生一組碼字,以便使那些較為頻繁地出現(xiàn)的值由較短的碼長來表示,而那些以較低的頻率出現(xiàn)的值由較長的碼長來表示,所述可變長度編碼步驟包括一個定義子步驟來產(chǎn)生該組碼字,并且在其中所使用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且所述編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù); =在霍夫曼編碼中長度為lmax的碼字個數(shù);(b)對從lmax開始的每一個長度lcur,如果nlcur′≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到它;(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴。
本發(fā)明還涉及相應(yīng)的編碼裝置。當(dāng)實現(xiàn)所述發(fā)明時得到的結(jié)果在圖3中對于兩種參考編碼給出,所述的兩種參考編碼是由Y.Takishima等人在發(fā)表于IEEE Transaction on Communication(電氣和電子工程師協(xié)會通信學(xué)報)第42卷,N°2/3/4,1994年2月/3月/4月,第783-792頁的文獻(xiàn)“Error states and synchronization recovery for variablelength codes(可變長度編碼的錯誤狀態(tài)和同步恢復(fù))”中提出的,即,用于運動矢量的編碼(所述文獻(xiàn)的表格VIII)和英語字母表。從圖3的表格中可以看出,在兩種情況下ES的值看起來彼此非常接近,所提出的編碼和那些在所述文獻(xiàn)中得到的編碼表現(xiàn)得一樣好,但所提出的編碼以小得多的復(fù)雜性獲得,這是因為根據(jù)本發(fā)明的算法允許獲得有限次數(shù)的迭代(相對于所述文獻(xiàn)而言,在所述文獻(xiàn)中所描述的算法在更大數(shù)量的分支上進(jìn)行處理)。
所提出的算法甚至如此簡單,以至于它可以被手工應(yīng)用到相對短的編碼上,在那里只需三次(算法的)迭代就可以獲得該快速同步結(jié)構(gòu),或者該算法也可以應(yīng)用到較長的編碼上,例如用在H.263視頻編碼器中對DCT系數(shù)進(jìn)行編碼的206個符號的可變長度編碼,對于該編碼,當(dāng)使用本發(fā)明時,對同樣的平均長度而言,其誤差距離比原先的編碼要小得多(這就意味著采用根據(jù)本發(fā)明的編碼,則在統(tǒng)計上解碼器將在現(xiàn)有的事例之前重新同步一個符號,并且不會犧牲編碼速率)。
權(quán)利要求
1.一種處理數(shù)字信號以減少用于表示所述數(shù)字信號的數(shù)據(jù)量的方法,該方法通過一個可變長度編碼步驟形成一組碼字,使得較為頻繁地出現(xiàn)的數(shù)字信號的值由較短的碼長來表示,而那些以較低的頻率出現(xiàn)的值由較長的碼長來表示,所述可變長度編碼步驟包括一個定義子步驟來產(chǎn)生該組碼字,并且其中使用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且所述編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對于所述樹的每個基本分支的遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù);nlmax=在霍夫曼編碼中長度為lmax的碼字的個數(shù);(b)對從lmax開始的每一個長度lcur,如果n′lcur≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到該碼字;(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴。
2.一種對數(shù)字信號進(jìn)行編碼的方法,該方法至少包括以下步驟對所述數(shù)字信號應(yīng)用一次正交變換以產(chǎn)生多個系數(shù),量化所述系數(shù)并且通過一個可變長度編碼步驟對被量化后的系數(shù)進(jìn)行編碼,其中,那些較為頻繁地出現(xiàn)的值由較短的碼長來表示,而那些以較低的頻率出現(xiàn)的值由較長的碼長來表示,所述可變長度編碼步驟包括一個定義子步驟來產(chǎn)生與所述數(shù)字信號相對應(yīng)的一組碼字,并且其中所用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且該編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù);nlmax=在霍夫曼編碼中長度為lmax的碼字的個數(shù);(b)對從lmax開始的被稱為lcur的每一個長度,如果n′lcur≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到該碼字;(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴。
3.一種用于對數(shù)字信號編碼的裝置,所述裝置包含至少一個被應(yīng)用于所述輸入數(shù)字信號以產(chǎn)生多個系數(shù)的正交變換模塊、一個被耦合到所述變換模塊以量化所述多個系數(shù)的量化器和一個被耦合到所述量化器的可變長度編碼器,該可變長度編碼器依照一可變長度編碼算法來對所述多個量化后的系數(shù)進(jìn)行編碼并且產(chǎn)生一個編碼的數(shù)據(jù)比特流,在所述系數(shù)編碼操作中,較為頻繁地出現(xiàn)的值由較短的碼長來表示,而以較低的頻率出現(xiàn)的值由較長的碼長來表示,該系數(shù)編碼操作包括一個定義子步驟以產(chǎn)生對應(yīng)于所述數(shù)字信號的一組碼字并且其中所用的編碼是用與二進(jìn)制霍夫曼編碼分布L=(ni)[i=1,2,…,lmax]相同的長度分布L′=(n′i)[i=1,2,…,lmax]來構(gòu)建的,ni是長度為i的碼字的個數(shù),并且該編碼是通過執(zhí)行以下步驟來構(gòu)造的(a)創(chuàng)建一個該編碼的同步樹結(jié)構(gòu),帶有對所述樹的每個基本分支遞減的深度,使初始化參數(shù)為D=lmax,K=nlmax/2,]]>而當(dāng)前的l=lcur=lmax,所述記號為D=表示全0串的最大長度的任意整數(shù);lmax=最大的碼字長度;K=表示全1串的最大長度的任意整數(shù);nlmax=在霍夫曼編碼中長度為lmax的碼字的個數(shù);(b)對從lmax開始的每一個長度lcur,如果n′lcur≠nlcur,]]>則使用碼字1k作為前綴并且將深度為D′=lcur-K的最大長度的基本分支錨定到該碼字;(c)如果1k不能被用作前綴,則通過選擇超出期望分布的最小長度的碼字來找到一個合適的前綴。
全文摘要
本發(fā)明涉及一種定義新的用于可變長度編碼算法的碼字組的方法,并且涉及一種使用這樣的編碼的數(shù)據(jù)編碼方法。所述編碼方法包含至少以下步驟對所述數(shù)據(jù)應(yīng)用變換并且運用可變長度編碼算法對所得到的系數(shù)進(jìn)行編碼。在所述算法中使用的編碼是通過與二進(jìn)制霍夫曼編碼分布相同的長度分布來構(gòu)建的,并且是通過執(zhí)行如下的具體步驟來構(gòu)造的(a)創(chuàng)建該編碼的一個同步樹結(jié)構(gòu),帶有對于每個基本分支是遞減的深度,使初始化參數(shù)為D=l
文檔編號G06T9/00GK1698270SQ02823512
公開日2005年11月16日 申請日期2002年11月14日 優(yōu)先權(quán)日2001年11月27日
發(fā)明者C·拉米, S·查博赫 申請人:皇家飛利浦電子股份有限公司