用FPGA做图像处理最关键的一点优势就是:FPGA能进行实时流水线运算,能达到最高的实时性。因此在一些对实时性要求非常高的应用领域,做图像处理基本就只能用FPGA。例如在一些分选设备中图像处理基本上用的都是FPGA,因为在其中相机从看到物料图像到给出执行指令之间的延时大概只有几毫秒,这就要求图像处理必须很快且延时固定,只有FPGA进行的实时流水线运算才能满足这一要求。所以要了解FPGA进行图像处理的优势就必须理解FPGA所能进行的实时流水线运算和DSP,GPU等进行的图像处理运算有何不同。DSP,GPU,CPU对图像的处理基本是以帧为单位的,从相机采集的图像数据会先存在内存中,然后GPU会读取内存中的图像数据进行处理。假如采集图像的帧率是30帧,那么DSP,GPU要是能在1/30秒内完成一帧图像的处理,那基本上就能算是实时处理。FPGA对图像进行实时流水线运算是以行为单位的。FPGA可以直接和图像传感器芯片连接获得图像数据流,如果是RAW格式的则还可以进行差值以获得RGB图像数据。FPGA能进行实时流水线处理的关键是它可以用其内部的Block Ram缓存若干行的图像数据。这个Block Ram可以说是类似于CPU里面的Cache,但Cache不是你能完全控制的,但Block Ram是完全可控的,可以用它实现各种灵活的运算处理。这样FPGA通过缓存若干行图像数据就可以对图像进行实时处理,数据就这样一边流过就一边处理好了,不需要送入DDR缓存了之后再读出来处理。这样的数据流处理显然是顺序读取数据的,那么也就只能实现那些顺序读取数据的算法,也就是图像处理中那一大类用3x3到NxN的算子进行的滤波、取边缘、膨胀腐蚀等算法。可能大家会觉得这些运算似乎都是最基本的图像处理运算,只是个前端的预处理,似乎用处不大。但问题是只有FPGA做这样的运算才是速度最快效率最高的,比如用CPU做一个取边缘的算法根本就达不到实时。另外别小看了这种NxN算子法,它可以有各种组合和玩法,可以实现分选多种颜色,甚至分辨简单形状等功能。FPGA进行的这种算子法处理是并行流水线算法,其延时是固定的,比如用3x3的算子进行处理其给出结果的延时是两行图像的时间。还有这个算子法和现在卷积神经网络中最前面的卷积层运算是类似的。FPGA中的Block Ram是重要和稀缺资源,能缓存的图像数据行数是有限的,所以这个NxN的算子中的N不能特别大。当然FPGA也可以接DDR把图像缓存到其中再读出来进行处理,但这种处理模式就和CPU差不多了,达不到最高的实时性。其实有些我们认为需要随机读取数据的图像处理算法也是可以并行流水线化的,比如连通域识别。《FPGA实现的连通域识别算法升级》这是我的一篇文章。现在貌似神经网络也可以用FPGA来实现,并且据说效率比较高。我暂时还没玩过这个,但知道为什么FPGA在进行某些运算的时候效率会比较高。因为在密集运算中,耽误时间和消耗功耗的操作往往不是运算本身,而是把数据从内存中搬来搬去。GPU,CPU在进行运算时要把数据从内存中取出来,算好了在放回去。这样内存带宽往往成了运算速度的瓶颈,数据搬运过程中的功耗占的比重也不会小。FPGA则可以通过堆很多计算硬件的方法把要做的运算都展开,然后数据从中流过,完成一个阶段的运算之后就直接流入第二个阶段,不需要把一个计算阶段完成后的数据再送回内存中,再读出来交给下一个阶段的运算。这样就会节省很多时间和功耗。现在用FPGA做图像处理就是这样干的,比如先用一个3x3的算子进行滤波,再用一个3x3的算子进行取边缘,在FPGA流水线算法中,滤波处理完了数据立即就会进行取边缘处理,是不需要像CPU那样存回内存再读出来的。综上所述,我觉得用FPGA进行图像处理的前景还是挺广阔的,越来越多的工业应用场合都要求更高的实时性,而这正是FPGA所适合的。还有机器学习领域,神经网络这种层状的,不需要很随机的读取数据的运算是比较适合用FPGA来做的。不过FPGA不擅长浮点运算,如果能整出不需要浮点运算的神经网络,那么FPGA在这方面的应用将会更大。可能制约FPGA在这些方面应用的关键还是人才的缺乏。大家不知道FPGA擅长什么,想用却又不知道怎么用。网上很多传说都说这个FPGA编程很底层,很不好用。这些说法也对也不对。刚开始学的时候是会有一些困惑。关键是这其中要经历一个思维方式的转变,从CPU编程思维到硬件编程思维的转变。转变过来了之后就会发现,其实FPGA还是很单纯很灵活很好用的,硬件描述语言没有高级语言那么复杂。

