一种基于随机森林的卫星遥感影像云量计算方法
技术领域
本发明属于卫星遥感影像质量检查技术领域,具体涉及一种基于随机森林的卫星遥感影像云量计算方法。
背景技术
在卫星遥感影像中,云层区域的存在将对影像自身质量和后续信息处理带来极大的不利影响,因此云量的检测与识别是卫星遥感影像应用领域的主要问题之一。遥感云检测技术可以用于删除卫星遥感影像中云所在区域的数据,大幅减少数据量,避免云量过大的无效数据占用系统的存储空间、处理能力和传输带宽,它有星上在轨应用和地面应用两种应用形式。
现有的云检测方法主要是有三种,分别是基于光谱阈值的方法、基于影像特征的方法以及综合方法。基于光谱阈值的方法根据云层自身的反射特性和温度特性,利用云在不同波段光谱下的反射率,人工设定光谱阈值来检测,但实际云层区域由于季节、大气环境、地理位置等因素带来的不稳定性使得该方法复杂度过高、适应性不强;基于影像特征的方法提取影像的灰度、频率、纹理等特征,通过云图所含特征分类进行云检测,但由于云和地物在一些特征方面存在重叠现象,检测结果取决于所选取特征的有效性、弱相关性、完整性;综合方法利用光谱阈值方法进行初检,筛选出备选云区域,再用特征提取的方法对这些区域再次进行云检测。
目前的云检测方法存在以下问题:第一、在轨云检测方法对设备体积、重量、功耗有较大的约束,限制了算法的复杂度及适应性,不能保证较理想的云检测效果;第二、目前已有的阈值法只针对某一颗卫星,缺乏一般系统方法,通用性差,且检测结果受到时空类型的影响,可靠性不高;第三、目前已有的基于影像特征的方法,只应用了单独的纹理或亮度或频率特征,在选取特征的完整性上有许多欠缺,导致检测方法的适应性不强,对厚云的检测效果尚好,但对于薄云、低云的检测仍然存在难度。
发明内容
为了解决上述技术问题,本发明提供了一种可以提高云检测精度的同时提升云检测方法的实用性和通用性,使其可以应用到资源三号、天绘一号以及高分一号等国产卫星影像产品质量检查系统中的卫星遥感影像云量计算方法。
本发明所采用的技术方案是:一种基于随机森林的卫星遥感影像云量计算方法,其特征在于,包括以下步骤:
步骤1:样本获取;
收集不同类型的遥感云图影像以及不同类型的地物影像,切分遥感云图影像和地物影像,获得云、地物样本影像,将云样本影像和地物样本影像作为训练集;
步骤2:特征提取;
计算所有样本影像的灰度特征、频率特征和纹理特征矢量值,形成特征矢量集合;
步骤3:影像分类器训练;
使用随机森林方法来训练样本影像的特征矢量集合,得到由决策树森林构成的影像分类器;
步骤4:待测影像切分;
将待测卫星遥感影像的原始影像进行下采样以获取缩略图,对缩略图进行影像切分得到子影像,计算所有子影像的灰度特征、频率特征和纹理特征矢量值;
步骤5:影像分类;
将单个子影像的特征矢量值输入影像分类器,影像分类器中的每个决策树都对该特征矢量进行分类投票,最终按照它在“云类”和“无云类”得票的多少来判断对应的子影像是否为含云区域;
步骤6:云量计算;
用步骤5所述的方法对所有子影像进行分类,分类完毕之后即可计算该卫星遥感影像的云量百分比。
作为优选,步骤1中所述的切分遥感云图影像和地物影像,获得云、地物样本影像,是对卫星遥感影像进行下采样获得缩略图,分别切分缩略图中的云图和无云图为32×32像素的样本影像。
作为优选,步骤2的具体实现包括以下子步骤:
步骤2.1:计算样本影像的灰度特征;
选用灰度均值、灰度方差、一阶差分、直方图信息熵作为灰度特征矢量;其具体实现包括以下子步骤:
步骤2.1.1:计算样本影像的灰度均值:
其中,f(i,j)是影像在第i行、第j列的灰度值,M是影像的宽,N是影像的高;
步骤2.1.2:计算样本影像的灰度方差:
灰度方差反映了影像整体灰度的分布均匀程度;
步骤2.1.3:计算样本影像的一阶差分:
一阶差分表达了影像中灰度变化的剧烈程度;
步骤2.1.4:计算样本影像的直方图信息熵:
其中,Hist[g]是影像g的直方图,Hist[g](i)是在某灰度级i下的像素分布频率,直方图信息熵综合反映了影像灰度分布以及影像的有序程度;
步骤2.2:计算样本影像的频率特征;
选择傅里叶变换高频系数以及小波变换高频系数作为频率特征矢量,具体实现包括以下子步骤:
步骤2.2.1:计算样本影像的傅里叶变换高频系数,选择如下的傅里叶变换函数:
当u,v=0时,C(u)C(v)=2-1/2;其他情况,C(u)C(v)=1;
步骤2.2.2:计算样本影像的小波变换高频系数,使用多贝西小波中的哈尔小波基函数对影像进行小波变换,其表达式如下:
对应的尺度函数为:
步骤2.3:计算样本影像的纹理特征;
选择灰度梯度共生矩阵的二次统计量:梯度均方差、混合熵和逆差距,以及影像的纹理分数维作为纹理特征矢量,具体实现包括以下子步骤:
步骤2.3.1:首先计算出影像的灰度梯度共生矩阵H(i,j),并对其进行归一化处理,得到归一化后的灰度梯度共生矩阵从而用于计算二次统计特征量;
步骤2.3.2:计算样本影像的梯度均方差,使用如下公式:
其中,Tavg为梯度平均,其表达式如下:
Lg表示最大灰度级,Ls表示最大梯度值;表示归一化后的灰度梯度共生矩阵;
步骤2.3.3:计算样本影像的混合熵,使用如下公式:
步骤2.3.4:计算样本影像的逆差矩,使用如下公式:
步骤2.3.5:计算样本影像的纹理分数维,使用分形布朗分维估计方法来求解影像的纹理分数维值,该方法的数学描述如下:
设X∈Rn,f(X)是关于X的实随机函数,若存在常数H(0<H<1),使得F(t)满足是一个与X,ΔX无关的分布函数时,则f(X)称为分形布朗函数;其中H称为自相似参数,则影像的分数维D的表达式为:
D=n+1-H。
作为优选,步骤3中所述的随机森林方法,其具体实现包括以下子步骤:
步骤3.1:将所有样本的特征矢量作为训练影像分类器的训练集S,特征维数记为F,使用到的决策树的数量记为t,每个节点使用到的特征数量记为f;终止条件为:节点上达到最少样本数sc或树达到最大深度d;
步骤3.2:从总的训练集S中有放回地多次随机采样,抽取大小和S一样的训练集得到每个决策树的训练集S(i),对于第x(x≤t)棵树,i=x;以S(i)作为根节点的样本,从根节点开始训练;
步骤3.3:如果当前节点达到终止条件,则设置当前节点为叶子节点,该叶子节点用于分类时的预测输出为当前节点样本集合中数量最多的那一类c(j),其占当前节点总样本的比例记为概率p(j);如果当前节点没有达到终止条件,则从F维特征中无放回地随机选取f维特征;计算这f维特征各自的Gini系数,寻找最优的特征k和阈值th,之后将当前节点上样本第k维特征小于th的样本划分到左子节点,其余的被划分到右子节点;
Gini系数的计算公式为:
Gini=1-∑(p(j)·p(j));
其中,p(j)为当前节点下第j类样本所占比例;
判断标准的数学表达式为:
argmax(Gini-GiniLeft-GiniRight);
其中,Gini是当前节点的Gini系数,GiniLeft是左子节点的Gini系数,GiniRight是右子节点的Gini系数,argmax为取最大值;
步骤3.4:重复执行步骤3.2和步骤3.3直到所有节点都训练过或者被标记为叶子节点;
步骤3.5:重复执行步骤3.2、步骤3.3、步骤3.4直到所有决策树都被训练过。
作为优选,步骤4中所述的计算所有子影像的灰度特征、频率特征和纹理特征矢量值,与步骤2中所述的所有样本影像的灰度特征、频率特征和纹理特征矢量值的计算方法相同。
作为优选,步骤5中所述的将单个子影像的特征矢量值输入影像分类器,其具体实现包括如下子步骤:
步骤5.1:将第j个子影像的特征矢量值输入当前决策树的根节点,根据当前节点的阈值th,判断是进入左节点(<th)还是进入右节点(≥th),直到到达某叶子节点,并输出该叶子节点的预测分类c(j);
步骤5.2:重复执行步骤5.1直到所有t棵决策树都输出了预测分类c(j),对每个决策树输出分类c(j)对应的p(j)进行累计,最终输出所有树中预测概率总和最大的那一个类,将影像分到对应的云类或无云类。
作为优选,步骤6中所述的计算该卫星遥感影像的云量百分比,是通过计算云类子影像的数目占所有子影像的比例,得到卫星遥感影像的云量百分比;云类子影像总量记为num_cloud,子影像总量记为num_all,云量cloudiness的计算公式如下:
cloudiness=num_cloud/num_all。
本发明方法可以一次训练后多次检测,通过大量影像训练得到影像分类器,云检测时只需要再次使用即可,随机森林算法在预测分类阶段时间复杂度低,可以快速进行云区检测;经测试,本发明方法既适用于全色影像(10维特征矢量),也适用于n通道多光谱影像(10n维特征矢量),并且已应用于实际的卫星影像产品质量检查系统中,对资源三号、天绘一号、高分一号等多颗国产卫星遥感影像进行云检测,其准确度分别达到91%、88%和92.4%。
附图说明
图1:本发明实施例的流程图。
图2:本发明实施例的云检测结果图,其中(a)为厚积云,(b)为点状云,(c)为厚云与薄云同时存在,(d)为薄云。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,此处所描述的实施示例仅用于说明和解释本发明,但并不限定本发明的保护范围。
本发明以资源三号卫星全色影像数据为例,请见图1,本发明提供的一种基于随机森林的卫星遥感影像云量计算方法,包括以下步骤:
步骤1:样本获取;
切分遥感云图影像和地物影像为32×32像素大小的样本,选择1024个云样本和地物样本作为训练集,其中,云样本包括薄云、点状云、厚积云等类型,地物样本包括海洋、山脉、农田、城市、沙漠等类型。
步骤2:特征提取;
提取所有样本影像的灰度特征、频率特征和纹理特征矢量值,形成10维特征集合,其具体实现步骤如下:
步骤2.1:计算样本影像的灰度特征;
选用灰度均值、灰度方差、一阶差分、直方图信息熵作为灰度特征矢量;其具体实现包括以下子步骤:
步骤2.1.1:计算样本影像的灰度均值:
其中,f(i,j)是影像在第i行、第j列的灰度值,M是影像的宽,N是影像的高;
步骤2.1.2:计算样本影像的灰度方差:
灰度方差反映了影像整体灰度的分布均匀程度;
步骤2.1.3:计算样本影像的一阶差分:
一阶差分表达了影像中灰度变化的剧烈程度;
步骤2.1.4:计算样本影像的直方图信息熵:
其中,Hist[g]是影像g的直方图,Hist[g](i)是在某灰度级i下的像素分布频率,直方图信息熵综合反映了影像灰度分布以及影像的有序程度;
步骤2.2:计算样本影像的频率特征;
选择傅里叶变换高频系数以及小波变换高频系数作为频率特征矢量,具体实现包括以下子步骤:
步骤2.2.1:计算样本影像的傅里叶变换高频系数,选择如下的傅里叶变换函数:
当u,v=0时,C(u)C(v)=2-1/2;其他情况,C(u)C(v)=1;
步骤2.2.2:计算样本影像的小波变换高频系数,使用多贝西小波中的哈尔小波基函数对影像进行小波变换,其表达式如下:
对应的尺度函数为:
步骤2.3:计算样本影像的纹理特征;
选择灰度梯度共生矩阵的二次统计量:梯度均方差、混合熵和逆差距,以及影像的纹理分数维作为纹理特征矢量,具体实现包括以下子步骤:
步骤2.3.1:首先计算出影像的灰度梯度共生矩阵H(i,j),并对其进行归一化处理,得到归一化后的灰度梯度共生矩阵从而用于计算二次统计特征量;
步骤2.3.2:计算样本影像的梯度均方差,使用如下公式:
其中,Tavg为梯度平均,其表达式如下:
Lg表示最大灰度级,Ls表示最大梯度值;表示归一化后的灰度梯度共生矩阵H(i,j)。
步骤2.3.3:计算样本影像的混合熵,使用如下公式:
步骤2.3.4:计算样本影像的逆差矩,使用如下公式:
步骤2.3.5:计算样本影像的纹理分数维,使用分形布朗分维估计方法来求解影像的纹理分数维值,该方法的数学描述如下:
设X∈Rn,f(X)是关于X的实随机函数,若存在常数H(0<H<1),使得F(t)满足是一个与X,ΔX无关的分布函数时,则f(X)称为分形布朗函数;其中H称为自相似参数,则影像的分数维D的表达式为:
D=n+1-H。
步骤3:影像分类器训练;
使用随机森林方法来训练样本影像的特征矢量集合,得到由决策树森林构成的影像分类器;
随机森林方法,其具体实现包括以下子步骤:
步骤3.1:将所有样本的特征矢量集合作为训练集S。特征维数为10,使用到的决策树的数量记为t,每个节点使用到的特征数量记为f。终止条件可以人工设置,主要有两种情况:节点上达到最少样本数sc或树达到最大深度d,本例中t为100,f设定为3,sc设定为10,d设定为100。
步骤3.2:从总的训练集S中有放回地多次随机采样,抽取大小和S一样的训练集得到每个决策树的训练集S(i),对于第x(x≤t)棵树,i=x。以S(i)作为根节点的样本,从根节点开始训练。
步骤3.3:如果当前节点达到终止条件,则设置当前节点为叶子节点,该叶子节点用于分类时的预测输出为当前节点样本集合中数量最多的那一类c(j),其占当前节点总样本的比例记为概率p(j);如果当前节点没有达到终止条件,则从10维特征中无放回地随机选取f维特征(f=3)。计算这f维特征各自的Gini系数,从中寻找最优的特征k和阈值th,之后将当前节点上样本第k维特征小于th的样本划分到左子节点,其余的被划分到右子节点。
Gini系数的计算公式为:
Gini=1-∑(p(j)·p(j))
其中,p(j)为当前节点下第j类样本所占比例。
判断标准的数学表达式为:
argmax(Gini-GiniLeft-GiniRight)
其中,Gini是当前节点的Gini系数,GiniLeft是左子节点的Gini系数,GiniRight是右子节点的Gini系数,argmax为取最大值。
步骤3.4:重复执行步骤3.2和步骤3.3直到所有节点都训练过或者被标记为叶子节点;
步骤3.5:重复执行步骤3.2、步骤3.3、步骤3.4直到所有决策树都被训练过。
步骤4:待测影像切分;
将待测资源三号卫星遥感影像的原始影像下采样为1024×1024像素8位bmp格式缩略图,对缩略图进行影像切分以获取其1024幅32×32像素子影像,提取所有子影像的特征矢量值,包括灰度、频率和纹理特征矢量值,特征矢量值的提取步骤和步骤2完全相同。
步骤5:影像分类;
将特征矢量集合输入影像分类器进行分类。其具体实现包括以下子步骤:
步骤5.1:将第j个子影像的特征矢量值输入某决策树的根节点,根据当前节点的阈值th,判断是进入左节点(<th)还是进入右节点(≥th),直到到达某叶子节点,并输出该叶子节点的预测分类c(j),即对样本所属类别进行“投票”。
步骤5.2:重复执行子步骤(1)直到所有t棵决策树都输出了预测分类c(j)。对每个决策树输出分类c(j)对应的p(j)进行累计,最终输出所有树中预测概率总和最大的那一个类,将影像分到对应的云类或无云类。若为云类,则标记为1,并将灰度值设为255,并记数为num_cloud;若为无云类,则标记为0,并将灰度值设为0。
步骤6:云量计算;
计算该卫星遥感影像的云量百分比,是通过计算云类子影像的数目占所有子影像的比例,得到卫星遥感影像的云量百分比;云类子影像总量记为num_cloud,子影像总量记为num_all,云量cloudiness的计算公式如下:
cloudiness=num_cloud/num_all。
请见图2,是本发明实施例的云检测结果图,图中的白色小格代表被检测为云类的子影像。图(a)是与非云区域对比分明的厚积云情况,从图(a)中可看出本发明方法能有效检测卫星遥感影像中的厚云区域;图(b)是大范围的点积云情况,从图(b)中可看出本发明方法对云区域大范围分布、缺乏有效地物信息的卫星遥感影像检测结果准确;图(c)是薄云与厚云同时存在的情况,从图(c)中可看出本发明方法也能够准确识别容易与地物区域混淆的云区域;图(d)是存在薄云的情况,从图(d)中可看出本发明方法能够准确检测卫星遥感影像中有一定透明度的薄云覆盖区域。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。