二維9/7小波變換VLSI設(shè)計
JPEG2000標(biāo)準(zhǔn)與JEPG標(biāo)準(zhǔn)最顯著的不同點是選用以小波變換為主的多分辨率編碼方法。JPEG2000標(biāo)準(zhǔn)給出兩種雙正交小波濾波器,即有損壓縮和無損壓縮,前者采用CDF9/7小波,后者采用5/3小波。CDF9/7小波是圖像壓縮的首選濾波器,自然圖像壓縮性能好于5/3小波。
目前圖像二維離散小波變換的硬件實現(xiàn)方法有兩種:一種是采用分離的一維小波變換,另一種是設(shè)計非離散的二維小波變換結(jié)構(gòu)。前者首先利用一個一維小波變換器對圖像進(jìn)行行(列)變換,然后再對其列(行)變換。后者由于非離散的二維小波變換器一般具有行列兩個小波變換器,并通過若干行變換緩沖行變換的結(jié)果,可同時進(jìn)行行列變換。因此,第一種方法是逐一變換圖像的像素點,然后逐一列變換。而第二種方法是行列變換并行處理像素點,提高處理速度,但仍是逐一處理圖像的像素點。借助于這兩種實現(xiàn)方法,提出了一種Mesh結(jié)構(gòu)的VLSI方案,將處理的圖像NxN分解成nxn的子圖像,從而并行處理nxn個像素點。
2 9/7小波提升算法實現(xiàn)
假設(shè)輸入一維信號為X[n],9/7小波提升算法描述如下:
為進(jìn)一步說明一維信號的提升算法,圖l給出了該算法的計算示意圖。圖中圓圈所示的pea,peb,pec,ped分別完成Step2,Step3,Step4,Step5計算。假設(shè)一個信號有32個信號數(shù)值,經(jīng)“邊緣處理”后,變?yōu)?9個信號值,即要處理的x[n]。
若圖像為二維信號,對圖像的小波變換包括行變換和列變換。假設(shè)圖像G有512x512個像素。取其矩陣的某一行,經(jīng)邊緣變換成一個一維信號x[n](0≤n≤518),再經(jīng)提升算法計算后,得到256個高頻數(shù)值h和256個低頻數(shù)值l。對矩陣的每一行進(jìn)行相關(guān)計算,得到的所有高頻部分組成一個高頻矩陣H,其大小為512x256:所有低頻部分組成一個低頻矩陣L,其大小與高頻矩陣相同。將圖像G的矩陣變換為高頻矩陣H和低頻矩陣L的過程稱為“行變換”。取高頻矩陣H中的某一列,經(jīng)邊緣變換后為一個一維信號x[m](0≤m≤518),再經(jīng)提升算法的計算得到256個高頻部分h和256個低頻部分l。對高頻矩陣中的每一列進(jìn)行相關(guān)計算,得到所有高頻組成的新矩陣HH,所有低頻組成的新矩陣HL。同樣,對于低頻矩陣L的每一列得到LH,LL。這個過程稱為“列變換”。圖像9/7小波變換過程如圖2所示。
3 Mesh結(jié)構(gòu)
假設(shè)要處理的圖像為512x512像素,將該圖像分為16x16個子圖像,每個子圖像的像素為32x32。用G(m,n)表示第m行第n列的子圖像,將其子圖像的所有像素點數(shù)據(jù)輸入到Mesh結(jié)構(gòu)對應(yīng)的各個PE,同時處理32x32個像素點。完成所有子圖像處理也就完成整個圖像處理。
由于圖像變換包括行變換和列變換。因此,當(dāng)子圖像調(diào)入Mesh結(jié)構(gòu)(圖3)后.則對其子圖像行變換和列變換。行變換時,子圖像每一行為一維信號X[n]。Mesh結(jié)構(gòu)每一行PE完成的功能就是圖1中的“左邊緣計算”,“主計算”,“右邊緣計算”。每一行包括1個“左邊緣計算”,1個“右邊緣計算”和16個“主計算”。把“左邊緣計算”放在一個功能模塊,稱為左邊緣處理PE,用PEl表示。同樣,將“主計算”放在一個功能模塊,稱為主計算PE,表示為PEm。“右邊緣計算”的功能模塊稱為右邊緣處理PE,表示為PEr。Mesh結(jié)構(gòu)中的第l列為PEl,第18列為PEr。但第2~17列并不全為PEm,因為還要考慮列變換。列變換時,第2~17列的上面4行PE完成“左邊緣計算”功能,下面3行PE完成“右邊緣計算”。列變換時,“左(右)邊緣計算”就是每一列的上(下)邊緣。所以這些PE的特殊之處在于:行變換時完成“主計算”,列變換時完成“左(右)邊緣計算”。把第2~17列的第l行PE用PEmlhl表示(m為行變換時完成“主計算”,l代表列變換時完成“左邊緣計算”,h1代表這個PE是高頻矩陣上“左邊緣計算”的第一部分)。第2行用PEmlll表示,第3行用PEmlh2表示,第4行用PEmll2,第37行用PEmrh表示,第38行用PEmrl表示,第39行用PEmhl表示。而中間部分其他PE在行變換和列變換時都完成“主計算”,這里用PEm表示。
Mesh結(jié)構(gòu)處理處理流程為:
(1)輸入原始數(shù)據(jù)輸人原始數(shù)據(jù)的過程就是將一個子圖G(m,n)的像素點調(diào)入到Mesh結(jié)構(gòu)對應(yīng)PE的過程。例如,要調(diào)入的子圖像G(2,1),大小為32x32??紤]邊緣處理,因此,同時調(diào)入的還有:子圖G(1,1)最下面的4行和子圖G(3,1)最上面的4行,子圖G(3,1)最左面的3列,子圖G(1,2)最下面的4行最左邊的3列,子圖G(3,2)最上面3行最左邊3列,這些數(shù)
值組成一個新的矩陣D,大小為39x35。然后對該矩陣的每一行左邊進(jìn)行邊緣處理。處理后的矩陣大小為39x39。要調(diào)入的所有像素點數(shù)值在整個圖像G中的位置如圖4所示。
邊緣處理后的矩陣D就是要輸入的原始數(shù)據(jù)矩陣。Mesh結(jié)構(gòu)中每一行最左邊的PE都有一個數(shù)據(jù)輸入信號線,原始數(shù)據(jù)矩陣的每一行的數(shù)值輸入到PE陣列最左邊的PE,然后依次輸入對應(yīng)PE。Mesh結(jié)構(gòu)的第1列的PE有4個原始數(shù)據(jù),最后一列PE有3個原始數(shù)據(jù),其他PE都有2個原始數(shù)據(jù),這樣原始數(shù)據(jù)矩陣D的39x39個數(shù)值就對應(yīng)于Mesh結(jié)構(gòu)的39x18個PE的陣列中。矩陣D的元素在Mesh結(jié)構(gòu)PE中的分配情況如圖5所示。
(2)行變換 輸入原始數(shù)據(jù)后,Mesh結(jié)構(gòu)中的每一行的PE相互配合,完成“行變換”。從數(shù)值上,行變換結(jié)果為一個高頻矩陣H和一個低頻矩陣L。從Mesh結(jié)構(gòu)上看,1個PE存儲2個數(shù)值h和l,分別為矩陣H和矩陣L中的元素。但并不是每個PE中都存有h和l,因為Mesh結(jié)構(gòu)的第1列和第18列的PE功能是邊緣處理。所以行變換后,第2—17列PE有2個中間結(jié)果h和l。行變換結(jié)果高頻矩陣H和低頻矩陣L在Mesh結(jié)構(gòu)中的存儲情況,如圖6所示。
(3)數(shù)據(jù)交換 在進(jìn)入列變換之前,需要調(diào)整h和l在PE中的位置,該過程就是數(shù)據(jù)交換。以圖6中的第2列說明數(shù)據(jù)交換,其他列的數(shù)據(jù)交換和第2列的數(shù)據(jù)交換方法相同,如圖7所示。
(4)列變換 數(shù)據(jù)交換后,PE在列上配合完成“列變換”。仍以第2列為例,從圖7中看出,數(shù)據(jù)交換后,有的PE存儲2個h,有的PE存儲2個l。列變換就是含有2個h的PE之間的相互配合,2個l的PE的相互配合。從數(shù)值上看,列變換把H矩陣分為HH和HL矩陣,把L矩陣分為LH和LL2個矩陣。這4個矩陣的元素在PF中對應(yīng)的位置如圖8所示。
4 圖像的邊緣處理
真實信號具有邊界,在某些一維應(yīng)用中,信源產(chǎn)生的樣本數(shù)量是無限的,能夠忽略邊界效應(yīng)。二維的信源如圖像,由于物理約束而有界,必須考慮小波變換的邊界效應(yīng)。邊界延拓算法主要有零填充法、邊界元素復(fù)制法、周期延拓法,對稱延拓法和雙倍對稱延拓法。該設(shè)計采用對稱周期延拓算法,就是預(yù)先拓展邊界的數(shù)據(jù)點,將原信號X[k]延拓后的信號X’[k]送入提升結(jié)構(gòu)中。例如:原信號集合為{X[0],X[1],X[2],X[3],X[4]…X[n一3],X[n一2],X[n-1]},對于9/7奇對稱小波,延拓后提輸入信號為{X[4],X[3],X[2],X[1],X[0],X[1],X[2],X[3],X[4]…X[n一3],X[n一2],X[n—l],X[n一2],X[n一3],X[n一4]}。要處理的圖像是512x512像素,Mesh結(jié)構(gòu)陣列中處理的是該圖像的一個子圖像。這樣把圖像分解為了16x16個子圖像(32x32像素)。其處理順序是:先對第1行的子圖像從左到右處理,然后對第2行的子圖像從左到右處理,依此類推,直到完整個512x512像素的圖像處理為至。
一個子圖像在調(diào)入處理陣列之前需經(jīng)邊緣處理。根據(jù)子圖像所處位置不同,其圖像處理也不同。比如對子圖像G(1,1),每行左邊緣需要對稱處理,而右邊緣則取G(1,2)每行左邊的3個像素點數(shù)值,每列上邊緣做對稱處理,每列下邊緣取G(2,1)的每列上邊3個像素點。這樣經(jīng)邊緣處理后的子圖像的像素為39x39。
5 比較
圖像二維離散小波變換硬件實現(xiàn)有圖9和圖10所示的2種方法,圖9是利用一維小波變換器直接實現(xiàn)圖像的二維小波變換。圖10是用行濾波器和列濾波器實現(xiàn)圖像的二維小波變換。
離散結(jié)構(gòu)在行變換和列變換中間需要一個專用存儲器來存儲中間結(jié)果,Mesh結(jié)構(gòu)在行變換后可直接列變換,這樣可節(jié)約存儲資源。而非離散結(jié)構(gòu)采用行變換和列變換2個濾波器,Mesh結(jié)構(gòu)用一個濾波器PE完成行變換和列變換,這樣可節(jié)約計算資源。
6 結(jié)論
集成電路的頻率取決于信號傳輸路徑上兩個寄存器之間的最大規(guī)模的組合邏輯。Mesh結(jié)構(gòu)的設(shè)計中兩個寄存器之間最大規(guī)模的組合邏輯為兩個多路選擇器和一個乘法器。參考文獻(xiàn)中處理時最大的組合邏輯為一個乘法器。所以Mesh結(jié)構(gòu)的設(shè)計和參考文獻(xiàn)中的設(shè)計的頻率基本相同,周期也相同。該系統(tǒng)設(shè)計處理32x32像素點需要31個周期,而其他設(shè)計中要逐個處理32x32個像素點,所以處理1 024(32x32)像素點需要l 024個周期。由于采用并行處理,這種Mesh結(jié)構(gòu)的速度可提高32倍。