表面获取方法、装置及非暂态电脑可读取记录媒体与流程

文档序号:18065081发布日期:2019-07-03 03:20阅读:165来源:国知局
表面获取方法、装置及非暂态电脑可读取记录媒体与流程

本发明是有关于表面获取技术,且特别是有关于一种表面获取方法、装置及非暂态电脑可读取记录媒体。



背景技术:

在现代,电脑视觉技术广泛地应用在许多领域中。举例而言,在虚拟现实(virtualreality,虚拟实境)或增强现实(augmentedreality,扩增实境)的领域中,电脑视觉技术可被使用在虚拟现实或增强现实的系统中,以辨识物件、真实世界的环境及/或场景。

三维模型重建在增强现实的领域中特别常被使用。在获取到环境中的深度信息后,深度值可用以在重建程序中获取等位表面(iso-surface,等值面),例如三维物体的边缘。然而,在执行表面获取程序时需要大量的深度数据,造成庞大的存储器使用量。

因此,如何设计一个新的表面获取方法、装置及非暂态电脑可读取记录媒体,以解决上述的缺失,乃为所属领域内亟待解决的问题。



技术实现要素:

本发明之目的在于提供表面获取(表面撷取)方法、装置及非暂态电脑可读取记录媒体,以节省存储器使用量,并取得更平顺的表面获取结果。

根据上述,本发明的一方案在于提供一种表面获取方法,其包含:(a)接收对应于场景的多个(复数个)三维子节点的原始输入深度数据,其中原始输入深度数据具有三维子节点中的多个第一三维子节点的多个位置信息及多个距离信息、以及仅具有三维子节点中的多个第二三维子节点的位置信息但不具有第二三维子节点的距离信息,且各距离信息为各第一三维子节点至场景中的物件的物件表面的距离值;(b)将邻接的三维子节点以群组区分为多个三维母节点,其中各三维母节点包含相同数目的三维子节点;(c)对三维母节点中的任一三维母节点,根据三维母节点中的第一三维子节点的距离信息,产生在三维母节点中对应于第二三维子节点的多个传播(propagated,推播)距离信息;以及(d)使三维母节点做为三维子节点,以执行步骤(b)至(d),直到三维母节点的数目相当于预设数目为止,进一步使相当于预设数目的三维母节点做为根节点(root),产生包含多个层的多个节点的节点树,并对节点树进行表面获取处理,以获取场景中的至少一表面。

于一实施例中,步骤(c)还包含对任一三维母节点产生曲度,且该表面获取方法还包含:(f)对节点树中的各层,在三维母节点的曲度小于预设值时,舍弃三维母节点包含的三维子节点;以及(g)根据双重移动方块(dualmarchingcube,双重移动立方体)算法,对节点树进行表面获取处理,以获取场景中的至少一表面。

于一实施例中,表面获取方法还包含:对于各三维母节点,根据所包含的三维子节点的法向量(normalvector)产生曲度。

于一实施例中,舍弃三维子节点的步骤还包含:对节点树的各层,判断是否为节点树的底层以及各层包含的节点的曲度是否小于预设值;当层并非底层且节点的曲度不小于预设值时,将节点分割为下一层的三维子节点;以及当层为底层或节点的曲度小于预设值时,不分割节点并使节点做为节点树的叶节点(leafnode)。

于一实施例中,进行表面获取处理的步骤还包含:将叶节点的多个节点中心相连,以形成多个单元;以及对这些单元以移动方块算法进行运算,以获取上述表面。

于一实施例中,在场景中的物件的表面的内部的第二三维节点的各传播距离信息为负值,在场景中的物件的表面的外部的第二三维节点的各传播距离信息为正值。

于一实施例中,对于节点树中的各层,各三维母节点包含形成方块(立方体)的八个三维子节点,且节点树为八叉树(octree)。

本发明的另一方案在于提供一种表面获取装置,其包含处理电路以及存储器。存储器电性耦接于处理电路,并配置以储存至少一程序,该程序配置以被处理电路执行,且该程序包含多个指令以执行三维模型重建方法。该三维模型重建方法包含:(a)接收对应于场景的多个三维子节点的原始输入深度数据,其中原始输入深度数据具有三维子节点中的多个第一三维子节点的多个位置信息及多个距离信息,以及仅具有三维子节点中的多个第二三维子节点的位置信息但不具有第二三维子节点的的距离信息,且各距离信息为各第一三维子节点至场景中的物件的物件表面的距离值;(b)将邻接的三维子节点以群组区分为多个三维母节点,其中各三维母节点包含相同数目的三维子节点;(c)对三维母节点中的任一三维母节点,根据三维母节点中的第一三维子节点的距离信息,产生在三维母节点中对应于第二三维子节点的多个传播距离信息;以及(d)使三维母节点做为三维子节点,以执行步骤(b)至(d),直到三维母节点的数目相当于预设数目为止,进一步使相当于预设数目的三维母节点做为根节点,产生包含多个层的多个节点的节点树,并对节点树进行表面获取处理,以获取场景中的至少一表面。

