生活随笔
收集整理的這篇文章主要介紹了
用MATLAB实现人脸识别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、人臉識別技術的細節
一般來說,人臉識別系統包括圖像提取、人臉定位、圖形預處理、以及人臉識別(身份確認或者身份查找)。系統輸入一般是一張或者一系列含有未確定身份的人臉圖像,以及人臉數據庫中的若干已知身份的人臉圖像或者相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。
2、人臉識別技術的廣泛應用
一項技術的問世和發展與人類的迫切需求是密切相關的,快速發展的社會經濟和科學技術使得人類對安全(包括人身安全、隱私保護等)得認識越來越重視。人臉識別得一個重要應用就是人類的身份識別。一-般來說, 人類得身份識別方式分為三類:
1. 特征物品,包括各種證件和憑證,如身份證、駕駛證、房門鑰匙、印章等;
2. 特殊知識,包括各種密碼、口令和暗號等;
3、人類生物特征
包括各種人類得生理和行為特征,如人臉、指紋、手形、掌紋、虹膜、DNA、簽名、語音等。前兩類識別方式屬于傳統的身份識別技術,其特點是方便、快捷,但致命的缺點是安全性差、易偽造、易竊取。特殊物品可能會丟失、偷盜和復制,特殊知識可以被遺忘、混淆和泄漏。相比較而言,由于生物特征使人的內在屬性,具有很強的自身穩定性和個體差異性,因此生物特征是身份識別的最理想依據。基于以上相對獨特的生物特征,結合計算機技術,發展了眾多的基于人類生物特征的身份識別技術,如DNA識別技術、指紋識別技術、虹膜識別技術、語音識別技術和人臉識別技術等。生物識別技術在上個世紀已經有了一定得發展,其中指紋識別技術已經趨近成熟,但人臉識別技術的研究還處于起步階段。指紋、虹膜、掌紋等識別技術都需要被識別者的配合,有的識別技術還需要添置復雜昂貴的設備。人臉識別可以利用已有的照片或是攝像頭遠距離捕捉圖像,無需特殊的采集設備,系統的成本低。并且自動人臉識別可以在當事人毫無覺察的情況下完成身份確認識別工作,這對反恐怖活動有非常重要的意義。基于人臉識別技術具有如此多的優勢,因此它的應用前最非常廣闊,已成為最具潛力的生物特征識別技術之一。
4、matlab分析人臉方法介紹
人臉識別之一:查找圖片中的人臉并用方框圈出
這種大致步驟為:獲取RGB圖片—>圖像處理—>人臉識別。
function Rer
=Re()%Rer
=0;%%%0為初始值,若成功識別,則會變為
1,
2,
3,
4I
=imread('face.jpg');%%被識別圖片存儲路徑,要用絕對路徑!!
%%%%%%%%%%%%%%%%%算法封裝,可以看作一個黑盒子
%%%%%%%%%%%%%%%%
O
=rgb2ntsc(I
);
G
=O(:,:,2);
[m n
]=size(G
);
U
=zeros(m
,n
);
for i
=1:m
for j
=1:n
if G(i
,j
)>0.03&&G(i
,j
)<0.16U(i
,j
)=1;endend
end
Rer
=1;
sr
=strel('disk',6);%%創建圓盤半徑(創建結構元素)
C
=imclose(U
,sr
);
L
=bwlabel(C
);
B
=regionprops(L
,'area');
Se
=[B
.Area
];
Sm
=max(Se
);
if Sm
>m
*n
/27 %%%%%每個程序都會經過這個,在
96行結束,未能識別人臉B1
=bwareaopen(C
,Sm
);k_y1
=m
;k2
=m
;l2
=n
;for i
=1:m
if any(B1(i
,:))==1k_y1
=i
;breakendend
for i
=k_y1
:m
if B1(i
,:)==0k2
=i
;breakendend
for j
=1:n
if any(B1(:,j
))==1l_y1
=j
;breakendend
for j
=l_y1
:n
if B1(:,j
)==0l2
=j
;breakendendk_y
=k2
-k_y1
;l
=l2
-l_y1
;if k_y
>.5*l
&&k_y
<3*l
%%%%%第二層
if,未能識別人臉I1
=imcrop(B1
,[l_y1 k_y1 l
.4*k_y
]);[n1 m1
]=size(I1
);L1
=bwlabel(I1
);E
=regionprops(L1
,'area');Si
=[E
.Area
];Sm
=max(Si
);if Sm
/(n1
*m1
)>.3B2
=bwareaopen(I1
,floor(.5*Sm
));g_y1
=m1
;g2
=m1
;for j
=1:m1
if any(B2(:,j
))==1g_y1
=j
;breakendend
for j
=g_y1
:m1
if B2(:,j
)==0g2
=j
;breakendendg
=g2
-g_y1
;figure
;imshow(I
,'border','tight','InitialMagnification','fit');hold onh1
=line([l_y1
+g_y1
,l_y1
+g_y1
+g
],[k_y1
,k_y1
]);h2
=line([l_y1
+g_y1
+g
,l_y1
+g_y1
+g
],[k_y1
,k_y1
+1.1*g
]);h3
=line([l_y1
+g_y1
+g
,l_y1
+g_y1
],[k_y1
+1.1*g
,k_y1
+1.1*g
]);h4
=line([l_y1
+g_y1
,l_y1
+g_y1
],[k_y1
+1.1*g
,k_y1
]);h
=[h1 h2 h3 h4
];set(h
,'Color',[1 0 0],'LineWidth',3);gfframe
=getframe(gcf
);gffim
=frame2im(gfframe
);imwrite(gffim
,'recg_result.jpg','jpg'); %%%%存儲圖片命名
,為了保存畫紅框的圖片Rer
=1;%fid
=fopen('re.txt','w');%fprintf(fid
,'%d',Rer
);%fclose(fid
);else%%%未能滿足最近一個
if判斷,不能識別人臉figure
;imshow(I
);imwrite(I
,'face_result.jpg','jpg'); %%%%存儲圖片命名Rer
=2;%fid
=fopen('re.txt','w');%fprintf(fid
,'%d',Rer
);%fclose(fid
);end
elsefigure
;imshow(I
);imwrite(I
,'face_result.jpg','jpg'); %%%%存儲圖片命名Rer
=3;%fid
=fopen('re.txt','w');%fprintf(fid
,'%d',Rer
);%fclose(fid
);end
elsefigure
;imshow(I
);imwrite(I
,'face_result.jpg','jpg'); %%%%存儲圖片命名Rer
=4;%fid
=fopen('re.txt','w');%fprintf(fid
,'%d',Rer
);%fclose(fid
);
end
end
人臉識別方法一效果圖
人臉識別之二:由輸入的人像識別出圖片中人像
大致步驟為:獲取RGB圖片—>轉換為灰度圖像—>圖像處理—>人臉識別。
clear all
clc
%獲取原始圖片
i
=imread('face.jpg');
I
=rgb2gray(i
);
BW
=im2bw(I
); %利用閾值值變換法將灰度圖像轉換成二進制圖像
figure(1);
imshow(BW
);
%最小化背景
[n1 n2
]=size(BW
);
r
=floor(n1
/10);
c
=floor(n2
/10);
x1
=1;x2
=r
;
s
=r
*c
;for i
=1:10y1
=1;y2
=c
;for j
=1:10if(y2
<=c
|| y2
>=9*c
) || (x1
==1 || x2
==r
*10)loc
=find(BW(x1
:x2
,y1
:y2
)==0);[o p
]=size(loc
);pr
=o
*100/s
;if pr
<=100BW(x1
:x2
,y1
:y2
)=0;r1
=x1
;r2
=x2
;s1
=y1
;s2
=y2
;pr1
=0;end
imshow(BW
);endy1
=y1
+c
;y2
=y2
+c
;endx1
=x1
+r
;x2
=x2
+c
;
end
figure(2)
subplot(1,2,1);
imshow(BW
)
title('圖像處理');
%人臉識別
L
=bwlabel(BW
,8);
BB
=regionprops(L
,'BoundingBox');
BB1
=struct2cell(BB
);
BB2
=cell2mat(BB1
);
[s1 s2
]=size(BB2
);
mx
=0;
for k
=3:4:s2
-1p
=BB2(1,k
)*BB2(1,k
+1);if p
>mx
&& (BB2(1,k
)/BB2(1,k
+1))<1.8mx
=p
;j
=k
;end
end
subplot(1,2,2);
title('人臉識別');
imshow(I
);
hold on
;
rectangle('Position',[BB2(1,j
-2),BB2(1,j
-1),BB2(1,j
),BB2(1,j
)],'EdgeColor','r')
人臉識別方法二效果圖
總結
以上是生活随笔為你收集整理的用MATLAB实现人脸识别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。