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