Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现一次触发控制三个光源开关分别采集三张图像(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现一次触发控制三个光源开关分别采集三张图像(C#)
- Baumer工业相机
- Baumer工业相机定序器功能的技术背景
- Baumer工业相机通过BGAPI SDK使用定序器功能
- 预期的相机动作
- 定序器的工作原理
- Baumer工业相机通过BGAPI SDK使用定序器功能具体实现方法
- 1.引用合适的类文件
- 2.通过NEOAPI SDK开启定序器功能实现一次触发控制三个光源分别采集三张图像
- Baumer工业相机使用定序器功能实现一次触发控制三个光源开关分别采集三张图像的优势
- Baumer工业相机使用定序器功能实现一次触发控制三个光源开关分别采集三张图像的行业应用
Baumer工业相机
Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。
Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。
Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。
Baumer工业相机堡盟相机在SDK中提供了一种在收到单个触发信号时同时通过相机的IO信号控制三个光源,并分别采集三种不同光源下的图像的方法。
下面介绍实现一次触发控制三个光源开关分别采集三张图像的方法可以使用Baumer工业相机自带的定序器的功能
Baumer工业相机定序器功能的技术背景
Baumer工业相机的BGAPI SDK是Baumer公司开发的针对其相机产品系列的一套软件开发工具包。该SDK提供了一组API,使开发人员可以编写专业应用程序,从而控制、捕获、处理和显示Baumer相机的图像和数据。BGAPI SDK支持多种编程语言,包括C++、C#、Visual Basic、LabVIEW、Matlab等,并提供了大量示例代码和文档,以帮助用户轻松上手,快速完成应用程序的开发。
BGAPI SDK提供了丰富的功能,可以控制Baumer相机的所有参数,包括曝光时间、增益、白平衡、触发模式等,以及支持各种数据格式,例如Raw、BMP、JPG等,同时还提供了实时显示、数据采集、图像处理等功能,为开发人员提供了高度定制化的解决方案。此外,BGAPI SDK还支持多相机系统的开发,并可支持各种计算机操作系统,如Windows、Linux、Mac OS等。
工业相机的 定序器Sequencer 功能是一种高级的编程功能,允许用户将多种拍摄参数设置成独立的序列,实现对相机的自动切换控制以满足多种不同的应用需求。使用 Sequencer 功能可以实现在一个拍摄周期内,完成多个曝光、图像传输和处理任务,从而提高工程效率和质量。
Baumer工业相机通过BGAPI SDK使用定序器功能
下面介绍在C#里Baumer工业相机如何通过BGAPI SDK进行定序器编程:实现一次触发控制三个光源开关分别采集三张图像
预期的相机动作
从理论上讲,该方法首先要求相机设置为触发模式,当每次收到触发信号时,再控制三个不同的IO信号去控制光源,然后再采集不同光源条件下的三张图像。
定序器的工作原理
从理论上讲,该方法首先要求相机设置为触发模式,当每次收到触发信号时,在同样的曝光时间内采集两张图像。
考虑到定序器的基本原理,定序器的参数设置比预想的要复杂得多:
设置硬件触发输入参数和 GPIO 输出。
开启定序器设置模式,循环设置三组定序器功能,分别控制不同的光源打开和关闭,并设置相应的曝光参数。
关闭定序器设置模式,开启相机定序器功能和图像采集。
Baumer工业相机通过BGAPI SDK使用定序器功能具体实现方法
下面介绍在C#里Baumer工业相机如何通过BGAPI SDK使用定序器实现一次触发控制三个光源开关分别采集三张图像
在使用定序器时,可能需要提前设置,以便可视化显示在什么时间应当发生的事件。在本例中,设置非常简单:
第一张图像的采集由硬件触发(通过“Line0”输入实现)——Line0同时触发定序器启动
第一组定序器(Set0)开始配置并触发第一张图像的采集
第二组定序器组(Set1)开始配置并触发第二张图像的采集
第二组定序器组(Set2)开始配置并触发第三张图像的采集
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工业相机设置定序器功能模式核心代码如下所示:
// STOP ACQUISITION AND LOAD DEFAULT PARAMETERS
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDevice.RemoteNodeList["UserSetSelector"].Value = "Default";
mDevice.RemoteNodeList["UserSetLoad"].Execute();
// CONFIGURING GPIO “Line0” AS THE TRIGGER INPUT
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
mDevice.RemoteNodeList["TriggerSource"].Value = "Line0";
mDevice.RemoteNodeList["TriggerActivation"].Value = "RisingEdge";
mDevice.RemoteNodeList["TriggerDelay"].Value = (double)0.0;
mDevice.RemoteNodeList["LineSelector"].Value = "Line0";
mDevice.RemoteNodeList["LineInverter"].Value = false;
mDevice.RemoteNodeList["LineDebouncerHighTimeAbs"].Value = (double)1.0;
mDevice.RemoteNodeList["LineDebouncerLowTimeAbs"].Value = (double)1.0;
// 定义三个用于控制光源的 IO 线路
string[] lightControlLines = { "Line3", "Line4", "Line5" };
// SWITCH TO SEQUENCER CONFIG MODE
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "On";
for (int i = 0; i < 3; i++)
{
// 设置当前定序器步骤
mDevice.RemoteNodeList["SequencerSetSelector"].Value = (long)i;
mDevice.RemoteNodeList["SequencerSetLoad"].Execute();
// 打开对应的光源
mDevice.RemoteNodeList["LineSelector"].Value = lightControlLines[i];
mDevice.RemoteNodeList["UserOutputValue"].Value = true;
// 设置触发模式
mDevice.RemoteNodeList["TriggerMode"].Value = "On";
// 可以在这里设置不同的 ROI 或其他参数,这里为了简单保持一致
mDevice.RemoteNodeList["OffsetX"].Value = (long)0;
mDevice.RemoteNodeList["OffsetY"].Value = (long)0;
mDevice.RemoteNodeList["Width"].Value = (long)320;
mDevice.RemoteNodeList["Height"].Value = (long)240;
mDevice.RemoteNodeList["SequencerPathSelector"].Value = (long)0;
mDevice.RemoteNodeList["SequencerTriggerSource"].Value = "ExposureActive";
mDevice.RemoteNodeList["SequencerTriggerActivation"].Value = "RisingEdge";
// 设置下一个定序器步骤
if (i < 2)
{
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)(i + 1);
}
else
{
mDevice.RemoteNodeList["SequencerSetNext"].Value = (long)0; // 循环回到第一个步骤
}
mDevice.RemoteNodeList["SequencerSetSave"].Execute();
// 关闭对应的光源
mDevice.RemoteNodeList["LineSelector"].Value = lightControlLines[i];
mDevice.RemoteNodeList["UserOutputValue"].Value = false;
}
mDevice.RemoteNodeList["SequencerSetStart"].Value = (long)0;
// SEQUENCER CONFIG END
mDevice.RemoteNodeList["SequencerConfigurationMode"].Value = "Off";
// START CAMERA SEQUENCER
mDevice.RemoteNodeList["SequencerMode"].Value = "On";
mDataStream.StartAcquisition();
mDevice.RemoteNodeList["AcquisitionStart"].Execute();
// WAIT FOR TRIGGERS TO CAPTURE IMAGES WITH CHANGING LIGHT CONDITIONS
// 这里可以添加代码来等待触发信号并处理采集到的图像
// STOP CAMERA SEQUENCER
mDevice.RemoteNodeList["AcquisitionStop"].Execute();
mDataStream.StopAcquisition();
mDevice.RemoteNodeList["SequencerMode"].Value = "Off";
Baumer工业相机使用定序器功能实现一次触发控制三个光源开关分别采集三张图像的优势
使用工业相机的定序器功能进行一次触发实现多种图像采集具有多方面的优势:
-
同步性能: 定序器功能允许用户在一次触发下实现多种图像采集,确保各个相机之间的采集动作同步,以保持数据的一致性,有助于进行后续的分析和处理。
-
时间精度: 通过定序器功能,可以精确地控制各个相机的采集时序,确保在同一时刻获取不同角度或不同参数的图像,避免时间上的偏差。
-
提高效率: 一次触发实现多种图像采集可以减少操作复杂度和时间成本,提高采集效率,尤其在需要同时获取多个视角或条件下的图像时效果显著。
-
数据一致性: 通过定序器功能,获得的图像数据在时间上是同步的,这有助于保持数据的一致性和准确性,在实时监控、运动分析等应用中尤为重要。
-
灵活性: 定序器功能允许用户根据实际需求自定义不同相机的触发顺序和采集条件,提供了更大的灵活性和可操作性。
总的来说,使用定序器功能进行一次触发实现多种图像采集可提高同步性能、时间精度、效率、数据一致性和灵活性,有助于工业相机在复杂场景下的应用和数据处理。
Baumer工业相机使用定序器功能实现一次触发控制三个光源开关分别采集三张图像的行业应用
工业相机使用定序器功能进行一次触发实现多种图像采集在许多行业中发挥着重要作用。以下是一些典型的行业应用示例:
-
制造业: 在制造业中,工业相机经常用于质检、定位和测量。通过定序器功能,可以一次触发相机获取不同角度、光照条件和过滤条件下的图像,以帮助提高产品质量检测的准确性和效率。
-
医疗影像: 在医疗影像领域,工业相机的定序器功能可以用于多角度拍摄或同时拍摄不同模态的影像,例如X光片和红外影像,从而为医生提供更全面的影像信息来进行诊断和治疗。
-
交通监控: 工业相机在交通监控领域的应用也十分广泛。通过定序器功能,可以实现同时对车辆、行人和交通信号灯等进行多角度、多条件的监控拍摄,以提高交通监控系统的全面性和精度。
-
农业领域: 在农业领域,工业相机的定序器功能可用于同时采集植物生长过程中的多种图像信息,如植物生长的速度、形态学特征和病虫害检测等,以实现对植物生长情况的全面监测和分析。
-
机器人视觉: 在工业机器人视觉系统中,可以利用定序器功能实现机器人在执行任务时同时获取多种角度的图像,从而帮助机器人更准确地感知周围环境,提高工作效率和精度。
这些行业应用示例表明,工业相机使用定序器功能进行一次触发实现多种图像采集,可为许多行业带来更全面、高效的视觉检测和数据采集解决方案。