用于对表面的几何表示的法线进行编码和/或解码的方法和装置与流程

文档序号:17534999发布日期:2019-04-29 13:53阅读:256来源:国知局
用于对表面的几何表示的法线进行编码和/或解码的方法和装置与流程

本申请于2017年3月31日提交的美国非临时专利申请no.15/475,639的继续部分并要求其优先权,所述申请于2016年10月19日提交的美国专利申请no.15/297,801的部分继续并要求其优先权,其两者的内容通过引用并入在本文中。

本公开总体上涉及一种表面的几何表示,并且更具体地,涉及一种用于对表面的几何表示进行编码和/或解码的法线的方法和装置。



背景技术:

真实或计算机生成的对象的表面能够通过几何形状(诸如三角形)来表示,所述几何形状形成表面的分段平面近似。几何形状共同地形成表面的几何表示。三角形能够通过三个顶点和法线来定义,所述法线是垂直于由三角形形成的平面的矢量。在一些示例中,法线能够处在顶点处。在一些实例中,插值用于确定跨越表面逐渐变化的法线。

法线还可以连附到点云中的点以提供阴影。



技术实现要素:

本文公开了用于对表面的几何表示的法线进行编码和/或解码的方法和装置。一种示例方法包括:接收多个点,所述多个点中的每个点表示所述表面的法线并且被布置在拼块内;在所述拼块内生成多个区域,所述多个区域中的每一个包括所述多个点中的点;检索所述多个点中的第一点和第二点,所述第一点表示所述表面的第一法线并且所述第二点表示所述表面的第二法线,所述第一点是处在指定基线区域的外部;对所述第一点执行点变换操作以产生所述基线区域的变换的第一点,并且对所述第二点执行所述点变换以产生变换的第二点;生成所述变换的第一点与所述变换的第二点之间的差以产生差值;以及对所述差值进行编码以产生编码差值。

附图说明

图1是图示根据本公开的教导的示例引擎的示意图。

图2a图示示例复合拼块和使用复合拼块的法线的示例编码。

图2b图示使用图2a的复合拼块的法线的另一示例编码。

图3图示具有用于限定图2a-图2b的示例复合拼块的表面的示例几何形状。

图4图示使用图2a-图2b的示例复合拼块的编码法线的示例解码。

图5是表示可以用于使用图2a-图2b的示例复合拼块来对法线进行编码的示例方法的流程图。

图6是表示可以用于使用图2a-图2b的示例复合拼块来对编码法线进行解码的示例方法的流程图。

图7a和图7b图示示例拼块组装以及使用图7a和图7b的拼块组装的法线的示例编码。

图7c图示使用图7a和图7b的示例拼块组装的法线的另一示例编码。

图8a、图8b和图8c图示使用图7a和图7b的示例拼块组装的编码法线的示例解码。

图9是表示可以用于使用图7a-图7b的示例拼块组装来对法线进行编码的示例方法的流程图。

图10是表示可以用于使用图7a-图7b的示例拼块组装来对编码法线进行解码的示例方法的流程图。

图11是示出可以使用本文中公开的示例方法来实现的示例压缩增益的表。

图12是图示根据本公开的教导执行对表面的几何表示的法线进行编码和/或解码的改进技术的示例电子环境的示意图。

图13a是图示在图12中所图示的电子环境内执行改进技术的示例方法的流程图。

图13b是表示可以用于在图12中所图示的电子环境内对法线进行编码的示例方法的流程图。

图14a是图示在图12中所图示的电子环境内执行改进技术的另一示例方法的流程图。

图14b是表示可以用于在图12中所图示的电子环境内对法线进行解码的示例方法的流程图。

图15a是图示从图3中所图示的几何形状导出的并且包含用于在图12中所图示的电子环境内对法线进行编码的预测和实际点的示例拼块的图。

图15b是图示在如图15a中所图示的法线的编码期间将预测点放置在内部区域内的示例反转操作的图。

图15c是图示将预测点放置在图15a-15b中所图示的拼块内的基线区域内的示例点变换操作的图。

图16a是图示从图3中所图示的几何形状导出并且包含用于在图12中所图示的电子环境内对法线进行解码的预测点的示例拼块的图。

图16b是图示在如图16a中所图示的法线的解码期间将预测点放置在内部区域内的示例反转操作的图。

图16c是图示将预测点放置在图16a-16b中所图示的拼块内的基线区域内的示例点变换操作的图。

图16d是图示对从图16c中的基线区域中的预测点导出的实际点的示例反点变换操作的图。

图16e是图示对图16c中的实际点的示例反转操作的图。

图17是示出可以使用本文中公开的示例方法来实现的示例压缩增益的另一表。

图18是可以用于实现本文中公开的示例的示例计算机设备和示例移动计算机设备的框图。

具体实施方式

现在将详细地参考本公开的非限定示例,其示例被图示在附图中。在下面通过参考附图来描述示例,其中相似的附图标记指代相似的元件。当示出相似的附图标记时,不重复对应的描述并且感兴趣的读者参考先前讨论的图以得到相似的元件的描述。

i.一般讨论

几何形状(例如,八面体)可以用于表示表面的法线。为了易于计算能够将几何形状变换成至少部分展平的形式。考虑八面体;能够通过切割一个尖端和毗连该尖端的四个边缘以低畸变方式来使它展平成正方形。展平形状将具有与八面体的未半切割部的四个表面相对应的四个内三角形(或面积、部分、区域等)s1-s4,以及与八面体的半切割部的四个表面相对应的四个外三角形sa-sd(例如,参见图7a)。因为已经切割了原始八面体共享边界,所以这种方法的缺点是在八面体被展平之后原始八面体的相邻表面(例如,sa和sb)上的一些点变得更远。这种距离上的增加对在八面体的切割部分中出现的点具有不公平地不利影响。此类不利影响减少了能够使用展平几何形状来实现的熵编码的量。

公开了使点之间的距离上的这种位置相关不公平性反转的示例复合拼块和拼块组装。本文中公开的示例能够确保一对点之间的距离不根据这些点所位于的地方。例如,它们是否在八面体的切割部或未切割部上?通过维持这些点之间的正确距离,能够在熵编码中获得超过可使用展平八面体实现的增加。这些增益伴随着由使用展平形式产生的计算且易于实现增益。

图1是具有处理器105、网络接口110、和多个组件115-119的示例引擎100的示意图。引擎100能够包括编码器116a和/或解码器116b。当引擎100包括编码器116a时,引擎100能够对表面的几何表示的法线进行编码。当引擎100附加地或可替选地包括解码器116b时,引擎100能够对表面的几何表示的编码法线进行解码。组件115-119中的一些或全部一起或相结合地可以通过由处理器105执行的机器可读指令来实现。

图1的示例处理器105能够以形式为被编程或者被配置为执行在存储器125中存储的机器可读指令的微控制器、中央处理单元(cpu)、asic、数字信号处理器(dsp)、fpga、图形处理单元(gpu)等。当指令被执行时,该指令使处理器105和/或组件115-119尤其控制引擎100以对表面的几何表示的法线进行编码和/或解码。在一些示例中,能够在引擎100中包括多于一个处理器105和/或多于一个存储器125。引擎100可以经由例如实现通信信号和/或协议(诸如通用串行总线(usb)等)的通信接口(i/f)110通信地耦合到其它设备(未示出)(例如,以交换表示法线和编码法线的数据)。

为了存储传入的数据和传出的数据,图1的示例引擎100包括任何数目和/或类型的缓冲器115。当用于压缩数据时,图1的示例引擎100包括执行例如霍夫曼(huffman)、算术等熵编码的任何数目和/或类型的编码器116a。当用于解压缩数据时,图1的示例引擎100包括执行例如霍夫曼、算术等熵解码的任何数目和/或类型的解码器116b。当引擎100用于压缩和解压缩数据时,编码器116a和解码器116b两者都被包括在引擎100中。

为了将数据点映射到一个或多个拼块,诸如在下面关于图2a、图7a和图7b所描述的那些拼块,示例引擎100包括点映射器117。为了确定一个或多个拼块上的至少点之间的距离,示例引擎100包括距离确定器118。为了确定一个或多个拼块上的点之间的一个或多个矢量,示例引擎100包括矢量化器119。

现在将参考图2a-图2b、图3、图4、图5、图6、图7a-图7c、图8a-图8c、图9和图10更详细地描述图1的示例引擎100。

