華中光電技術(shù)研究所——武漢光電國(guó)家實(shí)驗(yàn)室 朱志強(qiáng)
基于JPEG2000的圖像壓縮碼流測(cè)試系統(tǒng)設(shè)計(jì)
華中光電技術(shù)研究所——武漢光電國(guó)家實(shí)驗(yàn)室 朱志強(qiáng)
隨著現(xiàn)代通信技術(shù)的發(fā)展,要求傳輸?shù)膱D像信息量越來(lái)越大。為了有效地傳輸和存儲(chǔ)圖像,有必要壓縮圖像的數(shù)據(jù)量。本文利用專(zhuān)用壓縮芯片ADV212的高效壓縮性,對(duì)基于JPEG2000圖像壓縮的碼流進(jìn)行測(cè)試,驗(yàn)證了壓縮效果。
壓縮;JPEG2000;測(cè)試
圖像數(shù)據(jù)之所以能被壓縮,有兩方面的根據(jù)。一方面是圖像信號(hào)中存在大量冗余度可供壓縮,并且這種冗余度在解碼后還可無(wú)失真地恢復(fù);另一方面是可以利用人的視覺(jué)特性,在不被主觀視覺(jué)覺(jué)察的容限內(nèi),通過(guò)減少表示信號(hào)的精度,以一定的客觀失真換取數(shù)據(jù)壓縮。
本文利用專(zhuān)用壓縮芯片ADV212的高效壓縮性,利用解碼軟件對(duì)符合JPEG2000標(biāo)準(zhǔn)的壓縮碼流進(jìn)行測(cè)試,驗(yàn)證壓縮效果。
2.1 JPEG2000碼流標(biāo)準(zhǔn)
JPEG2000壓縮標(biāo)準(zhǔn)作為靜止圖像壓縮的最新標(biāo)準(zhǔn),與原先的JPEG壓縮標(biāo)準(zhǔn)最大的不同在于運(yùn)用離散小波變換代替了離散余弦變換,這是該壓縮標(biāo)準(zhǔn)實(shí)現(xiàn)高性能壓縮的最大關(guān)鍵之處[1]。通常來(lái)講,JPEG2000壓縮標(biāo)準(zhǔn)的編碼流程示意圖如圖1所示。
圖1 JPEG2000標(biāo)準(zhǔn)編碼流程示意圖
首先對(duì)源圖像數(shù)據(jù)進(jìn)行離散小波變換,然后對(duì)變換后的小波系數(shù)進(jìn)行量化,接著對(duì)量化后的數(shù)據(jù)熵編碼,最后形成輸出碼流。
JPEG2000的處理對(duì)象不是整幅圖像,而是把圖像分成若干圖像片(image tiles),對(duì)每一個(gè)圖像片進(jìn)行獨(dú)立的編解碼操作。
2.2 壓縮芯片介紹
ADV212是AD公司推出的一款用于視頻和靜止圖像壓縮的編解碼芯片,工作模式可以通過(guò)設(shè)置內(nèi)部寄存器來(lái)靈活配置[2]。對(duì)靜態(tài)圖像壓縮,ADV212單分量圖像支持最大長(zhǎng)或?qū)挒?096個(gè)像素點(diǎn)的圖像,更大的圖像需要先分塊再處理
2.3 壓縮碼流特點(diǎn)
下面根據(jù)ADV212壓縮后輸出的壓縮碼流來(lái)介紹壓縮碼流的特點(diǎn)。
圖2 ADV212壓縮后碼流
圖2 所示為ADV212壓縮后輸出的壓縮碼流,其中0xFFFFFFF1是壓縮碼流的幀頭,0x0是ADV212內(nèi)部對(duì)壓縮圖像的塊編號(hào),0x01是輸出碼流格式,這里指的是J2C格式,0x04是VFORMAT參數(shù),0x00保留,0x02是頭版本編號(hào),0x0320是壓縮碼流的32bit個(gè)數(shù),后面跟的是JPEG2000的主標(biāo)頭,0xFF4F表示碼流開(kāi)始,0xFF51表示圖像和拼接塊大小,后面跟的就是壓縮碼流。
我們運(yùn)用解壓縮軟件對(duì)壓縮碼流進(jìn)行解壓,只有在收到的壓縮數(shù)據(jù)符合JPEG2000標(biāo)準(zhǔn)后,才會(huì)正常顯示圖像,否則跳過(guò)此塊的壓縮數(shù)據(jù),而進(jìn)行后面的解壓工作,在顯示界面上則會(huì)出現(xiàn)丟塊現(xiàn)象。解碼軟件設(shè)計(jì)流程圖如圖3。
圖3 軟件解碼流程圖
解壓縮具體步驟如下:
a.首先判斷壓縮碼流中JPEG2000的碼頭是否正確。解壓縮系統(tǒng)收到壓縮碼流后根據(jù)ADV212的標(biāo)志頭0xFFFFFFF1和ADV212文件頭固定長(zhǎng)度,定位到JPEG2000碼流開(kāi)始標(biāo)記SOC -0xFF4F,通過(guò)判斷主碼頭和疊塊分部頭中的一些固定標(biāo)記,如缺省編碼標(biāo)記COD-0xFF52,指定量化參數(shù)QCD-0xFF5C,疊塊分部頭開(kāi)始標(biāo)記SOT-0xFF90,疊塊分部頭結(jié)束標(biāo)記SOD-0xFF93等判斷該碼塊是否出錯(cuò),當(dāng)這些都沒(méi)有出錯(cuò)時(shí),然后再進(jìn)行下一步解碼,否則將這一塊丟棄。
b.對(duì)頭信息正確的碼塊,借助kakadu2.2的核心系統(tǒng)庫(kù)對(duì)其進(jìn)行解碼。Kakadu2.2是David S.Taubman編寫(xiě)的一個(gè)完全符合JPEG2000的軟件[3],該軟件采用C++語(yǔ)言編寫(xiě),編碼效率高,JPEG2000編解碼器功能通過(guò)其核心系統(tǒng)庫(kù)實(shí)現(xiàn)。
對(duì)于壓縮圖像的效果可通過(guò)主觀保真度準(zhǔn)則及客觀保真度準(zhǔn)則來(lái)判別。圖像質(zhì)量的主觀保真度通常是以人眼判斷的好壞作為圖像的評(píng)價(jià)標(biāo)準(zhǔn)。
客觀保真度在圖像編碼領(lǐng)域用的更多的是峰值信噪比PSNR。一般的,PSNR定義如下:
式中,M和N分別為圖像垂直和水平方向的像素?cái)?shù);f(i,j)和f0(i,j)分別為原始圖像和編解碼后重建圖像在(i,j)點(diǎn)的像素值。
圖4 原始圖像與解壓縮圖像對(duì)比
通過(guò)圖4原始圖像與解壓縮圖像的對(duì)比,通過(guò)主觀保真度判斷,無(wú)明顯的丟塊、失真、錯(cuò)幀等現(xiàn)象,但這樣的判斷對(duì)于圖像質(zhì)量的真正好壞是因人而異的,因此,通常是采用客觀保真度標(biāo)準(zhǔn)進(jìn)行判斷。在解壓縮測(cè)試過(guò)程中,依據(jù)式1、2,實(shí)時(shí)顯示圖像的峰值信噪比。
對(duì)8幅不同圖像的解壓縮測(cè)試,所得到的峰值信噪比如表1所示。
表1 壓縮圖像峰值信噪比
本文所探討的基于JPEG2000的圖像壓縮碼流測(cè)試系統(tǒng)概括為以下幾個(gè)方面。
(1)實(shí)現(xiàn)了對(duì)靜止圖像的壓縮。
(2)解壓縮圖像良好的重建效果,PSNR均達(dá)到80dB以上。
(3)產(chǎn)生JPEG2000通用碼流,適用性強(qiáng)。
本系統(tǒng)采用高性能的ADV212壓縮芯片來(lái)完成圖像壓縮編碼,得到符合JPEG2000標(biāo)準(zhǔn)的通用碼流,對(duì)壓縮碼流進(jìn)行測(cè)試,重建圖像的質(zhì)量理想。
[1]M W Marcellin,M J Gormish,A Bilgin and M P Boliek.An overview of JPEG2000,in Proc.IEEE Int.Data Image Conf. (DCC2000),2000.
[2]ADV212 JPEG2000 Video Processor User’s Guide[Z].Analog Devices Inc,June 02.2006.
[3]David Taubman.Kakadu Survey Documentation[Z].2001.