当前位置: 首页 > news >正文

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)

 项目场景

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

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

Baumer工业相机的BGAPI SDK给新型偏振照相机提供了测量所获图像的强度和偏振的能力。因此,它能够在应用程序中利用偏振信息。本应用说明描述了如何获得偏振信息。

工业相机产品:
Baumer堡盟VCXU-50MP和堡盟VCXG-50MP,GAPI SDK v2.9.2及以上。

Baumer工业相机的偏振功能的详细介绍应用可以参考下面的技术博客,本文只介绍偏振数据的使用:

Baumer工业相机堡盟相机如何使用偏振功能(偏振相机优点和行业应用)(C++)_格林威的博客-CSDN博客


技术背景

Baumer工业相机的BGAPI SDK可以提供相机的图像原始数据,Halcon具有极为巨大的图像处理库,在图像处理领域非常强大,功能丰富,使用于工业视觉检测。

工业相机的SDK(Software Development Kit)是为了方便开发人员对工业相机进行控制和图像采集而提供的一套软件工具。而Halcon是一款强大的机器视觉软件,能够进行图像处理、分析、识别等多种任务。

 Baumer工业相机中的偏振相机是基于索尼IMC250MZR传感器的。该传感器涂有一层金属网,可以过滤4个相邻像素的偏振信息。偏振角度被过滤以0°、45°、90°、135°的方式排列。
有了这些信息,就可以计算出以下数据:
偏振角(AOP)。
直线极化度(DOLP)
角度和直角极化度(ADOLP)
图像的强度。

使用BGAPI SDK的偏振相机的用法:
该相机只提供有关偏振的原始数据。不同偏振格式的计算格式的计算在主机系统上通过堡盟GAPI SDK完成。

这就减少了接口的必要带宽,因为数据只传输一次,而不是针对每种偏振格式(AOP、DOLP、ADOLP.Intensity)单独传输、强度)分别传输。


功能分析

偏振相机功能的描述
使用标准化的SFNC特性 "ComponentSelector "和 "ComponentEnable",GenICam
兼容的软件可以识别该相机提供原始偏振数据。这些特征不能被改变(只读)。
为了进行识别,应检查以下特征:
ComponentSelector = PolarizedRaw
ComponentEnable = True
为了实现对广泛的GenICam兼容软件的兼容性,堡盟没有引入自定义图像格式。
原始偏振数据使用标准格式Mono8、Mono10、Mono12或Mono13传输、Mono10、Mono12或Mono12p。
此外,该相机还提供了用于校准相机的必要功能,这些功能属于以下类别"校准控制" 这些功能充满了堡盟的校准值。

如有必要,还可使用"DeviceResetToDeliveryState "将把这些值重置为堡盟提供的校准值。


代码分析

为了确保计算尽可能少地使用资源并实现高帧率,有两种方法方法来处理数据。这里我们解释一下最重要的配置和使用的软件功能的使用。
如果一个应用只需要一种偏振格式(AOP、DOLP或ADOLP),最好使用一个单部分图像对象。单部分图像对象正好包含一个图像。

下面核心代码提供了偏振图像原始数据进行转换的相关用法。

核心代码如下所示:

