java 肤色检测

本文介绍了使用Java进行肤色检测的方法,涉及RGB到YUV、YIQ以及YCbCr颜色空间的转换,通过色调、饱和度和特定范围的值来判断像素是否属于肤色。在YUV和YIQ空间中确定肤色的色调和饱和度范围,而在YCbCr空间中通过阈值判断肤色区域。
摘要由CSDN通过智能技术生成
肤色模型在人脸识别中已被广泛使用.常见的肤色检测是通过把R,G,B各分量转换成对数值,并进一步得到肤色的色度和饱和度以进行肤色分割.常见的肤色检测在RGB空间里的算法如下:
R>95 
G>40 
B>20
R>G
R>B 
Max(R,G,B)-Min(R,G,B)>15 
Abs(R-G)>15

满足上述公式即可认为,是肤色。这是经验得到的~

我们还可有转换颜色空间,通过把R,G,B各分量转换成对数值,并进一步得到肤色的色度和饱和度以进行肤色分割.本文则对肤色色调在YHV和YIO颜色空间中的分布作线性化处理.RGB空间到YUV空间的转换用矩阵表示如下

其中,U和V是平面上两个相互正交的矢量,色度信号(即U与V之和)是一个二维矢量,称之为色度信号矢量.每一种颜色对应一个色度信号矢量,它的饱和度由模值Ch表示,色调
由相位角θ表示

图2是YUV色彩空间中的色度信号矢量图.白色和黑色都由原点(0,0)表示,模值为0,相位角任意.在YUV空间的UV平面上,肤色的色调介于红与黄之间.根据对大量图像的彩色分析,可以确定人的肤色色调6的变化范围,如图3所示.把彩色图像的象素p由RGB空间变换到YUV空间,如果满足条件,θp在[100,150]内,则p是肤色点.

YIQ表示法的定义是基于这样一个原则:对颜色编码所得信号的冗余信息最少或者说人眼看不见的就无需传送和重现.其中1色度分量选在相位角为173的红色和303的青蓝色色调位置Q色度,分量选在色分解力弱的紫红

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值