基于鼻子相對(duì)位置的頭勢(shì)識(shí)別技術(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
近年來(lái),隨著模式識(shí)別與計(jì)算機(jī)視覺(jué)的迅速發(fā)展,人臉檢測(cè)與識(shí)別技術(shù)也得到了快速的發(fā)展?;谌四槞z測(cè)的頭勢(shì)識(shí)別技術(shù)也受到了研究者的重視。通過(guò)檢測(cè)人的頭部姿勢(shì),人們可以控制一些智能設(shè)備,使其為自己工作。例如基于頭部姿勢(shì)識(shí)別的智能游戲系統(tǒng),通過(guò)頭部姿勢(shì)控制虛擬機(jī)器人走迷宮,既不失游戲的娛樂(lè)性,又可以在游戲的過(guò)程中鍛煉頸椎,提高腦部供血量,有益于游戲者的身心健康。
檢測(cè)頭部姿勢(shì),首先需要進(jìn)行人臉檢測(cè),然后根據(jù)人臉局部特征來(lái)判斷人的頭部姿勢(shì)。在頭勢(shì)識(shí)別中,本文提出了一種基于鼻子相對(duì)位置的頭勢(shì)識(shí)別技術(shù)。針對(duì)已經(jīng)檢測(cè)出的人臉區(qū)域,提出了一種基于圖像處理的鼻子檢測(cè)方法。該方法先后對(duì)攝像頭中得到的人臉圖像進(jìn)行灰度化,直方圖均衡化,與Sobel算子卷積,二值化和尋找二值圖像的連通域等操作,最終在連通域中獲得最佳的鼻子位置。然后測(cè)試實(shí)驗(yàn)者在頭部運(yùn)動(dòng)時(shí)鼻子位置的左右界和上下界,根據(jù)這些界限和獲得的具體鼻子位置,通過(guò)計(jì)算鼻子位置與這些界限的比例,判斷人的具體頭部姿勢(shì)。
1系統(tǒng)流程與實(shí)現(xiàn)
基于鼻子相對(duì)位置的頭勢(shì)識(shí)別的整體流程如圖1所示。
由圖1可知,基于鼻子位置的頭勢(shì)識(shí)別系統(tǒng)分為鼻子位置識(shí)別和頭勢(shì)識(shí)別兩個(gè)部分。其中鼻子位置識(shí)別是頭勢(shì)識(shí)別的基礎(chǔ),在檢測(cè)鼻子位置時(shí),需要使用圖像的灰度化,直方圖均衡化,圖像的卷積,圖像二值化和尋找連通域等方法對(duì)圖像進(jìn)行變換,逐步分割并檢測(cè)出鼻子位置。鼻子位置識(shí)別的目的是頭勢(shì)識(shí)別,首先測(cè)試實(shí)驗(yàn)者的鼻子在抬頭,低頭,左轉(zhuǎn),右轉(zhuǎn)的邊界位置,然后根據(jù)鼻子的相對(duì)位置,判斷出實(shí)驗(yàn)者的頭部姿勢(shì)。
圖1基于鼻子位置的頭勢(shì)檢測(cè)流程圖
2鼻子位置檢測(cè)
收稿日期:2014-03-31基于鼻子位置的頭勢(shì)識(shí)別,關(guān)鍵在于從已經(jīng)檢測(cè)出的人臉區(qū)域中,檢測(cè)出鼻子的位置,然后通過(guò)鼻子位置判斷頭部姿勢(shì)。圖2所示是檢測(cè)鼻子位置的圖像變換圖。在圖2中,我們看到,原始圖經(jīng)過(guò)灰度化、均衡化、卷積、二值化后,形成比較明顯的輪廓,以方便判斷鼻子位置。
圖2檢測(cè)鼻子位置的圖像變換圖
2.1彩色圖像的灰度化
在圖像處理技術(shù)中,圖像識(shí)別、輪廓提取、圖像增強(qiáng)等操作的實(shí)現(xiàn),大多是在灰度圖像的基礎(chǔ)上進(jìn)行的。因此,在鼻子位置的檢測(cè)中,將攝像頭讀入的圖片進(jìn)行灰度化是十分必要的。
我們使用加權(quán)平均法對(duì)讀入攝像頭的圖像進(jìn)行灰度化,由圖2可知,將彩色圖像灰度化之后,圖像變得比較簡(jiǎn)單,而且信息量的丟失也是比較少的,這樣的圖像更適合我們進(jìn)行后續(xù)處理。
2.2直方圖的均衡化
對(duì)于從攝像頭讀入的數(shù)據(jù),有時(shí)會(huì)因?yàn)橥獠凯h(huán)境中的光線或者攝像設(shè)備的工作性能等原因,使得圖像整體較暗或者較亮,這樣的圖像在經(jīng)過(guò)灰度化后,其圖片中的數(shù)據(jù)會(huì)集中于一個(gè)范圍,這對(duì)于以后進(jìn)行圖像的邊緣增強(qiáng)不利。因此,對(duì)彩色圖像灰度化后,還要對(duì)其進(jìn)行均衡化處理,增加圖像的對(duì)比度,以使圖像能夠適應(yīng)不同的環(huán)境,對(duì)以后的卷積處理,鼻子的識(shí)別有一定好處。
直方圖均衡化的具體實(shí)現(xiàn)步驟如下:
統(tǒng)計(jì)原始圖像中各個(gè)灰度級(jí)的像素?cái)?shù)目;
計(jì)算原始圖像的直方圖,即計(jì)算各個(gè)灰度級(jí)的概率密度;
計(jì)算累計(jì)分布函數(shù);
計(jì)算輸出圖像灰度級(jí):
利用原始圖像的灰度級(jí)函數(shù)和輸出圖像的灰度級(jí)的映射關(guān)系,獲得輸出圖像的像素,最終輸出均衡化后的圖像。
對(duì)灰度圖像進(jìn)行過(guò)直方圖均衡化后,就得到了令人滿意的灰度圖,之后就可以利用Sobel算子對(duì)這個(gè)圖像進(jìn)行邊緣增強(qiáng),從而可以獲得鼻子位置。
2.3利用Sobel算子的圖像邊緣增強(qiáng)
有了圖像的灰度圖,然后利用索貝爾算子與原始圖像進(jìn)行卷積,獲得圖像的邊緣信息,通過(guò)邊緣信息尋找鼻子位置。
Sobel算子是圖像處理中的重要算子之一,主要作用是對(duì)圖像進(jìn)行邊緣檢測(cè)。在技術(shù)上,它是一種離散性差分算子,用來(lái)運(yùn)算圖像亮度函數(shù)的梯度的近似值。在圖像的任何一點(diǎn)使用Sobel算子,將會(huì)產(chǎn)生對(duì)應(yīng)的梯度矢量或是法矢量。Sobel算子如圖3所示。
在原始圖像與Sobel算子進(jìn)行卷積的算法中,使用指針實(shí)現(xiàn)。設(shè)置六個(gè)指針(由于索貝爾算子中總有一行或者一列是0)分別指向要進(jìn)行卷積運(yùn)算的3X3的圖像,然后與Sobel算子進(jìn)行卷積,卷積后移動(dòng)指針即可進(jìn)行下一次的卷積。實(shí)際上,Sobel算子具有橫向和縱向兩種,對(duì)于每個(gè)圖像,在進(jìn)行完橫向和縱向的卷積后,還要將兩種卷積的結(jié)果進(jìn)行合并,然后放到結(jié)果圖像中。
2.4圖像的二值化
原始圖像經(jīng)過(guò)上述的一系列變換后,就會(huì)形成一個(gè)邊緣輪廓明顯的灰度圖。為了更方便的找到鼻子位置,我們需要將灰度圖二值化。圖像的二值化處理,就是將圖像上的所有點(diǎn)都設(shè)置為0或者255兩個(gè)值,這樣圖像的信息量減少,容易識(shí)別某個(gè)特定區(qū)域的位置,如圖2中二值化后的圖像。
這里,我們需要找到一個(gè)合適的閾值,即若原始圖的灰度值大于或等于閾值時(shí),我們把它設(shè)置為255,小于閾值時(shí)設(shè)置為0。因此,閾值的選取至關(guān)重要。在實(shí)驗(yàn)中,我們采用用戶手工輸入閾值的方法實(shí)現(xiàn)。用戶通過(guò)判斷二值圖像鼻子區(qū)域的大小,控制閾值來(lái)實(shí)現(xiàn)圖像的最佳二值化。
2.5識(shí)別鼻子位置
在灰度圖像的二值化之后,我們就可以清楚的看到圖像中的眼角,嘴角,頭部的輪廓,鼻子的相應(yīng)位置是白色的,因此,我們首先應(yīng)該找到圖像中的白色區(qū)域,這就涉及到二值圖像中連通域的提取問(wèn)題。具體尋找連通域的算法如下:
(1)掃描二值圖像中的所有像素點(diǎn),得到一個(gè)像素點(diǎn)后,先判斷當(dāng)前點(diǎn)的左方和上方有沒(méi)有點(diǎn),若沒(méi)有點(diǎn),那么這個(gè)點(diǎn)是一個(gè)新的區(qū)域的開(kāi)始,申請(qǐng)一個(gè)鏈表節(jié)點(diǎn),將像素點(diǎn)的數(shù)據(jù)存人;
(2)得到一個(gè)像素點(diǎn)后,若左方有像素點(diǎn),而上方?jīng)]有像素點(diǎn),則將此點(diǎn)標(biāo)記為左方點(diǎn)的值,然后存入對(duì)應(yīng)鏈表數(shù)據(jù)區(qū);若左方?jīng)]有像素點(diǎn),而上方有像素點(diǎn),則將此點(diǎn)標(biāo)記為上方點(diǎn)的值,然后存入對(duì)應(yīng)鏈表的數(shù)據(jù)區(qū);
(3)得到一個(gè)像素點(diǎn)后,如果其上方和左方都有點(diǎn),則選擇這兩個(gè)中的最小的標(biāo)記點(diǎn),并修改大標(biāo)記為小標(biāo)記,并將此點(diǎn)存人相應(yīng)的鏈表。
找到所有連通域后,遍歷連通域的鏈表,對(duì)于鏈表中的數(shù)據(jù)(即一系列的坐標(biāo)值),分別找到坐標(biāo)中x,V的最小值和最大值,組成兩個(gè)坐標(biāo)點(diǎn),得到這個(gè)連通域的矩形區(qū)域。計(jì)算矩形區(qū)域的中心,這個(gè)中心在人臉的中部區(qū)域,將這個(gè)連通域標(biāo)記為候選鼻子位置。然后將所有候選鼻子位置的連通域的外接矩形面積計(jì)算出來(lái),然后比較大小,將面積最大的候選鼻子位置定為最佳鼻子位置,并用黃色的矩形框標(biāo)記出來(lái)。如圖2中識(shí)別鼻子位置后的圖。
3頭勢(shì)識(shí)別
3.1鼻子位置上下界與左右界的確定
由于每個(gè)人的鼻子位置占人臉的比例不盡相同,而判斷頭勢(shì)是根據(jù)鼻子在人臉的比例確定的,所以,在根據(jù)鼻子位置判斷頭部姿勢(shì)之前,首先需要確定人的頭部在左轉(zhuǎn),右轉(zhuǎn),抬頭,低頭的所有階段,鼻子位置的移動(dòng)范圍。即鼻子位置左右界和上下界的確定。圖4所示是基于鼻子位置的頭勢(shì)識(shí)別原理圖,其中的虛線框?yàn)楸亲拥淖笥医绾蜕舷陆纭?
圖4基于鼻子位置的頭勢(shì)識(shí)別原理圖
3.2頭部姿勢(shì)的識(shí)別
在這個(gè)算法中,我們要檢測(cè)頭部的五種姿勢(shì),分別是左轉(zhuǎn)、右轉(zhuǎn)、平視、抬頭和低頭,這些姿勢(shì)的檢測(cè)都需要根據(jù)上文提到的鼻子位置上下界,左右界以及當(dāng)前鼻子的具體位置進(jìn)行判斷。根據(jù)圖4中所示,我們先判斷鼻子中心點(diǎn)在人臉中的哪個(gè)區(qū),然后根據(jù)這個(gè)區(qū)域來(lái)識(shí)別判斷頭部的具體姿勢(shì)。
假設(shè)鼻子的左右界分別是xi和x(x<x),鼻子的上下界分別是M和乃3<乃)。鼻子位置的中心點(diǎn)坐標(biāo)是5)。具體的判斷方法如下:
若(x—x1)<(x2—x1)/3,且(y2—y1)/3<(y—yi)<[2(y2—y1,]/3,則頭部姿勢(shì)是朝向左方(即左轉(zhuǎn));
若(x—X1)/3<(x—X1)<[2(x2—X1)]/3,且(y—yD<(y2—y1,/3,則頭部姿勢(shì)是朝向上方(即抬頭);
若(X—X1)/3<(x—X1)<[2(改—X1)]/3,且y—y1,/3<(y—y1)<[2(y2—yD]/3,則頭部姿勢(shì)是朝向正前方(即平視);
若(x—X1)/3<(x—X1)<[2(他—X1)]/3,且(y—y〔)>[2(y,—y1)]/3,則頭部姿勢(shì)是朝向下方(即低頭);
若(x—也)>[2(x2—x1)]/3,且頒2—y1)/3<(y—y1)<[2(y2—y1)]/3,則頭部姿勢(shì)是朝向右方(即右轉(zhuǎn))。
4實(shí)驗(yàn)結(jié)果分析
在實(shí)驗(yàn)中,我們使用的軟件環(huán)境是Windows7下的
VS2005,硬件環(huán)境是主頻2.93GHz,內(nèi)存2.0GB的主機(jī)。識(shí)別效果如圖5所示。
圖5實(shí)驗(yàn)結(jié)果
由圖5可知,本實(shí)驗(yàn)中所用的鼻子識(shí)別算法可靠實(shí)用,可以準(zhǔn)確判定鼻子的位置,并可通過(guò)鼻子在臉中的相對(duì)位置識(shí)別實(shí)驗(yàn)者的頭部姿勢(shì)。
5結(jié)語(yǔ)
本文提出了一種基于鼻子相對(duì)位置的頭部姿勢(shì)識(shí)別技術(shù)。在進(jìn)行頭勢(shì)識(shí)別前先通過(guò)學(xué)習(xí)獲得實(shí)驗(yàn)者鼻子位置移動(dòng)的左右界和上下界,之后,利用圖像處理技術(shù)識(shí)別出實(shí)驗(yàn)者的鼻子位置,通過(guò)鼻子位置和這兩個(gè)界限的比例關(guān)系確定人的頭部姿勢(shì)。實(shí)驗(yàn)表明,在光線比較充足,背景不是很復(fù)雜的環(huán)境下,本文所使用的頭勢(shì)識(shí)別方法效果比較好。
20211123_619d08584dad8__基于鼻子相對(duì)位置的頭勢(shì)識(shí)別技術(shù)