首先转向图2a,示出了具有拼块b1-b5和拼块r1-r4的示例复合拼块200。拼块b1-b5将在本文中被称为基础拼块。拼块b2-b5是拼块b1的实例。基础拼块b1-b5具有从内左上部开始顺时针布置的内三角形区域s1、s2、s3和s4;以及从外左上部开始顺时针布置的外三角形区域sa、sb、sc、sd。在本文中描述的示例中,拼块r1-r4是旋转了180度的基础拼块的实例。拼块r1-r4将在本文中被称为旋转拼块。因此,旋转拼块r1-r4具有从内左上部开始顺时针布置的内三角形区域s3、s2、s1和s4;以及从外左上部开始顺时针布置的外三角形区域sc、sb、sa、sd。如所示,拼块b1-b5、r1-r4以周期性布置的方式进行铺块。基础拼块b1和旋转拼块r1被存储在拼块数据库130(参见图1)中。其它拼块是拼块b1和拼块r1中的相应拼块的实例。

在示例复合拼块200中,使用九个拼块,使得例如在八面体的切割尖端附近的点能够保持其的到附近表面上的点的短距离。例如,考虑基础拼块b1的左下部拐角中的点,它维持靠近旋转拼块r4的右下部拐角、基础拼块b5的右上部拐角、和旋转拼块r3的左上部拐角中的点。本文中描述的示例拼块具有以正方形布置的8个三角形区域。如果使用其它几何形状,则区域和/或拼块可以具有不同的形状,并且因此,可以改变必要的拼块的布置和数目。

法线可以被假定为被归一化,即,具有长度一。在一些实现方式中,法线可能未被归一化。假定法线具有单位长度,它们能够用单位球体的表面上的二个维度来表达。

图3图示单位球体305的示例。单位球体305上的点能够用两个值来表达。这两个值能够使用各种方法(诸如通过评估三角函数、圆的有理参数化等)来确定。另一方法能够包括将几何形状(例如,八面体310)内接(inscribing)到单位球体305中。从球体305的中心320起的矢量315限定法线n1的方向。矢量315与八面体310的表面相交的点p1表示法线n1。对于每条法线,球体305的中心320在逻辑上被放置在法线n1的原点处,然后用于确定表示法线n1与八面体310的交点的两个值。尽管未示出,然而可以使用其它几何形状。一般而言,示例性形状提供用于易于将球体305上的点映射(例如,低计算复杂度)到形状上的点,并且将形状上的点映射到形状的变换表示上的点,所述形状的变换表示方便如本文中所公开的铺块和/或变换(例如,反转)。本文中公开的八面体形状仅仅是具有这些性质的形状的一个示例。可以使用任何方法、算法、逻辑、电路等来将单位球体305上的点映射到形状的变换表示上的点。

能够用具有很少畸变的单位正方形使八面体310的表面参数化。图3中所示的八面体310具有8个表面s1-s4和sa-sd。表面s1-s4表示八面体310的上半部分,并且表面sa-sd表示八面体310的下半部分。

能够将八面体310的表面s1-s4、sa-sd在数学上重新布置成至少部分平面的表面。在概念上,八面体310能够在其下尖端330处并沿着其下边缘(其中的一个在附图标记335处被标识)被切开,然后形成基部拼块b1的边界。还参照图2a,基础拼块b1表示平面单位正方形,其中基础拼块b1的每个三角形s1至s4和sa至sd表示八面体310的对应的表面s1至s4和sa至sd。在图2a和图3的示例中,内三角形s1-s4与八面体310的上表面s1-s4相对应并且外三角形sa-sd与八面体310的下表面sa-sd相对应。然而,该规定方式可能是相反的。例如,内三角形可能与下表面相对应,并且外三角形能与上表面相对应。在一些实现方式中,这些三角形能够被称为拼块的部分。在一些示例中,这些三角形能够被称为拼块的区域。

ii.周期性拼块

图2a的拼块布置的益处是例如拼块b1中的三角形sb中的第一点可以比与拼块b1中的三角形sa中的第二点相对应的第三点更靠近拼块r4中的三角形sa中的第二点。因此,由于拼块r4紧挨着拼块b1的布置,拼块b1中的三角形sb中的第一点与拼块r4中的三角形sa中的第二点之间的第一矢量比拼块b1中的三角形sb中的第一点与拼块b1中的三角形sa中的第三点之间的第二矢量更短。因此,能够选择并使用拼块r4中的三角形sa中的最靠近拼块b1中的三角形sb中的第一点的第二点。在没有其它拼块的情况下仅使用基础拼块b1导致下三角形sa-sd在矢量在下三角形sa-sd之间交叉时受到不利的影响。因为下三角形sa-sd现在与相邻拼块中的下三角形sa-sd相邻,所以使用图2a的示例复合拼块200使得下三角形sa-sd能够被与上三角形s1-s4同等地对待。

在一些示例中,预测点p以及预测点p与法线相交八面体310的实际点q之间的差矢量用于表示法线。在一些示例中,点p和q由引擎100经由通信接口110接收。在一些示例中,预测器120确定点p。可以使用任何数目和/或类型算法、电路、处理器等来确定点p。例如,最近点q能够被用作用于下一个法线矢量的点p、使用过去的点q来预测用于下一个法线矢量的点p(例如,用于平滑地变化的表面)、表面的解码几何法线、相邻表面的平均法线等。点p可知编码器和从编码器接收编码数据的解码器两者。

参考图2a,点映射器117将预测点p映射到基础拼块b1中的三角形sb中,并且将实际点q映射到拼块b1-b5、r1-r4中的每一个拼块的三角形s2中作为点q’。这些点q’与实际点q相对应,但是处在具有不同定向的拼块中。不同拼块中的点在它们位于它们相应的拼块中的相同位置处的条件下被说成相对应。例如,在图2a中,点q’全部在大约几乎沿着与三角形sb的共享线的三角形s2中,并且全部表示相同的法线。

点p、p’、q和q’的坐标可以被量化(例如,使用固定点数来表示),或者可以是非量化的(例如,使用浮点数来表示)。在一些示例中,点p和q的坐标作为固定点数被接收。在一些示例中,点p和q的坐标作为浮点数被接收并且在确定法向矢量期间被量化。

距离确定器118确定从预测点p到点q’中的每一个q’的距离。距离确定器118识别具有到预测点p的最短距离的点q’。在图2a的示例中,最靠近预测点p的点q’是基础拼块b1的三角形s2中的点q’。因此,基础拼块b1的三角形s2中的点q’被选择为要用于确定差矢量205的点q。在一些示例中,不考虑拼块b2-b5、r1-r4的外部分。

矢量化器119确定点p和所选点q之间的差矢量205。矢量化器119确定表达差矢量205的两个参数(例如,x和y)。如同p、p’、q和q’点,表示差矢量205的参数(例如,x和y)可以是量化数或非量化数。实际上,参数x和y表示差矢量205的近似值。近似值能够根据用于表示p、q、x和y的数学精度是或多或少准确的。在一些实例中,参数x和y可以准确地表示差矢量205。矢量化器119将参数存储在缓冲器115中。每隔一段时间,缓冲器115的传出内容是由编码器116a进行的熵编译(例如,压缩),以减少表示对缓冲器115中存储的差矢量参数需要的比特的数目。当缓冲器115存储更经常(例如,按高频率)重复的值时,熵编码器116a能够提供更多的压缩。因为这导致小坐标值的较高概率重复,所以这就是为什么以较短的差矢量为目标是有利。在图2b中所示的另一示例中,点映射器117将预测点p映射到基础拼块b1的三角形s3中,并且将实际点q映射到拼块b1-b5和r1-r4的三角形sb中作为点q’。距离确定器118确定从预测点p到这些点q’中的每一个点q’的距离,并且识别具有到预测点p的最短距离的点q’。在图2b的示例中,最靠近预测点p的点q’被包括在旋转拼块r3中。点q’被选择为要用于确定差矢量210的点q。矢量化器119确定点p与所选点q之间的差矢量205。矢量化器119确定表达差矢量205的两个参数(例如,x和y)。矢量化器119将参数存储在缓冲器115中。每隔一段时间,缓冲器115的传出内容由编码器116a进行熵编码(例如,压缩),以减少表示在缓冲器115中存储的差矢量参数的比特数。

转到图4,示出了图2b的示例法线的示例解码。预测点p值和编码差矢量被存储在缓冲器115中。每隔一段时间,缓冲器115中的编码差矢量由解码器116b进行熵解码(例如,解压缩),以获得差矢量。对于点p和解码差矢量(例如,图2b的点p和差矢量210),点映射器117将预测点p映射到基础拼块b1的三角形s3。矢量化器119使用差矢量210和预测点p来确定点q’。如果点q’被设置在基础拼块b1中,则点q’被视为解码实际点q。如果点q’被设置在基础拼块b1外部,如图4中所示,则在基础拼块b1的三角形sb中与点q’相对应的点q被选择为解码点q。可以将解码点q输出和/或存储在缓冲区115中。实际上,解码点q表示编码法线矢量的原始点q的近似值。该近似值能够根据用于表示差矢量210和点p的数学精度而是或多或少准确的。在一些实例中,能够准确地恢复点q。

