360lib投影格式介绍(二) - 立方体贴图投影(CMP / ACP / EAC / SSP / TSP)

本文深入探讨了几种360度全景视频的投影技术,包括CubeMap Projection (CMP)、Adjusted Cubemap Projection (ACP)、Equi-Angular Cubemap (EAC)、Segmented Sphere Projection (SSP)和Truncated Square Pyramid (TSP)。每种投影方式详细介绍了其投影方式、投影公式和投影效果,如CMP的非紧凑型和紧凑型布局,ACP的改进,EAC的等角优化,SSP的分段处理,以及TSP的金字塔截体结构。这些技术旨在优化360度视频的存储和编码效率,减少图像失真,提高压缩效率。
摘要由CSDN通过智能技术生成

CubeMap Projection (CMP)

投影方式

在计算机图形学中,立方体投影是常用的环境映射方法之一,常用于游戏场景中的天空盒,相当于等距柱状投影的优化版,环境投影到立方体之后可分六个正方形纹理来存储;或者将立方体展开,存储于一个纹理中的六个区域内。
在全景图像及视频中,立方体投影将球形视频映射到它的外接立方体上,立方体的上下两个面分别对应两极区域,中间的四个面对应赤道区域, 如下图:

投影公式

同ERP类似,CMP也需要对二维采样点(m, n)进行一个变换得到uv平面上的点(u, v),变换公式如下:

其中,经纬度坐标系与三维笛卡尔坐标系转换公式如下:

