1.一种基于渐变尺度间隔变化规律算子的遥感影像植被分类方法,包括以下步骤:S1,输入多波段遥感影像Image,获取影像的宽度Width,获取影像的高度Height,获取分段影像亮度变量SingleImage,获取亮度区分度变量Qufen,获取亮度区分容忍度变量Quefenrong;
S101,输入多波段遥感影像Image;
S102,获取影像的宽度Width= Image的宽度;获取影像的高度Height= Image的高度;
获取影像的波段数Bands=Image的波段数;
S103,建立分段影像亮度变量SingleImage=建立宽度为Width高度为Height的二维数组,数组的所有元素值为0;
S104,初始阶段计数器InitCounter=1;
S105, 暂存单波段影像变量TempImage=读取Image的第InitCounter个波段的内容;
S106,暂存单波段影像最大值TempMax=TempImage中的最大值,暂存单波段影像最小值TempMin=TempImage中的最小值;
S107,计算TempImage=(TempImage-TempMin)/(TempMax-TempMin);
S108,计算SingleImage=SingleImage+TempImage;
S109,InitCounter=InitCounter+1;
S110,如果InitCounter>Bands则转到S111,否则转到S105;
S111,计算SingleImag=SingleImage/Bands;
S112,获取当前标准差变量StvSingleImag=SingleImag的标准差;
S113,获取亮度区分度变量Qufen=round(1/StvSingleImag×2),其中Round为进行四舍五入;
S114,计算SingleImag= SingleImag×Qufen;
S115,获取亮度区分容忍度变量Quefenrong=StvSingleImag×2;
S116,该步骤运行结束;
S2,建立植被无方向间隔特性模糊描述算子RuleOperator,输入一个像元在影像上所处的行数Row和列数Col,输入尺度宽度变量RuleWidth,输出植被无方向间隔特性结果矢量RuleVectorResult;
S201,建立植被无方向间隔特性模糊描述算子RuleOperator,输入一个像元在影像上所处的行数Row和列数Col,输入尺度宽度变量RuleWidth;
S202,算子暂存影像块OperatorTempBlock=以Row和Col为中心点在SingleImag上截取一个宽度为RuleWidth的正方形;
S203,算子暂存数组RuleOperatorArray=建立Qufen个元素的数组,数组所有元素值为
0;
S204,算子计数器RuleOperatorCounter=1;
S206,算子第一暂存阈值变量RuleOperatorTemp1=RuleOperatorCounter-Quefenrong;算子第二暂存阈值变量RuleOperatorTemp2=RuleOperatorCounter+Quefenrong;
S207,算子统计个数变量RuleOperatorTempNum=计算OperatorTempBlock中像元值小于RuleOperatorTemp1或者大于RuleOperatorTemp2的像元个数;
S208,RuleOperatorArray[RuleOperatorCounter]=RuleOperatorTempNum;
S209,RuleOperatorCounter=RuleOperatorCounter+1;
S210,如果RuleOperatorCounter大于Qufen则转到S211,否则转到S206;
S211,算子暂存数组最大值RuleOperatorArrayMax=RuleOperatorArray的最大值;
S212,RuleOperatorArray=RuleOperatorArray/RuleOperatorArrayMax;
S213, RuleVectorResult=tanh(RuleOperatorArray);
S214,将RuleVectorResult作为RuleOperator算子的结果输出;
S3,建立渐变尺度的间隔变化规律算子ScaleOperator,输入一个待分析像元在影像上所处的行数AnaRow和列数AnaCol,输出为渐变尺度的间隔变化规律矢量CharacterVector;
S301,建立渐变尺度的间隔变化规律算子ScaleOperator,输入一个待分析像元在影像上所处的行数Row和列数Col;
S302, 建立渐变尺度的间隔变化规律矢量CharacterVector=建立包含Qufen×3个元素的矢量;
S303, 建立渐变尺度迭代变量PevVector=建立包含Qufen个元素的矢量,矢量内所有元素均为0;
S303,渐变尺度计数器ScaleOperatorCounter=1;
S304,渐变尺度暂存变量ScaleTempVector=利用RuleOperator进行计算,设定RuleOperator的输入Row=AnaRow, Col=AnaCol, RuleWidth=3+ScaleOperatorCounter*2;
S305,渐变尺度暂存结果变量ScaleTempResult=ScaleTempVector-PevVector;
S306, PevVector=ScaleTempVector;
S307,渐变尺度算子复制起始变量ScaleStart=(ScaleOperatorCounter-1)×Qufen+
1;渐变尺度算子复制结束变量ScaleEnd=ScaleStart+Qufen-1;
S308,将ScaleTempResult的所有内容复制到CharacterVector的位置为第ScaleStart至ScaleEnd的元素上;
S309,计算ScaleOperatorCounter=ScaleOperatorCounter+1;
S310,如果ScaleOperatorCounter大于3则转到S311,否则转到S304;
S311,将CharacterVector作为算子的结果输出;
S4,输入样本表TrainSet,利用ScaleOperator对TrainSet进行处理,获得分类模型Model;
S401,输入样本表TrainSet,TrainSet中每一条记录包含如下字段:XRow:样本在影像上所处的行;
XCol:样本在影像上所处的列;
Decsion:样本所对应的类目,类型为整型变量;
S402,为TrainSet增加一个新的字段DescVector,DescVector的类型为一个可以存储Qufen×3个元素的矢量;
S403,样本个数变量TrainNum=TrainSet的记录个数;
S404,样本计数器TrainCounter=1;
S405,暂存行TempReco=TrainSet[TrainCounter];
S406,TempReco.DescVector=使用ScaleOperator进行计算,ScaleOperator的输入AnaRow=TempReco.XRow, AnaCol=TempReco.XCol;
S407,TrainCounter=TrainCounter+1;
S408,如果TrainCounter>TrainNum则转到S409,否则转到S405;
S409,构建支持向量机分类模型Model,Model的输入对应TrainSet的DescVector字段,Model的输出对应TrainSet的Decsion字段;
S410,利用TrainSet的内容对Model进行训练;
S411,该步骤运行结束;
S5,利用ScaleOperator和Model获得整个影像的分类结果,获得结果影像变量ResultImage;
S501,建立结果影像变量ResultImage=建立宽度为Width高度为Height的二维数组,数组的所有元素值为0;
S502,行计数器RowCounter=1;
S503,列计数器ColCounter=1;
S504,分类暂存矢量CalVector=使用ScaleOperator进行计算,ScaleOperator的输入AnaRow=RowCounter, AnaCol=ColCounter;
S505,分类暂存预测结果CalTempPred=将CalVector输入到Model之中,获得Model的决策结果;
S506, 设定ResultImage的在第RowCounter行第ColCounter列位置上的像元的值为CalTempPred;
S507,ColCounter=ColCounter+1;
S508,如果ColCounter大于Width则转到S509,否则转到S504;
S509,RowCounter=RowCounter+1;
S510,如果RowCounter大于Height则转到S511,否则转到S503;
S511,输出ResultImage作为最终分类结果。