色彩匹配(Color Matching)是将模板图像与待测图像或其中某一区域的颜色进行比较,判断它们是否相同或相近的过程。它可以用于颜色识别、颜色检验以及彩色对象定位等基于色彩信息比较的应用程序。
色彩匹配通常分为色彩学习(Color Learning)和色彩比较(Color Comparing)两步。
- 在色彩学习阶段,系统会对模板图像或区域的颜色信息进行量化,并基于各种颜色及对应像素占总像素的百分比来生成颜色特征向量;
- 在色彩比较阶段,系统会将模板和待测图像的颜色特征向量进行比较,并返回它们之间的相似度指标。
如何才能判断两幅图像中的颜色是否相同呢?
当然是从图像中不同颜色的像素统计信息入手。对于两幅尺寸和颜色相同的图像来说,图像中每种颜色的像素数均相同。对于尺寸不同但颜色相同的图像来说,图像中每种颜色的像素数不相同,但是两幅图像中每种颜色的像素数占总像素数的比例却相同。考虑通用性,可以将图像中各种颜色对应的像素数占图像总像素数的比例作为颜色比较的特征向量。
但是,若对图像中所有颜色都进行统计,生成的特征向量就会很大,这极不利于系统对实时性的要求。因此还要再进一步对特征向量进行优化。
由于HSL色彩空间具有亮度和色彩信息分离的特点,因此可以将图像转换至HSL空间中,再基于色调和饱和度构成的色盘对颜色进行量化。这样得到的颜色特征向量不仅不会受到亮度变化的影响,还能根据程序对颜色分辨率的需要,调整量化等级以减少特征向量的数据量。
下图显示了提取图像颜色特征向量的过程:
色谱提取
首先彩色图像被转换至HSL色彩空间,以分离亮度和颜色信息。由于亮度128对应的色盘最大(中间),因此可以仅抽取该色盘进行量化。量化时先根据对颜色分辨率的需要,将色盘等分为多个扇区。颜色敏感度(color sensitivity)参数用来确定色盘具体被划分为多少个扇区。
Nl Vision采用低、中、高3挡颜色敏感度值来控制颜色的分辨率。低挡将色盘分为7个扇区,中挡将色盘分为14个扇区,高挡则将色盘分为28个扇区。扇区越多,说明量化的分辨率越高。色盘被等分为扇区后,就可以进一步沿着饱和度方向进行分割。Nl Vision将各扇区沿饱和度方向分为两块,具体分割位置由饱和度阈值(saturation threshold)决定,它控制了每个扇区分为两块的内圆的半径。
在色彩学习阶段,机器视觉系统会从模板图像或区域中提取其色谱。在匹配阶段,机器视觉系统同样会从目标图像中提取其色谱,并比较其与模板图像色谱的差异。而色谱之间的差异则可使用两个向量之间的曼哈顿距离来定量评价。
在实际中,为了补偿色彩量化过程中可能发生的一些错误,一般都会在计算色谱之间的距离之前使用模糊权重函数对色谱进行加权。通过色谱间的曼哈顿距离(各元素间差异的绝对值求和),最终生成一个在0~1000之间的表示差异度的值。下图显示了上述色彩比较过程,其中0表示色谱之间没有相似性,而1000分表示完美匹配。
综上所述,色彩匹配实际上就是比较图像或图像区域的色谱与模板图像的色谱是否相同或相近的过程。在学习阶段,机器视觉系统会提取指定模板图像或选择图像的色谱,其中图像的颜色信息可以由一种或多种颜色组成。色谱提取过程可将图像中的三维颜色信息量化表示为一维色谱。在颜色匹配阶段,机器视觉系统会提取待测图像中的色谱,并与学习到的模板色谱进行比较,最后计算色谱的匹配度。
Nl Vision使用位于LabVIEW的视觉与运动→lmage Processing→Color Processing函数选板中的IMAQ Color Learn和IMAQ ColorMatch函数分别封装了上述色彩学习和匹配过程。基于得到的色谱及其匹配度数据,机器视觉系统可设置阈值来实现颜色识别、颜色检测、颜色定位以及其他基于色彩比较的应用程序,如下图所示:
函数说明及使用可参见帮助手册:
1、颜色识别
颜色识别(Color ldentification)是指从预先定义的模板图像色彩中搜寻与待测图像颜色能最佳匹配者,以确定待测图像颜色的归属。
颜色识别应用一般会预先学习各种模板图像的颜色,并将其连同图像标签保存至数据库中。通过将被测图像的颜色信息与数据库中的记录进行比较,获取与其最接近的记录,并返回对应的图像标签。
通过一个一个颜色识别的实例程序了解其使用方法,程序设计思路如下所示:
- 程序总体分为模板图像颜色学习和颜色匹配两部分,一开始先用For循环将存放在文件夹中的6幅模板图像逐读入内存,并用IMAQ ColorLearn提取各图像的色谱,以供后续匹配过程进行比较;
- 随后,程序将待测图像UUT.jpg读入内存,并由For循环中的IMAQ ColorMatch计算其色谱,并与之前由IMAQ ColorLearn学习到的6个色谱逐一进行比较,以确定与之匹配的图像;
- 由于IMAQ ColorMatch可对同一ROl中的多个轮廓进行颜色匹配,因此其返回的匹配标记(Flag)和匹配度分值(Score)均为数组,其元素的值与ROI中轮廓的顺序对应;
- 对于整幅图像匹配来说,相当于只有一个ROl和一个轮廓,因此仅取首个元素的值即可。由于程序设置了匹配度的阈值为800,因此从运行结果可以看到,被测图像的颜色与第5幅模板图像的颜色最匹配。
程序实现如下所示:
程序效果如下所示:
程序资源下载请参见:https://download.csdn.net/download/m0_38106923/20712053
2、颜色检验
颜色检测(Color Inspection)是指通过检查产品颜色是否与预知色彩相同来实现产品的缺陷检测。如检测产品是否缺少或有放错的彩色部件,搜索彩色部件以及进行彩色标签的缺陷检测等。
通过颜色检测来检查汽车保险丝安装情况的实例,了解其使用方法,程序设计思路如下所示:
- 程序一开始先读取黄色保险丝模板图像,并用IMAQ ColorLearn学习模板图像的色谱;
- 此后,While循环逐个将待测图像文件夹中的图像读入内存,并调用IMAQ ColorMatch进行颜色匹配;
- 由于指定的ROI中包含两个对应于待测保险丝位置的矩形轮廓,因此IMAQ ColorMatch返回的匹配标志和匹配分值数组中的前两个元素有效,分别按顺序对应于对ROI中的两个轮廓位置的检测结果;
- 根据返回的匹配标志的值是否为真,可以清楚获知每个位置上的保险丝是否被正确安装。只有当两个位置上的保险丝均被正确安装时,整个测试才能通过。
程序实现如下所示:
程序能检查第二行的第二和第三个位置是否正确安装了型号为20的黄色保险丝。下面效果还显示了检测到ROI第一个轮廓对应位置未安装保险丝的情况。同样,当这两个位置安装的保险丝为其他类型时,测试也不能通过。
程序资源下载请参见:https://download.csdn.net/download/m0_38106923/20713069