博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188)
个人主页:Matlab_ImagePro-CSDN博客
原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次分享的是基于肤色模型(YCbCr模型)的人面定位统计算法,用matlab实现。(有疑问或者想交流细节的QQ:3249726188)
一、简述一下这次基于肤色模型(YCbCr模型)的人面定位统计算法的背景
博主最近被各位同学咨询最多的就是人脸识别和车牌识别相关算法,前期介绍了最为经典的PCA人脸识别算法(基于PCA(主成分分析)的人面识别,Matlab实现-CSDN博客)、基于灰度直方图特征的人面识别算法(基于灰度直方图特征的人面识别算法,Matlab实现-CSDN博客)、基于LBP和KNN的人面表情识别算法(基于LBP和KNN的人面表情识别,Matlab实现-CSDN博客),这次介绍另一个类似方向的算法,基于肤色模型(YCbCr模型)的人面定位统计算法。
二、算法模型原理介绍
首先介绍一下什么是肤色模型,也就是今天的主角YCbCr模型。
YCbCr模型,也称为YUV模型,是一种广泛用于数字视频和数字图像中的颜色模型。在这种模型中,Y代表亮度分量,Cb和Cr共同描述图像的色调(色差),其中Cb和Cr分别是蓝色和红色色度分量相对于参考值的坐标。YCbCr模型中,亮度信息用单个分量Y表示,彩色信息存储为两个色差分量Cb和Cr。Cb是蓝色分量和参考值的差,Cr是红色分量和参考值的差。这种模型广泛应用于数字视频领域,特别是在不同的彩色电视制式中,如PAL和SECAM。YCbCr模型有多种取样格式,包括4:4:4、4:2:2、4:1:1和4:2:0。其中,4:4:4采样方式下,每个Y对应一组UV分量,而4:2:2和4:2:0采样方式下,每两个或四个Y共用一组UV分量。此外,YCbCr模型还与一些特定的颜色空间转换公式相关联,例如在数字视频领域常用的公式为:Y = 0.299R + 0.587G + 0.114B,Cb = -0.172R - 0.339G + 0.511B + 128,Cr = 0.511R - 0.428G - 0.083B + 128。这些转换公式用于将RGB颜色空间转换为YCbCr,以便于在不同的视频和显示器标准之间进行转换和传输。
这次分享的人脸定位统计算法,就是基于图像转换为YCbCr模型后,通过使用Cr分量进行初步分割人面,然后实现定位人面和统计的功能。
三、人脸定位统计算法流程
1、读取图像,并将RGB转换为YCbCr空间
2、提取Cr空间,根据参数(Cr空间140-160之间为分割目标)对人面进行初步分割,得到初步二值图
3、对步骤二的图进行中值滤波去噪处理
4、对去噪后的图像进行填充、腐蚀、去噪等形态学处理,并去除长宽比不符合尺寸的噪声,得到最终分割的二值图。
5、根据步骤四的分割二值图,统计定位到的人脸数量。
6、根据形态学对最终二值图进行定位标记。
四、Matlab实现效果
原图:
颜色模型分割:
滤波去噪:
形态学处理:
再次去噪:
去除比例不符合的杂质噪声:
定位统计:
打包到GUI效果:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
专注、专一于Matlab图像处理学习、交流、代做
QQ:3249726188