在一般環境中識別出人臉。
本實驗所**的是一般環境影象中單個正面端正人臉的檢測問題。這種條件下的人臉檢測的方法主要有模板匹配方法、可變形模板方法等。概括的說,基於模板匹配的方法是在圖形灰度上直接比較目標模板和候選影象區域之間的相似性,而基於特徵匹配的方法是比較從影象中抽取的一定特徵的相似性。
本實驗主要用到兩種模板:雙眼模板和不同長寬比的模板。在檢測時首先使用雙眼模板進行粗篩選,然後使用不同長寬比的人臉模板確定出區域的位置和範圍,接著通過確定出來的位置和匹配模板的相似度程度來確定是否是人臉。
模板生成,我們在人臉檢測中使用了 6
個模板:乙個用於初篩選的雙眼模板,五個用於檢測不同長寬比的人臉模板。採用多個人臉模板是為了適應不同人臉部的不同長寬比。模板是通過對多個樣本平均構造出來的。首先在選取的樣本影象上用手工畫出人臉的區域作為人臉樣本。由於各個樣本的尺度大小和灰度分布不同,因此首先對他們進行尺度和灰度標準化,然後將所用樣本取灰度平均值並壓縮到需要的尺度作為原始模板。拷貝原始模板的眼睛部分,進行灰度分布標準化後作為雙眼模板;對原始模板分別按照
1:0.9、1
:1、1:1.、1
:2、1:1.3
的寬長比變形,進行灰度分布標準化後作為人臉模板。
在模板生成中最主要的工作是影象的尺度變換和灰度分布標準化。
尺度變換主要是基於線性插值的重取樣方法。
將影象看成乙個二維矩陣 d[w][h],
其中 w和 h
分別表示影象的寬和高。
1.影象的灰度值
2.灰度分布的方差:
3.灰度均衡化對於輸入的每個樣本影象,為了將其灰度平均值和方差變換到時先設定的灰度平均值 和方差,從而樣本中每個畫素點的灰度值進行如下的變換:
假設人臉模板的灰度矩陣為 t[m][n]
,灰度均值為 ,均方差為,輸入影象區域的灰度矩陣為 r[m][n]
,灰度均值為 ,均方差為 ,那麼他們之間的相關係數 r(t,r)
和對應畫素灰度值得平均偏差
d(t,r)f
分別為:
r(t,r)越大表示模板與輸入影象區域的匹配程度越高;而 d(
t,r)正相反。將他們綜合起來作為匹配程度的度量:
其中.為權重係數。我們取經驗值
. =35.0。
演算法的基本思路是:搜尋輸入影象中所有可能為人臉的區域,認為滿足一定條件且與模板匹配程度最高的區域是人臉。為了檢測不同長寬比的人臉,採用前述 5
種不同長寬比的模板進行匹配。
假設輸入影象中最多只有乙個完整的人臉(正面、端正),可能的人臉寬度在 24
畫素到影象寬度的
1/2之間,人臉位置未知,設輸入影象為
is(寬為
h、高為
w);雙眼模板為, 5個人臉模板為,其寬度為 24.
,高度分別為 。
演算法如下:
(1)初始化最大匹配度 ,設當前影象 ;
(2)設當前掃瞄點(
x,y)為影象起始點(
0,0); (3
)檢測掃瞄區域 是否為雙眼區,(即計算區域 的灰度均方值是否大於 20
)若不是則轉( 6)
(4)檢測相應區域是否為人臉(即計算 與模板 的相關係數 是否大於
0.3),是則求出當前區域與人臉的匹配度
d,否則轉(6)
(5)若 ,記錄當前區域的位置和大小,並令 (6
)若 x+24轉(3)
(7)若 y+31轉(3)
注:對於( 4
)中,初始化
i=0,d
為無窮小的數,拷貝區域 進行灰度分布標準化,求的匹配程度 。
例程給出了人臉識別的大部分**,要求補充填寫部分在
corea的
common.c
中,兩個子程式.
double degs(double dev, double rel)
入口引數dev
表示輸入影象區域與模板間影象向量的歐式距離
rel表示輸入影象區域與模板間影象向量的夾角
返回值為變數deg
,經驗值
a = 35.0
double a = 35.0;
double deg = rel + a / (1 + dev);
return deg;
/********************新增程式部分
******************/
/*********************取均值
************************/
/***該部分實現平均臉,其中入口引數
data1
、data2
、data3
、data4
、data5
分別為灰度分布標準化後影象指標(資料已經獲得),
k 為標準化後影象個數,w和
h分別為標準化影象的長和寬,
data為平均臉指標,
要求獲得的平均臉以data
輸出。
void imgmeans(unsigned char * data,unsigned char * data1,unsigned char * data2,
unsigned char * data3,unsigned char * data4,unsigned char * data5, int k, int w, int h)
unsigned int i, j;
for(i = 0; i
for(j = 0; j
data[i * w + j] = (unsigned char)((data1[i * w + j] + data2[i * w + j] + data3[i * w + j] + data4[i * w + j] + data5[i * w + j]) / k);
智慧型系統專業實驗(四) 數字識別實驗
1 了解模板匹配演算法進行數字識別的基本原理,理解bmp 影象在儲存器中的儲存形式。2 實現bmp格式影象中印刷體數字的識別。1 基本原理 實驗採用模板匹配中畫素點重合的方法,將待測影象中的數字與模板庫中的各個數字進行比對,認為模板庫中與待測數字重合畫素點最多的為數字識別結果。模板庫的建立 將包含 ...
人臉識別系統實現
1,導入庫 import cv2 import numpy as np import face recognition 2,載入 3,bgr轉為rgb liu rgb liu 1 wang rgb wang 1 4,檢測人臉 liu face face recognition.face locati...
人臉識別簽到 人臉識別會議簽到系統有哪些優點?
隨著人工智慧的不斷發展,人識別在各大場所的應用也是熠熠生輝,它打破了傳統簽到模式帶來的弊端,尤其在會議簽到領域,提公升有效提公升了工作效率,帶給參會者以及使用者更好的體驗。人臉識別簽到系統是怎麼工作的?第一步 收集參會者頭像,所有參會者在報名的時候,就提示上傳好自己的頭像。人臉識別系統的優勢有哪些呢...