文/張黎翔 白云
通俗的講,機器的智能化有兩個目的,一是對人類的機能做出仿生學功能,二是延伸強化人類的機能從而提高某方面的能力。視覺對于人是至關重要的,而機器視覺也是人工智能的重要環節。機器視覺包含了圖像傳感器技術、計算機相關技術、視覺與圖像相關技術、神經網絡等,而模式識別又是機器視覺中重要且基礎的環節。實現其功能的過程中涉及各種優勢互補的編程語言,這為應用工程師帶來了不小的挑戰。LabVIEW是美國National Instruments團隊研發的一款基于子模塊和數據流的編程語言。該軟件功能強且靈活,利用它只需要相關數據采集器和PC便可輕松組建自定義化儀器,它被廣泛應用于工業制造、高校教育和實驗室研究。其特點如下:
(1)采取簡單、可視的模塊化編程,使程序的編寫類似于流程圖的構建;
(2)該軟件自帶豐富的庫函數并且不斷擴充,其中包含采集數據、分析數據及自動化控制等,使工程師能夠快速完成自己硬件系統的構建;
(3)提供許多便捷可靠的調試檢驗功能,使程序的調試與檢驗更加便捷;
(4)NI平臺不斷提供豐富的庫函數資源,使其始終走在各個行業的前沿。
模式(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所示。
模式學習相當于提取目標數列,將其保存在庫中,根據目標數列開始整圖尋找相關目標進而標出并統計。
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所示。
如圖7所示,從結果我們可以看出攝像頭實時捕捉畫片,當圈中一個藍色可樂易拉罐,程序會自動找出圖中所有匹配結果并用紅色框標出。
通過大量實驗測試,基于LabVIEW的圖像顏色模式識別有很高的匹配效率,其強大的編程效率可以讓開發人員專注于算法本身。而模式識別在工業領域有非常豐富的應用,比如檢測器件狀態,快速統計,次品剔除等。