Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现双快门采集两张曝光时间非常短的图像(C#)

news2024/11/15 20:07:45

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现双快门采集两张曝光时间非常短的图像(C#)

  • Baumer工业相机
  • Baumer工业相机定序器功能的技术背景
  • Baumer工业相机通过NEOAPI SDK使用定序器功能
    • 预期的相机动作
    • 技术限制
    • 定序器的工作原理
  • Baumer工业相机通过NEOAPI SDK使用定序器功能具体实现方法
    • 第一组定序器
    • 第二组定序器
    • 1.引用合适的类文件
    • 2.通过NEOAPI SDK开启两组定序器功能
  • Baumer工业相机使用定序器实现双快门采集两张曝光时间非常短的图像的优势
  • Baumer工业相机使用定序器实现双快门采集两张曝光时间非常短的图像的行业应用

Baumer工业相机

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。

Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。

Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。

Baumer工业相机NEOAPI SDK是用于Baumer工业相机的一款最新的软件开发工具包(SDK)。它为开发人员提供了一系列API和工具,用于与Baumer工业相机进行通信和控制,控制方式极为便捷类似Halcon的相机助手类控制方式。​

Baumer工业相机堡盟相机在SDK中提供了一种在收到单个触发信号时记录多张图像的方法。。

Baumer工业相机定序器功能的技术背景

Baumer工业相机的NEOAPI SDK是Baumer公司开发的针对其相机产品系列的一套软件开发工具包。该SDK提供了一组API,使开发人员可以编写专业应用程序,从而控制、捕获、处理和显示Baumer相机的图像和数据。BGAPI SDK支持多种编程语言,包括C++、C#、Visual Basic、LabVIEW、Matlab等,并提供了大量示例代码和文档,以帮助用户轻松上手,快速完成应用程序的开发。

NEOAPI SDK提供了丰富的功能,可以控制Baumer相机的所有参数,包括曝光时间、增益、白平衡、触发模式等,以及支持各种数据格式,例如Raw、BMP、JPG等,同时还提供了实时显示、数据采集、图像处理等功能,为开发人员提供了高度定制化的解决方案。此外,BGAPI SDK还支持多相机系统的开发,并可支持各种计算机操作系统,如Windows、Linux、Mac OS等。

工业相机的 定序器Sequencer 功能是一种高级的编程功能,允许用户将多种拍摄参数设置成独立的序列,实现对相机的自动切换控制以满足多种不同的应用需求。使用 Sequencer 功能可以实现在一个拍摄周期内,完成多个曝光、图像传输和处理任务,从而提高工程效率和质量。

Baumer工业相机通过NEOAPI SDK使用定序器功能


下面介绍在C#里Baumer工业相机如何通过NEOAPI进行定序器编程:借助双快门,可在较短的时间间隔内采集两张曝光时间非常短的图像。

预期的相机动作

从理论上讲,该方法首先要求相机设置为触发模式,当每次收到触发信号时,在同样的曝光时间内采集两张图像。

技术限制

双快门方法要使用闪光灯,因此在采集每张图像时都需要闪光,这样环境光将被抑制。

图像曝光时间非常短”意味着设定的曝光时间和相机内部处理时间比传感器的读取时间短。在此,设定的第二次曝光时间应大于等于传感器的读取时间。

为了避免传感器的读取时间超过第二次曝光时间,需要再进行一次短促的闪光,同时必须避免所有环境光。

定序器的工作原理

考虑到定序器的基本原理以及双快门的技术限制,定序器的参数设置比预想的要复杂得多:

由于第一张图像的采集由硬件触发,随后必须在不同的曝光时间内立即自动采集第二张图像,因此两组不同的定序器必不可少。
第一组定序器(Set0)包含用于配置TriggerMode的必要参数,以及第一张图像的预期曝光时间。
第二组定序器(Set1)将相机重新设置为自由运行操作模式。设定的曝光时间将大于等于传感器的读取时间。
此外,两组定序器都需要提供定序器组及路径的相关信息。

Baumer工业相机通过NEOAPI SDK使用定序器功能具体实现方法

下面介绍在C#里Baumer工业相机如何通过NEOAPI SDK使用定序器实现双快门采集两张曝光时间非常短的图像.

在收到触发信号后,序列便会开始运行,因此必须将TriggerSource设置为Line0。

第一组定序器

Set0提供由定序器控制的相机功能:ExposureTime和已开启的TriggerMode。

定序器组及路径相关功能:

SequencerPathSelector = 0
对切换至下一组定序器的路径进行定义,本例中为Path0。

SequencerTriggerSource = ExposureActive
对用作定序器触发源的内部或外部信号进行定义,本例中为内部信号ExposureActive。

SequencerTriggerActivation = RisingEdge
对触发切换至下一组定序器的信号状态变化进行定义,本例中为RisingEdge。

SequencerSetNext = 1
定义本路径中的下一组定序器,本例中为Set1。

第二组定序器

Set1中的ExposureTime更长,并关闭了TriggerMode。该组定序器及路径相关功能:

SequencerPathSelector = 0
对切换至下一组定序器的路径进行定义,使用Path0返回至Set0。

SequencerTriggerSource = ExposureActive
对用作定序器触发源的内部或外部信号进行定义,本例中为内部信号ExposureActive。

SequencerTriggerActivation = RisingEdge
对触发切定序器组切换的信号状态变化进行定义,本例中为RisingEdge。

SequencerSetNext = 0
定义相关路径中的下一组定序器。使用Set0返回。

本示例介绍了如何通过硬件触发实现双快门操作的定序器编程。双快门操作旨在在很短的时间内采集2张图像。该操作使用了一种特殊的技术,让相机还在读取第一张图像的时候可以采集第二张图像。

下图所示为以信号曲线表示的双快门效果:在第二次曝光的最终阶段消除外界光(曝光信号中的灰色阴影区域),可确保相机实现预期动作。

在这里插入图片描述

1.引用合适的类文件

代码如下(示例):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Data;
using System.Globalization;
using System.Diagnostics;
using System.IO;
using NeoAPI;

2.通过NEOAPI SDK开启两组定序器功能

Baumer工业相机设置定序器功能模式核心代码如下所示:


NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect();                                       // connect to a camera

MatType type;
bool isColor = true;
Feature pixelformat = new Feature();
camera.f.ExposureTime.Value = 10000;

if (camera.IsConnected)
{
	//  停止启动并加载默认参数
	camera.f.AcquisitionStop.Execute();  	
	camera.f.UserSetSelector.Set(UserSetSelector.Default); //选择相机Default设置 	
	camera.f.UserSetLoad.Execute();				 		   //执行UserSet1载入                         
	
	// 配置硬件触发输入
	// 这需要在配置定序器之前完成
	camera.f.TriggerMode.ValueString  = "On";
	camera.f.TriggerSource.ValueString  = "Line0";
	camera.f.TriggerActivation.ValueString  = "RisingEdge";
	camera.f.TriggerDelay.Value  =(double)0.0; 
	camera.f.LineSelector.ValueString  = "Line0";
	camera.f.LineInverter.Value  = false;
	camera.f.LineDebouncerHighTimeAbs.Value  =(double)1.0; 
	camera.f.LineDebouncerLowTimeAbs.Value  =(double)1.0; 
	
	// 为闪光灯配置计时器
	// 每次开始曝光时启动计时器,持续时间为 100 微秒
	camera.f.TimerSelector.ValueString  = "Timer1";
	camera.f.TimerTriggerSource.ValueString  = "ExposureStart";
	camera.f.TimerTriggerActivation.ValueString  = "RisingEdge";
	camera.f.TriggerDelay.Value  = (double)0.0; 
	// (闪光灯的)定时器持续时间等于下面的 Set0 曝光时间
	camera.f.TimerDuration.Value  = (double)100.0; //100.0 µsec
	
	// 配置 GPIO "线路 3",用于控制闪存
	camera.f.LineSelector.ValueString  = "Line3";
	camera.f.LineSource.ValueString  = "Timer1Active";
	// 当之前设置的定时器 1 工作时,3 号线为高电平
	camera.f.LineInverter.Value  = false;
	
	
	// 切换到定序器设置模式	
	camera.f.SequencerConfigurationMode.ValueString  = "On";

	// 设置第一组定序器功能Set0
	camera.f.SequencerSetSelector.Value  = (long)0;
	camera.f.SequencerSetLoad.Execute();	//执行第一组定序器参数载入     	                    
	camera.f.TriggerMode.ValueString  = "On";
	camera.f.CounterSelector.ValueString  = "Counter1";
	camera.f.CounterEventSource.ValueString  = "Off";
	
	// 设置第一组定序器Set0的曝光参数
	camera.f.ExposureTime.Value =  (double)15000.0;  
	camera.f.SequencerPathSelector.Value =  (long)0;
	camera.f.SequencerTriggerSource.ValueString  =  "ExposureActive";
	camera.f.SequencerTriggerActivation.ValueString  =  "RisingEdge";
	camera.f.SequencerSetNext.Value =   (long)1;
	camera.f.SequencerSetSave.Execute();	//执行第一组定序器参数保存

	
	// 设置第二组定序器功能Set1
	camera.f.SequencerSetSelector.Value  = (long)1;
	camera.f.SequencerSetLoad.Execute();	//开启第二组定序器参数 
	// 将触发模式(TriggerMode)设置为关,否则相机将等待下一次硬件触发,这是不可用的。将触发模式(TriggerMode)更改为关(Off)将使摄像机返回自由运行模式,曝光一次后,我们将回到设置 0,此时触发模式(TriggerMode)将再次打开,以便摄像机等待下一次硬件触发。                     
	camera.f.TriggerMode.ValueString  = "Off";
	
	camera.f.CounterSelector.ValueString  = "Counter1";
	camera.f.CounterEventSource.ValueString  = "ExposureActive";
	camera.f.CounterEventActivation.ValueString  = "RisingEdge";
	camera.f.CounterDuration.Value  = (long)2;
	camera.f.CounterResetSource.ValueString  = "Counter1End";
	camera.f.CounterResetActivation.ValueString  = "RisingEdge";

	// 设置第二组定序器Set1的曝光参数
	// 这里是双快门技巧,对于第二次曝光,我们将曝光时间设置为与第一幅图像的读出时间(由相机计算得出)相同。这样 相机将识别到,只有在第一幅图像的读出时间结束后,第二幅图像才可以读出。
	// 第一幅图像的读出完成后,第二幅图像才可以读出,因此会立即开始曝光。
	// 而不是等待第一幅图像完成读出	
	double fReadOutTime_Set1 = (double)camera.f.ReadOutTime.Value;	
	camera.f.ExposureTime.Value =  (double)fReadOutTime_Set1 ;  
	
	camera.f.SequencerPathSelector.Value =  (long)0;
	camera.f.SequencerTriggerSource.ValueString  =  "ExposureActive";
	camera.f.SequencerTriggerActivation.ValueString  =  "RisingEdge";
	// 定序器的下一步将再次是步骤 0
	camera.f.SequencerSetNext.Value =   (long)0;
	//执行第二组定序器参数保存
	camera.f.SequencerSetSave.Execute();	
	// 从 Set0 开始
	camera.f.SequencerSetStart.Value =   (long)0;
	
	// 开启相机定序器功能
	camera.f.SequencerMode.ValueString  =  "On";
	camera.f.AcquisitionStart.Execute();  	

	// 开始采集图像

	// 停止相机定序器功能
	camera.f.AcquisitionStop.Execute();  	
	camera.f.SequencerMode.ValueString  =  "Off";


}

  

Baumer工业相机使用定序器实现双快门采集两张曝光时间非常短的图像的优势

使用工业相机的定序器功能实现双快门采集两张曝时间非常短的图像有以下优势:

  1. 高速度: 双快门采集允许瞬间拍摄两张曝时间非常短的图像,使相机能够在极其短的时间内捕捉高速运动或快速变化的场景,有助于保持图像清晰度和准确度。

  2. 减少模糊: 通过使用定序器实现双快门采集,可以避免在移动或高速运动场景下因快门曝光时间长导致的运动模糊问题。两个瞬间的曝光时间可以在快速变化的情况下捕捉图像并有效减少图像模。

  3. 提高精度: 双快门采集可以在同一位置获得两个不同曝光时间的图像,结合和分析这两幅图,能提高图像处理的精度和准确性,尤其在要求测量和分辨率要求的应用场景下有很大的帮助。

  4. 灵活性: 使用定序器实现双快门采集,可以根据不同需求调整两张图像之间的曝光时间差和参数设置,灵可以适应不同的拍摄场景和要求。

  5. 数据多样性: 通过实施定序器功能和双快门采集,可以获取同一场景下不同曝光下的图像,有助于在后续处理和分析中增加数据的多样性和信息量。

综上所述,使用工业相机的定序器功能实现双快门采集两张曝时间非常短的图像可以显著提高图像捕捉速度和准确性,并适用于对快速运动进行高精度和清晰度要求的场景。

Baumer工业相机使用定序器实现双快门采集两张曝光时间非常短的图像的行业应用

工业相机使用定序器实现双快门采集两张曝光时间非常短的图像在许多行业中具有重要应用价值,以下是一些典型的行业应用:

  1. 制造业: 在制造业中,双快门采集可用于捕捉快速运动的生产线以及高精度的零件、机器、设备等图像,有助于质量控制和产品检验。

  2. 机器视觉: 工业相机的双快门采集可应用于机器视觉系统中,对运动中的物体进行高速拍摄和分析,用于自动化生产、无人驾驶车辆和智能机器人等应用。

  3. 医疗影像: 在医学影像领域,双快门采集可用于捕捉活体器官、血流等的快速变化图像,有助于医学影像诊断和手术支持。

  4. 军事与航空航天: 在军事和航空航天领域,工业相机的双快门采集可用于高速飞行器、导弹、火箭等的图像捕捉和分析,有助于飞行器性能测试和目标跟踪等应用。

  5. 科学研究: 在科学研究领域,双快门采集可用于快速动态现象的记录和分析,如化学反应过程、生物学事件等,有助于科学实验和研究。

通过工业相机的定序器实现双快门采集两张曝光时间非常短的图像,可以满足许多行业对高速运动和瞬时事件的图像捕捉需求,为各种应用提供了高速、精度和数据多样性的图像采集解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20个Python函数程序实例

前面介绍的函数太简单了: 以下是 20 个不同的 Python 函数实例 下面深入一点点: 以下是20个稍微深入一点的,使用Python语言定义并调用函数的示例程序: 20个函数实例 简单函数调用 def greet():print("Hello!")greet…

WPF Border控件 基本使用

Border 基本使用 1单线效果 代码&#xff1a; <Border Grid.Row"0" BorderThickness"0,0,0,1" BorderBrush"Red" /> 说明&#xff1a; BorderThickness"0,0,0,1" 可以分别设置四条边&#xff0c;顺序是&#xff1a;左 上 右…

【微信小程序】基本语法

目录 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 二、事件冒泡和事件捕获 三、生命周期 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 1、列表渲染(wx-for、block 改变默认wx:for item等) <view> {{msg}} </view> //渲染跟普通vu…

云计算项目十:ES集群安装|部署kibana

ES集群安装 部署ES集群&#xff0c;用于ELK日志分析平台的构建 es-0001 主机更改 /etc/hosts [rootes-0001 ~]# vim /etc/hosts 192.168.1.71 es-0001 192.168.1.72 es-0002 192.168.1.73 es-0003 192.168.1.74 kibana 192.168.1.75 logstash # 将最新的/etc/hosts配置文件更…

Python绘图-12地理数据可视化

Matplotlib 自 带 4 类别 地理投影&#xff1a; Aitoff, Hammer, Mollweide 及 Lambert 投影&#xff0c;可以 结 合以下四 张 不同 的 图 了解四 种 不同投影 区别 。 12.1Aitoff投影 12.1.1图像呈现 12.1.2绘图代码 import numpy as np # 导入numpy库&#xff0c;用于…

2024年大语言模型的微调

一个LLM的生命周期包含多个步骤&#xff0c;下面将讨论这个周期中最活跃、最密集的部分之一 -- fine-tuning(微调)过程。 LLM的生命周期 下面展示了LLM的生命周期&#xff1a; 愿景和范围&#xff1a;首先需要定义项目的愿景&#xff0c;你想让你的LLM作为一个更加通用的工具…

双体系Java学习之关键字,标识符以及命名规范

刚开学&#xff0c;然后之前的课程暂时停在了多态&#xff0c;接下来开始跟着学校的步伐重新开始学一下&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 之前的课程也会找个时间补起来的&#xff0c;谢谢大家&#xff01; 关键字 标识符 命名规范

STM 32 HAL库 内部FLash读写调试的问题

问题1&#xff1a;STM32G0 系列 256KB内部FLash大小&#xff0c;无法读写 分析&#xff1a;从STM32F103C8 移植过来的Flash操作代码&#xff0c;发现无法进行读写&#xff0c;返回 HAL_ERROR 错误&#xff0c;随后&#xff0c;检查在写之前是否擦除成功&#xff0c;检查代码发…

Oracle VM VirtualBox 安装完Ubuntu系统后一直提示安装Ubuntu

是因为存储设置有问题&#xff0c;把Ubuntu镜像添加进去了,移除后重启虚拟机就不会提示了 以下是配置的移除后的界面。

羊大师揭秘,女性喝羊奶有什么好处

羊大师揭秘&#xff0c;女性喝羊奶有什么好处 女性喝羊奶有多种好处。首先&#xff0c;羊奶富含钙元素&#xff0c;有助于预防女性体内缺钙和老年女性骨质疏松&#xff0c;从而增强骨骼密度。其次&#xff0c;羊奶中的色氨酸和烟酸等成分有助于促进睡眠&#xff0c;改善睡眠质…

NLP_文本张量表示方法_2(代码示例)

目标 了解什么是文本张量表示及其作用.文本张量表示的几种方法及其实现. 1 文本张量表示 将一段文本使用张量进行表示&#xff0c;其中一般将词汇为表示成向量&#xff0c;称作词向量&#xff0c;再由各个词向量按顺序组成矩阵形成文本表示. ["人生", "该&q…

探索安全与灵活性的边界,波卡账户抽象与多签管理的创新之路

相信大家在刚刚进入 web3 的时候都或多或少面临着一个普遍而棘手的问题&#xff0c;私钥的安全管理。私钥一旦丢失或被盗&#xff0c;用户将永久失去对他们加密资产的访问权。此外&#xff0c;随着区块链应用场景的多样化&#xff0c;这种单一模式已经无法满足复杂的交易结构和…

鸿蒙App基础

像素单位 .1、基础单位 为开发者提供4种像素单位&#xff0c;框架采用vp为基准数据单位。 PS&#xff1a;个人建议使用lpx&#xff0c;配置好配置文件&#xff0c;这里就可以按照UI设计稿实际的来&#xff0c;可以更好的实现设计效果 名称描述px屏幕物理像素单位vp屏幕密度相…

Unity 给刚体一个力或速度

创建平面和小球&#xff0c;给力或给速度让其弹起 给小球挂载刚体&#xff08;Rigibdody&#xff09;和脚本 &#xff08;力是累计或者衰减的&#xff0c;直接给速度就是赋值&#xff0c;但如果速度就和力类似了&#xff09; using System.Collections; using System.Collect…

防御保护IPSEC实验

要求&#xff1a;在FW5和FW3之间建立一条IPSEC通道&#xff0c;保证10.0.2.0/24网段可以正常访问到192.168.1.0/24. 因为是双机热备状态则只需要配置FW1主设备。 新建ACL待加密数据流 安全建议&#xff1a; IPSec参数配置 FW3配置如下与FW1类似&#xff1a; FW1中新建安全策略…

根据xlsx文件第一列的网址爬虫

seleniumXpath 在与该ipynb文件同文件下新增一个111.xlsx&#xff0c;第一列放一堆需要爬虫的同样式网页 然后使用seleniumXpath爬虫 from selenium import webdriver from selenium.webdriver.common.by import By import openpyxl import timedef crawl_data(driver, url)…

如何选择VR全景设备,才能拍摄高质量的VR全景?

随着VR全景技术的不断成熟和发展&#xff0c;VR全景已经成为了摄影爱好者乐于尝试的新手段&#xff0c;VR全景也为广大用户提供了一个全新的视角来探索世界&#xff0c;如果想要拍摄出高质量的VR全景&#xff0c;选择合适的VR全景拍摄设备以及掌握正确的拍摄技巧才是关键。 VR全…

SpringMVC的工作流程简介

SpringMVC控制器工作流程 用户通过浏览器向服务器发送请求&#xff0c;请求会被Spring MVC的前端控制器DispatcherServlet所拦截; DispatcherServlet拦截到请求后&#xff0c;会调用HandlerMapping处理器映射器; 处理器映射器根据请求URL找到具体的处理器&#xff0c;生成处理…

备忘 clang diagnostic 类的应用示例 ubuntu 22.04

系统的ncurses环境有些问题 通过源码安装了ncurses6.3后&#xff0c;才可以在 llvmort-18.1.rc4中编译通过示例&#xff1a; 1&#xff0c;折腾环境 ncurses-6.3$ ./configure ncurses-6.3$ make -j ncurses-6.3$ sudo make install sudo apt install libtinfo5 sudo…

企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒数据恢复流程

随着网络技术的不断发展&#xff0c;企业的生产运营效率得到了极大提升&#xff0c;越来越多的企业开始利用网络开展各项工作业务&#xff0c;企业的网络数据安全问题&#xff0c;成为大家关心的主要话题。近期&#xff0c;云天数据恢复中心接到多家企业的求助&#xff0c;企业…