基于深度检索的树木建模方法

文档序号:6603356阅读:242来源:国知局
专利名称:基于深度检索的树木建模方法
技术领域
本发明属于计算机图形学和计算机视觉技术领域,涉及一种根据草图进行树木建 模的方法。
背景技术
计算机游戏设计、三维电影制作等应用领域需要大量具有逼真视觉效果或者特殊 视觉效果的植物模型。植物建模系统在这些领域中的应用要满足建模速度和视觉效果两个 方面的要求。因此研究使用方便、运行速度快、可以随心所欲改变模型效果的植物建模方法 对实际应用具有重要意义。目前的植物建模方法大致可分为四大类第一类是基于植物学知识对植物形态进行建模的方法。这类方法主要考虑植物生 长规律,如Lindenmayer提出的L系统;第二类是基于图像的植物建模方法。这类方法以植物图片作为输入信息,通过各 种视觉重建方法构建植物模型,如2006年Quan提出的植物建模方法;第三类是基于三维扫描的植物建模方法。这类方法以三维扫描数据作为输入构建 植物模型,如2006年Xu提出的树木建模方法;第四类是基于手工交互的植物建模方法。这类方法以用户勾画的二维草图作为输 入,或通过三维交互直接控制输出的三维模型形状,如2005年Okabe提出的植物建模方法。基于生长机理的方法适用于生长模拟、农业分析等,但是一般需要调整参数,不便 于控制输出,因此不适用于真实植物建模;基于三维扫描的方法以树的三维扫描数据作为 输入,几何信息丰富,精度高,适用于对模型精度要求较高的应用,但三维扫描设备价钱昂 贵,扫描过程花费时间较长,三维数据量大,不适于快速建模;基于图像的方法输入信息获 取方便,建模方法灵活,可适用于各种精度要求的应用,但它比基于三维扫描的建模精度 低;基于手工交互的方法是一种更加灵活的方法,可用于树模型的设计。

发明内容
本发明的目的在于,针对现实世界中存在的树木,提供一个基于图像和草图的、能 够反映树木主要形态的快速建模方法,并使该方法可用于各种树木模型设计。为实现上述目的,本发明提供一种基于深度检索的树木建模方法,该树木建模方 法的步骤包括步骤1 用户在两幅树木图片上用单像素画笔或者画刷手工勾画出具有树冠轮 廓、具有不同的主枝笔画的树木草图,将具有不同的主枝笔画的两幅草图输入到图像处理 设备;步骤2 图像处理设备对草图中每个主枝笔画像素的近邻像素进行分析,从而提 取二维骨架;步骤3 对两个二维骨架进行深度检索,构建三维主枝骨架,使该三维骨架在两个输入方向的平行投影满足二维骨架约束;步骤4 以构建的三维主枝骨架为模版,在二维树冠轮廓约束内,通过主枝的复 制、平移、旋转操作构建第一级细枝骨架,然后以第一级细枝骨架为模版按相同方法构建第 二级细枝骨架,依此类推,得到指定级数的细枝骨架;步骤5 根据对骨架切向量、法向量和副法向量的估算创建广义圆柱,通过圆柱拟 合得到树枝的几何模型;步骤6 在树枝几何模型上添加叶子或水果完成整个树木模型,每个叶子或水果 由映射了一个四通道图像纹理的四边形来表示,将一个序列的叶子模型放置到细枝骨架点 上,然后在叶子位置、叶子朝向以及叶与枝的距离参数中引入随机因素。其中,述树木图片是反映树木侧面形态的图片。其中,针对单像素的笔画采用局部分析和连接的方法提取二维骨架。其中,针对具有半径信息的画刷笔画通过笔画像素扫描、中心点判别、中心点简化 以及骨架点连接提取二维骨架。其中,所述二维骨架具有子家族特征、父家族特征、最大扩展高度特征和父家族路 径特征。其中,所述深度检索方法是通过特征匹配查找两个二维骨架的对应枝,将每对对 应枝的一枝作为深度信息,将另一枝扩展到三维空间。其中,从两个对应枝构建一个三维枝前,需要对两个对应枝进行连通性判断和枝 的延长。其中,两个对应枝的每对对应点具有相同的纵坐标,从两个对应点构建一个三维 点的过程是取其中一个点的X轴、Y轴坐标作为三维点的X轴、Y轴坐标,取另一个点的X轴 坐标作为三维点的Z轴坐标。其中,通过复制部分父枝并在一定的夹角约束范围内,将复制的部分父枝连接到 父枝节点上得到相应子枝。本发明的有益效果是提出了一种基于图像和草图的快速建模新方法,该方法利用 图像信息和智能交互构建三维形态。本发明与前人方法的区别主要体现在二维信息的匹配 不是通过图像配准和相机标定,而是通过枝的特征分析和特征匹配,因此,本发明的计算时 间和模型效果较以往方法优越,实验表明,构造的树木模型保留了二维输入信息,并具有真 实感。该发明利用图像信息和手工交互创建二维输入,通过像素分析提取二维骨架,通 过特征分析和特征匹配查找两个二维骨架的对应枝,通过深度设置得到三维主枝,最后添 加细枝和叶子。本发明所获得的建模结果能用于计算机图形学各应用领域,包括计算机游 戏、三维电影、网络漫游、城市景观设计等。利用本发明可快速创建各种具有真实感的树木 模型。


