如何删除背景图像并获得前景图像

时间:2010-01-20 08:52:40

标签: image-processing computer-vision image-segmentation background-foreground

有两张图片

alt text http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg alt text http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg  一个是背景图像另一个是具有相同背景,相同尺寸的人的照片,我想要做的是删除第二个图像的背景并仅提取人的个人资料。常见的方法是从第二个图像中减去第一个图像,但我的问题是人的佩戴颜色是否与背景相似。减法的结果很糟糕。我无法得到整个人的个人资料。谁有好主意删除背景给我一些建议。 提前谢谢你。

6 个答案:

答案 0 :(得分:16)

如果您对图像背景有一个很好的估计,那么从图像中删除它是一个很好的第一步。但这只是第一步。之后,您必须分割图像,即您必须将图像分割为“背景”和“前景”像素,并具有以下约束:

  1. 在前景区域,与背景图像的平均差异应该很高
  2. 在背景区域中,与背景图像的平均差异应该很低
  3. 这些区域应该是光滑的。轮廓长度和曲率应该是最小的。
  4. 区域的边框在源图像中应具有高对比度
  5. 如果你在数学上倾向于这些约束,可以用Mumford-Shah函数完美地建模。 See here for more information.

    但您可以根据问题采用其他分割算法。

    如果你想要一个快速而简单(但不完美)的版本,你可以试试这个:

    • 减去两张图片
    • 找到背景 - 前景差异大于某个阈值的像素的最大连续“blob”。这是前景图像中“人物区域”的第一次粗略估计,但分割不符合上述标准3和4。
    • 找到最大斑点的轮廓(编辑:请注意,您不必从大纲开始。您也可以从更大的多边形开始,因为步骤会自动将其缩小为最佳位置。)
    • 现在浏览轮廓中的每个点并使轮廓平滑。即对于每个点找到最小化公式的点:c1 * L - c2 * G,其中L是轮廓多边形的长度,如果点在此处移动而G是点将移动到的位置处的梯度, c1 / c2是控制过程的常数。将点移动到该位置。这具有在源图像中的低梯度区域中平滑轮廓多边形的效果,同时保持其与源图像中的高梯度(即人的可见边界)相关联。您可以尝试不同的L和G表达式,例如,L可以考虑长度和曲率,G也可以考虑背景中的渐变和减去的图像。
    • 您可能需要重新规范轮廓多边形,即确保轮廓上的点有规律地间隔开。要么是这样,要么确保点之间的距离在之前的步骤中保持规则。 (“Geodesic Snakes”)
    • 重复最后两步直到收敛

    现在,您有一个轮廓多边形,它接触可见的人物 - 背景边框,并在边框不可见或对比度低的地方继续平滑。 查看“Snakes”(e.g. here)以获取更多信息。

答案 1 :(得分:4)

在减去图像之前对图像进行低通滤波(模糊)。 然后使用该差异信号作为掩码来选择感兴趣的像素。 足够宽的滤波器将忽略太小(高频)的特征,这些特征最终会在您感兴趣的对象中划出“可怕的”区域。它还可以减少像素级噪声和未对准的突出显示(最高频率信息)。

此外,如果你有两个以上的帧,引入一些时间滞后将让你随着时间的推移形成更稳定的感兴趣区域。

答案 2 :(得分:1)

我认为常见的一种技巧是使用mixture model。抓住一些背景框架,并为每个像素构建一个混合模型,用于其颜色。

当你在其中应用一个帧时,考虑到每个像素的混合模型中的概率密度,你将得到颜色为前景或背景的概率。

在你有P(像素是前景)和P(像素是背景)之后,你可以对概率图像进行阈值处理。

另一种可能性是在一些更聪明的分割算法中使用概率作为输入。一个例子是graph cuts,我注意到它非常好。

然而,如果该人穿着从背景上看不可辨别的衣服,显然上述方法都不起作用。你要么得到另一个传感器(如红外线或紫外线),要么有一个非常复杂的“人模型”,如果找到它认为是躯干和头部的话,它可以将腿“加”到正确的位置。

祝你好运!

答案 3 :(得分:1)

背景与前景检测非常主观。应用程序场景定义背景或前景。但是在你详细介绍的应用程序中,我猜你暗中说这个人就是前景。 使用上述假设,您所寻求的是人物检测算法。可能的解决方案是:

  
      
  1. 运行一个haar特征检测器+增强的弱分类器级联   (有关详细信息,请参阅opencv wiki
  2.   
  3. 计算帧间运动(差异)
  4.   
  5. 如果帧中存在+ ve面检测,则群集运动像素   面对面(kNN algorithm
  6.   
瞧......你应该有一个简单的人物探测器。

答案 4 :(得分:-2)

将照片发布在Craigslist上,并告诉他们你会支付5美元给别人这样做。

保证你能在几分钟内获得成功。

答案 5 :(得分:-3)

您可以逐个像素逐步浏览两个图像,而只是“减去”完全相同的像素,而不是直接减法。但这当然不会解释颜色的微小差异。