CN116997935A - 用于网格压缩的块压缩 - Google Patents

用于网格压缩的块压缩 Download PDF

Info

Publication number
CN116997935A
CN116997935A CN202280017289.0A CN202280017289A CN116997935A CN 116997935 A CN116997935 A CN 116997935A CN 202280017289 A CN202280017289 A CN 202280017289A CN 116997935 A CN116997935 A CN 116997935A
Authority
CN
China
Prior art keywords
block
boundary
vertex
edge
information
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
CN202280017289.0A
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.)
Tencent America LLC
Original Assignee
Tencent America LLC
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 Tencent America LLC filed Critical Tencent America LLC
Publication of CN116997935A publication Critical patent/CN116997935A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

在一些示例中,用于网格编码的装置包括处理电路。处理电路接收携带网格的已编码信息的码流,该网格被分割为多个块。码流包括第一部分和第二部分,第一部分包括块信息,第二部分包括块边界信息,该块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对。处理电路解码第一部分以获得块信息,以及解码第二部分以获得块边界信息。处理电路基于块信息和块边界信息生成重建网格,第一边和第二边被映射到重建网格中的同一边,以连接第一块和第二块。

Description

用于网格压缩的块压缩
引用并入
本申请要求享有于2022年8月23日提交的美国专利申请第17/893,892号“用于网格压缩的块压缩”的优先权,该美国专利申请要求享有于2021年8月25日提交的美国临时申请第63/237,097号“用于网格压缩的块压缩”的优先权。在先申请的公开的整体内容通过引用并入本文。
技术领域
本公开描述了通常与网格编码相关的实施例。
背景技术
本文提供的背景描述是为了总体呈现本公开的背景。当前署名发明人在本背景技术部分描述的范围内的工作以及在申请时可能不属于现有技术的描述的方面,既不明示也不暗示地承认为针对本公开的现有技术。
开发了各种技术来捕捉和表示世界,例如在三维(3-dimensional,3D)空间中的世界中的物体、世界中的环境等。世界的3D表示可以实现更沉浸式的交互和交流形式。在一些示例中,可以将点云和网格(mesh)用作世界的3D表示。
发明内容
本公开的各方面提供了用于网格编码(例如,压缩和解压缩)的方法和装置。在一些示例中,用于网格编码的装置包括处理电路。处理电路接收携带网格的已编码信息的码流,该网格被分割为多个块。码流包括第一部分和第二部分,第一部分包括块信息,第二部分包括块边界信息,该块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对。处理电路解码第一部分以获得块信息,以及解码第二部分以获得块边界信息。处理电路基于块信息和块边界信息生成重建网格,第一边和第二边被映射到重建网格中的同一边,以连接第一块和第二块。
在一些示例中,从第一部分解码的块信息具有的块边界信息与从第二部分解码的块边界信息不同。
在一些示例中,处理电路从第二部分解码出边界表,该边界表包括块的边界顶点列表。处理电路根据边界表确定第一块的第一边界顶点列表和第二块的第二边界顶点列表。此外,处理电路根据第一边界顶点列表确定第一块的第一边界边,以及根据第二边界顶点列表确定第二块的第二边界边。第一边是第一块的多个第一边界边中的一个,第二边是第二块的多个第二边界边中的一个。
在一些示例中,处理电路从第二部分解码出第一阵列。第一阵列携带用于将块的边界顶点映射到UV图谱的UV坐标。处理电路根据第一阵列,确定第一边界顶点列表的第一边界UV坐标,第一边界UV坐标用于将第一块映射到UV图谱中的第一UV块。第一UV块对应于第一块。处理电路根据第一阵列,确定第二边界顶点列表的第二边界UV坐标,第二边界UV坐标用于将第二块映射到UV图谱中的第二UV块。第二UV块对应于第二块。
为了生成重建网格,在一些示例中,处理电路确定第一UV块内的第一顶点的第一UV坐标,并确定第二UV块内的第二顶点的第二UV坐标。在一示例中,第一顶点和第二顶点位于UV图谱的规则方格处。此外,在一些示例中,处理电路基于第一顶点的第一UV坐标和第一边界顶点列表的第一边界UV坐标,确定用于第一UV块的第一连接信息,以及基于第二顶点的第二UV坐标和第二边界顶点列表的第二边界UV坐标,确定用于第二UV块的第二连接信息。在一示例中,处理电路基于码流中的信号对特定连接确定技术的使用进行确定。
在一些示例中,处理电路从第二部分解码出第二阵列,第二阵列携带与块的边界顶点相对应的网格的网格顶点索引。处理电路根据第二阵列,确定第一边的第一顶点的第一网格顶点索引;以及根据第二阵列,确定第二边的第二顶点的第二网格顶点索引。第一边的第一顶点的第一网格顶点索引与第二边的第二顶点的第二网格顶点索引相匹配。
在一些示例中,处理电路从第二部分解码出第三阵列,第三阵列携带与网格中的块的边界顶点的网格顶点索引相对应的三维坐标。
在一示例中,处理电路根据第三阵列,确定第一边的第一顶点的第一3D坐标,以及根据第三阵列确定第二边的第二顶点的第二3D坐标。第一边的第一顶点的第一3D坐标与第二边的第二顶点的第二3D坐标相匹配。
本公开的各方面还提供了一种非暂时性计算机可读介质,该计算机可读介质存储有指令,当由计算机执行该指令时,该指令使计算机执行用于网格编码的方法中的任何一种或组合。
附图说明
本公开的主题的进一步特征、性质和各种优点将从下面的详细描述和附图中变得更加明显,在附图中:
图1示出了一些示例中的通信系统的框图。
图2示出了一些示例中的流式传输系统的框图。
图3示出了在一些示例中用于对点云帧进行编码的编码器的框图。
图4示出了在一些示例中用于对与点云帧相对应的已压缩码流进行解码的解码器的框图。
图5示出了一些示例中的视频解码器的框图。
图6示出了一些示例中的视频编码器的框图。
图7示出了在一些示例中用于对点云帧进行编码的编码器的框图。
图8示出了在一些示例中用于对与点云帧相对应的已压缩码流进行解码的解码器的框图。
图9示出了一些示例中的重建网格的图示。
图10示出了一些示例中的网格编码(压缩和解压缩)框架的框图。
图11示出了概述一些示例中的过程示例的流程图。
图12示出了概述一些示例中的过程示例的流程图。
图13是一些示例中的计算机系统的示意图。
具体实施方式
本公开的各方面提供了三维(3D)媒体处理领域中的技术。
3D媒体处理中的技术发展,例如三维(3D)采集、3D建模和3D显示等方面的进步,已经促进了跨平台和设备的3D媒体内容的无处不在。在一示例中,可以在一个大陆捕捉婴儿的第一步,媒体技术可以让祖父母在另一个大陆观看(也许互动)并享受与婴儿的沉浸式体验。根据本公开的一方面,为了改善沉浸式体验,3D模型变得越来越复杂,并且3D模型的创建和消耗占用了大量的数据资源,例如数据存储、数据传输资源。
根据本公开的一些方面,可以将点云和网格用作3D模型来表示沉浸式内容。
点云通常可以指3D空间中的点集,每个点具有相关联的属性,例如颜色、材质属性、纹理信息、强度属性、反射率属性、运动相关属性、模态属性和各种其他属性。可以将点云用于把物体或场景重建为此类点的组合。
物体的网格(也称为网格模型)可以包括描述物体表面的多边形。每个多边形可以由3D空间中多边形的顶点以及这些顶点如何连接到多边形中的信息来定义。顶点如何连接的信息被称为连接信息。在一些示例中,网格还可以包括与顶点相关联的属性,例如颜色、法线等。
根据本公开的一些方面,用于点云压缩(point cloud compression,PCC)的一些编码工具可以用于网格压缩(mesh compression)。例如,可以对网格进行重新网格化以生成新网格,且可以对该新网格的连接信息进行推断。可以认为新网格的顶点以及与新网格的顶点相关联的属性是点云中的点,并且可以使用PCC编解码器对其进行压缩。
可以将点云用于将物体或场景重建为此类点的组合。使用照相机、深度传感器或激光雷达可以采集这些点,这些点可以由数千到数十亿个点组成,以便真实地表示重建的场景或物体。块通常可以指由点云所描述的表面的连续子集。在一示例中,块包括具有彼此之间的偏离小于阈值量的表面法向量的点。
可以根据各种方案来执行PCC,例如称为G-PCC的基于几何的方案、称为V-PCC的基于视频编码的方案等。根据本公开的一些方面,G-PCC直接对3D几何图形进行编码,并且是纯粹基于几何的方法,没有太多与视频编码相同的内容,V-PCC主要基于视频编码。例如,V-PCC可以将3D云的点映射到2D网格(图片)的像素。V-PCC方案可以利用通用视频编解码器进行点云压缩。本公开中的PCC编解码器(编码器/解码器)可以是G-PCC编解码器(编码器/解码器)或V-PCC编解码器。
根据本公开的一方面,V-PCC方案可以使用现有的视频编解码器将点云的几何、占用和纹理压缩为三个单独的视频序列。单独对解释这三个视频序列所需要的额外元数据进行压缩。整个码流的一小部分是元数据,在一示例中,可以使用软件实现来有效地对其进行编码/解码。视频编解码器处理大部分信息。
图1示出了一些示例中的通信系统(100)的框图。通信系统(100)包括能够经由例如网络(150)彼此通信的多个终端设备。例如,通信系统(100)包括经由网络(150)互连的一对终端设备(110)和(120)。在图1的示例中,第一对终端设备(110)和(120)可以执行点云数据的单向传输。例如,终端设备(110)可以对由传感器(105)采集的点云(例如,表示结构的点)进行压缩,该传感器(105)与终端设备(110)连接。已压缩的点云可以例如以码流的形式经由网络(150)传输到另一个终端设备(120)。终端设备(120)可以从网络(150)接收已压缩的点云,对码流进行解压缩以重建点云,并适当地显示重建的点云。单向数据传输在媒体服务应用等中可以是常见的。
在图1的示例中,可以将终端设备(110)和(120)示出为服务器和个人计算机,但是本公开的原理可以不限于此。本公开的实施例应用于膝上型计算机、平板计算机、智能手机、游戏终端、媒体播放器和/或专用三维(3D)设备。网络(150)表示在终端设备(110)和(120)之间传输已压缩点云的任意数量的网络。网络(150)可以包括例如有线(有线的)和/或无线通信网络。网络(150)可以在电路交换和/或分组交换信道中交换数据。代表性的网络包括电信网络、局域网、广域网和互联网等。
图2示出了一些示例中的流式系统(200)的框图。流式系统(200)是点云的使用应用。本公开的主题可以同样适用于其他支持点云的应用,例如3D远程呈现应用、虚拟现实应用等。
流式传输系统(200)可以包括采集子系统(213)。该采集子系统(213)可以包括点云源(201),例如光探测和测距(light detection and ranging,LIDAR)系统、3D照相机、3D扫描仪、在软件中生成未压缩点云的图形生成组件,以及生成例如未压缩点云(202)的类似物。在一示例中,点云(202)包括由3D照相机采集的点。将点云(202)描绘为粗线,以强调与已压缩点云(204)(已压缩点云的码流)相比的高数据量。已压缩点云(204)可以由电子设备(220)生成,该电子设备包括耦接到点云源(201)的编码器(203)。编码器(203)可以包括硬件、软件或软硬件组合,以启用或实现下文更详细描述的本公开主题的各方面。将已压缩点云(204)(或已压缩点云(204)的码流)描绘为细线,以强调与点云流(202)相比的较低数据量,可以将已压缩点云(204)存储在流式服务器(205)上以供将来使用。一个或多个流式客户端子系统,例如图2中的客户端子系统(206)和(208)可以访问流式服务器(205),以检索已压缩点云(204)的副本(207)和(209)。客户子系统(206)可以包括例如电子设备(230)中的解码器(210)。解码器(210)对压缩点云的传入副本(207)进行解码,并创建可在呈现设备(212)上呈现的重建点云(211)的输出流。
需注意的是,电子设备(220)和(230)可以包括其他组件(未示出)。例如,电子设备(220)可以包括解码器(未示出),并且电子设备(230)也可以包括编码器(未示出)。
在一些流系统中,可以根据某些标准对压缩点云(204)、(207)和(209)(例如,已压缩点云的码流)进行压缩。在一些示例中,在点云的压缩中使用视频编码标准。那些标准的示例包括高效视频编码(High Efficiency Video Coding,HEVC)、通用视频编码(Versatile Video Coding,VVC)等。
图3示出了根据一些实施例的用于对点云帧进行编码的V-PCC编码器(300)的框图。在一些实施例中,V-PCC编码器(300)可以用于通信系统(100)和流式系统(200)中。例如,能够以类似于V-PCC编码器(300)的方式来配置和操作编码器(203)。
V-PCC编码器(300)接收点云帧作为未压缩输入,并产生与已压缩点云帧相对应的码流。在一些实施例中,V-PCC编码器(300)可以从点云源(例如点云源(201))等接收点云帧。
在图3的示例中,V-PCC编码器(300)包括块生成模块(306)、块打包模块(308)、几何图片生成模块(310)、纹理图片生成模块(312)、块信息模块(304)、占用图模块(314)、平滑模块(336)、图片填充模块(316)和(318)、群扩张模块(320)、视频压缩模块(322)、(323)和(332)、辅助块信息压缩模块(338)、熵压缩模块(334)和多路复用器(324)。
根据本公开的一方面,V-PCC编码器(300)将3D点云帧与一些元数据(例如,占用图和块信息)一起转换成基于图片的表示,该元数据用于将已压缩点云转换为已解压缩点云。在一些示例中,V-PCC编码器(300)可以将3D点云帧转换为几何图片、纹理图片和占用图,然后使用视频编码技术将几何图片、纹理图片和占用图编码为码流。通常,几何图片是具有像素的2D图片,该像素填充有与投影到像素的点相关联的几何值,可以将填充有几何值的像素称为几何样本。纹理图片是具有像素的2D图片,该像素填充有与投影到像素的点相关联的纹理值,可以将填充有纹理值的像素称为纹理样本。占用图是一种具有像素的2D图片,该像素填充有对被块占用或未被块占用进行指示的值。
块生成模块(306)将点云分割成块集(例如,将块定义为由点云所描述的表面的连续子集),该块集可以重叠或不重叠,使得每个块可以由相对于2D空间中的平面的深度场来描述。在一些实施例中,块生成模块(306)旨在将点云分解为具有平滑边界的最小数量的块,同时也最小化重建误差。
在一些示例中,块信息模块(304)可以收集对块的尺寸和形状进行指示的块信息。在一些示例中,可以将块信息打包到图片帧中,然后由辅助块信息压缩模块(338)对其进行编码,以生成已压缩辅助块信息。
在一些示例中,块打包模块(308)被配置为将提取到的块映射到二维(2-dimensional,2D)方格(grid)上,同时最小化未使用的空间,并保证方格的每个M×M(例如,16×16)块与唯一的块相关联。有效的块打包可以通过最小化未使用的空间或确保时间一致性来直接影响压缩效率。
几何图片生成模块(310)可以生成与给定块位置的点云的几何相关联的2D几何图片。纹理图片生成模块(312)可以生成与给定块位置的点云的纹理相关联的2D纹理图片。几何图片生成模块(310)和纹理图片生成模块(312)利用在打包过程中所计算的3D到2D映射,将点云的几何和纹理存储为图片。为了更好地处理多个点被投影到同一个样本的情况,每个块被投影到两个图片上,称为层。在一示例中,几何图片由YUV420-8比特格式的WxH的单色帧表示。为了生成纹理图片,纹理生成过程利用重建/平滑的几何来计算要待与重新采样点相关联的颜色。
占用图模块(314)可以生成描述每个单元处的填充信息的占用图。例如,占用图片包括二进制图,该二进制图指示方格的每个单元是属于空白空间还是属于点云。在一示例中,占用图使用对每个像素是否被填充进行描述的二进制信息。在另一示例中,占用图使用对每个像素块是否被填充进行描述的二进制信息。
可以使用无损编码或有损编码对由占用图模块(314)生成的占用图进行压缩。当使用无损编码时,将熵压缩模块(334)用于压缩占用图。当使用有损编码时,将视频压缩模块(332)用于压缩占用图。
需注意的是,块打包模块(308)可以对图片帧中被打包的2D块之间留下一些空白空间。图片填充模块(316)和(318)可以填充空白空间(称为填充),以便生成适合于2D视频和图片编解码器的图片帧。图片填充也称为背景填充,它可以用冗余信息对未使用的空间进行填充。在一些示例中,良好的背景填充最小限度地增加了码率,同时不会在块边界周围引入显著的编码失真。
视频压缩模块(322)、(323)和(332)可以基于适当的视频编码标准(例如HEVC、VVC等)对2D图片(例如已填充几何图片、已填充纹理图片和占用图)进行编码。在一示例中,视频压缩模块(322)、(323)和(332)是单独操作的单独组件。需注意的是,在另一示例中,视频压缩模块(322)、(323)和(332)可以被实现为单个组件。
在一些示例中,平滑模块(336)被配置为生成重建的几何图片的平滑图片。可以将平滑的图片提供给纹理图片生成(312)。然后,纹理图片生成(312)可以基于重建的几何图片来调整纹理图片的生成。例如,当块形状(例如几何)在编码和解码期间轻微失真时,当在生成纹理图片时可以考虑该失真,以对块形状中的失真进行校正。
在一些实施例中,群扩张(320)被配置为用冗余低频内容对物体边界周围的像素进行填充,以便提高编码增益以及改善重建点云的视觉质量。
多路复用器(324)可以将已压缩的几何图片、已压缩的纹理图片、已压缩的占用图、已压缩的辅助块信息多路复用为已压缩码流。
图4示出了在一些示例中用于对与点云帧相对应的压缩码流进行解码的V-PCC解码器(400)的框图。在一些示例中,V-PCC解码器(400)可以用于通信系统(100)和流式系统(200)中。例如,解码器(210)可以被配置为以类似于V-PCC解码器(400)来操作。V-PCC解码器(400)接收已压缩码流,并基于已压缩码流生成重建点云。
在图4的示例中,V-PCC解码器(400)包括解多路复用器(432)、视频解压缩模块(434)和(436)、占用图解压缩模块(438)、辅助块信息解压缩模块(442)、几何重建模块(444)、平滑模块(446)、纹理重建模块(448)和颜色平滑模块(452)。
解多路复用器(432)可以接收已压缩码流并将其分离成已压缩纹理图片、已压缩几何图片、已压缩占用图和已压缩辅助块信息。
视频解压缩模块(434)和(436)可以根据合适的标准(例如,HEVC、VVC等)对已压缩图片进行解码并输出已解压缩图片。例如,视频解压缩模块(434)对已压缩纹理图片进行解码并输出已解压缩纹理图片;视频解压缩模块(436)对已压缩几何图片进行解码并输出已解压缩几何图片。
占用图解压缩模块(438)可以根据合适的标准(例如,HEVC、VVC等)对已压缩占用图进行解码,并输出已解压缩占用图。
辅助块信息解压缩模块(442)可以根据合适的标准(例如,HEVC、VVC等)对已压缩辅助块信息进行解码,并输出已解压缩辅助块信息。
几何重建模块(444)可以接收已解压缩几何图片,并基于已解压缩占用图和已解压缩辅助块信息生成重建的点云几何。
平滑模块(446)可以对位于块的边处的不一致进行平滑。平滑过程旨在减轻由于压缩失真而可能在块边界处出现的潜在不连续性。在一些实施例中,可以将平滑滤波器应用于位于块边界上的像素,以减轻可能由压缩/解压缩引起的失真。
纹理重建模块(448)可以基于已解压缩纹理图片和平滑几何来确定点云中的点的纹理信息。
颜色平滑模块(452)可以对颜色的不一致进行平滑。3D空间中的非相邻块通常被打包为在2D视频中彼此相邻。在一些示例中,基于块的视频编解码器可能会混淆来自非相邻块的像素值。颜色平滑的目标是减少出现在块边界处的可见失真。
图5示出了一些示例中的视频解码器(510)的框图。视频解码器(510)可以用于V-PCC解码器(400)中。例如,视频解压缩模块(434)和(436),占用图解压缩模块(438)可以类似地被配置为视频解码器(510)。
视频解码器(510)可以包括解析器(520),以从已压缩图片(例如编码视频序列)重建符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息。解析器(520)可以解析/熵解码接收到的编码视频序列。已编码视频序列的编码可以符合视频编码技术或标准,并且可以遵循各种原则,包括可变长度编码、霍夫曼编码、具有或不具有上下文敏感性的算术编码等等。解析器(520)可以基于对应于群组的至少一个参数,从已编码视频序列中提取视频解码器像素的至少一个子群中的子群参数集。子群可以包括图像群组(Groups of Pictures,GOPs)、图像、图块、切片、宏块、编码单元(Coding Unit,CU)、块、变换单元(Transform Unit,TU)、预测单元(Prediction Unit,PU)等。解析器(520)还可以从已编码视频序列中提取诸如变换系数、量化器参数值、运动矢量等之类的信息。
解析器(520)可以对从缓冲存储器接收的视频序列执行熵解码/解析操作,以便创建符号(521)。
符号的重建可以涉及多个不同的单元,这取决于已编码视频图像或一部分已编码视频图像的类型(例如,帧间和帧内图像、帧间和帧内块)以及其他因素。解析器(520)从已编码视频序列解析出的子群控制信息可以控制涉及哪些单元以及如何控制单元。为了简洁起见,没有描述解析器(520)和下文多个单元之间的此类子群控制信息流。
除了已经提到的功能块之外,视频解码器(510)可以在概念上被细分为如下所述的多个功能单元。在商业约束下运行的实际实现中,这些单元中的许多单元彼此密切交互,并且至少可以部分地相互集成。然而,为了描述本公开的主题,在概念上被细分为下文的功能单元是合适的。
第一单元是缩放器/逆变换单元(551)。缩放器/逆变换单元(551)从解析器(520)接收作为一个(或多个)符号(521)的量化变换系数和控制信息,包括使用哪种变换、块尺寸、量化因子、量化缩放矩阵。缩放器/逆变换单元(551)可以输出包括样本值的块,该样本值可以被输入到聚合器(555)中。
在一些情况下,缩放器/逆变换单元(551)的输出样本可以属于帧内已编码块;即:不使用来自先前重建的图像的预测信息,但是可以使用来自当前图像的先前重建的部分的预测信息。此类的预测信息可以由帧内图像预测单元(552)提供。在一些情况下,帧内图像预测单元(552)使用从当前图像缓冲器(558)提取周围的已经重建的信息,生成与重建中的块具有相同尺寸和形状的块。当前图像缓冲器(558)缓冲例如部分重建的当前图像和/或全部重建的当前图像。在一些情况下,聚合器(555)基于每个样本,将帧内预测单元(552)已经生成的预测信息添加到由缩放器/逆变换单元(551)提供的输出样本信息中。
在其它情况下,缩放器/逆变换单元(551)的输出样本可以属于帧间已编码和潜在运动补偿块。在这种情况下,运动补偿预测单元(553)可以访问参考图像存储器(557)以提取用于预测的样本。在根据与块相关的符号(521)对所提取的样本进行运动补偿之后,这些样本可以由聚合器(555)添加到缩放器/逆变换单元(551)的输出(在这种情况下被称为残差样本或残差信号),以生成输出样本信息。运动补偿预测单元(553)从参考图像存储器(557)内的地址获取预测样本可以由运动矢量控制,运动矢量以符号(521)的形式可供运动补偿预测单元(553)使用,该符号(521)可以具有例如X、Y和参考图像分量。运动补偿还可以包括当使用子样本精确运动矢量时从参考图像存储器(557)提取的样本值的内插、运动矢量预测机制等。
聚合器(555)的输出样本可以在环路滤波器单元(556)中服从各种环路滤波技术。视频压缩技术可以包括环路滤波器技术,该环路滤波技术由已编码视频序列(也称为已编码视频码流)中的参数控制,该参数作为来自解析器(520)的符号(521)可用于环路滤波器单元(556),该环路滤波技术也可以响应于对已编码图像或已编码视频序列的先前(按解码顺序)部分进行解码期间获得的元信息,以及响应于先前重建和环路滤波的样本值。
环路滤波器单元(556)的输出可以是样本流,该样本流可以被输出到呈现设备(512)并且被存储在参考图像存储器(557)中,以用于将来的帧间图像预测。
某些已编码图像一旦被完全重建,则可以用作未来预测的参考图像。例如,一旦与当前图像对应的已编码图像被完全重建,并且该已编码图像已经(例如通过解析器(520))被识别为参考图像,则当前图像缓冲器(558)可以成为参考图像存储器(557)的一部分,并且新的当前图像缓冲器可以在开始对下一个已编码图像进行重建之前被重新分配。
视频解码器(510)可以根据例如ITU-T Rec.H.265标准中的预定视频压缩技术来执行解码操作。在已编码视频序列符合视频压缩技术或标准的语法以及符合视频压缩技术或标准中记录的配置文件的意义上,已编码视频序列可以符合所使用的视频压缩技术或标准指定的语法。具体地,配置文件可以从视频压缩技术或标准中的所有可用工具中选择某些工具作为该配置文件下可用的唯一工具。对于合规性,还要求已编码视频序列的复杂度处于视频压缩技术或标准的水平所限定的范围内。在一些情况下,层级会限制最大图像尺寸、最大帧速率、最大重建取样速率(例如以每秒兆个样本进行测量)、最大参考图像尺寸等。在一些情况下,通过假想参考解码器(Hypothetical Reference Decoder,HRD)规范和在已编码视频序列中以信号通知的用于HRD缓冲器管理的元数据,可以进一步限制由层级设置的限制。
图6示出了根据本公开实施例的视频编码器(603)的框图。视频编码器(603)可以用于对点云进行压缩的V-PCC编码器(300)中。在一示例中,视频压缩模块(322)和(323)以及视频压缩模块(332)被配置类似于编码器(603)。
视频编码器(603)可以接收图片,例如已填充几何图片、已填充纹理图片等,并生成已压缩图片。
根据本公开一实施例,视频编码器(603)可以实时地或在应用所要求的任何其他时间约束下,对源视频序列(图片)的图像进行编码并压缩成已编码视频序列(已压缩图片)。实施适当的编码速度是控制器(650)的一个功能。在一些实施例中,控制器(650)控制如下所述的其他功能单元,并且功能地被耦接到其他功能单元。为了简洁起见,没有描述该耦接。控制器(650)设置的参数可以包括速率控制的相关参数(图像跳过、量化器、率失真优化技术的λ值……)、图像尺寸、图像群组(GOP)布局、最大运动矢量搜索范围等。控制器(650)可以被配置为具有与针对特定系统设计优化的视频编码器(603)相关的其它合适的功能。
在一些实施例中,视频编码器(603)被配置为在编码环路中操作。作为过于简化的描述,在一示例中,编码环路可以包括源编码器(630)(例如,负责基于待被编码的输入图像和一个(或多个)参考图像来创建符号,例如符号流)以及被嵌入在视频编码器(603)中的(本地)解码器(633)。解码器(633)以类似于(远程)解码器创建样本数据的方式来重建符号,以创建样本数据(因为在本公开主题中所考虑的视频压缩技术中,符号和已编码视频码流之间的任何压缩都是无损的)。重建的样本流(样本数据)被输入到参考图像存储器(634)。由于符号流的解码产生与解码器位置(本地或远程)无关的比特精确结果,因此参考图像存储器(634)中的内容在本地编码器和远程编码器之间也是比特精确的。换句话说,编码器的预测部分“看到”的参考图像样本与解码器当在解码期间使用预测时“看到”的样本值完全相同。参考图像同步性的这一基本原理(以及在例如由于信道误差而不能保持同步性的情况下产生的漂移)也用于一些相关技术。
“本地”解码器(633)的操作可以与例如视频解码器(510)的“远程”解码器的操作相同,视频解码器(510)已经在上文结合图5进行了详细描述。然而,简要地参考图5,当符号可用且熵编码器(645)和解析器(520)可以无损地将符号编码/解码为已编码视频序列时,包括缓冲存储器(515)和解析器(520)在内的视频解码器(510)的熵解码部分,可能不能在本地解码器(633)中完全实施。
在操作期间,在一些示例中,源编码器(630)可以执行运动补偿预测编码,该运动补偿预测编码参考来自视频序列中的被指定为“参考图像”的一个或多个先前已编码图像,对输入图像进行预测编码。以这种方式,编码引擎(632)对输入图像的像素块和一个(或多个)参考图像的像素块之间的差异进行编码,该参考图像可以被选为输入图像的一个(或多个)预测参考。
本地视频解码器(633)可以基于源编码器(630)创建的符号,对可以被指定为参考图像的图像的已编码视频数据进行解码。编码引擎(632)的操作可以有利地是有损过程。当已编码视频数据可以在视频解码器(图6中未示出)处被解码时,重建的视频序列通常可以是具有一些误差的源视频序列的副本。本地视频解码器(633)复制解码过程,该解码过程可以由视频解码器对参考图像执行,并可以使重建的参考图像存储在参考图像存储器(634)中。以这种方式,视频编码器(603)可以本地存储重建的参考图像的副本,该副本与将由远端视频解码器获得的重建的参考图图像具有共同内容(不存在传输错误)。
预测器(635)可以执行针对编码引擎(632)的预测搜索。即,对于待编码新图像,预测器(635)可以在参考图像存储器(634)中搜索可以用作新图像的适当预测参考的样本数据(作为候选参考像素块)或矢量某些元数据,例如参考图像运动矢量、块形状等。预测器(635)可以基于样本块逐像素块地进行操作,以找到合适的预测参考。在一些情况下,根据预测器(635)获得的搜索结果,可以确定输入图像可以具有从参考图像存储器(634)中存储的多个参考图像提取的预测参考。
控制器(650)可以管理源编码器(630)的编码操作,包括设置例如用于对视频数据进行编码的参数和子群参数
上述功能单元的输出可以服从熵编码器(645)中的熵编码。熵编码器(645)根据诸如霍夫曼编码、可变长度编码、算术编码之类的技术,通过对各种功能单元生成的符号进行无损压缩,以使该符号转变成已编码视频序列。
控制器(650)可以管理视频编码器(603)的操作。在编码期间,控制器(650)可以给每个已编码图像分配特定的已编码图像类型,这可以影响能够应用于相应图像的编码技术。例如,图像通常可以被分配为下列图像类型之一:
帧内图像(I图像)可以是能够在不使用序列中的任何其他图像作为预测源的情况下进行编码和解码的图像。一些视频编解码器允许不同类型的帧内图像,包括例如独立解码器刷新(Independent Decoder Refresh,IDR)图像。本领域技术人员知道I图像的那些变体及其各自的应用和特征。
预测图像(P图像)可以是能使用帧内预测或帧间预测进行编码和解码的图像,该帧内预测或帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
双向预测图像(B图像)可以是能够使用帧内预测或帧间预测进行编码和解码的图像,该帧内预测或帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多预测图像可以使用多于两个参考图像和相关联的元数据来用于重建单个块。
源图像通常可以在空间上被细分为多个样本块(例如,每个样本为4×4、8×8、4×8或16×16的块),并在逐块的基础上进行编码。块可以参考其他(已经被编码的)块预测地被编码,该块通过如应用于块的相应图像的编码分配被确定。例如,I图像的块可以被非预测地被编码,或它们可以参考同一图像的已经被编码的块预测地被编码(空间预测或帧内预测)。P图像的像素块可以参考一个已先前编码的参考图像,通过空间预测或通过时域预测预测地被编码。B图像的块可以参考一个或两个已先前编码参考图像,通过空间预测或通过时域预测预测地被编码。
视频编码器(603)可以根据例如ITU-T Rec.H.265的预定视频编码技术或标准来执行编码操作。在其操作中,视频编码器(603)可以执行各种压缩操作,包括利用输入视频序列中的时间和空间冗余的预测编码操作。因此,已编码视频数据可以符合所使用的视频编码技术或标准指定的语法。
视频可以是时间序列中的多个源图像(图片)的形式。帧内图像预测(通常缩写为帧内预测)利用给定图像中的空间相关性,帧间图像预测利用图像之间的(时间或其他)相关性。在一示例中,将正在编码/解码的特定图像分割成块,正在编码、解码的特定图像被称为当前图像。在当前图像中的块与视频中已先前编码且静止缓冲的参考图像中的参考块类似时,当前图像中的块可以被称为运动矢量的矢量所编码。运动矢量指向参考图像中的参考块,且在使用多个参考图像的情况下,该运动矢量可以具有标识参考图像的第三维
在一些实施例中,可以在帧间图像预测中使用双预测技术。根据双预测技术,使用两个参考图像,例如按照解码顺序都在视频中的当前图像之前(但是按照显示顺序可以分别在过去和将来)的第一参考图像和第二参考图像。当前图像中的块可以被第一运动矢量和第二运动矢量编码,该第一运动矢量指向第一参考图像的第一参考块,该第二运动矢量指向第二参考图像的第二参考块。该块可以通过第一参考块和第二参考块的组合来预测。
此外,可以在帧间图像预测中使用合并模式技术以提高编码效率。
根据本公开的一些实施例,以块为单位执行诸如帧间图像预测和图像内预测之类的预测。例如,根据HEVC标准,视频图像序列中的图像被分割为编码树单元(coding treeunit,CTU)以用于压缩,图像中的CTU具有相同的尺寸,例如64×64像素、32×32像素或16×16像素。通常,CTU包括三个编码树块(coding tree block,CTB),它们是一个亮度CTB和两个色度CTB。每个CTU能够以四叉树递归地被分割成一个或多个编码单元(coding unit,CU)。例如,64×64像素的CTU可以被分割成一个64×64像素的CU,或4个32×32像素的CU,或16个16×16像素的CU。在一示例中,分析每个CU以确定CU的预测类型,例如帧间预测类型或帧内预测类型。CU取决于时域和/或空间可预测性被分割成一个或多个预测单元。通常,每个预测单元包括亮度预测块(prediction block,PB)和两个色度PB。在一实施例中,以预测块为单位执行编码(编码/解码)中的预测操作。使用亮度预测块作为预测块的示例,预测块包括像素值(例如,亮度值)的矩阵,例如8×8像素、16×16像素、8×16像素、16×8像素等。
图7示出了一些示例中的G-PCC编码器(700)的框图。G-PCC编码器(700)可以被配置为接收点云数据并压缩点云数据,以生成携带已压缩点云数据的码流。在一实施例中,G-PCC编码器(700)可以包括位置量化模块(710)、重复点移除模块(712)、八叉树编码模块(730)、属性转移模块(720)、细节水平(level of detail,LOD)生成模块(740)、属性预测模块(750)、残差量化模块(760)、算术编码模块(770)、逆残差量化模块(780)、加法模块(781)和存储已重建属性值的存储器(790)。
如图7所示,可以在G-PCC编码器(700)处接收输入点云(701)。将点云(701)的位置(例如,3D坐标)提供给量化模块(710)。量化模块(710)被配置为对坐标进行量化以生成量化的位置。重复点移除模块(712)被配置为接收量化的位置并执行过滤过程,以识别和移除重复点。八叉树编码模块(730)被配置为从重复点移除模块(712)接收经过滤的位置,并执行基于八叉树的编码过程以生成对立体像素的3D方格进行描述的占用码的序列。将占用码提供给算术编码模块(770)。
属性转移模块(720)被配置为接收输入点云的属性,并且当多个属性值与各自的立体像素相关联时,执行属性转移过程以确定每个立体像素的属性值。可以对从八叉树编码模块(730)输出的重新排序的点执行属性转移过程。将转移操作后的属性提供给属性预测模块(750)。LOD生成模块(740)被配置为对从八叉树编码模块(730)输出的重新排序的点进行操作,并将这些点重新组织成不同的LOD。将LOD信息提供给属性预测模块(750)。
属性预测模块(750)从LOD生成模块(740)根据LOD信息所指示的基于LOD的顺序对点进行处理。属性预测模块(750)基于存储在存储器(790)中的当前点的相邻点集的重建属性来生成当前点的属性预测。随后,可以基于从属性传输模块(720)接收的原始属性值和本地生成的属性预测来获得预测残差。当在各自的属性预测处理中使用候选索引时,可以将与所选择的预测候选相对应的索引提供给算术编码模块(770)。
残差量化模块(760)被配置为从属性预测模块(750)接收预测残差,并执行量化以生成量化残差。将量化残差提供给算术编码模块(770)。
反向残差量化模块(780)被配置为从残差量化模块(760)接收量化残差,并通过执行在残差量化模块(760)处执行的量化操作的逆向来生成重建的预测残差。加法模块(781)被配置为从逆残差量化模块(780)接收重建的预测残差,以及从属性预测模块(750)接收各自的属性预测。通过对重建的预测残差和属性预测进行组合,生成重建属性值并将其存储到存储器(790)。
算术编码模块(770)被配置为接收占用码、候选索引(如果有使用的话)、量化残差(如果有生成的话)和其他信息,并执行熵编码以进一步压缩接收到的值或信息。因此,可以生成携带压缩信息的压缩码流(702)。码流(702)可以被发送或以其他方式提供给对已压缩码流进行解码的解码器,或者可以被存储在存储设备中。
图8示出了根据实施例的G-PCC解码器(800)的框图。G-PCC解码器(800)可被配置为接收已压缩码流并执行点云数据解压缩,以解压缩该码流以生成已解码点云数据。在一实施例中,G-PCC解码器(800)可以包括算术解码模块(810)、逆残差量化模块(820)、八叉树解码模块(830)、LOD生成模块(840)、属性预测模块(850)和对重建属性值进行存储的存储器(860)。
如图所示,可在算术解码模块(810)处接收已压缩码流(801)。算术解码模块(810)被配置为解码已压缩码流(801)以获得点云的量化残差(如果有生成的话)和占用码。八叉树解码模块(830)被配置为根据占用码来确定点云中的点的重建位置。LOD生成模块(840)被配置为基于重建的位置将点重新组织成不同的LOD,并对基于LOD的顺序进行确定。逆残差量化模块(820)被配置成基于从算术解码模块(810)接收的量化残差来生成重建残差。
属性预测模块(850)被配置为执行属性预测过程,以根据基于LOD的顺序对点的属性预测进行确定。例如,可以基于存储在存储器中的当前点的相邻点的重建属性值来确定当前点的属性预测(860)。在一些示例中,可以将属性预测与各自的重建残差进行组合,以生成当前点的重建属性。
在一示例中,从属性预测模块(850)生成的重建属性序列连同从八叉树解码模块(830)生成的重建位置一起与从G-PCC解码器(800)输出的解码点云(802)相对应。此外,重建的属性也被存储到存储器(860)中,并且可以随后用于导出后续点的属性预测。
在各种实施例中,编码器(300)、解码器(400)、编码器(700)和/或解码器(800)可以用硬件、软件或软硬件组合来实现。例如,编码器(300)、解码器(400)、编码器(700)和/或解码器(800)可以用例如一个或多个集成电路(integrated circuit,IC)的处理电路来实现,该集成电路使用或不使用例如专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)等的软件来操作。在另一示例中,编码器(300)、解码器(400)、编码器(700)和/或解码器(800)可以被实现为包括存储在非易失性(或非暂时性)计算机可读存储介质中的指令的软件或固件。当由例如一个或多个处理器的处理电路执行指令时,该指令使得处理电路执行编码器(300)、解码器(400)、编码器(700)和/或解码器(800)的功能。
需注意的是,被配置为实现本文所公开的属性预测技术的属性预测模块(750)和(850)可以被包括在其他解码器或编码器中,这些解码器或编码器可以具有与图7和图8中所示的结构相似或不同的结构。此外,在各示例中,可以将编码器(700)和解码器(800)包括在同一设备中,或者包括在单独的设备中。
根据本公开的一些方面,网格压缩可以使用不同于PCC编码工具的编码工具,或者可以使用PCC编码工具,例如上述PCC(例如G-PCC、V-PCC)编码器、上述PCC(例如G-PCC、V-PCC)解码器等。
物体的网格(也称为网格模型)可以包括描述物体表面的多边形。每个多边形可以由3D空间中多边形的顶点以及这些顶点如何连接到多边形中的信息来定义。顶点如何连接的信息被称为连接信息。在一些示例中,网格还可以包括与顶点相关联的属性,例如颜色、法线等。通过利用以2D属性图对网格进行参数化的映射信息,可以将属性与网格的表面相关联。映射信息通常由与网格顶点相关联的参数坐标(称为UV坐标或纹理坐标)集来描述。2D属性图(在一些示例中称为纹理图)用于存储高分辨率属性信息,例如纹理、法线、位移等。这类信息可以用于各种目的,例如纹理映射和着色。
在一些实施例中,网格可以包括被称为几何信息、连接信息、映射信息、顶点属性和属性图的组成部分。在一些示例中,几何信息由与网格的顶点相关联的3D位置集来描述。在一示例中,(x,y,z)坐标可以用于描述顶点的3D位置。在一些示例中,连接信息包括对如何连接顶点以创建3D表面进行描述的顶点索引集。在一些示例中,映射信息对如何将网格表面映射到平面的2D区域进行描述。在一示例中,映射信息由与网格顶点相关联的UV参数集/纹理坐标(u,v)集以及连接信息来描述。在一些示例中,顶点属性包括与网格顶点相关联的标量或矢量属性值。在一些示例中,属性图包括与网格表面相关联的、并被存储为2D图片/视频的属性。在一示例中,视频(例如,2D图片/视频)和网格表面之间的映射是由映射信息定义的。
根据本公开的一方面,一些称为UV映射或网格参数化的技术被用于将3D域中的网格表面映射到2D域。在一些示例中,网格在3D域中被分割成块(在一些示例中也称为段)。然后,将块分别参数化为2D形状。可以将2D形状打包(例如,定向和放置)到图中,在一些示例中,图也被称为图谱。在一些示例中,可以使用2D图片或视频处理技术对图进行进一步处理。
在一示例中,UV映射技术生成与3D网格的块相对应的2D的UV图谱(也称为UV图)和一个或多个纹理图谱(也称为纹理图)。UV图谱包括将3D网格的3D顶点分配到2D域(例如,矩形)中的2D点。UV图谱是3D表面坐标到2D域坐标的映射。在一示例中,UV图谱中的2D坐标(u,v)处的点具有由3D域中顶点的坐标(x,y,z)形成的值。在一示例中,纹理图谱包括3D网格的颜色信息。例如,纹理图谱中的2D坐标(u,v)处的点的颜色等于3D域中(x,y,z)处的顶点的颜色。
根据本公开的一方面,动态网格是网格中至少一个组成部分(几何信息、连接信息、映射信息、顶点属性和属性图)随时间变化的网格。动态网格可以用一系列网格(也称为网格框架)来描述。由于动态网格可能包括随时间变化的大量信息,动态网格可能需要大量数据。网格的压缩技术可以允许在网格表示中有效地存储和传输媒体内容。
在一些示例中,动态网格可以具有恒定的连接信息、时变的几何和时变的顶点属性。在一些示例中,动态网格可以具有时变的连接信息。在一示例中,数字内容创建工具通常生成具有时变属性图和时变连接信息的动态网格。在一些示例中,容积式采集技术用于生成动态网格。容积式采集技术可以生成具有时变连接信息的动态网格(特别是在实时约束下)。
根据本公开的一些方面,一些网格压缩技术具有有损压缩性质,并且重建网格的质量会受到间隙的影响。在一些示例中,在网格压缩中使用了重新网格化技术,例如UV图谱采样技术。UV图谱采样技术通过在UV图谱上采样的规则方格点对3D网格模型进行重新网格化。规则的方格点取代了UV图谱中的原始顶点。可以从规则的方格点推断连接信息,而不需要单独对连接信息进行编码。UV图谱采样技术中的采样点与UV块边界上的网格顶点不重合,因此重建的网格可能存在间隙。
根据本公开的一方面,通过沿着由网格的某些边和顶点组成的切割路径将网格划分成块,并将块参数化为UV图中的UV块,来生成UV图(也称为UV图谱)。切割路径中的边和顶点被映射到UV图中UV块的边界边和边界顶点。例如,切割路径中的一条边被分割成UV图中两个不同UV块的2条边界边,切割路径中的一个顶点被分割成UV图中不同UV块的n(n≥2)个边界顶点。将分割同一条边所产生的边界边称为边匹配(edge mates)。将分割同一顶点所产生的边界顶点称为顶点匹配。因此,UV块的边界由边匹配和顶点匹配组成。
在一些示例中,当在UV图上使用UV图谱采样技术来估计参数化时,采样点在UV图中的UV块的边界顶点和边界边上不重合。然后,在解码器侧处,重建块的边界可能不满足边匹配和顶点匹配的匹配要求,因此块之间可能存在间隙。
图9示出了基于UV图谱采样进行处理的重建网格(900)的图示。重建网格(900)包括块之间的间隙(901)。
本公开的一些方面提供了用于网格压缩的块压缩(patch zipping)技术(也称为块连接技术)。块压缩技术可以保留UV块的边界信息,例如UV块(例如,重新网格化之前的原始UV块)的边界边和边界顶点。在一示例中,利用UV块的边界信息,可以通过UV图谱采样技术来重建水密型网格。
需注意的是,虽然UV图谱采样技术被用作有损压缩技术的示例,其中,块压缩技术可以用于实现块之间的填充间隙,但是其他重新网格化或压缩技术,不管参数化、采样或投影方法,都可以与块压缩技术一起使用,以实现间隙填充效果。
图10示出了根据本公开的一些实施例的用于网格压缩的框架(1000)的图。框架(1000)包括网格编码器(1010)和网格解码器(1050)。网格编码器(1010)将输入网格(1005)(在动态网格的情况下为网格帧)编码到码流(1045)中,网格解码器(1050)对码流(1045)进行解码以生成重建网格(1095)(在动态网格的情况下为网格帧)。
网格编码器(1010)可以是任何合适的设备,例如计算机、服务器计算机、台式计算机、膝上型计算机、平板计算机、智能手机、游戏设备、AR设备、VR设备等。网格解码器(1050)可以是任何合适的设备,例如计算机、客户端计算机、台式计算机、膝上型计算机、平板计算机、智能手机、游戏设备、AR设备、VR设备等。码流(1045)可以经由任何合适的通信网络(未示出)从网格编码器(1010)传输到网格解码器(1050)。
在图10的示例中,网格编码器(1010)包括被耦接在一起的有损网格编码器(1020)和边界编码器(1040)。有损网格编码器(1020)使用可能导致信息丢失的技术,并且信息丢失会导致使重建网格产生间隙。边界编码器(1040)用于保持输入网格(1005)中的块的边界信息,并将该边界信息编码到码流(1045)中。
在一些示例中,有损网格编码器(1020)使用可能导致信息丢失并导致在重建网格产生间隙的UV图谱采样技术。在图10的示例中,有损网格编码器(1020)包括如图10所示被耦接在一起预处理模块(1021)、UV图谱采样模块(1025)和编码器(1030)。
预处理模块(1021)对输入网格(1005)进行分割以生成块,并执行块的参数化以生成2D域中的图(1022),例如UV图和一个或多个纹理图。UV图包括与输入网格(1005)的块相对应的UV块。
UV图谱采样模块(1025)通过在规则方格点上对UV图进行采样来执行重新网格化,以生成新网格(1027)。在一示例中,新网格(1027)的形式是具有映射到规则方格点的顶点的新UV图和新纹理图。在一些示例中,新网格(1027)是从新UV图和新纹理图重建的重建网格。需注意的是,可以根据规则方格点来推断新网格(1027)的连接信息。
编码器(1030)可以对新网格(1027)进行编码。在一示例中,编码器(1030)包括PCC编码器,例如G-PCC编码器、V-PCC编码器等。新网格(1027)的顶点可以形成点云,并且编码器(1030)可以使用PCC编码器对点云进行编码。在另一示例中,编码器(1030)包括视频编码器,其可以根据合适的视频编码标准对新的UV图和新的纹理图进行编码。编码器(1030)可以是有损编码器或无损编码器。
在图10的示例中,边界编码器(1040)可以从图(1022)提取块边界信息,并将块边界信息编码到码流(1045)中。将在本公开中进一步描述边界编码器(1040)的操作。
在图10的示例中,将码流(1045)提供给网格解码器(1050)。网格解码器(1050)包括解码器(1060)、网格重建模块(1080)和边界解码器(1090)。在一示例中,解码器(1060)对应于编码器(1030),并且可以对由编码器(1030)编码的码流(1045)的一部分码流进行解码并生成已解码信息(1065)。
在一示例中,编码器(1030)是PCC编码器,那么,解码器(1060)是PCC解码器。解码器(1060)可以对由编码器(1030)编码的码流(1045)的一部分码流进行解码,以生成具有作为网格顶点的点的点云。例如,已解码信息(1065)包括具有作为网格顶点的点的点云。
在另一示例中,编码器(1030)包括一个或多个视频编码器,并且解码器(1060)包括一个或多个视频解码器。解码器(1060)可以对由编码器(1030)编码的码流(1045)的一部分码流进行解码,以生成图,例如UV图、一个或多个纹理图等。例如,已解码信息(1065)包括从码流(1045)解码的UV图和一个或多个纹理图。
在图10的示例中,边界解码器(1090)对应于边界编码器(1040),并且可以对由边界编码器(1040)编码的码流(1045)的一部分码流进行解码,并生成已解码的块边界信息(1091)。
在图10的示例中,将已解码信息(1065)和已解码块边界信息(1091)提供给网格重建模块(1080)。网格重建模块(1080)基于已解码信息(1065)和已解码块边界信息(1091)生成重建网格(1095)。将在本公开中进一步描述边界解码器(1090)和网格重建(1080)的操作。
需注意的是,可以通过各种技术分别实现网格编码器(1010)中的组件,例如预处理模块(1021)、UV图谱采样模块(1025)、编码器(1030)和边界编码器(1040)。在一示例中,由集成电路实现组件。在另一示例中,使用可由一个或多个处理器执行的软件来实现组件。
需注意的是,可以通过各种技术分别实现网格解码器(1050)中的组件,例如解码器(1060)和网格重建模块(1080)以及边界解码器(1090)。在一示例中,由集成电路实现组件。在另一示例中,使用可由一个或多个处理器执行的软件来实现组件。
根据本公开的一方面,边界编码器(1040)可以从UV图中确定UV块,确定UV块的边界,将UV块的边界存储为以合适的数据结构的块边界数据,并将块边界数据编码到码流(1045)中。
为了从UV图中确定UV块,在一些示例中,边界编码器(1040)使用三角形遍历算法,例如Edgebreaker或基于valence的算法,来检测UV图中的连接的三角形集。连接的三角形集对应于一个UV块。需注意的是,边界编码器(1040)还可以从预处理模块(1021)接收信息(例如,分割信息、参数化信息等),并根据从预处理模块(1021)接收的信息对UV块进行确定。
为了确定UV块的边界,在一些示例中,边界编码器(1040)对边界顶点和边界边进行确定。可以使用任何合适的技术来检测边界顶点和边界边。在一示例中,当UV块的两个相邻三角形不共享UV块中的边时,例如该边仅属于UV块的一个三角形,则该边是UV块的边界边,并且边界边的顶点是边界顶点。
在另一示例中,从网格顶点中分离出UV块的边界顶点。因此,可以基于顶点的(x,y,z)从UV块中检测到顶点匹配。例如,当不同UV块的多个顶点具有相同的(x,y,z)值时,该多个顶点是顶点匹配,并且也是UV块的边界顶点。此外,两个边界顶点之间的边是边界边。
在另一示例中,从预处理模块(1021)接收分割信息。例如,分割信息包括将输入网格(1005)分割成块的切割路径的信息。分割信息指示边界边和边界顶点。
能够以合适的数据结构存储块边界信息。在一示例中,以例如顺时针顺序、逆时针顺序等的特定顺序存储UV块的边界顶点。在一些示例中,构造哈希表(例如,称为boundary_table)以存储UV块的边界顶点,哈希表(例如boundary_table)包括分别对应于UV块的多个表条目,并且每个表条目是对应UV块的边界顶点列表。例如,可以根据UV块的标签来访问与UV块相对应的条目,并且该条目以固定顺序(例如逆时针顺序)存储UV块的边界顶点索引的列表。在一示例中,将哈希函数应用于第i个UV块的标签以获得值i,以访问表条目boundary_table[i]。表条目boundary_table[i]存储边界顶点索引的列表,例如boundary_table[i]=[idx_1,idx_2,idx_3,…,idx_m],m表示第i个UV块的边界顶点的数量,第i个UV块的边界顶点索引是idx_1,idx_2,idx_3,…,idx_m。因此,边界边是(idx_1,idx_2),(idx_2,idx_3),…,(idx_m,idx_1)。
需注意的是,在一示例中,边界表中的索引仅是为UV图谱中的边界顶点(不包括UV块内的顶点)所定义的边界顶点索引。
此外,将UV块的边界顶点的详细信息储存。例如,将对于UV块的每个边界顶点、UV图谱中边界顶点的UV坐标、例如输入网格(1005)中的对应网格顶点索引以及例如输入网格(1005)中的3D坐标进行存储。在一些示例中,对于每个边界顶点,与边界顶点相关联地存储6个整数(例如,UV图谱中的u坐标、UV图谱中的v坐标、输入网格(1005)中的网格顶点索引、输入网格(1005)中的x坐标、输入网格(1005)中的y坐标、输入网格(1005)中的z坐标)。在一示例中,被称为boundary_uv、boundary_idx、boundary_xyz的3个阵列用于存储边界顶点的详细信息。三个阵列中的每一个阵列分别包括边界顶点的阵列条目。可以通过边界顶点索引来访问边界顶点的阵列条目。边界顶点的阵列boundary_uv中的阵列条目对UV图谱中的边界顶点的UV坐标进行存储。边界顶点的阵列boundary_idx中的阵列条目对UV图谱中的边界顶点的网格顶点索引(例如,输入网格(1005)的网格顶点索引)进行存储。边界顶点的阵列boundary_xyz中的阵列条目对输入网格中的对应网格顶点的3D坐标(1005)进行存储。
因此,在一示例中,顶点匹配可以具有相同的网格顶点索引值和相同的3D坐标值。
在另一示例中,对于网格序列,使用两个3通道图片来存储边界顶点的细节信息。例如,将边界顶点的UV坐标和相应的网格顶点索引存储为例如第一3通道图片中的3个通道,并将边界顶点的3D坐标存储为例如第二3通道图片中的3个通道。
需注意的是,与UV块的边界顶点相对应的网格顶点位于切割路径上,因此本文描述的对应网格顶点索引是为那些切割路径顶点所定义的。
根据本公开的一方面,利用边界信息,占用图可能不一定被编码在码流中(1045)。例如,可以基于边界信息来确定UV块内部的点和UV块外部的点。更具体地说,可以推断由UV块的边界顶点所定义的多边形内的点为被占用的点,并且属于该UV块。如果UV图谱上的某个点不属于任何UV块,则可以推断该点未被占用。在一些示例中,编码器(1030)包括用于对几何图片进行编码的视频编码器,不包括对占用图进行编码的视频编码器。
在一示例中,边界编码器(1040)使用无损编码技术将boundary_table和boundary_idx编码到码流(1045)中,并且使用有损或无损编码技术将boundary_xyz和boundary_uv编码到码流(1045)中。在另一示例中,边界编码器(1040)使用无损编码技术将boundary_table、boundary_uv和boundary_idx编码到码流(1045)中,并且使用有损或无损编码技术将boundary_xyz编码到码流(1045)中。
在一些示例中,每个网格帧的边界信息被独立编码。在一些示例中,可以通过探索帧间相关性来编码网格帧的边界信息。例如,当对边界信息进行编码时,可以应用熵编码中的帧间预测和帧间相关上下文建模。
根据本公开的一方面,边界解码器(1090)被配置为从码流(1045)解码边界信息,例如bundary_table、bundary_uv、boundary_idx、bundary_xyz。在一示例中,网格重建模块(1080)可以逐块地生成重建网格(1095)。对于每个UV块,网格重建模块(1080)在UV块的标签上应用哈希函数以确定boundary_table中的表条目的表条目索引。然后,网格重建模块(1080)对表条目进行访问,以获得UV块的边界顶点的边界顶点索引列表,并基于边界顶点确定UV块的边界边。
在一些示例中,从boundary_table基于UV块的边界顶点的边界顶点索引,访问阵列boundary_uv以获得UV块的边界顶点的UV坐标。此外,在一些示例中,当使用UV图谱采样技术时,可以确定UV块内规则方格上的采样点,并且可以确定采样点的UV坐标。
在一些示例中,利用获得的UV块的UV坐标和边界边,可以推断连接信息,并且可以生成UV块的面。在一示例中,基于所获得的UV块内点的UV坐标和UV块的边界边,可以使用受约束的Delaunay三角剖分技术来产生UV块的重新网格化的三角形面。需注意的是,可以使用其他合适的三角剖分或重新网格化技术来生成UV块的面。在一些示例中,码流包括对待使用的特定三角剖分或重新网格化技术进行指示的信号。
根据本公开的一方面,可以从几何图片中获得UV块内顶点的3D坐标,例如根据UV块来获得UV块内顶点的3D坐标。对于UV块边界上的边界顶点,在一示例中,可以从boundary_table确定UV块的边界顶点索引,然后根据阵列boundary_idx确定相应的网格顶点索引。在一示例中,阵列boundary_xyz存储与网格顶点索引相对应的3D坐标,然后可以基于边界顶点的网格顶点索引来确定边界顶点的3D坐标。在另一个示例中,阵列boundary_xyz存储与UV块中边界顶点索引相对应的3D坐标,然后可以使用boundary_table中的边界顶点索引从阵列boundary_xyz中获得边界顶点的3D坐标。
图11示出了概述根据本公开实施例的过程(1100)的流程图。可以在网格的编码过程期间使用过程(1100)。在各种实施例中,过程(1100)由处理电路执行。在一些实施例中,过程(1100)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(1100)。该过程从(S1101)开始并进行到(S1110)。
在(S1110)处,对从网格分割的多个块的块边界信息进行确定。
在(S1120)处,多个块的块信息被编码成码流的第一部分。
在(S1130)处,多个块的块边界信息被编码成码流的第二部分。块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对。
根据本公开的一方面,第一部分的块信息具有的块边界信息与第二部分的块边界信息不同。例如,通过具有有损压缩性质的技术,例如包括UV图谱采样技术等,对块信息进行编码。
在一些实施例中,UV图谱中的UV块被编码到码流的第一部分中,UV块的边界信息被编码到码流的第二部分中。UV图谱中的UV块与网格中的多个块相对应。
在一些实施例中,为了确定块边界信息,从UV图谱确定UV块,并且确定UV块的边界。在一些示例中,为了确定UV块,检测UV图谱中的第一连接三角形集,第一连接三角形集形成第一UV块。为了确定UV块的边界,在一示例中,检测第一UV块的边集,第一UV块的两个相邻三角形不对该边集中的每一条边进行共享。在另一示例中,检测第一UV块的顶点集,该顶点集中的每一个顶点在另一UV块中至少具有一个顶点匹配。
在一些示例中,为了对UV块进行编码,在规则方格上对UV图谱进行采样以生成新网格;新网格的信息被编码到码流的第一部分中。
在一些示例中,为了对UV块的边界信息进行编码,边界表被编码到第二部分中。边界表(例如,boundary_table)包括多个UV块的边界顶点列表。在一些示例中,第一阵列被编码到第二部分中,第一阵列(例如,boundary_uv)携带用于将多个块的边界顶点映射到UV图谱中的UV坐标。此外,在一些示例中,第二阵列(例如,boundary_idx)被编码到第二部分中。第二阵列携带与多个UV块的边界顶点相对应的网格的网格顶点索引。在一些示例中,第三阵列(例如,boundary_xyz)被编码到第二部分中,第三阵列携带与多个UV块的边界顶点的网格顶点索引相对应的三维坐标。在一些其他示例中,第三阵列(例如,boundary_xyz)被编码到第二部分中,第三阵列携带与多个UV块的边界顶点的边界顶点索引相对应的三维坐标。
根据本公开的一方面,可以基于被编码到码流的第二部分中的边界信息来确定占用图,因此在示例中,第一部分不需要包括占用图。
然后,该过程进行到(S1199)并终止。
可以适当调整过程(1100)。可以修改和/或省略过程(1100)中的一个(或多个)步骤。可以添加额外的一个(或多个)步骤。可以使用任何合适的实现顺序。
图12示出了概述根据本公开实施例的过程(1200)的流程图。可以在网格的解码过程期间使用过程(1200)。在各种实施例中,过程(1200)由处理电路执行。在一些实施例中,过程(1200)以软件指令实现,因此当处理电路执行软件指令时,处理电路执行过程(1200)。该过程从(S1201)开始并进行到(S1210)。
在(S1210)处,接收携带网格的已编码信息的码流。网格被分割为多个块,码流包括第一部分和第二部分。第一部分包括块信息,第二部分包括块边界信息,该块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对。
在(S1220)处,解码第一部分以获得块信息。
在(S1230)处,解码第二部分以获得块边界信息。
在(S1240)处,基于块信息和块边界信息生成重建网格。将第一边和第二边映射到重建网格中的同一边,以压缩(连接)第一块和第二块。
在一些示例中,从第一部分解码的块信息具有的块边界信息与从第二部分解码的块边界信息不同。例如,通过具有有损压缩性质的技术,例如包括UV图谱采样技术等,对块信息进行编码。
在一些实施例中,为了解码第二部分,从第二部分解码出边界表(例如,boundary_table)。边界表包括UV图谱中UV块的边界顶点列表。在一些示例中,根据边界表确定第一块的第一边界顶点列表,并且根据边界表确定第二块的第二边界顶点列表。此外,根据第一边界顶点列表确定第一块的第一边界边,第一边是第一块的多个第一边界边中的一个。根据第二边界顶点列表确定第二块的第二边界边,第二边是第二块的多个第二边界边中的一个。
为了解码第二部分,在一些示例中,从第二部分解码出第一阵列(例如,boundary_uv)。第一个阵列携带用于将块的边界顶点映射到UV图谱的UV坐标。根据第一阵列,确定第一边界顶点列表的第一边界UV坐标,以用于将第一块映射到UV图谱中的与第一块对应的第一UV块。根据第一阵列,确定第二边界顶点列表的第二边界UV坐标,以用于将第二块映射到UV图谱中的与第二块对应的第二UV块。
在一些示例中,为了生成重建网格,确定第一UV块内的第一顶点的第一UV坐标,并且确定第二UV块内的第二顶点的第二UV坐标。例如,第一顶点和第二顶点位于UV图谱的规则方格处。在一些示例中,基于第一UV块内的第一顶点的第一UV坐标和第一边界顶点列表的第一边界UV坐标来确定第一UV块的第一连接信息,并且基于第二UV块内的第二顶点的第二UV坐标和第二边界顶点列表的第二边界UV坐标来确定第二UV块的第二连接信息。可以通过任何合适的技术来确定第一连接信息和第二连接信息。在一示例中,基于码流中的信号对特定连接确定技术的使用进行确定。
在一些示例中,从第二部分解码出第二阵列(例如,boundary_idx),第二阵列携带与块的边界顶点相对应的网格的网格顶点索引。在一个示例中,根据第二阵列,确定第一边的第一顶点的第一网格顶点索引,以及确定第二边的第二顶点的第二网格顶点索引。用于第一边的第一顶点的第一网格顶点索引与用于第二边的第二顶点的第二网格顶点索引相匹配。因此,第一边和第二边是边匹配。此外,在一示例中,从第二部分解码出第三阵列(例如,boundary_xyz)。第三阵列携带与网格顶点索引相对应的三维坐标。
在一些其它示例中,从第二部分解码出第三阵列(例如,boundary_xyz)。第三阵列携带与于UV块的边界顶点索引相对应的三维(3D)坐标。在一示例中,根据第三阵列,确定第一边的第一顶点的第一3D坐标,以及确定第二边的第二顶点的第二3D坐标。第一边的第一顶点的第一3D坐标与第二边的第二顶点的第二3D坐标相匹配,因此第一边和第二边是边匹配。
然后,该过程进行到(S1299)并终止。
可以适当调整过程(1200)。可以修改和/或省略过程(1200)中的一个(或多个)步骤。可以添加额外的一个(或多个)步骤。可以使用任何合适的实现顺序。
可以单独使用或以任何顺序组合来使用本公开中公开的技术。此外,可以通过处理电路(例如,一个或多个处理器或一个或多个集成电路)来实现技术(例如,方法、实施例)、编码器和解码器中的每一个。在一些示例中,一个或多个处理器执行被存储在非暂时性计算机可读介质中的程序。
可以使用计算机可读指令将上述技术实现为计算机软件,并且物理地存储在一个或多个计算机可读介质中。例如,图13示出了适用于实现本公开主题的某些实施例的计算机系统(1300)。
可以使用任何合适的机器代码或计算机语言对计算机软件进行编码,该机器代码或计算机语言可以经受汇编、编译、链接或类似机制来创建包括指令的代码,该指令可以由一个或多个计算机中央处理单元(central processing unit,CPU)、一个或多个图形处理单元(Graphics Processing Unit,GPU)等直接执行,或通过译码、微码执行等来执行。
这些指令可以在各种类型的计算机或其组件上执行,包括例如个人计算机、平板计算机、服务器、智能手机、游戏设备、物联网设备等。
图13中示出的计算机系统(1300)的组件本质上是示例性的,并且不旨在对实现本公开实施例的计算机软件的使用范围或功能提出任何限制。组件的配置也不应被解释为具有与计算机系统(1300)示例性实施例中所示的任何一个组件或组件组合相关的任何依赖性或要求。
计算机系统(1300)可以包括某些人机界面输入设备。人机接口输入设备可以响应于一个或多个人类用户通过例如以下的输入:触觉输入(例如,击键、滑动、数据手套移动)、音频输入(例如,语音、拍手)、视觉输入(例如,手势)、嗅觉输入(未描绘)。人机接口设备还可用于采集不一定与人的意识输入直接相关的某些介质,例如音频(例如,语音、音乐、环境声音)、图片(例如,扫描的图片、从静止图片照相机获得的摄影图片)、视频(例如二维视频、包括立体视频的三维视频)。
输入人机界面设备可以包括以下中的一个或多个(每种仅描绘一个):键盘(1301)、鼠标(1302)、触控板(1303)、触摸屏(1310)、数据手套(未示出)、操纵杆(1305)、麦克风(1306)、扫描仪(1307)、照相机(1308)。
计算机系统(1300)还可以包括某些人机界面输出设备。这些人机接口输出设备可以通过例如触觉输出、声音、光、气味/味道来刺激一个或多个人类用户的感官。这样的人机接口输出设备可以包括触觉输出设备(例如触摸屏(1310)的触觉反馈、数据手套(未示出)或操纵杆(1305),但也可以是不用作输入设备的触觉反馈设备)、音频输出设备(例如,扬声器(1309)、头戴式耳机(未描绘))、视觉输出设备(例如包括CRT屏幕、LCD屏幕、等离子屏幕、OLED屏幕的屏幕(1310),每种屏幕具有或不具有触摸屏输入能力,每种屏幕具有或不具有触觉反馈能力,其中一些屏幕能够通过诸如立体图像输出之类的装置、虚拟现实眼镜(未描述)、全息显示器和烟箱(未描述)以及打印机(未描述)来输出二维视觉输出或超过三维的输出。
计算机系统(1300)还可以包括人类可访问的存储设备和它们相关联的介质,例如包括具有CD/DVD等介质(1321)的CD/DVD ROM/RW(1320)的光学介质、指状驱动器(1322)、可移动硬盘驱动器或固态驱动器(1323)、诸如磁带和软盘(未描绘)之类的传统磁介质和诸如安全软件狗(未描绘)之类的基于专用ROM/ASIC/PLD的设备等。
本领域技术人员还应理解,结合本公开主题使用的术语“计算机可读介质”不包括传输介质、载波或其他瞬时信号。
计算机系统(1300)还可以包括到一个或多个通信网络(1355)的接口(1354)。网络可以例如是无线的、有线的、光的。网络还可以是局域网络、广域网络、城域网络、车辆与工业网络、实时网络、延迟容忍网络等。网络示例包括诸如以太网之类的局域网、无线LAN、包括GSM、3G、4G、5G、LTE等的蜂窝网络、包括有线电视、卫星电视和地面广播电视的电视有线或无线广域数字网络以及包括CANBus的车辆与工业电视等。某些网络通常需要附接到某些通用数据端口或外围总线(1349)的外部网络接口适配器(例如计算机系统(1300)的USB端口);其它网络接口通常通过附连到如下所述的系统总线(例如,附接到PC计算机系统的以太网接口或到智能手机计算机系统的蜂窝网络接口)而集成到计算机系统(1300)的内核中。计算机系统(1300)可以使用这些网络中的任何一个与其他实体通信。这种通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,到某些CANbus设备的CANbus)或双向的(例如到使用局域网或广域数字网络的其他计算机系统)。如上所述,可以在这些网络和网络接口中的每一个上使用某些协议和协议栈。
上述人机界面设备、人机可访问的存储设备和网络接口可以附接到计算机系统(1300)的内核(1340)。
内核(1340)可以包括一个或多个中央处理单元(CPU)(1341)、图形处理单元(GPU)(1342)、以FPGA形式的专用可编程处理单元(1343)、用于某些任务的硬件加速器(1344)和图形适配器(1350)等。这些设备与只读存储器(Read-only memory,ROM)(1345)、随机存取存储器(1346)、诸如内部非用户可访问硬盘驱动器、SSD等之类的内部大容量存储器(1347)可以通过系统总线(1348)连接。在一些计算机系统中,能够以一个或多个物理插头的形式访问系统总线(1348),以允许通过附加CPU、GPU等进行扩展。外围设备可以直接附接到内核的系统总线(1348),或通过外围设备总线(1349)附接到内核的系统总线(1348)。在一示例中,屏幕(1310)可以连接到图形适配器(1350)。外围总线的体系结构包括PCI、USB等。
CPU(1341)、GPU(1342)、FPGA(1343)和加速器(1344)可以执行某些指令,这些指令组合起来可以构成上述计算机代码。该计算机代码可以存储在ROM(1345)或RAM(1346)中。过渡数据也可以存储在RAM(1346)中,而永久数据可以存储在例如内部大容量存储器(1347)中。可以通过使用高速缓冲存储器来实现对任何存储器设备的快速存储和检索,高速缓冲存储器可以与一个或多个CPU(1341)、GPU(1342)、大容量存储器(1347)、ROM(1345)、RAM(1346)等紧密相关联。
计算机可读介质上可以具有用于执行各种由计算机实现的操作的计算机代码。介质和计算机代码可以是为了本公开的目的而特别设计和构造的介质和计算机代码,或它们可以是计算机软件领域的技术人员公知且可用的类型。
作为非限制示例,可以由于一个(或多个)处理器(包括CPU、GPU、FPGA、加速器等)执行包含在一种或多种有形的计算机可读介质中的软件而使得具有架构(1300),特别是内核(1340)的计算机系统提供功能。这种计算机可读介质可以是与上述的用户可访问的大容量存储器相关联的介质,以及非暂时性内核(1340)的某些存储器,例如内核内部大容量存储器(1347)或ROM(1345)。实现本公开的各种实施例的软件可以存储在这样的设备中并由内核(1340)执行。根据特定需要,计算机可读介质可以包括一个或多个存储器设备或芯片。软件可以使内核(1340),特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文描述的特定进程或特定进程的特定部分,包括定义存储在RAM(1346)中的数据结构和根据软件定义的过程修改这些数据结构。附加地或替代地,可以由于硬连线或以其他方式体现在电路(例如,加速器(1344))中的逻辑而使得计算机系统通过功能,电路可以代替软件或与软件一起操作,以执行本文描述的特定过程或特定过程的特定部分。在适当的情况下,提及软件的部分可以包含逻辑,反之亦然。在适当的情况下,提及计算机可读介质的部分可以包括存储用于执行的软件的电路(例如集成电路(integrated circuit,IC))、体现用于执行的逻辑的电路,或包含两者。本公开包括硬件和软件的任何合适的组合。
尽管本公开已经描述了一些示例性实施例,但存在落入本公开范围内的改变、置换和各种替代等同物。因此,可以理解的是,本领域的技术人员将能够设计许多系统和方法,尽管这些系统和方法在本文中未明确示出或描述,但是这些系统和方法体现了本公开的原理,因此属于本公开的精神和范围内。

