MATLAB人脸识别区域定位实战源码解析
一半步骤如下:
1、读取图像文件;
2、对图像进行预处理
(包括灰度化,二值化、降噪,减小背景区域等)
3、识别脸部区域;
4、可视化输出;
主要展示针对于人物头像的脸部区域定位矩形操作,来确定。
源码如下:
ii=imread('sffffffrt3.jpg');
subplot(131);imshow(ii);title('原始图像');
ii2=rgb2gray(ii);
subplot(132);imshow(ii2);title('灰度图像');
I2=im2bw(ii);
subplot(133);imshow(I2);title('二值图像');
[n1 n2]=size(I2);%图像尺寸/10
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)
I2(x1:x2,y1:y2)=0;
end
y1=y1+c;
y2=y2+c;
end
x1=x1+r;
x2=x2+r;
end
figure;%显示去除区域背景后的图像,即背景区域处理后的图像
subplot(121);imshow(I2); title('背景区域处理');hold on;
L=bwlabel(I2,4);%标注各个连通区域
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+1)/BB2(1,k))<2
mx=p;
j=k;
end
end
subplot(122);imshow(I2);title('人脸区域定位');
hold on;
rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'EdgeColor','r');
运行程序后,显示的效果如图:
figure(1):
figure(2);红色矩形框代表的是人脸区域。