新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于矢量量化編碼的數(shù)據(jù)壓縮算法的研究分析

基于矢量量化編碼的數(shù)據(jù)壓縮算法的研究分析

作者: 時(shí)間:2012-09-14 來(lái)源:網(wǎng)絡(luò) 收藏

碼字檢索器 (i)定義如式(2.10):
: I C;
(i) = Yi,i=1,2,…,M. (2.10)
的模型如下圖2.2所示:
時(shí):對(duì)任意一個(gè)輸入的K維X,計(jì)算Q(X)的值Yi,通過(guò)傳輸信道發(fā)送碼字Yi的索引i到解碼器端。
解碼時(shí):對(duì)輸入的一個(gè)索引號(hào)i,查找碼書(shū)中對(duì)應(yīng)的碼字Yi,輸出Yi作為整個(gè)系統(tǒng)對(duì)X的恢復(fù)值。
圖2.2矢量器結(jié)構(gòu)示意圖
2.3.2 器Q(x)相關(guān)問(wèn)題
我們可以看出矢量量化可以等價(jià)于一個(gè)聚類(lèi)問(wèn)題。但如何聚類(lèi)卻有很多種方法。在上文我們說(shuō)當(dāng) 時(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)
當(dāng)然,最初必須有一個(gè)明確的Q{X〕的定義。
如何判斷 昵?通常定義一個(gè)失真測(cè)度函數(shù) (實(shí)數(shù)域),d (X,Yi)表示用Yi來(lái)代表X時(shí)產(chǎn)生的誤差。我們用它來(lái)判斷一個(gè)矢量X到底屬于那個(gè)胞腔:
當(dāng)d (X,Y
因此,在這里量化器的主要工作就是利用失真測(cè)度函數(shù)d進(jìn)行最近鄰碼字收索。有時(shí)候我們也把d(X,Yi)稱(chēng)作X與Yi之NJ的距離。
2.3.3 失真測(cè)度函數(shù)
我們要求失真測(cè)度函數(shù)滿(mǎn)足以下兩個(gè)條件:
(1)正定性: 當(dāng)且僅當(dāng) X=Y時(shí)d( X,Y)=0;
(2)對(duì)稱(chēng)性: ;
有時(shí)候我們也加上第三個(gè)條件:
(3)三角不等式: ;
失真測(cè)度函數(shù)通常選擇線性賦范空間中的范數(shù),根據(jù)范數(shù)的定義,它們都滿(mǎn)足上面三個(gè)條件。在本文中若無(wú)特殊聲明,我們的d(X,Y)就取最常用的2范數(shù)的平方,即K維歐幾里德空間中的距離的平方: ,我們把這個(gè)測(cè)度又稱(chēng)為平方誤差測(cè)度。它雖然不滿(mǎn)足三角不等式但是 卻是滿(mǎn)足全部這三個(gè)條件的。
事實(shí)上,判斷一個(gè)矢量X屬于哪個(gè)胞腔可以有很多種標(biāo)準(zhǔn),在本文中,我們僅僅依據(jù)最近鄰(NN: Nearest Neighbor)準(zhǔn)則為判斷標(biāo)準(zhǔn)。利用矢量失真函數(shù)d,我們?cè)俣x一個(gè)胞腔失真函數(shù):
D: Voronoi Cells R (實(shí)數(shù)域);
X為處理矢量。
因?yàn)槲覀兺ǔL幚淼?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/數(shù)據(jù)">數(shù)據(jù)量都是有限的,所以有限個(gè)實(shí)數(shù)之和也是有限的,從而D(Ri)是有限的。那么我們系統(tǒng)的總失真就如式(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ù)指標(biāo)
2.4.1 矢量量化的關(guān)鍵技術(shù)
矢量量化的三大關(guān)鍵技術(shù)是【8】:碼書(shū)設(shè)計(jì)、碼字搜索和碼字索引分配。其中前兩項(xiàng)最關(guān)鍵。
1. 碼書(shū)設(shè)計(jì)
矢量量化的首要問(wèn)題是設(shè)計(jì)出性能好的碼書(shū)。如果沒(méi)有碼書(shū),那么將成為無(wú)米之炊。假設(shè)采用平方誤差測(cè)度作為失真測(cè)度,訓(xùn)練矢量數(shù)為M,目的是生成含N (N M)個(gè)碼字的碼書(shū),則碼書(shū)設(shè)計(jì)過(guò)程就是尋求把M個(gè)訓(xùn)練矢量分成N類(lèi)的一種最佳方案(如:使得均方誤差最小),而把各類(lèi)的質(zhì)心矢量作為碼書(shū)的碼字??梢宰C明在這種條件下各種可能的碼書(shū)個(gè)數(shù)為Num C,Num C滿(mǎn)足公式2.13:
(2.13) 其中C為組合數(shù)。通過(guò)測(cè)試所有碼書(shū)的性能可以得到全局最優(yōu)碼書(shū)。
然而,在N和M比較大的情況下,搜索全部碼書(shū)是根本不可能的。為了克服這個(gè)困難,文獻(xiàn)中各種碼書(shū)設(shè)計(jì)方法都采取搜索部分碼書(shū)的方法得到局部最優(yōu)或接近全局最優(yōu)的碼書(shū)。所以研究碼書(shū)設(shè)計(jì)的目的就是尋求有效的盡可能找到全局最優(yōu)或接近全局最優(yōu)的碼書(shū)以提高碼書(shū)的性能,并且盡可能減少計(jì)算復(fù)雜度。
2. 碼字搜索
矢量量化碼字搜索是指在碼書(shū)已經(jīng)存在的情況下,對(duì)于給定的輸入矢量,在碼書(shū)中搜索與輸入矢量之間失真最小的碼字。給定大小為N的碼書(shū)C,如果矢量x與碼字A之間的失真測(cè)度為d(x,y),則碼字搜索算法的目的就是找到碼字Y,使得失真測(cè)度滿(mǎn)足公式2.14:
(2.14)
如果采用平方誤差測(cè)度,對(duì)于k維矢量,每次失真計(jì)算需要k次乘法,2k一1次加法,從而為了對(duì)矢量x進(jìn)行窮盡搜索需要Nk次乘法,N(2k -1)次加法和N-1次比較??梢钥闯?,計(jì)算復(fù)雜度由碼書(shū)尺寸和矢量維數(shù)決定。對(duì)于大尺寸碼書(shū)和高維矢量,計(jì)算復(fù)雜程度將很大。研究碼字搜索算法的主要目的就是尋求快速有效的算法以減少計(jì)算復(fù)雜程度,并且盡量使得算法易于用硬件實(shí)現(xiàn)。
3. 碼字索引分配
在圖示的矢量量化編碼和解碼系統(tǒng)中,如果信道有噪聲,則信道左端的索引i經(jīng)過(guò)信道傳輸可能輸出索引J而不是索引i,從而將在解碼端引入額外失真。為了減少這種失真,可以對(duì)碼字的索引進(jìn)行重新分配。如果書(shū)大小為N,則碼字索引分配方案一共有N!種。碼字索引分配算法就是在N!種碼字索引分配方案中尋求一種最佳的碼字索引分配使由信道噪聲引起的失真最小。然而,當(dāng)N較大時(shí),測(cè)試N!種碼字索引分配方案是不可能的。為了克服這個(gè)困難,各種碼字索引分配方法都采用局部搜索算法,往往只能得到局部最優(yōu)解。所以研究碼字索引分配算法的目的就是尋求有效的算法盡可能找到全局最優(yōu)或接近全局最優(yōu)的碼字索引分配方案以減少由信道噪聲引起的失真,并盡可能減少計(jì)算復(fù)雜度和搜索時(shí)間。
2.4.2 矢量量化技術(shù)指標(biāo)
1. 矢量量化
從矢量量化器的工作原理我們看出,碼書(shū)確定之后,傳輸或者存儲(chǔ)的只是一系列碼字的索引,這些索引本身并不包含原始的任何信息。因此矢量量化的壓縮率很大,其比特率 bit/采樣,也就是說(shuō)壓縮倍數(shù)為 B為原始采樣數(shù)據(jù)所用比特(bit)數(shù)。
舉例來(lái)說(shuō),當(dāng)E=8, M= 256, K=64時(shí),壓縮率r=0.015625 bits/采樣。壓縮倍數(shù)為64。這樣的壓縮倍數(shù)顯然很可觀了從壓 縮 率 與壓縮倍數(shù)的計(jì)算公式我們看出,M一般是2的冪次。再例如,碼書(shū)大小為150,碼字索引要用8bits碼書(shū)大小為256,碼字索引也要用8bits.兩種碼書(shū)大小得到的數(shù)據(jù)壓縮率相同,但后者壓縮性能顯然更好,所以一般我們用256而非150個(gè)碼字,大小為2a的碼書(shū)又稱(chēng)為q比特碼書(shū)。
2. 信號(hào)恢復(fù)性能指標(biāo)
通常信號(hào)質(zhì)量有均方誤差(MSE),信噪比(SNR),峰值信噪比(PSNR) 【11】等。在本文的討論中,我們主要是灰度圖像作為測(cè)試數(shù)據(jù)來(lái)源。我們的矢量量化技術(shù)的應(yīng)用也主要是針對(duì)灰度圖像的,因此以L級(jí)灰度圖像為例,我們給出個(gè)指標(biāo)的定義:設(shè)一副L級(jí)灰度圖像有WXH個(gè)像親,Xij為原始圖像像素值,Yij為恢復(fù)圖像像素值,那么
結(jié)過(guò)如下公式所示:
(2.15)
(2.16)
(2.17)
第三章 矢量量化的算法研究
3.1 矢量量化碼書(shū)設(shè)計(jì)算法的研究
3.1.1 經(jīng)典的LBG算法
如前所述,在矢量量化器的構(gòu)造過(guò)程中,碼本設(shè)計(jì)是最初的也是最重要的部分,根據(jù)各種碼本設(shè)計(jì)算法的思想和迭代過(guò)程,我們可以將碼本設(shè)計(jì)問(wèn)題歸結(jié)為L(zhǎng)loyd算法的兩條基本準(zhǔn)則【12】:
1. 最佳劃分準(zhǔn)則(Optimal Partition)
對(duì)于給定的碼本 利用最近鄰條件對(duì)訓(xùn)練矢量集進(jìn)行重新劃分。將每個(gè)訓(xùn)練矢量映射到與它之間失真最小的碼字,最后形成一組以現(xiàn)有碼本中的碼字為中心的最佳劃分。設(shè)訓(xùn)練矢量集為:
則訓(xùn)練矢量集的最佳分類(lèi) 滿(mǎn)足公式(3.1):
式中,i,j= 1,2,…,N (3.1)
如果存在D(x,yi )= D (x,yj ), 則將訓(xùn)練矢量歸入碼字yi的集合。
通常把這種最佳劃分稱(chēng)為Voronoi劃分,對(duì)應(yīng)的子集凡稱(chēng)為Voronoi胞腔。設(shè)訓(xùn)練矢量x為k維的 ,如果用平方誤差測(cè)度用來(lái)表征訓(xùn)練矢量x和碼字yi之間的失真,即:
(3.2)

