【问题标题】:How to convert 2D(x,y) coordinates to 3D(x,y,z) coordinates using MATLAB?如何使用 MATLAB 将 2D(x,y) 坐标转换为 3D(x,y,z) 坐标?
【发布时间】:2018-07-15 09:09:12
【问题描述】:

我正在尝试使用 MATLAB 自动化机械臂。所以问题是,摄像头将安装在机械臂的底座上。它将捕获相机帧的快照并对其进行图像处理,它将检测目标(对象)并为其找到像素坐标。完成后,这个像素坐标应该映射到真实世界的 x-y-z 度量坐标?,这个真实世界的坐标(x,y,z)将作为逆运动学函数的参数,它会给出值θ 以便伺服系统可以移动。

我被困在这里,这个像素坐标应该映射到现实世界的 x-y-z 公制坐标?我不知道该怎么做。没有任何想法,如何进行? 谁有线索,请分享!!

PS 你们中的任何人都认为对于机械臂的自动化,我应该使用 MATLAB 还是其他东西?因为所有代码都将使用 ROS 环境上传到树莓派 3 上。

最好的问候

hitesh 库马尔

【问题讨论】:

  • 你看过这个stackoverflow.com/q/9124731/5025009 吗?
  • @seralouk 我见过他们,但有些人说你需要估计相机内在参数、外在参数和镜头失真参数。
  • 这更像是一个数学问题而不是编码问题?您正在寻找的是一种将 2D 坐标转换为 3D 的算法。在软件方面,MATLAB 不能安装在 RPi 上,但您可以通过 MATLAB 控制和获取 RPi 中的数据(见documentation)。你也可以试试Octave,这是一个MATLAB克隆,免费使用。
  • 没有更多信息的单个图像不足以获得3D信息。如果您有更多知识,例如关于目标的大小或 AR 标记,则可以使用单个图像来执行此操作。或者如果可以左右移动相机,假设相关环境是静态的,基本上可以得到立体图,特征检测后使用三角测量。

标签: matlab image-processing computer-vision camera-calibration robotics


【解决方案1】:

要计算图像中给定像素的 3D 世界点,您需要深度信息(应使用 Kinect 等 3D 相机)。一个你有深度信息和相机内在和外在,你可以将 2D 像素转换为 3D 世界坐标,反之亦然。

下面的公式用于计算世界坐标中的 X、Y、Z。

从技术上讲,Perspective projection 是相机在将 3D 世界转换为 2D 时所做的事情,下面的等式代表了这种投影。

上图来自here

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2014-05-30
    • 2020-11-27
    • 2023-04-04
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多