图像处理——椭圆肤色模型
来源:互联网 发布:国家电网刷题软件 编辑:程序博客网 时间:2024/04/26 17:18
以前整理的文档,现在贴出来吧,方便后期需要时查看参考。
图像处理——椭圆肤色模型
这里参数的说明参考《基于分裂式K均值聚类的肤色检测方法 》 http://download.csdn.net/detail/wobuaishangdiao/4378026
《皮肤检测技术的研究及改进》
皮肤检测—-肤色椭圆模型
肤色区域的颜色与亮度成非线性函数关系,在低亮度条件下,YCbCr 空间中色度的聚类性会随Y 呈非线性变换降低。为了使肤色聚类不受亮度Y 的影响并将YCbCr 颜色空间中的色度Cb、Cr进行非线性变换,在研究YCbCr 颜色空间的肤色聚类情况的基础上,去掉高光阴影部分(即 Y 的最大最小值),YCbCr 空间色度非线性变换过程中,用 Cb·· Y 、 Cr·· Y 表示肤色区域的中轴线,肤色区域的宽度分别用 Vcb、Vcr 表示。
即将图像转化到YCbCr 空间并且在CbCr平面进行投影,因此我们采集了肤色的样本点,将其投影到此平面,并且投影后,我们进行了相应的非线性变换K-L变换进而形成的的统计椭圆模型
void cvSkinSegment(IplImage* img, IplImage* mask) //原始图像及目标图像 { CvSize imageSize = cvSize(img->width, img->height); IplImage *imgY = cvCreateImage(imageSize, IPL_DEPTH_8U, 1); IplImage *imgCr = cvCreateImage(imageSize, IPL_DEPTH_8U, 1); IplImage *imgCb = cvCreateImage(imageSize, IPL_DEPTH_8U, 1); IplImage *imgYCrCb = cvCreateImage(imageSize, img->depth, img->nChannels); cvCvtColor(img,imgYCrCb,CV_BGR2YCrCb); cvSplit(imgYCrCb, imgY, imgCr, imgCb, 0); //得到每一通道的数据 int y, cr, cb, l, x1, y1, value; unsigned char *pY, *pCr, *pCb, *pMask; pY = (unsigned char *)imgY->imageData; //Y通道的第一行数据的指针 pCr = (unsigned char *)imgCr->imageData; pCb = (unsigned char *)imgCb->imageData; pMask = (unsigned char *)mask->imageData; //目标图像的第一行数据的指针 cvSetZero(mask); //目标图像全部为零 l = img->height * img->width; //图像的元素个数 for (int i = 0; i < l; i++) { y = *pY; cr = *pCr; cb = *pCb; cb -= 109; cr -= 152; x1 = (819*cr-614*cb)/32 + 51; y1 = (819*cr+614*cb)/32 + 77; x1 = x1*41/1024; y1 = y1*73/1024; value = x1*x1+y1*y1; //构造椭圆的模型 if(y<100) (*pMask)=(value<700) ? 255:0; //对齐进行值得选择,要不255,要不0 //在不同的亮度下呈现出不同的亮度 else (*pMask)=(value<850)? 255:0; //255 is the skin, 0 is the background //255 纯白色 0 纯黑色 pY++; pCr++; pCb++; pMask++; } //cvSaveImage("example.jpg",mask); //cvErode(mask, mask, NULL, 1); //cvDilate(mask, mask, NULL, 1); //cvSmooth(mask, mask, CV_GAUSSIAN, 21, 0, 0); //cvThreshold(mask, mask,130, 255, CV_THRESH_BINARY); cvReleaseImage(&imgY); cvReleaseImage(&imgCr); cvReleaseImage(&imgCb); cvReleaseImage(&imgYCrCb); }
阅读全文
0 0
- 图像处理——椭圆肤色模型
- 学习OpenCV——肤色检测:椭圆模型 (&最大连通区域)
- HLS图像处理系列——肤色检测
- opencv椭圆肤色模型人脸检测
- OpenCV Using Python——应用统计肤色模型和相对于块原点能量的肤色分割
- 图像处理中的椭圆拟合(一)
- Win8 Metro(C#)数字图像处理--2.35图像肤色检测算法
- 肤色图像检测
- OpenCV——肤色检测
- 基于椭圆模块的肤色检测
- 数字图像处理—图像恢复和重建—退化模型
- 图像处理——模型搜索的原理
- OpenCV Using Python——RGB颜色空间中的统计肤色模型
- Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
- 图像处理复习3———图像编码和颜色模型
- Processing 教程(8)- 图像处理:抽象椭圆点阵
- PGN,图像界面,换肤色
- OpenCv视频图像肤色检测
- [catsVSdogs]猫狗大战代码注释讲解_2
- Deep Learning读书笔记5---卷积网络
- 使用QT实现2048游戏
- 避免大规模故障的微服务架构设计之道
- python爬虫由浅入深8---基于正则表达式查询的淘宝比价定向爬虫
- 图像处理——椭圆肤色模型
- 微信WKWebview内核点返回,页面不刷新
- 微信公众平台HTTPS方式调用配置免费https服务器
- Flume + Kafka整合入门实例
- nodejs学习笔记--连接Mongodb数据库
- 第4周【项目2
- 第四周项目5——猴子选大王
- commons之函数式编程Predicate和Transformer
- 详解Java中的clone方法 -- 原型模式