最近在学习matlab图像处理部分,发现人脸识别这一块非常好玩,在这里做个总结。
人脸识别之一:查找图片中的人脸并用方框圈出
这种类似于智能手机拍照时,屏幕里那个框任务头部的红框。大致步骤为:获取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:10 y1=1;y2=c; for j=1:10 if(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<=100 BW(x1:x2,y1:y2)=0; r1=x1;r2=x2;s1=y1;s2=y2; pr1=0; end imshow(BW); end y1=y1+c; y2=y2+c; end x1=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-1 p=BB2(1,k)*BB2(1,k+1); if p>mx && (BB2(1,k)/BB2(1,k+1))<1.8 mx=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的图像识别说起,后边将陆续讲解车牌识别,交通标牌识别等,并努力将它移植到FPGA里边做到高速实时处理。
MATLAB人脸识别的处理过程: