掌桥专利:专业的专利平台
掌桥专利
首页

基于视频的点云压缩中的单遍边界检测

文献发布时间:2023-06-19 13:48:08


基于视频的点云压缩中的单遍边界检测

技术领域

本公开总体上涉及多媒体数据。更具体地,本公开涉及用于对点云进行压缩和解压缩的设备和方法。

背景技术

为了满足自4G通信系统的部署以来增加的对无线数据业务的需求,已经努力开发了改进的5G或准5G通信系统。因此,5G或准5G通信系统也被称为“超4G网络”或“后LTE系统”。5G通信系统被认为是在更高频率(毫米波)频带(例如,60GHz频带)中实现的,以便实现更高的数据速率。为了减少无线电波的传播损耗并增加传输距离,在5G通信系统中讨论了波束成形、大规模多输入多输出(MIMO)、全维MIMO(FD-MIMO)、阵列天线、模拟波束成形、大规模天线技术。此外,在5G通信系统中,正在基于高级小型小区、云无线电接入网络(RAN、)超密集网络、装置到装置(D2D)通信、无线回程、移动网络、协作通信、协作多点(CoMP)、接收端干扰消除等进行针对系统网络改进的开发。在5G系统中,已经开发了作为高级编码调制(ACM)的混合FSK和QAM调制(FQAM)和滑动窗口叠加编码(SWSC),以及作为高级接入技术的滤波器组多载波(FBMC)、非正交多址(NOMA)和稀疏码多址(SCMA)。

作为人类产生并消费信息的以人为中心的连接网络的互联网现在正在演进为物联网(IoT),在物联网中,诸如事物的分布式实体在没有人类干预的情况下交换和处理信息。作为IoT技术和通过与云服务器连接的大数据处理技术的组合的万物联网(IoE)已经出现。由于IoT实现需要诸如“感测技术”、“有线/无线通信和网络基础设施”、“服务接口技术”和“安全技术”的技术元素,因此最近已经研究了传感器网络、机器对机器(M2M)通信、机器类型通信(MTC)等。这样的IoT环境可以提供通过收集和分析在连接的事物之间产生的数据来为人类生活创造新的价值的智能互联网技术服务。通过现有信息技术(IT)与各种工业应用之间的融合和组合,IoT可被应用于各种领域,包括智能家居、智能建筑、智能城市、智能汽车或联网汽车、智能电网、医疗保健、智能家电和高先进医疗服务。

与此一致,已经对将5G通信系统应用于IoT网络进行各种尝试。例如,诸如传感器网络、机器类型通信(MTC)和机器对机器(M2M)通信的技术可通过波束成形、MIMO和阵列天线来实现。作为上述大数据处理技术的云无线电接入网络(RAN)的应用也可被认为是5G技术和IoT技术之间的融合的示例。

由于随时可用诸如智能电话的强大手持装置,三百六十度(360°)视频正在成为体验沉浸式视频的新方式。360°视频通过捕获360°视野的世界能够为消费者提供沉浸式“现实生活”、“在场”体验。用户能够交互地改变他们的视点并动态地查看捕获场景或对象中的他们期望的任何部分。显示和导航传感器可实时跟踪用户的头部移动,以确定360°视频中的用户想要查看的区域。本质上是三维(3D)的多媒体数据,诸如点云能够被使用在沉浸式环境中。

发明内容

技术问题

点云是3D空间中表示对象的点的集合。点云在诸如游戏、3D地图、可视化、医疗应用、增强现实、虚拟现实、自动驾驶、多视图重放、6自由度(6DoF)沉浸式媒体等各种应用中是常见的。如果未压缩,则点云通常需要大量带宽用于传输。由于大比特率的要求,点云通常在传输之前被压缩。压缩诸如点云的3D对象通常需要专用硬件。为了避免专用硬件压缩3D点云,可将3D点云操纵到能够被压缩的传统二维(2D)帧上并在不同装置上重构3D点云,以便由用户观看。对2D帧进行压缩和解压缩可产生降低点云的视觉质量的伪像。

技术方案

本公开提供了基于视频的点云压缩中的单遍边界检测。

在一个实施例中,提供了一种用于点云解码的解码装置。解码装置包括通信接口和处理器。所述通信接口被配置为接收比特流。所述处理器被配置为从所述比特流解码包括像素的第一帧。第一帧的像素的一部分表示3D点云的被组织为与3D点云的各个点簇相应的图块的点的几何结构位置。所述处理器还被配置为从所述比特流解码包括像素的第二帧。第二帧的像素的一部分表示3D点云的点的属性信息,并且第二帧中的像素的位置与第一帧中的像素的各个位置相应。所述处理器还被配置为从比特流解码占用图帧。占用图帧包括识别第一帧中的像素的表示3D点云的点的几何结构位置的所述一部分和第二帧中的像素的表示3D点云的点的属性信息的所述一部分的像素。另外,所述处理器被配置为使用第一帧、第二帧和占用图帧来重构所述3D点云。所述处理器还被配置为执行占用图帧的单遍,以基于占用图帧内的像素的值来识别所重构的3D点云的与第一帧和第二帧中的位于距所述图块中的任一个图块的边界的接近阈值内的像素子集对应的点。

在另一实施例中,提供了一种用于点云解码的方法。所述方法包括接收比特流。所述方法还包括从所述比特流解码包括像素的第一帧。第一帧的像素的一部分表示3D点云的被组织为与3D点云的各个点簇相应的图块的点的几何结构位置。所述方法另外包括从所述比特流解码包括像素的第二帧。第二帧的像素的一部分表示3D点云的点的属性信息,并且第二帧中的像素的位置与第一帧中的像素的各个位置对应。所述方法还包括从比特流解码占用图帧。占用图帧包括识别第一帧中的像素的表示3D点云的点的几何结构位置的所述一部分和第二帧中的像素的表示3D点云的点的属性信息的所述一部分的像素。另外,所述方法包括使用第一帧、第二帧和占用图帧来重构所述3D点云。所述方法还包括执行占用图帧的单遍以基于占用图帧内的像素的值识别所重构的3D点云的与第一帧和第二帧中的位于距所述图块中的任何一个图块的边界的接近阈值内的像素子集对应的点。

在另一实施例中,提供了一种用于点云编码的编码装置。所述编码装置包括通信接口及处理器。所述处理器被配置为针对3D点云生成第一帧和第二帧。第一帧包括像素,其中,像素的一部分表示所述3D点云的被组织为与所述3D点云的各个点簇相应的图块的点的几何结构位置。第二帧包括像素,其中,第二帧的像素的一部分表示3D点云的点的属性信息。第二帧中的像素的位置与第一帧中的像素的各个位置对应。所述处理器还被配置为生成占用图帧。占用图帧包括识别第一帧中的像素的表示3D点云的点的几何结构位置的所述一部分和第二帧中的像素的表示3D点云的点的属性信息的所述一部分的像素。所述处理器另外被配置为对第一帧进行编码以生成几何结构子流,对第二帧进行编码以生成属性子流,并且对占用图帧进行编码以生成占用图子流。响应于对几何结构子流、属性子流和占用图子流进行解码,所述处理器被配置为使用第一帧、第二帧和占用图帧来重构所述3D点云。另外地,所述处理器被配置为执行占用图帧的单遍以基于占用图帧内的像素的值来识别所重构的3D点云的与第一帧和第二帧中的位于距所述图块中的任何一个图块的边界的接近阈值内的像素子集对应的点。处理器还被配置为对几何结构子流、属性子流和占用图子流进行组合以生成比特流。所述通信接口被配置为发送所述比特流。

根据以下附图、描述和权利要求,其它技术特征对于本领域技术人员而言可以是显而易见的。

本发明的有益效果

本公开的实施例提供了用于将点云转换为2D表示的系统和方法,该2D表示可被传输并且然后被重构为用于渲染的点云。

附图说明

为了更完整地理解本公开及其优点,现在结合附图参照以下描述,其中相同的参考标号表示相同的部件:

图1示出了根据本公开的实施例的示例通信系统;

图2和图3示出了根据本公开的实施例的示例电子装置;

图4A示出了根据本公开的实施例的示例3D点云;

图4B示出了根据本公开的实施例的由多个投影平面围绕的点云的示图;

图4C和4D示出了根据本公开的实施例的包括表示图4A的3D点云的图块的示例2D帧;

图4E示出了根据本公开的实施例的重构出的3D点云中的示例颜色伪像;

图5A示出了根据本公开的实施例的示例环境架构的框图;

图5B示出了根据本公开的实施例的编码器的示例框图;

图5C示出了根据本公开的实施例的解码器的示例框图;

图6A示出了根据本公开的实施例的用于识别单个查询像素周围的边界点的示例方法;

图6B示出了根据本公开的实施例的用于识别单个查询像素周围的边界点的示例方法;

图6C示出了根据本公开的实施例的用于识别边界点的示例方法;

图7A示出了根据本公开的实施例的用于识别边界点的示例滑动窗口;

图7B示出了根据本公开的实施例的包括图块的占用图的示例部分;

图7C-7M示出了根据本公开的实施例的通过在占用图上移动滑动窗口识别边界点来识别边界点的示例过程;

图8示出了根据本公开的实施例的用于对点云进行解码的示例方法;以及

图9示出了根据本公开的实施例的用于对点云进行编码的示例方法。

具体实施方式

在进行下面的详细描述之前,阐述贯穿本专利文件使用的特定词语和短语的定义可能是有利的。术语“耦接”和它的派生词指两个或更多个元件之间的任何直接或间接通信,无论这些元件是否彼此物理接触。术语“发送”、“接收”和“通信”以及其派生词涵盖直接和间接通信两者。术语“包括”和“包含”以及其派生词意指包括但不限于。术语“或”是包含性的,意指和/或。短语“与……相关联”及其派生词意指包括、被包括在……内、与……互连、包含、被包含在……内、连接到或与……连接、耦接到或与……耦接、可与……通信、与……协作、交错、并置、接近于、绑定到或与……绑定、具有、具有……的性质、与……具有关系等。术语“控制器”指控制至少一个操作的任何装置、系统或其部分。这样的控制器可以以硬件或硬件和软件的组合以及/或者固件来实现。与任何特定控制器相关联的功能可以是集中式的或分布式的,无论是本地的还是远程的。短语“……中的至少一个”当与一列项目一起使用时,意指可以使用所列项目中的一个或更多个的不同组合,并且可仅需要列中的一个项目。例如,“A、B和C中的至少一个”包括以下组合中的任何一个:A、B、C、A和B、A和C、B和C、以及A和B和C。

此外,下面描述的各种功能可以由一个或更多个计算机程序实现或支持,计算机程序中的每一个由计算机可读程序代码形成并体现在计算机可读介质中。术语“应用”和“程序”指适于以合适的计算机可读程序代码实现的一个或更多个计算机程序、软件组件、指令集、过程、功能、对象、类、实例、相关数据或其一部分。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、对象代码和可执行代码。短语“计算机可读介质”包括能够由计算机访问的任何类型的介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、硬盘驱动器、紧凑盘(CD)、数字视频光盘(DVD)或任何其他类型的存储器。“非暂时性”计算机可读介质不包括传输暂态电信号或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括能够永久存储数据的介质和能够存储数据并稍后重写数据的介质,诸如可重写光盘或可擦除存储器装置。

贯穿本专利文件,提供了对其他特定词语和短语的定义。本领域普通技术人员应当理解,在许多情况下(如果不是大多数情况),这样的定义适用于这样定义的词语和短语的先前以及将来的使用。

下面讨论的图1至图9以及本专利文件中的用于描述本公开的原理的各种实施例仅是说明性的,并且不应以任何方式解释为限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当布置的系统或装置中实现。

增强现实(AR)是驻留在真实世界环境中的对象被用虚拟对象、虚拟信息或两者增强的真实世界环境的交互式体验。虚拟现实(VR)是整个场景由计算机生成的视觉场景的渲染版本。在特定实施例中,AR和VR包括视觉体验和音频体验两者。视觉渲染被设计为当用户在由应用或AR或VR场景定义的限制内移动时,向观察者或用户尽可能自然地模仿真实世界的视觉刺激以及听觉感官刺激(如果可用的话)。例如,VR将用户置于对用户的头部移动做出响应的沉浸式世界中。在视频级别,通过一起提供尽可能多地覆盖视场(FOV)的视频体验以及渲染视频的视角与头部移动的同步来实现VR。

