Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于计算机视觉的鲁棒手部检测_Python_Image Processing_Opencv_Computer Vision_Skin - Fatal编程技术网

Python 基于计算机视觉的鲁棒手部检测

Python 基于计算机视觉的鲁棒手部检测,python,image-processing,opencv,computer-vision,skin,Python,Image Processing,Opencv,Computer Vision,Skin,我目前正在开发一个鲁棒的手部检测系统 第一步是拍一张手的照片(在HSV颜色空间中),手放在一个小矩形中以确定肤色。然后我应用阈值过滤器将所有非皮肤像素设置为黑色,所有皮肤像素设置为白色 到目前为止,它工作得很好,但我想问,是否有更好的方法来解决这个问题?例如,我发现有几篇论文提到了白人的具体色彩空间,但没有一篇论文比较了亚裔/非洲裔/白人的色调 顺便说一下,我正在通过Python绑定使用OpenCV。是一篇关于自适应高斯混合模型皮肤检测的论文,您可能会感兴趣 另外,我记得我读过一篇论文(不幸的是

我目前正在开发一个鲁棒的手部检测系统

第一步是拍一张手的照片(在HSV颜色空间中),手放在一个小矩形中以确定肤色。然后我应用阈值过滤器将所有非皮肤像素设置为黑色,所有皮肤像素设置为白色

到目前为止,它工作得很好,但我想问,是否有更好的方法来解决这个问题?例如,我发现有几篇论文提到了白人的具体色彩空间,但没有一篇论文比较了亚裔/非洲裔/白人的色调

顺便说一下,我正在通过Python绑定使用OpenCV。

是一篇关于自适应高斯混合模型皮肤检测的论文,您可能会感兴趣

另外,我记得我读过一篇论文(不幸的是,我似乎无法找到它),它使用了一种非常巧妙的技术,但它要求你在视野中有脸。其基本思想是检测人脸,并使用从人脸检测到的皮肤补丁自动识别肤色。然后,使用高斯混合模型对皮肤像素进行稳健的分离


最后,这可能对寻找皮肤检测的最新技术有很大帮助。目前,它在adademia进行了大量研究,并在行业中使用(例如,谷歌图像和Facebook上传图片策略)。

仅凭颜色很难找到肤色。
首先,它强烈依赖于自动白平衡算法。 例如,在此图像中,任何人都可以看到颜色是肤色。但对于计算机来说,它将是蓝色的。

其次,在数码相机中进行正确的颜色校准是一件困难的事情,而且对于您的目的来说,它很少足够精确。
你可以访问www.DPReview.com,了解我的意思


总之,我确实相信颜色本身可以作为输入,但这还不够。

你看过加里·布拉德斯基的camshift纸了吗?你可以从

一年前,我使用了皮肤检测算法来检测手部跟踪的皮肤区域,它很健壮。这取决于你如何使用它

使用颜色进行跟踪的第一个问题是,当人们有不同的肤色时,颜色对光照变化或如您所提到的不稳定。然而,如本文所述,这可以通过以下方式轻松解决:

  • 将图像转换为HSV颜色空间
  • 扔掉V通道,考虑H和S通道,因此 灯光变化的折扣
  • 由于不稳定,阈值像素饱和度较低
  • 将选定的蒙皮区域装箱到二维直方图中。(OpenCV“s 功能)此直方图现在用作皮肤的模型
  • 计算“反投影”(即使用直方图计算“概率” 图像中的每个像素都具有肤色(使用.skin) 区域将具有较高的价值
  • 然后,您可以使用以下两种方法之一查找二维图形的模式: 由backproject生成的“概率”贴图或用于检测 高“概率”
  • 抛开HSV中的V通道,仅考虑H和S通道就足以(令人惊讶地)检测不同肤色和不同光照变化。其优点是计算速度快

    这些步骤和相应的代码可以在原始文档中找到

    作为旁注,我以前也使用过高斯混合模型(GMM)。如果你只考虑颜色,那么我会说使用直方图或GMM没有多大区别。事实上,直方图的性能会更好(如果你的GMM不是用来解释光照变化等)。如果你的样本向量更复杂,GMM是好的(即,您考虑其他特征),但速度直方图更快速,因为使用直方图计算概率图本质上是表查找,而GMM需要执行矩阵计算(对于多维高斯分布公式中的维数大于1的向量)。对于实时应用程序来说,这可能非常耗时

    因此,如果你只是试图用颜色来检测皮肤区域,那么用直方图法进行检查。你可以使它适应局部梯度(即梯度直方图,但不可能达到达拉尔和Trigg人体检测ALGO的全部范围)。因此,它可以使用局部纹理信息区分皮肤和颜色相似的区域(例如纸板或木制家具),但这需要更多的努力

    有关如何使用直方图进行皮肤检测的示例源代码,您可以查看OpenCV的页面。但请注意,该页面中提到,他们只使用色调通道,同时使用色调和饱和度会获得更好的结果

    对于更复杂的方法,你可以看看玛格丽特·弗莱克和大卫·福赛斯关于“检测裸体人”的工作。这是早期关于检测同时考虑颜色和纹理的皮肤区域的工作之一。可以找到详细信息

    一个与计算机视觉和图像处理相关的源代码的巨大资源,其中碰巧包括视觉跟踪的代码


    希望这能有所帮助。

    我两年前也做过类似的工作。您可以尝试使用(),使用肤色像素作为初始化输入。它非常健壮且快速。 我在我的项目中应用它的方式就是这样。你有一个演示(幻灯片)和一个调查。 如果你用从你要追踪的手上提取的真实颜色初始化手的颜色,你应该不会对黑人有任何问题


    对于粒子过滤器,我想您可以找到一些代码实现示例。祝您好运。

    我的皮肤建模经验不好,因为: 1) lightning可能会有所不同-蒙皮分割不可靠 2) 它也会在你的脸上留下印记(就像其他人一样)