CN118056405A - 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法 - Google Patents

点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法 Download PDF

Info

Publication number
CN118056405A
CN118056405A CN202280066977.6A CN202280066977A CN118056405A CN 118056405 A CN118056405 A CN 118056405A CN 202280066977 A CN202280066977 A CN 202280066977A CN 118056405 A CN118056405 A CN 118056405A
Authority
CN
China
Prior art keywords
point cloud
cloud data
subgroup
data
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280066977.6A
Other languages
English (en)
Inventor
吴炫默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Publication of CN118056405A publication Critical patent/CN118056405A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

根据实施例的点云数据传输方法可以包括以下步骤:对点云数据进行编码;发送包括点云数据的比特流。根据实施例的点云数据接收方法可以包括以下步骤:接收包括点云数据的比特流;以及对点云数据进行解码。

Description

点云数据发送设备、点云数据发送方法、点云数据接收设备以 及点云数据接收方法
技术领域
实施例涉及一种用于处理点云内容的方法和设备。
背景技术
点云内容是由点云表示的内容,其是属于表示三维空间的坐标系的点的集合。点云内容可表达以三个维度配置的媒体,并且用于提供诸如虚拟现实(VR)、增强现实(AR)、混合现实(MR)和自驾驶服务的各种服务。然而,需要数万至数十万的点数据来表示点云内容。因此,需要一种用于有效地处理大量点数据的方法。
发明内容
技术问题
实施例提供一种用于有效地处理点云数据的设备和方法。实施例提供一种用于解决时延和编码/解码复杂度的点云数据处理方法和设备。
实施例的技术范围不限于前述技术目的,并且可以扩展至本领域的技术人员基于本文所公开的整个内容可推断出的其它技术目的。
技术方案
为了实现这些目的和其他优点并且根据本公开的目的,如本文所体现和广泛描述的,发送点云数据的方法可以包括:对点云数据进行编码,以及发送包含点云数据的比特流。根据实施例的一种接收点云数据的方法可以包括接收包含点云数据的比特流以及对点云数据进行解码。
有益效果
根据实施例的设备和方法可以高效地处理点云数据。
根据实施例的设备和方法可以提供高质量点云服务。
根据实施例的设备和方法可以提供点云内容以提供诸如VR服务和自驾驶服务的通用服务。
附图说明
附图被包括以提供本公开的进一步理解,并且被并入本申请中且构成本申请的一部分,附图图示本公开的实施例并与描述一起用于说明本公开的原理。为了更好地理解下面描述的各种实施例,应该结合附图参考以下实施例的描述。贯穿附图将使用相同的附图标记来指代相同或相似的部分。在附图中:
图1示出根据实施例的示例性点云内容提供系统;
图2是图示根据实施例的点云内容提供操作的框图;
图3图示根据实施例的捕获点云视频的示例性处理;
图4图示根据实施例的示例性点云编码器;
图5示出根据实施例的体素的示例;
图6示出根据实施例的八叉树和占用码的示例;
图7示出根据实施例的邻居节点图案的示例;
图8图示根据实施例的每个LOD中的点配置的示例;
图9图示根据实施例的每个LOD中的点配置的另一示例;
图10图示根据实施例的点云解码器;
图11图示根据实施例的点云解码器;
图12图示根据实施例的发送设备;
图13图示根据实施例的接收设备;
图14图示根据实施例的结合点云数据发送/接收方法/设备可操作的示例性结构;
图15图示根据实施例的对点云数据进行编码、传输和解码的过程;
图16示出根据实施例的基于层的点云数据配置以及几何和属性比特流的结构;
图17示出根据实施例的比特流的配置;
图18图示根据实施例的比特流排序方法;
图19图示根据实施例的选择几何数据和属性数据的方法;
图20图示根据实施例的配置包括点云数据的切片的方法;
图21图示根据实施例的基于单切片的几何树结构和基于分段切片的几何树结构;
图22图示根据实施例的几何编译树的层组结构和属性编译树的对齐层组结构;
图23图示根据实施例的层组和子组的结构;
图24、图25和图26图示根据实施例的多分辨率和多大小ROI输出;
图27图示根据实施例的考虑云密度的切片生成方法;
图28图示根据实施例的跨z轴、y轴和x轴分割非立方子组边界框的示例;
图29图示根据实施例的子组划分过程;
图30图示根据实施例的可变子组大小和固定子组大小之间的比较;
图31图示根据实施例的基于节点扫描顺序的子组边界框;
图32图示根据实施例的基于节点扫描顺序的子组边界框;
图33图示根据实施例的包含点云数据和参数的比特流;
图34图示根据实施例的序列参数集;
图35示出根据实施例的依赖几何数据单元报头;
图36示出根据实施例的层组结构库存;
图37图示根据实施例的点云数据发送设备;
图38图示根据实施例的点云数据接收设备;
图39图示根据实施例的子比特流分类方法;
图40图示根据实施例的点云数据发送/接收方法;
图41图示根据实施例的点云数据发送/接收方法;
图42图示根据实施例的层组切片;
图43图示根据实施例的发送点云数据的方法;以及
图44图示根据实施例的接收点云数据的方法。
具体实施方式
现在将详细参考本公开的优选实施例,其示例在附图中被图示。下面将参考附图给出的详细描述旨在解释本公开的示例性实施例,而非示出可以根据本公开实现的仅有实施例。以下详细描述包括具体细节以便于提供本公开的彻底理解。然而,对于本领域的技术人员而言将显而易见的是,本公开可以在没有这些具体细节的情况下实践。
尽管本公开中使用的大多数术语已经选自本领域中广泛使用的通用术语,但是一些术语已经由申请人任意选择并且在以下描述中根据需要详细说明其含义。因此,本公开应该基于术语的预期含义而非其简单名称或含义来理解。
图1示出根据实施例的示例性点云内容提供系统。
图1中所图示的点云内容提供系统可以包括发送设备10000和接收设备10004。发送设备10000和接收设备10004能够有线或无线通信以发送和接收点云数据。
根据实施例的点云数据发送设备10000可以取得(secure)和处理点云视频(或点云内容)并将其发送。根据实施例,发送设备10000可以包括固定站、基站收发器系统(BTS)、网络、人工智能(AI)设备和/或系统、机器人、AR/VR/XR设备和/或服务器。根据实施例,发送设备10000可以包括被配置成使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线设备执行通信的设备、机器人、车辆、AR/VR/XR设备、便携式设备、家用电器、物联网(IoT)设备和AI设备/服务器。
根据实施例的发送设备10000包括点云视频获取器10001、点云视频编码器10002和/或发射器(或通信模块)10003。
根据实施例的点云视频获取器10001通过诸如捕获、合成或生成的处理过程来获取点云视频。点云视频是由点云表示的点云内容,其是被定位在3D空间中的点的集合,并且可以被称为点云视频数据。根据实施例的点云视频可以包括一个或更多个帧。一个帧表示静止图像/图片。因此,点云视频可以包括点云图像/帧/图片,并且可以被称为点云图像、帧或图片。
根据实施例的点云视频编码器10002对所获取的点云视频数据进行编码。点云视频编码器10002可以基于点云压缩编译对点云视频数据进行编码。根据实施例的点云压缩编译可以包括基于几何的点云压缩(G-PCC)编译和/或基于视频的点云压缩(V-PCC)编译或下一代编译。根据实施例的点云压缩编译不限于上述实施例。点云视频编码器10002可以输出包含编码的点云视频数据的比特流。比特流可以不仅包含编码的点云视频数据,而且包含与点云视频数据的编码有关的信令信息。
根据实施例的发射器10003发送包含编码的点云视频数据的比特流。根据实施例的比特流被封装在文件或片段(例如,流片段(streaming segment))中,并且通过诸如广播网络和/或宽带网络的各种网络发送。尽管图中未示出,发送设备10000可以包括被配置成执行封装操作的封装器(或封装模块)。根据实施例,封装器可以包括在发射器10003中。根据实施例,文件或片段可以通过网络发送到接收设备10004,或者存储在数字存储介质(例如,USB、SD、CD、DVD、蓝光、HDD、SSD等)中。根据实施例的发射器10003能够通过4G、5G、6G等网络与接收设备10004(或接收器10005)有线/无线通信。另外,发射器可以根据网络系统(例如,4G、5G或6G通信网络系统)执行必要的数据处理操作。发送设备10000可以按照按需方式发送封装的数据。
根据实施例的接收设备10004包括接收器10005、点云视频解码器10006和/或渲染器10007。根据实施例,接收设备10004可以包括被配置成使用无线电接入技术(例如,5G新RAT(NR)、长期演进(LTE))与基站和/或其它无线设备执行通信的设备、机器人、车辆、AR/VR/XR设备、便携式设备、家用电器、物联网(IoT)设备和AI设备/服务器。
根据实施例的接收器10005从网络或存储介质接收包含点云视频数据的比特流或者其中封装比特流的文件/片段。接收器10005可以根据网络系统(例如,4G、5G、6G等的通信网络系统)执行必要的数据处理。根据实施例的接收器10005可以将所接收的文件/片段解封装并输出比特流。根据实施例,接收器10005可以包括被配置成执行解封装操作的解封装器(或解封装模块)。解封装器可以被实现为与接收器10005分离的元件(或组件)。
点云视频解码器10006将包含点云视频数据的比特流解码。点云视频解码器10006可以根据点云视频数据被编码的方法(例如,以点云视频编码器10002的操作的逆过程)来将点云视频数据解码。因此,点云视频解码器10006可以通过执行点云解压缩编译来将点云视频数据解码,该点云解压缩编译是点云压缩的逆过程。点云解压缩编译包括G-PCC编译。
渲染器10007渲染解码的点云视频数据。渲染器10007可以通过不仅渲染点云视频数据,而且渲染音频数据来输出点云内容。根据实施例,渲染器10007可以包括被配置成显示点云内容的显示器。根据实施例,显示器可以被实现为单独的设备或组件而非包括在渲染器10007中。
图中由虚线指示的箭头表示接收设备10004所获取的反馈信息的传输路径。反馈信息是反映与消费点云内容的用户的交互性的信息,并且包括关于用户的信息(例如,头定向信息、视口信息等)。具体地,当点云内容是用于需要与用户交互的服务(例如,自驾驶服务等)的内容时,反馈信息可以被提供给内容发送方(例如,发送设备10000)和/或服务提供商。根据实施例,反馈信息可以在接收设备10004以及发送设备10000中使用,或者可以不提供。
根据实施例的头定向信息是关于用户的头位置、定向、角度、运动等的信息。根据实施例的接收设备10004可以基于头定向信息来计算视口信息。视口信息可以是关于用户正在观看的点云视频的区域的信息。视点是用户通过其观看点云视频的点,并且可以指代视口区域的中心点。即,视口是以视点为中心的区域,并且区域的大小和形状可以由视场(FOV)确定。因此,除了头定向信息之外,接收设备10004还能够以基于设备所支持的垂直或水平FOV来提取视口信息。另外,接收设备10004执行凝视分析等以检查用户消费点云的方式、点云视频中用户凝视的区域、凝视时间等。根据实施例,接收设备10004可以将包括凝视分析结果的反馈信息发送到发送设备10000。根据实施例的反馈信息可以在渲染和/或显示过程中获取。根据实施例的反馈信息可以由包括在接收设备10004中的一个或更多个传感器取得。根据实施例,反馈信息可以由渲染器10007或单独的外部元件(或设备、组件等)取得。图1中的虚线表示发送渲染器10007所取得的反馈信息的过程。点云内容提供系统可以基于反馈信息来处理(编码/解码)点云数据。因此,点云视频数据解码器10006可以基于反馈信息来执行解码操作。接收设备10004可以将反馈信息发送到发送设备10000。发送设备10000(或点云视频数据编码器10002)可以基于反馈信息来执行编码操作。因此,点云内容提供系统可以基于反馈信息有效地处理必要数据(例如,与用户的头位置对应的点云数据)而非处理(编码/解码)整个点云数据,并将点云内容提供给用户。
根据实施例,发送设备10000可以被称为编码器、发送设备、发射器等,并且接收设备10004可以被称为解码器、接收设备、接收器等。
根据实施例的图1的点云内容提供系统中(通过获取/编码/传输/解码/渲染的一系列过程)处理的点云数据可以被称为点云内容数据或点云视频数据。根据实施例,点云内容数据可以用作涵盖与点云数据有关的元数据或信令信息的概念。
图1所图示的点云内容提供系统的元件可以由硬件、软件、处理器和/或其组合实现。
图2是图示根据实施例的点云内容提供操作的框图。
图2的框图示出图1中描述的点云内容提供系统的操作。如上所述,点云内容提供系统可以基于点云压缩编译(例如,G-PCC)来处理点云数据。
根据实施例的点云内容提供系统(例如,点云发送设备10000或点云视频获取器10001)可以获取点云视频(20000)。点云视频由属于用于表达3D空间的坐标系的点云表示。根据实施例的点云视频可以包括Ply(Polygon文件格式或斯坦福三角形(StanfordTriangle)格式)文件。当点云视频具有一个或更多个帧时,所获取的点云视频可以包括一个或更多个Ply文件。Ply文件包含诸如点几何和/或属性的点云数据。几何包括点的位置。每个点的位置可以由表示三维坐标系(例如,由X、Y和Z轴组成的坐标系)的参数(例如,X、Y和Z轴的值)表示。属性包括点的属性(例如,关于每个点的纹理、颜色(YCbCr或RGB)、反射率r、透明度等的信息)。点具有一个或更多个属性。例如,点可以具有作为颜色的属性或者颜色和反射率两个属性。根据实施例,几何可以被称为位置、几何信息、几何数据等,并且属性可以被称为属性、属性信息、属性数据等。点云内容提供系统(例如,点云发送设备10000或点云视频获取器10001)可以从与点云视频获取过程有关的信息(例如,深度信息、颜色信息等)取得点云数据。
根据实施例的点云内容提供系统(例如,发送设备10000或点云视频编码器10002)可以对点云数据进行编码(20001)。点云内容提供系统可以基于点云压缩编译对点云数据进行编码。如上所述,点云数据可以包括点的几何和属性。因此,点云内容提供系统可以执行对几何进行编码的几何编码并输出几何比特流。点云内容提供系统可以执行对属性进行编码的属性编码并输出属性比特流。根据实施例,点云内容提供系统可以基于几何编码来执行属性编码。根据实施例的几何比特流和属性比特流可以被复用并作为一个比特流输出。根据实施例的比特流还可以包含与几何编码和属性编码有关的信令信息。
根据实施例的点云内容提供系统(例如,发送设备10000或发射器10003)可以发送编码的点云数据(20002)。如图1中所图示,编码的点云数据可以由几何比特流和属性比特流表示。另外,编码的点云数据可以与点云数据的编码相关的信令信息(例如,与几何编码和属性编码有关的信令信息)一起以比特流的形式发送。点云内容提供系统可以将承载编码的点云数据的比特流封装并以文件或片段的形式将其发送。
根据实施例的点云内容提供系统(例如,接收设备10004或接收器10005)可以接收包含编码的点云数据的比特流。另外,点云内容提供系统(例如,接收设备10004或接收器10005)可以将比特流解复用。
点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以将比特流中发送的编码的点云数据(例如,几何比特流、属性比特流)解码。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以基于比特流中包含的与点云视频数据的编码有关的信令信息将点云视频数据解码。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以将几何比特流解码以重构点的位置(几何)。点云内容提供系统可以通过基于重构的几何对属性比特流进行解码来重构点的属性。点云内容提供系统(例如,接收设备10004或点云视频解码器10005)可以根据重构的几何和解码的属性基于位置来重构点云视频。
根据实施例的点云内容提供系统(例如,接收设备10004或渲染器10007)可以渲染解码的点云数据(20004)。点云内容提供系统(例如,接收设备10004或渲染器10007)可以使用各种渲染方法来渲染通过解码过程解码的几何和属性。点云内容中的点可以被渲染为具有某个厚度的顶点、以对应顶点位置为中心的具有特定最小大小的立方体,或者以对应顶点位置为中心的圆。渲染的点云内容的全部或部分通过显示器(例如,VR/AR显示器、一般显示器等)提供给用户。
根据实施例的点云内容提供系统(例如,接收设备10004)可以取得反馈信息(20005)。点云内容提供系统可以基于反馈信息对点云数据进行编码和/或解码。根据实施例的点云内容提供系统的反馈信息和操作与参考图1描述的反馈信息和操作相同,并且因此省略其详细描述。
图3图示根据实施例的捕获点云视频的示例性过程。
图3图示参考图1至图2描述的点云内容提供系统的示例性点云视频捕获过程。
点云内容包括表示位于各种3D空间(例如,表示真实环境的3D空间、表示虚拟环境的3D空间等)中的对象和/或环境的点云视频(图像和/或视频)。因此,根据实施例的点云内容提供系统可以使用一个或更多个相机(例如,能够取得深度信息的红外相机、能够提取与深度信息对应的颜色信息的RGB相机等)、投影仪(例如,取得深度信息的红外图案投影仪)、LiDAR等来捕获点云视频。根据实施例的点云内容提供系统可以从深度信息提取由3D空间中的点组成的几何形状并且从颜色信息提取每个点的属性以取得点云数据。根据实施例的图像和/或视频可以基于面向内(inward-facing)技术和面向外(outward-facing)技术中的至少一个来捕获。
图3的左侧部分图示面向内技术。面向内技术指代通过定位在中心对象周围的一个或更多个相机(或相机传感器)来捕获中心对象的图像的技术。面向内技术可以被用于生成向用户提供关键对象的360度图像的点云内容(例如,向用户提供对象(例如,诸如角色、玩家、对象或演员的关键对象)的360度图像的VR/AR内容)。
图3的右侧部分图示面向外技术。面向外技术指代通过被定位在中心对象周围的一个或更多个相机(或相机传感器)来捕获中心对象的环境而非中心对象的图像的技术。面向外技术可以被用于生成提供从用户的视角出现的周围环境的点云内容(例如,可以提供给自驾驶车辆的用户的表示外部环境的内容)。
如图所示,可以基于一个或更多个相机的捕获操作来生成点云内容。在这种情况下,相机之间的坐标系可以不同,并且因此点云内容提供系统可以在捕获操作之前校准一个或更多个相机以设置全局坐标系。另外,点云内容提供系统可以通过将任意图像和/或视频与通过上述捕获技术捕获的图像和/或视频合成来生成点云内容。点云内容提供系统在生成表示虚拟空间的点云内容时可以不执行图3中描述的捕获操作。根据实施例的点云内容提供系统可以对捕获的图像和/或视频执行后处理。换言之,点云内容提供系统可以移除不想要的区域(例如,背景),识别捕获的图像和/或视频连接至的空间,并且当存在空间空洞时,执行填充空间空洞的操作。
点云内容提供系统可以通过对从每个相机取得的点云视频的点执行坐标变换来生成一条点云内容。点云内容提供系统可以基于每个相机的位置坐标对点执行坐标变换。因此,点云内容提供系统可以生成表示一个宽范围的内容,或者可以生成具有高密度点的点云内容。
图4图示根据实施例的示例性点云编码器。
图4示出图1的点云视频编码器10002的示例。点云编码器重构并编码点云数据(例如,点的位置和/或属性)以根据网络条件或应用来调节点云内容的质量(例如,无损、有损或接近无损)。当点云内容的总大小较大(例如,对于30fps给出60Gbps的点云内容)时,点云内容提供系统可能无法实时流传输内容。因此,点云内容提供系统可以基于最大目标比特率来重构点云内容以根据网络环境等提供点云内容。
如参考图1和图2描述的,点云编码器可以执行几何编码和属性编码。几何编码在属性编码之前执行。
根据实施例的点云编码器包括坐标变换器(变换坐标)40000、量化器(量化和移除点(体素化))40001、八叉树分析器(分析八叉树)40002和表面近似分析器(分析表面近似)40003、算术编码器(算术编码)40004、几何重构器(重构几何)40005、颜色变换器(变换颜色)40006、属性变换器(变换属性)40007、RAHT变换器(RAHT)40008、LOD生成器(生成LOD)40009、提升变换器(提升)40010、系数量化器(量化系数)40011和/或算术编码器(算术编码)40012。
坐标变换器40000、量化器40001、八叉树分析器40002、表面近似分析器40003、算术编码器40004和几何重构器40005可以执行几何编码。根据实施例的几何编码可以包括八叉树几何编码、直接编译、三联体(trisoup)几何编码和熵编码。直接编译和三联体几何编码选择性地或组合应用。几何编码不限于上述示例。
如图所示,根据实施例的坐标变换器40000接收位置并将其变换为坐标。例如,位置可以被变换为三维空间(例如,由XYZ坐标系表示的三维空间)中的位置信息。根据实施例的三维空间中的位置信息可以被称为几何信息。
根据实施例的量化器40001将几何量化。例如,量化器40001可以基于所有点的最小位置值(例如,X、Y和Z轴中的每一个上的最小值)来将点量化。量化器40001执行量化操作:将最小位置值与每个点的位置值之间的差乘以预设量化缩放(scale)值,并且然后通过对通过乘法获得的值进行舍入来寻找最近整数值。因此,一个或更多个点可以具有相同的量化位置(或位置值)。根据实施例的量化器40001基于量化位置执行体素化以重构量化点。如作为包含2D图像/视频信息的最小单元的像素的情况中那样,根据实施例的点云内容(或3D点云视频)的点可以包括在一个或更多个体素中。作为体积和像素的复合体的术语体素指代当基于表示3D空间的轴(例如,X轴、Y轴和Z轴)将3D空间划分成单元(单位=1.0)时生成的3D立方空间。量化器40001可以使3D空间中的点组与体素匹配。根据实施例,一个体素可以仅包括一个点。根据实施例,一个体素可以包括一个或更多个点。为了将一个体素表达为一个点,体素的中心的位置可以基于包括在体素中的一个或更多个点的位置来设置。在这种情况下,包括在一个体素中的所有位置的属性可以被组合并指配给体素。
根据实施例的八叉树分析器40002执行八叉树几何编译(或八叉树编译)以按八叉树结构呈现体素。八叉树结构表示基于八进制树结构与体素匹配的点。
根据实施例的表面近似分析器40003可以分析并近似八叉树。根据实施例的八叉树分析和近似是分析包含多个点的区域以有效地提供八叉树和体素化的过程。
根据实施例的算术编码器40004对八叉树和/或近似八叉树执行熵编码。例如,编码方案包括算术编码。作为编码结果,生成几何比特流。
颜色变换器40006、属性变换器40007、RAHT变换器40008、LOD生成器40009、提升变换器40010、系数量化器40011和/或算术编码器40012执行属性编码。如上所述,一个点可以具有一个或更多个属性。根据实施例的属性编码同样应用于一个点所具有的属性。然而,当属性(例如,颜色)包括一个或更多个元素时,对每个元素独立地应用属性编码。根据实施例的属性编码包括颜色变换编译、属性变换编译、区域自适应分层变换(RAHT)编译、基于插值的分层最近邻居预测(预测变换)编译以及具有更新/提升步骤(提升变换)的基于插值的分层最近邻居预测编译。取决于点云内容,可以选择性地使用上述RAHT编译、预测变换编译和提升变换编译,或者可以使用一个或更多个编译方案的组合。根据实施例的属性编码不限于上述示例。
根据实施例的颜色变换器40006执行变换包括在属性中的颜色值(或纹理)的颜色变换编译。例如,颜色变换器40006可以变换颜色信息的格式(例如,从RGB到YCbCr)。可以根据包括在属性中的颜色值来可选地应用根据实施例的颜色变换器40006的操作。
根据实施例的几何重构器40005重构(解压缩)八叉树和/或近似八叉树。几何重构器40005基于分析点的分布的结果来重构八叉树/体素。重构的八叉树/体素可以被称为重构的几何(恢复的几何)。
根据实施例的属性变换器40007执行属性变换以基于重构的几何和/或不执行几何编码的位置来变换属性。如上所述,因为属性取决于几何,所以属性变换器40007可以基于重构的几何信息来变换属性。例如,基于包括在体素中的点的位置值,属性变换器40007可以变换该位置的点的属性。如上所述,当基于包括在体素中的一个或更多个点的位置来设置体素的中心位置时,属性变换器40007变换一个或更多个点的属性。当执行三联体几何编码时,属性变换器40007可以基于三联体几何编码来变换属性。
属性变换器40007可以通过计算距每个体素的中心的位置(或位置值)特定位置/半径内的邻近点的属性或属性值(例如,每个点的颜色或反射率)的平均来执行属性变换。属性变换器40007可以在计算平均时根据从中心到每个点的距离来应用权重。因此,每个体素具有位置和计算的属性(或属性值)。
属性变换器40007可以基于K-D树或莫顿码(Morton code)搜索存在于距每个体素的中心位置特定位置/半径内的邻近点。K-D树是二叉搜索树,并且支持能够基于位置来管理点的数据结构,使得可以快速地执行最近邻搜索(NNS)。通过将表示所有点的3D位置的坐标(例如,(x,y,z))呈现为比特值并将比特混合来生成莫顿码。例如,当表示点位置的坐标为(5,9,1)时,坐标的比特值为(0101,1001,0001)。根据比特索引按z、y和x的顺序混合比特值产生010001000111。此值被表达为十进制数1095。即,具有坐标(5,9,1)的点的莫顿码值为1095。属性变换器40007可以基于莫顿码值对点进行排序并通过深度优先遍历过程执行NNS。在属性变换操作之后,当在用于属性编译的另一变换过程中需要NNS时,使用K-D树或莫顿码。
如图中所示,变换的属性被输入到RAHT变换器40008和/或LOD生成器40009。
根据实施例的RAHT变换器40008基于重构的几何信息来执行用于预测属性信息的RAHT编译。例如,RAHT变换器40008可以基于与八叉树中更低级别的节点相关联的属性信息来预测八叉树中更高级别的节点的属性信息。
根据实施例的LOD生成器40009生成细节级别(LOD)来执行预测变换编译。根据实施例的LOD是点云内容的细节程度。随着LOD值减小,指示点云内容的细节劣化。随着LOD值增大,指示点云内容的细节增强。点可以按LOD分类。
根据实施例的提升变换器40010执行基于权重来变换点云属性的提升变换编译。如上所述,可以可选地应用提升变换编译。
根据实施例的系数量化器40011基于系数来量化属性编译的属性。
根据实施例的算术编码器40012基于算术编译对量化的属性进行编码。
尽管图中未示出,但图4的点云编码器的元件可以由包括被配置成与包括在点云提供设备中的一个或更多个存储器通信的一个或更多个处理器或集成电路的硬件、软件、固件或其组合实现。一个或更多个处理器可以执行上述图4的点云编码器的元件的操作和/或功能中的至少一个。另外,一个或更多个处理器可以操作或执行用于执行图4的点云编码器的元件的操作和/或功能的软件程序和/或指令的集合。根据实施例的一个或更多个存储器可以包括高速随机存取存储器,或者包括非易失性存储器(例如,一个或更多个磁盘存储设备、闪存设备或其它非易失性固态存储器设备)。
图5示出根据实施例的体素的示例。
图5示出被定位在通过由作为X轴、Y轴和Z轴的三个轴所组成的坐标系表示的3D空间中的体素。如参考图4所述,点云编码器(例如,量化器40001)可以执行体素化。体素指代当基于表示3D空间的轴(例如,X轴、Y轴和Z轴)将3D空间划分成单元(单位=1.0)时生成的3D立方空间。图5示出通过八叉树结构生成的体素的示例,其中由两个极点(0,0,0)和(2d,2d,2d)限定的立方轴对齐边界框被递归地子划分。一个体素包括至少一个点。可以从与体素组的位置关系来估计体素的空间坐标。如上所述,体素具有如2D图像/视频的像素的属性(诸如颜色或反射率)。体素的细节与参考图4描述的那些相同,并且因此省略其描述。
图6示出根据实施例的八叉树和占用码的示例。
如参考图1至图4所描述的,点云内容提供系统(点云视频编码器10002)或点云编码器(例如,八叉树分析器40002)基于八叉树结构来执行八叉树几何编译(或八叉树编译)以有效地管理体素的区域和/或位置。
图6的上部示出八叉树结构。根据实施例的点云内容的3D空间由坐标系的轴(例如,X轴、Y轴和Z轴)表示。通过由两个极点(0,0,0)和(2d,2d,2d)限定的立方轴对齐边界框的递归子划分来创建八叉树结构。这里,2d可以被设置为构成围绕点云内容(或点云视频)的所有点的最小边界框的值。这里,d表示八叉树的深度。d的值在下面的等式中确定。在下面的等式中,(xint n,yint n,zint n)表示量化的点的位置(或位置值)。
如图6的上部的中间所示,整个3D空间可以根据分区被划分成八个空间。每个划分的空间由具有六个面的立方体表示。如图6的右上部所示,八个空间中的每一个基于坐标系的轴(例如,X轴、Y轴和Z轴)再次划分。因此,每个空间被划分成八个更小的空间。所划分的更小的空间也由具有六个面的立方体表示。应用该分区方案,直至八叉树的叶节点变为体素。
图6的下部示出八叉树占用码。生成八叉树的占用码以指示通过划分一个空间而生成的八个划分的空间中的每一个是否包含至少一个点。因此,单个占用码由八个子节点表示。每个子节点表示划分的空间的占用,并且子节点具有1比特的值。因此,占用码被表示为8比特码。即,当与子节点对应的空间中包含至少一个点时,节点被指配值1。当与子节点对应的空间中不包含点(空间为空)时,节点被指配值0。因为图6所示的占用码为00100001,所以指示与八个子节点当中的第三子节点和第八子节点对应的空间均包含至少一个点。如图所示,第三子节点和第八子节点中的每一个具有八个子节点,并且子节点由8比特占用码表示。附图示出第三子节点的占用码为10000111,并且第八子节点的占用码为01001111。根据实施例的点云编码器(例如,算术编码器40004)可以对占用码执行熵编码。为了增加压缩效率,点云编码器可以对占用码执行帧内/帧间编译。根据实施例的接收设备(例如,接收设备10004或点云视频解码器10006)基于占用码来重构八叉树。
根据实施例的点云编码器(例如,图4的点云编码器或八叉树分析器40002)可以执行体素化和八叉树编译以存储点位置。然而,点并不总是均匀分布在3D空间中,并且因此可能存在其中存在较少点的特定区域。因此,对整个3D空间执行体素化是低效的。例如,当特定区域包含很少点时,在该特定区域中不需要执行体素化。
因此,对于上述特定区域(或八叉树的叶节点以外的节点),根据实施例的点云编码器可以跳过体素化并执行直接编译,以直接对包括在特定区域中的点位置进行编译。根据实施例的直接编译点的坐标被称为直接编译模式(DCM)。根据实施例的点云编码器还可以基于表面模型执行三联体几何编码,其要基于体素来重构特定区域(或节点)中的点位置。三联体几何编码是将对象表示为一系列三角形网格的几何编码。因此,点云解码器可以从网格表面生成点云。根据实施例的直接编译和三联体几何编码可以被选择性地执行。另外,根据实施例的直接编译和三联体几何编码可以与八叉树几何编译(或八叉树编译)组合执行。
为了执行直接编译,应该激活要使用直接模式以应用直接编译的选项。要应用直接编译的节点不是叶节点,并且在特定节点内应该存在小于阈值的点。另外,要应用直接编译的点的总数不应超过预设阈值。当满足上述条件时,根据实施例的点云编码器(或算术编码器40004)可以对点位置(或位置值)执行熵编译。
根据实施例的点云编码器(例如,表面近似分析器40003)可以确定八叉树的特定级别(小于八叉树的深度d的级别),并且可以从该级别开始使用表面模型以执行三联体几何编码,以基于体素来重构节点区域中的点位置(三联体模式)。根据实施例的点云编码器可以指定要应用三联体几何编码的级别。例如,当特定级别等于八叉树的深度时,点云编码器不在三联体模式下操作。换言之,仅当指定的级别小于八叉树的深度值时,根据实施例的点云编码器才可以在三联体模式下操作。根据实施例的指定级别的节点的3D立方区域被称为块。一个块可以包括一个或更多个体素。块或体素可以对应于拼块(brick)。几何被表示为每个块内的表面。根据实施例的表面可与块的每个边缘相交至多一次。
一个块具有12个边缘,并且因此一个块中存在至少12个交点。每个交点被称为顶点(或者最高点)。当共享边缘的所有块当中存在与边缘相邻的至少一个占用体素时,检测沿着边缘存在的顶点。根据实施例的占用体素指代包含点的体素。沿着边缘检测到的顶点位置是沿着共享边缘的所有块当中与边缘相邻的所有体素的边缘的平均位置。
一旦检测到顶点,根据实施例的点云编码器就可以对边缘的起点(x,y,z)、边缘的方向向量(Δx,Δy,Δz)和顶点位置值(边缘内的相对位置值)执行熵编码。当应用三联体几何编码时,根据实施例的点云编码器(例如,几何重构器40005)可以通过执行三角形重构、上采样和体素化过程来生成恢复的几何(重构的几何)。
被定位在块的边缘处的顶点确定穿过块的表面。根据实施例的表面是非平面多边形。在三角形重构过程中,基于边缘的起点、边缘的方向向量和顶点的位置值来重构由三角形表示的表面。三角形重构过程通过下述执行:i)计算每个顶点的质心值,ii)从每个顶点值减去中心值,并且iii)估计通过减法获得的值的平方和。
i)ii)/>iii)/>
估计和的最小值,并且根据具有最小值的轴执行投影过程。例如,当元素x是最小时,每个顶点相对于块的中心投影在x轴上,并且投影在(y,z)平面上。当通过(y,z)平面上的投影获得的值为(ai,bi)时,通过atan2(bi,ai)估计θ的值,并且基于θ的值对顶点进行排序。下表示出根据顶点数量创建三角形的顶点组合。顶点从1至n排序。下表示出对于四个顶点,可以根据顶点组合构造两个三角形。第一个三角形可以由排序的顶点当中的顶点1、2和3组成,并且第二个三角形可以由排序的顶点当中的顶点3、4和1组成。
表2-1.从排序为1,…,n的顶点形成的三角形
/>
执行上采样过程以沿着三角形的边缘在中间添加点,并且执行体素化。所添加的点基于上采样因子和块的宽度来生成。添加的点被称为细化顶点。根据实施例的点云编码器可以将细化顶点体素化。另外,点云编码器可以基于体素化的位置(或位置值)来执行属性编码。
图7示出根据实施例的邻居节点图案的示例。
为了增加点云视频的压缩效率,根据实施例的点云编码器可以基于上下文自适应算术编译来执行熵编译。
如参考图1至图6所描述的,点云内容提供系统或点云编码器(例如,点云视频编码器10002、图4的点云编码器或算术编码器40004)可以立即对占用码执行熵编译。另外,点云内容提供系统或点云编码器可以基于当前节点的占用码和邻近节点的占用来执行熵编码(帧内编码),或者基于先前帧的占用码执行熵编码(帧间编码)。根据实施例的帧表示同时生成的点云视频的集合。根据实施例的帧内编码/帧间编码的压缩效率可以取决于所参考的邻近节点的数量。当比特增加时,运算变得复杂,但是编码可以偏向一侧,这可以增加压缩效率。例如,当给出3比特上下文时,需要使用23=8种方法来执行编译。为编译划分的部分影响实现复杂度。因此,有必要满足适当级别的压缩效率和复杂度。
图7图示基于邻居节点的占用来获得占用图案的过程。根据实施例的点云编码器确定八叉树的每个节点的邻居节点的占用并且获得邻居图案的值。邻居节点图案被用于推断节点的占用图案。图7的左部分示出与节点对应的立方体(被定位在中间的立方体)以及与该立方体共享至少一个面的六个立方体(邻居节点)。图中所示的节点是相同深度的节点。图中所示的数字分别表示与六个节点关联的权重(1、2、4、8、16和32)。根据邻近节点的位置依次指配权重。
图7的右部分示出邻居节点图案值。邻居节点图案值是乘以占用邻居节点(具有点的邻居节点)的权重的值之和。因此,邻居节点图案值为0至63。当邻居节点图案值为0时,指示节点的邻居节点当中不存在具有点的节点(无占用节点)。当邻居节点图案值为63时,指示所有邻居节点均是占用节点。如图所示,因为指配有权重1、2、4和8的邻居节点是占用节点,所以邻居节点图案值为15,即1、2、4和8之和。点云编码器可以根据邻居节点图案值执行编译(例如,当邻居节点图案值为63时,可以执行64种类型的编译)。根据实施例,点云编码器可以通过改变邻居节点图案值(例如,基于将64改变为10或6的表)来减少编译复杂度。
图8图示根据实施例的每个LOD中的点配置的示例。
如参考图1至图7描述的,在执行属性编码之前,编码的几何被重构(解压缩)。当应用直接编译时,几何重构操作可以包括改变直接编译的点的放置(例如,将直接编译的点放置在点云数据前面)。当应用三联体几何编码时,通过三角形重构、上采样和体素化来执行几何重构过程。因为属性取决于几何,所以基于重构的几何来执行属性编码。
点云编码器(例如,LOD生成器40009)可以按LOD对点进行分类(重新组织)。图中示出与LOD对应的点云内容。图中最左侧图片表示原始点云内容。图中左起第二个图片表示最低LOD中的点分布,并且图中最右侧图片表示最高LOD中的点分布。即,最低LOD中的点是稀疏分布的,并且最高LOD中的点是密集分布的。即,随着LOD在图底部所指示的箭头所指出的方向上升高,点之间的空间(或距离)变窄。
图9图示根据实施例的用于每个LOD的点配置的示例。
如参考图1至图8所描述的,点云内容提供系统或点云编码器(例如,点云视频编码器10002、图4的点云编码器或LOD生成器40009)可以生成LOD。通过根据设置的LOD距离值(或欧几里得距离的集合)将点重新组织为细化级别的集合来生成LOD。LOD生成过程不仅由点云编码器执行,而且由点云解码器执行。
图9的上部示出分布在3D空间中的点云内容的点的示例(P0至P9)。在图9中,原始顺序表示在LOD生成之前点P0至P9的顺序。在图9中,基于LOD的顺序表示根据LOD生成的点的顺序。点按LOD重新组织。另外,高LOD包含属于更低LOD的点。如图9所示,LOD0包含P0、P5、P4和P2。LOD1包含LOD0的点、P1、P6和P3。LOD2包含LOD0的点、LOD1的点、P9、P8和P7。
如参考图4所描述的,根据实施例的点云编码器可以选择性地或组合地执行预测变换编译、提升变换编译和RAHT变换编译。
根据实施例的点云编码器可为点生成预测器以执行用于设置每个点的预测属性(或预测属性值)的预测变换编译。即,可以为N个点生成N个预测器。根据实施例的预测器可以基于每个点的LOD值、关于存在于每个LOD的设置距离内的邻近点的索引信息以及到邻近点的距离来计算权重(=1/距离)。
根据实施例的预测属性(或属性值)被设置为通过将每个点的预测器中设置的邻居点的属性(或属性值)(例如,颜色、反射率等)乘以基于到每个邻居点的距离计算的权重(或权重值)而获得的值的平均。根据实施例的点云编码器(例如,系数量化器40011)可以量化和逆量化通过从每个点的属性(属性值)减去预测属性(属性值)而获得的残差(可以称为残差属性、残差属性值或属性预测残差)。量化过程如下表所示配置。
表 属性预测残差量化伪代码
int PCCQuantization(int value,int quantStep){
if(value>=0){
return floor(value/quantStep+1.0/3.0);
}else{
return-floor(-value/quantStep+1.0/3.0);
}
}
表 属性预测残差逆量化伪代码
int PCCInverseQuantization(int value,int quantStep){
if(quantStep==0){
return value;
}else{
return value*quantStep;
}
}
当每个点的预测器具有邻居点时,根据实施例的点云编码器(例如,算术编码器40012)可以如上所述对量化和逆量化的残差值执行熵编译。当每个点的预测器没有邻居点时,根据实施例的点云编码器(例如,算术编码器40012)可以对对应点的属性执行熵编译,而不执行上述操作。
根据实施例的点云编码器(例如,提升变换器40010)可以生成每个点的预测器,设置计算的LOD并在预测器中注册邻居点,并且根据到邻居点的距离来设置权重,以执行提升变换编译。根据实施例的提升变换编译类似于上述预测变换编译,但不同之处在于,对属性值累积地应用权重。根据实施例对属性值累积地应用权重的过程配置如下。
1)创建用于存储每个点的权重值的阵列量化权重(QW)。QW的所有元素的初始值均为1.0。将预测器中注册的邻居节点的预测器索引的QW值乘以当前点的预测器的权重,并将通过乘法获得的值相加。
2)提升预测过程:从现有属性值减去通过将点的属性值乘以权重而获得的值,以计算预测属性值。
3)创建称为updateweight和update的临时阵列,并且将临时阵列初始化为零。
4)将通过将针对所有预测器计算的权重乘以存储在与预测器索引对应的QW中的权重而计算的权重累加到updateweight阵列,作为邻居节点的索引。将通过将邻居节点索引的属性值乘以所计算的权重而获得的值累加到update阵列。
5)提升更新过程:将所有预测器的update阵列的属性值除以预测器索引的updateweight阵列的权重值,并将现有属性值与通过除法获得的值相加。
6)针对所有预测器通过将通过提升更新过程更新的属性值乘以通过提升预测过程更新的权重(存储在QW中)来计算预测属性。根据实施例的点云编码器(例如,系数量化器40011)量化预测属性值。另外,点云编码器(例如,算术编码器40012)对量化属性值执行熵编码。
根据实施例的点云编码器(例如,RAHT变换器40008)可以执行RAHT变换编译,其中使用与八叉树中更低级别的节点相关联的属性来预测更高级别的节点的属性。RAHT变换编译是通过八叉树后向扫描进行属性帧内编译的示例。根据实施例的点云编码器从体素开始扫描整个区域并且在每一步重复将体素合并为更大的块的合并过程,直至到达根节点。仅对占用节点执行根据实施例的合并过程。不对空节点执行合并过程。对就在空节点上方的上节点执行合并过程。
下面的等式表示RAHT变换矩阵。在该等式中,表示级别l的体素的平均属性值。/>可以基于/>和/>来计算。
和/>的权重为/>和/>
这里,是低通值并且在下一个更高级别的合并过程中使用。/>表示高通系数。每一步的高通系数被量化并经受熵编译(例如,由算术编码器400012编码)。权重被计算为/>通过/>和/>创建根节点如下。
图10图示根据实施例的点云解码器。
图10中图示的点云解码器是图1中描述的点云视频解码器10006的示例,并且可以执行与图1所图示的点云视频解码器10006的操作相同或相似的操作。如图所示,点云解码器可以接收包含在一个或更多个比特流中的几何比特流和属性比特流。点云解码器包括几何解码器和属性解码器。几何解码器对几何比特流执行几何解码并输出解码的几何。属性解码器基于解码的几何和属性比特流执行属性解码,并且输出解码的属性。解码的几何和解码的属性被用于重构点云内容(解码的点云)。
图11图示根据实施例的点云解码器。
图11所图示的点云解码器是图10所图示的点云解码器的示例,并且可以执行解码操作,其是在图1至图9中图示的点云编码器的编码操作的逆过程。
如参考图1和图10所描述的,点云解码器可以执行几何解码和属性解码。几何解码在属性解码之前执行。
根据实施例的点云解码器包括算术解码器(算术解码)11000、八叉树合成器(合成八叉树)11001、表面近似合成器(合成表面近似)11002和几何重构器(重构几何)11003、坐标逆变换器(逆变换坐标)11004、算术解码器(算术解码)11005、逆量化器(逆量化)11006、RAHT变换器11007、LOD生成器(生成LOD)11008、逆提升器(逆提升)11009和/或颜色逆变换器(逆变换颜色)11010。
算术解码器11000、八叉树合成器11001、表面近似合成器11002、几何重构器11003和坐标逆变换器11004可以执行几何解码。根据实施例的几何解码可以包括直接编译和三联体几何解码。直接编译和三联体几何解码选择性地应用。几何解码不限于上述示例,并且作为参考图1至图9描述的几何编码的逆过程执行。
根据实施例的算术解码器11000基于算术编译将所接收的几何比特流解码。算术解码器11000的操作对应于算术编码器40004的操作的逆过程。
根据实施例的八叉树合成器11001可以通过从解码的几何比特流获取占用码(或关于作为解码结果取得的几何的信息)来生成八叉树。占用码如参考图1至图9详细描述那样配置。
当应用三联体几何编码时,根据实施例的表面近似合成器11002可以基于解码的几何和/或生成的八叉树来合成表面。
根据实施例的几何重构器11003可以基于表面和/或解码的几何重新生成几何。如参考图1至图9所描述的,选择性地应用直接编译和三联体几何编码。因此,几何重构器11003直接导入关于对其应用直接编译的点的位置信息并将其相加。当应用三联体几何编码时,几何重构器11003可以通过执行几何重构器40005的重构操作,例如,三角形重构、上采样和体素化,来重构几何。细节与参考图6描述的那些相同,并且因此省略其描述。重构的几何可以包括不包含属性的点云图片或帧。
根据实施例的坐标逆变换器11004可以通过基于重构的几何变换坐标来获取点位置。
算术解码器11005、逆量化器11006、RAHT变换器11007、LOD生成器11008、逆提升器11009和/或颜色逆变换器11010可以执行参考图10描述的属性解码。根据实施例的属性解码包括区域自适应分层变换(RAHT)解码、基于插值的分层最近邻居预测(预测变换)解码以及具有更新/提升步骤的基于插值的分层最近邻居预测(提升变换)解码。上述三个解码方案可以可选择性地使用,或者可以使用一个或更多个解码方案的组合。根据实施例的属性解码不限于上述示例。
根据实施例的算术解码器11005通过算术编译对属性比特流进行解码。
根据实施例的逆量化器11006逆量化关于解码的属性比特流或作为解码结果取得的属性的信息,并且输出逆量化的属性(或属性值)。可以基于点云编码器的属性编码选择性地应用逆量化。
根据实施例,RAHT变换器11007、LOD生成器11008和/或逆提升器11009可以处理重构的几何和逆量化的属性。如上所述,RAHT变换器11007、LOD生成器11008和/或逆提升器11009可以选择性地执行与点云编码器的编码对应的解码操作。
根据实施例的颜色逆变换器11010执行逆变换编译以逆变换包括在解码的属性中的颜色值(或纹理)。可以基于点云编码器的颜色变换器40006的操作选择性地执行颜色逆变换器11010的操作。
尽管图中未示出,图11的点云解码器的元件可以由包括被配置成与包括在点云提供设备中的一个或更多个存储器通信的一个或更多个处理器或集成电路的硬件、软件、固件或其组合实现。一个或更多个处理器可以执行上述图11的点云解码器的元件的操作和/或功能中的至少一个或更多个。另外,一个或更多个处理器可以操作或执行用于执行图11的点云解码器的元件的操作和/或功能的软件程序和/或指令的集合。
图12图示根据实施例的发送设备。
图12所示的发送设备是图1的发送设备10000(或图4的点云编码器)的示例。图12所图示的发送设备可以执行与参考图1至图9描述的点云编码器的那些相同或相似的一个或更多个操作和方法。根据实施例的发送设备可以包括数据输入单元12000、量化处理器12001、体素化处理器12002、八叉树占用码生成器12003、表面模型处理器12004、帧内/帧间编译处理器12005、算术编译器12006、元数据处理器12007、颜色变换处理器12008、属性变换处理器12009、预测/提升/RAHT变换处理器12010、算术编译器12011和/或发送处理器12012。
根据实施例的数据输入单元12000接收或获取点云数据。数据输入单元12000可以执行与点云视频获取器10001的操作和/或获取方法(或参考图2描述的获取过程20000)相同或相似的操作和/或获取方法。
数据输入单元12000、量化处理器12001、体素化处理器12002、八叉树占用码生成器12003、表面模型处理器12004、帧内/帧间编译处理器12005和算术编译器12006执行几何编码。根据实施例的几何编码与参考图1至图9描述的几何编码相同或相似,并且因此省略其详细描述。
根据实施例的量化处理器12001量化几何(例如,点的位置值)。量化处理器12001的操作和/或量化与参考图4描述的量化器40001的操作和/或量化相同或相似。细节与参考图1至图9描述的那些相同。
根据实施例的体素化处理器12002将点的量化的位置值体素化。体素化处理器120002可以执行与参考图4描述的量化器40001的操作和/或体素化过程相同或相似的操作和/或过程。细节与参考图1至图9描述的那些相同。
根据实施例的八叉树占用码生成器12003基于八叉树结构对点的体素化的位置执行八叉树编译。八叉树占用码生成器12003可以生成占用码。八叉树占用码生成器12003可以执行与参考图4和图6描述的点云编码器(或八叉树分析器40002)的操作和/或方法相同或相似的操作和/或方法。细节与参考图1至图9描述的那些相同。
根据实施例的表面模型处理器12004可以基于表面模型执行三联体几何编码以基于体素重构特定区域(或节点)中的点位置。表面模型处理器12004可以执行与参考图4描述的点云编码器(例如,表面近似分析器40003)的操作和/或方法相同或相似的操作和/或方法。细节与参考图1至图9描述的那些相同。
根据实施例的帧内/帧间编译处理器12005可以对点云数据执行帧内/帧间编译。帧内/帧间编译处理器12005可以执行与参考图7描述的帧内/帧间编译相同或相似的编译。细节与参考图7描述的那些相同。根据实施例,帧内/帧间编译处理器12005可以被包括在算术编译器12006中。
根据实施例的算术编译器12006对点云数据的八叉树和/或近似八叉树执行熵编码。例如,编码方案包括算术编码。算术编译器12006执行与算术编码器40004的操作和/或方法相同或相似的操作和/或方法。
根据实施例的元数据处理器12007处理关于点云数据的元数据,例如,设定值,并将其提供给诸如几何编码和/或属性编码的必要处理过程。另外,根据实施例的元数据处理器12007可以生成和/或处理与几何编码和/或属性编码有关的信令信息。根据实施例的信令信息可以与几何编码和/或属性编码分开编码。根据实施例的信令信息可以被交织。
颜色变换处理器12008、属性变换处理器12009、预测/提升/RAHT变换处理器12010和算术编译器12011执行属性编码。根据实施例的属性编码与参考图1至图9描述的属性编码相同或相似,并且因此省略其详细描述。
根据实施例的颜色变换处理器12008执行颜色变换编译以变换包括在属性中的颜色值。颜色变换处理器12008可以基于重构的几何来执行颜色变换编译。重构的几何与参考图1至图9描述的相同。另外,其执行与参考图4描述的颜色变换器40006的操作和/或方法相同或相似的操作和/或方法。省略其详细描述。
根据实施例的属性变换处理器12009执行属性变换以基于重构的几何和/或对其不执行几何编码的位置来变换属性。属性变换处理器12009执行与参考图4描述的属性变换器40007的操作和/或方法相同或相似的操作和/或方法。省略其详细描述。根据实施例的预测/提升/RAHT变换处理器12010可以通过RAHT编译、预测变换编译和提升变换编译中的任一种或组合对变换的属性进行编译。预测/提升/RAHT变换处理器12010执行与参考图4描述的RAHT变换器40008、LOD生成器40009和提升变换器40010的操作相同或相似的至少一个操作。另外,预测变换编译、提升变换编译和RAHT变换编译与参考图1至图9描述的那些相同,并且因此省略其详细描述。
根据实施例的算术编译器12011可以基于算术编译对编译的属性进行编码。算术编译器12011执行与算术编码器400012的操作和/或方法相同或相似的操作和/或方法。
根据实施例的发送处理器12012可以发送包含编码的几何和/或编码的属性和元数据信息的每个比特流,或者发送配置有编码的几何和/或编码的属性和元数据信息的一个比特流。当根据实施例的编码的几何和/或编码的属性和元数据信息被配置成一个比特流时,比特流可以包括一个或更多个子比特流。根据实施例的比特流可以包含信令信息和切片数据,该信令信息包括用于序列级别信令的序列参数集(SPS)、用于几何信息编译信令的几何参数集(GPS)、用于属性信息编译信令的属性参数集(APS)和用于图块级别信令的图块参数集(TPS)。切片数据可以包括关于一个或更多个切片的信息。根据实施例的一个切片可以包括一个几何比特流Geom00以及一个或更多个属性比特流Attr00和Attr10
切片指代表示编译的点云帧的整体或部分的一系列语法元素。
根据实施例的TPS可以包括关于一个或更多个图块中的每个图块的信息(例如,关于边界框的坐标信息和高度/大小信息)。几何比特流可以包含报头和有效负载。根据实施例的几何比特流的报头可以包含GPS中所包括的参数集标识符(geom_parameter_set_id)、图块标识符(geom_tile_id)和切片标识符(geom_slice_id),以及关于包含在有效负载中的数据的信息。如上所述,根据实施例的元数据处理器12007可以生成和/或处理信令信息并将其发送到发送处理器12012。根据实施例,执行几何编码的元件和执行属性编码的元件可以如虚线所指示彼此共享数据/信息。根据实施例的发送处理器12012可以执行与发射器10003的操作和/或发送方法相同或相似的操作和/或发送方法。细节与参考图1和图2描述的那些相同,并且因此省略其描述。
图13图示根据实施例的接收设备。
图13所图示的接收设备是图1的接收设备10004(或图10和图11的点云解码器)的示例。图13所图示的接收设备可以执行与参考图1至图11描述的点云解码器的那些相同或相似的一个或更多个操作和方法。
根据实施例的接收设备可以包括接收器13000、接收处理器13001、算术解码器13002、基于占用码的八叉树重构处理器13003、表面模型处理器(三角形重构、上采样、体素化)13004、逆量化处理器13005、元数据解析器13006、算术解码器13007、逆量化处理器13008、预测/提升/RAHT逆变换处理器13009、颜色逆变换处理器13010和/或渲染器13011。根据实施例的每个解码元件可以执行根据实施例的对应编码元件的操作的逆过程。
根据实施例的接收器13000接收点云数据。接收器13000可以执行与图1的接收器10005的操作和/或接收方法相同或相似的操作和/或接收方法。省略其详细描述。
根据实施例的接收处理器13001可以从所接收的数据获取几何比特流和/或属性比特流。接收处理器13001可以被包括在接收器13000中。
算术解码器13002、基于占用码的八叉树重构处理器13003、表面模型处理器13004和逆量化处理器13005可以执行几何解码。根据实施例的几何解码与参考图1至图10描述的几何解码相同或相似,并且因此省略其详细描述。
根据实施例的算术解码器13002可以基于算术编译对几何比特流进行解码。算术解码器13002执行与算术解码器11000的操作和/或编译相同或相似的操作和/或编译。
根据实施例的基于占用码的八叉树重构处理器13003可以通过从解码的几何比特流(或关于作为解码结果取得的几何的信息)获取占用码来重构八叉树。基于占用码的八叉树重构处理器13003执行与八叉树合成器11001的操作和/或八叉树生成方法相同或相似的操作和/或方法。当应用三联体几何编码时,根据实施例的表面模型处理器13004可以基于表面模型方法来执行三联体几何解码和相关几何重构(例如,三角形重构、上采样、体素化)。表面模型处理器13004执行与表面近似合成器11002和/或几何重构器11003的操作相同或相似的操作。
根据实施例的逆量化处理器13005可以逆量化解码的几何。
根据实施例的元数据解析器13006可以解析包含在所接收的点云数据中的元数据,例如,设定值。元数据解析器13006可以将元数据传递给几何解码和/或属性解码。元数据与参考图12描述的元数据相同,并且因此省略其详细描述。
算术解码器13007、逆量化处理器13008、预测/提升/RAHT逆变换处理器13009和颜色逆变换处理器13010执行属性解码。属性解码与参考图1至图10描述的属性解码相同或相似,并且因此省略其详细描述。
根据实施例的算术解码器13007可以通过算术编译对属性比特流进行解码。算术解码器13007可以基于重构的几何对属性比特流进行解码。算术解码器13007执行与算术解码器11005的操作和/或编译相同或相似的操作和/或编译。
根据实施例的逆量化处理器13008可以逆量化解码的属性比特流。逆量化处理器13008执行与逆量化器11006的操作和/或逆量化方法相同或相似的操作和/或方法。
根据实施例的预测/提升/RAHT逆变换处理器13009可以处理重构的几何和逆量化的属性。预测/提升/RAHT逆变换处理器13009执行与RAHT变换器11007、LOD生成器11008和/或逆提升器11009的操作和/或解码相同或相似的一个或更多个操作和/或解码。根据实施例的颜色逆变换处理器13010执行逆变换编译以逆变换包括在解码的属性中的颜色值(或纹理)。颜色逆变换处理器13010执行与颜色逆变换器11010的操作和/或逆变换编译相同或相似的操作和/或逆变换编译。根据实施例的渲染器13011可以渲染点云数据。
图14图示根据实施例的结合点云数据发送/接收方法/设备可操作的示例性结构。
图14的结构表示服务器1460、机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440、家用电器1450和/或头戴式显示器(HMD)1470中的至少一个连接到云网络1400的配置。机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440或家用电器1450被称为设备。此外,XR设备1430可以对应于根据实施例的点云数据(PCC)设备或者可操作上连接到PCC设备。
云网络1400可以表示构成云计算基础设施的一部分或存在于云计算基础设施中的网络。这里,云网络1400可以使用3G网络、4G或长期演进(LTE)网络或5G网络来配置。
服务器1460可以经由云网络1400连接到机器人1410、自驾驶车辆1420、XR设备1430、智能电话1440、家用电器1450和/或HMD 1470中的至少一个,并且可以辅助连接的设备1410至1470的至少一部分处理。
HMD 1470表示根据实施例的XR设备和/或PCC设备的实现类型之一。根据实施例的HMD型设备包括通信单元、控制单元、存储器、I/O单元、传感器单元和电源单元。
以下,将描述应用了上述技术的设备1410至1450的各种实施例。图14所图示的设备1410至1450可以可操作地连接/耦合到根据上述实施例的点云数据发送和接收设备。
<PCC+XR>
XR/PCC设备1430可以采用PCC技术和/或XR(AR+VR)技术,并且可以被实现为HMD、提供在车辆中的平视显示器(HUD)、电视、移动电话、智能电话、计算机、可穿戴设备、家用电器、数字标牌、车辆、固定机器人或移动机器人。
XR/PCC设备1430可以分析通过各种传感器或从外部设备获取的3D点云数据或图像数据并生成关于3D点的位置数据和属性数据。由此,XR/PCC设备1430可以获取关于周围空间或真实对象的信息,并且渲染和输出XR对象。例如,XR/PCC设备1430可以使包括关于所识别的对象的辅助信息的XR对象与所识别的对象匹配并输出匹配的XR对象。
<PCC+XR+移动电话>
XR/PCC设备1430可以通过应用PCC技术实现为移动电话1440。
移动电话1440可以基于PCC技术解码和显示点云内容。
<PCC+自驾驶+XR>
自驾驶车辆1420可以通过应用PCC技术和XR技术被实现为移动机器人、车辆、无人驾驶飞行器等。
对其应用XR/PCC技术的自驾驶车辆1420可以表示提供有用于提供XR图像的装置的自驾驶车辆,或者作为XR图像中的控制/交互目标的自驾驶车辆。具体地,作为XR图像中的控制/交互目标,自驾驶车辆1420可与XR设备1430相区分并且可以与其可操作地连接。
具有用于提供XR/PCC图像的装置的自驾驶车辆1420可以从包括相机的传感器获取传感器信息,并且基于所获取的传感器信息来输出所生成的XR/PCC图像。例如,自驾驶车辆1420可以具有HUD并向其输出XR/PCC图像,从而向乘客提供与真实对象或呈现在屏幕上的对象对应的XR/PCC对象。
当XR/PCC对象被输出到HUD时,可以输出XR/PCC对象的至少一部分以与乘客的眼睛所指向的真实对象重叠。另一方面,当XR/PCC对象输出在提供在自驾驶车辆内的显示器上时,可以输出XR/PCC对象的至少一部分以与屏幕上的对象重叠。例如,自驾驶车辆1220可以输出与诸如道路、另一车辆、交通灯、交通标志、两轮车、行人和建筑物的对象对应的XR/PCC对象。
根据实施例的虚拟现实(VR)技术、增强现实(AR)技术、混合现实(MR)技术和/或点云压缩(PCC)技术适用于各种设备。
换言之,VR技术是仅提供真实世界对象、背景等的CG图像的显示技术。另一方面,AR技术指代在真实对象的图像上示出虚拟创建的CG图像的技术。MR技术与上述AR技术的相似之处在于,要示出的虚拟对象与真实世界混合和组合。然而,MR技术与AR技术的不同之处在于,AR技术在真实对象和作为CG图像创建的虚拟对象之间明确区分并且使用虚拟对象作为真实对象的补充对象,而MR技术将虚拟对象视为具有与真实对象等同的特性的对象。更具体地,MR技术应用的示例是全息服务。
最近,VR、AR和MR技术有时被称为扩展现实(XR)技术,而非彼此明确区分。因此,本公开的实施例适用于VR、AR、MR和XR技术中的任何一种。基于PCC、V-PCC和G-PCC技术的编码/解码适用于这种技术。
根据实施例的PCC方法/设备可以被应用于提供自驾驶服务的车辆。
提供自驾驶服务的车辆连接到PCC设备以进行有线/无线通信。
当根据实施例的点云数据(PCC)发送/接收设备连接到车辆以进行有线/无线通信时,设备可以接收/处理与可与自驾驶服务一起提供的AR/VR/PCC服务有关的内容数据,并将其发送到车辆。在PCC发送/接收设备安装在车辆上的情况下,PCC发送/接收设备可以根据通过用户接口设备输入的用户输入信号接收/处理与AR/VR/PCC服务有关的内容数据并将其提供给用户。根据实施例的车辆或用户接口设备可以接收用户输入信号。根据实施例的用户输入信号可以包括指示自驾驶服务的信号。
根据实施例的点云数据发送方法/设备被解释为指代图1中的发送设备10000、点云视频编码器10002、以及发送器10003、图2中的获取20000/编码20001/发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图33至图36的比特流和参数生成、图37和图40至图42中的编码、图43中的发送方法等等的术语。
根据实施例的点云数据接收方法/设备可以被解释为指代图1中的接收设备10004、接收器10005、以及点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27到图29中的解码、图33至图36中的比特流解析、图38中的解码、图40至图42中的解码、图44中的接收方法等等。
根据实施例的用于发送/接收点云数据的方法/设备可以称为根据实施例的方法/设备。
根据实施例,构成点云数据的几何数据、几何信息、位置信息等等被解释为具有相同的含义。构成点云数据的属性数据、属性信息等等被解释为具有相同的含义。
根据实施例的方法/设备可以提供用于控制切片中的点云密度的方法。
实施例提供一种用于在必要时由于发送和接收点云数据时的接收器性能或发送速度而有效地支持对部分数据进行选择性解码的方法。在所提出的方法中,通过将在数据单元中递送的几何和属性数据划分为诸如几何八叉树和细节级别(LoD)的语义单元在比特流单元中可以选择必要的信息或去除不必要的信息。
实施例涉及用于配置由点云组成的数据结构的技术。具体地,实施例公开了一种用于有效地传输基于层配置的PCC数据的打包和信令方法,并且提出将该打包和信令方法应用于基于可扩展PCC的服务的方法。具体地,实施例提出一种当直接压缩模式被用于位置压缩时配置切片片段并发送和接收切片片段以更适合可扩展PCC服务的方法。特别地,实施例提出用于有效地存储和发送具有宽分布和高点密度的大量点云数据的压缩结构。
参考图4和图11,点云数据由每个数据的位置(例如,XYZ坐标)和属性(例如,颜色、反射率、强度、灰度、不透明度等)组成。在点云压缩(PCC)中,执行基于八叉树的压缩以有效地压缩三维空间中不均匀分布的分布特性,并基于此压缩属性信息。图4和图11是用于PCC的发送端和接收端的流程图。根据实施例的操作可以由在PCC的发送侧和接收侧的每个组件来处理。
图15图示根据实施例的点云数据的编码、发送和解码的过程。
图15的每个组件可以对应于硬件、软件、处理器和/或其组合。
点云编码器15000是执行根据实施例的发送方法的发送设备,并且可以可扩展地编码和发送点云数据。
点云解码器15010是执行根据实施例的接收方法的接收设备,并且可以可扩展地解码点云数据。
由编码器15000接收的源数据可以包括几何数据和/或属性数据。
编码器15000可扩展地编码点云数据,但不立即生成部分PCC比特流。相反,当它接收到完整的几何数据和完整的属性数据时,它可以将数据存储在连接到编码器的存储器中。然后,编码器可以执行用于部分编码的转码,并且生成并发送部分PCC比特流。解码器15010可以接收并解码部分PCC比特流以重构部分几何和/或部分属性。
一旦接收到完整的几何和完整的属性,编码器15000可以将数据存储在连接到编码器的存储器中,并且利用低量化参数(QP)对点云数据进行转码以生成并发送完整的PCC比特流。解码器15010可以接收并解码完整的PCC比特流以重构完整的几何和/或完整的属性。解码器15010可以通过数据选择从完整的PCC比特流中选择部分几何和/或部分属性。
根据实施例的方法/设备通过将作为点云数据的关于数据点的位置信息和诸如颜色/亮度/反射率的特征信息划分为几何信息和属性信息来压缩和发送点云数据。在这种情况下,可以根据细节程度来配置具有层的八叉树结构,或者可以根据细节级别(LoD)来配置PCC数据。然后,可以基于配置的结构或数据来执行可扩展的点云数据编译和表示。在这种情况下,由于接收器的性能或传输速率,可能仅解码或表示点云数据的一部分。
在此过程中,根据实施例的方法/设备可以事先移除不必要的数据。换句话说,当仅需要发送可扩展PCC比特流的一部分时(即,在可扩展解码中仅对一些层进行解码),无法仅选择并发送必要的部分。因此,1)在解码之后需要对必要的部分进行重编码(15020),或者2)接收器必须在将整个数据传输到其之后选择性地应用操作(15030)。然而,在情况1)中,由于解码和重编码的时间,可能会发生延迟(15020)。在情况2)中,带宽效率可能由于传输不必要的数据而退化。此外,当使用固定带宽时,可能需要降低数据质量以进行传输(15030)。
因此,根据实施例的方法/设备可以定义点云数据的切片分段结构,并且用信号发送用于可扩展传输的可扩展层和切片结构。
在实施例中,为了确保高效的比特流递送和解码,可以将比特流划分成要处理的特定单元。
对于基于八叉树的几何压缩,根据实施例的方法/设备可以一起使用基于熵的编译和直接编译。在这种情况下,需要有效利用可扩展性的切片配置。
根据实施例的单元可以被称为LOD、层、切片等。LOD是与属性数据编译中的LOD相同的术语,但可以意指用于比特流的分层结构的数据单元。它可以是基于点云数据的分层结构对应于一个深度或两个或更多个深度的捆绑的概念,例如,八叉树或多树的深度(级别)。类似地,层被提供来生成子比特流的单元,并且是对应于一个深度或者两个或更多个深度的捆绑的概念,并且可以对应于一个LOD或者两个或更多个LOD。另外,切片是用于配置子比特流的单元的单元,并且可以对应于一个深度、一个深度的一部分或者两个或更多个深度。此外,它可以对应于一个LOD、一个LOD的一部分、或者两个或更多个LOD。根据实施例,LOD、层和切片可以彼此对应,或者LOD、层和切片之一可以被包括在另一个中。此外,根据实施例的单元可以包括LOD、层、切片、层组或子组,并且可以被称为彼此的相互补充。
另外,由于应处理大量比特流来访问感兴趣的区域,具有分布广和密度点高的大型点云可能会引起时延问题。实施例可以解决这些问题。例如,实施例可以包括基于感兴趣的区域选择性地编译和发送切片的方法、考虑云数据的密度来生成切片的方法、用信号发送固定子组大小、固定子组大小加子组划分的方法、基于旋转的子组划分等。
图16示出根据实施例的基于层的点云数据配置以及几何和属性比特流的结构。
根据实施例的发送方法/设备可以配置如图16所示的基于层的点云数据并且对点云数据进行编码和解码。
实施例涉及通过选择性地发送和解码按层配置的点云数据的比特流单元中的数据来进行有效传输和解码。
点云数据的分层可以基于应用领域而具有在SNR、空间分辨率、颜色、时间频率、比特深度等方面的层结构,并且可以基于八叉树结构或LoD结构在数据密度增加的方向上构造层。
根据实施例的方法/设备可以基于如图16所示的分层来配置、编码和解码几何比特流和属性比特流。
根据实施例的发送设备/编码器通过点云压缩获取的比特流可以根据数据的类型被划分为几何数据比特流和属性数据比特流并被发送。
根据实施例的每个比特流可以由切片组成。无论层信息或LoD信息如何,几何数据比特流和属性数据比特流均可以被配置为一个切片并被递送。在这种情况下,当仅使用层或LoD的一部分时,应执行下述操作:1)对比特流进行解码,2)仅选择期望的部分并移除不需要的部分,以及3)仅基于必要的信息再次执行编码。
图17示出根据实施例的比特流配置。
根据实施例的发送方法/设备可以生成如图17所示的比特流,并且根据实施例的接收方法/设备可以对包括在如图17所示的比特流中的点云数据进行解码。
根据实施例的比特流配置
在实施例中,为了避免不必要的中间过程,比特流可以被划分为层(或LoD)并被发送。
例如,在基于LoD的PCC结构中,更低的LoD被包括在更高的LoD中。在当前LoD中包括但未在前一LoD中包括的信息,即,每个LoD中新包括的信息可以被称为R(Rest)。如图17所示,初始LoD信息和新包括在每个LoD中的信息R可以被划分并在每个独立单元中发送。
根据实施例的发送方法/设备可以对几何数据进行编码并生成几何比特流。可以为每个LOD或层配置几何比特流。几何比特流可以包括用于每个LOD或层的报头(几何报头)。报头可以包括用于下一个LOD或下一层的参考信息。当前LOD(层)可以进一步包括在先前LOD(层)中未包括的信息R(几何数据)。
根据实施例的接收方法/设备可以对属性数据进行编码并生成属性比特流。可以为每个LOD或层配置属性比特流,并且属性比特流可以包括用于每个LOD或层的报头(属性报头)。报头可以包括用于下一个LOD或下一层的参考信息。当前LOD(层)可以进一步包括先前LOD(层)中未包括的信息R(属性数据)。
根据实施例的接收方法/设备可以接收由LOD或层组成的比特流并且仅有效地解码必要的数据而无需复杂的中间处理。
图18图示根据实施例的比特流排序方法。
根据实施例的方法/设备可以对图18中所示的比特流进行排序。
根据实施例的比特流排序方法
在发送比特流时,根据实施例的发送方法/设备可以串行地发送几何和属性,如图18所示。在这种情况下,取决于数据的类型,可以首先发送整个几何信息(几何数据),并且然后可以发送属性信息(属性数据)。在这种情况下,可以基于发送的比特流信息来快速重构几何信息。
在图18的(a)中,例如,包含几何数据的层(LOD)可以首先定位在比特流中,并且包含属性数据的层(LOD)可以定位在几何层之后。因为属性数据取决于几何数据,所以可以首先放置几何层。另外,根据实施例,位置可以不同地改变。还可以在几何报头之间以及属性报头和几何报头之间进行参考。
参考图18的(b),可以收集和递送构成包括几何数据和属性数据的同一层的比特流。在这种情况下,通过使用能够并行解码几何和属性的压缩技术,可以缩短解码执行时间。在这种情况下,可以首先放置需要首先处理的信息(更低的LoD,其中几何必须先于属性)。
第一层1800包括与最低LOD 0(层0)相对应的几何数据和属性数据以及每个报头。第二层1810包括LOD 0(层0),并且还包括未包括在LOD 0(层0)中的新的且更详细的层1(LOD 1)的点的几何数据和属性数据作为信息R1。随后能够以类似的方式放置第三层1820。
当发送和接收比特流时,根据实施例的发送/接收方法/设备可以在比特流级别有效地选择应用领域中期望的层(或LoD)。在根据实施例的比特流排序方法中,收集和发送几何信息(图18)可以在比特流级别选择之后在中间产生空部分。在这种情况下,比特流可能需要重新排列。在根据每层捆绑和递送几何和属性的情况下(图18),可以如下根据应用领域选择性地移除不必要的信息。
图19图示根据实施例的选择几何数据和属性数据的方法。
根据实施例的比特流选择
当需要选择如上所述的比特流时,根据实施例的方法/设备可以选择如图21所示的比特流级别的数据:1)几何和属性的对称选择;2)几何和属性的不对称选择;或3)上述两种方法的组合。
1)几何和属性的对称选择
参考图19,其图示仅选择直至LoD1(LOD 0+R1)的LoD(19000)并发送或解码的情况,与对应于上层的R2(LOD 2中的新部分)相对应的信息被移除以用于发送/解码。
2)几何和属性的不对称选择
根据实施例的方法/设备可以不对称地发送几何和属性。仅移除上层的属性(属性R2)(19001),并且可以选择并发送/解码完整的几何(从三角形八叉树结构中的级别0(根级别)到级别7(叶级别))(19011)。
参考图16,当点云数据以八叉树结构表示并且分层地划分为LOD(或层)时,可以支持可扩展编码/解码(可扩展性)。
根据实施例的可扩展性功能可以包括切片级可扩展性和/或八叉树级可扩展性。
根据实施例的LoD(细节级别)可以被用作用于表示一个或多个八叉树层的集合的单元。此外,它可能意味着要配置为切片的八叉树层的捆绑。
在属性编码/解码中,根据实施例的LOD可以被扩展并用作用于在更广泛的意义上详细划分数据的单元。
也就是说,可以为每个八叉树层提供通过实际八叉树层(或可扩展属性层)的空间可扩展性。然而,当在比特流解析之前在切片中配置可扩展性时,可以根据实施例在LoD中进行选择。
在八叉树结构中,LOD0可以对应于根级别至级别4,LOD1可以对应于根级别至级别5,并且LOD2可以对应于根级别至级别7,级别7是叶级别。
也就是说,如图16所示,当在切片中利用可扩展性时,如在可扩展传输的情况下,所提供的可扩展步骤可以对应于LoD0、LoD1和LoD2这三个步骤,并且可以由解码操作中的八叉树结构提供的可扩展步骤可以对应从根到叶的八个步骤。
根据实施例,例如,在图16中,当LoD0至LoD2被配置为相应的切片时,接收器或发送器的转码器(图15的转码器15040)可以选择1)仅LoD0、选择2)LoD0和LoD1,或者选择3)用于可扩展处理的LoD0、LoD1、以及LoD2。
示例1:当仅选择LoD0时,最大八叉树级可以为4,并且在解码过程中可以从八叉树层0至4中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
示例2:当选择LoD0和LoD1时,可以添加层5。因此,最大八叉树级可以是5,并且在解码过程中可以从八叉树层0至5当中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
根据实施例,八叉树深度、八叉树层和八叉树级别可以是数据被详细划分的单位。
示例3:当选择LoD0、LoD1和LoD2时,可以添加层6和层7。因此,最大八叉树级可以是7,并且在解码过程中可以从八叉树层0至7当中选择一个可扩展层。在这种情况下,接收器可以将通过最大八叉树深度可获得的节点大小视为叶节点,并且可以通过信令信息发送节点大小。
图20图示根据实施例的配置包括点云数据的切片的方法。
根据实施例的切片配置
根据实施例的发送方法/设备/编码器可以通过以切片结构分段比特流来配置G-PCC比特流。用于详细数据表示的数据单元可以是切片。
根据实施例的切片可以意指用于将点云数据分区的数据单元。也就是说,切片代表点云数据的一部分。切片可以被指代表示某个部分或单元的术语。
例如,一个或多个八叉树层可以匹配到一个切片。
根据实施例的发送方法/设备,例如,编码器可以通过在扫描顺序2000的方向上扫描八叉树中包括的节点(点)来配置基于切片2001的比特流。
在图20的(a)中,八叉树层中的一些节点可以被包括在一个切片中。
八叉树层(例如,级别0至级别4)可以构成一个切片2002。
八叉树层(例如,级别5)的部分数据可以构成每个切片2003、2004、2005。
八叉树层(例如,级别6)的部分数据可以构成每个切片。
在图20-(b)和图20-(c)中,当多个八叉树层被匹配到一个切片时,可以仅包括每个层的一些节点。以这种方式,当多个切片构成一个几何/属性帧时,可以为接收器递送配置层所必需的信息。该信息可以包括关于每个切片中包括的层的信息和关于每个层中包括的节点的信息。
在图20-(b)中,八叉树层,例如,级别0至级别3以及级别4的部分数据可以被配置为一个切片。
八叉树层,例如,级别4的部分数据和级别5的部分数据可以被配置为一个切片。
八叉树层,例如,级别5的部分数据和级别6的部分数据可以被配置为一个切片。
八叉树层,例如,级别6的部分数据可以被配置为一个切片。
在图20-(c)中,八叉树层,例如,级别0至级别4的数据可以被配置为一个切片。
来自八叉树级别5、级别6和级别7中每一个的部分数据可以被配置为一个切片。
根据实施例的编码器和与编码器相对应的设备可以对点云数据进行编码,并且可以生成并发送包含与点云数据有关的编码的数据和参数信息的比特流。
此外,在生成比特流时,可以基于根据实施例的比特流结构来生成比特流(参见例如图16至图20)。因此,根据实施例的接收设备、解码器和对应设备可以接收并解析被配置为适合于选择性部分数据解码的比特流,并且部分解码并有效地提供点云数据(参见图15)。
根据实施例的可扩展传输
根据实施例的点云数据发送方法/设备可以可扩展地发送包括点云数据的比特流,并且根据实施例的点云数据接收方法/设备可以可扩展地接收和解码比特流。
当根据图16至图20所示的实施例的比特流被用于可扩展传输时,可以将选择接收器所需的切片所需要的信息发送到接收器。可扩展传输可以意味着仅发送或解码比特流的一部分,而不是解码整个比特流,并且其结果可能是低分辨率点云数据。
当可扩展传输被应用于基于八叉树的几何比特流时,点云数据可能需要被配置有范围仅直至针对从根节点到叶节点的每个八叉树层的比特流(图16)的特定八叉树层的信息。
为此,目标八叉树层应当不依赖于关于更低八叉树层的信息。这可能是共同应用于几何编译和属性编译的约束。
另外,在可扩展传输中,需要递送用于发送器/接收器选择可扩展层的可扩展结构。考虑到根据实施例的八叉树结构,所有八叉树层可以支持可扩展传输,或者可以仅针对特定八叉树层或更低层允许可扩展传输。当切片包括八叉树层中的一些时,可以指示其中包括切片的可扩展层。从而,可以确定在比特流阶段切片是否是必要的/不必要的。在图20-(a)的示例中,从根节点开始的2002指示的部分在不支持可扩展传输的情况下构成一个可扩展层。接下来的八叉树层能够以一对一的对应关系匹配到可扩展层。一般来说,可以支持针对与叶节点相对应的部分的可扩展性。如图23-(c)中所示,当切片中包括多个八叉树层时,可以定义应当为这些层配置一个可扩展层。
在这种情况下,可以根据目的单独使用可扩展传输和可扩展解码。可扩展传输可以在发送/接收侧被用于选择直至特定层的信息而不涉及解码器的目的。可扩展解码被用于在编译期间选择特定层。也就是说,可扩展传输可以支持对必要信息的选择,而不涉及处于压缩状态(在比特流阶段)的解码器,使得信息可以由接收器发送或确定。另一方面,可扩展解码可以仅支持编码/解码数据直至编码/解码过程中所需的部分,并且因此可以在这种情况下用作可扩展表示。
在这种情况下,用于可扩展传输的层配置可以不同于用于可扩展解码的层配置。例如,就可扩展传输而言,包括叶节点的三个底部八叉树层可以构成一个层。然而,当就可扩展解码而言包括所有层信息时,可以针对叶节点层n、叶节点层n-1、叶节点层n-2中的每一个执行可扩展解码。
在下文中,将描述用于上述的层配置的切片结构和用于可扩展传输的信令方法。
图21图示根据实施例的基于单个切片的几何树结构和基于分段切片的几何树结构。
根据实施例的方法/设备可以配置用于递送如图21中所示的点云数据的切片。
图21示出包含在不同切片结构中的几何树结构。根据G-PCC技术,整个编译的比特流可以被包括在单个切片中。对于多个切片,每个切片可以包含子比特流。切片的顺序可以与子比特流的顺序相同。比特流可以按照几何树的广度优先顺序累积,并且每个切片可以匹配到一组树层(见图21)。分段的切片可以继承G-PCC比特流的分层结构。
切片可以不影响先前的切片,正如几何树的更高层不影响更低层一样。
根据实施例的分段切片在错误稳健性、有效传输、兴趣区域的支持等方面是有效的。
1)错误恢复能力
与单切片结构相比,分段的切片可更能抵抗错误。当切片包含帧的整个比特流时,数据丢失可能会影响整个帧数据。另一方面,当比特流被分段成多个切片时,即使一些其他切片丢失,未受丢失影响的切片也可能被解码。
2)可扩展传输
可以支持具有不同能力的多个解码器。当编译的数据在单个切片中时,可以在编码之前确定编译的点云的LOD。因此,可以独立地发送具有不同分辨率的点云数据的多个预编码的比特流,其在大的带宽或存储空间方面可能是效率低下的。
当生成PCC比特流并将其包括在分段的切片中时,单个比特流可以支持不同级别的解码器。从解码器的角度来看,接收器可以选择目标层并且可以将部分选择的比特流递送到解码器。类似地,通过使用单个PCC比特流而不分区整个比特流,可以在发送端有效地生成部分PCC比特流。
3)基于区域的空间可扩展性
关于G-PCC要求,基于区域的空间可扩展性可以定义如下。压缩的比特流可以被配置为具有一个或多个层。特殊的兴趣区域可以具有附加层和较高的密度,并且可以从更低层预测这些层。
为了支持这个要求,有必要支持区域的不同详细表示。例如,在VR/AR应用中,遥远位置的对象可能以低精度表示,而近位置的对象可能以高精度表示。可替选地,解码器可以根据请求增加兴趣区域的分辨率。此操作可以使用诸如可扩展属性编译方案的G-PCC的几何八叉树和可扩展结构来实现。解码器应基于包括整个几何或属性的当前切片结构接入整个比特流,这可能会导致带宽、存储器和解码器方面的效率低下。另一方面,当比特流被分段成多个切片,并且每个切片包含根据可扩展层的子比特流时,根据实施例的解码器可以在有效地解析比特流之前根据需要选择切片。
图22示出根据实施例的几何编译树的层组结构和属性编译树的对齐的层组结构。
根据实施例的方法/设备可以使用如图22所示的点云数据的分层结构来生成切片层组。
根据实施例的方法/设备可以应用包括在不同切片中的几何和属性比特流的分段。另外,在树深度的方面,可以使用几何和属性编译的编译树结构以及部分树信息中包括的每个切片。
图22的(a)示出几何树结构和所提出的切片片段的示例。
例如,可以存在八叉树中配置的8个层,并且可以使用5个切片来包含一个或多个层的子比特流。组表示一组几何树层。例如,组1包括层0至4,组2包括层5,并且组3包括层6和7。此外,组可以被划分为三个子组。父子对存在于每个子组中。组3-1至3-3是组3的子组。当使用可扩展属性编译时,树结构与几何树结构相同。相同的八叉树-切片映射可以用于创建属性切片片段(图22的(b))。
层组:表示在G-PCC编译中出现的层结构单元的捆绑,诸如八叉树层和LoD层。
子组可以基于用于一个层组的位置信息被表示为邻近节点的集合。可替选地,可以基于最低层(其可以是最靠近根的层,并且在图22中的组3的情况下可以是层6)来配置捆绑。子组可以被配置为根据码顺序彼此邻近的节点的捆绑,作为基于距离的邻近节点的捆绑,或者作为根据编译顺序彼此邻近的节点的捆绑。此外,可以指定父子关系中的节点存在于同一子组中。
当定义子组时,边界出现在层的中间,并且诸如sps_entropy_continuation_enabled_flag或gsh_entropy_continuation_flag的信息可以被用信号发送以指示是否在边界处维持连续性。此外,信令信息可以被用于指示是否连续使用熵,并且可以指示ref_slice_id。因此,可以维持与先前切片的连续性。
图23图示根据实施例的层组和子组的结构。
基于图21中所示的层结构的点云数据和比特流可以表示如图23所示的边界框。
图示出子组结构和对应于子组的边界框。层组2被划分为两个子组(组2-1和组2-2),并且层组3被划分为四个子组(组3-1、组3-2、组3-3和组3-4)。层组2的子组和层组3的子组被包括在不同的切片中。当给出具有边界框信息的层组和子组的切片,1)可以将每个切片的边界框与ROI进行比较,并且2)可以选择其子组边界框与ROI相关的切片并且可以执行空间接入。然后,3)选择所选择的切片。当在区域3-3中考虑ROI时,选择切片1、3和6作为层组1以及子组2-2和3-3的子组边界框以覆盖ROI区域。为了有效的空间接入,假定同一层组的子组之间不存在依赖性。在直播流或低时延用例中,当接收到每个切片片段时,可以执行选择和解码操作以提高时间效率。
根据实施例的方法/设备可以在几何和/或属性编码期间将数据表示为层(其可以被称为深度或级别)作为层树23000。与层(深度/级别)相对应的点云数据可以被分组为层组(或组)2301,如图21和图22的情况一样。每个层组可以被进一步划分(分段)为子组2302。可以通过在切片中配置每个子组来生成比特流。根据实施例的接收设备可以接收比特流,选择特定切片,对切片中包括的子组进行解码,并且对与子组相对应的边界框进行解码。例如,当选择切片1时,可以对与组1相对应的边界框2303进行解码。组1可以是与最大区域相对应的数据。当用户想要另外查看用于组1的详细区域时,根据实施例的方法/设备可以选择切片3和/或切片6,并且可以部分地且分层次地接入包括在组1的区域中的详细区域的组2-2和/或组3-3的边界框(点云数据)。
现在参考图23,示出了基于子组边界框信息的切片选择操作的示例。根据实施例的方法/设备基于子组边界框信息确定并选择与ROI匹配的切片。
通过将压缩比特流划分为切片以利用针对全编译层所提出的方法来传送,可以支持具有不同性能的接收器。在基于ROI或接收器性能对切片进行选择性解码的情况下,选择可以由接收器直接执行或由转码器执行。在转码器选择的情况下,不存在关于完整解码的信息(例如,整个编译层深度、层组总数、子组总数等)。接收器在解码期间可能需要此信息。在这种情况下,可以直接提供此信息,或者可以递送跳过的层组的数量(num_skipped_layer_groups)和跳过的层的数量(num_skipped_layers)作为用于推断前述信息的信息。
下面示出了根据实施例生成ROI的示例方法。
//下面是针对切片选择的ROI设置的过程:
Vec3<int>ROI_origin,ROI_size;
gbh.layer_group_enabled_flag=_sps->layer_group_enabled_flag;
if(gbh.layer_group_enabled_flag){
gbh.num_layer_groups_minus1=_sps->num_layer_groups_minus1;
gbh.num_layers_per_layer_group=_sps->num_layers_minus1;
for(int i=0;i<=gbh.num_layer_groups_minus1;i++){
gbh.num_layers_per_layer_group[i]=_sps->num_layers_minus1[i]+1;
}
if(params->roiEnabledFlag){
ROI_size=参数->roiSize;
for(int i=0;i<3;i++){
int Width=1<<gbh.rootNodeSizeLog2[i];
double positionScale=params->roiPointScale[i];
if(positionScale<0)
positionScale=0;
else if(positionScale>1)
positionScale=1;
ROI_origin[i]=int(Width*positionScale+0.5);
if(ROI_origin[i]>=Width)
下面示出了用于通过编码器进行的基于ROI的切片选择的示例方法。
切片选择支持可扩展性和空间随机访问(//切片选择:可扩展性和空间随机访问)。
/>
/>
/>
下面示出了用于由解码器基于ROI的切片选择的示例方法。
/>
图24至图26示出了根据上述切片选择的结果图像的示例。
图24、25和26示出了根据实施例的多分辨率和多大小ROI输出。
图16至图23和图42中所示的结构允许多分辨率和多大小ROI输出。
针对多分辨率多大小ROI的示例比较:
为了进行详细比较,可以获得来自三种方法的观看距离自适应分辨率用例的结果。基于上述假定,可以将三种不同级别的观看距离视为接收器的输出:1)具有粗略细节的高级视图,2)具有中等细节的中级视图,以及3)具有精细细节的低级别视图。
参考图24至图26,示出了ULB_unicorn_HiRes_vox15_n.ply和Stanford_Area_4_vox16.ply数据的三种不同分辨率,其代表三个目标输出。从高级到低级,体积减小,而分辨率(或点密度)增加。
图27示出了根据实施例的考虑云密度的切片生成方法。
根据实施例的用于发送点云数据的方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003、图2中的获取20000-编码20001-发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图37和图40至图42中的编码、以及图43中的传输方法)可以考虑点云数据的密度来生成和编码切片,如图27所示。
根据实施例的用于接收点云数据的方法/设备(即,图1中的接收设备10004、接收器10005和点云视频解码器10006、图2中的发送20002-解码20003-渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27至图29中的解码、图38中的解码、图40至图42中的解码以及图44中的接收方法)可以基于考虑点云数据的密度而生成的切片来对点云数据进行解码。
关于根据实施例的考虑云数据的密度来生成切片的方法,根据实施例的方法/设备可以使用自适应子组边界框。
下面公开自适应子组边界框的概念。
作为使用非立方边界框的示例,子组分割可以限制每个子组中的节点数量。在子组分割的情况下,使用输入序列内具有固定子组大小的立方子组。由于分割(分区)是基于空间区域的,所以不能保证每个切片中的节点数的范围。为了使子组中的点数处于级别限制内,可以如图27所示对立方边界框进行子划分。在此示例中,通过在一个轴上划分立方体中心来将原始边界框分割成两个。在三个轴当中跨y轴和z轴进行分割会导致莫顿(Morton)顺序。如果执行分割的位置不是中心,则对于所有三种情况,子划分的边界框可能通过莫顿顺序出现。
为了图示非立方子组边界框通过莫顿顺序的使用,检查对CTC测试内容的子组分割的结果。在此示例中,分割过程可以被应用于具有大量点的测试内容。例如,数据(ulb_unicorn_hires_vox15.ply)中的点数为63,787,119,并且生成的最后层组中的子组数量为105(应用上述条件)。由于点云数据中点分布不均匀,根据TMC13,可能存在具有其数量超过1,100,000的点的子组。为了调整在这样的子组中的点数,可以将立方子组分割为多个子组。通过分割生成的非立方子组的示例在图28中示出。在图28的表中,每行表示跨z轴、y轴和x轴分割的示例。每列表示子组原点、大小以及分割前后的点数。在此示例中,确定分割的方向以产生具有尽可能相似的点数的两个子划分的结果。如表中所示,分割后的点数可能低于产生编码译码器友好的切片的级别限制。在此示例中,在分割之后最后层组中的切片数量可以改变为121。
图28图示根据实施例的跨z轴、y轴和x轴分割非立方子组边界框的示例。
图27中描述的将立方边界框划分为子组框的示例在图28中被示出。
例如,当在轴上存在被定位在(0,0,8192)处的立方边界框时,边界框的大小为(4096,4096,4096),并且框中的点数为1,197,362,可以执行分割。可以沿z轴应用子划分(subdivision),并且可以创建两个子组。每个框中的点数可能会减少。类似地,可以沿着y轴和/或x轴应用子划分以适合每个框(子组)中的点数。
在层组切片中,子组根据subgroupSize、确定立方体长度的参数进行分割。立方子组可以被认为是空间随机访问的单元,因为内容的边界框在所有轴上被均匀距离划分。
然而,这种简单的方法不能考虑子组中的点数,并且因此子组中的点数可能超过TMC13中使用的限制。因为限制的目的之一是确保接收器的性能,所以需要创建子组,使得它们具有低于限制的点。
为此,可以使用更小的subgroupSize。然而,这可能会在邻近节点之间产生更多的不连续性,并导致报头和参数被添加到库存中,从而增加子组的数量,这可能导致效率低下。另外,考虑到解码能力,对子组数量的限制可能是必要的。因此,在实施例中可以考虑以下用于生成子组的约束。
1)子组中的点数低于级别限制。
2)附加子组数量较少。
根据实施例生成子组的方法可以包括1)使用固定子组大小,和/或2)使用固定子组大小和子组分割这两者。
1.使用固定的子组大小
在生成子组时,可以基于固定的子组大小来生成所有子组。下面是用于基于子组原点、子组大小、点数测量和层组结构参数生成层组和子组,并将相关参数存储在序列参数集(SPS)和层组结构库存中的过程的实施实施例。
/>
/>
/>
/>
/>
/>
/>
/>
/>
2.同时使用固定的子组大小和子组划分
使用固定的子组大小可以使其更容易地从空间随机访问的角度确定所需区域的范围,但是可能不允许均匀地划分点。这可能导致一些子组具有比解码器可处理的点数(即,级别限制)更多的点。为了避免这个问题,需要一种将点划分为子组的方法。当子组的数量增加时,可能会超过解码器可以处理的子组的数量。因此,需要一种能够显着增加子组数量的分割方法。
考虑到第二约束(子组的数量),根据实施例的方法/设备可以逐步分割立方子组边界框。换句话说,当满足第一个约束(点数)时,分割终止。与所有三个方向上的分割相比,这可以减少额外子组的数量。
图29图示根据实施例的子组划分过程。
根据实施例的点云数据传输方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003,图2中的获取20000-编码20001-发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图40至图42中的编码、以及图43中的传输方法)可以分割包含点云数据的立方子组,如图29所示。
根据实施例的用于接收点云数据的方法/设备(即,图1中的接收设备10004、接收器10005和点云视频解码器10006、图2中的发送20002-解码20003-渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27至图29中的解码、图38中的解码、图40至图42中的解码以及图44中的接收方法)可以分割如图29所示的包含点云数据的立方子组,或者在发送侧处对子组分割进行解码。
图29中示出了所提出的子组分割的示例。在每个步骤(例如,步骤1到步骤3)中,选择分割方向之一。在第一步,当点数大于级别限制时,计算子组边界框中的点数并将其分割为两个子块。在确定分割方向时,计算并比较分割的成本。为了创建更少的子组分割,分割的成本被认为是子划分A和B之间的点数差。
成本=|子划分A中的点数-子划分B中的点数|
通过比较沿x、y和z轴的三个分割成本,选择具有成本最低的方向作为子组分割的方向。在图29的示例中,选择y的方向。
如果子划分A和B中的点数小于级别限制,则过程终止。另一方面,如果一个或两个子组不满足约束1(点数),则子组边界框在前面的步骤中的其余部分中选择的方向被分割。与准则相同的成本函数被用于选择。在二次分割之后,估计每个子范围的得分,并与级别限制进行比较。基于结果,分割在步骤2中被终止,或者执行进一步的分割。
如果子划分A或B中的点数大于或等于级别限制,则执行第三子组分割。因为仅存在分割的一个方向,所以子组分割是在没有选择的情况下被执行。子组分割的最终输出是在每个步骤中全部子划分的边界框,其中边界框中的点数小于级别限制。
参考图29,由编码器(或解码器)中负责子组分割的子组分离器或处理器执行以下操作。
作为步骤1,设备接收包含点云数据的立方子组并检测子组中的点数是否大于阈值(级别限制)。如果点数较多,则执行子组分割。例如,可以在三个轴上执行子划分,并且可以根据子划分为每个轴生成候选子划分(或子组)A和B。可以从三个候选子划分当中选择具有最佳得分的子划分。例如,当y轴划分中的子划分之间的点数差小于x轴划分中的点数差时,可以执行y轴上的子划分。在步骤2中,当选择具有最佳得分的子划分时,如果点数小于阈值,则不需要进一步分割并且从而终止子组分割过程。否则,可以执行额外的子划分。例如,因为首先应用了y轴子划分,所以可以考虑y轴-x轴子划分和y轴-z轴子划分。可以在两个候选之间比较根据点数的得分,并且可以选择具有最佳得分的子划分。在步骤3中,在第二次子划分之后,当子组中的点数小于阈值时,可以终止子划分,使得不需要进一步的子划分。否则,可以执行第三子划分。例如,可以沿y轴-z轴-x轴分割子组。通过步骤1至步骤3,可以生成不同大小的子组的子划分(为了简单起见,可以将其称为子组)。
在图29中,在执行子组划分时考虑直至三个方向(x,y,z)的划分。然而,如有必要,可以在一个方向接一个方向(例如,x、x、y、z)上执行划分,或者可以通过减小子组大小(例如,x、y、z、x、y、z、...)来递归地应用。
虽然实施例考虑生成具有固定子组大小的子组并且然后对一些子组执行子组划分,但是如果初始子组大小被确定为包含整个点云数据的根边界框,则可以通过基于点数递增地划分子组来生成子组。
图30示出根据实施例的可变子组大小和固定子组大小之间的比较。
图30示出总体划分结果。结果表明,子组划分对压缩效率影响较小,并且子组内点数保持在级别限制以下。
单向子划分的实现示例
int splitOneDirection(std::vector<Vec3<int>>&splitBboxOrigin,std::vector<Vec3<int>>&splitBboxSize,const std::vector<int>numPointsInSplitedSubgroups,
const Vec3<int>subOrigin_in,const Vec3<int>subSize_in,const Vec3<int>BestDirection,const int numDivMinus1,Vec3<int>posHigh,const int maxNumPoint)
}
int divAxis=BestDirection[numDivMinus1];
Vec3<int>subOrigin=subOrigin_in;
Vec3<int>subSize=subSize_in;
subSize[divAxis]/=2;
if(posHigh[numDivMinus1])
subOrigin[divAxis]+=subSize[divAxis];
//计算点数。
int mask=0,mask_base=0;
for(int m=0;m<=numDivMinus1;m++){
mask_base+=1<<(2-BestDirection[m]);
if(posHigh[m])
mask+=1<<(2-BestDirection[m]);
}
std::cout<<"\t\tmask_base="<<mask_base<<"\tmask="<<mask<<std::endl;
std::cout<<"\t\t所选点列表:";
int numPoints=0;
for(int k=0;k<8;k++){
if((k&mask_base)==mask){
numPoints+=numPointsInSplitedSubgroups[k];
std::cout<<k<<"("<<numPoints<<")\t";
}
}
std::cout<<std::endl;
if(numPoints<=maxNumPoint||numDivMinus1>=2){
if(numPoints){
splitBboxOrigin.push_back(subOrigin);
splitBboxSize.push_back(subSize);
}
else
return numPoints;
}
else{
posHigh[numDivMinus1+1]=0;
splitOneDirection(splitBboxOrigin,splitBboxSize,numPointsInSplitedSubgroups,
subOrigin、subSize,BestDirection,numDivMinus1+1,posHigh,maxNumPoint);
posHigh[numDivMinus1+1]=1;
splitOneDirection(splitBboxOrigin,splitBboxSize,numPointsInSplitedSubgroups,
subOrigin、subSize、BestDirection、numDivMinus1+1、posHigh、maxNumPoint);
return 0:
}
}
基于三步的子组划分的实现示例
void splitSubgroup(std::vector<Vec3<int>>&splitBboxOrigin,std::vector<Vec3<int>>&splitBboxSize,const std::vector<Vec3<int>>subgrpPointCloud,
const Vec3<int>curBboxOrigin,const Vec3<int>initSubgroupBboxSize,const int maxNumPoint){
Vec3<int>center;
for(int m=0;m<3;m++)
center[m]=curBboxOrigin[m]+initSubgroupBboxSize[m]/2;
std::vector<std::vector<Vec3<int>>>splitSubgroupPointCloud;
splitSubgroupPointCloud.resize(8);
for(int k=0;k<subgrpPointCloud.size();k++){
auto pos=subgrpPointCloud[k];
int splitIdx=0;
for(int m=0;m<3;m++)
if(位置[m]>=中心[m])
splitIdx+=1<<(2-m);
splitSubgroupPointCloud[splitIdx].push_back(pos);
}
Vec3<int>score,sumLow,sumHigh;
std::vector<int>numPointsInSplitedSubgroups;
for(int m=0;m<3;m++){
int low=0,high=0;
int mask=1<<(2-m);
for(int k=0;k<8;k++){numPointsInSplitedSubgroups.push_back(splitSubgroupPointCloud[k].size());
if(!!(k&mask))
high+=numPointsInSplitedSubgroups[k];
else
low+=numPointsInSplitedSubgroups[k];
if(m==0)
std::cout<<"\tsplitSubgroupPointCloud["<<k<<"].size()="<<numPointsInSplitedSubgroups[k]<<std::endl;
}
sumLow[m]=low;
sumHigh[m]=high;
score[m]=abs(high-low);
}
Vec3<int>bestScore,BestDirection;
for(int m=0;m<3;m++){
if(m==0||score[m]<bestScore[0]){
for(int k=m;k>0;k--){
bestScore[k]=bestScore[k-1];
BestDirection[k]=BestDirection[k-1];
}
bestScore[0]=score[m];
BestDirection[0]=m;
}
else if(score[m]<bestScore[1]){
bestScore[2]=bestScore[1];
BestDirection[2]=BestDirection[1];
bestScore[1]=score[m];
BestDirection[1]=m;
}
else{
bestScore[m]=score[m];
BestDirection[m]=m;
}
}
Vec3<int>posHigh=-1;
posHigh[0]=0;
splitOneDirection(splitBboxOrigin,splitBboxSize,numPointsInSplitedSubgroups,
curBboxOrigin,initSubgroupBboxSize,BestDirection,0,posHigh,maxNumPoint);
posHigh[0]=1;
splitOneDirection(splitBboxOrigin,splitBboxSize,numPointsInSplitedSubgroups,
curBboxOrigin,initSubgroupBboxSize,BestDirection,0,posHigh,maxNumPoint);
}
子组划分的实施例
/>
/>
如果子组解码取决于编译顺序,则根据实施例的子组划分可能不可用。例如,考虑子组中包括的节点取自父子组的情况,并且父子组包括多个子子组。
首先,可以考虑编译顺序来截断子组。在这种情况下,可以基于关于子组的第一个点的信息(包括xyz位置或父输出节点上的索引)和关于最后一个节点的信息(包括xyz位置或父输出节点上的索引或来自子子组的第一个点的索引)。利用此方法,可以用较少的计算来选择必要的点,但存在对编译顺序的限制。
图31图示根据实施例的基于节点扫描顺序的子组边界框。
图31图示2D域中不同类型的子组边界框。每个4 x 4区域代表父子组。最小的四边形代表节点,箭头代表节点扫描顺序(莫顿顺序)。四边形由粗实线指示。线条指示边界框。图31中图示了边界框受节点扫描顺序限制的子组的示例。正方形和矩形子组边界框包括所有阴影连续节点。
参考图31,根据实施例的方法/设备能够以特定顺序对子组边界框进行编译。由扫描顺序编译的点可以全部包括在边界框中。
图32图示根据实施例的基于节点扫描顺序的子组边界框。
图32示出子组的示例,其中一些阴影节点位于边界框之外。当边界的大小不是2的幂时,或者当通过按莫顿顺序划分父子组来创建子(子)组时,可能会发生这种情况。
当通过前述的子划分来分割子组时,可能存在根据编译顺序访问的点的位置位于在子组(边界框)之外的情况。在这种情况下,可以使用根据实施例的以下方法中的任意一种来执行编译。
例如,可以选择包含在子子组的边界框中的父子组输出点。换句话说,因为父子组被包含在扫描顺序和边界中,所以可以根据扫描顺序对边界内的点进行编译。在这种情况下,根据下面公开的实现实施例,可以选择必要的点而不管扫描顺序如何。
if(startDepth>0){
ringBufferSize=numPoints;
fifo=pcc::ringbuf<PCCOctree3Node>(ringBufferSize+1);
std::cout<<“nodesSaved->size()=”<<nodesSaved->size();
auto nodeSizeLog2=lvlNodeSizeLog2[startDepth];
int count=0;
for(auto nodeIt=nodesSaved->begin();nodeIt!=nodesSaved->end();nodeIt++){
PCCOctree3Node&node0=*(nodeIt);
Vec3<int32_t>nodePos;
for(int m=0;m<3;m++)
nodePos[m]=node0.pos[m]<<nodeSizeLog2[m];
if((nodePos.x()>=bbox_min.x()&&nodePos.x()<bbox_max.x()
&&节点Pos.y()>=bbox_min.y()&&节点Pos.y()<bbox_max.y()
&&节点Pos.z()>=bbox_min.z()&&节点Pos.z()<bbox_max.z())){
fifo.emplace_back(node0);
计数++;
}
else
continue;
}
}
当使用根据实施例的子组划分时,可以跨扫描顺序生成子组边界框。因此,通常假定不存在对扫描顺序的依赖性。然而,考虑到每个子组在构成独立切片的同时被递送,即使当存在对扫描顺序的依赖性时,也可以旋转每个切片的轴以支持相同的解码。换句话说,立方边界框可以在垂直于xyz轴之一的方向上被划分一次。垂直于x轴方向的划分与扫描顺序无关,不受扫描顺序的影响。在垂直于y轴或z轴的方向上进行划分的情况下,可以执行旋转(例如,在xy平面中旋转了90度并且在xz平面中旋转了90度),使得获得与垂直于x轴的方向中的划分的形状相同的形状。解码器可以用信号发送应在解码之后在原始方向上执行逆旋转(例如,在xy平面中旋转了-90度并且在xz平面中旋转了-90度)。
在这种情况下,编码器可能进一步需要对旋转的子组空间内的点进行重新排序(例如,按照莫顿码顺序)。
图33图示根据实施例的包含点云数据和参数的比特流。
根据实施例的用于发送点云数据的方法/设备可以压缩点云数据并生成相关参数以生成并发送如图22所示的比特流。根据实施例的用于接收点云数据的方法/设备可以接收如图33所示的比特流并且基于参数信息重构点云数据。
根据实施例的方法/设备可以生成与根据实施例的预测几何中的半径帧间预测方法相关的信令信息。
用于半径预测的信息可以在预测几何中的帧间预测中被定义。序列参数集可以指示已经应用(包括)预测几何节点的帧间预测和半径预测,并且序列参数集中可以承载指示所需的全部或部分相关信息,取决于实施方法。各条信息还可以被承载在几何参数集、切片报头(也可以称为数据单元)、SEI消息等中。可以取决于应用、系统等在相应的或单独的位置中定义该信息,以提供不同的应用范围和方法。如果在更高级别中用信号发送包含类似功能的信息,即使信令在较低级别的参数集中被省略,其也是可适用的。另外,当下面定义的语法元素不仅适用于当前点云数据流,而且适用于多个点云数据流时,该信息可以被承载在更高层的参数集等中。
可以用信号发送相关信息以便于添加/执行实施例。在下文中,根据实施例的参数(其可以被称为元数据、信令信息等)可以由根据下面描述的实施例的发送器的过程来生成并且被传送到根据实施例的接收器以在重构操作中使用。例如,根据实施例的参数可以在根据下面描述的实施例的发送设备的元数据处理器(或元数据生成器)中生成,并且由根据实施例的接收设备的元数据解析器获取。参考图22至图26描述编码的点云的配置。
本文使用的缩写是:SPS:序列参数集;GPS:几何参数集;APS:属性参数集;TPS:图块参数集;Geom:几何比特流=几何切片报头(=几何数据单元报头)+几何切片数据(=几何数据单元数据);Attr:属性比特流=属性切片报头(属性数据单元报头)+属性切片数据(=属性数据单元数据)。
提供图块或切片,使得点云可以被划分成区域以进行处理。当点云被划分为区域时,每个区域可能具有不同的重要性。通过提供区域使得可以根据重要性应用不同的滤波器和不同的滤波器单元,可以在重要区域中使用具有复杂度高但结果质量良好的滤波方法。通过根据接收器容量对各自区域(分区为图块或切片的区域)应用不同的滤波,而不是对整个点云数据应用复杂的滤波方法。因此,可以在对用户重要的区域中保证更好的图像质量,并且可以在系统中保证适当的时延。因此,当点云被分区成图块时,可以将不同的滤波器或不同的滤波器单元应用于相应的图块。当点云被划分为切片时,可以对相应切片应用不同的滤波器或不同的滤波器单元。
参考图33,比特流可以包括SPS、GPS、APS、TPS和TPS。可以存在多个APS。TPS可以包括关于多个图块的图块边界框的信息。例如,它可以包括关于图块的边界框的位置(坐标)信息、大小信息(宽度、深度、高度)等。比特流可以包含基于每切片(数据单元)的几何信息(数据)和属性信息(数据)。因为点云数据是基于每切片(数据单元)进行编码的,所以比特流可以包含多个切片(数据单元)。切片(数据单元)可以包括关于一个点的几何信息(位置)和一条或多条属性信息(颜色、反射率等)。例如,切片(数据单元)0可以包括几何数据,并且该几何数据可以包括几何切片报头和几何切片数据。几何切片报头可以包含关于几何的信息。例如,它可能包含诸如几何参数集ID、几何图块ID、几何切片ID、包含几何的框(边界框)的原点、框的对数尺度、最大节点大小以及点数等信息。
虽然已经描述了根据实施例独立于编译技术来定义信息,但是可以结合编译方法来定义信息。为了支持区域上不同的可扩展性,可以在图块参数集中定义该信息。另外,当下面定义的语法元素不仅适用于当前点云数据流,还适用于多个点云数据流时,它们可以通过上级参数集等递送。
可替换地,可以定义网络抽象层(NAL)单元,并且可以递送用于选择层的相关信息,例如layer_id。由此,可以在系统级别选择比特流。
根据实施例的参数(其可以被称为元数据、信令信息等)可以在根据下面描述的实施例的发送器的过程中生成,并且被传送到根据实施例的接收器以用于重构操作。
例如,参数可以由根据实施例的发送设备的元数据处理器(或元数据生成器)生成,这将在稍后描述,并且可以由根据实施例的接收设备的元数据解析器获取。
下面描述比特流中包含的参数的语法。
图34示出根据实施例的序列参数集。
图34示出包含在图33中的比特流中的序列参数集。
layer_group_enabled_flag等于1指示帧或图块的几何比特流被包含在与编译层组或其子组匹配的多个切片中。layer_group_enabled_flag等于0指示帧或图块的几何比特流被包含在单个切片中。
num_layer_groups_minus1加1指示层组的数量,其中层组表示作为几何编译树结构的一部分的连续树层组。num_layer_groups_minus1可以在0到编译树层数的范围内。
layer_group_id指定帧或图块的层组的标识符。layer_group_id可以在0至num_layer_groups_minus1的范围内。
num_layers_minus1加1指定第i层组中包含的编译层的数量。可以通过将针对i等于0的所有(num_layers_minus1[i]+1)添加到num_layer_groups_minus1来推导层组的总数。
subgroup_enabled_flag等于1指定当前层组由可以包含在多个切片中的子组组成。subgroup_enabled_flag等于0指定当前层组包含在单个切片中。子组是互斥的,并且子组的总和与层组相同。
subgroup_bbox_origin_bits_minus1加1指示语法元素subgroup_bbox_origin的以比特为单位的长度。
subgroup_bbox_size_bits_minus1加1指示语法元素subgroup_bbox_size的以比特为单位的长度。
non_cubic_subgroup_enabled_flag等于1指示使用非立方子组边界框。
在这种情况下,子组边界框的最大和最小值的范围可以由subgroup_bbox_max_x、subgroup_bbox_max_y、subgroup_bbox_max_z、subgroup_bbox_min_x、subgroup_bbox_min_y和subgroup_bbox_min_z的值来指示,其可以表示针对沿x-y-z轴的边界框的每个轴的最大和最小值。
序列参数集可以进一步包含以下元素:
simple_profile_compatibility_flag:simple_profile_compatibility_flag等于1指定比特流符合简单简档。simple_profile_compatibility_flag等于0指定比特流符合除了简单简档之外的简档。
dense_profile_compatibility_flag:当等于1时,其指定比特流符合密集简档。Density_profile_compatibility_flag等于0指定比特流符合除了密集简档之外的简档。
predictive_profile_compatibility_flag:当等于1时,其指定比特流符合预测简档。Predictive_profile_compatibility_flag等于0指定比特流符合除了预测简档之外的简档。
main_profile_compatibility_flag:当等于1时,其指定比特流符合主简档。main_profile_compatibility_flag等于0指定比特流符合除了主简档之外的简档。
reserved_profile_compatibility_18bits:在符合此文档的此版本的比特流中应等于0。served_profile_compatibility_18bits的其他值被保留以供ISO/IEC将来使用。解码器应忽略reserved_profile_compatibility_18bits的值。
slice_reordering_constraint_flag:当等于1时,其指示比特流对数据单元的重新排序和移除敏感。slice_reordering_constraint_flag等于0指示比特流对数据单元的重新排序和移除不敏感。
unique_point_positions_constraint_flag:当等于1时,其指示所有输出点在引用当前SPS的每个点云帧中具有唯一位置。unique_point_positions_constraint_flag等于0指示两个或多个输出点在引用当前SPS的任何点云帧中可以具有相同的位置。
level_idc:指示比特流符合附件A中指定的级别。比特流不应包含除了附件A中指定的值之外的任何level_idc值。level_idc的其他值被保留以供ISO/IEC将来使用。
sps_seq_parameter_set_id:提供用于SPS的标识符,使得其可以被其他语法元素引用。在符合此文档的此版本的比特流中,sps_seq_parameter_set_id应为0。sps_seq_parameter_set_id的其他值被保留以供ISO/IEC将来使用。
frame_ctr_lsb_bits:指定语法元素frame_ctr_lsb的以比特为单位的长度。
slice_tag_bits:指定语法元素slice_tag的以比特为单位的长度。
seq_origin_bits:指定语法元素seq_origin_xyz[k]的以比特为单位的长度。
seq_origin_xyz[k]和seq_origin_log2_scale:指定序列局部坐标系的原点。索引k是原点坐标的第k个X、Y或Z分量。如果不存在,则seq_origin_xyz[k]和seq_origin_log2_scale的值被推断为0。
数组SeqOrigin是序列局部坐标系的原点:
SeqOrigin[k]=seq_origin_xyz[k]<<seq_origin_log2_scale
seq_bounding_box_size_bits:语法元素seq_bounding_box_size_minus1_xyz[k]的以比特为单位的长度。
seq_bounding_box_size_xyz_minus1[k]加1分别指定输出坐标系中编译的体积大小的宽度、高度和深度的第k个分量。如果不存在,则编译的体积大小未定义。
seq_unit_numerator_minus1、seq_unit_denominator_minus1和seq_unit_in_metres_flag:指定输出坐标系中X、Y和Z单位向量的长度。
seq_global_scale_factor_log2、seq_global_scale_refinement_num_bits和seq_global_scale_refinement_factor:指定用于从序列局部坐标系中的位置推导输出点位置的固定十进制比例因子。
seq_global_scale_factor_log2:被用于推导全局比例因子以应用于点云中的位置。
seq_global_scale_refinement_num_bits:语法元素seq_global_scale_refinement_factor的以比特为单位的长度。当seq_global_scale_refinement_num_bits等于0时,不应用分段。
seq_global_scale_refinement_factor:指定全局比例值的细化。当不存在时,seq_global_scale_refinement_factor被推断为等于0。
sps_num_attributes:指定编译的点云中的属性的数量。比特流一致性的要求是每个切片具有与SPS中列出的每个属性分量相对应的属性数据单元。
attribute_dimension_minus1[attrId]加1指定第attrId个属性的分量的数量。
attribute_instance_id[attrId]:指定第attrId个属性的实例标识符。
attribute_bitdepth_minus1[attrId]加1指定第attrId个属性信号的每个分量的比特深度。
known_attribute_label_flag[attrId]、known_attribute_label[attrId]和attribute_label_oid[attrId]:标识在第attrId个属性中传递的数据的类型。known_attribute_label_flag[attrId]指示属性是否由known_attribute_label[attrId]的值或由对象标识符attribute_label_oid[attrId]标识。
可以指定由known_attribute_label标识的属性类型。当known_attribute_label的值未指定时,它被保留以供ISO/IEC将来使用。
属性类型可以指示颜色、反射率、不透明度、帧索引、帧编号、材料标识符、法线向量等。
num_attribute_parameters:指定比特流中属性参数集的数量。在序列参数集中用信号发送的属性参数被应用于编译的点云序列中的所有数据单元。
axis_coding_order:指定X、Y、Z输出轴标签与重构点云中所有点的三个位置分量之间的对应关系。
bypass_stream_enabled_flag等于1指定当读取比特流时可以使用旁路编译模式。bypass_stream_enabled_flag等于0指定读取比特流时不使用旁路编译模式。
entropy_continuation_enabled_flag等于1指示切片的初始熵上下文状态可以取决于先前的切片的最终熵上下文状态。entropy_continuation_enabled_flag等于0指定每个切片的初始熵上下文状态是独立的。当slice_reordering_constaint_flag等于0时entropy_continuation_enabled_flag等于0是比特流一致性的要求。
sps_extension_flag等于0指定语法元素sps_extension_data_flag不存在于SPS语法结构中。在符合此文档的此版本的比特流中,sps_extension_flag应等于0。用于sps_extension_flag的值1被保留以供ISO/IEC将来使用。解码器应忽略遵循SPS语法结构中的sps_extension_flag的值为1的任何语法元素sps_extension_data_flag。
sps_extension_data_flag可以具有任何值。它的存在和值不会影响解码器对附件A中指定的简档的一致性。符合此文档的此版本的解码器应忽略所有语法元素sps_extension_data_flag。
图35示出根据实施例的依赖几何数据单元报头。
图35示出包含在图33中的比特流中的几何数据单元报头。
dgsh_slice_id:指示用于依赖几何数据单元的切片的ID。
layer_group_id指定帧或图块的层组的标识符。layer_group_id可以在0至num_layer_groups_minus1的范围内。
subgroup_id指定由layer_group_id指示的层组的子组的标识符。subgroup_id可以在0至num_subgroups_minus1[layer_group_id]的范围内。subgroup_id可以表示同一layer_group_id中的切片的顺序。当不存在时,subgroup_id可以推断为0。
subgroup_bbox_origin指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
subgroup_bbox_origin指定由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的原点。
subgroup_bbox_size指示由layer_group_id指示的层组的subgroup_id指示的子组的子组边界框的大小。
ref_layer_group_id指定参考层组的指示符。ref_layer_group_id可以在当前帧或当前图块的0至num_layer_group_minus1的范围内。
ref_subgroup_id指定由ref_layer_group_id指示的层组的参考子组的指示符。ref_subgroup_id可以在0到当前层组的num_subgroup_id_minus1的范围内。当不存在时,subgroup_id可以推断为0。
subgroup_bbox_rotation_enabled_flag等于1可以指示子组边界框已经被旋转。
rotation_direction:可以指示子组边界框的旋转方向。例如,从编码器的角度来看,可以用信号发送类型来指示子组边界框已在xy平面中旋转90度(使得垂直于y轴的划分变成垂直于x轴的划分)或在xz平面中旋转90度(使得垂直于z轴的划分变成垂直于x轴的划分)。可替选地,从解码器的角度来看,可以用信号发送在解码之后应执行旋转的方向。可以用信号发送旋转已经在xy平面中执行了-90度(使得垂直于x轴的划分变为垂直于y轴的划分)或在xz平面中旋转-90度(使得垂直于x轴的划分变为垂直于z轴的划分)。
图36示出根据实施例的层组结构库存。
图36示出图33中的比特流中包含的层组结构库存。
lgsi_seq_parameter_set_id指示sps_seq_parameter_set_id的值。比特流一致性的要求是lgsi_seq_parameter_set_id等于0。
lgsi_frame_ctr_lsb_bits指示语法元素lgsi_frame_ctr_lsb的以比特为单位的长度。
lgsi_frame_ctr_lsb指定组结构库存对其有效的FrameCtr的lgsi_frame_ctr_lsb_bits的最低有效位。层组结构库存在被另一个层组结构库存替换之前一直有效。
lgsi_num_slice_ids_minus1加1可以指示层组结构库存中的切片的数量。
gi_slice_id指定层组结构库存内第sid个切片的切片id。比特流一致性的要求是lgsi_slice_id的所有值在层组结构库存中都是唯一的。
gi_slice_id指定层组结构库存内第sid个切片的切片id。比特流一致性的要求是lgsi_slice_id的所有值在层组结构库存中应该是唯一的。
lgsi_num_layer_groups_minus1加1指示层组的数量。
lgsi_layer_group_id指定层组的指示符。lgsi_layer_group_id的范围是0到lgsi_num_layer_groups_minus1。
lgsi_num_layers_minus1加1指示第sid切片中的第i层组的切片中的编译的层的数量。对于从0到n的i,解码第n层组所需的编译的层的总数等于lgsi_num_layers_minus1[sid][i]+1之和。
lgsi_num_subgroups_minus1加1指示第sid切片中的第i层组的子组的数量。
lgsi_subgroup_id指定层组的标识符。lgsi_subgroup_id的范围是0到lgsi_num_subgroups_minus1。
lgsi_parent_subgroup_id指定由lgsi_subgroup_id指示的层组中的子组的标识符。lgsi_parent_subgroup_id在由lgsi_subgroup_id指示的层组中在0至gi_num_subgroups_minus1的范围内。
lgsi_subgroup_bbox_origin和lgsi_subgroup_bbox_size指示当前子组的边界框。
lgsi_subgroup_bbox_origin指示由lgsi_layer_group_id指示的层组的lgsi_subgroup_id指示的子组的子组边界框的原点。
lgsi_subgroup_bbox_size指示由lgsi_layer_group_id指示的层组的lgsi_subgroup_id指示的子组的子组边界框的大小。
lgsi_origin_bits_minus加1指示shintax元素lgsi_origin_xyz的以比特为单位的长度。
lgsi_origin_xyz指示所有分区的起源。lgsi_origin_xyz[k]的值可以等于sps_bounding_box_offset[k]。
lgsi_origin_log2_scale指示用于缩放lgsi_origin_xyz的分量的缩放因子。lgsi_origin_log2_scale的值可以等于sps_bounding_box_offset_log2_scale。
图37图示根据实施例的点云数据发送设备。
图37是图示与根据实施例的点云数据发送方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003、图2中的获取20000/编码20001/发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图33至图36中的比特流和参数的生成、图37和图40至图42中的编码以及图43中的传输方法等)相对应的设备的框图。
图37中的设备的每个组件可以对应于硬件、软件、处理器和/或其组合。
将参考图37来描述用于编码/发送PCC数据的详细功能组件的实施例。一旦输入点云数据,编码器可以分别对位置信息(几何数据)(例如,XYZ坐标、phi-theta坐标等)和属性信息(属性数据)(例如,颜色、反射率、强度、灰度、不透明度、介质、材料、光泽度等)编码。压缩的数据被划分成多个单元以进行传输。子比特流生成器可以将数据划分为适合于基于用于打包的分层结构信息选择比特流单元中的必要信息的单元。
在一些实施例中,当不同类型的比特流被包括在单个切片中时,编码器可以根据它们的目的隔离生成的比特流(AEC比特流和DC比特流)。然后,取决于层组信息,各自切片或邻近信息可以被包括在一个切片中。然后,诸如比特流类型、bitstream_offset、bitstream_length和比特流方向的信息以及层组信息、层组中包括的层信息、节点的数量、层深度信息、子层中包括的节点的数量,可以由元数据生成器根据每个切片ID来递送。
参考图37,几何编码器可以对点云数据的几何数据进行编码。属性编码器可以对点云数据的属性数据进行编码。子比特流生成器可以接收(八叉树)编译的几何比特流、直接编译的几何比特流和编译的属性比特流,并且基于子比特流生成切片。编码器(即,发送设备)可以复用并发送切片和与其相关的元数据。
关于子比特流生成器,发送设备(或处理器)可以对(八叉树)编译的几何比特流进行分段。此外,它可以对直接编译的几何比特流进行分段。此外,可以对编译的属性比特流进行分段。发送设备可以在每层组的基础上生成子比特流。可以通过组合分段的几何比特流来生成子比特流。几何比特流和分段的属性比特流可以被生成为切片。可以基于与层组结构有关的信息来执行上述过程。结合生成分段的切片的操作,元数据生成器可以接收与分层结构相关的信息,并且生成相关元数据并将相关元数据递送到接收侧。
在一些实施例中,切片-子组分段操作可以在编码器之前执行。例如,图29中的子组划分过程可以由层组结构生成器执行。层组结构生成器可以接收点云数据并执行子组划分。基于生成的子组和子组相关信息,编码器可以对点云数据进行编码。
图38图示根据实施例的点云数据接收设备。
图38是图示与根据实施例的点云数据接收方法/设备(即,图1中的接收设备10004、接收器10005和点云视频解码器10006、图2的发送20002/解码20003/渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27至图29中的解码、图33至图36中的比特流解析、图38中的解码、图40至图42中的解码、图44中的接收方法等)相对应的设备的框图。
图38中的设备对应于图37中的发送设备,并且可以通过相应的操作或者与发送设备的操作相反的过程来解码点云数据。
图38中的设备的每个组件可以对应于硬件、软件、处理器和/或其组合。
将参考图38来描述用于接收/解码PCC数据的详细功能组件的实施例。当输入比特流时,接收器可以对用于位置信息的比特流和用于属性信息的比特流进行分类和处理。然后,子比特流分类器可以基于比特流报头中的信息将比特流传递到适当的解码器。可替选地,它可以在此过程中选择接收器所需的层。几何数据和属性数据可以分别由几何解码器和属性解码器基于数据的特性从分类的比特流重构,并且然后转码为用于由渲染器最终输出的格式。
当包括不同种类的几何比特流时,可以通过比特流分离器对每个比特流单独进行解码,如图38所示。几何解码器可以区分并处理基于八叉树编译的算术熵编码比特流和直接编译的比特流。它们可以基于关于比特流类型、bitstream_offset、bitstream_length和比特流方向的信息来分离。对于分离的比特流,可以包括将相同类型的比特流片段进行级联的操作。其可以被包括作为用于将通过层组分离的比特流处理成连续比特流的过程,并且可以基于层组信息按顺序排列比特流。当比特流可并行处理时,它们可以在没有级联操作的情况下由解码器处理。
参考图38,接收设备(或解码器)可以通过接收器接收包含点云数据的比特流(参见图33)。解复用可以将比特流区分为切片和元数据。子比特流分类器可以对包含点云数据的比特流和切片进行分类。切片选择器可以选择要解码的切片。比特流分离器可以将切片中包括的比特流分割成子比特流。比特流可以包括(八叉树)编译的几何比特流和直接编译的几何比特流。属性比特流可以由属性解码器解码。(八叉树)编译的几何比特流和直接编译的几何比特流可以由分离器分离。比特流片段级联器可以组合分段的比特流。几何解码器可以对片段、组合的片段等进行解码。渲染器可以渲染解码的几何数据和解码的属性数据。
图39图示根据实施例的子比特流分类方法。
图39更详细地图示图38的操作。
参考图39,在流程图中指定子比特流分类器的操作。当接收到的数据在逐个切片的基础被输入时,元数据解析器递送参数集信息,诸如SPS、GPS、APS和TPS。基于所递送的信息,可以确定可扩展性。当允许执行可扩展传输时,根据图39中的流程图来识别用于可扩展传输的切片结构。首先,可以基于诸如通过GPS发送的num_scalable_layers、scalable_layer_id、tree_depth_start、tree_depth_end、node_size、num_nodes、num_slices_in_scalable_layer以及slice_id的信息来识别几何切片结构。如果aligned_slice_struct_enabled_flag等于1,也可以用同样的方式识别属性切片结构。例如,可以基于八叉树对几何进行编码,可以基于可扩展LoD或可扩展RAHT对切片(属性)进行编码,并且通过相同切片分区生成的几何/属性切片对可以具有与相同的八叉树层相同数量的节点。在这样的情况下,几何切片ID的范围根据目标可扩展层确定。基于slice_id_offset确定属性切片ID的范围,并根据确定的范围选择几何/属性切片。如果aligned_slice_sturcutre_enabled_flag等于0,则可以基于诸如通过APS发送的num_scalable_layers、scalable_layer_id、tree_depth_start、tree_depth_end、node_size、num_nodes、num_slices_in_scalable_layer、以及slice_id的信息来单独识别属性切片结构,并且可以根据可扩展操作的目的来限制所需要的属性片ID的范围。基于该范围,可以在重构之前通过每个切片ID选择需要的切片。通过上述过程选择的几何/属性切片被传送到解码器的输入。
在上面的描述中,已经基于接收器的可扩展传输或可扩展选择描述了根据片结构的解码处理。当scalable_transmission_enabled_flag等于0时,通过省略测距几何/属性切片ID(geom/attr切片id)并选择整个切片的操作,即使在不可扩展过程中也可以使用该方案。即使在这种情况下,也可以通过经由诸如SPS、GPS、APS或TPS的参数集递送的切片结构信息来使用关于先前的切片(例如,属于较高层的切片或通过ref_slice_id指定的切片)的信息。
如在实施例中,当存在不同类型的几何比特流时,可以在切片选择期间选择包括在针对不同比特流的范围内的所有切片。如果不同类型的比特流被包括在一个切片中,则可以基于偏移和长度信息来分离每个比特流,并且可以根据用于解码的层组顺序来处理分离的比特流。
参考图39,根据实施例的接收设备(或解码器)可以接收比特流并基于比特流中包含的参数信息(例如,SPS、GPS、APS等)获取可扩展切片结构。可以估计几何可扩展层。可以确定几何切片ID的范围。可以选择切片ID范围内的切片ID的几何切片。可以基于所选择的几何切片来分割比特流。分割的比特流可以被级联。可以输出包含可扩展选择的点云数据的算术熵编译的比特流和直接编译的比特流。当aligned_slice_struct_enabled_flag等于1时,可以基于切片ID偏移来搜寻对应的属性切片ID。可以基于属性切片ID来选择属性切片。可以输出所选择的属性切片。当标志不等于1时,可以估计属性可扩展层。可以确定属性切片ID的范围。
参考图15,根据实施例的点云数据发送设备可以提供以下效果。
对于点云数据,根据实施例,可以根据准则来划分和发送压缩的数据。例如,当使用分层编译时,可以根据层来划分并发送压缩的数据。在这种情况下,可以增加发送侧处的存储和传输效率。
图15图示通过压缩点云数据的几何和属性来提供服务的实施例。在基于PCC的服务中,可以取决于接收器性能或传输环境来调整和发送压缩率或数据的数量。如果点云数据在逐个切片的基础上被捆绑,接收器性能或传输环境可能会改变。在这种情况下,有必要1)将比特流预转码成适合于各个环境的形式,单独进行存储,并在传输时选择比特流,或者2)在传输之前执行转码。在这种情况下,如果要支持的接收器环境的数量增加或者传输环境频繁改变,则可能会引起与存储空间相关的问题或者由转码产生的延迟的问题。
根据用于传输的层划分压缩的数据可以使得能够在无需单独的转码操作的情况下在比特流阶段选择性地仅传送预压缩的数据的必要部分。这在存储空间方面是有效的,因为每个流只需要一个存储空间。它在比特流选择器带宽方面也很高效,因为在传输之前仅选择必要的层。
根据实施例的用于接收点云数据的方法/设备可以提供下面公开的效果。
图40图示根据实施例的点云数据发送/接收方法。
根据实施例的用于发送点云数据的方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003、图2中的获取20000-编码20001-发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图33至图36中的比特流和参数的生成、图37和图40至图42中的编码以及图43中的发送方法)以及根据实施例的用于接收点云数据的方法/设备(即,图1中的接收设备10004、接收器10005、点云视频解码器10006、图2中的发送20002-解码20003-渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27至图29中的解码、图33至图36中的比特流解析、图38中的解码、图40至图42中的解码、以及图44中的接收方法)可以通过分段如图40中的来发送和接收点云数据。图40中的每个组件可以对应于硬件、软件、处理器和/或其组合。
图41图示根据实施例的点云数据发送/接收方法。
根据实施例的用于发送点云数据的方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003、图2中的获取20000-编码20001-发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码,图27至图29中的编码、图33至图36中的比特流和参数的生成、图37和图40至图42中的编码以及图43中的发送方法)以及根据实施例的用于接收点云数据的方法/设备(即,图1中的接收设备10004、接收器10005、点云视频解码器10006、图2中的发送20002-解码20003-渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23中的解码、图27至图29中的解码、图33至图36中的比特流解析、图38中的解码、图40至图42中的解码、以及图44中的接收方法)可以通过分段与图41所示的来发送和接收点云数据。图41中的每个组件可以对应于硬件、软件、处理器和/或其组合。
实施例包括一种根据点云数据的特定准则来划分和发送压缩的数据的方法。当使用分层编译时,可以根据层来划分和发送压缩的数据,这可以增加接收侧的效率。
图41图示在发送由层组成的点云数据的情况下发送侧和接收侧处的操作。如果无论接收器的性能如何,发送使整个PCC数据能够被重构的信息,则接收器通过解码重构点云数据之后选择对应于所需层的数据(即,执行数据选择或子采样)。在这种情况下,因为已传送的比特流已经被解码,所以在以低延迟为目标的接收器中可能会出现延迟,或者取决于接收器性能可能不执行解码。
根据实施例,当比特流被划分为切片并递送时,接收器可以根据解码器性能或取决于应用领域要表示的点云数据的密度来选择性地将比特流传送到解码器。在这种情况下,通过在解码之前执行选择,可以增加解码器效率并且可以支持具有各种性能的解码器。
实施例的设备的各种元件可以通过硬件、软件、固件或其组合来实现。实施例中的各种元件可以被实现在单个芯片上,例如,单个硬件电路上。根据实施例,实施例可以可选地在单独的芯片上实现。根据实施例,实施例的至少一个组件可以在包括用于执行根据实施例的操作的指令的一个或多个处理器内实现。
根据上述实施例的操作可以由根据实施例的发送装置和/或接收设备执行。发送/接收设备可以包括被配置为发送或接收媒体数据的发送器/接收器、被配置为存储用于根据实施例的过程的指令(程序代码、算法、流程图和/或数据)的存储器、以及被配置为控制发送/接收设备的操作的处理器。
处理器可以被称为控制器等,并且可以对应于例如硬件、软件和/或其组合。根据上述实施例的操作可以由处理器执行。此外,处理器可以被实现为用于上述实施例的操作的编码器/解码器等。
图42图示根据实施例的层组切片。
根据实施例的用于发送点云数据的方法/设备(即,图1中的发送设备10000、点云视频编码器10002和发送器10003,图2中的获取20000-编码20001-发送20002、图4中的编码器、图12中的发送设备、图14中的设备、图15至图23中的编码、图27至图29中的编码、图33至图36中的比特流和参数的生成、图37和图40至图42中的编码以及图43中的发送方法)以及根据实施例的用于接收点云数据的方法/设备(即,图1中的接收设备10004、接收器10005以及点云视频解码器10006、图2中的发送20002-解码20003-渲染20004、图10和图11中的解码器、图13中的接收设备、图14中的设备、图15至图23的解码、图27至图29的解码、图33至图36中的比特流解析、图38中的解码、图40至图42中的解码、以及图44中的接收方法)可以基于层组对点云数据进行切片、编码和解码,如图42所示。
根据实施例的方法/设备可以基于分层切片的可扩展性和空间可达性来支持高分辨率ROI。
参考图42,编码器可以生成八叉树层组或每个层组的空间子组的比特流切片。根据该请求,可以选择并发送与每个分辨率的ROI匹配的切片。因为除了所请求的ROI之外的详细信息不被包括在比特流中,所以整个比特流大小可以小于基于图块的方法中的大小。接收器的解码器可以组合切片以生成三个输出。例如,1)高级别视图输出可以从层组切片1生成;2)中级别视图输出可以在层组切片1和层组2的所选子组中生成;3)精细细节输出的低级别视图可以在层组1以及层组2和3的选定子组中生成。因为可以渐进地生成输出,所以接收器可以提供观看体验,诸如放大/缩小。分辨率可以从高级别视图逐渐增加到低级别视图。
编码器42000可以对应于作为根据实施例的点云编码器的几何编码器和属性编码器。编码器可以基于层组(或组)对点云数据进行切片。层可以被称为树的深度、层的级别等。如部分42000-1中所示,几何的八叉树的深度和/或属性层的级别可以被划分为层组(或子组)。
切片选择器42001与编码器42000结合,可以选择分割的切片(或子切片)并选择性地且部分地发送诸如层组1到层组3的数据。
解码器42002可以对选择性地且部分地发送的点云数据进行解码。例如,它可以解码用于层组1的高级别视图(其具有高深度/层/级别或索引为0,或接近根)。此后,可以通过基于层组1和层组2通过层组1单独增加深度/级别的索引来解码中级别视图。可以基于层组1到层组3来解码低级别视图。
图43图示根据实施例的发送点云数据的方法。
根据实施例的发送点云数据的方法可以包括对点云数据进行编码(S4300)。
根据实施例的编码操作可以包括图1中的发送设备10000、点云视频获取器10001和编码器10002、图2的获取20000-编码20001、图4的编码器、图12的发送设备、图14的XR设备1430、图15的点云数据编码、图16至图28中的编码、图29中的包含点云数据的子组的划分和编码、图31和图32中的边界框和点选择之后的编码、图33至36中的参数和比特流的生成、图37中的基于层组的比特流生成、以及图40至42中的点云数据的部分和可扩展编码的操作。
根据实施例的用于发送点云数据的方法可以进一步包括发送包含点云数据的比特流(S4301)。
根据实施例的发送可以包括图1中的发送设备和发送器10003、图2中的发送20002、图4的几何/属性比特流发送、图12的发送处理器12012、图14的XR设备1430的点云发送、图15的比特流部分发送、根据图16至图32的编码的点云数据发送、图33至图36中的参数和比特流发送、图37中的基于层组的比特流发送、以及图40至图42中的部分可扩展点云数据发送的操作。
图44图示根据实施例的接收点云数据的方法。
接收方法可以包括与图43中的发送方法相对应的过程和逆过程。
根据实施例的接收点云数据的方法可以包括接收包含点云数据的比特流(S4400)。
根据实施例的接收可以包括图1中的接收设备10004和接收器10005、根据图2中的发送20002的接收、图10和11中的几何/属性比特流的接收、图13中的接收器13000、由图14中的XR设备1430接收点云数据、图15中的部分/可扩展接收、图33至图36中的参数和比特流解析、图38中的接收器、图39中的接收操作以及图40至图42中的点云数据的接收的操作。
根据实施例的接收点云数据的方法可以进一步包括对点云数据进行解码(S4401)。
根据实施例的解码操作可以包括图1中的解码器10006、图2中的解码20003、图10和图11中的解码器、图13中的接收设备的解码、通过图14中的XR设备1430的解码、图15至图28中的解码、图29至图32中的基于子组的解码、图33至图36中的基于参数的解码、图38和图39中的基于子比特流的解码、以及图40至图42中的部分/可扩展解码的操作。
参考图1,发送方法可以包括对点云数据进行编码,以及发送包含点云数据的比特流。
参考图27,关于生成自适应子组边界框的子划分,点云数据的编码可以包括将包含点云数据的边界框划分成子组边界框。可以基于边界框中包括的点数,基于与边界框相关的轴来划分子组边界框。该轴可以包括X轴、Y轴和Z轴之一,并且包括在子组边界框中的点数可以小于阈值。子组边界框的数量可以小于阈值。这里,阈值可以取决于系统来设置,可以具有相同或不同的值,并且可以作为信令信息(参数)被发送到解码器。
参考图29,划分可以包括基于边界框中包括的点数大于阈值,选择用于沿X轴划分边界框的子划分、用于沿Y轴划分边界框的子划分、或者用于基于与子划分相关的点数沿Z轴的边界框子划分之一;基于选择的子划分中包括的点数大于阈值,选择用于基于与子划分相关的点数沿未选择的轴划分所选定的子划分的子划分之一;以及基于选定的子划分中包括的点数大于阈值,沿未选定的轴划分选定的子划分,其中子划分的大小可以彼此相同或不同。这里,阈值可以取决于系统来设置,可以具有相同或不同的值,并且可以作为信令信息(参数)被发送到解码器。考虑到点数和子划分(子组边界框)的数量,可以创建各种数量的子组边界框。分割点云数据可以允许更有效地压缩和重构数据。
参考图31,关于受限于节点扫描顺序的子组边界框,点云数据的编码可以包括按照莫顿顺序扫描子组边界框中包括的点。
参考图32,关于偏离边界(参考父节点)或偏离莫顿顺序(在旋转的情况下),点云数据的编码可以包括基于在根据莫顿顺序扫描子组边界框中包括的点期间点偏离边界,扫描该点的上节点(父节点)中包括的点,以及基于特定轴生成子组边界框,在与特定轴相关的平面上旋转子组边界框90度。可以通过与沿轴划分的子组框的扫描顺序进行比较来确定旋转角度,并且可以基于一个平面旋转框的位置以匹配扫描顺序。
参考图33至图36,关于比特流和参数,比特流可以包含序列参数集、几何数据单元报头和层组结构信息。
参考图34,比特流可以包含指示子组边界框是否已被使用的信息(non_cubic_subgroup_enabled_flag)以及与子组边界框的位置相关的信息(subgroup_bbox_max/min)。
参考图35,比特流可以包含指示子组边界框是否旋转的信息(subgroup_bbox_rotation_enabled_flag)和指示旋转方向的信息(rotation_direction)。
参考图36,比特流可以包含关于子组边界框的数量、位置和大小的信息。
根据该实施例的点云数据发送方法由发送设备执行。发送设备可以包括编码器,其被配置为对点云数据进行编码;以及发送器,其被配置为发送包含点云数据的比特流。发送设备可以包括存储器和包括处理器的编码器。
参考图1,接收方法可包括接收包含点云数据的比特流,并对点云数据进行解码。该接收方法可以执行与发送方法相对应或相反的过程。
点云数据的解码可以包括对包含点云数据的边界框被划分成的子组边界框进行解码。可以基于边界框中包括的点数基于与边界框相关的轴来划分子组边界框。该轴可以包括X轴、Y轴和Z轴之一,并且包括在子组边界框中的点数可以小于阈值。子组边界框的数量可以小于阈值。
该划分可以包括,基于边界框中包括的点数大于阈值,选择用于沿X轴划分边界框的子划分、用于沿Y轴划分边界框的子划分、或者用于基于与子划分相关的点数沿Z轴划分边界框的子划分之一;基于所选择的子划分包括的点数大于阈值,选择用于基于与子划分相关的点数沿未选择的轴划分所选择的子划分的子划分之一;以及基于所选择的子划分中包括的点数大于阈值,沿未选择的轴划分所选择的子划分,其中,子划分的大小可以彼此相同或不同。
点云数据的解码可以包括根据莫顿顺序扫描包括在子组边界框中的点。
接收方法可以由接收设备执行。接收设备可以包括:接收器,其被配置为接收包含点云数据的比特流;以及解码器,其被配置为对点云数据进行解码。另外,其可以包括存储器和包括处理器的解码器。
因此,实施例可以提供以下效果。使用固定的子组大小可以使其更容易地从空间随机访问的角度确定所需区域的范围,但可能不允许均匀地划分点。实施例可以解决这个问题。
一些子组具有比解码器能够处理的点数(即,级别限制)更多的点。实施例可以解决这个问题。
换句话说,为了避免这个问题,提出了一种划分子组的方法。通过比较划分子组时的点数和成本,可以增加压缩性能和精度。
根据实施例,可以基于感兴趣的区域选择性地对切片进行编译、发送和重构。根据实施例,可以考虑点云数据的密度来生成切片。包含分割子组边界框的切片可以被选择性地编译。另外,点云数据可以使用固定的子组大小和子组划分被灵活地切片。
已经从方法和/或设备的角度描述了实施例,并且可以应用方法和设备的描述使得彼此补充。
尽管为了简单起见已经单独描述了附图,但是可以通过合并各自附图中所图示的实施例来设计新的实施例。根据本领域的技术人员的需要设计可由计算机读取的记录有用于执行上述实施例的程序的记录介质也落在所附权利要求及其等同物的范围内。根据实施例的设备和方法可不限于上述实施例的配置和方法。可通过选择性地组合所有或一些实施例来对实施例进行各种修改。尽管参考附图描述了优选实施例,但本领域技术人员将理解,在不脱离所附权利要求中描述的本公开的精神或范围的情况下,可对实施例进行各种修改和变化。这些修改不应从实施例的技术思想或观点单独地理解。
实施例的设备的各种元件可以由硬件、软件、固件或其组合实现。实施例中的各种元件可由单个芯片实现,例如,单个硬件电路。根据实施例,根据实施例的组件可分别被实现为单独的芯片。根据实施例,根据实施例的设备的至少一个或更多个组件可以包括能够执行一个或更多个程序的一个或更多个处理器。一个或更多个程序可执行根据实施例的任一个或更多个操作/方法或者包括用于执行其的指令。用于执行根据实施例的设备的方法/操作的可执行指令可被存储在被配置成由一个或更多个处理器执行的非暂时性CRM或其它计算机程序产品中,或者可被存储在被配置成由一个或更多个处理器执行的暂时性CRM或其它计算机程序产品中。另外,根据实施例的存储器可用作不仅涵盖易失性存储器(例如,RAM),而且涵盖非易失性存储器、闪存和PROM的概念。另外,也可按载波(例如,经由互联网的传输)的形式实现。另外,处理器可读记录介质可分布到经由网络连接的计算机系统,使得处理器可读代码可按分布式方式存储和执行。
在此说明书中,术语“/”和“,”应该被解释为指示“和/或”。例如,表达“A/B”可以意指“A和/或B”。此外,“A、B”可以意指“A和/或B”。此外,“A/B/C”可以意指“A、B和/或C中的至少一个”。另外,“A/B/C”可以意指“A、B和/或C中的至少一个”。此外,在本说明书中,术语“或”应该被解释为指示“和/或”。例如,表达“A或B”可以意指1)仅A、2)仅B或3)A和B二者。换言之,本文档中使用的术语“或”应该被解释为指示“另外地或另选地”。
诸如第一和第二的术语可用于描述实施例的各种元件。然而,根据实施例的各种组件不应受上述术语限制。这些术语仅用于将一个元件与另一元件相区分。例如,第一用户输入信号可以被称为第二用户输入信号。类似地,第二用户输入信号可以被称为第一用户输入信号。这些术语的使用应该不脱离各种实施例的范围来解释。第一用户输入信号和第二用户输入信号均是用户输入信号,但除非上下文清楚地另外规定,否则并不意指相同的用户输入信号。
用于描述实施例的术语被用于描述具体实施例的目的,并非旨在限制实施例。如在实施例的描述和权利要求中使用的,除非上下文清楚地另外规定,否则单数形式“一(a)”、“一个(an)”、“该(the)”包括复数个所指对象。表达“和/或”被用于包括术语的所有可能组合。诸如“包括”或“具有”的术语旨在指示图形、数量、步骤、元件和/或组件的存在,并且应该理解为不排除另外存在图形、数量、步骤、元件和/或组件的可能性。如本文所使用的,诸如“如果”和“当”的条件表达不限于可选情况,并且旨在当满足特定条件时被解释为执行相关操作或者根据特定条件解释相关定义。
根据本说明书中描述的实施例的操作可以由根据实施例的包括存储器和/或处理器的发送/接收设备来执行。存储器可以存储用于处理/控制根据实施例的操作的程序,并且处理器可以控制本说明书中描述的各种操作。处理器可以被称为控制器等。在实施例中,操作可以由固件、软件和/或其组合来执行。固件、软件和/或其组合可以存储在处理器或存储器中。
根据上述实施例的操作可以由根据实施例的发送设备和/或接收设备执行。发送/接收设备包括:发射器/接收器,其被配置成发送和接收媒体数据;存储器,其被配置成存储用于根据实施例的过程的指令(程序代码、算法、流程图和/或数据);以及处理器,其被配置成控制发送/接收设备的操作。
处理器可以被称为控制器等,并且可以对应于例如硬件、软件和/或其组合。根据上述实施例的操作可以由处理器执行。另外,处理器可以被实现为用于上述实施例的操作的编码器/解码器。
本公开的方式
如上所述,已经在实现实施例的最佳模式中描述了相关内容。
工业实用性
如上所述,实施例可以完全或部分地被应用于点云数据发送/接收设备和系统。
对于本领域的技术人员将会显而易见的是,能够在实施例的范围内对实施例进行各种改变或修改。
因此,旨在实施例覆盖此公开的修改和变化,只要它们落入所附权利要求及其等效物的范围内。