许多不同类型的装置能够提供与AR或VR相关联的沉浸式体验。一个示例装置是头戴式显示器(HMD)。HMD表示向用户提供AR和VR体验的许多类型的装置中的一个。HMD是使得用户能够观看VR场景并基于用户头部的移动来调整所显示的内容的装置。通常,HMD依赖于集成到装置中并与外部计算机连接的专用屏幕(系留),或者依赖于插入到HMD中的装置(诸如,智能电话)(未系留)。第一种方法利用一个或更多个轻量屏幕并且受益于高计算能力。相比之下,基于智能电话的系统利用更高的移动性并且可以更便宜地生产。在这两种情况下,所生成的视频体验是相同的。注意,如本文所使用的,术语“用户”可表示使用电子装置的人或另一装置(诸如,人工智能电子装置)。

点云是三维对象的虚拟表示。例如,点云是3D空间中的点的集合,并且每个点位于3D空间内的特定几何结构位置,并且包括诸如颜色的一个或更多个属性。点云可类似于VR或AR环境中的虚拟对象。网格是VR或AR环境中的对象的另一种类型的虚拟表示。点云或网格可以是对象、多个对象、虚拟场景(其包括多个对象)等。点云和网格通常用于各种应用,包括游戏、3D投影、可视化、医学、AR、VR、自动驾驶、多视图重放、6-DOF沉浸式媒体,仅举几例。如本文所使用的,术语点云和网格可被互换使用。

点云表示体积视觉数据。点云由位于3D空间中的多个点组成,其中3D点云中的每个点包括由3元组(X,Y,Z)坐标值表示的几何结构位置。当通过三个坐标识别每个点时,3D环境或空间中的精确位置被识别。每个点在3D环境或空间中的位置可以相对于原点、点云的其他点或其组合。原点是X、Y和Z轴相交的位置。在某些实施例中,点位于对象的外表面上。在其他实施例中,这些点遍布在对象的内部结构和外表面两者中。在另外的实施例中,点沿着对象的表面定位,并且可定位在点云的内部区域内。

除了点的几何结构位置(3D空间中的点的位置)之外,点云中的每个点还可包括诸如颜色、纹理、反射率、强度、表面法线等属性。在一些实施例中,3D点云的单个点可以具有多个属性。在一些应用中,点云也可以用于近似计算光场数据,其中每个点包括多个视图相关的颜色信息(R、G、B三元组或Y、U、V三元组)。

单个点云可包括数十亿个点,其中每个点与几何结构位置和一个或更多个属性相关联。几何结构位置和与点相关联的每个附加属性占据一定数量的比特。例如,点云中的单个点的几何结构位置可占用三十个比特。例如,如果单个点的每个几何结构位置用X值、Y值和Z值定义,则每个坐标(X、Y和Z)使用十个比特,总计三十个比特。类似地,指定单个点的颜色的属性可消耗二十四个比特。例如,如果基于红色值、绿色值及蓝色值定义单个点的颜色分量,则每个颜色分量(红色、绿色及蓝色)使用八个比特,总计二十四个比特。结果,具有每个坐标10个比特的几何属性数据和每个颜色值八个比特的颜色属性数据的单个点占据五十四个比特。每个附加属性增加了单个点所需的比特。如果帧包括一百万个点,则每帧的比特数是五千四百万个比特(每点五十四个比特乘以每帧一百万个点)。如果帧速率是每秒三十帧并且不经过压缩,则每秒1.62千兆字节(每帧五千四百万比特乘以每秒三十帧)将从一个电子装置传输到另一电子装置,以便第二装置显示点云。因此,由于与单个点云相关联的数据的大小和复杂性,将未压缩的点云从一个电子装置传输到另一个电子装置使用大量带宽。因此,在传输之前对点云进行压缩。

本公开的实施例考虑到,由于传输点云所需的带宽,压缩点云对于加快和改进点云从一个装置(诸如,源装置)到另一装置(诸如,显示装置)的传输是必要的。某些专用硬件组件可用于满足实时需求或减少传输和渲染3D点云中的延迟或滞后;然而,这样的硬件组件通常是昂贵的。另外,许多视频编解码器不能对3D视频内容(诸如点云)进行编码和解码。通过充分利用现有2D视频编解码器来对点云进行压缩和解压缩使得在不需要新的或专用的硬件的情况下,点云的编码和解码能够广泛可用。根据本公开的实施例,当点云从3D表示转换为2D表示时,充分利用现有视频编解码器可被用于压缩和重构点云。在某些实施例中,点云从3D表示到2D表示的转换包括通过创建图块(patch)将3D点云的点簇投影到2D帧上。此后,可以使用诸如HEVC、AVC、VP9、VP8、VVC等的视频编解码器来压缩表示类似于2D视频的3D点云的2D帧。

为了将点云从一个装置发送到另一装置,3D点云被分为多个点簇,这些点簇被表示为2D帧上的图块。2D帧可包括3D点云相对于不同投影平面的投影。帧可以包括表示点的几何结构位置的值。帧还可以表示点云的不同属性。例如,一个属性帧可包括表示与点中的每一个相关联的颜色信息的值。解码器使用帧来重构3D点云,使得点云可被渲染、被显示,然后由用户查看。

当点云被解构以适合多个2D帧并被压缩时,可使用比用于传输原始点云的带宽更少的带宽来传输帧。下面更详细描述的图4A至图4D示出了将点云投影到不同平面上并随后将投影存储到2D帧中的各个阶段。例如,示出了点云可以是360°视图的对象的图4A示出了3D点云的两个视图。图4B示出了将3D点云投影到不同平面上的过程。在将点云(诸如,图4A的点云)投影到不同平面上之后,图4C和图4D分别示出了几何结构帧和属性帧(属性帧表示3D点云的点的颜色),其包括对应于各种投影的图块。

本公开的实施例提供了用于将点云转换为2D表示的系统和方法,该2D表示可被传输并且然后被重构为点云以用于渲染。在某些实施例中,点云被解构为被打包成帧的多个图块。在某些实施例中,帧包括相同属性的图块。当一个帧中的一个图块和第二帧中的另一图块位于相同坐标上时,3D点云的以所述一个帧中的所述一个图块表示的点对应于以所述第二帧中的所述另一图块表示的相同点。例如,表示几何结构的帧中的位置(u,v)处的像素是表示诸如颜色的属性的帧中的相同(u,v)位置处的像素的几何结构位置。在其他实施例中,一个帧中的图块表示与点云的点相关联的多个属性,诸如3D空间中的点的几何结构位置和颜色。

编码器可以从每个点分离出几何结构信息和属性信息。编码器针对不同的投影平面对3D点云的点进行分组(或聚类),然后将点组存储为2D帧上的图块。表示几何结构和属性信息的图块分别被打包为几何结构视频帧和属性视频帧,其中任何图块内的每个像素对应于3D空间中的点。几何结构视频帧用于对几何结构信息进行编码,并且对应的属性视频帧用于对点云的属性(诸如,颜色)进行编码。3D点的两个横向坐标(相对于投影平面)对应于几何结构视频帧(u,v)中的列索引和行索引加上横向偏移,该横向偏移确定整个图块在视频帧内的位置。3D点的深度被编码为视频帧中的像素的值加上图块的深度偏移。3D点云的深度取决于3D点云的投影是从XY坐标、YZ坐标还是XZ坐标获取的。

在生成帧之后,可以通过充分利用各种视频压缩编解码器、图像压缩编解码器或两者来压缩帧。例如,编码器首先生成几何结构帧,然后使用诸如HEVC的2D视频编解码器来压缩几何结构帧。为了对属性帧(诸如,3D点云的颜色)进行编码,编码器对用于重构3D点云的3D坐标的编码的几何结构帧进行解码。编码器对重构的点云进行平滑。此后,编码器从原始点云的颜色值内插每个点的颜色值。然后将内插的颜色值打包到被压缩的颜色帧中。

编码器还可生成占用图(也称为占用图帧),其示出2D视频帧中的投影点的位置。例如,由于图块可能不占据整个生成的帧,因此占用图指示几何结构帧和属性帧的哪些像素对应于点云的点,以及哪些像素是空的/无效的并且不对应于点云的点。在某些实施例中,占用图帧被压缩。可以复用压缩的几何结构帧、压缩的颜色帧(和任何其他属性帧)和占用图帧以生成比特流。然后,编码器或另一装置将包括2D帧的比特流发送到不同装置。

解码器接收比特流,将比特流解压缩为帧,并基于帧内的信息重构点云。在重构点云之后,可以渲染和显示3D点云以供用户观察。在某些实施例中,表示几何结构的帧以及不同属性的帧被单独编码和解码。在其他实施例中,表示几何结构的帧以及不同属性的帧被一起编码和解码。

本公开的实施例提供了用于改进3D点云的重构的系统和方法。改进3D点云的重构降低了重构3D点云所需的处理能力,并提高了3D点云的视觉质量。例如,平滑3D点云的与位于图块边界处或附近的像素相应的点可改善点云的视觉外观,同时可以减少所传输的表示点的数据量。

根据本公开的实施例,提供了用于使用视频编解码器执行点云压缩和解压缩的架构和方法。当3D点云从3D表示被转换为2D表示时,3D点云的点被聚类成组并投影到帧上,其中聚类的点生成被打包到2D帧上的图块。由于某些2D帧的尺寸约束,在3D点云上彼此不相邻的两个图块可能被打包为在单个帧中彼此相邻。当点云的两个非邻近图块在2D帧中被彼此相邻地打包时,基于块的视频编解码器可能无意地将来自一个图块的像素与来自另一图块的像素混合。当来自一个图块的像素被无意地包括在另一个图块中时,当解码器重构点云时,在图块边界处可能发生可见伪像。

因此,本公开的实施例提供了用于识别重构的3D点云的由帧中的图块边界处或附近的像素表示的点的系统和方法。因为所识别的点由帧中的图块边界处或附近的像素表示,所以这些点被称为边界点。之后,可平滑边界点以去除视觉伪像,从而改善点云的视觉外观。当使用占用图帧的单遍来识别边界点时,编码器或解码器的运行时间可以减少超过30%。

图1示出了根据本公开的实施例的示例通信系统100。图1所示的通信系统100的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用通信系统100的其他实施例。

通信系统100包括便于通信系统100中的各种组件之间通信的网络102。例如,网络102可在网络地址之间传送IP包、帧转发帧、异步传输模式(ATM)信元或其他信息。网络102包括一个或更多个局域网(LAN)、城域网(MAN)、广域网(WAN)、诸如互联网的全球网络的全部或一部分、或者在一个或更多个位置处的任何其他一个或多个通信系统。

在该示例中,网络102便于服务器104与各种客户端装置106-116之间通信。客户端装置106-116可以是例如智能电话、平板计算机、膝上型计算机、个人计算机、可穿戴装置、HMD等。服务器104可以表示一个或更多个服务器。每个服务器104包括可为一个或更多个客户端装置(诸如,客户端装置106-116)提供计算服务的任何合适的计算或处理装置。每个服务器104可例如包括一个或更多个处理装置、存储指令和数据的一个或更多个存储器、以及便于通过网络102进行通信的一个或更多个网络接口。如下面更详细描述的,服务器104可将表示点云的压缩比特流发送到一个或更多个显示装置,诸如客户端装置106-116。在某些实施例中,每个服务器104可包括编码器。

每个客户端装置106-116表示通过网络102与至少一个服务器(诸如服务器104)或其他计算装置交互的任何合适的计算或处理装置。客户端装置106-116包括台式计算机106、移动电话或移动装置108(诸如,智能电话)、PDA 110、膝上型计算机112、平板计算机114和HMD 116。然而,可在通信系统100中使用任何其他或另外的客户端装置。智能电话表示一类移动装置108,其是具有移动操作系统和用于语音、短消息服务(SMS)和互联网数据通信的集成移动宽带蜂窝网络连接的手持装置。HMD 116可显示包括一个或更多个3D点云的360°场景。在某些实施例中,客户端装置106-116中的任何一个可包括编码器、解码器或两者。例如,移动装置108可记录视频,然后对视频进行编码,使得视频能够被发送到客户端装置106-116中的一个。在另一示例中,膝上型计算机112可被用于生成虚拟3D点云,虚拟3D点云然后被编码并发送到客户端装置106-116中的一个。

在该示例中,一些客户端装置108-116与网络102间接通信。例如,移动装置108和PDA 110经由一个或更多个基站118(诸如,蜂窝基站或eNodeB(eNB))进行通信。此外,膝上型计算机112、平板计算机114和HMD 116经由一个或更多个无线接入点120(诸如,IEEE802.11无线接入点)进行通信。注意,这些仅用于说明,并且客户端装置106-116中的每一个可以直接与网络102通信,或者经由任何合适的中间装置或网络与网络102间接通信。在某些实施例中,服务器104或客户端装置106-116中的任一个可用于对点云进行压缩,生成表示点云的比特流,且将比特流发送到另一客户端装置,诸如客户端装置106到116中的任一个。

