首页> 中国专利> 在点云译码中指示摄像机参数

在点云译码中指示摄像机参数

摘要

本发明公开了一种视频译码机制。所述机制包括接收码流,所述码流包括图集帧中的多个二维(two dimensional,2D)片和摄像机的摄像机偏移。所述片被解码并转换为三维(three dimensional,3D)片坐标系,以获取点云帧。偏移矩阵根据所述摄像机偏移确定。然后,所述偏移矩阵应用于所述点云帧。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-13

    实质审查的生效 IPC(主分类):G06T15/04 专利申请号:2021800092548 申请日:20210106

    实质审查的生效

说明书

相关申请案交叉申请

本专利申请要求Jeffrey Moguillansky等人于2020年1月6日提交的申请号为62/957,674、发明名称为“在点云译码中指示摄像机参数(Signaling Camera Parameters InPoint Cloud Coding,”which is hereby incorporated by reference in itsentirety.)”的美国临时专利申请的权益,其全部内容通过引用的方式并入本文中。

技术领域

本发明大体上涉及视频译码,具体涉及支持指示视频点云译码(video pointcloud codin,V-PCC)的默认观看位置和角度的改进。

背景技术

即使视频较短,也需要大量的视频数据来描绘,当数据要在带宽容量受限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源有限,当在存储设备中存储视频时,需要考虑该视频的大小。视频压缩设备通常在信源侧使用软件和/或硬件对视频数据进行编码,然后传输或存储视频数据,从而减少表示数字视频图像所需的数据量。然后,对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在网络资源有限以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。

发明内容

在一个实施例中,本发明包括由解码器实现的方法,该方法包括:解码器的接收器接收码流,码流包括图集帧中的多个片和摄像机的摄像机偏移;解码器的处理器对图集帧中的片进行解码;处理器将片转换为三维(three dimensional,3D)片坐标系,以获取点云内容;处理器根据摄像机偏移确定偏移矩阵;处理器将偏移矩阵应用于点云内容。

点云译码(PCC)系统解码PCC分量以重建3D点云。然后,一些PCC系统将摄像机定位在解码器预定义的默认位置。摄像机用于将3D点云渲染为可在平面屏幕上显示的二维(twodimensional,2D)图像。摄像机位置定义了在对应时刻向用户描绘的3D点云的部分。这些系统可能需要用户控制摄像机,并将摄像机移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置可以靠近足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本示例包括用于指示优选的观看位置和角度的机制。例如,内容创建者可以在编码时选择一个或多个观看位置和/或观看角度。然后,用户可以在观看PCC视频时选择优选的观看位置。为了实现这个目的,编码器可以对用于确定摄像机位置的一个或多个摄像机偏移和用于确定摄像机观看角度的对应的摄像机旋转进行编码。摄像机偏移(例如,摄像机位置)包括相对于包括PCC内容的边界框的预定义点的X、Y、Z偏移。摄像机旋转包括观看矢量(viewing vector),观看矢量描述摄像机从摄像机偏移描述的位置指向的方向(例如观看角度)。解码器可以读取摄像机偏移和摄像机旋转,然后相应地渲染PCC视频。例如,PCC视频可以在解码期间位于模型矩阵中。摄像机信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移可用于创建偏移矩阵,摄像机旋转可用于创建旋转矩阵。然后,偏移矩阵和旋转矩阵可以应用于模型矩阵,以将PCC内容变换为从预定位置和角度显示点云的2D图像。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

可选地,根据上述任一方面,在该方面的另一种实现方式中,摄像机偏移表示对应于X轴的第一偏移、对应于Y轴的第二偏移和对应于Z轴的第三偏移。

可选地,根据上述任一方面,在该方面的另一种实现方式中,偏移矩阵包括四个行和四个列,第一偏移位于第一行第四列,第二偏移位于第二行第四列,第三偏移位于第三行第四列。

可选地,根据上述任一方面,在该方面的另一种实现方式中,码流还包括摄像机的摄像机旋转,该方法还包括:处理器根据摄像机旋转确定旋转矩阵;处理器将旋转矩阵应用于点云内容。

可选地,根据上述任一方面,在该方面的另一种实现方式中,摄像机旋转以四元数表示法表示摄像机的旋转的X分量、以四元数表示法表示摄像机的旋转的Y分量,以及以四元数表示法表示摄像机的旋转的Z分量。

可选地,根据上述任一方面,在该方面的另一种实现方式中,旋转矩阵包括以四元数表示法表示的摄像机的旋转的X分量、Y分量、Z分量,以及W分量。

可选地,根据上述任一方面,在该方面的另一种实现方式中,W分量根据以下公式计算:qW=Sqrt(1-qX2+qY2+qZ2)),其中,qW、qX、qY和qZ分别表示W分量、X分量、Y分量和Z分量,Sqrt是平方根函数。

可选地,根据上述任一方面,在该方面的另一种实现方式中,图集帧中的片为2D片。

在一个实施例中,本发明包括由编码器实现的方法,该方法包括:处理器将描述点云帧的多个2D片和几何形状编码到点云译码(point cloud coding,PCC)码流中;处理器确定描述摄像机相对于点云帧的位置的摄像机偏移,以支持生成用于渲染点云帧的摄像机视图的偏移矩阵;处理器将摄像机偏移编码到PCC码流中;在编码器的存储器中存储PCC码流,PCC码流用于发送到解码器。

PCC系统解码PCC分量以重建3D点云。然后,一些PCC系统将摄像机定位在解码器预定义的默认位置。摄像机用于将3D点云渲染为可在平面屏幕上显示的2D图像。摄像机位置定义了在对应时刻向用户描绘的3D点云的部分。这些系统可能需要用户控制摄像机,并将摄像机移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置可以靠近足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本示例包括用于指示优选的观看位置和角度的机制。例如,内容创建者可以在编码时选择一个或多个观看位置和/或观看角度。然后,用户可以在观看PCC视频时选择优选的观看位置。为了实现这个目的,编码器可以对用于确定摄像机位置的一个或多个摄像机偏移和用于确定摄像机观看角度的对应的摄像机旋转进行编码。摄像机偏移(例如,摄像机位置)包括相对于包括PCC内容的边界框的预定义点的X、Y、Z偏移。摄像机旋转包括观看矢量,观看矢量描述摄像机从摄像机偏移描述的位置指向的方向(例如观看角度)。解码器可以读取摄像机偏移和摄像机旋转,然后相应地渲染PCC视频。例如,PCC视频可以在解码期间位于模型矩阵中。摄像机信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移可用于创建偏移矩阵,摄像机旋转可用于创建旋转矩阵。然后,偏移矩阵和旋转矩阵可以应用于模型矩阵,以将PCC内容变换为从预定位置和角度显示点云的2D图像。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

可选地,根据上述任一方面,在该方面的另一种实现方式中,摄像机偏移表示对应于X轴的第一偏移、对应于Y轴的第二偏移和对应于Z轴的第三偏移。

可选地,根据上述任一方面,在该方面的另一种实现方式中,偏移矩阵包括四个行和四个列,第一偏移位于第一行第四列,第二偏移位于第二行第四列,第三偏移位于第三行第四列。

可选地,根据上述任一方面,在该方面的另一种实现方式中,还包括:处理器确定描述摄像机相对于点云帧的观看矢量的摄像机旋转,以支持生成用于渲染点云帧的摄像机视图的旋转矩阵;处理器将摄像机旋转编码到PCC码流中。

可选地,根据上述任一方面,在该方面的另一种实现方式中,摄像机旋转以四元数表示法表示摄像机的旋转的X分量、以四元数表示法表示摄像机的旋转的Y分量,以及以四元数表示法表示摄像机的旋转的Z分量。

可选地,根据上述任一方面,在该方面的另一种实现方式中,旋转矩阵包括以四元数表示法表示的摄像机的旋转的X分量、Y分量、Z分量,以及W分量。

可选地,根据上述任一方面,在该方面的另一种实现方式中,W分量根据以下公式计算:qW=Sqrt(1-qX2+qY2+qZ2)),其中,qW、qX、qY和qZ分别表示W分量、X分量、Y分量和Z分量,Sqrt是平方根函数。

在一个实施例中,本发明包括视频译码设备,视频译码设备包括:处理器、耦合到处理器的接收器、耦合到处理器的存储器和耦合到处理器的发送器,其中,处理器、接收器、存储器和发送器用于执行上述任一方面的方法。

在一个实施例中,本发明包括非瞬时性计算机可读介质,非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,其中,计算机程序产品包括存储在非瞬时性计算机可读介质中的计算机可执行指令,当计算机可执行指令由处理器执行时,使视频译码设备执行根据上述任一方面的方法。

在一个实施例中,本发明包括解码器,解码器包括:接收模块,用于接收包括图集帧中的多个片和摄像机的摄像机偏移的码流;解码模块,用于对片进行解码;转换模块,用于将片转换为3D片坐标系,以获取点云帧;确定模块,用于根据摄像机偏移确定偏移矩阵;应用模块,用于将偏移矩阵应用于点云帧。

PCC系统解码PCC分量以重建3D点云。然后,一些PCC系统将摄像机定位在解码器预定义的默认位置。摄像机用于将3D点云渲染为可在平面屏幕上显示的2D图像。摄像机位置定义了在对应时刻向用户描绘的3D点云的部分。这些系统可能需要用户控制摄像机,并将摄像机移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置可以靠近足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本示例包括用于指示优选的观看位置和角度的机制。例如,内容创建者可以在编码时选择一个或多个观看位置和/或观看角度。然后,用户可以在观看PCC视频时选择优选的观看位置。为了实现这个目的,编码器可以对用于确定摄像机位置的一个或多个摄像机偏移和用于确定摄像机观看角度的对应的摄像机旋转进行编码。摄像机偏移(例如,摄像机位置)包括相对于包括PCC内容的边界框的预定义点的X、Y、Z偏移。摄像机旋转包括观看矢量,观看矢量描述摄像机从摄像机偏移描述的位置指向的方向(例如观看角度)。解码器可以读取摄像机偏移和摄像机旋转,然后相应地渲染PCC视频。例如,PCC视频可以在解码期间位于模型矩阵中。摄像机信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移可用于创建偏移矩阵,摄像机旋转可用于创建旋转矩阵。然后,偏移矩阵和旋转矩阵可以应用于模型矩阵,以将PCC内容变换为从预定位置和角度显示点云的2D图像。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

