本發(fā)明涉及無線通信領域,特別是涉及一種層析式編碼譯碼方法。
背景技術:
在多媒體廣播、多播業(yè)務應用系統(tǒng)中,多媒體數據以IP包的形式在單向廣播信道中傳輸。這個承載IP包的網絡傳輸環(huán)境是一個包刪除信道。包刪除的原因有兩個:網絡擁塞或奇偶校驗出錯。通常,采用應用層糾錯編碼技術(AL-FEC)來恢復丟失的數據包。常用的AL-FEC方案有RS編碼和RaptorQ編碼,由于它們被用來處理包刪除信道,因此也常被叫做糾刪碼。
在視頻壓縮編碼標準中,為了適應不同信道和不同接收能力的終端的需要,發(fā)展出一種分層的視頻編碼技術,如SVC/SEVC。分層編碼的原理是對視頻數據在時域、空間、QoS上進行分級,用基本層傳輸最低級別的視頻數據,其上依次疊加高級別的增強層數據。增強層與基本層之間存在依賴關系,即對高增強層壓縮數據的解碼需要依賴于基本層以及其它低級別的增強層的正確解碼。在接收端,如果接收到所有層的數據,則可以通過分層解碼得到最高圖像質量的視頻數據;如果某一增強層數據有數據包丟失,則只能對低級別的層數據進行解碼。在此期間,雖然圖像質量有所下降,但是不至于中斷播放,從而改善用戶體驗。此外,對3D立體視頻也采用了類似的技術,如MVC。
傳統(tǒng)上,對分層數據通過標準的AL-FEC技術對不同層級進行不對等的數據保護:對基本層采用高強度的AL-FEC編碼,具有最大的冗余度和最低的編碼效率,從而保證接收端在最惡劣的信道環(huán)境下也能實現對基本層的正確解碼;對增強層采用低強度的AL-FEC編碼,具有較小的冗余度和較高的編碼效率。近幾年,一種更高效的針對分層數據的編碼方案Layer-Aware FEC(簡稱LA-FEC)被提出來,并在多媒體廣播、多播中獲得了廣泛應用。LA-FEC利用了層間的相關性,它編碼生成的修復包不僅保護本層數據,同時也保護所有依賴層的數據。從而,低層數據受到的保護強度更高。
但是,以上兩種針對分層數據的AL-FEC技術都建立在基本層或低層正確恢復刪除包的基礎上。如果低層數據丟失,則即使接收到再多的數據包,也無法正確解碼。
此外,RaptorQ碼是一種專門針對包刪除信道的糾刪碼。RaptorQ是一種級聯的、在GF(256)域上的噴泉碼,它的特點是生成矩陣隨機生成,編碼端可以產生并發(fā)送無限長的碼字,知道接收到接收到的碼字足夠對源數據包進行正確譯碼為止。如果信道丟包率低,則接收端只要接收到的包數量稍稍多于源包數量,就可以正確譯碼。但是,對于無反饋的廣播、多播信道 來說,噴泉碼不可能做到真正的“無碼率”,發(fā)送端仍然需要按照預先規(guī)定的編碼效率進行編碼。
技術實現要素:
鑒于以上所述現有技術的缺點,本發(fā)明的目的在于提供一種層析式編碼譯碼方法,用于解決現有技術中要按規(guī)則解碼,若信道狀況很差,包丟失率很高,以至于連基本層也無法恢復,若底層丟失則其它層均無法解碼的問題。
為實現上述目的及其他相關目的,本發(fā)明提供一種層析式編碼譯碼方法,包括步驟:S1、將所有L層中每一層的數據分割為L個同樣序號的數據塊,并將每個所述數據塊進一步分割為N個源符號,從每一層中取出對應的所述源符號,并將所述源符號按預設公式編碼生成一個對應的層混合編碼符號;S2、將所述層混合符號用生成矩陣進行編碼,生成層混合編碼符號,再對所述層混合編碼符號進行傳8F93;S3、接收所述層混合編碼符號后將所述層混合編碼符號進行譯碼,得到所述數據。
于本發(fā)明一實施方式中,所述步驟1中,每個所述源符號包含第l層的Pl個源符號的集合;其中,i=1~Pl,l=0~L-1。
于本發(fā)明一實施方式中,所述預設公式為:
其中,GMN×LN是生成矩陣,Yi是輸出的編碼符號(i=1…MN且有M≥L),為編碼符號矩陣;矩陣由所述源符號重新排列堆疊而成。
于本發(fā)明一實施方式中,所述源符號重新排列堆疊公式為:
.
.
.
于本發(fā)明一實施方式中,所述步驟S2中采用RS編碼生成矩陣進行編碼后,再進行傳輸。
于本發(fā)明一實施方式中,所述步驟S3中采用逆矩陣的方法進行譯碼。
于本發(fā)明一實施方式中,所述逆矩陣譯碼的步驟包括:根據接收到的所述編碼符號的數量,從中選取可解碼層數對應數量的NL個所述編碼符號然后根據公式X=[GLN×LN]-1·YLN,恢復對應的N層數據;
其中:GLN×LN=G({r1…rLN},:),為生成矩陣G的LN×LN子矩陣,由接收到的NL個編碼符號的序號所對應的G的NL個行向量構成;YLN=Y({r1…rLN},:),是編碼符號矩陣Y的子陣,由接收到的NL個完整的編碼符號構成。
于本發(fā)明一實施方式中,所述步驟S2中采用LT編碼生成矩陣進行編碼后,再進行傳輸。
于本發(fā)明一實施方式中,所述步驟S3中采用高斯消元法的方法進行譯碼。
于本發(fā)明一實施方式中,所述高斯消元法的方法進行譯碼的步驟包括:接收端可能需要接收到大于NL個所述編碼符號,選取任意NL個所述編碼符號,對所述源符號矩陣進行行列變換,當矩陣的上部出現NL維上三角矩陣時,解NL維線性方程組,即可恢復對應的N層的所述源符號
如上所述,本發(fā)明的自適應調制方法,具有以下有益效果:
將所有層數據進行混合編碼,只要接收到一定比例的數據包,就能正確譯碼相應的層數據,而不管接收到的數據包的具體位置,從而實現更好的連續(xù)播放的效果。
附圖說明
圖1顯示為本發(fā)明層析式編碼譯碼方法一實施例的流程方框圖。
圖2顯示為本發(fā)明層析式編碼譯碼方法的編碼示意圖。
圖3顯示為本發(fā)明層析式編碼譯碼方法的譯碼示意圖。
具體實施方式
以下通過特定的具體實例說明本發(fā)明的實施方式,本領域技術人員可由本說明書所揭露 的內容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的具體實施方式加以實施或應用,本說明書中的各項細節(jié)也可以基于不同觀點與應用,在沒有背離本發(fā)明的精神下進行各種修飾或改變。
請參閱圖1至圖3。需要說明的是,本實施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構想,遂圖式中僅顯示與本發(fā)明中有關的組件而非按照實際實施時的組件數目、形狀及尺寸繪制,其實際實施時各組件的型態(tài)、數量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復雜。
如圖1至圖3所示,本發(fā)明提供了一種層析式編碼譯碼方法,包括步驟:
S1、將所有L層中每一層的數據分割為L個同樣序號的數據塊,并將每個所述數據塊進一步分割為N個源符號,從每一層中取出對應的所述源符號,并將所述源符號按預設公式編碼生成一個對應的層混合符號。
在本發(fā)明的一實施例中,每個所述源符號包含第l層的Pl個源符號的集合;其中,i=1~Pl,l=0~L-1。所述預設公式為:其中,GMN×LN是生成矩陣,Yi是輸出的編碼符號(i=1…MN且有M≥L),為編碼符號矩陣;矩陣由所述源符號重新排列堆疊而成。
通常通過設置一個SVC視頻編碼器生成了L層數據,并按照某種系統(tǒng)協(xié)議,將每一層壓縮數據分別分割為若干個數據段。LM-FEC的處理對象是一個數據段組{D0,D1,D2…DL-1},分別表示從基本層、第1增強層、直到第L-1增強層中所取出的L個具有同樣序號的數據塊,它們的長度各不相同。將每個分段進一步分割為N個源符號,記為其中下標n=1…N為源符號的索引,上標l=0…L-1為層數。則共有NL個源符號,不同層的符號塊具有不同的長度,分別為P0,P1,P2…PL-1個符號,每個源符號包含第l層的Pl個源符號的集合:
按預設公式構造層混合符號:其中,GMN×LN是生成矩陣,Yi是輸出的編碼符號(i=1…MN且有M≥L),記為編碼符號矩陣。矩陣由源符號重新排列堆疊而成,所述源符號重新排列堆疊公式為:
.
.
.
X0由基本層源符號堆疊而成,非零子陣X′0的行數是N;X1由第1增強層的源符號堆疊而成,非零子陣X′1的行數是2N;最高層XL-1由最高增強層的源符號堆疊而成,行數是LN。
由公式可知,LM-FEC編碼器輸出MN個編碼符號{Yi},每個編碼符號包含個符號,如圖2所示。因此,如果層數L=3,且P0=P1=P2,M=N,則編碼效率是層數越多,編碼效率越低。每個編碼符號生成過程中,所有層數據的符號都對它有貢獻,換句話說,每個Yi都包含了所有層數據的部分信息,所以叫層混合編碼。在接收端,只要能接收到N個任意編碼符號,就能正確譯碼出基本層的所有源符號;只要能接收到2N個任意編碼符號,就能正確譯碼出基本層和第1增強層的所有源符號;如果接收到LN個編碼符號,就能正確譯碼出所有層的源符號。
S2、將所有的所述層混合符號用生成矩陣進行編碼,生成層混合編碼符號,再對所述層混合編碼符號進行傳輸。本發(fā)明的優(yōu)選實施例中,生成矩陣G的元素集合記為{vi,j,0≤i≤MN-1,0≤j≤NL-1}。生成矩陣有多種形式的選擇。當采用RS編碼生成矩陣進行編碼后,再進行傳輸。則可以選擇有限域GF(2m)上的Vandermonte生成矩陣。設α為m階本原多項式的根,則vi,j=αi×j,0≤i≤MN-1,0≤j≤NL-1。其中,根據RS碼的性質, 應滿足NL<2m。
當采用LT編碼生成矩陣進行編碼后,再進行傳輸。則生成矩陣是個隨機二元矩陣,只包含0和1兩種元素,矩陣運算在有限域GF(2)上進行,符號之間相加就是按位異或操作。采用隨機二元矩陣的好處是譯碼的計算復雜度低,但在無反饋的通信場景下,為了保證可譯碼,應選擇盡量大的M值,從而降低了編碼效率。
S3、接收所述矩陣后將所述矩陣進行譯碼,得到所述數據。當采用RS編碼生成矩陣進行傳輸時,對應使用逆矩陣的方法進行譯碼。所述逆矩陣譯碼的步驟包括:根據接收到的所述編碼符號的數量,從中選取可解碼層數對應數量的NL個所述編碼符號然后根據公式X=[GLN×LN]-1·YLN,恢復對應的N層數據;其中:GLN×LN=G({r1…rLN},:),為生成矩陣G的LN×LN子矩陣,由接收到的NL個編碼符號的序號所對應的G的NL個行向量構成;YLN=Y({r1…rLN},:),是編碼符號矩陣Y的子陣,由接收到的NL個完整的編碼符號構成。數據包經過刪除信道傳輸,會有部分數據包被丟失。在接收端,如果接收到多于N個的編碼符號,則從中任意選擇N個編碼符號然后由下式恢復基本層數據。
其中,GN×N=G({r1…rN},1:N),為生成矩陣G的N×N子矩陣,由接收到的N個編碼符號的序號所對應的G的N個行向量的前N列構成。是編碼符號矩陣Y的N×P0子陣,由接收到的N個編碼符號的前P0個符號構成。X′0是X0的上N個行向量構成的子陣,它包含了基本層的所有源符號的集合可見由接收到的任意N個編碼符號,可以正確恢復基本層源符號。
如果接收端接收到多于2N個編碼符號,則從中任意選擇2N個編碼符號然后由下式恢復L0和L1層數據
其中,G2N×2N=G({r1…r2N},1:2N),為生成矩陣G的2N×2N子矩陣,由接收到的2N個編碼符號的序號所對應的G的2N個行向量的前2N列構成。
是編碼符號矩陣Y的子陣,由接收到的2N個編碼符號的前個符號構成。X′1由X′0和X′0按下式構成,它包含了第l0和l1層的所 有源符號的集合
可見由接收到的任意2N個編碼符號,可以正確恢復基本層和第1增強層的所有源符號。
如果接收端接收到多于NL個編碼符號,則從中任意選擇NL個編碼符號然后由式(4)恢復所有層數據
X=[GLN×LN]-1·YLN
其中,GLN×LN=G({r1…rLN},:),為生成矩陣G的LN×LN子矩陣,由接收到的NL個編碼符號的序號所對應的G的NL個行向量構成。YLN=Y({r1…rLN},:),是編碼符號矩陣Y的子陣,由接收到的NL個完整的編碼符號構成。
LM-FEC的譯碼過程如圖3所示,如果接收端接收到大于等于N個任意的編碼符號,則通過LM-FEC譯碼可以完整地恢復基本層數據。
當采用采用LT編碼生成矩陣進行傳輸時,采用高斯消元法的方法進行譯碼。所述高斯消元法的方法進行譯碼的步驟包括。接收端可能需要接收到大于NL個所述編碼符號,選取任意NL個所述編碼符號,對所述源符號矩陣進行行列變換,當矩陣的上部出現NL維上三角矩陣時,解NL維線性方程組,即可恢復對應的N層的所述源符號
接收端每接收到一個編碼符號,就對公式:
的右側進行一次行列交換,當在矩陣G的左上角出現一個N維上三角矩陣時,解N維線性方程組,就可以恢復出基本層源符號由于不能保證隨機二元矩陣G的任意N個行向量線性無關,所以接收端可能需要接收到大于N個編碼符號,才能恢復出基本層數據。
當在矩陣G的左上角出現一個2N維上三角矩陣時,解2N維線性方程組,就可以恢復出基本層和第一增強層的源符號由于不能保證隨機二元矩陣G的任意2N個行向量線性無關,所以接收端可能需要接收到大于2N個編碼符號,才能恢復出基本層和第一增強層的數據。
當在矩陣G的上部出現一個NL維上三角矩陣時,解NL維線性方程組,就可以恢復出所有層的源符號由于不能保證隨機二元矩陣G的任意NL個 行向量線性無關,所以接收端可能需要接收到大于NL個編碼符號,才能恢復出所有層的數據。
例如,在基于IP封包的廣播多播多媒體傳輸系統(tǒng)中(如CMMB/NGB-W/DVB-H/eMBMS,等),多媒體數據以IP包的形式在廣播信道中進行傳輸。如果發(fā)送端采用SVC/SEVC/MVC等分層視頻壓縮,則在將IP包送入傳輸設備之前,進行LM-FEC編碼。
首先,每層壓縮數據被分割為若干個數據段組,然后每個數據段被分割為N個源符號。LM-FEC編碼器對屬于同一個數據段組的NL個源符號進行堆疊,構造矩陣X。然后,用生成矩陣進行編碼,生成MN個編碼符號。每個編碼符號打包成一個RTP包,送給傳輸設備進行發(fā)送。
接收端接收RTP包,即編碼符號。屬于同一數據段組的RTP包被送到LM-FEC解碼器進行糾刪。由于存在噪聲、多徑衰落、網絡擁塞等因素的影響,廣播信道上存在一定的丟包率。LM-FEC解碼器根據接收到的RTP包的數量決定解碼的層數:若RTP包的數量達到N,則用公式恢復基本層數據;若RTP包的數量達到2N,則用公式恢復基本層和第一增強層的數據;若RTP包的數量達到LN,則用公式X=[GLN×LN]-1·YLN恢復所有層的數據。
然后,LM-FEC解碼器對解碼數據進行反堆疊,得到最初的源符號。送給SVC視頻解碼器進行視頻解碼和播放。
本發(fā)明提出的針對分層視頻數據(SVC/SEVC/MVC)的層混合糾刪編碼方案(LM-FEC),發(fā)送端將所有層數據進行混合編碼,接收端只要接收到一定比例的數據包,就能正確譯碼相應的層數據,而不管接收到的數據包的具體位置。
本發(fā)明對多媒體廣播、多播具有重要的意義。在廣播、多播這種無反饋的通信環(huán)境中,發(fā)送端通過AL-FEC進行刪除包的糾正。同時,采用分層視頻壓縮編碼以適應不同的終端能力和信道環(huán)境。在接收端,只要能接收到基本層的數據,就可以保證播放的連續(xù)性。如果信道狀況很差,包丟失率很高,以至于連基本層也無法恢復,則播放出現間斷。如果采用本發(fā)明所提出的糾刪方案,則即使在丟包率超過60%的情況下,也能夠正確恢復出基本層,從而達到比現有方案(不對等保護FEC,LA-FEC)更好的連續(xù)播放的效果。
上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾或改變。因此,舉凡所屬技術領域中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術思想下所完成的一切等 效修飾或改變,仍應由本發(fā)明的權利要求所涵蓋。