NI推出的视觉应用开发模块带来20倍的性能提升!

作者:stark

NI(National Instrument,美国国家仪器)公司推出的视觉开发模块大大方便了开发者开发和部署机器视觉相关应用,它提供丰富的功能,支持多个摄像头实时采集图像进而实现图像增强、特征检测、精密测量等处理操作。

图1:NI推出的视觉处理模块

图1:NI推出的视觉处理模块

NI LabVIEW软件开发环境对这些模块提供全面的支持,当我们转换硬件平台时也能够很方便的实现代码的移植和复用,这大大缩短了开发时间和维护成本。此外LabVIEW还提供很多面向这些硬件模块的视觉处理算法,满足不同应用的需求。当我们的应用不仅仅是处理图像时还可以使用一系列I/O配置和协议实现与其他设备的通信,比如数据I/O接口、Modbus总线协议、RS232、TCP/IP等。

我们以质量检验的颗粒计数应用为例来说明如何提升20倍的性能。整个处理过程总共包括三个步骤:第一是卷积滤波实现图像增强,第二是划定阈值生成二进制图像,第三是在二进制粒子图像中剔除干扰孔,图像的变化过程如下图所示:

图2:图像经过不断处理过程后的变化

图2:图像经过不断处理过程后的变化

我们将这个处理过程移植到NI cRIO-9068 CompactRIO控制器上来执行,它是基于Xilinx Zynq Z-7020 SoC器件,如果只采用Zynq SoC的ARM Cortex-A9处理器(相当于传统的CPU)来执行则需要166.7毫秒/帧,而采用Zynq SoC集成的FPGA资源来实现硬件加速则只需要8毫秒/帧,另外通过DMA在FPGA与CPU之间进行数据传输前后各需要0.5毫秒,因此借助FPGA实现硬件加速相当于性能提升了20倍!。

FPGA器件支持大规模并行计算,而传统的CPU智能顺序执行队列中的任务,因此这也是需求高性能计算的应用转向FPGA平台的原因,尤其对于现在的人工智能领域涉及到的图像识别、语音识别、神经网络、大数据分析等都需要执行复杂的算法,FPGA的高速计算和并行特性减少了各个环节的处理时间,从而降低系统延迟和增加吞吐量,正好满足了这类应用的需要。

声明:本文为原创文章,转载需注明作者、出处及原文链接