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