使用Kinect去除背景:围绕体形消除噪音

时间:2011-09-05 12:34:54

标签: image-processing kinect

目标是在不同的背景上显示此人(即背景删除)。

我正在使用Kinect和微软的Beta Kinect SDK这样做。借助深度,背景被过滤,我们只得到人的形象。

这很简单,我们可以找到在互联网上无处不在的代码。但是,深度信号有噪声,我们得到的像素不属于显示的人。

我应用了一个边缘检测器来查看它是否有用,我现在得到了这个:

这是没有边缘检测的另一个:

enter image description here

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

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

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

编辑1:

我只是尝试使用形状边框上最近的帧进行背景减法。你看到的单个像素是闪烁的,这意味着它是噪音,我可以很容易地摆脱它们。

编辑2:

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

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

2 个答案:

答案 0 :(得分:5)

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

为了摆脱嘈杂的像素,我可以想到几件事:

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

这些方法并不相互排斥,因此可能值得尝试将它们组合使用。如果我想到其他任何事情,我会在这里回复。

答案 1 :(得分:2)

如果没有其他方法可以解决边缘上的抖动,则可以尝试使用反别名作为后处理。