日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

基于matlab实现人脸识别解析

發布時間:2024/8/1 循环神经网络 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于matlab实现人脸识别解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.人臉識別流程

1.1.1基本原理

基于YCbCr顏色空間的膚色模型進行膚色分割。在YCbCr色彩空間內對膚色進行了建模發現,膚色聚類區域在Cb—Cr子平面上的投影將縮減,與中心區域顯著不同。采用這種方法的圖像分割已經能夠較為精確的將人臉和非人臉分割開來。

1.1.2流程圖

  • 人臉和非人臉區域分割程序
  • a=25.39; b=14.03; ecx=1.60; ecy=2.41; sita=2.53; cx=109.38; cy=152.02; xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; %如果亮度大于230,則將長短軸同時擴大為原來的1.1倍 if(Y>230)a=1.1*a;b=1.1*b; end %根據公式進行計算 Cb=double(Cb); Cr=double(Cr); t=[(Cb-cx);(Cr-cy)]; temp=xishu*t; value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2; %大于1則不是膚色,返回0;否則為膚色,返回1 if value>1result=0; elseresult=1; end end人臉的確認程序 part=zeros(h,w); %二值化 for i=y:(y+h)for j=x:(x+w)if bImage(i,j)==0part(i-y+1,j-x+1)=255;elsepart(i-y+1,j-x+1)=0;endend end [L,num]=bwlabel(part,8); %如果區域中有兩個以上的矩形則認為有眼睛 if num<2eye=0; elseeye=1; end end 人臉識別主程序 gray=rgb2gray(I); ycbcr=rgb2ycbcr(I);%將圖像轉化為YCbCr空間 heighth=size(gray,1);%讀取圖像尺寸 width=size(gray,2); for i=1:heighth %利用膚色模型二值化圖像for j=1:widthY=ycbcr(i,j,1);Cb=ycbcr(i,j,2);Cr=ycbcr(i,j,3);if(Y<80)gray(i,j)=0;elseif(skin(Y,Cb,Cr)==1)%根據色彩模型進行圖像二值化gray(i,j)=255;elsegray(i,j)=0;endendend end se=strel('arbitrary',eye(5));%二值圖像形態學處理 gray=imopen(gray,se); figure;imshow(gray) [L,num]=bwlabel(gray,8);%采用標記方法選出圖中的白色區域 stats=regionprops(L,'BoundingBox');%度量區域屬性 n=1;%存放經過篩選以后得到的所有矩形塊 result=zeros(n,4); figure,imshow(I); hold on; for i=1:num %開始篩選特定區域box=stats(i).BoundingBox;x=box(1);%矩形坐標Xy=box(2);%矩形坐標Yw=box(3);%矩形寬度wh=box(4);%矩形高度hratio=h/w;%寬度和高度的比例ux=uint16(x);uy=uint8(y);if ux>1ux=ux-1;endif uy>1uy=uy-1;endend if size(result,1)==1 && result(1,1)>0 %對可能是人臉的區域進行標記rectangle('Position',[result(1,1),result(1,2),result(1,3),result(1,4)],'EdgeColor','r'); else%如果滿足條件的矩形區域大于1,則再根據其他信息進行篩選a=0;arr1=[];arr2=[]; for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%得到符合和人臉匹配的數據if m1+m3<width && m2+m4<heighth && m3<0.2*widtha=a+1;arr1(a)=m3;arr2(a)=m4;%rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend%得到人臉長度和寬度的最小區域arr3=[];arr3=sort(arr1,'ascend');arr4=[];arr4=sort(arr2,'ascend');%根據得到的數據標定最終的人臉區域for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%最終標定人臉if m1+m3<width && m2+m4<heighth && m3<0.2*widthm3=arr3(1);m4=arr4(1);rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend end

    (4)程序說明

    人臉識別程序主要包含三個程序模塊,人臉識別主程序由三部分構成。第一部分:將圖像轉化為YCbCr顏色空間,根據色彩模型進行圖像二值化,二值化圖像進行形態學處理、開運算,顯示二值圖像;第二部分:采用標記方法選取出圖中的白色區域,度量區域屬性,存放經過篩選以后得到的所有矩形塊,篩選特定區域,存儲人臉的矩形區域;第三部分:對于所有人臉的矩形區域,如果滿足條件的矩形區域大于1則再根據其他信息進行篩選,標記最終的人臉區域。

    圖像分割程序中,利用膚色可以較為精確的將人臉和非人臉區域分割開來,得到較為精確的二值化圖像。

    人臉的確認程序,以存儲的所有矩形區域作為研究對象,當區域內有眼睛存在時,才認為此區域為人臉區域

    3運行結果

  • 第一幅圖


  • 原始圖像




    膚色分割的二值化圖像




    人臉識別圖像


  • 第二幅圖



  • 原始圖像





    膚色分割的二值化圖像





    人臉識別圖像



  • 第三幅圖

  • 原始圖像




    膚色分割的二值化圖像




    人臉標定

    總結

    以上是生活随笔為你收集整理的基于matlab实现人脸识别解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。