Halcon中同步与异步采集的理解

Halcon 中同步采集(Synchronous Acquisition)和异步采集(Asynchronous Acquisition)的区别。 同步采集:你的程序(主线程)发出 “抓图” 命令后,会一直等待,直到相机真正完成曝光、读出并返回一张图像,然后程序才继续往下执行。这是一种 “阻塞式” 的工作方式。异步采集:你的程序(主线程)发出 “抓图” 命令后,会立刻返回,继续执行后续的代码(比如图像处理、逻辑判断等),而相机的曝光和图像读出在后台独立进行。这是一种 “非阻塞式” 的工作方式。同步采集:你点单后,就站在柜台前一直等着,什么也不做,直到咖啡师把做好的咖啡亲手交给你,你才离开。异步采集。 阅读详情

关于相机采集的同步与异步的问题经常被问到,这里写写我个人的一些理解。

背景知识

先说说相机采集过程中的常见几个词语,做做辨析。在各类文档中常见的关于采集的词有Capture, Acquisition, Grab,Digitize等这些词似乎都与采集相关。但这几个词又有稍有区别:

  • Capture:表示光线经过镜头在传感器芯片(CMOS,CCD)上成像。
  • Acquisition:表示由相机的控制器间隔一段时间就将芯片上的数据传输到相机buffer中。
  • Grab:从相机的缓存Buffer中把数据取出来传到板卡。
  • Digitize:把从相机buffer中拿到的模拟信号转化为相信量化的数字信号。
    我们说的采集一般是指这四个过程的总称。

同步采集

简单的说,同步采集的过程中,图像的抓取(grab)和图像的处理(process)是顺序进行的,当抓取完成后,就开始生成HImage和接下来的图像处理,然后在处理结束后,继续等待下一个采集信号的到来,开始下一帧的抓取,顺序见下图:

上图中,采集信号是按相机设定的帧率的频率发送。同步采集可能会导致的问题是,如果图像处理结束后,错过了下一帧的信号,那就只好等待再下一帧的信号来了继续采集。从图中这种情况看,中间一帧的图像会“丢失”,这样的话实际的帧率可能就达不到相机设定的理论的帧率了。

异步采集

而异步操作中,抓取与处理两个步骤是可以分离的,并可以异步运行,即可以在抓取下一帧图像的同时对图像进行处理,流程见图2。异步采集的第一步调用与同步采集类似,差别在接收到图像之后,采集句柄去采集下一帧图像,而处理算子在处理好前一帧图像后继续处理下一帧。处理完成后,再调用异步采集,直到完成图像采集为止,这样就可以达到全帧的速率。

使用异步采集的时候,存储抓取图像与处理图像的应该是两块不同的存储区域,因此需要使用双缓存策略。

二者比较

  • 同步采集:采集完后,处理图像,然后继续采集。采集的实际帧率受处理速度的影响。
  • 异步采集:采集完后,立刻采集下一帧图像,同时进行当前帧的图像处理。实际帧率不受处理速度影响。

使用同步采集的时候,抓取的都是当前的图像,而异步采集的时候,读到的图可能是已经当前时间的前几帧图像。如果是拍摄运动物体,可能发生物体已经移动了,图像却还是移动之前的情况。为了避免这个问题可以考虑同步,或者也可以考虑采用多线程机制保证采集和处理的同步。

        此处说的同步异步,并不是上层应用的同步异步,同步确实是一直等待所有图像工作完成后返回。然后异步,并不是说,发个信号,相机去处理,等所有处理完了,用回调或者事件信号通知调用者来取图像,这一点务必要理解透。

        对上位机来说,此处的同步和异步,都一样要阻塞着等待图像处理完成

 搬运自:Halcon中同步与异步采集的理解 - 简书 (jianshu.com)

Halcon学习---图像采集助手 在这里介绍一下HALCON中采集助手的使用,得到稳定的图像 阅读详情

相关推荐

异步和同步

通常情况下,当我们抓取帧的时候是从一个连续的视频流序列中去抓取一个或者多个视频帧。尽管近来有许多的专业设备使用数字信号,但大多数情况下,视频信号是模拟信号(analog)。最常见的模拟视频格式是 NTSC: 640 × 480 pixel, 30 frames per second and PAL: 768 × 576 pixel, 25 frames per seco

