图像实时采集系统

本方案主要在于解决图像实时采集系统对算法校正的仿真实验,以及采集卡接收电路的验证。

由于图像实时跟踪处理系统需要大量的外场景实验,大部分时候只能通过采集的现场图像以在电脑软件中读取图片的形式来进行验证算法,而无法通过采集卡对接来联立的验证系统的实用性。在进行联立实验室只能在有外场环境的情况下进行校正,并且外场场景单一。本系统的设计可以在室内进行已录制的不同外场场景的切换,可以灵活地验证图像实时处理系统的正确性。

本方案FPGA采用K7芯片,并且配有双BASE模式的CameraLink端口,不仅提高数据的处理和传输速度,也方便两台机器同时工作。本方案已成功在项目上应用验证,在高低温和热真空的环境试验中,可以成功把照片组快速传送到处理板上,处理板的算法对恶劣环境的照片组进行实时的目标跟踪。

硬件方面,上位机将数据传送到FPGA模块,然后通过NI PXIe-1082适配器,传出CameraLink信号,双BASE模式,通过CameraLink协议传输到自己的处理板,经过算法的处理,传到显示板,直接显示在显示屏上。(图1)

图1 硬件构成原理图

图2是整个系统的图片,由NI发图设备、处理板,显示屏组成。FlexRIO的高速图像仿真发图系统发送硬盘中的图片组到处理板,图片经过处理传送到显示屏中。

图2 系统实物图

软件方面,用户操作界面简单易懂,软件以打开图片所在文件夹的形式选取不同的外景,对相机的仿真设置参数均按照所需要求设置。程序一共分为2部分,也就是FPGA代码和上位机代码。其中FPGA代码实现了标准的CameraLink协议部分,而上位机代码决定了图像发送的尺寸大小和位数以及TAP形式。为了方便扩展,FPGA代码给CameraLink的部分参数留了可改动的余地。正是由于NI FPGA的灵活性,不仅是CameraLink的标准协议可以很好的实现,而且也可以自定义一些时序数据或间隔时间。

FPGA代码分解:

图3 FPGA代码分解:

数据从DMA FIFO中读出并放入到VI SCOPE的FIFO中,做一级数据缓存。

图4

实现整个CameraLink功能的状态机,也是程序主体部分。将这个状态机进一步细分则是:

图5

实现流程为:

图6

一般不同的应用,只需要修改上位机软件就可以了,在介绍上位机之前,先来看看CameraLink协议。CameraLink分为Base和Full两种格式,Base格式通过5个差分对来传输图像,除去时钟差分对,一共还有4对,每个时钟周期里,这4根差分对传输7个bit的数据,那就是说CameraLink一个时钟周期能传输28bit数据,事实上一般情况我们都会将其中4位去掉,也就是只考虑24bit也就是三个字节。我们在写数据的时候是将一幅图的所有数据全部提取出来并且拼接成U32的格式,并上图像的宽度和高度,一同写入到DMA FIFO中。目前上位机程序已经实现了多种不同格式的图像数据的发送了,经过与NI CameraLink接收卡相连测试,都能够成功传输。

上位机操作界面简单易行

图7 上位机软件操作界面

上位机加载FPGA的运行文件:

图8

读取图片文件,可以读常用的图片格式,同时也可以用读数据的形式来读自定的图片格式:

图9

对读出来的图片数据进行解析和拼接,符合CameraLink格式,可以发送图像深度为8、10、12、14、16,并且相应的以1、2、3Tap形式发送给FPGA:

图10

针对实验室的需求,我们需要发送不同格式的图片到处理板,有些图片的格式由实验室制定,LABVIEW现有的图片控件不能识别自定的图片属性,而且需要发送的图片内存非常大。经过创新设计,我们将自定格式的图片以数据的形式发送,无论图片格式如何,都会将数据发送出去。针对图片组内存大的问题,我们使用了生产者/消费者模式,只需要一幅图像的内存,大大减少了所需的内存空间,有效地解决了这个问题,现在设计的软件程序针对不同的图片格式和不同的位数,有着不同的处理方式,而且速度快,系统稳定。

以前我们每次做实验,都需要用相机来拍摄图像,现场试验,这样会需要很大的人力物力,有些特殊环境不允许重复拍摄,从而增加了实验难度。使用NI的仿真发图系统,有效地仿真相机的功能,随时传输各种实验环境的照片,相比较以前使用的系统,NI的产品的优势很多, 主要表现在NI软件具有极大的灵活性,在NI LABVIEW的图形化开发环境中,无需文本代码,而是通过拖放式图标开发数据采集系统。直观的流程图所显示的代码便于开发、维护和理解,而且具有快速、灵活的数据存储选项,系统稳定可靠。

相关推荐
仲南音19 小时前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner1 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20201 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy2 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia2 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20202 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子2 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安3 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun3 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun3 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议