【问题标题】:Calculate angle on a plane in 3D space from a 2D image从 2D 图像计算 3D 空间中平面上的角度
【发布时间】:2020-05-24 22:31:35
【问题描述】:

我有 2 张输入图像,其中(静态)相机处于未知角度。我设法使用 opencv 提取边缘和兴趣点。但我一直在根据图像计算真实角度。

从图像 #1 我需要计算相对于平面的相机角度。我知道平面上的 3 个点形成一个等边三角形(60 度角)。三角形的中心点也是平面的中心点。但是图像上的平面中心点被另一个物体覆盖了。

从图像 #2 我需要计算平面上的物体(点 C)到 3 个点之一和平面中心点(= 线 A 到 B)的实际角度。

如何计算真实角度 β,就好像相机与平面没有角度一样?

更新:

我正在https://docs.opencv.org/3.4/d9/d0c/group__calib3d.html寻找解决我的问题的方法
有许多功能,但我不知道如何将它们应用于我的具体问题。

有一个函数可以使用两个带有关键点的图像来计算 Homography,但我没有来自不同摄像机角度的场景图像。

然后是cv::findHomography 哪个Finds a perspective transformation between two planes。我知道 4 个源点,但我的 4 个目标点是什么?

我正在查看的另一个是cv::solvePnPcv::solvePnPRansac,但我再次只知道飞机上的 4 个源点。我不知道他们的 3D 对应点。

我错过了什么?

@Micka:感谢您的意见。我有 4 个点用于处理图像(3 个静态基点 + 点 C 处的对象)。我可以假设这些点都位于 z=0 的平面上。但是,我没有第二个平面的坐标,也没有相应 3D 点的 (x,y)。

【问题讨论】:

  • edit 发布您自己的努力来解决这个问题。后者最好在代码中,这称为minimal reproducible example
  • 您需要 2 张以上的图像才能正确估计角度。请看这个post
  • 您需要平面上的 4 个点来计算透视单应性。之后,您可以将所有像素扭曲到该平面并计算那里的角度。

标签: numpy opencv image-processing image-rotation


【解决方案1】:

您的描述没有明确说明,但如果您可以假设线段 AB 平分三角形的底边,那么您在平面与其图像之间有 4 个点对应关系,因此您可以使用 cv::findHomography。

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多