具体实施方式
参照图1,其图示了本发明实施例的方法100的各个步骤,方法100从包括至少一笔的2D草图重建3D表面。
在步骤102中,画出笔划以形成用户草图,接着基于笔划的类型对这些笔划进行分类。在步骤104中,沿着用户草图中的笔划分配矢量。接下来,在步骤106中,插入分配的矢量以形成致密矢量场,在步骤108中,使用致密矢量场重建3D表面。
用户草图可包括由步骤102中所绘笔划形成的基本2D形状。在一个示例中,采用反映了所需3D表面的特征的简单线图来形成草图。在另一示例中,忽略用户草图中的阴影(shading)、高亮、影线笔划和点画。用户草图的笔划可使用矢量格式作为输入记录到方法100中。该记录可利用基于矢量的动画系统CACAni的绘图模块来执行。在记录下各个笔划后,用户可通过绘画另一些笔划、追踪所记录的笔划或对所记录笔划的控制点进行调整来修改其草图。
图2(a)以古代中国凤凰的线图的形式图示了示例性用户草图,其中,笔划是以轮廓图的风格绘画的且呈现出干净的矢量笔划的形式。图2(b)-(d)分别图示了将步骤104、106和108应用到图2(a)所示用户草图上的效果。尤其,图2(b)图示了图2(a)所示部分草图的指针图(needle map),其中,指针图显示了自动分配到该部分草图中的笔划上的初始矢量,图2(c)图示了将分配的矢量插入图2(b)后获得的致密矢量场,图2(d)图示了使用图2(c)所示致密矢量场重建的表面。
图3(a)图示了另一示例性用户草图。相似地,图3(b)-(d)分别图示了将步骤104、106和108应用到图3(a)所示用户草图后的效果,其中,图3(b)图示了分配到草图中的笔划的矢量,图3(c)图示了从图3(b)中分配的矢量获得的致密矢量场,图3(d)图示了使用图3(c)中的致密矢量场重建的表面。
下面将对步骤102-108进行更加详细地说明。
步骤102:画出笔划以形成用户草图并对这些笔划进行分类
在步骤102中,画出笔划以形成用户草图。可为用户提供不同类型的笔划以便形成用户草图。
用户在步骤102中画出的笔划类型确定了待从这些笔划重新创建的表面几何图形(几何结构)。在步骤102中,接着根据笔划的类型对用户草图中的笔划进行分类。在一个示例中,用户可从提供给他们的笔划类型直观地想象待从这些笔划类型重新创建的表面几何图形。艺术家们通过画线来表达3D形状[33]的最近调查显示,人们可轻易地从3D表面上检测到跳跃、脊状、谷状、隆起和倾斜。因此,在一个示例中,提供给用户的笔划类型包括跳跃式笔划、脊状笔划、谷状笔划、隆起式笔划和倾斜式笔划,这些笔划用于重建这些不同的局部结构。笔划类型可进一步包括规则笔划,规则笔划用于确定重建表面的整体形状。换句话说,用户草图中的各个笔划可归类为以下其中之一:规则笔划、跳跃式笔划、脊状笔划、谷状笔划、隆起式笔划或倾斜式笔划。在一个示例中,笔划以轮廓图的风格(例如,如图2(a)所示)画出,且默认设置为规则笔划。在本示例中,用户可通过选择一个或多个规则笔划并改变所选笔划的笔划类型来编辑草图。这有利于快速直接地形成并编辑草图。
图4(a)-(c)图示了在步骤102中提供的用于形成用户草图的不同笔划类型(规则笔划402(黑色实线)、脊状笔划404(灰色点实线)、谷状笔划406(黑色点实线)、跳跃式笔划408(黑色虚线)、隆起式笔划410(灰色点实线)和倾斜式笔划412(黑色点实线))的示例,以及从这些笔划类型重建的各个表面几何图形。如图4(a)-(c)所示,从隆起式和倾斜式笔划形成的几何图形在表面法线中包括间断点,而规则笔划则在高度图中转变为平滑变化。注意,尽管规则笔划似乎在图4(a)-(c)中产生了不同的结构,但这是由视觉角度的模糊不清引起的,事实上,规则笔划创建的表面几何图形是一样的。
步骤104:沿着用户草图中的笔划分配矢量
在步骤104中,沿着用户草图中的各个笔划分配多个矢量。分配的矢量(除开沿着跳跃式笔划分配的矢量)表示3D表面法线在具有草图的2D平面上的投影。
在一个示例中,首先沿着用户草图中的各个笔划自动分配多个初始矢量。本文中用到的术语“自动”表明,尽管人为参与可使该过程开始,但当执行该过程时就不需要人为参与。可使用预定方案来执行初始矢量的分配。在本示例中,初始矢量与笔划的切线(即,笔划切线)正交,各初始矢量的幅值可相同或不同(例如,在T笔划的情况下,这将参照图5(d)进行详细描述)。接着可修改初始矢量(通过修改其幅值和/或方向)以更加准确地表示所需表面几何图形。用户可基于其对所需表面的想象而使用例如键盘或鼠标来手动地执行修改。这比输入表示所需表面高度的数值更加直观。而且,用户可在确定如何修改矢量之前,从初始矢量重建3D表面。可替换地,也可基于预加载的用户设置或预先定义的方案自动地执行修改。注意,初始矢量的修改是随意的。
图5(a)图示了HSV(色调饱和值)彩图的黑白输出,其中,V=1。该图可用于图示沿着如图5(b)-(d)所示用户草图中的笔划分配的矢量。图5(b)图示了初始分配的矢量,这些矢量与笔划切线垂直并具有相同的幅值,而图5(c)图示了基于特定用户定义的设置而调整了幅值和方向的初始矢量。图5(d)图示了如何处理在T结合处结合的笔划。对于T结合处,初始矢量可分配为使得接近T结合处并沿着封闭笔划502的可见部分的矢量的幅值减小,以避免影响接近T结合处并沿着另一笔划504的矢量。为了分配具有不同幅值的初始矢量,可自动地检测这种T结合处。
分配到步骤102中的各个笔划的矢量具有几何意义。例如,跳跃式笔划表示在重建表面中将形成阶梯状结构式(即,表面高度间断或突然减小)的跳跃,沿着该跳跃式笔划分配的矢量的方向和幅值分别表示待形成的跳跃的方向(即,表面高度应在笔划的哪一侧减小)和幅值。而且,属于余下笔划类型的笔划表示在重建表面中将形成斜线(即,表面高度不断减小),沿着各个这些笔划分配的矢量的方向和幅值分别表示待形成的斜线的方向(即,表面高度将在笔划的哪一侧减小)和倾斜度。较大的幅值表示需要较陡的斜线,换言之,需要更大的表面高度减小率。
规则笔划是确定重建表面的整体形状的笔划。在一个示例中,基于默认高度图将初始矢量分配到规则笔划上。图6(a)图示了具有沿着规则笔划分配的初始矢量的草图,而图6(d)图示了使用图6(a)中的矢量重建的3D表面。图6(b)仅图示了沿着表示草图中鼻翼602的笔划分配的矢量。与图6(a)中相应的矢量相比,图6(b)中的矢量幅值更大。图6(e)图示了使用图6(b)中的矢量重建的3D表面,其中,能够看出,较大的矢量幅值产生更高的鼻翼。图6(c)仅图示了分配到表示左耳604的笔划上的矢量。与图6(a)中相应的矢量相比,这些矢量逆时针旋转15度。图6(f)图示了使用图6(c)中的矢量重建的3D表面,其中,能够看出,矢量的旋转产生出扭曲形状的表面,从而产生扭曲的面部。
脊状(或谷状)笔划表示重建表面上需要明显的脊状(或谷状)。在一个示例中,脊状(或谷状)笔划呈两个相邻平行的规则笔划形式,如图7(a)-(b)所示。注意,图7(a)-(b)是概念图,两个平行规则笔划之间的空间通常是不可见的。事实上,脊状(或谷状)笔划在用户草图中通常不是采用这种形式。画来用于形成用户草图中的脊状(或谷状)笔划的笔划优选地呈单线条形式,因为这对于用户更加容易使用(例如,如图4所示,脊状(或谷状)笔划呈灰色点实线(或黑色点实线))。如图7(a)-(b)所示,分配给脊状(或谷状)笔划的两个平行的规则笔划的初始矢量与笔划切线正交,并且所述初始矢量要么设置为在相互排斥的方向形成脊状,要么分配为在相互吸引的方向形成谷状。换句话说,沿着脊状笔划分配的初始矢量的方向与沿着谷状笔划分配的初始矢量的方向不同,相差180度。在一个示例中,用户仅可改变分配给脊状(或谷状)笔划的初始矢量的幅值,而不能改变其方向。如果用户增大了矢量的幅值,那么将在重建表面中创建出更陡的脊状(或更深的谷状)。
跳跃式、隆起式和倾斜式笔划对于在重建表面中生成精美结构是很有用的。这些结构可在如图8(a)-(c)所示的给定表面的顶部形成。指定的表面可以是从用户草图中的规则笔划、脊状笔划和/或谷状笔划重建的初始表面。
图8(a)-(c)图示了基本笔划、感兴趣笔划(SOI)以及分别用于跳跃式笔划、隆起式笔划和倾斜式笔划的重建表面。各个跳跃式笔划、隆起式笔划和倾斜式笔划包括基本笔划以及要么一个相邻SOI(在隆起式笔划或倾斜式笔划的情况下)要么两个相邻SOI(在跳跃式笔划的情况下)。图8(a)-(c)中的第一、第二和第三排是概念图。尤其,第一排图示了没有跳跃、隆起和倾斜结构的给定表面,第二排图示了表面法线的变化,表面法线沿着基本笔划变化以形成相应的结构,第三排图示了具有跳跃、隆起和倾斜的表面。图8(a)-(c)的第四排图示了具有跳跃、隆起和倾斜结构的重建3D表面。图8(a)-(c)中的点实线、实线和虚线箭头分别表示用户草图中的规则笔划的法线方向、从规则笔划重建的给定表面和跳跃式、隆起式和倾斜式笔划的基本笔划。
如图8(a)所示,跳跃式笔划包括两个与其基本笔划平行且相邻的SOI。为了形成所需的跳跃,在开始将矢量分配到基本笔划时,减小表面高度,以便形成正确角度的斜线。注意,在本示例中,分配到基本笔划上的矢量的幅值不表示斜线的倾斜度。相反,其表示重建表面中所需跳跃的尺寸(即,表面高度的减小量)。如果存在一个建有跳跃的给定表面,那么,与给定表面的表面法线相同的矢量就分配到SOI上,表示给定表面的几何图形。如果不存在这种给定表面,那么,沿着SOI分配的矢量初始化为零。
如图8(b)-(c)所示,隆起式(或倾斜式)笔划包括一个与其基本笔划平行和相邻的SOI。隆起式(或倾斜式)笔划表示将在重建表面中形成斜线,分配给基本笔划的矢量的幅值表示所需的斜线斜率。相似地,如果存在一个建有隆起(或倾斜)的给定表面,那么,与给定表面的表面法线相同的矢量分配到SOI上。如果没有这种给定表面,那么,沿着SOI分配的矢量初始化为零。
下面是使用不同笔划重建3D表面的示例过程。首先,用户使用规则笔划、脊状笔划和/或谷状笔划画出所需表面的大致形状。接着将初始矢量分配到这些笔划上,并从这些分配的矢量重建表面。接着,用户基于这些重建表面修改初始矢量的幅值和/或方向以获得更加需要的重建表面。接着画出跳跃式、隆起式和倾斜式笔划以在重建表面上形成详细的几何图形结构。接着,将矢量分配到基本笔划以及如图8(a)-(c)所示这些跳跃式、隆起式和倾斜式笔划的SOI上,其中,分配到SOI的矢量表示从初始重建表面(即,给定表面)投影的表面法线。
在一个示例中,用户仅能旋转沿着规则笔划分配的初始矢量。这是因为,尽管可通过旋转沿着其它笔划类型分配的初始矢量来调整重建表面的几何图形,但不能直观地知道这种旋转的效果,尤其是对于那些不明白矢量的数学意义的用户。因此,为了让方法100更加直观和更加容易使用,优选地不允许旋转沿着其它笔划类型分配的初始矢量。
步骤106:插入分配的矢量场以形成致密矢量场
在步骤106中,插入在步骤104中分配的矢量以获得致密矢量场。
用户草图中的稀疏笔划可表达为其中,是重建3D表面的计算域。沿着笔划Γ分配的矢量可以矢量场的形式表达。在步骤106中,插入矢量场n*以在计算域Ω上获得致密矢量场n=(n1,n2)T。待重建的3D表面与高度图z=I(x1,x2)相关联,其中,z是具有草图的2D平面中的点(x1,x2)处的所需高度。沿着笔划(除了跳跃式笔划)分配的矢量n*可看作3D表面(具有所需高度图z)的表面法线矢量在2D平面上的投影。由于3D表面的表面法线矢量的方向可表达为所以沿着笔划(除了跳跃式笔划)分配的矢量n*可表达为-▽I。
在矢量计算中,如果只是简单地联系到计算域那么,当且仅当以便▽I=n时,方程(1)才成立。方程(1)表示无旋条件,无旋调节在可见表面重建中通常称为可积条件。
因为将重建与高度图z=I(x1,x2)相关联的表面,高度图的倾斜度适合插入的矢量n,所以优选地满足插入的(或致密的)矢量场n上的无旋条件。
使用加权的全变差(TV)规则化方法和H1规则化方法的结合来执行步骤106,全变差规则化方法用于保存重建3D表面的锐度,H1规则化方法用于保存重建3D表面的平滑度。尤其,这可通过使用具有如方程(2)所示的无旋约束的能量最小化泛函来执行。方程(2)图示了最大程度减小矢量场n*的非线性泛函,非线性泛函包括域Ω上定义的多个项和笔划Γ上定义的项。换句话说,方程(2)实施非线性矢量插入。注意,方程(2)将通过致密矢量场上的无旋约束n来解。
其中,▽×n=0 (2)
方程(2)中的能力最小化泛函是TV规则化方法和H1规则化方法的加权结合。在方程(2)中,致密无旋矢量场n是通过最大程度地减小能量函数εv(n)而从沿着笔划Γ分配的矢量场n*获得的。|.|是R2中的欧几里德范数,|.|F是如下面方程(3)中所示的弗罗宾尼斯(Frobenius)范数。注意,集成域Γ包括封闭和开放笔划。换句话说,集成域Γ包括跳跃式、隆起式和倾斜式笔划中的所有SOI和基本笔划。
在方程(2)中,第一项∫Ω(1-g)|▽n|F表示TV规则化方法,而第二项表示H1规则化方法。第三项η∫Γ|n-n*|(其中,η为正常数)是保存插入的矢量场n中的Γ上的n*的惩罚参数。
通常,H1规则化方法重建更加平滑的表面,而TV规则化方法重建更加尖锐的表面。这是因为沿着笔划分配的矢量场中的间断点在TV规则化方法下通常能很好地插入域Ω中,而在H1规则化方法下,间断点则模糊的进入域Ω中。因此,在方程(2)中表示TV规则化方法的第一项用于产生非线性扩散和保存间断点,例如,插入矢量场中的折痕中的或跳跃中的间断点,而在方程(2)中表示H1规则化方法的第二项则用于产生线性扩散和使插入矢量场中的间断点模糊。
使用TV规则化方法来保存间断点是很有优势的。因为,其它算法(比如,[20]中的算法)需要表示间断点在域Ω中的位置的信息,而TV规则化方法则不需要该信息。因为通常很难仅从沿着笔划分配的矢量就发现间断点的位置,所以使用方程(2)中的TV规则化方法使方法100的实施更加容易。
在方程(2)中,使用可以带0和1中任意值的加权函数(或指示函数)g来加权TV规则化方法和H1规则化方法。g的值(即,权重)确定重建表面的平滑度和锐度,即,确定重建3D表面的纹理。因此,通过将如方程(2)中所示的TV规则化方法和H1规则化方法与不同的g值结合,可在重建表面中生成各种表面几何图形。注意,当g=1时,仅仅实施H1规则化方法,而当g=0时,仅仅实施TV规则化方法。在一个示例中,草图的g值基于待重建表面的所需纹理来设定,并且通过使用该g值加权TV和H1规则化方法的组合来插入分配的矢量。
草图(包括各个笔划和草图中各笔划之间的空间)的g值可由用户通过使用,例如绘图工具,来设定。在一个示例中,绘图工具用于给草图涂上一种预可变阿尔法(alpha)值相关联的颜色,草图的g值可通过改变阿尔法值来设定。为了执行该操作,g值([0,1])可赋上阿尔法值(从[0,1]至0,255]或从[0,1]至[255,0])。
在一个示例中,在设定了草图的g值后,基于笔划的分类为草图中的各个笔划修改g值。考虑到如上所述的TV规则化方法和H1规则化方法的差异,对于跳跃式、脊状、谷状、隆起式和倾斜式笔划,可将g值修改为0(以便保存所得结构的间断点),对于规则笔划,则可将g值修改为1(以便生成平滑表面)。
可替换地,用户草图可分为多个部分,并可基于待从该部分重建的表面的所需纹理而为各个部分设定不同的权重。在一个示例中,在第一部分中g设为0以便保存第一部分中的表面倾斜度的间断性,在第二部分中g设为1以便在第二部分中生成平滑表面。各个部分可涂上一种与阿尔法值相关联的颜色,可改变阿尔法值以设定该部分的权重。相似地,g值可赋上阿尔法值(从[0,1]至0,255]或从[0,1]至[255,0]),并且可根据笔划的分类修改各个部分中各个笔划的g值。
图9(a)-(d)和10(a)-(d)图示了加权函数的g值如何影响重建3D表面。
图9(a)和9(b)分别图示了当g=1和当g=0时从用户草图重建的表面。图9(c)图示了将用户草图分为两部分:左半部分和右半阴影部分。在草图的左半部分设置g=1和在右半阴影部分设置g=0将生成图9(d)中的重建表面。如图9(d)所示,重建表面是图9(a)和9(b)中的重建表面的各个部分的自然结合。
图10(a)和10(b)分别图示了包括规则笔划和分配给笔划的初始矢量的用户草图。注意,分配给矩形中的截面的矢量与截面中的笔划切线平行。在初始矢量场中,在外矩形的四个角处有四个间断点,在截面上有三个间断点。这七个间断点通过图10(b)中的箭头表示。图10(d)图示了通过将整个草图的g设为0(即,仅仅通过使用TV规则化方法)而重建的表面。如图10(d)所示,初始矢量场中的间断点很好的插入并呈尖锐脊状形。图10(e)图示了通过将整个草图的g设为0(即,通过仅仅使用H1规则化方法)而重建的表面。如图10(e)所示,相应于插入的矢量在区域中获得平滑表面。图10(c)图示了将用户草图分为两部分:有纹理的部分和没有纹理的部分。将有纹理的部分设为g=0,将没有纹理的部分设为g=1,这将生成图10(f)中的重建表面。如图10(f)所示,重建表面是图10(d)和10(e)中的重建表面的各个部分的自然结合。
方程(2)中的建模通过强加在致密矢量场n上的无旋约束来执行。这有利于重建高度图I,其中▽I=n。其同样有利于在大的域上插入稀疏矢量。图11(a)-11(f)图示了具有强加在插入的矢量上的无旋约束的优点。图11(a)图示了包括规则笔划的用户草图,而图11(b)图示了沿着用户草图的笔划分配的初始矢量。图11(c)和图11(d)图示了获得的没有无旋约束的重建表面(其中,图11(c)图示了使用H1规则化方法获得重建表面,图11(d)图示了使用TV规则化方法获得的重建表面)。图11(e)和图11(f)图示了获得的具有无旋约束的重建表面(其中,图11(e)图示了使用H1规则化方法获得的重建表面,图11(f)图示了使用TV规则化方法获得的重建表面)。分别将图11(c)和11(d)与图11(e)和11(f)作对比,能够看出,如果具有无旋约束的话,加权函数就对重建表面具有更大的影响。而且,如果具有无旋约束的话,重建表面可更加准确地反映初始矢量设置值,并且可获得尖锐表面的细节。
然而,要应用无旋约束而使其满足整个域Ω的话是很困难的,因为无旋约束在插入的矢量场中的间断点处通常会受到干扰。以下描述了克服该困难的示例性方法。
在方程(2)中最大程度地减小能量函数的增广拉格朗日方法
在一个示例中,在方程(2)中使用增广拉格朗日方法来最大程度地减小能量函数(即,矢量场的非线性泛函)。这克服了应用无旋约束中的困难,并使无旋约束几乎满足域Ω中所有地方。下面将详述该方法。
使用如方程(4)所示具有两个变量的算子分裂法,方程(2)就转变为约束最小化问题,如方程(5)所示。
和
其中,P=▽n,s=n,以及▽×n=0 (5)
为了解方程(5)中的约束最终化,形成了如方程(6)所示的增广拉格朗日泛函Lv(s,n,P;λf,λc,Λr),其中,cf、cc和cr为正惩罚参数,λf、λc和Λr为拉格朗日乘子。如果方程(2)中的加权函数g在Ω上设置为1,那么就有必要使用cr、Λr和P。
ωc方程(6)是一个加权函数。根据待重建的几何结构来适应性的选择ωc,而重建的几何结构相应地又取决于笔划类型。在一个示例中,因为插入的矢量场n在表面高度和倾斜度中的间断点上背离无旋约束,因此,如果是脊状、谷状、隆起式、倾斜式和跳跃式笔划的话,ωc设为0,如若不然ωc就设为1。在一个示例中,加权函数ωc根据用户草图上的笔划类型的先验知识自动地确定。注意,尽管当ωc=1时,可能会出现背离无旋约束的折痕结构,但是,因为方程(2)中TV规则化方法的存在(见图9(d),所以减小了表面变形的可能性。在一个示例中,因为ωc是平滑函数,所以将ωc设置为具有平滑因子2的2D高斯核的卷积。换句话说,通过执行具有标尺参数2的高斯线性滤波来获得ωc。也可用相同核作为方程(2)中的加权函数g。在方程(6)中具有没有变量的ωc是有用的,必须为背离无旋约束的笔划选择相当小的惩罚参数cc。而小的cc会使稍后将描述的迭代过程的收敛性慢,因此是不实用的。
以下是一个示例性算法,该示例性算法包含迭代过程,以便通过最大程度地减小拉格朗日乘子和最大程度地减小变量s、n和P来找出方程(6)中的增广拉格朗日泛函的鞍点。
算法1:方程(6)的增广拉格朗日方法
步骤1:将s0,n0,P0,和初始化为0。变量k(表示存在算法的迭代)也初始化为0。
步骤2:将k值增加1,如果k≥1的话,就使用替换的最小化方法来计算增广拉格朗日泛函的近似极小化变量(sk,nk,Pk)。该步骤根据方程(7)来执行,其中,s,n,P是待最小化的值,
步骤3:使用以下方程(8)-(10)来更新拉格朗日乘子。
注意,如果在一个点处,ωc=0,那么在该点处
步骤4:使用方程(11)计算相对的残差如果相对残差比误差范围ε大,就重复步骤2-4。注意,相对残差不依靠域的大小或是惩罚参数,因此,其适合用于确定是否停止迭代步骤。
其中,是Ω上的L1范数,|Ω|是域的区域。
在一个示例中,拉格朗日乘子的相对误差也在算法1的步骤4中计算,以确定是否应该停止迭代(即,是否应该重复步骤2-4)。这些相对误差如方程(13)所示而计算。在另一示例中,为了确定是否停止迭代步骤,也计算数值能量。数值能量如方程(14)所示而计算。相似地,相对误差和/或数值能量值与相应误差范围进行对比,以便确定是否停止迭代。
图12(a)图示了相对残差(使用方程(11)来计算)与迭代次数的图(图12(a)中的图显示了一共10000次迭代(在对数标尺上为log10000=4),图12(b)图示了拉格朗日乘子的相对误差(使用方程(13)计算)与迭代次数的图,图12(c)图示了数值能量值(使用方程(14)来计算)与迭代次数的图,这都是相对于图2(d)(顶部)和18(b)(底部)而言。图12(a)和(b)的轴都是对数标尺,而在图12(c)中,y轴是对数标尺,x轴是小数标尺。在图12(a)中,R1、R2和R3分别相对于方程(12)中的而在图12(b)中,Lr、Lc,和Lf分别相对于方程(13)中的
图12(a)-(c)中的图在数值上显示了上述数值算法是收敛的。拉格朗日乘子的相对误差和相对残差具有相同的收敛阶。而且,数值能量达到稳定状态。注意,本应用中的图中显示的结果是在远远小于1000次迭代的情况下获得的;见表1。在示例性数值实验中,我们发现,在满足相对残差比误差范围小于0.001的条件后,几乎不能在重建表面中检测出任何可见差异。
如图12(a)-(c)所示,相对残差和拉格朗日乘子的相对误差具有相同的收敛阶,而数值能量值的图在很少的迭代下就达到稳定状态。注意,布局收敛的速度受惩罚参数的值的影响。更大的惩罚参数值会使数值能量值在迭代中减小得更慢(即,数值能量布局需要花更长的时间来收敛),而较小的惩罚参数值将使拉格朗日乘子中的相对误差和相对残差在迭代中减小的更慢(即,相对误差布局和相对残差布局将花更长的时间来收敛)。优选的调整惩罚参数,以便相对误差布局和相对残差布局收敛得更快。
以下是替换最小化方法的示例性算法,如上所述,该替换最小化方法解算法1中的方程(7)。
算法2:解方程(7)的替换最小化方法
步骤1:初始化变量:和
步骤2:对于l=1,…,L以及固定拉格朗日乘子和选择性地解决下列最小化问题:
通过最大程度地减小能量泛函(18)、(19)和(20)来找出上述极小化变量和
下面将描述如何执行最大程度地减小泛函(18)-(20)的更多细节。
步骤3:在L迭代后,通过设置来更新(sk,nk,Pk)。在一个实例中,只进行了一次迭代(即,L=1),但这已经足够实现所需结果。
泛函(18)-(20)的最小化
泛函(18)和(20)(方程(15)和(16))的最小化可通过包含简单算术计算的软阈值方法[25]来解决,而泛函(19)(方程(17))的最小化则通过在整个域Ω上解线性方程的系统而终止。因为线性方程的系统的网格是均匀的,所以可用快速傅里叶转换法以低计算成本来解这些方程。
可在离散计算域Ω=[1,N1]×[1,N2]上定义方程(6)中的增广拉格朗日泛函中的变量s,n,P,λf,λc,Λr。图13(a)-13(b)图示了一个格点系统。格点系统中物理上不同的位置用来估量变量值。
图13(a)图示了在一个示例中索引增广拉格朗日泛函中的变量s,n,P,λf,λc,Λr的规则。在本示例中,n、s和λf中的第一和第二个元素分别定义在方形□处和空心点o处,而p12、p21、Λr12和Λr21定义在实心点·处。其它变量定义在三角形△处,其中,λc(i,j)在三角形1302处,p11(i,j)和Λr11(i,j)在三角形1304处,p22(i,j)和Λr22(i,j)在三角形11306处。这些索引规则可用在欧拉-拉格朗日方程(19)的离散中。图13(b)图示了在尺寸为5x4(即,[1,5]x[1,4])的离散计算域中实施图13(a)中的规则的示例。
以下将说明最大程度减小算法2的步骤2中的泛函(18)-(20)的示例的细节。
在方程(18)中最小化ε
1
(s)
指明那么ε1(s)中的泛函可表示为两部分,如方程(21)-(23)所示。
ε1(s)=εΩ\Γ(s)+εΓ(s) (21)
其中
因为构成要素是关于s的一个二次多项式,所以可容易的获得该第一能量泛函εΩ\Γ(s)的极小化变量(minimizer)。为了获得第二能量泛函εΓ(s)中的极小化变量,将方程(23)再表示为方程(24)。在方程(24)中,C值独立于最小化。
对于各个坐标(i,j)∈Γ,都使用了软阈值方法[32],并且通过下列方程(25)-(26)来获得方程(15)中的极小化变量其中和
在方程(19)中最小化ε
2
对于固定的和欧拉-拉格朗日方程(19)产生出如方程(27)所示的线性偏微分方程(PDE)的系统,其中,n=(n1,n2)T、和▽·P=(▽·p1,▽p2)T,I是2x2单位矩阵,和
-(crDr+ccDc-cfI)n=▽·Λr-▽⊥(ωcλc)+λf-▽·P+cfs (27)
因为Dr是拉普拉斯(Laplacian)算子,并且Dr在n的各个元素上操作,所以其在方程(27)中的存在使得方程(27)成为一个耦合方程,并且使n*在笔划上扩散。然而,方程(27)中的微分算子(由于致密矢量场上的无旋约束的强制而存在)产生多余的力,以将n*插入到整个域上。
通过使用具有如图13(a)所示索引变量规则的标准有限差分方案,方程(27)中的n1在方形□处离散,而方程(27)中的n2在空心点o处离散。若将周期性边界条件应用到所有变量,就可用离散傅里叶转换F来实现方程(27)离散。包括方程(27)中的有限微分的移位算子主要表示离散卷积,该离散卷积的离散傅里叶转换在频率域中为按分量相乘。
对于离散频率,可形成图(28)所示的线性方程系统。
指明
其中,和线性方程(28)的系统中的系数为
而且,方程(28)的右手边上的f1和f2可如下表达:
其中
具有一个N1N2 2x2系统,并且,上述方程用于所有离散频率,上述方程中的系数矩阵的行列式由方程(37)给出,其中惩罚参数cr、cc和cf为正值,所以该行列式不为零。在对于各个频率解了线性方程系统后,就使用离散傅里叶逆转换来获得
(4crβij+cf)(4(cr+cc)βij+cf) (37)
在方程(20)中最小化ε
3
(P)
指明方程(20)中的泛函可再作如下表示。在方程(38)中,C值独立于最小化。
可使用下列方法[8]来找出极小化变量在各个点(i,j)∈Ω处的闭型:
其中
步骤108:从致密矢量场重建3D表面
在步骤108中,与高度图z=I(x1,x2)相关联的3D表面在计算域Ω上从致密矢量场n重建,致密矢量场n在步骤106中获得。该操作是通过放置高度图I来执行的,高度图的倾斜度场符合致密矢量场n。
在一个示例中,3D表面是通过两个方法的加权结合而重建的,两个方法即是TV规则化方法和H1规则化方法,TV规则化方法用于保存重建表面的锐度,H1规则化方法用于保存重建表面的平滑度。该操作可基于如方程(41)所示的能量泛函εh(I)的最小化,该方程可执行TV规则化方法和H1规则化方法的加权结合。在方程(41)中,I0表示在上所需的高度值,h是加权函数(或指示函数),其可取0和1之间的任一值。与方程(2)相似,方程(41)显示了高度图的非线性泛函的最小化,该非线性泛函包括域Ω(表面在其上重建)上定义的多个项和域Σ(呈现关于高度的先验信息的域)上定义的项。关于高度的先验信息,换言之,初始高度信息,可由用户确定,使得建模过程与从一个高度图变为另一个高度图的变形过程相似。而且,初始高度信息的某些格式可包括部分域上的矢量。在一个示例中,如果没有可用的关于高度的先验信息,那么就ξ将设为0。而且,可用具有平滑因子2的2D高斯核的卷积来加权函数h。
在方程(41)中,项|▽I-n|表示TV型范数(即,TV规则化方法),而项|▽I-n|2表示H1型范数(即,H1规则化方法)。TV型范数保存重建表面的锐度并且重建间断点(例如,跳跃间断点)而不会出现表面变形,而H1型范数则通过促使高度图的C0连续性来加强重建表面的平衡性(因为∫Ωh|▽I-n|2在欧拉-拉格朗日方程中生成拉普拉斯算子)。
因为在重建表面中跳跃可能遭遇到过度调节或调节不足的问题,所以,优选地不在整个域Ω应用H1型范数(即,不将整个域Ω设置为h=1)而另一方面,当h≠1时,使用TV型范数则有助于防止过度调节或调节不足的问题。在一个示例中,考虑到TV和H1型范数的不同效果,就基于笔划的分类而分别为各个笔划设置加权函数h(即,权重)值。例如,对于跳跃式笔划,该值就设为0,而对于其他笔划就设为1。在另一个示例中,跳跃式笔划的位置是提前知道的,而h值就基于该先验信息自动设置。
方程(4)中的最小化
在一个示例中,方程(41)的最小化问题通过扩张拉格朗日方法来解决,如下。注意,也有一些其他用于最小化方程(41)中的能量函数的方法,如参考文献[39]-[42]中讨论的。相同的方法也应用于方程(2)中的能量函数的最小化。
方程(41)的最小化问题首先转换为约束最小化问题,如方程(42)所示,其中,q=▽I和J=I。
接着,最小化问题转换为无约束问题,如方程(43)所示,并且找出了方程(43)中的增广拉格朗日泛函的鞍点。在方程(43)中,dr和df是正惩罚参数,μr和μf是拉格朗日乘子。
通过使用与上述算法1和算法2相似的迭代算法可找出方程(43)的最优化条件。该迭代算法的更多细节将在参考文献[11]中描述,参考文献[11]的内容以引用方式并入本文。当在域Ω上ξ≠0或h≠1时,通常使用该迭代算法。
如果没有可用的关于所需高度的先验信息和不存在跳跃式笔划,那么ξ=0,h设为h=1,并且方程(41)仅包括表示H1型范数的项。在这种情况下,欧拉-拉格朗日方程I仅是一个泊松(Poisson)方程,如方程(44)所示。因此,方程(41)不需用迭代算法来解决。相反,方程(41)中的能量泛函的最小化可仅通过解方程(44)中的泊松方程来实现。换句话说,方程(44)中的泊松方程的解决是一个重建高度图,该重建高度图的倾斜度符合矢量场n(这是由于强加在方程(2)上的无旋约束)。
▽·(▽I)=▽·n (44)
因为插入的矢量场n满足可积条件,所以,在方程(44)的解中可消除表面变形的可能。因此,如果高度图的倾斜度符合矢量场n,那么重建的与该高度图相关联的表面不会出现表面变形。
步骤110:在重建的3D表面上执行局部编辑
步骤110是一个可选步骤,用于在重建表面上修改表面细节。因为步骤110的计算成本不高,所以,可在步骤110中实行实时计算。
不用为了在重建表面上修改表面细节而再次插入重建表面的整个域。相反,在一个示例中,用户草图首先通过在草图上添加至少又一笔来修改,接着,基于用户草图中修改的地方重新定义计算域。接着,使用重新定义的计算域执行方程(2)和(41)。
图14(a)和14(b)分别图示了用户草图和从用户草图重建的表面,而图14(c)和14(d)分别图示了具有添加笔划的用户草图(即,具有局部编辑)和具有相应于添加的笔划额外表面细节的重建表面。
如图14(c)所示,在草图的局部域1402中添加了几笔,在局部域中的笔划的周围放置了矩形边框1404(手动或自动)。接着,相应于草图中的矩形边框1404对重建表面的部分做如下修改。
为了基于图14(c)中的添加笔划而将额外表面细节并入重建表面,因此而重新定义计算域。在一个示例中,Ω重新定义为由矩形边框1404包围的域,而Γ重新定义为矩形边框1404包围的笔划(包括新添加的笔划、之前存在的笔划和区域1406)。区域1406包括矩形边框1404中减去边界1402中的区域的区域。接着,沿着笔划Γ分配矢量,然后使用方程(2)插入分配的矢量以形成致密矢量场。接着,重建表面相应于草图中矩形边框的部分通过使用方程(41)重建该部分来修改。使用重新定义的域Ω和笔划Γ来计算方程(2)和(41)。而且,在方程(41)中,Σ可设为区域1406,Σ上的高度信息可用作I0。如图14(d)所示,并入了添加的表面细节,但未改变之前重建表面的几何图形。在图14(a)-14(d)所示的示例中,域的尺寸为64x64像素,局部编辑步骤使用的少于1秒。注意,尽管图14图示了单个局部域1402,但在单个草图中可定义两个或多个分开的局部域。
方法100与现有算法的对比
与现有的基于WIMP的系统比较,使用方法100来重建3D表面更加的直观,花费更少的时间并且不需大量劳动。而且,通过现有SBIM系统重建的3D表面,比如,SKETCH[12],Teddy[13],SmoothSketch[14]和FiberMesh[15],通常要么全部粗糙要么全部平滑且为圆形。换句话说,通过现有SBIM系统重建的3D表面通常不包括表面细节,例如,折痕的形状。而方法100没有这些限制。
方法100同样也优于LUMO[6]和ShapePalettes[7]中的方法。LUMO和ShapePalettes中的矢量插入方法是线性的,而且重建表面并不能如实的反映分配的稀疏矢量。而另一方面,由于存在无旋约束,方法100可如实地反映设置在重建表面中的矢量。尽管这也需要非线性矢量插入,但在方法100中使用了基于增广拉格朗日方法[8]的快速解算器所以使得非线性矢量插入可快速执行。
在一个示例中,一个艺术家以草图的形式描绘了如图15(a)所示的图,图15(e)图示了沿着草图中的笔划分配的矢量。图15(b)和图(f)、图(c)和图(g)以及图(d)和图(h)分别图示了致密矢量场、使用LOMO方法、ShapePalettes方法和方法100获得的重建表面。如图15(f)和图(g)所示,因为LUMO和ShapePalettes方法中的线性度和缺乏无旋约束的促进,所以重建表面中布上的波纹被“抹平”。在ShapePalettes方法中,因为无旋约束不满足跳跃间断点和表面法线中的跳跃点,所以无旋约束会导致重建表面中的表面变形。如果可知关于该间断点的位置的先验信息,就可能防止在使用恰当加权函数时形成表面变形。然而,这种先验信息很少可知。另一方面,因为非线性矢量插入具有加强的无旋约束以及使用了TV规则化方法和增广拉格朗日方法,所以,使用方法100重建的表面清楚地包括布上的波纹。
在另一个示例中,通过使用先前技术方法和方法100而从如图16(a)所示的猫的草图重建表面。图16(b)-(d)分别图示了使用LUMO方法、ShapePalettes方法和方法100重建的表面。如这些图所示,LUMO方法和ShapePalette方法只能重建具有限制形状的3D表面,并且不能保存表面细节。另一方面,由于方法100中用到的无旋条件和非线性插入,所以图16(d)中的重建表面中的表面细节更加尖锐,即,保存得更好。注意,尽管LUMO方法和ShapePalettes方法也可生成与图16(d)相似的重建表面,但还需要大量的额外努力(例如,画额外笔划和执行额外的矢量设置)。这些额外的步骤可以是不直观的。
而且,单一视图建模方法[9,10]需要大量用户互动(和时间)以约束规格,与大多数这种单一视图建模[9,10]相比,方法100中的矢量分配方法是直观而容易操作的。同样,在处理稀疏倾斜度,保存锐度特征和防止表面-梯度建设中的表面变形方便,[7]、[9]和[10]中的算法都是有困难的,参考文献[16]中的作者指出了表面-梯度建设中的表面变形(参考文献[16]使用了没有加强离散可积的高斯核方法来克服该困难)。而另一方面,由于方法100使用了TV规则化方法和强加了具有非线性矢量插入的无旋条件,所以方法100不会面对相同的困难。但是,方法100提供一种非常快速并有效的方法以便通过增广拉格朗日方法解决非线性矢量插入中的能量泛函。
Google SketchUp[17]是基于草图的3D建模软件,其允许3D表面直观而快速的建模。然而,为了使用SketchUp中的程序,用户需要手动指定3D表面的高度。通过鼠标拖动操作或键盘输入来执行该操作。另一方面,可自动估算方法100中重建的3D表面的高度。而且,SketchUp中的系统不是单一视图建模系统,而这种系统可使用方法100来执行。而且,使用方法100的过程也倾向于与传统设计阶段一致,因为在早期设计阶段,在建模和操作3D平面中草图的建模之前,设计者们通常在2D平面画草图。另外,方法100也可使用简单的笔划和快速矢量分配来建模复杂的表面,如图17(a)-(c)所示。另一方面,使用SketchUp来创建自由型表面可能很困难。
本发明的实施例的优点
以下是方法100的主要优点。
在方法100中结合TV规则化方法和H1 规则化方法
之前,表面重建从基于能量最小化方法的稀疏信息而重建,这种表面重建通过使用可见表面表现[30]来执行,其中,加权H1范数数据与其具有离散保真度的倾斜度一起控制重建表面的局部平滑度。然而,要为此估算一个恰当的权重函数是很困难的。之前另一个用于控制局部平滑度的方法是TV范数数据[31]。TV范数数据下的跳跃式间断点很容易在没有加权函数的情况下保存,表面倾斜度的间断点可通过TV范数数据倾斜度来恢复。
在方法100中,TV规则化方法和H1规则化方法在加权方式下结合,以便执行基于笔划的表面重建。通过改变结合所用的权重可容易地控制重建表面的纹理。这不仅可使艺术家们自由地创作各种类型的表面几何图形,还有利于重建几何上重要的结构(见图10和图19)和有利于表面细节的保存而不会引起表面变形(因此,重建表面包括尖锐的表面特征)。因为TV规则化方法的使用,所以产生一些上述优点。TV规则化方法不仅有利于保存矢量场中的间断点,还有利于保存重建表面的倾斜度中的间断点,而不会引起表面变形。因此,跳跃式间断点可保存在重建表面中而不会有过度调节或调节不足。
在方法100中使用具有无旋条件的非线性矢量插入
在方法100中,沿着用户草图中的笔划分配稀疏矢量场,通过执行非线性矢量插入而从分配的稀疏矢量场获得致密矢量场。该插入是通过强加在致密矢量场上的无旋条件来执行的。
方法100中的非线性矢量插入实现了矢量设置的如实反映,方法100中产生的插入矢量几乎在整个域中都满足可积(无旋)条件。这更好地保存了重建表面的表面细节而不会引起表面变形,因此实现了更多对应于给定笔划和矢量设置的所需结构(见图11)。
方法100直观且人性化
方法100可创建如图2(d)所示的重建表面,方法100仅通过使用规则笔划和默认初始矢量设置来创建该重建表面。换句话说,方法100可使用按照艺术家的典型绘画风格的笔划来重建表面。艺术家们通常以自己的风格画出笔划,而不会耗时设置笔划类型或修改矢量以创建更多所需表面。因此,方法100直观且人性化。
初始矢量可自动分配到用户草图中的笔划上,初始矢量是基于例如默认初始矢量设置而分配到笔划上的。在一个示例中,分配的矢量与笔划切线正交并且分配的矢量幅值相同。自动将矢量分配到用户草图中的笔划上比手动分配矢量(例如,基于如[7]中执行的3D参考文献建模来分配矢量)更具有优势,因为其减少了用户的工作量,因此使得方法100更加人性化。
然而,自动分配的矢量仍可由用户调节以便形成更详细的表面形状。在一个示例中,用户可调节分配矢量的幅值和方向,用户基于其对所需表面的想象通过使用键盘或鼠标来修改。这比输入表示表面高度的数值更直观。
能够通过使用不同的笔划类型和/或加权函数g而创建不同类型的表面几何图形。
为了重建更加复杂的表面,用户可选择使用各种笔划类型来创建不同的几何关键结构,比如,脊状、谷状、跳跃式、隆起式和倾斜式笔划。在方法100中,根据待形成的所需表面对笔划进行分类。不同的笔划类型有利于用户在重建表面中创建所需结构。这些结构可从相应2D笔划(见图18和19)直观想象而来,因此,艺术家们可创建可从2D笔划直观感知的表面。几何上有意义的矢量基于所需表面的几何图形而分配到各种类型的笔划上。这些分配的矢量可以是表面法线矢量在具有用户草图的2D平面上的投影。方法100可成功地将这些稀疏的分配矢量转换到重建表面的所需结构上。
也可通过调节方程(2)中的加权函数g来形成更加复杂的表面。例如,为了重建倾斜度中包括间断点的表面,可将草图分为不同的纹理区域,用户只需确定哪个纹理区域应该包含间断点。这不像现有的方法(例如,参考文献[16]中的算法)这么单调冗长,对于现有的方法,必须表明倾斜度间断点在域中的准确位置。
图19(a)图示了猴子的用户草图。在图19(a)中,用户草图分为两部分:右边的纹理部分和左边的未加纹理部分。在右边的纹理部分设置g=0,在左边的未加纹理部分设置g=1,这就产生了图19(b)中的重建表面。如图19(b)所示,该重建表面包括不同的几何结构,右边的几何结构尖锐,左边的几何结构平滑。
图19(c)-19(d)图示了使用各种笔划类型来重建具有倾斜度或跳跃式间断点的表面;图19(c)图示了具有不同笔划的猴子的用户草图,而图19(d)图示了从图19(c)重建的表面。如图19(d)所示,重建表面保存了间断点而没有任何变形,并且重建表面清晰地包括根据用户草图中的笔划类型所需的特征。
方法100的速度和低计算成本
与例如参考文献[16]中的算法相比,方法100需要更少的笔划来创建特定质量的重建表面。而且,在方法100中可执行局部编辑,通过添加几个表面细节到之前的重建表面来执行局部编辑,不需要在整个域中插入。然而,其仅需要基于在用户草图中的修改位置来重新定义域。
而且,在方法100中使用增广拉格朗日方法有利于克服在解决约束最小化问题中遇到的困难。即使在方法100中矢量插入和高度图重建都执行了非线性过程,但结果仍然可通过使用快速且有效的数值解算器来实现,数值计算器基于拉格朗日方法[32]。这减小了重建3D表面的建模过程所需的计算时间并提高了建模过程的速度。在方法100中,可在低计算成本和高计算速度下通过使用增广拉格朗日方法并基于CUDA的GPU计算来执行非线性插入。在一个示例中,通过使用英伟达科卓(nVidia Quadro)FX1800,大小为512x512像素和256x256像素的域分别需要少于15秒和5秒的计算时间。较低计算速度可取决于用户草图。
表1图示了执行的迭代次数和用于创建一些上述图中所示重建表面的计算时间(Intel(R)Xeon(R)CPU E5520@2.27GHz,NVIDIA Quadro FX1800)。
如果草图包括跳跃式、隆起式或倾斜式笔划,为了重建表1所示图中的表面,就执行两次插入。执行第一次插入是为了从规则、脊状和谷状笔划重建3D表面,执行第二次插入是为了在第一次插入后在重建表面上创建跳跃式、隆起式和倾斜式结构。这保存了跳跃式、隆起式或倾斜式结构周围的几何图形,如图2(d)、10、18和19所示。在表1中,“-1”表示该图中的结果是第一次插入后获得的,而“-2”表示该图中的结果是第二次插入后获得的。
如果Ω上出现ξ=0和h=1(即,用户草图不包括跳跃式笔划),就不需要使用迭代算法来解方程(41),这是因为仅通过方程(41)来获得高度图。在表1中,步骤108中的“迭代次数”栏中的破择号“-”表示,为了获得图中的结果,不需要进行迭代以解方程(41)。步骤108中“时间”栏中的破择号“-”表示不执行步骤108。为了重建表1所示图中的表面,如果用户草图中无跳跃式笔划,那么将以下参数η=100,cr=10,cc=1和cf=1用于方程(6)中。如果用户草图中有跳跃式笔划,那么将以下参数ξ=0和μr=0.01用于重建步骤中,即,方程(43)中。
而且,为了计算表1中的统计数据,算法1中的误差范围ε在步骤106中设为0.001,在步骤108中设为0.05(如果需要迭代算法的话),表1中所有数据的误差范围都像这样设置。使用表1进行对比,保持了计算成本统计数据的一致性。然而,要注意,为了减小需要的计算时间,可选择一些较大的误差范围来重建一些表面。
如表1所示,在上述表中,重建表面不需要迭代。而且,重建表面的质量相当高,且可在短时间内获得。因此,由此可下结论:可快速且低计算成本地实施方法100。
表1
方法100的多个应用
方法100不仅仅能够重建静态3D表面。其还能够通过逐渐改变分配到用户草图上的矢量创建由一系列静态3D表面组成的动画序列。例如,用于动画序列的多个框架可通过迭代地从用户草图重建3D表面来创建,其中,每次迭代中沿着用户草图中的笔划分配的矢量都不同。因此,方法100可用在动画工具中创建动画短片剪辑。图20(a)-(d)图示了从使用方法100形成的示例动画序列中选择的多个框架。改变沿着形成第一表面的笔划分配的矢量的幅值,每次矢量幅值改变时就重建表面,动画序列就是这样生成的。各个重建3D表面都是动画序列的框架。通过不仅改变分配的矢量的幅值,还改变其方向,这样可形成更加复杂的动画序列。
而且,方法100还可用于其它应用中,例如,2D卡通着色[35]、[36]和[37]或几何误差修订[38]等。也可使用方法100开发基于草图的表面建模软件,该软件可用于各种设计应用中,用于基于用户草图轻易、快速并准确地重建复杂3D表面。
参考文献
[1]AutoDesk Maya
http://usa.autodesk.com/adsk/servlet/pc/index?id=13577897&siteID=123112
[2]AutoCAD.
http://usa.autodesk.com/adsk/servlet/pc/index?id=13779270&siteID=123112
[3]SolidWorks.http://www.solidworks.com/
[4]CATIA.http://www.3ds.com/products/catia
[5]L.Olsen、F.F.Samavati、M.C.Sousa和J.A.Jorge,基于草图的建模:调查,计算机&制图法,2009-02.33(1):88-103。
[6]S.F.Johnston,2002.鲁磨:用于更新影像绘制动画的照明,NPAR’02:第二次非可见动画和绘制国际会议议程,ACM,纽约,
纽约州,美国,第45–52页。
[7]T.-P.Wu、C.-K.Tang、M.Brown和H.-Y Shum,2007,Shapepalettes:通过绘图的交互式法线转换,ACM图形学汇刊,第26卷,第307期,第44条。
X.-C.Tai和C.Wu,用于ROF建模的扩张拉格朗日方法、对偶方法和分裂布雷格曼迭代,SSVM’09:第二次关于尺度空间和计算机视觉的各种方法会议议程,柏林,2009,斯普林格出版社,第502-513页。
[9]Zhang L.、Dugas-Phocion G、和Samson J.-S,2002,单一视图自由形式的场景建模,可视化和计算机动画期刊13,第225-235页。
[10]M.Prasad和A.Fitzgibbon,2006,曲面单一视图重建,2006关于计算机视觉和模式识别的IEEE计算机协会会议议程,第2卷,第1345-1354页。
[11]J.Hahn、C.Wu和X.-C.Tai,2010,广义TV笔划建模,UCLA CAM报道10-30,2010年。
[12]R.C.Zeleznik、K.P.Herndon和J.F.Hughes,草图:画3d场景的接口,第23届关于计算机图形学和交互技术年会会议议程,第163-170页,1996-08。
[13]T.Igarashi、S.Matsuoka和H.Tanaka,泰迪:用于3d自由设计的绘图接口,第26届关于计算机图形学和交互技术(Siggraph1999)年会会议议程,第409-416页,1996。
[14]O.A.Karpenko和J.F.Hughes,平滑草图:复杂草图的3d自由形状,第33届关于计算机图形学和交互技术(Siggraph2006)年会会议议程,第589-598页,2006。
[15]A.Nealen、T.Igarashi、O.Sorkine和M.Alexa,纤维网:设计具有3D曲线的自由形表面,ACM图形学汇刊(Siggraph2007),26(3):第41条,2007-07。
[16]H.-S.Ng、T.-P.Wu和C.-K.Tang,2009,没有离散可积强加的表面-倾斜度:高斯核方法,IEEE关于模式分析和机器智能汇刊。
[17]Google导入http://sketchup.google.com/。
[18]R.J.Woodham,从多个图像确定表面方向的光度测量法,明暗恢复形状,第27卷,第513–531页,1989。
[19]A.Hertzmann和S.M.Seitz,基于示例的光度立体:从常规的各种brdfs重建图形,IEEE关于模式分析和计算机智能汇刊,第27卷,第1254–1264页,2005。
[20]T.-P.Wu和C.-K.Tang,期望最大化的致密光度立体,计算机视觉-EOCV2006,第3954卷/2006,第159–172,2006页。
[21]R.Zhang、P.-S.Tsai、J.E.Cryer和M.Shah,由明暗到形状:调查,IEEE关于模式分析和计算机智能汇刊,第21卷,第8号,第690-706页,1999-08。
[22]E.Parados和O.Faugeras,由明暗到形状,斯普林格出版社,2006。
[23]Y.Gingold、T.Igarashi和D.Zorin,2d至3d建模的结构化注释,ACM图形学汇刊(Siggraph Asia2009),第28卷,第5号,第148条,2009-12。
[24]L.Olsen、F.F.Samavati、M.C.Sousa和J.A.Jorge,基于草图的网格增强,第二次关于基于草图的接口和建模(SBIM)欧洲研讨会会议议程,2005。
[25]A.Agrawal、R.Raskar和R.Chellappa,从倾斜度场重建表面的范围是什么,计算机视觉C EOCV2006,第578–591页,2006。
[26]R.T.Frankot、R.Chellappa和S.Member,加强由形状到明暗算法中的可积性的方法,IEEE关于模式分析和计算机智能汇刊,第118–128页,1987。
[27]N.Petrovic、I.Cohen、B.J.Frey、R.Koetter和T.S.Huang,使用图形建模中的置信传播来加强用于表面重建算法的可积性,计算机视觉和模式识别,IEEE计算机协会会议,第1卷,第743页,2001。
[28]T.Simchony、R.Chellappa和M.Shao,解决计算机视觉问题中的泊松方程的直接分析方法,IEEE关于模式分析和计算机智能汇刊,第12卷,第435–446页,1990。
[29]J.J.Koenderink,写景,哲学汇刊:数学、物理和工程科学,第256卷,第1740号,第1071-1086页,1998-03。
[30]D.Terzopoulos,可见表面呈现的计算,IEEE关于模式分析和计算机智能汇刊,第10卷,第417–438页,1988。
[31]L.I.Rudin、S.Osher和E.Fatemi,基于滤波算法的非线性全变差,自然史D,第60卷,第259–268页,1992。
[32]C.Wu、J.Zhang和X.-C.Tai,用于具有非二次失真的全变差恢复的扩张拉格朗日方法,UCLA CAM报道09-82,技术报道,2009。
[33]F.Cole,A.Golovinskiy、A.Limpaecher、H.S.Barros、A.Finkelstein、T.Funkhouser和S.Rusinkiewicz,人们在哪里画线,第35次关于计算机图形学和交互技术(Siggraph2008)年会会议议程,2008。
[34]H.Winnemoller、A.Orzan,L.Boissieux和J.Thollot,2d图像中的纹理设计和覆盖,第4号,第1091–1099页,2009。
[35]K.ichi Anjyo和K.Hiramitsu,用于卡通绘制和动画的程式化突出,IEEE计算机图形学和应用,第23卷,第4号,第54–61页,2003。
[36]K.ichi Anjyo、S.Wemler和W.Baxter,卡通动画的可调节灯光和可调节明暗,NPAR2006的会议议程,2006,第133–139页。
[37]H.Todo、K.ichi Anjyo、W.Baxter和T.Igarashi,局部可控制程式化明暗,ACM关于图形学(Siggraph2007)汇刊,第26卷,第3号,第17条,2007-08。
[38]J.Tao,多边形建模的固定几何误差:调查,计算机科学和技术期刊,第24卷,第19–29页,2009。
[39]A.Chambolle,全变差最小化和应用的算法,数学成像视觉期刊,第20卷,第89–97页,2004。
[40]T.Chan、G.Golub和P.Mulet,用于基于全变差的图像恢复的非线性原始对偶方法,SIAM科学计算期刊,第20卷,第1964–1977页,1999。
[41]T.Goldstein和S.Osher,用于L1规则化问题的分裂布雷格曼方法,SIAM图像科学期刊,第2卷,第323–343页,2009。
[42]G.Steidl和T.Teuber,通过douglas-rachford方法移除乘性噪声,数学成像视觉期刊(已接受)。