1.一种在高分辨率遥感影像中识别建筑物的方法,包括以下步骤:S1. 输入遥感影像Image,该影像包含BandNum个波段,该影像的大小为RowNum行,ColNum列,指定跨度阈值SpanNum;输入由SampleNum个样本点构成样本集TestSet;
S101,输入遥感影像Image,该影像包含BandNum个波段,该影像的大小为RowNum行,ColNum列;
S102,指定跨度阈值SpanNum;跨度阈值的取值区间为[5,10],默认值为5;
S103,在影像上选取SampleNum个样本点构成样本集TestSet;
TestSet为一个SampleNum个样本集合{p1,p2,p3,..pSampleNum},对于其中任意一个样本pi其内容为pi={hs,ls,lable,character},其中hs表示pi在影像中所处行,ls表示pi在影像上所在处列,label的值为1或者‑1,其中1表示pi所在位置为建筑物,‑1表示pi所在位置为非建筑物,样本规律性特征character为4个元素的数组;
S2. 建立影像位置异质性处理器HeteroOperator;HeteroOperator需要输入两个位置点px1和px2,输出为异质性差值HeteroDifference;
S201,建立影像位置异质性处理器HeteroOperator;HeteroOperator的输入为两个位置点px1和px2;
px1的内容为px1={hs1,ls1},其中hs1表示px1在影像中所处的行,ls1表示px1在影像中所处的列,px1的内容为px1={hs1,ls1},其中hs1表示px1在影像中所处的行,ls1表示px1在在影像中所处的列;
S202,设置异质性差值HeteroDifference=0;
S203, 设置行暂存变量counterI=0;
S204, 设置列暂存变量counterJ=0;
S205,取出Image上行为hs1‑2+counterI列为ls1‑2+counterJ的像元,并存储在变量Pixel1中;
S206,取出Image上行为hs2‑2+counterI列为ls2‑2+counterJ的像元,并存储在变量Pixel2中;
S207,计算Pixel1与Pixel2的差距diff,计算公式如下:S208,计算HeteroDifference=HeteroDifference+diff;
S209,计算counterJ=counterJ+1;
S210,如果counterJ<(SpanNum/2)则转到S205, 否则转到S211;
S211, 计算counterI=counterI+1;
S212, 如果counterI<(SpanNum/2)则转到S204, 否则转到S213;
S213,计算HeteroDifference=tanh(HeteroDifference);
S214,输出异质性差值HeteroDifference;
S3,构建影像像元规律性过滤器Filter,Filter的输入为一个位置点PixelFilter,输出为该位置的规律性数组Regular:S301,构建影像像元规律性过滤器Filter,Filter的输入为一个位置点PixelFilter;
PixelFilter的内容为PixelFilter={hsP,lsP},其中hsP表示PixelFilter在影像中所处的行,lsP表示PixelFilter在影像中所处的列;
S302,计算过滤范围参数filterscope=round(SpanNum/4+0.5) ;
其中round为进行四舍五入;
S303,构建模板数组一mask1=[‑filterscope, ‑filterscope, filterscope, filterscope],模板数组二mask2=[‑filterscope, filterscope, ‑filterscope, filterscope];
mask1和mask2为数组,两个数组均包含4个元素,数组的下标为从1到4;
S304,构建规律性数组Regular=[0,0,0,0];
temp为数组,数组均包含4个元素,数组的下标为从1到4;
S305,循环变量counterP=1;
S306,建立px2变量,px2的hs2=hsP,px2的ls2=lsP;
S307, 建立 px1变量,px1的hs1=hsP+SpanNum×mask1[counterP], px1的ls1=lsP+SpanNum×mask2[counterP];
其中mask1[counterP]表示mask1的第counterP个元素,mask2[counterP]表示mask2的第counterP个元素;
S308,输入px1和px2,执行影像位置异质性处理器HeteroOperator,获得HeteroDifference;
S309,Regular[counterP]=HeteroDifference;
其中Regular[counterP]表示Regular的第counterP个元素;
S310,counterP=counter+1;
S311,如果counterP<=4则转到S306,否则转到S312;
S312,输出Regular;
S4,通过Filter处理TestSet的所有元素;TestSet中每一个样本通过Filter的处理获得规律性特征character;
S401,取出TestSet中的一个元素pi={hs,ls,lable,character};
S402,建立变量PixelFilter,PixelFilter的hsP=hs,PixelFilter的lsP=ls;
S403,输入PixelFilter,执行Filter,获得Regular;
S404,pi的character=Regular;
S5,构建结果影像ResultImage,ResultImage的行数与列数与Image相同;通过Filter处理Image中的所有像元,并与TestSet的样本进行比较,获得是否为建筑物的判断结果;根据判断结果设定ResultImage中像元的颜色,白色对应建筑,黑色对应非建筑;
S501,取出Image中的每一个像元,像元其位置所在行为hsC,所在列为lsC;
S502,建立变量PixelFilter,PixelFilter的hsP=hsC,PixelFilter的lsP=lsC;
S503,输入PixelFilter,执行Filter,获得Regular;
S504,样本计数器counterS=1,统计值sums=0;
S505,取出TestSet中的第counterS个样本,获得该样本的label和character;
S506,计算带下标距离labelDiff:S507, sums=sums+labelDiff;
S508, counterS=counterS+1;
S509, 如果counterS<=SampleNum则转到S505,否则转到S510;
S510,如果sums>0则转到S511,否则转到S512;
S511,将ResultImage上行为hsC列为lsC的像元标记为黑色,转到S513;
S512,将ResultImage上行为hsC列为lsC的像元标记为白色;
S513,处理过程结束。