本发明涉及虚拟仿真技术领域,具体涉及一种基于径向基函数网络的地形合成方法,采用数字高程模型(digitalelevationmode,简称dem)的地形数据块,采用径向基函数网络对地形特征的学习及提取;在地形合成时,根据用户手绘草图,结合输入高程数据,利用预先学习的特征,可以合成与用户草图相对应的定制地形。该方法具有简单、有效的特点,能够根据用户手绘草图合成特定的地形。
背景技术:
地形是三维虚拟场景中的主要视觉元素,由于其在实际生活中的广泛应用价值,使得地形合成技术成为了计算机视觉领域的研究热点。无论是在自然灾害预防还是在影视游戏创作中,真实感地形能更好地提高用户的使用体验。目前地形合成技术大致可以分为三类:基于过程性的建模方法、基于物理侵蚀的建模方法及基于用户草图的建模方法。近年来,随着dem地形数据的普及使用,人们开始结合真实地形数据特征,研究基于草图的建模方法,并通过草图控制,实现用户的定制功能。
同时,为了实现地形的智能化合成,近年来机器学习和深度学习飞速发展,研究人员尝试用人工智能方法理解真实地形数据中的隐式特征,并出现了基于卷积神经网络的地形合成方法,并实现了对用户输入山脉轮廓线进行深度信息预测,提高了合成地形的合理性。但是,利用深度学习方法合成地形,存在的主要问题就是网络的结构复杂,网络参数训练难于收敛,这些都是目前智能化地形合成研究中存在的问题。
技术实现要素:
本发明的目的是针对现有技术的不足,并针对地形合成中的实际问题,提出一种基于径向基函数网络的地形合成方法,该方法根据用户手绘草图,结合输入高程数据,利用预先学习的特征,可以合成与用户草图相对应的定制地形。该方法具有简单、有效的特点,能够根据用户手绘草图合成特定的地形。
实现本发明目的的具体技术方案是:
一种基于径向基函数网络的地形合成方法,特点是该方法包括以下具体步骤:
步骤1:准备高程数据块
从srtm网站http://srtm.csi.cgiar.org下载wgs84坐标系统的高程数据块d,d的空间分辨率为90m×90m至200m×200m之间,d中像素点的数目为n,任意点a的高度记为ha;
步骤2:建立训练数据集:
(1)首先,计算任意点a的熵ea:
其中,pk是任意点a的3×3邻域t中第k个点(其高度为hk)的高度分布,k=1,2…,9,pk计算为:
其中,
(2)建立a的特征向量:va=(ea,ha),进一步利用d中每个点的特征向量构建特征向量集s={(es,hs)|1≤s≤n};
(3)从s中随机选取m个特征向量ce=(ee,he)(e=1,2…,m),作为m个聚类中心,3≤m≤5,利用k-means方法,对s中的特征向量聚为m个类:lf(f=1,2…,m);
(4)分别对各类lf(f=1,2…,m)中像素粒子的熵进行求和统计,将具有最大统计熵的类记为lm(1≤m≤m),将lm看作是显著性区域;
(5)用lm建立数据集:lm中特征向量对应的像素粒子集记为g,利用d8算法,采用3×3窗口计算g的骨架b,具体地,利用像素周围的3×3邻域,计算中心与其邻域的周围8个像素作差,将差最大的方向作为骨架方向。g中粒子的特征向量集为u={(dg,hg)|1≤g≤q},dg是g中任意粒子j到b的最短距离,hg为j的高度,q表示g中数据元素的个数;
步骤3:构建径向基函数网络,进行学习训练
建立三层前向传播的径向基函数网络x,其包括输入层、隐含层及输出层:训练时,采用监督学习方法,网络输入是dg,输出的监督数据是hg,g=1,2…,q;在隐含层中,径向基函数采用高斯函数,模型的训练参数包括:高斯核的个数、隐含层神经元的中心(基函数的中心)、方差以及隐含层与输出层之间的权值;训练的损失函数定义为:
其中,pg是x网络输出的预测高度结果,hg作为高度的监督数据,1≤g≤q;
训练过程:(a)将高斯核的个数k初始化为5;(b)训练x,并利用公式(3)计算损失函数f,如果f大于阈值0.01,高斯核的个数k=k+5,并且转步骤(b)进行下一次训练;否则,如果f小于或等于阈值0.01,训练终止;
步骤4:地形合成
用户输入二值图像v作为手绘草图,v采用画图软件画出用户的草图,并保存为二值图像,将v作为骨架,计算v上任意一点到骨架的距离jb(b=1,2…,x),x表示合成地形中像素的个数;
将jb(b=1,2…,x)输入到网络x中,利用x网络中已经训练好的参数进行预测,得到合成地形的每个点的高度值,这样得到合成的地形。
本发明具有简单、实用的特点,根据用户手绘草图,结合输入高程数据,能够合成特定的用户定制的地形。
附图说明
图1为本发明显著性区域检测的结果图;
图2为本发明地形合成的结果图。
具体实施方式
实施例
下面结合附图对本发明进一步说明。
本实施例在pc机上windows1064位操作系统下进行实施,其硬件配置是处理器
本发明具体实施例方案是:
一种基于径向基函数网络的地形合成方法,该方法包括以下具体步骤:
步骤1:准备高程数据块
从srtm网站http://srtm.csi.cgiar.org下载wgs84坐标系统的高程数据块d,d的空间分辨率为90m×90m之间,d中像素点的数目为n,任意点a的高度记为ha;
步骤2:建立训练数据集:
(1)首先,计算a的熵ea:
其中,pk是a的3×3邻域t中第k个点(其高度为hk)的高度分布,k=1,2…,9,pk计算为:
其中,
(2)建立a的特征向量:va=(ea,ha),进一步利用d中每个点的特征向量构建特征向量集s={(es,hs)|1≤s≤n};
(3)从s中随机选取3个特征向量ce=(ee,he)(e=1,2,3),作为3个聚类中心,利用k-means方法,对s中的特征向量聚为3个类:lf(f=1,2,3);
(4)分别对各类lf(f=1,2,3)中像素粒子的熵进行求和统计,将具有最大统计熵的类记为lm(1≤m≤3),将lm看作是显著性区域;
(5)用lm建立数据集:lm中特征向量对应的像素粒子集记为g,利用d8算法,采用3×3窗口计算g的骨架b,g中粒子的特征向量集为u={(dg,hg)|1≤g≤q},dg是g中任意粒子j到b的最短距离,hg为j的高度,q表示g中数据元素的个数;
步骤3:构建径向基函数网络,进行学习训练
建立三层前向传播的径向基函数网络x,其包括输入层、隐含层及输出层:训练时,采用监督学习方法,网络输入是dg,输出的监督数据是hg,g=1,2…,q;在隐含层中,径向基函数采用高斯函数,模型的训练参数包括:高斯核的个数、隐含层神经元的中心(基函数的中心)、方差以及隐含层与输出层之间的权值;训练的损失函数定义为:
其中,pg是x网络输出的预测高度结果,hg作为高度的监督数据,1≤g≤q;
训练过程:(a)将高斯核的个数k初始化为5;(b)训练x,并利用公式(3)计算损失函数f,如果f大于阈值0.01,高斯核的个数k=k+5,并且转步骤(b)进行下一次训练;否则,如果f小于或等于阈值0.01,训练终止;
步骤4:地形合成
用户输入二值图像v作为手绘草图,v采用画图软件画出用户的草图,并保存为二值图像,将v作为骨架,计算v上任意一点到骨架的距离jb(b=1,2…,x),x表示合成地形中像素的个数;
将jb(b=1,2…,x)输入到网络x中,利用x网络中已经训练好的参数进行预测,得到合成地形的每个点的高度值,这样得到合成的地形。
图1为根据dem地形数据进行显著性区域检测的结果。图中给出了3组实验结果,每一行为一组结果;在每行中,左侧第1列为输入的高程数据块,右侧的结果显示了显著性区域检测的结果,从图中可以看出,显著性区域对应着dem地形块的细节区,从显著性区域提取特征,创建数据集;
图2为根据用户输入草图进行地形合成的结果。图中给出了3组实验结果,每一行为一组结果;在每行中,左侧第1列结果为输入的高程数据块,中间一列为用户输入的草图;右侧第1列结果为合成的地形结果,从合成的结果可以明显看出,本发明所提出的方法可以根据用户草图实现真实感地形的合成,方法简单方便。