本发明涉及虚拟地形领域,具体涉及一种自动生成虚拟地形的方法。
背景技术
虚拟户外场景在游戏、电影特效、战场模拟、景观设计等方面有着广泛的应用需求,而地形作为虚拟场景中一个关键的组成,将极大地影响虚拟场景的真实体验效果。虽然真实地形模型可从网上很方便地获取到(例如u.s.geologicalsurvey提供了可免费下载的真实地形的数字高程模型(digitalelevationmodel,dem)),可根据需要直接添加到3d场景中,但地形的多样性受到非常有限的真实地形的限制,且无法满足对地形生成进行控制的需求,因此在实际应用中大多使用的是计算机或人工生成的地形。人工生成地形的方法需要专业人员利用3d建模工具手动创建三维地形或者绘制2d灰度图像(高度图)。随着对更大更逼真地形需求的增长,手动建模变得越来越复杂和耗时,对人员的技能要求也越来越高,这大大增加了相关应用的开发成本,寻找更低成本并且具有高效率的获得目标地形的方法是亟待解决的问题。利用计算机自动生成虚拟地形可以解决人工生成产生的这些问题,并且越来越成为构建虚拟场景的重要环节。虚拟环境的构建主要是为了实现沉浸式的用户体验,为了达到这种体验效果,要求地形具有高度真实感;在虚拟地形的应用场景中,直接使用可以轻易得到的真实地形的最大问题是真实地形的样式有限,实现对地形特征的控制重组是地形合成计算需要解决的一大问题;研究开发计算机生成地形的主要目的之一就是追求更高的效率,这种效率的追求包括两方面,一个是在时间成本上,要求地形合成技术可以快速的得到目标地形,另一方面,还要求地形合成技术在使用上简单便捷,对使用者不会有很高的学习成本。因此,地形合成技术总是以结果更真实、控制更方便灵活为目标、过程更高效为追求目标,这也是衡量一种地形合成技术先进性的标准。
地形合成技术先后出现了基于分形模型的地形合成方法、基于物理侵蚀模型的地形合成方法和基于样本的地形合成方法。其中基于分形模型的地形合成方法是采用随机生成的方式生成地形,这种方法生成地形的速度很快,但是其结果缺乏真实地形中的物理侵蚀效果,与真实地形的视觉效果差距很大,同时这种方法合成参数的调整对合成结果的影响没有规律,难以控制合成结果。基于物理侵蚀模型的地形合成方法是在已有的粗略地形基础上模拟自然环境中的水体、日照等侵蚀效果来提高合成结果的真实性,例如在基于分形模型的地形方法得到一个粗糙的地形的基础上,为了模拟自然环境中的侵蚀效果。这种方法相比与分形模型的合成结果,由于添加了物理侵蚀的效果,在真实性上有较大的提升,但是这种方法计算代价高,同时要求使用者熟悉掌握多种物理侵蚀模型,学习成本较高。基于样本的地形合成方法是以真实地形的dem作为样本,以用户草图为控制生成符合用户草图控制同时具有样本地形风格的结果。这种合成方法由于合成结果中的小块都来自真实地形的dem,其合成结果具有高度真实感,同时以草图的方式提供用户控制接口,可以方便的控制合成。相比于前两类方法,基于样本的地形合成方法在结果地形的合成效果和控制方面都有了很大的改善。这种方法自提出之后就受到了研究者的青睐,已有的研究中主要集中在更加方便灵活的对合成进行控制,使得得到的结果地形更加符合用户的预期;在特征匹配上更加的精确,主要是对匹配代价的计算方法上的改进,使得得到结果地形更加贴合草图的控制。但是这种方法需要根据草图搜索样本空间以寻求匹配块,由于搜索空间巨大,过程非常耗时。在效率方面也有研究者提出采用硬件加速的方式进行合成效率的提升,并且取得了较好的效果,然而其硬件加速的基础还是基于对样本空间的反复搜索以找到合适的匹配块,在算法设计层面并没有进行过多的改进。
技术实现要素:
本发明的目的在于:提供一种自动生成虚拟地形的方法,解决了目前基于样本的地形合成方法中在地形生成过程中由于搜索空间巨大、耗费时间多的技术问题。
本发明采用的技术方案如下:
一种自动生成虚拟地形的方法,包括以下步骤:
步骤1:分别对草图和样本dem进行特征曲线提取,得到草图特征图像和样本特征图像;
步骤2:将所述草图特征图像分割为草图小块,所述草图小块对应草图上的草图原始小块;将所述样本特征图像分割为样本小块,所述样本小块对应所述样本dem上的样本原始小块,对所述草图小块和样本小块进行聚类分析,得到聚类结果;
步骤3:根据所述聚类结果得到所述草图原始小块和样本原始小块之间的匹配关系;
步骤4:利用所述匹配关系合成结果地形图像。
进一步的,所述步骤1中获取草图特征图像和样本特征图像的具体步骤均为:
步骤11:分别在草图(或样本dem)上进行候选特征点识别;
步骤12:将识别出的相邻的候选特征点进行连线,得到特征线;
步骤13:将所述候选特征点和特征线转化为一张图;
步骤14:采用kruskal算法从所述图中提取最小森林;
步骤15:利用所述最小森林构建草图特征图像(或样本特征图像)。
进一步的,所述步骤11中,将所述草图(或样本dem)中固定长度位置上高程值的局部最大值作为候选特征值。
进一步的,所述步骤12中,连线时若线段短相交时,利用线段两端的高程值确定短相交线段的权重,提取山脊线时保留权重高的线段,提取山谷时保留权重低的线段。
进一步的,步骤2具体为:
步骤21:将草图特征图像分割为草图小块集s{s1,s2,...,sm},将样本特征图像分割为样本小块集e{e1,e2,...,en},其中m表示草图小块集中元素的个数,n表示样本小块集中元素的个数;
步骤22:将所述草图小块集s和样本小块集e进行合并,利用所有小块中特征线的分支数b{0,1,...,k},得到k+1个簇,其中k表示特征线分支的个数;
步骤23:遍历所述k+1个簇,将不含任何草图小块集s中元素的簇剔除;将不含任何样本小块集e中元素的簇融合至比当前分支数小的簇中;得到新的集合m{m1,m2,...,mj}和集合c{c1,c2,...,cj},其中,集合m中的元素同时含有来自草图小块集s和样本小块集e中的元素,集合c中的元素来自草图小块集s中的元素,j表示集合m和集合c中元素的个数;
步骤24:对集合m以集合c为中心集进行聚类分析,得到中心集中每一个聚类中心点对应的聚类集。
进一步的,步骤3具体为:
步骤31:在聚类结果中查找未匹配样本小块的所述草图小块a;
步骤32:获取聚类结果中草图小块a的g个最近邻的样本小块,构成候选集c;
步骤33:获取该草图小块a在草图中对应的草图原始小块ra;获取候选集c中样本小块在样本dem中对应的样本原始小块,形成集合rc;
步骤34:分别计算所述原始小块ra与集合rc中各个样本原始小块的距离,选择距离小的样本原始小块作为草图原始小块ra的匹配块,其中距离的计算公式为:
d=∑(xi-yi)2,x表示草图原始小块对应坐标的高程值,y表示样本原始小块对应坐标的高程值,i表示坐标点的序号。
进一步的,步骤4具体为:
步骤41:创建与草图大小相同的空白画布q,并建立与草图相同的坐标系;
步骤42:将匹配出的样本原始小块按对应草图原始小块所在的坐标放置在所述空白画布q中;
步骤43:对空白画布q中样本原始小块间的缝隙进行融合处理,得到最终的结果地形图像。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明利用聚类的方法实现了虚拟地形的自动生成,采用聚类的方法实现草图小块的一次遍历即可确立所有的匹配关系,避免反复搜索巨大的样本空间,从而提高合成效率。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是本发明的整体流程图;
图2是本发明中特征曲线提取算法的流程图;
图3是本发明的整体框架图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
下面结合图1-3对本发明作详细说明。
一种自动生成虚拟地形的方法,包括以下步骤:
步骤1:分别对草图和样本dem进行特征曲线提取,得到草图特征图像和样本特征图像;
步骤2:将所述草图特征图像分割为草图小块,所述草图小块对应草图上的草图原始小块;将所述样本特征图像分割为样本小块,所述样本小块对应所述样本dem上的样本原始小块,对所述草图小块和样本小块进行聚类分析,得到聚类结果;
步骤3:根据所述聚类结果得到所述草图原始小块和样本原始小块之间的匹配关系;
步骤4:利用所述匹配关系合成结果地形图像。
进一步的,所述步骤1中获取草图特征图像和样本特征图像的具体步骤均为:
步骤11:分别在草图(或样本dem)上进行候选特征点识别;
步骤12:将识别出的相邻的候选特征点进行连线,得到特征线;
步骤13:将所述候选特征点和特征线转化为一张图;
步骤14:采用kruskal算法从所述图中提取最小森林;
步骤15:利用所述最小森林构建草图特征图像(或特征图像)。
进一步的,所述步骤11中,将所述草图(或样本dem)中固定长度位置上高程值的局部最大值作为候选特征值。
进一步的,所述步骤12中,连线时若线段短相交时,利用线段两端的高程值确定短相交线段的权重,提取山脊线时保留权重高的线段,提取山谷时保留权重低的线段。
进一步的,步骤2具体为:
步骤21:将草图特征图像分割为草图小块集s{s1,s2,...,sm},将样本特征图像分割为样本小块集e{e1,e2,...,en},其中m表示草图小块集中元素的个数,n表示样本小块集中元素的个数;
步骤22:将所述草图小块集s和样本小块集e进行合并,利用所有小块中特征线的分支数b{0,1,...,k},得到k+1个簇,其中k表示特征线分支的个数;
步骤23:遍历所述k+1个簇,将不含任何草图小块集s中元素的簇剔除;将不含任何样本小块集e中元素的簇融合至比当前分支数小的簇中;得到新的集合m{m1,m2,...,mj}和集合c{c1,c2,...,cj},其中,集合m中的元素同时含有来自草图小块集s和样本小块集e中的元素,集合c中的元素来自草图小块集s中的元素,j表示集合m和集合c中元素的个数;
步骤24:对集合m以集合c为中心集进行聚类分析,得到中心集中每一个聚类中心点对应的聚类集。
进一步的,步骤3具体为:
步骤31:在聚类结果中查找未匹配样本小块的所述草图小块a;
步骤32:获取聚类结果中草图小块a的g个最近邻的样本小块,构成候选集c;
步骤33:获取该草图小块a在草图中对应的草图原始小块ra;获取候选集c中样本小块在样本dem中对应的样本原始小块,形成集合rc;
步骤34:分别计算所述原始小块ra与集合rc中各个样本原始小块的距离,选择距离小的样本原始小块作为草图原始小块ra的匹配块,其中距离的计算公式为:
d=∑(xi-yi)2,x表示草图原始小块对应坐标的高程值,y表示样本原始小块对应坐标的高程值,i表示坐标点的序号。
进一步的,步骤4具体为:
步骤41:创建与草图大小相同的空白画布q,并建立与草图相同的坐标系;
步骤42:将匹配出的样本原始小块按对应草图原始小块所在的坐标放置在所述空白画布q中;
步骤43:对空白画布q中样本原始小块间的缝隙进行融合处理,得到最终的结果地形图像。
具体实施例
本发明采用的地形生成方法采用真实地形的dem作为样本,同时提供草图绘制功能作为用户控制接口,自动生成符合用户控制草图同时保持0样本地形风格的虚拟地形。最大的特点是通过聚类的方法避免了对样本库的反复检索操作,有助于提高地形合成效率。本方法中草图与真实地形的dem都是以像素值代表海拔高度值,合成结果也以同样的形式表示。在虚拟地形中,大规模的特征曲线是影响视觉体验的关键因素,用户草图主要也是对结果地形特征曲线的分布、走向及其海拔等进行控制,结果地形中特征曲线与用户草图中绘制的特征曲线的吻合程度将直接影响合成效果的视觉体验,因此应该优先保证特征曲线的匹配。为了去掉其他因素的影响,本方法在构建匹配关系之前,先将草图和样本图的特征曲线提取出来得到各自的特征曲线图像,通过对特征图像分割后的小块进行聚类分析,构建草图与样本图的匹配关系。
对特征图像进行切割聚类的主要原因,一方面为了优先匹配特征,特征曲线是地形中影响视觉体验的最显著因素,在合成时理应优先保证特征的匹配;另一方面,用户提供的草图往往比较简单,只是从特征的分布、走势进行粗略的定义,对于没有特征的区域则很可能是空白的,这样导致用户草图的原始图像与样本图的原始图像差异较大,直接对草图和样本图的原始图像切割后进行聚类会导致草图与样本图完全归属到不同的簇中,难以实现草图与样本图的匹配关系构建。但是特征提取之后,草图和样本图都只保留特征曲线,这样可以保证两者的差异性缩小,可以实现混合聚类。由于聚类结果中实现的只是特征图像的分类,这个聚类关系只能找到特征图像之间的匹配关系,但是合成结果中需要的匹配块必须来自原始图像,并且特征小块的匹配对应到原始图像上可能会出现新的影响因素,所以草图与样本原始图像的匹配关系分两步实现:首先通过聚类的结果找到与草图特征块匹配的k个样本特征块作为候选集合,然后找到草图特征块与样本特征候选块集合各自对应的原始块,通过计算草图原始块与对应样本特征块集合的原始块的匹配程度确定草图的匹配原始块。
草图中各个小块都与样本中某个小块确立匹配关系之后,将这些样本图像中的匹配小块按照与之匹配的草图小块的位置关系拼接即可得到合成目标所要的结果地形。但是样本匹配块不能只是简单的拼接,因为小块之间可能出现缝隙,需要通过融合操作将这些缝隙进行处理,以保证小块之间有一个合理的平滑过度,保证不出现明显的人工痕迹而影响视觉体验。
本发明具体的步骤如下:
步骤1:分别对草图和样本dem进行特征曲线提取,得到草图特征图像和样本特征图像;
获取草图特征图像和样本特征图像的具体步骤均为:
步骤11:分别在草图(或样本dem)上进行候选特征点识别,将所述草图(或样本dem)中固定长度位置上高程值的局部最大值作为候选特征值,具体为:对于草图(或样本dem)的位置p,如果在位置p的周围以用户指定的长度为半径,在其轴线方向及轴线夹角的平分线方向上两侧都可以找到比p点的高程值低的点,则p点确定为一个特征候选点;
步骤12:将识别出的相邻的候选特征点进行连线,得到特征线;连线时若线段短相交时,利用线段两端的高程值确定短相交线段的权重,提取山脊线时保留权重高的线段,提取山谷时保留权重低的线段。
步骤13:将所述候选特征点和特征线转化为一张图,采用图的数据结构保存特征信息,后续的操作主要针对这张图进行;
步骤14:采用kruskal算法从所述图中提取最小森林,这个过程同样按照候选点连线时出现线段交叉情况中使用的权重进行计算;
步骤15:利用所述最小森林构建草图特征图像(或样本特征图像),若特征点的距离非常不均匀,则在其连线上选取中间的位置,优化最小森林的结构,使最终特征森林上的特征点分布均匀一些。
步骤2:将所述草图特征图像分割为草图小块,所述草图小块对应草图上的草图原始小块;将所述样本特征图像分割为样本小块,所述样本小块对应所述样本dem上的样本原始小块,对所述草图小块和样本小块进行聚类分析,得到聚类结果;
具体为:
步骤21:将草图特征图像分割为草图小块集s{s1,s2,...,sm},将样本特征图像分割为样本小块集e{e1,e2,...,en},其中m表示草图小块集中元素的个数,n表示样本小块集中元素的个数;
步骤22:将所述草图小块集s和样本小块集e进行合并,利用所有小块中特征线的分支数b{0,1,...,k},得到k+1个簇,其中k表示特征线分支的个数;
步骤23:遍历所述k+1个簇,将不含任何草图小块集s中元素的簇剔除;将不含任何样本小块集e中元素的簇融合至比当前分支数小的簇中;得到新的集合m{m1,m2,...,mj}和集合c{c1,c2,...,cj},其中,集合m中的元素同时含有来自草图小块集s和样本小块集e中的元素,集合c中的元素来自草图小块集s中的元素,j表示集合m和集合c中元素的个数;
步骤24:对集合m以集合c为中心集进行聚类分析,得到中心集中每一个聚类中心点对应的聚类集;具体为:针对集合m中的每一个元素,一次遍历中心集c中的每一个聚类中心点,确定每一个元素与聚类中心集中距离最近的聚类中心点,并将每个元素点划分到聚类中心集中距离最近的聚类中心点对应的集合中,获得聚类中心集中的每一个聚类中心点对应的聚类集;
步骤3:根据所述聚类结果得到所述草图原始小块和样本原始小块之间的匹配关系;
具体为:
步骤31:在聚类结果中查找未匹配样本小块的所述草图小块a;
步骤32:获取聚类结果中草图小块a的g个最近邻的样本小块,构成候选集c;
步骤33:获取该草图小块a在草图中对应的草图原始小块ra;获取候选集c中样本小块在样本dem中对应的样本原始小块,形成集合rc;
步骤34:分别计算所述原始小块ra与集合rc中各个样本原始小块的距离,选择距离小的样本原始小块作为草图原始小块ra的匹配块,其中距离的计算公式为:
d=∑(xi-yi)2,x表示草图原始小块对应坐标的高程值,y表示样本原始小块对应坐标的高程值,i表示。
步骤4:利用所述匹配关系合成结果地形图像。
具体为:
步骤41:创建与草图大小相同的空白画布q,并建立与草图相同的坐标系;创建相同的坐标系是指:针对草图上某一点a和画布q上的某一点b,假设a在草图中与草图左上角的相对位置以及b在q上与q的左上角的相对位置一致的话,那么其在各自坐标系下的坐标值应该是一致的;
步骤42:将匹配出的样本原始小块按对应草图原始小块所在的坐标放置在所述空白画布q中;具体为:匹配的样本原始小块在结果图像中的坐标就是与之匹配的草图原始小块的坐标;例如草图中坐标为(64,64)位置上的小块对应的匹配样本原始小块为p64,那么将p64放置到画布q的(64,64)坐标位置上,以此类推,直到画布q被填满结束;与草图匹配的样本原始小块都来自样本图像中,通过前面步骤构建的匹配关系,实现了草图对合成的特征控制。
步骤43:对空白画布q中样本原始小块间的缝隙进行融合处理,得到最终的结果地形图像;具体为:结合graphcut、shepard插值两种方法用于块间融合。为了描述方便,假设重叠的两个块分别为pa和pb,他们的重叠区域称为o。首先通过执行graphcut在pa与pb之间找到一个最优的接缝。为了执行graphcut,需要将重叠区域o转化为图来运算。图中边的权重由o中对应两个块的高度值及其方向导数决定。重叠区域o对应的图构建完成之后,需要根据图中的权值,找到一个划分,决定各个像素点到底应该保留哪个块的高度值。寻找图最小割的方法通常采用图理论中著名的最小割或者最大流算法来实现。graphcut完成之后可以在两个小块的重叠区域找到一条分割线,在分割线的两侧分别保留两个重叠块的其中一个块的高程值,但是在分割线上还是会出现人工痕迹,为了消除这种缝隙,后续处理先后进行shepard插值。通过插值,可以保证在分割线的两侧的高程值是一样的,从而消除缝隙,对图像进一步融合。