本文引用地址:http://www.butianyuan.cn/article/170855.htm

2. 質(zhì)心條件 (CentroidC ondition)
利用由上面步驟得到的訓(xùn)練矢量劃分集 重新計(jì)算它們各自的質(zhì)心,得到新的碼本:
(3.3)
(3.4)
式中, 代表子集Si中訓(xùn)練矢量的個(gè)數(shù)。
各種矢量量化碼本設(shè)計(jì)算法基本都是上面兩個(gè)步驟的交替迭代的基礎(chǔ)上得到最后的碼本。不難看出,碼本生成過(guò)程中的計(jì)算量是隨著碼本矢量的維數(shù)k和碼本尺寸N的增大而急劇增長(zhǎng)的,對(duì)于需要高維大碼本的矢量量化器來(lái)說(shuō),測(cè)試所有可能的碼本來(lái)尋求全局最優(yōu)碼本將是十分困難的。為了克服這個(gè)困難,Linde . Buzo和Gray提出了經(jīng)典的LBG算法。
1980年Linde,Buzo和Gray將Lloyd算法推廣到矢量空間【8】, 算法的步驟簡(jiǎn)單描述如下:
Step 1 :給定初始碼本 ,令迭代次數(shù)m=0,平均失真初始值為 ,給定失真下降閾值 ;
Step 2:用碼本 中的碼字作為質(zhì)心,根據(jù)最佳劃分原則將訓(xùn)練矢量集x劃分為對(duì)應(yīng)于每個(gè)碼字的N個(gè)聚類(lèi),
滿(mǎn)足: ;
Step 3:計(jì)算本次迭代的平均失真 判斷相對(duì)誤差是否滿(mǎn)足 ,若滿(mǎn)足,則停止算法,碼本C(m)就是所求的碼本;
否則,轉(zhuǎn)Step 4;
Step 4:根據(jù)質(zhì)心條件,計(jì)算各聚類(lèi)的質(zhì)心,即公式(3.5):
(3.5)
產(chǎn)生新碼本 并置m=m+1,轉(zhuǎn)Step 2
END:算法結(jié)束。