图5是可以被执行以使用图2a的示例复合拼块200来对法线进行编码的示例方法的流程图。该示例方法可以由图1的示例引擎100来实现和/或被实现为由一个或多个处理器(诸如示例处理器105(图1)及p00和p50(图12))执行的机器可读指令。

图5的示例方法包括经由例如通信接口110来获得用于法线的预测点p和实际点q(块505)。点映射器117将预测点p映射到基础拼块b1,并且将实际点q映射到拼块b1-b5和r1-r4中的每一个拼块中的点q’(块510)。距离确定器118计算点p与这些点q’中的每一个点q’之间的距离(块515)。距离确定器118选择具有最短距离的点q’作为点q(520)。矢量化器119确定点p与所选择的点q之间的差矢量(块525)。差矢量被放置在缓冲器115中用于后续编译(例如,压缩)(块530)。当所有法线已经被处理时(块535),缓冲器的内容由编码器116a熵编码(块540),并且控制从图5的示例方法退出。

图6是可以被执行来使用图2a的示例复合拼块200来对法线进行解码的示例方法的流程图。该示例方法可以作为由一个或多个处理器(诸如示例处理器105(图1)及p00和p50(图12))执行的机器可读指令被实现。

图6的示例方法包括解码器116b对差矢量的缓冲器115进行解码(块605)。从缓冲器中提取差矢量和预测点p(块610)。矢量化器119使用点p和差矢量来确定点q’(块615)。如果点映射器117确定点q’被设置在基础拼块b1中(块620),则点q’被选择为所解码的点q(块625)。如果点映射器117确定点q’被设置在基础拼块b1的外部(块620),则点q’被映射到基础拼块b1中的相对应的点q(块630)。经由通信接口110输出点q(块635)。当所有法线已经被处理时(块640),控制从图6的示例方法退出。

iii.上下文有关的反转的拼块铺块

图7a-7c图示对法线进行编码的另一示例方法。认识到被设置在八面体的半切割部上的点受到不利的影响,图7a-7c示出具有两个拼块的示例铺块组装,每个拼块是彼此的反转版本。简要地,当点被设置在八面体的未半切割部上时,使用第一拼块,该点被设置在第一拼块的内三角形上。当点被设置在八面体的半切割部上时,使用从第一拼块反转的第二拼块。因此,此后者点位于第二拼块的内三角形上,并且将不会由于落在八面体的半切割部上而受到不利的影响。根据预测点落在八面体上的地方,使用那个拼块来对点进行编码。能够使用相同的法线拼块、反转的拼块对来对图7b和7c的编码法线进行解码。在此示例中仅需要一对拼块,因为仅存在考虑的八面体的两个半部。对于其它几何形状,可以改变拼块的数目和/或其组成部分。

图7a-7c的示例使用一组拼块,例如,一对拼块b1和i。拼块b1与图2a的基础拼块b1相同。拼块i是拼块b1的反转版本。反转的拼块i是通过沿着其共享对角线705镜像相对应的内部和外三角形(例如,三角形s1和三角形sa)来形成的。也就是说,在拼块b1中,八面体的未半切割部的表面s1至s4用于形成正方形的内三角形区域,并且八面体的半切割部的表面sa至sd用于形成外三角形区域。在图7b中,切割八面体的相对端部。在拼块i1中,八面体的半切割部的表面s1至s4用于形成正方形的外三角形区域,并且八面体的未半切割部的表面sa至sd用于形成内三角形区域。拼块b1和拼块i可以被存储在拼块数据库130中。

使用预测点p和实际点q,点映射器114确定预测点p是否被设置在拼块b1的外三角形sa-sd中的一个三角形中。如果如图7a中所示,点p被设置在拼块b1的外三角形sd中,则点映射器114将点p映射到反转的拼块i中的相对应点的p’,并且将点q映射到反转的拼块i中的相对应点的q’,如图7b中所示。矢量化器119确定点p’与点q’之间的差矢量,并且将该差矢量存储在缓冲器115中。图7c示出点p被设置在基础拼块b1的内三角s4中的另一示例,并且因此,矢量化器119确定基础拼块b1内的点p和点q之间的差矢量。如上面所讨论的,可以量化点p和q,并且/或者差矢量可以是近似值。点p可以由预测器120确定。

图8a-8c图示用于图7a和图7b的示例编码的示例解码。如同图7a-7c的示例,图8a-8c的示例解码选取起始拼块,使得预测点p被设置在起始拼块的内三角形中。解码从起始拼块继续进行。

如图8a中所示,预测点p被设置在基础拼块b1的外三角形sd中。因此,如图8b中所示,点映射器114将点p映射到反转的拼块i中的对应点p’。矢量化器119使用差矢量来确定实际点q’,如图8b中所示。因为预测点p被设置在基础拼块t1的外三角形sd中,所以点q’被映射到其在基础拼块b1中的相对应点的q,如图8c中所示。如上面所讨论的,解码点q可以是原始点q的近似值。

图9是可以被执行来使用示例拼块b1(参见图7a)和反转的拼块i(参见图7b)来对法线进行编码的示例方法的流程图。示例方法可以例如作为由一个或多个处理器(诸如示例处理器105(图1)及p00和p50(图12))执行的机器可读指令被实现。

图9的示例方法包括经由通信接口110获得预测点p和实际点q(块905)。如果点映射器117确定点p在基础拼块b1的外三角形中(块910),则点映射器117将点p映射到反转的拼块i中的相对应的点p’并且将点q映射到反转的拼块i中的相对应点q’(块915)。矢量化器119确定点p’与点q’之间的差矢量(块920)。

返回到块910,如果点映射器117确定点p在基础拼块b1的内三角形中(块910),则矢量化器119确定点p与点q之间的差矢量(块920)。差矢量被存储在缓冲器115中。当已经处理了所有法线时(块930),编码器116对缓冲器的内容进行熵编码(块935),并且控制从图9的示例过程退出。

图10是可以被执行来使用示例基础拼块b1(参见图7a)和反转的拼块i(参见图7b)来对法线进行解码的另一示例方法的流程图。示例方法可以例如作为由一个或多个处理器(诸如示例处理器105(图1)及p00和p50(图12))执行的机器可读指令被实现。

图10的示例方法包括解码器116b对编码差矢量的缓冲器115进行解码(块1005)。对于预测点p和差矢量(块1010),如果点映射器117确定点p在基础拼块b1的内三角形中(块1015),则矢量化器119确定点q是基于点p和差矢量(块1020)的,并且经由通信接口110输出点q(块1025)。

返回到块1015,如果点映射器117确定点p在基础拼块b1的外三角形中(块1015),则点映射器117将点p映射到反转的拼块i中的相对应的点p’(块1030)。矢量化器119基于点p’和差矢量确定点q’(块1035),并且经由通信接口110输出点q(块1025)。

当所有法线已经被处理时(块1045),控制从图10的示例过程退出。

图11是示出可以使用本文中公开的示例方法来获得的示例压缩增益的表。图11的表比较四种压缩方法:本原校正编码、本原校正编码、图2a、图2b、图4、图5和图6的周期性铺块以及图7a-图7c、图8a-图8c、图9和图10的反转的铺块。该表示出了针对如下三个模型的四种方法的压缩性能:standfordbunny、buddha和boston超大(xl)模型。在此比较中,用于法线的实际点q被用作用于下一条法线的预测点p。该表示出了由法线占用的字节的数目。该表还针对三个模型中的每一个示出通过这些方法中的每一种方法产生的字节数的百分比(%)的减少。如所示,根据表面特性,本文中公开的方法在压缩方面提供约4%至5%的有意义的改进。例如,bunny和buddha图像具有更多的表面方向变化,而bostonxl图像在相同方向上具有更多的法线。

iv.变换到基线区域

如先前所描述的,可以执行反转步骤以降低增量编码方案中的熵。在编码步骤中,如果第一点p(参见例如图7a-图7c)位于外三角形中,则执行反转步骤以切换内三角形和外三角形。也就是说,反转是从外三角形中的第一预测点p到内三角中的新点p’的映射。然后第二实际点q被映射到变换的第二点q’,并且将差q’-p’进行熵编码。如果增量编码要被认为是令人满意的,则该差应当很小。然而,在一些情况下,增量编码不好并且差的范围可能很大。这导致较高的熵编码,从而减小压缩速率。