BGAPI2.Buffer bufferFilled = dataStream.GetFilledBuffer(1000); //timeout 1000 msec
if (bufferFilled == null)
{System.Console.Write("Error: Buffer Timeout after 1000 msec\r\n");
}
else
{try{if (bufferFilled.IsIncomplete){System.Console.Write("Error: Image is incomplete\r\n");}else if (bufferFilled.ImagePresent != true){System.Console.Write("Error: Image not present\r\n");}else{// get information about the image from the buffer objectuint width = (uint)(bufferFilled.Width);uint height = (uint)(bufferFilled.Height);IntPtr pBufferData = bufferFilled.MemPtr;ulong bufferDataSize = bufferFilled.MemSize;ulong imageOffset = bufferFilled.ImageOffset;ulong imageDataSize = (bufferDataSize > imageOffset) ? (bufferDataSize - imageOffset) : 0;IntPtr pImageData = (IntPtr)((ulong)(pBufferData) + imageOffset);System.Console.Write(" Image {0, 5:d} received in memory address {1:X}\r\n", bufferFilled.FrameID, pBufferData);/* For the first image, a new image object is created, all further images reuse the object andtherefore just initialize it with new data */if (imagePolarized == null){imagePolarized = imageProcessor.CreateImage(width, height, sPixelFormatRaw, pImageData, imageDataSize);// Enable the component to be calculated, disable all othersEnableSingleComponent(imagePolarized, sComponent);}else{imagePolarized.Init(width, height, sPixelFormatRaw, pImageData, imageDataSize);/* As the pixel format is the same for all images captured, the enabled components and the active component selectorare preserved, so you don't need to enable components on every image. */}// Calculate the required Polarisation format using a direct transformation from raw polarized image.BGAPI2.Image component = imageProcessor.CreateTransformedImage(imagePolarized, (sComponent != "ADOLP") ? "Mono8" : "RGB8");System.Console.Write("  component image: {0}\r\n", component.NodeList["ComponentSelector"].Value);if (bSaveBrw){string sFilename = sComponent + ".brw";component.NodeList["SaveBrw"].Value = sFilename;}component.Release();bSaveBrw = false;}}catch (BGAPI2.Exceptions.IException ex){returncode = (returncode == 0) ? 1 : returncode;System.Console.Write("ExceptionType:    {0}\r\n", ex.GetType());System.Console.Write("ErrorDescription: {0}\r\n", ex.GetErrorDescription());System.Console.Write("in function:      {0}\r\n", ex.GetFunctionName());}
}if (bufferFilled != null)
{// Queue buffer againbufferFilled.QueueBuffer();
}


CameraExplorer软件使用偏振功能

我们可以通过CameraExplorer软件用于查看和保存以下格式的偏振数据
AOP、DOLP、ADOLP和Intensity。
配置是可以在基本视图中使用 "偏振 "类别来完成。

如下图所示:

 

相关文章:

Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...

MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别

问题描述 MSVC(Microsoft Visual C) 中运行库的链接方式MD和MT的区别 问题解答 在MSVC编译器中,运行库(Runtime Library)有两种链接方式:MD(Multithread-DLL)和MT(Multithread)。这两种链接方式的主要区…...

设计模式之解释器模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…...

基于MATLAB编程的粒子群算法优化BP神经网络风电功率预测,基于PSO-BP的风电功率预测

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的风电功率 matlab代码 代写下载链接:https://download.csdn.net/download/a…...

开心档之C++ 字符串

C 字符串 目录 C 字符串 C 风格字符串 实例 实例 C 中的 String 类 实例 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 …...

Java Collection源码分析(JDk corretto 11)

文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种:Arrays工具类System类 LinkedList实现类t…...

13种权重的计算方法

权重计算方法有很多种,不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外,还有一些与权重计算相关的方法,今天一文总结了13种与权重计算相关的方法,大家可以对比选择使用。 一、…...

Devops和Gitops区别

一. 什么是devops DevOps 是一种开发(Dev)和运维(Ops)之间协作和沟通的文化、流程和工具的实践方法。它强调迭代、快速交付和持续集成/持续交付,旨在加速软件交付的速度、质量和稳定性。 DevOps 的核心目标是通过自动…...

拿下多家车企定点!4D毫米波雷达「域」系统首发出道

从1R、2R、3R到整车360感知方案,毫米波雷达的前装市场需求量依然保持着快速增长的态势。 高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)前装标配搭载ADAS毫米波雷达(前向后向盲区)交付1795.…...

【FATE联邦学习】FATE联邦学习使用GPU、指定cuda下标

问题 FATE框架1.x支持GPU训练吗? 寻找 先看了官网,搜官网,发现还是有的。 打开第一个后,里面可以用training param指定各个client的训练GPU,但是好像都是在large language model的。 而在文档中搜寻到的gpu&#xf…...

英文数字表达

1基数词 0 nought;zero;O 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine 10 ten 11 eleven 12 twelve 13 thirteen 14 fourteen 15 fifteen 16 sixteen 17 seventeen 18 eighteen 19 nineteen 20 twenty21 twenty-one 22 twenty-two 23 twenty-three 30 th…...

第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第125讲。 第11届蓝桥杯省赛,这是2020年6月21日举办的省赛Scratch考试真题,原定于2020年3月7日…...

部署LVS-NAT群集实验

一、 实验准备 负载调度器:内网关 ens33:192.168.109.12,外网关 ens37:12.0.0.1外网 Web节点服务器1:192.168.109.13 Web节点服务器2:192.168.109.14 NFS服务器:192.168.109.11 客户端&#xf…...

对待工作的九个级别

只要是职场人,每天都要开展本职工作,有的人在职场上混得风生水起、平步青云,有的人却总是在原地踏步踏,总有一种怀才不遇的感叹,为什么呢?其实,差距就在于对待工作的态度上。 今天我们一起与各位…...

第四章 存储结构与管理硬盘

第四章 存储结构与管理硬盘 一、一切从“/”开始 1、Linux系统中常见的目录名称以及相应内容 目录名称应放置文件的内容/boot开机所需文件——内核、开机菜单以及所需配置文件等/dev以文件形式存放任何设备与接口/etc配置文件/home用户主目录/bin存放单用户模式下还可以操作…...

【腾讯云-2】极简搭建边缘集群

1 创建 流程和https://blog.csdn.net/qq_47058489/article/details/130347795差不多,可参考 查看基本信息: 创建边缘集群的过程中会初始化master,说明包含一个托管master节点 但是没有其他节点 2 开启节点远程登录 通过 SSH 的方式远…...

在springboot中给mybatis加拦截器

拦截器的作用就是我们可以拦截某些方法的调用,在目标方法前后加上我们自己逻辑 Mybatis拦截器设计的一个初衷是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。 mybatis 自定义拦截器 1、实现Interceptor 接口,并添加拦截注解 I…...

[oeasy]python0139_尝试捕获异常_ try_except_traceback

尝试捕获异常 回忆上次内容 变量相加 整型数字变量可以相加字符串变量也可以拼接 但是 字符串 和 整型数字整型数字 和 字符串不能相加 怎么办? 转格式int(“1”)str(2) 可是 如果输入的苹果数量是 字符串"abc" int(“abc”)会发生什么?&…...

树的刷题,嗝

今天忘记带本子了,就没有学习java了,于是一心刷题,好烦遇到了两个奇怪的题目,我没跟题解写的,但是我是没想到奇怪的样例. no.1 617. 合并二叉树 难度简单1221收藏分享切换为英文接收动态反馈 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中…...

举个栗子~Tableau 技巧(253):让筛选器只显示全部以及需要的类别

用户反馈了一个需求:我的业务数据有很多类别,但其实经常查看的只有几个,Tableau 筛选器能不能设置一下,只显示全部和经常查看的那几个类别? 这个是可以实现的!如下示例,数据类别有:…...

mysql技巧(十六):覆盖索引 vs 回表 —— 让查询效率提升 10 倍的核心技巧

📝 本章学习目标本章聚焦数据库性能优化,帮助读者彻底掌握覆盖索引与回表的核心原理。通过本章学习,你将全面理解覆盖索引 vs 回表这一核心主题,并能在实际工作中应用这些技巧,让查询效率提升 10 倍以上。 一、引言&am…...

零基础掌握LunaTranslator:视觉小说翻译工具全流程实战指南

零基础掌握LunaTranslator:视觉小说翻译工具全流程实战指南 【免费下载链接】LunaTranslator 视觉小说翻译器 / Visual Novel Translator 项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator LunaTranslator作为一款专注于视觉小说翻译的开源…...

GTX 1050 Ti显卡的设备推理+模拟器运行时的显存占用实测报告!

...

避开理论深坑:给开发者的机器学习实用入门指南(附周志华《机器学习》高效阅读路线)

避开理论深坑:给开发者的机器学习实用入门指南 作为一名开发者,你可能已经意识到机器学习正在改变我们解决问题的方式。从推荐系统到图像识别,从自然语言处理到预测分析,机器学习正在成为现代软件开发不可或缺的一部分。但当你翻开…...

Falcor路径追踪器深度解析:如何实现电影级实时渲染效果

Falcor路径追踪器深度解析:如何实现电影级实时渲染效果 【免费下载链接】Falcor Real-Time Rendering Framework 项目地址: https://gitcode.com/gh_mirrors/fal/Falcor Falcor路径追踪器是一个基于DXR 1.1的高性能实时渲染框架,能够在现代GPU上实…...

微软 Copilot 条款更新:功能拓展与合规管控并行

微软 Copilot 条款更新:明确适用范围与新增功能规则微软 Copilot 此次更新使用条款,明确了条款适用于某些 Copilot 服务和体验的具体情形。新增了关于 Copilot Actions、Copilot Labs 和购物体验的条款,还修订了行为准则,清晰界定…...

医疗AI智能体:从数据到关怀人文设计:告别冰冷精准,构建有温度的诊疗交互.131

一、智能体的人文设计医疗AI智能体以大模型为核心,串联医学知识图谱、实体识别模块、风险评估模块、话术生成模块、伦理审核模块五大核心组件,最终实现精准医学判断 人性化交互的双重目标。而在医疗场景中,用户的核心需求从来不是单纯的数据…...

千问3.5-9B视觉模型快速部署指南:单卡RTX 4090D实测可用

千问3.5-9B视觉模型快速部署指南:单卡RTX 4090D实测可用 1. 开篇:为什么选择千问3.5-9B视觉模型? 如果你正在寻找一个能够理解图片内容的中文多模态模型,千问3.5-9B视觉版(Qwen3.5-9B-VL)值得你关注。这个…...

AQS深度探索:以ReentrantLock看Java并发编程的高效实现

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

从‘torch not found’到成功训练:一个YOLOv8环境配置的完整避坑实录(含CUDA/cuDNN版本选择)

YOLOv8环境配置终极指南:从版本匹配到显存优化的全流程实战 在计算机视觉领域,YOLOv8作为目标检测的标杆算法,其安装配置过程却常常成为开发者的"拦路虎"。本文将带你系统解决从PyTorch版本选择、CUDA环境配置到显存优化的全链路问…...