使用HEVC图块的内容感知的点云压缩方法和装置与流程

文档序号:25038734发布日期:2021-05-11 17:12阅读:141来源:国知局
使用HEVC图块的内容感知的点云压缩方法和装置与流程

相关申请的交叉引用

本申请要求于2019年9月11日提交的美国专利申请第16/568,002号(其要求了2018年10月2日提交的美国临时申请第62/740,299号和2018年12月5日提交的美国临时申请第62/775,879号的优先权权益)的优先权权益,上面所列申请的全部内容通过引用并入本文中。

本公开描述了总体上涉及视频编码的实施例。



背景技术:

本文所提供的背景描述是出于总体上呈现本公开上下文的目的。在该背景部分中描述的范围内,目前命名的发明人的作品以及提交之时不可另行具备现有技术资格的本描述的各方面既未明确、亦未默示地承认为本发明的现有技术。

世界的三维(3d)表示使能更加沉浸式的交互和通信形式,并且还使机器能够理解、解释和探索世界。点云已成为这样的3d使能表示形式之一。运动图像专家组(mpeg)已经标识了许多与点云数据相关的用例,并针对点云表示和压缩提出了相应的要求。



技术实现要素:

根据示例性实施例,由视频编码器执行的方法包括接收数据云,所述数据云包括表示3d空间的多个数据点。该方法还包括识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点。该方法还包括将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个含有roi的数据点。该方法还包括对roi云执行片生成处理,该片生成处理包括根据每个包括roi的数据点生成roi片。该方法还包括对roi云执行片封装处理,片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定至少两个roi片位于一个以上的图块中,将该roi片中的每个roi片从该多个图块移动到一个图块中。

根据示例性实施例,视频编码器包括处理电路,该处理电路被配置为接收数据云,所述数据云包括表示3d空间的多个数据点。该处理电路还被配置为识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点。该处理电路还被配置为将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个含有roi的数据点。该处理电路还被配置为对roi云执行片生成处理,该片生成处理包括根据每个包括roi的数据点生成roi片。该处理电路还被配置为对roi云执行片封装处理,片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定至少两个roi片位于一个以上的图块中,将该roi片中的每个roi片从该多个图块移动到一个图块中。

根据示例性实施例,提供了一种存储有指令的非暂时性计算机可读介质,所述指令在由视频编码器中的处理器执行时,使得所述处理器执行一种方法。该方法包括接收数据云,所述数据云包括表示3d空间的多个数据点。该方法还包括识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点。该方法还包括将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个含有roi的数据点。该方法还包括对roi云执行片生成处理,该片生成处理包括根据每个包括roi的数据点生成roi片。该方法还包括对roi云执行片封装处理,片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定至少两个roi片位于一个以上的图块中,将该roi片中的每个roi片从该多个图块移动到一个图块中。

附图说明

通过以下详细描述和附图,所公开的主题的其他特征、性质和各种优势将更加明显,在附图中:

图1a示出了示例性点云。

图1b示出了根据一个实施例的递归细分过程。

图2示出了根据实施例的示例性视频编解码器。

图3示出了将片映射到2d网格上的示例。

图4a和图4b示出了根据本公开的实施例的示例性片封装。

图5a和图5b示出了根据本公开的实施例的示例性片封装。

图6a和图6b示出了根据本公开的实施例的示例性片封装。

图7示出了根据一个实施例的示例3droi。

图8a和图8b示出了根据本公开的实施例的示例性片封装。

图9示出了根据一个实施例的示例性片封装顺序。

图10示出了根据一个实施例的由视频编解码器执行的示例性处理。

图11示出了根据一个实施例的由视频编解码器执行的示例性处理。

图12示出了根据一个实施例的由视频编解码器执行的示例性处理。

图13示出了根据一个实施例的由视频编解码器执行的示例性处理。

图14a和图14b示出了根据本公开的实施例的具有多个roi的示例性片封装。

图15是根据一个实施例的计算机系统的示意图。

具体实施方式

点云数据用于表示一些新兴应用中的三维(3d)场景或对象,例如如下新兴应用:沉浸式虚拟现实(vr)/增强现实(ar)/混合现实(mr)、汽车/机器人导航、医学成像等等。点云包括各个3d点的集合。每个点与一个3d坐标集合相关联,该3d坐标集合指示该点的3d位置以及多个其他属性,例如颜色、表面法线、不透明、反射率等。在各个实施例中,可以对输入点云数据进行量化,并且随后整理成可以使用八叉树数据结构描述的3d立体体素网格。所产生的体素化八叉树有助于遍历、搜索和访问量化的点云数据。