Claims (15)

1.一种发送点云数据的方法,所述方法包括:
对点云数据进行编码;以及
发送包括所述点云数据的比特流。
2.根据权利要求1所述的方法,其中,所述点云数据的编码包括:
将包含所述点云数据的边界框划分为子组边界框,
其中,基于所述边界框中包括的点的数量,基于与所述边界框相关的轴来划分所述子组边界框,
其中:
所述轴包括X轴、Y轴和Z轴之一;
所述子组边界框中包括的所述点的数量小于阈值;以及
所述子组边界框的数量小于阈值。
3.根据权利要求2所述的方法,其中,所述划分包括:
基于所述边界框中包括的所述点的数量大于所述阈值,选择用于沿所述X轴划分所述边界框的子划分、用于沿所述Y轴划分所述边界框的子划分、或用于基于与所述子划分相关的所述点的数量沿所述Z轴划分所述边界框的子划分之一;
基于选择的子划分中包括的所述点的数量大于阈值,选择用于基于与所述子划分相关的所述点的数量沿未选择的轴划分所述选择的子划分之一;以及
基于所述选择的子划分中包括的所述点的数量大于所述阈值,沿所述未选择的轴划分所述选择的子划分,
其中,所述子划分的大小彼此不同。
4.根据权利要求2所述的方法,其中,所述点云数据的编码包括:
根据莫顿顺序来扫描所述子组边界框中包括的点。
5.根据权利要求2所述的方法,其中,所述点云数据的编码包括:
基于在根据莫顿顺序扫描所述子组边界框中包括的所述点期间点偏离边界,扫描所述点的上节点中包括的点;以及
基于所述子组边界框是基于特定轴生成的,在与所述特定轴相关的平面上旋转所述子组边界框90度。
6.根据权利要求1所述的方法,其中,所述比特流包含序列参数集、几何数据单元报头和层组结构信息。
7.根据权利要求1所述的方法,其中,所述比特流包含:
指示是否使用子组边界框的信息;以及
关于所述子组边界框的位置的信息。
8.根据权利要求1所述的方法,其中,所述比特流包含:指示子组边界框是否旋转的信息;以及
指示所述旋转的方向的信息。
9.根据权利要求1所述的方法,其中,所述比特流包含关于子组边界框的数量、位置和大小的信息。
10.一种用于发送点云数据的设备,所述设备包括:
编码器,所述编码器被配置为对点云数据进行编码;以及
发送器,所述发送器被配置为发送包含所述点云数据的比特流。
11.一种接收点云数据的方法,所述方法包括:
接收包含点云数据的比特流;以及
解码所述点云数据。
12.根据权利要求11所述的方法,其中,所述点云数据的解码包括:
解码通过划分包含所述点云数据的边界框而形成的子组边界框,
其中,基于所述边界框中包括的点的数量,基于与所述边界框相关的轴来划分所述子组边界框,
其中:
所述轴包括X轴、Y轴和Z轴之一;
所述子组边界框中包括的所述点的数量小于阈值;以及
所述子组边界框的数量小于阈值。
13.根据权利要求12所述的方法,其中,所述划分包括:
基于所述边界框中包括的所述点的数量大于所述阈值,选择用于沿所述X轴划分所述边界框的子划分、用于沿所述Y轴划分所述边界框的子划分、或用于基于与所述子划分相关的所述点的数量沿所述Z轴划分所述边界框的子划分之一;以及
基于选择的子划分中包括的所述点的数量大于阈值,选择用于基于与所述子划分相关的所述点的数量沿未选择的轴划分所述选择的子划分之一;
基于所述选择的子划分中包括的所述点的数量大于所述阈值,沿所述未选择的轴划分所述选择的子划分,
其中,所述子划分的大小彼此不同。
14.根据权利要求12所述的方法,其中,对所述点云数据的解码包括:
根据莫顿顺序来扫描所述子组边界框中包括的点。
15.一种用于接收点云数据的设备,所述设备包括:
接收器,所述接收器被配置为接收包含点云数据的比特流;以及
解码器,所述解码器被配置为对所述点云数据进行解码。
CN202280066977.6A 2021-10-08 2022-10-07 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法 Pending CN118056405A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2021-0134379 2021-10-08
KR20210134379 2021-10-08
PCT/KR2022/015149 WO2023059136A1 (ko) 2021-10-08 2022-10-07 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Publications (1)

