国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

快速分塊JPEG圖片的方法

2014-09-04 09:11董友球谷新征劉先材
關(guān)鍵詞:分塊解碼分量

董友球 谷新征 劉先材

(廣東威創(chuàng)視訊科技股份有限公司 廣東廣州 510663)

快速分塊JPEG圖片的方法

董友球 谷新征 劉先材

(廣東威創(chuàng)視訊科技股份有限公司 廣東廣州 510663)

本文提出一種分塊JPEG圖片的方法,即先加載需被分塊的JPEG圖片,然后對(duì)圖片的壓縮數(shù)據(jù)進(jìn)行熵解碼,從而得到每個(gè)MCU的數(shù)據(jù)內(nèi)容,再根據(jù)分塊的要求為每個(gè)小塊選擇對(duì)應(yīng)的MCU數(shù)據(jù)組成一個(gè)數(shù)據(jù)集合,并對(duì)集合里的數(shù)據(jù)做必要的修正即可得到每個(gè)小塊圖片的MCU數(shù)據(jù),最后把每個(gè)小塊的MCU數(shù)據(jù)和熵編碼表、量化表等必要信息一起按JPEG文件格式寫入文件從而得到小塊的JPEG圖片。此方法對(duì)在分塊過程中只進(jìn)行了熵解碼,沒有做完整的解碼和重新編碼過程,提高了分塊的效率,并且不會(huì)引起圖像質(zhì)量的下降。

JPEG,圖像處理,圖片分塊

JPEG圖片是一種常見的圖片格式,在現(xiàn)實(shí)中有著廣泛的應(yīng)用,相應(yīng)地也有對(duì)其進(jìn)行處理的需求,例如在分布式的大屏拼接系統(tǒng)中需要對(duì)超高分辨率的JPEG圖片進(jìn)行分塊然后交給各個(gè)顯示節(jié)點(diǎn)進(jìn)行解碼顯示。

現(xiàn)實(shí)應(yīng)用中多數(shù)的分塊處理都是針對(duì)類似BMP這種圖像像素?cái)?shù)據(jù)按物理位置排列的圖像格式,分塊時(shí)可直接根據(jù)區(qū)域信息獲取圖像像素?cái)?shù)據(jù)值,文獻(xiàn)[1]和[2]都是處理這種情況的。JPEG圖片對(duì)原始圖像數(shù)據(jù)進(jìn)行了較高比例的壓縮,但是壓縮時(shí)是打亂了各像素?cái)?shù)據(jù)的排列順序的,所以無法像對(duì)類似BMP這種圖片格式直接進(jìn)行分塊處理,目前常用的是文獻(xiàn)[3]中所采用的方法,先將JPEG圖片解碼,再分塊,最后再編碼,從而得到分塊后的小塊JPEG圖片。但是,由于這種方法進(jìn)行了完整的JPEG圖片解碼和重新編碼的過程,效率非常低下,并且由于JPEG的壓縮過程是有損的,這樣的解碼再編碼處理會(huì)導(dǎo)致圖像質(zhì)量的下降。

針對(duì)上述問題,本文提出一種分塊JPEG圖片的處理方法,既大幅提高了分塊的效率,又不會(huì)造成圖像質(zhì)量的損失。

1 JPEG技術(shù)介紹

JPEG專家組開發(fā)了兩套算法,一套是基于DCT變換的有損壓縮算法,另一套是基于預(yù)測(cè)技術(shù)的無損壓縮算法。其中,基于DCT變換的有損壓縮算法被廣泛使用,本文所討論的分塊JPEG方法也是針對(duì)基于此算法的JPEG圖片的。

1.1 JPEG壓縮方法

原始的圖像數(shù)據(jù)一般是采用RGB、YUV等顏色模型來描述的,這種描述方式中每個(gè)點(diǎn)都可以找到一組對(duì)應(yīng)的顏色分量值。但這雖然簡(jiǎn)單,卻由于數(shù)據(jù)量龐大而不易于存儲(chǔ)和傳輸,所以需要對(duì)其進(jìn)行壓縮,壓縮的具體步驟如下:

進(jìn)行顏色空間轉(zhuǎn)換。由于JPEG使用的是YUV顏色模型,所以需要對(duì)于其它類似采用RGB顏色模型的數(shù)據(jù)需進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換過程其實(shí)是一個(gè)矩陣變換的過程。

