【问题标题】:2D Image to 3D world Coordinates2D 图像到 3D 世界坐标
【发布时间】:2018-07-07 15:36:20
【问题描述】:

我们从 Google Street View (GSV) API 抓取了一组图片。我想从 2D 图像估计 3D 世界坐标给定以下:

1.拍摄图像的相机的 GPS 位置(即纬度和经度)

GPS坐标到平移矩阵的转换:使用了2种类型的转换 获取平移矩阵的方法 -> UTM 转换并转换为笛卡尔坐标。

  • UTM 转换:使用 Python 的 UTM 库转换 GPS 坐标 到 UTM 坐标。使用具有固定高度的北和东值来创建平移矩阵。
  • 笛卡尔转换 - 使用以下公式生成平移矩阵:

x = 半径*math.cos(纬度)*math.cos(经度)

y = 半径*math.cos(纬度)*math.sin(经度)

z = 半径*math.sin(纬度)

2。使用 openSFM 计算的旋转矩阵(即 SFM 算法)。

该库提供 alphabetagamma 角度(以弧度表示)映射到 yaw、pitch 和 roll 角度。使用公式(http://planning.cs.uiuc.edu/node102.html)构造旋转矩阵

旋转矩阵 (R):R(alpha, beta, gamma)= R_z (alpha) * R_y (beta) * R_x (伽马)

3.根据视场角和图像尺寸, 我们估计校准矩阵如下(https://codeyarns.com/2015/09/08/how-to-compute-intrinsic-camera-matrix-for-a-camera/enter link description here):

K = [[f_x s X], [0 f_y Y], [0 0 1]]

x 和 y 是图像尺寸的一半(即 x = 宽度/2 和 y = 高度/2)

GSV API 提供视场角 θ(例如,45 或 80),因此焦距可以计算为

f_x= x/tan⁡(θ/2)

f_y= y/tan⁡(θ/2)

使用矩阵 T、R 和 K,我们如何估计 2D 图像中每个像素的 3D 世界坐标?

【问题讨论】:

    标签: computer-vision structure-from-motion


    【解决方案1】:

    不可能从单个图像 - 3D 深度信息在投影中丢失。即使您使用多张图像,也很难(或几乎不可能以任何准确度)处理您拥有的数据。

    GSV API 不会为您提供原始图像数据,而是提供已投影到立体全景图中的图像,这些图像遵循一系列旨在增强最终全景图的视觉外观的转换。此外,原始图像本身是使用移动平台上的卷帘快门相机拍摄的,因此无论非线性镜头失真如何,标准针孔模型都不适用于它们。除非您确切地知道自己在做什么,并且在 Google 工作并且可以访问内部数据,否则尝试对街景图像进行“从运动中构造”肯定会令人失望。

    “真正”的做法是将同一车辆收集的激光雷达数据与图像进行注册。 Google 在内部进行此操作,但我认为他们从未将结果公开到外部可访问的产品中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多