對(duì)于 LBG算法來(lái)說(shuō),初始碼本選擇的好壞將直接影響到后面的迭代計(jì)算結(jié)果,一個(gè)不好的初始碼本會(huì)降低算法的收斂速度和最終碼本的性能。因此在LBG算法中要對(duì)初始碼本的選擇作一定的處理。如果初始碼本隨機(jī)產(chǎn)生,即直接從訓(xùn)練序列中隨機(jī)選擇N個(gè)訓(xùn)練矢量作為初始碼字,構(gòu)成初始碼本,可能會(huì)選到一些非典型的訓(xùn)練矢量作碼字,因而該胞腔可能含有少數(shù)幾個(gè)矢量甚至只有1個(gè)。另外,有可能把某些空間分得過(guò)疏。這可能會(huì)導(dǎo)致碼本中的有些碼字得不到充分利用,設(shè)計(jì)出來(lái)的碼本性能就可能較差。
3.1.2 MD算法
最大下降(MD)【13】碼本設(shè)計(jì)算法與經(jīng)典的LBG算法不同,它是一種分裂算法,而沒(méi)有初始碼本。在MD算法中,首先將訓(xùn)練矢量集 作為一個(gè)原始包腔,然后該包腔被它的最優(yōu)分割超平面分成兩個(gè)子包腔。依此類(lèi)推,每次分裂產(chǎn)生一個(gè)包腔,直到生成最后的N個(gè)包腔,計(jì)算它們的質(zhì)心,就可以得到設(shè)計(jì)的碼本C={y}i=1,2,…,N)。與LBG算法相比,MD算法的計(jì)算量少并且所產(chǎn)生的碼本性能好。另一方面,MD算法傾向于分割元素較多的胞腔,而不會(huì)去分割只有一個(gè)元素的胞腔,避免了非典型碼字的形成,提高了碼本的整體性能。在MD算法中,從L個(gè)包腔向(L+ l )個(gè)包腔擴(kuò)展時(shí),先要找出每個(gè)現(xiàn)有包腔的最優(yōu)分割超平面,并計(jì)算它們各自帶來(lái)的失真下降幅度,然后依據(jù)失真下降最大準(zhǔn)則來(lái)選擇究竟對(duì)哪一個(gè)包腔進(jìn)行分裂。這在k維空間里是比較困難的事,需要大量的計(jì)算和比較。圖3.2所示為MD算法的分裂過(guò)程示意圖,圖中每一步驟中有陰影的包腔 是當(dāng)前符合失真下降最大準(zhǔn)則的包腔,它被最優(yōu)分割超平面分成下面的兩個(gè)子包腔 和 。從L個(gè)包腔生成(L+ 1)個(gè)包腔的具體實(shí)現(xiàn)描述如下:
設(shè)超平面 將某胞腔 分成兩個(gè)非空胞腔如式(3.6)所示:

