FPGA 图像处理与CV

https://feixiaoxing.blog.csdn.net/article/details/105722745     

在传统的图像处理过程中,很多算法都是由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最终会从所有方案中脱颖而出。

 
原文链接:https://blog.csdn.net/feixiaoxing/article/details/105722745

猜你喜欢

转载自blog.csdn.net/u010451780/article/details/115246648