(1)確定最小處理單元(即MCU)。每個(gè)MCU包含(Hmax*8)x(Vmax*8)個(gè)點(diǎn)的圖像信息,其中Hmax和Vmax分別是橫向和縱向的最大采樣系數(shù)。例如Hmax和Vmax都為1的話,那么一個(gè)MCU包含YDU(亮度分量數(shù)據(jù)單元)、CrDU(Cr分量數(shù)據(jù)單元)、CbDu(Cb分量數(shù)據(jù)單元)各一個(gè),每個(gè)DU包含8x8圖像塊的信息。

(2)對(duì)每個(gè)MCU的每個(gè)分量DU數(shù)據(jù)進(jìn)行FDCT變換。FDCT變換實(shí)現(xiàn)圖像數(shù)據(jù)從空間域到頻率域的變換。

(3)對(duì)FDCT變換的結(jié)果進(jìn)行重排列。這是為了后續(xù)的量化和壓縮而服務(wù)的。

(4)量化處理。FDCT變換后主要能量集中在左上角,其中最左的一個(gè)值叫做直流分量,其它63個(gè)為交流分量,交流分量離左上角越遠(yuǎn)的地方值越小,經(jīng)過量化后會(huì)出現(xiàn)大量的0。

(5)對(duì)直流和交流分量的數(shù)據(jù)進(jìn)行編碼。其中直流分量進(jìn)行差分編碼和熵編碼,對(duì)交流分量進(jìn)行游程編碼(RLE)和熵編碼。

上述步驟可用圖1[4]來描述。

圖1 JPEG壓縮過程圖

1.2 JPEG解壓縮方法

JPEG解壓縮過程剛好與壓縮過程相反,在此不做詳述,只用圖2[4]進(jìn)行描述。

圖2 JPEG解壓縮過程圖

2 快速分塊JPEG的方法

一般的JPEG分塊方法先對(duì)JPEG圖像進(jìn)行解壓縮,得到RGB/YUV數(shù)據(jù),然后對(duì)RGB/YUV數(shù)據(jù)進(jìn)行分塊,再對(duì)每個(gè)小塊的數(shù)據(jù)進(jìn)行JPEG壓縮[3]。根據(jù)JPEG算法的原理,這個(gè)過程需要進(jìn)行FDCT和IDCT,而這兩個(gè)過程是比較耗時(shí)的,另外由于經(jīng)過重新編碼的處理,導(dǎo)致了圖像質(zhì)量的下降。

為了提高分塊的效率,并且避免處理過程中產(chǎn)生圖像質(zhì)量的下降,本文提出一種快速分塊JPEG圖片的方法,如圖3所示,具體包含以下步驟:

(1)加載被分塊的JPEG圖片,讀取圖像的壓縮數(shù)據(jù)和解碼必需的圖片信息。所述解碼必需的圖片信息具體包括熵編碼表、量化表、采樣系數(shù)以及圖片的寬、高等信息。

(2)對(duì)圖片壓縮數(shù)據(jù)進(jìn)行熵解碼,得出每個(gè)MCU的組成數(shù)據(jù)。所述MCU的組成數(shù)據(jù)包括各顏色分量的交流分量熵解碼前的全部編碼數(shù)據(jù)以及直流分量值。

(3)根據(jù)分塊的要求為每個(gè)小塊選擇對(duì)應(yīng)的MCU數(shù)據(jù)集合。雖然JPEG中像素點(diǎn)的數(shù)據(jù)已經(jīng)沒有了物理位置排列規(guī)律,但MCU的位置還是按物理位置排列的。舉例來說,如圖4所示的JPEG圖片由8個(gè)MCU組成,每個(gè)MCU包含了對(duì)應(yīng)位置圖像區(qū)域內(nèi)像素的數(shù)據(jù),假設(shè)要對(duì)它進(jìn)行一行兩列的分塊處理(如圖中虛線所示),那么左邊的小塊圖片將包含MCU1、MCU2、MCU5、MCU6的數(shù)據(jù),而右邊的小塊圖片將包含MCU3、MCU4、MCU7、MCU8的數(shù)據(jù)。

圖3 JPEG分塊處理流程圖

(4)對(duì)(3)中得到的MCU數(shù)據(jù)集合中的直流分量數(shù)據(jù)進(jìn)行修正處理。從JPEG算法的原理我們知道,直流分量采用的是差分編碼,以圖4中的MCU5為例,它在原始圖片中的直流分量值實(shí)際保存的是MCU5與MCU4之間的差值,而在分塊后的小圖片中,則應(yīng)該修改為MCU5與MCU2之間的差值。而MCU2由于參考關(guān)系在分塊前后沒有發(fā)生變化,所以它的數(shù)據(jù)不需要修正。是否要修正需要判斷分塊前后MCU的參考關(guān)系有沒有發(fā)生變化,有則需要修正。

