基于目标颜色的彩色图像分割常包括色彩阈值处理(Color Threshold)和色彩分割(Color Segmentation)两种方法。
色彩阈值处理可以对图像在色彩空间中的3个分量分别进行阈值处理,并返回一个8位的二值图像。色彩分割则通过对比图像中各像素的色彩特征与其周围像素的色彩特征,或对比其与经训练得到的色彩分类器信息,将图像按色彩分割成不同的标记区域。
色彩阈值处理常用于从图像中分割仅有一种颜色的目标,色彩分割则常用于从杂乱的背景中标记出具有多种颜色的目标,并对其进行机器视觉检测或计数。
色彩分割过程主要包括色彩分类器训练、色彩区域分割和分割区域后处理3个阶段。
1、基于色彩样本进行色彩分类器训练;
2、确定检测窗口大小(行列大小一般为奇数),在待测图像上按设定的步长移动该窗口,计算检测窗口所覆盖区域的色彩特征,并将该值作为窗口中心像素(Pivot Pixel)的色彩特征值;
3、计算检测窗口所覆盖区域和与其相邻的几个窗口所覆盖区域的色彩特征距离,并选取特征距离最短的窗口进行以下处理:
若最短特征距离小于预先设定的最大距离(Maximum Distance)阈值参数,就将该窗口中心像素的类别标签赋值给检测窗口的中心像素。
否则,基于色彩分类器对检测窗口区域进行分类。若分类的识别可信度分值(ldentificationScore)大于预先设定的最小识别可信度分值(Minimum ldentification Score)阈值参数,就使用分类得到的类别标签对检测窗口中心像素进行标记,否则不对中心像素进行标记。
4、按照预先设定的尺寸参数,滤除不符合尺寸要求的区域,即可得到对各颜色区域的标记图像(可以为8位、16位无符号类型或16位整型)。
整个过程按照下述流程执行:
上述过程中使用的最大距离阈值参数Dmax由训练得到的色彩分类器信息确定。它是指可以被接受的相同类标签窗口中心像素色彩特征间距的最大值,可通过下式计算:
最大距离阈值参数越大,意味着允许使用相邻窗口的颜色类别标签的像素越多。这可避免频繁使用色彩分类器,并提高色彩分割的速度。但是,提高该参数值却会牺牲色彩分割的准确性。
在实际应用中,常使用该参数的保守(Conservative)或激进(Aggressive)值。保守值将两个距离最接近的训练类别的间距定义为各类中样本间距的最小值,激进值则将两个距离最近的训练类别的间距定义为各类中样本间距的中间值。
此外,也可以通过为检测窗口的移动设定步长或降低色彩特征的分辨率来提高色彩分割过程的整体速度。相对于逐像素在图像中移动检测窗口,以一定步长在图像中移动检测窗口的计算量会极大地减少。采用较低分辨率的色彩特征,也会减少计算量,提高色彩分割过程的实时性。
NI Vision提供了封装色彩分割过程的函数IMAQ Color Segmentation Supervised和IMAQ Get Color Segmentation Distance,它们位于LabVIEW的视觉与运动→lmage Processing→Color Processing函数选板中,如如图所示:
其中IMAQ Color Segmentation Supervised用于实现色彩分割过程,IMAQ Get ColorSegmentation Distance则用于基于色彩分类器计算色彩分割过程要用到的最大距离阈值参数Dmax。
函数的说明和使用可参见帮助文档:
通过一个色彩分割的实例:根据饼干不同部分颜色的区别,分割出巧克力、烘焙程度较好和欠烘焙的区域,了解其使用方法,程序设计思路如下所示:
程序一开始先从色彩分类器文件Cookie.clf中读取训练得到的颜色类别等信息,并返回颜色分类器会话;
随后调用IMAQ Get Color Segmentation Distance基于分类器会话计算可以被接受的相同类标签窗口中心像素色彩特征间距的最大值Dmax,并由IMAQ Color Segmentation Supervised完成色彩分割;
分割过程采用大小为15×15的检测窗口、10个像素大小的步长,并规定区域不能小于10个像素(最大为整个图像);
为了增强色彩分割过程输出的标记图像显示效果,程序还为不同颜色类别指定了标记灰度值。
程序实现如下所示:
分割过程结束后,For循环统计所有符合要求的区域的灰度标记值,然后调用IMAQLabelToROI将这些标记区域转换为ROI,并由IMAQ Group ROls将得到的ROl组合后交由IMAQ Overlay ROI以图层的方式显示在原图像中。
观察下图显示的程序运行结果,可以发现,饼干中的巧克力、烘焙程度较好和欠烘焙的区域已经被用不同的灰度值在输出的图像中进行了标记。不难想到,对标记图像进行阈值化处理和颗粒分析,即可得到各种类型区域占整个饼干的比例。而基于此比例值,就能判断生产线上饼干的质量是否合格。
上述实例中所使用的色彩分类器文件Cookie.clf可事先由NI色彩分类训练器对饼干中不同部分的色彩进行训练得到,可参见博文:LabVIEW色彩分类识别。