5/3提升小波在DM642上的實(shí)現與優(yōu)化

發(fā)布時(shí)間:2010-11-25 22:42    發(fā)布者:designer
關(guān)鍵詞: DM642
提升小波變換不僅具有傳統小波多分辨率的優(yōu)點(diǎn),而且簡(jiǎn)化了運算,便于硬件實(shí)現,因此在數字圖像編碼中得到廣泛應用。在新的圖像壓縮標準JPEG2000中,采用9/7、5/3提升小波變換作為編碼算法,其中5/3小波變換是一種可逆的整數變換,可以實(shí)現無(wú)損或有損的圖像壓縮。在通用的DSP芯片上實(shí)現該算法具有很好的可擴展性、可升級性與易維護性。用這種方式靈活性強,完全能滿(mǎn)足各種處理需求。

1 提升算法

提升算法是由Sweldens等在Mallat算法的基礎上提出的,也稱(chēng)為第二代小波變換。與Mallat算法相比,提升算法不依賴(lài)傅立葉變換,降低了計算量和復雜度,運行效率相應提高。由于具有整數變換及耗費存儲單元少的特點(diǎn),提升算法很適合于在定點(diǎn)DSP上實(shí)現。

小波提升算法的基本思想是通過(guò)基本小波逐步構建出一個(gè)具有更加良好性質(zhì)的新小波。其實(shí)現步驟為分解(split)、預測(predict)和更新(update)。

首先按照對原信號進(jìn)行對稱(chēng)延拓得到新的x(n)。
分解是將數據分為偶數序列x(2n)和奇數序列x(2n+1)二個(gè)部分;
預測是用分解的偶數序列預測奇數序列,得到的預測誤差為變換的高頻分量:H(n)=x(2n+1)-{[x(2n)+x(2n+2)]>>1}
更新是由預測誤差更新偶數序列,得到變換的低頻分量:L(n)=x(2n)+{[H(n)+H(n-1)+2]>>2}
計算過(guò)程如圖1所示。




2 基于DM642的優(yōu)化策略

2.1 DM642的兩級CACHE結構

DM642是一款專(zhuān)門(mén)面向多媒體處理領(lǐng)域應用的處理器,是構建多媒體通信系統的良好平臺。它采用C64xDSP內核,片內RAM采用兩級CACHE結構,分為L(cháng)1P、L1D和L2。L1只能作為CACHE被CPU訪(fǎng)問(wèn),均為16KB,訪(fǎng)問(wèn)周期與CPU周期一致,其中L1P為直接映射,L1D為兩路成組相關(guān);L2可以由程序配置為CACHE和SRAM。

2.2 改進(jìn)的算法結構

傳統的小波變換都是對整幅圖像作變換,先對每一行作變換,然后再對每一列作變換。用這種方式在DSP上實(shí)現該算法時(shí)效率比較低。因為DSP的L1D很小,只有16KB,不能緩存整幅圖像,因此原始圖像數據通常保存在速度較低的外部存儲器上。這樣CPU從L1D每讀取一行數據時(shí)必然會(huì )產(chǎn)生缺失,大量缺失會(huì )嚴重阻塞CPU的運行,延長(cháng)程序的執行時(shí)間。為了減少缺失的發(fā)生,必須將傳統的變換進(jìn)行改進(jìn)。將原來(lái)對整幅圖像的變換改為分塊的變換,即每次從圖像中取出一個(gè)塊,先后完成行、列變換后再按照一定的規則保存到系數緩存中,如圖2所示。






在這種方法中,SDRAM中的一個(gè)數據塊首先傳輸到L2中,然后取到L1D中進(jìn)行水平方向的提升,再對該塊進(jìn)行垂直方向的提升。這樣,由于垂直提升所需的數據都在L1D中,避免了此處數據緩存缺失的產(chǎn)生,使總的缺失數大大降低。

2.3 數據傳輸

(1)SDRAM與L2間的數據傳輸

由于EDMA數據傳輸與CPU運行相互獨立,因此在L2中開(kāi)辟兩塊緩存:EDMA在CPU處理InBuffA的同時(shí)將下一塊數據傳輸到InBuffB,解決了CPU讀取低速設備SDRAM引起的時(shí)延,如圖3所示。






(2)L2與L1D間的數據傳輸

CPU首先訪(fǎng)問(wèn)第一級CACHE中的程序和數據,如果沒(méi)有命中則訪(fǎng)問(wèn)第二級CACHE(如果配置L2的一部分為CACHE),若還沒(méi)有命中就要訪(fǎng)問(wèn)外部存儲空間。在這個(gè)過(guò)程中,CPU一直處于阻塞狀態(tài),直至讀取的數據有效。所以,在對L2中的數據塊進(jìn)行水平提升時(shí),CPU讀取每一行都會(huì )產(chǎn)生缺失。針對這種情況,TMS320C64x系列DSP為L(cháng)1D提供了一種高速緩存缺失處理的流水處理機制。若連續多次未命中,CPU等待時(shí)間就會(huì )重疊,總體上減少了平均缺失造成的CPU阻塞時(shí)間。

