一种基于全天相机云图的云量测量指标*
2021-07-15张雨昕石超君李梦慈相冠杰
张雨昕,邱 波,石超君,李梦慈,相冠杰
(河北工业大学,天津 300401)
全天相机[1]拍摄的云图是判断地球大气条件的重要依据,对天文选址工作至关重要,而云量是全天相机云图的重要信息之一。云量是指特定类型的云(部分云量)或全部类型的云(总云量)覆盖天空的估计比例。目前对于云量计算的研究大部分基于云检测实现,一类是根据云点与总像元点之间的比值计算云量,比如国际卫星测云气候学计划(International Satellite Cloud Climatology Project, ISCCP)根据像元辐射值与晴空辐射之间的关系,判断像元是云点还是非云点[2]。阈值法根据天空与云的红蓝波段比值的不同,利用固定阈值[3]、全局自适应阈值[4]、局部阈值[5]对云点进行判断。超高分辨率辐射仪第一阶段云量算法(Clouds from Advanced Very High Resolution Radiometer phase 1 algorithm, CLAVR-1)[6]将像元分为无云、混合和有云3类。中等分辨率成像光谱仪云量算法(Moderate Resolution Imaging Spectroradiometer, MODIS)[2]将像元分为确定云、可能云、可能晴空、晴空4类。此外还有超高分辨率辐射仪拓展云量算法(Clouds from Advanced Very High Resolution Radiometer Extended algorithm, CLAVR-X)[6]、高分辨率红外测深仪云量算法(High-resolution Infrared Radiation Sounder, HIRS)[7]等。但是它们都是将像元分为有限的几个类别做定性分析,这无疑是很粗糙的。此外还有基于特征的云检测分类算法如随机森林、支持向量机、贝叶斯分类器[8]、K-means++[9]、神经网络[10]等,主要基于颜色[11-14]或纹理特征[12]进行云区域分割。近年来深度学习在云检测领域得到了广泛应用,比如基于深度残差全卷积网络[14]的云检测方法实现了对遥感影像云层目标像素级别的分割,像素精度达到93.33%;还有基于带权重的多尺度融合分割网络的遥感云图云检测方法[15],像素精度可达95.39%;改进的全卷积神经网络实现了日间地基云图和夜间地基云图的云区域分割[16],像素精度达到94.59%。另一类根据像元辐射量与反射率的比值计算等效云量,仅是对云覆盖面积的反映。因此无论是云量还是等效云量,现阶段云量的研究只关注云层的覆盖面积而忽略了云的分布密集程度。
目前30 m口径望远镜(Thirty Meters Telescope, TMT)观测云量时使用人工判读云图法:分别在天顶距44.7°和65°处画圆(在图1中用蓝色和绿色标注),将全天云量分为外圈以内无云(Clear),外圈以内厚云覆盖超过50%(Covered),内圈有云(Inner)和内圈无云、外圈到内圈之间有云(Outer)4类。本质上说,人工判读法主要基于全天相机(All-Sky Imager, ASI)图像中云区域的比例测量云量,对云分布的密集程度考虑不充分,并且没有直观可靠的定量指标。
图1 全天相机云图区域划分Fig.1 Division of ASI image region
针对上述问题,本文提出了一种新的云量测量指标——云分布密度,用于描述围绕云图中心点的全天云量的分布情况。本文的主要创新点有:(1)将云点与云图中心点之间的距离变量引入云量计算,定义了云分布密度的计算模型;(2)重新定义云面积的计算模型,引入云层厚度变量;(3)提出了一种基于云分布密度和云面积的云图自动分类系统,使用4种传统分类算法(支持向量机、K最邻近法、决策树和随机森林)并选取1 511幅云图数据进行实验分析,结果表明,随机森林的分类结果最好,并且对各种类型的云图具有很高的识别精度。
本文使用的云图数据来源于中国科学院国家天文台光学天文学重点实验室,大小为1 411 × 1 411像素。数据集中有1 511幅全天相机云图,其中295幅外圈以内无云,696幅外圈以内厚云覆盖超过50%,277幅内圈有云,243幅内圈无云、外圈到内圈之间有云。
1 云分布密度的定义
1.1 云分布密度计算模型
云分布密度的提出主要是为了说明云区域距云图中心的远近对天文观测结果的影响,距离中心越近,影响越大,反之越小,云分布密度是对这种影响进行量化表示。云分布密度有3个决定要素:面积、厚度和距云图中心的距离。在归一化处理后的云区域灰度图的基础上,我们将云区域划分为N个单位云区域xi(i=1,2, ...,N),xi的面积为si,平均云层厚度为wi,云区域中心点距云图中心点的距离为di,一幅全天相机图像的云分布密度可以表示为
(1)
其中,f是以di为自变量的云区域分布密度函数。由于设备和裁剪的问题,距离参数不固定,因此取相对距离di*=di/R,其中,R为全天相机有效区域半径。
云分布密度主要寻找合适的函数表达云区域距云图中心点距离对观测的影响。根据云分布密度的定义,相同面积的云区域距离中心点越近,对观测影响越大。(1)式中的距离分布函数f是随di递减的函数,在云图中心点分布密度最大。由于本文对全天相机云图的分类是基于30 m口径望远镜的判断标准,在参数设定上考虑内圈和外圈的影响。经过多次试验和与人工观测的结果对比研究,设定云图中心点分布密度为1,内圈为0.7,外圈为0,经MATLAB线性拟合距离分布函数和相对距离的关系如图2,用公式表示为
图2 距离分布函数f与相对距离di*的关系
f(di*)=-24.33sin(di*-π)+1.228(di*-10)2-121.8 ,
(2)
其中,正弦项是为了修正拟合的二次函数,使其满足递减条件。
在实际运算中以每个像素点为计算单位,可使云分布密度测量精确到像素级别,由此单位云区域xi为云图像素点,面积si为1。由于云图中天空呈蓝色而云呈白色,且云层越厚云越白,即云层厚度与云点的灰度值呈正比,因此云层厚度wi由灰度值Vi表示为
wi=Vi/255 ,
(3)
其中,Vi的取值范围为0~255。综合(1),(2)和(3)式可得到基于像素的云分布密度计算模型
(4)
其中,Vi为云图像素值;di为该像素点距云图中心点的距离;Ncloud为云点总数。计算结果进行归一化,使云分布密度值映射到0~100之间。图3表示4类云图的云分布密度情况,可以看出各类云图有较明显的分界,说明云分布密度可以作为基于云量的云图分类标准。
图3 4类云图的云分布密度
1.2 云面积计算模型
目前国际上主要针对卫星云图根据云检测得到云像元,将云像元分为不同的种类,统计计算每种像元的概率,从而得到总云量,以此反映云层的覆盖面积。本文在超高分辨率辐射仪拓展云量算法的基础上,以云图的每个像素点定义云面积的计算模型,所有像素点的加权面积和与整个云图有效区域的面积比作为代表云面积(Scloud)的指标,以云层厚度作为云点面积权重,即根据灰度值定义权重参数,灰度值Vi的取值范围为0~255,将其线性划分为255个等级。云面积计算公式为
(5)
其中,Sglobal为云图有效区域面积,以像素为单位,本文中Sglobal=7062π≈1 565 882 pixel。
2 基于云量计算的云图分类系统
国内已有关于云图自动分类的相关研究:文[17]结合卫星云图的纹理特征和光谱特征,采用支持向量机算法实现卫星云图的自动分类;文[18]提出一种针对全天相机云图的云量自动计算方法,并根据30 m口径望远镜判读全天相机云图的方法对云图进行自动分类。但这两种方法没有对全天相机云图的云量特征进行深入描述。本文以云分布密度和云面积描述云图的云量特征,并结合机器学习算法构建基于云量计算的云图分类系统。图4是自动分类系统的流程图,云图经去噪、分割云区域图像后进行云量的数值计算,最后以云分布密度和云面积为特征的分类器对云图进行自动分类。
图4 云图自动分类系统流程图Fig.4 Cloud map automatic classification system flow chart
2.1 云图去噪
云图的固定噪声[19]会影响云检测的准确度,进而影响云量计算和云图分类的结果。本文主要针对严重影响云检测准确度的两种噪声——星光噪声和日月光噪声进行云图去噪,见图5(a),(b)。
2.2 云图分割
本文采用最大类间方差算法进行云区域检测,云区域标记为1,天空背景标记为0,得到二值图像如图5(c)。在此基础上将二值图像与原图相乘可以分割出云区域,然后将分割图进行灰度归一,消除云图之间的明暗差异,最终云图分割结果如图5(d)。
图5(a)原图(灰度图);(b)去噪结果;(c)云区域检测;(d)云图分割Fig.5(a) Original image (gray scale image); (b) Denoising image; (c) Cloud area detection; (d) Cloud segmentation.
2.3 云量计算
在云区域分割的基础上计算每幅云图的云分布密度和云面积,作为下一步云图分类的特征。表1显示了数据集中部分云图的云分布密度和云面积,图6展示了数据集中云图的两个指标之间的关系,图中离差(Deviation)计算公式为
σ=|Scloud-Dcloud/100|.
(6)
由图6可以看出,云分布密度和云面积整体上呈正相关。经统计,76.44%的云图的离差在0.1以内,93.78%的云图的离差在0.2以内。但在云较少(Scloud< 0.3)的情况下,两者并非严格正相关,离差较大,出现云面积较高但云分布密度较低的情况,这在表1列举的样例中也有体现。这是由于云分布密度的计算模型中加入了云点和中心点的距离影响:云面积大但距中心点远,云多分布在云图边缘,云分布密度低;反之,云面积小但距中心点近,云多位于云图中央,云分布密度高,不利于天文观测。云分布密度和云面积非正相关的情况多出现在Clear类和Outer类,可能导致这两类的误判。
图6 云分布密度和云面积之间的关系Fig.6 The relationship of ASICDD and Scloud
表1 部分云图的云分布密度和云面积Table 1 ASICDD and Scloud value of some ASI image
2.4 分类算法
本文采用支持向量机、K最邻近法、决策树和随机森林进行分类测试。数据集中训练集包含1 056幅全天相机图像,其中有206幅外圈以内无云,489幅外圈以内厚云覆盖超过50%,199幅内圈有云,162幅内圈无云、外圈到内圈之间有云。另外455幅全天相机图像用作测试集,包括89幅外圈以内无云,207幅外圈以内厚云覆盖超过50%,78幅内圈有云,81幅内圈无云、外圈到内圈之间有云。本文基于Python中的Scikit-learn(Sklearn)对全天相机图像进行分类,每幅云图的云分布密度和云面积作为分类特征,训练集用于训练4个分类器,结合分层洗牌分割交叉验证训练超参数,使用准确率(Accuracy)作为模型评分。另采用文[17]中的结合纹理特征与支持向量机的方法作对比,基于灰度共生矩阵(Gray-level Co-occurrence Matrix, GLCM)提取图像的灰度和纹理特征,结合支持向量机进行云图分类。
3 实验结果分析
为了全面评价本文提出的基于云分布密度和云面积的云图自动分类系统的分类效果,本文以分类准确率(Accuracy)、精准率(Precision)、召回率(Recall)和F1-score作为评判指标,对测试集455幅全天相机图像进行自动分类,并与国家天文台提供的人工分类标签作对比,以人工分类结果为准,评估不同分类算法在各类云图上的分类性能。4个指标定义为
A=(TP+TN)/(TP+FP+TN+FN),
(7)
P=TP/(TP+FP),
(8)
R=TP/(TP+FN),
(9)
(10)
其中,TP表示实为正并划分为正的样本数;TN表示实为负并划分为负的样本数;FP表示实为负却划分为正的样本数;FN表示实为正却划分为负的样本数。测试集的预测结果如表2,从表2可以看出,本文使用的4种算法在各类云图的识别准确率上均达到90%以上,表明本文提出的云分布密度和云面积可以作为可信的云量指标,在云图自动分类工作中展现了优良的性能。总体准确率最高的是随机森林算法,Covered和Inner达到了100%准确识别。但Outer类准确率最高的是文[17]中的方法,本文提出的方法很容易将Outer类误判为Clear类。基于灰度共生矩阵特征提取的方法对Outer类的识别较准确,但对Clear类和Inner类的识别准确度较差,因此总体准确率不如本文方法。
表2 自动分类准确率对比Table 2 Comparison of accuracy of automatic classification results
对于误判的云图,进行如图7所示的分析。图7(a)是人工判定标签为Clear,系统自动识别为Clear的云图;图7(b)是人工判定标签为Outer,系统自动识别为Clear的云图(误判云图),由图7可以看出,图7(a),(b)在外圈以内均有云存在,图7(a)中云较薄,分布较分散,图7(b)中云较厚,分布较为集中,(a)图的云分布密度和云面积均大于(b)图,因此导致系统误判。
图7 云图误判分析Fig.7 Misjudgment analysis of cloud images
实验采用精准率、召回率和F1-score对分类结果进行评判,表3显示了3种分类器的分类结果评分,总体评分取样本的宏平均。从表3可以看出,随机森林分类器的各项总评分最高,总精准率达到98.41%,总召回率达到98.2%,总F1-score达到98.3%,在本文自动分类系统中的分类性能最好。
表3 使用精准率、召回率和F1-score评估分类结果Table 3 Using precision, recall, and F1-score to evaluate classification results
4 结 论
本文提出了一个计算全天相机云图云量的直观可信的数值指标——云分布密度,并基于云量的数值特征建立云图自动分类系统,该系统实现了较高的识别准确率。本文测试了支持向量机、K最近邻、决策树和随机森林4种传统算法,其中随机森林的准确率最高,各类云图的识别准确率达95%以上,但是还存在云图误判的情况,需要进一步完善计算模型。此外,云图的光照条件容易影响云层厚度的判断,本文未能完全消除光照的影响,因此在接下来的研究中需要考虑光照的影响,通过去噪消除或是建立基于光照模型的云量计算模型。除此之外,还可以结合最新的机器学习算法完善系统,提高系统的识别准确率。