借助FPGA技术和NI视觉开发模块,您可以对从相机采集的图像进行高速现场可编程门阵列(FPGA)处理。 FPGA处理尤其适用于要求图像采集和处理之间具有低延迟的应用。 本文概述了如何在FPGA上进行图像处理,包括典型的应用案例。
1. FPGA编程介绍
NI LabVIEW FPGA模块是LabVIEW图形化编程环境的自然扩展。 您可以使用VHDL等底层语言进行复杂的FPGA编程。 但是如果您熟悉LabVIEW,您将可快速学会使用LabVIEW FPGA。 这可大幅缩短FPGA编程应用的开发时间,避免进行自定义硬件设计。 与使用HDL进行编程不同,您可以在LabVIEW程序框图界面上开发应用,LabVIEW FPGA会合成图形化代码并将其部署到FPGA硬件上。
2. FPGA图像处理许多图形处理算法具有内在并行性,因此适用于使用FPGA。 这些包含感兴趣像素、行和区域运算的算法不需要图案(pattern)等高级图像信息。 您可以同时对多个小区域位或图像的多个区域执行这些函数。 图像数据也可以并行传输到FPGA并同时进行处理,这是因为数据的处理不需要使用中央处理器。 NI视觉开发模块包含了50多个图像处理函数,可结合NI LabVIEW FPGA模块在FPGA上处理图像。 以下列出了几个视觉开发模块可以用于FPGA的图像处理函数示例:
预处理
图像变换
图像算子
阴影校正
拜尔解码
色彩空间转换
一维和二维快速傅里叶变换
滤波(平滑/锐化)
二值形态学
特征抽取
边缘、线和棱角
二进制对象
颜色
测量
质心
面积测算
3. 视觉开发模块FPGA功能概述
视觉开发模块与NI LabVIEW FPGA模块一起安装后,“视觉”选板就会包含用于FPGA图像处理的函数。
图1. 视觉选板包含了多个用于FPGA图像处理的函数。
视觉选板包含了图像变换VI,可用于FPGA和CPU之间的图像传输。 第二部分——FPGA视觉应用案例探讨了不同的应用场景以及为什么FPGA和CPU之间传输图像时有时需要转换图像。
NI视觉开发模块包含了Vision Assistant Express VI,该VI可通过握手和同步自动生成LabVIEW FPGA图像处理代码,无需编写底层同步代码。 您可以通过LabVIEW程序框图打开Vision Assistant,也可以将其作为一个独立的程序打开来创建针对特定NI硬件的LabVIEW项目。
图2. Vision Assistant可作为一个独立的程序打开来生成针对特定硬件的代码。
选择好硬件之后,Vision Assistant可以估算出图像处理脚本所需的FPGA资源。 然后生成一个包含一个主机VI和FPGA VI的LabVIEW项目来进行图像处理和转换。
图3. 创建图像处理脚本之后,Vision Assistant将自动生成一个包含硬件终端、主机VI(如果规定的话)和FPGA VI的LabVIEW项目来进行图像处理和转换。
4. FPGA视觉应用案例应用场景1: 仅FPGA的处理,用于高速控制
FPGA图像处理可降低图像分析所需的计算资源。 由于FPGA是一个硬件资源,因而可将CPU资源释放出来来执行其他运算。 执行分析时不需要CPU的干预,因此大大降低了图像处理到控制信号输出之间的延迟。 图4显示的例子可帮助您了解如何使用FPGA来释放CPU资源。 在本例中,FPGA执行所有的图像处理并生成输出信号。 这使得系统延迟降到最低,从而能够快速生成控制信号。
图4. 所有处理任务均在终端的FPGA上执行。 这使得CPU能够执行其他任务,从而最大程度降低系统延迟。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)