将法线编码到表面的改进技术涉及执行变换以将在拼块内表示表面的法线的点移动到拼块的指定基线区域。沿着这些线,拼块中的点的量化集合能够表示用于表面的法线。可以将这些拼块中的点映射到在单位球体中内接的实体,例如正八面体。在八面体的情况下,拼块的区域是内三角形或外三角形。基线区域将是特定内三角形。对于最初在外三角形中的点,像先前所描述的那样执行反转操作以将点移动到相对应的内三角形中能够能是有利的。旋转被应用于该点以将点(即,预测点)移动到基线区域(例如,左下部内三角形)中,并且相同的旋转被应用于附近的另一点(即,实际点)。改进技术的优点能够是所有量化的(例如,长的)实际点具有正分量值。这显著地减小校正分量值的可能范围,这进而减小对差进行编码的熵。

拼块的基线区域是过变换向其通移动每对点的第一点的区域。例如,对于其中八面体向其面映射的展平拼块的区域可以包括四个外三角形和四个内三角形的八面体编码,基线区域可以是内左下部三角形。在其它实现方式中,可以将不同的内三角形指定为基线区域。

图12是图示可以实现其中上述改进技术的示例电子环境1200的图。如图12中所示,电子环境1200包括压缩计算机1220。

压缩计算机1220被配置为存储与三维对象的表面的法线有关的信息,执行压缩操作以减少存储信息的负担,并且执行解压缩操作以恢复信息。具体地,压缩计算机1220被配置为执行变换以在该拼块的指定基线区域内布置点,以便减小要为了压缩而进行增量编码的连续点之间的差的可能范围。

压缩计算机1220包括网络接口1222、一个或多个处理单元1224和存储器1226。网络接口1222包括例如以太网适配器、令牌环适配器等,以用于将从网络接收到的电子信号和/或光学信号转换为供由点云压缩计算机1220使用的电子形式。该组处理单元1224包括一个或多个处理芯片和/或组装件。存储器1226包括易失性存储器(例如,ram)和非易失性存储器两者,诸如一个或多个rom、磁盘驱动器、固态驱动器等。该组处理单元1224和存储器1226一起形成控制电路,所述控制电路被配置和布置为执行如本文中所描述的各种方法和功能。

在一些实施例中,压缩计算机1220的组件中的一个或多个能够是或者能够包括被配置为处理在存储器1226中存储的指令的处理器(例如,处理单元1224)。如图1中所描绘的此类指令的示例包括点变换管理器1250、差管理器1260、编码管理器1270、解码管理器1280、和预测管理器1290。另外,如图1中所图示的,存储器1226被配置为存储各种数据,将相对于使用此类数据的相应的管理器对此进行描述。

点变换管理器1250被配置为将对拼块的点的变换应用于拼块的基线区域,以产生变换的点数据1252。例如,在法线的八面体编码的情况下,该变换可以采取在拼块内旋转或点绕拼块的对称轴反射的形式。在一些布置中,旋转根据点在拼块中的位置可以是90度、180度或270度。

在先前描述的法线的八面体编码的情况下的一些布置中,预测点p可以是在外三角形中。在那种情况下,然后点变换管理器1250还被配置为执行将该预测点p映射到内三角形中的点p’的反转操作,类似于如先前所描述的点映射器117。

点变换管理器1250像对预测点执行的那样对实际点执行同一组变换。因此,如果存在对预测点执行的反转,则也将存在实际点的反转。点变换管理器1250还将相同的旋转应用于作为预测点的实际点。

差管理器1260被配置为在如上面关于点变换管理器1250所描述的变换之后产生预测点与实际点之间的差数据1262,类似于如先前所描述的矢量化器119。对于拼块中的点,即点数据1234,差数据1262中的每一个均具有两个分量。然后可以将每个分量表达为具有指定比特数(例如,8个比特)的长整数。由于由点变换管理器1250执行的变换,这些分量中的每一个的值的范围在最坏的情况下是在没有任何变换的情况下实现的范围的一半。

编码管理器1270被配置为对差数据1262进行编码以产生编码差数据1272,类似于如先前所描述的编码器116a。在一些布置中,编码管理器1270使用诸如例如算术编译或霍夫曼编译的熵编码器来执行差数据1262的编码。理想地,在差数据1262中存在尽能够能少的变化,使得编码差数据1272具有小熵。

解码管理器1280被配置为对编码差数据1272进行解码以产生解码差数据1282,类似于如先前所描述的解码器116b。

预测管理器1290被配置为生成被指示为p的预测点1292。可以使用任何数目和/或类型的算法、方法、电路、处理器等来生成点p。例如,最近实际点q可能被用作用于下一个法线矢量的预测点p。在其它示例中,其它先前的实际点q、表面的解码几何法线、相邻表面的平均法线等可以用于预测用于下一个法线矢量的点p(例如,用于平滑变化表面)。

图13a是图示对表面的法线进行编码的示例方法1300的流程图。方法1300可以通过连同图1一起所描述的软件构造来执行,所述软件构造驻留在压缩计算机1220的存储器1226中并且由该组处理单元1224运行。

在1302处,压缩计算机1220检索多个点。所述多个点中的每一个点表示表面的法线并且被布置在拼块中。所述多个点位于网格上,该网格的间距通过这些点的分量的比特长度来确定。通常,比特长度是8,但是长度能够更短或更长。

在1304处,压缩计算机1220生成拼块内的多个点。多个区域中的每一个区域包括所述多个点中的点。在表面的法线的八面体编码的情况下,存在八个三角形区域:与八面体的上半部相对应的四个内三角形和与八面体的底部相对应的四个外三角形。

在1306处,压缩计算机1220经由预测管理器1290生成表示表面的预测法线的预测点p。预测点p的生成可以是根据指定启发法,例如,从八面体的面到拼块中的三角形的映射。预测点可以在指定基线区域外部。通常,预测点p在解码过程期间近似表面的法线的实际位置。当按照连续点之间的差小的顺序布置法线时,这种预测是准确的。

在1308处,压缩计算机1220检索实际点q,该实际点属于多个点。

在1310处,压缩计算机1220对第一点执行点变换操作以在基线区域内产生变换的第一点。压缩计算机1220然后对第二点执行点变换以在拼块内产生变换的第二点。如上面所讨论的,在八面体编码表面的法线的情况下,当第一点在内三角形中时,那么点变换包括90度、180度或270度的旋转。当第一点在外三角形中时,那么点变换操作还包括在旋转之前将预测点放置在内三角形中的反转操作。如果反转操作将第一点放置在基线区域中,则不需要旋转。还对第二点执行对第一点执行的所有操作。

在1312处,压缩计算机1220生成所变换的第一点与所变换的第二点之间的差,以产生多个差值中的一差值。

在1314处,压缩计算机1220对多个差值进行编码以产生编码差值。例如,可以使用诸如算术编译或霍夫曼编译的熵编码技术来对多个差值的分量进行编码。

图13b是可以被执行以对法线进行编码的示例方法1320的流程图。示例方法可以例如作为由一个或多个处理器(诸如示例处理单元1224(图12)及p00和p50(图16))执行的机器可读指令被实现。

图13b的方法1320包括生成预测点p并检索实际点q(块1325)。如果点变换管理器1250确定点p是处在拼块的外三角形中(块1330),则点变换管理器1250将点p映射到反转的拼块中的相对应点p’并且将点q映射到反转的拼块中的相对应点q’(块1335)。如果点p’不是处在反转的拼块中的基线三角形中(块1340),则点变换管理器1250使点p’旋转到基线区域中的新点p”(块1345)。点变换管理器1250对点q’执行相同的旋转以产生点q”(块1345)。差管理器1260确定点p”与点q”之间的差(块1350)。

返回到块1330,如果点变换管理器1250确定点p是处在基础拼块的基线内三角形中(块1330),则差管理器1260确定点p与点q之间的差矢量(块1350)。差矢量被存储在存储器1226中的差数据1262内。当所有法线已经被处理时(块1360),编码管理器1270对缓冲器的内容进行熵编码(块1365),并且控制从图13b的示例过程退出。

图14a是图示对表面的法线进行解码的示例方法1400的流程图。方法1400可以通过连同图1一起所描述的软件构造来执行,所述软件构造驻留在压缩计算机1220的存储器1226中并且由该组处理单元1224运行。

在1402处,压缩计算机1220对编码差值进行解码以产生多个差值。根据在图13a中的1314处使用的编码技术来执行解码。

在1404处,压缩计算机1220从预测管理器1290(图12)获得多个点中的第一点。如上所述,预测操作可以涉及到使用先前的实际点。

在1406处,压缩计算机1220对第一点执行点变换操作以产生基线区域的变换的第一点。在一些实现方式中,点变换管理器1250使第一点旋转到基线区域中。如果第一点处在外三角形中,则点变换管理器1250执行反转操作以在旋转之前将第一点移动到相应的内三角形。

