当前位置:首页 > 嵌入式 > 嵌入式分享

在2D视觉定位的实际落地中,有一种很常见的场景经常让调试工程师头疼:相机视野里不只出现一个工件,而是同时出现好几个。比如散料上料工位里,料框里躺着五六只外形相似的塑胶端子;托盘式装配线里,一个托盘载着四个一模一样的外壳同时进入相机视野;料盒分隔格里,多个连接器零件挨着摆放。这时候如果还按单目标定位的逻辑,只输出一个最高得分的坐标,机器人就只会抓走一个工件,其他几个位置完全被忽略了。怎么让2D定位系统在多目标场景下,能逐个把每个工件的坐标都准确找出来、区分开、并一一输出,是很多多品种混线产线必须解决的问题。这篇文章就从多目标匹配的算法逻辑出发,拆解系统在多个相似目标并存时,是怎么做到逐一识别、准确区分的。

单目标逻辑在多目标场景下的局限

常规的单目标定位流程,走的是“找最高分、输出一个坐标”的逻辑:系统在整幅图像里搜索,遍历所有候选位置,取匹配得分最高的那一处作为目标位置,输出对应的平移、旋转偏差,然后把结果发给机器人。这套逻辑在相机视野里只出现一个工件时是成立的,但一旦视野里同时出现多个外形相似的工件,就会暴露明显的局限。

比如料框里有四个外形一模一样的塑胶端子,系统搜索完整个视野后,会找到四处匹配得分都很高的位置。如果按单目标逻辑,系统只会输出得分最高的那一个位置的坐标,其他三个端子的位置被直接忽略,机器人一次只能抓走一个,后面的三个工件位置没有任何引导信息,还得靠人工或者其他的定位方式重新找。同时还有一个隐患:如果工件摆放的角度、姿态稍有差异,四个位置里得分最高的那个不一定是工艺上需要优先处理的那一个,直接按最高分输出,可能抓错了目标顺序。

更麻烦的情况是,视野里如果同时出现了外形非常相似但型号不同的工件,单目标逻辑输出的“最高分”结果,很难区分出来到底匹配的是哪个型号,容易把A型号工件的坐标当成B型号的输出。

多目标匹配的核心逻辑:逐个定位、排除已识别区域

要在多目标场景下把所有工件坐标都找出来,算法的核心思路不再是一次只找一个,而是采用“逐轮搜索、逐轮排除”的迭代逻辑。整套流程可以拆成清晰的几步。

第一步,先在整幅图像里完成一次常规的全图搜索,找到得分最高、和模板特征最吻合的那个位置,这个位置的得分要能达到设定的阈值,才能被认定为第一个有效目标,系统记录下这个位置的平移、旋转坐标。

第二步,把刚才已经识别出来的那个工件所在的位置区域,从后续的搜索范围里排除掉。因为算法已经确认这个区域里找到了一个工件,这个区域就不需要再重复搜索,否则下一轮还会在同一位置搜到同一个工件,造成坐标重复输出。

第三步,在排除了第一个工件所在区域之后,剩下的图像区域里再重新做一次搜索,找到新的最高得分位置,如果这个位置也达到阈值,就把它认定为第二个有效目标,记录坐标,再把第二个工件所在的区域也从搜索范围里排除掉。按照这个逻辑循环下去,每一轮都在“还没被识别的剩余区域”里找一个新的最高分目标,直到整个视野里的候选目标都被找完,或者剩余区域里的最高得分已经跌到阈值以下,说明视野里不再有符合条件的工件了。

这套“找最高分-记录坐标-排除区域-继续找下一个”的循环逻辑,就是多目标定位从单目标扩展到多目标的底层结构,也是很多商用2D视觉库提供多目标定位功能的基础实现方式。

区分不同型号:用特征差异做目标分类

除了要把多个同外形工件的位置都找出来,很多产线还面临一个更复杂的需求:视野里同时出现不同型号的工件,系统需要区分出哪个位置是哪个型号,并且按型号分别输出坐标。这已经不是单纯的多目标定位,而是叠加了目标分类的逻辑。

实现型号区分的方式,是在模板库里存不同型号的独立模板,每一轮搜索的时候,系统不只拿一个模板去匹配,而是把当前区域的图像,和模板库里所有型号的模板都依次比对,找出匹配得分最高的那个型号,同时判断这个得分是否达到该型号的阈值。如果得分达标,就认定当前位置的工件属于这个型号,并输出对应型号的分类结果和位置坐标。

要实现可靠的型号区分,不同型号之间的模板特征必须有足够明显的差异。比如不同型号的外壳,外形轮廓的圆角半径不一样、或者表面有一个独特的定位凹槽、或者边角的切角位置不同,这些特征差异能让算法在比对多个模板时,把匹配得分拉开明显的差距。如果两个型号的外形、表面特征几乎完全一致,只靠2D视觉的单视角匹配很难可靠区分,这类情况就需要考虑叠加其他识别手段,比如识别工件表面印刷的二维码来区分型号。

多目标落地时常见的边界与隐患

多目标定位在多品种产线上能明显提升抓取、装配的效率,但落地的时候也有一些常见的边界和隐患需要注意。

第一个隐患是工件紧挨在一起时容易发生误判。如果两个工件挨得非常近,甚至边缘部分重叠在一起,第一轮搜索识别出其中一个工件时,可能会把两个重叠工件的边缘特征当成一个目标算进去,排除区域的边界又画得不够准,导致下一个工件的坐标算偏。这类场景下,尽量通过调整料框分隔、托盘布局,让工件之间保持一定的间距,能明显提升多目标定位的稳定性。

第二个隐患是“排除区域”和真实工件位置可能存在偏差。如果第一轮识别出来的工件位置带有一点亚像素级的误差,排除区域画出来的时候就会和真实工件位置有微小错位,可能在边界处多排除了下一轮目标的一部分,导致后面的工件得分下降、漏检。这类问题可以通过在排除区域四周留出一点安全边距来缓解,但同时也要注意边距不能留得太大,否则会误伤旁边正常的工件。

第三个隐患是模型数量增多带来的性能压力。如果需要区分的型号数量很多,每一轮搜索都要把当前区域和所有型号的模板依次比对,计算量会成倍增长,单次定位的耗时会被拉长。对于节拍要求高的高速产线,需要在型号覆盖范围和计算速度之间做取舍,必要时通过缩小旋转搜索范围、降低金字塔层数等方式控制计算开销。

整体来看,2D定位引导在多目标场景下的核心逻辑,就是把“只找一个最高分”扩展成“逐轮找最高分、逐个排除已识别区域”的迭代流程,配合多模板比对实现不同型号的区分,从而在相机视野里同时出现多个相似工件时,也能把每个工件的位置坐标逐一找出来、并准确地按型号输出给执行机构。理解这套逻辑,就能在调试多目标工位时,针对性处理工件间距、排除区域、型号特征差异这些影响识别效果的关键点。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