一种利用遥感影像提高山体的数字高程数据分辨率的方法与流程

文档序号:14941550发布日期:2018-07-13 20:59阅读:498来源:国知局

本发明公开一种利用遥感影像提高山体的数字高程数据分辨率的方法,利用山体遥感影像中的地形边缘信息细化原有分辨率较低的数字高程数据获得较高分辨率的数字高程信息,属于地理数据处理领域。



背景技术:

在情景教学、历史环境再现、电影和电子游戏制作等虚拟现实应用的过程中均需要建立大范围自然环境的三维模型。对于多山地区,在山体的三维结构的质量对于整个工程建模质量有着关键影响。而利用数字高程数据可以直接快速的建立特定山体的三维结构,空间分辨率较高、采样点较为细致的高程数据在山体三维型建模方面具有十分重要的使用价值。

在山体的三维建模的应用和研究中,主要利用数字高程数据建立三维空间中的三角面,并通过三角面构造山体三维结构。当前数字高程数据的获取渠道有两种:一种是直接通过下载、购买获得数字高程数据。由于山区通常较为偏远,所以能够直接获得的数据分辨率通常为30米甚至100米分辨率的低分辨率数据,这些数据构建三维山体模型有大块的三角面构成,过于粗糙无法满足当前虚拟现实的需求;第二种是直接在飞机上挂接相应的激光测绘设备,直接在所需区域飞行获得高分辨率的数字高程数据,该类数据分辨率较高能够满足虚拟现实的需求,然而所需经费十分巨大(通常需要数百万元),多数单位无法承受该费用。

因此需要一种方法,可以一方面充分利用现有分辨率较低的数字高程数据,另一方面可以利用一些辅助数据在一定程度上提高数字高程数据的分辨率,获得更好的山体三维建模效果。



技术实现要素:

针对现有技术存在的问题,本发明提供一种利用遥感影像提高山体的数字高程数据分辨率的方法,通过该方法可以利用山体遥感影像中的地形边缘信息细化原有分辨率较低的数字高程数据获得较高分辨率的数字高程信息。

本发明所述的一种利用遥感影像提高山体的数字高程数据分辨率的方法,包括以下步骤:

s1,输入较低分辨率的数字高程数据dem,输入山体高分辨率高程数据的分辨率m,输入生成数据的横坐标x和纵坐标y,横向长度w和纵向长度h;构造山体三维高度基准网bnet:

数字高程数据dem的默认分辨率为30米;

体高分辨率高程数据的分辨率m的默认值为1米;

s101,山体高分辨率高程数据横向元素个数wnum=round(w/m+0.5);

s102,山体高分辨率高程数据纵向元素个数hnum=round(h/m+0.5);

其中,round为进行四舍五入;

s103,建立bnet,bnet为一个wnum列hnum行,每一个元素为一个基准结构体bstruct;

bstruct包含以下字段内容,所有字段的初始值为0;

bx1所在横坐标初始值为0;

by1所在纵坐标初始值为0;

bvalue基准高度值初始值为0;

bid数字高程点的编号初始值为0;

tid团块关系编号初始值为0;

lyzd邻域最低值初始值为0;

lyzg邻域最高值初始值为0;

cvalue重构高度值初始值为0;

s2,根据数字高程数据dem初始化三维高度基准网bnet中所有bstruct的值:

s201,取出bnet中的一个元素bpoint,bpoint为一个bstruct类型的结构体;

s202,bpoint在bnet中所在行为hh,所在列为ll;

s203,计算bpoint的所在横坐标bpoint.x1=x+ll×m,所在纵坐标bpoint.y1=y+hh×m;

s204,在dem中找到一个与(bpoint.x1,bpoint.y1)距离最近的点,取出该点编号id其海拔高度elevation,在bpoint中设置bpoint.bid=id,bpoint.bvalue=elevation;

s205,如果bnet中所有数据被取完那么转到s206,否则转到s201;

s206,团块计数器tcounter=1;

s207,取出bnet中一个tid为0的元素bpoint2;

s208,设置bpoint2的团块编号bpoint2.tid=tcounter;