圖4 JPEG圖片MCU結(jié)構(gòu)示意圖

(5)將每個(gè)小塊對(duì)應(yīng)的MCU數(shù)據(jù)集合的數(shù)據(jù)和加載原始圖片時(shí)得到熵編碼表、量化表等信息按照J(rèn)PEG圖片格式寫入到文件[5],從而得到分塊后的圖片文件(見圖5)。其中,由于分塊后圖像的寬和高發(fā)生了變化,因此小塊圖片的寬高值應(yīng)做相應(yīng)的更新(JPEG圖片的寬高信息保存在文件中的SOF0段)。

圖5 圖片分塊示意圖

上述5個(gè)步驟描述了本文所述的快速分塊JPEG圖片的基本過程。但此方法有一個(gè)局限性,就是要求選擇的分塊位置剛好就是在MCU的分界處,但實(shí)際情況下有可能出現(xiàn)如圖5所示的分塊位置不在分界線上的情況(其中虛線為分塊邊界線)。這時(shí)對(duì)于左邊的小圖像塊還好處理,只需要仍按上面步驟四的方法來處理,只是在步驟(5)的時(shí)候修改分塊后的圖片的寬度時(shí)按照虛線來計(jì)算即可。而對(duì)于右邊的那一小塊,則需在處理時(shí)將圖像區(qū)域擴(kuò)展到MCU2和MCU6,并且在分塊后的JPEG圖片文件中將實(shí)際有效區(qū)域信息存入到一個(gè)未使用的APP段,后續(xù)對(duì)圖片進(jìn)行顯示或其它處理時(shí)再取出實(shí)際有效區(qū)域信息做相應(yīng)的處理。

3 實(shí)驗(yàn)結(jié)果

為了驗(yàn)證本文所述方法的有效性,編寫了兩個(gè)程序,一個(gè)以本文所述方法對(duì)JPEG圖片進(jìn)行分塊,而另一個(gè)利用IJG的libjpeg庫實(shí)現(xiàn)了文獻(xiàn)[3]所述方法,將JPEG圖片先解壓成YUV格式后再分塊壓縮成小像素的JPEG圖片。被分塊的圖片是一個(gè)分辨率為8192x2304的超高分圖片。實(shí)驗(yàn)的具體結(jié)果如表1所示。

表1 實(shí)驗(yàn)結(jié)果對(duì)比

4 結(jié)論

從實(shí)驗(yàn)結(jié)果可以看出,本文所述方法在不損失圖像質(zhì)量的同時(shí),大大提高了分塊的效率,約只有對(duì)比方法所耗時(shí)間的16%左右,非常適合需要快速處理超高分辨率圖片的場(chǎng)合,例如分布式的大屏拼接系統(tǒng)。

[1]陳國(guó)軍,葉飛躍.大幅圖像的分塊細(xì)化加速算法[J].計(jì)算機(jī)工程及應(yīng)用,2001,37(23):101.

[2]喬哲,姚行中,徐俊. 基于VC++的BMP圖像分塊[J]. 中國(guó)水運(yùn)(理論版),2008,6(1):214

[3]朱亞奇,劉維亭.基于Windows CE下大像素圖像分塊顯示算法的研究[J].科學(xué)技術(shù)與工程,2008,8(15):4170.

[4]Gregory K Wallace. The JPEG still picture compression standard [J]. Comman ACM,1991,66(3):11.

[5]邱磊. JPEG算法研究及實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2009,27(9):52

(責(zé)任編輯李平)

2014-5-7

董友球, wyudyq@163.com。

TN 919.81

A

1674-9545(2014)03-0049-(04)

猜你喜歡
分塊解碼分量
《解碼萬噸站》
帽子的分量
分塊矩陣在線性代數(shù)中的應(yīng)用
解碼eUCP2.0
NAD C368解碼/放大器一體機(jī)
Quad(國(guó)都)Vena解碼/放大器一體機(jī)
論《哈姆雷特》中良心的分量
分量
反三角分塊矩陣Drazin逆新的表示
基于自適應(yīng)中值濾波的分塊壓縮感知人臉識(shí)別