随着图像分辨率的大幅度提升和图像处理算法复杂度的提升,传统的串行处理器已经越来越不能满足图像处理的实时性需求。多核结构处理、GPU处理及FPGA很快在实时性图像处理领域得到了迅速的发展。本章将重点介绍基于FPGA的实时性图像处理。
FPGA通过为每个功能建立单独的硬件来实现整个应用程序所需要的逻辑功能,这使其很适合图像处理,尤其是采用流水线来处理视频流,可以在同一个时刻进行多个算法的处理。
本章首先介绍FPGA及其生产厂家和开发流程,其次介绍基于FPGA的图像处理流程。
数字图像处理技术在当代社会发展迅速,发挥着不可替代的作用,被广泛应用于航空航天、通信、医学及工业生产等领域中。随着现代科技的不断发展、技术的不断进步,人们对数字图像处理的速度和质量提出了越来越高的要求。
早在20世纪20年代,人们利用巴特蓝电缆图片传输系统,经过大西洋传送了第一幅数字图像。随后人们始终对图像处理技术以及它的各种应用怀有浓厚的兴趣,并对提高图像质量的技术进行了探索。1964年,美国喷射推进实验室(JPL)进行太空探测工作,他们对航天探测器徘徊者7号在1964年发回的几千张月球照片,使用数字图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,由计算机成功地绘制出月球表面地图,获得了巨大成功,为人类登月创举奠定了坚实的基础。
随着数字集成电路技术的不断发展,以及现代图像处理技术的在理论和应用上的重大进展,图像处理技术逐渐表现出以下几个方面的发展。
随着网络数据库的不断发展,图像处理系统走出了一人一机的圈子,服务器/客户机、Internet、浏览器、网络数据库……图像处理系统变大了,资源也越来越丰富,知识的挖掘、图像的浏览、基于内容的查询、以网络为中心的系统结构等挑战型课题不断涌现,图像处理网络化无疑是众多新技术中影响巨大的技术之一。
图像处理技术的疑难问题很多而且极其复杂,如:文字识别技术,图像压缩技术,以及超低码率的图像解码技术和模糊图像的复原等都是需要长期研究的课题。随着图像处理技术的快速发展,以及硬件的不断进步,这些复杂问题将出现新的突破。
图像处理的速度受到多方面条件的制约,由于纯软件达不到视频的实时处理的速度。随着PCI总线的引入,活动视频图像能够被送入内存中,特别是Intel公司1995年提出的NSP (native signal proccessing,自然信号处理)技术,1997年推出的含57条指令的MMX (multimedia extensions)指令集和1999年推出的含70条指令的SSE (streaming SIlVID extensions)指令集,这些重大举措使图像界成为直接受益者,计算机处理图像的速度由此有了显著提高。
实时图像处理通常涉及到大量的运算,需要很高的计算速度、存储容量和数据带宽。这对基于传统应用而设计的通用处理器而言,是个巨大的负担。因此,以往多采用价格比较昂贵的专用图像处理芯片来满足需求。专用的图像处理器件主要有专用集成芯片ASIC(Application Specific Integrated Circuit)、数字信号处理器DSP(Digital Signal Process)和现场可编程门阵列FPGA(Field Programmable Gate Array)以及相关电路组成。它们可以实时高速完成各种图像处理算法。
FPGA是Field Programmable Gate Array的简称,也就是现场可编程门阵列。它是一种半导体数字集成电路,其内部的大部分电路功能都可以根据需要进行更改。
FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言(如Verilog HDL、VHDL)自由地设计一个数字系统。通过软件仿真,可以事先验证设计的正确性。在PCB(电路印制板)完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
FPGA器件是当今运用极为广泛的可编程逻辑器件。FPGA器件在结构上具有逻辑功能块排列,可编程的内部连线连接这些功能模块来实现一定的逻辑功能。工作时,这些配置数据存放在片内的SRAM中。使用SRAM的FPGA器件,在工作前需要从芯片外部加载配置数据,配置数据可以存储在片外的EPROM或其他存储体上,设计者可以控制加载过程,在现场修改器件的逻辑功能,即所谓现场编程。
FPGA有很强的灵活性,可以根据需要进行重构配置,有较强的通用性,适于模块化设计;同时其开发周期短,系统易于维护和扩展,适合实时的信号处理,能够大大提高图像数据的处理速度,满足系统的实时性要求。与此同时,FPGA自身也在迅速发展,其集成度、工作速度不断提高,包含的资源越来越丰富,可实现的功能也越来越强。随着EDA技术的不断发展,FPGA依靠其真正的硬件并行性和极大的灵活性,以及能够迅速占领市场的巨大优势,已经得到了广泛的应用。尤其在视频图像处理中,需要对大量的高速、并行的视频流数据进行实时处理,FPGA更能发挥其独有的优势。FPGA在以下方面有着独特的优势:
并行性:
因为FPGA通过为每个功能建立单独的硬件来实现整个应用程序所需要的逻辑功能,因此,它具有并行处理的内在特点。硬件设计使其具有较高的运行速度,同时又以相对较低的成本保持软件所具有的可重新编程的灵活性。这使得FPGA很适合于图像处理,尤其是可以在底层和中间层利用图像处理固有的并行性。在视频处理中,视频的编码和解码,压缩与解压缩都需要大量的乘 法运算,FPGA提供的大量硬件乘法器可以很好的解决这个问题。
流水线:
对于流水线结构来说,将为流水线上的每一个图像处理操作都建立独立的硬件。在数据同步系统中,数据简单地从一个操作的输出传递到下一个操作的输入;如果数据不是同步的,需要在操作之间加入适当的缓冲区,以处理数据流或存取模式的变化。
稳定性
软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过程。基于处理器的系统往往包含了多个抽象层,可在多个进程之间计划任务、共享资源。驱动层控制着硬件资源,而操作系统管理内存和处理器的带宽。对于任何给定的处理器内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。
可编程性
可以根据用户的个性化需要进行不同的设计,并且可以多次反复擦除,编程使用还可以在外围电路不改变的情况下通过不同的RTL(寄存器 传输级)就可以实现不一样的功能,所以使用FPGA能快速占领市场。
高集成性
现阶段,有的公司的FPGA芯片已经集成了AD,达到了数模混合,这样可以大大的减少外围芯片个数,有的FPGA还集成了多个数字信号处理器件硬核,更加方便的进行数字信号处理。随着Alter公司的NIOS II的出现,片上ARM处理器的实现,以及开源高性能RISC-V的出现,片上集成处理器核心已成为一个热点,如此同一个芯片同时集CPU、DSP、FPGA为一体,同时具备他们的优势,且功耗也再降低。总而言之,FPGA的集成度越来越高,产品的体积就会越来越小,产品的功耗就会越来越低。
近年来,随着集成芯片制造技术的发展,FPGA在速度和集成度两方面得到了飞速提高。由于它具有功耗低、体积小、集成度高、速度快、开发周期短、费用低、用户可定义功能及可重复编程和擦写等许多优点,应用领域不断扩大,越来越多的电子系统开始采用可编程逻辑器件来实现数字信号处理,FPGA在数字信号处理中得到越来越广泛的应用。在具体的实际应用过程中会存在一些实际问题,如有限字长的影响、并行和串行结构的选择和FPGA内部结构对设计的影响等
逻辑并行性:图像处理操作中的逻辑并行性很适合FPGA的使用,而且这是可以对许多图像处理算法进行显著加速的地方。此时,将通过使用并行硬件展开内部循环,代替顺序执行操作。
数据流使图像数据以串行方式“流过”单一的功能模块。这可以被很好地映射为硬件实现,尤其是当直接连接在图像自然“流过”的摄像头或显示器上时。如果所有的操作都可以使用“流”处理,那么整个算法的实现就可以作为一个单独的流水线,并产生一个非常有效的实现。对于数据流处理,为了达到所需的数据吞吐量,常常需要使用流水线。
在开发嵌入式视觉系统时,有效利用并行性的能力具有重要意义。并行执行多个操作可以显著降低所需要的时钟速度。当来自摄像机视频流为每秒30帧,并具有VGA分辨率时,每秒将会产生大约1000万个像素点(虽然考虑到消隐期,时钟速度通常更高)。任何有效处理都需要对每个像素点执行许多操作,因此,对于传统的串行处理器来说,需要具有很高的时钟频率。在FPGA上实现的流水线系统通常可以用本身具有的像素输入(或输出)时钟频率操作。这相当于将串行处理器的时钟速度降低了两个或两个以上的数量级。因为系统消耗的动态功耗与时钟频率直接相关,因此,低时钟频率将产生有效的低功耗设计。
如果整个算法都可以在一块FPGA上实现,则系统将具有很小的尺寸。因此,只使用2~3块芯片,并将整个图像处理系统嵌入到传感器中的设计方案是完全可行的。
各行各业纷纷采用FPGA芯片是源于FPGA融合了ASIC和基于处理器的系统的最大优势。FPGA能够提供硬件定时的速度和稳定性,并且无需类似自定制ASIC设计的巨额前期费用的大规模投入。可重新编程的硅芯片的灵活性与在基于处理器的系统上运行的软件相当,但它并不受可用处理器内核数量的限制。与处理器不同的是,FPGA属于真正的并行实行,因此不同的处理操作无须竞争相同的资源。每个独立的处理任务都配有专用的芯片部分,能在不受其他逻辑块的影响下自主运作。因此,添加更多处理任务时,其他应用性能也不会受到影响。
FPGA的优势是完全面向具体问题可定制化的解决方案,其性能潜力巨大(比CPU和GPU都高出几十甚至上百倍),已经在如视频解码、实时数据处理、金融交易、信号分析等领域中证明。
亚马逊的AWS云计算、阿里云的ECS服务器等已经开始支持FPGA的虚拟机,于此同时Intel在中国重庆也成立了Intel FPGA中国创新中心来支持FPGA的应用,让普通人更容易接触学习FPGA。
Intel在2015年6月 宣布以 167 亿美元的价格,收购全球第二大 FPGA 厂商 Altera,成为该公司有史以来最贵的一笔收购时间;后来随着收购完成,Intel 也在 Altera 的基础上成立了可编程事业部。此后,Intel 一直在推进 FPGA 与自家至强处理器的软硬件结合并取得了相应的进展。于2019年4月初,英特尔宣布了其首款完全有英特尔独立设计的FPGA,基于其内部10nm公用,使用了全新Agilex命名。