于一实施例中,步骤(c)还包含对任一三维母节点产生曲度,且表面获取方法还包含:(f)对节点树中的各层,在三维母节点的曲度小于预设值时,舍弃三维母节点包含的三维子节点;以及(g)根据双重移动方块算法,对节点树进行表面获取处理,以获取场景中的至少一表面。

本发明的又一方案在于提供一种非暂态电脑可读取记录媒体,用以储存包含多个指令的一个或多个电脑程序,当执行指令时,将致使处理电路执行表面获取方法,其包含:(a)接收对应于场景的多个三维子节点的原始输入深度数据,其中原始输入深度数据具有三维子节点中的多个第一三维子节点的多个位置信息及多个距离信息,以及仅具有三维子节点中的多个第二三维子节点的位置信息但不具有第二三维子节点的的距离信息,且各距离信息为各第一三维子节点至场景中的物件的物件表面的距离值;(b)将邻接的三维子节点以群组区分为多个三维母节点,其中各三维母节点包含相同数目的三维子节点;(c)对三维母节点中的任一三维母节点,根据三维母节点中的第一三维子节点的距离信息,产生在三维母节点中对应于第二三维子节点的多个传播距离信息;以及(d)使三维母节点做为三维子节点,以执行步骤(b)至(d),直到三维母节点的数目相当于预设数目为止,进一步使相当于预设数目的三维母节点做为根节点,产生包含多个层的多个节点的节点树,并对节点树进行表面获取处理,以获取场景中的至少一表面。

应用本发明的优点在于表面获取装置以及表面获取方法可在深度数据不连续时,借助传播(推播)深度数据来建立节点树,达到节省存储器使用量的功效,并使得双重移动方块算法得以应用,达到更平顺的表面获取结果。

附图说明

图1为根据本公开内容部分实施例所绘示的表面获取装置的方框示意图;

图2为根据本公开内容部分实施例所绘示的表面获取方法的流程图;

图3a至图3g为根据本公开内容部分实施例所绘示的表面获取方法在不同处理阶段的示意图;

图4为根据本公开内容部分实施例所绘示用以执行表面获取方法的步骤s8的子步骤的流程图;

图5a至图5d为根据本公开内容部分实施例所绘示对节点树执行的子节点舍弃程序的示意图;

图6a至图6c为根据本公开内容部分实施例所绘示的双重移动方块算法的处理程序的示意图。

附图标记列表

100:表面获取装置110:处理电路

120:存储器200:表面获取方法

30:物件300:三维子节点

310、320、330:三维母节点600:表面

p1:软件程序s1-s9:步骤

s81-s84:步骤

具体实施方式

以下将以附图及详细叙述清楚说明本公开内容的精神,任何所属技术领域中的一般技术人员在了解本公开内容的实施例后,当可由本公开内容所教示的技术,加以改变及修饰,其并不脱离本公开内容的精神与范围。下述说明中相同元件将以相同的附图标记(符号标示)来进行说明以便于理解。

请参照图1。图1为根据本公开内容部分实施例所绘示的表面获取装置100的方框示意图。表面获取装置100可配置以执行表面获取(表面撷取),其中表面获取装置100可被包含于三维模型重建装置(未绘示)中,且表面获取的结果可被应用于三维模型重建。

如图1所示,表面获取装置100包含处理电路110以及存储器120。一个或多个软件程序p1储存于存储器120中并用以被处理电路110执行,以进行表面获取。

在结构上,存储器120电性耦接于处理电路110。

在部分实施例中,处理电路110例如可用一个或多个处理器,例如中央处理器(centralprocessor)及/或微处理器(microprocessor)等处理器实现,但不以此为限。

在部分实施例中,存储器120可包括一或多个存储器装置,其中每一存储器装置或多个存储器装置的集合包括电脑可读取记录媒体。电脑可读取记录媒体可包括只读存储器、快闪存储器、软盘、硬盘、光盘、随身盘、磁带、可由网络存取的数据库、或所属领域技术人员可轻易构思到具有相同功能的电脑可读取记录媒体。

