APP下载

基于LabVIEW的色彩匹配应用

2018-07-16张黎翔白云

电子技术与软件工程 2018年10期
关键词:模式匹配模式识别直方图

文/张黎翔 白云

通俗的讲,机器的智能化有两个目的,一是对人类的机能做出仿生学功能,二是延伸强化人类的机能从而提高某方面的能力。视觉对于人是至关重要的,而机器视觉也是人工智能的重要环节。机器视觉包含了图像传感器技术、计算机相关技术、视觉与图像相关技术、神经网络等,而模式识别又是机器视觉中重要且基础的环节。实现其功能的过程中涉及各种优势互补的编程语言,这为应用工程师带来了不小的挑战。LabVIEW是美国National Instruments团队研发的一款基于子模块和数据流的编程语言。该软件功能强且灵活,利用它只需要相关数据采集器和PC便可轻松组建自定义化仪器,它被广泛应用于工业制造、高校教育和实验室研究。其特点如下:

(1)采取简单、可视的模块化编程,使程序的编写类似于流程图的构建;

(2)该软件自带丰富的库函数并且不断扩充,其中包含采集数据、分析数据及自动化控制等,使工程师能够快速完成自己硬件系统的构建;

(3)提供许多便捷可靠的调试检验功能,使程序的调试与检验更加便捷;

(4)NI平台不断提供丰富的库函数资源,使其始终走在各个行业的前沿。

1 算法介绍

模式(schema)表示的是部分元素按照标准规则组成的一类集,它是指元素的组成结构以及规则。映射(mapping)是两个模式中元素间的对应规则,表示模式A中某些元素与模式B中某些元素的对应规则。一个映射关系包含两个部分:映射的元素和元素之间的关系的描述。根据Euzenat的理论,映射 M 应由五部分组成, 这里eid 表示一个符号来唯一表示该映射元素;e 和 e’是两个对应模式中的子元素,它可以是特性、表、类等;c 表示一个数学置信度用来反映 e 和 e’的对应程度;R则是 e 和 e’之间所对应关系(如相等、相交、泛化等)。

图1:KMP匹配过程

图2:颜色模式识别流程图

图3:颜色模式学习函数

图4:颜色模式匹配函数

图5:颜色模式学习过程

通常情况下我们首先想到的是单纯的匹配方法,其思想是假设给定两个字符串:甲为主数列M[m0m1...mn-2mn-1]其长度为N,乙为匹配数列X[x0x1...xx-2xx-1]其长度为x。为了判定甲中是否有乙,即乙是甲的子集,首先将甲乙首字母对其即m0对应x0,依次对照各个元素,判断甲乙是否相等。如果相等则匹配成功一次,否则乙的首元素对齐甲的第二x0重复上述过程。

图6:颜色模式匹配过程

图7:前面板及结果

此种算法的优点在于简单易行,代码量小容易实现,但是显而易见其运算量很大,主串移动次数为n-x,匹配串最多移动x-1,其复杂度为O(n*x)。通过观察不难发现这种算法之所以运算量大是因为其存在重复匹配过程。为了解决这一问题下面引入kmx算法。

单纯的匹配算法,前一次匹配和后一次匹配是没有关系的,但是我们知道前一次的匹配结果是可以被后一次匹配所利用,改变后一次匹配甲乙数列的初始位置,从而减少匹配次数,降低运算量。

我们比方假设这个一个情况:当前正在匹配的元素是mt+j+1和xj+1,且mt+j+1!=xj+1,这说明mt,mt+1...mt+j与x0,x1...xj相等,此时再另mt+j+1和x0匹配显得多余。假设:

x0,x1...xk=xj-k, xj-k+1...xj那么x0, x1...xk和mt+j-k, mt+j-k+1...mt+j也一定相匹配。那么下一次要进行匹配的两个字符应为xk+1和mt+j+1。进而加速匹配过程。

下面给个图例,假设主串M[ababcabcacbab],匹配X[abcac]。(如图1所示)。

这其中的主要参数k我们不妨规定为k=next[j]。而k只和模式串x有关系,并且要求m个k,k = next[j],因此next中计算量只有一次,这时的时间复杂度和m有线性关系。

用归纳法求next(n):设next(0) = -1,若已知next( j ) = k,欲求得next(j+1)。

(1)如果 xk+1=xj+1,显然next(j+1)=k+1。 如 果 xk+1!=xj+1,则 next(j+1) <next(j),于是寻找 h<k 使得 x0, x1…xh=xj-h, xj-h+1...xj=xk-h, xk-h+1...xk。也就是说h=next(k)。

