随着增强技术的发展,科幻作品描述的全息通信有望取代传统的2D视频。但是,表示复杂动态3D场景会生成大量数据。所以,如何进行压缩成为了发展新兴沉浸式3D系统通信的一个重要挑战。
在名为“Motion-compensated compression of dynamic voxelized point clouds”的专利申请中,微软提出了一种由编码器执行以压缩三维视频数据的示例方法,尤其是体素化点云。
取决于具体情况,表示3D数据存在一系列的选择。例如,密集体素阵列可以用于表示密集的体三维医学数据,而多边形网格则可以表示计算机图形学中常见的三维对象表面。点云非常适合对数据非常稀疏的真实世界对象进行采样,尤其是当拓扑不一定是2D流形时。
点云的另一种选择是稀疏体素阵列或体素云,亦即体素的任意集合。与点不同,体素具有体三维特性。点云和稀疏体素阵列消除了2D流形的常见问题,例如处理切割边的边界条件和拓扑随时间的变化。3D数据的另一种表示形式是一组颜色和深度映射。
对于微软的发明,其主要用于稀疏体素阵列,又称体素化点云。例如,图1示出了成像对象的体素化点云的六个示例视点(100、102、104、106、108、110)。对于3D场景捕获中预期的数据类型,体素化点云比密集体素阵列更适合,并且它们避免了多边形网格与采样数据之间存在的各种问题。
与颜色和深度映射相比,体素化点云是更高级别的表示,因为重叠传感器映射之间的冗余和不一致已在多摄像头传感器融合步骤中消除。与任意点云相比,体素化点云具有实现优势,对于捕获的三维数据的实时处理非常高效。
在一个实施例中,三维数据由体素化点云表示。点云是一组点{v},每个点v具有空间位置(x、y、z)和属性向量,例如颜色、法线或曲率。在下文描述中,假设属性是在YUV颜色空间中表示为(Y,U,V)元组的颜色。
可以通过将点位置量化到规则晶格来对点云进行体素化,例如点位置对应于由体素表示的体积内,表面上或角落的预定位置。
如果量化单元或体素在点云中包含一个点,则称其已被占用,否则称其未被占用。被占用体素的颜色可以通过平均或其他技术从体素内点的颜色中获得。在这里,假设每个被占用的体素都有一种颜色。
对于专利描述的实施例,其重点是人和对象序列的体素化点云的编码和传输。为了视觉重建的目的,不需要对未占用的体素和内部体素进行编码,而只需要对人或对象的外部“外壳”进行编码。这种被占用体素的稀疏性允许使用八叉树对几何体进行有效的静态帧或帧内压缩。
微软提出的实施例主要设计为选择性地预测几何形状以及颜色。另外,在一个示例实现中,可以以速率失真优化的方式对预测残差进行编码。
为了评估失真,尽管峰值信噪比(PSNR)等客观指标在评估大多数传统视频编码问题中的图像编码器时非常有用,但几何失真是动态点云编码中的一个复杂因素。
一般来说,专利描述的实施例使用两种方法中的一种或两种来计算失真:基于对应的方法或基于投影的方法。可以使用任何一种方法或两者的组合(例如,使用加权和)。
在基于对应的失真度量中,可以使用邻近性在原始帧F(t)和重构帧{(F)}(t)之间建立对应关系。例如,在一个示例实现中,{(F)}(t)中的体素与其在空间上最近的体素F(t)相关联。一旦建立了关联,就使用E.sub.g或E.sub.c的函数来计算失真。从配对关联中,可以计算进一步的值,例如均方误差(MSE)和相应的峰值信噪比(PSNR)。
对于使用邻近度计算失真的一个特定示例,让当前帧中存在N.sub.v占用的体素,并让E.sub.c仅计算Y颜色分量的残差。
在基于投影的失真度量中,渲染点云的投影视图。在一个特定的示例实现中,点云的正交投影是在体素空间极限处立方体的六个边上生成。
在一个示例实现中,原始的和重建的两个点云之间的失真度量是两个相应合成图像之间的MSE(或PSNR),每个合成图像具有原始或重建Y帧的6个正交投影。然后可以计算相应的PSNR,亦即“投影PSNR”或“PSNR-P”。
在一个实施例中,专利描述的实施例包括用于动态点云的编码器。所述编码器实现能够分别优于使用纯RAHT和八叉树方法来压缩颜色和几何体。
专利描述的实施例使用时间维度来移除时间冗余。换言之,微软的发明主要是基于这样一个事实:在大多数情况下,点云的几何形状和颜色在一帧到另一帧之间不会有太大变化。
在特定实现中,编码器使用F(t)作为F(t+1)的预测器。与其他方法不同,专利描述的实施例能够将运动估计和运动补偿用作动态点云压缩方案的一部分,从而实现更高的压缩比。
图4的示意框图(400)示出了3D点云块的示例编码器。
在图4中,使用帧内编码或使用如下所述的运动补偿的帧间编码,对正在编码的当前帧的3D点云块进行编码。
编码模式选择基于对每个模式的率失真性能的评估。所选模式也可以作为编码输出的一部分进行编码。在图4所示的示例中,由RD模式判定模块(418)计算速率失真数据。
为了计算帧间编码的速率失真,运动补偿器(420)使用运动估计器(未示出)提供的运动向量(422)提供帧间相关数据。如果选择了帧间压缩,则可以将相关运动向量(422)编码为输出的一部分。
图5的示意框图(500)说明了可在实施例中使用的运动补偿过程示例。在图5中,每个占用的三维块(立方体)与运动向量(MV)相关联,运动向量的分量(M.sub.x、M.sub.y、M.sub.z)指示参考帧中的三维块(立方体)。参考帧将用于预测当前正在编码的三维块(立方体)。
在图5中,当前帧(512)的占用3D块(520)与描述来自前一帧(510)的关联占用3D块(立方体)(524)的运动向量(522)相关联。
在一个实施例中,专利描述了用于动态点云的运动补偿方案。编码器将云划分为占用体素的3D块,并为每个块确定该块是应进行帧内编码,还是仅从过去帧进行运动补偿。将帧内编码数据替换为略微扭曲(或不扭曲)的体素集可以节省许多位,但可能不仅会给体素颜色带来错误,还会给其位置(几何体)带来错误。
实际上,P帧可以成为降级的I帧。通过这种额外的降级,专利描述的实施例能够将比特率范围扩展到帧内编码器可以有效工作的位置以下,并且能够在给定的客观失真度量下以任何速率超过帧内编码器的性能。
图14是示出了对帧序列的点云数据进行编码的示例过程(1400)。专利描述的实施例可由实现三维视频编码器的计算设备执行,三维视频编码器可进一步配置为产生比特流。编码器可以是编码器系统的一部分,编码器系统可以包括例如缓冲器,缓冲器配置为存储三维视频帧序列的体素化点云数据。
在(1410),为序列当前帧中的一个或多个占用的3D点云块选择编码模式。在所示实施例中,编码模式是多个可用编码模式中的一个,可用编码模式包括帧内编码和帧间编码。
在(1412),根据选择的编码模式对序列的当前帧的一个或多个占用的3D点云块进行编码。
在(1414),输出包含一个或多个占用的3D点云块的编码数据的比特流。比特流可以包括语法元素或比特流元素,
在特定实现中,帧间编码模式使用运动补偿。在这种情况下,用于运动补偿的运动预测可以是块平移、仿射或非刚性。在一个示例中,运动补偿使用块补充。例如,块补充可以包括使用运动矢量数据将当前帧中的已占用三维点云块与前一帧中的相应已占用三维点云块进行匹配;以及对所占用的三维点云块的运动矢量数据进行编码。
在一个示例中下,块补充排除了几何残差的编码,从而提高编码速率。在其他实施例中,可以对几何残差和/或颜色残差进行编码。
图15是示出了为帧序列编码点云数据的另一流程图(1500)。
在(1510),对三维视频帧序列中的当前帧的三维图像数据进行编码。在所述示例中,帧由多个3D点云块形成,并且编码包括对占用的3D点云块进行编码。在一个示例实施例中,编码包括对当前帧的三维图像数据应用一个或多个体素失真校正滤波器。在特定实现中,将体素失真校正滤波器应用于使用帧间编码技术编码的一个或多个三维点云块。
在(1512),输出包含编码的三维图像数据的比特流。
在特定实现中,每个3D点云块包括多个体素。另外在一个示例中,在帧间编码期间循环应用体素失真校正滤波器。在(1510)处应用的体素失真校正滤波器可以包括形态学过程、平滑过程或两者。
在解码期间,执行反向操作。例如,在解码期间,对三维视频帧序列中的当前帧的编码三维图像数据进行解码。在这个示例中,帧由多个3D点云块形成,并且解码包括对3D点云块中被占用的块进行解码。在一个示例实施例中,解码进一步包括对当前帧的三维图像数据应用一个或多个体素失真校正滤波器。
在特定实现中,使用帧间解码技术将体素失真校正滤波器应用于一个或多个三维点云块,例如,滤波器仅应用于帧间编码的三维点云块,而不应用于帧内编码的三维点云块。另外,体素失真校正滤波器可以应用于环内或环外,例如作为点云帧重建后的环外后处理步骤。最后,输出经解码的三维图像数据。
图16是对帧序列的点云数据进行解码的示例过程的流程图(1600)。
在(1610),接收帧序列的编码动态点云数据的比特流。在所述示例中,比特流包括语法值或比特流元素,语法值或比特流元素表示序列中当前帧中一个或多个3D点云块的编码模式。
在(1612),对帧序列的编码数据进行解码。作为解码的一部分,根据信号编码模式执行当前帧的一个或多个3D点云块的解码。
在特定实施方式中,信号编码模式是多个可用编码模式之一,其至少包括帧内编码模式和帧间编码模式。
另外,当信号编码模式指示一个或多个3D点云块的帧间编码时,解码可包括解码当前帧的一个或多个3D点云块的运动矢量数据,运动矢量数据指示一个或多个体素从前一帧的三维平移运动,以及使用来自根据运动向量数据转换的前一帧的一个或多个体素作为正在解码的当前帧中的一个或多个三维点云块中的体素的预测器来解码相应的三维点云块。
总的来说,专利介绍了压缩三维视频数据的创新,包括通过使用帧间编码(例如运动补偿)技术来选择性地编码一个或多个3D点云块,从而帮助降低3D视频编码的比特率和/或失真。这项技术允许在预测当前编码帧时使用先前编码/解码的帧。
压缩所需比特率的这种降低允许编码器/解码器更快速地执行点云帧的压缩/解压缩,并且减少计算资源的使用。这两者在实时编码/解码场景中都非常有用。
或者,可以使用帧内编码方法对一个或多个三维点云块进行编码。例如,可以基于相对于帧内和帧间编码的速率失真评估阈值来选择要使用的编码模式。i另外,可以使用一个或多个体素失真校正滤波器来校正在体素压缩期间可能发生的失真错误。这样的滤波器专门适用于压缩3D图像数据时遇到的特殊挑战。
微软提出的发明能够以低比特率对动态体素化点云进行编码。在所描述的实施例中,编码器将每个帧处的体素化点云分解为体素的3D块(立方体)/“3D点云块”。
每个3D点云块要么以帧内模式编码,要么由前一帧中3D点云块的运动补偿版本替换。这个决策可以基于率失真度量。这样,几何体和颜色都可以进行失真编码,从而降低比特率。在一个实施例中,可以进一步采用环内滤波来减少(例如最小化)由几何信息中的失真引起的压缩伪影。
以这种方式,可以有效地将动态体素化点云的压缩范围扩展到低于仅帧内编码可以适应的速率。
名为“Motion-compensated compression of dynamic voxelized point clouds”的微软专利申请最初在2022年2月提交,并在日前由美国专利商标局公布。