如何从图像中提取对象?

时间:2018-05-18 04:05:04

标签: python image opencv image-processing

我有一个戴HMD的人的数据集。我想为HMD创建一个掩码。这是一个例子:

enter image description here

我需要为FOVE耳机创建一个遮罩。我尝试过语义分割模型。他们能够创造整个人的轮廓,但不能单独创建HMD。这是有道理的,因为FOVE不是他们模型中的一个类。我不能用FOVE示例重新训练模型,因为我没有任何面具数据可供训练。所以我转向图像处理方法。我尝试了聚类分割方法,尝试了MeanShift算法,KMeans算法,图像阈值处理和图切算法。

以下是我遇到的问题:

  1. Mean-Shift聚类:它创建了许多类(> 1000)。我需要能够在没有人工干预的情况下提取FOVE类,因为我需要处理大量数据(> 2000图像)。我平滑了我的输入图像,减少了类的数量,但它也在FOVE HMD中创建了由不同的光度梯度引起的单独的类。此外,许多图像具有相似的背景,就像在示例中一样。在这些情况下,平均转移感到困惑。
  2. MeanShift Output

    1. KMeans:低质量输出。它变得混乱并且不准确。给定输出为k = 10。
    2. KMeans Output

      1. 图像的阈值处理:它能够创建一个良好的Fove轮廓,但我不知道如何使用它来提取HMD坐标。输出采用自适应阈值处理。
      2. Adaptive Thresholding output

        1. GrabCut:输出不好,需要人工干预。 编辑:GrabCut算法需要具有非常接近面部的边界框作为输入。对于需要此预处理的2000个图像,我无法手动执行此操作。一般&更大的边界框,精度降低。我想先尝试一些不需要手动输入的方法,如果可能的话。
        2. GrabCut Output

          请建议我为HMD制作面具我可以做些什么。

          编辑: 这就是我现在使用的内容。最麻烦的部分是背景,在我的数据集中,有时只有几个值比FOVE少白色,有时差别很大。我训练了一个语义分割网络来检测并从图像中提取人物。作为参考,thisthis是在此主题上所做的一些好工作。之后,我使用均值移位算法来获得聚类并对图像执行颜色阈值处理。这给了我90%的准确度,其余的图像需要一些调整(主要是在颜色阈值处理)。

          Mask from semantic segmentation

          Final Mask being created

0 个答案:

没有答案