1. opencv實現人臉識別有多少種演算法
OpenCV在2.4.1以後的版本中開始自帶人臉識別,共有三種人臉識別演算法的實現,分別是PCA , LDA , LBPH. OpenCV2創建方法如下:
cv::Ptr<cv::FaceRecognizer>facerPCA,facerLDA;
cv::Ptr<cv::FaceRecognizer>facerLBPH=cv::createLBPHFaceRecognizer();
facerPCA=cv::Algorithm::create<cv::FaceRecognizer>("FaceRecognizer.Eigenfaces");
facerLDA=cv::Algorithm::create<cv::FaceRecognizer>("FaceRecognizer.Fisherfaces");
在OpenCV3中,人臉識別的實現被移動到第三方庫opencv_contrib中,而且OpenCV3版本的各個版本3.0.0,3.2.0,3.3.0的創建方法均不同,且都被移動到cv::face::名字空間下.
2. 人臉識別哪種演算法比較好
二維主要有:
1.基於模板匹配的方法;2.基於奇異值特徵方法3.子空間分析法;4.局部保持投影(Locality Preserving Projections,LPP)
三維人臉識別方法有:
1.基於圖像特徵的方法;2.基於模型可變參數的方法。
每種演算法都有自己的優缺點,不好說誰最好。
3. 人臉識別需要用到哪些演算法
目前最普遍的是主成分分析法(PCA),但是由於人臉是非線性的,PCA這種線性方法往往會丟失人臉上的許多非線性成分,因而後面又出現了流形學習的演算法,具體有這些:PCA、ICA、ISOMAP、KPCA、LPCA等等
4. 人臉識別身份系統的工作原理是什麼
5. 基於神經網路的人臉識別有哪些演算法
上次的人臉識別模擬,我們用的是PCA和SVM方法進行人臉識別,該方法仍屬於機器學習領域,未涉及神經網路的知識。這次使用的方法是基於PCA和BP神經網路對人臉識別。
其中,PCA的功能和上次一致,是用來對20張圖片進行降維處理,最終產生8個主成分作為BP神經網路的輸入;神經網路的輸出層採用4個神經元,用來區分兩個不同的人臉;本例的BP神經網路採用8-10-4的三層結構,輸入層神經元數量選取8個,隱含層神經元數量選取10個,輸出層神經元數量選取4個。
6. 人臉識別的演算法,怎麼從兩張圖片中找出人臉 的部分,並比較兩個人是否是同一個人。
OPENCV里就有,我大4的時候用過。安裝後,DATA目錄下,haarcascades目錄下,haarcascade_frontalface_default.xml就不錯。這是人臉識別的數據。
用法請根據這個文件名找吧,我記得就是調用OPENCV里的某個函數(C++),用這個文件名和圖作參數,返回的就是圖中人臉的位置。
嘿嘿,50分么,下面是我以前的代碼,這里是你用得著的部分:
const char* cascadeFile = "haarcascade_frontalface_alt.xml";
const char* folder = "C:\\Program Files\\OpenCV\\data\\haarcascades\\";
char path[1024];
sprintf(path, "%s%s", folder, cascadeFile);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*) cvLoad(path, 0, 0, 0);
//然後cascade就存著需要的那個CvHaarClassifierCascade了。
......
CvSeq* faces = cvHaarDetectObjects(img, cascade, storage,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(source->getWidth() >> 7, source->getHeight() >> 7));
這句中,img是一個IplImage*,我自己的項目是從攝像頭弄來的,我估計你需要直接用opencv載入圖片。cascade就是載入的OPENCV的樣本數據,storage是一個空間,我用的CvMemStorage* storage = cvCreateMemStorage(0)創建的,detect objects之前我還用了cvClearMemStorage(storage),1.1是縮放,2是檢測像素大小,CV_HAAR_DO_CANNY_PRUNING是比較方法, 一個OPENCV自帶的常量。最後cvSize的返回值是允許的最小臉部大小。每個變數都解釋到了吧。
之後faces->total就是找到幾個臉。用cvGetSeqElem(faces, i)來取每個臉的數據,取出來的東西是(CvRect*),要記得TYPECAST,例如CvRect face1 = *((CvRect*) cvGetSeqElem(faces, 0))。這樣得到的CvRect有4個變數face1.x,face1.y,face1.width,face1.height就是人臉在圖片中的位置了。
7. 人臉識別原理及演算法
人臉識別原理就是指在動態的場景與復雜的背景中判斷是否存在面像,並分離出這種面像。
人臉識別是一項熱門的計算機技術研究領域,其中包括人臉追蹤偵測,自動調整影像放大,夜間紅外偵測,自動調整曝光強度等技術。
人臉識別技術是基於人的臉部特徵,對輸入的人臉圖像或者視頻流 . 首先判斷其是否存在人臉 , 如果存在人臉,則進一步的給出每個臉的位置、大小和各個主要面部器官的位置信息。並依據這些信息,進一步提取每個人臉中所蘊涵的身份特徵,並將其與已知的人臉進行對比,從而識別每個人臉的身份。
一般來說,人臉識別系統包括圖像攝取、人臉定位、圖像預處理、以及人臉識別(身份確認或者身份查找)。系統輸入一般是一張或者一系列含有未確定身份的人臉圖像,以及人臉資料庫中的若干已知身份的人臉圖象或者相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。
人臉識別是採用的分析演算法。
人臉識別技術中被廣泛採用的區域特徵分析演算法,它融合了計算機圖像處理技術與生物統計學原理於一體,利用計算機圖像處理技術從視頻中提取人像特徵點,利用生物統計學的原理進行分析建立數學模型,即人臉特徵模板。利用已建成的人臉特徵模板與被測者的人的面像進行特徵分析,根據分析的結果來給出一個相似值。通過這個值即可確定是否為同一人。
8. 人臉識別的演算法
1、人體面貌識別技術的內容
人體面貌識別技術包含三個部分:
(1) 人體面貌檢測
面貌檢測是指在動態的場景與復雜的背景中判斷是否存在面像,並分離出這種面像。一般有下列幾種方法:
①參考模板法
首先設計一個或數個標准人臉的模板,然後計算測試採集的樣品與標准模板之間的匹配程度,並通過閾值來判斷是否存在人臉;
②人臉規則法
由於人臉具有一定的結構分布特徵,所謂人臉規則的方法即提取這些特徵生成相應的規則以判斷測試樣品是否包含人臉;
③樣品學習法
這種方法即採用模式識別中人工神經網路的方法,即通過對面像樣品集和非面像樣品集的學習產生分類器;
④膚色模型法
這種方法是依據面貌膚色在色彩空間中分布相對集中的規律來進行檢測。
⑤特徵子臉法
這種方法是將所有面像集合視為一個面像子空間,並基於檢測樣品與其在子孔間的投影之間的距離判斷是否存在面像。
值得提出的是,上述5種方法在實際檢測系統中也可綜合採用。
(2)人體面貌跟蹤
面貌跟蹤是指對被檢測到的面貌進行動態目標跟蹤。具體採用基於模型的方法或基於運動與模型相結合的方法。
此外,利用膚色模型跟蹤也不失為一種簡單而有效的手段。
(3)人體面貌比對
面貌比對是對被檢測到的面貌像進行身份確認或在面像庫中進行目標搜索。這實際上就是說,將采樣到的面像與庫存的面像依次進行比對,並找出最佳的匹配對象。所以,面像的描述決定了面像識別的具體方法與性能。目前主要採用特徵向量與面紋模板兩種描述方法:
①特徵向量法
該方法是先確定眼虹膜、鼻翼、嘴角等面像五官輪廓的大小、位置、距離等屬性,然後再計算出它們的幾何特徵量,而這些特徵量形成一描述該面像的特徵向量。
②面紋模板法
該方法是在庫中存貯若干標准面像模板或面像器官模板,在進行比對時,將采樣面像所有象素與庫中所有模板採用歸一化相關量度量進行匹配。
此外,還有採用模式識別的自相關網路或特徵與模板相結合的方法。
人體面貌識別技術的核心實際為「局部人體特徵分析」和「圖形/神經識別演算法。」這種演算法是利用人體面部各器官及特徵部位的方法。如對應幾何關系多數據形成識別參數與資料庫中所有的原始參數進行比較、判斷與確認。一般要求判斷時間低於1秒。
2、人體面貌的識別過程
一般分三步:
(1)首先建立人體面貌的面像檔案。即用攝像機採集單位人員的人體面貌的面像文件或取他們的照片形成面像文件,並將這些面像文件生成面紋(Faceprint)編碼貯存起來。
(2)獲取當前的人體面像
即用攝像機捕捉的當前出入人員的面像,或取照片輸入,並將當前的面像文件生成面紋編碼。
(3)用當前的面紋編碼與檔案庫存的比對
即將當前的面像的面紋編碼與檔案庫存中的面紋編碼進行檢索比對。上述的「面紋編碼」方式是根據人體面貌臉部的本質特徵和開頭來工作的。這種面紋編碼可以抵抗光線、皮膚色調、面部毛發、發型、眼鏡、表情和姿態的變化,具有強大的可靠性,從而使它可以從百萬人中精確地辯認出某個人。
人體面貌的識別過程,利用普通的圖像處理設備就能自動、連續、實時地完成。
9. 人臉識別技術的核心演算法是什麼
人臉識別核心演算法包括檢測定位、建模、紋理變換、表情變換、模型統計訓練、識別匹配等關鍵步驟,其中最關鍵的技術包括兩部分:人臉檢測(Face Detect)和人臉識別(Face Identification)。
檢測技術核心稱為:迭代動態局部特徵分析(SDLFA),它是以國際通用的局域特徵分析(LFA)和動態局域特徵分析(DLFA)為基礎,並且針對現實業務場景進行了全面的演算法增強及結果優化,識別技術核心稱為:實時面部特徵匹配(RFFM),其識別特徵數據緊湊,特徵演算法准確高效,是國際國內獨創性的識別技術。
10. 人臉識別的識別演算法
人臉識別的基本方法
人臉識別的方法很多,以下介紹一些主要的人臉識別方法。
(1)幾何特徵的人臉識別方法
幾何特徵可以是眼、鼻、嘴等的形狀和它們之間的幾何關系(如相互之間的距離)。這些演算法識別速度快,需要的內存小,但識別率較低。
(2)基於特徵臉(PCA)的人臉識別方法
特徵臉方法是基於KL變換的人臉識別方法,KL變換是圖像壓縮的一種最優正交變換。高維的圖像空間經過KL變換後得到一組新的正交基,保留其中重要的正交基,由這些基可以張成低維線性空間。如果假設人臉在這些低維線性空間的投影具有可分性,就可以將這些投影用作識別的特徵矢量,這就是特徵臉方法的基本思想。這些方法需要較多的訓練樣本,而且完全是基於圖像灰度的統計特性的。目前有一些改進型的特徵臉方法。
(3)神經網路的人臉識別方法
神經網路的輸入可以是降低解析度的人臉圖像、局部區域的自相關函數、局部紋理的二階矩等。這類方法同樣需要較多的樣本進行訓練,而在許多應用中,樣本數量是很有限的。
(4)彈性圖匹配的人臉識別方法
彈性圖匹配法在二維的空間中定義了一種對於通常的人臉變形具有一定的不變性的距離,並採用屬性拓撲圖來代表人臉,拓撲圖的任一頂點均包含一特徵向量,用來記錄人臉在該頂點位置附近的信息。該方法結合了灰度特性和幾何因素,在比對時可以允許圖像存在彈性形變,在克服表情變化對識別的影響方面收到了較好的效果,同時對於單個人也不再需要多個樣本進行訓練。
(5)線段Hausdorff 距離(LHD) 的人臉識別方法
心理學的研究表明,人類在識別輪廓圖(比如漫畫)的速度和准確度上絲毫不比識別灰度圖差。LHD是基於從人臉灰度圖像中提取出來的線段圖的,它定義的是兩個線段集之間的距離,與眾不同的是,LHD並不建立不同線段集之間線段的一一對應關系,因此它更能適應線段圖之間的微小變化。實驗結果表明,LHD在不同光照條件下和不同姿態情況下都有非常出色的表現,但是它在大表情的情況下識別效果不好。
(6)支持向量機(SVM) 的人臉識別方法
近年來,支持向量機是統計模式識別領域的一個新的熱點,它試圖使得學習機在經驗風險和泛化能力上達到一種妥協,從而提高學習機的性能。支持向量機主要解決的是一個2分類問題,它的基本思想是試圖把一個低維的線性不可分的問題轉化成一個高維的線性可分的問題。通常的實驗結果表明SVM有較好的識別率,但是它需要大量的訓練樣本(每類300個),這在實際應用中往往是不現實的。而且支持向量機訓練時間長,方法實現復雜,該函數的取法沒有統一的理論。
人臉識別的方法很多,當前的一個研究方向是多方法的融合,以提高識別率。
在人臉識別中,第一類的變化是應該放大而作為區分個體的標準的,而第二類的變化應該消除,因為它們可以代表同一個個體。通常稱第一類變化為類間變化,而稱第二類變化為類內變化。對於人臉,類內變化往往大於類間變化,從而使在受類內變化干擾的情況下利用類間變化區分個體變得異常困難。正是基於上述原因,一直到21 世紀初,國外才開始出現人臉識別的商用,但由於人臉識別演算法非常復雜,只能採用龐大的伺服器,基於強大的計算機平台。
如果可以的話,可以Te一下colorreco,更好的技術解答。