可选地,根据上述任一方面,在该方面的另一种实现方式中,解码器还用于执行根据上述任一方面的方法。

在一个实施例中,本发明包括编码器,编码器包括:确定模块,用于确定描述摄像机相对于点云帧的位置的摄像机偏移,以支持生成用于渲染点云帧的摄像机视图的偏移矩阵;编码模块,用于:将描述点云帧的多个2D片和几何形状编码到PCC码流中;将摄像机偏移编码到PCC码流中;存储模块,用于存储码流,码流用于发送到解码器。

PCC系统解码PCC分量以重建3D点云。然后,一些PCC系统将摄像机定位在解码器预定义的默认位置。摄像机用于将3D点云渲染为可在平面屏幕上显示的2D图像。摄像机位置定义了在对应时刻向用户描绘的3D点云的部分。这些系统可能需要用户控制摄像机,并将摄像机移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置可以靠近足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本示例包括用于指示优选的观看位置和角度的机制。例如,内容创建者可以在编码时选择一个或多个观看位置和/或观看角度。然后,用户可以在观看PCC视频时选择优选的观看位置。为了实现这个目的,编码器可以对用于确定摄像机位置的一个或多个摄像机偏移和用于确定摄像机观看角度的对应的摄像机旋转进行编码。摄像机偏移(例如,摄像机位置)包括相对于包括PCC内容的边界框的预定义点的X、Y、Z偏移。摄像机旋转包括观看矢量,观看矢量描述摄像机从摄像机偏移描述的位置指向的方向(例如观看角度)。解码器可以读取摄像机偏移和摄像机旋转,然后相应地渲染PCC视频。例如,PCC视频可以在解码期间位于模型矩阵中。摄像机信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移可用于创建偏移矩阵,摄像机旋转可用于创建旋转矩阵。然后,偏移矩阵和旋转矩阵可以应用于模型矩阵,以将PCC内容变换为从预定位置和角度显示点云的2D图像。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

可选地,根据上述任一方面,在该方面的另一种实现方式中,编码器还用于执行根据上述任一方面的方法。

为了清楚起见,上述任一实施例可以与上述其它实施例中任何一个或多个组合以创建本发明范围内的新实施例。

从结合附图和权利要求书的以下详细描述中,将更清楚地理解这些和其它特征。

附图说明

为了更完整地理解本发明,结合附图和具体实施方式,参考以下简要描述,其中,相同的附图标记表示相同的部件。

图1为对视频信号进行译码的示例性方法的流程图。

图2为用于视频译码的示例性编码和解码(编解码)系统的示意图。

图3为示例性视频编码器的示意图。

图4为示例性视频解码器的示意图。

图5为可以根据点云压缩(point cloud compression,PCC)机制译码的点云媒体的示例。

图6为从点云创建的片(patch)的示例。

图7A示出了与一组片相关联的示例性占用帧。

图7B示出了与一组片相关联的示例性几何帧。

图7C示出了与一组片相关联的示例性图集帧。

图8为定义摄像机位置和观看矢量以渲染V-PCC帧的示例性机制。

图9为用于指示用于渲染点云的摄像机参数的示例性V-PCC码流的示意图。

图10为示例性视频译码设备的示意图。

图11为对V-PCC码流进行编码以指示用于渲染点云的摄像机参数的示例性方法的流程图。

图12为解码V-PCC码流以根据所指示的摄像机参数渲染点云的示例性方法的流程图。

图13为用于指示用于渲染点云的摄像机参数的示例性系统的示意图。

具体实施方式

首先应理解,尽管下文提供了一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任何数量的技术来实现,无论该技术是当前已知的技术还是现有的技术。本发明不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明和描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效部分的完整范围内修改。

以下术语的定义如下所述,除非在本文相反的上下文中使用。具体地,以下定义旨在更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。

编码器是一种采用编码过程将视频数据压缩到码流中的设备。解码器是一种采用解码过程从码流中重建视频数据进行显示的设备。点云/点云表示是三维(three-dimensional,3D)空间中的一组点(例如,样本),其中,每个点可以包括位置、颜色和/或属性。码流是包括视频数据的位序列,这些视频数据被压缩以在编码器和解码器之间传输。在PCC上下文中,码流包括译码的V-PCC分量和相关联的参数的位序列。

V-PCC分量(或更一般地,PCC分量)可以是与V-PCC点云相关联的特定类型的图集数据、占用数据、几何数据或属性数据。图集/图集帧可以是投影到矩形帧的二维(two-dimensional,2D)边界框(也称为片)的集合,矩形帧对应于3D空间中的体积(称为3D边界框),体积数据在其上渲染。每个2D边界框/片表示点云的子集。片是与体积信息相关联的图集中的2D矩形区域。投影是将图像(例如,片)呈现在表面上。3D边界框是定义为长方体实体的体积,具有以直角放置的六个矩形面。占用是表示图集样本是否对应于3D空间中的相关联的样本的一组值。占用帧可以是构成2D阵列的占用值的集合,并表示单个图集帧的整个占用信息。因此,占用帧可以表示图集中的每个样本位置是否对应于点云表示中的有效3D点。几何形状是与体积帧相关联的一组笛卡尔坐标。几何图是包括投影在特定深度的几何片信息的帧。属性可以是可选地与点云的体积帧中的每个点相关联的标量或矢量属性,例如颜色、反射率、表面法线、时间戳、材料标识符(identifier,ID)等。体积帧,也称为点云帧,是由笛卡尔坐标表示的3D点集,和特定时刻的零个或更多个对应的属性集。点云内容是点云帧中包括的任何数据。与特定时刻/体积帧相关联的图集数据、占用数据、几何图或属性的完整集合可以分别称为图集帧、占用帧、几何帧和属性帧。图集数据、占用数据、几何数据或属性数据可以是点云的分量,因此可以分别称为图集分量、占用分量、几何分量和属性帧分量。

摄像机是提供3D对象的2D视图的视口。摄像机对象可用于渲染对应时刻的3D点云的2D表示。摄像机和/或摄像机对象可以实现为摄像机模型,该摄像机模型是包括摄像机位置和/或摄像机旋转的一个或多个矩阵。坐标系是使用多个数字名称来唯一确定空间中点的位置的机制。3D坐标系是描述3D空间中位置的坐标系。摄像机偏移是表示摄像机位置与包括点云的3D边界框的预定义点之间在3D空间中的距离的参数。偏移矩阵是摄像机偏移的矩阵表示,可用来将模型矩阵中的点的3D模型变换为2D表示。矩阵列是从矩阵项部垂直延伸到矩阵底部的一组数字。矩阵行是从矩阵的左侧水平延伸到矩阵的右侧的一组数字。摄像机旋转是表示从摄像机指向包括点云的3D边界框的观看矢量的参数。旋转矩阵是摄像机旋转的矩阵表示,可用来将模型矩阵中的点的3D模型变换为2D表示。四元数表示法是使用标量值和沿空间轴的三个单位矢量在复数域中的矢量表示。

V-PCC是一种高效译码由不同颜色的点的3D云表示的三维(three dimensional,3D)对象的机制。V-PCC是PCC的一种类型,因此这些术语在大多数情况下可以互换使用。点云随着时间的推移被捕获,并包括在PCC分量中。然后,PCC分量被编码。某一时刻的云中每个有效点的位置作为几何图存储在几何帧中。颜色和亮度存储为片。具体地,某一时刻的片被打包到图集帧中。片通常不覆盖整个图集帧。因此,还生成占用帧,占用帧表示图集帧的哪些部分包括片数据。可选地,点的属性(例如透明度)可以包括在属性帧中。因此,每个PCC帧可以被编码为包括不同分量的多个帧,这些帧描述对应时刻的点云。

PCC系统解码PCC分量以重建3D点云。然后,一些PCC系统将摄像机定位在解码器预定义的默认位置。摄像机用于将3D点云渲染为可在平面屏幕上显示的二维(twodimensional,2D)图像。摄像机位置定义了在对应时刻向用户描绘的3D点云的部分。这些系统可能需要用户控制摄像机,并将摄像机移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置可以靠近足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本文公开了用于指示优选的观看位置和角度的机制。例如,内容创建者可以在编码时选择一个或多个观看位置和/或观看角度。然后,用户可以在观看PCC视频时选择优选的观看位置。为了实现这个目的,编码器可以对用于确定摄像机位置的一个或多个摄像机偏移和用于确定摄像机观看角度的对应的摄像机旋转进行编码。摄像机偏移(例如,摄像机位置)包括相对于包括PCC内容的边界框的预定义点的X、Y、Z偏移。摄像机旋转包括观看矢量,观看矢量描述摄像机从摄像机偏移描述的位置指向的方向(例如观看角度)。解码器可以读取摄像机偏移和摄像机旋转,然后相应地渲染PCC视频。例如,PCC视频可以在解码期间位于模型矩阵中。摄像机信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移可用于创建偏移矩阵,摄像机旋转可用于创建旋转矩阵。然后,偏移矩阵和旋转矩阵可以应用于模型矩阵,以将PCC内容变换为从预定位置和角度显示点云的2D图像。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

图1至图4描述了用于对视频进行编码和解码的各种译码机制。图5至图7描述了用于将点云转换为可以通过图1至图4中描述的机制编码和解码的格式的机制。

图1为对视频信号进行译码的示例性操作方法100的流程图。具体地,在编码器侧对视频信号进行编码。编码过程通过使用各种机制对视频信号进行压缩,以减小视频文件大小。较小的文件大小有利于在减少相关联的带宽开销的同时,将压缩的视频文件发送给用户。然后,解码器对压缩的视频文件进行解码,以重建原始视频信号,用于向终端用户显示。解码过程通常与编码过程对应,便于解码器一致地重建视频信号。

在步骤101中,将视频信号输入编码器。例如,视频信号可以是存储在存储器中的未压缩的视频文件。又例如,视频文件可以由视频捕获设备(例如摄像机)捕获,并进行编码以支持视频的直播。视频文件可以包括音频分量和视频分量。视频分量包括一系列图像帧,当按顺序观看时,这些图像帧会产生运动的视觉效果。这些帧包括根据光(本文称为亮度分量(或亮度样本))和颜色(称为色度分量(或色度样本))表示的像素。在一些示例中,这些帧还可以包括深度值,以支持三维观看。

