【发布时间】:2012-02-29 19:26:17
【问题描述】:
假设我有一个指向地板的 kinect。
如果我在地板上放置 3 或 4 个物体,我如何确定这些物体所在的平面?
如何检测该地板上颜色鲜艳的物体?
【问题讨论】:
标签: opencv geometry computer-vision kinect openni
假设我有一个指向地板的 kinect。
如果我在地板上放置 3 或 4 个物体,我如何确定这些物体所在的平面?
如何检测该地板上颜色鲜艳的物体?
【问题讨论】:
标签: opencv geometry computer-vision kinect openni
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 个点和三角形法线中的任何一个。如果对象的尺寸很重要,则需要考虑它们来定义平面位置。
【讨论】: