摘 要:計算機人臉識別技術是利用計算機對人臉圖像進行分析和理解的技術,Open CV是用于圖像處理軟件,具有很好的效率,文章主要基于Open CV結合隱馬爾科夫模型研究用于人臉識別的模型,并提出一般研究步驟,經過大量室內試驗證明基于Open CV的研究在人臉識別中具有高效性。
關鍵詞:Open CV;隱馬爾科夫模型;人臉識別
人們對于圖片人臉識別的研究可以追溯到20世紀60年代,到目前為止發展以逐漸成熟,通常構建人臉識別系統需要使用人臉圖像采集、人臉識別預處理以及身份查找等,人臉識別在很多方面都有很大的應用價值,Open CV是一種基于開源計算機視覺庫的軟件,通常應用于人臉識別中、圖像分割以及人機互動等中,文章主要研究基于Open CV的人臉識別。
1 系統組成和開發環境
文章利用Open CV的人臉識別系統是在Linux操作系統下開發出的圖形界面,使用OpenCV處理庫中提供的相關功能進行圖像數據的采集,調用Harry分類器對采集的圖像進行人臉檢測,檢測得出的結果再利用PCA算法進行省份識別,利用Camshift和Lucas-Kanade算法進行人臉表情識別。圖片來自于Basler acA640-100gc相機,此相機操作系統為Fedora 10,在編譯OpenCV之前為了處理圖像還需要編譯FFmpeg。
2 基于OpenCV人臉識別研究
人臉識別在當前人工智能中是一個重要的課題,很多學者提出了多種算法,但是在動態圖像的人臉識別中研究不是太多。文章主要采用OpenCv軟件研究人臉識別,保存了需要的重要信息,提高配識別率。
應用系統開發設計主要流程為圖1所示。圖像的采集主要通過cvCaptureFormCam相機得到,并利用相關文件對返回的結構進行設置(部分):
IplImage*ffame;
CvCapture*camera=0:
cvSetCaptureProperty(camera,
cvSetCaptureProperty(camera,
CV_CAP_PROP_-FRAME_WIDTH,320);
利用函數開啟定時器,每個固定的時間發送槽函數,并將槽函數放入緩存中,在從內部緩存中使用cvGrabFramea將圖像讀取數據,在qt中顯出并轉化為QPixmap類型。現根據圖像大小分配到緩沖區綠,再把緩沖區指針拷貝到Qimage的指針中,在進一步循環把圖像的數據拷貝到緩沖區內,程序如下(部分):
for(int Y=0;Y
QlmagePtr[O]_iplImagePtr[O];
QlmagePtr[21_ipllmagePtr[2];
QlmagePtr[3]=0;
iplImagePtr+=3;}進而再利用setPixmap函數進行顯示。
在圖像的預處理環節中,由于目前大多數的臉部檢測算法對于人臉圖像的大小以及位置等都比較敏感,因此需要對檢測部位進行灰度處理。人臉檢測器利用XML中的數據來搜索圖像的位置,OpenCV即是采用這種人臉檢測器進行檢測,最終監測的數據結果保存到cvRect中,識別基本步驟為先讀入訓練圖像,再創造PVA子空間,把數據投影到子空間,再訓練結果,把結果進行保存進行圖像識別。特征檢測方法的思想為圖像向量經過K-L變換后轉變為低維向量,進而形成特征子空間,把圖像投影到低維空間中。在識別人臉時,僅僅需要對比數據庫中的目標樣本集合投影系數,就可以確定人臉圖片屬于哪一類。在使用PCA算法時需要經歷生成階段和識別階段。
在訓練階段先在訓練臉照片集上計算特征臉,把隨對應的圖片最大特征值,這些圖片定義為元空間的一個子空間,若是需要添加新的圖像,這個子集可以進行更新和重新計算。在這個子集中圖片數據投影到特征臉上,進而計算權重向量,也即是各個圖片數據的坐標值。OpenCV先使用cvLoadImage函數將圖片轉化為灰度圖片,在進行PCA操作,計算出向量的數組,利用函數將圖片的投影到PCA子空間上,把結果保存到矩陣數組中,把結果保存到XML文件中。在識別新的人臉圖片是先給予前面得到的特征臉,將采集到的圖片投影到特征臉中,計算權重向量,判斷圖片是否屬于人臉圖像,若是判斷結果為是,就需要根據前面的極端的權重向量規劃到最初計算的個體中或是規劃為新的個體圖片。簡單而言就是根據權重向量來判斷圖片的性質。進一步更新特征臉,如實一個未知的人臉圖像沒有什么記錄,但是又出現了很多次,此時就需要把他的特征向量添加到新的個體中。OpenCV實現點用函數采集如片映射到PCA子空間上。如圖2是得到的部分特征臉圖像。
針對臉部表情識別而言,主要是采用Camshift函數進行計算,這種計算方法能夠利用目標的顏色直方圖模擬將圖像轉換為顏色概率分布圖,把搜索窗的位置和大小進行初始化,得出結果,并根據所得的結果自適應調整搜索窗口的位置和大小,從而定位中心位置,Camshift具有解決目標圖像變形的優勢,這個函數本身對于系統資源的要求度比較低,時間都復雜度也不高,因此在簡單背景下具有很強的跟蹤效果。具體而言OpenCV來實現臉部表情的識別需要分為以下幾步,首先OpenCV充分調動cvCvtColor()函數,將色彩空間的數據轉化到HSI空間,接著在調用vCreateHist()函數來計算ID直方圖,在調用vCamShift()函數計算圖片的位置和面積。這種光流算法能夠準確的得出不同圖像間的的細微變化,Lucas-Kanade光流算法能夠計算兩幀在一定時間段內的每個像素點位置的移動。在利用這種光流算法時需要注意先使用shi-Tomasi算法來提取圖像的特征點,也就是找到圖片中感興趣的需要跟蹤的點集,并定義為第一幀的數目,找到特征值,接下來是使用函數實現光溜計算的系數迭代版本。輸出函數主要包括圖像本身的特征數值點,通過這些點來確定局部區域的特征,如眼部以及嘴巴等,如下圖3是追蹤眼睛眨動圖像眼睛通過比較數值的變化,來對比臉部的一些簡單表情。
3 結束語
綜上所述,文章先簡單介紹了該研究的系統組成和開發環境,重點講述以OpenCV圖像處理軟件為中心,設計人臉識別系統。本文設計的人臉識別系統具有很好的實用性可識別能力、準確性和可移植性,減小了識別誤差,但是還存在很多方面的不足,如若是主機上控制多個控制端,就會占用很大的內存,識別準確率和種類還有待提高,這些還需要更多的人去努力。
參考文獻
[1]劉靜.基于OpenCV機器視覺庫的人臉圖像預處理方法研究與實現[J].電子設計工程,2012,20(16):186-187,190.
[2]梁路宏,艾海舟,徐光聿,等.人臉檢測研究綜述[J].計算機學報,2002,25(05):449-458.
[3]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
[4]聶偉樂,瞿建榮.基于OpenCV的運動目標光流算法[J]仿真應用光學,2008,29(6):867-869.
[5]余九華,王敬東,李鵬.基于Camshifl的人臉跟蹤算法計算機技術與發展[J].白動畫學報,2008,18(9):12-15.
[6]劉青山,盧漢清,馬頌德.綜述人臉識別中的子空問方法[J].白動化學報,2003,29(6):900-911.
[7]沈永增,劉小磊.眼部疲勞狀態檢測算法的研究與實現[J].計算機應用與軟件,2011,18(03):106-109.
[8]伍文峰,王虎幫.基于模板匹配的目標識別算法的設計與實用[J].計算機應用,2006,6(21:133-134.
[9]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
作者簡介:呂晶晶(1983,6-),女,漢族,江蘇江都人,高校講師,學士學位,研究方向:電子信息。
摘 要:計算機人臉識別技術是利用計算機對人臉圖像進行分析和理解的技術,Open CV是用于圖像處理軟件,具有很好的效率,文章主要基于Open CV結合隱馬爾科夫模型研究用于人臉識別的模型,并提出一般研究步驟,經過大量室內試驗證明基于Open CV的研究在人臉識別中具有高效性。
關鍵詞:Open CV;隱馬爾科夫模型;人臉識別
人們對于圖片人臉識別的研究可以追溯到20世紀60年代,到目前為止發展以逐漸成熟,通常構建人臉識別系統需要使用人臉圖像采集、人臉識別預處理以及身份查找等,人臉識別在很多方面都有很大的應用價值,Open CV是一種基于開源計算機視覺庫的軟件,通常應用于人臉識別中、圖像分割以及人機互動等中,文章主要研究基于Open CV的人臉識別。
1 系統組成和開發環境
文章利用Open CV的人臉識別系統是在Linux操作系統下開發出的圖形界面,使用OpenCV處理庫中提供的相關功能進行圖像數據的采集,調用Harry分類器對采集的圖像進行人臉檢測,檢測得出的結果再利用PCA算法進行省份識別,利用Camshift和Lucas-Kanade算法進行人臉表情識別。圖片來自于Basler acA640-100gc相機,此相機操作系統為Fedora 10,在編譯OpenCV之前為了處理圖像還需要編譯FFmpeg。
2 基于OpenCV人臉識別研究
人臉識別在當前人工智能中是一個重要的課題,很多學者提出了多種算法,但是在動態圖像的人臉識別中研究不是太多。文章主要采用OpenCv軟件研究人臉識別,保存了需要的重要信息,提高配識別率。
應用系統開發設計主要流程為圖1所示。圖像的采集主要通過cvCaptureFormCam相機得到,并利用相關文件對返回的結構進行設置(部分):
IplImage*ffame;
CvCapture*camera=0:
cvSetCaptureProperty(camera,
cvSetCaptureProperty(camera,
CV_CAP_PROP_-FRAME_WIDTH,320);
利用函數開啟定時器,每個固定的時間發送槽函數,并將槽函數放入緩存中,在從內部緩存中使用cvGrabFramea將圖像讀取數據,在qt中顯出并轉化為QPixmap類型。現根據圖像大小分配到緩沖區綠,再把緩沖區指針拷貝到Qimage的指針中,在進一步循環把圖像的數據拷貝到緩沖區內,程序如下(部分):
for(int Y=0;Y
QlmagePtr[O]_iplImagePtr[O];
QlmagePtr[21_ipllmagePtr[2];
QlmagePtr[3]=0;
iplImagePtr+=3;}進而再利用setPixmap函數進行顯示。
在圖像的預處理環節中,由于目前大多數的臉部檢測算法對于人臉圖像的大小以及位置等都比較敏感,因此需要對檢測部位進行灰度處理。人臉檢測器利用XML中的數據來搜索圖像的位置,OpenCV即是采用這種人臉檢測器進行檢測,最終監測的數據結果保存到cvRect中,識別基本步驟為先讀入訓練圖像,再創造PVA子空間,把數據投影到子空間,再訓練結果,把結果進行保存進行圖像識別。特征檢測方法的思想為圖像向量經過K-L變換后轉變為低維向量,進而形成特征子空間,把圖像投影到低維空間中。在識別人臉時,僅僅需要對比數據庫中的目標樣本集合投影系數,就可以確定人臉圖片屬于哪一類。在使用PCA算法時需要經歷生成階段和識別階段。
在訓練階段先在訓練臉照片集上計算特征臉,把隨對應的圖片最大特征值,這些圖片定義為元空間的一個子空間,若是需要添加新的圖像,這個子集可以進行更新和重新計算。在這個子集中圖片數據投影到特征臉上,進而計算權重向量,也即是各個圖片數據的坐標值。OpenCV先使用cvLoadImage函數將圖片轉化為灰度圖片,在進行PCA操作,計算出向量的數組,利用函數將圖片的投影到PCA子空間上,把結果保存到矩陣數組中,把結果保存到XML文件中。在識別新的人臉圖片是先給予前面得到的特征臉,將采集到的圖片投影到特征臉中,計算權重向量,判斷圖片是否屬于人臉圖像,若是判斷結果為是,就需要根據前面的極端的權重向量規劃到最初計算的個體中或是規劃為新的個體圖片。簡單而言就是根據權重向量來判斷圖片的性質。進一步更新特征臉,如實一個未知的人臉圖像沒有什么記錄,但是又出現了很多次,此時就需要把他的特征向量添加到新的個體中。OpenCV實現點用函數采集如片映射到PCA子空間上。如圖2是得到的部分特征臉圖像。
針對臉部表情識別而言,主要是采用Camshift函數進行計算,這種計算方法能夠利用目標的顏色直方圖模擬將圖像轉換為顏色概率分布圖,把搜索窗的位置和大小進行初始化,得出結果,并根據所得的結果自適應調整搜索窗口的位置和大小,從而定位中心位置,Camshift具有解決目標圖像變形的優勢,這個函數本身對于系統資源的要求度比較低,時間都復雜度也不高,因此在簡單背景下具有很強的跟蹤效果。具體而言OpenCV來實現臉部表情的識別需要分為以下幾步,首先OpenCV充分調動cvCvtColor()函數,將色彩空間的數據轉化到HSI空間,接著在調用vCreateHist()函數來計算ID直方圖,在調用vCamShift()函數計算圖片的位置和面積。這種光流算法能夠準確的得出不同圖像間的的細微變化,Lucas-Kanade光流算法能夠計算兩幀在一定時間段內的每個像素點位置的移動。在利用這種光流算法時需要注意先使用shi-Tomasi算法來提取圖像的特征點,也就是找到圖片中感興趣的需要跟蹤的點集,并定義為第一幀的數目,找到特征值,接下來是使用函數實現光溜計算的系數迭代版本。輸出函數主要包括圖像本身的特征數值點,通過這些點來確定局部區域的特征,如眼部以及嘴巴等,如下圖3是追蹤眼睛眨動圖像眼睛通過比較數值的變化,來對比臉部的一些簡單表情。
3 結束語
綜上所述,文章先簡單介紹了該研究的系統組成和開發環境,重點講述以OpenCV圖像處理軟件為中心,設計人臉識別系統。本文設計的人臉識別系統具有很好的實用性可識別能力、準確性和可移植性,減小了識別誤差,但是還存在很多方面的不足,如若是主機上控制多個控制端,就會占用很大的內存,識別準確率和種類還有待提高,這些還需要更多的人去努力。
參考文獻
[1]劉靜.基于OpenCV機器視覺庫的人臉圖像預處理方法研究與實現[J].電子設計工程,2012,20(16):186-187,190.
[2]梁路宏,艾海舟,徐光聿,等.人臉檢測研究綜述[J].計算機學報,2002,25(05):449-458.
[3]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
[4]聶偉樂,瞿建榮.基于OpenCV的運動目標光流算法[J]仿真應用光學,2008,29(6):867-869.
[5]余九華,王敬東,李鵬.基于Camshifl的人臉跟蹤算法計算機技術與發展[J].白動畫學報,2008,18(9):12-15.
[6]劉青山,盧漢清,馬頌德.綜述人臉識別中的子空問方法[J].白動化學報,2003,29(6):900-911.
[7]沈永增,劉小磊.眼部疲勞狀態檢測算法的研究與實現[J].計算機應用與軟件,2011,18(03):106-109.
[8]伍文峰,王虎幫.基于模板匹配的目標識別算法的設計與實用[J].計算機應用,2006,6(21:133-134.
[9]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
作者簡介:呂晶晶(1983,6-),女,漢族,江蘇江都人,高校講師,學士學位,研究方向:電子信息。
摘 要:計算機人臉識別技術是利用計算機對人臉圖像進行分析和理解的技術,Open CV是用于圖像處理軟件,具有很好的效率,文章主要基于Open CV結合隱馬爾科夫模型研究用于人臉識別的模型,并提出一般研究步驟,經過大量室內試驗證明基于Open CV的研究在人臉識別中具有高效性。
關鍵詞:Open CV;隱馬爾科夫模型;人臉識別
人們對于圖片人臉識別的研究可以追溯到20世紀60年代,到目前為止發展以逐漸成熟,通常構建人臉識別系統需要使用人臉圖像采集、人臉識別預處理以及身份查找等,人臉識別在很多方面都有很大的應用價值,Open CV是一種基于開源計算機視覺庫的軟件,通常應用于人臉識別中、圖像分割以及人機互動等中,文章主要研究基于Open CV的人臉識別。
1 系統組成和開發環境
文章利用Open CV的人臉識別系統是在Linux操作系統下開發出的圖形界面,使用OpenCV處理庫中提供的相關功能進行圖像數據的采集,調用Harry分類器對采集的圖像進行人臉檢測,檢測得出的結果再利用PCA算法進行省份識別,利用Camshift和Lucas-Kanade算法進行人臉表情識別。圖片來自于Basler acA640-100gc相機,此相機操作系統為Fedora 10,在編譯OpenCV之前為了處理圖像還需要編譯FFmpeg。
2 基于OpenCV人臉識別研究
人臉識別在當前人工智能中是一個重要的課題,很多學者提出了多種算法,但是在動態圖像的人臉識別中研究不是太多。文章主要采用OpenCv軟件研究人臉識別,保存了需要的重要信息,提高配識別率。
應用系統開發設計主要流程為圖1所示。圖像的采集主要通過cvCaptureFormCam相機得到,并利用相關文件對返回的結構進行設置(部分):
IplImage*ffame;
CvCapture*camera=0:
cvSetCaptureProperty(camera,
cvSetCaptureProperty(camera,
CV_CAP_PROP_-FRAME_WIDTH,320);
利用函數開啟定時器,每個固定的時間發送槽函數,并將槽函數放入緩存中,在從內部緩存中使用cvGrabFramea將圖像讀取數據,在qt中顯出并轉化為QPixmap類型。現根據圖像大小分配到緩沖區綠,再把緩沖區指針拷貝到Qimage的指針中,在進一步循環把圖像的數據拷貝到緩沖區內,程序如下(部分):
for(int Y=0;Y
QlmagePtr[O]_iplImagePtr[O];
QlmagePtr[21_ipllmagePtr[2];
QlmagePtr[3]=0;
iplImagePtr+=3;}進而再利用setPixmap函數進行顯示。
在圖像的預處理環節中,由于目前大多數的臉部檢測算法對于人臉圖像的大小以及位置等都比較敏感,因此需要對檢測部位進行灰度處理。人臉檢測器利用XML中的數據來搜索圖像的位置,OpenCV即是采用這種人臉檢測器進行檢測,最終監測的數據結果保存到cvRect中,識別基本步驟為先讀入訓練圖像,再創造PVA子空間,把數據投影到子空間,再訓練結果,把結果進行保存進行圖像識別。特征檢測方法的思想為圖像向量經過K-L變換后轉變為低維向量,進而形成特征子空間,把圖像投影到低維空間中。在識別人臉時,僅僅需要對比數據庫中的目標樣本集合投影系數,就可以確定人臉圖片屬于哪一類。在使用PCA算法時需要經歷生成階段和識別階段。
在訓練階段先在訓練臉照片集上計算特征臉,把隨對應的圖片最大特征值,這些圖片定義為元空間的一個子空間,若是需要添加新的圖像,這個子集可以進行更新和重新計算。在這個子集中圖片數據投影到特征臉上,進而計算權重向量,也即是各個圖片數據的坐標值。OpenCV先使用cvLoadImage函數將圖片轉化為灰度圖片,在進行PCA操作,計算出向量的數組,利用函數將圖片的投影到PCA子空間上,把結果保存到矩陣數組中,把結果保存到XML文件中。在識別新的人臉圖片是先給予前面得到的特征臉,將采集到的圖片投影到特征臉中,計算權重向量,判斷圖片是否屬于人臉圖像,若是判斷結果為是,就需要根據前面的極端的權重向量規劃到最初計算的個體中或是規劃為新的個體圖片。簡單而言就是根據權重向量來判斷圖片的性質。進一步更新特征臉,如實一個未知的人臉圖像沒有什么記錄,但是又出現了很多次,此時就需要把他的特征向量添加到新的個體中。OpenCV實現點用函數采集如片映射到PCA子空間上。如圖2是得到的部分特征臉圖像。
針對臉部表情識別而言,主要是采用Camshift函數進行計算,這種計算方法能夠利用目標的顏色直方圖模擬將圖像轉換為顏色概率分布圖,把搜索窗的位置和大小進行初始化,得出結果,并根據所得的結果自適應調整搜索窗口的位置和大小,從而定位中心位置,Camshift具有解決目標圖像變形的優勢,這個函數本身對于系統資源的要求度比較低,時間都復雜度也不高,因此在簡單背景下具有很強的跟蹤效果。具體而言OpenCV來實現臉部表情的識別需要分為以下幾步,首先OpenCV充分調動cvCvtColor()函數,將色彩空間的數據轉化到HSI空間,接著在調用vCreateHist()函數來計算ID直方圖,在調用vCamShift()函數計算圖片的位置和面積。這種光流算法能夠準確的得出不同圖像間的的細微變化,Lucas-Kanade光流算法能夠計算兩幀在一定時間段內的每個像素點位置的移動。在利用這種光流算法時需要注意先使用shi-Tomasi算法來提取圖像的特征點,也就是找到圖片中感興趣的需要跟蹤的點集,并定義為第一幀的數目,找到特征值,接下來是使用函數實現光溜計算的系數迭代版本。輸出函數主要包括圖像本身的特征數值點,通過這些點來確定局部區域的特征,如眼部以及嘴巴等,如下圖3是追蹤眼睛眨動圖像眼睛通過比較數值的變化,來對比臉部的一些簡單表情。
3 結束語
綜上所述,文章先簡單介紹了該研究的系統組成和開發環境,重點講述以OpenCV圖像處理軟件為中心,設計人臉識別系統。本文設計的人臉識別系統具有很好的實用性可識別能力、準確性和可移植性,減小了識別誤差,但是還存在很多方面的不足,如若是主機上控制多個控制端,就會占用很大的內存,識別準確率和種類還有待提高,這些還需要更多的人去努力。
參考文獻
[1]劉靜.基于OpenCV機器視覺庫的人臉圖像預處理方法研究與實現[J].電子設計工程,2012,20(16):186-187,190.
[2]梁路宏,艾海舟,徐光聿,等.人臉檢測研究綜述[J].計算機學報,2002,25(05):449-458.
[3]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
[4]聶偉樂,瞿建榮.基于OpenCV的運動目標光流算法[J]仿真應用光學,2008,29(6):867-869.
[5]余九華,王敬東,李鵬.基于Camshifl的人臉跟蹤算法計算機技術與發展[J].白動畫學報,2008,18(9):12-15.
[6]劉青山,盧漢清,馬頌德.綜述人臉識別中的子空問方法[J].白動化學報,2003,29(6):900-911.
[7]沈永增,劉小磊.眼部疲勞狀態檢測算法的研究與實現[J].計算機應用與軟件,2011,18(03):106-109.
[8]伍文峰,王虎幫.基于模板匹配的目標識別算法的設計與實用[J].計算機應用,2006,6(21:133-134.
[9]李英,賴劍煌,黃瓊燕,等.非均勻光照下的人臉表情多狀態檢測與分類[J].中山大學學報,2006,45(05):17-21.
作者簡介:呂晶晶(1983,6-),女,漢族,江蘇江都人,高校講師,學士學位,研究方向:電子信息。