Claims (20)

1.一种网格解压缩方法,包括:
接收携带网格的已编码信息的码流,所述网格被分割为多个块,所述码流包括第一部分和第二部分,所述第一部分包括块信息,所述第二部分包括块边界信息,所述块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对;
解码所述第一部分以获得所述块信息;
解码所述第二部分以获得所述块边界信息;以及
基于所述块信息和所述块边界信息生成重建网格,所述第一边和所述第二边被映射到所述重建网格中的同一边,以连接所述第一块和所述第二块。
2.根据权利要求1所述的方法,其中,从所述第一部分解码的所述块信息具有的块边界信息与从所述第二部分解码的所述块边界信息不同。
3.根据权利要求1所述的方法,其中,解码所述第二部分还包括:
从所述第二部分解码出边界表,所述边界表包括与所述块相关联的边界顶点列表;
根据所述边界表,确定与所述第一块相关联的第一边界顶点列表和与所述第二块相关联的第二边界顶点列表;
根据所述第一边界顶点列表确定所述第一块的第一边界边,所述第一边是所述第一块的边界边;以及
根据所述第二边界顶点列表确定所述第二块的第二边界边,所述第二边是所述第二块的边界边。
4.根据权利要求3所述的方法,其中,解码所述第二部分还包括:
从所述第二部分解码出第一阵列,所述第一阵列携带用于将所述块的所述边界顶点映射到UV图谱的UV坐标;
根据所述第一阵列,确定所述第一边界顶点列表的第一边界UV坐标,所述第一边界UV坐标用于将所述第一块映射到所述UV图谱中的第一UV块,所述第一UV块对应于所述第一块;以及
根据所述第一阵列,确定所述第二边界顶点列表的第二边界UV坐标,所述第二边界UV坐标用于将所述第一块映射到所述UV图谱中的第二UV块,所述第二UV块对应于所述第二块。
5.根据权利要求4所述的方法,其中,生成所述重建网格还包括:
确定所述第一UV块内的第一顶点的第一UV坐标;以及
确定所述第二UV块内的第二顶点的第二UV坐标。
6.根据权利要求5所述的方法,其中,所述第一顶点和所述第二顶点位于所述UV图谱的规则方格处。
7.根据权利要求5所述的方法,还包括:
基于所述第一顶点的所述第一UV坐标以及所述第一边界顶点列表的所述第一边界UV坐标,确定用于所述第一UV块的第一连接信息;以及
基于所述第二顶点的所述第二UV坐标以及所述第二边界顶点列表的所述第二边界UV坐标,确定用于所述第二UV块的第二连接信息。
8.根据权利要求7所述的方法,还包括:
基于所述码流中的信号,对特定连接确定技术的使用进行确定。
9.根据权利要求5所述的方法,还包括:
从所述第二部分解码出第二阵列,所述第二阵列携带所述网格的与所述块的所述边界顶点相对应的网格顶点索引;
根据所述第二阵列,确定所述第一边的第一顶点的第一网格顶点索引;以及
根据所述第二阵列,确定所述第二边的第二顶点的第二网格顶点索引,所述第一边的第一顶点的所述第一网格顶点索引与所述第二边的第二顶点的所述第二网格顶点索引相匹配。
10.根据权利要求9所述的方法,还包括:
从所述第二部分解码出第三阵列,所述第三阵列携带与所述块的所述边界顶点的所述网格顶点索引相对应的三维坐标。
11.根据权利要求5所述的方法,还包括:
从所述第二部分解码出第三阵列,所述第三阵列携带所述网格中的所述块的所述边界顶点的三维(3D)坐标;
根据所述第三阵列,确定所述第一边的第一顶点的第一3D坐标;以及
根据所述第三阵列,确定所述第二边的第二顶点的第二3D坐标,所述第一边的所述第一顶点的所述第一3D坐标与所述第二边的所述第二顶点的所述第二3D坐标相匹配。
12.一种装置,包括处理电路,所述处理电路被配置为:
接收携带网格的编码信息的码流,所述网格被分割为多个块,所述码流包括第一部分和第二部分,所述第一部分包括块信息,所述第二部分包括块边界信息,所述块边界信息指示至少第一块的第一边和第二块的第二边是边匹配对;
解码所述第一部分以获得所述块信息;
解码所述第二部分以获得所述块边界信息;以及
基于所述块信息和所述块边界信息生成重建网格,所述第一边和所述第二边被映射到所述重建网格中的同一边,以连接所述第一块和所述第二块。
13.根据权利要求12所述的装置,其中,从所述第一部分解码的所述块信息具有的块边界信息与从所述第二部分解码的所述块边界信息不同。
14.根据权利要求12所述的装置,其中,所述处理电路被配置为:
从所述第二部分解码出边界表,所述边界表包括所述块的边界顶点列表;
根据所述边界表,确定所述第一块的第一边界顶点列表和所述第二块的第二边界顶点列表;
根据所述第一边界顶点列表确定所述第一块的第一边界边,所述第一边是所述第一块的边界边;以及
根据所述第二边界顶点列表确定所述第二块的第二边界边,所述第二边是所述第二块的边界边。
15.根据权利要求14所述的装置,其中,所述处理电路被配置为:
从所述第二部分解码出第一阵列,所述第一阵列携带用于将所述块的边界顶点映射到UV图谱中的UV坐标;
根据所述第一阵列,确定所述第一边界顶点列表的第一边界UV坐标,所述第一边界UV坐标用于将所述第一块映射到所述UV图谱中的第一UV块,所述第一UV块对应于所述第一块;以及
根据所述第一阵列,确定所述第二边界顶点列表的第二边界UV坐标,所述第二边界UV坐标用于将所述第二块映射到所述UV图谱中的第二UV块,所述第二UV块对应于所述第二块。
16.根据权利要求15所述的装置,其中,所述处理电路被配置为:
确定所述第一UV块内的第一顶点的第一UV坐标;以及
确定所述第二UV块内的第二顶点的第二UV坐标。
17.根据权利要求16所述的装置,其中,所述第一顶点和所述第二顶点位于所述UV图谱的规则方格处。
18.根据权利要求16所述的装置,其中,所述处理电路被配置为:
基于所述第一顶点的所述第一UV坐标以及所述第一边界顶点列表的所述第一边界UV坐标,确定所述第一UV块的第一连接信息;以及
基于所述第二顶点的所述第二UV坐标以及所述第二边界顶点列表的所述第二边界UV坐标,确定所述第二UV块的第二连接信息。
19.根据权利要求16所述的装置,其中,所述处理电路被配置为:
从所述第二部分解码出第二阵列,所述第二阵列携带所述网格的与所述块的边界顶点相对应的网格顶点索引;
根据所述第二阵列,确定所述第一边的第一顶点的第一网格顶点索引;以及
根据所述第二阵列,确定所述第二边的第二顶点的第二网格顶点索引,所述第一边的第一顶点的所述第一网格顶点索引与所述第二边的第二顶点的所述第二网格顶点索引相匹配。
20.根据权利要求16所述的装置,其中,所述处理电路被配置为:
从所述第二部分解码出第三阵列,所述第三阵列携带所述网格中的所述块的所述边界顶点的三维3D坐标;
根据所述第三阵列,确定所述第一边的第一顶点的第一3D坐标;以及
根据所述第三阵列,确定所述第二边的第二顶点的第二3D坐标,所述第一边的所述第一顶点的所述第一3D坐标与所述第二边的所述第二顶点的所述第二3D坐标相匹配。
CN202280017289.0A 2021-08-25 2022-08-24 用于网格压缩的块压缩 Pending CN116997935A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163237097P 2021-08-25 2021-08-25
US63/237,097 2021-08-25
US17/893,892 US20230063575A1 (en) 2021-08-25 2022-08-23 Patch zippering for mesh compression
US17/893,892 2022-08-23
PCT/US2022/075395 WO2023028520A1 (en) 2021-08-25 2022-08-24 Patch zippering for mesh compression

