有两个摄像头Cam1和Cam2安装在一条生产线上。他们配备了传感器,一旦产品接触到其中的一个,就会发出信号。这些摄像机放在另一个后面。
经过Cam2,一个平衡B被安装,并提供一个传感器以及。当产品到达那里时,产品将被称重,并用重量向我的程序发出信号。然后,我的程序必须根据从B(重量)接收到的两个捕获图像和数据对此产品进行评估。
实际上,一个或两个产品可以适合于Cam1和Cam2之间。Cam2和B之间也有一、两个产品可供选择。
我遇到了一些困难,以找到一个稳定的算法,以确定图像,以及权重,是否属于同一产品。工厂内部有一些条件是无法改变的:
这个问题必须解决programmatically.工厂有完全的障碍,使我无法在那里做任何修改。
我最初的解决方案是为每台相机( FIFO_Cam1 & FIFO_Cam2 )分配一个FIFO。一旦我的程序接收到来自其中一个摄像机的信号,方便的FIFO就会将所捕获的产品图像排在队列中。然后,当我收到来自B的信号时,我从每个FIFO中排出最上面的图像,并认为它们属于同一个产品,它的权重也与最后一个信号相同。
不幸的是,我的考虑只能解决速度问题(Nr.1),而不能解决(Nr.2)的所有情况。
当保存到FIFO_Cam1中的产品数量超过5个时,我试着设定一个阈值,我会用反同步发出信号,但是不能正常工作,无法解决大多数情况。
任何帮助或想法都将不胜感激!
谢谢。
发布于 2018-11-16 16:05:35
你需要一个信号,让你知道,线停止或急剧减慢。
因此,为了处理丢失的产品,我会存储图片/测量时的时间戳。
如果直线以相同的速度运行,那么您应该始终看到事件之间的相同时间差。如果一个产品丢失了,那么下一个度量值将达到所需时间的大约2倍,因此您可以在fifo中查找与您预期的时间增量相匹配的项目。您还可以跟踪同一队列中的连续时间戳。它还会告诉你有多少产品可能被跳过。
为了允许行速度发生一些变化,您应该在持续的基础上更新时间增量(最后一个成功项)。显然,如果线路停止,您需要考虑停止时间(这就是为什么您需要一个信号为它,我认为这将更容易标记每一个产品)。如果你能测量线的速度,它将是更好的,因为你可以更准确地调整你的预期三角洲。
这仍然是一些近似的解决办法。一定要考虑到测量中的一些错误。如果线路速度发生了巨大的变化,或者被删除的产品数量太高,这可能仍然无法工作。例如,假设第一个摄像头扫描了10种产品,然后这条线停了一会儿,然后以不同的速度启动,有人把8种产品踢出了线,现在你得到了下一张2张照片。要确定如何把后来的照片和第一张画配对是不可能的。
https://stackoverflow.com/questions/53339963
复制相似问题