点云是3d空间中的一组点,每个点都具有相关联的属性,例如颜色、材质属性等。图1a示出具有点p0至p8的示例性点云。点云可用于将对象或场景重构为这些点的组合。在各种设置中可以使用多个摄像机和深度传感器来捕获点云,并且点云可以由成千上万个点组成,以便真实地表示重构的场景。

需要压缩技术来减少表示一个点云所需的数据量。因此,需要技术来对点云进行有损压缩,以用于实时通信和六自由度(6dof)虚拟现实。另外,在用于自动驾驶和文化遗产应用等的动态映射的环境中,寻求用于无损点云压缩的技术。此外,需要标准来解决几何和属性(例如颜色和反射率)的压缩、可伸缩式/渐进式编码、随时间推移捕获的点云序列的编码以及对点云子集的随机访问。

图1b示出了2d占用图110的示例。占用图可以是二进制的2d图像,其中1和0分别代表占用像素和未占用像素。反投影可以用于使用2d占用图110和几何视频来重构点云。

根据一些实施例,视频编解码器将动态点云的几何形状、运动和纹理信息压缩为三个单独的视频序列。可以分别压缩用来解释三个视频序列所需的额外元数据(即,占用图和辅助片信息)。元数据信息可以代表少量的总体比特流,并且可以通过使用软件实现来有效地对元数据进行编码/解码。大部分信息可以由视频编解码器处理。

图2示出了视频编解码器200的实施例。将点云帧输入到片生成单元202中,以根据该点云帧生成片。在执行片生成之后,封装单元204接收来自片生成单元202的输出以对片执行封装处理。封装单元204的输出被馈送到纹理图像生成单元208。纹理图像生成单元208从平滑单元210接收平滑的几何形状,并将纹理图像输出到图像填充212。例如,首先使用解压缩的几何视频和解压缩的占用图来重建几何形状。对得到的云应用几何平滑,以减轻由于片边界处的视频编解码器压缩伪影而导致的失真。几何图像生成单元206接收点云帧的输入、片信息以及封装单元204的输出。片信息可以包括诸如片原点以及相对于图像原点的偏移、片大小等信息。几何图像生成206将几何图像输出到图像填充单元212。图像填充单元212还接收占用图。图像填充单元212将填充的几何图像和填充的纹理图像输出到视频压缩单元218。视频压缩单元218将压缩的几何视频和压缩的纹理视频输出到复用器220。视频压缩单元218还将重构的几何图像反馈到平滑单元210。占用图压缩单元214接收片信息,并且将压缩的占用图输出到复用器220。辅助片信息压缩单元216接收片信息,并将压缩的辅助片信息输出到复用器220。复用器220输出压缩的比特流。

根据一些实施例,片生成过程将点云分解为具有平滑边界的最小数量的片,同时还使重构误差最小化。编码器可以实现各种方法来生成这种类型的分解。

根据一些实施例,封装过程将片映射到2d网格上,如图3所示。同时最小化未使用的空间,并确保网格的每个m×m(例如,16×16)块都与唯一的片关联。m可以是编码器定义的参数,其在比特流中被编码并且被发送到解码器。在图3中,可以容易地将片与背景区分开。在一些示例中,占用图是与图3中的图像具有完全相同的尺寸的二进制图像。其中属于片的任何像素均设置为1,而属于背景的任何像素均设置为0。前述占用图可以是全分辨率图。但是,对于有损压缩,可以对全分辨率占用图进行下采样然后进行压缩。在解码器处,可将占用图解压缩并进行上采样以回到原始全分辨率。但是,对于无损压缩,将使用原始全分辨率格式对占用图进行编码。

某些模型使用封装策略,该策略迭代地尝试将片插入w×h网格。w和h可以是用户定义的参数,该参数对应于待编码的视频图像的几何形状/纹理/运动的分辨率。可以通过以光栅扫描顺序应用的穷举搜索来确定片位置。可以选择能够保证片无重叠插入的第一位置,并将片覆盖的网格单元标记为已使用。如果当前分辨率图像中没有空白空间能够容纳片,则可以将网格的高度h暂时加倍,然后再次执行搜索。在该过程结束时,可以削剪h以适合使用的网格单元。对于视频序列,可以使用确定针对整个gop的w和h的过程。

此外,某些模型将输入云分割为几个片并将这些片封装进两个2d图像(几何形状和属性),然后使用高效视频编码(hevc)来压缩这些图像。给定3d边界框形式的roi的规范,需要一种内容感知的点云压缩系统来实现以下功能:

1、与点云的其他部分相比,roi的编码质量更高。

2、roi与点云的其他部分独立地进行编码,以便于空间随机访问而无需完全解码。

3、roi的独立编码需要与有关独立(并行)编码/解码的任何系统要求相协调。

4、需要支持多个roi。

