新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Blackfin533的CCSDS圖像壓縮算法編碼優(yōu)化

基于Blackfin533的CCSDS圖像壓縮算法編碼優(yōu)化

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

摘要 通過(guò)程序結(jié)構(gòu)的調(diào)整,編碼結(jié)構(gòu)的優(yōu)化及代碼的匯編級(jí)優(yōu)化,完成編碼器的高效實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,優(yōu)化后的編碼器降低了運(yùn)算復(fù)雜度,提高了CCSDS圖像壓縮算法的實(shí)時(shí)性。
關(guān)鍵詞 CCSDS;Blackfin533;編碼器;優(yōu)化

空間數(shù)據(jù)咨詢(xún)會(huì)(CCSDS)于2005年11月提出的針對(duì)空間應(yīng)用的CCSDS圖像壓縮算法,具有良好的圖像壓縮性能和抗誤碼能力,同時(shí)算法復(fù)雜度較低。但在具體硬件實(shí)現(xiàn)時(shí),仍不能夠滿(mǎn)足實(shí)時(shí)高效的要求,因此,必須對(duì)該算法的硬件實(shí)現(xiàn)進(jìn)行改進(jìn)和優(yōu)化。文中針對(duì)這一問(wèn)題,提出編碼優(yōu)化方案,提高算法的實(shí)時(shí)性。采用ADI公司的Blackfin533芯片以及Visual ++5.0仿真平臺(tái),是實(shí)現(xiàn)CCSDS編碼器的有效途徑。

1 編碼優(yōu)化
文中采用CCSDS圖像壓縮算法編、解碼的C程序源代碼。通過(guò)以下幾個(gè)方面實(shí)現(xiàn)優(yōu)化:調(diào)整程序結(jié)構(gòu);編碼結(jié)構(gòu)的優(yōu)化;代碼的匯編級(jí)優(yōu)化。
1.1 程序結(jié)構(gòu)調(diào)整
選用的源代碼是符合CCSDS圖像壓縮算法標(biāo)準(zhǔn)流程的編、解碼器源代碼,代碼容量約為326 kB,對(duì)于實(shí)時(shí)圖像壓縮,其中含有大量的冗余代碼,而所用芯片的64 kB指令存儲(chǔ)器是遠(yuǎn)遠(yuǎn)滿(mǎn)足不了要求的,因此,要將CCSDS源代碼移植到上,就必須調(diào)整程序結(jié)構(gòu),去掉冗余代碼,降低程序所占內(nèi)存。
(1)刪除與編碼無(wú)關(guān)的代碼。(2)刪除冗余判斷。(3)刪除不必要的中間變量。(4)改寫(xiě)編碼主函數(shù)。
經(jīng)過(guò)以上優(yōu)化,代碼容量降低為56 kB,這樣,所選用的Blackfin533芯片的L1指令存儲(chǔ)器就足以容納,而無(wú)需利用高速Cache和DMA進(jìn)行指令的傳輸,提高了編碼效率。
1.2 主要函數(shù)和數(shù)據(jù)的優(yōu)化
在以上優(yōu)化的基礎(chǔ)上,采用Blackfin533芯片對(duì)Lena圖像進(jìn)行壓縮,壓縮比率為8:1,時(shí)間為3425 ms,遠(yuǎn)達(dá)不到實(shí)時(shí)性的要求。因此,還需對(duì)編碼結(jié)構(gòu)和算法進(jìn)行改進(jìn),以提高編碼速度。
(1)編碼選項(xiàng)的選取。
在CCSDS圖像壓縮算法中有多種編碼供選取,增大了算法的靈活性,但也增加了算法硬件實(shí)現(xiàn)的復(fù)雜度,并且這些編碼選項(xiàng)在實(shí)現(xiàn)時(shí)存在大量判斷語(yǔ)句。一般情況下,判斷分支會(huì)打斷DSP指令運(yùn)行的流水線(xiàn),從而影響編碼運(yùn)行時(shí)間。所以在進(jìn)行DSP移植時(shí)應(yīng)進(jìn)行編碼選項(xiàng)。
1)編碼段大小S的選?。喝鐖Dl所示,S>64時(shí),重建圖像的客觀(guān)質(zhì)量增加趨于平緩,所以在實(shí)現(xiàn)時(shí)選擇S大小為64,這樣一個(gè)編碼段所需的編碼原數(shù)據(jù)存儲(chǔ)量為8kB,從而可以保證對(duì)編碼段的編碼過(guò)程在數(shù)據(jù)存儲(chǔ)器L1中完成,而無(wú)需Cache和DMA在各級(jí)存儲(chǔ)器之間轉(zhuǎn)移數(shù)據(jù),提高了編碼效率。
a.JPG