为了更佳地理解本公开内容,电子装置100的详细操作将搭配图2与图3a至图3g中所示实施例进行说明。图2为根据本公开内容部分实施例所绘示的表面获取方法200的流程图。图3a至图3g为根据本公开内容部分实施例所绘示的表面获取方法200在不同处理阶段的示意图。

值得注意的是,表面获取方法200可应用于相同或相似于图1中所示结构的表面获取装置100。为使叙述简单,以下将根据本公开内容部分实施例,以图1中的实施例为例进行对表面获取方法200的说明,然而本公开内容不以图1中的实施例的应用为限。

表面获取方法200包含下列操作步骤(应了解到,在本实施方式中所提及的步骤,除特别叙明其顺序的之外,均可依实际需要调整其前后顺序,甚至可同时或部分同时地执行)。

于步骤s1,接收对应于一个场景的多个三维子节点300的原始输入深度数据。

原始输入深度数据可由例如、但不限于深度摄像机(未绘示)取得,其中深度摄像机可获取一个场景中的至少一物件的影像数据以及深度数据。于一实施例中,在图3a范例性地以具有斜交线段的区域绘示一个物件30。

于图3b中,范例性地绘示出具有三维子节点300的原始深度数据。于一实施例中,原始深度数据实质上包含8×8×8个三维子节点300。然而,需注意的是,为便于讨论,在图3b中,仅绘示出在二维平面上排列的8×8个三维子节点300。

三维子节点300包含多个第一三维子节点,各绘示为点状区块。于一实施例中,第一三维子节点为有图3a的物件30的表面所经过的区域的节点。

原始深度数据具有第一三维子节点的位置信息及距离信息。第一三维子节点的位置信息可包含第一三维子节点在三维空间中的坐标。各个第一三维子节点的距离信息可为例如、但不限于各第一三维子节点的中心到物件30的表面的距离值。于一实施例中,当第一三维子节点的中心位于物件30内部,距离值将为负值。当第一三维子节点的中心位于物件30外部,距离值将为正值。

三维子节点300还包含多个第二三维子节点,个绘示为空白区块。于一实施例中,第二三维子节点为图3a的物件30的表面并未经过的区域的节点。

原始深度数据具有第二三维子节点的位置信息,但不具有第二三维子节点的距离信息。

由于仅有部分的三维子节点300具有距离的信息,而另一部分的三维子节点300则没有距离的信息,因此原始深度数据是不连续的。

于步骤s2,将邻接的三维子节点300(不论是第一或是第二三维子节点)以群组区分为多个三维母节点,例如图3c所示,以粗实线绘示为包含多个三维子节点的方块的三维母节点310。各三维母节点310包含相同数目的三维子节点300。

于一实施例中,邻接的三维子节点300被群组为一个方块,以形成三维母节点310。在一数值范例中,是将邻接的2×2×2个三维子节点300群组为一个三维母节点310。然而,如上所述,为了简化讨论,在图3中绘示为一个三维母节点310包含2×2个在二维平面上的三维子节点300。

于步骤s3,对三维母节点310中的任一三维母节点,根据此三维母节点310中的第一三维子节点的距离信息,产生在此三维母节点310中对应于第二三维子节点的多个传播距离信息。

在不同实施例中,可采用不同的方法产生第二三维子节点的传播距离(推播距离)。然而,在一实施例中,对于仅有包含第二三维子节点而完全没有第一三维子节点的三维母节点310,则不产生第二三维子节点的传播距离。因此,在图3d中,于步骤s3执行后,已产生传播距离的第二三维子节点被绘示为具有斜线的方块。而尚未产生传播距离的第二三维子节点则仍绘示为空白的方块。

于一实施例中,当第二三维子节点位于物件30的表面的内部时,所产生的传播距离信息为负值。当第二三维子节点位于物件30的表面的外部,所产生的传播距离信息为正值。

于步骤s4,对于各三维母节点310,产生三维母节点310的曲度。于一实施例中,步骤s4可与步骤s3同时进行。

于一实施例中,三维母节点310的曲度可根据三维子节点300的法向量产生。于一实施例中,法向量可以根据三维子节点300的距离计算出。

于一实施例中,当穿过三维母节点310的表面越平缓,曲度越小。而当穿过三维母节点310的表面越不平缓,曲度越大。

