《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 光電經(jīng)緯儀圖像實時壓縮的實現(xiàn)
光電經(jīng)緯儀圖像實時壓縮的實現(xiàn)
2014年微型機與應(yīng)用第16期
王凱凱1,2,孫科林1,周 佩1,2
1.中科院光電技術(shù)研究所,四川 成都2.中國科學(xué)院大學(xué),北京
摘要: 針對光電經(jīng)緯儀高幀頻和高分辨率圖像實時壓縮難以實現(xiàn)的問題,在TI公司提供的H.264單核編碼開源工程和多核并行算法的基礎(chǔ)上,提出了基于TMS320C6678多核處理器的H.264并行算法。在單核編碼開源工程實現(xiàn)多核并行視頻編碼,將每幀圖像平均劃分成多個Slice,每個DSP核處理一個Slice。實驗結(jié)果表明,與單核視頻編碼相比,多核并行視頻編碼的加速與比核數(shù)的增加呈線性增長,在TMS320C6678多核處理器上實現(xiàn)光電經(jīng)緯儀的實時圖像壓縮具備較強的工程實踐性
Abstract:
Key words :

  摘  要: 針對光電經(jīng)緯儀高幀頻和高分辨率圖像實時壓縮難以實現(xiàn)的問題,在TI公司提供的H.264單核編碼開源工程和多核并行算法的基礎(chǔ)上,提出了基于TMS320C6678多核處理器的H.264并行算法。在單核編碼開源工程實現(xiàn)多核并行視頻編碼,將每幀圖像平均劃分成多個Slice,每個DSP核處理一個Slice。實驗結(jié)果表明,與單核視頻編碼相比,多核并行視頻編碼的加速與比核數(shù)的增加呈線性增長,在TMS320C6678多核處理器上實現(xiàn)光電經(jīng)緯儀的實時圖像壓縮具備較強的工程實踐性。

  關(guān)鍵詞: 光電經(jīng)緯儀;H.264;TMS320C6678;實時壓縮;Slice

  隨著高幀頻、高分辨率成像傳感器技術(shù)在光電經(jīng)緯儀領(lǐng)域的廣泛應(yīng)用,光電經(jīng)緯儀圖像在傳輸和存儲過程中將占用更大帶寬和更多存儲資源,因此有必要對圖像進(jìn)行實時壓縮。

  在當(dāng)前眾多視頻編碼標(biāo)準(zhǔn)中,H.264因其高數(shù)據(jù)壓縮率和友好的網(wǎng)絡(luò)親和性得到廣泛應(yīng)用[1-2]。但是,H.264更高的計算復(fù)雜度帶來了更長的編碼時間,參考文獻(xiàn)[3]以x264為基礎(chǔ),僅僅實現(xiàn)了時域可伸縮的編碼方案,也只能支持最大分辨率QVGA的實時編碼,這一困境使得H.264很難在光電經(jīng)緯儀實時圖像傳輸系統(tǒng)中應(yīng)用。

  本文立足多核DSP和H.264編碼層次結(jié)構(gòu)的研究,在TMS320C6678多核DSP上實現(xiàn)H.264的多核并行壓縮編碼,在TI公司提供的H.264開源工程單核編碼的基礎(chǔ)上,實現(xiàn)對光電經(jīng)緯儀圖像的實時壓縮。

1 H.264多核并行算法分析

  基于Slice級的并行算法是將每幀圖像劃分為多個Slice[4],因為同一幀的各個Slice之間沒有數(shù)據(jù)依賴,所以可以實現(xiàn)并行編碼。當(dāng)把一幀圖像分成多個Slice后,降低了圖像內(nèi)部相關(guān)性,但過多的Slice劃分會對圖像質(zhì)量產(chǎn)生影響,因此不能無限制地進(jìn)行Slice劃分[5]。

  在同一幅圖像上,不同的區(qū)域其內(nèi)容復(fù)雜度也可能各不相同[6],使得各個Slice的編碼時間各不相同,直接導(dǎo)致了整個編碼器的均衡程度降低。另一方面,在編碼下一幀圖像之前,各個核必須完成對應(yīng)Slice的編碼,因此各個Slice必須在編碼下一幀圖像之前進(jìn)行同步,同步的時間直接取決于各個核對Slice編碼的均衡程度。

