参考链接:https://blog.csdn.net/qq_22527639/article/details/81501565。

1.肤色检测

  肤色检测技术利用了计算机对人体皮肤像素的分析过程,随着人脸检测技术,表情识别及手势识别等技术的快速发展,肤色应用领域日趋增多。肤色检测技术常用的方法有基于颜色空间、光谱特征以及肤色反射模型等方法,这些方法的主要步骤先进行颜色空间变换,然后再建立肤色模型。肤色检测中颜色空间有RGB、YCrCb、HSV和Lab等,通常在处理的时候是将RGB颜色空间变换成相应的颜色空间,对某种类型的图像通过统计或物理分析,转换成YUV、LUX或H-SV-V等,肤色在颜色空间的分布中相对集中,为了消除光照的影响一般放弃亮度通道。皮肤模型中有单高斯、混合高斯、贝叶斯模型和椭圆模型等,高斯分布模型用于刻画椭圆高斯概率,对肤色与非肤色采用高斯混合模型在特定区域内能取得较好的实验结果。

  肤色YCbCr颜色空间是一种常用的肤色检测的色彩模型,其中Y代表亮度,Cr代表光源中的红色分类,Cb代表光源中的蓝色分量。人的肤色在外观上的差异是由色度引起的,不同人的肤色分布集中在较小的区域内。肤色的YCbCr颜色空间CbCr平面分布在近似的椭圆区域内,通过判断当前像素点的CbCr值是否落在肤色分布的椭圆区域内,就可以很容易确认当前像素点是否属于肤色。将图像转化到YCbCr空间并且在CbCr平面进行投影,可以采集到肤色的样本点,将其投影到此平面后,我们进行相应的非线性变换(K-L变换),进而形成的统计椭圆模型如下:
(x−ecx)2a2+(y−ecy)2b2=1\frac{(x-ec_{x})^2}{a^2}+\frac{(y-ec_{y})^2}{b^2}=1a2(x−ecx​)2​+b2(y−ecy​)2​=1
  将上式转换为参数矩阵形式:
[xy]=[cosθsinθ−sinθcosθ][CbcxCrcy]\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} cos\theta &sin\theta\\-sin\theta&cos\theta \end{bmatrix}\begin{bmatrix}Cb & c_{x}\\ Cr & c_{y}\end{bmatrix} [xy​]=[cosθ−sinθ​sinθcosθ​][CbCr​cx​cy​​]
  将CbCr平面均分为小区域,将每个区域中心点CbCr色度值作为当前区域的特征值,对肤色区域像素值进行遍历,如果当前像素值落在该区域内则替换当前区域特征值。

2.参考代码

cv::Mat ellipse_detect(cv::Mat Src)
{cv::Mat srcImage = Src.clone();cv::Mat skinMat = cv::Mat::zeros(cv::Size(255, 255), CV_8UC1);cv::ellipse(skinMat, cv::Point(113, 155.6), cv::Size(23.4, 15.2), 43.0, 0.0, 360.0, cv::Scalar(255, 255, 255), -1);cv::Mat YcrcbMat;cv::Mat tempMat = cv::Mat::zeros(srcImage.size(), CV_8UC1);cv::cvtColor(srcImage, YcrcbMat, CV_BGR2YCrCb);for (int i = 0; i < srcImage.cols; i++){for (int j = 0; j < srcImage.rows; j++){cv::Vec3b ycrcb = YcrcbMat.at<cv::Vec3b>(j, i);if (skinMat.at<uchar>(ycrcb[1], ycrcb[2] > 0)){tempMat.at<uchar>(j, i) = 255;}}}cv::Mat resultMat;srcImage.copyTo(resultMat, tempMat);return resultMat;
}

