PCA 的具體實現 (Eigenfaces特徵臉)

2021-06-18 20:41:46 字數 950 閱讀 5219

原始影象投影到該特徵空間中。特別說明,此時的原始影象x存成大小是n維的向量,即:

(3-1)

訓練集為(這裡p為樣本影象數量),形成矩陣x[n][p],其中行代表像元,列代表每幅人臉影象。

將訓練樣本集中的人臉影象減去平均人臉影象,計算離散差值,將訓練影象中心化。

將中心化之後影象組成乙個大小為n×p的矩陣x:

將中心化後的影象組成的矩陣x乘以它的轉置矩陣得到協方差矩陣ω:

(3-4)

求解協方差矩陣ω的k個非零特徵值,以及所對應的特徵向量,一般來說,訓練影象數量p遠遠小於一幅影象的畫素值n,所以協方差矩陣ω最多有對應於非零特徵值的p個特徵向量,所以k≤p.按照特徵值的從大到小的順序排列特徵向量,對應於最大特徵值的特徵向量反應了訓練影象間的最大差異,而對應的特徵值越小的特徵向量,反應的影象間的差異越小。所有的非零特徵值對應的特徵向量,組成特徵空間,也就是所謂的「特徵臉」空間。

為對應於特徵值的特徵曏集。排列特徵向量:按照非零特徵值,從大到小的順序,將對應的特徵向量排列。所組成的特徵向量矩陣即為特徵空間u,u

的每一列為乙個特徵向量:

這樣每一幅人臉影象都可以投影到由張成的子空間中。因此每一幅人臉影象對應於子空間中的乙個點,同樣,子空間中的每個點對應於一幅影象,圖3-2

顯示的是

所對應的影象,由於這些影象很像人臉,所以它們被稱為「

特徵臉」。

圖3-2 特徵臉

訓練影象投影得到特徵臉子空間

有了這樣乙個由「

特徵臉」

組成的降維特徵子空間,任何一幅中心化後的人臉影象都可以通過下面的式子投影到特徵臉子空間並獲得一組座標係數:

歸併的具體實現

線性表的兩種表示 順序表示與鏈式表示。一 順序表示。參見 首先,表示出線性表 動態分配順序儲存結構 define list inti size 100 線性表的初始分配量 define listincrement 10 線性表儲存空間的分配增量 避免初始分配量不夠,實現靈活的再分配,且再分配時借助基...

continue的具體實現

先看下面乙個 include int main i include int main i 這兩段 有什麼區別嗎?當然有,區別很大,乙個會永遠迴圈,乙個則不會,要理解continue在這裡的用處先要理解for迴圈,for迴圈的三個句子,第乙個句子,是剛剛進入for迴圈的時候會有的操作,第二個句子是每次...

LinkList的具體實現

include includeusing namespace std define list init size 100 define listincrement 10 define true 1 define false 0 define ok 1 define error 0 define in...