2 H.264核心代碼結(jié)構(gòu)分析


001.jpg


  本文基于H.264單核編碼實現(xiàn)多核并行壓縮,   H.264單核編碼的流程圖如圖1所示。H.264工程對編碼參數(shù)和存儲空間初始化后,循環(huán)調(diào)用Encode_one_frame部分,對每一幀圖像進(jìn)行編碼,直至最后一幀。在H.264開源工程的基礎(chǔ)上,給出了基于Slice的多核并行壓縮編碼,流程圖如圖2所示。編碼前先對一幀圖像進(jìn)行Slice劃分,當(dāng)所有內(nèi)核完成相應(yīng)Slice編碼后進(jìn)行多核同步,然后才能進(jìn)行下一幀圖像的編碼。依此類推,直至最后一幀圖像編碼完成。

3 H.264的DSP實現(xiàn)

  本文選擇TI codec庫提供的H.264開源工程[7],該程序在作者實驗室的DSP+FPGA圖像處理開發(fā)板上實現(xiàn),運行頻率為1 GHz,編譯環(huán)境為CCS v5.0。

  多核并行編碼的實現(xiàn)是把一幀圖像分為多個Slice,由多個處理器核來實現(xiàn)每個Slice的壓縮算法。經(jīng)過對H.264工程的研究,Slice劃分算法的實現(xiàn)可以由以下兩種方式來實現(xiàn):

 ?。?)按照宏塊數(shù)目平均劃分(這里宏塊大小為16宏塊數(shù)),如式(1)所示:

  1.png

  其中,image_height為圖像的高度,ncores為參與編碼并行核數(shù),m[ncores]為每個Slice的邊界(單位為行)。ncores個核并行處理的Slice邊界分別為:

  核0:(0~m[ncores])(表示核0處理第0~m[ncores]行的數(shù)據(jù))

  核1:(m[ncores]~2×m[ncores])

  …

  核7:(7×m[ncores]~8×m[ncores])

  單核并行處理時只調(diào)用核0,雙核時調(diào)用核0~1,四核時調(diào)用核0~3。

 ?。?)按照宏塊計算復(fù)雜度平均劃分(這里的宏塊大小為16×16)。首先計算出一幀圖像中每個宏塊的計算復(fù)雜度,記為cost[i],i為宏塊的序列號;其次,計算所有宏塊的總計算復(fù)雜度,記為Total_cost;最后,按照Total_cost來平均劃分Slice邊界:

  23.jpg

  其中,M[j]為宏塊的序列號,j為實現(xiàn)次數(shù)。計算Slice邊界步驟如下:

 ?、佼?dāng)式(2)中的條件首次實現(xiàn)時,記錄M[1],并將M[1]帶入式(3)中,計算出第一個Slice的行數(shù)N[1];

  ②ncores變?yōu)閚cores-1,i由0變?yōu)镸[1],Total_cost減去式(2)的左值,得到新的Total_cost;

  ③轉(zhuǎn)到步驟①,計算下一個新的M[2]值,直到ncores為0,停止計算,可以得到ncores個核并行處理的Slice邊界為:

  核0:(0~M[1])

  核1:(M[1]~M[2])

  …

  核7:(M[7]~M[8])