于本实施例中,对于图3d的十六个三维母节点310来说,多数的三维母节点310因为其曲度小于一个预设值,而被认为是平的,除了位于第一列以及第三行的三维母节点310以及位于第二列以及第三行的曲度,由于其对应的图3a的物件30的表面并不平缓,而并未小于此预设值。

于步骤s5,判断三维母节点的数目是否为一预设数目。

于一实施例中,预设数目是一。

因此,当三维母节点310的数目并不是一时,于步骤s6,将使三维母节点310做为三维子节点,以进一步执行步骤s2-s4。

因此,通过执行步骤s2,三维母节点310将做为子节点,并如图3e所示,被群组为多个三维母节点320。于一实施例中,四个三维母节点310将被群组为一个三维母节点320。

通过执行步骤s3,对于每个三维母节点320中尚未具有距离值的三维母节点310,将根据同一三维母节点320中其他具有距离值的三维母节点310,产生传播距离。因此,在步骤s3执行后,具有传播距离值的三维母节点310将绘示为具有斜线的方块。

通过执行步骤s4,对于各个三维母节点320,将根据所包含的三维母节点310的曲度产生对应的曲度。

在本实施例中,对于图3f所绘示的四个三维母节点320来说,多数三维母节点320由于其曲度小于预设值,因此可被视为平缓的。除了位于第一列以及第二行的三维母节点320,由于其对应包含的两个三维母节点310的曲度并不平缓,而并未小于此预设值。

通过执行步骤s5,三维母节点320的数目被判断为并不是预设数目。因此,于步骤s6,将使三维母节点310做为三维子节点,以进一步执行步骤s2-s4。

以及(d)使三维母节点做为三维子节点,以执行步骤(b)至(d),直到三维母节点的数目相当于预设数目为止,进一步使相当于预设数目的三维母节点做为根节点,产生包含多个层的多个节点的节点树,并对节点树进行表面获取处理,以获取场景中的至少一表面。

因此,通过执行步骤s2,三维母节点320将做为子节点,并如图3g所示,被群组为一个三维母节点330。于一实施例中,四个三维母节点320将被群组为一个三维母节点330。

接着,由于没有其他未具有距离值的母节点,因此步骤s3可略过。通过执行步骤s4,对于三维母节点330,将根据所包含的三维母节点320的曲度产生对应的曲度。

于本实施例中,对于图3g所绘示的三维母节点330来说,由于其包含的其中一个三维母节点320的曲度并不平缓,因此三维母节点330曲度并未小于此预设值。

通过执行步骤s5,三维母节点320的数目被判断为是预设数目,在本实施例中即为一。因此,于步骤s7,三维母节点330成为根节点,以产生包含多个层的多个节点的节点树。

在本实施例中,借助上述的流程所产生的节点树,具有位于第一层(最上层)且为根节点的三维母节点330。三维母节点330包含位于第二层的四个子节点,亦即三维母节点320。各个三维母节点320包含位于第三层的四个子节点,亦即三维母节点310。各个三维母节点310包含位于第四层(最底层)的四个子节点,亦即三维子节点300。

上述的节点树的结构仅为一范例。于一实施例中,节点树中除了最底层节点外的各个节点,均包含八个子节点,以使节点树成为八叉树(octree)。然而,本发明亦不限于此。更进一步地,用以判断三维母节点是否为根节点的预设数目亦可为大于一的数目。更详细的说,节点树的根节点可以依照实际需求,而具有大于一个的三维母节点。

于步骤s8,对节点树中的各层,在三维母节点的曲度小于预设值时,舍弃三维母节点包含的三维子节点。

请参照图4以及图5a至图5d。图4为根据本公开内容部分实施例所绘示用以执行表面获取方法200的步骤s8的子步骤的流程图。图5a至图5d为根据本公开内容部分实施例所绘示对节点树执行的子节点舍弃程序的示意图。

如图5a所示,对于节点树的第一层,仅有根节点(亦即三维母节点)330存在。

于步骤s81,判断此层是否为最底层。

由于第一层并非节点树的最底层,因此于步骤s82,判断三维母节点330的曲度是否不小于预设值。

于一实施例中,如上所述,三维母节点330的曲度并不小于预设值。

因此,于步骤s83,将三维母节点330分割为下一较低层的三维子节点,如图5b所示,亦即位于第二层的四个三维母节点320。

