Emgucv中的皮肤检测和清除

时间:2014-01-22 19:57:39

标签: c# opencv image-processing emgucv

我是图像处理新手。在我的应用程序中,我想检测并去除眼睛周围的皮肤。enter image description here

在上图中,我想要在没有皮肤的情况下提取眼部区域(和眉毛)。

首先,我尝试在从图像中去除皮肤之前进行皮肤检测。我在emgu cv中使用了AdaptiveSkinDetector方法,这是我的代码

AdaptiveSkinDetector a = new AdaptiveSkinDetector(1, AdaptiveSkinDetector.MorphingMethod.ERODE);
Image<Gray, Byte> skin = new Image<Gray, Byte>(ImageFramecolourrighteye.Width, ImageFramecolourrighteye.Height);

a.Process(ImageFramecolourrighteye, skin);

CvInvoke.cvShowImage("Skin detection", skin);

但它没有检测到皮肤。我的代码中有错误吗? 有没有更好的方法来进行皮肤检测? (或许用颜色?) 参考/代码示例将非常有用。

非常感谢您的帮助

提前致谢

2 个答案:

答案 0 :(得分:1)

不了解Emugcv,但如果您的数据与您的示例一致,我认为局部二进制模式可用于检测眼睛的轮廓(没有皮肤)。 您可以在here中找到详细解释here和实施。即使实现是在matlab中希望它有所帮助。

答案 1 :(得分:0)

皮肤是一个非常好的例子,被证明可以通过色调很好地检测,使用色调进行检测,并使用饱和度和值进行游戏,直到达到最少的颜色,例如下面,其中有很多。 无论颜色或亮度如何,色调检测都可以让您获得皮肤。

http://bytefish.de/blog/opencv/skin_color_thresholding/