在步骤103中,将视频分割为块。分割包括将每个帧中的像素细分为方块和/或矩形块,用于进行压缩。例如,在高效视频编码(high efficiency video coding,HEVC)(也称为H.265和MPEG-H第2部分)中,可以首先将帧划分为编码树单元(coding tree unit,CTU),这些编码树单元是预定义大小(例如,64×64像素)的块。CTU包括亮度样本和色度样本。可以使用编码树将CTU划分为块,然后递归细分这些块,直到获得支持进一步编码的配置。例如,帧的亮度分量可以细分,直到各个块包括相对均匀的亮度值。此外,帧的色度分量可以细分,直到各个块包括相对均匀的颜色值。因此,分割机制根据视频帧的内容而不同。

在步骤105中,使用各种压缩机制来压缩在步骤103中分割的图像块。例如,可以使用帧间预测和/或帧内预测。帧间预测旨在利用公共场景中的对象往往出现在连续帧中这一事实。因此,无需在相邻帧中对参考帧中描绘对象的块进行重复描述。具体地,一个对象(如一张桌子)可以在多个帧中保持在恒定的位置。因此,只描述一次桌子,相邻帧可以重新参考参考帧。模式匹配机制可以用于匹配多个帧中的对象。此外,由于对象移动或摄像机移动等,移动对象可以通过多个帧表示。在一个具体的示例中,视频可以通过多个帧显示在屏幕上移动的汽车。运动矢量可以用于描述这种移动。运动矢量是一个二维矢量,提供从帧中对象的坐标到参考帧中该对象的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,表示相对于参考帧中对应块的偏移。

帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往在帧中聚集这一事实。例如,一棵树的一部分中的一片绿色往往与几片类似的绿色相邻。帧内预测使用多种方向预测模式(例如,HEVC中有33种模式)、平面模式和直流(direct current,DC)模式。方向模式表示当前块与对应方向的邻块的样本类似/相同。平面模式表示可以根据行边缘处的邻块对行/列(例如平面)上的一系列块进行插值。实际上,平面模式通过使用变化值的相对恒定的斜率来表示光/颜色在行/列上的平滑转变。DC模式用于边界平滑,表示块和与所有邻块的样本相关联的平均值类似/相同,邻块与方向预测模式的角方向相关联。因此,帧内预测块可以将图像块表示为各种关系预测模式值而非实际值。此外,帧间预测块可以将图像块表示为运动矢量值而非实际值。在任一种情况下,预测块在一些情况下可能无法精确地表示图像块。所有差值都存储在残差块中。可以对残差块进行变换以进一步压缩文件。

在步骤107中,可以应用各种滤波技术。在HEVC中,根据环内滤波方案应用滤波器。上文描述的基于块的预测可能使得在解码器侧创建块状图像。此外,基于块的预测方案可以对块进行编码,然后重建编码块,以供以后用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptiveoffset,SAO)滤波器用于块/帧。这些滤波器减少了此类块伪影,从而可以准确地重建编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。

在步骤109中,一旦对视频信号进行了分割、压缩和滤波,则将所得数据编码到码流中。码流包括上述数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示(signal)数据。例如,此类数据可以包括分割数据、预测数据、残差块和向解码器提供译码指令的各种标志。码流可以存储在存储器中,用于在请求时传输到解码器。还可以向多个解码器广播和/或组播码流。创建码流是一个迭代过程。因此,步骤101、103、105、107和109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。

在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割部分。分割应与步骤103中的块分割结果匹配。这里描述了步骤111中使用的熵编码/熵解码。编码器在压缩过程中进行许多选择,例如根据一个或多个输入图像中值的空间定位从多个可能选择中选择块分割方案。指示确切的选择可能会使用大量的位元。如本文使用的,位元是被视为变量的二进制值(例如,可以根据上下文变化的位值)。熵编码使得编码器可以丢弃任何明显不适合特定情况的选项,从而留下一组可使用的选项。然后,为每个可使用的选项分配码字。码字的长度取决于可使用的选项的数量(例如,一个位元对应两个选项,两个位元对应三个或四个选项等)。然后,编码器对所选选项的码字进行编码。该方案减小了码字的大小,因为码字的大小与唯一表示从可使用的选项的小子集中的一个选项,而非唯一表示从所有可能选项的潜在大集中的选项所需要的码字一样大。然后,解码器通过以与编码器类似的方式确定可使用的选项集来对该选择进行解码。通过确定可使用的选项集,解码器可以读取码字并确定编码器做出的选择。

在步骤113中,解码器执行块解码。具体地,解码器进行逆变换来生成残差块。然后,解码器使用残差块和对应的预测块,根据分割重建图像块。预测块可以包括在步骤105中编码器侧生成的帧内预测块和帧间预测块。然后,根据在步骤111中确定的分割数据将重建图像块定位到重建视频信号的帧中。步骤113的语法还可以通过上文描述的熵编码在码流中指示。

在步骤115中,以类似于步骤107的方式在编码器侧对重建视频信号的帧进行滤波。例如,可以对帧应用噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和SAO滤波器以去除块伪影。一旦对帧进行滤波,在步骤117中,可以将视频信号输出到显示器以供终端用户观看。

图2为用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200能够实现操作方法100。编解码系统200广义地描绘编码器和解码器中使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如操作方法100中的步骤101和103所描述,从而产生分割视频信号201。然后,当作为编码器时,编解码系统200将分割视频信号201压缩到编码码流中,如方法100中的步骤105、107和109所描述。当作为解码器时,编解码系统200从码流中生成输出视频信号,如操作方法100中的步骤111、113、115和117所描述。编解码系统200包括通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223、标头格式和上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)组件231。这些组件如图所示耦合。在图2中,黑线表示待编码/解码数据的移动,而虚线表示控制其它组件操作的控制数据的移动。编解码系统200的组件都可以在编码器中使用。解码器可以包括编解码系统200的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225和解码图像缓冲区组件223。这里对这些组件进行描述。

分割视频信号201是已通过编码树分割为像素块的捕获的视频序列。编码树使用各种划分模式将像素块细分为更小的像素块。然后这些块还可以细分为更小的块。这些块可以称为编码树上的节点。较大的父节点被划分为较小的子节点。节点被细分的次数称为节点/编码树的深度。在一些情况下,编码单元(codingunit,CU)中可以包括划分的块。例如,CU可以是CTU的子部分,CTU包括亮度块、红差色度(Cr)块和蓝差色度(Cb)块以及CU的对应语法指令。划分模式可以包括二叉树(binary tree,BT)、三叉树(triple tree,TT)和四叉树(quad tree,QT),用于根据所使用的划分模式,分别将节点分割为不同形状的两个、三个或四个子节点。将分割视频信号201转发到通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。

通用译码器控制组件211用于根据应用约束做出与将视频序列的图像编码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。此类决策可以根据存储空间/带宽可用性和图像分辨率请求做出。通用译码器控制组件211还根据传输速度管理缓冲区使用率,以缓解缓冲区欠载和超载问题。为了解决这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态地提高压缩复杂度以提高分辨率和提高带宽使用率,或者降低压缩复杂度以降低分辨率和带宽使用率。因此,通用译码器控制组件211控制编解码系统200的其它组件,以平衡视频信号重建质量与码率问题。通用译码器控制组件211创建控制数据,这些控制数据控制其它组件的操作。控制数据还被转发到标头格式和CABAC组件231,以编码到码流中,从而指示用于在解码器中进行解码的参数。

分割视频信号201还被发送至运动估计组件221和运动补偿组件219,用于进行帧间预测。分割视频信号201的帧或条带可以划分为多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对接收到的视频块进行帧间预测译码以提供时间预测。编解码系统200可以执行多个译码过程,以便为每个视频数据块选择适当的译码模式等等。

运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的分开示出。运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示译码对象相对于预测块的位移。预测块是被发现在像素差方面与待译码块高度匹配的块。预测块也可以称为参考块。此类像素差可以通过绝对差和(sum of absolute difference,SAD)、平方差和(sum of square difference,SSD)或其它差值度量来确定。HEVC使用几种译码对象,包括CTU、编码树块(coding tree block,CTB)和CU。例如,CTU可以划分为多个CTB,然后CTB可以划分为多个CB,多个CB用于包括在CU中。CU可以编码为包括预测数据的预测单元(prediction unit,PU)和/或包括CU的变换残差数据的变换单元(transform unit,TU)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、PU和TU。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡视频重建的质量(例如,压缩造成的数据丢失量)与译码效率(例如,最终编码的大小)。

在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可以执行相对于全像素位置和分数像素位置的运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将PU的位置与参考图像的预测块的位置进行比较来计算帧间译码条带中视频块的PU的运动矢量。运动估计组件221将计算的运动矢量作为运动数据输出到标头格式和CABAC组件231以进行编码,并将运动输出到运动补偿组件219。

运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。另外,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的PU的运动矢量之后,运动补偿组件219可以定位运动矢量指向的预测块。然后,通过从正被译码的当前视频块的像素值中减去预测块的像素值,形成像素差值,从而形成残差视频块。通常,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算的运动矢量用于色度分量和亮度分量。将预测块和残差块转发到变换缩放和量化组件213。

分割视频信号201也被发送到帧内估计组件215和帧内预测组件217。如同运动估计组件221和运动补偿组件219,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的分开示出。帧内估计组件215和帧内预测组件217相对于当前帧中的块对当前块进行帧内预测,以替代如以上所描述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式,用于对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择适当的帧内预测模式来对当前块进行编码。然后,将所选择的帧内预测模式转发到标头格式和CABAC组件231用于进行编码。

例如,帧内估计组件215使用对各种测试的帧内预测模式的率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定编码块与被编码以产生编码块的原始未编码块之间的失真(或误差)量,以及用于生成编码块的码率(例如,位数)。帧内估计组件215根据各种编码块的失真和速率计算比率,以确定哪种帧内预测模式表现出块的最佳率失真值。此外,帧内估计组件215可以用于根据率失真优化(rate-distortion optimization,RDO),使用深度建模模式(depth modelingmode,DMM)对深度图的深度块进行译码。

当在编码器上实现时,帧内预测组件217可以根据由帧内估计组件215确定的所选帧内预测模式从预测块生成残差块,或者当在解码器上实现时,从码流读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,残差块被转发到变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。

