(海軍航空工程學(xué)院 兵器科學(xué)與技術(shù)系,山東 煙臺(tái) 264001)
在智能人機(jī)交互技術(shù)和機(jī)器視覺(jué)的研究中,人臉跟蹤是一項(xiàng)十分重要的技術(shù),是指在視頻流中提取人臉位置或角度變化信息。近年來(lái),人臉跟蹤已經(jīng)成為機(jī)器視覺(jué)與模式識(shí)別領(lǐng)域的研究熱點(diǎn)之一。
跟蹤人臉首先要檢測(cè)識(shí)別出人臉區(qū)域,目前,人臉檢測(cè)的方法可以分為4類:基于知識(shí)的方法,特征不變方法,模板匹配方法和基于外貌的方法。在基于特征不變的方法中,由D.G.Lowe[1]提出的SIFT算法是目前效率較高的一種算法,在此基礎(chǔ)上,Herbert Bay[2]等人提出了SURF(Speeded-Up Robust Features)算法,該算法改進(jìn)了SIFT算法,進(jìn)一步提高了算法性能。
本文提出了基于SURF算法的自動(dòng)嘴部區(qū)域初始化MeanShift算法改進(jìn),使用SURF 函數(shù)實(shí)現(xiàn)嘴部檢測(cè),然后使用MeanShift 跟蹤算法實(shí)現(xiàn)嘴唇跟蹤,通過(guò)嘴部運(yùn)動(dòng)產(chǎn)生新位置坐標(biāo)來(lái)控制鼠標(biāo)。
SURF 檢測(cè)算法是由Hessian 矩陣決定的,下面給出矩陣H:
Lxx(X,t)是一幅圖像在不同解析度下的表示,可以利用高斯核G (t)與圖像函數(shù)I(X)在點(diǎn) X=(x,y)的卷積來(lái)實(shí)現(xiàn),核函數(shù)G(t) 具體表示如式(3),g(t)為高斯函數(shù),t為高斯方差,Lyy與 Lxy同理。
通過(guò)這種方法可以為圖像中每個(gè)像素計(jì)算出其H 行列式的決定值,并用這個(gè)值來(lái)判別興趣點(diǎn)。為方便應(yīng)用,Herbert Bay 提出用方波濾波器和圖像的卷積作為近似值Dxx代替 Lxx,為平衡準(zhǔn)確值與近似值間的誤差引入權(quán)值w,權(quán)值w 隨尺度變化,則H矩陣判別式可表示為:
圖像的尺度空間是這幅圖像在不同解析度下的表示,由式(2)知,一幅圖像I(X)在不同解析度下的表示可以利用高斯核G(t)的卷積來(lái)實(shí)現(xiàn),圖像的尺度大小一般用高斯標(biāo)準(zhǔn)差來(lái)表示[3]。
在計(jì)算視覺(jué)領(lǐng)域,尺度空間被象征性的表述為一個(gè)圖像金字塔,SURF算法申請(qǐng)?jiān)黾訄D像核的尺寸,使尺度空間金字塔的多層同時(shí)被處理,從而使算法性能提高,SURF算法使原始圖像保持不變而只改變?yōu)V波器大小。圖1給出SURF算法與SIFT算法在金字塔結(jié)構(gòu)上的不同點(diǎn)。
圖1 圖像濾波金字塔
檢測(cè)過(guò)程中使用與該尺度層圖像解析度相對(duì)應(yīng)大小的濾波器進(jìn)行檢測(cè),以3×3的濾波器為例,該尺度層圖像中9個(gè)像素點(diǎn)之一與自身尺度層中其余8個(gè)點(diǎn)和在其之上及之下的兩個(gè)尺度層9個(gè)點(diǎn)進(jìn)行比較,共26個(gè)點(diǎn),圖2中標(biāo)記的‘X’像素點(diǎn)的特征值若大于周圍像素(包括其上方或下方及其周圍的間隔點(diǎn))則可確定該點(diǎn)為該區(qū)域的興趣點(diǎn)。
圖2 檢測(cè)特征點(diǎn)
為保證旋轉(zhuǎn)不變性[4],首先,以特征點(diǎn)為中心,計(jì)算半徑為6 s(s為特征點(diǎn)所在的尺度值)的鄰域內(nèi)的點(diǎn)在x、y方向的Haar小波(Haar小波邊長(zhǎng)取4 s)響應(yīng),并給這些響應(yīng)值賦高斯權(quán)重系數(shù),使得靠近特征點(diǎn)的響應(yīng)貢獻(xiàn)大,而遠(yuǎn)離特征點(diǎn)的響應(yīng)貢獻(xiàn)小;其次,將60°范圍內(nèi)的響應(yīng)相加以形成新的矢量,遍歷整個(gè)圓形區(qū)域,選擇最長(zhǎng)矢量的方向?yàn)樵撎卣鼽c(diǎn)的主方向。這樣,通過(guò)特征點(diǎn)逐個(gè)進(jìn)行計(jì)算,得到每一個(gè)特征點(diǎn)的主方向。
目標(biāo)模板[5]是通過(guò)一個(gè)選定區(qū)域來(lái)確定的,為了消除目標(biāo)模板尺寸不同的影響,所有的目標(biāo)模板都要首先做歸一化處理。經(jīng)過(guò)歸一化后的目標(biāo)模板長(zhǎng)寬分別為hx和hy。設(shè)目標(biāo)模板的點(diǎn)用表示,候選目標(biāo)區(qū)域中的點(diǎn)用表示,其中xi、yj分別是目標(biāo)模板與候選目標(biāo)區(qū)域的歸一化的像素位置,μi、vj是相應(yīng)的特征矢量。定義一個(gè)核函數(shù) k (x),為目標(biāo)模板區(qū)域的像素設(shè)置權(quán)值,即越遠(yuǎn)離目標(biāo)模板中心的像素設(shè)置的權(quán)值越小,目的是增加算法的魯棒性[6],提高搜索跟蹤能力。
定義h為候選目標(biāo)的尺度,在跟蹤算法中h選擇為候選目標(biāo)的像素?cái)?shù),δ()?為Kronecker ?函數(shù),定義為:
歸一化常數(shù) Cx、Cy分別為:
通常情況下,相似性測(cè)度函數(shù)定義的是目標(biāo)模板和候選目標(biāo)之間的距離分別為:
d (q,p(y))是目標(biāo)模板分布q和候選目標(biāo)分布 p (y)的Bhattacharyya系數(shù)。
為了在被檢測(cè)幀中定位目標(biāo),那么關(guān)于目標(biāo)模板分布q 和候選目標(biāo)分布 p (y)的距離函數(shù) d (y)應(yīng)當(dāng)最小化。定位過(guò)程也可以看成是從前一幀的目標(biāo)模板的位置開(kāi)始,在其鄰域內(nèi)搜索目標(biāo)的過(guò)程。因?yàn)榫嚯x函數(shù) d (y)是光滑的,所以通過(guò)利用均值矢量(mean shift vector) d (y)的梯度信息完成目標(biāo)的定位。此過(guò)程是不斷地從目標(biāo)當(dāng)前位置 y0移動(dòng)到新目標(biāo)位置 y1,直到候選目標(biāo)與目標(biāo)模板足夠相似。y1的計(jì)算式:
1)利用式(5)計(jì)算目標(biāo)模板在前一幀 y0處的概率密度并指定一個(gè)小的正常數(shù)ε[7];
2)初始化在當(dāng)前幀 y0處的候選目標(biāo),利用式(6)計(jì)算其概率密度和Bhattacharyya系數(shù);
3)利用式(12)計(jì)算候選目標(biāo)的下一個(gè)新位置y1;
OpenCV[8](Open Source Computer Vision Library)是一種用于數(shù)字圖像處理和計(jì)算機(jī)視覺(jué)的函數(shù)庫(kù),由 Intel 微處理器研究實(shí)驗(yàn)室(Intel’s Microprocessor Research Lab)的視覺(jué)交互組(The Visual Interactivity Group)開(kāi)發(fā)。OpenCV 由一系列C 函數(shù)和少量C++類構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。
系統(tǒng)首先提取嘴部模板圖像,利用SURF算法檢測(cè)出嘴唇區(qū)域的特征點(diǎn),通過(guò)攝像頭捕捉視頻幀,對(duì)提取的每一幀圖像,利用SURF算法提取特征點(diǎn),并比較模板圖像與候選圖像的特征點(diǎn)描述子,提取匹配成功的特征點(diǎn)集的4個(gè)角點(diǎn)作為矩形嘴部區(qū)域的4個(gè)頂點(diǎn),最終用矩形窗表示嘴部區(qū)域,而后調(diào)用MeanShift算法跟蹤嘴部區(qū)域,并將嘴部坐標(biāo)更新信息作為鼠標(biāo)移動(dòng)依據(jù)。
對(duì)于同一使用者而言,只須提取一次嘴唇區(qū)域信息,在此后每次對(duì)MeanShift算法初始化過(guò)程中,系統(tǒng)會(huì)自動(dòng)識(shí)別并跟蹤嘴唇區(qū)域,而不需要使用者手動(dòng)選擇嘴部區(qū)域,從而實(shí)現(xiàn)MeanShift算法自動(dòng)初始化,進(jìn)而實(shí)現(xiàn)視線跟蹤功能。圖3給出該系統(tǒng)流程圖。
驗(yàn)證系統(tǒng)硬件設(shè)備使用 Intel Core2 雙核2.33GHz CPU,2Gb 內(nèi)存,ANC 攝像頭。系統(tǒng)軟件以 Microsoft Visual C++6.0為開(kāi)發(fā)平臺(tái),調(diào)用OpenCV的cvsurf.cpp 文件中的函數(shù)實(shí)現(xiàn)SURF 檢測(cè)算法,再調(diào)用cvMeanShift()函數(shù)實(shí)現(xiàn)嘴部運(yùn)動(dòng)跟蹤功能,最后使用Mouse_Move()函數(shù)實(shí)現(xiàn)鼠標(biāo)運(yùn)動(dòng)控制。
圖4左半部分為嘴部原始模板圖,右半部分為相應(yīng)的嘴部特征點(diǎn)提取結(jié)果。
圖3 系統(tǒng)流程圖
圖4 特征點(diǎn)檢測(cè)效果
圖5為嘴唇特征匹配結(jié)果,共提取65個(gè)嘴唇特征點(diǎn)描述子,一次匹配的時(shí)間分別為223.135 ms。左上角顯示的是嘴部模板圖,從視頻序列中提取當(dāng)前候選幀,通過(guò)SURF算法找到候選幀圖像中相匹配的特征點(diǎn),為方便識(shí)別匹配情況,將特征點(diǎn)用線連接并,再將嘴部區(qū)域用外接矩形框選。
圖5 匹配識(shí)別效果
MeanShift算法通過(guò)提取SURF算法檢測(cè)出的嘴唇區(qū)域目標(biāo)模型,將其與候選模型進(jìn)行比較匹配,從而得到新的嘴唇區(qū)域,通過(guò)計(jì)算嘴唇新坐標(biāo)位置與原坐標(biāo)位置之差得到嘴部運(yùn)動(dòng)距離,從而控制鼠標(biāo)運(yùn)動(dòng)。由于頭部與屏幕距離d 不同,相同幅度頭部運(yùn)動(dòng)卻有不同鼠標(biāo)分辨率,因此,引入權(quán)值k,k與d 成正比。
圖6給出演示實(shí)驗(yàn)的效果圖,A、B、C、D分別為鼠標(biāo)右移、左移、上移、下移效果。為方便識(shí)別,白圈中心為鼠標(biāo)光標(biāo)位置。
圖6 視覺(jué)鼠標(biāo)效果
本文提出了基于SURF算法的自動(dòng)嘴部區(qū)域初始化MeanShift 改進(jìn)算法,在VC6.0 中調(diào)用OpenCV圖像處理庫(kù)中的SURF 函數(shù)實(shí)現(xiàn)嘴部檢測(cè),將檢測(cè)區(qū)域作為目標(biāo)模板,然后使用MeanShift 跟蹤算法在候選模板中搜索匹配區(qū)域,從而實(shí)現(xiàn)嘴唇跟蹤,通過(guò)嘴部運(yùn)動(dòng)產(chǎn)生新位置坐標(biāo)來(lái)控制鼠標(biāo)運(yùn)動(dòng)。實(shí)驗(yàn)結(jié)果表明,新算法很好的實(shí)現(xiàn)了預(yù)期功能,且SURF算法不會(huì)給MeanShift 跟蹤算法的實(shí)時(shí)性帶來(lái)負(fù)擔(dān),該方法具有實(shí)時(shí)性好、高魯棒性、穩(wěn)定性好等特點(diǎn)。
[1]DAVID G LOWE.Object recognition from local scale-invariant features[C]//Proceedings of the international conference on computer vision,1999:1150-1161.
[2]HERBERT BAY,ANDREAS ESS,TINNE TUYTELAARS,et al.Speeded-up robust features[J].Computer vision and image understanding,2008,110(3):346-359.
[3]高健,黃心漢,彭剛,等.一種簡(jiǎn)化的SIFT圖像特征點(diǎn)提取算法[J].計(jì)算機(jī)應(yīng)用研究,2008,25(7):2213-2215.
[4]張銳娟,張建奇,楊翠.基于SURF的圖像配準(zhǔn)方法研究[J].紅外與激光工程,2009,38(1):160-165.
[5]COMANICIU D,MEER P.Mean Shift:A robust application toward feature space analysis[J].IEEE Trans.on Pattern Analysis and Machine Intelligence,2002,24(5):603-619.
[6]BASTIAN LEIBE,ALES LEONARDIS,BERNT SCHIELE.Robust object detection with interleaved categorization and segmentation[J].International Journal of Computer Vision,2008,77(1):259-289.
[7]COMANICU D,RAMESH V,MEER P.Kernel-based object tracking[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2003,25(5):564-575.
[8]黎松,平西建,丁益洪.開(kāi)放源代碼的計(jì)算機(jī)視覺(jué)類庫(kù)OpenCv的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2005,22(8):134-136.