本公开的实施例使用hevc图块来实现内容感知的点云压缩,以提供以上所期望的特征。本公开的实施例提供了仅运行压缩模型的一个实例而不必扩大封装图像的尺寸的显著有利特征。

根据一些实施例,通过使用hevc图块来实现内容感知的编码,其中将给定的3droi投影到一个(或多个)图块中,并且以更高的质量对该图块进行编码。当前压缩模型的一个问题是不能保证将3droi投影到相邻位置。在这方面,尽管有可能将roi完全拟合到单个图块,但给定roi的投影会跨越多个图块。在具有内容感知的视频压缩系统中,当发生这种情况时,为一个以上的图块选择了较低的量化参数(qp),这在给定的比特率预算有限的情况下会导致性能下降。

在一些实施例中,为了将hevc图块用于有效的内容感知的点云压缩,将给定的3droi拟合到尽可能少的hevc图块中。可以优先地提供图块的图(例如,2×2图块的图)。roi可以被拟合到具有一个或多个更高优先级的一个或多个图块中。根据大小对片进行排序后,可以将它们封装到2d网格中。

在一些实施例中,找到与由3d边界框指定的给定roi相交的片。这得到了两组片:与roi相交的片(例如,roi片)和不与roi相交的片。可以根据片大小来对roi片和非roi片进行封装。例如,大于第二roi片的第一roi片可以被给予更高的优先级,并且因此在第二roi片之前被封装以更有效地使用可用空间。可以指定roi片的2d边界框不延伸到相邻图块的条件。

图4a示出了用于“士兵”图片的示例片封装。每个图块的边界由虚线表示。此外,每个片都以实黑线表示的2d边界框为边界。在此,可以选择roi作为士兵的头。如图4a所示,存在三个roi,每个roi以一个2d框为边界,并且这三个roi跨越三个不同的图块。图5a和图6a示出了其他示例,其中在封装之后roi片跨越一个以上的图块。

根据一些实施例,roi和其余的点均被视为单独的点云。例如,将点云分为roi云和非roi云。roi云包括点云中包含roi的点。非roi云包括点云中不包含roi的点。roi云和非roi云分别进行片生成过程以分别生成roi片和非roi片。在片生成过程之后,将roi片拟合到尽可能少的图块中。在映射roi片后,将非roi片映射到2d网格。图4b、图5b和图6b分别示出了对分别由单独的roi云和非roi云得到的roi片和非roi片执行封装处理之后所生成的2d网格。如图4b、图5b和图6b所示,将roi片一起分组(即,放置)到单个图块中,由于不包含roi片的图块可能会以较低的速率(较低的质量)进行压缩,从而为包含roi片的图块节省更多位,这会导致更有效的压缩。

根据一些实施例,点云包括单个roi并且具有由系统需求预先指定的图块的图。v-pcc锚点片生成过程和封装方案通常会在投影图像的整个2d网格上投影给定的3droi。锚片生成和封装的这种行为无法有效使用hevc图块。例如,图7示出了点云,其中roi为浅灰色(即,框700内的区域)。图8a示出了得到的封装图像,其中roi云并未与非roi云分离,以及图8b示出了得到的封装图像,其中roi云与非roi云是分离的。如图8a所示,投影的roi散布在整个2d网格上,而在8b中,投影的roi放置在单个图块中。

在一些实施例中,将点云分为roi云和非roi云。roi云包括点云中的所有roi点。非roi云包括点云中的所有非roi点。可以独立生成用于roi云和非roi云的片,这提供了显着的有利特征,即可以确保任何单个片完全属于roi云或者完全属于非roi云。因此,当在roi云和非roi云上独立执行片生成过程时,会产生两组片:(1)一组roi片,其中任何roi片的所有点都属于roi云,以及(2)一组非roi片,其中任何非roi片的所有点都属于非roi云。

表1示出了示例片过程。

表1

roi_patch_metadata_enabled_flag指示是否使能roi片。此标志用于指示点云已分为单独的roi云和非roi云。

roi_patch_metadata_present_flag指示是否存在任何roi(单个或多个)。

number_of_roi_patches[r]指示属于第r个roi的片的数目。number_of_roi_patches[r]的值应当在1到232-1的范围内(包括1和232-1)。

根据一些实施例,基于系统指定的图块的图,roi片被封装成尽可能少的图块。示例性图块的图的大小可以为w×h,其中分别具有h行和w列的图块。可以将h行设置为tilerowheightarray={h1,h2,...,hh},,并且将w列设置为tilecolumnwidtharray=w1,w2,...,ww(参见图9)。图9示出了当系统指定图块的图时所提出的片封装顺序(即,如虚线所示)。如图9所示,示出了4×6图块的图的示例,其中w=4并且h=6。对于存在多个roi的情况,该片封装顺序保持不变。当点云具有多个roi时,该片封装顺序对于多个roi可以保持不变。

