基於隨機森林的皮膚分割

最近老師佈置了一個小作業,檢測圖像中的皮膚。

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、代碼

 等待審覈中

 

 

 

 

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