在某些实施例中,客户端装置106-114中的任一个将信息安全且有效地传输到另一装置,诸如例如服务器104。此外,客户端装置106-116中的任一个可以触发其自身与服务器104之间的信息传输。客户端装置106-114中的任一个在经由支架附接到手机时可以用作VR显示器,并且可起到与HMD 116类似的功能。例如,移动装置108在附接到支架系统并佩戴在用户的眼睛上时可以起到与HMD 116类似的作用。移动装置108(或任何其他客户端装置106-116)可以触发其自身与服务器104之间的信息传输。

在某些实施例中,客户端装置106-116中的任一个或服务器104可创建3D点云、对3D点云进行压缩、发送3D点云、接收3D点云、渲染3D点云或其组合。例如,服务器104接收3D点云,分解3D点云以适配在2D帧上,对帧进行压缩以生成比特流。比特流可被发送到存储装置(诸如,信息储存库)或者客户端装置106-116中的一个或更多个。对于另一示例,客户端装置106-116中的一个可以接收3D点云,分解3D点云以适配在2D帧上,对帧进行压缩以生成可被发送到存储装置(诸如,信息储存库)、客户端装置106-116中的另一个或服务器104的比特流。

尽管图1示出了通信系统100的一个示例,但是可以对图1进行各种改变。例如,通信系统100可以以任何合适的布置包括任何数量的每个组件。通常,计算和通信系统具有各种各样的配置,并且图1不将本公开的范围限制于任何特定配置。虽然图1示出了可以使用本专利文件中公开的各种特征的一个操作环境,但是这些特征可以用在任何其他合适的系统中。

尽管图1示出了通信系统100的一个示例,但是可以对图1进行各种改变。例如,通信系统100可以以任何合适的布置包括任何数量的每个组件。通常,计算和通信系统具有各种各样的配置,并且图1不将本公开的范围限制于任何特定配置。虽然图1示出了可以使用本专利文件中公开的各种特征的一个操作环境,但是这些特征可以用在任何其他合适的系统中。

图2和图3示出了根据本公开的实施例的示例电子装置。具体地,图2示出了示例服务器200,并且服务器200可表示图1中的服务器104。服务器200可表示一个或更多个编码器、解码器、本地服务器、远程服务器、集群计算机、以及充当单个无缝资源池的组件、基于云的服务器等。服务器200可以由图1的客户端装置106-116中的一个或更多个或另一服务器访问。

服务器200可表示一个或更多个本地服务器、一个或更多个压缩服务器或一个或更多个编码服务器,诸如编码器。在某些实施例中,编码器可以执行解码。如图2所示,服务器200包括支持至少一个处理装置(诸如,处理器210)、至少一个存储装置215、至少一个通信接口220和至少一个输入/输出(I/O)单元225之间的通信的总线系统205。

处理器210执行可被存储在存储器230中的指令。处理器210可包括任何合适布置的任何合适数量和类型的处理器或其他装置。示例类型的处理器210包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。在某些实施例中,处理器210可对存储在存储装置215内的3D点云进行编码。在某些实施例中,当3D点云由编码器编码时,编码器还对编码的3D点云进行解码,以确保当重构点云时,重构的3D点云与编码之前的3D点云匹配。

存储器230和永久存储装置235是表示能够存储和便于信息(诸如,临时或永久的数据、程序代码或其他合适的信息)的检索的任何结构的存储装置215的示例。存储器230可表示随机存取存储器或任何其他合适的易失性或非易失性存储装置。例如,存储在存储器230中的指令可包括用于将点云分解为图块的指令、用于将图块打包在2D帧上的指令、用于压缩2D帧的指令以及用于以特定顺序对2D帧进行编码以生成比特流的指令。存储在存储器230中的指令还可包括用于渲染如通过VR头戴式装置(诸如,图1的HMD 116)观看的360°场景的指令。永久性存储装置235可以包含支持数据的长期存储的一个或更多个组件或装置,诸如只读存储器、硬盘驱动器、闪存或光盘。

通信接口220支持与其他系统或装置的通信。例如,通信接口220可以包括便于通过图1的网络102进行通信的网络接口卡或无线收发器。通信接口220可支持通过任何合适的物理或无线通信链路的通信。例如,通信接口220可以将包含3D点云的比特流发送到另一装置,诸如客户端装置106-116中的一个。

I/O单元225允许数据的输入和输出。例如,I/O单元225可通过键盘、鼠标、键区、触摸屏或其他合适的输入装置为用户输入提供连接。I/O单元225还可将输出发送到显示器、打印机或其他合适的输出装置。然而,注意,诸如当经由网络连接发生与服务器200的I/O交互时,可以省略I/O单元225。

注意,虽然图2被描述为表示图1的服务器104,但是可以在各种客户端装置106-116中的一个或更多个中使用相同或相似的结构。例如,台式计算机106或膝上型计算机112可具有与图2中所示的结构相同或相似的结构。

图3示出了示例电子装置300,并且电子装置300可表示图1中的客户端装置106-116中的一个或更多个。电子装置300可以是移动通信装置,诸如例如移动站、用户站、无线终端、台式计算机(类似于图1的台式计算机106)、便携式电子装置(类似于图1的移动装置108、PDA 110、膝上型计算机112、平板计算机114或HMD 116)等。在某些实施例中,图1的客户端装置106-116中的一个或更多个可包括与电子装置300相同或相似的配置。在某些实施例中,电子装置300是编码器、解码器或两者。例如,电子装置300可用于数据传输、图像或视频压缩、图像或视频解压缩、编码、解码和媒体渲染应用。

如图3所示,电子装置300包括天线305、射频(RF)收发器310、发送(TX)处理电路315、麦克风320和接收(RX)处理电路325。RF收发器310可包括例如RF收发器、蓝牙收发器、WI-FI收发器、ZIGBEE收发器、红外收发器和各种其他无线通信信号收发器。电子装置300还包括扬声器330、处理器340、输入/输出(I/O)接口(IF)345、输入部350、显示器355、存储器360和传感器365。存储器360包括操作系统(OS)361和一个或更多个应用362。

RF收发器310从天线305接收从网络102(诸如,WI-FI、蓝牙、蜂窝、5G、LTE、LTE-A、WiMAX或任何其他类型的无线网络)中的接入点(诸如,基站、WI-FI路由器或蓝牙装置)或其他装置发送的传入RF信号。RF收发器310对传入RF信号进行下变频以生成中频或基带信号。中频或基带信号被发送到RX处理电路325,RX处理电路325通过对基带或中频信号进行滤波、解码和/或数字化来生成处理后的基带信号。RX处理电路325将处理后的基带信号发送到扬声器330(诸如,用于语音数据)或发送到处理器340以进行进一步处理(诸如,用于网络浏览数据)。

TX处理电路315接收来自麦克风320的模拟或数字语音数据或来自处理器340的其他传出基带数据。传出基带数据可包括web数据、电子邮件或交互式视频游戏数据。TX处理电路315对传出基带数据进行编码、复用和/或数字化,以生成经处理的基带或中频信号。RF收发器310从TX处理电路315接收传出的处理后的基带或中频信号,并将基带或中频信号上变频为经由天线305发送的RF信号。

处理器340可包括一个或更多个处理器或其他处理装置。处理器340可执行存储在存储器360(诸如,OS 361)中的指令,以便控制电子装置300的整体操作。例如,处理器340可根据众所周知的原理通过RF收发器310、RX处理电路325和TX处理电路315控制前向信道信号的接收和反向信道信号的发送。处理器340可包括任何合适布置的任何合适数量和类型的处理器或其他装置。例如,在某些实施例中,处理器340包括至少一个微处理器或微控制器。示例类型的处理器340包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。

处理器340还能够执行驻留在存储器360中的其他进程和程序,诸如接收和存储数据的操作。处理器340可根据执行进程的需要将数据移入或移出存储器360。在某些实施例中,处理器340被配置为基于OS 361或响应于从外部源或操作者接收的信号来执行一个或更多个应用362。例如,应用362可包括编码器、解码器、VR或AR应用、相机应用(用于静止图像和视频)、视频电话呼叫应用、电子邮件客户端、社交媒体客户端、SMS消息客户端、虚拟助理等。在某些实施例中,处理器340被配置为接收和发送媒体内容。

处理器340还被耦接到为电子装置300提供连接到其他装置(诸如,客户端装置106-114)的能力的I/O接口345。I/O接口345是这些附件与处理器340之间的通信路径。

处理器340还被耦接到输入部350和显示器355。电子装置300的操作者可以使用输入部350将数据或输入输入到电子装置300中。输入部350可以是键盘、触摸屏、鼠标、轨迹球、语音输入部或能够充当用户界面以允许用户与电子装置300交互的其他装置。例如,输入部350可包括语音识别处理部,从而允许用户输入语音命令。在另一示例中,输入部350可包括触摸面板、(数字)笔传感器、键或超声输入装置。触摸面板可例如以至少一种方案(诸如,电容方案、压敏方案、红外方案或超声波方案)识别触摸输入。输入部350可以通过向处理器340提供另外的输入而与(一个或更多个)传感器365和/或相机相关联。在某些实施例中,传感器365包括一个或更多个惯性测量单元(IMU)(诸如,加速度计、陀螺仪和磁力计)、运动传感器、光学传感器、相机、压力传感器、心率传感器、高度计等。输入部350还可包括控制电路。在电容方案中,输入部350可识别触摸或接近。

显示器355可以是液晶显示器(LCD)、发光二极管(LED)显示器、有机LED(OLED)、有源矩阵OLED(AMOLED)或能够呈现诸如来自网站、视频、游戏、图像等的文本和/或图形的其他显示器。显示器355的尺寸可被设定为适配在HMD内。显示器355可以是能够创建立体显示的单个显示屏或多个显示屏。在某些实施例中,显示器355是平视显示器(HUD)。显示器355可显示3D对象,诸如3D点云。

存储器360被耦接到处理器340。存储器360的一部分可包括RAM,并且存储器360的另一部分可包括闪存或其他ROM。存储器360可包括表示能够存储和便于信息(诸如数据、程序代码和/或其他合适的信息)的检索的任何结构的永久存储装置(未示出)。存储器360可包括支持数据的长期存储的一个或更多个组件或装置,诸如只读存储器、硬盘驱动器、闪存或光盘。存储器360还可以包括媒体内容。媒体内容可包括各种类型的媒体,诸如图像、视频、三维内容、VR内容、AR内容、3D点云等。

电子装置300还包括可计量物理量或检测电子装置300的激活状态并将计量或检测到的信息转换为电信号的一个或更多个传感器365。例如,传感器365可包括用于触摸输入的一个或更多个按钮、相机、手势传感器、IMU传感器(诸如,陀螺仪或陀螺传感器和加速度计)、眼睛跟踪传感器、气压传感器、磁传感器或磁力计、握持传感器、接近传感器、颜色传感器、生物物理传感器、温度/湿度传感器、照度传感器、紫外(UV)传感器、肌电图(EMG)传感器、脑电图(EEG)传感器、心电图(ECG)传感器、IR传感器、超声传感器、虹膜传感器、指纹传感器、颜色传感器(诸如,红绿蓝(RGB)传感器)等。传感器365还可包括用于控制其中包括的任何传感器的控制电路。

如下面更详细地讨论的,这些传感器365中的一个或更多个可被用于控制用户界面(UI)、检测UI输入、确定用于三维内容显示识别的用户的取向和用户的面向方向等。这些传感器365中的任一个可位于电子装置300内、位于可操作地连接到电子装置300的辅助装置内、位于被配置为容纳电子装置300的手机内,或位于其中电子装置300包括手机的单个装置中。

电子装置300可创建媒体内容,诸如生成3D点云或通过相机捕获(或记录)内容。电子装置300可对媒体内容进行编码以生成比特流(类似于上文所描述的服务器200),使得比特流可被直接发送到另一电子装置或诸如通过图1的网络102被间接发送到另一电子装置。电子装置300可直接从另一电子装置接收比特流,或者诸如通过图1的网络102间接地接收比特流。