hehe6378的专栏 1924

halcon图像采集之同步(synchronous)与异步(asynchronous)

通常情况下,当我们抓取帧的时候是从一个连续的视频流序列中去抓取一个或者多个视频帧。尽管近来有许多的专业设备使用数字信号,但大多数情况下,视频信号是模拟信号(analog)。最常见的模拟视频格式是 NTSC: 640 × 480 pixel, 30 frames per second and PAL: 768 × 576 pixel, 25 frames per seco

Fred、的窃窃私语 1万+

(一)掰开了,揉碎了,说经典halcon中的那些算子

视觉由四门学科构成: 图像处理: 数学: 光学:《工程光学》 软件(语言)工具、软件架构 数学:矩阵变换、导数。 光学:几何光学(光路,相差、)、物理光学(衍射、干涉)。 图像有十大学科分支: 图像基本理论 图像灰度变换 图像增强 图像几何变换 形态学 图像分割 图像复原 图像频域 运动图像 图像配准 图像处理的进阶:模式识别、行为识别:真正接近人工智能的东西。:(人脸识别、车牌识别、指纹识别、虹膜识别) 安防视觉、无人机视觉、工业视觉。 二维客户需求: 识别定位 .

xiaoyaolangwj的博客 4190

Halcon相机的同步采集和异步采集

异步采集: 算子: grab_image_async(:Image:AcqHandle,MaxDelay) grab_image_start(::AcqHandle,MaxDelay) 相机进行异步采集,一幅图像采集完成后相机马上采集下一幅图像。MaxDelay表示异步采集时可以允许的最大延时,本次采集命令距离上次采集命令的时间不能超出MaxDelay,超出则需要重新采集。 同步采集: grab_image(:Image:AcqHandle:) 进行相机同步采集,采集完成后处理图像。图像处理结束以后再次采集

weixin_42105843的博客 4824

C#实现海康工业相机高帧率图像采集与Halcon处理

工业视觉检测系统对实时图像采集与处理有着严苛要求,高帧率传输是核心技术挑战之一。通过C#集成海康工业相机SDK与Halcon机器视觉库,可实现稳定高效的图像采集处理流水线。关键技术包括多线程架构设计、内存管理优化和硬件参数调优,典型应用在自动化产线检测中能达到30fps以上的处理性能。海康相机与Halcon的组合为工业视觉提供了可靠的硬件控制与强大算法支持,这种方案在尺寸测量、缺陷检测等场景中表现优异。

weixin_33858485的博客 446

08异步请求:何种场景下应该使用异步请求?

异步操作和同步操作是并发编程中的两种基本方式,它们都可以实现并发执行,但是它们在实现方式和优缺点上有所不同。异步操作是指在程序执行过程中,多个线程并行执行,程序不需要阻塞当前线程等待操作完成,而是直接继续执行后续操作,直到所有的操作完成后再返回结果给用户。异步操作的主要优点是可以并行处理多个任务,提高程序的并发性能,缺点是需要额外的线程负担和复杂的编程实现。同步操作是指在程序执行过程中,多个线程按照顺序依次执行,程序需要等待所有线程执行完成后才能返回结果给用户。

做兴趣使然的Hero 1241

机器视觉_HALCON_图像采集接口编程手册_1.第一章节介绍

但在开启采集之后,设置就会报如下错误(比如上面"Width"和"Height"的设置)。于是,我查阅了算子文档中的内容,发现里面并没有这部分的描述,甚至第一个参数的建议值都没有出现"Width"、“Height”、“Gain”。这使得我不太敢继续往下写相机初始化和修改配置的代码。在我一番查阅后,发现有一个文档叫,简单翻阅了一下,了解到该文档主要描述了如何创建一个HALCON图像采集接口,以及如何将第三方图像采集硬件集成到HALCON系统所需的基本技术。

三千幻想乡 3411

Halcon实时采集图像

Halcon实时采集图像,并以系统时间实时保存到本地,使用大恒水星相机

重码网halcon编程1——连续采集相机图像、批量加载图像、程序自动保存、数据结构、MFC与halcon