在1408处,压缩计算机1220将多个差值中的一个差值添加到所变换的第一点,以产生变换的第二点。

在1410处,压缩计算机1220对所变换的第二点执行点变换的反转以产生第二点。第二点产生表面的法线。

图14b是可以被执行以对法线进行解码的示例方法1415的流程图。示例方法可以例如作为由一个或多个处理器(诸如示例处理单元1224(图12)及p00和p50(图18))执行的机器可读指令被实现。

图14b的示例方法1415包括解码管理器1280对编码差矢量的缓冲器进行解码(块1420)。对于预测点p和差矢量(块1425),如果点变换管理器1250确定点p是处在拼块的内三角形中(块1430),并且如果点p不是处在基线三角形中(块1460),则点变换管理器1250使点p旋转到基线区域中(1465)并且基于该点p和差矢量确定点q’(块1470),并且在对q’应用反转时(块1475),输出点q(块1480)。

返回到块1430,如果点变换管理器1250确定点p是处在拼块的外三角形中(块1430),则点变换管理器1250将点p映射到反转的拼块中的相对应的点p’(块1435)。差管理器1460使点p’旋转到基线区域中(1445),基于该点p’和差矢量确定点q’(块1450),对点q’执行反转,以产生点q(块1455),并且输出点q(块1480)。注意的是,在这种情况下,反转包括另一反转。

当所有法线已经被处理时(块1485),控制从图14b的示例过程退出。

图15a-15c图示根据改进技术对法线进行编码的示例方法。图15a-15c示出包括反转操作以及旋转操作的示例点变换操作。如图15a-15c中所图示的,区域的标签已随着每个变换而进行改变。简要地,当点被设置在八面体的未半切割部上时,使用第一拼块,该点被设置在第一拼块的内三角形上。当点被设置在八面体的半切割部上时,该点在反转中被移位到相对于上三角形与下三角形之间的边界对称的内三角形。在一些实现方式中,可以考虑将点放置在从原始拼块反转的新拼块中。在这种情况下,可以说的是,对于每个八面体存在一对拼块。对于其它几何形状,可以改变拼块的数目和/或其组成部分。

图15a图示拼块中的第一点p和第二点q。该拼块具有标记为sa、sb、sc和sd的四个外三角形以及标记为s1、s2、s3和s4的四个内三角形。第一点p是处在外三角形sa中并且第二点是处q在内三角形s2中。

图15b图示在反转操作由点变换管理器1250(图12)执行之后的第一点p和第二点q。在这种情况下,第一点p跨越使三角形sa和s1分离的线被反射,以产生反转第一点p’。因此,第二点q也被反射,但是跨越使三角形sb和s2分离的线,以产生反转第二点q’。为了跟踪此反转操作,用标记为sa’、sb’、sc’和sd’的内三角形以及用标记为s1’、s2’、s3’和s4’的外三角形重新标记铺块后反转的区域。经反转的第一点p’是处在三角形sa’中并且经反转的第二点q’是处在三角形s2’中。

另外,图15b还将基线区域(这里为sd’)图示为左下部内三角形。如图15b以及图15c中所图示的,此基线区域被阴影以将它与其它三角形区分开。

图15c图示在将第一点放置在基线区域中的相应的旋转操作之后的第一点和第二点。在这种情况下,点变换管理器1250使第一反转点p’旋转了90度的角度以产生变换的第一点p”。点变换管理器1250还将相同的90度旋转应用于第二反转点q’以产生第二变换点q”。为了跟踪这种旋转操作,用相应的内三角形sb”、sc”、sd”和sa”以及外三角形s2”、s3”、s4”和s1”重新标记拼块后旋转的区域。注意的是,变换的第一点p”是处在现在为sa”的基线区域中,并且变换的第二点q”是处在三角形s2”中。

差管理器1260(图12)例如针对每个分量计算差q”-p”。编码管理器1270然后使用熵编码方案来对此差进行编码。由于p”在左下部内三角形sa”中的事实,可能的差的范围是在没有像图15c中所图示的那样执行的旋转情况下的范围的一半。

图16a-16e图示根据所改进的技术对法线进行解码的示例方法。为了解码,压缩计算机1220检索(或者生成)预测点p和差。该差是从存储在存储器1226(图12)中的熵编码差解码的。

图16a图示拼块中的预测点p。在这种情况下,预测点p是处在外三角形sb中。区域的标签与图15a中所图示的拼块中的那些标签相同。

图16b图示在反转操作由点变换管理器1250(图12)执行以产生经反转的预测点p’之后的预测点p。为了跟踪此反转操作,用标记为sa’、sb’、sc’和sd’的内三角形并且用标记为s1’、s2’、s3’和s4’的外三角形重新标记铺块后反转的区域。经反转的预测点p’是处在三角形sb’中。

图16c图示在将预测点放置在基线区域中的相应的旋转操作之后的预测点。在这种情况下,点变换管理器1250使经反转的预测点p’旋转了180度的角度以产生变换的预测点p”。为了跟踪此旋转操作,用相应的内三角形sc”、sd”、sa”和sb”以及外三角形s3”、s4”、s1”和s2”重新标记拼块后旋转的区域。注意的是,经变换的预测点p”是处在现在为sb”的基线区域中。

另外,图16c还图示通过将差添加到经变换的预测点p”来生成的变换实际点q”。在图15c中,变换实际点q”是处在外三角形s3”中。

图16d图示对经变换的实际点q”的旋转操作的反操作,以在外三角形s3’中产生反转实际点q’。

图16e图示对经反转的实际点q’的反转操作,以在内三角形s3中产生实际点q。正是此实际点q表示表面的法线。

图17是示出可以使用本文中公开的示例方法来获得的示例压缩增益的表。图17的表比较四种压缩方法:本原校正编码、图2a、图2b、图4、图5和图6的周期性铺块、图7a-c、图8a-c、图9和图10的反转的铺块以及图13a-b、图14a-b、图15a-c和图16a-e的基线反转的铺块。该表示出了针对以下三个模型的四种方法的压缩性能:standfordbunny、buddha和boston超大(xl)模型。在此比较中,用于法线的实际点q被用作用于下一个法线的预测点p。该表示出了由法线占用的字节的数目。该表还针对这三个模型中的每一个模型示出通过这些方法中每一种方法产生的字节数的百分比(%)的减少。如所示,根据表面特性,本文中公开的方法在压缩方面提供约1.5%至2.5%的有意义改进。例如,bunny和buddha模型具有更多的表面方向变化,而bostonxl模型在相同方向上具有更多的法线。然而,基线反转铺块示出对反转的铺块的改进,同时大大地减少周期性铺块期间的存储的量。

v.硬件实现方式

可以重复、并行地实现、以单数方式实现、组合、划分、重新布置、省略、消除和/或以任何其它方式实现本文中公开的元件和接口中的一个或多个。另外,所公开的元件和接口中的任一个可以由处理器、计算机和/或具有处理器的机器(诸如在下面连同图16一起所讨论的示例处理器平台p00和p50)来实现。示例处理器包括但是不限于电路、可编程处理器、熔丝、专用集成电路(asic)、可编程逻辑器件(pld)、现场可编程逻辑器件(fpld)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、图形处理单元(gpu)、中央处理单元(cpu)、微控制器、控制器等。本文中公开的元件和接口中的任一个可以例如作为由处理器、计算机、和/或具有处理器的机器中的一个或多个执行指令、程序代码、机器可读指令等被实现。处理器、计算机和/或具有处理器的机器可以被使用、配置和/或编程来执行和/或实行本文中公开的示例。例如,这些示例中的任何可以以在可由处理器、计算机和/或具有处理器的其它机器(诸如在下面连同图16一起所讨论的示例处理器平台p00和p50)访问的有形和/或非暂时性计算机可读介质上存储的指令、程序代码、机器可读指令等加以实施。机器可读指令包括例如使处理器、计算机和/或具有处理器的机器执行一个或多个特定过程或方法的指令。当并入图12的元件中的一个或多个的本专利的权利要求被读成涵盖纯软件和/或固件实现方式时,图12的元件中的至少一个特此被明确地限定成包括有形制品,诸如存储诸如固件和/或软件的机器可读指令的有形机器能够读介质。

本文中公开的示例方法可以例如作为由处理器、计算机和/或具有处理器的其它机器执行的指令、程序代码、机器可读指令被实现。诸如图16中所示的那些的处理器、控制器和/或任何其它适合的处理设备可以被使用、配置和/或编程以执行和/或实行示例方法。例如,它们可以用存储在可由处理器、计算机和/或具有处理器的其它机器(诸如在下面连同图16一起所讨论的那些)访问的有形和/或非暂时性计算机可读介质上的指令、程序代码和/或机器可读指令加以实施。可以采用实现示例方法的许多其它方法。例如,可以改变执行的顺序,并且/或者可以改变、消除、细分或者组合所描述的块和/或交互中的一个或多个。附加地,可以通过例如单独的处理线程、处理器、设备、离散逻辑、电路等来顺序地执行和/或并行地执行任何或全部示例方法。

