在点云压缩中处理重复点的方法和装置与流程

文档序号:21789011发布日期:2020-08-07 20:40阅读:300来源:国知局
本公开总体上涉及三维(3d)对象的点云压缩。更具体地,本公开涉及一种用于在点云压缩中处理重复点的方法和装置。
背景技术
::由于功能强大的手持设备(如智能手机)的可用性,三百六十度(360°)视频正在成为体验沉浸式视频的新方法。360°视频通过捕捉360°世界全景,为消费者提供“真实生活”、“身临其境”的沉浸式体验。用户可以交互地更改其视点,并动态查看他们想要的捕获场景或对象的任何部分。显示和导航传感器实时跟踪头部运动,以确定用户要观看的360°视频区域。360°视频可提供三个自由度(3dof)的沉浸式体验。六级自由度(6dof)是沉浸式体验的下一个层次,其中用户可以在虚拟/增强环境中转过头并四处走动。需要自然界中的3d多媒体数据(例如点云)来提供6dof体验。点云和网格是一组3d点,代表3d对象表面的模型。点云在各种应用中很常见,例如游戏、3d地图、可视化、医疗应用、增强现实、虚拟现实、自动驾驶、多视图重播、6dof沉浸式媒体等是其中的一些。但是,点云由需要压缩的大量数据组成。技术实现要素:技术问题本公开提供了点云压缩中重复点的处理。解决问题在一个实施例中,提供了一种用于解码3d点云数据的解码器。解码器包括通信接口和处理器,该通信接口被配置为接收包括3d点云数据的编码比特流。所述处理器被配置为解码所述比特流以识别多个2d帧;基于多个2d帧中两个或更多个几何图形帧中的相应像素的位置,识别多个2d帧中两个或更多个几何图形帧中的相应像素;识别两个或更多个几何图形帧中相应像素的深度值;基于所识别的两个或更多个几何图形帧中的相应像素的深度值,在两个或更多个几何图形帧中的至少一个中识别重复点;并在重构3d点云数据时去除或忽略识别的重复点。在另一个实施例中,提供了一种用于对3d点云数据进行编码的编码器。编码器包括处理器和通信接口。处理器被配置为将3d点云数据的第一二维(2d)帧集编码为编码比特流;和对第一2d帧集执行预测,以将3d点云数据的第二2d帧集编码为编码比特流。其中,为了执行预测,处理器还被配置为:解码比特流以生成多个2d帧;基于多个2d帧中两个或更多个几何图形帧中的相应像素的位置,识别多个2d帧中两个或更多个几何图形帧中的相应像素;识别两个或更多个几何图形帧中相应像素的深度值;基于所识别的两个或更多个几何图形帧中的相应像素的深度值,在两个或更多个几何图形帧中的至少一个中识别重复点;和在重构3d点云数据时,去除或忽略识别的重复点。通信接口被配置为发送包括3d点云数据的编码比特流。根据以下附图、说明书和权利要求,其他技术特征对于本领域技术人员而言将是显而易见的。发明的有益效果本公开提供了点云压缩中重复点的处理。附图说明为了更全面地理解本公开及其优点,现在结合附图参考以下描述,其中相同的附图标记表示相同的部分:图1示出了根据本公开的示例计算系统;图2和图3示出了根据本公开的实施例的计算系统中的示例设备;图4示出了根据本公开的各种实施例的点云数据中的重复点的示例;图5示出了根据本公开的各种实施例的编码器的示例框图;图6示出了根据本公开的各种实施例的解码器的示例框图;图7示出了根据本公开的各种实施例的基于几何图形的重复点去除过程的流程图;图8示出了根据本公开的各种实施例的用于多属性点云的编码器的示例框图;图9示出了根据本公开的各种实施例的基于几何图形和属性的重复点去除过程的流程图;和图10示出了根据本公开的各种实施例的用于解码3d点云数据的过程的流程图。具体实现方式在进行下面的详细描述之前,阐述整个专利文件中使用的某些单词和短语的定义可能是有利的。术语“耦合”及其派生词是指两个或多个元素之间的任何直接或间接通信,无论这些元素是否彼此物理接触。术语“发送”、“接收”和“通信”及其派生词涵盖直接和间接通信。术语“包括”和“包含”及其派生词是指包括但不限于。术语“或”是包含性的,意味着和/或。短语“与...相关”及其派生词意指包括、包括在其中、与之互连、包含、包含在其中、与之连接、与之耦合、与之通信、与之合作、交错、并置、与之近似、与之绑定或具有、具有属性或具有某种关系、与之具有某种关系等。术语“控制器”是指控制至少一个操作的任何设备、系统或其一部分。这样的控制器可以以硬件或硬件和软件和/或固件的组合来实现。与任何特定控制器关联的功能可以是集中式或分布式,无论本地或远程。短语“至少一个”当与项目列表一起使用时,意味着可以使用一个或多个所列项目的不同组合,并且可能只需要列表中的一个项目。例如,“a、b和c中的至少一个”包括以下组合中的任何一个:a;b;c;a和b;a和c;b和c;以及a和b和c。此外,下面描述的各种功能可以由一个或多个计算机程序实现或支持,每个计算机程序由计算机可读程序代码形成并体现在计算机可读介质中。术语“应用”和“程序”是指一个或多个计算机程序、软件组件、指令集、过程、函数、对象、类、实例、相关数据或其一部分,适于在合适的计算机可读程序代码中实施。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够由计算机访问的任何类型的介质,例如只读存储器(rom)、随机存取存储器(ram)、硬盘驱动器、光盘(cd)、数字视频光盘(dvd)或任何其他类型的内存。“非暂时性”计算机可读介质不包括传输瞬时电或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括可永久存储数据的介质以及可存储数据并随后覆盖的介质,例如可重写光盘或可擦除存储设备。贯穿本专利文件提供了其他某些单词和短语的定义。本领域普通技术人员应该理解,在许多(如果不是大多数)情况下,这样的定义适用于这种定义的先前以及将来的使用。以下讨论的图1至图10以及用于描述本专利文件中的本公开的原理的各种实施例仅是示例性的,并且不应以任何方式解释为限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当布置的系统或设备中实现。本公开的实施例认识到就消耗的资源而言,诸如3d对象的解码和渲染点云数据可能是昂贵的。例如,在重构点云时可能会大量使用处理和存储资源。本公开的实施例通过减少所生成的冗余和重复顶点(vertice)的数量来提供对点云压缩的改进,诸如由运动图像专家组(mpeg)进行的基于视频的点云压缩(v-pcc),进而还可以降低编解码器的复杂性。本公开的实施例提供了减少点云的复杂度的解决方案。本公开的实施例认识到,尽管某些点云编码技术在客观和视觉测试中都可以很好地执行,但是与原始(源)点云中的点云编码技术相比,它们可以在解码后的点云中产生明显更多的点。另外,本公开的实施例认识到一些编码技术可以生成很大百分比的重复点,这增加了编解码器复杂度。因此,本公开的实施例识别点重复的两个来源,并提供减少冗余点和重复点的数量的解决方案。另外,各种实施例提供了这种减少而不会降低重构点云的视觉质量。图1示出了根据本公开的示例计算系统100。图1所示的系统100的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用系统100的其他实施例。系统100包括促进系统100中的各个组件之间的通信的网络102。例如,网络102可以在网络地址之间传送互联网协议(ip)分组、帧中继帧或其他信息。网络102包括一个或多个局域网(lan)、城域网(man)、广域网(wan)、诸如因特网之类的全球网络的全部或一部分,或者一个或更多位置的任何其他通信系统。网络102促进服务器104与各种客户端设备106-116之间的通信。客户端设备106-116可以是例如智能电话、平板计算机、膝上型计算机、个人计算机、可穿戴设备或头戴式显示器(hmd)。服务器104可以代表一个或多个服务器。每个服务器104包括可以为一个或多个客户端设备提供计算服务的任何合适的计算或处理设备。每个服务器104可以例如包括一个或多个处理设备、一个或多个存储指令和数据的存储器、以及一个或多个便于通过网络102进行通信的网络接口。如下面更详细地描述的,服务器104可以编码或解码点云以处理重复点。在各种实施例中,每个服务器104可以包括用于处理点云压缩中的重复点的编码器。每个客户端设备106-116表示通过网络102与至少一个服务器或一个或多个其他计算设备交互的任何合适的计算或处理设备。在该示例中,客户端设备106-116包括台式计算机106、移动电话或移动设备108(例如智能手机)、个人数字助理(pda)110、膝上型计算机112、平板计算机114和hmd116。但是,系统100中可以使用任何其他或附加客户端设备。如下面更详细地描述的,每个客户端设备106-116可以编码或解码点云以处理重复的点。在各个实施例中,每个客户端设备106-116可以包括用于处理点云压缩中的重复点的解码器。在该示例中,一些客户端设备108-116与网络102间接通信。例如,客户端设备108和110(分别为移动设备108和pda110)经由一个或多个基站118(诸如蜂窝基站或enodeb(enb))进行通信。移动设备108包括智能手机。而且,客户端设备112、114和116(分别是膝上型计算机、平板计算机和hmd)经由一个或多个无线接入点120(诸如ieee802.11无线接入点)进行通信。如下面更详细描述的,hmd116可以显示包括一个或多个点云的360°场景。注意,这些仅用于说明,并且每个客户端设备106-116可以直接与网络102通信,或者经由任何合适的中间设备或网络与网络102间接通信。在各种实施例中,服务器104或任何客户端设备106-114可用于压缩点云并将数据发送到例如任何客户端设备106-116的另一客户端设备。在各种实施例中,移动设备108(或任何其他客户端设备106-116)可以安全且有效地向另一设备(例如,服务器104)发送信息。移动设备108(或任何其他客户端设备106-116)当通过托架连接到头戴式耳机时,可以用作vr显示器,并且类似于hmd116的功能。移动设备108(或任何其他客户端设备106-116)可以触发其自身与服务器104之间的信息传输。尽管图1示出了系统100的一个示例,但是可以对图1进行各种改变。例如,系统100可以以任何合适的布置包括任何数量的每个组件。通常,计算和通信系统具有各种各样的配置,并且图1不将本公开的范围限制为任何特定配置。而图1示出了一种操作环境,在该操作环境中可以使用在本专利文件中公开的各种特征,这些特征可以在任何其他合适的系统中使用。在本公开中提供的过程和系统允许客户端设备106-116或服务器104对点云进行编码、压缩、发送、接收、渲染点云或其组合。例如,服务器104然后可以压缩、编码点云数据并将其发送到客户端设备106-116。对于另一个示例,任何客户端设备106-116可以压缩点云数据并将其发送到任何客户端设备106-116或服务器104。图2和图3示出了根据本公开的实施例的计算系统中的示例设备。特别地,图2示出了示例服务器200,图3示出了示例电子设备300。服务器200可以代表图1的服务器104,电子设备300可以代表图1的客户端设备106-116中的一个或多个。服务器200可以代表一个或多个本地服务器、一个或多个压缩服务器或一个或多个编码服务器。如图2所示,服务器200包括总线系统205,该总线系统205支持至少一个处理器210、至少一个存储设备215、至少一个通信接口220和至少一个输入/输出(i/o)单元225之间的通信。在各种实施例中,服务器200是编码器或解码器。处理器210执行可以存储在存储器230中的指令。存储在存储器230中的指令可以包括用于分解点云、压缩点云的指令。存储在存储器230中的指令还可以包括用于对点云进行编码以便生成比特流的指令。存储在存储器230中的指令还可以包括用于在点云压缩中处理重复的点和/或在如通过vr头戴式耳机(例如图1的hmd116)所看到的的全向360°场景上渲染点云的指令。处理器210可以以任何适当的布置包括任何适当数量和类型的处理器或其他设备。处理器210的示例类型包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。存储器230和持久性存储装置235是存储设备215的示例,其代表能够存储和促进信息(例如数据,程序代码或临时或永久的其他合适信息)检索的任何结构。存储器230可以代表随机存取存储器或任何其他合适的易失性或非易失性存储设备。永久性存储装置235可以包含一个或多个支持长期存储数据的组件或设备,例如只读存储器、硬盘驱动器、闪存或光盘。通信接口220支持与其他系统或设备的通信。例如,通信接口220可以包括网络接口卡或无线收发器,以促进在图1的网络102上的通信。通信接口220可以支持通过任何适当的物理或无线通信链路的通信。i/o单元225允许数据的输入和输出。例如,i/o单元225可以提供用于通过键盘、鼠标、小键盘、触摸屏、运动传感器或任何其他合适的输入设备的用户输入的连接。i/o单元225还可以将输出发送到显示器、打印机或任何其他合适的输出设备。在各种实施例中,服务器200在点云压缩中实现对重复点的处理,这将在下面更详细地讨论。注意,虽然将图2描述为代表图1的服务器104,但是相同或相似的结构可以在各种客户端设备106-116中的一个或多个中使用。例如,台式计算机106或膝上型计算机112可以具有与图2所示相同或相似的结构。图3示出了根据本公开的实施例的电子设备300。图3中所示的电子设备300的实施例仅用于说明,并且可以使用其他实施例而不脱离本公开的范围。电子设备300可以具有各种各样的配置,并且图3将本公开的范围不限于电子设备的任何特定实现。在各种实施例中,图1的客户端设备106-116中的一个或多个可以被配置为包括与电子设备300相同或相似的配置。在各个实施例中,电子设备300是编码器、解码器或两者。在各种实施例中,电子设备300可用于数据传输、图像或视频压缩、图像或视频解压缩、编码、解码和媒体渲染应用。电子设备300可以是移动通信设备,例如无线终端、台式计算机(类似于图1的台式计算机106)、移动设备(类似于图1的移动设备108)、pda(类似于图1的pda110)、膝上型计算机(类似于图1的便携式计算机112)、平板电脑(类似于图1的平板计算机114)、头戴式显示器(类似于图1的hmd116)等。如图3所示,电子设备300包括天线305、射频(rf)收发器310、发送(tx)处理电路315、麦克风320和接收(rx)处理电路325。电子设备300还包括扬声器330、一个或多个处理器340、输入/输出(i/o)接口(if)345、输入350、显示器355和存储器360。存储器360包括操作系统(os)361、一个或多个应用362和点云363。rf收发器310从天线305接收由系统上的另一组件发送的输入rf信号。例如,rf收发器310从网络102(例如,wi-fi、蓝牙,蜂窝,5g,lte,lte-a,wimax或任何其他类型的无线网络)的接入点(例如,基站,wi-fi路由器,蓝牙设备)接收通过蓝牙或wi-fi信号发送的rf信号。rf收发器310可以将输入的rf信号下变频以生成中频或基带信号。中频或基带信号被发送到rx处理电路325,rx处理电路325通过对基带或中频信号或其组合进行滤波、解码或数字化来生成处理后的基带信号。rx处理电路325将处理后的基带信号发送到扬声器330(例如用于语音数据)或处理器340以进行进一步处理(例如用于网页浏览数据)。tx处理电路315从麦克风320接收模拟或数字语音数据,或者从处理器340接收其他输出基带数据。输出基带数据可以包括网络数据、电子邮件或交互式视频游戏数据。tx处理电路315对输出基带数据进行编码、复用、数字化或其组合,以生成经处理的基带或中频信号。rf收发器310从tx处理电路315接收传出的经处理的基带或中频信号,并将基带或中频信号上变频为经由天线305发送的rf信号。处理器340可以包括一个或多个处理器或其他处理设备,并且执行存储在存储器360中的os361,以便控制电子设备300的整体操作。例如,处理器340可以控制前向信道信号的接收、射频收发器310、rx处理电路325和tx处理电路315按照公知原理进行反向信道信号的传输。处理器340还能够执行驻留在存储器360中的例如用于处理点云压缩中的重复点的其他应用362。处理器340可以执行存储在存储器360中的指令。处理器340可以以任何适当的布置包括任何适当数量和类型的处理器或其他设备。例如,在一些实施例中,处理器340包括至少一个微处理器或微控制器。处理器340的示例类型包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。处理器340还能够执行驻留在存储器360中的其他处理和程序,例如通过提供图像捕获和处理来接收、存储和及时指令的操作。处理器340可以根据执行过程的需要将数据移入或移出存储器360。在一些实施例中,处理器340被配置为基于os361或响应于从enb(类似于图1的基站118)或运营商接收到的信号来执行多个应用362。处理器340还耦合到i/oif345,该i/oif345使电子设备300能够连接到其他设备,例如客户端设备106-116。i/oif345是这些附件与处理器340之间的通信路径。处理器340也耦合到输入端350。电子设备300的操作员可以使用输入端350向电子设备300中输入数据或输入。输入端350可以是键盘、触摸屏、鼠标、轨迹球、语音输入或任何其他能够充当用户界面以允许用户与电子设备300交互的设备。例如,输入端350可以包括语音识别处理,从而允许用户通过麦克风320输入语音命令。在另一示例中,输入端350可以包括触摸面板、(数字)笔传感器、按键或超声输入设备。触摸面板可以例如以电容性方案、压敏方案、红外方案或超声方案中的至少一种方案来识别触摸输入。例如,在电容性方案中,输入端350可以识别触摸或接近。输入端350还可包括控制电路。通过向处理器340提供附加输入,输入端350可以与一个或多个传感器365和/或照相机相关联。如以下更详细地讨论的,传感器365包括惯性传感器(例如加速度计、陀螺仪和磁力计)、光学传感器、运动传感器、照相机、压力传感器、心率传感器、高度计等。例如,输入端350可以在渲染3d视频时利用由与传感器365相关联的运动传感器检测到的运动作为输入。处理器340也耦合到显示器355。显示器355可以是液晶显示器(lcd)、发光二极管(led)显示器、有机led(oled)、有源矩阵oled(amoled)或其他能够渲染(例如来自网站,视频,游戏,图像等的)文本和/或图形的显示器。显示器355的尺寸可以设置成适合hmd。显示器355可以是单个显示屏或能够创建立体显示器的多个显示屏。在各种实施例中,显示器355是平视显示器(hud)。存储器360耦合到处理器340。存储器360的一部分可以包括随机存取存储器(ram),并且存储器360的另一部分可以包括闪存或其他只读存储器(rom)。存储器360可以包括表示能够存储和促进信息(例如数据、程序代码和/或临时或永久的其他合适信息)的检索的任何结构的持久性存储。存储器360可以包含一个或多个支持长期存储数据的组件或设备,例如只读存储器、硬盘驱动器、闪存或光盘。点云数据363可以包括各种3d点云、3d网格、3d对象等。在各种实施例中,电子设备300在点云数据363的压缩或解压缩中处理重复的点。电子设备300可以重构点云数据363以在显示器355上显示一个或多个3d对象或3d场景。电子设备300可以进一步包括一个或多个传感器365,其对物理量进行计量或检测电子设备300的激活状态,并将所计量或检测到的信息转换为电信号。例如,传感器365可以包括用于触摸输入的一个或多个按钮(位于耳机或电子设备300上)、一个或多个照相机、手势传感器、眼睛跟踪传感器、陀螺仪或陀螺仪传感器、气压传感器、磁传感器或磁力计、加速度传感器或加速度计、抓握传感器、接近传感器、颜色传感器(例如红绿蓝(rgb)传感器)、生物物理传感器、温度/湿度传感器、照明传感器、紫外线(uv)传感器、肌电图(emg)传感器、脑电图(eeg)传感器、心电图(ecg)传感器、红外(ir)传感器、超声传感器、虹膜传感器、指纹传感器等。传感器365可以进一步包括用于控制包括在其中的传感器中的至少一个的控制电路。如将在下面更详细地讨论的,这些传感器365中的一个或多个可以用于控制用户界面(ui)、检测ui输入、确定三维内容显示识别的用户方向和朝向用户的方向。这些传感器365中的任何一个可以位于电子设备300内、可操作地连接到电子设备300的辅助设备内、配置为保持电子设备300的头戴式耳机内或电子设备300包括耳机的单个设备内。如将在下面更详细地讨论的,在该说明性实施例中,电子设备300和/或服务器200接收包括3d点云数据的编码比特流,对该比特流进行解码以识别2d帧,基于深度值识别帧中的重复点,并在重构3d点云数据时去除或忽略重复点。尽管图2和图3示出了计算系统中的设备的示例,但是可以对图2和图3进行各种改变。例如,图2和图3中的各个组件可以组合,进一步细分或省略,并且可以根据特定需要添加其他组件。作为特定示例,处理器340可以被划分为多个处理器,诸如一个或多个中央处理单元(cpu)和一个或多个图形处理单元(gpu)。另外,与计算和通信网络一样,电子设备和服务器可以有各种各样的配置,并且图2和图3不将本公开限制于任何特定的电子设备或服务器。如本文所讨论的,点云是一组(x,y,z)坐标(也称为点或顶点),用于表示3d空间中的对象(例如对象的外表面)。点云是使用激光雷达,rgb+深度相机从3d扫描获得的,或者是使用多视图立体从多个图像进行的3d重构而获得的。点云中的每个点可以具有与该点相关联的多个属性,例如颜色、材料属性、法线、强度(在扫描过程中生成点的激光脉冲的返回强度的量度)等。由于点云(尤其是用于表示3d地图的点云)可能包含数百万个点,因此原始数据尺寸通常非常庞大,需要压缩。例如,用于压缩动态点云的用于类别2的mpeg测试模型(tmc2)通过将每个3d点云帧转换为多个2d图像/视频帧来工作。动态点云是一组点云帧,用于表示随时间推移的运动/移动3d对象。例如,当视频是图像时,动态点云是静态点云。对于tmc2,一组图像/视频帧用于捕获几何图形,另一组用于纹理。在从3d到2d的转换过程中,在v-pcc中采用了正交投影,因此,三个几何坐标中的两个隐式编码在图像/视频帧中投影像素的2d位置,第三个坐标值(或从第三坐标得出的某值)被存储为代表距平面的3d坐标的深度的像素的值(即,深度值)。确切地说,将x,y或z坐标中的哪个作为值存储取决于投影的方向(或投影平面的方向)。然后,使用现有的图像/视频编解码器(例如,高效视频编码(hevc))对图像/视频帧进行压缩,从而使tmc2可以将现有的编解码器用于大部分压缩过程。在解码器处,从压缩的比特流中解压缩用于几何图形和纹理的一组图像/视频帧。然后通过将点从2d帧重新投影到3d空间来重构点云。tmc2只是一个示例,其他实施例和坐标系也是可能的。但是,与原始(源)点云相比,此类编码技术在解码点云中生成的点可能要多得多。另外,在重构的点云中可能发生大量的顶点重复。通常,点云包含每个点每种属性类型的单个属性。例如,如果给定点云的唯一属性类型是颜色,则对于每个几何点(x,y,z),只有一种相关颜色,例如3元组(r,g,b)颜色。此外,在一些实施例中,每个点只能渲染一种颜色或属性。在其他实施例中,每个点可以具有多个属性。在这些实施例中的一个或多个中,点云中的重复点是具有相同(或相似)几何值(x,y,z)的点。在这些实施例的其他实施例中,点云中的重复点是具有相同(或相似)几何值(x,y,z)并且某些或所有属性(或顶点)相同(或相似)的点。此处,相同或相似表示根据上下文,这些值完全相同或这些值在设置的阈值内。例如,如果使用浮点表示,则“精确”比较可能没有意义,而采用阈值相似度。本公开的实施例认识到,几乎没有好处导致在点云中生成重复的顶点,因为重复不能用于增强视觉体验(例如,诸如提供视场相关的颜色或像光场一样的反射率调制)。相反,这些重复点会导致计算资源的浪费,特别是对于有损pcc方案而言,因为这会增加数据尺寸,并为传输带来不必要的开销。此外,顶点数量的显着增加会成比例地增加处理链的复杂性。图4示出了根据本公开的各种实施例的点云数据中的重复点的示例。图4中所示的点云数据中的重复点的示例仅用于说明。在不脱离本公开的范围的情况下,可以使用其他实施例。从点云投影到多个平面(深度层)期间遇到的常见情况是,多个点可能会投影在2d平面中的同一像素位置上。这种情况可能发生的一个例子是使用点云来表示可能具有多个折叠/层的衣物。为了将这些点同化为补丁,可以为每个补丁使用两个深度向量:patch.depth[0]和patch.depth[1]。这些向量用于存储沿投影平面(例如,沿深度的维)交错的点的深度值。每个点的其他两个维度由2d平面上的投影位置编码。在图4中,点1投影到2d投影平面上的像素位置p[i]。相对于补丁的最小深度d(1)的深度存储在索引位置[i]的矢量patch.depth[0]中。在投影之后,点2、3、4和5在投影平面上共享相同的位置。同样,点6和7在投影平面上共享相同的位置。在此示例中,点2和4的相对深度(分别为d(2)和d(4))将分别存储在补丁中的索引位置p[i+1]的patch.depth[0]和patch.depth[1]中。可以将点3和点5重新考虑用于后续迭代中的投影。在点6和点7之间,因为点7距离点6的深度大于参数“surfacethickness”,所以仅将点6的相对深度d(6)存储在索引位置[i+2]的patch.depth[0]中。在此示例中,对于矢量patch.depth[1],三个索引位置中只有一个存储唯一点(即从点4开始)的深度值。矢量patch.depth[1]中的剩余位置中的值是从patch.depth[0]中的相应位置复制的。随后在编码管道中,当生成一对2d帧以捕获几何图形时,使用patch.depth[1]中的值创建第一几何图形帧,并且在一个实施例中,差值(或增量值)(例如,patch.depth[1]–patch.depth[0])存储在第二几何图形帧中。在另一个实施例中,来自patch.depth[1]的实际值(代替增量值)被存储在第二几何图形帧中。之后,从编码的比特流中重构点云的几何图形。此重构也将在编码器处复制,并且将再生的点云几何图形用于编码器处的颜色逼近和纹理生成。在点云几何重构期间,由于在创建补丁期间从patch.depth[0]复制的patch.depth[1]中有多个值,因此在重构的点云几何图形中会生成多个重复的点。此外,在较低的比特率设置下,复制百分比会增加。在较低比特率设置下,点重复的增加是有损压缩的量化伪像的结果。这是在重构点云中重复点的第二个原因。在有损压缩期间,尤其是对于低比特率,如果存储在两个或多个几何图形帧中相应像素位置的值之间的差小于量化步长,则这些像素位置的深度值在压缩后可能变得相同。从这些像素位置重构3d点会导致点云中出现重复的点。图5示出了根据本公开的各种实施例的编码器500的示例框图。图6示出了根据本公开的各种实施例的解码器600的示例框图。编码器500可以类似于图1的服务器104、图1的客户端设备106-116中的任何客户端设备,并包括与图2的服务器200和图3的电子设备300相似的内部组件。解码器600可以类似于图1的客户端设备106-116中的任何一个,并包括与图3的电子设备300相似的内部组件。编码器500可以经由网络102与解码器750通信。编码器500和解码器600的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用其他实施例。编码器500可以压缩、编码和发送点云、网格或两者,作为编码的比特流525。在各种实施例中,编码器500生成其中点云或网格被映射或投射的多个2-d帧。例如,点云被展开并映射到多个2-d帧上。例如,点云可以沿一个轴(例如y轴)展开,并且图像沿其余轴(例如x和z轴)映射。在各种实施例中,编码器500生成占用图(诸如占用图522),该占用图指示当点云被映射到2-d帧上时点云的每个像素位于何处。例如,占用图指示每个帧的有效点和无效点。无效点是不对应于点云的点的帧的位置,而有效点是对应于3d点云中的点的帧的位置。在各种实施例中,编码器500是网络服务器、服务器计算机(例如管理服务器)或能够将点云的三个维度映射成两个维度、压缩帧并编码图像以进行传输的任何其他电子计算系统。在各种实施例中,编码器500可以是由一个或多个网络互连的计算机的“云”,其中每个是当通过图1的网络102访问时利用集群计算机和组件来充当无缝资源的单个池的计算系统。解码器600可以解码、解压缩并生成包括点云、网格或两者的表示的接收到的编码比特流(诸如图5的编码比特流525)。在各个实施例中,解码器550从包括多个2-d帧的接收到的比特流中生成多个点云。例如,可以基于在2-d帧中接收到的信息和接收到的占用图来映射点云的每个像素。编码器500示出了处理点云压缩中的重复点的电子设备的本公开的实施例的高级概述。在各种实施例中,编码器500打包点云,以通过比特流传输到一个或多个解码器(例如,解码器600)。编码器500接收点云502并对其进行编码。为此,编码器500包括补丁生成块504、辅助补丁信息压缩块506、帧打包块512、几何图形重构块530、占用图压缩块532、图像填充块534、视频压缩块536、平滑块538和多路复用器524。在生成编码比特流525时,编码器500生成各种帧(例如几何图形帧514和纹理帧518)和占用图522。点云502表示输入到编码器500的输入。点云502可以存储在与编码器500相关联的存储器中。补丁生成块504分解点云502并创建多个补丁。补丁可以通过属性进行组织。例如,属性可以包括几何图形和纹理。几何图形是点云502的每个点的地理位置。纹理表示点云502的每个点的各个方面,例如颜色、强度、法线、反射等。补丁生成块504将几何图形属性和纹理属性聚类。聚类可以基于诸如法线方向、到投影帧的距离、连续性等标准。每个生成的群集都表示为补丁。在各种实施例中,补丁生成块504经由一对一映射将点云的点投影并映射到2-d帧上。在各个实施例中,补丁生成块504通过将点的投影到不同的平面上来投影并将点云的点映射到2-d帧上。在各种实施例中,将点云的点投影并映射到2-d帧上可以是基于光栅扫描映射、基于x几何坐标的映射、基于y几何坐标的映射、基于z几何坐标的映射、基于颜色的映射、基于法线方向的映射等。在各种实施例中,在将点云的点投影并映射到2-d帧上之后,帧打包块512将点分类并打包在2-d帧中以增加编码效率。帧打包块512将点分类并打包在补丁内。在各种实施例中,编码器500还可以包括将相邻点和包括空间相关数据的点彼此相邻放置的分类引擎(未示出)。补丁生成块504还生成由辅助补丁信息块506压缩的辅助补丁信息辅助补丁信息。辅助补丁信息506是与每个生成的补丁相关联的信息。在各个实施例中,辅助补丁信息是关于补丁的元数据。例如,每个补丁都具有与其相关的辅助信息,例如(i)空间位置偏移、(ii)深度偏移、(iii)补丁在视频帧中的位置、(iv)补丁的尺寸(例如补丁的高度和的宽度)、(v)投影平面的索引等。辅助补丁信息被诸如解码器600之类的解码器用来重构点云。帧打包块512将补丁分类并打包到几何图形帧514和纹理帧518中。与由补丁生成块504生成的补丁相对应的几何图形和纹理信息被打包到单独的视频帧中,例如几何图形帧514和纹理帧518。在各个实施例中,帧包装块512创建几何图形帧514和纹理帧518。帧包装块512还基于补丁如何布置和打包到帧中来确定帧的高度和宽度。常规补丁被安排为占据一帧中的最小空间。即,基于每个补丁在帧内的位置来确定帧的尺寸。因此,基于补丁如何在帧内定向和定位,帧是最小的可能尺寸。帧打包块512还创建占用图522。占用图522指示包含投影或映射到。各个帧上的点云的有效点的帧(例如几何图形帧514和纹理帧518)中的像素位置。例如,占用图522指示每一帧(诸如几何图形帧514和纹理帧518)上的每个像素是有效像素还是空白。占用图上的有效像素指示2d帧上与点云中3d点相对应的像素。在各个实施例中,对于每个帧,例如几何图形帧514和纹理帧518,占用图522可以是相同的。在各个实施例中,占用图522代表多个占用图,其中每个占用图对应于一个帧(例如几何图形帧514和纹理帧518)。占用图522可以被包括在类似于几何图形帧514或纹理帧518的另一帧中。在各个实施例中,占用图522可以作为元数据作为单独的比特流被发送。图像填充块534基于由占用图522指示的位置将填充添加到几何图形帧514和纹理帧518。视频压缩块536例如使用例如hevc的视频压缩编解码器或其他视频编解码器来压缩几何图形帧514和纹理帧518。在各种实施例中,几何图形重构块530通过为几何图形帧514和/或纹理帧518的当前集合重构点云数据并将当前帧与下一组帧进行比较来执行预测。在这些实施例中,几何图形重构块530可以生成帧集合之间的差异或增量信息,以提供附加的编码效率或对编码比特流中的相关帧的改进。在通过平滑块538执行平滑之后,该差异或增量信息可以被编码为纹理帧518的下一集合或在下一集合中。在这样的情况下,在各种实施例中,几何图形重构块530提供了处理点云压缩中的重复点,如下面更详细讨论的。例如,几何图形重构块530可以在执行预测以减少重构点云所需的计算资源量的同时,识别和忽略或去除点云的重构中的重复点。在各种实施例中,辅助补丁信息,占用图522(在由占用图压缩块532压缩之后)或两者也被编码。此后,通过多路复用器524对辅助补丁信息、编码的几何图形帧514和编码的纹理帧518以及占用图522进行复用。多路复用器524将辅助补丁信息506、编码的几何图形帧514、编码的纹理帧518和占用图522组合以创建单个编码的比特流525。图6示出了根据本公开的各种实施例的解码器600的高级概述。例如,解码器600可以被包括在电子设备中以解码和重构点云以进行渲染。在各个实施例中,解码器从比特流625中提取压缩的几何图形和属性。在各个实施例中,解码器600映射在比特流625中编码的几何图形和属性信息以重新生成点云602。解码器600分别包括解复用器624、用于视频、占用图和补丁信息解压缩的解压缩块636、632和606、以及几何图形和纹理重构块614和618的解压缩块。为了重构3d点云,解码器600使用各种视频帧(例如几何图形帧514和纹理帧518)的补丁内的信息和(例如辅助补丁信息和占用图522中所包括的)从编码比特流625解复用和解压缩的补丁元数据。解码器600接收例如由编码器500编码并从编码器500接收的编码比特流625。在接收到编码比特流625时,解复用器624从编码比特流625分离各种数据流。例如,解复用器624分离各种数据流,例如几何图形帧信息(最初是几何图形帧514)、纹理帧信息(例如纹理帧518)、占用图信息(例如占用图522)和辅助补丁信息。例如,解复用器662将编码的比特流626解复用为用于点云几何图形、纹理、其他属性、占用图和补丁信息的单独的压缩比特流。由占用图解压缩块632解压缩的占用图信息指示2d帧内的有效像素位置以重构点云602。从由补丁信息解压缩块606解压缩的解码的辅助补丁信息中检索常规补丁的位置和尺寸。例如,通过将补丁偏移量(来自解码的辅助补丁信息)添加到视频中这些点的空间位置,并将补丁的深度偏移量添加到空间位置中的像素值,可以从常规补丁中重构点位置。在各种实施例中,解码引擎672可以是无损的或有损的。在各种实施例中,解码器60可以从有损或无损编码的比特流重构点云。在各种实施例中,几何图形重构块614解码几何图形帧信息并例如基于点几何图形和/或该点的其他属性、占用图和或补丁信息来识别重复的点,如下面更详细地讨论的那样,并且在重构点云602时去除或忽略重复的点。几何图形重构块614从由平滑块620平滑的2d几何图形帧中生成点云602中的点的几何图形。纹理重构块618应用纹理(例如,颜色、与视图相关的颜色、法线、反射等)到点云602中的点,这些点由颜色平滑块622平滑。在识别和去除(或忽略)重复点时,根据在本公开中,大大减少了几何图形和纹理重构中的硬件资源量。另外,根据本公开的实施例,忽略或去除的点是重复的,使得它们的去除不会显着影响渲染的3d点云的质量。虽然图5和图6示出了解码器和编码器的示例,可以对图5和图6进行各种改变。例如,图5和图6中的各种组件可以被组合,进一步细分或省略图5和图6中的示例,并且可以根据特定需要添加或删除其他组件。例如,用于mpegtmc2(v-pcc)的编码和解码被用作示例,并且本公开的实施例可以与其他类型的点云编码和解码技术一起使用。图7示出了根据本公开的各种实施例的基于几何图形的重复点去除过程700的流程图。例如,图7中描绘的过程可以分别由图2中的服务器20或图3中的电子设备3000或图5和图6中的几何图形重构块530和/或614执行,这里通常被称为系统。该系统开始于几何图形帧中的第一像素(i=0,j=0)(步骤702)。如果被占用(步骤704)(例如,基于占用图),则系统在两个深度层中寻找值(步骤706),创建新点(步骤708),并将该点添加到重构的点云中(步骤710)用于第一深度层(d0)。例如,返回参考图4,在一个实施例中,编码器500采用两个帧来对每个点云帧的几何图形和纹理进行编码,从第一深度层(d0)中的值获得第一几何图形视频帧中存储的值,并存储该值。从第二深度层(d1)中的对应值减去第一深度层中的值之后,获得第二几何图形帧中存储的值。在这样的实现中,将delta(i,j)定义为在位置(i,j)处的第二深度层(d1)和第一深度层(d0)的值之间的差,delta(i,j)为在解码压缩的比特流之后,直接通过读取第二视频帧中位置(i,j)的像素值获得。该像素编码被称为实际值或绝对值(即,在步骤712处的标志“绝对d1”==1)作为从投影平面开始的点的实际深度值(或实际深度值减去偏移量)。例如,将偏移量用作一组点(即补丁)中所有点的深度值的最小值。这样做主要是为了确保10比特深度值可以“分解”以存储在8比特视频帧中。第一帧用于存储实际值减去偏移量。对于绝对值,第二帧还存储实际值减去其偏移量。结果,将增量delta计算为depth1–depth0的值(步骤716),并且如果不大于零(步骤718)(或在某些实施例中在设定的阈值零内),则系统将该点识别为几何图形重复并在系统寻找下一个宽度像素(即j=j+1)时从点云中去除该点(或忽略/不包括/创建)(步骤724)。但是,如果该点不是几何图形重复的,则系统创建新点并将新点添加到第二深度(d1)层的重构点云中(步骤720和722),类似于对第一深度深度(d0)层进行的操作如上所述的操作。在另一个实施例中,编码器500采用两个(或更多)帧来对每个点云帧的几何图形和纹理进行编码,从第一深度层(d0)中的值获得存储在第一几何图形视频帧中的值,并且从第二深度层(d1)获得第二几何图形帧中存储的值。在这样的实现中,在解码压缩的比特流之后,通过减去位置(i,j)处的第一几何图形视频帧和位置(i,j)处的第二几何图形视频帧的值来获得delta(i,j)。将该值称为增量值(即,在步骤712未设置标志“绝对d1”)作为实际点深度与前一帧中的点深度之间的差。结果,增量delta是为像素存储的值,并且如果不大于零(步骤718)(或在某些实施例中在设置的阈值零内),则系统将点识别为几何图形重复并去除该点(或当系统寻找下一个宽度像素(即,j=j+1)时,从点云忽略/不包括/不包括/创建)(步骤724)。但是,如果该点不是几何图形重复的,则系统创建新点并将新点添加到第二深度(d1)层的重构点云中(步骤720和722),类似于如上所述的对第一深度(d0)层的点进行的操作。此后,系统继续对所有帧宽度坐标j(步骤724和726)的过程,然后对所有帧高度坐标i(步骤728和730)进行处理,直到已处理完所有帧集合为止。如本文所讨论的,absoluted1是用于区分上述两个编码配置的标志。也就是说,如果absoluted1=1,则第二视频帧存储第二深度层(d1)的值(如果使用偏移,则可能减去偏移),否则第二视频帧存储第二深度层(d1)和第一深度层(d0)的差值层(如果使用偏移,则可能减去偏移)。在这些实施例中,系统通过检查增量的值来避免将这些几何图形重复点添加到重构的点云几何图形中,并且仅当且仅当增量大于零时才将点添加到云中(即,不是几何图形重复)。来自解码的几何视频帧的点云通过称为generatepointcloud()的函数进行重构。下面第二帧显示了用于添加点的伪代码:对于2d几何图形帧中的每个位置:在图6中示出的实施例意欲作为示例。例如,当讨论两个几何图形和纹理帧的比较时,可以比较任何数量的几何图形和纹理帧,并且可以如所讨论的那样处理其中的重复点。在另一个示例中,相关的投影点(基于投影方向,邻域,颜色相似性等)以补丁的形式进行分组。在从解码的几何图形帧重构点云的过程中,以逐个补丁的方式从几何图形帧中检索点。如下面提供的以下伪代码中所述,重复检查也以逐个补丁的方式进行,其变量在下表1中定义。示出了当投影点被存储在几何图形帧内的相关组中时如何防止重复点的实施例的伪代码:表1:上面提供的伪代码中变量的说明,它说明了当投影点存储在几何图形帧内的相关组中时,如何处理重复点。在又一个实施例中,其中将投影点分组为补丁,这些补丁被打包并编码在每个点云帧的两个几何图形视频帧和两个属性视频帧中,并且在点云中存在的唯一属性是颜色(或纹理),解码器处的点云是根据两个解码的几何图形和两个解码的属性帧中的补丁重构的。此外,在该实施例中,补丁尺寸被差分编码为辅助补丁信息(即,作为元数据的一部分)。在本实施例中,首先,补丁信息的检索如下:patch2dshiftu=patch.patch_2d_shift_u*patch.occpancy_packing_block_sizepatch2dshiftv=patch.patch_2d_shift_v*patch.occupancy_packing_block_sizepatch2dsizeu=patch.patch_2d_delta_size_u*patch.occupancy_packing_block_sizepatch2dsizev=patch.patch_2d_delta_size_v*patch.occupancy_packing_block_sizepatch3dshiftx=patch.patch_3d_shift_tangent_axispatch3dshifty=patch.patch_3d_shift_bitangent_axispatch3dshiftz=patch.patch_3d_shift_normal_axiswhere,occupancy_packing_block_sizeisthesameasoccupancyresolutionintable1.patch_2d_shift_uspecifiesthex-coordinateofthetop-leftcornerofthepatchboundingboxexpressedasmultipleofoccupancy_packing_block_size.thevalueofpatch_2d_shift_uisintherangeof0to(frame_width/occupancy_packing_block_size-1),inclusive.patch_2d_shift_vspecifiesthey-coordinateofthetop-leftcornerofthepatchboundingboxexpressedasmultipleofoccupancy_packing_block_size.thevalueofpatch_2d_shift_visintherangeof0to(frame_height/occupancy_packing_block_size-1),inclusive.patch_2d_delta_size_uisthedifferenceofpatchwidthbetweenthecurrentpatchandthepreviousone.patch_2d_delta_size_visthedifferenceofpatchheightbetweenthecurrentpatchandthepreviousone.patch_3d_shift_tangent_axisisthesameaspatch.tangentaxisintable1.patch_3d_shift_bitangent_axisisthesameaspatch.bitangentaxisintable1.patch_3d_shift_normal_axisisthesameaspatch.normalaxisintable1.在此步骤中,从解码的几何图形帧以及解码的帧补丁信息和解码的占用图生成没有添加颜色的点云。在第二步,为了进行有损编码,将生成的(重构的)点云输入到几何图形平滑过程中。最后,从解码的纹理帧将颜色添加到平滑的云点。解码的几何图形帧包含每个点云对应于近层和远层的两个帧,并且解码属性帧包含每个点云对应于近层和远层的两个帧。如果该像素处的占用值为1,则每个像素位置会生成两个点,一个来自近层,一个来自远层。从补丁中的每个像素生成两个点,其中x从patch2dshiftu到(patch2dshiftu+patch2dsizeu),而y从patch2dshiftv到(patch2dshiftv+patch2dsizev)。如果像素的占用值oframe[x][y]等于1,则按如下方式导出第一点并将其添加到重构的点云中:1.首先,基于补丁打包方向为像素(x,y)获得x_new和y_new。2.点的坐标是从几何图形帧中得出的,如下所示:point1[0]=x_new+patch3dshiftxpoint1[1]=y_new+patch3dshiftypoint1[2]=gframe[0][x_new][y_new]+patch3dshiftz3.通过使用属性帧对点进行着色,如下所示:point1[3]=aframe[0][0][x_new][y_new]point1[4]=aframe[0][1][x_new][y_new]point1[5]=aframe[0][2][x_new][y_new]4.然后将该点添加到重构的点云中,如下所示:addpointtopointcloud(recpc,point1)第二点推导如下:1.首先,从几何图形帧中得出点的坐标,如下所示:2.通过使用属性帧对点进行着色,如下所示:point2[3]=aframe[1][0][x_new][y_new]point2[4]=aframe[1][1][x_new][y_new]point2[5]=aframe[1][2][x_new][y_new]3.如果该点不是第一点的重复,则将其添加到重构的点云中,如下所示:if((point1[0]–point2[0])&&(point1[1]–point2[1]&&(point1[2]–point2[2]))addpointtopointcloud(recpc,point2)下面提供上述步骤中讨论的实施例的伪代码实现。一个示例的伪代码,其中将投影点分组为补丁,然后将其打包并编码在每个点云帧两个几何图形视频帧和两个属性视频帧中,点云中唯一存在的属性是颜色(或纹理),解码器处的点云是根据两个解码后的几何图形和两个解码后的属性帧中的补丁重构的。本公开的实施例认识到,在低比特率下,如果在编码器处防止了点的重复,则在重构的点云中可能发生轻微的劣化。因此,在一些实施例中,如果比特率低(即,也没有植入编码器),则仅在解码器处实现重复点处理。下面示出了仅在解码器处用于在点云几何重构期间防止点重复的伪代码。用于从generatepointcloud()的第二帧添加点的伪代码,以避免在解码器处重复点:对于2d几何图形帧中的每个位置:--->if(firstframe):------>generate3dpointfromthepositionin2dframeandvalueofdepthatthatlocation------>addpointtothepointcloud--->if(secondframe):------>if(absoluted1):---------->delta=valueinthecurrentlocationinframe–valueinthecurrentlocationinthefirstframe------>else:---------->delta=valueinthecurrentlocationinframe------>if(encoder)--------->generate3dpointfromthepositioninthe2dframeandvalueofthedepthatthatlocation------>elseif(decoderanddelta>0):--------->generate3dpointfromthepositioninthe2dframeandvalueofthedepthatthatlocation图8示出了根据本公开的各种实施例的用于多属性点云的编码器800的示例框图。编码器800的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用其他实施例。在某些高端沉浸式媒体应用中,使用多属性点云,其中对于同一几何点有多个属性值(例如,视图相关的颜色、法线、反射等)。这些应用通常使用表面光场(如点云)来渲染视图相关属性。即,渲染(或观察到)的点云中的点的颜色取决于视图方向。在其他情况下,例如从激光雷达获得的数据,源点云可能每个几何图形点包含多个与视图相关的属性。在这些实施例中,源点云包含每个唯一定义的几何坐标的多个属性。即,几何坐标不在源点云中重复。对于在解码器(和在编码器)处的这种点云重构,可以通过在几何点的重构期间仅比较各点的几何值来去除重复的点,如上面关于图5-7所讨论的。对于多属性编码,点云几何图形像以前一样从3d空间投影到2d空间。本质上,深度(沿投影方向的点的坐标)存储在多个几何图形视频帧中的多个深度层中。点的其他两个坐标被隐式编码为该点在多个几何视频帧中的2d位置。此外,每个属性都使用一组单独的属性视频帧。例如,编码器中的补丁生成块504和帧打包块512生成多组(n组)属性帧8180至818n-1,一组针对与几何图形帧组514中的几何点相关联的每种不同类型的属性。压缩和多路复用与关于图5所讨论的类似地发生。参照图5,生成用于多属性3d点云数据的编码比特流825。使用这些编码技术,存在几何图形的2d位置与每个投影点的多个几何图形和属性帧中的属性的对应关系。结果,基于源(未压缩)点云中没有重复点的假设,与点云中每个点关联的几何图形都是唯一的。因此,解码器600可以单独使用几何图形帧514中的几何图形信息来处理重复点,以在从未压缩和解码的比特流重构点云期间检测点的重复。因此,解码器600可以使用类似的技术来处理点的重复,如关于图6和图7所描述的。图9示出了根据本公开的各种实施例的基于几何图形和属性的重复点去除过程900的流程图。例如,图9中描绘的过程可以分别由图2中的服务器200或图3中的电子设备300或图5和图6中的几何图形重构块530和/或614来执行,这里通常被称为系统。例如,在各种实施例中,在将重复点定义为具有相同几何图形和属性的应用中,仅比较几何图形不足以确定这些点是重复的。在这些实施例中,比较几何图形和属性以确定重复点。在图8中,以颜色为例,但是可以将任何其他属性或多个属性与几何图形结合使用,以确定一个点是否重复。同样,如上所述,可以使用任意数量的层而不是两个。该系统开始于几何图形帧中的第一像素(i=0,j=0)(步骤902)。如果被占用(步骤904)(例如,基于占用图),则系统查找两个几何图形帧和两个颜色帧中的值(步骤906),创建新点(步骤908)并将该点添加到第一深度层(d0)的重构点云(步骤910)。如果设置了标志“absoluted1”==1(在步骤912),则将深度增量计算为depth1-deep0的值(步骤916),并且如果不大于零并且颜色值相同(步骤918)(或在某些设置的零/相似度阈值内),系统将点识别为几何图形重复和颜色重复,并在系统查看下一个宽度像素(即,j=j+1)时从点云中去除该点(或忽略/不包括/创建)(步骤924)。但是,如果该点不是几何图形和颜色重复,则系统会创建新点并将新点添加到第二深度(d1)层的重构点云中(步骤920和922),类似于对第一深度(d0)层的点所做的如上所述的操作。对于未设置的标志“absoluted1”==1(在步骤912),增量是为像素存储的值,并且如果不大于零且颜色值相同(步骤918)(或在一些实施例中在设置的零/相似度阈值内),系统将点识别为几何图形重复和颜色重复,并在系统寻找下一个宽度像素(即j=j+1)时从点云中去除该点(或忽略/不包括/创建))(步骤724)。但是,如果该点不是几何图形和颜色重复,则系统会创建新点并将新点添加到第二深度(d1)层的重构点云中(步骤920和922),类似于对第一深度(d0)层的点所做的如上所述的操作。此后,系统继续所有帧宽度坐标j的处理(步骤924和926),然后是所有帧高度坐标i的处理(步骤928和930),直到已处理了整个帧集。在另一个实施例中,在存储到视频帧中之前,以补丁的形式对投影点进行相关分组。因此,在从解码的几何图形帧重构点云的过程中,以逐个补丁的方式从几何图形和属性帧中检索点。重复检查也需要逐个补丁进行。下面提供了为此的伪代码,表2列出了伪代码中使用的变量,伪代码本身如下所示。一个实施例的示例伪代码,用于比较几何图形和属性信息,以在将2d点存储到相应帧中之前将2d点分组为相关补丁时防止点重复:表2:以上为实施例提供的示例伪代码中的变量的说明,以比较在将2d点存储到对应帧中之前将2d点分组为相关补丁时防止点重复的几何图形和属性信息。在另一实施例中,几何坐标被重复与源(多属性)点云中的属性一样多的次数。换句话说,在源(未压缩)点云中存在几何坐标的固有重复,这些几何坐标表示3d空间中的相同位置。对于这种类型的点云,不能仅基于比较几何图形信息来确定给定的重构点是否是重复点。取而代之的是,使用几何图形和关联的颜色集(以及其他属性,如果存在)来确定某个点是否是先前点的重复。在一个实施例中,类似于先前的说明性示例,深度层的数量(图8中的“d”)可以被限制为两个。在这种情况下,可以在单独的补丁中编码相同的3d点(具有不同的属性)。在另一个实施例中,深度层的数量(图8中的“d”)可以大于或等于属性的数量(即,源点云中的几何图形重复的数量)。即使对于这样的实施例,也可以将相同的3d点(具有不同的属性)编码在单独的补丁中。因此,在这两个实施例中,很有可能所有潜在具有相同几何坐标和/或属性值的点都无法同时用于比较(用于计算“增量”)。结果,首先使用映射数据结构(例如字典)来存储几何坐标值和几何图形帧信息。例如,根据重构的坐标值构造唯一的哈希,并将其用作字典的关键字,并且从中检索点的帧号被存储在与字典中的关键字相对应的列表中。字典中与每个键对应的列表尺寸(可用于唯一识别3d几何坐标)指示共享相同几何坐标的点数。在重构所有几何点之后,仅(使用哈希密钥(hashkey))获取那些点,其对应的列表尺寸大于属性的数量(指示重复点的生成)。然后,使用属性信息仅保留“n”个最独特的点。在又一个实施例中,不管如何定义多属性点云的几何图形和属性,重构的点云都包含具有不同属性的几何图形的多个重复(源自点云的多属性性质)。对于这种重构点云,再次通过比较几何图形和属性来确定给定的重构点是否重复。如上文所讨论并在本文中重申的,不需要比较几何值和/或属性值之间的精确相似性来确定重构点云中的点是否重复。在一些实施例中,如果点使用适当的度量彼此接近,则它们将是重复的。例如,如果绝对增量(如上所述)小于某个小阈值和/或为两个点之间的属性计算的欧几里得距离小于一小阈值,则可以将一个点定义为另一个点的重复。当一些浮点属性(例如,反射,法向矢量等)也与点云中的每个点相关联时,这种策略特别有用。在又一个实施例中,单个几何图形视频帧和对应的单个属性视频帧由每个点云帧的两个深度层组成。可以使用几种插值技术将两个深度层转换为单个视频几何图形帧。在一个实施例中,解码的几何图形帧包括每个点云单个帧,并且解码的属性帧包含每个点云单个帧。单个几何层包含来自几何的近层和远层的交错像素,单个属性层包含来自属性的近层和远层的交错像素。交错(几何或属性)帧是通过从近层获取一个像素,然后从远层获取一个像素而形成的。例如,在像素(x,y)处,如果(x+y)是偶数,则使用来自近层的值,而当(x+y)为奇数时,则使用来自远层的值。如果像素的占用值为1,则每个该像素位置将生成两个点,一个来自近层,一个来自远层。由于交错的帧仅包含来自两层之一的信息,因此可通过对邻居进行插值来预测丢失的层值。当(x+y)为偶数时,可使用近层的值,并内插远层的值。类似地,当(x+y)为奇数时,可以使用远层的值,并内插近层的值。在这样的实施例中,由于将3d点的深度值复制到多个深度层中而在编码器处避免了重复。然而,由于有损编码和/或像素内插和外推(预测)两者的结果,可能导致几何点和/或属性值的重复。最终重构的点云中点的重复的处理遵循以上关于图5-7讨论的过程。更具体地说,在导出了第一层或第二层的几何和/或属性值之后,将预测的几何和/或属性值与直接从解码的几何图形和/或属性视频帧获得的相同2d像素位置的对应几何和/或属性值进行比较。如果检测到可能的重复,也就是说,如果预测(外推)点的几何和/或属性值恰好等于直接获得的点的相应几何和/或属性值的某个阈值或在直接获得的点的相应几何和/或属性值的某个阈值之内,则预测点不会添加到重构点云中。本公开的各种实施例可以应用于多边形网格(或“网格”)的编码和解码。像点云一样,网格可用于表示虚拟3d对象。与点云一样,大多数网格文件也包含顶点和属性的列表。此外,大多数网格文件还包含用于生成分段连续表面的面和边的列表。本公开的实施例可用于结合采用基于深度层的技术(例如mpegv-pcc)的任何网格压缩算法来处理重复的顶点,以便利用成熟的2d图像/视频压缩技术。图10示出了根据本公开的各种实施例的用于解码3d点云数据的过程1000的流程图。例如,图10中描绘的过程可以分别由图2中的服务器200或图3中的电子设备300或图5和图6中的几何图形重构块530和/或614执行。在此通常被称为系统。该过程开始于系统接收包括3d点云数据的编码比特流(步骤1005)。例如,在步骤1005中,可以将3d点云数据压缩为2d帧和元数据,其中,对帧进行编码以包含3d点云数据。此后,系统对比特流进行解码以识别多个2d帧(步骤1010)。例如,在步骤1010中,系统可以如上所述解压缩并分离出压缩帧和元数据。然后系统识别两个或更多个几何图形帧中的对应像素(步骤1015)。例如,在步骤1015中,系统可以基于来自多个2d帧的两个或更多个2d几何图形帧中的对应像素的位置来识别对应像素。例如,对于不同的深度或层,相应的像素在帧之间可以具有相同的i,j像素坐标值。在一些实施例中,系统可以使用占用图来识别相应的像素。此后,系统识别相应像素的深度值(步骤1020)。例如,在步骤1020中,系统可以读取在两个或更多个几何图形帧中的i,j坐标位置处编码的值。然后,系统基于所识别的深度值来识别重复点(步骤1025)。例如,在步骤1025中,系统可以基于所识别的两个或更多个几何图形帧中相同或相似的对应像素的深度值来识别重复点。在一个示例中,如果对实际(或绝对)深度值进行了编码,则系统可以在两个或多个几何图形帧的第一个中识别对应像素中第一个的第一深度值,然后将该值与对应像素中的第二个的、两个或多个几何图形帧的第二个的第二深度值进行比较。然后,如果比较的深度值相同或在彼此的阈值之内,则系统确定第二几何图形帧中的第二像素表示的点是重复点。在此,深度值指示来自点被投影到的平面的3d点云中的点的深度,并被编码为实际深度值或实际深度值减去几何图形帧中相应像素位置的偏移。在另一个示例中,如果增量值被编码,则系统可以确定两个或更多个几何图形帧中的第二个几何图形帧中的第二个相应像素的深度值是零还是低于阈值。如果是这样,则系统将第二几何图形帧中第二像素表示的点确定为重复点。在此,深度值指示来自点被投影到的平面的3d点云中的点的深度,对于第二几何图形帧,这些深度被编码为相对于第一几何图形帧的增量值(可能有偏移)。另外,在各种实施例中,除了几何值之外,系统还可以使用纹理或属性值来确定点是否重复。系统可以基于相应像素的深度值来确定两个或更多几何图形帧中的第二个几何图形帧中的像素是几何重复,如上所述的。另外,系统可以确定分别对应于一个或多个几何可重复第二像素的一个或多个第二纹理值是否是分别对应于一个或多个第一像素的一个或多个第一纹理值的纹理重复。如果是这样,则系统确定这些点是纹理重复的;如果几何图形和纹理都重复,则确定该点为重复点。例如,每个识别出的重复点具有由两个或多个几何图形帧表示的几何图形以及由一个或多个属性帧集指示的一个或多个属性,并且系统基于两个或多个几何图形帧和一个或多个属性帧集识别重复点。此后,系统在重构3d点云数据的同时去除或忽略所识别的重复点(步骤1030)。例如,在步骤1030中,在生成一个或多个3d对象时,系统可以不创建、去除重复点或不将重复点添加到点云。在各种实施例中,是否不添加重复点可以取决于用于重构3d点云的应用的类型。例如,在为不依赖于视图但使用至少某些所识别的重复点的应用类型重构3d点云数据时,在为与视图相关的应用类型重构3d点云数据时,系统可能会去除或忽略所识别的重复点。例如,依赖于视图的应用(例如6dof应用)允许从各种视点看到对象(例如,用户可以在场景中“四处走动”的ar/vr应用)。在这种情况下,可能需要其他属性才能从不同角度查看点(例如,取决于视图的颜色或反射等)。在这些实施例中,系统可以识别用于重构3d点云的应用的类型(即,是否依赖于视图),并且去除或忽略对于依赖于视图的应用而言是几何重复的但不是纹理(或属性)重复的点。对于不依赖于视图的应用,系统会在重构3d点云数据时去除或忽略几何重复的任何点,包括那些不是纹理(或属性)重复的点。虽然图7、9和10示出了用于重复点去除或解码3d点云数据的过程的示例,但是可以对图7、9和10进行各种改变。例如,虽然显示为一系列步骤,但是每个图中的各个步骤可以重叠、并行发生,以不同顺序发生或发生多次。尽管附图示出了用户设备的不同示例,但是可以对附图进行各种改变。例如,用户设备可以以任何适当的布置包括任意数量的每个组件。通常,附图不将本公开的范围限制为任何特定配置。此外,尽管附图示出了可以使用本专利文件中公开的各种用户设备特征的操作环境,但是这些特征可以用于任何其他合适的系统中。尽管已经利用示例性实施例描述了本公开,但是可以向本领域技术人员提出各种改变和修改。本公开旨在涵盖落入所附权利要求的范围内的这种改变和修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1