(2)如果不存这样的h,则x0, x1...xj+1里无前后相对应的子集,因此next(j+1)= -1。

(3)如果存在这样的h,继续检验xh和xj是否相等。直到找到为止。以上介绍的就是KMP匹配算法的过程。我们知道计算机图像是由像素组成,像素即是一种数列,我们可以将上述思想引入图像处理中。

图像的色彩是一副图像的基本组成部分,图像的色彩特征是最常用也是最可靠的特征之一,而把一幅图像中色彩的占比作为一种描述手段是最通常的色彩特征表达方法,色彩直方图体现的是色彩的基本元素强弱的联合概率,Swain和Ballard利用直方图相交度量法,来作为色彩直方图的相似性指标。两个颜色直方图H和I的L1距离为:

为了得到相似但是不同的色彩之间的相似度,Ioka和Niblack采用了L-2度量法,并在QBIC中使用。除了色彩直方图外,其他的一些色彩特征有色彩矩、色彩集。色彩矩假定任何颜色分散均匀可由它的矩来刻画,并且由于绝大多数色彩的采集在低阶矩上,因而只有一阶矩、二阶矩、三阶矩被作为色彩特征表征而被提取出来,加权的欧拉距离则用来计算颜色的相似度。为了可以在大量图像数据中快速的搜索出结果,Smith和Chang等人提出了色彩集的概念,首先把(R,G,B)色彩空间对应到视觉上的统一化空间,比如HSV,然后进行量化对应为M个颜色条。色彩集就被设定为量化后的色彩空间中的色彩的一种选择。然后通过二叉树的构筑,从而可以达到快速搜索的目的。

具体到LabVIEW的数据流过程,颜色模式识别可以由两大部分构成。首先是颜色模式学习的设置以及颜色模式学习,另一个是颜色模式匹配设置和颜色模式识别匹配,如图2所示。

模式学习相当于提取目标数列,将其保存在库中,根据目标数列开始整图寻找相关目标进而标出并统计。

2 软件实现

LabVIEW在视觉与运动处理子面板中提供丰富的机器视觉相关函数供设计者调用。对于本文用到的两个主要相关函数:颜色模式学习函数和颜色模式匹配函数。其调用路径为:函数→视觉与运动→ MachineVision→ Searching and Maching.找到如下函数(如图3所示)。

输入参数(如图4所示)。

(1)Image:指的是在检测图片中颜色匹配模板图片。

(2)Learn Color Pattern Setup Data是一个字符串,其中含有从IMAQ设置学习颜色模式信息的VI。如果不连接,这个输入VI在学习阶段使用默认参数。默认的学习颜色和形状为移位不变模式匹配。

(3)输出参数:1)Template Image Out是在匹配阶段中要搜索的颜色模板的引用。

参数输入:

(1)Image指的是你想匹配的原图。

(2)Template Image Match Color Pattern Setup Data是指在匹配阶段你想要搜索的颜色模板,模板图像是IMAQ是颜色学习VI的输出。

(3)Number of Matches Requested是 指有效匹配数量。

(4)Minimum Match Score是有效的最小匹配分级。匹配的数据范围在0到1000之间。

输出参数:

(1)Matches是一族匹配阵列。

(2)Number of Matches是根据输入设置在检查映像中找到的模板匹配的数量。

我们利用条件接口转换模式学习和模式匹配两个过程,当检测到有鼠标在图像上拉框动作是将条件接口判断为真,函数如图5所示。

当没有检测到有鼠标在图像上拉框动作是将条件接口判断为假,从而进行模式匹配过程,函数如图6所示。

3 实现结果

如图7所示,从结果我们可以看出摄像头实时捕捉画片,当圈中一个蓝色可乐易拉罐,程序会自动找出图中所有匹配结果并用红色框标出。

4 结论

通过大量实验测试,基于LabVIEW的图像颜色模式识别有很高的匹配效率,其强大的编程效率可以让开发人员专注于算法本身。而模式识别在工业领域有非常丰富的应用,比如检测器件状态,快速统计,次品剔除等。

猜你喜欢

模式匹配模式识别直方图
符合差分隐私的流数据统计直方图发布
基于模式匹配的计算机网络入侵防御系统
用直方图控制画面影调
具有间隙约束的模式匹配的研究进展
OIP-IOS运作与定价模式匹配的因素、机理、机制问题
浅谈模式识别在图像识别中的应用
第四届亚洲模式识别会议
基于空间变换和直方图均衡的彩色图像增强方法
基于散列函数的模式匹配算法
基于直方图平移和互补嵌入的可逆水印方案