我们如何知道一个对象包含在另一个对象内部或仅位于另一个对象之上?

让我们以杯碟勺为例。杯子躺在盘子的顶部。但是汤匙在杯子里。我们如何区分这两种情况?判断A是包含在B内还是位于B之上的标准是什么?

我正在尝试使用kinect来解决它。

#1 楼

其实我们没有。这是无数视觉错觉的来源。通过一生的经历,我们学习上下文,该上下文告诉我们什么时候一件事情可以放在另一件事情上。但是即使那样,雕塑也可以用来欺骗我们。例如,它看起来像是以某种方式组织的盘子,杯子和勺子,但实际上并非以上所述。 3D打印的Escher件就是一个很好的例子。

Kinect具有增强的深度感测能力。有了这样的信息,您也许可以做出更好的决定,但是我们仍然可以构想会欺骗系统的结构。我无法说说存在哪些CV方法来协助您的工作,但是我知道ML世界的深度学习已经在这里取得了进展。

评论


$ \ begingroup $
有趣。是否没有考虑深度的图像识别算法?如果可以看到有汤匙和杯子,我认为足够精确的距离传感器数据和对杯子的3D形状的充分理解将可以确定这些数据。
$ \ endgroup $
–乔·贝克(Joe Baker)
2012-12-22 22:53

$ \ begingroup $
就像我说的那样,我无法谈论可用的CV方法。我倾向于同意,如果我们有足够准确的深度数据,并且知道我们在看着杯子和勺子,那么我们可以做出确定。症结在于我们正在看杯子和勺子。我们怎么知道的?如果我们仅分析单张照片,则不能确切地说是这种情况。即使是人类,如果我们没有先验知识,我们也只能说出我们认为的看法。
$ \ endgroup $
– DaemonMaker
2012-12-22 23:03:

#2 楼

当您想针对特定对象类别(例如杯碟勺子)而不是任何通用对象对解决此问题时,问题就容易得多。我也认为在这种情况下不会发生DaemonMaker提到的退化,因为我们有深度图像而不是2D图像。

当您知道场景中的物体并且您有深度时图像,可以估计每个对象的完整3D方向(姿势)。如果所讨论的对象是刚性的,则使用某种ICP可能足以达到这种姿势。对于对象不是刚性的(人)或您不知道对象的确切特定模型(例如茶杯还是咖啡杯)的更困难的情况,您应该参考一些计算机视觉/ Kinect文献。

一旦有了对象的3D姿势,回答对象-对象3D位置查询就会更容易。

评论


$ \ begingroup $
好,很抱歉,我的回复很晚...我尝试使用凸包方法,发现3D中两个区域的凸包。然后,找到他们的交点数量。如果它很高,则一个对象位于另一对象内部。如果不是,则它可能在它上面,也可能不在上面。因此,我通过找到两个对象区域的2D凸包来测试交点。如果一个对象位于另一个对象之上,这给了我。有没有比这更好的方法了?
$ \ endgroup $
– swagatika
13年7月27日在11:53



#3 楼

我尝试使用凸包方法,发现3D中两个区域的凸包。然后,找到他们的交点数量。如果它很高,则一个对象位于另一对象内部。如果不是,则它可能在它上面,也可能不在上面。因此,我通过找到两个对象区域的2D凸包来测试交点。如果一个物体位于另一个之上,这给了我。