FPGA图像处理的前景如何?相关推荐

  1. FPGA图像处理的一些基础知识,FPGA是如何实现最高实时性的?相比于GPU的优势在哪?

    先来说一下工业上用到的图像传感器种类和部分我知道的厂家.如上图所示,工业上除了会用到手机和相机中常见的面阵传感器之外,还会用到线阵传感器.线阵传感器的分辨率是几k乘1,也就是它只扫描一行图像,主要用于 ...

  2. FPGA图像处理的开发流程

    FPGA图像处理的开发流程 1.需求分析及问题描述 问题描述应该清楚地描述问题而不是解决方法.它应该包括系统需要做什么.为什么要做,而不包括怎么做. 为了描述更具体,至少需要讨论三个方面. 第一是系统 ...

  3. 图像处理之前景检测(五)之基于样本一致性背景检测(SACON)(主要为代码升级)

    图像处理之前景检测(五)之基于样本一致性背景检测(SACON) SACON(SAmple CONsensus)算法是基于样本一致性的运动目标检测算法.该算法通过对每个像素进行样本一致性判断来判定像素是 ...

  4. 图像处理之前景检测(四)之自组织背景检测(SOBS)(转载)

    图像处理之前景检测(四)之自组织背景检测(SOBS)(转载)        一种基于自组织神经网络(self-Organizing through artificial neural networks ...

  5. 优秀的 Verilog/FPGA开源项目介绍(二十五)- FPGA图像处理库

    今天介绍几个和图像处理的项目,废话不多说,我们开始吧~ FPGA-Imaging-Library https://github.com/dtysky/FPGA-Imaging-Library 介绍 一 ...

  6. FPGA白平衡 自动白平衡 FPGA图像处理

    FPGA白平衡 自动白平衡 FPGA图像处理 工程和算法包含以下内容: 1,MATLAB中实现图像处理. 2,verilog代码利用MATLAB联合modelsim仿真实现的图像处理. 3,小梅哥AC ...

  7. Modelsim联合Matlab进行FPGA图像处理仿真与测试的学习总结(以RGB转Ycbcr转Gray为例)

    文章目录 一.Modelsim联合Matlab进行FPGA图像仿真的步骤 二.具体实现方法 2.1 新建一个Modelsim项目并编写测试代码 2.2 新建v文件来编写待测试代码 2.3 建成项目后, ...

  8. FPGA图像处理入门如何学习?

    1提问 哦哦,好的,我用的是米联客的zynq开发板,但是感觉米联客的教程不是很详细,所以之前看的是正点原子的领航者zynq的教程,目前刚学完HDMI显示实验,我想用fpga来做图像处理,所以找到了你的 ...

  9. 寻求长期合作工程师做兼职STM32 51 8S FPGA 图像处理

    我们有大量的开发项目,涉及领域有STM32,51单片机FPGA 图像处理,有接单的工程师可以联系qq:2391138566

最新文章

  1. 《Redis设计与实现》之第七章:压缩列表
  2. 百度 php 图片文字识别,PHP实现百度OCR文字识别
  3. 自学python需要安装什么软件-python自学需要什么软件?
  4. mysql合并到区间_合并区间
  5. Java栈 Stack
  6. (转)Django ==== 实战学习篇九 在session中保存购物车
  7. 如果程序员面试时,大家都说真话会怎么样?画面过于真实....
  8. @RequestParam注解四个属性字段说明
  9. DHCP服务、NFS、vsftp服务的简单搭建
  10. 洛谷p3392计算机教育新社会,洛谷-P3392 涂国旗
  11. linux xargs命令_如何在Linux中使用xargs命令?
  12. vscode——配置终端集成bash和cmd
  13. java 25 - 2 网络编程之 网络通信三要素
  14. 模糊综合评价模型 ——确定隶属度
  15. IO 设备的分类与概念、IO控制器
  16. 让你更好使用 Typescript 的11个技巧
  17. 了解抖音小店店铺装修功能以及条件
  18. 解决word2019中求和符号上下标被强制挪到右边的问题
  19. Linux高可用之heartbeat
  20. css html模板下载插件

热门文章

  1. 关于PTR的说明【转】
  2. 全国天气降水量预报图接口 天气预报云图接口
  3. 2021-07-19 暑假集训Day1
  4. 信噪比SNR和EbN0
  5. 什么是响应式Web设计?
  6. Indian English(印度英语)
  7. 简述电信运营商的三大数据域B域,O域,M域
  8. 推荐10个让学习、工作都更上一层楼的网站
  9. 使用wordpress搭建个人网站保姆级教程
  10. 杨幂换脸不算啥,AI还能造出“并不存在”的美食图、假简历