基于YCbCr颜色空间的口/嘴检测,在openCv

时间:2015-04-29 07:23:54

标签: opencv face-detection

您好我正试图检测嘴巴或嘴唇的区域。为此,我尝试使用这些文章中描述的方法:Paper1Paper2。 (只能发表两篇论文)

他们使用的方法是使用色彩空间YCbCr,因为嘴唇有一个强烈的红色成分,而蓝色则比脸部的其他部分弱。因此,你可以像这样使用这个颜色空间:

  

LipMap =(Cr Cr)((Cr Cr)-n (Cr / Cb))((Cr Cr)-n *(CR / CB))

     
    

n = 0.95 *((总和(Cr * Cr)/ m)/(总和(Cr / Cb)/ m))

  

问题是所有这些来源都没有真正解释如何进行计算。我知道如何获得Cr和Cb的值,但我不能100%确定它们应该在[0,1]或[0,255]的范围内,消息来源同时说明两者。在那之后,我不确定如何从n计算以及LipMap中获得正确的值。在计算之前或之后,数字是否应该被标准化。另外你如何从Cr / Cb和标准化值中得到正确的值,我似乎无法得到正确的值。

我一直试图让这个工作几个小时,但我做错了。最终的一些价值总是很大。它们也不在它们应该是[0,1]或[0,255]的范围内。

如果有人对此如何解决或提供一些提示,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你只是想找到嘴唇出现在脸上的位置,那么使用haar级联来找到它们可能是值得的(我不知道你是否尝试过这种方法,或者这是否合适为您的项目)

如果你真的需要找到使用YUV进行阈值处理的好设置,你仍然可以使用一个haar级联来找到嘴,然后选择你知道通常包含一个像素的haar选择的感兴趣区域内的一个像素在嘴唇上。

此像素将为唇部上的随机区域提供YUV值,然后您可以阈值图像以包括与像素YUV值相似的所有像素(您可以计算出对此阈值的严格程度)在测试期间)然后你应该留下所有像素的嘴(足够接近)

希望我已经足够清楚地解释了这一点。

祝你好运