LabVIEW HALCON图像处理入门教程-同步采集和异步采集
视频简介请关注视频号、抖音、快手、B站、小红书等“石鑫华视觉”账号简单介绍了基于LabVIEW+Halcon的图像采集过程中的同步采集和异步采集的区别。LabVIEW IMAQdx采集图像时,通常都是能够达到工业相机标称的最高速度的。但是使用LabVIEW+Halcon进行图像采集时,如果使用同步采集时,则怎么调整参数都达不到全速。而使用异步采集时,则可以达到全速。这里主要是Halcon采集图像函数有两种模式,同步模式和异步模式,二者在采集完图像后的处理过程略有不同。同步模式synchronous采集完成后,拿当前的图像继续做后续的图像处理,共用一个内存引用,需要等待图像处理完成后,再去采集下一幅图像。在Halcon中好像有固定的时钟(或者可以简单的认为是有延时时间保护,必须要留一些时间用于图像处理),无论后续是不是有图像处理,哪怕只是简单的连续采集不处理,就是达不到全速,总是会给“图像处理”过程一些时间。LabVIEW Halcon同步采集而异步模式asynchronous,则采集完成后复制一个图像引用给图像处理,要不要处理图像那是你图像处理部分的事,采集部分只管采集,所以是根据相机的帧率实时采集的。这是两种采集方式的区别。从这差别来看,NI IMAQdx其实是类似于异步采集。当然NI IMAQdx并没有区分同步和异步采集。LabVIEW Halcon异步采集站在图像处理的角度来考虑,其实我们无论如何,都是要考虑使用同步的方式来处理的。当然,这里并不是指直接用上面Halcon中的同步采集。而是整个采集图像、处理图像、结果判断、保存数据、信号输出等,大概的一个过程是需要同步处理的。一个检测产品到来后,首先采集图像,得到图像后,总是要扔给图像处理模块来完成图像处理的过程,然后判断结果,保存数据,输出信号,交给其他执行机构来处理后续的内容。这个过程中,LabVIEW如果使用常规的生产者消费者模式来应对,异步模式就是生产者中完成采集图像的过程,然后扔给队列,在消费者中进行处理。这种方式的话,就是当相机采集图像速度过快时,就会将新图像覆盖原来旧的图像(因为队列中使用的是问题内存的引用,采集过快(这样的问题比较常见,图像处理耗时相对比较长,几毫秒到几十毫秒、几百毫秒都可能,而100帧的速率的相机平均采集时间只有10ms),就会覆盖引用中之前的数据),这样如果是连续模式时(无触发),就会丢失中间的数据。当然,如果是使用触发模式,那么应该总是在处理完上一次的图像后,再执行下一个产品,理论上也是一个同步过程,不会丢失触发后的数据。LabVIEW自带范例中的异步处理这个过程如果使用同步模式,那么就是在消费者中直接采集图像,然后接着继续后面的图像处理、结果判断、保存结果、信号输出等等过程,直到这个过程结束,再执行下一次循环,重新采集新的图像。这种同步模式无论相机的采集速度是否快于图像处理的速度,总是以整个采集、处理、判断、输出过程为准,需要这个过程完成后,再执行下次过程。如果是无触发的连续处理,则总是实时得到检测目标的最新图像。当然,如果整个过程耗时比较久,如果是对于运动目标,那么可能在下一次采集时,目标的位移会比较大。LabVIEW自带范例中的同步处理谢谢分享,好好学习
页:
[1]