变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213对残差块应用变换,如离散余弦变换(discrete cosine transform,DCT)、离散正弦变换(discrete sine transform,DST)或概念上类似的变换,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换的残差信息进行缩放。这种缩放涉及对残差信息应用缩放因子,以便在不同粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于对变换系数进行量化以进一步降低码率。量化过程可以降低与一些或全部系数相关联的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵进行扫描。量化变换系数被转发到标头格式和CABAC组件231,以编码到码流中。

缩放和逆变换组件229应用变换缩放和量化组件213的逆操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如,以供以后用作参考块,参考块可成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。滤波器用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当对后续块进行预测时,此类伪影可能导致预测不准确(并产生其它伪影)。

滤波器控制分析组件227和环内滤波器组件225将滤波器用于残差块和/或重建图像块。例如,缩放和逆变换组件229的变换残差块可以与帧内预测组件217和/或运动补偿组件219的对应的预测块合并以重建原始图像块。然后,滤波器可以用于重建图像块。在一些示例中,滤波器可以转而用于残差块。如同图2中的其它组件,滤波器控制分析组件227和环内滤波器组件225高度集成,可以一起实现,但出于概念目的分开示出。用于重建参考块的滤波器用于特定空间区域,包括多个参数以调整应用此类滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定应应用此类滤波器的位置并设置对应的参数。此类数据作为滤波器控制数据被转发到标头格式和CABAC组件231用于进行编码。环内滤波器组件225根据滤波器控制数据应用此类滤波器。滤波器可以包括去块效应滤波器、噪声抑制滤波器、SAO滤波器和自适应环路滤波器。这些滤波器可以根据示例用于空域/像素域(例如,针对重建像素块)或频域中。

当作为编码器时,将滤波重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供以后用于运动估计,如上所述。当作为解码器时,解码图像缓冲区组件223存储经重建和滤波的块并将其作为输出视频信号的一部分向显示器转发。解码图像缓冲区组件223可以是能够存储预测块、残差块和/或重建图像块的任何存储设备。

标头格式和CABAC组件231从编解码系统200的各组件接收数据并将此类数据编码到编码码流中,用于传输到解码器。具体地,标头格式和CABAC组件231生成各种标头以对控制数据(如通用控制数据和滤波器控制数据)进行编码。此外,预测数据(包括帧内预测)和运动数据,以及量化变换系数数据形式的残差数据均编码在码流中。最终码流包括解码器重建原始的分割视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(也称为码字映射表)、各种块的编码上下文的定义、最可能的帧内预测模式的指示、分割信息的指示等。这些数据可以通过熵编码技术进行编码。例如,可以使用上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、CABAC、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmeticcoding,SBAC)、概率区间分割熵(probability interval partitioning entropy,PIPE)编码或其它熵编码技术对信息进行编码。在熵编码之后,可以将编码码流发送到另一设备(例如,视频解码器)或存档以供后续发送或检索。

图3为示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或实现操作方法100的步骤101、103、105、107和/或109。编码器300对输入视频信号进行分割,从而产生分割视频信号301,其中,分割视频信号301实质上类似于分割视频信号201。然后,通过编码器300的组件压缩分割视频信号301并将其编码到码流中。

具体地,分割视频信号301被转发到帧内预测组件317用于进行帧内预测。帧内预测组件317实质上可以类似于帧内估计组件215和帧内预测组件217。分割视频信号301还被转发到运动补偿组件321,用于根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321实质上可以类似于运动估计组件221和运动补偿组件219。帧内预测组件317和运动补偿组件321的预测块和残差块被转发到变换和量化组件313以用于对残差块进行变换和量化。变换和量化组件313实质上可以类似于变换缩放和量化组件213。变换和量化残差块和对应的预测块(连同相关联控制数据)被转发到熵编码组件331用于编码到码流中。熵编码组件331可以实质上类似于标头格式和CABAC组件231。

变换和量化残差块和/或对应的预测块也从变换和量化组件313转发到逆变换和反量化组件329以重建成参考块供运动补偿组件321使用。逆变换和反量化组件329实质上可以类似于缩放和逆变换组件229。根据示例,环内滤波器组件325中的环内滤波器还用于残差块和/或重建参考块。环内滤波器组件325实质上可以类似于滤波器控制分析组件227和环内滤波器组件225。如关于环内滤波器组件225所描述,环内滤波器组件325可以包括多个滤波器。然后,滤波块存储在解码图像缓冲区组件323中,以供运动补偿组件321用作参考块。解码图像缓冲区组件323实质上可以类似于解码图像缓冲区组件223。

图4为示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或实现操作方法100的步骤111、113、115和/或117。例如,解码器400从编码器300接收码流,并根据该码流生成重建输出视频信号,用于向终端用户显示。

该码流由熵解码组件433接收。熵解码组件433用于实现熵解码方案,如CAVLC、CABAC、SBAC、PIPE译码或其它熵译码技术。例如,熵解码组件433可以使用标头信息来提供上下文以解释在码流中编码为码字的其它数据。解码信息包括对视频信号进行解码所需的任何信息,如通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。量化变换系数被转发到逆变换和反量化组件429以重建成残差块。逆变换和反量化组件429可以类似于逆变换和反量化组件329。

重建残差块和/或预测块被转发到帧内预测组件417,以根据帧内预测操作重建成图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块用于结果以重建帧内预测图像块。重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发到解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425实质上可以分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波,并且此类信息存储在解码图像缓冲区组件423中。解码图像缓冲区组件423的重建图像块被转发到运动补偿组件421进行帧间预测。运动补偿组件421实质上可以类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块用于结果以重建图像块。所得重建块还可以通过环内滤波器组件425转发到解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块,这些重建图像块可以通过分割信息重建成帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号向显示器输出。

上述机制是可用于编码和解码以方形/矩形帧呈现的2D视频的示例性机器和/或过程。但是,PCC视频数据使用点来表示不规则的3D对象。以下机制是PCC特定的视频译码过程。这些机制可用于表示2D方形/矩形帧中的3D点云,以便2D帧可以通过上述机制编码/解码。作为一般示例,特定时刻的3D点云可以通过表示每个点的位置的几何帧来描述。点的颜色值和光值可以表示为投影到点上的2D片,如几何帧所示。某时刻的片被打包到方形/矩形图集帧中,该帧可以通过以上描述的机制编码/解码。由于片可能不完全覆盖图集帧,所以可以使用对应的占用帧来表示图集帧的哪些区域包括片数据,哪些区域没有可用视频数据。点的任何附加属性都可以编码在对应的属性帧中。下面详细描述这些机制。

图5为可以根据PCC机制译码的点云媒体500的示例。因此,当执行方法100时,点云媒体500可以由编码器(例如编解码系统200和/或编码器300)编码,并由解码器(例如编解码系统200和/或解码器400)重建。

图1至图4中描述的机制通常假定对2D帧进行译码。但是,点云媒体500是随着时间的推移而变化的点云。具体地,点云媒体500(也可以称为点云和/或点云表示)是3D空间中的一组点。这些点也可称为样本。每个点可以与多种类型的数据关联。例如,每个点可以通过位置描述。位置是3D空间中的位置,可以描述为笛卡尔坐标的集合。此外,每个点可以包括一种颜色。颜色可以通过亮度(例如,光)和色度(例如,颜色)描述。颜色可以通过红色(R)、绿色(G)和蓝色(B)值(表示为(R,G,B))或亮度(Y)、蓝色投影(U)和红色投影(V)(表示为(Y,U,V))来描述。这些点还可以包括其它属性。属性是可以与点云中的每个点相关联的可选标量或矢量特性。属性可能包括反射率、透明度、表面法线、时间戳、材料标识符(identifier,ID)等。

由于点云媒体500中的每个点可以与多种类型的数据相关联,因此,根据图1至图4中描述的机制,使用几种支持机制来准备点云媒体500用于压缩。例如,点云媒体500可以被分类为帧,其中,每个帧包括与特定状态或时刻的点云相关的所有数据。因此,图5描绘了点云媒体500的单个帧。然后,对点云媒体500进行逐帧译码。点云媒体500可以被3D边界框501包围。3D边界框501是3D矩形棱镜,其大小设计为包围对应帧的点云媒体500的所有点。3D边界框501可以正式定义为长方体实体的体积,具有以直角放置的六个矩形面。需要说明的是,在点云媒体500包括不相交集的情况下,可以采用多个3D边界框501。例如,点云媒体500可以描绘两个未连接的图形,在这种情况下,3D边界框501被放置在每个图形周围。3D边界框501中的点如以下所描述进行处理。

图6为从点云600创建的片603的示例。点云600是点云媒体500的单个帧。此外,点云600被实质上类似于3D边界框501的3D边界框60l包围。因此,当执行方法100时,点云600可以由编码器(例如编解码系统200和/或编码器300)编码,并由解码器(例如编解码系统200和/或解码器400)重建。

3D边界框601包括六个面,因此包括六个2D矩形帧602,每个2D矩形帧602位于3D边界框601的一个面上(例如,项面、底面、左面、右面、前面和后面)。通过将点云600投影到对应的2D矩形帧602上,点云600可以从3D数据转换为2D数据。这样就创建了片603。需要说明的是,2D矩形帧602也可以被称为2D边界框(例如,3D边界框601的)。片603是3D点云600的一部分的2D表示,其中,片603包括从对应的2D矩形帧602可见的点云600的一部分的表示。片603可以正式定义为与体积信息相关联的图集内的2D矩形区域。需要说明的是,来自2D矩形帧602的点云600的表示可以包括多个不相交的分量。因此,2D矩形帧602可以包括多个片603。因此,点云600可以由六个以上的片603表示。片603也可以称为图集、图集数据、图集信息和/或图集分量。通过将3D数据转换为2D格式,点云600的片603可以根据视频译码机制进行译码,例如帧间预测和/或帧内预测。

