2011-09-05 144 views
9

其目标是在不同背景(又名背景去除)上显示此人。使用Kinect去除背景:身体周围的噪音抑制

我在微软的Beta Kinect SDK中使用Kinect来做到这一点。在深度的帮助下,背景被过滤,我们只能得到人的形象。

这很简单,我们可以找到在互联网上随处可见的代码。然而,深度信​​号是嘈杂的,我们得到的像素不属于所显示的人。

我申请的边缘检测,看它是否是有用的,我目前得到这个:

这里还有一个没有边缘检测:

enter image description here

我的问题是:我可以通过哪种方式摆脱人物周围这些嘈杂的白色像素?

我尝试了形态学操作,但身体的某些部分被擦除,仍然留下白色像素。

该算法不需要是实时的,我可以应用它,当我按下'保存图像'按钮。

编辑1:

我只是试图做的形状边界最接近的框架背景减法。你看到的单个像素闪烁,这意味着它是噪音,我可以轻松摆脱它们。

编辑2:

现在项目结束了,这里就是我们所做的:Kinect的的手动校准使用OpenNI驱动程序,它直接提供了红外图像。结果非常好,但每个校准都针对每个Kinect。

然后,我们在边框上应用了一点透明度,结果看起来非常好!但是我无法提供照片。

+1

您可以在应用边缘检测器之前发布图像吗? – misha

+1

刚刚补充说。 – wormsparty

+0

可以共享代码 – ravithejag

回答

5

你的问题不只是嘈杂的白色像素。您也错过了该人的重要部分,例如他右手的一部分。我建议你对深度数据的阈值更加保守(允许更多的误报)。这会给你更多噪点的像素,但至少你会有整个人。

为了摆脱噪声像素的,我能想到的一对夫妇的事情:

  • 羽毛外像素(减少它们的强度/增加透明度,如果您使用的是alpha通道)
  • 平滑图像,在平滑图像上执行边缘检测,然后在原始清晰图像上使用这些边缘。
  • 做一些皮肤区域检测以标记绝对属于某人的部分。请参阅skin detection in the YUV color space?Skin Color Detection
  • 对于衣服,使用色调和饱和度图像。如果你知道T恤的颜色(或者至少它不是中性颜色),那么这很容易脱颖而出。如果你不知道这些信息,那么建立一个使用其他框架的人的模型可能是值得的(如果你的视频中有一个很大的灰色斑点,那么你的主题有可能穿着一件灰色的衬衫)

这些方法不是相互排斥的,所以可能值得尝试组合使用它们。如果我想到别的什么,我会回到这里。

+0

谢谢,明天我会看看你的想法。关于缺少人员的部分,我无法控制它,因为我使用SDK的人员检测。即使我编写了自己的版本,当深度信号非常嘈杂时(例如在手臂边缘或头发上),也会发生这些错误。有时,在头部的某些部位,我得到的深度为0,我无法轻松恢复。 – wormsparty

2

如果没有其他解决边缘抖动的方法,您可以随时尝试使用抗混叠作为后期处理。