具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参阅图1,图1是本申请颜色识别方法一实施方式的流程示意图,结合图2至图4,该颜色识别方法包括:
S110:获取待识别图像。
本申请颜色识别方法的执行主体是颜色识别设备,该颜色识别设备可以是手机、电脑、机器人等任何一个具有图像处理能力的设备。
待识别图像可以是颜色识别设备进行拍摄而获得的图像,也可以是颜色识别设备接收到的图像。
在一应用场景中,待识别图像如图2所示。
S120:利用预先训练的目标检测模型定位出待识别图像中包括目标对象的目标区域。
目标检测模型预先训练好,并且达到收敛,其能够准确地定位出待识别图像中包括目标对象的目标区域。例如,如图3所示,目标检测模型能够定位出待识别图像中包括立方体或球体的矩形区域,其中为了保证目标区域内尽量只包括目标对象,该矩形区域的矩形框为立方体或球体的外接矩形。
在一应用场景中,利用实时目标检测网络MobileNetv2-SSDLite对目标检测模型进行训练。当然在其他应用场景中,还可以利用其他神经网络算法对目标检测模型进行训练,在此不做限制。
S130:响应于目标对象的颜色为纯色,提取目标区域内的颜色特征。
在一应用场景中,响应于目标对象的颜色为纯色,可以是响应于目标对象的颜色全部是同一种颜色,也可以是响应于目标对象中某一种颜色占了目标对象的绝大部分面积,例如,响应于目标对象中某一种颜色的面积超过了目标对象面积的50%、60%、80%或90%,为便于理解,在此举出具体实例:目标对象的颜色虽然不全部是蓝色,但是蓝色的面积占目标对象面积的85%,此时我们也认定该目标对象的颜色为纯色。
在一应用场景中,在提取目标区域内的颜色特征时,可先将目标区域内的图像提取出来,此时提取出的图像如图4所示,而后再进行颜色特征的提取;在另一应用场景中,可直接在待识别图像中的目标区域内进行颜色特征的提取,也就是说,在整个图像处理的过程中,不会出现类似图4的图像。
S140:根据提取出的颜色特征确定目标对象的颜色。
在定位出目标区域后,若发现目标区域中目标对象的颜色为纯色,则提取目标区域内的颜色特征,而后根据该颜色特征确定目标对象的颜色。
从上述内容可以看出,本申请利用预先训练并达到收敛的目标检测模型定位出待识别图像中包括目标对象的目标区域,而后判断目标对象的颜色是否为纯色,在判断结果为是时,根据目标区域的颜色特征确定目标对象的颜色,其中由于目标检测模型预先训练好,其能够准确、快速地对目标对象进行定位,因此可以保证整个纯色物体的颜色识别过程既快速,又准确。
在本实施方式中,根据提取出的颜色特征确定目标对象的颜色时,可以将提取到的颜色特征输入预先训练好的分类器中,例如KNN分类器,然后得到目标对象的颜色。
参阅图5,图5是本申请颜色识别方法另一实施方式的流程示意图,该方法包括:
S210:获取待识别图像。
S220:利用预先训练的目标检测模型定位出待识别图像中包括目标对象的目标区域。
S230:对目标区域内的图像进行增强处理,以突出目标对象。
S240:对增强处理后的目标区域内的图像进行滤波处理,以剔除目标区域内目标对象以外的颜色。
S250:对目标区域内的图像进行边缘检测,以得到目标区域内的轮廓数量及各轮廓的面积。
S260:判断目标区域内面积大于面积阈值的轮廓的数量是否不超过数量阈值。
若判断结果为否,则进入步骤S270,否则进入步骤S280。
S270:进一步根据目标区域内的图像的噪声确定目标对象的颜色是否为纯色。
S280:判定目标对象的颜色为纯色,进一步提取目标区域内的颜色特征。
S290:根据提取出的颜色特征确定目标对象的颜色。
其中,步骤S210、S220、S280、S290与上述实施方式中的步骤S110、S120、S130、S140对应相同,在此不再赘述。
与上述实施方式不同的是,为了避免目标区域内目标对象外的边缘背景影响后续颜色特征的提取,在此会在提取颜色特征之前先将目标区域内的边缘背景的颜色去除,具体地,首先对目标区域内的图像进行预处理,具体为增强处理,以扩大目标对象和边缘背景之间的灰度反差,达到突出目标对象的目的,而后采用滤波技术对增强处理后的目标区域内的图像进行滤波处理,剔除目标区域内边缘背景的颜色,具体地,在进行滤波处理时,按照如下标准设置mask:
其中,f(x,y)为滤波处理之前目标区域内的图像,T为设置的阈值,g(x,y)表示只提取像素值大于等于阈值的像素值,对像素值小于阈值的像素值直接剔除。
在剔除目标区域内目标对象以外的颜色之后,得到的图像如图6所示,此时可以看出整个图像中只剩下目标对象。
然后判断目标对象的颜色是否为纯色:采用例如Canny算法对滤波处理后的目标区域内的图像进行边缘检测,然后根据检测到的轮廓判断目标对象的颜色是否为纯色。
可以理解的是,由于滤波处理后的目标区域内的图像包括目标对象,因此在对目标区域内的图像进行边缘检测时,检测到的轮廓必然包括目标对象的轮廓,而除了目标对象的轮廓外,若检测到其他轮廓,则表明目标对象中可能存在两种以上的颜色。
其中,面积阈值和数量阈值预先设定,例如,对于大小为640×480的待识别图像而言,面积阈值可以被预先设定为20pixel、40pixel或者60pixel,数量阈值可以预先设定为2、4或者6。
同时轮廓面积大于面积阈值说明该轮廓对应的颜色的面积超过预定面积,当面积大于面积阈值的轮廓的数量不超过数量阈值时,说明超过预定面积的颜色的数量较少,那此时目标对象必然存在一个占了目标对象绝大部分面积的颜色,进而判定目标对象的颜色为纯色;而当面积大于面积阈值的轮廓的数量超过数量阈值时,说明超过预定面积的颜色的数量较多,此时图像中有可能不存在一个占了绝大部分面积的颜色,但也有可能因为面积超过预定面积的颜色所占的总面积之和较小,而使得依然存在一个占了目标对象绝大部分面积的颜色,此时则需要进一步根据图像的噪声确定目标对象的颜色是否为纯色。
也就是说,在本实施方式中,判定目标对象的颜色为纯色并不是以目标对象的颜色全部是一种颜色为标准,而是以目标对象中是否存在一个占了绝大部分面积的颜色为标准。
在一应用场景中,步骤S270具体包括:
S271:计算目标区域内的图像的噪声占比。
S272:若目标区域内的图像的噪声占比不超过噪声占比阈值,则判定目标对象的颜色为纯色,进一步提取目标区域内的颜色特征。
S273:若目标区域内的图像的噪声占比超过噪声占比阈值,则判定目标对象的颜色为非纯色。
当图像的噪声占比不超过噪声占比阈值时,表明虽然面积超过预定面积的颜色的数量较多,但是依然存在一个面积较大的颜色而导致其他颜色对整个图像构成不了影响,则确定目标对象的颜色为纯色,反之确定目标对象的颜色为非纯色。
在其他应用场景中,还可以根据图像的噪声值判定目标对象的颜色是否为纯色,具体地,当目标区域内的图像的噪声值不超过噪声值阈值时,判定目标对象的颜色为纯色,否则判定目标对象的颜色为非纯色。
在其他实施方式中,在剔除目标区域内目标对象以外的颜色后,还可以采用其他方法判断目标对象的颜色是否为纯色,在此不做限制。
在本实施方式中,考虑到相对于RGB颜色空间,HSV颜色空间能够更加直观地表示颜色的明暗、色调以及鲜艳程度,因此本实施方式基于HSV颜色空间提取颜色特征,具体地,步骤S310具体包括:
S311:对目标区域内的图像进行HSV颜色空间的特征提取,并得到对应的颜色直方图。
S312:根据颜色直方图得到在目标区域内的图像中所占面积最大的颜色特征向量。
S313:将所占面积最大的颜色特征向量作为目标区域内的颜色特征。
如图7所示,颜色直方图描述的是不同颜色在整幅图像中的占比,因此将所占面积最大的颜色特征向量作为目标区域内的颜色特征,在目标区域内的图像含有噪声的情况下,能够将噪声排除在外,保证提取到的颜色特征向量为目标对象的颜色特征向量,保证后续颜色识别的准确性。
同时由于亮度会对颜色识别产生影响,为了进一步保证后续颜色识别的准确性,在得到所占面积最大的颜色特征向量后,还会去除该颜色特征向量中的明度分量,即Value值,也就是说,最后进行颜色识别的向量中只包括色调、饱和度2个分量。当然在其他实施方式中,也可以不去除Value值,此时进行颜色识别的向量中包括色调、饱和度、明度3个分量,在此不做限制。
参阅图8,图8是本申请颜色识别方法另一实施方式中的部分流程示意图。在该实施方式中,颜色识别方法还包括:
S410:若利用预先训练的目标检测模型未能成功定位出待识别图像中包括目标对象的目标区域,则对待识别图像进行裁剪,以获得包括目标对象的至少部分的剪切图像。
S420:响应于目标对象的颜色为纯色,提取剪切图像内的颜色特征。
S430:根据提取出的颜色特征确定目标对象的颜色。
在本实施方式中,考虑到目标检测模型在对目标对象进行定位时存在失误的概率,因此作为备用方案,在目标检测模型定位失误时,直接对待识别图像进行裁剪,如图9所示,在裁剪时,直接对待识别图像的中间区域进行裁剪,从而得到如图10所示的剪切图像,而后根据剪切图像内的颜色特征确定目标对象的颜色。其中,图9中的虚线表示剪切区域。
其中在对待识别图像进行裁剪时,会有以下几种情况发生:第一种,目标对象较大或者在拍摄时距离目标对象较近而导致剪切图像中全部是目标对象的一部分,第二种,目标对象较小或者在拍摄时距离目标对象较远而导致剪切图像中除了目标对象还包括边缘背景,此时这种情况对后续颜色的识别存在干扰。针对该两种情况,参阅图11,在本实施方式中,步骤S420具体包括:
S421:对剪切图像进行边缘检测,以得到剪切图像内的轮廓数量以及各轮廓的面积。
S422:判断剪切图像内的轮廓数量是否为零。
若判断结果为是,则进入步骤S425,若判断结果为否,则进入步骤S423。
S423:判断剪切图像内面积大于面积阈值的轮廓数量是否不超过数量阈值。
若判断结果为是,则进入步骤S425,若判断结果为否,则进入步骤S424。
S424:进一步根据剪切图像的噪声确定目标对象的颜色是否为纯色。
S425:判定目标对象的颜色为纯色。
S426:提取剪切图像内的颜色特征。
当确定剪切图像内的轮廓数量为零时,表明剪切图像内只有一种颜色存在,则确定目标对象的颜色为纯色。
与上述实施方式类似,当剪切图像内面积大于面积阈值的轮廓数量不超过数量阈值时,表明虽然剪切图像中可能存在两种以上不同的颜色,但是因为超过预定面积的颜色的数量较少,导致必然存在一个占了剪切图像绝大部分面积的颜色,则判定目标对象的颜色为纯色;而当面积大于面积阈值的轮廓的数量超过数量阈值时,说明超过预定面积的颜色的数量较多,此时图像中有可能存在一个占了绝大部分面积的颜色,也有可能不存在,则需要进一步根据图像的噪声确定目标对象的颜色是否为纯色。
在一应用场景中,步骤S424具体包括:
S4241:计算剪切图像的噪声占比。
S4242:若剪切图像的噪声占比不超过噪声占比阈值,则判定目标对象的颜色为纯色,进一步提取剪切图像内的颜色特征。
S4243:若剪切图像的噪声占比超过噪声占比阈值,则判定目标对象的颜色为非纯色。
步骤S424与上述实施方式中的步骤S270相类似,具体可参见上述实施方式,在此不再赘述。
其中在本实施方式中,虽然当剪切图像内面积大于面积阈值的轮廓数量不超过数量阈值时,判定目标对象的颜色为纯色,但是通过上述分析可知,此时剪切图像中也有可能存在一定数量其他的颜色,此时为了避免存在的其他面积较小的颜色对后续颜色提取存在影响,在一应用场景中,当剪切图像内面积大于面积阈值的轮廓数量不超过数量阈值时,还会进一步判定剪切图像内面积大于面积阈值的轮廓数量是否为零。
具体地,当剪切图像内面积大于面积阈值的轮廓数量为零时,说明存在的其他颜色总和面积非常少,对后续颜色的提取影响不大,此时直接提取剪切图像内的颜色特征,当剪切图像内面积大于面积阈值的轮廓数量不为零但也不超过数量阈值时,说明此时存在的其他颜色可能会影响后续颜色的提取,则对剪切图像进行再次裁剪,而后提取再次裁剪后的剪切图像内的颜色特征,其中对剪切图像进行再次裁剪的方式与上述裁剪的方法相同,在此不再赘述。
其中提取剪切图像内的颜色特征与上述实施方式中提取目标区域内的图像的颜色特征的方法相同,且确定颜色的方法也与上述实施方式相同,详情可参见上述实施方式,在此不再赘述。
参阅图13,图13是本申请颜色识别设备一实施方式的结构示意图,该颜色识别设备200包括处理器210、存储器220以及通信电路230,处理器210分别耦接存储器220以及通信电路230,处理器210通过执行存储器220内的程序指令以实现上述任一项实施方式方法中的步骤,详细的方法可参见上述相关内容,在此不在赘述。
其中,颜色识别设备200可以是手机、电脑、机器人等任何一个具有图像处理功能的设备,在此不做限制。
参阅图14,图14是本申请计算机可读存储介质一实施方式的结构示意图,该计算机可读存储介质300存储有程序指令310,程序指令310能够被处理器执行以实现上述任一项实施方式方法中的步骤。
计算机可读存储介质300可以是服务端、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种装置。
总而言之,本申请利用预先训练并达到收敛的目标检测模型定位出待识别图像中包括目标对象的目标区域,而后判断目标对象的颜色是否为纯色,在判断结果为是时,根据目标区域的颜色特征确定目标对象的颜色,其中由于目标检测模型预先训练好,其能够准确、快速地对目标对象进行定位,因此可以保证整个纯色物体的颜色识别过程既快速,又准确。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。