图7A至图7C示出了用于编码3D点云的机制,如图6所描述,该3D点云已转换为2D信息。具体地,图7A示出了与一组片(例如片603)相关联的示例性占用帧710。占用帧710包括占用713和715,其值以二进制形式译码。占用713和715是表示图集样本是否对应于3D空间中的相关联的样本的值。例如,占用值为零(描绘为占用715)表示边界框601的一部分不被片603中的一个占用。边界框601的由零表示的那些部分不参与体积表示(例如,点云600)的重建。相反,占用值1(描绘为占用713)表示边界框601的一部分被片603中的一个占用。边界框601的由一表示的那些部分参与了体积表示(例如,点云600)的重建。占用帧710可以被正式定义为构成2D阵列的占用值的集合,并表示单个图集帧的整个占用信息。因此,占用帧710可以表示图集中的每个样本位置是否对应于点云表示中的有效3D点。

通过将3D信息投影到2D平面上创建的各种片可以打包到矩形(或方形)视频帧中。这种方法可能是有利的,因为各种视频编解码器(例如,AVC、HEVC和VVC)被预配置为对这种视频帧进行译码。因此,PCC编解码器可以使用其它视频编解码器来对片进行译码。如图7A所示,片可以打包到帧中。片可以通过任何算法打包。例如,可以根据大小将片打包到帧中。在一个特定的示例中,从大到小包括片。最大的片可以首先放置在任何开放空间中,一旦超过大小阈值,较小的片就会填补空隙。例如,最大的片可以朝向帧的左上方放置,较小的片可以依次朝向右下方放置,在超过大小阈值后,较小的片填补间隙。如图7A所示,这种打包方案会产生不包括片数据的空白空间。为了避免编码空白空间,使用占用帧710。占用帧710包括特定时刻的点云的所有占用数据。具体地,占用帧710包括一个或多个占用值(也称为占用数据、占用信息和/或占用分量)。占用713和/或715可以实现为对应于图集733(片组)的2D阵列,图集733的值表示图集733中的每个样本位置是否对应于点云表示中的有效3D点。如图7A所示,占用帧710包括被描绘为占用713的有效数据区域。有效数据区域表示图集733/片数据在占用帧710中的对应位置中存在。占用帧710还包括被描绘为占用715的无效数据区域。无效数据区域表示图集733/片数据在占用帧710中的对应位置中不存在。

图7B示出了与一组片(例如片603)相关联的示例性几何帧720。几何帧720,也称为几何图,提供或描绘每个片603的轮廓或形貌。具体地,几何帧720表示片603中的每个点远离边界框601的平面表面(例如,2D矩形帧602)的距离。几何帧720包括几何形状723。几何形状723可以定义为与体积帧相关联的一组笛卡尔坐标。体积帧是由笛卡尔坐标表示的3D点集,和特定时刻的零个或更多个对应的属性集。因此,体积帧是占用帧710、几何帧720、图集帧730以及(可选地)描述指定时刻的点云的一个或多个属性帧的组合。例如,几何形状723可以描述对应时刻3D边界框中每个点的位置。

如上所述,几何帧720包括几何形状723,也称为特定时刻的点云的几何图、几何数据、几何信息和/或几何分量。几何图723可以实现为通过聚合与每个片相关联的几何信息创建的2D阵列,其中,几何信息/数据是与点云帧相关联的笛卡尔坐标的集合。具体地,片都是从3D空间中的点投影的。这种投影具有从片中删除3D信息的效果。几何形状723保留从片中删除的3D信息。例如,片中的每个样本都是从3D空间中的点获取的。因此,几何帧720可以包括与每个片中的每个样本相关联的3D坐标。因此,几何帧720/几何形状723可由解码器用于将2D片映射/转换回3D空间,以重建3D点云。具体地,解码器可以将每个片样本映射到适当的3D坐标上,以重建点云。

此外,图7C示出了与一组片(例如片603)相关联的示例性图集帧730。图集帧730提供或描绘了边界框601中的片603的样本。图集帧730可以正式定义为投影到矩形帧的二维(two-dimensional,2D)边界框(也称为片和/或图集733)的集合,矩形帧对应于3D空间中的体积(称为3D边界框),体积数据在其上渲染。例如,图集帧730可以包括片603中的点的颜色分量和/或亮度分量。颜色分量可以基于RGB颜色模型、YUV颜色模型或基于另一个已知颜色模型。占用帧710、几何帧720和图集帧730可以用来对点云600和/或点云媒体500进行译码。因此,当执行方法100时,占用帧710、几何帧720和图集帧730可以由编码器(例如,编解码系统200和/或编码器300)编码,并由解码器(例如,编解码系统200和/或解码器400)重建。

如上所述,图集帧730包括特定时刻的点云的一个或多个图集733(也称为图集数据、图集信息、图集分量和/或片)。图集733是投影到对应于3D空间中的3D边界框的矩形帧中的2D边界框的集合,其中,每个2D边界框/片代表点云的子集。具体地,图集733包括当如结合图6所描述的3D点云被投影到2D空间时创建的片。因此,图集733/片包括与对应时刻的点云相关联的图像数据(例如,颜色和光值)。图集733对应于图7A的占用帧710和图7B的几何帧720。具体地,图集733包括根据占用713的有效数据区域中的数据,而不包括根据占用715的无效数据区域中的数据。此外,几何形状723包括图集733中样本的3D信息。

还需要说明的是,点云可以包括属性(也称为属性数据、属性信息和/或属性分量)。这些属性可以包括在属性帧中。属性可以包括关于特定时刻的点云的对应属性的所有数据。属性帧的示例未示出,因为属性可以包括广泛的不同数据。具体地,属性可以是与点云中的每个点相关联的任何标量或矢量特性,例如反射率、曲面法线、时间戳、材料ID等。此外,属性是可选的(例如,用户定义的),并且可以根据应用而变化。但是,当使用时,点云属性可以以类似于图集733、几何形状723和占用的方式包括在属性帧中。

因此,编码器可以将点云帧压缩为图集733的图集帧730、几何形状723的几何帧720、占用713和715值的占用帧710以及(可选地)属性的属性帧(统称为体积帧)。例如,图集帧730、几何帧720、占用帧710和/或属性帧可以通过不同的编码器进一步压缩,以发送到解码器。解码器可以解压缩图集帧730、几何帧720、占用帧710和/或属性帧。然后,解码器可以使用图集帧730、几何帧720、占用帧710和/或属性帧来重建点云帧,以确定对应时刻的重建点云。然后,重建点云帧可以按顺序包括以重建原始点云序列(例如,用于显示和/或用于数据分析)。在特定示例中,可以通过使用结合图1至图4描述的技术(例如,通过使用VVC、HEVC和/或AVC编解码器)来编码和解码图集帧730和/或图集733。

图8为定义摄像机位置811和观看矢量815以渲染3D边界框801等中包括的V-PCC帧的示例性机制800。在一个示例中,点云(例如点云媒体500)可以在3D边界框801中重建,该3D边界框801可以实质上类似于3D边界框501和/或601。在具体示例中,一组片603可以从占用帧710、几何帧720、图集帧730和/或属性帧解码。片可以投影到3D边界框801中的点上,以重建点云。摄像机位置811处的摄像机可用于渲染3D边界框801中的重建点云。因此,机制800可以在实现方法100、1100和/或1200时使用。此外,例如当重建点云,以用于编码器的错误测试或用于解码器的显示时,机制800可以由编解码器系统200、编码器300、解码器400、视频译码设备1000和/或系统1300使用。此外,描述机制800的数据可以由PCC码流(例如V-PCC码流900)指示。

如上所述,点云可以在3D边界框801中重建,3D边界框801可以实质上类似于3D边界框501和/或601。具体地,几何形状可用于将点云的点放置在3D边界框801中。然后,片和/或属性可以被投影到3D边界框801中的点上,以重建点云帧。3D边界框801可以描述为包括项部801a、底部801b、右侧801c、左侧801d、近侧801f和远侧801e。这些名称用于清楚地讨论其它组成部分。例如,3D边界框801可以位于原点802周围,原点802是预定义的坐标。因此,顶部801a在原点802上方,底部801b在原点802下方,右侧801c在原点802的右侧,左侧801d在原点802的左侧,近侧801f在原点802的前面,远侧801e在原点802的后面。

3D边界框801是3D对象,并包括3D数据。摄像机810可用于将3D数据转换为可显示在2D屏幕上的形式。摄像机810是提供3D对象的2D视图的视口。换句话说,摄像机810可以以由观看矢量815限定的角度从摄像机位置811提供3D边界框801的内容的2D视图。摄像机位置811是描述摄像机810的视口中心的坐标。观看矢量815是从摄像机810的视口前方以90度角延伸的矢量,因此定义了从摄像机位置811指向视口的方向。在一些PCC系统中,解码器将摄像机810定位在预定义的摄像机位置811,并使用预定义的观看矢量815,而不论3D边界框801中包括的内容如何。这些系统可能需要用户控制摄像机810,并将摄像机810移动到优选位置,以从优选角度渲染所需内容。这对于某些应用程序来说可能存在问题,因为用户可能不知道观看3D边界框801中的所需内容的最佳位置。例如,用户可以观看足球比赛的PCC视频。默认摄像机位置811可以靠近和/或指向3D边界框801中的足球场的中心。用户可能希望从靠近四分卫或前锋的位置观看PCC视频,但可能不知道四分卫或前锋在3D边界框801中的球场上的位置。这导致搜索比较耗时,从而使用户体验不佳。

本发明支持内容创建者选择并提供建议的摄像机位置811和建议的观看矢量815。这支持内容创建者向用户指示可能包括有趣材料的视口。此外,这使内容创建者能够指导用户的体验。可以使用多个摄像机810,因此可以向用户建议多个摄像机位置811和观看矢量815以供选择。对于每个摄像机810,摄像机位置811可以由摄像机偏移813表示。摄像机偏移813是表示摄像机位置811与包括点云的3D边界框801的预定义点之间在3D空间中的距离的参数。在一些系统中,摄像机偏移813被表示为离3D边界框801的底部801b顶点、左侧801d顶点、近侧801f顶点的测量值。因此,摄像机偏移813表示摄像机位置811与3D边界框801的底部801b顶点、左侧801d顶点、近侧801f顶点之间在X、Y和Z轴上的差值。因此,摄像机偏移813包括描述这些差值的X分量、Y分量和Z分量。摄像机偏移813可以编码在PCC码流中,并提供足够的数据来将摄像机810放置在摄像机位置811。