基于图块的图,可以根据图10所示的处理将roi片和非roi片封装到图块的图上。图10所示的处理可以由视频编解码器200执行。该处理可以开始于步骤s1000,在步骤s1000中,指定具有p个点的输入云和由3d边界框指定的roi。可以将p个点的点云分为roi云和非roi云。处理进行到步骤s1002,在步骤s1002中,生成多个roi片。roi片可以根据表1中所示的过程生成。处理进行到步骤s1004,在步骤s1004中,生成多个非roi片。就这一点而言,步骤s1002和s1004导致单独生成roi片和非roi片。

处理从步骤s1004进行到步骤s1006,在步骤s1006中,变量k被设置为0。处理进行到步骤s1008,在步骤s1008中,变量k增加1。处理进行到步骤s1010,在步骤s1010中,如图9所示,按顺序封装第k个roi片。处理进行到步骤s1012,在步骤s1012中,确定k是否等于roi片的数量。如果k不等于roi片的数量,则处理从步骤1012返回到步骤1008。因此,步骤s1006至s1012导致每个roi片的封装。

如果k等于roi片的数量,则处理进行到步骤s1014,在步骤s1014中,k被设置为0。处理进行到步骤s1016,在步骤s1016中,k增加1。处理进行到步骤s1018,在步骤s1018中,将第k个非roi片被封装到空白空间中。处理进行到步骤s1020,在步骤s1020中,确定k是否等于非roi片的数量。如果k不等于非roi片的数量,则处理从步骤s1020返回到步骤s1016。因此,步骤s1014至s1020导致每个非roi片的封装。如果k等于非roi片的数量,则图10中所示的处理结束。尽管图10所示的处理是针对单个roi执行的,但是当点云具有多个roi时,可以针对点云中包括的每个roi执行步骤s1002至s1012。

根据一些实施例,roi云被或分为几个较小的子云,其可以被称为分块。例如,当确定roi云大于图块时,将roi云划分为较小的分块。在一些实施例中,片生成过程是在每个分块上独立执行的。分块生成较小的roi片,从而改善封装效果,以便2d网格中的更多空间被投影的roi云填充。

在一些实施例中,基于找到roi云的特征向量并沿着与特征向量相对应的轴执行分块来将roi云划分为分块。在另一个实施例中,基于在roi云中找到roi点的边界框并找到该边界框的最长轴来执行分块,其中可以沿着该最长轴执行分块。例如,参考图1b,可以在沿着边界框的最长轴的方向上执行分块。在另一个实施例中,可以沿着边界框的一个、两个或所有三个轴执行分块。可以基于标准(例如,点的局部密度)来均匀地或非均匀地执行分块。例如,与具有较低点密度的roi云的区域相比,具有较高点密度的roi云的区域可以被划分为较小的分块。此外,以上实施例中的一个或多个实施例可以进行组合。例如,可以基于某些标准沿着边界框的最长轴均匀地或不均匀地执行分块。

图11示出了对被划分为分块的roi云上执行封装的处理的实施例。图11所示的处理可以由视频编解码器200执行。该处理可以开始于步骤s1100,在步骤s1100中,指定p个点的输入云和由3d边界框指定的roi。处理可以进行到步骤s1102,在步骤s1102中,将roi划分为多个分块(c)。当确定roi不能拟合到hevc图块时,可以划分roi。

处理进行到步骤s1104,在步骤s1104中,为每个分块生成roi片,并且将变量c设置为0。可以根据表1中所示的处理实现每个分块的roi片。处理进行到步骤s1106,在步骤s1106中,变量c增加1,并且变量k被设置为0。步骤s1108、s1110和s1112分别以与步骤s1008、s1010和s1012相同的方式执行。在步骤s1112,如果k等于第c个分块的片的数量,则处理进入步骤s1114,在步骤s1114,确定c是否等于分块的数量(c)。因此,步骤s1106至s1114导致针对每个分块中的每个roi片执行封装。

如果c等于分块的数量(c),则处理从步骤s1114进入步骤s116。步骤s1116、s1118、s1120和s1122分别以与步骤s1014、s1016、s1018和s1020所描述的相同的方式执行。在执行步骤s1122之后,图11所示的处理结束。尽管图11所示的处理是针对单个roi执行的,但是当点云具有多个roi时,可以针对点云中包括的每个roi执行步骤s1102至s1114。

根据一些实施例,系统未指定图块的图。在这方面,图块的图不是固定的,可以灵活设计。当系统未指定图块的图时,如上所述,点云仍可以分为roi云和非roi云,其中针对每个单独的云独立执行片生成。

