蔡宗吟 羅國平
【摘 要】人臉識(shí)別技術(shù)在人工智能、機(jī)器識(shí)別、機(jī)器學(xué)習(xí)等領(lǐng)域具有廣泛的應(yīng)用。人臉識(shí)別技術(shù)的基礎(chǔ)是人臉區(qū)域的識(shí)別和提取,難點(diǎn)在于人眼區(qū)域提取及鑒別,本文重點(diǎn)介紹人眼區(qū)域提取及鑒別程序?qū)崿F(xiàn)。
【關(guān)鍵詞】人臉識(shí)別;感知識(shí)別技術(shù);人眼區(qū)域
計(jì)算機(jī)識(shí)別是目前人工智能領(lǐng)域研究的重點(diǎn),人臉識(shí)別是計(jì)算識(shí)別的重要內(nèi)容之一,而人眼區(qū)域提取及鑒別人臉識(shí)別的難點(diǎn),本文重點(diǎn)探討如何實(shí)現(xiàn)人眼區(qū)域提取及鑒別。
1.采用VC++設(shè)計(jì)人臉識(shí)別程序基本組成
人臉識(shí)別系統(tǒng)通過圖像采集系統(tǒng)捕捉圖像,然后通過計(jì)算相似度、二值化處理、垂直直方圖、水平直方圖、然后標(biāo)記人臉區(qū)域,邊緣提取等步驟,才能實(shí)現(xiàn)人臉識(shí)別,過程是比較復(fù)雜的。因此,能否正確標(biāo)記出人眼睛區(qū)域是人臉識(shí)別的難點(diǎn)。
2.人臉識(shí)別人眼睛區(qū)域提取
人眼睛區(qū)域提取具體算法比較復(fù)雜,需要確定人臉面部區(qū)后,才能正確提取。在人臉區(qū)域確定后,先進(jìn)行邊緣檢測,確定左右兩個(gè)眼睛的水平區(qū)域,并統(tǒng)計(jì)計(jì)算眼睛區(qū)域個(gè)數(shù)。然后進(jìn)行眼睛區(qū)域鑒別。眼睛區(qū)域鑒別算法是人眼區(qū)域提取的關(guān)鍵,具體程序算法如下:
//眼睛區(qū)域鑒別的關(guān)鍵算法VC程序。
CList
CList
int flag = 0;
CPoint tPoint(-1,-1);
for(i = 0; i { if(tempArray[i] > 0 && flag ==0) { tPoint.x = i; flag = 1; } if(tempArray[i] == 0 && flag ==1) { tPoint.y = i; myList1.AddTail(tPoint); flag = 0; } } delete tempArray; //去掉長度太小的候選者 for(i=0; i { CPoint temp(-1,-1); temp = myList1.GetAt(myList1.FindIndex(i)); int minVal = (m_rFaceRegion.right - m_rFaceRegion.left)/20; if((temp.y-temp.x)>=minVal) myList2.AddTail(temp); } myList1.RemoveAll(); //合并相鄰很緊的區(qū)域 bool quit = 1; while(quit) { bool doJoin = false; for(int i=0; i { CPoint temp1(-1,-1),temp2(-1,-1); temp1 = myList2.GetAt(myList2.FindIndex(i)); temp2 = myList2.GetAt(myList2.FindIndex(i+1)); if((temp2.x-temp1.y)<=(m_rFaceRegion.right - m_rFaceRegion.left)/40) { temp1.y = temp2.y; myList2.RemoveAt(myList2.FindIndex(i)); myList2.RemoveAt(myList2.FindIndex(i)); if(i == 0) yList2.AddHead(temp1); else myList2.InsertAfter(myList2.FindIndex(i-1),temp1); doJoin = true; break; } } if(!doJoin) quit = 0; } 通過人眼區(qū)域鑒別后,可能會(huì)出現(xiàn)沒有找到眼睛區(qū)域,或只捕捉到一只眼睛,或兩只眼睛捕捉完整,然后根據(jù)這三種情況分別處理,確認(rèn)出兩個(gè)眼睛的水平區(qū)域。關(guān)于人眼垂直區(qū)域的確定,還有比較復(fù)雜的算法程序才能實(shí)現(xiàn),限于篇幅,不再贅述。 3.實(shí)現(xiàn)測試 通過存儲(chǔ)在計(jì)算機(jī)中實(shí)際的圖片測試,人臉區(qū)域確定后,經(jīng)過實(shí)際測試,能夠正確識(shí)別出人眼睛區(qū)域,如圖1所示,實(shí)驗(yàn)證明,此種算法非常有效。 4.結(jié)論 通過多次試驗(yàn),該算法完全能夠正確提取出人眼睛區(qū)域,為人臉進(jìn)一步識(shí)別做好準(zhǔn)備。這種算法測試成功,由于C語言具有很好的可移植性,因此這種算法很容易移植到其它嵌入式設(shè)備中。 【參考文獻(xiàn)】 [1]、Visual C++ 6.0數(shù)字圖像處理 何斌、馬天予、王運(yùn)堅(jiān)、朱紅蓮. 2002。 [2]、Visual C++ 數(shù)字圖像與圖形處理,向世明 電子工業(yè)出版社 2002。