image-processing - 使用 Kinect : noise suppression around body shape 去除背景

标签 image-processing kinect

目标是在不同的背景上显示人(也就是背景去除)。
我将 Kinect 与 Microsoft 的 Beta Kinect SDK 一起使用。在深度的帮助下,背景被过滤,我们只得到人的图像。
这很简单,我们可以在 Internet 上随处找到执行此操作的代码。然而,深度信​​号是有噪声的,我们得到了不属于显示的人的像素。
我应用了一个边缘检测器来查看它是否有用,我目前得到了这个:

这是另一个没有边缘检测的:
enter image description here
我的问题是:我可以通过哪种方式摆脱人周围的这些嘈杂的白色像素?
我尝试了形态学操作,但 body 的某些部位被删除了,仍然留下白色像素。
该算法不需要是实时的,我可以在按下“保存图像”按钮时应用它。
编辑1:
我只是尝试用形状边框上最近的帧进行背景减法。您看到的单个像素在闪烁,这意味着它是噪声,我可以轻松摆脱它们。

编辑2:
该项目现在已经结束,这就是我们所做的:使用直接提供红外图像的 OpenNI 驱动程序手动校准 Kinect。结果非常好,但每次校准都特定于每个 Kinect。
然后,我们在边框上应用了一点透明度,结果看起来非常好!但是,我无法提供图片。

最佳答案

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

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

  • 羽化外部像素(如果您使用 Alpha channel ,请降低它们的强度/增加它们的透明度)
  • 平滑图像,对平滑后的图像执行边缘检测,然后将这些边缘与原始清晰图像一起使用。
  • 做一些皮肤区域检测来标记绝对属于一个人的部分。见 skin detection in the YUV color space?Skin Color Detection
  • 对于衣服,使用色调和饱和度图像。如果您知道 T 恤的颜色(或者至少知道它不是中性色),那么这将很容易脱颖而出。如果您不知道这些信息,那么可能值得使用其他帧建立一个人的模型(如果您的视频中有一个大的灰色 Blob 在四处移动,那么您的拍摄对象很可能穿着灰色衬衫)

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

    关于image-processing - 使用 Kinect : noise suppression around body shape 去除背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7308170/

    相关文章:

    python - 在 NumPy 数组中为每个唯一元素选择一个随机索引,并考虑引用数组中缺失的元素

    Kinect 黑客攻击 : Start now or wait for the sdk?

    c# - Kinect NullReferenceException 错误

    audio - 如何使用 OpenNI 访问 Kinect 音频数据?

    opencv - 如何细化或模糊或平滑边缘?

    java - 匹配两个图像

    python - 傅里叶变换可以有哪些参数?/如何处理移位后的结果?

    macos - 在 OS X 上使用 kinect 1520 和 libfreenect2 进行处理/Python 开发

    c# - KinectColorViewer 和 SDK 1.6

    java - 了解 BufferedImage.getRGB 输出值