使用Kinect检测地板上的物体

Jos*_*ech 5 geometry opencv computer-vision kinect openni

让我们说我有一个指向地板的kinect.

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

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

Ian*_*ros 8

Kinect返回一个矩阵deph-map,表示任何表面与传感器的距离,并且在针孔相机模型之后,可以将每个深度测量与对应的RGB值对齐.我会考虑你已经知道如何将深度矩阵的每个像素与它在空间上的X,Y,Z和它的RGB值相关联.如果没有,您将需要进一步研究并了解如何在深度传感器和RGB相机之间进行立体相关.

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

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

通过3个中心斑点A',B'和C',您将能够找到您正在寻找的平面,如下图所示:

寻找飞机

说明:平面可以表示为点(位置)和法线(方向).考虑到你所有的物体都准确地位于你想要找到的平面上,你需要的只是3点,A,B,C代表该平面内的三角形.该三角形法线等于(A-B)x(C-B) - 这里x表示叉积 - 并且与平面相同.所以,你的飞机将是这3个点中的任何一个并且该三角形正常.如果对象的尺寸很重要,则需要考虑它们来定义平面位置.