连续采集相机图像 同步采集:采集完后便进行处理,边采集边处理。 异步采集:采集完后不处理,单独进行处理。 批量加载图像 程序自动保存 在:编辑——参数选择——一般属性 数据结构 例子: MFC与halcon ...

qq_42832272的博客 3323

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4491

VSCode配置ClangFormat:让C++大括号乖乖不换行(附常见样式对比)

本文详细介绍了如何在VSCode中配置ClangFormat,实现C++代码大括号不换行的格式化风格。通过对比Attach、Allman等主流大括号样式,并提供从快速设置到项目级配置的完整指南,帮助开发者打造统一、高效的代码格式化工作流,提升团队协作效率。

weixin_28835551的博客 215

Halcon学习之二:摄像头获取图像和相关参数

1、close_all_framegrabbers ( : : : )    关闭所有图像采集设备。 2、close_framegrabber ( : : AcqHandle : )     关闭Handle为AcqHandle的图像采集设备。 3、open_framegrabber ( : : Name, HorizontalResolution, VerticalResolution, Im...

weixin_33860722的博客 398

在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法

1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态: //使用的从站编号为1 只有1个从站 ec_slave[1].state = EC_STATE_SAFE_OP; ec_writestate(1); //设置到安全模式 ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); printf("Slave %d State=0x%2.2x StatusCode=0x%4

zeal_for_rov的博客 6826

HALCON:图像采集之同步采集(synchronous)与异步采集(asynchronous)

HALCON图像采集之同步采集(synchronous)与异步采集(asynchronous)       通常情况下,当我们抓取帧的时候是从一个连续的视频流序列中去抓取一个或者多个视频帧。尽管近来有许多专业设备使用数字信号,但大多数情况下,视频信号是模拟信号(analog)。最常见的模拟视频格式是NTSC: 640 × 480 pixel, 30 frames per second andPAL...

《好好先生》专栏 1万+

Windows平台COLMAP实战:从零到三维重建的避坑指南

本文详细介绍了在Windows平台上使用COLMAP进行三维重建的完整流程,包括安装指南、数据准备技巧、图形界面操作及常见问题解决方案。特别针对Windows用户提供了CUDA版本与非CUDA版本的性能对比,帮助用户高效完成从照片到三维模型的重建过程。

weixin_29090677的博客 189

FPGA实现16x16点阵汉字滚动显示:Verilog代码与Quartus仿真详解

本文详细介绍了如何使用FPGA实现16x16点阵汉字滚动显示,包括Verilog代码设计、Quartus仿真及硬件连接技巧。通过字模数据存储和扫描控制逻辑,实现汉字的动态显示效果,并提供了优化建议和常见问题解决方案,适合FPGA开发者和硬件爱好者学习参考。

weixin_29172963的博客 349

【HALCON 实战入门】5. 相机接入与图像采集

本文介绍了HALCON图像采集的基础知识和操作流程。首先概述了图像采集系统的组成,包括工业相机、镜头、光源等硬件设备。接着详细说明了工业相机的类型(CCD/CMOS、面阵/线阵)、关键参数(分辨率、帧率等)以及常见接口(USB、GigE等)。文章重点讲解了HALCON中的图像采集算子,特别是open_framegrabber算子的使用方法、参数设置和注意事项。通过HALCON的统一接口,开发者可以简化不同相机的接入流程,实现标准化的图像采集操作。

youcans的博客 1041

YOLO26 实例分割技术:Mask 分支与特征融合

YOLO26实例分割技术研究摘要:本文提出了一种基于YOLO架构的高效实例分割方法,通过创新设计Mask分支和特征融合策略解决像素级分割精度、多尺度目标处理等挑战。系统采用共享Backbone提取特征,检测分支输出边界框和类别,Mask分支生成原型Mask和组合系数。核心创新包括:1)原型Mask生成与线性组合机制;2)检测与Mask特征共享;3)结合BCE和Dice的多任务损失函数。实验表明该方法在保持实时性的同时实现了高质量分割,为轻量级实例分割提供了新思路。

一键难忘的博客 248

HALCON与C#混合开发填坑之旅

