• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    快速分塊JPEG圖片的方法

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

    董友球 谷新征 劉先材

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

    快速分塊JPEG圖片的方法

    董友球 谷新征 劉先材

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

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

    JPEG,圖像處理,圖片分塊

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

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

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

    1 JPEG技術(shù)介紹

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

    1.1 JPEG壓縮方法

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

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

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

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

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

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

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

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

    圖1 JPEG壓縮過程圖

    1.2 JPEG解壓縮方法

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

    圖2 JPEG解壓縮過程圖

    2 快速分塊JPEG的方法

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

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

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

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

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

    圖3 JPEG分塊處理流程圖

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

    圖5 圖片分塊示意圖

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

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

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

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

    4 結(jié)論

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

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

    [2]喬哲,姚行中,徐俊. 基于VC++的BMP圖像分塊[J]. 中國水運(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ī)時代,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
    中國外匯(2019年19期)2019-11-26 00:57:32
    一物千斤
    智族GQ(2019年9期)2019-10-28 08:16:21
    NAD C368解碼/放大器一體機(jī)
    Quad(國都)Vena解碼/放大器一體機(jī)
    論《哈姆雷特》中良心的分量
    分量
    反三角分塊矩陣Drazin逆新的表示
    和政县| 湛江市| 库尔勒市| 呼伦贝尔市| 丹寨县| 霍城县| 开化县| 光泽县| 遵义市| 新竹县| 肥乡县| 科技| 垣曲县| 阜平县| 镶黄旗| 方正县| 永吉县| 通州区| 称多县| 云龙县| 淅川县| 蕉岭县| 衡山县| 封开县| 象州县| 夹江县| 永泰县| 唐山市| 夏河县| 澄城县| 策勒县| 信丰县| 清河县| 湘阴县| 芦山县| 阳城县| 奉节县| 行唐县| 土默特左旗| 紫云| 肥东县|