Publications (1)

Publication Number Publication Date
CN116997935A true CN116997935A (zh) 2023-11-03

Family

ID=85287673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280017289.0A Pending CN116997935A (zh) 2021-08-25 2022-08-24 用于网格压缩的块压缩

Country Status (6)

Country Link
US (1) US20230063575A1 (zh)
EP (1) EP4200815A4 (zh)
JP (1) JP2023552116A (zh)
KR (1) KR20230056750A (zh)
CN (1) CN116997935A (zh)
WO (1) WO2023028520A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11954891B2 (en) * 2020-06-30 2024-04-09 Electronics And Telecommunications Research Institute Method of compressing occupancy map of three-dimensional point cloud
US20230048897A1 (en) * 2021-08-16 2023-02-16 Tencent America LLC 2d uv atlas sampling based methods for dynamic mesh compression
WO2024003683A1 (en) * 2022-07-01 2024-01-04 Nokia Technologies Oy Method apparatus and computer program product for signaling boundary vertices
US20240020935A1 (en) * 2022-07-15 2024-01-18 The Boeing Company Modeling system for 3d virtual model

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438266B1 (en) * 1998-08-27 2002-08-20 Lucent Technologies Inc. Encoding images of 3-D objects with improved rendering time and transmission processes
WO2018039936A1 (en) * 2016-08-30 2018-03-08 Microsoft Technology Licensing, Llc. Fast uv atlas generation and texture mapping
US11450030B2 (en) * 2019-09-24 2022-09-20 Apple Inc. Three-dimensional mesh compression using a video encoder

