基于matlab图像处理的人脸定位系统【源码52期】
2026/7/24 19:34:39 网站建设 项目流程

一、项目简介

本系统基于MATLAB图像处理工具箱,实现了一个基于肤色模型的人脸检测与定位程序。系统包含两个功能相近的脚本文件(main.mmain2.m),均采用YCbCr色彩空间下的高斯肤色概率模型完成肤色分割。处理流程如下:将输入彩色图像从RGB转换至YCbCr空间,提取Cb和Cr色度分量;根据预定义的肤色均值向量和协方差矩阵计算每个像素的肤色概率,经阈值化处理后获得初始肤色区域;随后通过形态学开运算、闭运算、填洞、腐蚀与膨胀操作去除噪声并平滑区域;最后对连通区域进行筛选,依据区域长宽比(0.8~2.4)、像素面积(≥200)和区域填充率(≥0.55)等几何特征排除非人脸区域,并以红色矩形框在原图上标记最终检测结果。两个脚本在结果显示方式上有所区别:main.m采用单图多子图布局综合展示各处理环节,main2.m则分别打开独立窗口显示中间结果。

二、部分源码

clc;

clear all;

close all;

tic

x=imread('2.jpg');

y=rgb2ycbcr(x); %将彩色图片从RGB空间转换到YCbCr色彩空间

I_gray=rgb2gray(x);

It=im2bw(I_gray,thresh);

I_edge=edge(I_gray,'sobel');

[a b c]=size(I_edge); %获取图像的行数、列数、页数;注意新空间里图像是三维数组

cb=double(y(:,:,2)); %得到图像的Cb分量

%下面开始计算每个像素点的肤色概率

for i=1:a;

for j=1:b

m=[110.4516 150.5699]; %肤色均值,可以理解为离散高斯分布的期望值,这个均值需要提前确定,这个是肤色概率模型的明显不足之处;大家换图片测试,会发现可能需要修改此参数

n=[97.0916 23.3700;23.3700 137.9966]; %协方差矩阵,对应此处离散高斯分布

p(i,j)=exp((-0.5)*(w-m)*inv(n)*(w-m)'); %计算肤色概率,即相似度

end

z=p./max(max(p));%归一化结果

%下面开始阈值化

%figure

th=0.5;

for i=1:a

for j=1:b

if(z(i,j)>th)

else

z(i,j)=0;

end

end

end

figure;imshow(I_gray);title('灰度图像')

figure;imshow(It); title('二值化图像')

figure;imshow(I_edge); title('边缘检测图像')

figure;imshow(z);title('阈值化图像') %阈值化结果

%下面做数学形态学处理,先后进行了开运算、闭运算、填洞、腐蚀及膨胀操作

se=strel('square',3);

f=imopen(z,se); %开运算

f=imclose(f,se); %闭运算

se1=strel('square',8);

%构造结构元素(strel是Structuring element的简写)

f=imerode(f,se1); %腐蚀

f=imdilate(f,se1); %膨胀

%至此得到了一个较纯净的肤色区域

%下面试图将人脸区域与其它肤色区域分割开

[L,num]=bwlabel(f,4);

%返回一个和f大小相同的L矩阵,包含标记了f中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)

for i=1:num;

[r,c]=find(L==i);%第i个连通区域

len=max(r)-min(r)+1;%区域长度

wid=max(c)-min(c)+1;%区域宽度

area_sq=len*wid;%区域面积

area=size(r,1);%区域大小,即像素点的个数

%开始判定第i个连通区域是不是人脸区域

for j=1:size(r,1)

if(len/wid<.8)|(len/wid>2.4)|size(r,1)<200|area/area_sq<0.55

L(r(j),c(j))=0;%如果不是人脸区域,则通过赋值将其融入背景色

else

continue;

end

end

end

figure;imshow(L);title('人脸区域')%人脸区域显示

w=L&z;

%通过逻辑运算,检测面部特征点;代码开始设置的肤色均值,显然也会影响这个特征点的检测,大家从程序运行结果中也不难看出;请大家试着调整肤色均值,看看运行结果的变化

figure;imshow(w);title('人脸特征图像')%人脸特征点显示

三、运行结果

四、总结

该系统利用肤色在YCbCr空间的聚类特性实现快速人脸区域定位,计算效率较高,适用于具有明显肤色的正面或近正面人脸场景。形态学处理与几何约束有效剔除了类肤色背景干扰,提高了检测的准确性。然而,系统对肤色均值和协方差参数的依赖较强,对光照变化、不同人种肤色差异及复杂背景的鲁棒性有限,且无法处理多尺度人脸和旋转变化。系统适用于人脸检测算法的教学演示与基础研究,后续可引入自适应肤色建模、多尺度搜索或结合深度学习方法以提升泛化能力和检测精度,也可扩展为实时视频流人脸跟踪系统。

五、代码获取

接matlab程序定制和论文设计,方向如下:

图像处理|语音识别|图像识别|目标检测|深度学习|神经网络|强化学习|机器学习|通信系统|信号处理|时频分析|小波降噪|路径规划|优化算法|智能算法|数据处理|数学建模|文献复现|算法复现|模型复现等

程序包运行成功,零基础的可以远程帮你运行,赠送安装包

作为初学者,遇见不会的问题是非常正常的事情,具体代码仿真可通过主页添加 私信博主。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询