用于重建表示3D对象的点云的方法和装置与流程

文档序号:21548119发布日期:2020-07-17 18:00阅读:182来源:国知局
本原理总体上涉及从逆投影点云(ippc)重建表示3d对象的点云,并且最终涉及与基于八叉树的结构相关联的点云。具体地但非排他性地,本原理的
技术领域
:涉及使用纹理和深度投影方案的点云重建。
背景技术
::本部分旨在向读者介绍本领域的各个方面,这些方面可能与以下描述和/或要求保护的本原理的各个方面有关。认为该讨论有助于向读者提供背景信息,以便于更好地理解本原理的各个方面。因此,应该理解的是,应当从该角度来阅读这些陈述,而不是作为对现有技术的承认。点云是一组点,通常旨在表示3d对象的外部表面,但也表示更复杂的几何形状(如头发、皮毛),这些几何形状可能无法通过其他数据格式(如网格)有效地表示。点云的每个点通常由3d空间位置(3d空间中的x、y和z坐标)以及可能地由其他关联属性来定义,诸如例如在rgb或yuv颜色空间中表示的颜色、透明度、反射率、两分量法向矢量等。在下文中,考虑有色点云,即一组6分量点(x,y,z,r,g,b)或等同地(x,y,z,y,u,v),其中(x,υ,z)定义点在3d空间中的空间位置,(r,g,b)或(y,u,v)定义该点的颜色。有色点云可以是静态的也可以是动态的,这取决于云是否相对于时间而演变。应当注意,在动态点云的情况下,点的数量不是恒定的,而是相反,通常随时间而演变。因此,动态点云是多组点的按时间排序的列表。实践中,有色点云可用于多种目的,诸如文化遗产/建筑物,其中以3d形式扫描如雕像或建筑物之类的对象,以便在不发送或访问对象的情况下共享对象的空间配置。这也是一种在对象可能被破坏的情况下(例如,被地震破坏的庙宇)确保保留对象的知识的方式。这种有色点云通常是静态且巨大的。另一使用情况是在地形学和制图学中,其中通过使用3d表示,地图不限于平面,还可以包括起伏(relief)。汽车工业和自动驾驶汽车也是可以使用点云的领域。自动驾驶汽车应该能够“探测”其环境,从而基于其紧邻的现实采取安全驾驶决策。通常的传感器产生由决策引擎使用的动态点云。这些点云并非旨在供人类查看。它们通常是小的,不一定是有色的,并且是动态的,具有高的捕获频率。它们可能具有其他属性,如反射率,其为与感测对象的物理表面的材质相关的有价值的信息并且可以帮助做出决策。虚拟现实(vr)和沉浸式世界近来已成为热门话题,并被许多人预见为2d平板视频的未来。基本构思是使观看者沉浸在他周围的环境中,而不是只能观看他前面的虚拟世界的标准电视。取决于环境中观看者的自由度,沉浸性有若干等级。有色点云是分发vr世界的一种良好的格式候选。它们可以是静态的或动态的,并且通常具有平均尺寸,例如一次不超过几百万个点。仅当比特流的尺寸足够小以允许实际存储/传输给终端用户时,点云压缩才能成功为沉浸式世界存储/传输3d对象。同样关键的是,能够以合理的带宽消耗将动态点云分发给终端用户,同时保持可接受的(或优选是非常好的)体验质量。与视频压缩相似,良好地使用时间相关性被认为是将得到动态点云的高效压缩的关键要素。众所周知的方法将表示3d对象的几何形状和颜色的有色点云投影到包含该3d对象的立方体的表面上,以获得有关纹理和深度的视频,并使用诸如3d-hevc(hevc的扩展,其规范可在itu网站,t推荐,h系列,h265,https://www.itu.int/rec/t-rec-h.265-201802-i附件i上找到)的传统编码器对纹理和深度视频进行编码。在速率失真性能的意义上,已经证明了混合基于投影的点云编码(pointcloudcoding,以下称为pcc)和基于八叉树的pcc的一些pcc策略非常高效。然而,由这种点云编解码器生成的重建点云(在将点云编码到至少一个比特流中、传输所述至少一个比特流以及解码所述至少一个比特传输流之后)通常是不完整的,如图1a和图1b中所示。重建点云的不完整部分是在如下的编解码器的不同阶段期间生成的:·在图1和图1b中用虚线圆圈表示的完全缺失的部分通常是原始点云中与点云编解码器中使用的投影方向平行的那些部分;因此,它们通常不会被点云编码器的投影阶段“看到”;这些部分通常不够大,无法使八叉树编码阶段在其周围放更多点。·如图1b中的连续圆圈所示,具有不足点(换句话说,采样分辨率不足)的部分通常是在八叉树编码阶段期间由速率失真优化(ratedistortionoptimization,以下称为rdo)生成的。重建点云的视觉质量因此受到影响。技术实现要素:本发明的目的是改善由点云编解码器基于投影和八叉树生成的重建点云的视觉质量。本发明的另一个目的是通过完善缺失部分来改善重建点云的视觉质量,同时在不引入高计算复杂度的情况下,最小化添加到重建点云的新点的数量。以下呈现本原理的简化概述,以提供对本原理某些方面的基本理解。该概述不是本原理的广泛总结。其不旨在标识本原理的关键或重要要素。以下概述仅以简化形式呈现本发明原理的一些方面,作为下面提供的更详细描述的序言。本原理涉及从通过在与投影结构的体积相关联的表面上投影点云而获得的深度图像(以及可选地,纹理图像)来重建点云。使用投影结构使体积位置灵活,从而能够精细地捕获遮挡。优选地,为了便于实现,使用立方体上的投影。本原理涉及一种用于从通过对原始点云的至少一个深度图像进行逆投影而获得的逆投影点云ippc来重建表示3d对象的点云的方法和设备,所述至少一个深度图像是通过将原始点云的点投影到至少一个表面上而获得,所述方法包括以下步骤:-在逆投影点云中检测至少一个缺失部分,以及-基于所述至少一个缺失部分的邻域中的点来完善所述至少一个缺失部分。该方法允许校正参照图1a-图1b在本申请的
背景技术
:部分中提到的完全缺失的部分。根据实施例,在逆投影点云中检测所述至少一个缺失部分的步骤包括以下子步骤:-在逆投影点云中,检测围绕所述至少一个缺失部分的称为边界点的点,以及-为所述至少一个缺失部分中的每个缺失部分确定围绕所述缺失部分的一组边界点。根据实施例,边界点是在其距离-sclose邻域中具有低于预定义的高阈值并且大于预定义的低阈值的邻居数量的点。例如,sclose=1。根据实施例,在逆投影点云中检测所述至少一个缺失部分的步骤还包括,在确定围绕所述缺失部分的一组边界点之前,去除在其距离-sclose邻域中具有少于预定义的边界点数量的边界点,所述预定义的数量大于或等于sclose+1。这允许去除假的边界点。根据实施例,完善所述至少一个缺失部分的步骤包括以下步骤:通过沿着连接所述一组边界点中的两个边界点的线添加至少一个点,来完成(fulfill)所述至少一个缺失部分。根据实施例,还从与表示所述原始点云的基于八叉树的结构相关联的点云重建点云。根据实施例,该方法还包括以下步骤:-在与基于八叉树的结构相关联的点云中,检测欠采样点,以及-在检测到的欠采样点周围添加新点。该方法允许校正参照图1a在本申请的
背景技术
:部分中提到的具有不足点的部分。根据实施例,检测欠采样点的步骤包括以下步骤:在与基于八叉树的结构相关联的点云中,检测在其距离-sclose邻域中具有低于预定义的阈值的邻居数量、并且在其距离-sfurther邻域中具有大于预定义的阈值的邻居数量的点,其中sfurther>sclose,并且其中检测到的点是欠采样点。根据实施例,在检测到的欠采样点周围添加新点的步骤包括:-为每个欠采样点确定其中点的数量大于预定义的阈值的邻域的最小距离sfill,以及-用至少一个新点填充欠采样点的距离-sfill邻域。根据实施例,当欠采样点的距离-1邻域中的点的数量大于预定的阈值时,最小距离sfill等于1。根据实施例,该方法还包括以下步骤:检测在其距离-sclose邻域中不具有完整平面的重建云点的点,并在所述距离-sclose邻域中添加至少一个点以具有完整平面。根据实施例,通过以下来检测点的非完整平面:-在xoy、yoz和xoz平面上投影其距离-sclose邻居,-检查从所述3个投影得到的三组非重叠的投影的距离-sclose邻居的数量,-在所述三组非重叠的投影的距离-sclose邻居之中,它们中没有一个具有大于预定的阈值的非重叠点数量。根据实施例,在周围具有不完整平面的点周围添加至少一个点以完善所述平面。根据实施例,所述至少一个新点由以下决定:-从所述3个投影中确定所述3个投影之中对应于最大的非重叠投影点数量的投影,以及-沿着其中对应平面上的投影点缺失的投影线添加至少一个新点。根据另一实施例,通过以下来完善点周围的不完整平面:-检查每个非占用位置的距离-sclose邻居的数量,-确定要在步骤1中进一步处理的非占用位置,其距离-sclose邻居的数量大于一预定的阈值且小于一预定的阈值,-在所述非占用位置周围添加新点。根据实施例,还通过对原始点云的至少一个纹理图像进行逆投影来获得逆投影点云,所述至少一个纹理图像也通过将原始点云的点投影到至少一个表面上而获得。通过以下结合附图对示例的描述,本原理的具体性质以及本原理的其他目的、优点、特征和用途将变得明显。附图说明在附图中,示出了本原理的示例。示出了:-图1a和图1b(已描述)示出了包括缺失部分或欠采样部分的重建点云的示例;-图2示意性地示出了根据本原理的示例的用于对表示3d对象的点云进行编码的方法的步骤的图;-图3示出了基于八叉树的结构的示例;-图4示出了根据本原理的实施例的图2的步骤200的子步骤的图;-图5示出了根据本原理的实施例的图4的步骤400的子步骤的图;-图6示出了根据本原理的实施例的图2的步骤250的子步骤的图;-图7示出了候选的基于八叉树的结构的示例的图示;-图8示意性地示出了根据本原理的示例的用于从至少一个比特流解码表示3d对象的有色点云的方法的步骤的图;-图9示出了根据本原理的实施例的图8的步骤880的子步骤的图;-图10示出了点的距离1邻域;-图11示出了包括两个边界点组的点云的示例;-图12示出了根据本原理的实施例的图9的步骤900的子步骤的图;-图13示出了根据本原理的另一实施例的图8的步骤880的子步骤的图;-图14示出了根据本原理的实施例的图13的步骤1310的子步骤的图;-图15是其中存在微小孔的重建点云的示例;-图16示出了用于处理微小孔的步骤的图;-图17示出了用于检测微小孔的步骤;-图18示出了用于完善微小孔的步骤;-图19示出了根据本原理的示例的设备的架构的示例;和-图20示出了根据本原理的示例的通过通信网络进行通信的两个远程设备;-图21示出了根据本原理的示例的信号的语法。相似或相同的元素采用相同的附图标记来表示。具体实施方式在下文中将参考附图更全面地描述本原理,附图中示出了本原理的示例。然而,本原理可以以许多替代形式来实施,并且不应该被解释为限于这里阐述的示例。因此,虽然本原理易于有各种修改和替换形式,但是其具体示例通过附图中的示例示出并且将在本文中详细描述。然而,应该理解,不意图将本原理限制于公开的特定形式,相反,本公开要覆盖落入权利要求定义的本原理的精神和范围内的所有修改、等同物和替代物。本文使用的术语仅用于描述特定示例的目的,并不旨在限制本原理。如本文使用的,单数形式“一(a)”、“一(an)”和“该”旨在也包括复数形式,除非上下文另有明确说明。还将理解,当在本说明书中使用时,术语“含有”、“包含”、“包括”和/或“包括有”指定所陈述的特征、整数、步骤、操作、元件和/或分量的存在,但是不排除存在或附加一个或多个其他特征、整数、步骤、操作、元件、分量和/或其组。此外,当元件被称为“响应”或“连接”到另一个元件时,它可以直接响应或连接到另一个元件,或者可以存在中间元件。相反,当元件被称为“直接响应”或“直接连接”到其他元件时,不存在中间元件。如本文使用的,术语“和/或”包括一个或多个相关所列项目的任何和所有组合,并且可以缩写为“/”。将理解,尽管本文可以使用术语第一、第二等来描述各种元素,但是这些元素不应受这些术语的限制。这些术语仅用于区分一个元素与另一个元素。例如,第一元素可以被称为第二元素,并且类似地,第二元素可以被称为第一元素,而不脱离本原理的教导。尽管一些图包括通信路径上的箭头以示出通信的主要方向,但是要理解,通信可以在与所示箭头相反的方向上发生。关于框图和操作流程图描述一些示例,其中每个框表示包括用于实现(多个)指定逻辑功能的电路元件、模块或包括一个或多个可执行指令的代码部分。还应注意,在其他实现方式中,框中标注的(多个)功能可以不按所标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者取决于所涉及的功能这些框有时可以以相反的顺序执行。本文对“根据示例”或“在示例中”的引用意味着结合该示例描述的特定特征、结构或特性可以包括在本原理的至少一个实现方式中。在说明书中各处出现的短语“根据示例”或“在示例中”不一定都指代相同的示例,也不一定是与其他示例相互排斥的单独或替代示例。权利要求中出现的附图标记仅是示例性的,并且对权利要求的范围没有限制作用。虽然没有明确描述,但是这些示例和变型可以以任何组合或子组合使用。本原理针对编码/解码有色点云进行描述,但是扩展到有色点云的序列的编码/解码,这是因为序列中的每个有色点云被顺序地编码/解码,如下面描述。在下文中,图像包含特定图像/视频格式的样本(像素值)的一个或几个阵列,其指定与图像(或视频)的像素值有关的所有信息以及可能由显示器和/或任何其他设备使用来例如可视化和/或解码图像(或视频)的所有信息。图像包括呈第一样本阵列的形式的至少一个分量,通常是亮度(或明度)分量,并且可能包括呈至少一个其他样本阵列的形式的至少一个其他分量,通常是颜色分量。或者,等同地,相同的信息也可以由一组颜色样本阵列来表示,诸如传统的三色rgb表示。像素值由nv个值的矢量表示,其中nv是分量的数量。矢量的每个值都由多个比特表示,这些比特定义像素值的最大动态范围。纹理图像是其像素值表示3d点的颜色的图像,而深度图像是其像素值表示3d点的深度的图像。通常,深度图像是灰度图像。图2示意性地示出了用于编码表示3d对象的输入点云ipc的方法的步骤的图。在步骤200中,模块m1通过将输入点云ipc的点投影到与投影结构的至少一个体积cj相关联的至少一个表面fi,j上来获得至少一个深度图像(dii,j),所述输入点云ipc的点包括在所述至少一个体积cj中。索引i是指与体积相关联的表面或深度图像的索引,而索引j是指所述投影结构的体积的索引。体积cj可以是包围整个输入点云ipc的3d体积的一部分或者是所述3d体积。因此,投影结构包括至少一个体积cj的组{cj}和与体积cj相关联的至少一个表面fi,j。所述至少一个表面fi,j可以是其参数被定义的参数化表面,以便优化输入点云ipc的至少一部分到所述参数化表面上的投影。根据步骤200的优选实施例,体积cj是立方体,表面是所述立方体的面,并且投影结构是基于八叉树的投影结构。然后,模块m1通过将输入点云ipc的点投影到基于八叉树的投影结构的至少一个立方体cj的至少一个面fi,j上来获得至少一个深度图像(dii,j),所述输入点云ipc的点包括在所述至少一个立方体cj中。索引i是指对应于立方体cj的6个面之一的面或深度图像的索引(从1到6)。表面(或面)fi,j形成至少一个表面(或面)的组{fi,j},并且深度图像dii,j形成至少一个深度图像的组{dii,j}。基于八叉树的结构包括根节点、至少一个叶节点以及可能的中间节点。叶节点是基于八叉树的立方体的没有子节点的节点。所有其他节点都有子节点。基于八叉树的结构的每个节点都与立方体相关联。叶立方体是与基于八叉树的结构的叶节点相关联的立方体。可以通过递归地分割与根节点相关联并包含输入点云ipc的初始立方体来获得基于八叉树的投影结构。因此,基于八叉树的投影结构包括与一个或多个节点相关联的至少一个立方体cj的组{cj}。当达到最大八叉树深度时,或者当与节点相关联的立方体的尺寸小于阈值时,或者当立方体中包含的输入点云3d的点的数量不超过最小数量时,可以检查停止条件。在图3所示的示例中,与根节点(深度0)相关联的立方体被分割为8个子立方体(深度1),然后将深度1的两个子立方体分割为8个子立方体(最后深度=最大深度=2)。相同深度的立方体的尺寸通常是相同的,但是本原理不限于该示例。特定处理还可以确定当分割立方体时每个深度的子立方体的不同数量,和/或相同深度或根据其深度的立方体的多个尺寸。在下文中,术语“为立方体确定的局部基于八叉树的结构”是指在由包围要编码的点云的一部分的立方体界定的3d空间中确定的基于八叉树的结构。相反,整体基于八叉树的结构是指在由包围要编码的点云的立方体界定的3d空间中确定的基于八叉树的结构。在步骤210中,编码器enc1对至少一个深度图像的组{dii,j}进行编码。所述至少一个编码的深度图像可以被存储和/或在比特流f2中传输。在步骤220中,模块m2通过逆投影所述至少一个深度图像dii,j获得逆投影点云ippc。所述逆投影是在步骤200中使用处理的相反处理(仅用于投影点)。根据步骤220的变型,模块m2使用编码器enc1对所述至少一个深度图像dii,j进行编码,并且通过对所述至少一个编码的深度图像dii,j进行解码并通过对所述至少一个解码的深度图像dii,j进行逆投影来获得逆投影点云ippc。然后,逆投影点云ippc表示输入点云ipc的几何形状的近似。在步骤230中,模块m3通过以下方式确定包括至少一个立方体的基于八叉树的结构io:递归地分割包围输入点云ipc的立方体,直到与所述基于八叉树的结构io的叶节点相关联的叶立方体达到预期尺寸为止。与基于八叉树的结构io的叶节点相关联的叶立方体然后可以包括或不包括输入点云ipc的点。下文中,与基于八叉树的结构io的叶节点相关联的叶立方体被命名为最大八叉树单元(louk),k意指引用与基于八叉树的结构io的叶节点k相关联的最大八叉树单元的索引。在步骤240中,模块4对表示基于八叉树的结构io的第一八叉树信息数据foid进行编码。在步骤250中,对于每个louk,模块m5通过优化比特率rk,n和失真dk,n之间的折衷来确定局部基于八叉树的结构ok是否与louk相关联,比特率rk,n用于编码近似于包括在所述louk中的输入点云ipc的点pk,or的几何形状的候选的基于八叉树的结构ok,n,失真dk,n考虑一方面的输入点云ipc的所述点pk,or和另一方面的包括在与候选的基于八叉树的结构ok,n的叶节点相关联的叶立方体中的点pk,n之间的空间距离,并且考虑一方面的点云的所述点pk,or和另一方面的包括在与候选的基于八叉树的结构ok,n的叶节点相关联的叶立方体中的点pk,n以及包括在所述louk中的逆投影点云ippc的点pk,ip之间的空间距离。从数学上讲,失真dk,n是由下式给出的度量:dk,n=d(pk,n∪pk,ip,pk,or)+d(pk,or,pk,n∪pk,ip)其中d(a,b)是测量从一组点a到一组点b的空间距离的度量。该度量不是对称的,这意味着从a到b的距离不同于从b到a的距离。距离d(pk,n∪pk,ip,rk,or)确保与候选的基于八叉树的结构ok,n的叶节点相关联的叶立方体中包括的点离输入点云ipc不太远,避免了对无关点进行编码。距离d(pk,or,pk,n∪pk,ip)确保输入点云ipc的每个点都由离它们不太远的点近似,即确保输入点云ipc的未由逆投影点云ippc表示的部分由与基于八叉树的结构ok,n相关联的点pk,n很好地近似。根据实施例,距离d(a,b)由以下给出:其中范数是欧几里得距离,qclosest(p,b)是b中距a的给定点p最接近的点,定义为根据优化处理,可能发生louk不包括输入点云ipc的任何点。在这种情况下,louk被命名为非编码louk。还可能发生的是,优化处理确定包括在louk中的输入点云ipc的点未由任何候选的基于八叉树的结构ok,n表示(编码)。当用于编码这些点的成本相对于与rk,n=0以及(在来自其他已编码louk和逆投影点云ippc的已编码点与pk,or之间获得的)失真dk,n相关联的成本太高时,就是这种情况。在这种情况下,没有为该louk确定局部基于八叉树的结构ok,然后将该louk视为非编码louk。在步骤250中,对于与所述基于八叉树的结构io的叶节点相关联的每个louk,模块m5还对第一叶节点信息数据flid进行编码,该第一叶节点信息数据flid指示是否已经为所述louk确定了局部基于八叉树的结构ok。例如,如果局部基于八叉树的结构ok与louk相关联,则该数据flid可以是设置为1的标志,否则,即,如果louk是非编码louk,则该数据flid可以是设置为0的标志。如果第一叶节点信息数据flid指示已经为louk确定了局部基于八叉树的结构ok,则在步骤260中,模块m6对表示所述确定的局部基于八叉树的结构ok的第二八叉树信息数据soid进行编码,并且在步骤270中,模块m7对第二叶节点信息数据slid进行编码,该第二叶节点信息数据slid指示所述局部基于八叉树的结构ok的叶立方体是否包括表示输入点云ipc的一部分的点。第一八叉树信息数据foid、第一叶节点信息数据flid、第二八叉树信息数据soid和第二叶节点信息数据slid可以被存储和/或在比特流f1中传输。可选地,在步骤280中,模块m8对表示所述至少一个表面(或立方体的面)fi,j的组的投影信息数据进行编码。投影信息数据既驱动输入点云ipc在表面(或面)上的投影,又驱动从表面(或面)上的逆投影,以获得逆投影点云ippc(步骤220)。在步骤280的变型中,解码器可以预先知道投影结构(基于八叉树的投影结构),并且模块m8不对表示投影结构(基于八叉树的投影结构)的信息数据进行编码。在步骤280的另一变型中,模块m8还编码表示投影结构(基于八叉树的投影结构)的投影信息数据。编码的投影信息数据可以被存储和/或在比特流f1中传输。根据图4所示的步骤200的实施例,在步骤400中,模块m1根据表示与体积cj的表面fi,j相关联的深度图像dii,j的能力的度量q(fi,j)来确定选择与组{cj}的每个体积cj相关联的哪些表面fi,j,以高效地压缩包括在体积cj中的输入点云ipc的点在表面fi,j上的投影。在步骤410中,模块m1通过将包括在体积cj中的输入点云ipc的点投影到与体积cj相关联的所选表面fi,j上,来获得每个所选表面fi,j的一个深度图像dii,j。图5示出了根据本原理的实施例的步骤400的子步骤的图。在步骤500中,考虑投影结构的每个体积cj,并且模块1将包括在体积cj中的输入点云ipc的点投影到与所述体积cj相关联的每个表面fi,j上,以获得每个所述表面fi,j的深度图像dii,j。根据优选实施例,表面fi,j可以是与立方体cj相关联的六个面。在步骤510中,模块m1为与表面fi,j相关联的每个深度图像计算度量q(fi,j)。根据实施例,度量q(fi,j)响应于像素的总数n_total(i,j)(与包括在体积cj中的输入点云ipc的一部分的投影相对应)与新看到的点的数量n_new(i,j)的比率。如果尚未将点投影在先前选择的表面上,则该点被视为“新看到的”。如果通过将输入点云ipc的一部分投影到表面fi,j上看不到新点,则所述比率变为无限大。相反,如果所有点都是新的,则该比率等于1。在步骤520中,当度量q(fi,j)低于或等于阈值q_acceptable时,模块m1选择表面fi,j:q(fi,j)≤q_acceptable然后,每体积可以不选择表面或选择至少一个表面。可能的值为q_acceptable=2,表明至少一半的投影点应该是新的以选择投影。应该理解,这些示例不限于仅作为示例提供的该特定值。根据步骤240和/或260的实施例,第一八叉树信息数据foid和第二八叉树信息数据soid包括每个节点的二进制标志,该二进制标志等于1以指示与所述节点相关联的立方体被分割,否则该二进制标志等于0。根据步骤240的可选变型,模块m4生成立方体分割的最大深度。这避免了为具有最大深度的所有立方体发信号通知第一八叉树信息数据。根据步骤250的实施例,第一叶节点信息数据flid每叶节点包括一个二进制标志,该二进制标志等于1以指示是否已经针对louk确定了局部基于八叉树的结构ok,否则该二进制标志等于0(用于发信号通知非编码louk)。根据步骤270的实施例,第二叶节点信息数据slid每叶节点包括一个二进制标志,该二进制标志等于1以指示局部基于八叉树的结构ok的叶立方体是否包括表示输入点云ipc的一部分的点,否则该二进制标志等于0。根据实施例,可以使用诸如cabac(可在http://www.itu.int/rec/t-rec-h.265-201612-i/en中的hevc规范中找到cabac的描述)之类的熵编码器来编码第一八叉树信息数据foid、第一叶节点信息数据flid、第二八叉树信息数据soid和/或第二叶节点信息数据slid。对第二八叉树信息数据soid和/或第二叶节点信息数据slid进行熵编码在编码方面可能是高效的,因为可以使用特定上下文来每节点地编码二进制标志,因为通常基于八叉树的结构中只有几个节点被分割,并且与相邻节点相关联的二进制标志具有相同值的可能性很高。图6示出了根据本原理的实施例的步骤250的子步骤的图。如上所述,获得了包括至少一个louk的基于八叉树的结构io,并且速率失真优化(rdo)处理被用于为至少一个louk确定最佳的局部基于八叉树的结构ok。单个标志可以被编码在比特流f1中以指示louk是否包括输入点云ipc的点。在louk上执行的rdo处理可以从n个候选的基于八叉树的结构ok,n(n∈[1;n])中找到最佳的局部基于八叉树的结构ok。基本原理是依次测试每个候选的基于八叉树的结构ok,n,并针对每个候选的基于八叉树的结构ok,n计算由以下给出的拉格朗日成本ck,n:ck,n=dk,n+λrk,n(1)其中rk,n和dk,n分别是上面详述的比特率和失真,而λ是固定的拉格朗日参数,该参数对于所有候选的基于八叉树的结构ok,n都是固定的。然后通过最小化拉格朗日成本ck,n获得最佳的局部基于八叉树的结构ok:拉格朗日参数的高值严重影响比特率rk,n,并导致低近似质量,而拉格朗日参数的低值易于允许rk,n的高值,并导致高近似质量。λ值的范围取决于失真度量、louk的尺寸、最重要的是取决于两个相邻点之间的距离。假设以该距离为单位(unity),则λ的典型值在数百(对于非常差的编码)到十分之一(对于良好的编码)个单位的范围内。这些值是指示性的并且也可能取决于内容。现在根据本原理的实施例详细描述为louk确定最佳的局部基于八叉树的结构ok。在步骤600中,模块m5针对louk获得一组n个候选的基于八叉树的结构ok,n,并针对每个候选的基于八叉树的结构ok,n获得一组点pk,n。点pk,n是包含在与候选的基于八叉树的结构ok,n的叶节点相关联的立方体中的点。在步骤610中,模块m5获得用于编码每个候选的基于八叉树的结构ok,n的比特率rk,n。在步骤620中,模块m5获得包括在louk中的输入点云ipc的点pk,or和逆投影点云ippc的点pk,ip。在步骤630中,模块m5针对每个候选的基于八叉树的结构ok,n获得失真dk,n,每个dk,n考虑一方面的点pk,or以及pk,ip和另一方面的点pk,n之间的空间距离。在步骤640中,模块m5根据公式(1)为每个候选的基于八叉树的结构ok,n计算拉格朗日成本ck,n。在步骤650中,一旦已经考虑了所有的候选的基于八叉树的结构ok,n,则模块m5根据公式(2)获得最佳的局部基于八叉树的结构ok。注意,如上所述,之后可能认为,针对louk的最佳折衷是不对其中包括的点进行编码。在这种情况下,不为该louk确定局部基于八叉树的结构ok。根据步骤600的实施例,候选的基于八叉树的结构ok,n包括至少一个叶节点,并且与叶节点相关联的叶立方体可以(或可以不)包括单个点。图7示出了根据该实施例的候选的基于八叉树的结构ok,n的示例的图示。该图表示出分割正方形的基于四叉树的结构的示例,但读者可以通过将正方形替换为立方体(louk)而轻松将其扩展到3d情况。根据该示例,该立方体被分割为4个子立方体c1、c2、c3和c4(深度1)。子立方体c1与叶节点相关联并且不包含任何点。子立方体c2递归地分割为4个子立方体(深度2)。子立方体c3也被递归地分割,并且子立方体c4未被分割,但位于例如立方体中心的点与之相关联……等等。在图7的右侧部分示出了候选的基于八叉树的结构的图示。黑色圆圈指示节点被分割。二进制标志与每个白色圆圈(叶节点)相关联,以指示正方形(在3d情况下为立方体)包括(1)点或不包括(0)点。根据该示例,点位于立方体的中心,因为一旦在基于八叉树的结构中标识了立方体,这就避免了有关该点的空间位置的任何附加信息。但是本原理不限于该示例,并且可以扩展到立方体中的点的任何其他空间位置。本原理不限于图7所示的候选的基于八叉树的结构,而是扩展到包括至少一个叶节点的任何其他基于八叉树的结构,该叶节点的相关联的叶立方体包括至少一个点。根据步骤610的实施例,当第二八叉树信息数据soid指示与所述节点相关联的立方体被分割、并且第二叶节点信息数据slid指示局部基于八叉树的结构ok的叶立方体是否包括表示输入点云ipc的一部分的点时,比特率rk,n是第二八叉树信息数据soid和第二叶节点信息数据slid中包括的二进制标志的数量的总和。根据步骤610的另一变型,形成并熵编码包括在第二八叉树信息数据soid中的二进制标志的第一序列和包括在第二叶节点信息数据slid中的二进制标志的第二序列,并且然后从所述第一序列和第二序列的熵编码版本中获得比特率rk,n。输入点云ipc的几何形状通过所述至少一个深度图像来近似,所述深度图像是通过将输入点云ipc投影到与体积cj相关联的表面fij上并且是通过基于八叉树的结构io和ok而获得的。输入点云ipc的点的颜色可以如下所述来近似。根据方法的变型,在步骤200中,模块m1还通过将包括在投影结构的体积cj中的输入点云ipc的点投影到与所述体积cj相关联的表面fi,j上,来获得每个深度图像(dii,j)的纹理图像(tii,j)。投影将包括在体积cj中的输入点云ipc的点投影到与其相关联的表面fi,j上,以创建深度图像dii,j和可选的纹理图像tii,j。输入点云ipc的点在与体积cj相关联的表面上的投影可以通过多种方式获得,例如,通过实施以下方法中的任何一种:-将包括在体积cj中的输入点云ipc的点的参数线性透视投影到与视点相关联的平面fij上,表示线性透视投影的参数包括虚拟相机的位置、空间采样步长和二维视场;-将包括在体积cj中的输入点云ipc的点参数正射投影到表面fij上,表示正射投影的参数包括投影表面fij的几何形状(形状、尺寸和取向)和空间采样步长;-对应于降维的数学运算的lle(局部线性嵌入),在此应用于从3d到2d的转换/变换,表示lle的参数包括变换系数。每个表面fij可以有利地具有矩形形状,以简化图2中的模块enc1的编码处理210。投影处理不限于仅作为示例性实施例提供的上述处理。根据步骤200的优选实施例的变型,模块m1还通过将包括在基于八叉树的投影结构的立方体cj中的输入点云ipc的点投影到所述立方体cj的面fi,j上,来获得每个深度图像dii,j的纹理图像tii,j。纹理图像tii,j是输入点云ipc的点的颜色的近似。根据实施例,输入点云ipc的点到立方体的面上的投影是正交投影。正交投影将包括在立方体cj中的输入点云ipc的点投影到其面fi,j之一上,以创建深度图像dii,j和可选的纹理图像tii,j。创建的深度图像的分辨率可以与立方体分辨率相同,例如,将16×16×16的立方体中的点投影到16×16的像素图像上。通过轴的置换,可以不失一般性地假定面平行于xy平面。因此,当面的深度值zface等于0时,通过点的位置的分量z获得该点的深度(即到面的距离),或者通过分量z与面的深度值zface之间的距离获得该点的深度(即到面的距离)。在投影处理的开始,纹理图像可以具有均匀的预定颜色(例如,灰色),并且深度图像可以具有均匀的预定深度值(例如,负值-d)。对包括在立方体中的所有点执行循环。对于位置(x,υ,z)处的每个点,如果该点到面的距离z-zface严格低于深度图像中并置(在相同的x和相同的y的意义上)像素的深度值,则用z-zface替换所述深度值,并将纹理图像的并置像素的颜色替换为所述点的颜色。在对所有点执行循环之后,深度图像的所有深度值可以移位偏移量+d。实践中,从投影信息数据获得值zface、面的x和y的原点以及相对于面的立方体位置。偏移量d用于区分已投影(深度严格为正)或未投影(深度为零)的图像的像素。根据步骤210的实施例,编码器enc1是类似hevc的编码器(avc,h264,h265等)。根据步骤210的实施例,编码器enc1通过考虑与深度图像相关联的纹理图像来对所述深度图像进行编码。根据步骤210的实施例,编码器enc1是3d-hevc兼容的(关于专用于深度的编码工具,参见hevc规范的附件j)。这样的编码器可以自然地联合编码纹理及其关联的深度,就深度视频的压缩性能而言,其声称的增益约为50%。纹理图像与hevc向后兼容,因此,以与传统hevc主配置文件相同的性能进行压缩。根据步骤220的变型,模块m2使用编码器enc1对所述至少一个深度图像(dii,j)和所述至少一个纹理图像tii,j进行编码和解码,并且通过对所述至少一个编码的深度图像dii,j和所述至少一个编码的纹理图像tii,j进行解码、以及通过对至少一个解码的深度图像dii,j和所述至少一个解码的纹理图像tii,j进行逆投影来获得逆投影点云ippc。逆投影点云ippc则表示输入点云ipc的几何形状和颜色的近似。当投影是在与体积cj相关联的表面fij上的投影时,逆投影可以对应于上文描述的投影方法的逆操作,例如参数线性透视逆投影、参数正射逆投影和/或逆局部线性嵌入。逆投影使用与深度图像dii,j的像素相关联的深度信息来执行逆投影,以获得属于体积cj的逆投影点云ippc的点部分。与纹理图像tii,j的像素相关联的颜色信息被分配给所述点,以获得逆投影点云ippc的点的颜色。当投影是在立方体cj的面fij上的正交投影时,来自立方体的面的正交逆投影根据纹理和深度图像确定立方体中的逆投影3d点。面的分辨率可以与立方体分辨率相同,例如,将16×16×16的立方体中的点投影到16×16的像素图像上。通过轴的置换,可以不失一般性地假定面平行于xy平面。因此,点的深度(即,到面的距离)可以表示逆投影点的位置的分量z。然后将面定位在z坐标的值zface处,并且将立方体定位在大于zface的z处。实践中,从投影信息数据获得值zface、面的x和y的原点以及相对于面的立方体位置。对深度图像的所有像素执行循环。对于位置(x,y)和深度值v处的每个像素,如果值v严格为正,则可以在位置(x,y,zface+v-d)处获得逆投影3d点,并且纹理图像中位置(x,y)处的像素的颜色可以与所述点相关联。值d可以与投影处理中使用的正偏移量相同。正交逆投影处理不限于仅作为示例性实施例提供的上述处理。通过正交逆投影若干解码的纹理和深度图像,可能会发生两个或更多个逆投影3d点属于完全相同的3d空间位置。在这种情况下,在所述位置处仅用一个点替换所述点,该一个点的颜色是在所有所述逆投影3d点上所取的平均颜色。图8示意性地示出了根据本原理的示例的、用于从至少一个比特流解码表示3d对象的点云的方法的步骤的图。在步骤800中,解码器dec1从比特流f2解码至少一个深度图像,该深度图像表示要解码的点云rpc的至少一部分的空间位置。在步骤810中,模块m10通过逆投影所述至少一个解码的深度图像di’i,j来获得逆投影点云ippc,所述逆投影由表示与投影结构的至少一个体积cj相关联至少一个表面fi,j的投影信息数据驱动。根据步骤810的优选实施例,体积cj是立方体,表面是该立方体的面,并且投影结构是基于八叉树的投影的结构。所述逆投影类似于步骤220的处理。根据810的变型,模块10对表示所述至少一个表面fi,j的组的投影信息数据进行解码。投影信息数据从至少一个表面驱动逆投影,以获得逆投影点云ippc。在步骤810的变型中,解码器可以预先知道投影结构。在步骤810的变型中,模块m10还解码表示投影结构(体积cj和与这些体积相关联的表面fij的组)的投影信息数据。在步骤810的另一变型中,模块m10还解码表示投影结构的投影信息数据,该投影结构是基于八叉树的投影结构(立方体cj和这些立方体的面fij的组)。在步骤820中,模块m11从比特流f1解码第一八叉树信息数据foid。在步骤830中,模块m12从第一八叉树信息数据foid获得基于八叉树的结构io。在步骤820中,模块m11从比特流f1解码叶节点信息数据flid,并且在步骤840中,模块m13从所述第一叶节点信息数据flid确定与基于八叉树的结构io的叶节点相关联的louk是否与局部基于八叉树的结构ok相关联。如果第一叶节点信息数据flid指示局部基于八叉树的结构ok已经与louk相关联,则在步骤820中,模块m11从比特流f1解码八叉树信息数据soid和叶节点信息数据slid,在步骤850中,模块m14从所述八叉树信息数据soid获得用于所述louk的局部基于八叉树的结构ok,并且在步骤860中,模块m15根据所述叶节点信息数据slid确定所述局部基于八叉树的结构ok的叶立方体是否包括表示输入点云ipc的一部分的叶点。在这种情况下,在步骤860中,模块m15将优选位于其所属的叶立方体的中心的所述叶点添加到所述局部基于八叉树的结构ok。在步骤870中,模块m16通过将基于八叉树的结构io的至少一个叶节点替换为局部基于八叉树的结构ok,来获得整体基于八叉树的结构go。因此,整体基于八叉树的结构go由从附属于louk的所有局部基于八叉树的结构ok的叶立方体获得的所有叶点形成。在步骤880中,模块m17通过融合(fuse)所述逆投影点云ippc和整体基于八叉树的结构go,来获得解码点云rpc。解码点云rpc的点的空间位置是输入点云ipc的几何形状的近似。根据实施例,可以通过对比特流f1进行熵解码来获得八叉树信息数据foid、叶节点信息数据flid、八叉树信息数据soid和/或叶节点信息数据slid。熵解码可以与类似cabac的编码兼容。根据该方法的变型,在步骤800中,解码器dec1从比特流f2解码每个深度图像dii,j的纹理图像tii,j。然后形成解码纹理图像ti’i,j和解码深度图像di’i,j的至少一个对。根据步骤800的实施例,解码器dec1是类似hevc的解码器(avc,h264,h265等)。根据步骤800的实施例,解码器dec1通过考虑与深度图像相关联的纹理图像来对所述深度图像进行解码。根据步骤800的实施例,解码器dec1是3d-hevc兼容的。根据步骤810的变型,模块10通过对所述至少一个解码的深度图像di’i,j和所述至少一个解码的纹理图像tii,j进行逆投影,来获得逆投影点云ippc。解码点云rpc的点的空间位置是输入点云ipc的几何形状的近似,逆投影点云的点的颜色近似于输入点云的某些点的颜色。可以通过对逆投影点云的点的颜色进行插值来获得解码点云rpc的其他点的颜色。可能会发生逆投影点云ippc的一个点和整体基于八叉树的结构go的另一个点属于完全相同的3d空间位置。在这种情况下,在所述位置处仅用一个点替换这两个点,所述一个点的颜色是这两个点的平均颜色。输入点云ipc的几何形状和颜色因此由所述解码点云rpc近似。已经通过考虑与基于八叉树的结构(io)的叶节点相关联的叶立方体(louk)描述了本原理。根据编码和解码方法的实施例,考虑包围输入点云ipc的至少一个点的立方体c,而不是louk。然后如下对输入点云ipc进行编码:步骤200-220保持不变,并且去除步骤230和240。在步骤250中,模块m5通过优化比特率rk,n和失真dk,n之间的折衷来确定局部基于八叉树的结构ok是否与所述包围立方体相关联,比特率rk,n用于编码近似于包括在所述包围立方体中的输入点云ipc的点pk,or的几何形状的候选的基于八叉树的结构ok,n,失真dk,n考虑一方面的包括在所述包围立方体中的输入点云的所述点pk,or和另一方面的包括在与候选的基于八叉树的结构ok,n的叶节点相关联的叶立方体中的点pk,n以及包括在所述包围立方体中的逆投影点云ippc中的点pk,ip之间的空间距离。在步骤250中,模块m5对叶节点信息数据flid进行编码,该叶节点信息数据flid指示是否已经为所述包围立方体确定了局部基于八叉树的结构ok;-如果所述叶节点信息数据flid指示已经为所述包围立方体确定了局部基于八叉树的结构ok,-在步骤260中,对表示所述确定的局部基于八叉树的结构ok的八叉树信息数据soid进行编码;以及-在步骤270中,对叶节点信息数据slid进行编码,该叶节点信息数据slid指示所述局部基于八叉树的结构ok的叶立方体是否包括表示点云的一部分的点。以相同的方式,根据解码方法的实施例,考虑包括表示要解码的点云的至少一部分的至少一个点的包围立方体,而不是louk。然后,整体基于八叉树的结构go可以等于单个局部基于八叉树的结构ok(步骤870)。然后,如下对输入点云ipc进行解码:取消步骤800和810。在步骤820中,从比特流f1解码叶节点信息数据flid,该叶节点信息数据flid指示是否已经为所述包围立方体确定了局部基于八叉树的结构ok。如果所述叶节点信息数据flid指示已经为所述包围立方体确定了局部基于八叉树的结构ok,-在步骤820中,从比特流f1解码表示所述确定的局部基于八叉树的结构ok的八叉树信息数据soid和叶节点信息数据slid,该叶节点信息数据slid指示所述局部基于八叉树的结构ok的叶立方体是否包括表示点云的一部分的点;-在步骤850中,从所述八叉树信息数据soid获得用于所述包围立方体的局部基于八叉树的结构ok;-在步骤860中,根据所述叶节点信息数据slid确定所述局部基于八叉树的结构ok的叶立方体是否包括要解码的点云的点,并且在这种情况下,将叶点添加(880)到表示所述局部基于八叉树的结构ok的叶立方体。在步骤880中,通过将所述逆投影点云ippc和整体基于八叉树的结构go融合而获得解码点云rpc,在这种情况下,整体基于八叉树的结构go等于单个局部基于八叉树的结构ok。解码点云rpc是从所述逆投影点云ippc和所述整体基于八叉树的结构go重建的点云。如本专利申请的
背景技术
:部分所述,该重建点云可以包括如图1a-图1b所示的不完整部分。这些不完整部分可能是由于投影步骤(100)和/或速率失真优化rdo而生成(步骤150)。如图1a-图1b上可见,主要有两种类型的不完整部分·逆投影点云ippc中完全缺失的部分,·基于八叉树的结构go的点周围的稀疏部分。根据本发明,这些部分取决于它们是由于逆投影还是由于rdo所导致来进行完善。根据本发明,通过沿着在缺失部分的边界上连接各种逆投影点的线添加新点,来完成逆投影点之中的缺失部分。关于稀疏部分,在基于八叉树的结构go的欠采样点周围的局部切平面上添加新点。这些处理在解码方法的模块m17中执行(步骤880)。图9是根据第一实施例的步骤880的子步骤的图。在步骤900中,检测逆投影点云ippc中的至少一个缺失部分mpq。在步骤910中,基于所述至少一个缺失部分的邻域中的点来完善每个缺失部分mpq,以便生成完善的逆投影点云ippc’。在步骤920中,完善的逆投影点云ippc’和基于八叉树的结构的go被融合以生成重建点云rpc。在步骤900中,通过首先检测这些缺失部分的边界点来检测缺失部分mpq。这需要分析ippc每个点的邻域。点p的距离-s邻居被定义为落在球体或立方体上的邻近点,所述球体或立方体的中心为p,球体直径或立方体规模等于2×s。点p(xp,yp,zp)的距离-s邻域由以下定义{neigh(xneigh,yneigh,zneigh),|xneigh-xp|=s&&|yneigh-yp|=s&&|zneig-zp|=s}其中&&是逻辑运算符“与(and)”。图10示出了点p的距离-1邻域。落在立方体c上的点是点p的距离-1邻居。在该示例中,点p包括在其距离-1邻域中的4个点。图11是根据实施例的步骤900的子步骤的图。在步骤1100中,检测边界点。在此,检查每个点的距离-sclose邻域。在不失一般性的情况下,此后,sclose=1。在逆投影点云ippc中检测被称为边界点的点,边界点在其距离-1邻域中具有个邻居,其中值和是预定义的低阈值和高阈值。检测到的点被认为是完全缺失部分周围的边界点的候选。在一个示例中,并且阈值和可以取决于所需的采样率。有利地,在步骤1110中对边界点应用附加处理。对于每个边界点,确定它的距离1的邻居(也是边界点)的数量。如果其大于阈值则将该边界点视为真实边界点。否则,将该边界点视为假的检测边界点。阈值等于或大于2。在一个示例中,被取为等于2。在步骤1120中,为每个缺失部分确定围绕该缺失部分mpq的一组边界点。步骤1120包括试图找到从每个边界点开始的边界点组。跟踪边界组方法可以如下。使用作为开始点的和步长n,边界点组如下增长:步长n的值例如等于2。图12示出了步骤1120的结果的示例。在该示例中,检测到两组边界点。内部为x的点构成第一组边界点,内部为+的点构成第二组边界点。然后,在步骤910中,基于每个缺失部分的邻域中的点,完善由一组边界点界定的该缺失部分mpq。该完善可以如下进行。在每个边界点组内,沿着连接每两个点的线添加新点。下面,我们考虑当前边界点组中的两个边界点和添加新点的过程可以如下。通过对p1和p2的颜色或纹理值进行插值来获得添加点pm的颜色或纹理值。可以在rgb、yuv或其他颜色空间中执行颜色插值。因此,沿着连接边界点组的两个点的线添加新点,直到沿着线的两个点之间的距离小于2。在另一实施例中,还处理基于八叉树的结构的点周围的稀疏部分,以改善重建点云rpc的视觉质量。在图13中,除了逆投影点云ippc的完善之外,基于八叉树的结构go也被完善。如参考图9描述的那样处理逆投影点云ippc,以生成完善的逆投影点云ippc’。如下处理基于八叉树的结构go。在步骤1300中,在与基于八叉树的结构相关联的点云中检测欠采样点在此,检查每个点的距离-sclose邻域。此后,在不失一般性的情况下,sclose=1。在步骤1310中,在检测到的欠采样点周围添加新点,以生成基于八叉树的结构go’。根据实施例,检测欠采样点的步骤(1300)包括:在基于八叉树的结构go中,检测在其距离-1邻域中具有个邻居并且在其距离-sfurther邻域中具有个邻居的点,低于阈值t1,并且大于阈值tsfurther,其中sfurther>1。满足两个标准(和)的检测点被认为是欠采样点。仅满足第一标准的点不被认为是欠采样点而是被认为是有噪点或隔离点。阈值和邻域距离的值例如是:·t1=8;·sfurther=4;·tsfurther=9;在步骤1310中,在检测到的欠采样点周围添加新点。图14示出了步骤1310的子步骤。在步骤1400中,确定每个欠采样点周围的在其中添加新点的邻域的距离sfill。在该步骤中,如果点周围的邻域太稀疏,则应当如下扩大在其中在周围添加新点的邻域距离。如果低于预定义的阈值t1’,则将sfill设置为满足的最小邻域范围,其中tsfill是邻域距离sfill的预定义的阈值,是的距离-sfill邻域中的点的数量。对于每个邻域距离sfill由下式确定:其中,t1>t1’。在一个示例中,t1’=2且tsfill=8。在步骤1410中,欠采样点的距离-sfill邻域中的所有非占用位置都可以用点填充。该点的颜色或纹理值可以通过对其邻居的颜色或纹理值进行插值来计算。有利地,欠采样点的距离-sfill邻域中的所有非占用位置不全部用点填充,而是仅填充它们的一部分。边界框(立方体)(其中心为尺寸为2sfill×2sfill×2sfill)中的每个非占用位置被视为要添加到重建点云的候选新点。插入到非占用位置的点在下文中表示为基于以下提到的关于两个因子的条件,确定在周围插入的可能性。第一因子是和与相切的局部平面之间的距离:其中和分别是的均值和法线值(normal)。邻域范围sfill中的的所有已有邻居表示为是的均值点。如下计算中的每三个不同点形成一个三角形。是所有这些三角形的法线值的均值。该第一因子表示距离由点云表示的周围的下层局部表面有多近。越高,则将添加到点云的可能性越小。第二因子是在插入点的情况下,的距离-slarge邻域和之间的距离变化,表示为的距离-slarge邻域和之间的距离由下式定义其中是的距离-slarge邻域。由下式定义其中disneighborhood和dis′neighborhood是是被添加到点云之前和之后的的距离-slarge邻域和之间的距离。注意,的值不为负。该因子量化了可以如何帮助连接的距离-slarge邻域和越高,则添加的可能性就越大。根据本发明,如果并且则将添加到重建点云。可能的值为threstangent=1.0和thresneihdischange=1。作为变型,在确定候选新点时,使用代替这是为了进一步避免在有噪点/隔离点周围添加新点。在逆投影点云ippc和基于八叉树的结构go上进行上述两个处理之后,可能仍然残留一些微小孔,如图15所示。尽管只需要一个点就可以填充这些微小孔中的每一个,但这种人为产物在视觉上可能非常令人讨厌。这些微小孔对应于在其距离-1邻域中没有完整平面的某些点。必须检测并然后完善这些微小孔。图16描述了检测和完善这些孔的附加步骤。在步骤1600中,在重建点云rpc中检测在其距离-sclose邻域中没有完整平面的点。在不失一般性的情况下,此后,sclose=1。由于在大多数情况下,点云表示表面模型,因此对于每个点,xoy、yoz和xoz平面上的、每个点的距离-1邻居的投影中的至少一个投影应覆盖对应平面上的对应3×3正方形的大部分。也就是说,对于具有完整距离-1邻域的点,在将其距离-1邻居投影到xoy、yoz和xoz平面上的3个投影中,至少一个投影会生成一组非重叠的投影的距离-1邻居,其数量大于预定义的阈值threscompleneighh。例如,threscompleneighh=9,这意味着应完全覆盖对应平面上的对应3×3正方形。图17示出了2d中的示例。如果3个投影中的任何一个都不能完全覆盖3×3正方形,则该点的距离-1邻域被视为没有完整的平面。因此,在第一实施例中,在步骤1600中,在其距离-1邻居在xoy、yoz和xoz平面上的3个投影中没有投影覆盖3×3正方形的点被认为是在其距离-1邻域中没有完整平面的点。在步骤1610中,完善在步骤1600中检测到的点的距离-1邻域。首先,选择在投影平面上具有最大投影点数的投影方向。这种投影方向例如是如图18所示的y方向。其次,沿着缺失对应投影点的每条投影线pl,在3个候选未占用位置之中最接近落入投影线pl的3×3×3邻域n中的点的平均位置的位置中添加点。因此,在步骤1610中添加新点以使rpc的每个点的距离-1邻域完善。完善后的rpc表示为rpc’。关于其他处理,新点的颜色由附近已有点的颜色插值确定。在特定实施例中,当将要添加新点时,比较附近点的颜色。如果附近点的颜色非常不同,则不添加新点。根据第二实施例,可以完善rpc的每个点的距离-1邻域。在该第二实施例中,代替检查每个已有点的距离-1邻域(第一实施例),检查每个非占用位置的距离-1邻域。将每个非占用位置表示为punoccup(xunoccup,yunoccup,zunoccup)。对于每个punoccup,检查其在当前点云中的距离1的邻居的数量,该数量表示为如果在合理范围内,换句话说,当p的距离1邻域完整时小于通常的值并且大于下界,则punoccup可能是新点并被添加到点云。在这种情况下,进一步检查punoccup。也就是说,如果则进一步检查punoccup。否则,不进一步检查punoccup。可能的值为和如果进一步检查punoccup,则检查沿以下线的位置:range的可能值为3。如果没有占用沿上述线的任何位置,则进一步检查两个拐角点为(xunoccup,yunoccup-rangesquare,zunoccup-rangesquare)和(xunoccup,yunoccup+rangesquare,zunoccup+rangesquare)的正方形。如果在所述正方形内的占用位置的数量大于预定义的阈值则沿着该线的新点被添加到点云。可能的值为要添加的新点是pnew(xnew,yunoccup,zunoccup),其中xnew是xi的值,其使得在xunoccup-range<xi<xunoccup+range之中,pi(xi,yunoccup,zunoccup)具有最大数量的距离-1邻居。如果在该阶段已经在punoccup周围添加了新点,则完善算法继续检查当前点云的其他未占用位置。否则,如下进一步检查punoccup。检查沿以下线的位置:如果没有占用沿上述线的任何位置,则进一步检查两个拐角点为(xunoccup-rangesquare,yunoccup,zunoccup-rangesquare)和(xunoccup+rangesquare,yunoccup,zunoccup+rangesquare)的正方形。如果在所述正方形内的占用位置的数量大于则沿着该线的新点被添加到点云。要添加的新点是pnew(xunoccup,ynew,zunoccup),其中ynew是yi的值,其使得在yunoccup-range<yi<yunoccup+range之中,pi(xunoccup,yi,zunoccup)具有最大数量的距离-1邻居。如果已经在该阶段在punoccup周围添加了新点,则完善算法继续检查当前点云的其他未占用位置。否则,如下进一步检查punoccup。检查沿以下线的位置:如果没有占用沿上述线的任何位置,则进一步检查两个拐角点为(xunoccup-rangesquare,yunoccup-rangesquare,zunoccup)和(xunoccup+rangesquare,yunoccup+rangesquare,zunoccup)的正方形。如果在所述正方形内的占用位置的数量大于则沿着该线的新点被添加到点云。要添加的新点是pnew(xunoccup,yunoccup,znew),其中znew是zi的值,其使得在zunoccup-range<zi<zunoccup+range之中,pi(xunoccup,yunoccup,zi)具有最大数量的距离-1邻居。然后完善算法继续检查当前点云的其他未占用位置。在图1-图18上,模块是功能单元,可以与可区分的物理单元相关或不相关。例如,这些模块或其中的一些模块可以一起提供在唯一的组件或电路中,或有助于软件的功能。相反,一些模块可以可能地由单独的物理实体组成。使用纯硬件,例如使用专用硬件,诸如asic或fpga或vlsi(分别是“专用集成电路”,“现场可编程门阵列”,“超大规模集成”),或者从设备中嵌入的若干集成电子组件,或者从硬件和软件组件的混合来实现与本原理兼容的装置。图19表示可以被配置为实现关于图1-图18描述的方法的设备1900的示例性架构。设备1900包括通过数据和地址总线1901链接在一起的以下元件:-微处理器1902(或cpu),其例如是dsp(数字信号处理器);-rom(只读存储器)1903;-ram(随机存取存储器)1904;-用于从应用接收要传输的数据的i/o接口1905;和-电池1906。根据示例,电池1906在设备外部。在每个提到的存储器中,说明书中使用的“寄存器”一词可以对应于小容量的区域(一些比特)或非常大的区域(例如,整个程序或大量接收的或解码的数据)。rom1903至少包括程序和参数。rom1903可以存储执行根据本原理的技术的算法和指令。当接通时,cpu1902将程序上载到ram中并执行相应指令。ram64包括寄存器中由cpu1902执行并在设备1900接通之后上载的程序、寄存器中的输入数据、寄存器中方法的不同状态的中间数据、以及寄存器中用于执行方法的其他变量。这里描述的实现方式可以在例如方法或处理、装置、软件程序、数据流或信号中实现。即使仅在单个形式的实现方式的上下文中讨论(例如,仅作为方法或设备讨论),但是所讨论的特征的实现方式也可以以其他形式(例如,程序)实现。装置可以在例如适当的硬件、软件和固件中实现。例如,方法可以在诸如例如处理器之类的装置中实现,该装置通常涉及处理设备,一般包括例如计算机、微处理器、集成电路或可编程逻辑器件。处理器还包括通信设备,诸如例如计算机、蜂窝电话、便携式/个人数字助理(“pda”)、以及便于终端用户之间的信息通信的其他设备。根据编码或编码器的示例,输入点云ipc从源获得。例如,源属于包含以下的组:-本地存储器(1903或1904),例如视频存储器或ram(随机存取存储器)、闪存、rom(只读存储器)、硬盘;-存储接口(1905),例如,与大容量存储器、ram、闪存、rom、光盘或磁性支撑件的接口;-通信接口(1905),例如,有线接口(例如,总线接口、广域网接口、局域网接口)或无线接口(诸如,ieee802.11接口或接口);和-图像捕获电路(例如,传感器,诸如例如ccd(电荷耦合器件)或cmos(互补金属氧化物半导体))。根据解码或解码器的示例,将解码的有色点云cpc发送到目的地;具体地,目的地属于包括以下的组:-本地存储器(1903或1904),例如,视频存储器或ram、闪存、硬盘;-存储接口(1905),例如,与大容量存储器、ram、闪存、rom、光盘或磁性支撑件的接口;-通信接口(1905),例如,有线接口(例如,总线接口(例如usb(或通用串行总线))、广域网接口、局域网接口、hdmi(高清多媒体接口)接口)或无线接口(诸如,ieee802.11接口,或接口);-呈现设备;和-显示器。根据编码码或编码器的示例,比特流f1-f2被发送到目的地。作为示例,比特流f1-f2中的至少一个存储在本地或远程存储器中,例如,视频存储器(1904)或ram(1904)、硬盘(1903)。在变型中,比特流f1-f2中的至少一个被发送到存储接口(1905)(例如,与大容量存储器、闪存、rom、光盘或磁性支撑件的接口),和/或通过通信接口(1905)(例如,到点对点链路、通信总线、点对多点链路或广播网络的接口)传输。根据解码或解码器的示例,从源获得比特流f1-f2中的至少一个。示例性地,从例如视频存储器(1904)、ram(1904)、rom(1903)、闪存(1903)或硬盘(1903)的本地存储器读取比特流。在变型中,比特流从存储接口(1905)(例如,与大容量存储器、ram、rom、闪存、光盘或磁性支撑件的接口)接收,和/或从通信接口(1905)(例如,到点对点链路、总线、点对多点链路或广播网络的接口)接收。根据示例,被配置为实现关于图1-图7描述的编码方法的设备1900属于包括以下的组:-移动设备;-具有3d捕获能力的智能电话或者电视机;-通信设备;-游戏设备;-平板(或平板计算机);-膝上型计算机;-静止图像相机;-摄像机;-编码芯片;-静止图像服务器;和-视频服务器(例如,广播服务器、视频点播服务器或网络服务器)。根据示例,被配置为实现关于图8描述的解码方法的设备1900属于包括以下的组:-移动设备;-头戴式显示器(hmd);-(混合现实)智能眼镜;-全息设备;-通信设备;-游戏设备;-机顶盒;-电视机;-平板(或平板计算机);-膝上型计算机;-显示器;-立体显示器,和-解码芯片。根据图20中所示的本原理的示例,在两个远程设备a和b之间通过通信网络net的传输上下文中,设备a包括与存储器ram和rom相关的处理器,其被配置为实现关于图1-图18描述的用于编码点云的方法,并且设备b包括与存储器ram和rom相关的处理器,其被配置为实现关于图20-图21描述的用于解码的方法。根据示例,网络是广播网络,适配为将来自设备a的编码的有色点云广播到包括设备b的解码设备。意图由设备a传输的信号承载比特流f1-f2中的至少一个。因此,该信号可以承载通过将输入点云ipc的点投影到基于八叉树的投影结构的面fi,j上而获得的至少一个深度图像dii,j以及可选的与每个深度图像相关联的纹理图像tii,j,还可以承载表示面以及可选地表示基于八叉树的投影结构的投影信息数据。该信号可以承载表示基于八叉树的结构io的第一八叉树信息数据foid。对于每个louk,该信号还可以承载与所述基于八叉树的结构io的叶节点相关联的第一叶节点信息数据flid,其指示是否已经为所述louk确定了局部基于八叉树的结构ok。该信号还可以承载表示局部基于八叉树的结构ok的第二八叉树信息数据soid以及第二叶节点信息数据slid,该第二叶节点信息数据slid指示所述局部基于八叉树的结构ok的叶立方体是否包括表示输入点云ipc的一部分的点。图21示出了当通过基于分组的传输协议来传输数据时这种信号的语法的示例。每个传输的分组p包括报头h和有效载荷payload。根据实施例,有效载荷payload可以包括以下元素中的至少一个:-表示一个纹理图像tii,j和一个深度图像dii,j的至少一个对的比特;-表示第一八叉树信息数据foid的至少一个二进制标志;-表示第二八叉树信息数据soid的至少一个二进制标志;-表示立方体分割的最大深度的至少一个比特;-表示第一叶节点信息数据flid的至少一个二进制标志;-表示第二叶节点信息数据slid的至少一个二进制标志;-表示编码图像i的比特。本文描述的各种处理和特征的实现方式可以体现在各种不同的设备或应用中。这样的设备的示例包括编码器、解码器、处理来自解码器的输出的后处理器、提供输入给编码器的预处理器、视频编码器、视频解码器、视频编解码器、网络服务器、机顶盒、膝上型计算机、个人计算机、蜂窝电话、pda、hmd、智能眼镜以及用于处理图像或视频的任何其他设备或其他通信设备。应该清楚的是,该设备可以是移动的,甚至可以安装在移动车辆中。另外,该方法可以由处理器执行的指令来实现,并且这样的指令(和/或由实现方式产生的数据值)可以存储在计算机可读存储介质上。计算机可读存储介质可以采取计算机可读程序产品的形式,该计算机可读程序产品体现在一个或多个计算机可读介质中并且具有可由计算机执行的体现在其上的计算机可读程序代码。本文使用的计算机可读存储介质被认为是非暂时性存储介质,其被给定在其中存储信息的固有能力以及提供从其中取得信息的固有能力。计算机可读存储介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、装置或设备,或者前述的任何合适的组合。要认识到,以下虽然提供本原理可以应用于的计算机可读存储介质的更具体示例,但仅仅是本领域普通技术人员容易理解的例示性而非详尽的列表:便携式计算机盘;硬盘;只读存储器(rom);可擦除可编程只读存储器(eprom或闪存);便携式压缩盘只读存储器(cd-rom);光存储设备;磁存储设备;或者前述的任何合适的组合。指令可以形成有形地体现在处理器可读介质上的应用程序。指令可以例如在硬件、固件,软件或其组合中。指令可以在例如操作系统、单独的应用或这两者的组合中找到。因此,处理器可以表征为例如被配置为执行处理的设备和包括具有用于实施处理的指令的处理器可读介质的设备(诸如,存储设备)两者。此外,除了指令之外或代替指令,处理器可读介质可以存储由实现方式产生的数据值。如对于本领域技术人员明显的,实现方式可以产生各种信号,这些信号被格式化以承载可以例如被存储或传输的信息。该信息可以包括例如用于执行方法的指令,或者由描述的实现方式之一产生的数据。例如,信号可以被格式化以承载用于写入或读取本原理的所描述示例的语法的规则作为数据,或者承载由本原理的所描述示例写入的实际语法值作为数据。这样的信号可以被格式化为例如电磁波(例如,使用频谱的射频部分)或者基带信号。格式化可以包括例如编码数据流和用编码的数据流调制载波。信号承载的信息可以是例如模拟或数字信息。如已知的,信号可以通过各种不同的有线或无线链路传输。信号可以存储在处理器可读介质上。已经描述了多个实现方式。然而,将理解,可以进行各种修改。例如,可以组合、补充、修改或移除不同实现方式的元素以产生其他实现方式。另外,普通技术人员将理解,其他结构和处理可以替代所公开的那些,并且所得到的实现方式将以与所公开的实现方式至少基本相同的(多个)方式执行与所公开的实现方式至少基本相同的(多个)功能,以实现与所公开的实现方式至少基本相同的(多个)结果。因此,本申请考虑这些和其他实现方式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1