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

car*_*arl 14 image-processing computer-vision background-foreground image-segmentation

有两个图像

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

Nik*_*iki 17

如果您对图像背景有一个很好的估计,那么从人物图像中减去它是一个很好的第一步.但这只是第一步.之后,你必须分割图像,即你必须将图像分割成"背景"和"前景"像素,具有以下约束:

  1. 在前景区域,与背景图像的平均差异应该很高
  2. 在背景区域,与背景图像的平均差异应该很低
  3. 这些区域应该是平滑的.轮廓长度和曲率应该是最小的.
  4. 区域的边界应该在源图像中具有高对比度

如果您在数学上倾向于这些约束,可以使用Mumford-Shah函数完美地建模.浏览此处获取更多信息.

但您可以根据问题调整其他分段算法.

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

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

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