当存在单个roi时,图块的图可以包括一个包围所有roi片的水平图块,以及另一个包围所有非roi片的水平图块。每个水平图块可以跨越图像的宽度,并且彼此堆叠。在另一个示例中,当存在单个roi时,一个图块可以包围所有roi片,而另一个图块可以包围所有非roi图块,其中这些图块是连接在一起的,并且所连接的图块的长度跨越了图像的宽度。

图12示出了一个实施例,其中roi片和非roi片被封装到未指定图块图的2d网格上。如图12所示,包括了图10所示的处理的所有步骤。此外,如果在步骤s1012中确定所有roi片都已被封装(即,k==nroi),则处理进行到步骤s1200,以将底部图块边界设置为roi片边界框的最大高度。就这一点而言,在步骤s1200,可以设置包含所有roi补丁的图块的大小,以使得图块包括所有roi片。此外,如果在步骤s1020中确定已经封装了所有非roi片(即,k==n非roi),则处理进行到步骤s1202,在步骤s1202中,确定是否需要向2d网格添加额外的图块。例如,当未指定图块的图时,可以将图块的图设计为高效地使用可用空间。高效的图块的图设计可以是2×1图块的图,其中顶部图块包括roi片,并且底部图块具有非roi片(例如,图12中所示的设计)。为了进一步受益于可用的设计灵活性,可以将roi片封装成具有可能的最小尺寸的图块。在这种情况下,如果roi片没有跨越画布的整个宽度,则可以在最右边的roi片之后紧接放置一条垂直线,以在右侧创建一个额外的图块,该图块是空的。该方法的优点是更好的压缩效率,这是因为纹理/几何图像被背景填充有冗余信息,并且当每个图块被独立地编码/解码时避免了对该空的图块的背景填充。如果确定需要将额外的图块添加到2d网格,则处理进行到步骤s1204,在步骤s1204中,导出roi片的最大边界框宽度,并将垂直图块放置在所导出的边界框处。尽管图12所示的处理是针对单个roi执行的,但是当点云具有多个roi时,可以针对包括在点云中的每个roi执行步骤s1102至s1012和步骤s1200。

图13示出了一个实施例,其中执行了roi分块并且未指定图块的图。如图13所示,包括了图11所示的处理的所有步骤。此外,图13包括步骤s1300和s1304,如上所述,它们分别以与步骤s1200和s1204相同的方式执行。尽管图11所示的处理是针对单个roi执行的,但是当点云具有多个roi时,可以针对包括在点云中的每个roi执行步骤s1102至s1114和步骤s1300。

在一些实施例中,为了支持用于单个roi的随机访问特征,将roi片的索引发送到解码器,使得解码器仅解码roi片以重建roi云。使用roi片的索引,解码器可以确定由roi片填充的图块,并且仅解码那些图块。作为索引的替代,为每个片编码一个标志,以指示该片是roi片还是非roi片。作为另一种替代,将roi片的索引更改为[0,roi片的数量-1],其中仅有“roi片的数量”被发送到解码器,解码器知道第一“roi片的数量”的片均为roi片,并通过解码这些片来重建roi云。

根据一些实施例,点云可以包括多个roi。当点云中包括多个roi时,可以创建多组roi片(例如,每个roi云有一组roi片),而不是仅创建一组roi片。当指定图块的图时,可以根据图10所示的处理将这些组一组接一组地进行封装,或者当未指定图块的图时,可以根据图12所示的处理将这些组一组接一组地进行封装。当指定图块的图时,可以根据图11所示的处理将分块应用于每个roi云并进行封装,或者当未指定图块的图时,可以根据图13所示的处理将分块应用于每个roi云并进行封装。

图14a示出了一个实施例,其中多个roi中的每个roi被放置在跨越图像宽度的图块中。图14b示出了一个实施例,其中每个roi被放置在垂直堆叠的图块中,并且空白空间被划分为另外的图块。图14a和图14b中的图块边界以虚线描绘。

根据一些实施例,为了支持用于多个roi的随机访问特征,修改了roi片的索引。roi#1的片可以通过[0,roi#1的片数量]来索引,roi#2的片可以通过[roi#1的片数量,roi#1的片数量+roi#2的片的数量-1]来索引,依此类推。每个roi的片的数量可以仅发送到解码器,其中解码器可以确定特定roi的片索引,并相应地重构该roi。

在示例性解码处理中,可以将指示每个roi的片数量的整数数组指定为如下所示的整数数组:

a=[n_0,n_1,n_2,…,n_(r-1)],

其中n_r指示第r个roi的片数量。

解码器知道第r个roi的片索引在以下范围内:

b=[n_0+n_1+…+n_(r-1)-1,n_0+n_1+…+n_r-1]。

