【问题标题】:Using Kinect to detect objects on the floor使用 Kinect 检测地板上的物体
【发布时间】:2012-02-29 19:26:17
【问题描述】:

假设我有一个指向地板的 kinect。

如果我在地板上放置 3 或 4 个物体,我如何确定这些物体所在的平面?

如何检测该地板上颜色鲜艳的物体?

【问题讨论】:

    标签: opencv geometry computer-vision kinect openni


    【解决方案1】:

    Kinect 会向您返回一个矩阵深度图,它表示任何表面到传感器的距离,并遵循pinhole camera model,可以将每个深度测量值与对应的 RGB 值对齐。我认为您已经知道如何将深度矩阵的每个像素与空间上的 X、Y、Z 和 RGB 值相关联。如果没有,您将需要执行further research 并了解深度传感器和 RGB 摄像头之间的立体相关性是如何完成的。

    你在这里问了两个完全不同的问题。第一个很容易用一些基本的几何概念解决,但必须先解决第二个才能找到物体在空间中的位置。

    有几种方法可以找到颜色鲜艳的对象。如果您的传感器将记录静态场景,则可以使用Background Subsctraction。这将为您生成一个二进制图像,表示与先前训练的背景模型具有不同值的像素。由于您的对象将明确具有比背景更亮的颜色,您可以简单地应用Thresholding Segmentation。只需将 RGB 转换为HSL 图像并查看更高的亮度值。还有其他几种方法,如果这些方法不能解决您的问题,请研究它们。遵循这两种方法将返回给您一个带有 blob 的二进制图像。您可以将这些 blob 的中心用作色彩鲜艳对象的矩阵坐标。

    使用 3 个中心斑点 A'、B' 和 C',您将能够找到您正在寻找的飞机,如下图所示:

    解释:一个平面可以表示为一个点(位置)和一个法线(方向)。考虑到您的所有对象都将恰好位于您要查找的平面上,您只需要 3 个点 A、B、C 来表示该平面内的三角形。这个三角形法线等于 (A - B) x (C - B) - 这里 x 代表叉积 - 和平面一样。因此,您的飞机将是这 3 个点和三角形法线中的任何一个。如果对象的尺寸很重要,则需要考虑它们来定义平面位置。

    【讨论】:

    • 好吧。我用它做了一些工作,也做了一些计算机视觉项目。好看!
    • 我想创建一个使用足球来控制球拍的乒乓球游戏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多