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

wor*_*rty 9 image-processing kinect

目标是在不同的背景上显示人(也称为背景移除).

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

这很简单,我们可以找到在Internet上无处不在的代码.然而,深度信​​号是有噪声的,并且我们得到不属于所显示的人的像素.

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

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

在此输入图像描述

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

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

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

编辑1:

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

编辑2:

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

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

mpe*_*kov 5

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

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

  • 羽化外部像素(如果您使用的是Alpha通道,则减少它们的强度/增加其透明度)
  • 平滑图像,对平滑后的图像执行边缘检测,然后将这些边缘与原始清晰图像一起使用.
  • 做一些皮肤区域检测以标记绝对属于人的部分.看看YUV色彩空间中的皮肤检测?肤色检测
  • 对于衣服,使用色调和饱和度图像.如果您知道T恤的颜色(或至少它不是中性色),那么这将很容易突出.如果您不知道这些信息,那么使用其他框架建立一个人的模型可能是值得的(如果在您的视频中有一个大的灰色斑点,那么您的主体可能穿着一件灰色的衬衫)

这些方法并不是相互排斥的,因此可能值得尝试将它们组合起来.如果我想到别的什么,我会在这里回复.