隨想錄(FPGA的圖像處理方法)

【 聲明:版權所有,歡迎轉載,請勿用於商業用途。  聯繫信箱:feixiaoxing @163.com】

 

    在傳統的圖像處理過程中,很多算法都是由cpu來完成的。但是由於cpu是一條指令、一條指令來完成的,整個時間上處理比較長。因此如果在圖像處理的過程中出現標定、噪聲處理、hsv提取、灰度化、旋轉、算子計算、二值化、膨脹、腐蝕多次操作之後,那麼整個計算時間是挺長的,因爲每次處理的時候都需要將循環處理每個像素值,時間上是非常可觀的。所以,要想提高處理的速度,滿足實時性能要求,要麼cpu頻率高一些,要麼使用fpga、cuda、asic等處理方法來優化算法。

    fpga目前的應用場合主要是硬件協議和算法。相比較具體的硬件協議,fpga在算法這一塊的加速效果也是非常明顯的。對於軟件工程師來說,特別是嵌入式軟件工程師來說,用fpga做算法是很好的一個選擇。

 

1、fpga優化的基本原理

    如果cpu是對單個像素進行處理,那麼fpga可以併發同時處理多個像素,這是優化的關鍵。傳統圖像算法之間沒有依賴關係,這也決定了併發處理多個像素的做法是可以的,也是可行的。

 

2、fpga可以適配哪些算法

    基礎的圖像算法都可以用fpga進行優化,比如下面

    A、灰化

    B、RGB -> HSV

    C、直方圖

    D、高斯噪聲處理

    E、均值計算

    F、二值化

    G、Canny算子計算類

    H、差值運算

    I、腐蝕、膨脹

    J、FFT、DFT等算法

    K、旋轉

    L、上下、左右翻轉

    M、圖像差值計算等等

 

3、fpga不適宜的計算

    除了傳統經典的圖像算法,fpga並不適宜那些複雜的算法,比如說區域查找、深度學習、rcnn、ssd、yolo等複雜的算法。這部分內容可以用cpu來完成,或者芯片廠商提供的sdk來加速完成,比如arm nn等等。

 

4、比較適合做實驗的fpga平臺

    zynq,除了fpga,還有arm

 

5、fpga適合的應用場景

    fpga整體成本略高,比較適合對處理性能有要求、同時價格不敏感的場景

 

6、可能代替fpga的方案

    現在除了fpga之外,另外一個比較好的框架就是nvidia的cuda。cuda的處理思路和fpga比較類似,但是它設計起來比較簡單,可以用類c的代碼完成fpga需要的大部分功能。

 

7、將來的趨勢

    未來一段時間內,fpga、dsp、cuda、多核cpu、asic都會存在,關鍵取決於應用場景,每一種方案都有自己的優勢。只是從成本來說,cuda可能會代替fpga,而asic最終會從所有方案中脫穎而出。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章