一種基於fpga的引導濾波器及其實現方法
2023-05-31 10:23:56 1
一種基於fpga的引導濾波器及其實現方法
【專利摘要】本發明公開了一種基於FPGA的引導濾波器及其實現方法,該基於FPGA的引導濾波器包括:信號控制器、均值濾波模塊、參數計算模塊、尋址取值模塊、狀態判別器、數據緩存器、綜合運算模塊;該基於FPGA的引導濾波器實現方法通過結合FPGA晶片,充分利用了FPGA易於實現大規模並行運算的特點,在保證濾波效果的同時提高運算速度,降低了引導濾波器硬體設計的複雜度。本發明從總體上給出了濾波處理的並行結構,提高了濾波的速度;通過尋址取值的方式改進了二進位除法運算,便於硬體實現,提高了系統運行時間;通過判別器設置改進了二進位減法算法,提高了系統可靠性。
【專利說明】-種基於FPGA的引導濾波器及其實現方法
【技術領域】
[0001] 本發明屬於引導濾波器【技術領域】,尤其涉及一種基於FPGA的引導濾波器及其實 現方法。
【背景技術】
[0002] 引導濾波器是一種邊緣平滑濾波器,它可以實現圖像邊緣的平滑、細節增強、以及 圖像融合去噪等功能,是一種功能強大的濾波器。它的原理是通過一幅引導圖像對輸入圖 像進行濾波,輸出的圖像在保留輸入圖像整體特徵的同時,能充分獲取引導圖像的變化細 節。引導濾波器在圖像去噪,圖像細節平滑、增強,摳圖,羽化等等方面均取得了不錯的效 果,應用比較廣泛。
[0003] 但是引導濾波算法比較複雜,運算量比較大,從而導致引導濾波器的實時性很差, 阻礙了其實際應用。考慮到算法內部並行模塊的獨立性,硬體實現不失為提高濾波實時性 的有效途徑之一。目前,絕大部分引導濾波文獻是關於其理論研究以及在軟體算法仿真的, 而關於其硬體實現的則很少。
[0004] FPGA是基於查找表結構的可編程器件,具有大容量的BlockRAM資源,而且可以通 過系統內的重新配置來改變邏輯功能,為引導濾波器的硬體設計與實現提供了可能。如何 利用FPGA實現引導濾波器的硬體設計,達到引導濾波快速處理的目標,從而實現引導濾波 器在圖像處理等領域的實時應用,具有十分重要的意義。
【發明內容】
[0005] 本發明實施例的目的在於提供一種基於FPGA的引導濾波器及其實現方法,旨在 解決引導濾波算法比較複雜,運算量比較大,從而導致引導濾波器的實時性很差的問題。
[0006] 本發明實施例是這樣實現的,一種基於FPGA的引導濾波器,該基於FPGA的引導濾 波器包括:信號控制器、均值濾波模塊、參數計算模塊、尋址取值模塊、狀態判別器、數據緩 存器、綜合運算模塊;
[0007] 信號控制器,由行列計數器和比較器構成,用於對數據實時監控,通過輸入的系統 控制信號分析數據狀態,及時標記並發送行信號及場信號工作指令,確保能夠依據指令正 確處理數據;
[0008] 均值濾波模塊,與信號控制器連接,用於對數據進行均值化濾波處理,由局部窗口 生成模塊和均值計算器模塊構成,其中局部窗口生成模塊由系統快速生成的FIFO和移位 寄存器組成,用於將串行數據並行化輸出,均值計算模塊由加法器和乘法器組成,用於數據 處理,在二進位除法改進算法的基礎上,對並行輸入到均值計算模塊的數據求取總和值,然 後進入到乘法器,計算並行輸入數據的均值;
[0009] 參數計算模塊,與均值濾波模塊連接,由多個加法器、減法器、乘法器、比較器和寄 存器組成,用於收集數據,完成初步數據處理,計算過程中與尋址取值模塊互相調用,經計 算獲取方差值以及局部線性係數值;
[0010] 尋址取值模塊,與均值濾波模塊和參數計算模塊連接,用於對二進位除法算法的 改進,充分利用FPGA具有大容量的BI0CKRAM資源,用於存儲大量數據和實現快速查找表功 能的特點,將除法運算改為一次寄存器尋址過程和一次乘法運算過程,通過改進生成尋址 取值模塊,為參數計算模塊及均值濾波模塊提供所需數據;
[0011] 狀態判別器,與參數計算模塊連接,由比較器、加法器、減法器和寄存器組成,是基 於改進計算過程中帶有符號形式的二進位數不易於分辨及處理的情況所設置,用於對輸入 數據對比產生狀態使能信號,驅動參數計算模塊和綜合運算模塊按照使能狀態智能數據處 理,減少系統計算複雜度;
[0012] 數據緩存器,與綜合運算模塊連接,由系統快速生成的FIFO和移位寄存器組成, 用於協調數據時序,確保數據能夠同步處理;
[0013] 綜合運算模塊,與均值濾波模塊、狀態判別器和數據緩存器連接,用於數據綜合處 理,結合數據緩存器和參數計算模塊的數據綜合處理,最終輸出通過導向濾波器濾波之後 的圖像數據信息。
[0014] 本發明實施例的另一目的在於提供一種基於FPGA的引導濾波器實現方法,該基 於FPGA的引導濾波器實現方法包括以下步驟:
[0015] 步驟一:信號控制器:
[0016] 按照流水線設計方法,局部窗口生成後會隨著數據的不斷輸入逐步右移,利用加 法器構成一款計數器,在同步時鐘的控制下對系統輸入控制信號進行標記、判斷並發送狀 態息;
[0017] 步驟二:均值濾波:
[0018] 均值濾波模塊中局部生成窗口為3*3模塊,輸入圖像為P_in,引導圖像為I_in,以 數據串的形式在同步時鐘激勵下按行分別輸入到局部生成窗口模塊,在經過兩個FIFO和6 個寄存器後,輸出數據組1 :P1、P2……P9和數據組2 :11、12……19,利用乘法器獲取數據 組3 :IP1、IP2……IP9以及數據組4 :ΙΙ1、ΙΙ2……119,將四組數據分別送到4個均值計算 模塊,通過計算分別得到數據組均值:ave_P、ave_I、ave_IP和ave_II ;
[0019] 步驟三:變量計算:
[0020] 第一步,參數計算:
[0021] 在得到ave_P、ave_I、ave_IP及ave_II四組數據,通過分析整理,對(ak,b k)計算;
[0022] 第二步,尋址取值:基於FPGA對二進位除法改進算法的設計,用被除數乘以除數 的倒數,將除法轉為乘法來簡化計算過程;
[0023] 第三步,狀態判別器:
[0024] 步驟三和步驟六的計算過程中涉及到二進位減法運算,計算過程中會產生負數, 基於對帶符號二進位數的狀態判別器進行處理;
[0025] 步驟四:均值濾波:
[0026] 用於對步驟三中得到的(ak,bk)分別進行均值濾波,具體方法見步驟二,局部窗口 生成模塊C、D分別生成數據組5:akl,ak2......ak9和數據組6 :bkl,bk2......bk9到均值計算模 塊,輸出數據組均值ave_a和ave_b ;
[0027] 步驟五:數據緩存器:
[0028] 步驟二和步驟四分別調用了局部窗口生成模塊,所以行緩存設計中需要用到4個 FIFO, FIFO深度與局部生成窗口中用到的FIFO深度一致,設計期間由於部分公式計算會引 起時延,所以在數據緩存器的設計中還需要用到寄存器組,I_in在經過數據緩存器緩存後 輸出 I_in_delay ;
[0029] 步驟六:綜合運算:
[0030] 如公式
【權利要求】
1. 一種基於FPGA的引導濾波器,其特徵在於,該基於FPGA的引導濾波器包括:信號控 制器、均值濾波模塊、參數計算模塊、尋址取值模塊、狀態判別器、數據緩存器、綜合運算模 塊; 信號控制器,由行列計數器和比較器構成,用於對數據實時監控,通過輸入的系統控制 信號分析數據狀態,及時標記並發送行信號及場信號工作指令,確保能夠依據指令正確處 理數據; 均值濾波模塊,與信號控制器連接,用於對數據進行均值化濾波處理,由局部窗口生 成模塊和均值計算器模塊構成,其中局部窗口生成模塊由系統快速生成的FIFO和移位寄 存器組成,用於將串行數據並行化輸出,均值計算模塊由加法器和乘法器組成,用於數據處 理,在二進位除法改進算法的基礎上,對並行輸入到均值計算模塊的數據求取總和值,然後 進入到乘法器,計算並行輸入數據的均值; 參數計算模塊,與均值濾波模塊連接,由多個加法器、減法器、乘法器、比較器和寄存器 組成,用於收集數據,完成初步數據處理,計算過程中與尋址取值模塊互相調用,經計算獲 取方差值以及局部線性係數值; 尋址取值模塊,與均值濾波模塊和參數計算模塊連接,用於對二進位除法算法的改進, 充分利用FPGA具有大容量的BI0CKRAM資源,用於存儲大量數據和實現快速查找表功能的 特點,將除法運算改為一次寄存器尋址過程和一次乘法運算過程,通過改進生成尋址取值 模塊,為參數計算模塊及均值濾波模塊提供所需數據; 狀態判別器,與參數計算模塊連接,由比較器、加法器、減法器和寄存器組成,是基於改 進計算過程中帶有符號形式的二進位數不易於分辨及處理的情況所設置,用於對輸入數據 對比產生狀態使能信號,驅動參數計算模塊和綜合運算模塊按照使能狀態智能數據處理, 減少系統計算複雜度; 數據緩存器,與綜合運算模塊連接,由系統快速生成的FIFO和移位寄存器組成,用於 協調數據時序,確保數據能夠同步處理; 綜合運算模塊,與均值濾波模塊、狀態判別器和數據緩存器連接,用於數據綜合處理, 結合數據緩存器和參數計算模塊的數據綜合處理,最終輸出通過導向濾波器濾波之後的圖 像數據信息。
2. -種基於FPGA的引導濾波器實現方法,其特徵在於,該基於FPGA的引導濾波器實現 方法包括以下步驟: 步驟一:信號控制器: 按照流水線設計方法,局部窗口生成後會隨著數據的不斷輸入逐步右移,利用加法器 構成一款計數器,在同步時鐘的控制下對系統輸入控制信號進行標記、判斷並發送狀態信 息; 步驟二:均值濾波: 均值濾波模塊中局部生成窗口為3*3模塊,輸入圖像為P_in,引導圖像為I_in,以數據 串的形式在同步時鐘激勵下按行分別輸入到局部生成窗口模塊,在經過兩個FIFO和6個寄 存器後,輸出數據組1 :P1、P2……P9和數據組2 :11、12……19,利用乘法器獲取數據組3 : IPUIP2……IP9以及數據組4 :ΙΙ1、ΙΙ2……119,將四組數據分別送到4個均值計算模塊, 通過計算分別得到數據組均值:ave_P、ave_I、ave_IP和ave_II ; 步驟三:變量計算: 第一步,參數計算: 在得到ave_P、ave_I、ave_IP及ave_II四組數據,通過分析整理,對(ak,bk)計算; 第二步,尋址取值:基於FPGA對二進位除法改進算法的設計,用被除數乘以除數的倒 數,將除法轉為乘法來簡化計算過程; 第三步,狀態判別器: 步驟三和步驟六的計算過程中涉及到二進位減法運算,計算過程中會產生負數,基於 對帶符號二進位數的狀態判別器進行處理; 步驟四:均值濾波: 用於對步驟三中得到的(ak,bk)分別進行均值濾波,具體方法見步驟二,局部窗口生成 模塊C、D分別生成數據組5: akl,ak2......ak9和數據組6 :bkl,bk2......bk9到均值計算模塊,輸 出數據組均值ave_a和ave_b ; 步驟五:數據緩存器: 步驟二和步驟四分別調用了局部窗口生成模塊,所以行緩存設計中需要用到4個 FIFO, FIFO深度與局部生成窗口中用到的FIFO深度一致,設計期間由於部分公式計算會引 起時延,所以在數據緩存器的設計中還需要用到寄存器組,I_in在經過數據緩存器緩存後 輸出 I_in_delay ; 步驟六:綜合運算: 如公式
所示,利用步驟四得到數據協同步驟五輸出的1_ in_delay綜合運算後輸出,所得到的數據即為經過引導濾波器處理後輸出的最終圖像數 據,設計過程中利用狀態判別器選擇輸出。
3.如權利要求2所述的基於FPGA的引導濾波器實現方法,其特徵在於,在步驟二中的 具體步驟如下: 第一步,窗口生成: 在FIFO控制器的作用下,?_化和I_in數據被寫入FIFO和從FIFO中讀出,第(i-2) 行數據在同步時鐘作用下,先按序存入FIF01中,存滿後按時間順序存到FIF02中,同時第 (i-1)行數據存入FIF01中,當FIF01和FIF02充滿數據且第i行數據到來時,利用流水線 設計原理,窗口每行設置兩個寄存器用於緩存相同列坐標的數據,等待窗口填滿後同時將9 個數據並行輸出,即得到數據組1 :P1、P2……P9和數據組2 :11、12……19,獲取數據組3 : IP1、IP2……IP9以及數據組4 :111、112……119,所得到的的四組數據送到均值計算模塊 中; 第二步,均值計算: 均值計算分為兩個過程,即求和過程和除法運算過程,如公式(7)、(8)所示: ave = Sum/N (7)
(8) 其中,ave為計算得到的均值,Sum為滑動模板內所有像素值總和,Ν為模板內像素個數 總數,Ν為9 ; a、 求和,依照公式(8),分別對數據組1-4求和,得到Suml,Sum2, Sum3, Sum4 ; b、 求均值,求均值是FPGA處理二進位除法運算的過程,通過均值計算後得到4個數據 組的均值,分別為 ave_P、ave_I、ave_IP 和 ave_II。
4. 如權利要求2所述的基於FPGA的引導濾波器實現方法,其特徵在於,在步驟三的第 一步中,對(ak,b k)的計算過程如下: 1) 依據公式
將ak的計算過程並行分解計算如下: a、 分子
即ave_IP_ave_I*ave_P,直接通過乘法器和減法器獲得,分 子中存在有二進位減法運算,採取狀態判別器進行優化; b、 分母。k2+e,其中ε為定值,。k2為引導圖像在局部窗口內的方差,利用數學概念 對方差的定義,可以知道方差和均值如公式(9)所示關係: σ k2 = E (X2) -E2 (X) (9) 即aVe_II-aVe_I*aVe_I,計算過程中需要用到1個減法器、1個乘法器以及1個加法 器; c、 利用2尋址取值中原理整合公式,獲取得到局部窗口內ak值; 2) 由公式
可知,bk的計算依賴於ak,a k計算過程中存在計算時 延,需要用到3個寄存器對數據時序進行緩存,bk計算過程還要用到1個乘法器以及1個減 法器。
5. 如權利要求2所述的基於FPGA的引導濾波器實現方法,其特徵在於,在步驟三的第 二步中,尋址取值具體方法如下: 當給定除數,便通過計算得到其倒數,由於除數的倒數是小數形式,並且值不大於1,因 此取小數部分進行二值化後的高16位,連同整數部分最後1位,形成一個位寬為17的二進 制數據,記做除數的倒數,通過乘法運算實現除法功能。
6. 如權利要求2所述的基於FPGA的引導濾波器實現方法,其特徵在於,在步驟三的第 三步中,基於對帶符號二進位數的狀態判別器具體方法如下: 計算η = A-B及m = n+k,其中k為常數,A,B為輸入值; 1) 數值計算與狀態判別,對需要涉及到減法的數據A和B進行比較判別,若A大於等於 B則記做狀態S1,否則記做S2,與此同時做計算nl = A-B和n2 = B-A ;狀態S1情況下η = nl,狀態S2情況下η = η2 ; 2) 狀態保留,後續處理,做計算ml = n+k和m2 = k-n,如若狀態S1情況下m = ml,否 貝lj m = m2。
【文檔編號】G06T5/00GK104063847SQ201410272948
【公開日】2014年9月24日 申請日期:2014年6月18日 優先權日:2014年6月18日
【發明者】樸燕, 任偉傑, 劉碩, 孫榮春, 王宇 申請人:長春理工大學