流程将回至步骤s81,进一步判断此层是否为最底层。由于现在处理的是第二层而非最底层,因此将执行步骤s82,判断三维母节点320的曲度是否小于预设值。

于一实施例中,如上所述,在四个三维母节点320中,仅有位于第一列以及第二行(在图5b标示为nf)的三维母节点320的曲度不小于预设值。而其他三个三维母节点320的曲度均小于预设值。

因此,对于三个曲度不小于预设值的三维母节点320来说,将执行步骤s84,以停止分割这三个三维母节点320,并使这三个三维母节点320做为节点树的叶节点(leafnode)。

对于具有不小于预设值的曲度的三维母节点320来说,将执行步骤s83,将三维母节点320分割为下一较低层的三维子节点,如图5c所示,亦即位于第三层的四个三维母节点310。

流程将回至步骤s81,进一步判断此层是否为最底层。由于现在处理的是第三层而非最底层,因此将执行步骤s82,判断三维母节点310的曲度是否小于预设值。

于一实施例中,如上所述,在四个三维母节点310中,有两个三维母节点310(在图5b标示为nf)的曲度不小于预设值。而其他两个三维母节点320的曲度均小于预设值。

因此,对于曲度小于预设值的三维母节点310来说,将执行步骤s84,以停止分割这两个三维母节点320,并使这两个三维母节点320做为节点树的叶节点。

对于具有不小于预设值的曲度的三维母节点310来说,将执行步骤s83,将三维母节点310分割为下一较低层的三维子节点,如图5d所示,亦即位于第四层的八个三维子节点300。

流程将回至步骤s81,进一步判断此层是否为最底层。由于现在处理的是第四层、亦即最底层,因此将执行步骤s84,以停止分割三维子节点300,并使三维子节点300做为节点树的叶节点。

因此,在经过图4的流程处理后,节点树中的各层的三维母节点包含的三维子节点在其曲度小于预设值时,将被舍弃。

接着,如图2所示,于步骤s9,根据一双重移动方块(dualmarchingcube)算法,对节点树进行表面获取处理,以获取场景中的至少一表面。

请参照图6a至图6c。图6a至图6c为根据本公开内容部分实施例所绘示的双重移动方块算法的处理程序的示意图。

于一实施例中,如图6a所示,节点树中的各叶节点的中心,亦即图5d中的三个三维母节点320、两个三维母节点310以及四个三维子节点300,将相连以形成多个单元,此些单元是以具有点状线条为边的区块绘示。接着,将对图6b所绘示的单元以移动方块算法进行运算,以获取如图6c绘示的表面600。

因此,本发明的表面获取装置100以及表面获取方法200,可在深度数据不连续时,借助传播深度数据来建立节点树,达到节省存储器使用量的功效,并使得双重移动方块算法得以应用,达到更平顺的表面获取结果。

需注意的是,在部分实施例中,表面获取方法200亦可实施为一电脑程序。当该电脑程序被一电脑、一电子装置,或图1中处理电路110所执行,此执行装置执行表面获取方法200。电脑程序可被储存于一非暂态电脑可读取记录媒体,例如一可读存储器、一快闪存储器、一软盘、一硬盘、一光盘、一快闪盘、一随身盘、一磁带、一可从网络读取的数据库,或任何本公开内容所属技术领域中的一般技术人员所能想到具有相同功能的记录媒体。

另外,应了解到,在所提及的表面获取方法200的操作步骤,除特别叙明其顺序的之外,均可依实际需要调整其前后顺序,甚至可同时或部分同时地执行。

再者,在本公开内容的不同实施例中,表面获取方法200中的这些操作步骤亦可适应性地增加、置换、及/或省略。

各种功能性元件和方块(模块)已于此公开。对于本技术领域的一般技术人员而言,功能方块(模块)可由电路(不论是专用电路,或是于一或多个处理器及编码指令控制下操作的通用电路)实现,其一般而言包含用以相应于此处描述的功能及操作对电气回路的操作进行控制的晶体管或其他电路元件。如将进一步理解地,一般而言电路元件的具体结构与互连,可由编译器(compiler),例如寄存器传输语言(registertransferlanguage,rtl)编译器决定。寄存器传输语言编译器对与汇编语言代码(assemblylanguagecode)相当相似的指令码(script)进行操作,将指令码编译为用于布局或制作最终电路的形式。确实地,寄存器传输语言以其促进电子和数码系统设计过程中的所扮演的角色和用途而为人熟知。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的原则之内所作的任何修改,等同替换和改进等均应包含本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1