因此,在一些实施例中,为了解码第r个roi,解码器仅需要解码具有在范围b中给定的索引的片。

可以将上述技术实现为计算机软件,该计算机软件使用计算机可读指令,并且物理存储在一个或多个计算机可读介质中。例如,图15示出适于实施所公开的主题的某些实施例的计算机系统(1500)。

可以使用任何合适的机器代码或计算机语言对计算机软件进行编码,可以对机器代码或计算机语言进行汇编、编译、链接或类似的机制以创建包含可以直接执行的指令或通过解释、微代码等执行的指令的代码。例如,通过一个或多个计算机中央处理单元(cpu)、图形处理单元(gpu)等。

指令可以在各种类型的计算机或其组件上执行,例如包括个人计算机、平板计算机、服务器、智能电话、游戏装置、物联网装置等。

图15所示的计算机系统(1500)的组件本质上是示例性的,并且不旨在对实施本公开的实施例的计算机软件的使用范围或功能提出任何限制。组件的配置也不应被解释为具有与计算机系统(1500)的示例性实施例中所示的组件中的任何一个组件或组件的组合有关的任何依赖性或要求。

计算机系统(1500)可以包括某些人机接口输入装置。此类人机接口输入装置可以响应于一个或多个人类用户例如通过下述的输入:触觉输入(例如:击键、划动,数据手套移动)、音频输入(例如:语音、拍手)、视觉输入(例如:手势)、嗅觉输入(未描绘出)。人机接口装置还可以用于捕获不一定与人的意识输入直接相关的某些媒体,例如音频(例如,语音、音乐、环境声音)、图像(例如,扫描的图像、从静止图像相机获取摄影图像)、视频(例如二维视频、包括立体视频的三维视频)等。

输入人机接口装置可以包括下述中的一项或多项(每种中仅示出一个):键盘(1501)、鼠标(1502)、触控板(1503)、触摸屏(1510)、数据手套(未示出)、操纵杆(1505)、麦克风(1506)、扫描仪(1507)、相机(1508)。

计算机系统(1500)也可以包括某些人机接口输出装置。这样的人机接口输出装置可以例如通过触觉输出、声音、光和气味/味道来刺激一个或多个人类用户的感官。此类人机接口输出装置可以包括触觉输出装置(例如触摸屏(1510)、数据手套(未示出)或操纵杆(1505)的触觉反馈,但是也可以是不作为输入设备的触觉反馈装置)、音频输出装置(例如,扬声器(1509)、耳机(未示出))、视觉输出装置(例如包括crt屏幕、lcd屏幕、等离子屏幕、oled屏幕的屏幕(1510),每种屏幕有或没有触摸屏输入功能,每种屏幕都有或没有触觉反馈功能,其中的一些屏幕能够通过诸如立体图像输出之类的装置、虚拟现实眼镜(未描绘出)、全息显示器和烟箱(未描绘出)以及打印机(未描绘出)来输出二维视觉输出或超过三维输出。

计算机系统(1500)也可以包括人类可访问存储装置及其关联介质:例如包括具有cd/dvd等介质(1521)的cd/dvdrom/rw(1520)的光学介质、指状驱动器(1522)、可拆卸硬盘驱动器或固态驱动器(1523)、诸如磁带和软盘之类的传统磁性介质(未示出)、诸如安全软件狗之类的基于专用rom/asic/pld的装置(未示出)等。

本领域技术人员还应该理解,结合当前公开的主题使用的术语“计算机可读介质”不涵盖传输介质、载波或其他瞬时信号。

计算机系统(1500)还可以包括到一个或多个通信网络的接口。网络可以例如是无线网络、有线网络、光网络。网络可以进一步是本地网络、广域网络、城域网络、车辆和工业用网络、实时网络、耐延迟网络等。网络的示例包括诸如以太网之类的局域网、无线lan、包括gsm、3g、4g、5g、lte等的蜂窝网络、包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络、包括canbus的车辆和工业用电视等等。某些网络通常需要连接到某些通用数据端口或外围总线(1549)的外部网络接口适配器(例如计算机系统(1500)的usb端口);如下所述,其他网络接口通常通过连接到系统总线而集成到计算机系统(1500)的内核中(例如,连接pc计算机系统中的以太网接口或连接到智能手机计算机系统中的蜂窝网络接口)。计算机系统(1500)可以使用这些网络中的任何一个与其他实体通信。此类通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,连接到某些canbus装置的canbus)或双向的,例如,使用局域网或广域网数字网络连接到其他计算机系统。如上所述,可以在那些网络和网络接口的每一个上使用某些协议和协议栈。

上述人机接口装置、人机可访问的存储装置和网络接口可以附接到计算机系统(1500)的内核(1540)。

