3d 点云到二维的投影

3d 点云到二维的投影,3d,2d,linear-algebra,projection,point-clouds,3d,2d,Linear Algebra,Projection,Point Clouds,半径为r的球体内有一个点云,这些点的坐标系位于球体的中心。我们的想法是对这片云“拍照”,因为在球体的表面有许多观察点。“摄像机”的位置取决于角度θ(方位角)和φ(仰角),如图所示。我需要至少10000张图片或视角 我该怎么办 我已经做了: 接下来,我将这些点投影到每个平面,因为我还需要在3D中可视化它们。像这样: 所以我有投影点的坐标,它们属于“照片”的平面,但仍然是原始坐标系 该平面的定义如下: U = {-sin(theta), cos(theta), 0} V = {cos(theta

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

我该怎么办

我已经做了:

接下来,我将这些点投影到每个平面,因为我还需要在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

每个点
p
在平面自身基础上的投影坐标
[U,V]

[x',y']=[dot(p-中心,U),dot(p-中心,V)]

要将其转换为世界坐标,只需执行以下操作

world\U coord=Center+U*x'+V*y'


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

每个点
p
在飞机自身基础上的投影坐标
[U,V]

[x',y']=[dot(p-中心,U),dot(p-中心,V)]

要将其转换为世界坐标,只需执行以下操作

world\U coord=Center+U*x'+V*y'


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

想象屏幕左下角是(0,0)度,右下角是(0360)度,左上角是(180,0)度,右上角是(180360)度。θ将从0变为360,φ将从0变为180。您可以通过计算这些角度并将其作为具有所需rgb的点写入像素来投影点云数据。有些像素会有多个点,原因是在相同的角度会有不同长度的点。根据这些长度,您可以创建深度贴图。简而言之,您的坐标系将像θ和φ一样变化(深度贴图的长度是可选的)。

想象屏幕的左下角是(0,0)度,右下角是(0360)度,左上角是(180,0)度,右上角是(180360)度。θ将从0变为360,φ将从0变为180。您可以通过计算这些角度并将其作为具有所需rgb的点写入像素来投影点云数据。有些像素会有多个点,原因是在相同的角度会有不同长度的点。根据这些长度,您可以创建深度贴图。简而言之,您的坐标系会像θ和φ一样变化(深度贴图的长度是可选的)。

就是这样。谢谢大家!@DanielAmaya不客气;我想这是你想要的第一个配方?是的,第一个配方。但是第二个也很有用:)就是这样。谢谢大家!@DanielAmaya不客气;我想这是你想要的第一个配方?是的,第一个配方。但是第二个问题也会很有用:)我投票关闭这个问题,因为它是关于线性代数/坐标系转换/而不是直接关于编程或软件开发的。我投票关闭这个问题,因为它是关于线性代数/坐标系转换/而不是直接与编程或软件开发有关。