功能:
首先將人臉入庫,每個人採集10張人臉影象
然後可以檢測某個人臉是否屬於這個人臉庫中的某個人
一.利用opencv開啟攝像頭並捕捉影象
二.影象預處理
1.影象灰度化
ptr[j*colorimage->width+x]=
(char)( 0.072169*colorimage->imagedata[3*(j*colorimage->width+x)]
+0.715160*colorimage->imagedata[3*(j*colorimage->width+x)+1]
+0.212671*colorimage->imagedata[3*(j*colorimage->width+x)+2]); //對rgb三個值加權平均
2.濾波去噪
它將每一畫素點的灰度值設定為該點某鄰域視窗內的所有畫素點灰度值的中值,
中值濾波常用來保護邊緣資訊,是經典的平滑雜訊的方法
3.直方圖均衡化(增強影象的對比度,用乙個變換函式)
中心思想:將直方圖從比較集中的灰度區間變換成全部灰度範圍內的均勻分布。直方圖均衡化就是對影象進行非線性拉伸,
重新分配影象畫素值,使一定灰度範圍內的畫素數量大致相同。
解決**不足或者**過度問題,增強整體對比度。
三.人臉檢測
呼叫opencv中的已經訓練好的分類器(haar特徵)
原理可以參考:
四.人臉識別
採用pca演算法實現,其中矩陣的運算用的是armadillo(高效能線性代數c++函式庫)
pca:
1.將所有樣本影象讀入m*n的矩陣中,m表示影象的個數,n表示影象的畫素個數
2.求矩陣的每列的平均值並將原矩陣減去這個平均值得到差值矩陣
3.對差值矩陣求協方差矩陣n*n(協方差矩陣表示不同隨機變數之間的關係,影象中即任意兩個畫素之間的關係)再求特徵值和特徵向量,
根據精度要求選擇不同數量的特徵向量p,得到特徵臉n*p
4.將訓練集進行降維m*n * n*p ,得到降維矩陣m*p (p遠遠小於n)
5.通過降維矩陣得到每個樣例的特徵臉(求平均值)
6.對測試影象也進行降維處理,與每個樣例的特徵臉進行歐氏距離比較,取最小值
人臉識別流程
第一步 編碼 將人臉表示為128為的向量 def face encodings face image,known face locations none,num jitters 1 return 128維人臉編碼向量 param face image 包含人臉影象 param known face ...
人臉識別的流程
記錄一下目前對人臉識別流程及識別方法的理解,以後隨著認識的提公升不斷更新 在整個過程中所使用的都是灰度化之後的。為什麼要轉化為灰度?1.識別物體最關鍵的部分是,找到物體的邊緣,就是的梯度,的梯度計算用到的就是灰度化之後的。2.顏色容易受到光照影響,難以提供關鍵資訊,最重要的是灰度化之後可以加快計算速...
人臉識別工作流程
格靈深瞳 人臉識別最新進展以及工業級大規模人臉識別實踐 簡單來講,人臉識別這個問題,就是給定兩個人臉,然後判定他們是不是同乙個人,這是它最原始的定義。它有很多應用場景,比如銀行櫃檯 海關 手機解鎖 酒店入住 網咖認證,會查身份證跟你是不是同乙個人。這個應用的主要特點是,在大多數場景下都需要你先提供乙...