การรู้จำใบหน้าโดยการใช้ Eigen face

การรู้จำใบหน้าโดยการใช้ Eigen face
1.           ขั้นตอนที่ 1 รับภาพอินพุท (Input images) และ ค่าเฉลี่ยของรูปภาพ
กำหนดให้รูปภาพใบหน้า เป็น ,  , …,   เมื่อ M เป็นจำนวนของรูปภาพของภาพใบหน้า และกำหนดให้ค่าเฉลี่ยของรูปภาพภาพใบหน้า เป็น 


                  
%%%%%%% Calculating the mean image
m = mean(T,2); % Computing the average face image m = (1/P)*sum(Tj's)    (j = 1 : P)
Train_Number = size(T,2);

2.           ขั้นตอนที่ 2 หาลักษณะความแตกต่างของภาพ
การดึงลักษณะเด่นออกจากภาพ ทำได้โดยหาลักษณะความแตกต่างของภาพ จากภาพอินพุทของหน้าแต่ละคน กับภาพเฉลี่ยของภาพหน้าคน โดยสามารถทำได้โดย

%%%%% Calculating the deviation of each image from mean image
A = []; 
for i = 1 : Train_Number
    temp = double(T(:,i)) - m; % Computing the difference image for each image in the training set Ai = Ti - m
    A = [A temp]; % Merging all centered images
end

3.           ขั้นตอนที่ 3 การคำนวณหาค่า Covariance Matrix ( Covariance Matrix Calculation)
หลังจากนั้น จึงได้นำภาพความแตกต่างที่ได้ไปทำให้เป็นภาพเวกเตอร์ซึ่งมีขนาดความกว้างเท่ากับ 1 จุดภาพ คูณด้วยความกว้างของภาพ คูณด้วยความกว้างของภาพ (1 x (w x h)) จึงนำมาหา Correlation ของภาพความแตกต่างโดยการสร้าง Covariance Matrix

%%%%%%% Snapshot method of Eigenface methos
L = A'*A; % L is the surrogate of covariance matrix C=A*A'.

4.           ขั้นตอนที่ 4 การคำนวณหา ค่า Eigenvector (Eigenvector  Calculation)
เมื่อได้ Covariance Matrix มาแล้วจะทำการหาเวกเตอร์เจาะจง (Eigenvector, ) และค่าเจาะจง (Eigenvalue, ) โดยวิธีการแก้ค่าตัวแปรของสมการเชิงเส้นจาก Covariance Matrix ผลที่ได้ออกมาจะเป็นภาพไอเก้น  โดยที่   มีจำนวนเท่ากับจำนวนภาพการสอน

[V D] = eig(L);
%%%%%% Sorting and eliminating eigenvalues
L_eig_vec = [];
for i = 1 : size(V,2)
    if( D(i,i)>1 )
        L_eig_vec = [L_eig_vec V(:,i)];
    end
end
%%%%%%% Calculating the eigenvectors of covariance matrix 'C'
Eigenfaces = A * L_eig_vec; % A: centered image vectors

5.           ขั้นตอนที่ 5 การคำนวณหาค่าเวกเตอร์น้ำหนัก (Vector of weights calculation)
เมื่อภาพได้ถูกแปลงไปสู่ยังบริเวณ ของเวกเตอร์เจาะจง (Eigen space) ที่แทนลักษณะของภาพหน้าคน จากนั้นเวกเตอร์เจาะจงจะถูกนำไปใช้หาเวกเตอร์น้ำหนัก โดยสมาชิกของเวกเตอร์ของน้ำหนักหาได้จาก
โดยที่ เป็นเวกเตอร์เจาะจงซึ่งจะใช้เวกเตอร์น้ำหนักนี้ ในการอธิบายลักษณะของใบหน้าแต่ละหน้าคน โดยส่วนแรกจะเก็บเวกเตอร์น้ำหนัก ของชุดข้อมูลสำหรับสอนเอาไว้ เพื่อใช้เป็นตัวเปรียบเทียบกับข้อมูลภาพที่เก็บเข้ามาเปรียบเทียบหน้าคน ซึ่งสามารถแยกแยะลักษณะของแต่ละหน้าคนได้ตามขั้นตอนถัดไป ในเอกสารนี้ใช้


%%%%%%%%%%%%%%%%%%%%%%%% Calculating Euclidean distances

Euc_dist = [];
for i = 1 : Train_Number
    q = ProjectedImages(:,i);
    temp = ( norm( ProjectedTestImage - q ) )^2;
    Euc_dist = [Euc_dist temp];
end

[Euc_dist_min , Recognized_index] = min(Euc_dist);

Comments

Popular Posts