戴偉輝,鄢秋榮,王 明,洪 珠,楊 程
南昌大學(xué)信息工程學(xué)院,江西 南昌 330031
近年來,水下無線光通信(underwater optical wireless communication,UOWC)在環(huán)境檢測、海上勘探等領(lǐng)域中發(fā)揮著重要的作用,受到越來越廣泛的關(guān)注[1-4]。它具有帶寬高、速度快、抗電磁干擾能力強等優(yōu)點,但由于傳輸時會受到嚴(yán)重的吸收和散射影響,存在通信距離受限的問題[5]。為了實現(xiàn)遠(yuǎn)距離的水下無線光通信,運用具有單光子限靈敏度的單光子探測器探測接收端的微弱光信號,并從探測器輸出的離散脈沖序列中提取通信信號[6-10]。
視頻由于可以直觀地傳達(dá)信息,因此在水下無線光通信中運用廣泛。要實現(xiàn)水下單光子視頻通信,需要經(jīng)過視頻壓縮編碼和糾錯編碼,以提高傳輸?shù)挠行院涂煽啃?。傳統(tǒng)的視頻編碼方法,如MPEG 系列或者H.26X 系列采用預(yù)測編碼和變換編碼結(jié)合的混合編碼方法進(jìn)行視頻壓縮,視頻幀之間關(guān)聯(lián)性較強,一幀數(shù)據(jù)的丟失會對其他幀的解碼造成很大困難[11-12]。又由于光量子效應(yīng)和光子探測的隨機過程,在水下單光子通信系統(tǒng)中,時隙內(nèi)探測到的光子可能出現(xiàn)符號刪除現(xiàn)象,導(dǎo)致數(shù)據(jù)丟包。若采用傳統(tǒng)視頻編碼方法,視頻恢復(fù)的效果差且復(fù)雜度極高。而利用字典學(xué)習(xí)進(jìn)行視頻稀疏編碼,每幀視頻圖像傳送的是稀疏矩陣信息,并且各視頻幀之間的解碼互不影響。同時,水下單光子通信中刪除符號出現(xiàn)的概率較大,而由暗計數(shù)脈沖和背景光脈沖引起的錯誤符號非常少,其呈現(xiàn)出很強的刪除信道特性[13-15]。LT 數(shù)字噴泉碼是專門應(yīng)對各種刪除信道而設(shè)計的,只要接收到足夠的噴泉包就可還原數(shù)據(jù)。但由于譯碼開銷很大,通過級聯(lián)LDPC碼糾正錯誤碼元以降低譯碼開銷。要實現(xiàn)高有效性和高可靠性的水下單光子視頻通信,關(guān)鍵是要研究適用于水下單光子信道特點的視頻壓縮編碼與糾錯編碼方法[16-18]。
2006 年Micha 等人提出一種用于設(shè)計稀疏表示的過完備字典的K-SVD(K-singular value decomposition)算法,并表示字典學(xué)習(xí)在圖像增強和壓縮兩方面都可以成功地取代常用的表示方法[19]。文獻(xiàn)[20]提出了一種基于單像素相機兼容字典學(xué)習(xí)的分布式壓縮視頻感知框架,以直接獲取壓縮視頻,學(xué)習(xí)字典可以為視頻重建提供更好的基礎(chǔ),而不需要基于學(xué)習(xí)的基礎(chǔ)。文獻(xiàn)[21]提出了一種基于在線字典學(xué)習(xí)的幀內(nèi)視頻編碼方法,該方法利用了自然圖像的紋理稀疏性,所提出的方法能夠從先前的幀中學(xué)習(xí)基本的紋理元素,從而通過有效的字典來稀疏表示傳入的幀。文獻(xiàn)[22]提出了一種基于自適應(yīng)正則字典學(xué)習(xí)的稀疏時空表示方法和一種低比特率的視頻編碼方案,選擇關(guān)鍵幀的子集以原始分辨率進(jìn)行編碼,而其余部分則通過稀疏時空近似下進(jìn)行采樣和重構(gòu)。文獻(xiàn)[23]為了克服大氣衰減和光強起伏對自由空間光通信性能的影響,采用數(shù)字噴泉碼抑制大氣湍流的影響,以提高自由空間光通信信道的可靠性。文獻(xiàn)[24]研究了LT 噴泉碼在大氣無線光通信連接中的糾錯性能,從編碼、譯碼的角度研究噴泉碼的性能提高方法。文獻(xiàn)[25]采用低密度奇偶校驗(low density parity check,LDPC)碼作為信道編碼應(yīng)用于無線光通信中,得出LDPC 碼在弱湍流信道具有優(yōu)越的糾錯能力。文獻(xiàn)[26]針對深空通信中對長糾刪碼的需求,提出了LT碼和q-LDPC碼的級聯(lián)編碼方案,并設(shè)計了兩種短8-LDPC 碼,并對整個級聯(lián)系統(tǒng)的糾錯性能進(jìn)行分析。文獻(xiàn)[27]將LDPC 碼作為信道編碼技術(shù)運用于大氣激光通信系統(tǒng)中,并給出了一種便于硬件實現(xiàn)的半隨機π-旋轉(zhuǎn)LDPC 碼,在PPM(pluse position modulation)調(diào)制的情形下,對不同的典型天氣情況下的性能進(jìn)行了分析。
為了在高誤碼率與數(shù)據(jù)易丟包的條件下,實現(xiàn)水下單光子視頻有效可靠的傳輸,本文提出了一種基于字典學(xué)習(xí)和LT 碼級聯(lián)LDPC 碼的視頻聯(lián)合編碼方案。該方案提高了數(shù)據(jù)壓縮率和數(shù)據(jù)編碼效率,實現(xiàn)傳輸質(zhì)量與傳輸效率同步達(dá)優(yōu)。
為了在水下單光子通信系統(tǒng)中實現(xiàn)視頻傳輸,設(shè)計了水下單光子視頻通信實驗系統(tǒng)方案如圖1 所示。整個系統(tǒng)由發(fā)送端和接收端兩部分組成,利用資源豐富、運算能力強、編程靈活的MATLAB 軟件來實現(xiàn)視頻幀序列的聯(lián)合編碼、聯(lián)合譯碼、誤碼率分析和數(shù)據(jù)處理;采用具有并行高速處理能力的FPGA 來實現(xiàn)基于光子時間間隔的調(diào)制解調(diào);計算機和FPGA 兩平臺之間通過UDP 網(wǎng)口協(xié)議實現(xiàn)數(shù)據(jù)傳輸。
圖1 水下單光子視頻通信實驗系統(tǒng)方案Fig.1 Experimental system scheme of underwater single-photon video communication
圖2 為水下單光子視頻通信系統(tǒng)實物圖。在該系統(tǒng)中,采用了長度為1.5 m 的水管作為水下信道,但為了模擬遠(yuǎn)距離弱鏈路的水下通信,在發(fā)送端增加了多塊衰減片及光闌,并調(diào)弱光強,使光源在極弱光下,以單光子態(tài)進(jìn)行傳輸。通過對系統(tǒng)水下信道建模,計算出理論上可實現(xiàn)的水下通信距離約為389 m[9]。同時,系統(tǒng)中反饋回路通過導(dǎo)線直接連接,以確保反饋信息可靠快速傳輸至發(fā)送端。
圖2 水下單光子視頻通信系統(tǒng)圖Fig.2 Diagram of underwater single-photon video communication system
發(fā)送端計算機1運用MATLAB軟件對視頻流進(jìn)行字典學(xué)習(xí)稀疏編碼,再進(jìn)行數(shù)據(jù)幀設(shè)計和LT 編碼級聯(lián)LDPC 編碼。將得到的發(fā)送數(shù)據(jù)包通過網(wǎng)口加載到FPGA 電路板1 進(jìn)行OOK 調(diào)制,調(diào)制后的信號驅(qū)動LED 燈亮滅閃爍表示傳輸?shù)亩M(jìn)制比特流信息。經(jīng)過水下信道衰減后,單光子探測器接收到微弱光信號并輸出離散的單光子脈沖序列,送至FPGA 電路板2 進(jìn)行處理和信息解調(diào),解調(diào)后的數(shù)據(jù)通過網(wǎng)口傳輸至計算機2。計算機2 利用MATLAB 軟件對接收到的信息進(jìn)行LT 譯碼級聯(lián)LDPC 譯碼,若譯碼失敗,則再通過反饋回路重新進(jìn)行級聯(lián)編譯碼。最后,通過字典學(xué)習(xí)稀疏譯碼重構(gòu)出原始視頻流。
用均方誤差(mean-square error,MSE)、峰值信噪比(peak signal to noise ratio,PSNR)性能指標(biāo)對重構(gòu)的視頻幀圖像與原始圖像進(jìn)行客觀評價,其中MSE 表達(dá)式為[28]
其中:I (i,j) 和 K (i,j) 分別代表原始圖像和重構(gòu)后圖像的像素值,且1 ≤ i ≤m,1 ≤ j ≤n,則PSNR 的表達(dá)式為[28]
字典學(xué)習(xí)稀疏編碼方法是從數(shù)據(jù)中不斷學(xué)習(xí)得到最佳稀疏表示的過程,使字典基能夠包含需要表示圖像的基本信息,本文采用的字典學(xué)習(xí)算法是K-SVD 算法[19]。
字典學(xué)習(xí)的主要思想是,利用原子數(shù)為K 的字典矩陣D∈Rm×K,稀疏線性表示原始視頻數(shù)據(jù)幀矩陣Y∈Rm×n(其中m,n 分別表示視頻數(shù)據(jù)幀矩陣的行數(shù)與列數(shù)),即有Y=DX,其中X∈RK×n為稀疏矩陣,將上述問題用數(shù)學(xué)語言描述為如下優(yōu)化問題[19]:
其中:xi(i=1,2,.....,K)為稀疏矩陣中的行向量,ε 為允許的誤差。
LT 碼的編碼由W 個的原始數(shù)據(jù)包生成任意數(shù)量的編碼包,譯碼器接收編碼包中的任意Z 個,即可高概率通過譯碼恢復(fù)出全部原包。其編解碼實現(xiàn)過程如下:首先從度分布函數(shù)ρ(d)中隨機選擇一個度值d;從W 個原始數(shù)據(jù)包中隨機地等概率選取d 個不同原始數(shù)據(jù)包,并將這d 個原包進(jìn)行模二和運算,生成一個編碼包,重復(fù)上述過程,即可得到任意數(shù)量編碼包;最后再利用高斯消元法即可完成LT 碼譯碼過程[29]。
LDPC 碼是一種線性分組碼,其校驗矩陣H的結(jié)構(gòu)對碼的性能有決定性影響。本文采用Gallager 的隨機構(gòu)造法產(chǎn)生校驗矩陣H;然后通過矩陣換算得到生成矩陣G,再通過信息矩陣與生成矩陣相乘得到LDPC碼的編碼矩陣;最后采用置信傳播譯碼算法完成LDPC 碼的譯碼[27]。
本文提出的一種基于字典學(xué)習(xí)和LT碼級聯(lián)LDPC碼的視頻聯(lián)合編碼方案如圖3 所示。發(fā)送端為了壓縮視頻數(shù)據(jù),首先將數(shù)幀背景變化不大的視頻流作為一個圖像組,并隨機選取信息作為初始字典,通過K-SVD 算法得到圖像組的字典基;然后利用字典基、每幀圖像的矩陣信息與設(shè)定的稀疏度經(jīng)過正交匹配追蹤(orthogonal matching pursuit,OMP)算法得到每幀圖像的稀疏矩陣[30]。假設(shè)一個圖像組有M 幀,每幀是N×N 大小的矩陣,設(shè)置稀疏度為K,原子數(shù)為E,對一個圖像組進(jìn)行字典學(xué)習(xí)稀疏編碼之后得到一個字典和M 個稀疏矩陣,并將非零數(shù)值作為有效信息進(jìn)行傳輸,則圖像組的壓縮率為(compression ratio,CR):
發(fā)送端為可靠的發(fā)送數(shù)據(jù)并確保接收端可以高質(zhì)量恢復(fù),將得到的字典基和稀疏矩陣進(jìn)行信道編碼。采用具有很強糾刪能力的LT 碼作為外碼,為了確保LT 碼的編碼數(shù)據(jù)是有效的,發(fā)送端接一級反饋回路。采用糾錯能力很強的LDPC 碼作為內(nèi)碼,對每次LT編碼的編碼包進(jìn)行再編碼。接收端進(jìn)行相應(yīng)的LDPC譯碼以及LT 譯碼,但為了確保級聯(lián)譯碼的數(shù)據(jù)誤碼率處在較低值,再接一級反饋回路至發(fā)送端。最后,再進(jìn)行字典學(xué)習(xí)稀疏譯碼,還原出圖像組,并重建出視頻流。
將經(jīng)字典學(xué)習(xí)稀疏編碼后得到的字典基和稀疏矩陣通過信道編碼送入水下信道傳輸,其發(fā)送數(shù)據(jù)包的幀格式設(shè)計如圖4 所示。首先字典數(shù)值在(-1,1)范圍內(nèi),按照符號、矩陣數(shù)值打包作為字典的數(shù)據(jù)幀;從稀疏矩陣的數(shù)值中按符號、序號、整數(shù)部分和小數(shù)部分打包作為稀疏矩陣的數(shù)據(jù)幀;經(jīng)過LT 編碼和CRC 校驗后轉(zhuǎn)成包含信息數(shù)據(jù)、度信息和校驗位的幀格式;再經(jīng)LDPC 編碼后轉(zhuǎn)成包含信息位和冗余位的幀格式;在每個發(fā)送數(shù)據(jù)包的前面加上FF FF FF FF 的幀頭,得到設(shè)計的發(fā)送數(shù)據(jù)包幀格式,按該幀格式將數(shù)據(jù)包發(fā)送至水下信道進(jìn)行傳輸。
圖3 基于字典學(xué)習(xí)和LT 碼級聯(lián)LDPC 碼的視頻聯(lián)合編碼方案Fig.3 Video joint coding scheme based on dictionary learning and the concatenation of LT code and LDPC code
圖4 發(fā)送數(shù)據(jù)包幀格式Fig.4 Frame format of sending data packet
在信道編碼過程中,LT 碼雖然具有顯著的糾刪能力,但仍然存在譯碼失敗概率、譯碼開銷過大等問題。針對譯碼失敗的問題,本文提出一種LT 碼譯碼成功雙反饋機制,即發(fā)送端不斷發(fā)送編碼包,第一級反饋確保發(fā)送的數(shù)據(jù)是有效數(shù)據(jù);接收端不斷譯碼,第二級反饋確保最終LT 譯碼成功。針對譯碼開銷過大的問題,本文采用LDPC 碼作為內(nèi)碼,通過糾正各編碼包的誤碼,達(dá)到提升有效編碼包數(shù),從而實現(xiàn)較低譯碼開銷下的數(shù)據(jù)傳輸。
圖5 展示了LT 碼級聯(lián)LDPC 碼的碼字設(shè)計和實現(xiàn)過程:首先,將數(shù)據(jù)1 進(jìn)行LT 編碼,得到n 個編碼包,并對n 個編碼包直接譯碼來判斷是否是有效數(shù)據(jù),如果不是,則編碼包數(shù)加1 并重新編碼,直至為有效數(shù)據(jù),得到n+i 個編碼包;將n+i 個編碼包分別進(jìn)行LDPC 編碼得到n+i 個級聯(lián)編碼包,并送入水下通信信道。其次,由于信道的刪除特性,丟失m 個數(shù)據(jù)包,只接收到n+i?m 個級聯(lián)譯碼包,分別進(jìn)行LDPC譯碼與LT 譯碼。最后,判定LT 譯碼是否成功,若成功,則得到數(shù)據(jù)2;否則,編碼包數(shù)加1,重新再進(jìn)行編碼,直到譯碼成功。級聯(lián)編碼實現(xiàn)了在較低的譯碼開銷下,抑制丟包帶來的影響,將誤碼率降到最低且譯碼成功率為1。
圖5 LT 碼級聯(lián)LDPC 碼的碼字設(shè)計和實現(xiàn)過程Fig.5 Codeword design and implementation process of the concatenation of LT code and LDPC code
由于LT 編碼具有較強的糾刪性能,數(shù)據(jù)包的丟失對譯碼性能影響較小。但存在譯碼失敗概率、譯碼開銷較大等問題。為此,通過級聯(lián)LDPC 碼,利用該碼較強的糾錯能力,達(dá)到提升有效編碼包數(shù)和減少譯碼開銷的目的;采用LT 碼譯碼成功雙反饋機制,確保發(fā)送的噴泉包數(shù)據(jù)是有效數(shù)據(jù),且使譯碼成功率為1。通過仿真實驗驗證以LT 碼作為外碼,LDPC 碼作為內(nèi)碼的級聯(lián)編碼方案的可行性。
根據(jù)LT 碼的譯碼成功具有一定的隨機性,為確定最佳的編碼包數(shù)及譯碼開銷情況,在仿真實驗中,計算機運行次數(shù)設(shè)置在10 萬次,設(shè)置LT 編碼的原包數(shù)為64,包的大小為16 bit,譯碼成功判定閾值為0.05,信道誤碼率為0.005。統(tǒng)計了譯碼成功時不同編碼包數(shù)出現(xiàn)的次數(shù),如圖6 所示。結(jié)果顯示,編碼包數(shù)目出現(xiàn)的次數(shù)近似服從泊松分布。將出現(xiàn)次數(shù)最多的編碼包數(shù)認(rèn)定為最佳編碼包數(shù),將最佳編碼包數(shù)與原包數(shù)之比定義為譯碼開銷[30]。
圖6 編碼包數(shù)的統(tǒng)計分布情況Fig.6 Statistical distribution of the number of encoded packets
圖7 為在不同信道誤碼率和編碼方式下,譯碼開銷隨譯碼成功判定閾值的變化情況。從圖中可以看出,隨著譯碼成功判定閾值的增加,LT 碼的譯碼開銷逐漸減少,而級聯(lián)碼的譯碼開銷緩慢減少。這是因為LT編碼方式在較小的譯碼成功判定閾值下,需要花費較大的譯碼開銷才可譯碼成功;而在級聯(lián)編碼方式下,LDPC 碼較強的糾錯性能使得譯碼開銷比較穩(wěn)定。并且,信道誤碼率增加0.01,LT 碼的譯碼開銷最大增加了5 個單位左右,可見信道誤碼率是影響LT 碼譯碼開銷的重要因素。
另外,由于系統(tǒng)模擬了遠(yuǎn)距離弱鏈路情形,因此系統(tǒng)處于高誤碼率條件下。而文獻(xiàn)[31]研究了LDPC碼級聯(lián)RS 碼在光纖傳輸系統(tǒng)中的應(yīng)用,通過系統(tǒng)實驗得出糾錯極限可以達(dá)到約2×10-2。本文研究的水下無線光通信系統(tǒng)中LT 碼級聯(lián)LDPC 碼以及提出的譯碼成功雙反饋機制,甚至可以在信道誤碼率為6×10-2的條件下實現(xiàn)水下通信。同時,級聯(lián)編碼與LT 編碼方式相比,可顯著減少譯碼開銷,由圖7 可知,譯碼開銷的數(shù)據(jù)量最大可減少64.5%左右。文獻(xiàn)[32]提出的基于部分信息LT 碼的修正轉(zhuǎn)移魯棒孤子分布方法,可以實現(xiàn)譯碼開銷降低1%~2%。與該文獻(xiàn)相比,本文通過級聯(lián)LDPC 碼的方法可以大大降低LT 碼的譯碼開銷。
圖7 譯碼成功判定閾值與譯碼開銷關(guān)系Fig.7 The relationship between the judgement thresholds of decoding success and the encoding consumption
圖8 給出了在不同的視頻壓縮率下,信道誤碼率設(shè)置為0.06 時,譯碼成功判定閾值與平均PSNR 值關(guān)系曲線。從圖中可以看出,隨著譯碼成功判定閾值的增加,視頻幀平均PSNR 值逐漸降低。說明了在譯碼成功判定閾值較大時,允許系統(tǒng)在較大誤碼率下還原信息,從而導(dǎo)致平均PSNR 值較小。同時,視頻壓縮率越大,平均PSNR 值越小。這表明在視頻壓縮率較大時,系統(tǒng)傳輸?shù)男畔?shù)據(jù)量較少,從而還原信息時平均PSNR 值較小。
圖8 譯碼成功判定閾值與平均PSNR 關(guān)系Fig.8 The relationship between the judgement thresholds of decoding success and the average PSNR
前面已經(jīng)通過仿真實驗驗證了以LDPC 碼作為內(nèi)碼克服了LT 編碼的缺點,并提高了信道的可靠性,表明級聯(lián)編碼方法的可行性。同時,為了減少信源數(shù)據(jù)量,通過字典學(xué)習(xí)稀疏編碼可以對視頻起到壓縮作用,說明了在仿真條件下水下單光子視頻傳輸中聯(lián)合編碼方案的可行性。下面通過實驗系統(tǒng)進(jìn)一步驗證該方案的可實施性。
在系統(tǒng)實驗中信道誤碼率測得為0.06,波特率設(shè)置為500 kbps。圖9(a)為視頻中的四幀原圖;9(b)為未加信道編碼單光子視頻傳輸結(jié)果;9(c)為級聯(lián)編碼時無反饋電路的單光子視頻傳輸結(jié)果;9(d)為一級反饋下的單光子視頻傳輸結(jié)果。圖9 顯示,無信道編碼時平均PSNR 值僅為1.0125 dB,直觀效果很差;級聯(lián)編碼后也只將PSNR 值提升至7.7488 dB,效果依舊很差;最后在發(fā)送端加入一級反饋,圖片效果提升明顯,但平均PSNR 值也只有15.0811 dB。上述說明,加入級聯(lián)編碼以及一級反饋對單光子視頻傳輸結(jié)果中圖片質(zhì)量有一定的改善,但質(zhì)量依舊不佳。
圖9 不同處理方式下的四幀圖像比較Fig.9 Comparison of four frames of images under different processing methods
針對上述問題,加入級聯(lián)編碼以及二級反饋回路,結(jié)果如圖10 所示。該圖顯示了在不同視頻壓縮率下,單光子視頻傳輸結(jié)果及其圖像的平均PSNR 值。在視頻壓縮率分別為75.6%、69.7%、58.0%時,圖像的平均PSNR 值分別為37.4921 dB、39.3372 dB、42.7223 dB,說明了視頻壓縮率越大,圖像的平均PSNR 值越小,并且重建的圖像直觀效果優(yōu)良。因此,在水下單光子視頻傳輸中,聯(lián)合編碼方案可以實現(xiàn)在視頻壓縮率為75.6%的情況下,以圖像平均PSNR 值為37.4921 dB 重建出優(yōu)良的視頻流。而文獻(xiàn)[28]研究了一種基于分布式壓縮感知的單光子視頻傳輸系統(tǒng),該方案實現(xiàn)了在測量率為66.7%(即壓縮率為33.3%)時,以平均PSNR值大約34.5 dB 重建視頻幀。與該文獻(xiàn)實驗結(jié)果相比,無論是從壓縮率還是圖像重建質(zhì)量,本文的技術(shù)指標(biāo)都有一定的提升。
圖10 不同壓縮率下的四幀圖像比較Fig.10 Comparison of four frames of images under different compression ratios
本文搭建了水下單光子視頻通信系統(tǒng),為實現(xiàn)高有效性和高可靠性的視頻傳輸,提出并驗證了一種基于字典學(xué)習(xí)和LT 碼級聯(lián)LDPC 碼的視頻聯(lián)合編碼方案。采用字典學(xué)習(xí)稀疏編碼方式,極大地減少了視頻數(shù)據(jù)的傳輸量,提高了通信系統(tǒng)的有效性。實驗分析了編碼方式與譯碼成功判定閾值對譯碼開銷的影響,結(jié)果證明,級聯(lián)編碼可以克服LT 碼譯碼開銷過大的缺點;同時,譯碼開銷隨譯碼成功判定閾值的增加而減小。本文提出的譯碼成功雙反饋機制,不僅解決了LT 碼存在的譯碼失敗概率問題,也實現(xiàn)了在高誤碼率的通信環(huán)境下清晰恢復(fù)視頻幀。實驗結(jié)果表明,隨著視頻壓縮率增加,平均PSNR 越??;當(dāng)信道誤碼率處于10-2數(shù)量級、視頻壓縮率為75.6%時,可以實現(xiàn)平均PSNR 為37.4921 dB 重建視頻幀。