如本文中所使用的,术语“计算机可读介质”和“机器可读介质”明确地排除传播信号。示例计算机可读或机器可读介质包括但不限于以下各项的一种或任何组合:其中存储信息持续任何持续时间(例如,持续延长时间段、永久地、短暂地,用于暂时缓冲、和/或用于缓存信息)并且能够由处理器、计算机和/或具有处理器的其它机器访问的易失性和/或非易失性存储器、易失性和/或非易失性存储器设备、压缩盘(cd)、数字通用盘(dvd)、只读存储器(rom)、随机存取存储器(ram)、闪速驱动器、软盘、同步动态随机存取存储器(sdram)、动态随机存取存储器(dram)、rambus动态随机存取存储器(rdram)、可编程rom(prom)、电子可编程rom(eprom)、电子可擦除prom(eeprom)、固态(ss)存储器、固态盘(ssd)、光学存储盘、光学存储设备、磁存储盘、网络附连存储(nas)设备、磁存储设备、高速缓存、和/或任何其它存储介质。

图16示出可以与这里描述的技术一起使用的通用计算机设备p00和通用移动计算机设备p50的示例。计算设备p00旨在表示各种形式的数字计算机,诸如膝上型电脑、台式机、平板、工作站、个人数字助理、电视、服务器、刀片服务器、大型机、和其它适当的计算设备。计算设备p50旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话、和其它类似的计算设备。这里示出的组件、其连接和关系以及其功能仅仅意在为示例性的,而不意在限制本文档中描述和/或要求保护的发明的实现方式。

计算设备p00包括处理器p02、存储器p04、存储设备p06、连接到存储器p04和高速扩展端口p10的高速接口p08以及连接到低速总线p14和存储设备p06的低速接口p12。处理器p02能够是基于半导体的处理器。存储器p04能够是基于半导体的存储器。组件p02、p04、p06、p08、p10和p12中的每一个使用各种总线来互连,并且可以被酌情安装在公共主板上或者以其它方式安装。处理器p02能够处理在计算设备p00内执行的指令,包括存储在存储器p04中或在存储设备p06上以在外部输入/输出设备(诸如耦合到高速接口p08的显示器p16)上显示用于gui的图形信息的指令。在其它实现方式中,可以适当地使用多个处理器和/或多个总线以及多个存储器和多种类型的存储器。另外,可以连接多个计算设备p00,其中每个设备提供必要操作的部分(例如,作为服务器组、一组刀片服务器、或多处理器系统)。

存储器p04存储计算设备p00内的信息。在一个实现方式中,存储器p04是一个或多个易失性存储器单元。在另一实现方式中,存储器p04是一个或多个非易失性存储器单元。存储器p04还可以是另一形式的计算机可读介质,诸如磁盘或光盘。

存储设备p06能够为计算设备p00提供大容量存储。在一个实现方式中,存储设备p06可以是或者包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其它类似的固态存储设备,或设备的阵列,包括存储区域网络或其它配置中的设备。能够在信息载体中有形地实施计算机程序产品。计算机程序产品还可以包含指令,当所述指令被执行时,执行一个或多个方法,诸如上面描述的那些方法。信息载体是计算机或机器可读介质,诸如存储器p04、存储设备p06、或处理器p02上的存储器。

高速控制器p08管理用于计算设备p00的带宽密集操作,然而低速控制器p12管理较低带宽密集操作。这种功能的分配仅是示例性的。在一个实现方式中,高速控制器p08耦合到存储器p04、显示器p16(例如,通过图形处理器或加速器),并且耦合到高速扩展端口p10,所述高速扩展端口p10可以接受各种扩展卡(未示出)。在该实现方式中,低速控制器p12耦合到存储设备p06和低速扩展端口p14。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、指点设备、扫描器或诸如交换机或路由器的联网设备。

如图中所示,可以以许多不同的形式实现计算设备p00。例如,它可以作为标准服务器p20被实现,或者在一组此类服务器中多次被实现。它还可以作为机架服务器系统p24的部分被实现。此外,它可以被实现在诸如膝上型计算机p22的个人计算机中。可替选地,来自计算设备p00的组件可以与诸如设备p50的移动设备(未示出)中的其它组件组合。此类设备中的每一个设备可以包含计算设备p00、p50中的一个或多个,并且整个系统可以由彼此通信的多个计算设备p00、p50组成。

计算设备p50包括处理器p52、存储器p64、诸如显示器p54的输入/输出设备、通信接口p66和收发器p68以及其它组件。设备p50还可以被提供有存储设备,诸如微驱动器或其它设备,以提供附加存储。组件p50、p52、p64、p54、p66和p68中的每一个组件使用各种总线来互连,并且若干的组件可以被适合地安装在公共主板上或者以其它方式被安装。

处理器p52能够执行计算设备p50内的指令,包括在存储器p64中存储的指令。处理器可以作为包括单独的和多个模拟和数字处理器的芯片的芯片组被实现。例如,处理器可以提供用于协调设备p50的其它组件,诸如对用户界面的控制、由设备p50运行的应用和由设备p50进行的无线通信。

处理器p52可以通过耦合到显示器p54的控制接口p58和显示接口p56来与用户进行通信。显示器p54可以是例如tftlcd(薄膜晶体管液晶显示器)或oled(有机发光二极管)显示器,或其它适当的显示技术。显示接口p56可以包括用于驱动显示器p54以向用户呈现图形和其它信息的适当的电路。控制接口p58可以从用户接收命令并对它们进行转换以便提交到处理器p52。此外,可以提供与处理器p52通信的外部接口p62,以便使得设备p50能够与其它设备进行近区域通信。外部接口p62可以例如在一些实现方式中提供用于有线通信,或者在其它实现方式中用于无线通信,以及还可以使用多个接口。

存储器p64存储计算设备p50内的信息。存储器p64能够作为计算机可读介质、一个或多个易失性存储器单元、或者一个或多个非易失性存储器单元中的一个或多个被实现。扩展存储器p74还可以通过扩展接口p72来提供并连接到设备p50,所述扩展接口p72可以包括例如simm(单列直插存储器模块)卡接口。这种扩展存储器p74可以为设备p50提供额外的存储空间,或者还可以为设备p50存储应用或其它信息。具体地,扩展存储器p74可以包括用于执行或者补充上述的过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器p74可以作为用于设备p50的安全模块被提供,并且可以被编程有允许安全地使用设备p50的指令。此外,可以经由simm卡提供安全应用以及附加信息,诸如以不可破解的方式将识别信息放置在simm卡上。

如在下面所讨论的,存储器可以包括例如闪速存储器和/或nvram存储器。在一个实现方式中,计算机程序产品被有形地实施在信息载体中。计算机程序产品包含指令,当所述指令被执行时,执行一个或多个方法,诸如上述的那些方法。信息载体是可以例如通过收发器p68或外部接口p62接收的计算机或机器可读介质,诸如存储器p64、扩展存储器p74、或处理器p52上的存储器。

设备p50可以通过通信接口p66以无线方式进行通信,所述通信接口p66必要时可以包括数字信号处理电路。通信接口p66可以提供用于在各种模式或协议下进行通信,所述各种模式或协议诸如gsm语音呼叫、sms、ems或mms消息传送、cdma、tdma、pdc、wcdma、cdma2000或gprs等。这种通信可以例如通过射频收发器p68发生。此外,可以发生短距离通信,诸如使用蓝牙、wi-fi或其它这种收发器(未示出)。此外,gps(全球定位系统)接收器模块p70可以向设备p50提供附加的导航和位置相关的无线数据,所述无线数据可以由在设备p50上运行的应用适当地使用。

设备p50还可以使用音频编解码器p60来可听地通信,所述音频编解码器p60可以从用户接收口述信息并且将它转换为可用的数字信息。音频编解码器p60可以同样地为用户生成可听声音,诸如通过扬声器,例如在设备p50的头戴式耳机中。这种声音可以包括来自语音电话呼叫的声音,可以包括记录的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备p50上操作的应用生成的声音。

如图中所示,可以以许多不同的形式实现计算设备p50。例如,它可以作为蜂窝电话p80被实现。它还可以作为智能电话p82、个人数字助理、或其它类似的移动设备的部分被实现。