(3.6)
式中 , , , T表示轉(zhuǎn)置。
當(dāng) 中的矢量被質(zhì)心 量化時(shí),胞腔的失真D(Si)定義為公式(3.7): (3.7)
則由分割超平面H,劃分胞腔S,所引起的失真下降可表示為式(3.8):
(3.8)
若采用平方誤差測(cè)度,則式(3.8)可以化簡(jiǎn)為式(3.9):
或 (3.9)
式中, 分別為 的元素個(gè)數(shù), 。分別為 的質(zhì)心。
從式(3.9)中可以看出,若胞腔 、 非空,則失真下降函數(shù)滿(mǎn)足 。
我們將胞腔Si的最優(yōu)分割超平面 定義為使胞腔 具有最大失真下降 的超平面。MD算法先計(jì)算出所有胞腔的最大失真下降值 , ,然后找出最大的最大失真下降值 ,即 ,最后將胞腔Sp分割成兩個(gè)新胞腔。所以,L+l個(gè)胞腔是通過(guò)劃分L個(gè)胞腔中具有最大失真下降的胞腔并保持其余胞腔不變而得到的。值得注意的是,每次分裂包腔時(shí),并不需要重新計(jì)算所有包腔的失真函數(shù),而只需找到新增加的兩個(gè)包腔的最優(yōu)分割超平面,計(jì)算它們各自的失真函數(shù),再與其它包腔的失真函數(shù)值進(jìn)行比較即可找出新的滿(mǎn)足失真下降最大準(zhǔn)則的包腔。產(chǎn)生最后的N個(gè)胞腔,一共需計(jì)算(2N-3)次最大失真下降函數(shù)。
3.1.3 碼書(shū)設(shè)計(jì)算法比較
LBG算法是一種迭代算法,其迭代操作是標(biāo)量量化勞埃德迭代操作的直接推廣。LBG算法他具有如下的優(yōu)點(diǎn):
1. 不用初始化計(jì)算,可大大減少計(jì)算時(shí)間
2. 初始碼字選自訓(xùn)練序列,無(wú)空胞腔問(wèn)題
LBG算法在具有如上的優(yōu)點(diǎn)的同時(shí)也有一些缺點(diǎn)和不足:
1. 在每次迭代的最佳劃分階段,從碼書(shū)中搜索訓(xùn)練矢量的最近碼字需要大量的存儲(chǔ)空間和繁瑣的計(jì)算;
2. 初始碼書(shū)的選擇影響碼書(shū)訓(xùn)練的收斂速度和最終碼書(shū)的性能;
碼書(shū)設(shè)計(jì)的第一個(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算法的計(jì)算量少且所產(chǎn)生的碼書(shū)性能好。另一方面, MD算法傾向于分割元素較多的胞腔,而不會(huì)去分割只有一個(gè)元素的胞腔,而這種情況在LBG算法中卻常常出現(xiàn)。然而,在MD算法中,多維胞腔的最優(yōu)分割超平面的搜索是一個(gè)非常困難的問(wèn)題。為減少計(jì)算量,這些算法的搜索范圍被限制在與矢量空間的基本矢量正交的超平面上,這個(gè)矢量空間可由離散余弦變換(DCT)得到。但是,在這種限制條件下,算法常常搜索不到最優(yōu)超平面。
3.2 碼字搜索算法
3.2.1 不等式的快速碼字搜索算法
1. 部分失真不等式排除法
部分失真搜索(Partial Distortion Search,PDS)算法【12】是一種較簡(jiǎn)單有效的最近鄰搜索算法。它的基本思想是:在計(jì)算某個(gè)碼字與輸入矢量之間失真測(cè)度的過(guò)程中,始終判斷累加的部分失真是否已經(jīng)超過(guò)目前的最小失真,如果一旦超出則終止該碼字與輸入矢量之間的失真計(jì)算,轉(zhuǎn)而開(kāi)始計(jì)算另一個(gè)碼字與輸入矢量的失真測(cè)度。PDS常被用來(lái)與其他快速搜索算法結(jié)合起來(lái)運(yùn)用,來(lái)排除其它快速算法最后無(wú)法排除的碼字。
在編碼過(guò)程中計(jì)算前面部分維數(shù)的失真距離,若其超出當(dāng)前最小距離,則排除此碼字為最匹配碼字,否則繼續(xù)搜索其它碼字。
據(jù)如下(3.10)所示的柯西一許瓦爾茲不等式【14】:
(3.10)
可得一個(gè)不等式判據(jù) 若 ,則能保證 ,yi可被排除。因?yàn)閨yi|可離線計(jì)算,所以節(jié)省了計(jì)算量。
首先判斷 是否成立,若成立,則排除碼字Yi否則,再判斷是否滿(mǎn)足 ,若滿(mǎn)足,yi也可被排除。這縮小了搜索范圍,他們還融入部分距離失真法節(jié)省計(jì)算量。雙測(cè)試法的缺陷在于要求矢量的所有分量都為正值,而圖像變換域編碼中產(chǎn)生的變換系數(shù)有正有負(fù),必須對(duì)這些系數(shù)進(jìn)行正補(bǔ)償,使所有矢量分量均大于零。
2. 整數(shù)投影法
整數(shù)投影法是一種適用于圖像矢量量化的快速碼字搜索算法。他們?yōu)槊總€(gè)m×m圖像塊 ,定義三種整數(shù)投影【14】,如下公式(3.11)(3.12)(3.13)所示:
塊狀投影: (3.11)
垂直投影: (3.12)
水平投影: (3.13)
在這三種投影的基礎(chǔ)上定義了三個(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】。第一種算法先計(jì)算碼書(shū)中每?jī)蓚€(gè)碼字之間的距離,以當(dāng)前匹配碼字yi為中心,2hi(h i為輸入矢量與當(dāng)前匹配碼字之間的歐氏距離)為半徑劃定搜索范圍,即只搜索滿(mǎn)足d(yj,yi) 2hi的碼字yj,j= 1,2,…,N;
第二種算法是將搜索范圍定為滿(mǎn)足:x-hirkrx+hi,
其中rx為輸入矢量的范數(shù),rk為碼字的范數(shù),hi為輸入矢量與當(dāng)前匹配碼字之間的歐氏距離,此種算法不同于第一種算法,無(wú)須計(jì)算碼字之間的距離;
第三種算法取前兩種算法搜索區(qū)域的交集作為搜索區(qū)域。
這三種算法都涉及如何確定初始匹配碼字的問(wèn)題,一般取范數(shù)與輸入矢量范數(shù)最相近的碼字。第一、三種算法比第二種算法要多耗費(fèi)存儲(chǔ)空間來(lái)存儲(chǔ)碼字之間的距離。最小均方誤差編碼算法,取一長(zhǎng)訓(xùn)練矢量序列,計(jì)算每個(gè)Voronoi區(qū)域內(nèi)的訓(xùn)練矢量與該區(qū)域質(zhì)心矢量(碼字) 的最大距離di,求平方根后得ri,按其升序排列。編碼時(shí),從最小的ri開(kāi)始,排除對(duì)任意 ,滿(mǎn)足 .的碼字;那些對(duì)所有j,滿(mǎn)足 的碼字,則采用部分失真排除判定法,確定此碼字為最佳匹配碼字或者在以該碼字為開(kāi)始的剩余碼字中搜索最佳匹配碼字。
3.2.2 等均值等方差最近鄰搜索算法
均值等方差最近鄰碼字搜索算法是將均值不等式判據(jù)和用方差不等式判據(jù)相結(jié)合,進(jìn)一步縮小了碼字搜索范圍。k維輸入矢量x的方差定義公式(3.17)【9】為
(3.17)
其中:Mx為輸入矢量x的均值。
等均值等方差最近鄰搜索算法所用到的方差判別準(zhǔn)則為:
設(shè)碼字 為輸入矢量x的當(dāng)前最近鄰碼字, ,輸入矢量x和碼字Y,的方差分別為Vx和Vyi,如果公式(3.18)成立,
(3.18)
則有d(x,yi) >d( x,yp),碼字yi,可以被排除是輸入矢量x的最近鄰碼字。對(duì)式(3.12)作適當(dāng)變形,可得公式(3.19)和(3.20)
(3.19)
(3.20)
即碼字Yi的方差滿(mǎn)足以上兩式時(shí),碼字Yi可以被排除是輸入矢量x的最近鄰碼字。
由幾何知識(shí)可知,在歐幾里得空間 中以空間中心線L為軸心的超圓柱面上,各點(diǎn)的方差相等,該超圓柱面稱(chēng)為等方差超圓柱面。由式(3.13)和(3.14)可知,等方差判別準(zhǔn)則將碼字搜索范圍限制在方差分別為Vmax和V min的兩個(gè)超圓柱面內(nèi)。則等均值判別準(zhǔn)則與等方差判別準(zhǔn)則相結(jié)合的等均值等方差最近鄰搜索算法將碼字的搜索范圍限制在了如圖3.2所示的陰影部分內(nèi)。
圖3.1 等均值等方差最近鄰搜索算法搜索范圍二維示意圖

