基于矢量量化編碼的數據壓縮算法的研究分析
碼字檢索器 (i)定義如式(2.10):
: I C;
(i) = Yi,i=1,2,…,M. (2.10)
矢量量化的模型如下圖2.2所示:
編碼時(shí):對任意一個(gè)輸入的K維矢量X,計算Q(X)的值Yi,通過(guò)傳輸信道發(fā)送碼字Yi的索引i到解碼器端。
解碼時(shí):對輸入的一個(gè)索引號i,查找碼書(shū)中對應的碼字Yi,輸出Yi作為整個(gè)系統對矢量X的壓縮恢復值。
圖2.2矢量量化器結構示意圖
2.3.2 量化器Q(x)相關(guān)問(wèn)題
我們可以看出矢量量化可以等價(jià)于一個(gè)聚類(lèi)問(wèn)題。但如何聚類(lèi)卻有很多種方法。在上文我們說(shuō)當 時(shí),Q(X)= Yi;(i=1 ,2,…,M)。這是用胞腔來(lái)定義Q(X)。反過(guò)來(lái),也可以用Q(X)和碼字Yi來(lái)定義胞腔Ri,如式(2.11)所示:
(2.11)
當然,最初必須有一個(gè)明確的Q{X〕的定義。
如何判斷 昵?通常定義一個(gè)失真測度函數 (實(shí)數域),d (X,Yi)表示用Yi來(lái)代表X時(shí)產(chǎn)生的誤差。我們用它來(lái)判斷一個(gè)矢量X到底屬于那個(gè)胞腔:
當d (X,Y
因此,在這里量化器的主要工作就是利用失真測度函數d進(jìn)行最近鄰碼字收索。有時(shí)候我們也把d(X,Yi)稱(chēng)作X與Yi之NJ的距離。
2.3.3 失真測度函數
我們要求失真測度函數滿(mǎn)足以下兩個(gè)條件:
(1)正定性: 當且僅當 X=Y時(shí)d( X,Y)=0;
(2)對稱(chēng)性: ;
有時(shí)候我們也加上第三個(gè)條件:
(3)三角不等式: ;
失真測度函數通常選擇線(xiàn)性賦范空間中的范數,根據范數的定義,它們都滿(mǎn)足上面三個(gè)條件。在本文中若無(wú)特殊聲明,我們的d(X,Y)就取最常用的2范數的平方,即K維歐幾里德空間中的距離的平方: ,我們把這個(gè)測度又稱(chēng)為平方誤差測度。它雖然不滿(mǎn)足三角不等式但是 卻是滿(mǎn)足全部這三個(gè)條件的。
事實(shí)上,判斷一個(gè)矢量X屬于哪個(gè)胞腔可以有很多種標準,在本文中,我們僅僅依據最近鄰(NN: Nearest Neighbor)準則為判斷標準。利用矢量失真函數d,我們再定義一個(gè)胞腔失真函數:
D: Voronoi Cells R (實(shí)數域);
X為處理矢量。
因為我們通常處理的數據量都是有限的,所以有限個(gè)實(shí)數之和也是有限的,從而D(Ri)是有限的。那么我們系統的總失真就如式(2.12)所示:
(2.12)
有時(shí)為方便起見(jiàn),我們也把Er記為Er(C),C為碼書(shū),把D(Ri)記為D(Ri, Yi), Yi為Ri的代表元。顯而易見(jiàn)的,Er是越小越好。
2.4 矢量量化的關(guān)鍵技術(shù)及技術(shù)指標
2.4.1 矢量量化的關(guān)鍵技術(shù)
矢量量化的三大關(guān)鍵技術(shù)是【8】:碼書(shū)設計、碼字搜索和碼字索引分配。其中前兩項最關(guān)鍵。
1. 碼書(shū)設計
矢量量化的首要問(wèn)題是設計出性能好的碼書(shū)。如果沒(méi)有碼書(shū),那么編碼將成為無(wú)米之炊。假設采用平方誤差測度作為失真測度,訓練矢量數為M,目的是生成含N (N M)個(gè)碼字的碼書(shū),則碼書(shū)設計過(guò)程就是尋求把M個(gè)訓練矢量分成N類(lèi)的一種最佳方案(如:使得均方誤差最小),而把各類(lèi)的質(zhì)心矢量作為碼書(shū)的碼字??梢宰C明在這種條件下各種可能的碼書(shū)個(gè)數為Num C,Num C滿(mǎn)足公式2.13:
(2.13) 其中C為組合數。通過(guò)測試所有碼書(shū)的性能可以得到全局最優(yōu)碼書(shū)。
然而,在N和M比較大的情況下,搜索全部碼書(shū)是根本不可能的。為了克服這個(gè)困難,文獻中各種碼書(shū)設計方法都采取搜索部分碼書(shū)的方法得到局部最優(yōu)或接近全局最優(yōu)的碼書(shū)。所以研究碼書(shū)設計算法的目的就是尋求有效的算法盡可能找到全局最優(yōu)或接近全局最優(yōu)的碼書(shū)以提高碼書(shū)的性能,并且盡可能減少計算復雜度。
2. 碼字搜索
矢量量化碼字搜索算法是指在碼書(shū)已經(jīng)存在的情況下,對于給定的輸入矢量,在碼書(shū)中搜索與輸入矢量之間失真最小的碼字。給定大小為N的碼書(shū)C,如果矢量x與碼字A之間的失真測度為d(x,y),則碼字搜索算法的目的就是找到碼字Y,使得失真測度滿(mǎn)足公式2.14:
(2.14)
如果采用平方誤差測度,對于k維矢量,每次失真計算需要k次乘法,2k一1次加法,從而為了對矢量x進(jìn)行窮盡搜索編碼需要Nk次乘法,N(2k -1)次加法和N-1次比較??梢钥闯?,計算復雜度由碼書(shū)尺寸和矢量維數決定。對于大尺寸碼書(shū)和高維矢量,計算復雜程度將很大。研究碼字搜索算法的主要目的就是尋求快速有效的算法以減少計算復雜程度,并且盡量使得算法易于用硬件實(shí)現。
3. 碼字索引分配
在圖示的矢量量化編碼和解碼系統中,如果信道有噪聲,則信道左端的索引i經(jīng)過(guò)信道傳輸可能輸出索引J而不是索引i,從而將在解碼端引入額外失真。為了減少這種失真,可以對碼字的索引進(jìn)行重新分配。如果書(shū)大小為N,則碼字索引分配方案一共有N!種。碼字索引分配算法就是在N!種碼字索引分配方案中尋求一種最佳的碼字索引分配使由信道噪聲引起的失真最小。然而,當N較大時(shí),測試N!種碼字索引分配方案是不可能的。為了克服這個(gè)困難,各種碼字索引分配方法都采用局部搜索算法,往往只能得到局部最優(yōu)解。所以研究碼字索引分配算法的目的就是尋求有效的算法盡可能找到全局最優(yōu)或接近全局最優(yōu)的碼字索引分配方案以減少由信道噪聲引起的失真,并盡可能減少計算復雜度和搜索時(shí)間。
2.4.2 矢量量化技術(shù)指標
1. 矢量量化壓縮率
從矢量量化器的工作原理我們看出,碼書(shū)確定之后,傳輸或者存儲的壓縮數據只是一系列碼字的索引,這些索引本身并不包含原始數據的任何信息。因此矢量量化的壓縮率很大,其比特率 bit/采樣,也就是說(shuō)壓縮倍數為 B為原始采樣數據所用比特(bit)數。
舉例來(lái)說(shuō),當E=8, M= 256, K=64時(shí),壓縮率r=0.015625 bits/采樣。壓縮倍數為64。這樣的壓縮倍數顯然很可觀(guān)了從壓 縮 率 與壓縮倍數的計算公式我們看出,M一般是2的冪次。再例如,碼書(shū)大小為150,碼字索引要用8bits碼書(shū)大小為256,碼字索引也要用8bits.兩種碼書(shū)大小得到的數據壓縮率相同,但后者壓縮性能顯然更好,所以一般我們用256而非150個(gè)碼字,大小為2a的碼書(shū)又稱(chēng)為q比特碼書(shū)。
2. 信號恢復性能指標
通常信號質(zhì)量有均方誤差(MSE),信噪比(SNR),峰值信噪比(PSNR) 【11】等。在本文的討論中,我們主要是灰度圖像作為測試數據來(lái)源。我們的矢量量化技術(shù)的應用也主要是針對灰度圖像的,因此以L(fǎng)級灰度圖像為例,我們給出個(gè)指標的定義:設一副L級灰度圖像有WXH個(gè)像親,Xij為原始圖像像素值,Yij為恢復圖像像素值,那么
結過(guò)如下公式所示:
(2.15)
(2.16)
(2.17)
第三章 矢量量化的算法研究
3.1 矢量量化碼書(shū)設計算法的研究
3.1.1 經(jīng)典的LBG算法
如前所述,在矢量量化器的構造過(guò)程中,碼本設計是最初的也是最重要的部分,根據各種碼本設計算法的思想和迭代過(guò)程,我們可以將碼本設計問(wèn)題歸結為L(cháng)loyd算法的兩條基本準則【12】:
1. 最佳劃分準則(Optimal Partition)
對于給定的碼本 利用最近鄰條件對訓練矢量集進(jìn)行重新劃分。將每個(gè)訓練矢量映射到與它之間失真最小的碼字,最后形成一組以現有碼本中的碼字為中心的最佳劃分。設訓練矢量集為:
則訓練矢量集的最佳分類(lèi) 滿(mǎn)足公式(3.1):
式中,i,j= 1,2,…,N (3.1)
如果存在D(x,yi )= D (x,yj ), 則將訓練矢量歸入碼字yi的集合。
通常把這種最佳劃分稱(chēng)為Voronoi劃分,對應的子集凡稱(chēng)為Voronoi胞腔。設訓練矢量x為k維的 ,如果用平方誤差測度用來(lái)表征訓練矢量x和碼字yi之間的失真,即:
(3.2)本文引用地址:http://dyxdggzs.com/article/170855.htm
2. 質(zhì)心條件 (CentroidC ondition)
利用由上面步驟得到的訓練矢量劃分集 重新計算它們各自的質(zhì)心,得到新的碼本:
(3.3)
(3.4)
式中, 代表子集Si中訓練矢量的個(gè)數。
各種矢量量化碼本設計算法基本都是上面兩個(gè)步驟的交替迭代的基礎上得到最后的碼本。不難看出,碼本生成過(guò)程中的計算量是隨著(zhù)碼本矢量的維數k和碼本尺寸N的增大而急劇增長(cháng)的,對于需要高維大碼本的矢量量化器來(lái)說(shuō),測試所有可能的碼本來(lái)尋求全局最優(yōu)碼本將是十分困難的。為了克服這個(gè)困難,Linde . Buzo和Gray提出了經(jīng)典的LBG算法。
1980年Linde,Buzo和Gray將Lloyd算法推廣到矢量空間【8】, 算法的步驟簡(jiǎn)單描述如下:
Step 1 :給定初始碼本 ,令迭代次數m=0,平均失真初始值為 ,給定失真下降閾值 ;
Step 2:用碼本 中的碼字作為質(zhì)心,根據最佳劃分原則將訓練矢量集x劃分為對應于每個(gè)碼字的N個(gè)聚類(lèi),
滿(mǎn)足: ;
Step 3:計算本次迭代的平均失真 判斷相對誤差是否滿(mǎn)足 ,若滿(mǎn)足,則停止算法,碼本C(m)就是所求的碼本;
否則,轉Step 4;
Step 4:根據質(zhì)心條件,計算各聚類(lèi)的質(zhì)心,即公式(3.5):
(3.5)
產(chǎn)生新碼本 并置m=m+1,轉Step 2
END:算法結束。
對于 LBG算法來(lái)說(shuō),初始碼本選擇的好壞將直接影響到后面的迭代計算結果,一個(gè)不好的初始碼本會(huì )降低算法的收斂速度和最終碼本的性能。因此在LBG算法中要對初始碼本的選擇作一定的處理。如果初始碼本隨機產(chǎn)生,即直接從訓練序列中隨機選擇N個(gè)訓練矢量作為初始碼字,構成初始碼本,可能會(huì )選到一些非典型的訓練矢量作碼字,因而該胞腔可能含有少數幾個(gè)矢量甚至只有1個(gè)。另外,有可能把某些空間分得過(guò)疏。這可能會(huì )導致碼本中的有些碼字得不到充分利用,設計出來(lái)的碼本性能就可能較差。
3.1.2 MD算法
最大下降(MD)【13】碼本設計算法與經(jīng)典的LBG算法不同,它是一種分裂算法,而沒(méi)有初始碼本。在MD算法中,首先將訓練矢量集 作為一個(gè)原始包腔,然后該包腔被它的最優(yōu)分割超平面分成兩個(gè)子包腔。依此類(lèi)推,每次分裂產(chǎn)生一個(gè)包腔,直到生成最后的N個(gè)包腔,計算它們的質(zhì)心,就可以得到設計的碼本C={y}i=1,2,…,N)。與LBG算法相比,MD算法的計算量少并且所產(chǎn)生的碼本性能好。另一方面,MD算法傾向于分割元素較多的胞腔,而不會(huì )去分割只有一個(gè)元素的胞腔,避免了非典型碼字的形成,提高了碼本的整體性能。在MD算法中,從L個(gè)包腔向(L+ l )個(gè)包腔擴展時(shí),先要找出每個(gè)現有包腔的最優(yōu)分割超平面,并計算它們各自帶來(lái)的失真下降幅度,然后依據失真下降最大準則來(lái)選擇究竟對哪一個(gè)包腔進(jìn)行分裂。這在k維空間里是比較困難的事,需要大量的計算和比較。圖3.2所示為MD算法的分裂過(guò)程示意圖,圖中每一步驟中有陰影的包腔 是當前符合失真下降最大準則的包腔,它被最優(yōu)分割超平面分成下面的兩個(gè)子包腔 和 。從L個(gè)包腔生成(L+ 1)個(gè)包腔的具體實(shí)現描述如下:
設超平面 將某胞腔 分成兩個(gè)非空胞腔如式(3.6)所示:
(3.6)
式中 , , , T表示轉置。
當 中的矢量被質(zhì)心 量化時(shí),胞腔的失真D(Si)定義為公式(3.7): (3.7)
則由分割超平面H,劃分胞腔S,所引起的失真下降可表示為式(3.8):
(3.8)
若采用平方誤差測度,則式(3.8)可以化簡(jiǎn)為式(3.9):
或 (3.9)
式中, 分別為 的元素個(gè)數, 。分別為 的質(zhì)心。
從式(3.9)中可以看出,若胞腔 、 非空,則失真下降函數滿(mǎn)足 。
我們將胞腔Si的最優(yōu)分割超平面 定義為使胞腔 具有最大失真下降 的超平面。MD算法先計算出所有胞腔的最大失真下降值 , ,然后找出最大的最大失真下降值 ,即 ,最后將胞腔Sp分割成兩個(gè)新胞腔。所以,L+l個(gè)胞腔是通過(guò)劃分L個(gè)胞腔中具有最大失真下降的胞腔并保持其余胞腔不變而得到的。值得注意的是,每次分裂包腔時(shí),并不需要重新計算所有包腔的失真函數,而只需找到新增加的兩個(gè)包腔的最優(yōu)分割超平面,計算它們各自的失真函數,再與其它包腔的失真函數值進(jìn)行比較即可找出新的滿(mǎn)足失真下降最大準則的包腔。產(chǎn)生最后的N個(gè)胞腔,一共需計算(2N-3)次最大失真下降函數。
3.1.3 碼書(shū)設計算法比較
LBG算法是一種迭代算法,其迭代操作是標量量化勞埃德迭代操作的直接推廣。LBG算法他具有如下的優(yōu)點(diǎn):
1. 不用初始化計算,可大大減少計算時(shí)間
2. 初始碼字選自訓練序列,無(wú)空胞腔問(wèn)題
LBG算法在具有如上的優(yōu)點(diǎn)的同時(shí)也有一些缺點(diǎn)和不足:
1. 在每次迭代的最佳劃分階段,從碼書(shū)中搜索訓練矢量的最近碼字需要大量的存儲空間和繁瑣的計算;
2. 初始碼書(shū)的選擇影響碼書(shū)訓練的收斂速度和最終碼書(shū)的性能;
碼書(shū)設計的第一個(gè)缺點(diǎn)可采用各種快速碼字搜索算法來(lái)解決,但這些算法無(wú)法改善碼書(shū)的性能,第2個(gè)缺點(diǎn)產(chǎn)生的原因是:LBG算法是一種下降算法,每次迭代總能減少(至少保持不變)平均失真,而且每次迭代通常只能產(chǎn)生碼書(shū)的局部變化,即每次迭代后,與舊碼書(shū)相比,新碼書(shū)不可能有非常大的變化。因此,一旦選定初始碼書(shū),該算法只能得到局部最優(yōu)的碼書(shū),即LBG算法一般不能得到全局最優(yōu)的碼書(shū)。
與LBG算法相比,MD算法的計算量少且所產(chǎn)生的碼書(shū)性能好。另一方面, MD算法傾向于分割元素較多的胞腔,而不會(huì )去分割只有一個(gè)元素的胞腔,而這種情況在LBG算法中卻常常出現。然而,在MD算法中,多維胞腔的最優(yōu)分割超平面的搜索是一個(gè)非常困難的問(wèn)題。為減少計算量,這些算法的搜索范圍被限制在與矢量空間的基本矢量正交的超平面上,這個(gè)矢量空間可由離散余弦變換(DCT)得到。但是,在這種限制條件下,算法常常搜索不到最優(yōu)超平面。
3.2 碼字搜索算法
3.2.1 基于不等式的快速碼字搜索算法
1. 部分失真不等式排除法
部分失真搜索(Partial Distortion Search,PDS)算法【12】是一種較簡(jiǎn)單有效的最近鄰搜索算法。它的基本思想是:在計算某個(gè)碼字與輸入矢量之間失真測度的過(guò)程中,始終判斷累加的部分失真是否已經(jīng)超過(guò)目前的最小失真,如果一旦超出則終止該碼字與輸入矢量之間的失真計算,轉而開(kāi)始計算另一個(gè)碼字與輸入矢量的失真測度。PDS常被用來(lái)與其他快速搜索算法結合起來(lái)運用,來(lái)排除其它快速算法最后無(wú)法排除的碼字。
在編碼過(guò)程中計算前面部分維數的失真距離,若其超出當前最小距離,則排除此碼字為最匹配碼字,否則繼續搜索其它碼字。
據如下(3.10)所示的柯西一許瓦爾茲不等式【14】:
(3.10)
可得一個(gè)不等式判據 若 ,則能保證 ,yi可被排除。因為|yi|可離線(xiàn)計算,所以節省了計算量。
首先判斷 是否成立,若成立,則排除碼字Yi否則,再判斷是否滿(mǎn)足 ,若滿(mǎn)足,yi也可被排除。這縮小了搜索范圍,他們還融入部分距離失真法節省計算量。雙測試法的缺陷在于要求矢量的所有分量都為正值,而圖像變換域編碼中產(chǎn)生的變換系數有正有負,必須對這些系數進(jìn)行正補償,使所有矢量分量均大于零。
2. 整數投影法
整數投影法是一種適用于圖像矢量量化的快速碼字搜索算法。他們?yōu)槊總€(gè)m×m圖像塊 ,定義三種整數投影【14】,如下公式(3.11)(3.12)(3.13)所示:
塊狀投影: (3.11)
垂直投影: (3.12)
水平投影: (3.13)
在這三種投影的基礎上定義了三個(gè)不等式條件,公式(3.14)(3.15)(3.16)所示:
(3.14)
(3.15)
(3.16)
可以證明,只要不滿(mǎn)足上述任何一個(gè)條件,可排除yi是最匹配碼字。
3. 三角不等式法
基于三角不等式d(Y i,yj) d (x ,Yi)+ d (x ,yj)提出三種改進(jìn)算法【14】。第一種算法先計算碼書(shū)中每?jì)蓚€(gè)碼字之間的距離,以當前匹配碼字yi為中心,2hi(h i為輸入矢量與當前匹配碼字之間的歐氏距離)為半徑劃定搜索范圍,即只搜索滿(mǎn)足d(yj,yi) 2hi的碼字yj,j= 1,2,…,N;
第二種算法是將搜索范圍定為滿(mǎn)足:x-hirkrx+hi,
其中rx為輸入矢量的范數,rk為碼字的范數,hi為輸入矢量與當前匹配碼字之間的歐氏距離,此種算法不同于第一種算法,無(wú)須計算碼字之間的距離;
第三種算法取前兩種算法搜索區域的交集作為搜索區域。
這三種算法都涉及如何確定初始匹配碼字的問(wèn)題,一般取范數與輸入矢量范數最相近的碼字。第一、三種算法比第二種算法要多耗費存儲空間來(lái)存儲碼字之間的距離。最小均方誤差編碼算法,取一長(cháng)訓練矢量序列,計算每個(gè)Voronoi區域內的訓練矢量與該區域質(zhì)心矢量(碼字) 的最大距離di,求平方根后得ri,按其升序排列。編碼時(shí),從最小的ri開(kāi)始,排除對任意 ,滿(mǎn)足 .的碼字;那些對所有j,滿(mǎn)足 的碼字,則采用部分失真排除判定法,確定此碼字為最佳匹配碼字或者在以該碼字為開(kāi)始的剩余碼字中搜索最佳匹配碼字。
3.2.2 等均值等方差最近鄰搜索算法
均值等方差最近鄰碼字搜索算法是將均值不等式判據和用方差不等式判據相結合,進(jìn)一步縮小了碼字搜索范圍。k維輸入矢量x的方差定義公式(3.17)【9】為
(3.17)
其中:Mx為輸入矢量x的均值。
等均值等方差最近鄰搜索算法所用到的方差判別準則為:
設碼字 為輸入矢量x的當前最近鄰碼字, ,輸入矢量x和碼字Y,的方差分別為Vx和Vyi,如果公式(3.18)成立,
(3.18)
則有d(x,yi) >d( x,yp),碼字yi,可以被排除是輸入矢量x的最近鄰碼字。對式(3.12)作適當變形,可得公式(3.19)和(3.20)
(3.19)
(3.20)
即碼字Yi的方差滿(mǎn)足以上兩式時(shí),碼字Yi可以被排除是輸入矢量x的最近鄰碼字。
由幾何知識可知,在歐幾里得空間 中以空間中心線(xiàn)L為軸心的超圓柱面上,各點(diǎn)的方差相等,該超圓柱面稱(chēng)為等方差超圓柱面。由式(3.13)和(3.14)可知,等方差判別準則將碼字搜索范圍限制在方差分別為Vmax和V min的兩個(gè)超圓柱面內。則等均值判別準則與等方差判別準則相結合的等均值等方差最近鄰搜索算法將碼字的搜索范圍限制在了如圖3.2所示的陰影部分內。
圖3.1 等均值等方差最近鄰搜索算法搜索范圍二維示意圖
圖3.1 所示是EENNS算法搜索范圍的二維示意圖,圖中以中心線(xiàn)L為軸心的超圓柱面分別是方差為Vmin和Vmax的等方差超圓柱面,與中心線(xiàn)L垂直的超平面分別是均值為Mmax和Mmin的等均值超圓柱面。等均值等方差最近鄰搜索算法將碼字的搜索范圍限制在超圓柱面V1, V2和超平面Ll,L2所夾的范圍內,即圖中的陰影區域。EENNS算法減少了碼字搜索范圍,從而可以提高碼字搜索速度。EENNS算法具體步驟如下:
(A)預處理:計算并存儲碼書(shū)C中的均值和方差,按均值的大小對碼書(shū)進(jìn)行排序。
(B)在線(xiàn)處理:
Step l:計算輸入矢量x的均值Mx和方差Vx,在已排序碼書(shū)中找到均值與Mx 最 接近的碼字 作為輸入矢量X的初始匹配碼字。計算當前最小失真 d min = d (x ,yp )。使集合
Step 2:如果集合G為空,轉Step 7;
Step 3:往返搜索法搜索初始匹配碼字yp兩側的碼字yj;
Step 4:如果碼字滿(mǎn)足 或者 ,則執行
下列步驟的(a)或者(b)。否則,轉步驟5;
(C)如果Myj> Mx,則從集合G中刪除所有碼字yi,ij,轉Step2。
(D)否則,則從集合G中刪除所有碼字yi i>j,轉Step2。
Step 5:判斷碼字Yi的方差是否滿(mǎn)足 或者 如果 滿(mǎn)足, 則從刪除集合G中刪除碼字Yi,否則,轉Step6;
Step 6:用部分失真排除算法搜索碼字Yi,如果d(x, Yi)dmin,. 則更新 p = J,從集合G中刪除碼字Yi轉Step 2;
Step7:確定輸入矢量x的最匹配碼字為Yp。
3.3 碼字索引分配算法
3.3.1 BSA算法
BSA算法是在1990年提出基于二元對稱(chēng)信道模型的碼字索引分配算法【16】。該算法對于任何索引映射函數 ,選擇碼字y,作為輸入矢量x的最近碼字后將產(chǎn)生索引 的傳輸,該過(guò)程與首先將碼書(shū)中的碼字進(jìn)行位置交換等價(jià),即對每一索i,碼字y最終移動(dòng)到碼書(shū)中索引為 的位置。
基于這個(gè)事實(shí),很自然地想到一種最簡(jiǎn)單的碼字索引分配方法:首先在給定碼書(shū)基礎上隨機產(chǎn)生一個(gè)初始碼字排列,然后將所有碼字的排列位置以特定方式進(jìn)行交換,使信道失真不斷減少。因此,這種算法的輸入是一個(gè)碼書(shū),輸出仍是一個(gè)碼書(shū),只不過(guò)碼字存放在不同的位置。這帶來(lái)一個(gè)附加優(yōu)點(diǎn):除了存儲碼書(shū)所需的空間以外,不需要任何額外信息來(lái)詳細描述索引映射函數n,從而不需要信道編碼和信道解碼。
BSA算法的主要思想是通過(guò)不斷交換碼字的位置,使得信道噪聲失真的目標函數場(chǎng)獲得局部最優(yōu)值.隨著(zhù)交換的進(jìn)行 不斷下降,而且索引映射函數 也跟著(zhù)不斷變化。在每次迭代中,碼字的交換對是按一定的順序選擇的。所有的碼字y,都對應一個(gè)函數 ,用來(lái)描述當該碼字的索引(在當前碼書(shū)中)在噪聲信道中傳輸時(shí)可能產(chǎn)生的失真,其定義為公式(3.21):
(3.21)
BSA算法每次按 從大到小的順序對碼字進(jìn)行排序。擁有最大函數值 的碼字被選為首先交換的候選對象。首先進(jìn)行試驗性的交換, 與其他每一個(gè)碼字分別進(jìn)行交換,并計算每次交換后 的下降值。選擇能使 出現最大下降的那一個(gè)碼字與 進(jìn)行真正地交換,然后進(jìn)入下一次迭代。如果不存在這樣的碼字,則對yi作相同的交換試驗。如果每一個(gè)碼字按這種方法與其他碼字進(jìn)行交換后。不再下降,則終止算法,從而獲得一個(gè)局部最優(yōu)的碼字索引分配方案。算法的具體步驟如下:
Step 1:初始化。隨機打亂碼字的排序;
Step 2:整理排序。根據 從大到小的順序對碼字yi進(jìn)行排序。令n=-1;
Step 3:試驗性交換。令n=n+1從j=n+1到N一1,分別計算索引n和索弓!j交換后所能引起的失真減少量,比較這些失真減少量,獲得最大的失真下降量 ;
評論