u=2(m+0.5)A1v=2(n+0.5)A1(1) (1) { u = 2 ( m + 0.5 ) A − 1 v = 2 ( n + 0.5 ) A − 1

得到点(u, v)后,接下来根据CMP不同的面片,三维坐标与二维坐标间转换的对应关系也有所不同。

正方体各面 面索引号 X Y Z
前面(X轴正方向) 0 1.0 −v −u
后面(X轴负方向) 1 −1.0 −v u
上面(Y轴正方向) 2 u 1.0 v
下面(Y轴负方向) 3 u −1.0 −v
右面(Z轴正方向) 4 u −v 1.0
左面(Z轴负方向) 5 −u −v −1.0

反向将三维空间点转换为二维平面点,则可以根据三维点的坐标值(X, Y, Z)进行一些条件判断,确定该点所在的面及二维坐标(u, v),如下表所示:

条件判断 面索引号 u v
|X| ≥ |Y| and |X| ≥ |Z| and X >0 0 −Z/|X| −Y/|X|
|X| ≥ |Y| and |X| ≥ |Z| and X <0 1 Z/|X| −Y/|X|
|Y| ≥ |X| and |Y| ≥ |Z| and Y >0 2 X/|Y| Z/|Y|
|Y| ≥ |X| and |Y| ≥ |Z| and Y <0 3 X/|Y| −Z/|Y|
|Z| ≥ |X| and |Z| ≥ |X| and Z >0 4 X/|Z| −Y/|Z|
|Z| ≥ |X| and |Z| ≥ |Y| and Z <0 5 −X/|Z| −Y/|Z|

CMP共有六个面,每个面都有给定的索引号。在u-v平面坐标系中,每个面都是一个边长为2的正方形,u、v的取值可以是[-1, 1]内的任意值。对于立方体投影来说,从立方体面片上的二维平面点转换到三维空间中的对应点是比较简单的,根据具体的平面点(u, v)及该点所在面的索引号,可以从表1中得到其对应3D点坐标(X, Y, Z)。

投影效果

非紧凑型布局

在存储投影后的球面视频时,为了有效利用现有的平面视频压缩编码技术,需要将投影方式中的几何体展开并存到一个纹理中的多个区域内。对于有多个面存在的投影方式,可以有各种不同的方法将其展开并摆放为一个二维平面图像上。下图为常规的立方体展开方式示意图及一帧实际的效果图,分布为3行4列,则其图像横纵比为4:3。

这种布局的各个面之间保持了良好的图像连续性,即二维图像中的相邻区域在立方体上同样是相邻的,有利于视频编码。但这种布局存在六块灰色区域,是为了将该布局变为矩形而填充的无效像素。这些无效像素占整个二维平面图像像素数量的一半,因此会增加视频在存储时占用空间的大小,同时也会导致编码效率不太理想。

紧凑型布局

为了避免无效区域带来的各种影响,又出现了2行3列的布局方法,这样整个二维平面图像内都是有效像素。六个面在该布局中的排列方式有很多种可能,效果最好的是图2-3中的方法:将面索引号为4、0、5的三个面摆放在第一行,面索引号为2、1、3的三个面顺时针旋转90度后摆放在第二行,如下图左图所示。这样可以保证各行中的图像区域是保持连续的,在舍弃无效区域的同时,将图像内部不连续边的数量降低到只有一条,使得图像连续性最大化。在右图中可以很明显地看到真实效果只在图像中间有一条不连续边。这种布局方式处理后的平面图像横纵比为3:2。

Adjusted Cubemap Projection (ACP)

投影方式

ACP是在JVET-F0025会议上制定的针对CMP投影方式的改进,其在360Lib-3.0版本中代替CMP以改进cubemap投影方式,其投影面定义与CMP完全一样(见图2-1与表2-1)。 每个ACP面的uv平面定义也与CMP相同,其中uv平面中的每个面都是2x2大小的平面,u和v定义在[-1,1]的范围内。

投影公式

对于ACP中的2D到3D坐标转换,给定面f上的采样点(m,n),首先使用CMP投影方式的公式(1)计算(u,v)。

接下来根据以下公式来调整(u,v)计算(u’,v’):

u=sgn(u)·0.340.3420.09|u|0.18v=sgn(v)·0.340.3420.09|v|0.18(2) (2) { u ′ = s g n ( u ) · 0.34 − 0.34 2 − 0.09 | u | 0.18 v ′ = s g n ( v ) · 0.34 − 0.34 2 − 0.09 | v | 0.18

最后,再利用上一节中CMP的正向求解表进行三维坐标(X, Y, Z)的求解。

对于3D到2D坐标转换,给定(X,Y,Z),根据上一节CMP的逆向求解表计算(u’,v’)和面f的索引号。然后再使用公式(3)来计算(u,v):

{ u=sgn(u)·(0.36u2+1.36|u|)v=sgn(v)·(0.36v2+1.36|v|)(3) (3) { u = s g n ( u ′ ) · ( − 0.36 u ′ 2 + 1.36 | u ′ | ) v = s g n ( v ′ ) · ( − 0.36 v ′ 2 + 1.36 | v ′ | )

最后,通过求解方程公式(1)来计算面f上的(m,n)。

将公式(1)中的正向调整函数表示为f(x),将公式(2)中的逆向调整函数表示为g(x)(x为u或v),下图为f(x)和g(x)的图像:

投影效果

下表对比了ACP与CMP的PSNR评分,可以看出有各类PSNR值有显著的下降,ACP有了明显的改进。

Metric Y U V
E2E-SPSNR-NN -11.3% -6.3% -6.4%
S-PSNR-I -11.2% -6.4% -6.6%
CPP-PSNR -11.2% -6.4% -6.6%
WS-PSNR -11.3% -6.3% -6.4%
CF-SPSNR-NN -34.2% -3.9% -4.2%
S-PSNR-I -11.0% -6.2% -6.4%
CPP-PSNR -10.8% -6.7% -7.0%
Dynamic Viewport -18.8% -11.1% -11.0%
Viewport 1 -15.4% -6.3% -7.1%

如下图是CMP与ACP的投影效果图对比,两幅图像基本上是一致的,仔细观察可以看出ACP在四个边角区域的图像扭曲比CMP更好一些。ACP主要在PSNR评分上有比较明显的提升,以此提高图像的质量。

Equi-Angular Cubemap projection (EAC)

这部分是由实验室老肖撰写的。

投影方式

等角立方体投影是对传统的立方体投影方式的一种优化。在球面映射到几何体表面的方法中,传统的放射型投影虽然简单,并且在应用到立方体投影中以后可以改善等距柱状投影中存在的像素分布极度不均匀及图像严重拉伸等问题,但由于立方体每个面的中心位置距离球体最近,越靠近边角的地方离球体越远,所以这些问题是依然存在的。

下图为立方体投影方式及其横截面示意图。可以看出,经过圆心和圆周上每一点的射线是以同样的角度向外发射的,但是在投影到正方形的边上时,越靠近中点对应的线段长度越短,越远离中点则对应线段越长,即圆上相同长度的弧映射到正方形上之后长度是不等的。因而导致对于球面上相同数量的像素点,投影到立方体边缘区域所分配到的采样像素数量会多于投影到中心区域时所分配的采样像素数量,即边缘区域稀疏,中心区域稠密。所以其分布依然是不均匀的。

针对这种情况,谷歌提出了一种对立方体投影的改进方法,即等角立方体投影,通过调整球面像素点对应的立方体上采样像素点的位置来改善这种不均匀的分布。等角立方体投影和传统立方体投影的对比,如下图所示:

投影公式

具体地,在二维平面内某一点到三维空间点的转换过程中,对于平面正方形上一点(u, v),立方体投影直接对照CMP中的正向转换表即可得到对应的三维坐标(X, Y, Z); 而在等角立方体投影中,首先要对点(u, v)进行调整,调整后得到坐标(u’, v’),然后再对照CMP中的正向转换表得到对应的三维坐标(X, Y, Z)。

平面坐标上一点(u, v)与相应的进行调整后的坐标(u’, v’)之间的转换关系如下:

u=tanu·π4v=tanv·π4(4) (4) { u ′ = t a n u · π 4 v ′ = t a n v · π 4

反过来,在三维空间点到二维平面点的转换过程中,针对坐标(X, Y, Z)先对照CMP逆向转换表得到面索引号和平面坐标(u’, v’),然后使用下面的公式得到调整前的平面正方形上的点(u, v):

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值