s209,对于bnet中所有数字高程点的编号bid与bpoint2的bid相同的元素,设置其tid的值为tcounter;

s210,tcounter=tcounter+1;

s211,如果bnet中存在tid为0的元素,那么转到s207,否则转到s212;

s212,团块最大编号值maxtid=tcounter-1;

s3,根据bnet中的所有元素的团块关系编号tid,计算bnet中每个元素的邻域最低值、邻域最高值:

s301,编号计数器itid=1;

s302,取出bnet中tid=itid的所有元素放入列表plist中;

s303,取出bnet中tid≠itid并且与plist中任意一个元素相邻的元素,放入nlist中;

s304,统计nlist中所有的元素高度值bvalue,获得最大值maxbvalue和最小值minbvalue;

s305,对于列表plist中的所有元素,其邻域最低值lyzd=minbvalue,邻域最高值lyzg=maxbvalue;

s306,itid=itid+1;

s307,如果itid大于maxtid那么转到s308,否则转到s302;

s308,该步骤处理结束;

s4,输入遥感影像image计算影像边缘梯度数组tdarray:

s401,获得遥感影像image的行数rows和列数cols;

s402,建立行数为rows和列数cols边缘梯度数组tdarray,数组中每一个元素的初始值为1.0;

s403,建立行数为rows和列数cols的归一化数组normarray;

s404,对于image中的每一个像元pixel,该像元所在的行为hss,所在列为lss,计算该像元所有波段值的和pixelsum,将pixelsum存储到normarray的行为hss列为lss的元素当中;

s405,对normarray中的所有元素归一化到区间[0,1]之间;

s406,取出normarray中的一个元素存储到元素变量npixel中;

s407,获得npixel所在的行nhss,和所在列nlss;

s408,如果nhss>=2并且nhss<(rows-2)转到s409,否则转到s413;

s409,如果nlss>=2并且nlss<(cols-2)转到s410,否则转到s413;

s410,设定变量z1,z2,z3,z4,z5,z6,z7,z8,z9的值,它们的值如下:

z1=normarray的第nhss-1行,第nlss-1列的元素的值;

z2=normarray的第nhss-1行,第nlss列的元素的值;

z3=normarray的第nhss-1行,第nlss+1列的元素的值;

z4=normarray的第nhss行,第nlss-1列的元素的值;

z5=normarray的第nhss行,第nlss列的元素的值;

z6=normarray的第nhss行,第nlss+1列的元素的值;

z7=normarray的第nhss+1行,第nlss-1列的元素的值;

z8=normarray的第nhss+1行,第nlss列的元素的值;

z9=normarray的第nhss+1行,第nlss+1列的元素的值;

s411,计算边缘梯度算子bytd的值,其公式如下:

temp1=tanh((z7+2×z8+z9)-(z1+2×z2+z3));

temp2=tanh((z3+2×z6+z9)-(z1+2×z4+z7));

其中,tanh为双曲正切函数;

s412,将bytd存储到tdarray的第nhss行第nlss列的元素之中;

s413,如果normarray中尚有数据未处理则转到s406,否则转到s414;

s414,本步骤处理结束;

s5,结合遥感影像image和边缘梯度数组tdarray调整山体三维高度基准网bnet每一个元素的重构高度值cvalue:

s501,在bnet中取出一个元素bpoint;

s502,取出image中位置在横坐标在bpoint.x1-m/2和bpoint.x1+m/2之间,纵坐标在bpoint.y1-m/2和bpoint.y1+m/2之间的所有像元,放入bpixellist中;

s503,取出tdarray中的与bpixellist中所有像元行和列位置相同的数组元素,放入tdlist中;

s504,计算tdlist中所有元素的均值放入均值变量avg中;

s505,设定bpoint的重构高度值cvalue,公式如下:

bpoint.cvalue=bpoint.bvalue+(avg-1)×(bpoint.lyzg-bpoint.lyzd)

s506,如果bnet中所有元素处理完毕那么转到s507,否则转到s501;

s507,本过程处理结束;

s6,根据山体三维高程基准网bnet,山体较高分辨率数字高程数据dem2:

s601,建立空的较高分辨率数字高程数据dem2;

s602,编号计数器idcounter=0;