每个摄像机810的观看矢量815可以由摄像机旋转817表示。因此,摄像机旋转817是表示从摄像机810指向包括点云的3D边界框801的观看矢量815的参数。在一些示例中,摄像机旋转817以四元数表示法描述。四元数表示法是使用标量值和沿空间轴的三个单位矢量在复数域中的矢量表示。四元数表示法可以用来描述3D空间中的任何矢量。解码器可以基于PCC码流中表示的摄像机偏移813和摄像机旋转817来定位摄像机810的视口。然后,该视口可用于从建议的位置和角度渲染3D边界框801中PCC内容的2D表示。

在具体的实现方式中,矩阵乘法可以用来完成这种渲染。例如,PCC内容可以通过初始化表示3D边界框801的模型矩阵来重建。几何形状可以通过将表示点的值定位到模型矩阵中来定义。片和属性还可以通过与模型矩阵中的这些点关联,投影到几何形状上。然后,各种变换可以应用于模型矩阵。例如,摄像机810信息可以作为变换应用于模型矩阵,以便从3D点云渲染2D图像。例如,摄像机偏移813可以用作偏移矩阵,摄像机旋转817可以用作旋转矩阵。偏移矩阵是摄像机偏移813的矩阵表示,可用来将模型矩阵中的点的3D模型变换为2D表示。在一个具体的示例中,偏移矩阵可以表示如下:

其中,Offset[0]、Offset[1]和Offset[2]分别包括摄像机偏移813的X、Y和Z分量。也可以使用缩放因子交换为1的值,以缩放PCC内容。

旋转矩阵是摄像机旋转817的矩阵表示,可用来将模型矩阵中的点的3D模型变换为2D表示。旋转矩阵可以包括应用于模型矩阵的摄像机旋转817的四元数值。在一个具体的示例中,旋转矩阵可以表示如下:

其中,qX表示摄像机旋转817的X分量,qY表示摄像机旋转817的Y分量,qZ表示摄像机旋转817的Z分量,qW表示摄像机旋转817的标量分量。qW可以计算如下:

