陳明軍,張麗艷
(南京航空航天大學 機電學院,江蘇 南京 210016)
機器視覺是工程領(lǐng)域中常用的用于缺陷檢測、三維外形測量的有效技術(shù)手段,具有非接觸、便攜、速度快等諸多優(yōu)點,現(xiàn)已經(jīng)被廣泛用于各類工程實踐中。
現(xiàn)有的大多數(shù)視覺測量算法都是以所拍攝目標的圖像具有清晰邊緣和輪廓為基礎(chǔ)的,雖然使用高速相機可以提高相機幀頻進而拍攝到高速運動目標的清晰圖像,但是隨之而來的問題是曝光量不足導致的嚴重圖像噪聲問題。過度的噪聲無疑會大幅降低目標三維外形的測量精度,而在航空航天等領(lǐng)域的一些應用中,需要對高速運動目標的三維形態(tài)進行精確的三維重建。例如,旋翼槳葉是直升機最重要的運動部件之一,在飛行中受到復雜載荷的作用而具有復雜的非周期運動形式和三維變形形態(tài),而槳葉運動中的三維變形形態(tài)與槳葉所受的氣動載荷直接相關(guān),因此測量運動中的槳葉三維外形形態(tài)對于非線性氣彈特性研究、非定常氣動載荷識別具有十分重要的意義[1]。而在基于視覺的測量方法中常用的提高測量精度的手段是在待測目標上布設(shè)人為設(shè)計的主動視覺特征點,使用普通的工業(yè)相機拍攝的高速運動目標圖像通常具有一定程度的運動模糊效應,這種運動模糊效應也是影響三維視覺測量精度的最重要因素。因此,在測量運動目標三維外形形態(tài)研究中首先遇到的問題就是如何準確識別布設(shè)于運動目標上的具有一定程度的運動模糊效應的主動視覺特征點。
SIFT(scale-invariant feature transform)[2]的全稱是尺度不變特征轉(zhuǎn)換,可用于描述圖像的特征。這種描述具有尺度不變性,它常被用于清晰圖像的特征匹配,具有很強的魯棒性。因此,本文提出利用SIFT特征識別布設(shè)于高速運動目標上的視覺特征點。
主動視覺特征的選取直接關(guān)乎后續(xù)特征點能否準確識別并精確重建,為此,本文選取Forbes時,提出了一種編碼圖案(后文簡稱為編碼點)[3]作為本文的待檢測的視覺特征,如圖1(a)所示是編碼點的設(shè)計圖,該圖案的前景圖案為白色,背景圖案是黑色,具有強烈的對比度。因此,可以很方便地設(shè)計算法將該編碼點與實際的測量場景中可能出現(xiàn)的干擾特征區(qū)分開來。在針對清晰的編碼點的解碼問題中,位于前景圖案中心的小圓是待檢測的“目標圓”?!澳繕藞A”的圓心是三維重建過程中待測量的“目標點”,如圖1(b)所示是編碼點的設(shè)計結(jié)構(gòu)示意圖。在“目標圓”的外圍是被等分成15份的環(huán)形區(qū)域,每一份相當于一個二進制位,可根據(jù)對應位的顏色將其編碼,如圖1(c)所示是圖1(a)對應編碼點的編碼布局,其中,白色位為“1”,黑色位為“0”。
圖1 編碼點
在實際的編碼過程中,按順時針排列這十五位二進制,可以看出,如果所選取的起始點不同,編碼點所對應的十五位二進制編碼也不同,也就是說,每個編碼點最多會對應15種不同的二進制編碼。為此將這15種二進制編碼轉(zhuǎn)換為十進制,約定最小的十進制數(shù)對應地二進制編碼為該編碼點的身份編號,因此,圖1(a)所對應的二進制編碼為(000011101100111)2,十進制的身份編號為1895。
SIFT算法是一種檢測局部特征的算法,它不僅具有尺度不變性,即使旋轉(zhuǎn)角度、改變圖像亮度或拍攝視角,甚至對于具有一定程度運動模糊效應的圖像,仍然能夠獲得很好的檢測效果,以下是SIFT算法流程的簡要介紹。
1) 構(gòu)建尺度空間。構(gòu)建尺度空間的目的是模擬圖像的多尺度特征,高速卷積核是實現(xiàn)尺度變換的唯一線性核,所以二維圖像I(x,y)的尺度空間可以用式(1)表示:
L(x,y,σ)=G(x,y,σ)·I(x,y)
(1)
其中,(x,y)是圖像坐標,σ是尺度變量,它的大小決定了圖像平滑的程度,較大的尺度對應圖像的概貌特征,小尺度對應圖像的細節(jié)特征,G(x,y,σ)是尺度可變的高斯函數(shù),它的定義如下:
(2)
為了有效地在尺度空間檢測到穩(wěn)定的關(guān)鍵點,定義高斯差分尺度空間如下:
D(x,y,σ)=L(x,y,miσ)-L(x,y,mjσ)
(3)
其中,D(x,y,σ)是圖像尺度在miσ和mjσ下的高斯差分圖像。i和j表示m的取值索引,根據(jù)索引選取多種m值,求取所有m值下的高斯模糊圖像。將這些圖像集看作是一個子八度(octave),把同一子八度的圖像降采樣即可得到小尺寸的高斯模糊圖像,這些模糊圖像構(gòu)成了一個新的子八度,如此即可構(gòu)成一個高斯圖像金字塔,每個子八度表示金字塔的一層塔,使用公式(3)計算同一層塔中相鄰圖像的差分圖像,即可求得高斯差分圖像金字塔。
2) 檢測尺度空間極值點。在高斯差分圖像金字塔中,除去每層塔的首尾兩張圖像,將其他圖像中的每個采樣點與其相鄰點比較,看是否比它的圖像域和尺度域的相鄰點大或者小,即如果該點在相鄰點中為極值點,則認為該點就是待檢測的特征點。
3) 方向估計。利用特征點鄰域像素的梯度方向分布特性為每個特征點指定一個方向參數(shù),使算子具有旋轉(zhuǎn)不變性。式(4)為計算點(x,y)處的梯度模值m(x,y)和方向θ(x,y)公式:
θ(x,y)=atan2(L(x,y+1)-L(x,y-1),L(x+1,y)-L(x-1,y))
(4)
其中,atan2(x,y)指以坐標原點為起點,指向(x,y)的射線在坐標平面上與x軸正方向之間角的角度。
4) 計算SIFT特征。用公式(4)計算以特征點為中心的16×16鄰域的梯度模值和方向。將該鄰域窗口分為16個4×4的小窗口,按每45°一個柱統(tǒng)計每個小窗口的梯度方向。以此構(gòu)建一個維度為8的梯度方向直方圖,將直方圖的峰值對應的角度作為該鄰域窗口的主方向。因此,每個特征點對應著4×4×8=128維的SIFT特征。
本文所使用的運動模糊編碼點識別模型構(gòu)建的主要流程如圖2所示,首先從運動模糊編碼點訓練數(shù)據(jù)集中提取圖像的SIFT特征,然后建立相應的特征描述,最后將運動模糊編碼點訓練數(shù)據(jù)集輸入到支持向量機中進行模型的分類訓練。
圖2 運動模糊編碼點識別模型構(gòu)建流程
數(shù)據(jù)集中每張圖像的SIFT特征個數(shù)通常是不同的,而支持向量機(support vector machine,SVM)[4]需要固定輸入數(shù)據(jù)的維數(shù)。為此,本文使用文獻[5]提出的方法為每張圖像構(gòu)建固定維數(shù)的特征統(tǒng)計直方圖,將該直方圖作為相應圖像的特征描述,這種特征描述也被稱作BoF(bag of features),以下是建立BoF的主要算法流程:
1) 提取SIFT特征。使用SIFT算法提取運動模糊編碼點的數(shù)據(jù)集中的每幅圖像的特征。
2) k-means聚類。使用聚類算法k-means將提取到的所有SIFT特征聚類為k個類別,k為正整數(shù)。
3) 建立BoF。對于訓練數(shù)據(jù)集中的每張圖像,使用聚類的結(jié)果將圖像上的每個SIFT特征進行分類,并建立相應的直方圖統(tǒng)計每個類別出現(xiàn)的次數(shù),將該直方圖歸一化后作為該圖像的BoF。
實驗選取了身份號分別為1501、1907、2423、2525、2679的5種編碼點作為待識別的視覺特征。足夠的訓練數(shù)據(jù)是模型獲得良好泛化性能的前提。為了盡可能充分地采集到編碼點在多種姿態(tài)、運動模糊程度下的圖像,將這5種編碼點布設(shè)于旋轉(zhuǎn)中的吊扇扇葉上,在多個角度下選取多種曝光時間拍攝扇葉圖像,并從中分割出編碼點所覆蓋的局部區(qū)域,采集了共19 000張圖像,每個類別3 800張,按7∶3的比例將采集到的圖像隨機分為訓練數(shù)據(jù)集和測試數(shù)據(jù)集,并保證兩個數(shù)據(jù)集中的每個類別包含的圖像數(shù)量相同,訓練數(shù)據(jù)集和測試數(shù)據(jù)集的數(shù)據(jù)量統(tǒng)計如表1所示。
表1 數(shù)據(jù)集樣本數(shù)量統(tǒng)計
如圖3所示是從數(shù)據(jù)集中隨機挑選的一部分圖像,圖示的圖像已使用雙線性變換法變換成了同一尺寸。
圖3 編碼點運動模糊圖像
本文使用數(shù)據(jù)集識別精度作為網(wǎng)絡(luò)模型泛化性的評價標準,識別精度表示使用已訓練完畢的模型識別數(shù)據(jù)集中的圖像,其中識別正確的圖像數(shù)目占數(shù)據(jù)集包含的圖像總數(shù)目的比例。
實驗利用第3.1節(jié)建立的訓練數(shù)據(jù)集構(gòu)建運動模糊編碼點識別模型,在使用SVM進行分類訓練時,其懲罰參數(shù)設(shè)為1.0,所選取的核函數(shù)為線性核函數(shù)。另外,建立特征描述BoF的第二步需要設(shè)定聚類的類別數(shù)k。為了說明k值的選取對模型泛化性的影響,本文選取了多組k值(k=100, 300, 500, 700, 1 000)分別構(gòu)建運動模糊編碼點識別模型,并使用測試數(shù)據(jù)集測試這些模型的效果,訓練數(shù)據(jù)集識別精度和測試數(shù)據(jù)集識別精度如圖4所示。
圖4 聚類類別數(shù)目k與識別精度的關(guān)系
從圖4可以看出,隨著k值的增長,訓練數(shù)據(jù)集識別精度和測試數(shù)據(jù)集識別精度均呈上升趨勢,其上升的幅度也越來越小。當k=700時,樣本集的識別精度如表2所示,其中,訓練數(shù)據(jù)集的識別精度為92.74%,測試數(shù)據(jù)集的識別精度達到了92.45%。從圖4中可以看出此時測試數(shù)據(jù)集的識別精度最高,該結(jié)果說明了本文方法的有效性。
表2 k=700時的樣本集識別精度
本文提出了一種利用具有尺度等不變特性的SIFT特征來識別具有一定運動模糊效應的編碼點視覺特征的方法,在簡要介紹編碼點的基本結(jié)構(gòu)的基礎(chǔ)之上,詳細闡述了SIFT特征提取算法和運動模糊編碼點識別模型構(gòu)建方法。在實驗部分,采集了5類共19 000張編碼點的實際運動模糊圖像用于模型的訓練和測試,并分析了聚類類別數(shù)目k對識別精度的影響,本文實驗的測試數(shù)據(jù)集精度最高可達92.45%,研究結(jié)果體現(xiàn)了本方法的有效性,可應用于工程實踐中。