課程實習報告
《影象處理》實習報告
設計題目: 基於vc++人臉識別
班級: 資訊07-2班設計小組: 15組
組長: 鞏固學號: 07號
組員: 鞏固公衍奇
學號: 07號 06號
指導教師:丁士心日期:10-12-31
北華大學電氣資訊工程學院
目錄一. 設計題目:人臉識別程式設計 2
二. 實習目的 2
三. 原理描述 2
四. 功能實現 5
五. 實現方法及除錯 5
5.1 imagedib類設計 2
5.2繼承imagedib類的facedetect類新增 3
5.3人臉檢測模組實現 3
六. 題目執行結果 15
七. 參考文獻 16
一. 設計題目:基於vc++的人臉識別
二. 實習目的
1.通過本次實習初步了解了解人臉識別技術的設計原理。
2.通過使用visual c++語言編寫數字影象處理的一些演算法程式,來鞏固和掌握影象處理技術的基本技能,提高實際動手能力。
3.通過實習鍛鍊發現問題與解決問題的能力。
三. 原理描述
pca演算法的原理:
pca(主成分分析)演算法是人臉識別中比較新的一種演算法,該演算法的優點是識別率高,識別速度快。
1.1 pca原理
令x為表示環境的m維隨機向量。假設x均值為零,即:
e[x]=o.
令w表示為m維單位向量,x在其上投影。這個投影被定義為向量x和w的內積,表示為:
而主成分分析的目的就是尋找乙個權值向量w使得表示式e[y2]的值最大化:
根據線性代數的理論,可以知道滿足式子值最大化的訓應該滿足下式:
即使得上述式子最大化的w是矩陣cx的最大特徵值所對應的特徵向量。
1.2 主成分的求解步驟
在pca中主要的是要求出使得方差最大的轉化方向,其具體的求解步驟如下:
(1)構建關聯矩陣:cx=e[x*xt],cx∈pn*n.
在實際應用中,由於原始資料的數學期望不容易求解,我們可以利用下式來近似構造關聯矩陣:
(其中x1,x2,…,xn,是各個原始灰度影象所有象素點對應的向量,n是原始影象的個數)
(2)先計算出cx的各個特徵值
(3)把特徵值按大小排序
(4)計算出前m個特徵值對應正交的特徵向量構成w。
(5)將原始資料在特徵向量w上進行投影,即可獲得原始影象的主特徵資料。
1.3 主成分的求解方法
通過上面的分析我們可以知道,對於主成分分析的問題最後轉化為求解協方差矩陣的特徵值和特徵向量的問題,主成分的正交化分解的演算法或求xxt特徵值問題的演算法常用的有雅可比方法和nipals方法。
2. eigenface演算法
在利用pca進行特徵提取的演算法中,特徵臉方法(eigenface)是其中的乙個經典演算法。特徵臉方法是從主成分分析匯出的一種人臉識別和描述技術。特徵臉方法就是將包含人臉的影象區域看作是一種隨機向量,因此可以採用k-l變換獲得其正交k-l基底。
對應其中較大特徵值的基底具有與人臉相似的形狀,因此又稱為特徵臉。利用這些基底的線性組合可以描述、表達和逼近人臉影象,因此可以進行人臉識別與合成。識別過程就是將人臉影象對映到由特徵臉構成的子空間上,比較其與己知人臉在特徵空間中的位置,具體步驟如下:
(1)初始化,獲得人臉影象的訓練集並計算特徵臉,定義為人臉空間,儲存在模板庫中,以便系統進行識別;
(2)輸入新的人臉影象,將其對映到特徵臉空間,得到一組關於該人臉的特徵資料;
(3)通過檢查影象與人臉空間的距離判斷它是否是人臉;
(4)若為人臉,根據權值模式判斷它是否為資料庫中的某個人,並做出具體的操作。
2.1 計算特徵臉
設人臉影象i(x,y)為二維n*n灰度影象,用n維向量r表示。人臉影象訓練集為,其中m為訓練集中影象總數,這m幅影象的平均向量為:
每個人臉ri與平均人臉ψ的差值向量是:
訓練影象的協方差矩陣可表示為:
c=aat.
其中,a=[φ1,…φm].
特徵臉有協方差矩陣c的正交特徵向量組成。對於n*n人臉影象,協方差矩陣c的大小為n2*n2,對它求解特徵值和特徵向量是很困難的。一種取而代之的方法是令l=ata.
即協方差矩陣的轉置陣,則可以知道此矩陣是m*m(m是訓練人臉的數量)的乙個較小的矩陣。首先計算m*m矩陣l的特徵向量vi(l=l,…,m),則矩陣c的特徵向量ui(l=1,…,m)由差值影象φi(i=1,…,m)與vi(l=l,…,m)線性組合得到:u=[u1,…,um]=[[ψ1,…,ψm]t][v1.…,vm]。
實際上,m(m4. 功能實現
基於vc++利用數字影象模式識別技術實現對人臉的自動檢測與特徵點定位。整個識別過程包括人臉相似度計算、人臉輪廓提取、人臉定位、臉內輪廓提取。
一般來說,人臉識別系統包括影象攝取、人臉定位、影象預處理、以及人臉識別(身份確認或者身份查詢)。系統輸入一般是一張或者一系列含有未確定身份的人臉影象,以及人臉資料庫中的若干已知身份的人臉圖象或者相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。
我們所設計的程式的特點是程式段簡明易懂,程式執行成功率高,識別效果好。只要**質量達到基本清晰度,本程式均可準確無誤的將**中的人臉區域框取出來,為後續的識別鑑別工作提供幫助。
五. 實現方法及除錯
1.我們先用vc++建立1個.exe的mfc工作空間,通過對其配置和新增定義乙個新的類imagedib,使vc++能夠對數字影象進行處理,使這個工作空間適應我們實現人臉識別程式的要求。
imagedib.h程式**:
class imagedib
{public成員變數
unsigned char * m_pimgdata影象資料指標
lprgbquad m_lpcolortable影象顏色表指標
int m_nbitcount每畫素佔的位數
private:
lpbyte m_lpdib指向dib的指標
hpalette m_hpalette邏輯調色盤控制代碼
int m_ncolortablelength顏色表長度(多少個表項)
public:
int m_imgwidth影象的寬,畫素為單位
int m_imgheight影象的高,畫素為單位
lpbitmapinfoheader m_lpbmpinfohead; //影象資訊頭指標
public成員函式
imagedib建構函式
imagedib(csize size, int nbitcount, lprgbquad lpcolortable,
unsigned char *pimgdata帶引數的建構函式
imagedib析構函式
bool read(lpctstr lpszpathnamedib讀函式
bool write(lpctstr lpszpathname); //dib寫函式
int ***putecolortaballength(int nbitcount); //計算顏色表的長度
bool draw(cdc* pdc, cpoint origin, csize size); //影象繪製
csize getdimensions讀取影象維數
void replacedib(csize size, int nbitcount, lprgbquad lpcolortable,
unsigned char *pimgdata用新的資料替換dib
private:
void makepalette建立邏輯調色盤
void empty清理空間
2.再新增新的類facedetect繼承與imagedib類,使其能夠進行人臉檢測演算法的實現。
facedetect.h程式**:
class facedetect : public imagedib
{public
int m_nbitcountout輸出影象每畫素位數
unsigned char * m_pimgdataout輸出影象位圖資料指標
unsigned char * m_pimgdatain1;
unsigned char * m_pimgdatain2;
lprgbquad m_lpcolortableout; //輸出影象顏色表
double** m_psimarray;//相似度矩陣
double cb_mean;
double cr_mean;
double cov00;
double cov01;
double cov10;
double cov11;
基於區域性人臉影象的ICA人臉識別方法
人工智慧。計算機工程與設計 基於區域性人臉影象的 人臉識別方法 黃璞,陳才扣 揚州大學資訊工程學院,江蘇揚州 摘要 提出了一種基於區域性人臉影象獨立分量分析的特徵提取方法。該方法將人臉影象分成若干個相等的部分,將分成 的區域性人臉影象矩陣作為訓練樣本,並先後從水平方向 垂直方向提取訓練樣本的獨立分量...
人臉識別考勤系統
漢王人臉識別門禁考勤管理系統 方案計畫書 模式 雙向人臉識別式 讀人臉識別考勤門禁 讀人臉識別考勤門禁 電鎖 使用者在門外經人臉識別門禁機識別確認身份後,驅動開啟電鎖放行,並記錄進門時間。使用者離開所控房間時,在門內同樣要經人臉識別門禁機識別確認身份後,驅動開啟電鎖放行,並記錄出門時間。適用於安全級...
人臉識別的方案
公式及符號說明如下 人臉庫 orl olivetti research laboratory 人臉庫。影象尺寸 訓練集的人數 人 每個人的訓練影象 4張 人 訓練集的影象數 張 人臉空間維度 訓練集影象向量 平均臉 差臉 矩陣 協方差矩陣 輔助矩陣 的特徵值和特徵向量 單位正交化後的特徵向量 即特徵...