謝成亮,王鴻亮,何薇薇,趙 杰,王 帥
1(中國科學(xué)院 沈陽計算技術(shù)研究所,沈陽 110168)
2(中國科學(xué)院大學(xué) 計算機與控制學(xué)院,北京 101408)
3(陸軍炮兵防空兵學(xué)院 士官學(xué)校,沈陽 110161)
4(山東省科學(xué)院 情報研究所,濟南 250014)
隨著計算機視覺技術(shù)的飛速發(fā)展,工業(yè)領(lǐng)域?qū)哂凶R別功能的視覺識別系統(tǒng)的需求不斷增加.圖像檢索技術(shù)作為視覺識別系統(tǒng)的核心技術(shù),近年來成為了人們研究的熱點.
在印刷品分揀的過程中,傳統(tǒng)的方法是工人根據(jù)印刷品的內(nèi)容進行分揀,但這樣會消耗大量的人力資源;而需要識別的印刷品80%左右是相同的,即僅需根據(jù)印刷品20%左右的內(nèi)容對印刷品進行分揀,可以采用圖像檢索技術(shù)實現(xiàn)印刷品的分揀.為了減少人力成本的投入,同時提高印刷品分揀的效率,需要實現(xiàn)一種用于印刷品自動分揀的視覺識別系統(tǒng).
基于內(nèi)容的圖像檢索方法所需提取的特征主要包括兩種: 深層特征和淺層特征.深層特征主要是通過神經(jīng)網(wǎng)絡(luò)和全鏈接層提取,對于一類物體具有廣泛的代表性,但是對設(shè)備的要求高.淺層特征是基于領(lǐng)域知識通過固定的算法提取特征[1],適用于對精準特定目標的識別,硬件上相對容易實現(xiàn).對于圖像相似度判斷,可采用PSNR峰值信噪比方法[2],一種全參考的圖像質(zhì)量評價指標,其感知結(jié)果會受到許多因素的影響而產(chǎn)生變化;直方圖方法[3],將圖像轉(zhuǎn)換成直方圖進行比較,會受到亮度光照條件的影響;SIFT方法,提取圖像的局部特征,其對旋轉(zhuǎn),尺度縮放,亮度變化保持不變性,對視角變化,仿射變化,噪聲也保持一定的穩(wěn)定性.
考慮到系統(tǒng)對識別穩(wěn)定性的要求和成本問題,針對淺層特征,采用基于SIFT算法的識別技術(shù),設(shè)計和實現(xiàn)了應(yīng)用于印刷品分揀的視覺識別系統(tǒng).下面,將會從系統(tǒng)架構(gòu),關(guān)鍵算法和功能實現(xiàn)等方面進行介紹.
該系統(tǒng)主要由工業(yè)攝像頭,工控主機,顯示設(shè)備和執(zhí)行設(shè)備組成.系統(tǒng)架構(gòu)框圖如圖1所示.工業(yè)攝像頭主要用來采集印刷品圖像,并傳入到工控主機中進行處理;工控主機是整個系統(tǒng)的處理核心,主要實現(xiàn)了兩個功能,樣本的檢測識別和在線學(xué)習(xí).針對樣本檢測,工控主機對從攝像頭輸入的視頻,按幀提取圖像并做大小和灰度處理,然后提取圖像特征與存儲的樣本進行匹配,最后將識別結(jié)果和處理信息分別傳入到顯示設(shè)備和執(zhí)行設(shè)備;針對在線學(xué)習(xí),工控主機讀取輸入樣本和樣本描述信息,然后對樣本圖進行特征提取,最后存儲到系統(tǒng)的樣本數(shù)據(jù)庫中.顯示設(shè)備主要用來進行人機交互.執(zhí)行設(shè)備就是根據(jù)工控主機傳出的信息對相應(yīng)的印刷品進行操作.
針對印刷品識別過程中容易出現(xiàn)亮度變化,印刷品旋轉(zhuǎn)和尺度縮放等問題,本系統(tǒng)選擇了SIFT算法作為本系統(tǒng)的核心算法.SIFT算法由David Lowe在1999年提出,在2004年加以完善[4,5].下面,將介紹一下本系統(tǒng)的關(guān)鍵算法.
SIFT特征匹配主要包括兩部分: 第一部分是SIFT特征的提取和描述特征的特征向量的生成;第二部分是SIFT特征向量的匹配.
圖1 系統(tǒng)架構(gòu)框圖
特征提取與描述特征向量的生成一般包括以下幾步:
1)構(gòu)建尺度空間,檢測極值點,獲取尺度不變性.SIFT算法是在不同的尺度空間上查找關(guān)鍵點,而尺度空間的獲取需要使用高斯模糊來實現(xiàn),Lindeberg[6]等人已證明高斯卷積核是實現(xiàn)尺度變換的唯一變換核,并且是唯一的線性核.尺度空間理論的基本思想是在圖像信息處理模型中引入一個被視為尺度的參數(shù),通過連續(xù)變化尺度參數(shù)獲得多尺度下的尺度空間表示序列,對這些序列進行尺度空間主輪廓的提取,并以該主輪廓作為一種特征向量,實現(xiàn)邊緣,角點檢測和不同分辨率上的特征提取等.尺度空間可表示為:
其中,*表示卷積運算,
其中,m,n表示高斯模板的維度(由(6σ+1)×(6σ+1)確定),(x,y)代表圖像的像素位置.σ是尺度空間因子,值越小表示圖像被平滑的越少,相應(yīng)的尺度也就越小.大尺度對應(yīng)于圖像的概貌特征,小尺度對應(yīng)于圖像的細節(jié)特征.尺度空間在實現(xiàn)時使用高斯金字塔表示,高斯金字塔的構(gòu)建分兩部分: 首先,對圖像做不同尺度的高斯模糊;其次,對圖像做降采樣(隔點采樣).Lowe[4]使用高效的高斯差分算子代替拉普拉斯算子進行極值檢測,如下:
在實際計算時,使用高斯金字塔每組中相鄰上下兩層圖像相減得到高斯差分圖像.在空間極值點檢測(關(guān)鍵點的初步探查)中,關(guān)鍵點是由DOG空間的局部極值點組成的,關(guān)鍵點的初步探查是通過同一組內(nèi)各DOG相鄰兩層圖像之間比較完成的.
2)特征點過濾并精確定位.通過擬合三位二次函數(shù)來精確確定關(guān)鍵點的位置和尺度,同時去除低對比度的關(guān)鍵點和不穩(wěn)定的邊緣響應(yīng)點,以增強匹配穩(wěn)定性,提高抗噪能力.
3)為特征點分配方向值.為使描述符具有旋轉(zhuǎn)不變性,需要利用圖像的局部特征為每一個關(guān)鍵點分配一個基準方向.使用圖像梯度的方法求取局部結(jié)構(gòu)的穩(wěn)定方向.對于在DOG金字塔中檢測出的關(guān)鍵點,采集其所在高斯金字塔圖像3σ鄰域窗口內(nèi)像素的梯度和方向分布特征.梯度的模值和方向如下:
其中,L為關(guān)鍵點所在的尺度空間值,梯度的模值m(x,y)按σ=1.5σ_oct的高斯分布加成,按尺度采樣的3 σ原則,鄰域窗口的半徑為3 ×1.5σ_oct.在完成關(guān)鍵點的梯度計算后,使用直方圖統(tǒng)計鄰域內(nèi)像素的梯度和方向,方向直方圖的峰值則代表了該特征點處鄰域梯度的方向,以直方圖中最大值作為該關(guān)鍵點的主方向.為增強匹配的魯棒性,只保留峰值大于主方向峰值80%的方向作為該關(guān)鍵點的輔方向.因此,對于同一梯度值的多個峰值的關(guān)鍵點位置,在相同位置和尺度將會有多個關(guān)鍵點被創(chuàng)建但方向不同.僅有15%的關(guān)鍵點被賦予多個方向,但可以明顯提高關(guān)鍵點匹配的穩(wěn)定性.
4)生成特征描述子,通過以上操作,對于每一個關(guān)鍵點,擁有三個信息: 位置,尺度以及方向.接下來就是為每個關(guān)鍵點建立一個描述符,用一組向量將這個關(guān)鍵點描述出來,使其不隨各種變化而變化,比如光照變化,視角變化等.這個描述子不但包括關(guān)鍵點,也包括關(guān)鍵點周圍對其貢獻的的像素點,并且描述符應(yīng)該有較高的獨特性,以便于提高特征點正確匹配的概率[7-9].
當(dāng)圖像的SIFT特征向量生成以后,就可以采用關(guān)鍵點特征向量的歐式距離來作為圖像中關(guān)鍵點的相似性判定度量.取一張圖像的某個關(guān)鍵點,通過遍歷找到另一種圖像中的距離最近的兩個關(guān)鍵點.在這兩個關(guān)鍵點中,如果最近距離除以次近距離小于某個閾值,則判定為一對匹配點.
為了進一步提高匹配精度,我們需要對特征匹配過程中產(chǎn)生的一些誤匹配進行消除.消除誤匹配主要采用隨機樣本一致性(RANSAC)方法.RANSAC可以從一組包含”局外點”的數(shù)據(jù)中,通過迭代的方式訓(xùn)練最優(yōu)的參數(shù)模型,不符合最優(yōu)參數(shù)模型的被定義為”局外點”.消除誤匹配的原理是采用RANSAC算法尋找一個最佳單應(yīng)矩陣H,矩陣大小是3 ×3.RANSAC的目的是找到最優(yōu)參數(shù)矩陣使得滿足該矩陣的數(shù)據(jù)點個數(shù)最多,通常令h33=1來歸一化矩陣.RANSAC算法從匹配數(shù)據(jù)集中隨機抽出4個樣本并保證這4個樣本之間不共線,計算出單應(yīng)性矩陣,然后利用這個模型測試所有數(shù)據(jù),并計算滿足這個模型數(shù)據(jù)點的個數(shù)與投影誤差(即代價函數(shù)),若此模型為最優(yōu)模型,則對應(yīng)的代價函數(shù)最小.RANSAC消除誤匹配點可分為三部分: 根據(jù)matches將特征點對齊,將坐標轉(zhuǎn)換為float類型;使用求基礎(chǔ)矩陣的方法findFundamentalMat()得到RansacStatus;最后,根據(jù)RansacStatus來刪除誤匹配點,即對應(yīng)RansacStatus的值為0的點[10-13].
本系統(tǒng)主要實現(xiàn)了兩個功能,對攝像頭獲取的印刷品圖像進行檢測識別和在線增加系統(tǒng)識別種類的學(xué)習(xí)功能.實現(xiàn)檢測識別功能的兩個關(guān)鍵步驟是小型樣本圖像數(shù)據(jù)庫的建立和對輸入圖像進行實時檢測.
對輸入圖像的檢測,一般的方法是,在系統(tǒng)運行過程中,對輸入圖像和選取的樣本圖像進行特征提取,然后采用遍歷的方式,將輸入圖像和樣本依次進行相似度檢測,判斷輸入圖像屬于哪個樣本圖像代表的類型,最后依據(jù)檢測的結(jié)果輸出結(jié)論,如圖2(a)所示.但是,在系統(tǒng)實際運行時,如果系統(tǒng)同時對輸入圖像和樣本圖像進行特征提取,再進行相似度檢測,會產(chǎn)生非常大的運算量,對系統(tǒng)實時性產(chǎn)生很大的影響.為了提升系統(tǒng)執(zhí)行的速度,我們可以做出優(yōu)化的地方有兩點,第一是減少系統(tǒng)在特征提取時的運算量;第二是減少系統(tǒng)在進行相似度檢測時輸入圖像和樣本圖像比較的次數(shù).針對第二點,樣本圖像是以集合的形式存儲,不存在順序性,所以在進行圖像相似度檢測時只能采用循環(huán)遍歷的形式.針對第一點,樣本圖像是事先提供的,具有相對的不變性.因此,可以提前對要進行檢測的圖像樣本提取特征,然后保存下來,如圖2(b)所示.當(dāng)系統(tǒng)運行需要用到樣本特征進行相似度檢測時,在讀取到內(nèi)存,同提取的輸入圖像的特征進行檢測.由于提前提取了樣本圖像的特征,在進行樣本和輸入圖像相似度檢測時,只需要提取輸入圖像的特征和已提取特征的樣本進行相似度比較,從而避免了對樣本特征的重復(fù)提取,大大減少了CPU的運算量,給系統(tǒng)的實時性帶來了很大的提升.
圖2 識別流程圖
為了存儲提前提取的樣本圖像的特征和描述信息,需要建立一個小型的樣本數(shù)據(jù)庫.由于針對的樣本類型有限,因此可以不用選擇使用已有的數(shù)據(jù)庫,只需自己實現(xiàn)一個具有存儲數(shù)據(jù)功能的小型數(shù)據(jù)庫即可.在創(chuàng)建小型數(shù)據(jù)庫中需要存儲的信息主要包括: 樣本圖像,樣本圖像特征,樣本圖像特征描述以及對樣本信息的描述.對于樣本信息對應(yīng)問題的解決方法是,以文件名為紐帶將每個樣本的圖像,特征,特征描述以及樣本信息關(guān)聯(lián)起來.小型數(shù)據(jù)庫建立主要包括兩步,1)在系統(tǒng)中創(chuàng)建一個文件夾,命名為sampledb,作為本數(shù)據(jù)庫的根文件.然后在該文件下分別創(chuàng)建四個文件夾,用來存儲樣本的各個信息,并根據(jù)所存的信息為文件命名.2)根據(jù)提供的樣本圖像,分別對它們提取特征,特征描述并生成樣本的描述信息,存儲在相應(yīng)的文件夾下.圖像特征和特征描述采用xml文件存儲,實現(xiàn)xml文件的讀和寫采用的是OpenCV提供的兩個方法:
FileStorage fs("name.xml",FileStorage::READ);
FileStorage fs("name.xml",FileStorage::WRITE);
樣本信息采用txt文件存儲.接著將這些信息統(tǒng)一命名,然后存儲在各自對應(yīng)的文件夾下.當(dāng)系統(tǒng)需要獲取相應(yīng)的樣本圖像信息時,只要在系統(tǒng)中寫定相應(yīng)的路徑,然后遍歷獲取對應(yīng)文件名的文件,讀取該文件中的信息即可.最后,需要在根文件夾下創(chuàng)建一個txt文件,用于存儲數(shù)據(jù)庫中的樣本的總體信息,該信息主要用于實現(xiàn)本系統(tǒng)的在線學(xué)習(xí)功能.
在系統(tǒng)開始執(zhí)行后,從數(shù)據(jù)庫中將每個樣本的特征信息都入到內(nèi)存中.接著從攝像頭輸入的視頻中按照一定的時間間隔獲取視頻的幀,保存到Mat類型的變量中,對獲取的圖像進行大小和灰度處理,使輸入的圖像成為固定大小的灰度圖像,調(diào)用SIFT算法提取圖像特征并生成圖像特征描述.接著利用獲取的輸入圖像的特征及描述與讀入的樣本分別進行相似度檢測,判斷獲取的圖像與哪一類的樣本相匹配.相似度檢測的實現(xiàn),在判斷兩種圖像是否匹配時,首先以輸入圖像的特征描述為基礎(chǔ)與樣本圖像的特征相匹配,接著進行消除誤匹配的操作,得到消除誤匹配后兩張圖像的特征點的個數(shù),通過驗證當(dāng)特征點匹配的個數(shù)大于樣本圖像的特征點的個數(shù)的40%時,便可以判斷兩種圖像是匹配的.針對特殊情況,當(dāng)出現(xiàn)多個滿足上述驗證過程的樣本時,根據(jù)消除誤匹配后特征點依舊匹配的個數(shù)進行排序,選取個數(shù)最大的樣本匹配.如果依舊無法判斷,那么視這種情況為輸入圖像沒有匹配的樣本.現(xiàn)在,便完成了輸入圖像類型的判斷,然后從樣本數(shù)據(jù)庫中調(diào)出相應(yīng)的樣本信息提交給系統(tǒng)即可.如此,便實現(xiàn)了系統(tǒng)進行檢測識別的功能.
對于本系統(tǒng)實現(xiàn)的在線學(xué)習(xí)功能,首先要與機器學(xué)習(xí)中的學(xué)習(xí)做出區(qū)別.在機器學(xué)習(xí)中,學(xué)習(xí)的含義是從數(shù)據(jù)中學(xué)得模型的過程,這個過程通常執(zhí)行某個學(xué)習(xí)算法來完成,學(xué)習(xí)過程就是為了找出或逼近關(guān)于數(shù)據(jù)的某種潛在的規(guī)律[14].在本系統(tǒng)中,學(xué)習(xí)的含義是可以向系統(tǒng)中添加新的樣本圖像,使得系統(tǒng)具備識別與輸入樣本圖像相匹配的圖像的功能.本系統(tǒng)實現(xiàn)的學(xué)習(xí)功能本質(zhì)上是,設(shè)計出一個人機交互的界面,通過此界面操作者可以向系統(tǒng)的樣本數(shù)據(jù)庫中添加新的樣本,使得系統(tǒng)增加識別的類型.
系統(tǒng)學(xué)習(xí)功能的實現(xiàn),是通過在系統(tǒng)主界面上添加一部分,在該部分上可以選擇需要加入的樣本圖像和添加對樣本信息的描述,操作人員可以通過該部分添加新的樣本和其信息的描述,確認后系統(tǒng)可以自動調(diào)用SIFT算法對樣本圖像進行特征提取,然后存儲到樣本數(shù)據(jù)庫中,文件命名的方式則是根據(jù)數(shù)據(jù)庫根文件夾下存放的樣本的整體信息文件確定,從而使樣本具有唯一性.如此,系統(tǒng)便實現(xiàn)了在線學(xué)習(xí)的功能.
本系統(tǒng)硬件包括: 工業(yè)攝像頭、工控主機和顯示設(shè)備,如圖3所示.在軟件方面,工控主機安裝的是windows系統(tǒng).本系統(tǒng)采用的開發(fā)環(huán)境是vs2010+MFC+openCV,系統(tǒng)開發(fā)完成后直接發(fā)布到工控主機上.
圖3 實驗階段系統(tǒng)的硬件圖
本系統(tǒng)主要關(guān)注的實驗數(shù)據(jù)有兩部分: 系統(tǒng)在檢測識別的時間效率和準確率.系統(tǒng)的時間消耗主要體現(xiàn)在輸入圖像的特征提取及描述生成的時間消耗,以及輸入圖像與樣本匹配的時間消耗.通過對上述兩點的改進和優(yōu)化,本系統(tǒng)基本滿足印刷品識別中對系統(tǒng)實時性的要求,具體的實驗數(shù)據(jù)如表1所示.針對檢測識別的準確率,我們通過比較各種圖像相似度比較方法,最終選擇了效果很好的SIFT算法,同時在識別的過程中加入了消除誤匹配方法.通過大量實驗對圖像匹配標準的調(diào)整,本系統(tǒng)對環(huán)境光照變化、輸入圖像的旋轉(zhuǎn)變化的魯棒性基本滿足實驗對環(huán)境和輸入的要求,圖4是系統(tǒng)識別方法在輸入圖像正常、發(fā)生旋轉(zhuǎn)和光照變化情況下的匹配效果.
對于系統(tǒng)在檢測識別的準確率驗證,選取10個樣本,在相同的光照條件、不同的旋轉(zhuǎn)角度下,對多種不同類型的印刷品進行識別驗證.通過大量實驗,得出系統(tǒng)在檢測識別的準確率達到98%,滿足印刷品識別中對準確率的要求.
表1 系統(tǒng)單張輸入圖像檢測識別消耗時間
通過研究與開發(fā),最終實現(xiàn)了本系統(tǒng).系統(tǒng)基于MFC的開發(fā)基本上滿足了與操作人員交互的功能.操作人員可以通過顯示設(shè)備操作整個系統(tǒng)、檢測系統(tǒng)的運行情況以及可以向系統(tǒng)的樣本數(shù)據(jù)庫中添加或刪除所要識別的樣本類型.系統(tǒng)的效果圖如圖5所示.
圖5 系統(tǒng)成果展示
為解決印刷品自動分揀的識別問題,本系統(tǒng)采用SIFT算法,提出并實現(xiàn)了基于XML格式淺層特征保存的在線學(xué)習(xí)和基于線性表檢索的圖像檢測方法.使用OpenCV庫、MFC框架,在VS2010平臺上設(shè)計并實現(xiàn)了對印刷品檢測識別和在線學(xué)習(xí)功能.通過發(fā)布在工控主機上進行實驗驗證,系統(tǒng)實現(xiàn)了對印刷品的實時檢測,并取得了很好的效果.本系統(tǒng)的實現(xiàn)將會在很大程度上節(jié)約人力,提高印刷品分揀的效率.