当对诸如点云的媒体内容进行编码时,电子装置300可将点云投影到多个图块中。例如,点云的点簇可以被分组在一起并表示为2D帧上的图块。图块可表示点云的单个属性,诸如几何结构、颜色等。可将表示相同属性的图块分别打包到单独的2D帧。然后对2D帧进行编码以生成比特流。在编码过程期间,诸如元数据、标志、占用图、几何结构平滑参数、一个或更多个属性平滑参数、图块子流等的附加内容可被包括在比特流中。

类似地,当对包括在比特流中表示3D点云的媒体内容进行解码时,电子装置300将接收到的比特流解码为帧。在某些实施例中,解码的比特流还包括占用图、2D帧、辅助信息等。几何结构帧可包括指示3D空间中的点云的点的地理坐标的像素。类似地,属性帧可包括指示3D空间中的每个几何结构点的RGB(或YUV)颜色(或任何其他属性)的像素。辅助信息可包括一个或更多个标志、或量化参数大小、一个或更多个阈值、几何结构平滑参数、一个或更多个属性平滑参数、图块子流、或其任何组合。在重构3D点云之后,电子装置300可经由显示器355以三维渲染3D点云。

尽管图2和图3示出了电子装置的示例,但是可对图2和图3进行各种改变。例如,可以组合、进一步细分或省略图2和图3中的各种部件,并且可以根据特定需要添加另外的组件。作为具体示例,处理器340可被划分为多个处理器,诸如一个或更多个中央处理器(CPU)和一个或更多个图形处理单元(GPU)。另外,与计算和通信一样,电子装置和服务器可具有各种各样的配置,并且图2和图3不将本公开限制于任何特定的电子装置或服务器。

图4A、图4B、图4C、图4D和图4E示出了生成表示3D点云的帧的各个阶段。具体地,图4A示出了根据本公开的实施例的示例3D点云400。图4B示出了根据本公开的实施例的被多个投影平面围绕的点云的示图405。图4C和4D示出了根据本公开的实施例的包括表示图4A的3D点云400的图块的2D帧。例如,图4C示出了表示3D点云400的点的几何结构位置的2D帧430,而图4D示出了表示与3D点云400的点相关联的颜色(或另一属性)的帧440。图4E示出了重构的点云450中的示例颜色伪像。在某些实施例中,重构的点云450类似于图4A的3D点云400。

图4A的3D点云400是3D空间中的数据点的集合。3D点云400的每个点包括提供3D点云的结构的几何结构位置和提供关于每个点的信息(诸如,颜色、反射度、材料等)的一个或更多个属性。3D点云400表示整个360°对象。也就是说,可以从各种角度观看点云,诸如正面402、侧面和背面402、顶部、底部。

图4B的图405包括点云406。点云406可以类似于图4A的3D点云400。也就是说,点云406表示整个360°对象。点云406被多个投影平面(诸如,投影平面410、412、414、416、418和420)包围。投影平面410与投影平面412分开预定义距离。例如,投影平面410对应于投影平面XZ0,并且投影平面412对应于投影平面XZ1。类似地,投影平面414与投影平面416分开预定义距离。例如,投影平面414对应于投影平面YZ0,并且投影平面416对应于投影平面YZ1。另外,投影平面418与投影平面420分开预定义距离。例如,投影平面418对应于投影平面XY0,并且投影平面420对应于投影平面XY1。注意,可以包括另外的投影平面,并且投影平面形成的形状可以不同。

在划分过程期间,点云406的每个点被指定给特定投影平面(诸如,投影平面410、412、414、416、418和420)。彼此靠近并且被分配给相同投影平面的点被分组在一起以形成被表示为图块(诸如图4C和图4D中所示的图块中的任一图块)的簇。

图4C和4D分别示出了2D帧430和2D帧440。因为帧430提供图4A的3D点云400的每个点的几何结构位置,所以帧430是几何结构帧。帧430包括表示3D点云400的深度值的多个图块(诸如,图块432)。帧430中的每个像素的值被表示为较浅或较深的颜色,并且与每个像素距特定投影平面(诸如,图4B的投影平面410、412、414、416、418和420中的一个)的距离对应。

因为帧440提供图4A的3D点云400的每个点的颜色,所以帧440是颜色帧(一种类型的属性)。帧440包括表示与3D点云400中的点的颜色相应的值的多个图块(诸如,图块442)。

图4C和图4D中的每个图块可由索引号标识。类似地,图块内的每个像素可以通过它在帧内的位置以及像素所在的图块的索引号来识别。

帧430与帧440之间存在对应关系(或映射)。也就是说,帧430中的每个像素对应于帧440中相同位置处的像素。帧440中的每个颜色像素对应于帧430中的特定几何结构像素。例如,在帧430和帧440中的每个像素之间生成映射。例如,图块432内的每个像素对应于3D空间中的点,并且图块442内的每个像素向3D点云的在图块432中的相同位置处表示的点提供颜色。如帧430和帧440所示,像素中的一些对应于表示3D点云400的有效像素,而其他像素(背景中的黑色区域)对应于不表示3D点云400的无效像素。

3D空间中的非邻近点可以最终被表示为在帧430和440中彼此相邻的像素。例如,在3D空间中彼此不相邻的两个图块可被表示为在帧430和440中彼此相邻的图块。

可利用诸如HEVC、AVC、VP9、VP8、VVC、AV1等的视频编解码器对帧430和帧440进行编码。解码器接收包括帧430和帧440的比特流,并从帧430重构3D点云的几何结构,并基于帧440对点云的几何结构进行着色以便生成如图4E所示的重构的点云450。

图4E的重构点云450应当类似于3D点云400。当帧430和帧440被编码和压缩时,与像素对应的值可以由基于块的视频编解码器混合。如果帧430的单个图块内的像素混合,则当重构点云时,效果通常是可忽略的,这是因为图块内彼此相邻的颜色通常是相似的。然而,如果在帧430的图块中的一个图块(诸如,图块432)的边界处的像素与另一图块的像素混合,则在重构点云时可能创建伪像,类似于如图4E中所示的伪像452。由于图块可能来自点云的截然不同的部分,因此图块的着色可以不同。在基于块的视频编解码器中,编码块可包含来自具有非常不同的着色的图块的像素。这导致颜色从块泄漏到具有非常不同的纹理的另一个块。因此,生成了降低点云的视觉质量的视觉伪像。类似地,如果图块中的一个的边界处的像素与空像素(由黑色背景指示并且不对应于点云的点)混合,则当重构点云时可能生成伪像,这是因为与由空白像素切换的像素对应的点将不会被重构。

重构的点云450示出了伪像452。当与以3D点云400表示的模型的前额对应的图块和与3D点云400的另一部分(诸如,以3D点云400表示的模型的连衣裙)对应的图块紧挨着被打包到帧430中时,可能生成伪像452。这样,表示连衣裙的一部分的图块的颜色值可能被泄漏到与以3D点云400表示的模型的前额相应的图块。在该示例中,颜色值的混合导致在用户的面部中表现为裂缝或孔的降低重构的点云450的视觉质量的伪像。本公开的实施例提供了用于在保持点云的质量的同时通过在伪像的区域处平滑重构的点云来去除伪像的系统和方法。例如,识别并平滑重构的点云的图块边界附近的点。

尽管图4A、图4B、图4C和图4D示出了示例点云和表示点云的2D帧,但是可以对图4A、图4B、图4C和图4D进行各种改变。例如,点云或网格可表示单个对象,而在其他实施例中,点云或网格可表示多个对象、风景(诸如,景观)、AR中的虚拟对象等。在另一示例中,包括在2D帧中的图块可以表示其他属性,诸如亮度、材料等。图4A、图4B、图4C和图4D不将本公开限制于任何特定的3D对象以及表示3D对象的2D帧。

图5A、图5B和图5C示出了根据本公开的实施例的框图。具体地,图5A示出了根据本公开的实施例的示例环境架构500的框图。图5B示出了根据本公开的实施例的图5A的编码器510的示例框图,并且图5C示出了根据本公开的实施例的图5A的解码器550的示例框图。图5A、图5B和图5C的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用其他实施例。

如图5A所示,示例环境架构500包括通过网络502进行通信的编码器510和解码器550。网络502可与图1的网络102相同或相似。在某些实施例中,网络502表示通过一个或更多个网络互连的计算机的“云”,其中网络是利用在被访问时充当单个无缝资源池的集群计算机和组件的计算系统。此外,在某些实施例中,网络502与一个或更多个服务器(诸如,图1的服务器104、服务器200)、一个或更多个电子装置(诸如,图1的客户端装置106-116、电子装置300)、编码器510和解码器550连接。此外,在某些实施例中,网络502可被连接到包含VR和AR媒体内容的信息库(未示出),所述VR和AR媒体内容可以由编码器510编码,由解码器550解码,或者在电子装置上被渲染和显示。

在某些实施例中,编码器510和解码器550可表示服务器104、图1的客户端装置106-116中的一个、图2的服务器200、图3的电子装置300或另一合适的装置。在某些实施例中,编码器510和解码器550可以是通过一个或更多个网络互连的计算机的“云”,其中每一个是当通过网络502被访问时利用集群计算机和组件充当单个无缝资源池的计算系统。在一些实施例中,包括在编码器510或解码器550中的组件的一部分可被包括在不同的装置中,诸如多个服务器104或200、多个客户端装置106-116或不同装置的其他组合。在某些实施例中,编码器510被可操作地连接到电子装置或服务器,而解码器550被可操作地连接到电子装置。在某些实施例中,编码器510和解码器550是相同的装置或被可操作地连接到相同的装置。

下面在图5B中更多地描述编码器510。通常,编码器510从诸如服务器(类似于图1的服务器104、图2的服务器200)或信息库(诸如数据库)或者客户端装置106-116中的一个的另一装置接收3D媒体内容,诸如点云。在某些实施例中,编码器510可从多个相机接收媒体内容并将内容拼接在一起以生成包括一个或更多个点云的3D场景。

编码器510将点云的点投影到表示投影的多个图块中。编码器510将点云的点聚类成组,这些组被投影到诸如XY平面、YZ平面和XZ平面的不同平面上。当投影到平面上时,每个点簇由图块表示。编码器510可将点云投影到2D帧上的二维空间。注意,3D点云的点位于基于(X,Y,Z)坐标值的3D空间中,但是当该点被投影到2D帧上时,表示投影点的像素由通过坐标(u,v)指示的帧的列和行索引表示。另外,‘u’和‘v’的范围可分别从零到深度图像中的行或列的数量。

编码器510将表示点云的图块打包到2D帧上。2D帧可以是视频帧。2D帧中的每一个表示特定属性,诸如,一组帧可以表示几何结构,并且另一组帧可以表示属性(诸如,颜色)。应当注意,可基于更多层以及每个另外定义的属性来生成另外的帧。

编码器510还基于几何结构帧和属性帧来生成占用图,以指示帧内的哪些像素是有效的。通常,对于帧内的每个像素,占用图指示像素是有效像素还是无效像素。例如,如果占用图中的坐标(u,v)处的像素是有效的,则几何结构帧以及对应属性帧中的在坐标(u,v)处的对应像素也是有效的。如果占用图中的在坐标(u,v)处的像素是无效的,则解码器跳过几何结构帧和属性帧中的坐标(u,v)处的对应像素。在某些实施例中,位置(u,v)处的占用图可以是1或0。通常,占用图是二进制的,使得每个像素的值是1或0。当占用图的位置(u,v)处的像素的值为1时,指示属性帧和几何结构帧的(u,v)处的像素是有效的。相比之下,当占用图的位置(u,v)处的像素的值为零时,指示属性帧和几何结构帧的(u,v)处的像素无效。

在某些实施例中,编码器510使用几何结构帧、属性帧和占用图帧来重构点云。编码器510可识别重构的3D点云上的在帧之一上的图块之一的边界上或附近表示的点。之后,编码器510可确定是否针对所识别的边界点执行平滑。

编码器510将表示点云的帧作为编码比特流进行发送。如果对所识别的边界点中的一些或全部执行平滑,则比特流还可包括来自平滑的参数。比特流可通过网络502被发送到信息库(诸如,数据库)或包括解码器(诸如,解码器550)的电子装置,或者解码器550本身。下面在图5B中更详细地描述编码器510。

下面在图5C中更多地描述的解码器550接收表示媒体内容(诸如,点云)的比特流。比特流可包括表示3D点云的数据。在某些实施例中,解码器550可对比特流进行解码并生成多个帧,诸如一个或更多个几何结构帧、一个或更多个属性帧和一个或更多个占用图帧。解码器550使用多个帧来重构可渲染和用户观看的点云。解码器550可识别重构的3D点云上的在帧之一上的图块之一的边界上或附近表示的点。之后,解码器550可确定是否对所识别的边界点执行平滑。

