将Cubemap坐标转换为Equirectangular中的等效坐标

时间:2017-12-14 18:06:44

标签: image image-processing geometry projection panoramas

我有一组6幅图像立方体(前,后,左,右,上,下)的坐标如下:

[ [160, 314], Front; [253, 231], Front; [345, 273], Left; [347, 92], Bottom; ... ] 

每张图片为500x500p,左上角为[0,0]。 对于2500x1250p的图像,我想将这些坐标转换为equirectangular中的等效坐标。布局是这样的:

cubemap

我不需要转换整个图像,只需要转换坐标集。特定像素是否有任何直接转换?

1 个答案:

答案 0 :(得分:1)

  1. 将您的图片+ 2D坐标转换为3D规范化矢量

    (0,0,0)是您的立方体贴图的中心,以使其按预期工作。所以基本上你需要将缩放到坐标的U,V方向向量添加到纹理点(0,0)的3D位置。方向向量只是单位向量,其中每个轴有3个选项{-1, 0 , +1},并且每个向量只有一个轴坐标不为零。立方体贴图的每一面都有一个组合......哪一个取决于我们不知道的惯例,因为你没有分享任何细节。

  2. 使用Cartesian to spherical坐标系转换

    你只需要两个角度的半径......

  3. 将球面角度转换为2D纹理坐标

    此步骤取决于您的2D纹理几何体。最简单的是矩形纹理(我认为这就是equirectangular的意思)但是还有其他具有特定功能的映射,每个映射都需要不同的转换。这里有几个例子:

    对于矩形纹理,您只需将球面角度缩放为纹理分辨率大小...

    U = lon * Usize/(2*Pi)
    V = (lat+(Pi/2)) * Vsize/Pi
    

    加上/减去一些与您的坐标系匹配的方向标记。

  4. 顺便说一句。刚发现这个(可能是重复的QA):