这里描述的系统和技术的各种实现方式能够用数字电子电路、集成电路、专门定制的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合加以实现。这些各种实现方式能够包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实现方式,所述可编程系统包括至少一个可编程处理器,其可以是专用的或通用的,其可以被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。

这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且能够以高级过程和/或面向对象编程语言和/或用汇编/机器语言加以实现。如本文中所使用的,术语“机器可读介质”、“计算机可读介质”指代用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(pld)),包括将机器指令作为机器可读信号来接收的机器可读介质。术语“机器可读信号”指代用于向可编程处理器提供机器指令和/或数据的任何信号。

为了提供用于与用户的交互,能够在计算机上实现这里描述的系统和技术,所述计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户能够通过其向该计算机提供输入的键盘和指点设备(例如,鼠标或轨迹球)。其它类型的设备还能够用于提供用于与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且能够以任何形式接收来自用户的输入,包括声学输入、语音输入、或触觉输入。

能够在计算系统中实现这里描述的系统和技术,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户能够通过其与这里描述的系统和技术的实现方式交互的图形用户界面或web浏览器的客户端计算机),或者包括此类后端、中间件或前端组件的任何组合。系统的组件能够通过数字数据通信(例如,通信网络)的任何形式或介质来互连。通信网络的示例包括局域网(“lan”)、广域网(“wan”)和互联网。

计算系统能够包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络来交互。客户端和服务器的关系借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

在本说明书和所附权利要求中,除非上下文另外清楚地规定,否则单数形式“一(a)”、“一个(an)”和“该(the)”不排除复数引用。另外,除非上下文另外清楚地规定,否则诸如“和”、“或”及“和/或”的连词是包括性的。例如,“a和/或b”包括单独a、单独b和a与b一起。另外,在所呈现的各个图中示出的连接线或连接器旨在表示各种元件之间的示例性功能关系和/或物理或逻辑耦合。在实际设备中可以存在许多替代或附加功能关系、物理连接或逻辑连接。此外,除非元件被具体地描述为“必要的(essential)”或“关键的(critical)”,否则项目或组件不是实践本文中公开的实施例所必要的。

虽然已像本文中所描述的那样图示了所描述的实现方式的某些特征,但是本领域的技术人员现在将想到许多修改、替换、变化和等同物。因此应当显而易见的是,所附权利要求旨在涵盖如落入实现方式的范围内的所有此类修改和变化。应当理解的是,它们已被仅作为示例而非限制地呈现,并且可以做出形式和细节上的各种变化。除了互斥组合之外,还可以按照任何组合来组合本文中描述的装置和/或方法的任何部分。本文中描述的实现方式能够包括所描述的不同的实现方式的功能、组件和/或特征的各种组合和/或子组合。

在以下示例中概括另外的实现方式:

示例1:一种方法,所述方法包括:定义具有多个区域的拼块,所述拼块的多个区域中的每一个区域与来自几何形状的多个表面中的表面相对应;将所述拼块的第一实例的边缘布置为邻接所述拼块的第二实例的边缘以定义复合拼块;确定在所述拼块的第一实例中的所述复合拼块上的第一点与在所述拼块的第二实例中的所述复合拼块上的第二点之间的第一矢量;以及对所述第一矢量进行编码以确定所述第二点相对于所述第一点的位置的近似值。

示例2:根据示例1所述的方法,其中,所述第一点表示用于表面的几何表示的预测法线,并且所述第二点表示用于所述表面的几何表示的实际法线。

示例3:根据示例1或2所述的方法,还包括:确定在所述拼块的第一实例中的所述第一点与在所述拼块的第一实例中的所述复合拼块上的第三点之间的第二矢量;以及当所述第二矢量比所述第一矢量更短时,对所述第二矢量而不是所述第一矢量进行编码,以确定所述第二点相对于所述第一点的位置的近似值。

示例4:根据示例1至3中的任一项所述的方法,其中,对所述矢量进行编码包括:确定所述复合拼块中的各对点之间的多个矢量;以及对包含所述第一矢量和所述多个矢量的缓冲器的内容进行编码。

示例5:根据示例4所述的方法,其中,对所述缓冲器的内容进行编码包括对所述缓冲器的内容进行熵编码。

示例6:根据示例1至5中的任一项所述的方法,其中,所述拼块的第二实例在所述复合拼块中相对于所述拼块的第一实例被旋转。

示例7:根据示例1至6中的任一项所述的方法,其中,所述复合拼块包括所述拼块的多个第一实例和所述拼块的多个第二实例的铺块布置。

示例8:根据示例1至7中的任一项所述的方法,还包括:确定在所述第一拼块中的所述复合拼块上的复合点,所述复合点与所述第二点相对应;确定所述第一点与所述第二点之间的第一距离;确定所述第一点与所述复合点之间的第二距离;以及当所述第二距离小于所述第一距离时确定所述第一点与所述复合点之间的所述矢量。

示例9:一种方法,所述方法包括:定义具有多个区域的拼块,所述拼块的多个区域中的每一个区域与来自几何形状的多个表面中的表面相对应;将所述第一拼块的边缘布置为邻接所述第二拼块的边缘以定义复合拼块;对矢量进行解码以确定解码矢量;使用第一点和所述解码矢量来确定第二点;当所述第二点被设置在所述拼块的第二实例上时,将所述第二点映射到所述拼块的第一实例上的相对应的第三点;以及输出所述第三点。

示例10:根据示例9所述的方法,还包括:接收所述复合拼块中的各对点之间的多个矢量;以及对包含所述矢量的缓冲器和所述多个矢量的内容进行解码以确定所述解码矢量。

示例11:根据示例9所述的方法,其中,所述拼块的第二实例被相对于所述拼块的第一实例被旋转。

示例12:根据示例9所述的方法,其中,所述复合拼块包括所述拼块的多个第一实例和所述拼块的多个第二实例的铺块布置。

示例13:一种方法,所述方法包括:定义具有多个区域的第一拼块,所述第一拼块的多个区域中的每一个与来自几何形状的多个表面的表面相对应,所述多个区域在所述第一拼块中具有第一布置;定义具有多个区域的第二拼块,所述第二拼块的多个区域中的每一个与来自所述几何形状的多个表面的表面相对应,所述多个区域在所述第二拼块中具有第二不同的布置;当所述第一拼块上的第一点处在所述第一拼块的区域外部时,将所述第一点映射到所述第二拼块上的相对应的第二点,并且映射所述第二拼块上的第三点;确定所述第二点与所述第三点之间的矢量;以及对所述矢量进行编码以确定所述第三点相对于所述第一点的位置的近似值。

示例14:根据示例13所述的方法,其中,对所述矢量进行编码包括:确定各对点之间的多个矢量;以及对包含所述矢量和所述多个矢量的缓冲器的内容进行编码。

示例15:根据示例14所述的方法,其中,对所述缓冲器的内容进行编码包括对所述缓冲器的内容进行熵编码。

示例16:根据示例13所述的方法,其中,定义所述第二拼块包括将所述第一拼块的外部部分与所述第一拼块的内部部分交换。

示例17:一种方法,所述方法包括:定义具有多个区域的第一拼块,所述第一拼块的多个区域中的每一个与来自几何形状的多个表面的表面相对应,所述多个区域在所述第一拼块中具有第一布置;定义具有多个区域的第二拼块,所述第二拼块的多个区域中的每一个与来自所述几何形状的多个表面的表面相对应,所述多个区域在所述第二拼块中具有第二不同的布置;对矢量进行解码以确定解码矢量;使用第一点和所述解码矢量来确定第二点;当所述第一点被设置在所述第一拼块的外部部分中时,将所述第二点映射到所述第一拼块上的相对应的第四点中;以及输出所述第四点。

示例18:根据示例17所述的方法,还包括:接收各对点之间的多个矢量;以及对包含所述矢量和所述多个矢量的缓冲器的内容进行解码。

示例19:根据示例17所述的方法,其中,定义所述第二拼块包括将所述第一拼块的外部部分与所述第一拼块的内部部分交换。

示例20:一种方法,所述方法包括:由计算机的处理器接收多个点,所述计算机被配置为存储与三维对象的表面的法线有关的信息,所述多个点中的每一个点表示所述表面的法线并且被布置在拼块内;由所述处理器生成在所述拼块内的多个区域,所述多个区域中的每一个区域包括所述多个点中的点;由所述处理器生成表示所述表面的预测法线的第一点;由所述处理器检索所述多个点中的第二点,所述第二点表示所述表面的实际法线;由所述处理器对所述第一点执行点变换操作以产生指定基线区域的变换的第一点,并且对所述第二点执行所述点变换以产生变换的第二点;由所述处理器生成所述变换的第一点与所述变换的第二点之间的差,以产生多个差值中的差值;以及由所述处理器对所述多个差值进行编码,以产生编码差值。