2)DC系數(shù)編碼選項(xiàng)k的選?。簶?biāo)準(zhǔn)中提供了最優(yōu)化和啟發(fā)式兩種k值選擇方式,文中選擇復(fù)雜度較低的啟發(fā)式選取方案。
(2)程序級(jí)優(yōu)化。
1)Blackfin533是16位定點(diǎn)DSP處理器,而在源代碼中使用的是浮點(diǎn)DWT,移植在定點(diǎn)DSP中運(yùn)行需要大量時(shí)間。測(cè)試結(jié)果表明:對(duì)512× 512的圖像進(jìn)行浮點(diǎn)DWI變換耗時(shí)3000 ms以上,影響了CCSDS圖像壓縮算法的編碼效率。因此在實(shí)現(xiàn)過(guò)程中,采用定點(diǎn)化的方法實(shí)現(xiàn)浮點(diǎn)DWT,并最終匯編化,使對(duì)圖像進(jìn)行浮點(diǎn)DWT處理的時(shí)間降低到12 ms以下。
2)源代碼中有大量數(shù)組類(lèi)型的指針變量,其緩沖區(qū)是通過(guò)malloc和calloc等函數(shù)進(jìn)行動(dòng)態(tài)分配的,這樣會(huì)占用大量的編碼時(shí)間和可能會(huì)導(dǎo)致內(nèi)存泄露以及導(dǎo)致DMA數(shù)組傳輸錯(cuò)誤等問(wèn)題,所以在實(shí)現(xiàn)過(guò)程中,由于所需編碼的圖像信息是可以事先得知的,于是可用靜態(tài)數(shù)組來(lái)代替動(dòng)態(tài)申請(qǐng)的數(shù)組,這樣不僅指定了分配的位置,便于DMA傳輸,還縮短了編碼時(shí)間。
3)編碼塊的數(shù)據(jù)格式選取:源代碼中是將一個(gè)編碼塊按照二維數(shù)組的格式進(jìn)行存儲(chǔ)的,即8×8的格式。在實(shí)現(xiàn)過(guò)程中發(fā)現(xiàn),DC系數(shù)編碼及AC系數(shù)字的映射過(guò)程對(duì)二維數(shù)組的索引取值耗時(shí)很長(zhǎng),因此可以將編碼塊改成一維數(shù)組,即1×64的組織形式,這樣在實(shí)現(xiàn)過(guò)程中可以減少編碼時(shí)間。
4)用查表法代替大量的判斷分支:AC系數(shù)熵編碼函數(shù)RiceCoding中有大量的分支判斷語(yǔ)句,占據(jù)大量的編碼時(shí)間,用查表法替換這里的分支判斷語(yǔ)句,可以使函數(shù)的編碼時(shí)間減少80%以上。此外,CCSDS編碼器代碼中的大量分支判斷語(yǔ)句和RiceCoding函數(shù)一樣,也可用查表法實(shí)現(xiàn)。這正是以空間換時(shí)間的典型應(yīng)用。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: DSP

評(píng)論


相關(guān)推薦

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

關(guān)閉