亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DSP平臺(tái)的JPEG2000 EBCOT-Tier2算法實(shí)現(xiàn)及優(yōu)化

        2018-06-14 07:15:16宋璐雯
        軟件 2018年5期
        關(guān)鍵詞:碼流碼率斜率

        宋璐雯

        (西安科技大學(xué) 電氣與控制工程學(xué)院,陜西 西安 710054)

        0 引言

        JPEG2000圖像壓縮標(biāo)準(zhǔn)在高幀率的遙感圖像傳輸中有重要應(yīng)用[1-2]。目前JPEG2000的應(yīng)用軟件主要有 JasPer,JJ2000,Kakadu。硬件芯片有 ADI推出的ADV212,以及國(guó)內(nèi)自主研發(fā)的編解碼芯片[3]。

        JPEG2000的可伸縮性嵌入式碼流可以滿足不同要求下的信息傳遞[4-6]。其中EBCOT-Tier2編碼是JPEG2000嵌入式碼流組織的最終體現(xiàn)。分析JasPer中的源代碼,在JPEG2000的EBCOT-Tier1模塊計(jì)算后得到位平面信息、編碼通道總數(shù)、通道長(zhǎng)度、RD斜率。根據(jù)硬件平臺(tái)特點(diǎn),將實(shí)現(xiàn)EBCOT-Tier2編碼的功能函數(shù)依次歸為:讀取編碼參數(shù)模塊,主標(biāo)頭編碼模塊,初始化Tile模塊,拼接塊標(biāo)頭編碼模塊,讀取碼流信息和碼流數(shù)據(jù)模塊,讀取Tile信息模塊,碼率控制模塊,碼流打包模塊以及結(jié)束編碼模塊。

        1 EBCOT-Tier2算法分析

        EBCOT-Tier2最核心的是碼率控制模塊,其采用PCRD算法尋找最優(yōu)截?cái)帱c(diǎn)[7,8]。PCRD算法的實(shí)質(zhì)是在滿足累積碼字長(zhǎng)度不大于目標(biāo)碼率的前提下對(duì)EBCOT-Tier1編碼后所有的碼塊通道進(jìn)行截?cái)?,使得圖像的失真度最小[9]。

        1.1 RD 斜率

        通常將碼塊i的第 ni個(gè)編碼通道的率失真斜率定義為 RD斜率,它是碼塊通道被截?cái)嗪?,?duì)圖像帶來(lái)的失真度的減小量與當(dāng)前編碼通道的長(zhǎng)度增加量的比值。

        1.2 碼率控制

        碼率控制算法是在整個(gè)Tile的圖像數(shù)據(jù)編碼完成后,根據(jù)率失真信息判定最優(yōu)分層截?cái)帱c(diǎn)。用數(shù)學(xué)模型描述碼率控制算法,即:目標(biāo)碼率定義為Rmax,各個(gè)碼塊的截?cái)辔恢枚x為 ni,圖像失真度定義為D。

        目標(biāo)函數(shù):

        約束條件:引入拉格朗日乘子λ,將上述問(wèn)題轉(zhuǎn)化為在約束條件下求取公式(4)式的極小值。

        可以將(4)式進(jìn)一步轉(zhuǎn)化為(5),(6)式:

        目標(biāo)函數(shù):

        約束條件:

        對(duì)目標(biāo)函數(shù)求取偏導(dǎo)數(shù)并結(jié)合 RD斜率公式進(jìn)行化簡(jiǎn),最后得到(7),(8)式:

        根據(jù)最后化簡(jiǎn)的表達(dá)式,實(shí)際就將PCRD碼率控制算法轉(zhuǎn)化為,尋找一個(gè)最優(yōu) RD斜率截?cái)嚅撝郸耍瑢?duì)編碼通道的 RD斜率大于λ的通道進(jìn)行EBCOT-Tier2打包運(yùn)算,使得最后的壓縮碼字長(zhǎng)度最接近目標(biāo)碼率maxR 。

        2 EBCOT-Tier2算法實(shí)現(xiàn)

        2.1 碼率控制算法

        該模塊是通過(guò)二分法尋找最優(yōu) RD截?cái)帱c(diǎn)。通過(guò)比較法得到當(dāng)前 tile的最大和最小 RD斜率,取二者均值作為第一次搜索的初值,對(duì) RD斜率大于搜索值的所有通道進(jìn)行標(biāo)記。之后對(duì)標(biāo)記的通道進(jìn)行打包,依次進(jìn)行0位平面tagtree編碼,包含信息tagtree編碼,計(jì)算被包含的通道數(shù),長(zhǎng)度增量指標(biāo),以及寫入該碼塊的通道數(shù)據(jù)長(zhǎng)度,如圖1所示。

        圖1 碼率控制流程Fig.1 Code rate control process

        通過(guò) out_cur_point(表示當(dāng)前壓縮文件對(duì)應(yīng)的指針位置)在編碼過(guò)程中的指針變換,以及累加當(dāng)前寫入碼塊的有效通道長(zhǎng)度 datalen,來(lái)計(jì)算 length(表示當(dāng)前截?cái)嚅撝祎hresh對(duì)應(yīng)的累積碼字長(zhǎng)度)的大小。將length與目標(biāo)碼率tilelen進(jìn)行比較,判定該截?cái)帱c(diǎn)是否最優(yōu)。如果是最優(yōu)截?cái)帱c(diǎn),則以該截?cái)帱c(diǎn)的值再標(biāo)記一次通道,以備最后打包使用。為了減少碼率控制的時(shí)間,每次搜索只計(jì)算要寫入最終壓縮文件的數(shù)據(jù)長(zhǎng)度。如果不是最優(yōu)截?cái)帱c(diǎn),通過(guò)算法調(diào)整其值的大小并重新搜索,直至找到最優(yōu)截?cái)帱c(diǎn)。一般情況下,搜索7~8次就可以找到最優(yōu)截?cái)帱c(diǎn)。

        2.2 tagtr ee編碼

        在EBCOT-Tier2算法實(shí)現(xiàn)中碼塊的包含信息和0位平面的計(jì)算需要建立 tagtree。tagtree的編碼過(guò)程分為兩個(gè)步驟[10][11]。在對(duì)碼塊建立了四叉數(shù)結(jié)構(gòu)后,首先進(jìn)行第一步父子節(jié)點(diǎn)的差值編碼,編碼規(guī)則是:在初始化時(shí),最初表中的所有值都是 0,從level0開始編碼,將上一級(jí)的編碼值作為下一級(jí)編碼的初值。編碼一個(gè)0表示加1,編碼一個(gè)1表示保持原值不變。在差值編碼結(jié)束后,進(jìn)行第二步tagtree的葉節(jié)點(diǎn)編碼。沿著葉節(jié)點(diǎn)到父節(jié)點(diǎn)的方向進(jìn)行搜索,若找到根節(jié)點(diǎn)或是第一個(gè)已經(jīng)編碼的節(jié)點(diǎn),則停止搜索,并從該位置開始進(jìn)行tagtree編碼,即沿著搜索的反方向,依次排列組合差值編碼的值,就得到tagtree葉節(jié)點(diǎn)的編碼值。

        由于在搜索和打包過(guò)程中,要頻繁調(diào)用 tagtree編碼條件判斷函數(shù),為了避免破壞DSP內(nèi)部的流水線工作模式,在循環(huán)中應(yīng)該盡量減少跳轉(zhuǎn)指令,所以要對(duì)tagtree編碼函數(shù)進(jìn)行優(yōu)化,其C語(yǔ)言的實(shí)現(xiàn)框圖如圖2所示。

        圖2 C 語(yǔ)言實(shí)現(xiàn)tagtree編碼Fig.2 Achieve tagtree encoding by C language

        3 EBCOT-Tier2算法優(yōu)化[12-17]

        3.1 DSP cache的優(yōu)化設(shè)計(jì)

        C64x DSP具有兩級(jí)存儲(chǔ)器結(jié)構(gòu),其采用哈佛結(jié)構(gòu),一級(jí)存儲(chǔ)器L1P/L1D cache和L1P/L1D SRAM是固定大小,不可軟件配置。二級(jí)存儲(chǔ)器L2,是由程序和數(shù)據(jù)共享。L2共有1MB的空間大小,具有可配置cache大小的功能。

        在對(duì) EBCOT-Tier2打包程序不進(jìn)行任何 cache優(yōu)化時(shí),即將 L2配置為 768KB SRAM,256KB cache,使用CACHE_CCFG_L2MODE_256KC語(yǔ)句設(shè)置。將EBCOT-Tier2的程序和數(shù)據(jù)都放在EMIFB CE0對(duì)應(yīng)的片外存儲(chǔ)空間,在cmd文件設(shè)置時(shí),將所有段都放在0x60000000~0x63FFFFFF的空間范圍內(nèi)。對(duì)于輸入256*256 lena_gray圖像的碼流信息和碼流數(shù)據(jù),壓縮10倍,進(jìn)行9/7小波變換,EBCOTTier2的編碼打包時(shí)間是 0.008918s,即處理速度是112f/s。由于程序和數(shù)據(jù)都放在外部存儲(chǔ)器,在每次訪問(wèn)數(shù)據(jù)信息時(shí)都要經(jīng)歷外部存儲(chǔ)器—L2 cache—L1 cache的過(guò)程,所以代碼的運(yùn)行效率不高。

        分析代碼,在只對(duì)一幅圖像進(jìn)行處理時(shí),程序占用59KB空間。碼流信息,碼流數(shù)據(jù)和壓縮參數(shù),這三組數(shù)據(jù)共占251KB空間。而此時(shí)L2有足夠大的空間以存放這些程序和數(shù)據(jù),所以將L2都設(shè)置成為 SRAM,CACHE_FSET(CCFG,L2MODE,CACHE_CCFG_L2MODE_0KC)。

        此外,在 C64x DSP中 long型的數(shù)據(jù)位寬是40bits。如果程序中可以使用short型數(shù)據(jù)就避免使用int型數(shù)據(jù),因?yàn)長(zhǎng)1D的行大小是64B,采用short型就可以存放比int型多一倍的數(shù)據(jù),這樣可以提高L1D的使用效率,降低cache miss的發(fā)生以及miss所帶來(lái)的stall數(shù)。

        對(duì)EBCOT-Tier2編碼打包程序進(jìn)行上述優(yōu)化,輸入256*256的lena_gray圖像的碼流信息和碼流數(shù)據(jù),壓縮10倍,進(jìn)行9/7小波變換。統(tǒng)計(jì)cache的使用情況如下表1所示。

        從上表數(shù)據(jù)可以看出,cache的命中率較高。這是因?yàn)闆](méi)有信息存放在外部存儲(chǔ)器,而是按照 L2 SRAM—L1 cache的順序訪問(wèn)數(shù)據(jù)。其EBCOT-Tier2的運(yùn)行時(shí)間是0.004566 s,處理速度是219 f/s。與上未優(yōu)化的處理速度比較,代碼的運(yùn)行效率有明顯提高。

        3.2 碼率控制算法優(yōu)化

        使用DSP的內(nèi)部Timer0定時(shí)器對(duì)EBCOT-Tier2程序的每個(gè)子模塊函數(shù)計(jì)時(shí),發(fā)現(xiàn)碼率控制函數(shù)是最耗費(fèi)時(shí)間,它運(yùn)行了2277128個(gè)CPU時(shí)鐘。對(duì)碼率控制函數(shù)進(jìn)行具體分析,如下表2所示。

        表1 Cache統(tǒng)計(jì)Tab.1 Cach e statistics

        表2 碼率控制函數(shù)運(yùn)行時(shí)間統(tǒng)計(jì)Tab.2 The time statistics of code rate control

        從上表可以明顯看出,計(jì)算包頭信息耗費(fèi)了大量時(shí)間,而在包頭信息計(jì)算中tagtree編碼最耗費(fèi)時(shí)間。這是因?yàn)樵诖a率控制尋找最優(yōu)截?cái)帱c(diǎn)時(shí),每刷新一次搜索值,都要進(jìn)行一次相當(dāng)于打包的計(jì)算量,要對(duì)所有標(biāo)記的通道進(jìn)行編碼。

        為提高搜索效率,首先考慮對(duì)EBCOT-Tier1輸出的碼流信息進(jìn)行處理,列一個(gè)256項(xiàng)的統(tǒng)計(jì)表,將圖像分成了256個(gè)質(zhì)量層。然后從最高項(xiàng)依次向下累加,若累加的碼字長(zhǎng)度開始大于目標(biāo)碼率長(zhǎng)度,則此時(shí)的 RD斜率值,定為最優(yōu)截?cái)帱c(diǎn)。當(dāng)輸入圖像是256×256灰度lena圖像,壓縮10倍時(shí),根據(jù)最初的二分法搜索,測(cè)得的最優(yōu)RD截?cái)嘀凳?49。在以該方法確定最優(yōu)截?cái)帱c(diǎn)時(shí),發(fā)現(xiàn)搜索的復(fù)雜度降低了,但是搜索的次數(shù)增多,效率變慢,而且最后得到的最優(yōu) RD截?cái)嘀狄仍嫉臏y(cè)量方法小2~3。由于該搜索方法,只依賴于 EBCOT-Tier1編碼的壓縮碼流長(zhǎng)度,而忽略了EBCOT-Tier2的所有編碼信息。而在一般情況下,基于 JPEG2000標(biāo)準(zhǔn)的壓縮文件的包頭信息占?jí)嚎s文件的5%~10%。

        基于以上論述,從另一角度分析搜索過(guò)程。包頭信息是由6部分構(gòu)成的,SOP Marker標(biāo)志位信息,零長(zhǎng)度包標(biāo)志,碼塊包含信息,0位平面包含信息,每個(gè)碼塊包含在包中的編碼通道數(shù)以及每個(gè)碼塊對(duì)壓縮碼流貢獻(xiàn)的字節(jié)長(zhǎng)度編碼。在搜索過(guò)程中,最耗費(fèi)時(shí)間的模塊是tagtree編碼,即碼塊包含信息和0位平面包含信息??紤]在搜索的過(guò)程中,簡(jiǎn)化包頭計(jì)算,即先不計(jì)算包頭信息的兩個(gè)tagtree編碼,但是保留其他包頭信息的計(jì)算。這樣在搜索過(guò)程中,對(duì)標(biāo)記的通道計(jì)算被該層包含的通道數(shù),計(jì)算寫入的長(zhǎng)度增量以及計(jì)算寫入的該碼塊被截?cái)嗟耐ǖ罃?shù)據(jù)長(zhǎng)度,最后通過(guò)指針變換,計(jì)算出累積碼字長(zhǎng)度,并與目標(biāo)碼率進(jìn)行對(duì)比,根據(jù)對(duì)比結(jié)果判定是否需要進(jìn)行下一次二分法搜索,若確定此時(shí)的截?cái)嘀禐樽顑?yōu) RD斜率截?cái)帱c(diǎn),則碼率控制函數(shù)不需要再以該 RD斜率值標(biāo)記一次通道,這是因?yàn)樵谧詈笠淮嗡阉髦型ǖ酪呀?jīng)被標(biāo)記過(guò),所以不用再進(jìn)行冗余計(jì)算。最后,根據(jù)每個(gè)碼塊的每個(gè)通道的標(biāo)記信息就可以進(jìn)行完整的打包運(yùn)算得到.jpc壓縮文件。

        以輸入256×256 lena灰度圖像,進(jìn)行9/7小波變換,壓縮 10倍為例進(jìn)行說(shuō)明。發(fā)現(xiàn)改進(jìn)算法的tagtree編碼耗費(fèi)時(shí)間明顯降低,據(jù)統(tǒng)計(jì)耗費(fèi)了119264個(gè)時(shí)鐘周期。進(jìn)行多次試驗(yàn)觀察比較在不同壓縮倍數(shù)下,改進(jìn)算法與原始算法在確定最優(yōu)截?cái)帱c(diǎn)的差異,統(tǒng)計(jì)結(jié)果如下表3所示。

        表3 RD 斜率最優(yōu)截?cái)帱c(diǎn)對(duì)比Tab.3 Comparison of RD slope optimal cut-off points

        觀察上表的統(tǒng)計(jì)結(jié)果,發(fā)現(xiàn)改進(jìn)算法的最優(yōu)截?cái)帱c(diǎn)的值通常會(huì)比原始算法的值小 1。接著,通過(guò)測(cè)量PSNR值進(jìn)一步定性分析改進(jìn)算法的特性。分別測(cè)試由JasPer軟件打包的PSNR的標(biāo)準(zhǔn)值和改進(jìn)算法得到的PSNR值,如表4所示。

        表4 PSNR 對(duì)比Tab.4 The comparison of PSNR

        從以上數(shù)據(jù)可以分析得到,改進(jìn)算法的 PSNR值比JasPer軟件的標(biāo)準(zhǔn)值略大,但是二者PSNR值的差異一般最大不超過(guò) 0.2dB。再以對(duì)比改進(jìn)算法與原始算法的EBCOT-Tier2運(yùn)行效率來(lái)說(shuō)明改進(jìn)算法的性能提升,結(jié)果如表5所示。

        表5 EBCOT-Tier2運(yùn)行效率對(duì)比Tab.5 The comparison of EBCOT-Tier2 operating efficiency

        從以上數(shù)據(jù)可以看出,改進(jìn)算法的運(yùn)行速度有顯著的提高,速度基本上是原始算法的2倍左右。綜合考慮壓縮圖像質(zhì)量和打包速率這兩大因素,認(rèn)為簡(jiǎn)化包頭計(jì)算的改進(jìn)型碼率控制算法可用于JPEG2000圖像的實(shí)時(shí)編碼打包。

        4 結(jié)語(yǔ)

        針對(duì) C64x DSP的硬件平臺(tái),首先分析實(shí)現(xiàn)JPEG2000的 EBCOT-Tier2編碼打包功能。接著根據(jù)DSP的兩級(jí)cache特點(diǎn)進(jìn)行代碼優(yōu)化。最后使用DSP的內(nèi)部定時(shí)器找到碼率控制模塊中最耗時(shí)的計(jì)算模塊,根據(jù)PCRD的算法特點(diǎn),提出了一種簡(jiǎn)化包頭信息計(jì)算的碼率控制算法,通過(guò)驗(yàn)證仿真,該算法提高了EBCOT-Tier2的編碼打包效率。

        [1] 楊雪, 陳凡勝. 基于預(yù)測(cè)和JPEG2000的紅外圖像無(wú)損壓縮方法[J]. 紅外技術(shù), 2016, 38(2): 144-148.

        [2] Dong K K, Kim E Y, Yang K H, et al. A mobile tele-radiology imaging system with JPEG2000 for an emergency care.[J]. Journal of Digital Imaging, 2011, 24(4): 709-18.

        [3] Liu L, Li D, Li Z, et al. A VLSI Architecture of EBCOT Encoder for JPEG2000[J]. Journal of Beijing University of Posts & Telecommunications, 2003, 2: 882-885 Vol.2.

        [4] 孫水發(fā), 張華熊, 仇佩亮. JPEG2000--新的靜止圖像壓縮標(biāo)準(zhǔn)[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2003, 15(11):1339-1346.

        [5] Singh A, Nirala N K, Narula A, et al. JPEG2000: The upcoming still image compression standard[J]. Pattern Recognition Letters, 2001, 22(12): 1337-1345.

        [6] 劉方敏, 吳永輝, 俞建新. JPEG2000圖像壓縮過(guò)程及原理概述[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2002, 14(10): 905-911.

        [7] 茅文深, 俞劍, 劉文松,等. JPEG2000碼率控制截?cái)囝A(yù)測(cè)算法及VLSI設(shè)計(jì)[J]. 計(jì)算機(jī)與數(shù)字工程, 2016, 44(1): 189-192.

        [8] 莊懷宇, 吳成柯, 鄧家先, 等. JPEG2000 T_2編碼快速算法及硬件實(shí)現(xiàn)[J]. 系統(tǒng)工程與電子技術(shù), 2004, 26(12):1939-1942.

        [9] 李其虎, 任國(guó)強(qiáng), 吳欽章,等. 一種率失真最優(yōu)的JPEG2000碼率自適應(yīng)控制算法[J]. 測(cè)繪學(xué)報(bào), 2011, 40(2): 204-208.

        [10] 胡高軍, 任廣輝, 吳芝路. JPEG2000中Tag-tree編碼分析及實(shí)現(xiàn)[J]. 電視技術(shù), 2004(10): 13-15.

        [11] 吳宗澤, 鄭南寧, 黃宇, 等. 基于JPEG2000的TAGTREE編碼算法分析及其FPGA實(shí)現(xiàn)[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2005,26(3): 478-481.

        [12] 賀文靜, 胡堅(jiān), 李子揚(yáng),等. 基于多DSP的遙感圖像實(shí)時(shí)壓縮系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2015, 41(5): 46-49.

        [13] 曾勇. JPEG2000新型碼率控制算法及其DSP實(shí)現(xiàn)[J]. 電子科技, 2011, 24(7): 122-125.

        [14] Tan K C B, Arslan T. Low power embedded extension algorithm for lifting-based discrete wavelet transform in JPEG2000[J]. Electronics Letters, 2002, 37(22): 1328-1330.

        [15] Du W, Sun J, Ni Q. Fast and efficient rate control approach for JPEG2000[J]. IEEE Transactions on Consumer Electronics,2004, 50(4): 1218-1221.

        [16] Son C H, Kim J W, Song S G, et al. Low complexity embedded compression algorithm for reduction of memory size and bandwidth requirements in the JPEG2000 encoder[J].IEEE Transactions on Consumer Electronics, 2010, 56(4):2421-2429.

        [17] An J, Cai Z. Efficient Rate Control for Lossless Mode of JPEG2000[J]. IEEE Signal Processing Letters, 2008, 15: 409-412.

        猜你喜歡
        碼流碼率斜率
        分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        數(shù)字電視TS碼流協(xié)議簡(jiǎn)要分析
        視聽(2021年8期)2021-08-12 10:53:42
        物理圖像斜率的變化探討
        物理之友(2020年12期)2020-07-16 05:39:16
        基于狀態(tài)機(jī)的視頻碼率自適應(yīng)算法
        求斜率型分式的取值范圍
        基于子孔徑斜率離散采樣的波前重構(gòu)
        MMC-MTDC輸電系統(tǒng)新型直流電壓斜率控制策略
        基于場(chǎng)景突變的碼率控制算法
        X264多線程下碼率控制算法的優(yōu)化
        多光譜圖像壓縮的聯(lián)合碼率分配—碼率控制方法
        亚洲日本一区二区三区四区| 精品熟女日韩中文十区| 国产午夜无码视频免费网站| 精品一区二区三区在线视频观看| 手机av在线观看视频| 亚洲黄色av一区二区三区| 日本真人边吃奶边做爽电影| 国产高清av首播原创麻豆| 亚洲精品无码久久毛片| 亚洲精品综合在线影院| 久久黄色精品内射胖女人| 日本精品一区二区三区福利视频| 各种少妇正面着bbw撒尿视频| 少妇对白露脸打电话系列| 吃下面吃胸在线看无码| 国产成人精品一区二三区在线观看| 人妻少妇进入猛烈时中文字幕| 内射人妻视频国内| 亚洲综合久久成人a片| 一区二区三区国产97| 国产丝袜美腿在线视频| 十四以下岁毛片带血a级| 日韩人妻无码一区二区三区| 久久久久久99精品| 97自拍视频国产在线观看| av网站在线观看亚洲国产| 亚洲av无码片vr一区二区三区| 亚洲依依成人亚洲社区| 无码人妻少妇久久中文字幕| 亚洲成人av大片在线观看| 高h小月被几个老头调教| 无码人妻黑人中文字幕| 99国产综合精品-久久久久| 隔壁的日本人妻bd高清中字| 国产欧美日韩中文久久| 人妻无码aⅴ不卡中文字幕| 日韩亚洲欧美精品| 国产成人av三级三级三级在线| 精品无码人妻久久久一区二区三区| 在线观看av不卡 一区二区三区| 亚洲人成在线播放网站|