内核(1540)可以包括一个或多个中央处理单元(cpu)(1541)、图形处理单元(gpu)(1542)、现场可编程门区域(fpga)(1543)形式的专用可编程处理单元、用于某些任务的硬件加速器(1544)等。这些装置以及只读存储器(rom)(1545)、随机存取存储器(1546)、诸如内部非用户可访问的硬盘驱动器、ssd等之类的内部大容量存储器(1547)可以通过系统总线(1548)连接。在一些计算机系统中,可以以一个或多个物理插头的形式访问系统总线(1548),以能够通过附加的cpu、gpu等进行扩展。外围装置可以直接连接到内核的系统总线(1548)或通过外围总线(1549)连接到内核的系统总线。外围总线的体系结构包括pci、usb等。

cpu(1541)、gpu(1542)、fpga(1543)和加速器(1544)可以执行某些指令,这些指令可以组合来构成上述计算机代码。该计算机代码可以存储在rom(1545)或ram(1546)中。过渡数据也可以存储在ram(1546)中,而永久数据可以例如存储在内部大容量存储器(1547)中。可以通过使用高速缓存来进行到任何存储装置的快速存储及检索,该高速缓存可以与下述紧密关联:一个或多个cpu(1541)、gpu(1542)、大容量存储(1547)、rom(1545)、ram(1546)等。

计算机可读介质可以在其上具有用于执行各种由计算机实现的操作的计算机代码。介质和计算机代码可以是出于本公开的目的而专门设计和构造的介质和计算机代码,或者介质和计算机代码可以是计算机软件领域的技术人员公知且可用的类型。

作为非限制性示例,可以由于一个或多个处理器(包括cpu、gpu、fpga、加速器等)执行包含在一种或多种有形的计算机可读介质中的软件而使得具有架构(1500),特别是内核(1540)的计算机系统提供功能。此类计算机可读介质可以是与如上所述的用户可访问的大容量存储相关联的介质,以及某些非暂时性的内核(1540)的存储器,例如内核内部大容量存储器(1547)或rom(1545)。可以将实施本公开的各种实施例的软件存储在此类装置中并由内核(1540)执行。根据特定需要,计算机可读介质可以包括一个或多个存储装置或芯片。软件可以引起内核(1540),特别是其中的处理器(包括cpu、gpu、fpga等)执行本文所描述的特定过程或特定过程的特定部分,包括定义存储在ram(1546)中的数据结构以及根据由软件定义的过程来修改此类数据结构。附加地或替换地,可以由于硬连线或以其他方式体现在电路(例如,加速器(1544))中的逻辑中而使得计算机系统提供功能,该电路可以替换软件或与软件一起运行以执行本文描述的特定过程或特定过程的特定部分。在适当的情况下,提及软件的部分可以包含逻辑,反之亦然。在适当的情况下,提及计算机可读介质的部分可以包括存储用于执行的软件的电路(例如集成电路(ic))、体现用于执行的逻辑的电路或两者都包括。本公开包括硬件和软件的任何合适的组合。

尽管本公开已经描述了多个示例性实施例,但是存在落入本公开的范围内的修改、置换和各种替换等效物。因此,应当理解,本领域技术人员将能够设计出许多虽然未在本文中明确示出或描述,但其体现了本公开的原理,因此落入本公开的精神和范围内的系统和方法。

(1)一种由视频编码器执行的方法,包括:接收包括代表三维(3d)空间的多个数据点的数据云;识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点;将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个包括所述roi的数据点;对所述roi云执行片生成处理,所述片生成处理包括根据所述每个包括所述roi的数据点生成roi片;以及对所述roi云执行片封装处理,所述片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定所述多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定所述至少两个roi片位于一个以上的图块中,将每个所述roi片从所述多个图块移动到一个图块中。

(2)根据特征(1)所述的方法,还包括:对每个非roi云执行片生成处理,所述片生成处理包括为每个不包括roi的数据点创建一个非roi片,以及对每个非roi云执行片封装处理,所述片封装处理包括将每个所述非roi片映射到所述二维图中不包括所述roi片的一个或多个空白空间。

(3)根据特征(1)或(2)所述的方法,其中,并行地执行对所述roi云的所述片封装处理和对每个非roi云的所述片封装处理。

(4)根据特征(2)或(3)所述的方法,还包括:根据第一压缩率压缩含有所述roi片中的每个roi片的所述图块;以及根据高于所述第一压缩率的第二压缩率压缩不含有所述roi片的多个图块中的各个图块。

(5)根据特征(1)至(4)中任一项所述的方法,还包括:确定所述roi是否大于所述2d图中所包括的每个图块;以及响应于确定所述roi大于所述2d图中所包括的每个图块,将所述roi云划分为一个或多个子roi云,其中,对所述一个或多个子roi云中的每个子roi云执行所述片生成处理和所述片封装处理。