qW=Sqrt(1-(qX

因此,编码器可以通过编码qX、qY和qZ来指示摄像机旋转817。然后,解码器可以根据qX、qY和qZ计算qW。然后,解码器可以将模型矩阵乘以偏移矩阵和旋转矩阵,以便从由摄像机位置811和观看矢量815定义的视口获取3D边界框801中PCC内容的2D渲染。结果是,用户对所指示的摄像机810的选择,或默认选择,使用户从内容创建者所期望的位置和角度看到3D边界框801中的内容。下面详细描述对这些数据的指示。因此,本示例通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,本发明支持通过最大限度地减少对这种数据的指示来提高译码效率的机制,因此支持减少编码器和/或解码器中的处理器、存储器和/或网络资源使用率。

图9为用于指示用于渲染点云的摄像机参数的示例性V-PCC码流900的示意图。例如,根据方法100、1100和/或1200,V-PCC码流900可以由编解码系统200、编码器300和/或视频译码设备1000生成,供编解码系统200、解码器400和/或视频译码设备1000解码。此外,V-PCC码流900可用于将来自点云媒体500的一组片603编码为占用帧710、几何帧720、图集帧730和/或属性帧。此外,V-PCC码流900可以对摄像机偏移813和/或摄像机旋转817进行编码,以支持在解码器中从所指示的摄像机视点进行渲染。

V-PCC码流900包括一系列V-PCC单元910。V-PCC单元910是大小适于放置在数据包中以便发送到解码器的数据容器。具体地,V-PCC单元910包括与一个或多个体积帧相关的V-PCC分量和/或对应的参数集,这些体积帧表示V-PCC视频序列中对应时刻的点云。在具体示例中,V-PCC单元910可以被配置为对应于通用视频编码(versatile video coding,VVC)标准的网络抽象层(network abstraction layer,NAL)单元。NAL单元是分组大小的数据容器。例如,单个NAL单元的大小通常设计为支持进行网络传输。NAL单元可以包括表示NAL单元类型的标头和包括相关联的数据的载荷。V-PCC单元910包括V-PCC单元载荷914和V-PCC单元标头912。V-PCC单元载荷914包括与体积帧相关的对应类型的视频数据。V-PCC单元头912是表示V-PCC单元载荷914中包括的数据类型的标头。

根据示例,V-PCC单元载荷914可以包括V-PCC参数集911、图集帧913、占用帧915、几何帧917和/或属性帧919。V-PCC参数集911是一组参数,描述用于对一个或多个对应体积帧进行译码的设置。例如,V-PCC参数集911可以包括图集自适应参数集(adaptationparameter set,APS)921。图集APS 921是包括应用于图集帧913中包括的一个或多个片的语法元素/参数的语法结构。例如,图集APS 921中的参数可以应用于与PCC帧相关联的所有一个或多个(例如,或所有)片。V-PCC参数集911还可以包括其它参数集,例如图集帧参数集、图集序列参数集、基于视频的视觉体积译码(V3C)参数集等。参数集之间的主要区别是所包括的参数是否与视频级别(例如,V3C参数集)、序列级别(例如,图集序列参数集)、帧级别(例如,图集帧参数集),和/或片级别(例如,图集APS)的V-PCC相关。其它参数集也可用于特定目的,上述内容并不旨在作为详尽的列表。

图集帧913是投影到矩形帧的2D边界框/片/图集的集合,矩形帧对应于3D空间中的体积,例如3D边界框501、601和/或801,体积数据在其上渲染。图集帧913可以实质上类似于图集帧730。占用帧915是构成2D阵列的占用值的集合,并表示单个图集帧的整个占用信息。占用是表示图集样本是否对应于3D空间中的相关联的样本的值。占用帧915可以实质上类似于占用帧710。几何帧917,也称为几何图,是包括投影在特定深度的几何片信息的帧。几何形状是与体积帧相关联的一组笛卡尔坐标。几何帧917可以实质上类似于几何帧720。属性帧919是这样的帧,该帧包括可选地与点云的体积帧中的每个点相关联的标量或矢量属性,例如颜色、反射率、表面法线、时间戳、材料标识符(identifier,ID)等。体积帧是由笛卡尔坐标表示的3D点集,和特定时刻的零个或更多个对应的属性集。点云的视频包括一系列体积帧。因此,V-PCC参数集911包括表示如何解码一个或多个体积帧的参数集。图集帧913、占用帧915、几何帧917和属性帧919包括用于重建体积帧的视频数据。

如上所述,一些V-PCC系统总是将摄像机定位成在默认位置渲染3D点云的2D视图。在这些系统中,图集帧913、占用帧915、几何帧917和属性帧919中的数据用于重建体积帧。然后,体积帧由摄像机在默认位置渲染。这种方法在许多情况下可能不是有益的,因为默认位置不会因视频而改变,因此提供了不太可能显示有用信息的体积帧的视图。

本发明支持内容创建者选择并提供建议的摄像机位置和建议的观看矢量。这支持内容创建者向用户指示可能包括体积帧的有趣视图的视口。此外,这使内容创建者能够指导用户的体验。在具体示例中,图集APS 921可用于对建议的摄像机位置和建议的观看矢量进行译码。例如,图集APS 921可以包括一个或多个图集摄像机参数(atlas cameraparameter,ACP)语法结构。每个ACP语法结构都可以包括描述渲染时使用的摄像机的数据。例如,图集APS 921可以对ACP语法结构进行编码,该ACP语法结构将摄像机位置译码为摄像机偏移,例如摄像机偏移813。此外,ACP语法结构可以对摄像机观看矢量进行译码,例如作为以四元数表示法表示的摄像机旋转817。

在具体实现方式中,摄像机偏移可以译码为d轴上的ACP偏移(Acp_offset_on_axis[d])933。例如,Acp_offset_on_axis[d]933可以包括摄像机偏移的X、Y和Z分量,其中,d是计数器变量,以表示被表示的偏移分量。例如,d可以设置为0、1或2,分别表示分量X、Y或Z。在具体实现方式中,Acp_offset_on_axis[d]933可以定义如下。Acp_offset_on_axis[d]933表示当前摄像机模型沿d轴的偏移值,表示为Offset[d],增量为2

其中,Offset[0]、Offset[1]和Offset[2]是摄像机的X、Y和Z位移,1可以根据需要用缩放因子替换。

此外,摄像机旋转的单位矢量四元数分量可以编码为ACP旋转qx(Acp_rotation_qx)935、ACP旋转qy(Acp_rotation_qy)937,和ACP旋转qz(Acp_rotation_qz)939。摄像机旋转的标量分量可以由解码器根据单位矢量分量确定。在一个具体示例中,Acp_rotation_qx935、Acp_rotation_qy 937和Acp_rotation_qz 939可以定义如下。Acp_rotation_qx 935以四元数表示法表示当前摄像机模型的旋转的x分量qX。acp_rotation_qx的值可以在-2

此外,Acp_rotation_qy 937以四元数表示法表示当前摄像机模型的旋转的y分量qY。acp_rotation_qy 937的值的范围可以在-2

此外,Acp_rotation_qz 939以四元数表示法表示当前摄像机模型的旋转的z分量qZ。Acp_rotation_qz 939的值的范围可以在-2

以四元数表示法表示的当前摄像机模型的的旋转的第四/标量分量qW可以计算如下:qW=Sqrt(1-(qX2+qY2+qZ2))。解码器可以根据Acp_rotation_qx 935、Acp_rotation_qy 937和Acp_rotation_qz 939中的数据生成旋转矩阵。例如,单位四元数可以如下表示为旋转矩阵:

因此,编码器可以将V-PCC码流900中的摄像机偏移译码为Acp_offset_on_axis[d]933,并将摄像机旋转译码为Acp_rotation_qx 935、Acp_rotation_qy 937和Acp_rotation_qz 939。解码器可以通过在模型矩阵中包括对应的PCC视频数据来重建3D边界框中的点云。然后,解码器可以根据Acp_offset_on_axis[d]933生成描述摄像机偏移的偏移矩阵,根据Acp_rotation_qx 935、Acp_rotation_qy 937和Acp_rotation_qz 939生成描述摄像机旋转的旋转矩阵。然后,解码器可以通过矩阵乘法等将偏移矩阵和旋转矩阵应用于模型矩阵,从指示的视口渲染3D点云的2D视图。因此,Acp_offset_on_axis[d]933、Acp_rotation_qx 935、Acp_rotation_qy 937,和Acp_rotation_qz 939包括可用作变换的数据,以从指示的摄像机位置和观看角度将重建点云从3D体积表示变换到2D表示,该2D表示可以显示在2D屏幕上供终端用户观看。因此,Acp_offset_on_axis[d]933、Acp_rotation_qx 935、Acp_rotation_qy 937和Acp_rotation_qz 939可由内容创建者用于表示优选的观看位置和角度,因此可由编码器用于指导用户对通过V-PCC码流900译码的3D V-PCC内容的体验。

下面详细描述上述信息的具体实现方式。3D重建信息描述了对象的体积和形状。但是,也存在一些附加的参数,例如包括空间中的方向和位置的外部摄像机参数。此外,缩放参数提供关于物理空间中的点大小和间距的信息。但是,一些PCC系统不使用定义沉浸式对象的导演默认视图的任何信息。定义摄像机需要使用两个参数集。这些参数集包括3D空间中的位置,该位置可以定义为相对于点云帧原点的平移。摄像机参数还包括相对于点云帧的坐标系的旋转。为了为摄像机提供旋转和平移参数,PCC码流中的消息被修改为包括对应参数的列表。

3D渲染管线中的外部摄像机参数可以定义如下。具体地,摄像机在世界坐标中的定义包括两个因素。第一个是偏移参数,是摄像机相对于世界坐标系的X、Y和Z位移。偏移矩阵,表示为T,可以定义如下:

其中,X、Y和Z是摄像机的X、Y和Z位移,1可以根据需要用缩放因子替换。

第二个参数是方向矩阵,表示为R,定义了相对于世界坐标系的摄像机旋转,其示例描述如下:

其中,α、β、γ分别是相对于x、y和z世界坐标轴的旋转角度。所得到的变换可以应用于场景图中使用的并包括重建点云的边界框。通过使用这些参数,内容创建者可以建议几个预定义的摄像机位置。这种摄像机位置可称为导演视图。

在一个示例性实现方式中,补充增强信息(supplemental enhancementinformation,SEI)消息可以携带几何变换参数,并且可以通过添加以下信息进行修改。例如,一个或多个摄像机可以与模型相关联,以表示预定义或导演视图,预定义或导演视图用于将观众的注意力引导到体积场景中的特定动作。每个摄像机都可以在全局场景坐标系中使用沿每个轴的偏移来表示。每个摄像机都可以使用沿着每个轴的特定旋转来表征。在另一示例中,每个摄像机旋转可以用四元数(x、y、z和w^2=1-(x^2+y^2+z^2))来表征。

包括以上描述的参数的几何变换参数SEI消息语法可以描述如下:

几何变换参数SEI消息语义的示例性语义更改如下。gtp_num_camera_info表示预定义的摄像机预置数。gtp_num_camera_info等于零表示摄像机信息不存在。当不存在时,推断gtp_num_camera_info的值等于0。gtp_camera_offset_on_axis[i][d]表示沿d轴的第i个摄像机偏移的值。gtp_geometry_scale_on_axis[i][d]的值可以在0到2

Orientation[i][d]=gtp_camera_orientation_on_axis[i][d]÷2

四元数方法也可用于对摄像机旋转进行译码。三个矢量可用于定义摄像机。这些矢量包括位置矢量、视图矢量和向上矢量。替代地,第一人称摄像机可以通过旋转观看矢量来定义。对于四元数,矢量可以绕任意轴旋转。这可以通过将观看矢量转换为四元数来实现。然后,可以定义旋转四元数。然后,可以将旋转四元数应用于视图四元数以实现旋转。为了创建视图四元数(V),从观看矢量中获取x、y和z值,并且可以将0添加为标量分量(w)。因此,V=[0,view]。然后,可以生成四元数来表示旋转。为此,可以获取作为旋转中心(A)的矢量和旋转角度(θ)。建立旋转四元数(R)的公式如下:矢量A=[x,y,z]R.x=A.x*sin(θ/2)R.y=A.y*sin(θ/2)R.z=A.z*sin(θ/2)R.w=cos(θ/2)。旋转四元数R定义了该旋转。旋转之后,使用表示视图的四元数,表示为W。旋转操作描述为W=R*V*R′,其中,R′是R的共轭。以四元数表示法表示的当前点云图像几何旋转的第四分量RotationW可以计算如下:

RotationX=Orientation[0]

RotationY=Orientation[1]

RotationZ=Orientation[2]

RotationW=Sqrt(1-(Orientation[0]2+Orientation[1]2+Orientation[2]2))

上述描述了一个示例性V-PCC消息,该消息提供了一组用于场景中的相对于点云帧原点的摄像机位移参数。摄像机位置可以通过场景内x、y和z方向的轴偏移表示。V-PCC消息还可以提供场景中的摄像机方向参数集。摄像机方向可以由表示x、y和z轴欧拉旋转的d、β和γ旋转角度表示。或者,摄像机方向可以通过以四元数表示法表示旋转的RotationX、RotationY、r_z和r_w来表示,其中,r_w旋转是推导出来的。

图10为示例性视频译码设备1000的示意图。视频译码设备1000适合于实现本文描述的公开示例/实施例。视频译码设备1000包括下行端口1020、上行端口1050和/或收发单元(Tx/Rx)1010。收发单元(Tx/Rx)1010包括用于通过网络向上游和/或下游传送数据的发送器和/或接收器。视频译码设备1000还包括:用于处理数据的包括逻辑单元和/或中央处理单元(central processing unit,CPU)的处理器1030;用于存储数据的存储器1032。视频译码设备1000还可以包括耦合到上行端口1050和/或下行端口1020的电组件、光电(optical-to-electrical,OE)组件、电光(electrical-to-optical,EO)组件和/或无线通信组件,以用于通过电、光或无线通信网络进行数据传输。视频译码设备1000还可以包括用于与用户进行数据通信的输入和/或输出(I/O)设备1060。I/O设备1060可以包括输出设备,例如用于显示视频数据的显示器、用于输出音频数据的扬声器等。I/O设备1060还可以包括输入设备,例如键盘、鼠标、轨迹球等,和/或用于与这些输出设备交互的对应的接口。

处理器1030通过硬件和软件实现。处理器1030可以实现为一个或多个CPU芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)和数字信号处理器(digitalsignal processor,DSP)。处理器1030与下行端口1020、Tx/Rx 1010、上行端口1050和存储器1032通信。处理器1030包括译码模块1014。译码模块1014实现本文描述的公开实施例(例如方法100、1100和1200),这些公开实施例可以使用划分为一组片603并编码为V-PCC码流900中的占用帧710、几何帧720和图集帧730的点云媒体500。译码模块1014还可以实现本文描述的机制800和任何其它方法/机制。此外,译码模块1014可以实现编解码系统200、编码器300和/或解码器400。例如,编码器中的译码模块1014可以将摄像机偏移和/或摄像机旋转编码在PCC码流中。此外,然后,解码器中的译码模块1014可以使用摄像机偏移来生成偏移矩阵和/或使用摄像机旋转来生成旋转矩阵。然后,解码器可以将偏移矩阵和旋转矩阵应用于包括重建点云的模型矩阵,以从指示的位置和角度渲染点云帧。这支持编码器指定并支持解码器使用一个或多个预定义的摄像机位置和角度,以向用户显示重建点云。因此,译码模块1014使得视频译码设备1000在译码视频数据时提供其它功能和/或提高译码效率。因此,译码模块1014改进了视频译码设备1000的功能,并解决了视频译码领域特有的问题。此外,译码模块1014影响了视频译码设备1000到不同状态的变换。或者,译码模块1014可以实现为存储在存储器1032中并由处理器1030执行的指令(例如,存储在非瞬时性介质中的计算机程序产品)。

存储器1032包括一个或多个存储器类型,如磁盘、磁带机、固态驱动器、只读存储器(read onlymemory,ROM)、随机存取存储器(random access memory,RAM)、闪存、三态内容寻址存储器(temary content-addressable memory,TCAM)、静态随机存取存储器(static random-access memory,SRAM)等。存储器1032可以用作溢出数据存储设备,以在选择程序用于执行时存储此类程序,并存储在程序执行过程中读取的指令和数据。

图11是对V-PCC码流(例如V-PCC码流900)进行编码,以指示用于例如根据机制800渲染点云的摄像机参数的示例性方法1100的流程图。编码器(例如编解码系统200、编码器300和/或视频译码设备1000)在执行方法100时可以使用方法1100。因此,方法1100可以对点云媒体500进行操作,点云媒体500被划分为一组片603,并编码为占用帧710、几何帧720、图集帧730和/或属性帧。

方法1100可以在内容创建者根据PCC机制确定将视频编码为3D点云时开始。例如,编码器可以根据来自内容创建者的输入开始编码多个帧的PCC内容。在步骤1101,编码器对描述点云帧的多个2D片、几何形状、占用和/或属性进行编码。编码器可以将这些项目编码到PCC码流(例如V-PCC码流900)中(例如,编码为图集帧913、几何帧917、占用帧915和属性帧919)。这些数据可能足以在解码器中重建体积/点云帧。例如,占用可用于删除图集帧中不是实际视频数据的某些与压缩相关的译码伪影。几何形状可以包括在模型矩阵中,以在3D边界框中重新创建3D点云,并且2D片和/或属性可以投影到几何形状上。

在步骤1103,编码器可以确定描述摄像机相对于点云帧的位置的摄像机偏移。摄像机偏移可以根据用户输入确定。例如,内容创建者可以指示各种摄像机的一个或多个优选位置,以引导观众观看视频内容。摄像机偏移表示这种优选的摄像机位置,并可由解码器用于支持偏移矩阵的生成,该偏移矩阵用于在解码器中重建点云(例如,根据来自步骤1101的数据)之后渲染点云帧的摄像机视图。例如,摄像机偏移可以表示对应于X轴的第一偏移、对应于Y轴的第二偏移和对应于Z轴的第三偏移。在具体实现方式中,摄像机偏移可以包括在图集APS 921中的ACP语法结构中的acp_offset_on_axis[d]933中。这为解码器提供了足够的信息,以生成用于渲染3D点云的2D视图的偏移矩阵。在一个示例中,偏移矩阵包括四个行和四个列。第一偏移(例如,X分量)可以位于第一行第四列,第二偏移(例如,Y分量)可以位于第二行第四列,第三偏移(例如,Z分量)可以位于第三行第四列。在一个示例中,这种偏移矩阵可以表示如下:

在步骤1105,编码器可以确定描述摄像机相对于点云帧的观看矢量的摄像机旋转。摄像机旋转可以根据用户输入确定。例如,内容创建者可以指示各种摄像机的一个或多个优选观看角度,以引导观众观看视频内容。摄像机旋转表示这种优选的摄像机视图,并可由解码器用于支持旋转矩阵的生成,该旋转矩阵用于在解码器中重建点云(例如,根据来自步骤1101的数据)之后渲染点云帧的摄像机视图。如以上所描述,观看角度可以由从描述与摄像机相关联的视口的平面以90度角延伸的观看矢量来描述。因此,摄像机位置和观看角度描述为用户选择的视口的位置和方向。观看矢量可以描述为以四元数表示法表示的摄像机旋转。例如,摄像机旋转以四元数表示法表示摄像机的旋转的X分量、以四元数表示法表示摄像机的旋转的Y分量,以及以四元数表示法表示摄像机的旋转的Z分量。摄像机旋转还包括W分量,W分量可以通过X、Y和Z分量计算。例如,W分量可以根据qW=Sqrt(1-qX2+qY2+qZ2))计算,其中,qW、qX、qY和qZ分别表示W分量、X分量、Y分量和Z分量,其中,Sqrt是平方根函数。