图1示出本发明方法流程图。图2 (a)至图2 (f)示出由单像素笔画构建二维骨架。图3(a)至图3(f)示出笔画像素点0处的局部分析和连接。
图4(a)至图4(d)示出由画刷笔画构建二维骨架。图5示出中心点判别。图6 (a)至图6 (c)示出点H处的像素简化。图7 (a)至图7 (b)示出骨架连接。图8示出两幅图像以及三维模型的参考坐标系。图9示出二维骨架中的结构特征定义。图10示出经过高度V的枝。红色的枝a、b和c为图示二维骨架中经过高度V的枝。图11示出深度检索方法流程图。图12示出由两个二维对应枝构建三维枝。图13(a)至图13(f)示出对应枝的反向延长过程。图14(a)至图14(c)示出构建的三维主枝骨架及其骨架点在输入图片上的投影。图15示出细枝生长过程。图16示出细枝建模原理。图17(a)至图17(g)示出基于两幅图片、以不同的笔画作为输入得到的两个桃树 模型的对比。图18(a)至图18(h)示出基于一幅图片的葡萄树建模。图19(a)至图19(g)示出从画刷勾画的草图构建树木模型。图20(a)至图20(c)示出本发明方法与Neubert方法的效果对比。图21 (a)至图21 (c)示出本发明方法与Tan方法的效果对比。图22 (a)至图22 (b)示出由两个不同的桃树模型和一个苹果树模型构成的虚拟树 林场景。该树林包含100棵树木,分布于60米X 60米区域内。
具体实施例方式下面结合附图详细说明本发明技术方案中所涉及的各个细节问题。应指出的是, 所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。1、方法概述(overview of approach)图1给出了整个方法的流程。本发明方法的主要步骤包括1)、草图的创建;2)、二维骨架的提取,分两种情况(a)基于单像素笔画的二维骨架提取、(b)基于 画刷笔画的二维骨架提取;3)、三维主枝骨架的构建,包括5个子步骤(a)建立三维坐标系、(b)骨架的特征 定义、(c)深度检索、(d)枝的反向延长、(e)缺失骨架的补充;4)、细枝建模;5)、树枝几何模型创建;6)、叶子建模;7)、树木模型的绘制输出。在本发明说明书中,“树木”是由全部树枝和叶子组成的完整植物;“树枝”指树木 中叶子以外的部分,树枝分为主枝和细枝两种;“主枝”是指树木的主要树枝,由较粗的树枝组成;“细枝”指树枝中主枝以外的部分;“树干”指树的主茎;“树冠”指树木中树干的上部及其枝叶。2、草图的创建图2(a)至图2(f)示出由单像素笔画构建二维骨架;图2(a)和图2(d)为一棵桃 树的两张照片;图2(b)和图2(e)为在照片上用单像素笔勾画出主枝和树冠轮廓的草图; 图2(c)和图2(f)为构建的二维骨架。该建模方法以两幅相同像素大小的、勾画有不同主 枝和树冠轮廓的草图作为输入。一棵树的反映其两个侧面(近似成直角)的两张照片或者 反映其一个侧面的一张照片可以用于创建草图。以两张照片的情况为例,用户在每幅照片 上用单像素笔或者画刷勾出树的主枝和树冠轮廓。在空白图像上,也可以通过想象勾画主 枝和树冠轮廓作为草图。草图创建过程一般需要2 3分钟。3、二维骨架的提取本发明采用两种二维骨架提取方法,分别用于从草图上的单像素笔画和画刷笔画 中提取二维骨架。3. 1基于单像素笔画的二维骨架提取从单像素笔画提取二维骨架的方法适用于所有笔画都是连通的情况。该方法主要 通过分析每个笔画像素近邻情况得到下一个连接点。图2给出了一个构建二维骨架的实 例。图3 (a)至图3 (f)示出笔画像素点0处的局部分析和连接过程。已知G、D和0是 该区域已确定且已连接到当前枝的骨架点,为了获得0后面的新的骨架点,在0处进行如下 局部分析1)、读入笔画像素点0。2)、搜索0的8近邻像素和16近邻像素,以及该区域已确定的骨架点。对于任意一 个笔画像素点0,本发明称处于紧邻它的第一层8个位置的笔画像素为0的“8近邻像素”, 而处于其第二层16个相连位置的笔画像素点为0的“16近邻像素”,如图3(b)所示,A、B、C 和D是0的8近邻,Ε、F和G是0的16近邻。由已知条件知G、D和0是已确定的骨架点, 如图3(a)所示。3)、0的16近邻聚类。根据像素位置,相邻的16近邻像素聚类为一组,这样所有 的16近邻像素会聚类成一些不相邻的像素组。如图3(c)所示,所有的16近邻像素聚类成 三个组,且每个组只有一个像素,即Ε、F、和G各成一组。4)、确定“外部有效组”和“内部有效像素”。对于由16近邻像素聚类成的任意一 个像素组,如果其中不包含已确定的骨架点,那么这一组称为“外部有效组”;对于所有8近 邻像素,如果它不是已确定的骨架点,那么它被称为“内部有效像素”。如图3(d)所示,E和 F为两个外部有效组,A、B和C为三个内部有效像素。5)、确定新骨架点。对于每一个外部有效组,选取任意一个相邻的内部有效像素作 为新的骨架点,例如图3(e)所示的A和C。这样就得到了像素0后面的新骨架点。在像素点0处进行局部分析后,得到了新的骨架点Pi, i = 1,2...N0分以下几种 情况进行连接处理1)、如果N= 1,将这一点P1作为一个新骨架点连接到当前枝。然后在P1进行同 样的局部分析找到后面的骨架点。
2)、如果N>l,在Pi,i = 1,2... N中选择一点,例如Px,作为当前枝新的骨架点, 然后在这一点进行同样的局部分析。选取当前枝新的骨架点的原则是尽量选取与当前枝 切向夹角较小的点。其余的点作为其它新枝的第二节点(它们的芽节点为0)被保存下来, 等待后面的处理。如图3(f)所示,A作为新的骨架点被连接到当前枝,C作为一个新的第二 节点保留下来(芽节点和第二节点的定义在4. 2中)。3)、如果N = 0,当前枝结束。如果存在新的第二节点,那么转到这个节点进行局部 分析。如果不存在这样的节点,连接过程结束。该方法从最低的笔画像素点开始进行局部分析,直到所有的像素都经过处理最后 连接成一个树状的骨架。3. 2基于画刷笔画的二维骨架提取图4(a)至图4(d)示出由画刷笔画构建二维骨架。图4(a)示出画刷笔画;图4(b) 示出二维骨架;图4(c)示出画刷笔画;图4(d)示出二维骨架。在基于深度检索的建模系统 中,用户可以使用画刷勾画主枝,并且用粗细不同的笔画代表不同的树枝半径。这种从画刷 笔画中快速提取二维骨架的方法主要通过横向和纵向的扫描获取笔画像素中心点,然后将 中心点连接起来构建骨架。该方法不要求所有笔画都是连通的。它可用于从树状区域快速 提取带有半径信息的二维骨架。3. 2. 1中心点判别首先在每个图像上搜索合格的笔画像素中心点作为候选的骨架点。在每幅勾画了 主枝的图像上,从左到右横向扫描每一行像素,查找所有笔画像素点,并记录每一笔画的两 个水平边界点,求出它们的中心点和对应直径(即为两个水平边界点距离)。如图5所示 的中心点判别过程为在一个水平扫描线上,点P为一笔画的中心点,该点处的枝的直径为 屯。在点P所在的竖直方向上,向上向下搜索P点所在笔画的两个竖直边界点,其距离为d2。 如果屯< d2,则P是一个合格的中心像素点,否则P就被舍去。然后对同一幅图像,本发明 纵向扫描每一列像素,以相似的方法得到一组中心像素点并进行判别,如果该点所在笔画 的竖直边界距离小于等于其水平边界距离,则该点为合格的中心像素点,否则被舍去。这样 可以得到两组合格的中心点,将其合并为一组作为候选骨架点。3. 2. 2中心点简化根据位置关系,得到的合格的中心像素点可聚类成一个个像素组。所有相连的像 素点聚类为一组。以H为例,在每个小组内每个像素处的简化过程如下1.读入某小组的像素H ;2.在该组内查询H的8近邻像素,如果8近邻像素数大于2,转到第3步,否则转 到第1步;3.在该组内查询H的16近邻像素。对于H的每一个16近邻像素,任意选取一个 与之相连的8近邻像素。所有选取的8近邻像素组成像素组S。4.简化。对于所有8近邻像素,如果包含在像素组S中或者具有横纵坐标极值,那 么就被保留下来,其余8近邻像素都作为冗余点被去除。这样可以保证有最少的8近邻像 素点与16近邻像素相连。图6(a)至图6(c)示出点H处的像素简化。如图6(a)示出初始像素分布,像素点 A H、i、j是聚类得到的一个像素组的一部分;如图6(b)示出简化后分布(一种可能情
7况),在H点的简化完成后,去除了五个像素,保留了两个像素——A (或者G)和C (或者D、 E),因为这两个像素分别将16近邻点i和j与H相连;图6(c)示出一个像素简化实例。3. 2. 3骨架连接 每个像素点处的简化完成后,剩余的像素都可以看作二维点。在每个像素组中,需 要找到一个起始点,从这一点开始将组内的所有点连接成一个点序列,即树枝的初始形态。为了确定一个组的起始点,根据组内每个点的位置和近邻情况为其打分,得分最 高的点作为该组的起始点。每个点的初始分数为0,分数计算过程如下第一步如果该点的横坐标值为该组所有点横坐标值的最大值或者最小值,则该点 分数值加3,否则不加分;第二步如果该点的纵坐标值为该组所有点纵坐标值的最大值或者最小值,则该点 分数值加3,否则不加分;第三步如果该点只有一个8近邻点,则该点分数值加2,否则不加分。经过上面三步判断,得分最高的点就是起始点(如果有两个或者更多的点得到相 同的最高分,那么就任选一个作为起始点)。从起始点开始,所有点依次连接成一个序列,在 这个过程中要保证每个点最多与两个点相连。在每个序列中,所有点都是从起始点到末端点依次相连。我们为每个序列设置的 初始方向为从它的起始点到末端点方向。骨架的连接过程是从一个具有最低端点的序列 开始,沿着序列点不断搜索并连接其余序列,最终形成一个完整骨架。“具有最低端点的序 列”的起始点或者末端点在所有序列端点中具有最小的纵坐标。从最低端点开始,沿着该点所在序列向它的另一端点移动一个圆,这个圆以序列 点为圆心,以每一点的骨架半径的2倍为半径。在移动过程中,被包围进这个圆的其它序列 的端点就被连接起来。如图7(a)所示,三个不同颜色的序列尚未连接,A、B、C分别为三个 序列的起始点,从最低的端点A开始,沿着红色的序列移动一个圆;在这个过程中黄色序列 和绿色序列都分别被连接进来,并且每个序列的方向得到了矫正,如图7(b)所示。用这种 方式,所有的序列都可以被连接起来,组成树状的具有分级结构的二维骨架。4、三维主枝骨架的构建本发明采用深度检索算法根据两个图像平面上的二维骨架A和B构建三维主枝。 该算法的主要流程是对于二维骨架A的任意一个枝,例如λ 1,首先在二维骨架B中查找一 个对应μ \然后入1人对应枝μ ^获得深度信息,转化为一个三维枝。三维构建过程在骨架 A中按照枝的连接级别依次进行,该过程中需要保证构建的所有三维枝都是连通的。4. 1建立三维坐标系图8示出两幅图像以及三维模型的参考坐标系。图像A以ΧΑ、ΥΑ*坐标轴;图像B 以XB、Yb为坐标轴;三维模型在ΧΑ、\、Za确定的坐标系中。两幅输入草图A和B可以看作 一棵树的主枝的成直角的两个侧面。通过两个草图的位置关系可知草图B是草图A的深
度{曰息。4. 2骨架的的特征定义树枝骨架是一个分支结构,每一个树枝由一系列的骨架点(从芽节点到末端节 点)组成。一个二维骨架可以由下列符号描述A = Ui ;i = 1,2...ΙΑ},其中二维树枝Xi由二维骨架点组成,艮P
,心和沁分别为骨架点的横遷坐标,么为该点处树枝的半径。对于任意一个三维骨架C,有C= {nk;k = 1,2. ..KJ,其中

下面以树枝
}为例介绍二维骨架中的结构特征
定义,如图9所示。 芽节AP1 树枝λ的第一个骨架点,它与λ的父枝相连; 第二节点P2 树枝λ的第二个骨架点,在芽节点之后; 末端节点Pm 树枝λ的最后一个骨架点,即枝的末端; 起始高度b ( λ )树枝λ的芽节点P1的纵坐标值,即少 ; 结束高度eU)树λ的末端节点Pm的纵坐标值,S卩义; 最小高度hU)树枝λ的所有骨架点的纵坐标值中的最小值; 最大高度Η(λ)树枝λ的所有骨架点的纵坐标值中的最大值; 子家族uU)树枝λ及其所有子代; 父家族(1(λ)树枝λ及其所有父代; 最大扩展高度Μ( λ)树枝λ的子家族ιι(λ)中骨架点的最大纵坐标值; 父家族路径ρ(λ)树枝λ的父家族(1(λ)中从树枝λ末端到树的根点的整 个连通路径。 树的根点整个骨架的起始点,即树的根部节点。定义一个树枝的“子家族”包括该树枝本身、它的所有子枝、子枝的子枝等所有子 代枝。一个树枝的“父家族”包括该树枝本身、它的父枝、父枝的父枝等等一直到树的根点。 例如,对于一棵树的树干来说,它的子家族就是这棵树的所有树枝,而它的父家族只包含它 本身。一个树枝的“最大扩展高度”可以通过在它的子家族中搜索纵坐标最大的骨架点得 至IJ。另外,对于给定高度V,在一个二维骨架中“经过高度V的枝”指的是那些包含一个或多 个纵坐标为V的骨架点的枝,如图10所示,a、b和c为该骨架中经过高度V的枝。4. 3深度检索深度检索方法的流程图如图11所示。假设在二维骨架A中,三维构建过程进行到 了枝Xi的芽节点,进行到的高度(即当前高度V)为Xi的芽节点的纵坐标(即枝Xi的 起始高度b ( λ 0,因此当前高度V = b ( λ D。在二维骨架B中搜索所有“经过当前高度V’ 的枝,这些枝组成一个树枝组&。由于骨架A和B都是连通的树状结构并且高度相似,因此 在大多数情况下Gi至少包含一个树枝。通过特征匹配,可以在树枝组Gi中检索到Xi的对 应枝yj。然后由二维枝Xi和μj构建一个新的三维枝nk。下面详细介绍特征匹配和三 维枝构建过程。任意树枝χ的最大扩展高度M(X)是χ的一个结构特征。对于从单像素笔画提取 的二维骨架,在公式ι中,本发明定义了一个线性判别方程&00 ;对于从画刷笔画提取的 带有半径信息的二维骨架,公式ι改写为2,其中增加了枝X和枝λ i在高度V处的半径比 较(两个枝在V处的半径分别为r (x,V)和r ( λ i,V),k”k2都是常系数)。在树枝组Gi中, 能够使Fi(X)取得最小值的枝,即公式3中的就是树枝Xi的对应枝。
Fi(x) = M(x)-M(Ai)(1)Fi(x) = kx |M(x)-M( A 0 |+k2 |r (x, V)-r ( A \ V)(2)uJ = arglminlF^x), x G Gj}(3)由二维枝入1和一构造三维枝nk的过程可概括为在相同高度(纵坐标)处, 每个二维枝各取一点作为对应点来构造一个三维点,所有三维点构成一个三维枝。两个二 维枝高度重合的部分,即每个枝用于构造三维枝的部分定义为该二维枝的“有效部分”。三 维构造过程遵循以下规则1)、假设枝人1上的二维点Pj ( x[a,y[a,rla )和枝"上的二维点 QJP (xlP, y2LP, ☆)具有相同的纵坐标,S卩yl = ylP,则它们可以构造nk的一个三维点 s; ( xl, yl, zlr,心),其坐标满足x\y = x\a(4)ylr = yla = ylP(5)zly = x2jp(6)rl7=(r (7)2)、如果枝^的最大高度小于等于一的最大高度,即彡H(V),那么A1 的所有二维骨架点都可以被转化为三维点。接下来可以处理骨架A下一个枝Xi+1。3)、如果枝^的最大高度大!^的最大高度,即对^) >H(yj),那么三维构建
过程会停在\ 1的一个中间点巧(< ,//仿々+ 1,么)。在当前高度V = H(u j)+l处,通过特
征匹配为入1的剩余部分(由巧后面的骨架点组成的部分)找到一个对应枝,然后再进行
三维构建。图12给出了一个由二维枝构建三维枝的实例。图中骨架A由枝a、b、c组成,骨架 B由枝d、e、f、g组成,其中枝a和d为对应枝。由两个对应枝上任意相同高度处的两个点, 例如 a 的二维点 PQ(X(1,y0, z0, r0)和 d 的二维点 P' Q(x' 0, y' 0, z' 0, r' 0)(这两个点 满足条件yQ = y' o)可以构造三维枝的一个点P(x,y,z, r),点P满足x = x0, y = y0 = y' o'Z = x' 0,r = (r0+r' J/2。由于枝a的最大高度大于枝d的最大高度,三维构建过 程会停在枝a的Pi点。在骨架B中查找经过Pi点高度的树枝,得到两个枝——e和f。显 然Fa(f) ^ Fa(e),因此枝f为枝a剩余部分的对应枝,可以继续进行三维构建。为了保证最后得到的三维骨架是连通的,当得到一对对应枝后,例如枝入1和P J, 需要首先判断由它们直接构造的三维枝是否和之前形成的三维骨架是相连的。如果不相 连,那么就需要先把它们的有效部分(可用于构建三维枝的部分)沿着各自的父家族路径 反向延长到一定的位置,然后再按前面的三维构造方法构建三维枝。下面就详细讨论枝的 反向延长的问题。4. 4枝的反向延长按照枝的连接级别顺序,三维构建过程会依次遍历A的所有枝。然而在骨架B中, A的那些对应枝可能是不连通的,这就会导致构造的三维骨架是不连通的。为了得到一个 连通的三维骨架并且保证三维骨架在两个方向的投影符合二维输入的约束,当通过特征匹 配得到一对对应枝后,要进行连通性的判别,如果不满足条件,就需要将两个枝的有效部分(用于构建三维枝的部分)沿着其各自的父家族路径反向延长到一定的位置,然后再用这 两个枝新的有效部分构建三维枝。下面以图13(a)至图13(f)所示为例详细介绍具体的判 别和延长处理过程。为了更具有普遍性,取三维创建过程中任意一个中间状态进行说明。二维骨架A和B是由笔画提取得到的一棵树的两个二维骨架(图13(a))。如图 13(b)所示为当前状态在骨架A中,假设当前时刻三维构建过程进行到了枝a的芽节点Pa, 那么枝a为“Α的当前枝”,Pa为“a的当前点”,a中Pa以上的部分为“a的有效部分”。通过 特征匹配,骨架B中的枝b被选为a的对应枝,并且已知a的Pa点和b的Pb点具有相同的 纵坐标,那么Pb为“b的当前点”,b中Pb点以上的部分为“b的有效部分”。骨架A和B中 的绿色枝为当前时刻之前三维构建过程中形成的对应枝。假设这些绿色的对应枝都进行了 连通性判别和延长处理,在每个骨架中都是连通的。对于刚刚得到的对应枝a和b,连通性 判别和延长处理过程如下1)、确定枝a和b各自的父家族路径,如图13(c)所示的蓝色路径为父家族路径。2)、确定枝a和b各自的“已使用路径”。定义a的“已使用路径”为a的父家族路 径在当前点Pa以下的部分。而b的“已使用路径”被定义为a的“已使用路径”在骨架B中 的所有对应枝组成的路径。如图13(d)所示的黄色路径为已使用路径。3)、确定枝a和b各自的“有效父家族路径”。定义a的“已使用路径”即为其“有 效父家族路径”。对于枝b,它的“父家族路径”和其“已使用路径”的共有部分即为b的“有 效父家族路径”。如图13(e)所示的蓝色路径为有效父家族路径。4)、判别和延长。如果当前点Pb在枝b的“有效父家族路径”上,那么对应枝a和 b不需要处理就可以直接用它们的有效部分来构造一个三维枝。如果Pb点不在枝b的“有 效父家族路径”上,那么就要延长枝a和b的有效部分(图13(f),然后用新的有效部分来 构建三维枝,步骤如下第一步,将枝b的当前点从Pb沿着枝b的“父家族路径”反方向移动,直到移动到 b的“有效父家族路径”上为止,即P。点。点P。与枝b末端之间的路径就是枝b新的有效部 分。第二步,将枝a的当前点从Pa沿着枝a的“父家族路径”反向移动到与P。相同的 高度处,即Pd点,新的当前点Pd与枝a末端之间的路径就是枝a新的有效部分。5)、在基于深度检索的三维构建过程中,每得到一对对应枝,就进行上述判断处 理,这样就可以保证形成的三维骨架是连通的,并且满足二维约束。4. 5缺失骨架的补充在骨架A的所有枝都经过三维处理后,通常在骨架B中会剩余一些枝,它们的一部 分或者全部还没有被用作A中枝的对应枝。搜索得到这些剩余枝,在骨架A中为它们搜索 对应枝,然后用相同方法构造三维骨架。经过上述步骤,最终可以得到一个完整的三维主 枝骨架,该骨架在两个输入图片方向的二维投影满足草图中的笔画约束。如图14(a)至图 14(c)示出构建的三维主枝骨架及其骨架点在输入图片上的投影。图14(a)是通过上述方 法得到的一个三维主枝骨架,将它分别投影到两个输入图片,可以看到三维骨架点分布于 所有草图笔画上,如图14(b)和图14(c)所示。5、细枝建模 完成主枝骨架的构建后,需要加上细枝和叶子完成整个树模型。在这个过程中,要保证模型的树冠形状符合二维树冠轮廓约束。基于自相似原理,从主枝形状推导出细枝形 状,并将它们合理地连接到主枝上,这样新生细枝保留了主枝的结构特征。完整的树枝骨架是从主枝结构开始,经过几级细枝生长形成的,如图15所示。每 一级子枝都是通过复制其父枝的一部分,然后将这一部分平移、旋转、连接到父枝骨架点得 到的。
(8)细枝的建模原理如图16所示,nk代表一个三维主枝,由公式8表示。它的子枝 nk’i(i = 1,2...N)是通过下面步骤得到的1)、复制枝nk的一部分——从其芽节点片到一个中间骨架点<。复制的这部分 称为子枝模版nk[o],由公式9表示,其中系数o< o
(9)2)、将nk
的芽节点连接到nk的骨架点Wl-xs/D,并旋转一定的角度。K
被称为新芽。
(10)公式10中,是枝nk与其子枝nk’i之间的夹角,该夹角需要满足0 %2, 同时两个子枝nk’lP nk’H之间的夹角需要满足外内。参数N、0、e” e2、 (Pi、以及父枝上长出子枝的新芽位置可根据不同植物种类进行调整。本发明可以通过控制父枝上的新芽分布来控制生成的细枝密度。具体操作过程是 在每一个新芽位置处计算树枝的局部密度,如果该区域密度过大,则舍弃该新芽。模型的树 冠形状控制主要通过设置细枝总级数,以及用输入草图中的树冠轮廓笔画约束细枝生长来 实现。在细枝生长过程中,将细枝骨架投影到两个输入草像平面进行判别,如果骨架点 在树冠轮廓内则保留,否则就舍去,这样得到的三维树枝模型就可以满足两个方向上的树 冠约束。由于细枝形状由主枝形状决定,因此不同种类的植物建模对细枝生长中的参数信 息不敏感。为了普通用户使用方便,本发明采用一组典型的细枝生长参数值创建多种类的 树木模型,如藤状枝的葡萄树、塔状树冠的松树等。这样对于一般的应用就不需要进行参数 调整了。本发明也给出了另外2 3组备用参数值,以适应不同用户对树枝密度的调整需要。6、树枝几何模型的创建以单像素笔勾勒的主枝草图作为输入时,树枝的半径由Da Vinci发现的规则
来确定。该规则描述了父枝半径r和其所有子枝半径ri之间的关系。在以画
刷勾勒的主枝草图作为输入的情况下,三维主枝的半径可以由二维骨架的半径得到,也可 以由规则计算出来。为了获得树枝的网格模型,我们根据对骨架切向量、法向量和副法向量 的估算,对每个选取的骨架点计算一个局部Frenet标架,然后根据Frenet标架和半径信息 创建广义圆柱。这些圆柱的连接形成了树枝的几何模型。
7、叶子建模每个叶子和水果是由映射了一个四通道图像纹理(由红、绿和蓝色值和透明度 (alpha)通道组成)的四边形来表示的。首先把一个序列的叶子模型放置到细枝骨架点上, 然后在叶子位置、叶子朝向以及叶与枝的距离等参数中引入随机因素。叶与枝的平均夹角 可以根据先验知识或者测量数据进行调整。最终可以得到一个带纹理的树木模型,该模型 在输入草图对应方向上的投影满足两张图片约束。8、树木模型的绘制输出对于建模的结果,本发明把树木模型的网格信息以文件形式存储,再由专业软件 进行显示。9、实验结果与结论我们将本发明应用于各种形态的树木建模和树木模型设计,与之前的两种主要的 树木建模方法进行了比较。通过实验证明,本发明建模速度更快、构建的树木模型更好地保 留了二维输入信息,鲁棒性也更强。9. 1各种树木建模结果用户可基于拍摄角度近似成直角的一棵树的两个侧面照片,通过勾画主枝和树冠 轮廓草图作为输入构建出三维树模型。图17(a)至图17(g)示出基于两幅图片、以不同的 笔画作为输入得到的两个桃树模型的对比。图17(a) —棵桃树的两张照片;图17(b)第一 组输入两张较少笔画的草图;图17(c)第二组输入两张较多笔画的草图;图17(d)由第 一组输入构建的树枝模型在两个输入图片方向的视图;图17(e)由第二组输入构建的树枝 模型在两个输入图片方向的视图;图17(f)由第一组输入得到的树木模型在两个输入图片 方向的视图;图17(g)由第二组输入得到的树木模型在两个输入图片方向的视图。在这个 例子中,基于一棵桃树的两张照片,用户以不同数量的笔画作为输入,可以得到两个相似的 桃树模型。该实例说明本发明的建模效果不受用户勾画的笔画数量的影响。建模系统也可以利用一张图片进行建模。基于任意一张互联网上下载的图片就可 以很方便地重建出一个逼真的三维树模型,图18(a)至图18(h)所示为一个重建葡萄树的 例子,图18(a)所示为葡萄树图片(www.huaxia.com);图18(b)所示为基于图片的草图A ; 图18(c)所示为随意勾画的草图B ;图18(d)三维树枝模型正视图;图18(e)三维树枝模型 侧视图;图18(f)所示为三维树枝模型俯视图;图18(g)所示为重建的带叶子和果实的葡 萄树;图18(h)所示为葡萄树模型的部分放大图。用户具有想象力的简单绘图可以创造出多种有趣的树模型。图19(a)至图19(g) 为从画刷勾画的草图构建树模型的实例。图19(a)示出用画刷勾画的输入草图A和B ;图 19(b)示出三维枝的正视图;图19(c)示出三维枝的侧视图;图19(d)示出三维枝的俯视 图;图19(e)示出树木模型的正视图;图19(f)示出树木模型的侧视图;图19(g)示出树木 模型的俯视图。建模系统得到的这些树木模型在输入图片对应方向上的投影都满足输入笔画约 束,具有真实感。该建模系统运行效率高。用户以交互方式勾画主枝和树冠轮廓后,二维骨架提取 和三维主枝构建过程需要几秒钟;细枝的生长效率为大约10秒钟生长2000个细枝。在一 个双核2G处理器的计算机上,树枝建模过程的运行时间通常小于一分钟。建模过程一般不需要参数调节,本发明说明书中示出的建模实例都使用了相同的参数。包括用户勾画草图 的过程,应用该建模系统创建一个树木模型的时间一般不超过5分钟。9. 2树木建模对比实验如图20(a)至图20(c)所示,本发明采用与Neubert方法相同的输入图片构建树 模型,与Neubert方法的建模结果相比,本发明的方法得到的三维树枝模型的主枝结构与 输入图片更吻合。图20(a)示出输入图片;图20(b)示出Neubert方法构建的树枝模型在 输入图片方向的视图;图20(c)示出本发明方法得到的树枝模型在输入图片方向的视图。与Tan方法相比较,本方法适用的树木种类更广泛。对于图21(a)至图21(c)所 示的建模实例,图21 (a)示出输入图片;图21(b)示出Tan方法构建的树枝模型在输入图 片方向的视图;图21(c)示出本发明方法得到的模型在输入图片方向的视图。本发明的方 法需要用笔画勾出更多主枝,但系统建模速度更快——树枝建模过程需要大约40秒钟,而 Tan方法中树枝建模需要20分钟(2. 4G CPU),并且本发明的方法可以保证三维模型与图片 中人眼可以识别的、隐藏在叶子中的主枝形状相吻合。9. 3本发明在复杂场景绘制中的应用本发明得到的树木模型可用于构建虚拟树林场景。选取上面得到的一些模型,可 构建树林。图22(a)至图21(b)示出由两个不同的桃树模型和一个苹果树模型构成的虚拟 树林场景。该树林包含10X10棵树木,分布于60米X60米区域内,其中图22(a)为树林 近景,图22(b)为树林远景。本发明提出的树木建模方法的特征在于利用两幅具有主枝形状和树冠轮廓的草 图快速构建具有真实感的树木模型。上述实验结果和基于深度检索的树木建模方法,可以用于计算机图形学各应用领 域,具有操作简单、建模速度快、模型逼真、应用前景广的特点。以上所述,仅为本发明中的具体实施方式
,但本发明的保护范围并不局限于此,任 何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在 本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
一种基于深度检索的树木建模方法,其特征在于,该树木建模方法的步骤包括步骤1用户在两幅树木图片上用单像素画笔或者画刷手工勾画出具有树冠轮廓、具有不同的主枝笔画的树木草图,将具有不同的主枝笔画的两幅草图输入到图像处理设备;步骤2图像处理设备对草图中每个主枝笔画像素的近邻像素进行分析,从而提取二维骨架;步骤3对两个二维骨架进行深度检索,构建三维主枝骨架,使该三维骨架在两个输入方向的平行投影满足二维骨架约束;步骤4以构建的三维主枝骨架为模版,在二维树冠轮廓约束内,通过主枝的复制、平移、旋转操作构建第一级细枝骨架,然后以第一级细枝骨架为模版按相同方法构建第二级细枝骨架,依此类推,得到指定级数的细枝骨架;步骤5根据对骨架切向量、法向量和副法向量的估算创建广义圆柱,通过圆柱拟合得到树枝的几何模型;步骤6在树枝几何模型上添加叶子或水果完成整个树木模型,每个叶子或水果由映射了一个四通道图像纹理的四边形来表示,将一个序列的叶子模型放置到细枝骨架点上,然后在叶子位置、叶子朝向以及叶与枝的距离参数中引入随机因素。
2.按权利要求1所述的方法,其特征在于,所述树木图片是反映树木侧面形态的图片。
3.按权利要求1所述的方法,其特征在于,针对单像素的笔画采用局部分析和连接的 方法提取二维骨架。
4.按权利要求1所述的方法,其特征在于,针对具有半径信息的画刷笔画通过笔画像 素扫描、中心点判别、中心点简化以及骨架点连接提取二维骨架。
5.按权利要求1所述的方法,其特征在于,所述二维骨架具有子家族特征、父家族特 征、最大扩展高度特征和父家族路径特征。
6.按权利要求1所述的方法,其特征在于,所述深度检索方法是通过特征匹配查找两 个二维骨架的对应枝,将每对对应枝的一枝作为深度信息,将另一枝扩展到三维空间。
7.按权利要求6所述的方法,其特征在于,从两个对应枝构建一个三维枝前,需要对两 个对应枝进行连通性判断和枝的延长。
8.按权利要求6所述的方法,其特征在于,两个对应枝的每对对应点具有相同的纵坐 标,从两个对应点构建一个三维点的过程是取其中一个点的X轴、Y轴坐标作为三维点的X 轴、Y轴坐标,取另一个点的X轴坐标作为三维点的Z轴坐标。
9 按权利要求1所述的方法,其特征在于,通过复制部分父枝并在一定的夹角约束范 围内,将复制的部分父枝连接到父枝节点上得到相应子枝。
全文摘要
本发明涉及一种基于深度检索的树木建模方法,该方法以手工勾画的树木主枝和树冠轮廓作为输入自动创建树木模型,其主要步骤包括通过像素分析从勾画的笔画中提取二维骨架、通过深度检索将两个二维骨架直接转化为三维主枝骨架、基于树冠轮廓约束创建细枝和叶子。本发明算法简单、建模效率高,能够创建出在两个方向符合输入约束的具有真实感的树木模型。其建模结果在计算机游戏、三维电影、网络漫游、城市景观设计等领域具有重要的应用价值。
文档编号G06T17/00GK101847267SQ20101018828
公开日2010年9月29日 申请日期2010年6月1日 优先权日2010年6月1日
发明者刘佳, 张晓鹏, 李红军, 董未名 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1