孔祥源,黃鑫鑫,肖秋霞,謝書凝
(廈門理工學(xué)院 電氣工程與自動化學(xué)院,福建 廈門 361024)
早期,人們從提取人臉的幾何特征入手開發(fā)出一些基于幾何特征的人臉識別算法,但隨著人們的深入研究,發(fā)現(xiàn)由于人臉總體形狀特征相似,而細節(jié)特征卻千變?nèi)f化,這種基于幾何特征的全局性人臉識別算法不具有較好的魯棒性,即當(dāng)外界條件變化時,算法的人臉識別率會顯著下降,為了更好的進行識別,基于局部特征點的目標(biāo)檢測算法被提出[1],該算法突出的優(yōu)點是特征點魯棒性強、奇異性好,即使圖像有了部分的遮擋或缺損也能檢測出較為穩(wěn)定的特征點,與全局特征相比,不易受到環(huán)境變化的影響?;诰植刻卣鼽c的算法抓住檢測目標(biāo)的關(guān)鍵特征,濾去大部分無關(guān)的背景點和低對比度的點,實時性得到了很大的提高。本文主要對一種局部特征點人臉識別算法——SIFT算法進行研究,通過多尺度圖像提取出目標(biāo)中的特征點,再利用圖像特征點描述向量的某種距離作相似性度量,從而找到圖像間匹配的特征點。SIFT算法提取的特征點穩(wěn)定性較好,它生成的描述符具有很強的魯棒性,即使圖像發(fā)生較大的改變,人臉有了局部的遮擋,也能夠得到大量的匹配準確的特征點對。該算法在目標(biāo)檢測領(lǐng)域得到廣泛應(yīng)用[2]。
SIFT算法可以處理兩幅圖像間的平移、旋轉(zhuǎn)、仿射變換、光照變換等情況下的匹配問題,甚至當(dāng)圖像視角發(fā)生較大變化時也能檢測出穩(wěn)定的特征點,并在圖像間找到大量的、匹配準確的特征點對。
SIFT算法大致分為2個階段來實現(xiàn):
(1)SIFT特征的生成,即從多幅圖像中提取對尺度放縮、旋轉(zhuǎn)、亮度變化無關(guān)的特征向量;
(2)SIFT特征向量的匹配。
SIFT算法檢測特征點是通過構(gòu)建高斯多尺度空間和DOG(Difference of Gaussian)多尺度空間,進而在這些多尺度空間上來尋找滿足一定條件的特征點。這種特征點有很好的魯棒性和奇異性。
在SIFT特征向量生成之前,先對圖像進行歸一化處理,然后擴大至原來的2倍,預(yù)濾波剔除噪聲得到高斯金字塔最底層即第1階的第1層。
尺度空間理論的主要思想是利用高斯核對原始圖像進行尺度變換,獲得圖像多尺度下的尺度空間表示序列,對這些序列進行尺度空間特征提取。
二維高斯核的定義如公式 (1-1)所示,其中σ代表了高斯正態(tài)分布的方。
(1)建立高斯金字塔[3]為了得到在不同尺度空間下的穩(wěn)定特征點,將圖像與不同尺度因子下的高斯核進行卷積操作,構(gòu)成高斯金字塔。高斯金字塔有階,一般選擇4階,每一階有s層尺度圖像,s一般選擇5層。高斯金字塔的構(gòu)成如圖1所示。
圖1 高斯金字塔
在高斯金字塔的構(gòu)成中要注意,第1階的第1層是放大2倍的原始圖像,其目的是為了得到更多的特征點;在同一階中相鄰兩層的尺度因子比例系數(shù)是k,則第1階第2層的尺度因子是kσ,然后其它層以此類推則可;第2階的第1層由第一階的中間層尺度圖像進行子抽樣獲得, 其尺度因子是k2σ,然后第2階的第2層的尺度因子是第1層的k倍即k3σ;第3階的第1層由第2階的中間層尺度圖像進行子抽樣獲得。其它階的構(gòu)成以此類推。
(2)建立DOG金字塔
DOG即相鄰兩尺度空間函數(shù)之差,用來表示,如公式(1-3)所示。
圖2 DOG金字塔
DOG金字塔通過高斯金字塔中相鄰尺度空間函數(shù)相減即可,如圖2所示。在圖中,DOG金字塔的第1層的尺度因子與高斯金字塔的第1層是一致的,其它階也一樣。
(3)DOG空間極值檢測
在上面已經(jīng)建立好的DOG尺度空間金字塔中,為了檢測到DOG空間的極值,DOG尺度空間中中間層(最底層和最頂層除外)的每個像素點需要跟同一層的相鄰8個像素點以及它上一層和下一層的9個相鄰像素點總共26個相鄰像素點進行比較,以確保在尺度空間和二維圖像空間都檢測到局部極值,如圖3所示。
圖3 DOG空間的極值檢測
在圖3中,標(biāo)記為叉號的像素點若比相鄰26個像素點的DOG值都大或都小,則該點將作為一個局部極值點,記下它的位置和對應(yīng)尺度。
由于DOG值對噪聲和邊緣較敏感,因此,在上面DOG尺度空間中檢測到局部極值點還要經(jīng)過進一步的檢驗才能精確定位為特征點。下面對局部極值點進行三維二次函數(shù)擬和以精確確定特征點的位置和尺度,尺度空間函數(shù)D(x,y,σ)在局部極值點(x0,y0,σ)處的泰勒展開式如公式(1-4)所示。
其中:
(k指當(dāng)前層,k-1指下層,k+1指上層)
公式(1-4)中的一階和二階導(dǎo)數(shù)是通過附近區(qū)域的差分來近似求出的,列出其中的幾個,其它的二階導(dǎo)數(shù)以此類推。通過對公式(1-4)求導(dǎo),并令其為0,得出精確的極值位置Xmax如公式(1-5)所示。
在上面精確確定的特征點中, 同時要去除低對比度的特征點和不穩(wěn)定的邊緣響應(yīng)點, 以增強匹配穩(wěn)定性、提高抗噪聲能力。
去除低對比度的特征點:把公式(1-5)代到公式(1-4)中,只要前兩項,得到公式(1-6)。
通過式(1-6)計算出D(Xmax),若|D(Xmax)|≥0.03,則該特征點就保留下來,否則就丟棄。去除不穩(wěn)定的邊緣響應(yīng)點:海森矩陣如公式(1-7)所示,其中的偏導(dǎo)數(shù)是上面確定的特征點處的偏導(dǎo)數(shù),它也是通過附近區(qū)域的差分來近似估計的。
通過2×2的海森矩陣H來計算主曲率, 由于D的主曲率與H矩陣的特征值成比例,根據(jù)文獻[4],不具體求特征值,求其比例。設(shè)α是最大幅值特征,β是次小的,r=α/β,則如公式(1-8)。
利用特征點鄰域像素的梯度方向分布特性,為每個特征點指定方向參數(shù),使算子具備旋轉(zhuǎn)不變性。
公式(1-9)為(x,y)處的梯度值和方向。L為所用的尺度為每個特征點各自所在的尺度,(x,y)要確定是哪一階的哪一層。在實際計算過程中,在以特征點為中心的鄰域窗口內(nèi)采樣,并用梯度方向直方圖統(tǒng)計鄰域像素的梯度方向。梯度直方圖的范圍是0~360°,其中每10°一個柱,總共36個柱。梯度方向直方圖的峰值則代表了該特征點處鄰域梯度的主方向,即作為該特征點的方向。下圖是使用7個柱時,利用梯度直方圖確定特征點主方向的示例。
圖4 極值點主方向確定
在梯度方向直方圖中,當(dāng)存在另一個相當(dāng)于主峰值80%能量的峰值時,則將這個方向認為是該特征點的輔方向。一個特征點可能會被指定具有多個方向(一個主方向, 一個以上輔方向),這可以增強特征點的穩(wěn)定性。
通過上面的3步,圖像的特征點已檢測完畢,每個特征點有3個信息:位置、對應(yīng)尺度、方向。
SIFT描述子是一種新的特征描述器,由于其優(yōu)良的性能而在檢測和識別等領(lǐng)域得到了廣泛的應(yīng)用。
生成SIFT特征向量首先將坐標(biāo)軸旋轉(zhuǎn)為特征點的方向,以確保旋轉(zhuǎn)不變性。接下來以特征點為中心取 的窗口(特征點所在的行和列不取) 。在圖4中,中央黑點為當(dāng)前特征點的位置,每個小格代表特征點鄰域所在尺度空間的一個像素,箭頭方向代表該像素的梯度方向,箭頭長度代表梯度模值,圖中圈內(nèi)代表高斯加權(quán)的范圍(越靠近特征點的像素,梯度方向信息就越大) 。然后在每的圖像小塊上計算個方向的梯度方向直方圖,繪制每個梯度方向的累加值,形成一個種子點,如圖5 ( b)所示。此圖中一個特征點由共4個種子點組成,每個種子點有個方向向量信息,可產(chǎn)生共個據(jù),形成維的SIFT特征向量,即特征點描述器,所需的圖像數(shù)據(jù)塊為。這種鄰域方向性信息聯(lián)合的思想增強了算法抗噪聲的能力,同時對于含有定位誤差的特征匹配也提供了較好的容錯性。
圖5 SIFT描述子的生成
實際計算過程中,為了增強匹配的穩(wěn)健性,文獻[5]建議對每個特征點使用共個種子點來描述,每個種子點有8個方向向量信息,這樣對于一個特征點就可以產(chǎn)生共個數(shù)據(jù),最終形成128維的SIFT特征向量,所需的圖像數(shù)據(jù)塊為。此時SIFT特征向量已經(jīng)去除了尺度變化、旋轉(zhuǎn)等幾何變形因素的影響,再繼續(xù)將特征向量的長度歸一化,則可以進一步去除光照變化的影響。當(dāng)2幅圖像的SIFT特征向量,即特征點描述器生成后,下一步就是進行特征向量的匹配。
據(jù)文獻[7]特征描述符生成之后,就要對圖像間對應(yīng)的特征點進行匹配,這步通常采用歐氏距離作為2幅圖像間的相似性度量。獲取SIFT特征向量后,采用k-d樹進行優(yōu)先搜索來查找每個特征點的2個近似最近鄰特征點。在這2個特征點中,如果最近的距離除以次近的距離少于某個比例閾值,則接受這一對匹配點。降低這個比例閾值, SIFT匹配點數(shù)目會減少,但更加穩(wěn)定。
通過相似性度量得到潛在匹配對,其中不可避免會產(chǎn)生一些錯誤匹配,因此需要根據(jù)幾何限制和其它附加約束消除錯誤匹配,提高魯棒性。實驗采用RANSAC隨機抽樣一致性算法去外點方法,采用極線約束關(guān)系進行幾何約束。
實驗方法:將ORL圖庫中的某幅圖像(如圖6)做一定的變化(下文左圖即為為變化后圖像),并將其作為測試圖像,另選10張圖像(1張為原始圖像)作為訓(xùn)練圖像。在10張訓(xùn)練圖尋找于變化后圖像最相似的圖像,進行實驗,結(jié)果如下:
圖6 原始圖像
圖7 光照變化后準確匹配到原始圖像
圖8 旋轉(zhuǎn)變化后準確匹配到原始圖像
圖9 噪聲干擾后準確匹配到原始圖像
圖10 視角變化后準確匹配到原始圖像
圖11 尺度縮放后準確匹配到原始圖像
圖12 表情加視角變化后準確匹配到原始圖像
通過上面幾組實驗,我們可以看出,SIFT算法的人臉識別能力較好,即使人臉發(fā)生復(fù)雜的變化,依然能夠準確的識別不同的人臉。
本次實驗在100張人臉圖像中檢索與上組實驗的原圖像(圖6)相似度最高的的前6張圖像,這100張圖像中共有10張與上面實驗原圖像為同一個人。檢索結(jié)果:
圖13 SIFT算法的檢索結(jié)果
從SIFT算法檢索結(jié)果(如圖13所示)可以看出,本實驗檢索的這幾張圖像,雖為同一個人,但有著很復(fù)雜的變化。人臉的視角、表情、大小、光照等都有著一定的變化,但檢測結(jié)果依然準確。實驗結(jié)果進一步說明SIFT算法的人臉識別效果要好,它能夠適應(yīng)人臉的復(fù)雜變化,始終保持較高的人臉識別率。
實驗充分證明,SIFT算法是一種檢測能力很強的局部特征點檢測算法,能夠滿足較為復(fù)雜環(huán)境的人臉識別需要。該算法不僅可應(yīng)用于身份辨識等人臉識別場景,還可應(yīng)用于產(chǎn)品分類、隱患識別等其他目標(biāo)檢測場景。
致謝本文獲2017年福建省中青年教師教育科研項目(JAT170434)和2017年卓越工程師教育培養(yǎng)計劃大學(xué)生科技創(chuàng)新項目(基于圖像處理的電信基站電池隱患識別及其實現(xiàn))的資助,特此感謝。感謝廈門理工學(xué)院黃韜工程師對本文工作的指導(dǎo)。
[1] 董立羽.局部特征的自動提取及其在人臉識別中應(yīng)用[D].長沙:國防科技大學(xué),2004.
[2] 李曉明,鄭鏈,胡占義.基于SIFT特征的遙感影像自動配準[J].遙感學(xué)報,2006(06):885-892.
[3] 屠禮芬,仲思東,彭祺,等.基于高斯金字塔的運動目標(biāo)檢測[J].中南大學(xué)學(xué)報(自然科學(xué)版),2013(07):2778-2786.
[4] 徐英,周金鵬.基于領(lǐng)域灰度分布的IR弱小目標(biāo)檢測[J].國防科技大學(xué)學(xué)報,2002(05):84-87.
[5] Lowe D. Distinctive image features from scale-invariant keypoints[J].Iernational Journal on Computer Vision,2004,69(2):91-110.
[6] 王國美,陳孝威.SIFT特征匹配算法研究[J].鹽城工學(xué)院學(xué)報(自然科學(xué)版),2007(2):1-5.
[7] 徐小明.特征的提取與描述的研究[D].重慶:重慶大學(xué),2007.