opencv图像处理学习(六十八)——肤色检测相关推荐

  1. OpenCV图像处理学习二十,图像直方图均衡化原理与实现

    一.图像直方图的概念 图像直方图,是指对整个图像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图.直方图反映了图像灰度的分布情况,是图像的统计学特征.图像的灰度直方 ...

  2. OpenCV图像处理学习六,像素操作,使用line,ellipse,ellipse,rectangle,fillPoly函数绘制线、矩形、圆、椭圆等基本图形以及C++随机数产生器RNG的应用

    一.Point与Scalar 使用cv::Point与cv::Scalar Point表示2D平面上一个点x,y Point p; p.x = 10; p.y = 8; 或者 p = Pont(10, ...

  3. opencv图像处理学习(十五)——minMaxLoc函数

    函数原型:  void minMaxLoc( const Mat& src,  double* minVal, double* maxVal=0, Point* minLoc=0, Point ...

  4. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  5. OpenCV与图像处理学习十三——Harris角点检测(含代码)

    OpenCV与图像处理学习十三--Harris角点检测(含代码) 一.角点的概念 二.Harris角点检测的实现过程 三.Harris代码应用 一.角点的概念 角点: 在现实世界中, 角点对应于物体的 ...

  6. JavaScript学习(六十八)—表单校验案例

    JavaScript学习(六十八)-表单校验案例 学习内容 (一).如何获取页面的元素-利用id获取 格式:var 变量名称 =document.getElementById('要获取的元素的id的值 ...

  7. windows内核开发学习笔记十八:IRP 处理的标准模式

    windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...

  8. OpenCV C++案例实战十八《抖音特效——“蓝线挑战”》

    OpenCV C++案例实战十八<抖音特效--"蓝线挑战"> 前言 一.图像扫描 二.生成定格图像 三.图像混合 四.效果显示 五.源码 总结 前言 本文将使用Open ...

  9. [转载]六十八个经典故事

    转自:http://www.cnblogs.com/flying_bat/archive/2004/11/04/60492.aspx 一.  用人之道去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客 ...

  10. [转] 身为管理者 会讲的六十八个故事

    一.用人之道 去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客,而在他的北面,则是黑口黑脸的韦陀.但相传在很久以前,他们并不在同一个庙里,而是分别掌管不同的庙. 弥乐佛热情快乐,所以来的人非常多,但 ...

最新文章

  1. SAP PM 初级系列2 – 定义计划员组
  2. iOS 推送通知 客户端实现
  3. java 支付类的接口,Java后端支付大杂烩之core.dao,service,web(重点是接口的设计)(二)...
  4. mes系统和plc通讯案例_「MES系统 | 应用案例」奥松电子云MES系统项目启动大会顺利召开...
  5. 程序员必须掌握的十大经典算法
  6. Android自定义输入车牌号键盘、车牌简称 | 数字 | 字母键盘
  7. louvain算法python_一种基于Louvain算法的社区发现方法及系统与流程
  8. 游戏服务器背包系统,Unity MMORPG 背包系统如何设计
  9. python中的f函数_05-python中函数的使用
  10. Python-day11~13-前端初步
  11. python:使用unquote对url解码
  12. E12:后台管理系统开发-修改文章功能
  13. 【数据来源】如何选择合适的第三方数据源
  14. LSP简介(LSP--Liskov Substitution Principle)
  15. 未来的搜索大战:生态能力成为胜负手
  16. Collections的emptyList() emptyMap() emptySet()
  17. React仿CNode社区(感受React + Typescript + Redux开发流程)
  18. 解决:http: TLS handshake error from *
  19. Axure 9快捷键大全
  20. 【图像隐藏】基于DCT算法实现数字水印嵌入+检测+攻击含Matlab源码

热门文章

  1. 社交电商如何持续进化?来看看最新的拼团玩法——七人拼团
  2. GIS矢量数据更新时的瓦片范围计算
  3. tp5学习记录:导入前端静态模板
  4. Unity如何调整天空盒子
  5. Android中dp、sp、px、pt之间的换算关系
  6. 专享 IP 与共享 IP:差异、优势及其影响
  7. uni-app开发中遇到的问题(持续更新...)
  8. 华为发布《智能世界2030》报告;金唯智母公司Brooks Automation将以30亿美金出售半导体业务 | 全球TMT...
  9. 如何保护WordPress网站免受网络攻击?采取安全措施至关重要
  10. ftp工具,ftp工具专业版