如何将2D图像上的点(x,y)映射到3D空间? (提供的插图)

时间:2011-07-06 08:06:29

标签: image matlab image-processing 3d radial

我有一堆图像(大约180张),每张图片上都有2颗星(只是基本注释)。因此,最初提供两颗恒星的位置(x,y)。所有这些图像的尺寸都是固定不变的。

图像之间的“距离”约为1 o ,原点是每个2D图像的中心(宽度/ 2,高度/ 2)。请注意,如果将其绘制出来并进行良好插值,则星形实际上会形成不规则形状的

Enter image description here

点缀的红色圆圈和点缀的紫色圆圈可以提供更强烈的3D空间气味和2D图像的排列(如风扇)。它还表明每个切片约为1 o

  1. 使用提供的(x,y)出现在2D图像中,如何知道每个图像大约1 o <在3d空间中得到相应的(x,y,z) / sup>分开?

  2. 我知道MATLAB具有3D绘图功能,我应该如何实施上述方案的解决方案? (不幸的是,我用MATLAB绘制3D的经验很少)

  3. 根据接受的答案,我向上看了一下:球面坐标系。基于phi,rho和theta的计算,我可以毫无问题地重建环。希望这有助于任何有类似问题的人。

    我也在这里记录了解决方案。我希望它也可以帮助那些人: http://gray-suit.blogspot.com/2011/07/spherical-coordinate-system.html

4 个答案:

答案 0 :(得分:1)

给定2D坐标(x,y),只需将角度A添加为第三个坐标:(x,y,A)。然后你有3D。

如果你想让Anotations在3D中的圆半径r上移动你可以计算: 你可以使用(r * cos(phi),r * sin(phi),0)在XY平面上绘制一个圆,然后用3x3旋转矩阵将其旋转到你需要的方向。

答案 1 :(得分:1)

我相信y坐标保持原样,因此我们可以将其视为从上到下查看时将2D x和图像角度转换为x和z。

2D x坐标是距离3D空间中的原点的距离(从上到下查看)。图像角度是点在3D空间中相对于x轴的角度(从上到下看)。因此,x坐标(距离orign的距离)和图像角度(从上到下看的角度)构成3D空间中的x和z坐标(如果从上到下查看,则为x和y)。

那是polar coordinate。 阅读如何从极坐标转换为笛卡尔坐标以获得3D x和z坐标。

我也不擅长数学,这是我的去处:

3D coords = (2Dx * cos(imageangle), 2Dy, 2Dx * sin(imageangle))

答案 2 :(得分:1)

您不清楚自己的旋转发生在哪个轴上。但是,我的答案适用于一般旋转轴。

首先,将你的点放在一个位于X-Y平面上的3D空间中。这意味着这些点具有0 z坐标。然后,围绕所需轴应用所需角度的3D旋转 - 在您的示例中,它是一度旋转。您可以自己计算转换矩阵(不应该太难,谷歌“3D旋转矩阵”或类似的关键字)。但是,MATLAB使用viewmtx函数更容易,它为您提供了4x4旋转矩阵。额外(第四)维度取决于您指定的投影(它的作用类似于缩放系数),但为了简单起见,我将让MATLAB使用其默认投影 - 您可以在MATLAB文档中阅读它。

因此,为了使图更清晰,我假设有四个点是位于xy平面上的正方形的顶点(A(1,1)B(1,-1)C(-1,-1),{{1} })。

D(1,-1)

答案 3 :(得分:0)

如果您可以使用模型描述您对真实物理系统(如双星系统)的观察,则可以使用粒子滤波器。

当只有一个观测方向可用时,开发这些过滤器是为了在海上定位一艘船。一个跟踪船只并估计它的位置和移动速度,跟随的时间越长,估计变得越好。