專利名稱:一種基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種適用于多種小波變換的統(tǒng)一架構(gòu)VLSI(Very Large Scale Integration,超大規(guī)模集成電路)實(shí)現(xiàn)方法,尤其涉及一種基于折疊流水線技術(shù),通過構(gòu)造小波變換最短迭代計(jì)算路徑來減少計(jì)算資源消耗,并通過簡化提升步驟,采用單射輸入結(jié)構(gòu)來提高硬件利用效率,屬于數(shù)字圖像處理技術(shù)領(lǐng)域。
背景技術(shù):
小波變換以其獨(dú)特的時頻局部化特性,在信號分析和數(shù)字圖像處理等領(lǐng)域有著廣泛的應(yīng)用。上個世紀(jì)九十年代,Sweldens和Daubechies等學(xué)者提出了小波信號分解與重構(gòu)的快速計(jì)算格式-提升格式(lifting scheme)。提升格式的基本思想是建立在雙正交小波和完全可恢復(fù)濾波器組的理論基礎(chǔ)上,在保持小波雙正交特性的條件下,通過所謂提升和對偶提升過程來改善小波及其對偶的性能,以滿足各種應(yīng)用的需要?;谔嵘袷降男〔ㄗ儞Q具有如下優(yōu)點(diǎn)小波基構(gòu)造可以完全在時域內(nèi)進(jìn)行,無須傅立葉分析;涉及的工具較簡單,主要為Laurent級數(shù)的Euclidean除法;可以構(gòu)造出所有已有的小波變換,并且得到部分新的小波變換;運(yùn)算量較小,可以實(shí)現(xiàn)即位(in-place) 運(yùn)算;正向變換與反變換的結(jié)構(gòu)一致,僅有正負(fù)號的區(qū)別。提升格式主要包括三個步驟分裂、預(yù)測和更新,具體內(nèi)容如下分裂將原信號χ (η)分裂為兩個互不相交的子集,通常將原信號序列χ (η)分解為偶數(shù)序列& (η)和奇數(shù)序列χ。(η),即xe(η) =x(2n), X0(η) =χ(2η+1) (1)預(yù)測利用預(yù)測算子P計(jì)算新的奇數(shù)序列d(n),即利用偶數(shù)序列預(yù)測鄰近的奇數(shù)序列X。(η),預(yù)測產(chǎn)生誤差d (η)可用來表示信號的高頻信息,作為小波變換的高頻系數(shù)。其表達(dá)式為d(n) = x0(n)-P(xe(n)) (2)更新通過更新算子U產(chǎn)生新的偶數(shù)序列s (η),使之保持原有偶數(shù)序列& (η)的一些特性,s (η)即可用來表示信號的低頻信息,作為小波變換的低頻系數(shù)。更新過程的表達(dá)式為S (n) = xe(η)+U(d(η)) (3)目前,在靜態(tài)圖像壓縮標(biāo)準(zhǔn)JPEG2000中采用基于提升格式9/7雙正交小波變換做有損壓縮,采用基于提升格式5/3雙正交小波變換做無損壓縮。其中,9/7小波變換方式的優(yōu)點(diǎn)在于小波變換的能量集中性和恢復(fù)圖像的PSNR(峰值信噪比,目前最常用的圖像質(zhì)量客觀評價指標(biāo))較高,但其運(yùn)算復(fù)雜度較高,VLSI實(shí)現(xiàn)時消耗資源較多。5/3雙正交小波變換由于其小波基長度較短以及容易定點(diǎn)化的特點(diǎn),其計(jì)算步驟少,功耗低,實(shí)時性強(qiáng),但是能量集中性和恢復(fù)圖像的PSNR較9/7小波變換表現(xiàn)差。對于內(nèi)容較為簡單的圖像,采用 5/3小波便可以達(dá)到較好的壓縮效果,并且可以減少處理時間和計(jì)算功耗,內(nèi)容復(fù)雜的圖像則采用9/7小波取得的壓縮效果較優(yōu)。
在此背景下,研究一種能實(shí)現(xiàn)多種小波變換的統(tǒng)一架構(gòu)VLSI對圖像壓縮質(zhì)量、處理實(shí)時性以及運(yùn)算功耗均有要求的圖像處理平臺顯得尤為重要。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種采用折疊流水線的統(tǒng)一架構(gòu)VLSI實(shí)現(xiàn)多種小波變換來實(shí)現(xiàn)圖像處理的方法。該方法通過構(gòu)造9/7和5/3小波變換最短迭代計(jì)算路徑來減少計(jì)算資源消耗;通過復(fù)用移位寄存器實(shí)現(xiàn)數(shù)據(jù)延拓來減少存儲資源消耗;并通過簡化提升步驟,采用單射輸入結(jié)構(gòu)來提高硬件利用效率。
為實(shí)現(xiàn)上述的目的,本發(fā)明采用下述的技術(shù)方案一種基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,所述折疊流水線針對多種小波變換采用統(tǒng)一架構(gòu)VLSI,其包括步驟
(1)圖像數(shù)據(jù)讀入從單端口存儲器按行串行讀進(jìn)像素?cái)?shù)據(jù);
(2)圖像數(shù)據(jù)預(yù)處理從讀入的像素值減去直流分量,所述直流分量值取像素值最大值的一半;
(3)預(yù)處理后的數(shù)據(jù)送入基于折疊流水線的提升小波運(yùn)算模塊,進(jìn)行小波變換; 提升小波運(yùn)算模塊采用移位寄存器復(fù)用的邊界對稱延拓,免分裂步驟的單射輸入結(jié)構(gòu);小波變換運(yùn)算過程中采用推遲低頻系數(shù)尺度變換的方法;
(4)在小波變換之后,對小波系數(shù)進(jìn)行量化操作;
(5)對量化后的小波系數(shù)進(jìn)行熵編碼,得到最終碼流。
其中,所述步驟(3)中,小波變換采用基于提升格式實(shí)現(xiàn),包括一次或者多次迭代過程;一次迭代所需的運(yùn)算電路包括預(yù)測和更新電路模塊,數(shù)據(jù)輸入通過寄存器DO和寄存器Dl,得到輸入的奇偶隊(duì)列,送入預(yù)測電路的輸入端口寄存器D2和端口寄存器D3,預(yù)測得到的低頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D6相連;預(yù)測得到的高頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D7相連;更新得到的結(jié)果保存到寄存器Dll和 DlO中;Dll同時與乘法器M3、路選器mux3和路選器muxl相連。
進(jìn)一步的,在9/7小波變換的第一次迭代階段,寄存器Dll保存的數(shù)據(jù)通過muxl 被選通到寄存器D2,寄存器DlO保存的數(shù)據(jù)通過mUX2被選通到寄存器D3,D2和D3中的數(shù)據(jù)進(jìn)入第二次迭代階段;在9/7小波變換的第二次迭代階段,寄存器Dll保存的數(shù)據(jù)通過乘法器M3,與K運(yùn)算得到的結(jié)果送到寄存器D12,作為最終的低頻系數(shù)輸出;寄存器DlO保存的數(shù)據(jù)通過乘法器M4,與K運(yùn)算得到的結(jié)果送到寄存器D13,作為最終的高頻系數(shù)輸出。
進(jìn)一步的,在做5/3小波變換時,只需要一次迭代運(yùn)算,將寄存器Dll的數(shù)據(jù)直接通過路選器mUX3送到寄存器D12,作為最終的低頻系數(shù)輸出,寄存器DlO的數(shù)據(jù)直接通過路選器mux4送到寄存器D13,作為最終的高頻系數(shù)輸出。
進(jìn)一步的,所述步驟3中,小波變換模塊采用折疊流水線技術(shù)的統(tǒng)一實(shí)現(xiàn)架構(gòu) VLSI,構(gòu)造9/7和5/3小波變換最短計(jì)算路徑,動態(tài)配置不同小波基和不同迭代階段乘法器的操作常數(shù)。
進(jìn)一步的,在9/7小波變換第一次迭代階段,乘法器Ml的操作常數(shù)被配置為α,與寄存器D2和寄存器D5的加和相乘,乘法器Μ2的操作常數(shù)被配置為β,與寄存器D7和寄存器D9的加和相乘;在9/7小波變換第二次迭代階段,乘法器Ml的操作常數(shù)被配置為 ,與寄存器D2和寄存器D5的加和相乘;乘法器M2的操作常數(shù)被配置為δ,與寄存器D7和寄存器D9的加和相乘。
進(jìn)一步的,在做5/3小波變換時,只需要進(jìn)行一次迭代操作,乘法器Ml的操作常數(shù)被配置為μ,與寄存器D2和寄存器D5的加和相乘,乘法器Μ2的操作常數(shù)被配置為V,與寄存器D7和寄存器D9的加和相乘。
進(jìn)一步的,所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓;小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);該移位寄存器復(fù)用的結(jié)構(gòu)由三部分組成由寄存器D0-D8組成的移位寄存器鏈,數(shù)據(jù)選擇器以及控制器; 在寄存器使能信號en有效時,小波變換的輸入樣本逐周期依次通過寄存器DO到D8,將寄存器DO連接到數(shù)據(jù)選擇器的5號端口,寄存器Dl連接到數(shù)據(jù)選擇器的4號端口、寄存器D2 連接到數(shù)據(jù)選擇器的3號端口、寄存器D4連接到數(shù)據(jù)選擇器的2號端口、寄存器D6連接到數(shù)據(jù)選擇器的1號端口、寄存器D8的數(shù)據(jù)輸出端口連接到數(shù)據(jù)選擇器連接到數(shù)據(jù)選擇器的 0號端口 ;控制器將數(shù)據(jù)有效信號連接到寄存器D0-D8的使能端口,同時根據(jù)采用9/7小波還是5/3小波進(jìn)行數(shù)據(jù)選擇器選通信號sel生成。
進(jìn)一步的,所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓;小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);在做9/7小波變換時,輸入樣本數(shù)據(jù)有效后的前5個周期內(nèi)不進(jìn)行輸出,在第6個周期輸出寄存器DO里的數(shù)據(jù),第7個周期輸出寄存器D2里的數(shù)據(jù),第8個周期輸出寄存器D2里的數(shù)據(jù),第9個周期輸出寄存器D4里的數(shù)據(jù),第10個周期輸出寄存器D6里的數(shù)據(jù),在此之后輸入樣本數(shù)據(jù)有效期間,一直輸出寄存器D8里的數(shù)據(jù);在輸入樣本數(shù)據(jù)無效后,控制器模塊拉低移位寄存器鏈里D0-D8的使能控制信號,逐周期的將寄存器D8到寄存器DO中的數(shù)據(jù)導(dǎo)出,在此之后,再順序?qū)С黾拇嫫鱀l、寄存器D2以及寄存器D3里的數(shù)據(jù)。
進(jìn)一步的,所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓;小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);在做5/3小波變換時,輸入樣本數(shù)據(jù)有效后的前3個周期內(nèi)不進(jìn)行輸出,在第4個周期輸出寄存器DO里的數(shù)據(jù),第5個周期輸出寄存器D2里的數(shù)據(jù),第6個周期輸出寄存器D2里的數(shù)據(jù),在此之后輸入樣本數(shù)據(jù)有效期間,一直輸出寄存器D4的數(shù)據(jù);在輸入樣本數(shù)據(jù)無效后,控制器模塊拉低移位寄存器鏈里D0-D4的使能控制信號,逐周期的將寄存器D4到寄存器DO中的數(shù)據(jù)導(dǎo)出,在此之后,導(dǎo)出寄存器Dl里的數(shù)據(jù)。
進(jìn)一步的,所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓;邊界延拓后的圖像數(shù)據(jù)被送入迭代運(yùn)算電路;小波變換采用單射的輸入結(jié)構(gòu);邊界對稱延拓后的小波變換輸入樣本數(shù)據(jù)與寄存器DO相連,寄存器DO的輸出端與寄存器Dl輸入端相連;寄存器DO中的數(shù)據(jù)和寄存器Dll通過選擇器muxl進(jìn)入提升運(yùn)算電路的寄存器D2,寄存器Dl中的數(shù)據(jù)和寄存器Dll通過選擇器mux2進(jìn)入提升運(yùn)算電路的寄存器D3。
進(jìn)一步的,所述步驟3中,所述推遲低頻系數(shù)尺度變換的方法為進(jìn)行尺度變換前的提升電路的低頻輸出結(jié)果保存在Dll中,根據(jù)所在的變換級別決定是否對其進(jìn)行尺度變換;在做第η級小波變換時,若η不是最后一級變換,得到的低頻系數(shù)保持不變,高頻系數(shù)中 HL和LH子帶與Κ2"做一次乘法,高頻系數(shù)中HH子帶與Κ*2)做一次乘法;在做第η級小波變換時,若η是最后一級小波變換,高頻系數(shù)中HL和LH子帶與K2fc-1)做一次乘法,高頻系數(shù)中HH子帶與K2fc-2)做一次乘法,低頻系數(shù)與Kai相乘,得到的結(jié)果最為最終的小波系數(shù);K 是個常數(shù),將Kai的取值做成查找表的形式,便不需要進(jìn)行額外的運(yùn)算,用到時查表即可。
本發(fā)明具有如下的優(yōu)點(diǎn)通過設(shè)計(jì)適合在FPGA等高速計(jì)算平臺上實(shí)現(xiàn)的多種小波變換統(tǒng)一實(shí)現(xiàn)架構(gòu),能夠有效地減少實(shí)現(xiàn)多種小波變換所消耗的器件面積,進(jìn)而改善功耗和實(shí)時處理能力;在此基礎(chǔ)上采用寄存器復(fù)用的邊界延拓算法和免分裂的單射輸入結(jié)構(gòu),改善流水線負(fù)載均衡狀況,減少消耗的寄存器數(shù)目。
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明進(jìn)一步的詳細(xì)說明。
圖1是基于小波變換編碼方法的一般實(shí)現(xiàn)流程,包括圖像數(shù)據(jù)輸入、數(shù)據(jù)預(yù)處理、 小波變換、量化和熵編碼步驟。
圖2是小波變換提升實(shí)現(xiàn)的一般實(shí)現(xiàn)步驟,包括分裂、預(yù)測以及更新。
圖3是常規(guī)的基于提升格式的9/7小波變換實(shí)現(xiàn)方法的流水處理示意圖。其中 X(η)為原始數(shù)據(jù),y(n)為小波逆變換后的數(shù)據(jù),預(yù)測1、更新1、預(yù)測2和更新2為中間過程。
圖4是基于提升格式的9/7小波變換所做的對稱延拓示意圖,圖中實(shí)線處對應(yīng)的數(shù)為原始的11個輸入,虛線處為延拓的數(shù)據(jù),其中左延拓?cái)?shù)目為4,右延拓?cái)?shù)目為3。
圖5是本發(fā)明采用的基于移位寄存器復(fù)用的邊界對稱延拓結(jié)構(gòu)圖。
圖6是本發(fā)明采用的折疊流水線的9/7小波變換提升實(shí)現(xiàn)硬件結(jié)構(gòu)圖。
圖7是基于提升格式的9/7小波變換一次提升步驟對應(yīng)的電路結(jié)構(gòu)。
具體實(shí)施方式
本發(fā)明所提供的基于折疊流水線的多種小波變換統(tǒng)一架構(gòu)VSLI實(shí)現(xiàn)方法主要是針對處理時間、變換性能以及計(jì)算功耗要求較多的多種小波變換如基于提升格式的9/7和 5/3小波變換而專門提出的。下面,以圖像壓縮中的9/7和5/3小波變換為例對本發(fā)明的具體實(shí)施步驟進(jìn)行詳細(xì)的說明。但顯然,本發(fā)明所提供的方法還可以用于對其它類型數(shù)據(jù)進(jìn)行的基于提升格式的小波變換操作,所取得的有益效果也是相似的。
小波變換提升格式計(jì)算過程如2所示,一次迭代分為分裂、預(yù)測與更新三個步驟。 9/7小波變換的提升格式由兩次迭代組成,5/3小波變換的提升格式由一次迭代完成,9/7 小波變換的提升步驟為
(1)分裂,S0[η] = χ[2n], d0[η] = χ[2η+1]
(2)預(yù)測 1,Cl1 [η] = d0 [η] + α (s0 [η] +S0 [η+1]),S1 [η] = S0 [η]
(3)更新 1,s2 [η] = S1 [η] + β ((I1 [η] +(I1 [η_1]),d2 [η] = (I1 [η]
(4)預(yù)測 2,d3[η] = d2[η] + γ (s2[η]+S2[η+1]), S3[η] = S2[η]
(5)更新 2,s4 [η] = S3 [η]+δ (d3 [η]+d3 [η_1]),d4[n] = d3 [η]
(6)尺度變換,s [η] = (1/k) s4[n], d5[n] = kd4[n]
其中,分裂步驟中和djn]分別表示輸入隊(duì)列中偶數(shù)位置和奇數(shù)位置的數(shù)據(jù);α、β、Y和δ為提升系數(shù),參與提升步驟中的乘法運(yùn)算,k為尺度變換系數(shù)。
5/3小波變換的提升步驟為
(1)分裂,S0[η] = χ [2η],d0 = x[2n+l]
(2)預(yù)測,d[n] = d0[η]-μ (s0[n]+s0[n+l])
(3)更新,s[η] = s0[n]+v(d[n]+d[n-l])
其中,分裂步驟中和djn]分別表示輸入隊(duì)列中偶數(shù)位置和奇數(shù)位置的數(shù)據(jù);μ和ν為提升系數(shù),參與提升步驟中的乘法運(yùn)算。
分析基于提升格式的小波變換計(jì)算過程,如圖3。預(yù)測1、更新1、預(yù)測2和更新2 表示9/7小波變換的提升格式中二次迭代的計(jì)算過程,χ (η)表示輸入小波系數(shù)點(diǎn)序列。對于5/3小波變換提升格式只需要迭代一次,只進(jìn)行預(yù)測1和更新1以及尺度變換,跳過預(yù)測 2和更新2。
一般情況下,完成圖3所示的數(shù)據(jù)流水處理過程,產(chǎn)生與原始數(shù)據(jù)量相同的高頻與低頻系數(shù)必須對輸入進(jìn)行邊界延拓,最常用的方式是邊界對稱延拓。傳統(tǒng)的邊界延拓算法包括邊界數(shù)據(jù)延拓、存儲和讀取三個操作,需要單獨(dú)的數(shù)據(jù)存儲單元和運(yùn)算過程。壓縮的圖像數(shù)據(jù)量較大時,邊界延拓運(yùn)算將耗費(fèi)較多的內(nèi)存與運(yùn)算單元。也有嵌入式延拓,即將延拓嵌入到提升算法中,但是要改變原有的數(shù)據(jù)依賴關(guān)系,控制變得復(fù)雜。9/7小波變換對稱延拓示意圖如圖4所示。
延拓后的數(shù)據(jù)輸入到提升結(jié)構(gòu)進(jìn)行迭代運(yùn)算。小波變換在進(jìn)入第一次迭代之前要經(jīng)過分裂的步驟,即將輸入分裂為奇偶兩個數(shù)據(jù)序列再送到提升結(jié)構(gòu),則一個雙輸入的提升步驟如圖7所示。一個奇數(shù)據(jù)和一個偶數(shù)據(jù)同時進(jìn)入該提升結(jié)構(gòu),相隔一個周期的偶數(shù)據(jù)進(jìn)行求和操作,再與提升因子相乘,將乘積結(jié)果與對應(yīng)周期的奇數(shù)據(jù)求和得到預(yù)測或者更新的結(jié)果。對于大多數(shù)應(yīng)用場合,比如從單端口存儲器讀出,或者從圖像采集設(shè)備獲取的數(shù)據(jù)大多數(shù)都是串行進(jìn)入的,每個周期進(jìn)入一個數(shù)據(jù),這種情況下,提升流水線架構(gòu)效率降低50%,只有一半時間為有效負(fù)載,另一半時間處于空置狀態(tài)。
在提升計(jì)算過程中,有關(guān)尺度系數(shù)K的運(yùn)算,實(shí)際上是一個歸一化乘法操作,該操作將提升格式生成的低頻和高頻數(shù)據(jù)分別乘以一對互為倒數(shù)的尺度系數(shù)(K和Γ1)。二維圖像的小波變換可拆分為兩個獨(dú)立的一維小波變換,即先對原數(shù)據(jù)行進(jìn)行一維小波變換, 再對數(shù)據(jù)列進(jìn)行一維小波變換。若每次提升格式運(yùn)算時都進(jìn)行尺度系數(shù)K的乘法運(yùn)算,則對應(yīng)所有樣本點(diǎn)均進(jìn)行了兩次乘法操作,若進(jìn)行6級小波變換,則最低頻子帶的變換系數(shù)的歸一化乘法運(yùn)算次數(shù)最多可達(dá)到12次,其它子帶也均有一定的重復(fù)運(yùn)算。
本發(fā)明的基于折疊流水線實(shí)現(xiàn)結(jié)構(gòu)如圖6所示,9/7小波變換提升結(jié)構(gòu)的后兩個流水節(jié)拍的數(shù)據(jù)路徑結(jié)構(gòu)與前兩個流水節(jié)拍相同,因此可以設(shè)計(jì)兩個流水節(jié)拍的電路結(jié)構(gòu),通過適當(dāng)?shù)姆答伈呗?,可以將某一次的運(yùn)算結(jié)果重新導(dǎo)入該電路,進(jìn)行第二次迭代運(yùn)算。一次迭代所需的運(yùn)算電路包括預(yù)測和更新電路模塊。數(shù)據(jù)輸入通過延遲寄存器DO和 D1,得到輸入的奇偶隊(duì)列,送入預(yù)測電路的輸入端口寄存器D2和D3。預(yù)測得到的低頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D6相連;預(yù)測得到的高頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D7相連。更新得到的結(jié)果保存到寄存器Dll和DlO中。Dll同時與乘法器Μ3、路選器mux3和路選器muxl相連。
在9/7小波變換的第一次迭代階段,寄存器Dll保存的數(shù)據(jù)通過muxl被選通到寄存器D2,寄存器DlO保存的數(shù)據(jù)通過mux2被選通到寄存器D3,D2和D3中的數(shù)據(jù)進(jìn)入第二次迭代階段;在9/7小波變換的第二次迭代階段,寄存器Dll保存的數(shù)據(jù)通過乘法器M3,與 K運(yùn)算得到的結(jié)果送到寄存器D12,作為最終的低頻系數(shù)輸出。寄存器DlO保存的數(shù)據(jù)通過乘法器M4,與K運(yùn)算得到的結(jié)果送到寄存器D13,作為最終的高頻系數(shù)輸出。
在做5/3小波變換時,只需要一次迭代運(yùn)算,將寄存器Dll的數(shù)據(jù)直接通過路選器 mux3送到寄存器D12,作為最終的低頻系數(shù)輸出。寄存器DlO的數(shù)據(jù)直接通過路選器mux4 送到寄存器D13,作為最終的高頻系數(shù)輸出。
在9/7小波變換第一次迭代階段,乘法器Ml的操作常數(shù)被配置為α,與寄存器D2 和寄存器D5的加和相乘。乘法器Μ2的操作常數(shù)被配置為β,與寄存器D7和寄存器D9的加和相乘;在9/7小波變換第二次迭代階段,乘法器Ml的操作常數(shù)被配置為Y,與寄存器 D2和寄存器D5的加和相乘。乘法器Μ2的操作常數(shù)被配置為δ,與寄存器D7和寄存器D9 的加和相乘;在做5/3小波變換時,只需要進(jìn)行一次迭代操作,乘法器Ml的操作常數(shù)被配置為μ,與寄存器D2和寄存器D5的加和相乘。乘法器Μ2的操作常數(shù)被配置為ν,與寄存器 D7和寄存器D9的加和相乘。
在做邊界對稱延拓時,本發(fā)明利用FPGA內(nèi)部寄存器的使能信號,使得寄存器鏈合理地工作在移位與鎖存狀態(tài),實(shí)現(xiàn)寄存器復(fù)用,達(dá)到減少寄存器消耗數(shù)量的目的。具體操作如下所述。
在邊界對稱延拓過程中,對于9/7小波,移位寄存器鏈工作分為以下幾個狀態(tài)
(1)流水線填充在輸入使能控制信號有效后的頭5個周期,將輸入數(shù)據(jù)送入移位寄存器鏈,不輸出。
(2)左延拓?cái)?shù)據(jù)輸出移位寄存器正常移位,在第六個周期,輸出DO寄存器數(shù)據(jù), 后幾個周期依次輸出D2、D4、D6和D8寄存器數(shù)據(jù),之后進(jìn)入中間數(shù)據(jù)輸出狀態(tài)。
(3)中間數(shù)據(jù)輸出輸入使能有效期間,移位寄存器正常移位,輸出D8寄存器數(shù)據(jù)。輸入使能無效,進(jìn)入右延拓?cái)?shù)據(jù)輸出狀態(tài)。
(4)右延拓?cái)?shù)據(jù)輸出輸入使能無效,則流水線里保存了尚未輸出的中間數(shù)據(jù)以及待右延拓的數(shù)據(jù),此時將寄存器的使能端拉低,依次輸出D8到DO的數(shù)據(jù),最后輸出需要延拓的D3、D2和Dl寄存器里的數(shù)據(jù)。
對于5/3小波,輸出分為幾個狀態(tài)
(1)流水線填充在輸入使能控制信號有效的頭3個周期,將輸入數(shù)據(jù)送入移位寄存器鏈,不輸出。
(2)左延拓?cái)?shù)據(jù)輸出移位寄存器正常移位,在第四個周期,輸出DO寄存器數(shù)據(jù), 后幾個周期依次輸出D2和D4寄存器,之后進(jìn)入中間數(shù)據(jù)輸出狀態(tài)。
(3)中間數(shù)據(jù)輸出輸入使能有效期間,移位寄存器正常移位,輸出D4寄存器數(shù)據(jù)。輸入使能無效,進(jìn)入右延拓?cái)?shù)據(jù)輸出狀態(tài)。
(4)右延拓?cái)?shù)據(jù)輸出輸入使能無效,則流水線里保存了尚未輸出的中間數(shù)據(jù)以及待右延拓的數(shù)據(jù),此時將寄存器的使能端拉低,依次輸出D4到DO寄存器中的數(shù)據(jù),最后輸出需要延拓的Dl寄存器里的數(shù)據(jù)。
如圖6,做提升運(yùn)算時,本發(fā)明采用單射輸入結(jié)構(gòu),該結(jié)構(gòu)每個周期接收一個小波變換輸入樣本數(shù)據(jù),樣本數(shù)據(jù)依次經(jīng)過寄存器DO和寄存器D1,經(jīng)過路選器muxl和muX2進(jìn)入提升步驟的D2和D3寄存器,每個周期輸入提升結(jié)構(gòu)中一個數(shù)據(jù),數(shù)據(jù)的奇偶分離由延遲寄存器DO和Dl完成。這樣在偶數(shù)據(jù)D2和D5完成求和、并與α或μ相乘的操作時,再與奇數(shù)據(jù)D3求和得到一個小波系數(shù);下一個周期從流水線輸出的偶數(shù)據(jù)D5則是另一個小波系數(shù)。該結(jié)構(gòu)每個周期吞進(jìn)一個輸入并輸出一個系數(shù),流水線有效負(fù)載一直保持平衡。
在做尺度變換時,本發(fā)明在某一級小波變換產(chǎn)生小波系數(shù)時判定是否為高頻系數(shù),若是高頻系數(shù)則進(jìn)行歸一化操作,若是低頻系數(shù)則直接送到低頻系數(shù)存儲,不進(jìn)行歸一化操作,在做下一級時對高頻系數(shù)的尺度系數(shù)K進(jìn)行調(diào)整,抵消上一級低頻系數(shù)不歸一化帶來的取值范圍增益,使各個子帶變換系數(shù)僅需要做一次乘法運(yùn)算。
具體操作如下在做第η (η不是最后一級變換)級小波變換時,得到的低頻系數(shù)保持不變,高頻系數(shù)中HL和LH子帶與K2fo-1)做一次乘法,高頻系數(shù)中HH子帶與K2fc-2)做一次乘法。在做第η (η是最后一級小波變換)級小波變換時,高頻系數(shù)與前幾級做同樣的處理, 低頻系數(shù)與Kai相乘,送到小波系數(shù)存儲。
由于K是個常數(shù),可以將Kai的取值做成查找表的形式,便不需要進(jìn)行額外的運(yùn)算, 用到時查表即可。
本發(fā)明經(jīng)過在Modelsim SE 6. 平臺上仿真測試,仿真文件激勵為256拉56大小的圖像,對基于提升格式的9/7小波變換和5/3小波變換算法都能夠根據(jù)程序配置得到正確的變換結(jié)果。在邏輯資源消耗上,本發(fā)明比一般9/7長流水線結(jié)構(gòu)節(jié)約近一半資源,僅與 5/3提升結(jié)構(gòu)相當(dāng),硬件實(shí)現(xiàn)效率100%。
以上對本發(fā)明所述的基于提升格式的9/7和5/3小波變換優(yōu)化實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的說明,但顯然本發(fā)明的具體實(shí)現(xiàn)形式并不局限于此。對于本技術(shù)領(lǐng)域的一般技術(shù)人員來說,在不背離本發(fā)明的權(quán)利要求范圍的情況下對它進(jìn)行的各種顯而易見的改變都在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,所述折疊流水線針對多種小波變換采用統(tǒng)一架構(gòu)VLSI,其特征在于包括步驟(1)圖像數(shù)據(jù)讀入從單端口存儲器按行串行讀進(jìn)像素?cái)?shù)據(jù);(2)圖像數(shù)據(jù)預(yù)處理從讀入的像素值減去直流分量,所述直流分量值取像素值最大值的一半;(3)預(yù)處理后的數(shù)據(jù)送入基于折疊流水線的提升小波運(yùn)算模塊,進(jìn)行小波變換;提升小波運(yùn)算模塊采用移位寄存器復(fù)用的邊界對稱延拓,免分裂步驟的單射輸入結(jié)構(gòu);小波變換運(yùn)算過程中采用推遲低頻系數(shù)尺度變換的方法;(4)在小波變換之后,對小波系數(shù)進(jìn)行量化操作;(5)對量化后的小波系數(shù)進(jìn)行熵編碼,得到最終碼流。
2.如權(quán)利要求1所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟(3)中,小波變換采用基于提升格式實(shí)現(xiàn),包括一次或者多次迭代過程;一次迭代所需的運(yùn)算電路包括預(yù)測和更新電路模塊,數(shù)據(jù)輸入通過寄存器DO和寄存器D1,得到輸入的奇偶隊(duì)列,送入預(yù)測電路的輸入端口寄存器D2和端口寄存器D3,預(yù)測得到的低頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D6相連;預(yù)測得到的高頻系數(shù)作為更新電路的輸入,與更新電路的寄存器D7相連;更新得到的結(jié)果保存到寄存器Dll和DlO中;Dll同時與乘法器M3、路選器mux3和路選器muxl相連。
3.如權(quán)利要求2所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 在9/7小波變換的第一次迭代階段,寄存器Dll保存的數(shù)據(jù)通過muxl被選通到寄存器D2, 寄存器DlO保存的數(shù)據(jù)通過mux2被選通到寄存器D3,D2和D3中的數(shù)據(jù)進(jìn)入第二次迭代階段;在9/7小波變換的第二次迭代階段,寄存器Dll保存的數(shù)據(jù)通過乘法器M3,與K運(yùn)算得到的結(jié)果送到寄存器D12,作為最終的低頻系數(shù)輸出;寄存器DlO保存的數(shù)據(jù)通過乘法器 M4,與K運(yùn)算得到的結(jié)果送到寄存器D13,作為最終的高頻系數(shù)輸出。
4.如權(quán)利要求2所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 在做5/3小波變換時,只需要一次迭代運(yùn)算,將寄存器Dll的數(shù)據(jù)直接通過路選器mux3送到寄存器D12,作為最終的低頻系數(shù)輸出,寄存器DlO的數(shù)據(jù)直接通過路選器mux4送到寄存器D13,作為最終的高頻系數(shù)輸出。
5.如權(quán)利要求1所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,小波變換模塊采用折疊流水線技術(shù)的統(tǒng)一實(shí)現(xiàn)架構(gòu)VLSI,構(gòu)造9/7和5/3小波變換最短計(jì)算路徑,動態(tài)配置不同小波基和不同迭代階段乘法器的操作常數(shù)。
6.如權(quán)利要求5所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 在9/7小波變換第一次迭代階段,乘法器Ml的操作常數(shù)被配置為α,與寄存器D2和寄存器 D5的加和相乘,乘法器Μ2的操作常數(shù)被配置為β,與寄存器D7和寄存器D9的加和相乘; 在9/7小波變換第二次迭代階段,乘法器Ml的操作常數(shù)被配置為Y,與寄存器D2和寄存器 D5的加和相乘;乘法器Μ2的操作常數(shù)被配置為δ,與寄存器D7和寄存器D9的加和相乘。
7.如權(quán)利要求5所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 在做5/3小波變換時,只需要進(jìn)行一次迭代操作,乘法器Ml的操作常數(shù)被配置為μ,與寄存器D2和寄存器D5的加和相乘,乘法器Μ2的操作常數(shù)被配置為ν,與寄存器D7和寄存器D9 的加和相乘。
8.如權(quán)利要求1所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓; 小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);該移位寄存器復(fù)用的結(jié)構(gòu)由三部分組成由寄存器D0-D8組成的移位寄存器鏈,數(shù)據(jù)選擇器以及控制器;在寄存器使能信號en 有效時,小波變換的輸入樣本逐周期依次通過寄存器DO到D8,將寄存器DO連接到數(shù)據(jù)選擇器的5號端口,寄存器Dl連接到數(shù)據(jù)選擇器的4號端口、寄存器D2連接到數(shù)據(jù)選擇器的 3號端口、寄存器D4連接到數(shù)據(jù)選擇器的2號端口、寄存器D6連接到數(shù)據(jù)選擇器的1號端口、寄存器D8的數(shù)據(jù)輸出端口連接到數(shù)據(jù)選擇器連接到數(shù)據(jù)選擇器的0號端口 ;控制器將數(shù)據(jù)有效信號連接到寄存器D0-D8的使能端口,同時根據(jù)采用9/7小波還是5/3小波進(jìn)行數(shù)據(jù)選擇器選通信號sel生成。
9.如權(quán)利要求8所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓; 小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);在做9/7小波變換時,輸入樣本數(shù)據(jù)有效后的前5個周期內(nèi)不進(jìn)行輸出,在第6個周期輸出寄存器DO里的數(shù)據(jù),第7個周期輸出寄存器D2里的數(shù)據(jù),第8個周期輸出寄存器D2里的數(shù)據(jù),第9個周期輸出寄存器D4 里的數(shù)據(jù),第10個周期輸出寄存器D6里的數(shù)據(jù),在此之后輸入樣本數(shù)據(jù)有效期間,一直輸出寄存器D8里的數(shù)據(jù);在輸入樣本數(shù)據(jù)無效后,控制器模塊拉低移位寄存器鏈里D0-D8的使能控制信號,逐周期的將寄存器D8到寄存器DO中的數(shù)據(jù)導(dǎo)出,在此之后,再順序?qū)С黾拇嫫鱀1、寄存器D2以及寄存器D3里的數(shù)據(jù)。
10.如權(quán)利要求8所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓; 小波變換的邊界對稱延拓采用移位寄存器復(fù)用的結(jié)構(gòu);在做5/3小波變換時,輸入樣本數(shù)據(jù)有效后的前3個周期內(nèi)不進(jìn)行輸出,在第4個周期輸出寄存器DO里的數(shù)據(jù),第5個周期輸出寄存器D2里的數(shù)據(jù),第6個周期輸出寄存器D2里的數(shù)據(jù),在此之后輸入樣本數(shù)據(jù)有效期間,一直輸出寄存器D4的數(shù)據(jù);在輸入樣本數(shù)據(jù)無效后,控制器模塊拉低移位寄存器鏈里D0-D4的使能控制信號,逐周期的將寄存器D4到寄存器DO中的數(shù)據(jù)導(dǎo)出,在此之后,導(dǎo)出寄存器Dl里的數(shù)據(jù)。
11.如權(quán)利要求1所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,在圖像數(shù)據(jù)進(jìn)入小波變換迭代運(yùn)算電路之前,要對圖像數(shù)據(jù)進(jìn)行邊界延拓; 邊界延拓后的圖像數(shù)據(jù)被送入迭代運(yùn)算電路;小波變換采用單射的輸入結(jié)構(gòu);邊界對稱延拓后的小波變換輸入樣本數(shù)據(jù)與寄存器DO相連,寄存器DO的輸出端與寄存器Dl輸入端相連;寄存器DO中的數(shù)據(jù)和寄存器Dll通過選擇器muxl進(jìn)入提升運(yùn)算電路的寄存器D2,寄存器Dl中的數(shù)據(jù)和寄存器Dll通過選擇器mux2進(jìn)入提升運(yùn)算電路的寄存器D3。
12.如權(quán)利要求1所述的基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,其特征在于 所述步驟3中,所述推遲低頻系數(shù)尺度變換的方法為進(jìn)行尺度變換前的提升電路的低頻輸出結(jié)果保存在Dll中,根據(jù)所在的變換級別決定是否對其進(jìn)行尺度變換;在做第η級小波變換時,若η不是最后一級變換,得到的低頻系數(shù)保持不變,高頻系數(shù)中HL和LH子帶與 Κ*1)做一次乘法,高頻系數(shù)中HH子帶與K2fc-2)做一次乘法;在做第η級小波變換時,若η是最后一級小波變換,高頻系數(shù)中HL和LH子帶與K2fc-1)做一次乘法,高頻系數(shù)中HH子帶與做一次乘法,低頻系數(shù)與Kai相乘,得到的結(jié)果最為最終的小波系數(shù);K是個常數(shù),將K2n 的取值做成查找表的形式,便不需要進(jìn)行額外的運(yùn)算,用到時查表即可。
全文摘要
本發(fā)明提供一種基于折疊流水線小波變換實(shí)現(xiàn)圖像壓縮的方法,尤其涉及一種基于折疊流水線技術(shù),所述折疊流水線針對多種小波變換采用統(tǒng)一架構(gòu)VLSI,通過構(gòu)造小波變換最短迭代計(jì)算路徑來減少計(jì)算資源消耗,并通過簡化提升步驟,采用單射輸入結(jié)構(gòu)來提高硬件利用效率。實(shí)驗(yàn)結(jié)果表明,對于相同的圖像,分別采用本結(jié)構(gòu)與傳統(tǒng)長流水線結(jié)構(gòu)實(shí)驗(yàn),本方法在資源消耗和硬件利用率方面更優(yōu)。
文檔編號H04N7/50GK102510489SQ20111028104
公開日2012年6月20日 申請日期2011年9月21日 優(yōu)先權(quán)日2011年9月21日
發(fā)明者姜宏旭, 曹海恒, 李波 申請人:北京航空航天大學(xué)