示例21:根据示例20所述的方法,还包括:对所述编码差值进行解码以产生所述多个差值;获得所述第一点;对所述第一点执行所述点变换操作,以产生所述基线区域的变换的第一点;将所述多个差值中的一个差值添加到所述变换的第一点,以产生所述变换的第二点;以及对所述变换的第二点执行所述点变换的反转,以产生所述第二点。

示例22:根据示例20或21所述的方法,其中,所述多个区域中的每一个区域与在单位球体中内接的八面体的面相对应,并且所述多个区域中的每一个区域是直角三角形;其中,所述拼块是正方形,所述八面体具有上部部分和下部部分,并且所述多个区域包含在所述正方形中内接的多个内三角形和在所述正方形中内接的多个外三角形,所述多个内三角形中的每一个三角形与所述上部部分上的相应面相对应,所述多个外三角形中的每一个三角形与所述下部部分上的相应面相对应,其中,所述多个内三角形的基线内三角形是所述基线区域,其中,检索所述第一点包括:在所述多个外三角形中的一个外三角形内定位初始第一点;以及在执行所述点变换操作之前,对所述初始第一点执行反转操作,以在所述多个内三角形中的一个内三角形中产生所述第一点。

示例23:根据示例22所述的方法,其中,对所述第一点执行所述点变换操作包括对所述第一点应用旋转,以产生在所述基线内三角形中的所述变换的第一点。

示例24:根据示例22所述的方法,其中,对所述第一点执行所述点变换操作包括:绕所述拼块的对称的轴对所述第一点应用反射操作,以在所述基线内三角形中产生所述变换的第一点。

示例25:根据示例20至24中的任一项所述的方法,其中,接收所述多个点包括:执行量化操作以产生点网格作为所述多个点,所述点网格中的每一个表示所述表面的量化法线。

示例26:根据示例20至25中的任一项所述的方法,其中,对所述组的差值进行编码包括:对所述组的差值中的每一个应用熵编码。

示例27:一种包括非暂时性存储介质的计算机程序产品,所述计算机程序产品包括代码,所述代码在由声音渲染计算机的处理电路执行时使所述处理电路执行方法,所述声音渲染计算机被配置为存储与三维对象的表面的法线有关的信息,所述方法包括:接收多个点,所述多个点中的每一个点表示所述表面的法线并且被布置在拼块内;生成在所述拼块内的多个区域,所述多个区域中的每一个区域包括所述多个点中的点;生成表示所述表面的预测法线的第一点;检索所述多个点中的第二点,所述第二点表示所述表面的实际法线;对所述第一点执行点变换操作以产生指定基线区域的变换的第一点,并且对所述第二点执行所述点变换以产生变换的第二点;生成所述变换的第一点与所述变换的第二点之间的差,以产生多个差值中的一个差值;以及对所述多个差值进行编码,以产生编码差值。

示例28:根据示例27所述的计算机程序产品,还包括:对所述编码差值进行解码以产生所述多个差值;获得所述第一点;对所述第一点执行所述点变换操作,以产生所述基线区域的变换的第一点;将所述多个差值中的一个差值添加到所述变换的第一点,以产生所述变换的第二点;以及对所述变换的第二点执行所述点变换的反转,以产生所述第二点。

示例29:根据示例27或28所述的计算机程序产品,其中,所述多个区域中的每一个区域与在单位球体中内接的八面体的面相对应,并且所述多个区域中的每一个区域是直角三角形;其中,所述拼块是正方形,所述八面体具有上部部分和下部部分,并且所述多个区域包含在所述正方形中内接的多个内三角形和在所述正方形中内接的多个外三角形,所述多个内三角形中的每一个三角形与所述上部部分上的相应面相对应,所述多个外三角形中的每一个三角形与所述下部部分上的相应面相对应,其中,所述多个内三角形的基线内三角形是所述基线区域,其中,检索所述第一点包括:在所述多个外三角形中的一个外三角形内定位初始第一点;以及在执行所述点变换操作之前,对所述初始第一点执行反转操作,以在所述多个内三角形中的一个内三角形中产生所述第一点。

示例30:根据示例29所述的计算机程序产品,其中,对所述第一点执行所述点变换操作包括:对所述第一点应用旋转,以产生在所述基线内三角形中的所述变换的第一点。

示例31:根据示例29所述的计算机程序产品,其中,对所述第一点执行所述点变换操作包括:绕所述拼块的对称的轴对所述第一点应用反射操作,以产生在所述基线内三角形中的所述变换的第一点。

示例32:根据示例27至31中的任一项所述的计算机程序产品,其中,接收所述多个点包括:执行量化操作以产生作为所述多个点的点的网格,所述点的网格中的每一个网格表示所述表面的量化法线。

示例33:根据示例8至14中的任一项所述的计算机程序产品,其中,对所述组的差值进行编码包括:对所述组的差值中的每一个应用熵编码。

示例34:一种被配置为存储与三维对象的表面的法线有关的信息的电子装置,所述电子装置包括:存储器;以及控制电路,耦合到所述存储器,所述控制电路被配置为:接收多个点,所述多个点中的每一个点表示所述表面的法线并且被布置在拼块内;生成在所述拼块内的多个区域,所述多个区域中的每一个区域包括所述多个点中的点;生成表示所述表面的预测法线的第一点;检索所述多个点中的第二点,所述第二点表示所述表面的实际法线;对所述第一点执行点变换操作以产生指定基线区域的变换的第一点,并且对所述第二点执行所述点变换以产生变换的第二点;生成所述变换的第一点与所述变换的第二点之间的差,以产生多个差值中的一个差值;并且对所述多个差值进行编码以产生编码差值。

示例35:根据示例34所述的电子装置,其中,所述控制电路还被配置为:对所述编码差值进行解码以产生所述多个差值;获得所述第一点;对所述第一点执行所述点变换操作,以产生所述基线区域的变换的第一点;将所述多个差值中的一个差值添加到所述变换的第一点,以产生所述变换的第二点;以及对所述变换的第二点执行所述点变换的反转,以产生所述第二点。

示例36:根据示例34或35所述的电子装置,其中,所述多个区域中的每一个区域与在单位球体中内接的八面体的面相对应,并且所述多个区域中的每一个区域是直角三角形;其中,所述拼块是正方形,所述八面体具有上部部分和下部部分,并且所述多个区域包含在所述正方形中内接的多个内三角形和在所述正方形中内接的多个外三角形,所述多个内三角形中的每一个与所述上部部分上的相应面相对应,所述多个外三角形中的每一个三角形与所述下部部分上的相应面相对应,其中,所述多个内三角形的基线内三角形是所述基线区域,其中,经配置为检索所述第一点的所述控制电路还被配置为:在所述多个外三角形中的一个外三角形内定位初始第一点;并且在执行所述点变换操作之前,对所述初始第一点执行反转操作以在所述多个内三角形中的一个内三角形中产生所述第一点。

示例37:根据示例36所述的电子装置,其中,经配置为对所述第一点执行所述点变换操作的所述控制电路还被配置为:对所述第一点应用旋转,以产生在所述基线内三角形中的所述变换的第一点。

示例38:根据示例36所述的电子装置,其中,经配置为对所述第一点执行所述点变换操作的所述控制电路还被配置为:绕所述拼块的对称的轴对所述第一点应用反射操作,以产生在所述基线内三角形中的所述变换的第一点。

示例39:根据示例34至38中的任一项所述的电子装置,其中,经配置为在其中接收所述多个点的所述控制电路还被配置为:执行量化操作以产生作为所述多个点的点的网格,所述点的网格中的每一个网格表示所述表面的量化法线。

在本文中使用诸如但不限于近似地、基本上、一般地等的术语来指示不要求并且不必指定精确值或其范围。如本文中所使用的,上面讨论的术语对于本领域的普通技术人员而言将具有现成和即时含义。

此外,参考当前考虑或图示的定向使用诸如上、下、顶部、底部、侧面、端部、前面、后面等的术语在本文中的运用。如果相对于另一定向考虑它们,则应当理解的是,必须相应地修改此类术语。

另外,在本说明书和所附权利要求中,除非上下文另外清楚地规定,否则单数形式“一(a)”、“一个(an)”和“该(the)”不排除复数引用。此外,除非上下文另外清楚地规定,否则诸如“和”、“或”及“和/或”的连词是包括性的。例如,“a和/或b”包括单独a、单独b和a与b一起。

尽管已经在本文中描述了某些示例方法、装置和制品,然而本专利的覆盖范围不限于此。应当理解的是,本文中采用的术语是为了描述特定方面,而不旨在为限制性的。相反,本专利涵盖公平地落入本专利的权利要求的范围内的所有方法、装置和制品。

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