根据特征(5)所述的方法,其中,对所述一个或多个子roi云并行地执行所述片封装处理

(7)根据特征(1)至(6)中任一项所述的方法,还包括:确定所述视频编码器是否指定了所述2d图中的每个图块的大小;以及响应于确定所述视频编码器未指定所述2d图中的每个图块的大小,设置所述包含所述roi片的图块的高度,以使所述roi片以所述包含所述roi片的图块为边界。

(8)根据特征(7)所述的方法,还包括:响应于确定所述视频编码器未指定所述2d图中的每个图块的大小,设置所述包含所述roi片的图块的宽度,以使所述roi片以所述包含所述roi片的图块为边界。

(9)根据特征(2)至(8)中任一项所述的方法,其中,所述数据云包括多个roi,所述数据云被划分为多个roi云,每个roi云对应于各自的roi,并且对每个roi云执行所述片生成处理和所述片封装处理。

(10)根据特征(9)所述的方法,其中,对每个roi云执行的所述片封装处理以使每个roi被映射到所述2d图中的不同图块。

(11)一种视频编码器,包括被配置为执行以下操作的处理电路:接收包括代表三维(3d)空间的多个数据点的数据云;识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点;将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个包括roi的数据点;对所述roi云执行片生成处理,所述片生成处理包括根据所述每个包括roi的数据点生成roi片;以及对所述roi云执行片封装处理,所述片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定所述多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定至少两个roi片位于一个以上的图块中,将每个所述roi片从所述多个图块移动到一个图块中。

(12)根据特征(11)所述的视频编码器,其中,所述处理电路还被配置为:对每个非roi云执行片生成处理,所述片生成处理包括为每个不包括roi的数据点创建一个非roi片,以及对每个非roi云执行片封装处理,所述片封装处理包括将每个所述非roi片映射到所述二维图中不包括所述roi片的一个或多个空白空间。

(13)根据特征(11)或(12)所述的视频编码器,其中,并行地执行对所述roi云的所述片封装处理和对每个非roi云的所述片封装处理。

(14)根据特征(12)或(13)所述的视频编码器,其中,所述处理电路还被配置为:根据第一压缩率压缩含有所述roi片中的每一个roi片的所述图块;以及根据高于所述第一压缩率的第二压缩率压缩不含有所述roi片的多个图块中的各个图块。

(15)根据特征(11)至(14)中任一项所述的视频编码器,其中,所述处理电路还被配置为:确定所述roi是否大于所述2d图中所包括的每个图块;以及响应于确定所述roi大于所述2d图中所包括的每个图块,将所述roi云划分为一个或多个子roi云,其中,对所述一个或多个子roi云中的每个子roi云执行所述片生成处理和所述片封装处理。

(16)根据特征(15)所述的视频编码器,其中,对所述一个或多个子roi云并行地执行所述片封装处理。

(17)根据特征(11)至(16)中任一项所述的视频编码器,其中,所述处理电路还被配置为:确定所述视频编码器是否指定了所述2d图中的每个图块的大小;以及响应于确定所述视频编码器未指定所述2d图中的每个图块的大小,设置所述包含所述roi片的图块的高度,以使所述roi片以所述包含所述roi片的图块为边界。

(18)根据特征(17)所述的视频编码器,其中,所述处理电路还被配置为:响应于确定所述视频编码器未指定所述2d图中的每个图块的大小,设置所述包含所述roi片的图块的宽度,以使所述roi片以所述包含所述roi片的图块为边界。

(19)根据特征(12)至(18)中任一项所述的视频编码器,其中,所述数据云包括多个roi,所述数据云被划分为多个roi云,每个roi云对应于各自的roi,并且对每个roi云执行所述片生成处理和所述片封装处理。。

(20)一种存储指令的非暂时性计算机可读介质,所述指令在由视频编码器中的处理器执行时,使得所述处理器执行一种方法,所述方法包括:接收包括代表三维(3d)空间的多个数据点的数据云;识别包括与所述数据云相关的感兴趣区域(roi)的每个数据点;将所述数据云划分为roi云和一个或多个非roi云,所述roi云包括每个包括所述roi的数据点;对所述roi云执行片生成处理,所述片生成处理包括根据所述每个包括所述roi的数据点生成roi片;以及对所述roi云执行片封装处理,所述片封装处理包括:(i)将每个roi片映射到二维(2d)图,所述2d图包括在所述2d图中排列为网格的多个图块,(ii)确定所述多个roi片中的至少两个roi片是否位于一个以上的图块中,以及(iii)响应于确定所述至少两个roi片位于一个以上的图块中,将每个所述roi片从所述多个图块移动到一个图块中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1