图5B示出了接收3D点云512并生成比特流546的编码器510。比特流546包括表示3D点云512的数据。比特流546可包括多个比特流且可经由图5A的网络502被发送到另一装置,例如解码器550或信息库。编码器510包括图块生成器和打包器514、一个或更多个编码引擎(诸如,编码引擎520a、520b、520c和520d,其被统称为编码引擎520)、重构引擎528、边界检测引擎530、几何结构平滑引擎538a、属性平滑引擎538b和多路复用器542。

3D点云512可被存储在存储器(未示出)中或从另一电子装置(未示出)接收。3D点云512可以是单个3D对象(类似于图4A的3D点云400)或3D对象的组合。3D点云512可以是静止对象或移动的对象。

图块生成器和打包器514通过获取3D点云512的投影来生成图块,并将图块打包成帧。在某些实施例中,图块生成器和打包器514拆分3D点云512的每个点的几何结构信息和属性信息。图块生成器和打包器514可使用两个或更多个投影平面(诸如图4B的两个或更多个投影平面410-420)来聚类3D点云512的点以生成图块。几何结构图块最终被打包到几何结构帧518中。

图块生成器和打包器514为3D点云512的每个点确定最佳投影平面。当投影时,3D点云512的每个点簇表现为图块(也称为规则图块)。单个点簇可由(位于不同帧上的)多个图块表示,其中每个图块表示点簇内的每个点的特定方面。例如,表示点簇的几何结构位置的图块位于几何结构帧518上,并且表示点簇的属性的图块位于属性帧534上。

在针对3D点云512的每个点确定了最佳投影平面之后,图块生成器和打包器514将点分割为作为打包帧(诸如,几何结构帧518)的图块数据结构。如上面讨论的图4C和4D所示,图块按属性来组织并将图块放置在相应的帧内,诸如图块432被包括在几何结构帧430中,并且图块442被包括在属性帧440中。注意,表示同一点簇的不同属性的图块包括对应关系或映射,基于像素的位置在各个帧中的相同位置,一个图块中的像素对应于另一个图块中的相同像素。

图块生成器和打包器514还生成图块信息(提供关于图块的信息,诸如与每个图块相关联的索引号)、占用图帧516、几何结构帧518和属性信息(其由属性生成器532使用以生成属性帧534)。

占用图帧516表示指示帧(诸如几何结构帧518)中的有效像素的占用图。例如,占用图帧516指示几何结构帧518中的每个像素是有效像素还是无效像素。占用图帧516中的每个有效像素对应于几何结构帧518中表示3D点云512在3D空间中的位置点的像素。相反,无效像素是占用图帧516内的对应于几何结构帧518中的不表示3D点云512的点的像素(诸如,图4C和4D的帧430和440中的空/黑色空间)的像素。在某些实施例中,占用图帧516中的一个可对应于几何结构帧518和属性帧534两者(下面讨论)。

例如,当图块生成器和打包器514生成占用图帧516时,占用图帧516包括每个像素的预定义值,诸如零或一。例如,当占用图的位置(u,v)处的像素是零值时,指示几何结构帧518中的(u,v)处的像素是无效的。类似地,当占用图的位置(u,v)处的像素是值1时,指示几何结构帧518中的(u,v)处的像素是有效的,并且从而包括表示3D点云的点的信息。

几何结构帧518包括表示3D点云512的几何结构值的像素。几何结构帧518包括3D点云512的每个点的地理位置。几何结构帧518用于对点云的几何结构信息进行编码。例如,3D点的两个横向坐标(相对于投影平面)对应于几何结构视频帧(u,v)中的列索引和行索引加上横向偏移,该横向偏移指示整个图块在视频帧内的位置。3D点的深度被编码为视频帧中的像素的值加上图块的深度偏移。3D点云的深度取决于3D点云的投影是从XY坐标、YZ坐标还是XZ坐标获取。

编码器510包括一个或更多个编码引擎。例如,编码器510可包括编码引擎520a、编码引擎520b、编码引擎520c及编码引擎520d(统称为编码引擎520)。在某些实施例中,单个编码引擎执行所有单独编码引擎520的操作。在某些实施例中,编码引擎520可被配置为支持8位、10位、12位、14位或16位精度的数据。编码引擎520可包括视频或图像编解码器,诸如HEVC、AVC、VP9、VP8、VVC、EVC、AV1等,以压缩表示3D点云的2D帧。

编码引擎520中的一个或更多个可以以有损或无损方式压缩信息。

在某些实施例中,如所示出的,信息(诸如,图块信息、占用图帧516、几何结构帧518和属性帧534)由独立编码引擎520进行编码。例如,编码引擎520a接收图块序列信息并执行图块序列压缩以生成图块子流522。编码引擎520b接收占用图帧516,执行占用图压缩以生成占用图子流524a。编码引擎520c接收几何结构帧518,执行几何结构压缩以生成几何结构子流526a。编码引擎520d接收属性帧534,执行属性压缩以生成属性子流536。

在某些实施例中,编码引擎520b、编码引擎520c和编码引擎520d可以以较低分辨率对占用图帧516、几何结构帧518和属性帧534进行编码。较低的分辨率可导致帧的整体尺寸减小。当占用图帧516、几何结构帧518和属性帧534以较低分辨率被编码时,在帧被图5C的解码器550的解码引擎解码之后,帧将需要被上采样到帧的原始尺寸。

在编码引擎520b生成占用图子流524a之后,解码引擎(未示出)可解码占用图子流524a以生成重构的占用图帧524b。类似地,在编码引擎520c生成几何结构子流526a之后,解码引擎(未示出)可解码几何结构子流524a以生成重构的几何结构帧526b。在某些实施例中,重构引擎528基于重构的占用图帧524b和重构的几何结构帧526b来重构3D点云的点的几何结构位置。

属性生成器532生成属性帧534。属性生成器532可基于来自3D点云512的属性信息、重构的占用图帧524b、重构的几何结构帧526b以及由图块生成器和打包器514提供的信息来生成属性帧534。

例如,为了生成表示颜色的属性帧534中的一个属性帧,几何结构帧518由编码引擎520c使用诸如HEVC的2D视频编解码器来压缩。由重构引擎528对几何结构子流526a进行解码,并且重构3D点云的几何结构。重构引擎528基于重构的几何结构帧526b重构3D点云的点的几何结构位置。属性生成器532将来自输入点云的颜色值的每个点的属性值(诸如,颜色)内插到重构的点云(并且如果执行平滑,则内插到点云的平滑后的几何坐标)。然后,由属性生成器532分割内插的颜色,以匹配与几何结构信息相同的图块。属性生成器532然后将内插的属性值打包到表示颜色的属性帧534中。

属性帧534表示点云的不同属性。例如,对于几何结构帧518中的一个,可以存在一个或更多个对应的属性帧534。属性帧可包括颜色、纹理、法线、材料属性、反射、运动等。在某些实施例中,属性帧534中的一个属性帧可包括针对几何结构帧518中的一个几何结构帧内的几何结构点中的每个几何结构点的颜色值,而另一属性帧可包括指示相同几何结构帧518内的每个对应几何结构点的反射水平的反射值。每个附加属性帧534表示与特定几何结构帧518相关联的其他属性。在某些实施例中,每个几何结构帧518具有至少一个对应的属性帧534。

当占用图帧516、几何结构帧518和属性帧534由编码引擎520编码并且稍后在解码器550处解码时,来自一个图块的像素可能被无意地包括在另一图块中。结果,可见伪像可能出现在重构的点云中,从而降低点云的视觉质量。例如,几何结构帧518内的像素可由于编码和解码过程而略微偏移。通常,当像素位于图块的中间时,轻微的偏移可能不会显著降低点云的视觉质量。然而,像素离开图块到由占用图指示为空(或无效)的位置的轻微偏移或切换可能导致相当大的伪像,这是因为图像的一部分将不被渲染。类似地,像素从一个图块到另一图块的轻微偏移或切换可引起相当大的伪像。例如,如果包括图4A的3D点云400的面部的一个图块被打包到包括3D点云400的连衣裙的图块旁边,并且编码/解码过程导致从一个图块移动到另一图块的像素分组,则重构的点云将在连衣裙上具有与面部相应的像素,并且反过来,重构的点云将在重构且渲染的点云的面部上具有与连衣裙相应的像素。这种偏移可导致降低点云的视觉质量的可见伪像。

为了减少伪像的出现,可对3D点云的在2D帧中被表示为在图块的边界附近的像素的点进行平滑。为了减少视觉伪像的发生或出现并提高压缩效率,可将平滑应用于点云的点的位置、点云的每个识别的属性(诸如,颜色、反射率等)或点云的几何结构和属性两者。

为了平滑3D点云的几何结构、属性或几何结构和属性两者,编码器510经由边界检测引擎530识别几何结构帧518和属性帧534内的位于每个图块的边界处或附近的像素。在某些实施例中,在编码引擎520d生成属性子流536之后,解码引擎(未示出)可对属性子流536进行解码以生成重构的属性帧。重构的属性帧可用于通过将属性信息应用于重构的3D点云的点来重构3D点云。之后,边界检测引擎530识别重构的几何结构帧526b和重构的属性帧内的位于每个图块的边界处或附近的像素。

边界检测引擎530检查重构的占用图帧524b的像素以识别重构的几何结构帧526b内的图块的边界。可选地,边界检测引擎530检查占用图帧516的像素以识别几何结构帧518内的图块的边界。

边界检测引擎530在占用图帧上执行单遍以识别与点云的点对应的被定位在2D帧中的图块的边界处或附近的像素子集。为了识别点云的边界点,边界检测引擎530检查重构的占用图帧524b内的与查询像素相邻的像素。例如,边界检测引擎530基于占用图帧内的像素的值来识别重构的3D点云的与几何结构帧518中的像素子集对应的点,所述像素子集定位在到图块中的任何一个的边界的接近阈值内。所述像素子集包括与查询像素相距预定义距离的一个或更多个像素。例如,该距离可包括距查询像素一个像素距离内的像素、距查询像素两个像素距离内的像素、距查询像素三个像素距离内的像素等。随着距离增加,所识别的边界点的数量也将增加。

边界检测引擎530检查占用图帧516内的每个像素。该检查包括选择查询像素并基于查询像素的值识别查询像素是否有效。如果查询像素无效,则边界检测引擎530继续选择占用图帧516内的新像素,直到识别出有效的查询像素。

在识别有效查询像素时,边界检测引擎530检查查询像素周围的第一层的像素。第一层的像素包括与查询像素相邻(邻近)并接触查询像素的任何像素。例如,如果查询像素在占用图帧516中的一个的中间,则存在八个邻近像素。下面更详细讨论的图7A示出了围绕查询像素702的第一层的像素704。

边界检测引擎530检查第一层的像素以确定第一层的像素中的任一个是否无效。边界检测引擎530还检查第一层的像素以确定相邻像素中的任何一个是否属于与查询像素所属的图块不同的图块。如果第一层中的像素的任何一个的值指示无效像素,则将查询像素识别为边界像素。类似地,如果第一层中的像素的任何一个属于与查询像素所属的图块不同的图块,则查询像素也被识别为边界像素。

边界检测引擎530还检查第一层的像素以确定邻近像素中的任一个是否位于占用图帧516中的一个的边缘处。如果第一层中的像素中的任一个位于占用图帧516的边缘处,则查询像素被识别为边界像素。例如,如果在第一层中通常存在八个像素,并且边界检测引擎530在第一层中识别出少于八个像素,然后则将查询像素识别为边界像素。

在将查询像素识别为边界像素时,边界检测引擎530将3D点云的点(对应于查询像素)识别为查询点。

如果第一层中的所有像素都有效,属于与查询像素相同的图块,并且不位于占用图帧516的边缘处,则边界检测引擎530还检查查询像素周围的第二层的像素。

例如,如果查询像素在占用图帧516中的一个的中间,则存在十六个邻近像素。下面更详细讨论的图7A示出了围绕查询像素702的第二像素层706。第二层的像素与第一层的像素相邻并接触,使得第二层的像素与查询点相距两个像素的距离。

边界检测引擎530检查第二层的像素以确定第二层的像素中的任一个是否无效。边界检测引擎530还检查第二层的像素以确定(第二层中的)邻近像素中的任一个是否属于与查询像素所属的图块不同的图块。如果第二层中的像素中的任何一个的值指示无效像素,则将查询像素识别为边界像素。类似地,如果第二层中的像素中的任何一个属于与查询像素所属的图块不同的图块,则查询像素也被识别为边界像素。

