【发布时间】:2012-06-01 18:41:25
【问题描述】:
我有一系列从相机拍摄的图像。图像由手和周围环境组成。我需要移除除手以外的所有东西。
我是图像处理的新手。关于上述问题,有人可以帮助我吗?我习惯使用 C 和 Matlab。
【问题讨论】:
标签: c matlab image-processing computer-vision background-subtraction
我有一系列从相机拍摄的图像。图像由手和周围环境组成。我需要移除除手以外的所有东西。
我是图像处理的新手。关于上述问题,有人可以帮助我吗?我习惯使用 C 和 Matlab。
【问题讨论】:
标签: c matlab image-processing computer-vision background-subtraction
如果您有一个固定的背景和一只移动的手(以及很多图像!),一个非常简单的方法就是从每张图像中取一组图像的平均值。如果不出意外,这是对 Matlab 的温和介绍。
【讨论】:
您要解决的问题的名称是“图像分割”。此处的维基百科页面:wiki 是一个好的开始。
如果照明一致性对您来说不是问题,我建议您从简单的 RGB 阈值开始,并在尝试更复杂的方法之前先看看它能让您走多远。
【讨论】:
查看OpenCV,这是一个用于计算机视觉应用的 FOSS 库。具体来说,请参阅Video Surveillance 模块。有关 MATLAB 中背景减法的演练,请参阅EETimes article。
【讨论】:
你能指定你有什么样的图像。背景是移动的还是静止的?对于静态背景,它有点简单。您只需从背景图像中减去传入图像。您可以使用一些形态学操作使其看起来更好。它们都取决于您拥有的图像质量。如果您有移动背景,我建议您进行基于颜色的分割。将图像转换为 YCbCr,然后适当地阈值。我知道上面有一些可用的文件(但是我没有时间找到它们)。我建议先阅读它们。这是一个可能对您有所帮助的链接。阅读皮肤分割部分。
http://www.stanford.edu/class/ee368/Project_03/Project/reports/ee368group08.pdf
【讨论】:
背景减法很容易实现(将背景估计为所有帧的平均值,然后从背景和阈值中减去每一帧,从而产生绝对差),但不幸的是,只有在 1. 相机具有手动增益和曝光 2. 照明条件没有的情况下才能正常工作变化 3.background 是静止的。 4. 背景比前景可见的时间长。
鉴于您的描述,我认为情况并非如此-因此您可以使用-正如已经指出的-是颜色作为从背景中分割前景的一种手段。因为这是一手牌,所以你要隔离最好的选择是学习手牌的颜色。 opencv 提供了一些方法来做到这一点。如果您想自己执行此操作,您只需获取一些手部像素的颜色(您需要为至少一帧手动指定此颜色)并将它们转换为 HUE(它以独立于亮度的方式封装颜色。肤色具有非常恒定的色调),然后制作色调直方图。将其与其余像素进行比较,然后确定色调是否足够相似。
【讨论】: