# 如何用RGB和深度图获取球的XYZ坐标

> 原文链接：https://robotics.hellobike.com/pitfalls/2015-11-08-robotics-se-8400
> 频道：pitfalls | 更新日期：2015-11-08 | 标签：auto, stackexchange, localization, computer-vision, kinect, cameras
> 核心摘要：通过校准深度与RGB配准，在目标像素取深度，再用相机矩阵换算相机坐标系下笛卡尔坐标。

# 如何用RGB和深度图获取球的XYZ坐标

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Using an RGB + Depth Camera to locate X,Y,Z coordinates of a ball](https://robotics.stackexchange.com/questions/8400/using-an-rgb-depth-camera-to-locate-x-y-z-coordinates-of-a-ball)（Robotics Stack Exchange #8400）

**状态**：已解决

## 问题

在`Gazebo`中用`Kinect`的RGB相机通过`Hough Transform`得到球的像素`X,Y`，希望从同一`Kinect`点云获取深度并得到球的`X,Y,Z`坐标，但不知道如何将像素坐标转换为米。

## 环境

`Gazebo`；`Kinect` RGB相机与点云；使用简单RGB圆检测；`OpenCV`文档被提及。

## 解决办法

1. 先解决深度数据与RGB数据的配准，并确保配准标定正确。
2. 对识别出的目标像素`X,Y`直接提取对应深度；若是亚像素坐标，使用插值。
3. 获得像素深度后，使用基于视场角和图像尺寸的相机矩阵，将像素坐标转换为相机坐标系下的笛卡尔坐标。
4. 同时考虑RGB相机畸变；可参考`OpenCV`相关文档处理像素坐标、齐次相机坐标与世界笛卡尔坐标转换。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #8400：Using an RGB + Depth Camera to locate X,Y,Z coordinates of a ball](https://robotics.stackexchange.com/questions/8400/using-an-rgb-depth-camera-to-locate-x-y-z-coordinates-of-a-ball)