边界检测引擎530还检查第二层的像素以确定邻近像素中的任何一个是否位于占用图帧516中的一个的边缘处。如果第二层中的像素中的任何一个位于占用图帧516的边缘处,则查询像素被识别为边界像素。例如,如果在第二层中通常存在十六个像素,并且边界检测引擎530识别出少于十六个像素,则将查询像素识别为边界像素。

在将查询像素识别为边界像素时,边界检测引擎530将3D点云的点(对应于查询像素)识别为查询点。如果第二层中的所有像素都有效,属于与查询像素相同的图块,并且不位于占用图帧516的边缘处,则边界检测引擎530然后选择新的有效查询像素。边界检测引擎530继续选择新的查询像素,直到检查了点云的所有点。在某些实施例中,边界检测引擎530继续选择新的查询像素,直到检查了所有占用图帧516。

提供下面的语法(1)以示出使用单遍处理来识别3D点云的边界点。语法(1)的输入包括(i)占用图帧oFrame[i][j],i=0…asps_frame_height-1,j=0…asps_frame_width-1,(ii)x,画布上的重构点的列索引,以及(iii)y,画布上的重构点的行索引。语法(1)的输出是变量boundaryPoint,其是识别点是否位于图块边界附近的布尔变量,其用于指示重构点是否与几何结构或属性平滑相关。

另外,关于以上语法(1),如果i不在0到(asps_frame_height-1)的范围内(包含0和(asps_frame_height-1)),或j不在0到(asps_frame_width-1)的范围内(包含0和(asps_frame_width-1)),则假定oFrame[i][j]等于0。

在边界检测引擎530识别出在图块中的任何一个的边界的接近阈值内的像素子集之后,几何结构平滑引擎538a和属性平滑引擎538b可对3D点云的所识别的点执行平滑。为了执行平滑,生成生成的平滑参数(诸如,几何结构平滑参数540a和属性平滑参数540b)。

复用器542组合图块子流522、占用图子流524a、几何结构子流526a、几何结构平滑参数540a、属性子流536和属性平滑参数540b以创建比特流546。

图5C示出了解码器550,其包括解复用器552、一个或更多个解码引擎(诸如,解码引擎554a、解码引擎554b、解码引擎554c和解码引擎554d)、重构引擎556、几何结构平滑引擎558a、属性平滑引擎558b和边界检测引擎530。

解码器550接收比特流546,诸如由编码器510生成的比特流。解复用器552将比特流546分离成表示不同信息的一个或更多个子流。例如,解复用器552将各种数据流分离成单独的子流,诸如图块子流522、占用图子流524a、几何结构子流526a、属性子流536、几何结构平滑参数540a和属性平滑参数540b。

解码器550包括一个或更多个解码引擎。例如,解码器550可包括解码引擎554a、解码引擎554b、解码引擎554c及解码引擎554d(统称为解码引擎554)。在某些实施例中,单个解码引擎执行所有单独解码引擎554的操作。

解码引擎554a将属性子流536解码为属性帧534a。属性帧534a类似于图5B的属性帧534,不同之处在于一个或更多个像素可能由于产生属性帧534a的帧的编码和解码而偏移。

解码引擎554b将几何结构子流526a解码为几何结构帧526c。几何结构帧526c类似于图5B的几何结构帧526b,不同之处在于一个或更多个像素可能由于产生几何结构帧526c的帧的编码和解码而偏移。

解码引擎554d将占用图子流524a解码成占用图帧524c。占用图帧524c类似于图5B的占用图帧524b,不同之处在于一个或更多个像素可能由于产生占用图帧524c的帧的编码和解码而偏移。

解码引擎554d将图块子流522解码为图块信息522a。图块信息522a类似于如图5B所示的在被编码之前的图块信息。

在对图块信息522d、占用图帧524c、几何结构帧526c和属性帧534a进行解码之后,重构引擎556生成重构的点云。重构引擎556重构点云。重构引擎556类似于图5B的重构引擎528。

边界检测引擎530基于占用图帧524c内的像素的值来识别重构的点云的边界点。解码器550的边界检测引擎530以与图5B的编码器510的边界检测引擎530类似的方式识别重构点云的边界点。

在识别重构的点云的边界点之后,几何结构平滑引擎558a应用几何结构平滑参数540a并对重构的点云的所识别的点进行平滑。

属性变换器560基于由几何结构平滑引擎修改的重构点云来修改重构点云的属性。在属性变换器560修改属性之后,属性平滑引擎558b应用属性平滑参数540b并对重构点云的属性进行平滑。此后,可以渲染并显示重构的点云564。

尽管图5A示出了环境架构500,图5B示出了编码器510,并且图5C示出了解码器550,但是可以对图5A、图5B、图5C和图4D进行各种改变。例如,环境架构500可包括任何数量的编码器或解码器。

图6A、图6B和图6B描述了用于识别位于距图块中的任何一个的边界接近阈值内的边界点的过程。例如,图6A示出了根据本公开的实施例的用于识别单个查询点周围的边界点的示例方法600。图6B示出了根据本公开的实施例的用于识别单个查询点周围的边界点的示例方法620。图6C示出了根据本公开的实施例的用于基于占用图中的像素的值来识别边界点的示例方法650。方法600、620和650可由服务器104、图1的任何客户端装置106-116、图2的服务器200、图3的电子装置300、图5A和图5B的编码器510、图5A和图5C的解码器550或任何其他合适的装置或系统来执行。为了便于解释,方法600、620和650被描述为由图5A和图5B的编码器510和解码器550的边界检测引擎530执行。

图6A的方法600描述了确定在2D帧(诸如几何结构帧、属性帧和占用图帧)上表示的3D点云的单个点是否是边界点的整个过程。

在步骤602,边界检测引擎530从占用图帧中选择单个像素作为查询像素。像素可以位于占用图帧内的任何地方。在某些实施例中,边界检测引擎530首先选择特定像素,诸如由索引号零表示的像素。之后,边界检测引擎530将选择下一像素,诸如由索引号1表示的像素。该过程将继续,直到占用图中的所有像素或3D点云的所选点或所有点已经被识别为边界点或非边界点。

在选择了像素作为查询像素时,在步骤604,边界检测引擎530确定查询像素是否有效。如上所述,占用图包括值。在某些实施例中,这些值是二进制的,诸如零或一。例如,当占用图中的位置(u,v)处的像素的值是第一值(诸如,零)时,指示几何结构帧和属性帧内的相同位置处的对应像素不对应于3D点云的点(并且被认为是无效的)。当占用图中的位置(u,v)处的像素的值是第二值(诸如,一)时,指示几何结构帧和属性帧内的相同位置处的对应像素表示3D点云的点的信息(并且被认为是有效的)。

在确定了查询像素为零(表示无效像素)时,方法600结束,因为3D点云中不存在与占用图中的在位置(u,v)处具有零值的像素相应的点。注意,在确定了查询像素为零时,边界检测引擎530可以返回到步骤602并选择占用图内的新像素作为查询像素。

在确定查询像素是一(表示有效像素)时,在步骤606,边界检测引擎530检查查询像素周围的邻近像素。邻近点在与查询像素相邻并围绕查询像素的第一层的像素内。例如,如果查询像素不在占用图帧的边缘处,则查询像素将具有八个邻近像素。例如,如果查询像素位于(y,x)处,则第一层中的像素被定义为相对于查询像素的(y,x-1)、(y,x+1)、(y-1,x)、(y+1,x)、(y-1,x-1)、(y-1,x+1)、(y+1,x-1)和(y+1,x+1)处的像素。

在步骤608,边界检测引擎530确定围绕查询像素的第一层内的像素中的任何一个是否无效(具有表示不对应于3D点云的像素的值)。如果第一层内的像素中的任何一个无效,则指示查询像素位于图块的边界处,并且因此3D点云的对应点将被识别为边界点。由于查询像素先前被确定为有效,但是相邻像素被认为无效的像素,因此该查询像素被识别为位于图块的边界处。因此,由于查询像素紧邻无效像素,因此将其识别为位于图块的边界处。

在步骤614,如果围绕查询点的第一层内的像素中的至少一个是无效的(具有表示不对应于3D点云的像素的值),则指示与占用图中的查询像素处于相同位置的属性帧中的像素和几何结构帧中的对应像素对应于3D点云的边界点。也就是说,如果第一层内的像素中的任何一个是无效的,则在与查询像素相同的位置处由属性帧和几何结构帧中的像素表示的3D点云的点被识别为边界像素。

如果围绕查询像素的第一层内的所有像素都是有效的(每个像素具有表示几何结构帧和属性帧中的有效像素的值),则在步骤610,边界检测引擎530检查第二层的像素。第二层的像素是与第一层的像素相邻并围绕第一层的像素的像素。例如,如果查询像素被定位在距占用图帧的边缘至少两个像素的距离处,则在查询像素的第二层中存在十六个像素。例如,如果查询像素位于(y,x)处,则第二层中的像素被定义为相对于查询像素的(y-2,x-2)、(y-2,x-1)、(y-2,x)、(y-2,x+1)、(y-2,x+2)、(y-1,x-2)、(y-1,x+2)、(y,x-2)、(y,x+2)、(y+1,x-2)、(y+1,x+2)、(y+2,x-2)、(y+1,x-1)、(y+1,x-1)、(y+1,x)、(y+1,x+1)和(y+1,x+2)处的像素。

在步骤612,边界检测引擎530确定围绕查询像素的第二层内的像素中的任何一个是否无效(具有表示不对应于3D点云的像素的值)。如果第二层内的像素中的任何一个无效,则指示查询像素位于图块的边界处,并且因此3D点云的对应点将被识别为边界点。即,当在第二层内的一个或更多个像素无效时,指示查询像素位于到图块中的任何一个的边界的接近阈值内。在这种情况下,接近阈值是距图块边缘的两个像素。

在步骤614,如果围绕查询点的第二层内的像素中的至少一个是无效的(具有表示不对应于3D点云的像素的值),则指示与占用图中的查询像素处于相同位置的属性帧中的像素和几何结构帧中的像素对应于3D点云的边界点。也就是说,如果第二层内的像素中的任何一个是无效的,则在与查询像素相同的位置处由属性帧和几何结构帧中的像素表示的3D点云的点被识别为边界像素。

如果围绕查询像素的第一层和第二层内的所有像素都是有效的(每个像素具有表示几何结构帧和属性帧中的有效像素的值),则编码器可选择占用图帧中的另一像素作为查询像素。当占用图帧中的另一像素被选择为查询像素时,方法600在步骤604处重新开始。

在某些实施例中,方法600可被扩展为包括检查超出第一层和第二层的像素。例如,可以扩展方法600,使得边界检测引擎530检查第三层至第n层中的像素,其中每个新层与其下面的层中的像素相邻并围绕该像素。检查的像素越多,3D点云的越多的点被识别为边界点。

图6B的方法620类似于图6A的方法600,因为方法600和620都描述了确定在2D帧(诸如几何结构帧、属性帧和占用图帧)上表示的3D点云的单个点是否是边界点的整个过程。然而,方法620增加了当2D帧中与3D点云的点对应的像素靠近帧的边缘时或者当该像素靠近属于另一图块的另一像素时将该点识别为边界点的能力。

在步骤622(类似于图6A的步骤602),边界检测引擎530从占用图帧中选择单个像素作为查询像素。像素可位于占用图帧内的任何地方。此后,在步骤624(类似于图6A的步骤604),边界检测引擎530确定查询像素的值是否指示有效像素。例如,当占用图中的位置(u,v)处的像素的值是第一值(诸如,零)时,指示几何结构帧和属性帧内的相同位置处的对应像素不对应于3D点云的点。当占用图中的位置(u,v)处的像素的值是第二值(诸如,一)时,指示几何结构帧和属性帧内的相同位置处的对应像素表示3D点云的点的信息。例如,当占用图中的像素的值为零时,指示几何结构帧和属性帧中在相同位置处的像素是无效的。当占用图中的像素的值为1时,指示几何结构帧和属性帧中在相同位置处的像素是有效的,并且由此表示3D点云的特定点。

在确定了查询像素的值为零(表示无效像素)时,方法600结束,因为3D点云中没有对应于属性帧和几何结构帧中的位置(u,v)处的像素的点,因为占用图中该位置处的像素的值为零。在某些实施例中,在确定查询像素的值为零时,边界检测引擎530可以返回到步骤622并选择占用图内的新像素作为查询像素。