Publication Number Publication Date
CN118056405A true CN118056405A (zh) 2024-05-17

Family

ID=85803624

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280066977.6A Pending CN118056405A (zh) 2021-10-08 2022-10-07 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法

Country Status (3)

Country Link
KR (1) KR20240056739A (zh)
CN (1) CN118056405A (zh)
WO (1) WO2023059136A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3346449B1 (en) * 2017-01-05 2019-06-26 Bricsys NV Point cloud preprocessing and rendering
CN107403456B (zh) * 2017-07-28 2019-06-18 北京大学深圳研究生院 一种基于kd树和优化图变换的点云属性压缩方法
CN109993839B (zh) * 2019-04-09 2022-11-25 北京大学深圳研究生院 一种自适应的点云条带划分方法
CN113632142A (zh) * 2019-07-02 2021-11-09 腾讯美国有限责任公司 点云压缩的方法和装置
US20230059625A1 (en) * 2020-01-16 2023-02-23 Lg Electronics Inc. Transform-based image coding method and apparatus therefor

Also Published As

Publication number Publication date
KR20240056739A (ko) 2024-04-30
WO2023059136A1 (ko) 2023-04-13

Similar Documents

Publication Publication Date Title
US11057645B2 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
EP3996044A1 (en) Point cloud data processing method and apparatus
CN114175100A (zh) 用于处理点云数据的方法和装置
CN114009046A (zh) 用于处理点云数据的装置和方法
US20220230360A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20230334703A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
CN114051730A (zh) 处理点云数据的设备和方法
US12003769B2 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20220351421A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
EP4240014A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
CN117730539A (zh) 点云数据发送设备和方法以及点云数据接收设备和方法
US20220327742A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
EP4083922A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
CN116438799A (zh) 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN118056405A (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法
CN113597771B (zh) 用于处理点云数据的设备和方法
EP4373097A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US20230281878A1 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
KR20240047385A (ko) 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치
CN117157983A (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法
CN118020304A (zh) 点云数据发送设备、点云数据发送方法、点云数据接收设备以及点云数据接收方法
CN118202657A (zh) 点云数据发送装置和方法以及点云数据接收装置和方法
CN118160314A (zh) 点云数据发送装置及方法与点云数据接收装置及方法
CN118056404A (zh) 点云数据发送方法、点云数据发送装置、点云数据接收方法以及点云数据接收装置
CN118160310A (zh) 点云数据发送方法、点云数据发送装置、点云数据接收方法及点云数据接收装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination