這幾年機器視覺演算法紅的發紫。談話間不聊幾句神經網路,你可能就已經被貼上老古董的標籤了。

由於許多視覺演算法在設計的時候,並沒有考慮到硬體的設計,所以結果是一個很簡單的視覺演算法要在計算機上跑很久,即使在一個配置還不錯的計算機上,依舊無法做到real time的實時處理。當然GPU比起CPU來說當然有很多優勢,比如說並行運算,這樣GPU就可以比CPU擁有更快地處理時間。

這裡想探討幾個比較基礎的視覺演算法加速問題。我們的目標是讓那些即使看起來很複雜的圖像處理操作也可以用更小更簡單的方法構建。

並行內存讀寫模式

線程並行運算原理

GPU執行機制

內存分配機制

同步機制

Sobel Edge Detection

首先第一個就是耳熟能詳的邊緣檢測演算法:Sobel演算法。原理很簡單,就是利用圖像邊緣點梯度較大這個性質來尋找邊緣的。

水平和垂直方向的梯度filter

最後我們通過卷積運算,然後加權求和,最後取絕對值,就能得到每一個像素點的梯度的標量值。很經典的演算法,在任何一本教科書上都能找到具體的推導和公式。


推薦閱讀:
相關文章