1.一种利用遥感影像提高山体的数字高程数据分辨率的方法,包括以下步骤:S1,输入较低分辨率的数字高程数据DEM,输入山体高分辨率高程数据的分辨率M,输入生成数据的横坐标X和纵坐标Y,横向长度W和纵向长度H;构造山体三维高度基准网BNET: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,本过程处理结束。