基于随机森林的皮肤分割

最近老师布置了一个小作业,检测图像中的皮肤。

1、基于颜色空间

已经有很多博客写了:

python:https://www.cnblogs.com/demodashi/p/9437559.html 

c++:https://www.cnblogs.com/skyfsm/p/7868877.html

其中基于Ycrcb的效果比较好,但是非常容易受背景干扰(后俩张几乎背景都包含在里面了)。

我也把c++版本的 基于椭圆皮肤模型的方法用python 实现了一下,但是 python的画椭圆的函数只能输入int型数据,所以后来效果也不是很好,于是放弃。

2、基于随机森林的皮肤分割   参考文章:肤色检测(分割)via Random Forest

下载了文中的两篇2010 2012的论文读了一下,也下载了数据集,自己试了一遍,效果不错。

样本数:245057 (其中有50,000+正样本,剩余负样本)

特征: B G R(像素颜色,注意与opencv读取的颜色顺序一样)

类别: 2类(肤色1/非肤色2)

 

这个方法受背景影响小一点,但是对于皮肤上的反光、痘痘之类的,检测效果不如Ycrcb。

(1)随后我又加了去噪和磨皮:https://www.jianshu.com/p/3a028a908c19.

但是皮肤高光经过去噪或者磨皮以后会整个脸都变亮了,分割效果并没有提升。(但是真的变好看了)

(2)随后又加了去高光:

illuminationChange 的方法不好,它其实就类似于拿附近的像素点去填充(可能是我的mask搞得不好吧)

去反光参考博文:https://blog.csdn.net/weiwei9363/article/details/85046877

代码:https://github.com/jiemojiemo/some_specular_detection_and_inpainting_methods_for_endoscope_image

确实能够去除反光,但是会把眼球的白色当成反光一起处理了,真是心塞!

3、结果展示

 依次是:原图      Ycrcb       随机森林        磨皮         去高亮

 

 

 

 

4、代码

 等待审核中

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章