在具体实现方式中,摄像机旋转的qX、qY和qZ分量可以分别包括在图集APS 921中的ACP语法结构中的acp_rotation_qx935、acp_rotation_qy937和acp_rotation_qz 939中。qW可以不被译码,而是可以通过根据如以上所描述的qX、qY和qZ分量在解码器中计算得到。这为解码器提供了足够的信息,以生成用于渲染3D点云的2D视图的旋转矩阵。在一个示例中,旋转矩阵包括四个行和四个列,并且可以包括qW、qX、qY和qZ分量的各种组合,如下所示:

因此,旋转矩阵包括以四元数表示法表示的摄像机的旋转的X分量、Y分量、Z分量,以及W分量。

在步骤1107,编码器将摄像机偏移和摄像机旋转编码到PCC码流中。在步骤1109中,还可以存储PCC码流,该PCC码流用于发送到解码器。PCC码流可以被转发到内容服务器,用于长期存储和/或根据请求发送到解码器/终端用户。因此,内容创建者可以选择V-PCC码流中的一个或多个摄像机位置和观看角度并对其进行编码,以便在解码器上引导观众观看重建V-PCC内容时的视点。因此,方法1100通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,方法1100支持提高译码效率的机制,例如通过从V-PCC码流中省略qW。因此,方法1100支持减少编码器和/或解码器中的处理器、存储器和/或网络资源的使用率。

图12是解码V-PCC码流(例如V-PCC码流900),以例如根据机制800和指示的摄像机参数渲染点云的示例性方法的流程图。解码器(例如编解码系统200、解码器400和/或视频译码设备1000)在执行方法100时可以使用方法1200。因此,方法1200可以对点云媒体500进行操作,点云媒体500被划分为一组片603,并编码为占用帧710、几何帧720、图集帧730和/或属性帧。

例如,在方法1100结束之后,方法1200可以开始于:解码器开始接收表示点云视频序列的译码数据的V-PCC码流。在步骤1201,解码器接收包括PCC分量的PCC码流。具体地,码流可以包括图集帧中的多个2D片、几何帧中的几何形状、占用帧中的占用和/或属性帧中的属性。码流还可以包括一个或多个摄像机的一个或多个摄像机偏移和一个或多个摄像机旋转。摄像机偏移和摄像机旋转定义了用于观看内容创建者指示的V-PCC内容的视口。

在步骤1203,解码器可以初始化表示3D边界框的模型矩阵,并将几何形状包括在模型矩阵中。然后,解码器可以对片进行解码,并通过将片投影到3D边界框/模型矩阵中的点上,以获取点云内容的点云帧,将片转换为3D片坐标系。属性(如果存在)也可以投影到几何形状上,以创建重建点云帧/体积帧。

在步骤1205,解码器可以根据摄像机的摄像机偏移确定偏移矩阵。例如,摄像机偏移可以表示对应于X轴的第一偏移、对应于Y轴的第二偏移和对应于Z轴的第三偏移。这些偏移表示摄像机位置与3D边界框中的预定点(例如3D边界框的底部顶点、左侧顶点、近侧顶点)之间在每个轴上的位移。在具体实现方式中,摄像机偏移可以包括在图集APS 921中的ACP语法结构中的acp_offset_on_axis[d]933中。这为解码器提供了足够的信息,以生成/确定用于渲染3D点云的2D视图的偏移矩阵。在一个示例中,偏移矩阵包括四个行和四个列。第一偏移(例如,X分量)可以位于第一行第四列,第二偏移(例如,Y分量)可以位于第二行第四列,第三偏移(例如,Z分量)可以位于第三行第四列。在一个示例中,这种偏移矩阵可以表示如下:

在步骤1207,解码器可以根据摄像机的摄像机旋转确定旋转矩阵。如以上所描述,摄像机的观看角度可以由从描述与摄像机相关联的视口的平面以90度角延伸的观看矢量来描述。因此,摄像机位置和观看角度描述内容创建者为用户选择的视口的位置和方向。观看矢量可以描述为以四元数表示法表示的摄像机旋转。例如,摄像机旋转可以以四元数表示法表示摄像机的旋转的X分量、以四元数表示法表示摄像机的旋转的Y分量,以及以四元数表示法表示摄像机的旋转的Z分量。摄像机旋转还包括W分量,W分量可以通过X、Y和Z分量计算。例如,W分量可以根据qW=Sqrt(1-qX2+qY2+qZ2))计算,其中,qW、qX、qY和qZ分别表示W分量、X分量、Y分量和Z分量,其中,Sqrt是平方根函数。

在具体实现方式中,摄像机旋转的qX、qY和qZ分量可以分别包括在图集APS 921中的ACP语法结构中的acp_rotation_qx 935、acp_rotation_qy 937和acp_rotation_qz 939中。qW可以不被译码,而是可以通过根据如以上所描述的qX、qY和qZ分量在解码器中计算得到。解码器可以从V-PCC码流中获取qX、qY和qZ分量,并根据qX、qY和qZ分量计算qW分量。然后,在步骤1207,解码器可以根据qW、qX、qY和qZ分量生成旋转矩阵。在一个示例中,旋转矩阵包括四个行和四个列,并且可以包括qW、qX、qY和qZ分量的各种组合,如下所示:

因此,旋转矩阵包括以四元数表示法表示的摄像机的旋转的X分量、Y分量、Z分量,以及W分量。

然后,解码器可以使用摄像机定义的视口渲染3D点云的2D视图。在步骤1209,解码器可以应用偏移矩阵和旋转矩阵通过矩阵乘法等来变换模型矩阵中的点/数据。因此,解码器通过将偏移矩阵和旋转矩阵应用于点云内容来渲染3D点云的2D视图。这种方法将数据从3D坐标系变换为可以在平面屏幕上显示的2D坐标系。因此,此方法支持从内容创建者定义的视口的角度观看3D内容。然后,在步骤1211,渲染的点云内容可以被转发到显示器。因此,方法1200通过为PCC视频内容创建预定的和可选择的观看位置和角度来增加编码器和解码器的功能。此外,方法1200支持提高译码效率的机制,例如通过从V-PCC码流中省略qW。因此,方法1200支持减少编码器和/或解码器中的处理器、存储器和/或网络资源的使用率。

图13是用于例如在V-PCC码流900中指示摄像机参数,以例如根据机制800渲染点云的示例性系统的示意图。系统1300可以通过编码器和解码器(例如编解码系统200、编码器300、解码器400和/或视频译码设备1000)实现。因此,系统1300可以对点云媒体500进行操作,点云媒体500被划分为一组片603,并编码为占用帧710、几何帧720、图集帧730和/或属性帧。此外,系统1300可以在实现方法100、1100和/或1200时使用。

系统1300包括视频编码器1302。视频编码器1302包括确定模块1303,用于确定描述摄像机相对于点云帧的位置的摄像机偏移,以支持生成用于渲染点云帧的摄像机视图的偏移矩阵。视频编码器1302还包括编码模块1305,用于将描述点云帧的多个2D片和几何形状编码到PCC码流中。编码模块1305还用于将摄像机偏移编码到PCC码流中。视频编码器1302还包括存储模块1306,用于存储码流,该码流用于发送到解码器。视频编码器1302还包括发送模块1307,用于将码流发送到视频解码器1310。视频编码器1302还可以用于执行方法1100中的任一步骤。

系统1300还包括视频解码器1310。视频解码器1310包括接收模块1311,用于接收包括图集帧中的多个2D片和摄像机的摄像机偏移的码流。视频解码器1310还包括解码模块1313,用于对片进行解码。视频解码器1310还包括转换模块1315,用于通过在3D边界框中的投影将片转换为3D片坐标系,以获取点云帧。视频解码器1310还包括确定模块1317,用于根据摄像机偏移确定偏移矩阵。视频解码器1310还包括应用模块1318,用于将偏移矩阵应用于点云帧。视频解码器1310还包括转发模块1319,用于转发用于显示的点云帧。视频解码器1310还可以用于执行方法1200中的任一步骤。

当第一组件与第二组件之间除线、迹线或其它介质之外,没有中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除了线、迹线或其它介质之外还有中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其同义词包括直接耦合和间接耦合。除非另有说明,否则术语“大约”是指包括其后数量的±10%的范围。

还应理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或组合。

虽然本发明中已提供若干实施例,但可以理解,在不背离本发明的精神和范围的情况下,所公开的系统和方法可以以许多其它特定形式来体现。当前的这些示例被认为是说明性的而非限制性的,并且意图不限于本文给出的细节。例如,各种元件或组件可以组合或集成在另一个系统中,或者可以省略或不实现一些特征。

此外,在各种实施例中描述和示出为分立的或单独的技术、系统、子系统和方法,在不背离本发明的范围的情况下,可以与其它系统、组件、技术或方法组合或集成。本领域技术人员可以确定改变、替换和更改的其它示例,并在不背离本发明的精神和范围的情况下作出改变、替换和更改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号