在步骤626,在确定查询像素的值为一(表示有效像素)时,边界检测引擎530识别像素所属的图块。例如,如图4C和图4D中所描述的,多个图块(诸如,图块432和442)被包括在单个帧中。由于每个图块可由图块索引号识别,因此边界检测引擎530可识别像素在哪个图块内。例如,查询像素可以在由一与图块的总数之间(或者如果图块在索引号零处开始,则在索引号零与图块的总数减一之间)的索引号标识的图块内。

在步骤628,边界检测引擎530确定查询像素周围的第一层中的像素中的任何一个是否无效(类似于图6A的步骤606和608)或者查询像素周围的第一层中的像素中的任何一个是否属于不同的图块。第一层中的邻近点在与查询像素相邻并围绕查询像素的第一层的像素内。例如,如果查询像素不在占用图帧的边缘处,则查询像素将具有八个邻近像素,诸如在(y,x-1)、(y,x+1)、(y-1,x)、(y+1,x)、(y-1,x-1)、(y-1,x+1)、(y+1,x-1)和(y+1,x+1)处的像素。

边界检测引擎530在步骤628检查查询像素周围的邻近像素,以识别占用图中的查询像素的值指示有效像素还是无效像素以及第一层中的每个像素所属的图块。

如果围绕查询点的第一层内的像素中的至少一个是无效的(具有表示不对应于3D点云的像素的值),则在步骤636,边界检测引擎530将与占用图中的查询像素相同位置的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。也就是说,如果第一层内的像素中的任何一个是无效的,则由属性帧和几何结构帧中的在与查询像素相同的位置处的像素表示的3D点云的点被识别为边界点。

类似地,如果围绕查询点的第一层内的像素中的至少一个像素属于与查询点的图块不同的图块,则在步骤636,边界检测引擎530将在与占用图中的查询像素相同位置处的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。例如,边界检测引擎530将查询像素的图块索引号与第一层中的邻近像素中的每一个的图块索引号进行比较。当第一层中的像素中的任何一个属于不同的图块时,边界检测引擎530(基于几何结构帧和属性帧中的与占用图帧中的查询像素处于相同位置的像素)将与查询像素对应的3D点云的点识别为边界点。

当第一层中的所有像素属于同一图块并且第一层中的所有像素有效时,在步骤630,边界检测引擎530确定查询像素是否位于占用图帧的边缘处。例如,边界检测引擎530确定第一层中的像素中的任何一个是否不存在。如果查询像素位于占用图帧的边界上,则第一层中的像素将不存在。

在确定查询像素沿着占用图帧的边界时,则在步骤636,边界检测引擎530将处于与占用图中的查询像素相同的位置的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。也就是说,如果不存在第一层内的像素中的任何一个(诸如,当查询像素位于占用图帧的边界上时),则在与查询像素相同的位置处由属性帧和几何结构帧中的像素表示的3D点云的点被识别为边界点。

当第一层中的所有像素都存在时,在步骤632,边界检测引擎530确定围绕查询像素的第二层中的像素中的任何一个是否无效(类似于图6A的步骤610和612)或者围绕查询像素的第二层中的像素中的任何一个是否属于不同的图块。第二层的像素为与第一层的像素相邻并且围绕第一层的像素的像素。例如,如果查询像素位于距占用图帧的边缘至少两个像素的距离处,则在查询像素的第二层中存在十六个像素,诸如在(y-2,x-2)、(y-2,x-1)、(y-2,x)、(y-2,x+1)、(y-2,x+2)、(y-1,x-2)、(y-1,x+2)、(y,x-2)、(y,x+2)、(y-1,x+2)、(y,x-2)、(y,x+2)、(y+1,x+2)、(y+2,x-2)、(y+1,x+2)、(y+2,x-2)、(y+1,x-1)、(y+1,x)、(y+1,x+1)、和(y+1,x+2)处的像素。

边界检测引擎530在步骤632检查围绕查询像素的第二层处的邻近像素,以识别占用图中的查询像素的值指示有效像素还是无效像素以及第一层中的每个像素所属的块。

如果围绕查询点的第二层内的像素中的至少一个是无效的(具有表示不对应于3D点云的像素的值),则在步骤636,边界检测引擎530将在与占用图中的查询像素相同位置处的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。也就是说,如果第二层内的像素中的任何一个是无效的,则在与查询像素相同的位置处的由属性帧和几何结构帧中的像素表示的3D点云的点被识别为边界点。

类似地,如果围绕查询点的第二层内的像素中的至少一个像素属于与查询点的图块不同的图块,则在步骤636,边界检测引擎530将在与占用图中的查询像素相同位置处的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。例如,边界检测引擎530将查询像素的图块索引号与第二层中的邻近像素中的每一个的图块索引号进行比较。当第二层中的像素中的任何一个属于不同的图块时,边界检测引擎530(基于在与占用图帧中的查询像素相同位置的几何结构帧和属性帧中的像素)将与查询像素对应的3D点云的点识别为边界点。

当第二层中的所有像素属于与查询像素相同的图块并且第二层中的所有像素有效时,在步骤634,边界检测引擎530确定查询像素是否位于距占用图帧的边缘2个像素处。例如,边界检测引擎530确定第二层中的像素中的任何一个是否不存在。如果查询像素位于距占用图帧的边缘2个像素处,则第二层中的像素将不存在。

在确定查询像素沿着占用图帧的边界时,则在步骤636,边界检测引擎530将在与占用图中的查询像素相同位置的属性帧中的像素和几何结构帧中的对应像素识别为3D点云的边界点。也就是说,如果第二层内的像素中的任何一个不存在(诸如,当查询像素位于距占用图帧的边界2个像素的距离处时),则在与查询像素相同的位置的由属性帧和几何结构帧中的像素表示的3D点云的点被识别为边界点。

如果存在第一层中的所有像素,则边界检测引擎530确定查询像素不位于距所述帧的边缘2个像素处。当查询像素不位于距所述帧的边缘2个像素处时,方法620结束。在某些实施例中,边界检测引擎530可选择占用图帧中的另一像素作为查询像素。当占用图帧中的另一像素被选择为查询像素时,方法600返回到步骤624并确定新的查询像素是否有效。在某些实施例中,方法620可被扩展为包括检查超出第一层和第二层的像素。例如,可扩展方法620,使得边界检测引擎530检查第三层至第n层中的像素,其中每个新层与其下方的层中的像素相邻并围绕该像素。检查的像素越多,3D点云的越多的点被识别为边界点。

图6C的方法650描述了用于识别3D点云的哪些点对应于位于距帧内的图块中的任何一个的边界的接近阈值内的像素的整个过程。也就是说,方法650用于基于占用图帧内的像素的值来识别点云内的边界点。方法650限于识别3D点云的与作为查询像素和图块的边界之间的两个像素的距离的像素对应的边界点。在某些实施例中,方法650可被扩展为包括识别与作为查询像素和图块的边界之间的大于两个像素的距离的像素对应的边界点。

在步骤652,边界检测引擎530将变量n设置为零。变量n用作用于识别占用图的像素的计数。

在步骤654,边界检测引擎530确定占用图中的像素n的占用数值是否为零。基于几何结构帧和占用图帧内的信息,占用图中的像素的零值指示3D点云中不存在对应点,而非零值(诸如,占用图中的1)指示3D点云中存在对应点。如果像素n的像素的值为零,则在步骤662,边界检测引擎530将n的值增加1以对应于占用图内的新像素。

当像素的值是非零值时,则在步骤656,边界检测引擎530识别紧邻像素n的像素的值。边界检测引擎530接着确定紧邻像素n的像素(例如第一层内的像素)的值中的任何一个是否等于零。

如果在步骤656,边界检测引擎530确定紧邻像素n的像素(第一层内的像素)的一个或更多个值等于零,则在步骤660,边界检测引擎530(基于几何结构帧)将3D点云的对应于像素n的点识别为边界点。可选地,如果在步骤656,边界检测引擎530确定紧邻像素n的像素(第一层内的像素)中没有一个像素具有等于零的值,则在步骤658,边界检测引擎530识别与像素n相距两个像素的像素(第二层)的值。边界检测引擎530接着确定与相邻像素n相距两个像素的像素(例如,第二层内的像素)的值中的任何一个是否等于零。

如果在步骤658,边界检测引擎530确定与像素n相距两个像素的像素(第二层内的像素)的一个或更多个值等于零,则在步骤660,边界检测引擎530(基于几何结构帧)将3D点云的对应于像素n的点识别为边界点。可选地,如果在步骤658,边界检测引擎530确定与像素n相距两个像素的像素(第二层内的像素)中没有一个像素具有等于零的值,则在步骤662,边界检测引擎530将n的值增加1以对应于占用图内的新像素。

另外,在边界检测引擎530(基于几何结构帧)将对应于像素n的3D点云的点识别为边界点之后,在步骤660,边界检测引擎530将n的值增加1以对应于占用图内的新像素。

在步骤664,边界检测引擎530将n的值与占用图帧中的像素的总数进行比较。当n的值小于占用图帧中的像素的总数时,则边界检测引擎530返回到步骤654并且确定新像素n(基于步骤662的n的增加的值)是否等于零。当n的值等于或大于像素的总数时,则方法650结束,因为边界检测引擎530已经识别出3D点云的所有边界点。

在某些实施例中,方法650可被扩展为包括远离像素n超过2个像素的像素。例如,边界检测引擎530可识别与像素n相距三个或更多个像素的像素的值,并且随后确定那些像素(与像素n相距三个或更多个像素的像素)的值中的任何一个是否等于零。

在某些实施例中,代替如上所述的n对应于占用图中的像素,n可以对应于点或3D点云。当n对应于3D点云的点时,方法650在检查了所有点时结束。由于占用图帧包括有效像素和无效像素两者,因此仅检查点云的点而不非占用图帧中的每个像素,故这使用更少的处理。

尽管图6A、图6B和图6C示出了识别边界点的示例,但是可以对图6A、图6B和图6C进行各种改变。例如,虽然示出为一系列步骤,但是图6A、图6B和图6C中的各个步骤可以重叠、并行发生或发生任何次数。在另一示例中,边界检测引擎530可使用其他方法来识别边界点。

图7A-图7M示出了用于识别位于距图块中的任何一个的边界的接近阈值内的边界点的示图。图7A示出了根据本公开的实施例的用于识别边界点的示例滑动窗口。图7B示出了根据本公开的实施例的包括图块的占用图的示例部分。图7C-图7L示出了根据本公开的实施例的通过在占用图中移动滑动窗口识别边界点来识别边界点的示例过程。图7M示出了指示哪些像素对应于3D点云的边界点的示例占用图帧。识别边界点的过程可以由服务器104、图1的任何客户端装置106-116、图2的服务器200、图3的电子装置300、图5A和5B的编码器510、图5A和5C的解码器550或任何其他合适的装置或系统来执行。为了便于解释,如图7A-图7M所示的识别边界点的过程被描述为由图5A和图5B的编码器510和解码器550的边界检测引擎530执行。

图7A示出了示例滑动窗口700。滑动窗口700在其中心包括查询像素702。滑动窗口700还包括与查询像素702相邻并围绕查询像素702的第一层的像素。第一层的像素包括像素704a、像素704b、像素704c、像素704d、像素704e、像素704f、像素704g和像素704h(统称为像素704)。第一层的像素包括最接近查询像素702的像素。

滑动窗口700还包括与第一层的像素704相邻并围绕第一层的像素704的第二层的像素,第二层的像素与查询像素702相距两个像素。第二层的像素包括像素706a、像素706b、像素706c、像素706d、像素706e、像素706f、像素706g、像素706h、像素706i、像素706j、像素706k、像素706l、像素706m、像素706n、像素706o、像素706p(统称为第二层的像素706)。第二层的像素包括距查询像素702两个像素距离内的像素。

在某些实施例中,可包括围绕查询像素的另外的层。滑动窗口700能够识别与查询像素相距一定距离的像素。所述距离可被称为接近阈值,这是因为所述距离可包括两个层或更多个层的像素。

图7B示出了占用图帧710的一部分。占用图帧710的部分类似于图5B的占用图帧516中的一个,并且包括诸如像素712的多个像素。像素712基于与每个单独像素相关联的值包括有效像素和无效像素两者。如图7B所示,无效像素(具有零值的像素)用无阴影表示,而有效像素(具有非零值(诸如0)的像素)用阴影表示。占用图帧710的部分包括图块714。图块714包括二十五个有效像素。