4 實驗結(jié)果分析

  為了測試H.264編碼算法在TMS320C6678多核處理器上的并行實現(xiàn),實驗中將相同YUV視頻序列分別使用(1)、(2)兩種Slice劃分算法實現(xiàn),這兩種算法均經(jīng)過單核、雙核、四核分別運行。本文實驗對象為YUV420P格式10幀圖像,幀排序方式為IPPP,輸出為H.264格式。對比不同劃分算法的多核并行處理結(jié)果如表1、2所示。

  從表1、2可看出,第1幀的處理時間為剩余9幀的一半,這是因為第1幀編碼為I幀,是幀內(nèi)預(yù)測;而第2~10幀圖像都是P幀,是幀間預(yù)測。劃分算法(1)單核情況下每幀圖像的處理時間與劃分算法(2)單核情況下的處理時間相同,這是因為單核情況下,每幀圖像都為一個Slice;在雙核情況下,劃分算法(2)相對于劃分算法(1)在處理上有5%的提升;四核情況下,劃分算法(2)相對于劃分算法(1)在時間上有很小的提升。

  劃分算法(2)相對于算法(1)在性能上能有所提升是因為本實驗所選擇的圖像的計算復(fù)雜度分布不均勻,算法(2)是以一幀圖像的宏塊復(fù)雜度為基礎(chǔ)來平均劃分一幀圖像的,因此對于一幀圖像來說,每片Slice所分配的計算負(fù)載更加平均,比算法(1)的按行數(shù)平均劃分處理時間要減少。

  單核、雙核、四核并行處理加速比對比結(jié)果如表3所示。

004.jpg

  從表3可以看出,在四核處理情況下,劃分算法(1)的加速比是單核處理的3.6倍,劃分算法(2)相對于劃分算法(1)性能上有很小的提升;在雙核情況下,劃分算法(1)的加速比約為單核處理的1.84倍,而劃分算法(2)相對于劃分算法(1)的性能有6%的提升。

  單核、雙核、四核的處理加速比沒有與并行核數(shù)完全成線性關(guān)系的原因是:(1)每幀圖像劃分的每個Slice的計算復(fù)雜度不同,因此編碼所需的時間也不同,每幀圖像需要等到編碼最慢的Slice完成,才算一幀圖像編碼結(jié)束;(2)每個Slice都包含獨立的頭信息,在編碼時會有額外的讀取頭信息的時間消耗。

  由表1、2可以得出,單核處理的幀率為82 f/s,雙核處理的幀率達(dá)到150~160 f/s,四核處理的幀率達(dá)到了300 f/s,可以看出多核并行用于實現(xiàn)光電經(jīng)緯儀圖像實時壓縮的潛能。

  本文針對光電經(jīng)緯儀高幀頻和高分辨率圖像實時壓縮難以實現(xiàn)的問題,對H.264算法在TMS320C6678上的多核并行進(jìn)行了研究,在H.264單核編碼的基礎(chǔ)上實現(xiàn)了兩種Slice級多核并行壓縮編碼算法,分別實現(xiàn)了光電經(jīng)緯儀圖像實時壓縮的功能。

  本文的試驗驗證了多核并行壓縮算法在實時壓縮方面的可行性,對Slice劃分算法的優(yōu)化沒有進(jìn)行詳細(xì)研究,這是下一步研究的重點。

  參考文獻(xiàn)

  [1] 張紀(jì)鈴,夏超,黃富良.一種基于H264編碼標(biāo)準(zhǔn)的快速運動估計算法[J].電子測量技術(shù),2009,32(8):69-73.

  [2] 許春冬,姚萌,廖薇.基于DM642的T264視頻編碼器優(yōu)化[J].新特器件應(yīng)用,2009,11(12):11-13,17.

  [3] 孔群娥,曾學(xué)文.基于x264實現(xiàn)H.264的時域可伸縮編碼[J].微計算機應(yīng)用,2011,32(3):24-28.

  [4] 黃亮.基于多核處理器的SVC高清實時編碼[J].計算機工程與應(yīng)用,2013,49(13):170-174.

  [5] 夏齡,舒濤.一種H.264/AVC視頻編碼并行算法[J].計算機工程,2013,39(4):314-317.

  [6] 陳曉娟,陳淑榮.實時視頻圖像的清晰度檢測算法研究[J].微型機與應(yīng)用,2010,29(17):36-38.

  [7] 彭旭鋒,劉文怡,李金力.基于DSP和FPGA的實時圖像壓縮系統(tǒng)設(shè)計[J].微型機與應(yīng)用,2019,29(11):17-20.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。