【问题标题】:Point cloud projection to 2D点云投影到 2D
【发布时间】:2017-08-08 13:53:45
【问题描述】:

半径为r的球体内有一个点云,这些点的坐标系在球体的中心。这个想法是“拍照”这片云,因为球体表面有很多观点。如图所示,“相机”位置取决于角度 theta(方位角)和 phi(仰角)。我需要至少 10000 张图像或观点。

我该如何处理?

我已经完成了:

this link 之后,我将点投影到每个平面,因为我还需要在 3D 中可视化它们。像这样:

所以我有属于“照片”平面但仍具有原始坐标系的投影点的坐标。

平面定义为:

U = {-sin(theta), cos(theta), 0}
V = {cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi)}
Center = {cos(theta)*cos(phi), sin(theta)*cos(phi), sin(phi)}*r

但我无法从 3D 转换到 2D。

【问题讨论】:

  • 我投票结束这个问题,因为它是关于线性代数/坐标系变换/Mathematics,而不是直接关于编程或软件开发。

标签: 3d 2d linear-algebra projection point-clouds


【解决方案1】:

每个点P在平面自身基础[U, V]中的投影坐标由下式给出

[x', y'] = [dot(P - Center, U), dot(P - Center, V)]

要将其转换为世界坐标,只需这样做

world_coord = Center + U * x' + V * y'

(如果我误解了你的问题,请告诉我)

【讨论】:

  • 就是这样。谢谢!
  • @DanielAmaya 不客气;我猜这是你追求的第一个公式?
  • 是的,第一个公式。但是第二个也很有用:)
【解决方案2】:

假设屏幕的左下角是 (0,0) 度数,右下角是 (0,360) 度数,左上角是 (180,0) 度数,右上角是 (180,360) 度数。 Theta 将从 0 变为 360,phi 将从 0 变为 180。您可以通过计算这些角度并将像素写入具有所需 rgb 的点来投影您的点云数据。有些像素会有不止一个点,原因是在同一个角度会有不同长度的点。根据这些长度,您可以创建深度图。简而言之,您的坐标系会像 theta 和 phi 一样发生变化(深度图的长度是可选的)。

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2019-02-01
    • 2012-09-03
    • 2013-11-20
    • 2019-06-08
    • 2010-09-09
    相关资源
    最近更新 更多