圖3.1 所示是EENNS算法搜索范圍的二維示意圖,圖中以中心線L為軸心的超圓柱面分別是方差為Vmin和Vmax的等方差超圓柱面,與中心線L垂直的超平面分別是均值為Mmax和Mmin的等均值超圓柱面。等均值等方差最近鄰搜索算法將碼字的搜索范圍限制在超圓柱面V1, V2和超平面Ll,L2所夾的范圍內(nèi),即圖中的陰影區(qū)域。EENNS算法減少了碼字搜索范圍,從而可以提高碼字搜索速度。EENNS算法具體步驟如下:
(A)預(yù)處理:計(jì)算并存儲(chǔ)碼書(shū)C中的均值和方差,按均值的大小對(duì)碼書(shū)進(jìn)行排序。
(B)在線處理:
Step l:計(jì)算輸入矢量x的均值Mx和方差Vx,在已排序碼書(shū)中找到均值與Mx 最 接近的碼字 作為輸入矢量X的初始匹配碼字。計(jì)算當(dāng)前最小失真 d min = d (x ,yp )。使集合
Step 2:如果集合G為空,轉(zhuǎn)Step 7;
Step 3:往返搜索法搜索初始匹配碼字yp兩側(cè)的碼字yj;
Step 4:如果碼字滿(mǎn)足 或者 ,則執(zhí)行
下列步驟的(a)或者(b)。否則,轉(zhuǎn)步驟5;
(C)如果Myj> Mx,則從集合G中刪除所有碼字yi,ij,轉(zhuǎn)Step2。
(D)否則,則從集合G中刪除所有碼字yi i>j,轉(zhuǎn)Step2。
Step 5:判斷碼字Yi的方差是否滿(mǎn)足 或者 如果 滿(mǎn)足, 則從刪除集合G中刪除碼字Yi,否則,轉(zhuǎn)Step6;
Step 6:用部分失真排除算法搜索碼字Yi,如果d(x, Yi)dmin,. 則更新 p = J,從集合G中刪除碼字Yi轉(zhuǎn)Step 2;
Step7:確定輸入矢量x的最匹配碼字為Yp。
3.3 碼字索引分配算法
3.3.1 BSA算法
BSA算法是在1990年提出二元對(duì)稱(chēng)信道模型的碼字索引分配算法【16】。該算法對(duì)于任何索引映射函數(shù) ,選擇碼字y,作為輸入矢量x的最近碼字后將產(chǎn)生索引 的傳輸,該過(guò)程與首先將碼書(shū)中的碼字進(jìn)行位置交換等價(jià),即對(duì)每一索i,碼字y最終移動(dòng)到碼書(shū)中索引為 的位置。
基于這個(gè)事實(shí),很自然地想到一種最簡(jiǎn)單的碼字索引分配方法:首先在給定碼書(shū)基礎(chǔ)上隨機(jī)產(chǎn)生一個(gè)初始碼字排列,然后將所有碼字的排列位置以特定方式進(jìn)行交換,使信道失真不斷減少。因此,這種算法的輸入是一個(gè)碼書(shū),輸出仍是一個(gè)碼書(shū),只不過(guò)碼字存放在不同的位置。這帶來(lái)一個(gè)附加優(yōu)點(diǎn):除了存儲(chǔ)碼書(shū)所需的空間以外,不需要任何額外信息來(lái)詳細(xì)描述索引映射函數(shù)n,從而不需要信道編碼和信道解碼。
BSA算法的主要思想是通過(guò)不斷交換碼字的位置,使得信道噪聲失真的目標(biāo)函數(shù)場(chǎng)獲得局部最優(yōu)值.隨著交換的進(jìn)行 不斷下降,而且索引映射函數(shù) 也跟著不斷變化。在每次迭代中,碼字的交換對(duì)是按一定的順序選擇的。所有的碼字y,都對(duì)應(yīng)一個(gè)函數(shù) ,用來(lái)描述當(dāng)該碼字的索引(在當(dāng)前碼書(shū)中)在噪聲信道中傳輸時(shí)可能產(chǎn)生的失真,其定義為公式(3.21):
(3.21)
BSA算法每次按 從大到小的順序?qū)Υa字進(jìn)行排序。擁有最大函數(shù)值 的碼字被選為首先交換的候選對(duì)象。首先進(jìn)行試驗(yàn)性的交換, 與其他每一個(gè)碼字分別進(jìn)行交換,并計(jì)算每次交換后 的下降值。選擇能使 出現(xiàn)最大下降的那一個(gè)碼字與 進(jìn)行真正地交換,然后進(jìn)入下一次迭代。如果不存在這樣的碼字,則對(duì)yi作相同的交換試驗(yàn)。如果每一個(gè)碼字按這種方法與其他碼字進(jìn)行交換后。不再下降,則終止算法,從而獲得一個(gè)局部最優(yōu)的碼字索引分配方案。算法的具體步驟如下:
Step 1:初始化。隨機(jī)打亂碼字的排序;
Step 2:整理排序。根據(jù) 從大到小的順序?qū)Υa字yi進(jìn)行排序。令n=-1;
Step 3:試驗(yàn)性交換。令n=n+1從j=n+1到N一1,分別計(jì)算索引n和索弓!j交換后所能引起的失真減少量,比較這些失真減少量,獲得最大的失真下降量 ;

矢量控制相關(guān)文章:矢量控制原理
全息投影相關(guān)文章:全息投影原理


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