HALCON与C#混合开发填坑之旅 遇到以下部分问题,有小伙伴会说,将halcon加到环境变量,但是线上的环境一般都不会安装halcon,所以这里都是针对不安装halcon环境的问题 以下问题会出现的前提条件: 1.C#开发 2.halcon 18版 x64开发 1.vs2010引用了holcondotnet.dll(.net 3.5(x64)),运行时HWindowControl控件总是提示初始化失败! 解决:首先VS2010选择平台要选x64,其次需要将(自己安装目录)\bin\x64-win64\ha

liushuiyouyi1991的博客 3212

01-系统技术架构师必备——软件架构设计基础与核心概念

摘要 本文系统阐述了软件架构设计的核心概念与方法论,重点涵盖以下内容:1)软件架构的四大要素(构件、连接件、约束、配置)及其边界划分;2)Garlan & Shaw五大架构风格(数据流、调用/返回、独立构件、虚拟机、仓库)的典型应用场景;3)基于电商库存系统的架构选型实战案例,展示如何根据业务需求(高并发、最终一致性)选择事件驱动架构配合Saga模式;4)介绍ABSD、DSSA等主流架构方法论及ISO/IEEE标准体系。文章融合金融与互联网领域的架构实践经验,为技术架构师提供系统性的知识框架和决策参考。

模界 | AI工程化实践者 181

【软考】高项论文写作常见模板

本文主要介绍了YYYY年MM月DD日,我所在公司承接了XXXX项目的建设过程,包括了XXX,XXX,XXX内容,涉及到XXX,XXX,XXX技术。本人在项目中承载着项目经理的角色,主要负责了XXX,XXX,XXX方面事宜。此项目时间紧,任务重,实施过程中,我们特别注重了1、XXX 2、XXX 3、XXX几个方面,经过团队的一致努力,本项目按时交付,运行至今,客户反馈良好。但是在实施过程中,也曝露除了一些问题,包括了XXX,XXX等,通过应急处理和协调,这些问题都得到了妥善解决,没有影响到项目进度。

奶爸的编程之路,也就一周冷个三天 1686

halcon入门_机器视觉之halcon入门(6)-一文弄懂halcon连接相机

第三章 Halcon 简单例程讲解第一节 连接相机3.1.1 简单的啰嗦几句上一章介绍的两个例子,都是基于现成的图片,进行处理然后转C#。但是工程中,不可能安排一个人一直给程序提供现成的图片。需要代码自己控制相机,从相机那里实时获取图片,实时图像处理。是不是这个理?所以每款相机都有一个SDK或者API,让你用你的语言去操控相机。但是估计你比较懒,(不是我估计的,是编写halcon的那群程序员。)所...

weixin_39968592的博客 3890

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Halcon C++工业相机实时采集与SDK配置实战

机器视觉系统中,图像采集是算法处理的前提,而工业相机的稳定接入与实时显示往往是开发中的第一道门槛。本文基于C++与Halcon技术栈,系统梳理从环境搭建到工程落地的完整路径:首先介绍Halcon的安装与Visual Studio工程配置,接着对比Halcon直连相机与厂商SDK取流两种方案,并详解GigE相机的参数设置与图像转换。在此基础上,进一步讨论异步采集、线程分离、零拷贝传递等实时性优化技术,以及曝光、触发等在线调参方法。针对常见丢帧、连接异常等问题,文章提供了系统的排查思路。通过本文,开发者可以掌握

weixin_34310369的博客 314

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

工业视觉上位机开发:Halcon相机采集与图像预处理全链路解析

在工业自动化与机器视觉领域,上位机开发的核心并非界面设计,而是如何让相机采集图像后,稳定、干净、高效地传递给后续算法处理。Halcon作为工业视觉的标准工具,提供了从相机连接、图像获取到预处理的完整解决方案。理解图像采集与预处理之间的工程边界,是解决工业现场图像不稳定、算子参数难调、批量处理掉链子等问题的关键。从相机接口选择、曝光增益配置到灰度归一化、形态学处理,每个环节都直接影响定位、测量、识别与缺陷检测的最终结果。本文将系统拆解一条可复用的技术链路,通过剖析常见工程陷阱与排除思路,帮助开发者建立从物理信

weixin_33888907的博客 297

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 常用二维码介绍与分析
下一篇: 获取秒、毫秒、微秒、纳秒时间差的方法
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值