# Kinect 如何区分物体在内部还是在上方

> 原文链接：https://robotics.hellobike.com/pitfalls/2014-10-27-robotics-se-718
> 频道：pitfalls | 更新日期：2014-10-27 | 标签：auto, stackexchange, kinect, computer-vision, algorithm
> 核心摘要：用 3D 凸包交集判断包含关系，再用 2D 凸包交集判断是否在上方。

# Kinect 如何区分物体在内部还是在上方

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[How can computer vision distinguish one object being contained by another vs being on top of it?](https://robotics.stackexchange.com/questions/718/how-can-computer-vision-distinguish-one-object-being-contained-by-another-vs-bei)（Robotics Stack Exchange #718）

**状态**：已解决

## 问题

需要判断一个物体是被另一个物体包含，还是只是放在其上方；示例为杯子在盘子上，勺子在杯子里。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 分别计算两个物体区域在 3D 中的凸包，并计算两者交集。
2. 如果 3D 凸包交集显著高，则判断一个物体位于另一个物体内部。
3. 如果 3D 交集不高，再计算两个物体区域的 2D 凸包及其交集，用于判断一个物体是否位于另一个物体上方。

原问题作者：Swagatika；采纳答案作者：Swagatika。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #718：How can computer vision distinguish one object being contained by another vs being on top of it?](https://robotics.stackexchange.com/questions/718/how-can-computer-vision-distinguish-one-object-being-contained-by-another-vs-bei)