让我们说我有一个指向地板的kinect。
如果我在地板上放置3或4个物体,我如何确定这些物体所在的平面?
如何检测该地板上颜色鲜艳的物体?
答案 0 :(得分:8)
Kinect返回一个矩阵deph-map,表示任何曲面到传感器的距离,并跟随pinhole camera model可以将每个深度测量与对应的RGB值对齐。我会考虑你已经知道如何将深度矩阵的每个像素与它在空间上的X,Y,Z和它的RGB值相关联。如果没有,您需要执行further research并了解如何在深度传感器和RGB相机之间进行立体相关。
你在这里问了两个完全不同的问题。第一个很容易用一些基本的几何概念来解决,但是必须先解决第二个问题才能找到对象在空间上的位置。
有几种方法可以找到颜色鲜艳的物体。如果您的传感器将记录静态场景,则可以使用Background Subsctraction。这将生成一个二进制图像,表示具有与先前训练的背景模型不同的值的像素。由于您的对象明确地具有比背景更亮的颜色,因此您可以简单地应用Thresholding Segmentation。只需将RGB转换为HSL图像,然后查看更高的亮度值。如果那些方法无法解决您的问题,还有其他几种方法可供研究。以下两种方法将返回带有blob的二进制图像。您可以使用这些斑点的中心作为鲜艳物体的矩阵坐标。
使用3个中心斑点A',B'和C',您将能够找到您正在寻找的平面,如下图所示:
说明:平面可以表示为点(位置)和法线(方向)。考虑到你所有的物体都准确地位于你想要找到的平面上,你需要的只是3点,A,B,C代表该平面内的三角形。该三角形法线等于(A - B)x(C - B) - 这里x表示叉积 - 并且与平面相同。所以,你的飞机将是这3个点中的任何一个并且该三角形正常。如果对象的尺寸很重要,则需要考虑它们来定义平面位置。