因此,在CPU對數據進(jìn)行水平提升前,利用缺失流水技術(shù),將當前數據塊全部讀取到L1D中,隨后再對該數據塊進(jìn)行水平提升,則不會(huì )再發(fā)生缺失,并可提高運算速度。

2.4 L1P與L1D性能優(yōu)化

L1D是兩路成組相關(guān),每組8KB,總容量16KB。CPU一次處理的數據不應超過(guò)8KB,并且所有的原始數據都連續存儲在同一CACHE組中;程序的中間過(guò)程數據保留在預分配的另一個(gè)CACHE組中。

數據讀取到L1D之后,首先由8位擴展成16位,然后對這些數據進(jìn)行水平提升,只要這些數據能保留在L1D中,隨后進(jìn)行的垂直提升就可以完全避免缺失。因此,數據塊的大小是由中間過(guò)程數據決定的,所有中間過(guò)程數據加起來(lái)不能超過(guò)8KB,選取數據塊是32×32。

當多個(gè)函數映射到L1P的同一個(gè)CACHE行時(shí)就會(huì )引起沖突缺失,所以必須合理放置這些函數。由于實(shí)現提升的全部函數加起來(lái)不超過(guò)16KB,因此,如果能將這些函數安排在一個(gè)連續的存儲空間內,就可以完全避免由沖突引起的L1P缺失?梢栽赾md文件的SECTIONS中添加一個(gè)GROUP,然后將頻繁調用的函數放到GROUP中:

SECTIONS
{
GROUP > ISRAM
{
.text:_horz
.text:_vert
.text:_IMG_pix_pand

}…}

2.5 程序優(yōu)化

由前面的分析可知,對圖像進(jìn)行提升小波變換時(shí),需要對其四個(gè)邊界進(jìn)行延拓。延拓方式采用圖1所示的對稱(chēng)延拓,其中左邊與上邊需要多延拓一個(gè)點(diǎn)。而對圖像中的一個(gè)塊進(jìn)行提升變換時(shí),其延拓的應該是與該塊相鄰的四個(gè)塊數據的邊界數據,如圖4所示。




邊界延拓主要是用于計算高頻系數。分析發(fā)現,水平提升時(shí),當前數據塊每一行的最后一個(gè)高頻系數與下一個(gè)塊在該行的第一個(gè)高頻系數相同。所以只要把當前塊的這些系數保存起來(lái),在對下一塊進(jìn)行水平提升時(shí)第一個(gè)高頻系數就不需要再進(jìn)行計算,因此也就不需要再對其左邊界進(jìn)行延拓了。垂直方向的提升也是同樣的道理。在程序中添加兩個(gè)數組,分別用于存放當前塊的每一行與每一列的最后一個(gè)高頻系數。采用這種方法就可以降低程序的復雜度,提高執行效率,減少缺失的發(fā)生。

像素擴展函數pix_pand是采用TI的IMGLIB算法庫。水平提升與垂直提升函數均由作者用線(xiàn)性匯編語(yǔ)言編寫(xiě),充分利用64x系列DSP的半字處理指令,采用半字打包技術(shù),最大限度地提高程序的執行效率。

水平提升時(shí),將每行的數據重新排序,變成如圖5所示的結構。



使用C64x的ADD2、SHR2和SUB2等半字處理指令,將如下的兩個(gè)運算并行執行:

H(1)=B-[(A+C)>>1]

H(2)=D-[(C+E)>>1]

垂直提升時(shí)則可以安排多列的計算并行執行,如圖6所示。

H1(1)=B1-[(A1+C1)>>1]

H2(1)=B2-[(A2+C2)>>1]




3 仿真結果

表1列出了CPU讀取L1D時(shí)產(chǎn)生的缺失數。其中,水平方向的缺失不可避免。由于要對數據塊的右側和底部進(jìn)行邊界延拓,所以在水平方向的缺失數比傳統方法略高;而在垂直方向上,該算法完全避免了缺失的發(fā)生。





表2列出了幾種方法的計算性能。由于本文采用了多種優(yōu)化技術(shù),運算速度提高了4~10倍。

本文介紹了5/3提升小波變換及其在DM642上的實(shí)現。為了提高其性能提出了多項優(yōu)化技術(shù),試驗證明這些方法十分有效。
本文地址:http://selenalain.com/thread-41812-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页