將圖像處理的算法轉換爲FPGA系統設計的過程稱爲算法映射,CPU並行算法的實現與FPGA並行算法的實現是有必定區別的。
<!-- more -->算法
圖像處理算法主要有兩種設計結構:流水線結構和並行陣列結構。函數
在我看來,流水線結構和咱們以前所理解的CPU的串行結構仍是有必定區別的。相反,它與處理器的流水線結構很類似,都是依照時鐘來進行流水層級的同步。
spa
|--Data1--->Data1-->Data1 | InputData------Data2--->Data2-->Data2 | |--Data3--->Data3-->Data3
對於FPGA而言,作加法與移位較爲簡單,而涉及到乘法與除法時須要調用到乘法器或除法器,這在FPGA中是較爲寶貴的資源,因此做爲定常數,咱們儘可能轉換爲移位和加法運算,如:設計
ex1: dout = din * 255 轉換後 dout = ( din << 8 ) - din ex2: dout = din * 11 轉換後: dout = din * 2^2 + din * 2^3 - din * 2^0 = din * (2^2 + 2^3 - 2^0)
上式中的255 和 11就是定常數code
進行轉換的目的也是爲了在FPGA實現後可以更加節省資源。如:圖片
ex1: √a ̄ < b, a > 0 轉換後: b^2 > a ex2: a/b > c/b (b > 0, d > 0) 轉換後 a * d > b * c
最簡單的近似值莫過於四捨五入,假如某數據D[-1~4]爲整數部分,D[3~0]爲小數部分,那麼四捨五入可爲:資源
assign dout = din[3]?(dout[-1~4] + 1) : (dout[-1~4])
泰勒公式定義
那麼就能夠有以下近似轉換:同步
1/3 = 1/4 * (1 + 1/4 + 1/16 + 1/64 + 1/256)
查找表是使用簡單的查詢操做代替運行時的實時計算,使用查找表代替那些運行時常常須要用到的運算可以極大的減小時間複雜度,如咱們常常用到的三角函數就應該使用查找表替換實時計算。it
原文地址 coderdock.com圖像處理