FPGA与图像处理



用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差不多了,达不到最高的实时性。其实有些我们认为需要随机读取数据的图像处理算法也是可以并行流水线化的。

在密集运算中,耽误时间和消耗功耗的操作往往不是运算本身,而是把数据从内存中搬来搬去。GPU,CPU在进行运算时要把数据从内存中取出来,算好了在放回去。这样内存带宽往往成了运算速度的瓶颈,数据搬运过程中的功耗占的比重也不会小。FPGA则可以通过堆很多计算硬件的方法把要做的运算都展开,然后数据从中流过,完成一个阶段的运算之后就直接流入第二个阶段,不需要把一个计算阶段完成后的数据再送回内存中,再读出来交给下一个阶段的运算。这样就会节省很多时间和功耗。现在用FPGA做图像处理就是这样干的,比如先用一个3x3的算子进行滤波,再用一个3x3的算子进行取边缘,在FPGA流水线算法中,滤波处理完了数据立即就会进行取边缘处理,是不需要像CPU那样存回内存再读出来的。



FPGA进行图像处理的前景还是挺广阔的,越来越多的工业应用场合都要求更高的实时性,而这正是FPGA所适合的。还有机器学习领域,神经网络这种层状的,不需要很随机的读取数据的运算是比较适合用FPGA来做的。不过FPGA不擅长浮点运算,如果能整出不需要浮点运算的神经网络,那么FPGA在这方面的应用将会更大。

前些年用matlab和opencv做图像处理。近一段时间通过FPGA处理摄像头视频数据,有太多感触,复杂的算法先不提及,单是上面文章中提到的一些处理手段及策略,非常受用。

感谢来自知乎网的图像处理讨论。非常受益!



版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号



扫描二维码关注杭州卿萃科技FPGA极客空间



FPGA与图像处理

原文地址:https://www.cnblogs.com/alifpga/p/9131733.html

时间: 2024-10-25 02:23:39

FPGA与图像处理的相关文章

基于FPGA的均值滤波算法实现

我们为了实现动态图像的滤波算法,用串口发送图像数据到FPGA开发板,经FPGA进行图像处理算法后,动态显示到VGA显示屏上,前面我们把硬件平台已经搭建完成了,后面我们将利用这个硬件基础平台上来实现基于FPGA的一系列图像处理基础算法. 椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素.椒盐噪声是一种因为信号脉冲强度引起的噪声,产生清楚该噪声的算法也比较简单. 均值滤波的方法将数据存储成3x3的矩阵

直方图统计的FPGA实现

直方图统计是图像处理算法中最基本和常见的算法之一,主要原理就是将图像中各个灰度级的像素个数进行计算并统计,这在一些对灰度特性进行统计的算法中比较常见.虽然直方图统计在MATLAB或软件中耗时也很少,但是现在随着FPGA的普及,更加快速的实现一些图像处理算法成为了主流. FPGA实现图像处理算法现在有几种主流的方式:1.HDL纯逻辑代码编写:2.基于System generator的模块搭建:3.Xilinx公司vivado套件中的HLS软件进行C/C++代码的转换. 而本文主要采用第一种方法,即

如何学习FPGA(转)

原文来自:http://m.blog.csdn.net/k331922164/article/details/44626989 一.入门首先要掌握HDL(HDL=verilog+VHDL). 第一句话是:还没学数电的先学数电.然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL.因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它.当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多. 接

基于QT以及Zedboard的视频总结和检索系统设计(OpenHW13项目)说明及源码

功能需求分析 视频中包含大量的冗余信息,因此基于内容的检索和总结具有很好的应用.本设计基为方便于视频监控等视频信息的查阅与目标搜索,开发出具有对视频信息进行冗余去除与基于内容的分类检索功能.实现的功能主要有: ?  视频的基本播放功能: ?  运动目标获取与标记: ?  视频感兴趣区域设置:视频具有信息量大的特点,而有的时候只对某一区域感兴趣,所以对于感兴趣区域的设置能够减轻系统的运算负担.减少不必要信息的干扰: ?  目标的分类检索:如何在庞大的视频信息中获取所需要的目标一直是图像与视频智能处

低清图像变成高清图像 原理

http://www.360doc.com/content/14/0320/21/14106735_362271247.shtml# 光流(optical flow) 光流法(optical flow method) 光流场...:http://www.360doc.com/content/11/0219/10/3873911_94254170.shtml 自适应背景更新方法研究:分方法对视频图像进行运动目标分割时,只有及时的更新背景图像才能更加精确.背景更新技术的涌现,使得以图像差分方法分割视

基于FPGA的高速图像处理平台设计_爱学术

[摘要]针对传统图像处理平台采集.处理速度慢,显示分辨率低,不方便携带等问题,设计了一个基于FPGA的高速图像处理平台,包含高速图像的采集.处理.及显示.图像采集通过Camera Link接口采集图像,图像处理部分利用乒乓操作对图像数据进行高速存储,FPGA完成图像预处理,DSP进行运算复杂的图像处理,图像显示部分输出标准的视频信号进行DVI显示.实验结果表明,平台完成了对图像的高速处理,体积小,处理数据量大,可以替代传统图像处理平台,并应用到多种图像处理领域. [作者] 陈序  卿粼波  何小

初学FPGA图像处理,开发板选择建议

我用的是ZYNQ7010的开发板,纯粹是入门学习,对于初学者,使用较多的xlinx入门级的开发板一般是zynq7000系列,淘宝上买的较好的是黑金和米联科,我买的就是黑金的,个人觉得教程很少,学习资料不多,米联客图像处理的教程很多,如果你英语可以,也可以看官方的教程UG902就听详细,要是还不确定买什么板子,我觉得米联客的还是好些.最后分享下我的FPGA学习资料, 链接:https://pan.baidu.com/s/1wJ_lWyBbbk9TujKBM_essg 提取码:otqk 复制这段内容

FPGA图像处理之多画面显示

硬件结构和软件的一些情况介绍: FPGA,arria ii gx系列的芯片.altera的开发板 ,http://www.altera.com.cn/products/devkits/altera/kit-aiigx-pcie.html我的开发套件信息. 重要的两个信息:FPGA: EP2AGX125EF35.DDR2:1G,64位的.运行在200M. 输入是1080P,即1920*1080,RGB各8位,共24位.时钟速度148.5M.输出也是1080P.也就是DDR2都是在1080P进行速率

FPGA图像处理之画中画(pip)

硬件结构和软件的一些情况介绍: FPGA,arria ii gx系列的芯片.altera的开发板 ,http://www.altera.com.cn/products/devkits/altera/kit-aiigx-pcie.html我的开发套件信息. 重要的两个信息:FPGA: EP2AGX125EF35.DDR2:1G,64位的.运行在200M. 输入是1080P,即1920*1080,RGB各8位,共24位.时钟速度148.5M.输出也是1080P.也就是DDR2都是在1080P进行速率