图5B和图5C的边界检测引擎530执行占用图帧710的部分中的图块的边界检测。例如,边界检测引擎530识别有效像素和无效像素之间的边界。在另一示例中,边界检测引擎530识别无效像素和有效像素之间的边界,所述有效像素在距查询像素的阈值距离内。边界检测引擎530在占用图帧上执行单遍以识别在到图块中的任何一个的边界的接近阈值内的像素。

图7C示出了在占用图帧710的一个位置处的滑动窗口700。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的无效像素时,边界检测引擎530将该像素(占用图帧710的像素)识别为对应于如所识别的边界点720a中所示的非边界点。

图7D示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7C相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的无效像素时,边界检测引擎530将该像素(占用图帧710的像素)识别为对应于如所识别的边界点720b中所示的非边界点。

图7E示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7D相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的无效像素时,边界检测引擎530将该像素(占用图帧710的像素)识别为对应于如所识别的边界点720c中所示的非边界点。

图7F示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7E相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的无效像素时,边界检测引擎530将该像素(占用图帧710的像素)识别为对应于如所识别的边界点720d中所示的非边界点。

图7G示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7F相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的有效像素时,边界检测引擎530确定第一层的像素704内的像素中的任何一个是否无效(对应于占用图帧710中具有零值的像素)。如图7G所示,滑动窗口700的第一层的像素704内的五个像素位于无效像素上,而三个像素位于有效像素上。由于滑动窗口700的第一层的像素704内的至少一个像素位于无效像素上,因此边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于如所识别的边界点720e中所示的边界点。

图7H示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7G相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上或还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的有效像素时,边界检测引擎530确定第一层的像素704内的像素中的任何一个是否无效(对应于占用图帧710中具有零值的像素)。如图7H所示,滑动窗口700的第一层的像素704内的五个像素位于无效像素上,而三个像素位于有效像素上。由于滑动窗口700的第一像素层704内的至少一个像素位于无效像素上,因此边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于如所识别的边界点720f中所示的边界点。

图7I示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7H相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的有效像素时,边界检测引擎530确定第一层的像素704内的像素中的任何一个是否无效(对应于占用图帧710中具有零值的像素)。如图7I所示,滑动窗口700的第一层的像素704内的五个像素位于无效像素上,而三个像素位于有效像素上。由于滑动窗口700的第一层的像素704内的至少一个像素位于无效像素上,因此边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于如所识别的边界点720g中所示的边界点。

图7J示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7I相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素上还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的有效像素时,边界检测引擎530确定第一层的像素704内的像素中的任何一个是否无效(对应于占用图帧710中具有零值的像素)。如图7J所示,滑动窗口700的第一层的像素704内的五个像素位于无效像素上,而三个像素位于有效像素上。由于滑动窗口700的第一层的像素704内的至少一个像素位于无效像素上,因此边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于如所识别的边界点720h中所示的边界点。

图7K示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7J相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702否位于占用图帧710的有效像素还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的有效像素时,边界检测引擎530确定第一层的像素704内的像素中的任何一个是否无效(对应于占用图帧710中具有零值的像素)。如图7I所示,滑动窗口700的第一层的像素704内的五个像素位于无效像素上,而三个像素位于有效像素上。由于滑动窗口700的第一层的像素704内的至少一个像素位于无效像素上,因此边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于如所识别的边界点720g中所示的边界点。

图7L示出了在占用图帧710的新位置处的滑动窗口700。也就是说,与图7K相比,滑动窗口700向右移动一个像素。边界检测引擎530确定滑动窗口700的查询像素702是位于占用图帧710的有效像素还是位于占用图帧710的无效像素上。在确定查询像素702对应于占用图帧710中的无效像素时,边界检测引擎530将该像素(占用图帧710的像素)识别为对应于如所识别的边界点720b中所示的非边界点。

注意,如果边界检测引擎530确定滑动窗口700的第一层的像素704内的所有像素都位于有效像素之上,则边界检测引擎530将检查第二层的像素706的像素。如果第二层的像素706中的像素中的任何一个位于无效像素上,则边界检测引擎530将确定该像素(由查询像素702指示的占用图帧710的像素)对应于边界点。可选地,如果第二层的像素706中的所有像素都位于有效像素上,则边界检测引擎530将该像素(由查询像素702指示的占用图帧710的像素)识别为对应于非边界点。

在将该像素(占用图帧710的由查询像素702指示的像素)确定为对应于边界点之后,或者在将该像素(占用图帧710的由查询像素702指示的像素)确定为对应于非边界点之后,滑动窗口将移到占用图中的另一像素上。在某些实施例中,滑动窗口700从行中的一个像素水平移动到另一个像素,并且在到达行的末端时,然后垂直移动一个像素到新的行,并继续沿新的行水平移动,直到检查了每个像素。在某些实施例中,滑动窗口700以预定义模式在占用图帧中的像素上移动。

图7M示出了边界点720k。图7M示出了基于如由滑动窗口700和边界检测引擎530识别的图块714指示占用图帧710的哪些像素对应于3D点云的边界点的映射。

尽管图7A-图7M示出了识别边界点的一个示例,但是可以对图7A-图7M进行各种改变。例如,滑动窗口可包括更多或更少的层。对于另一示例,任何数量的像素可被包括在占用图帧710的部分中,并且像素中的任何一个可以是帧上的有效点或无效点。

图8示出了根据本公开的实施例的用于对点云进行编码的示例方法800。方法800可以由图1的服务器104或客户端装置106-116中任一个、图2的服务器200、图3的电子装置300、图5A和5B的编码器510或任何其他合适的装置或系统来执行。为了便于解释,方法800被描述为由图5A和5B的编码器510执行。

在步骤802,编码器510针对3D点云生成几何结构帧。几何结构帧包括像素。包括在几何结构帧中的像素的部分表示3D点云的被组织为与3D点云的各个点簇相应的图块的点的几何结构位置。另外,编码器510生成属性帧。属性帧包括像素,并且属性帧的像素的一部分表示3D点云的点的属性信息。第二帧中的像素的位置对应于第一帧中的像素的各个位置。

在步骤804,编码器510生成占用图帧。占用图帧包括识别几何结构帧中的表示3D点云的点的几何结构位置的部分像素的像素。占用图帧的像素还识别属性帧中的表示3D点云的点的属性信息的像素的位置。

在步骤806,编码器510对几何结构帧进行编码以生成几何结构子流,对属性帧进行编码以生成属性子流,并且对占用图帧进行编码以生成占用图子流。响应于对几何结构子流、属性子流和占用图子流进行解码,编码器510使用几何结构帧和占用图帧来重构3D点云(步骤808)。

在步骤810,编码器510执行占用图帧的单遍以识别重构的3D点云的与几何结构帧和属性帧中的像素子集对应的点,所述像素子集位于距图块中的任何一个的边界的接近阈值内。编码器510基于占用图帧内的像素的值来识别重构的3D点云的与所述像素子集对应的点。

例如,编码器510选择占用图帧中的查询像素,并且在确定查询像素对应于几何结构帧中的有效像素时,编码器510检查查询像素的邻近像素。编码器510首先检查围绕查询像素的第一层内的像素。针对第一层,编码器510识别是否(i)第一层中的像素中的任何一个是无效的,(ii)第一层中的像素中的任何一个属于与查询像素不同的图块,或者(iii)第一层中的像素中的任何一个位于帧的边缘处,然后将点云中与查询像素对应的点识别为边界点。如果(i)第一层中的所有像素都是有效的,(ii)第一层中的所有像素都属于与查询像素不同的图块,或者(iii)第一层中的像素都不位于帧的边缘处,则编码器510检查围绕查询像素的第二层内的像素。

针对第二层,编码器510识别是否(i)第二层中的像素中的任何一个是无效的,(ii)第二层中的像素中的任何一个属于与查询像素不同的图块,或者(iii)第二层中的像素中的任何一个位于帧的边缘处,则点云中与查询像素对应的点被识别为边界点。如果(i)第二层中的所有像素都是有效的,(ii)第二层中的所有像素都属于与查询像素不同的图块,或者(iii)第二层中的任何像素都不位于帧的边缘处,则编码器510选择新的查询像素。

在某些实施例中,解码器550然后可以对所识别的边界点执行平滑并生成平滑参数。解码器550可以应用平滑参数,以便通过去除任何可能的伪像来提高重构点云的视觉质量。

在表示3D点云的帧被编码并且边界点被识别之后,编码器510可将帧复用到比特流中。在步骤812,编码器510发送比特流。比特流可最终被传输到解码器,诸如解码器550。

尽管图8示出了用于对点云进行编码的方法800的一个示例,但是可以对图8进行各种改变。例如,虽然被示出为一系列步骤,但是图8中的各个步骤可以重叠、并行发生或发生任何次数。

图9示出了根据本公开的实施例的用于对点云进行解码的示例方法900。方法900可以由图1的服务器104或客户端装置106-116中的任一个、图2的服务器200、图3的电子装置300、图5A和5C的解码器550或任何其他合适的装置或系统来执行。为了便于解释,方法900被描述为由图5A和5C的解码器550执行。

方法900开始于解码器(诸如,解码器550)接收压缩的比特流(步骤902)。接收到的比特流可包括编码的点云,该编码的点云被映射到多个2-D帧上,被压缩,然后被发送并最终由解码器550接收。

在步骤904,解码器550从比特流解码几何结构帧和属性帧。几何结构帧包括像素,并且几何结构帧的像素的一部分表示3D点云的点的几何结构位置。几何结构帧的像素被组织为与3D点云的各个点簇相应的图块。属性帧包括像素,并且属性帧的像素的一部分表示3D点云的点的属性信息,并且属性帧中的像素的位置对应于几何结构帧中的像素的相应位置。

在步骤906,解码器550从比特流解码占用图帧。占用图帧包括识别几何结构帧中的表示3D点云的点的几何结构位置的部分像素的像素。占用图帧的像素还识别属性帧中的表示3D点云的点的属性信息的部分像素。

在步骤908,解码器550使用几何结构帧、属性帧和占用图帧来重构3D点云。

在步骤910,解码器550执行占用图帧的单遍以识别重构的3D点云的与几何结构帧中的像素子集对应的点,所述像素子集位于距图块中的任一个的边界的接近阈值内。编码器510基于占用图帧内的像素的值来识别重构的3D点云的与所述像素子集对应的点。

例如,编码器510选择占用图帧中的查询像素,并且在确定查询像素对应于几何结构帧中的有效像素时,编码器510检查查询像素的邻近像素。编码器510首先检查围绕查询像素的第一层内的像素。针对第一层,编码器510识别是否(i)第一层中的像素中的任何一个是无效的,(ii)第一层中的像素中的任何一个属于与查询像素不同的图块,或者(iii)第一层中的像素中的任何一个位于帧的边缘处,然后将点云中与查询像素对应的点识别为边界点。如果(i)第一层中的所有像素都是有效的,(ii)第一层中的所有像素都属于与查询像素不同的图块,或者(iii)第一层中的像素都不位于帧的边缘处,则编码器510检查围绕查询像素的第二层内的像素。

针对第二层,编码器510是否识别(i)第二层中的像素中的任何一个是无效的,(ii)第二层中的像素中的任何一个属于与查询像素不同的图块,或者(iii)第二层中的像素中的任何一个位于帧的边缘处,则点云中与查询像素对应的点被识别为边界点。如果(i)第二层中的所有像素都是有效的,(ii)第二层中的所有像素都属于与查询像素不同的图块,或者(iii)第二层中的像素中的任何一个都不位于帧的边缘处,则编码器510选择新的查询像素。

然后,解码器550可对所识别的边界点执行平滑,以通过去除任何可能的伪像来提高重构点云的视觉质量。此后,解码器550可以渲染点云以供用户查看。

尽管图9示出了用于对点云进行解码的方法900的一个示例,但是可以对图9进行各种改变。例如,虽然被示出为一系列步骤,但是图9中的各个步骤可以重叠、并行发生或发生任何次。

尽管附示出出了用户装置的不同示例,但是可以对附图进行各种改变。例如,用户装置可以以任何合适的布置包括任何数量的每个组件。通常,附图不将本公开的范围限制于任何特定配置。此外,虽然附示出了可以使用本专利文件中公开的各种用户装备特征的操作环境,但是这些特征可被用在任何其他合适的系统中。

尽管已经利用示例性实施例描述了本公开,但是可以向本领域技术人员建议各种改变和修改。本公开旨在涵盖落入所附权利要求的范围内的这样的改变和修改。

相关技术
  • 基于视频的点云压缩中的单遍边界检测
  • 一种基于视频压缩码流中辅助增强信息的2D视频转3D视频方法
技术分类

06120113817278