趙繼忠
(1.遼寧廣播電視大學(xué)遼寧沈陽110034;2.遼寧裝備制造職業(yè)技術(shù)學(xué)院遼寧沈陽110161)
在過去的十年中,大量的感興趣區(qū)域加編碼的方法已經(jīng)被提出,特別是基于DCT變換基的圖像和視頻壓縮格式,如JPEG[1]。其主要內(nèi)容包含8X8DCT變換、量化、熵編碼等。然而,JPEG標準是將整幅圖像同時進行壓縮,而在我們?nèi)粘?yīng)用中圖像中的某一小部分往往比其他部分要重要的多,我們稱這一小部分為圖像的感興趣區(qū)域(Region of Interest,ROI),比如交警也許只關(guān)注整幅道路圖中的一個車牌號碼,而醫(yī)生只關(guān)注胸腔中的一個指甲大小的區(qū)域陰影等等。傳統(tǒng)的JPEG標準是對圖像統(tǒng)一進行編碼壓縮,未能將感興趣區(qū)域突出出來。因此,我們需要對JPEG傳統(tǒng)標準進行改進,以便能夠使感興趣區(qū)域的圖像與其他部分圖像相分離,實現(xiàn)區(qū)別于其他部分區(qū)域圖像的單獨編解碼,從而滿足不同用戶的需求。
ROI是圖像中引起觀察者注意的區(qū)域,ROI這一概念最早是在由機器人研究領(lǐng)域中提出,用來進行物體識別。在這里,注意焦點所在的區(qū)域即是ROI。觀察圖像時,人們往往只注意ROI區(qū)域,而抑制或者忽略非ROI區(qū)域。因此圖像處理過程中,同樣可以采取類似的操作,只針對圖像ROI區(qū)域運行對應(yīng)算法,一方面可以降低數(shù)據(jù)的規(guī)模,從而提高運行效率;另一方面也可以減少非ROI對結(jié)果造成的干擾[2]。
近年來國內(nèi)外關(guān)于ROI的研究較多。對于圖像ROI的提取,通常把ROI區(qū)域與BG(背景)區(qū)域進行分割,對兩個不同區(qū)域采用不同的編碼策略。所釆用的策略有以下兩種:一種是對兩個區(qū)域采用相同的編碼方式,但通過對ROI區(qū)域內(nèi)的編碼系數(shù)進行比特位面提升,即可實現(xiàn)對ROI區(qū)域內(nèi)的小波系數(shù)優(yōu)先編碼的目的[3-5],其中,Wang Z提出了一種可用單獨位面提升代替所有ROI位面提升的BbBshift方法,以實現(xiàn)一般移位法與最大移位法的折中[3];Liu L等人以ROI的重要性為依據(jù)來降低BG系數(shù)和位平面,以有效地調(diào)節(jié)兩個平面間的對比度,解碼時再還原系數(shù)和位面移[4]。另一種方法則是對兩個區(qū)域釆用不同的編碼方式,并分配不同的編碼權(quán)重以使得ROI區(qū)域獲得較好的重構(gòu)效果[6]。另外,Taubman D提出一種提升ROI編碼塊斜率的方法,但ROI中過多的BG信息導(dǎo)致了編碼效率低、運算量大,ROI區(qū)域重構(gòu)圖像效果不夠好[5]。
與現(xiàn)有的研究相比,本文研究重點突出表現(xiàn)在以下兩個方面。一方面,文章以JPEG圖像為基礎(chǔ)進行了ROI編解碼的研究。雖然JPEG2000在ROI編碼上表現(xiàn)出了極大的優(yōu)勢并且已經(jīng)被很好的運用,近年來眾多的關(guān)于ROI編碼的研究也都主要集中在JPEG2000上[7-10]。然而,相比于JPEG的DCT編碼方式,JPEG2000本身的小波編碼要更為復(fù)雜,在許多日常應(yīng)用中不能的到很好的發(fā)揮,因此較多領(lǐng)域(如醫(yī)學(xué),交通領(lǐng)域)還依然采用的是傳統(tǒng)的JPEG編碼方式。因而,如何在JPEG圖像基礎(chǔ)上進行ROI區(qū)域的提取和存儲具有更實際的意義[11]。本文中,通過對JPEG傳統(tǒng)標準中ROI部分進行提取、單獨編解碼等操作實現(xiàn)了基于JPEG標準的ROI圖像處理算法。
另一方面,為了進一步提高JPEG圖像的編解碼速度,本文通過軟硬件相結(jié)合的方式對ROI編解碼算法進行了研究。通過將ROI編解碼算法移植到TI公司的DM6446視頻處理芯片中來進一步提高算法的處理速度,并分析了算法移植后的性能表現(xiàn)。DM6446是一個雙核處理器,同時擁有工作頻率高達297 MHz的ARM核和工作頻率高達594 MHz的DSP核。其中DSP核是專門用來處理圖像算法的,而ARM核通過與LINUX操作系統(tǒng)進行交互來控制管理整個系統(tǒng)。用戶就是通過ARM平臺來對DSP端以及整個系統(tǒng)進行操作的。
TMS320DM6446是一款高度集成的視頻處理芯片,業(yè)界稱為達芬奇數(shù)字媒體片上系統(tǒng)。雙核心架構(gòu)DM6446納入一個ARM926EJ-S內(nèi)核,它運行在297 MHz的ARM核和高性能主頻594 MHz的DSP TMS320C64x+?核。外部存儲器采用的是128MD?DR2和64M的NAND Flash等硬件資源;包括PAL/NTSC標準的模擬視頻輸入接口,支持VGA輸出;標準的RS232和RS485接口10/100M以太網(wǎng)接口;標準ATA硬盤接口;USB2.0高速接口[12-14],如圖1所示。
圖1 TMS320DM6446硬件結(jié)構(gòu)
TMS320DM6446處理器具有高性能、低功耗以及專用的視頻圖像處理器和視頻處理子系統(tǒng)等功能特點,工作頻率最高達594 MHz,內(nèi)核供電1.6 V,具有256 MB的32位DDR2 SDRAM存儲空間和128MB的16位FLASH存儲空間,同時具有豐富的片上外設(shè),包括:64通道增強型DMA控制器;串行端口(3個UARTs、SPI、音頻串口):3個64位通用定時器;10/100 M以太網(wǎng)iUSB2.0端口;3個PWM端口:多達71個通用I/O口;支持MMC/SD/CF卡等。
圖像壓縮算法通常分為編碼和解碼兩個過程。在編碼過程中,將算法分為提取ROI數(shù)據(jù)和存儲兩個過程;在解碼過程中,將算法分為識別ROI和覆蓋兩個過程,這兩個過程實際上是編碼的兩過程的逆過程。圖2給出了算法的具體示意圖。
圖2 ROI算法流程示意圖
本節(jié)中,給出了在編碼過程中對ROI區(qū)域進行提取的方法,要想提取ROI數(shù)據(jù),首先需要準確的識別ROI數(shù)據(jù),并能夠與非ROI的背景區(qū)域進行區(qū)別,這一部分工作歸為ROI識別技術(shù)領(lǐng)域,本文不做詳細介紹。為了簡單起見,人為劃定ROI數(shù)據(jù)區(qū),通過給定ROI數(shù)據(jù)區(qū)大小,以及原圖像中ROI區(qū)域的像素坐標來劃定圖像感興趣區(qū)域。據(jù)此,可以準確提取所需的ROI區(qū)域數(shù)據(jù)。為了與傳統(tǒng)JPEG編解碼算法兼容,在提取ROI數(shù)據(jù)時只需將此部分數(shù)據(jù)進行復(fù)制,從而保留原數(shù)據(jù)區(qū)數(shù)據(jù)。
本節(jié)中描述了編碼算法中ROI中具體存儲辦法,也是整個編解算法中最為重要的環(huán)節(jié)。為了更好的提高算法的魯棒性以及與JPEG標準的兼容性,所提出的算法需要滿足以下要求[11]:
1)標準性:所提出的算法需要在保證不破壞原有JPEG標準的前提下進行,需要按照JPEG標準的語法語義來進行定義。
2)完整性:能夠準確保存原圖像的所有信息。
3)有效性:所提出的算法能夠在任何一副JPEG圖像上工作。
因此,我們將提取出的ROI大小信息、坐標信息以及ROI數(shù)據(jù)統(tǒng)一存在于一個ROI數(shù)據(jù)結(jié)構(gòu)體中,且此結(jié)構(gòu)體符合JPEG標準,即具備標志位,大小位,信息位以及數(shù)據(jù)區(qū)。該結(jié)構(gòu)體定義如下:
為了能夠與傳統(tǒng)JPEG編解碼兼容,我們將ROI數(shù)據(jù)區(qū)的存儲位置放在JPEG圖像中EOI標志位之后。JPEG的每個標記都是由2個字節(jié)組成,其前一個字節(jié)是固定值0xFF。每個標記之前還可以添加數(shù)目不限的0xFF填充字節(jié)(fill byte)。其中各標記含義如表1所示。
表1 JPEG標記定義
另外,我們還需要考慮建立一個ROI數(shù)據(jù)區(qū)存儲所需容量,由于不同大小的ROI數(shù)據(jù)區(qū)所需存儲位數(shù)不同,最終存儲的圖像大小將有所不同,我們需要保證有足夠的容量來進行存儲壓縮后的圖像。ROI最大為整幅圖像,即整個圖像都為ROI數(shù)據(jù)區(qū),且所有ROI數(shù)據(jù)不進行編碼,而是直接進行存儲,那么需要2倍原圖像大小的存儲空間。所以在進行實驗時,需要提前預(yù)留2倍原圖像大小的內(nèi)存空間即可。
在對ROI解碼時,首先根據(jù)ROI數(shù)據(jù)標志位0xFFC1識別出ROI數(shù)據(jù),從JPEG圖像中將ROI數(shù)據(jù)提取出,單獨保存到一個數(shù)據(jù)區(qū)中,由于提前不能確定ROI數(shù)據(jù)的大小,所以我們采用動態(tài)分配內(nèi)存的方式,且同ROI編碼時一樣,提前預(yù)留2倍圖像大小的內(nèi)存空間。然后將原JPEG圖像按照JPEG標準解碼進行解碼,最后,根據(jù)ROI坐標信息將解碼后的ROI數(shù)據(jù)覆蓋原有的數(shù)據(jù)即完成ROI編解碼的整個過程。
在解碼過程中,當存在多個感興趣區(qū)域時,為了提高算法的效率,我們可以通過定義大小相同的多個ROI數(shù)據(jù)結(jié)構(gòu)體來覆蓋我們關(guān)注的感興趣區(qū)域。例如,我們定義ROI數(shù)據(jù)結(jié)構(gòu)體大小位1%C,C為圖像的大小,而我們感興趣區(qū)域的大小為3.5%C,那我們只需要4個ROI數(shù)據(jù)結(jié)構(gòu)體便可以覆蓋整個感興趣區(qū)域,這樣在解碼時我們只需通過定義指針數(shù)組來動態(tài)為每個ROI數(shù)據(jù)分配緩沖區(qū)即可,這時每個緩沖區(qū)的大小為C/n,n為ROI數(shù)據(jù)結(jié)構(gòu)體的個數(shù)。
為了能夠很好的評估在第3部分中提出的算法的性能表現(xiàn),我們分別研究了不同ROI區(qū)域大小,不同ROI區(qū)域數(shù)量與成像質(zhì)量,成像時間的關(guān)系。通過對比分析來研究算法的整體性能。為此,我們分別選取分別率分別為 880×480、1 760×960、2 640×1 440的3幅圖像作為對比,并對此做了如下幾方面的評估。
首先對3副圖像分別進行JPEG標準編解碼,壓縮比為10:1,然后將3副圖像再按含ROI區(qū)域大小為1%C(C為圖像大?。┑乃惴ㄟM行編解碼,將得到的圖像分別與不含ROI算法得到的3幅圖像對比,分析整幅圖像其各自峰值信噪比(PSNR),如表2所示。
表2 含ROI算法與非ROI算法PSNR值
通過表2數(shù)據(jù),我們可以看出不同大小圖像的信噪比有所變化,所稱趨勢為圖像越大,PSNR值越高,這是與所采用JPEG壓縮算法和量化表的大小息息相關(guān)的,盡管如此,但是,采用了ROI算法的圖像的PSNR值都高于未采用ROI算法的圖像,由于上表中ROI區(qū)域只占了整個圖像大小的1%,就對整幅圖像的PSNR值產(chǎn)生了明顯的改觀,所以足以說明我們的ROI算法能很好的保證ROI數(shù)據(jù)質(zhì)量。
另外,可以看出隨著圖像的增大,采用ROI算法圖像的PSNR值增幅變小,這也讓我們不難推測,ROI算法對整幅圖像PSNR值的影響,是根據(jù)ROI實際大小來做出的,而不是根據(jù)其所占圖像百分比。
本節(jié)中,我們通過對不同情況下ROI算法編解碼時間的統(tǒng)計來對ROI算法進行評估,在此之前,我們需要區(qū)別ROI數(shù)據(jù)區(qū)和ROI區(qū)域這兩個概念,本文中所說的ROI數(shù)據(jù)就是指我們2.2節(jié)中提到的ROI數(shù)據(jù)結(jié)構(gòu)體中的數(shù)據(jù)區(qū)成員的大小及數(shù)量,而我們說的ROI區(qū)域則是指實際中一副圖像用戶最為感興趣的部分。本節(jié)中,我們都是通過對ROI數(shù)據(jù)區(qū)進行改變來評估ROI算法的。我們首先通過分別改變?nèi)鶊D像中ROI區(qū)域大小來分別統(tǒng)計不同大小的ROI編解碼所需時間。ROI大小起始大小為1%C(C為圖像大?。⒁?%C的幅度遞增,結(jié)果如圖3(a)所示。隨后我們我們通過改變ROI數(shù)據(jù)區(qū)數(shù)量來分別進行時間統(tǒng)計,并以1的增幅來逐漸增大ROI數(shù)量來對3幅圖像編解碼時間分別進行統(tǒng)計,統(tǒng)計結(jié)果如圖3(b)所示。
圖3 ROI數(shù)據(jù)區(qū)對ROI算法影響
通過圖3(a),我們可以看出隨著ROI數(shù)據(jù)區(qū)大小的增大,ROI算法編解碼所用時間成線性增加,而且對于越大的圖像,時間增長也越明顯,我們看到1 024×480的圖像在ROI數(shù)據(jù)大小僅僅達到整幅圖像10%時,所用時間就已經(jīng)超過5 s,這是用戶所不能忍受的,如此低的效率是無法讓此算法正常運行的。
而通過圖3(b),我們可以看出在不改變ROI數(shù)據(jù)區(qū)大小,僅僅改變ROI數(shù)據(jù)區(qū)數(shù)量時,隨著ROI數(shù)據(jù)區(qū)數(shù)量的增大,ROI算法編解碼所用時間幾乎保持穩(wěn)定,盡管隨著圖像的增大,我們編解碼所需時間也隨著增大,但是仍在可以接受的范圍之內(nèi),我們也將在下節(jié)中就圖像大小對ROI算法的影響進行評估,這里暫不做討論。
為此,我們可以看出,在對已知ROI區(qū)域通過ROI算法來進行編解碼時,我們通過改變ROI數(shù)據(jù)區(qū)數(shù)量來實現(xiàn)該算法的效果的效率要遠遠大于通過改變ROI數(shù)據(jù)區(qū)大小的效率,例如,我們的ROI區(qū)域大小占整副圖像大小的15%,那么我們可以通過編碼15個大小占1%的連續(xù)的ROI數(shù)據(jù)區(qū)來覆蓋整個ROI區(qū)域,而不是通過增大ROI數(shù)據(jù)區(qū)來實現(xiàn)這個算法。所以通過改變ROI數(shù)量的方法會大大提高ROI算法的效率。因為改變ROI數(shù)據(jù)區(qū)的數(shù)量僅僅是對結(jié)構(gòu)體數(shù)量變化的操作,而要想改變ROI數(shù)據(jù)區(qū)大小,則涉及內(nèi)存分配以及ROI結(jié)構(gòu)體初始化等一系列問題,耗時大大增加。
在以上的分析中,我們不難發(fā)現(xiàn),圖像大小本身也會對ROI算法產(chǎn)生影響,為此我們通過選取不同大小的60幅圖像進行了算法時間統(tǒng)計,并為了進一步說明4.2節(jié)中ROI數(shù)據(jù)區(qū)數(shù)量對算法時間的影響,我們也通過改變每副圖像的數(shù)量對算法編解碼時間分別進行了統(tǒng)計,結(jié)果如圖4。為方便起見,我們選取的是寬和高像素大小相同的方圖來進行數(shù)據(jù)分析。
圖4 算法分別在不同大小圖像、不同ROI數(shù)量下運行時間
通過圖4我們可以看出,隨著圖像面積的增大,ROI算法成線性增加,而ROI數(shù)據(jù)區(qū)數(shù)量的增多則對ROI算法的運行時間影響不大,因此,我們可以看出,算法的主要編解碼時間消耗在對圖像數(shù)據(jù)的提取分析上,而這是由JPEG標準算法本身決定的,而我們通過改變ROI數(shù)據(jù)區(qū)數(shù)量來編解碼ROI區(qū)域的算法對原有的算法效率影響不大,且與原有算法有很好的兼容性。
為了進一步提高算法的性能,我們將ROI算法在DM6446上進行了移植。將ROI算法移植到TI官方給的example中,根據(jù)DM6446雙核特點,我們分別將編解碼算法移植到DSP端codec部分中的encode和decode過程中,圖像的輸入輸出及整個算法的控制則由雙核系統(tǒng)中ARM端的APP部分實現(xiàn)。移植中,根據(jù)不同圖像大小以及所需要分配的內(nèi)存數(shù)量給定不同大小數(shù)量的內(nèi)存池用來共享ARM端的LINUX進程與DSP端的算法之間緩沖區(qū),以實現(xiàn)虛擬內(nèi)存和物理內(nèi)存之間的轉(zhuǎn)換,這些都通過調(diào)用cmem的API完成[15-16]。由于算法端需要動態(tài)分配內(nèi)存的地方較多,而傳統(tǒng)的算法端內(nèi)存分配是由ARM端統(tǒng)一進行分配管理,這樣會大大增加系統(tǒng)復(fù)雜度,為了方便起見,我們也不再由統(tǒng)一進行內(nèi)存管理,而是將DSP端malloc函數(shù)分配的內(nèi)存直接定向到棧,通過在.tcf文件中加入“prog.module("MEM").MALLOCSEG=bios.DDRALGHEAP;”來實現(xiàn),這樣可以大大提高算法效率。
我們分別對移植后ROI算法的成像時間和成像質(zhì)量與移植前的算法進行了對比,結(jié)果如表3所示。
表3 ROI算法在DM6446與PC上性能比較
通過表3分析可知,即使圖像像素大小達到1 024×480 pixel,算法在DM6446上的運算時間仍遠遠小于1 ms,并且成像質(zhì)量與PC上的成像相同,這與DSP端對算法的高效處理是分不開的。這里需要指出的是以上算法在DM644上的運行時間是僅僅指DSP端對算法處理時間,沒有計算在ARM端讀取圖像數(shù)據(jù)和生成圖像文件的時間,因為這個時間是有計算機本身性能決定的,并沒有可參考性。
當我們看到一幅圖像時,總會對其中的一部分感興趣,而其他的部分無關(guān)緊要,這篇文章,我們基于JPEG標準編解碼算法,給出了實現(xiàn)感興趣區(qū)域提取、存儲、還原的ROI算法,并對成像前后的質(zhì)量,以及不同圖像,不同情況ROI數(shù)據(jù)區(qū)的算法運行時間進行了統(tǒng)計,可以看出,通過ROI數(shù)據(jù)區(qū)數(shù)量的增加來實現(xiàn)ROI算法的效率要遠遠高于通過ROI數(shù)據(jù)區(qū)單純的大小變化來實現(xiàn),而ROI算法的效率又與圖像本身的大小密切相關(guān),最后我們將算法在DM6446上移植,利用DM6446雙核特點,使得算法的性能得到進一步的提升。
雖然本文是基于JPEG圖像來進行的,但在下一步的研究中,我們可以依據(jù)文章的思想和研究方法,可以進一步將ROI編解碼算法應(yīng)用在其他格式的圖像或視頻中,如H.264中。并將算法在DM6446的開發(fā)板中進行移植,利用其雙核的優(yōu)勢,使編解碼算法集中在DSP[17-19]核實現(xiàn),進而可以極大地提高視頻的處理效率,這也必將成為未來研究的趨勢。
參考文獻:
[1]劉方敏.JPEG2000圖像壓縮過程及原理概述[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2002(10):905-911.
[2]陳再良.圖像感興趣區(qū)域提取方法研究[D].湖南:中南大學(xué),2012.
[3]Wang,Bovik AC.Bitplane-by-bitplane shift(BbBShift)-a suggestion for JPEG2000 region of interest image coding[J].Singal Processing Letters,IEEE,2002,9(5):160-162.
[4]LiuL,F(xiàn)anG.AnewJPEG2000region-of-interestim?age coding methodrpartial significant bitplanes shift[J].Signal Processing Letters,2003,10(2):35-38.
[5]Taubman D,Marcellin M W,Rabbani M.JPEG2000:Image compression fundamentals,standards and practice[J].Journal of Electronic Imaging,2002,11(2):286-287.
[6]楊智海.基于小波變換與ROI編碼的雷達圖像壓縮[D].遼寧:大連海事大學(xué),2014.
[7]馮競舸.靜止圖像的ROI區(qū)域自動提取與編碼[D].江蘇:南京郵電大學(xué),2013.
[8]王峰,崔慧娟,唐昆.基于JPEG2000的低速率ROI改進算法的研究[J].信息技術(shù),2013(9):84-87,95.
[9]羅桂娥,鐘進.基于JPEG2000的感興趣區(qū)域編碼方法研究[J].價值工程,2014(21):229-230.
[10]張雨薇.一種改進的JPEG圖像壓縮編碼算法[J].云南師范大學(xué)學(xué)報,2016(6):32-39.
[11]郭慧.具有魯棒性與數(shù)據(jù)嵌入能力的JPEG壓縮圖像加密算法[J].計算機應(yīng)用研究,2016(9):2804-2809.
[12]Zhang Qi-gui,Shen Hai-chao.Design of bootload?er in video analysis platform based on DM6446[J].IEEE International Conference on CSAE,2011(1):101-103.
[13]羅茂元.基于DM6446嵌入式虹膜識別系統(tǒng)的電源設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2014(7):150-153.
[14]陳繼成.基于DM6446的超分辨率圖像重建系統(tǒng)的設(shè)計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.
[15]焦自龍.基于TM320DM6446的交通圖像處理平臺設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2015.
[16]閔志盛.基于DM6446的變焦成像系統(tǒng)設(shè)計[J].電子設(shè)計工程,2012(8):183-185.
[17]王一丁,魏忠義,董毅.DSP處理器XINTF接口與液晶并口的兼容通信設(shè)計[J].西安工程大學(xué)學(xué)報,2016,30(3):306-311.
[18]李詩琪.雷達信號模擬器的中頻信號產(chǎn)生器設(shè)計[J].電子科技,2016,29(5):58-61.
[19]焦淑紅,焦壯.基于多核DSP的以太網(wǎng)通信接口設(shè)計[J].電子科技,2015,28(9):104-108.