Also Published As

Publication number Publication date
US20230063575A1 (en) 2023-03-02
EP4200815A4 (en) 2024-01-24
WO2023028520A1 (en) 2023-03-02
JP2023552116A (ja) 2023-12-14
KR20230056750A (ko) 2023-04-27
EP4200815A1 (en) 2023-06-28

Similar Documents

Publication Publication Date Title
US20230063575A1 (en) Patch zippering for mesh compression
JP7476432B2 (ja) メッシュ復元のための方法、装置及びコンピュータプログラム
US20230196663A1 (en) Checking overlapping-free property for patches in mesh compression
KR20230148257A (ko) 지오메트릭과 시맨틱 정보를 사용한 맨해튼 레이아웃 추정
KR20230127324A (ko) 메시 압축을 위한 패치 시간 정렬의 디코딩
JP2024515984A (ja) メッシュ圧縮のための境界ジオメトリ情報の予測コーディング
US11967025B2 (en) Detection of boundary loops in non-manifold meshes
JP7504298B2 (ja) 3次元(3d)メッシュのuv座標を処理するための方法、装置及びコンピュータプログラム
JP7497443B2 (ja) 点群コーディングのための方法、装置、およびコンピュータプログラム
US20230177738A1 (en) Dynamic mesh compression based on point cloud compression
US20230014820A1 (en) Methods and apparatuses for dynamic mesh compression
US20230090677A1 (en) Coding connectivity in vertex reordering methods for mesh compression
US20230281876A1 (en) Mesh compression with constrained geometry dynamic range
CN116746156A (zh) 3d网格压缩中的2d图谱自适应采样
CN117461054A (zh) 具有推导的纹理坐标的网格压缩
CN116324912A (zh) 用于网格压缩的顶点重新排列
KR20240093984A (ko) 인스턴스 세그먼트화를 사용한 포인트 클라우드 최적화
CN116686011A (zh) 基于图表的网格压缩方法和装置
JP2024518767A (ja) 3次元(3d)メッシュフレームの第1の部分を2次元(2d)占有マップに投影するための方法、デバイスおよびコンピュータプログラム
CN116711305A (zh) 用于解码器执行网格压缩的自适应采样方法和装置
CN116368523A (zh) Uv坐标编码
CN118215940A (zh) 使用实例分段的点云优化
CN117083636A (zh) 用于网格压缩的边界几何信息的预测编码
CN117136545A (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