这几年机器视觉演算法红的发紫。谈话间不聊几句神经网路,你可能就已经被贴上老古董的标签了。

由于许多视觉演算法在设计的时候,并没有考虑到硬体的设计,所以结果是一个很简单的视觉演算法要在计算机上跑很久,即使在一个配置还不错的计算机上,依旧无法做到real time的实时处理。当然GPU比起CPU来说当然有很多优势,比如说并行运算,这样GPU就可以比CPU拥有更快地处理时间。

这里想探讨几个比较基础的视觉演算法加速问题。我们的目标是让那些即使看起来很复杂的图像处理操作也可以用更小更简单的方法构建。

并行内存读写模式

线程并行运算原理

GPU执行机制

内存分配机制

同步机制

Sobel Edge Detection

首先第一个就是耳熟能详的边缘检测演算法:Sobel演算法。原理很简单,就是利用图像边缘点梯度较大这个性质来寻找边缘的。

水平和垂直方向的梯度filter

最后我们通过卷积运算,然后加权求和,最后取绝对值,就能得到每一个像素点的梯度的标量值。很经典的演算法,在任何一本教科书上都能找到具体的推导和公式。


推荐阅读:
相关文章