1、原理
色彩定位(Color Location)是指通过对色彩匹配功能进行增强和扩展,以快速定位图像中特定颜色区域的过程。
色彩匹配通常将模板色彩与某一已知图像区域的颜色进行对比。与色彩匹配不同,色彩定位可以从图像中搜索与模板颜色相同或相近的区域,它将颜色匹配的功能扩展到被测对象位置未知的场合。与色彩匹配的实现过程类似,色彩定位也包括学习和搜索两个过程。
学习过程提取要搜索的模板图像色谱;
搜索过程则会在采集到的图像中快速搜索与模板颜色匹配的区域,并返回匹配区域的匹配度。
一般的搜索过程会从左到右、从上到下在图像中逐像素移动模板,对于每次移动,都使用色彩匹配算法将模板与其覆盖区域的色谱进行比较,并最终根据计算得到的匹配度来确定与模板颜色相同或相近的区域。
然而,在图像中逐像素移动模板搜索匹配区域的过程计算量很大且非常耗时,因此还需要对搜索过程进一步进行优化,才能实现色彩的快速定位。
不难想到使用由粗到细(Coarse-to-Fine)的方法来优化搜索过程。具体来说,就是先通过下采样和步进搜索的方法快速确定可能的候选匹配位置,然后再对各个候选区域进行精细色彩匹配,以最终确定最佳色彩匹配位置。
下采样方法是指在图像中移动模板到某一位置时,仅用模板所覆盖的图像区域中的部分像素颜色信息与模板的色谱进行比较;
步进搜索是指搜索过程中,模板并非逐像素在图像中移动,而是每次移动都会根据设定的步长跳过多个像素才进行色彩匹配。
基于下采样和跳跃搜索快速匹配后,可先得到所有可能的候选区域,有时候这些区域的分值甚至具有很低的匹配分值。然而,在后续的精细匹配过程中,这些候选区域的匹配度会再次根据原图像信息逐像素被更新,从而最终确定最佳匹配区域。下图显示了色彩定位的过程:
基于色彩定位的颜色识别应用,可以从图像中搜索所有与模板颜色匹配的区域,并为其分配标记。在实际应用中,很多被测件都含有用颜色编码的标记,只要预先知道标记的种类,并为各种标记找一个模板图像,就能从图像中识别各种标记的类别。例如,模具弹簧在生产过程中会根据荷重指标的不同被标记为黄色、蓝色、红色、绿色、棕色等不同的颜色,因此,可以通过色彩定位在图像中找到出现的颜色标记,并使用此信息来确定弹簧的荷重类型。
若将色彩定位和机械手臂或电机结合,还可以实现基于颜色的目标分类应用。例如,在彩色铅笔生产过程中,可以监测生产线上的铅笔颜色,由机械手臂挑选出同一颜色的铅笔。此外,在制药和塑料加工行业中,也常对胶囊和塑料工件按颜色进行分类。
2、实践
NI Vision使用位于LabVIEW的视觉与运动→Machine Vision→Searching & Matching函数选板中的IMAQ Setup LearnColor Pattern、lMAQ Learn Color Pattern、IMAQ Setup Match Color Pattern和IMAQ Match Color Pattern封装了色彩定位和色彩模式匹配的学习和搜索过程。使用这些函数可创建基于色彩定位的颜色识别、颜色分类(Color Sorting)和颜色检测机器视觉应用。
函数说明及使用可参见帮助手册:
色彩定位用于进行质量检测时,一般通过统计图像中待测彩色目标的数量并与预期的数量进行对比来判定检测结果。
通过一个使用色彩定位进行胶囊包装质量检测的实例,它可搜索绿色胶囊的总数,并通过与预期数量对比来判断包装的药品质量是否合格,了解色彩定位的使用方法,程序设计思路如下所示:
程序一开始先将包含绿色胶囊的模板图像读入内存,在调用IMAQ Setup LearnColor Pattern配置了学习模板的颜色信息的方式后,由IMAQ Learn Color Pattern完成学习过程;
IMAQ Setup Match Color Pattern对色彩定位过程的各种参数进行配置后,While循环会逐一将待测图像文件夹中的图像读入内存,并调用IMAQ Match ColorPattern定位其中颜色与模板相同的12个胶囊;
当所封装的胶囊中含有不同颜色的其他药品或胶囊被漏装时,颜色定位过程返回的结果将不会是12个;
因为胶囊的确切位置对检测结果并不重要,因此,通过色彩定位返回的匹配数即可判断所包装的药品是否合格。
程序实现如下所示: