有两张图片
alt text http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg alt text http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg 一个是背景图像另一个是具有相同背景,相同尺寸的人的照片,我想要做的是删除第二个图像的背景并仅提取人的个人资料。常见的方法是从第二个图像中减去第一个图像,但我的问题是人的佩戴颜色是否与背景相似。减法的结果很糟糕。我无法得到整个人的个人资料。谁有好主意删除背景给我一些建议。 提前谢谢你。
答案 0 :(得分:16)
如果您对图像背景有一个很好的估计,那么从图像中删除它是一个很好的第一步。但这只是第一步。之后,您必须分割图像,即您必须将图像分割为“背景”和“前景”像素,并具有以下约束:
如果你在数学上倾向于这些约束,可以用Mumford-Shah函数完美地建模。 See here for more information.
但您可以根据问题采用其他分割算法。
如果你想要一个快速而简单(但不完美)的版本,你可以试试这个:
现在,您有一个轮廓多边形,它接触可见的人物 - 背景边框,并在边框不可见或对比度低的地方继续平滑。 查看“Snakes”(e.g. here)以获取更多信息。
答案 1 :(得分:4)
在减去图像之前对图像进行低通滤波(模糊)。 然后使用该差异信号作为掩码来选择感兴趣的像素。 足够宽的滤波器将忽略太小(高频)的特征,这些特征最终会在您感兴趣的对象中划出“可怕的”区域。它还可以减少像素级噪声和未对准的突出显示(最高频率信息)。
此外,如果你有两个以上的帧,引入一些时间滞后将让你随着时间的推移形成更稳定的感兴趣区域。
答案 2 :(得分:1)
我认为常见的一种技巧是使用mixture model。抓住一些背景框架,并为每个像素构建一个混合模型,用于其颜色。
当你在其中应用一个帧时,考虑到每个像素的混合模型中的概率密度,你将得到颜色为前景或背景的概率。
在你有P(像素是前景)和P(像素是背景)之后,你可以对概率图像进行阈值处理。
另一种可能性是在一些更聪明的分割算法中使用概率作为输入。一个例子是graph cuts,我注意到它非常好。
然而,如果该人穿着从背景上看不可辨别的衣服,显然上述方法都不起作用。你要么得到另一个传感器(如红外线或紫外线),要么有一个非常复杂的“人模型”,如果找到它认为是躯干和头部的话,它可以将腿“加”到正确的位置。
祝你好运!
答案 3 :(得分:1)
背景与前景检测非常主观。应用程序场景定义背景或前景。但是在你详细介绍的应用程序中,我猜你暗中说这个人就是前景。 使用上述假设,您所寻求的是人物检测算法。可能的解决方案是:
瞧......你应该有一个简单的人物探测器。
- 运行一个haar特征检测器+增强的弱分类器级联 (有关详细信息,请参阅opencv wiki)
- 计算帧间运动(差异)
- 如果帧中存在+ ve面检测,则群集运动像素 面对面(kNN algorithm)
醇>
答案 4 :(得分:-2)
将照片发布在Craigslist上,并告诉他们你会支付5美元给别人这样做。
保证你能在几分钟内获得成功。
答案 5 :(得分:-3)
您可以逐个像素逐步浏览两个图像,而只是“减去”完全相同的像素,而不是直接减法。但这当然不会解释颜色的微小差异。