图像实时采集系统

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

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

本方案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的图形化开发环境中,无需文本代码,而是通过拖放式图标开发数据采集系统。直观的流程图所显示的代码便于开发、维护和理解,而且具有快速、灵活的数据存储选项,系统稳定可靠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/190050.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DMP大湾区工博会开幕在即,狂撒100万福利,邀您与2200+展商面对面

截止11月9日,DMP大湾区工博会2023已迎来超100万人关注。大湾区工博会将于11月27-30日在深圳国际会展中心(宝安)举办。作为工业制造行业的风向标,展会将带来2200多家全球参展企业、40多场主题演讲、数千项行业新品技术。 本届DMP大湾区工博会,…

学习c#的第九天

C# 可空类型&#xff08;Nullable&#xff09; C# 可空类型&#xff08;Nullable&#xff09; 可空类型允许我们在值类型中包含 null 值&#xff0c;这在处理数据库查询结果或需要表示缺失值的情况时非常有用。 声明一个可空类型的语法如下&#xff1a; < data_type>…

【rl-agents代码学习】01——总体框架

文章目录 rl-agent Get startInstallationUsageMonitoring 具体代码 学习一下rl-agents的项目结构以及代码实现思路。 source: https://github.com/eleurent/rl-agents rl-agent Get start Installation pip install --user githttps://github.com/eleurent/rl-agentsUsage…

大数据-之LibrA数据库系统告警处理(ALM-12041 关键文件权限异常)

告警解释 系统每隔一个小时检查一次系统中关键目录或者文件权限、用户、用户组是否正常&#xff0c;如果不正常&#xff0c;则上报故障告警。 当检查到权限等均正常&#xff0c;则告警恢复。 告警属性 告警ID 告警级别 可自动清除 12041 严重 是 告警参数 参数名称 …

​ArcGIS Pro怎么生成山顶点

山顶点是指山脉、山丘或山脉系统中最高的地点&#xff0c;通常是山的最高峰&#xff0c;这是山地地貌中的最高点&#xff0c;往往是山脉的标志性特征之一&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro获取山顶点&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用…

大洋钻探系列之二IODP 342航次是干什么的?(上)

本文简单介绍一下大洋钻探IODP 342航次&#xff0c;从中&#xff0c;我们一窥大洋钻探航次的风采。 IODP342的航次报告在网络上可以下载&#xff0c;英文名字叫《Integrated Ocean Drilling ProgramExpedition 342 Preliminary Report》&#xff0c;航次研究的主要内容是纽芬兰…

虹科方案 | 汽车电子电气架构设计仿真解决方案

来源&#xff1a;虹科汽车电子 虹科方案 | 汽车电子电气架构设计仿真解决方案 导读 本文将介绍面向服务&#xff08;SOA&#xff09;的汽车TSN网络架构&#xff0c;并探讨RTaW-Pegase仿真与设计软件在TSN网络设计中的应用。通过RTaW将设计问题分解&#xff0c;我们可以更好地理…

《网络协议》04. 应用层(DNS DHCP HTTP)

title: 《网络协议》04. 应用层&#xff08;DNS & DHCP & HTTP&#xff09; date: 2022-09-05 14:28:22 updated: 2023-11-12 06:55:52 categories: 学习记录&#xff1a;网络协议 excerpt: 应用层、DNS、DHCP、HTTP&#xff08;URI & URL&#xff0c;ABNF&#xf…

前端面试之事件循环

什么是事件循环 首先&#xff0c; JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;这并不意味着单线程就是阻塞&#xff0c;而是实现单线程非阻塞的方法就是事件循环 在JavaScript中&#xff0c;所欲任务都可以分为&#xff1a; 同步任务…

hive里因为列名用了关键字导致建表失败

代码 现象 ParseException line 6:4 cannot recognize input near percent String COMMENT in column name or primary key or foreign key 23/11/13 11:52:57 ERROR org.apache.hadoop.hive.ql.Driver: FAILED: ParseException line 6:4 cannot recognize input near percent …

低代码、零代码开源与不开源:区别解析

在如今日益发展的数字时代&#xff0c;程序开发变得越来越重要。为了实现日益提高的业务需求&#xff0c;开发人员必须能够以更高效、更灵活的方式构建和交货软件解决方案。低代码和零代码开源是近几年流行的两种开发方法。本文将探讨它们与传统非开源程序开发的差别&#xff0…

Linux Mint 21.3 将搭载 Cinnamon 6.0 和实验性 Wayland 支持

导读Wayland 会话可能在 Linux Mint 23 系列中成为默认选项&#xff0c;预计将在 2026 年实现。 Linux Mint 项目今天在他们的每月新闻通讯中 宣布&#xff0c;他们已经开始着手在未来的 Linux Mint 发行版中实施 Wayland 会话&#xff0c;最初将在 Linux Mint 21.3 中提供。 …

蓝桥杯 选择排序

选择排序的思想 选择排序的思想和冒泡排序类似&#xff0c;是每次找出最大的然后直接放到右边对应位置&#xff0c;然后将最 右边这个确定下来&#xff08;而不是一个一个地交换过去&#xff09;。 再来确定第二大的&#xff0c;再确定第三大的… 对于数组a[]&#xff0c;具体…

计算机毕设 推荐系统设计与实现 协同过滤推荐算法

文章目录 0 前言简介常见推荐算法协同过滤分解矩阵聚类深度学习 协同过滤原理系统设计示例代码(py) 系统展示系统界面推荐效果 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕…

ts学习02-数据类型

新建index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </h…

【Python Opencv】图片与视频的操作

文章目录 前言一、opencv图片1.1 读取图像1.2 显示图像1.3 写入图像1.4 示例代码 二、Opencv视频2.1 从相机捕获视频获取摄像头一帧一帧读取显示图片VideoCapture 中的get和set函数示例代码 2.2 从文件播放视频示例代码 2.3 保存视频示例代码 总结 前言 在计算机视觉和图像处理…

Java --- JVM的执行引擎

目录 一、执行引擎概述 1.1、执行引擎的工作过程 二、Java代码编译和执行的过程 三、解释器 3.1、解释器工作机制 3.2、解释器分类 3.3、解释器现状 四、JIT编译器 五、热点代码及探测方式 六、方法调用计数器 6.1、热点衰减 七、回边计数器 八、HotSpot VM设置程序…

Fabric区块链浏览器搭建

目录 一、创建区块链浏览器相关目录二、配置docker-compose三、配置区块链浏览器四、启动区块链浏览器 书接这一回 Fabric二进制建链&#xff0c;在建好链之后&#xff0c;将为这条链部署一个区块链浏览器。 Hyperledger Fabric区块链浏览器地址&#xff1a;https://github.co…

Python参数传递,从入门到精通

Python是一种非常灵活的编程语言&#xff0c;以多种方式定义和调用函数。其中一个关键方面是参数传递的灵活性。在Python中&#xff0c;可以通过位置、关键字、默认值和可变长度参数等多种方式来传递参数。 1. 位置参数 位置参数是最常见的参数传递方式。当调用一个函数时&am…

Python---元组的相关操作方法

由于元组中的数据不允许直接修改&#xff0c;所以其操作方法大部分为查询方法。 编号函数作用1元组[索引]根据索引下标查找元素2index()查找某个数据&#xff0c;如果数据存在返回对应的下标&#xff0c;否则报错&#xff0c;语法和列表、字符串的index方法相同3count()统计某…