s603,取出bnet中的一个元素bpoint;

s604,将编号计数器idcounter,所在横坐标bpoint.bx1,所在纵坐标bpoint.by1,重构高度值bpoint.cvalue加入到dem2之中;

s605,idcounter=idcounter+1;

s606,如果bnet中所有元素处理完毕那么转到s607,否则转到s603;

s607,本过程处理结束。

本发明的有益效果如下:利用遥感影像提高山体的数字高程数据分辨率的方法,通过该方法可以利用山体遥感影像中的地形边缘信息细化原有分辨率较低的数字高程数据获得较高分辨率的数字高程信息。该方法可以在不需要额外飞行和测绘情况下,仅用低分辨率数字高程数据和遥感影像数据获得山体较高分辨率的数字高程数据,满足多山地区自然环境三维建模的需要。

附图说明

图1、本发明总体流程图;

图2、本发明步骤1对应的图;

图3、本发明步骤2对应的图;

图4、本发明步骤3对应的图;

图5、本发明步骤4对应的图;

图6、本发明步骤5对应的图;

图7、本发明步骤6对应的图;

图8、实施例1原始的分辨率为30米的数字高程数据构造的长白山十六峰中的一个山峰的坡面图;

图9、实施例1本发明方法处理之后输出的三维场景再现图;

图10、实施例2基于原始的分辨率为30米的数字高程数据构造的长白山三奇峰坡面图;

图11、实施例2本发明方法处理之后输出的三维场景再现图。

具体实施方式

通过以下实施例进一步举例描述本发明,并不以任何方式限制本发明,在不背离本发明的技术解决方案的前提下,对本发明所作的本领域普通技术人员容易实现的任何改动或改变都将落入本发明的权利要求范围之内。

实施例1

基于原始的分辨率为30米的数字高程数据构造的长白山十六峰中的一个山峰的坡面如图8所示:

可以看到整体由较大的三角面构成,较为粗糙难以满足场景再现的需要。

本发明利用遥感影像提高山体的数字高程数据分辨率的方法,包括以下步骤:

s1,输入较低分辨率的数字高程数据dem,输入山体高分辨率高程数据的分辨率m,输入生成数据的横坐标x和纵坐标y,横向长度w和纵向长度h。构造山体三维高度基准网bnet;

s2,根据数字高程数据dem初始化三维高度基准网bnet中所有bstruct的值;

s3,根据bnet中的所有元素的团块关系编号tid,计算bnet中每个元素的邻域最低值、邻域最高值;

s4,输入遥感影像image计算影像边缘梯度数组tdarray;

s5,结合遥感影像image和边缘梯度数组tdarray调整山体三维高度基准网bnet每一个元素的重构高度值cvalue;

s6,根据山体三维高程基准网bnet,山体较高分辨率数字高程数据dem2;

在经过本发明方法处理之后,输出的结果如图9所示:

可以看到山峰的结构较为明晰能够达到三维场景再现的需要。

实施例2:

基于原始的分辨率为30米的数字高程数据构造的长白山三奇峰坡面如图10所示:可以看到整体由较大的三角面构成,较为粗糙难以满足场景再现的需要。

本发明利用遥感影像提高山体的数字高程数据分辨率的方法,包括以下步骤:

s1,输入较低分辨率的数字高程数据dem,输入山体高分辨率高程数据的分辨率m,输入生成数据的横坐标x和纵坐标y,横向长度w和纵向长度h;构造山体三维高度基准网bnet;

s2,根据数字高程数据dem初始化三维高度基准网bnet中所有bstruct的值;

s3,根据bnet中的所有元素的团块关系编号tid,计算bnet中每个元素的邻域最低值、邻域最高值;

s4,输入遥感影像image计算影像边缘梯度数组tdarray

s5,结合遥感影像image和边缘梯度数组tdarray调整山体三维高度基准网bnet每一个元素的重构高度值cvalue;

s6,根据山体三维高程基准网bnet,山体较高分辨率数字高程数据dem2;

在经过本发明方法处理之后,输出的结果如图11所示:

可以看到山峰的结构较为明晰能够达到三维场景再现的需要。

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