RSE2021/云检测:Automatic cloud and cloud shadow detection in tropical areas for PlanetScope satellite images用于PlanetScope卫星图像的热带地区自动云和云阴影检测

  • 0.摘要
  • 1.概述
  • 3.方法
    • 3.1. 步骤1:生成初始的云和阴影蒙版
      • 3.1.1.基于单幅图像的云检测(任务A)
      • 3.1.2.基于单幅图像的云阴影检测(任务B)
      • 3.1.3.基于多时间的云和云阴影检测(任务C)
    • 3.2. 步骤2:优化初始的云和阴影蒙版
      • 3.2.1.使用形态学处理对云和阴影遮罩进行微调(任务D)
      • 3.2.2.使用基于对象的云和云阴影匹配对云和阴影掩码进行微调(任务E)
    • 3.3. 方法评价和跨方法比较
    • 3.4. 灵敏度分析:评估任务C中的异常值阈值对使用STI-ACSS导出的云和阴影掩模的影响

0.摘要

具有3米分辨率和几乎每日全球覆盖的PlanetScope卫星数据已越来越多地用于陆地表面监测,从土地覆盖变化探测到植被生物物理表征和生态评估。与其他卫星数据类似,在PlanetScope图像中有效筛选云和云阴影是这些应用的先决条件,但仍然具有挑战性,因为PlanetScope的1)光谱波段比其他卫星少,阻碍了传统方法的使用,2)不一致的卫星传感器辐射校准,使使用固定阈值的云/阴影检测不现实。为了解决这些挑战,我们开发了一种用于自动云和阴影筛选的时空集成方法(“STI-ACSS”),包括两个步骤:(1)通过自适应阈值方法集成空间(即单个PlanetScope图像的云/阴影指数)和时间(即PlanetScope图像时间序列中的反射异常值)信息,生成云/阴影的初始掩码;(2)将形态学处理与基于对象的云和云阴影匹配相结合,对这些初始掩码进行两步微调,得到最终掩码。我们在六个具有不同土地覆盖类型(如森林、城市、农田、稀树草原和灌木丛)代表性的热带地点测试了STI-ACSS。在每个站点,我们参考云/阴影的手动掩模来评估STI-ACSS的性能,并将其与四种最先进的掩模函数(Fmask)、自动时间序列分析(ATSA)、迭代雾霾优化转换(IHOT)和默认的PlanetScope质量控制层进行比较。我们的结果表明,在所有站点中,STI-ACSS 1)具有最高的平均总体精度(98.03%),2)对云产生的平均生产者精度为95.53%,对云阴影产生的平均生产者精度为89.48%,3)对站点和季节都具有健壮性。这些结果表明,在热带地区使用STI-ACSS对PlanetScope卫星进行云/阴影检测的有效性,并有可能扩展到其他光谱波段有限的卫星传感器。

1.概述

本研究的目的是为PlanetScope卫星影像的云和云影自动筛选开发一种有效而准确的方法。鉴于PlanetScope中云和云阴影检测的挑战,我们强调了这项工作的三个主要创新点如下。

  • 首先,我们将空间和时间信息结合起来,以弥补PlanetScope有限的光谱波段数量;
  • 其次,我们开发了一种新的自适应阈值方法来克服不同立方体卫星获取的PlanetScope时间序列图像之间的辐射不一致性;
  • 第三,我们整合了两步微调,即形态学处理和基于对象的云和云阴影匹配,以减少高空间分辨率图像生成的云/阴影掩码中常见的随机/遗漏/commission错误。

我们将这种方法命名为自动云影筛选(STI-ACSS)时空集成方法。通过这种方法,我们希望能有效地筛选PlanetScope影像中的云和云影,减少观测的不确定性,用于精细尺度的热带陆面监测。为了证明这一概念,我们将重点放在热带多云地区的六个地点,这些地点包括主要的热带土地覆盖类型,年降水量的梯度很大,云覆盖率的百分比范围很广。

3.方法

图2所示。自动云影筛选(STI-ACSS)方法的时空整合方法流程图。它包括由五个任务组成的两个关键步骤(A-E,更多细节见3.1-3.2节)。
步骤1:将基于云和阴影指数的单幅图像方法(Task A和B)与基于多时间的迭代离群点检测方法(Task C)集成,生成初始云和阴影掩模;
步骤2:通过形态学处理执行第一轮微调(任务D),通过基于对象的云和云阴影匹配方法(任务E)对初始云和阴影掩码进行第二轮微调。
这样,就生成了最终的云遮罩和阴影遮罩

提出的STI-ACSS使用由五个任务(a - e)组成的两个主要步骤来实现对PlanetScope图像时间序列队列中的云和云阴影的有效筛选(图2)。在步骤1中,通过结合基于单幅图像的(任务a和B)和基于多时间的(任务C)云/云阴影筛选算法,为时间序列中的每个图像生成初始云和阴影掩码。任务A和B分别依赖于雾霾优化变换(HOT;基于Zhang等人,2002)的云指数和flood-fill变换方法(Soille, 1999)对每一张图像的阴影指数进行处理。任务C使用一种新的基于多时间的云和云阴影筛选算法来执行,其中我们开发了一种迭代程序来识别反射异常值,这些异常值超过来自整个图像时间序列的一对统计百分位。在步骤2中,使用形态学处理进一步细化推导出的初始云和阴影掩模(Soille, 1999;朱等,2015;任务D)和基于对象的云和云阴影匹配(Zhu和Woodcock, 2012;任务E),去除“盐和胡椒的噪音”,并纠正低估或高估的云和云阴影。下面描述了每个Task的详细信息

3.1. 步骤1:生成初始的云和阴影蒙版

3.1.1.基于单幅图像的云检测(任务A)

在本节中,我们开发了一个自适应阈值,用HOT指数(一种常用的用于区分云和清晰像素的云指数)筛选出候选云像素(Zhang et al., 2002;朱和海尔默,2018;Zhu和Woodcock, 2012)。HOT的设计基于这样一个事实:无论土地覆盖类型如何,晴空像素的蓝色和红色波段都高度相关,在蓝色和红色二维(2d)空间中紧密遵循一条线性回归线(同步称为“晴空线”)(Zhang et al., 2002)。相比之下**,在这个二维空间中被云/雾污染的像素显示出明显偏离“清晰线”**(更多细节见Zhang等人,2002)。根据这个想法,HOT索引被计算为像素到清晰线的垂直距离:

Bblue和Bred是PlanetScope像素的蓝色和红色的反射率。a和b分别为“clear-line”的斜率和截距。为了获得“clear-line”的a和b,我们应用了一种基于bin的方法来自动计算任何给定PlanetScope图像的每像素HOT索引(更多细节见Zhu和Helmer, 2018)
如果云像素的HOT值通常大于晴空像素,如果它的HOT值(HOTx)大于给定的阈值(’ HOT阈值’=THOT),我们将图像像素(x)归类为云像素;否则,我们将其归类为清晰像素。像素x处的潜在云掩码(pCMx)可计算为

在这里,我们提出了一种自适应的方法来确定每个PlanetScope图像的THOT,考虑到它可能随土地覆盖类型、云覆盖百分比和植物物候变化。该方法包括四个步骤

  • 1)生成潜在的HOT阈值:为此,计算每个PlanetScope图像在2.5% (HOT2.5)和97.5% (HOT97.5)处的HOT指数。在HOT2.5和HOT97.5之间,还将该范围等分N个区间(如本研究中的50个区间),生成一系列潜在的HOT阈值(Ti, i∈[1,N])
  • 2)根据公式2,使用Ti记录每个THOT对应生成的pCM像素数(ni)。
  • 3)在二维空间上显示所有的(Ti, ni)对,从而得到一个单调递减曲线(图3)。

图3所示。示例演示了如何使用自适应方法确定区分云像素与无云像素的最佳阈值(任务A,图2)。蓝线显示了雾霾优化转换(HOT)值大于给定HOT阈值(x轴)的潜在云像素(Y轴)的数量。棕色虚线连接这条曲线的起点和终点。最佳阈值被确定为l型“角”,它与棕色虚线的距离最大(例如,在本例中,Euc-plantation site在2018年4月06日为180)。(关于图中关于颜色的解释,读者可参考本文的网页版本。)

  • 4)确定最佳的HOT阈值:由于之前已经证明了上述推导出的二维曲线(Hansen, 1992)的L型“corner”是云像素与无云像素的最佳分离(Liu and Liu, 2013),在这里我们自动确定L型“corner”,以推导出最佳的HOT阈值。具体来说,我们连接了曲线的端点(TN, nN)和起点(T1, n1),并计算了每个点(Ti, ni)到连接线的垂直距离。然后确定距离最大的点为L型“corner”(图3),取其阈值作为最优HOT阈值。值得注意的是,这里提出的识别L型“corner”的方法只是一个解,有兴趣的读者可以参考Hansen和Oleary(1993)了解其他解。

3.1.2.基于单幅图像的云阴影检测(任务B)

为了筛选出PlanetScope图像所有候选云阴影像素,我们首先计算阴影指数(SI),然后对导出的SI图像应用flood-fill填充方法(Soille, 1999)。SI是用公式3推导出来的,这与Luo等人(2008)相似。

Bred和BNIR分别为PlanetScope像素在红色和近红外波段的反射率,meanred和meanNIR分别为整个图像的红色和近红外波段的平均值。
由于云阴影像素的SI值通常比周围环境低得多(图2),我们随后应用了一种常用的flood-fill转换方法(Soille, 1999),其目的是将深色区域(SI值较低)的强度值提高到与其周围浅色像素(SI值较高)相同的强度水平,同时去除与SI图像边界不相关的区域极小值。使用这种方法,它将首先生成一个充满洪水的无云阴影的SI图像(即floodfill_SI),然后对SI图像的差异(the flood-fill_SI image - the original SI image)使用经验阈值将所有候选云阴影像素识别为一个潜在阴影掩膜(pSM)。关于flood-fill方法的详细信息,请参见Li等人(2017)和Zhu和Woodcock(2012)。因此,对于给定的图像像素(x),其pSM值(pSMx)可计算为

漫水填充法也需要在图像选择一个注水像素,该像素被称为种子点,种子点按照一定规则不断向外扩散,从而形成具有相似特征的独立区域,进而实现图像分割。漫水填充分割法主要分为3以下三个步骤:
Step1:选择种子点(x,y)(x,y)(x,y);
Step2:以种子点为中心,判断4邻域或者8邻域的像素值与种子点像素值的差值,将差值小于阈值的像素点添加进区域内。
Step3:将新加入的像素点作为新的种子点,反复执行Step2,直到没有新的像素点被添加进该区域。

3.1.3.基于多时间的云和云阴影检测(任务C)

为了进一步检测候选云/云阴影像素,我们搜索了在图像时间序列队列中与清晰像素的表面反射率有显著差异的“异常值”。具体来说,我们开发了一个迭代的工作流程,以反复细化检测到的“异常值”,直到每张图像的云和阴影掩码稳定下来。我们最初分别为四个PlanetScope波段的每个波段执行工作流程,然后聚合这些波段特定的异常值,以派生出最终的异常值层。工作流程包括以下五个步骤(图2)

图2所示。自动云影筛选(STI-ACSS)方法的时空整合方法流程图。它包括由五个任务组成的两个关键步骤(A-E,更多细节见3.1-3.2节)。
步骤1:将基于云和阴影指数的单幅图像方法(Task A和B)与基于多时间的迭代离群点检测方法(Task C)集成,生成初始云和阴影掩模;
步骤2:通过形态学处理执行第一轮微调(任务D),通过基于对象的云和云阴影匹配方法(任务E)对初始云和阴影掩码进行第二轮微调。
这样,就生成了最终的云遮罩和阴影遮罩

  • 1)集中PlanetScope图像时间序列:减少不同PlanetScope传感器之间跨传感器校准不一致导致的云和云阴影检测数据不一致(Houborg和McCabe, 2018;Wang等人,2020),我们使用方程Bis-mis集中PlanetScope图像,其中i为PlanetScope的波段编号,Bis是给定影像s在i波段的光谱反射率,mis是给定影像s在i波段的反射率平均值
  • 2)将PlanetScope图像时间序列划分为离散的三次块:我们将图像时间序列划分为用户指定大小的离散三次块(例如160 ×160 ×M像素,其中M为其时间序列中的图像数量),并分别计算每个块(b)的每个波段(i)的均值和标准差为mbi和σbi。用户可以从两个方面考虑块大小的设置:(1)块大小应相对小于云斑块,使云信息与清晰的土地覆盖不明显重叠;(2)地块大小应包括地表斑块大小,该斑块大小应能充分反映清地覆盖的空间变异性。在本研究中,根据以上两个考虑,160 ×160像素(对应于接近500m×500m的区域)的大小是合适的。
  • 3)识别候选离群块:地表反射率时间变异性高的块更容易被云/云影污染。因此,我们将σbi大于所有块的平均值(σ‾bi\overline{σ}_{bi}σbi​)的块标记为候选离群块。
  • 4)使用一对百分位阈值检测异常值:由于云/云阴影在可见光波段和近红外波段的反射率通常比其他背景高/低,我们预计云/云阴影位于每个光谱波段反射率分布的上/下端。在此基础上,引入了5%和95%的一对阈值(以后称为“离群值阈值”,关于该阈值对的确定,请参阅第3.4节),并将其应用于每个候选离群值块,通过该阈值对,我们为每个候选离群值块筛选出云/云阴影像素。
  • 5)迭代上述四步优化离群点检测:每次迭代计算去标云影离群点前后图像时间序列的相对标准差差值(即:∇m‾iσ‾i∇^{\overline{σ}_i}_{\overline{m}_i}∇mi​σi​​,其中mi和σi为时间序列光谱i波段的均值和标准差),重复上述四步,直到每个波段的相对差值(即:∇m‾iσ‾i∇^{\overline{σ}_i}_{\overline{m}_i}∇mi​σi​​)小于0.01。经过多次迭代,∇m‾iσ‾i∇^{\overline{σ}_i}_{\overline{m}_i}∇mi​σi​​趋于稳定(<0.01),并推导出每个给定波段i的所有潜在云影离群值(pCSOi)。为了保守地标记图像时间序列中所有潜在的云/云阴影像素,我们联合了波段特定的pCSOi来生成最终的潜在云和阴影异常值(pCSO)。

    最后,我们将基于单图像的方法(任务A的pCM和任务B的pSM)和基于多时间的方法(任务C的pCSO)分别检测到的所有候选云/云阴影像素相交,得到初始云(iCM;Eq. 6)和阴影(iSM;式7)掩码,假设这两种方法同时检测到的云/云阴影像素有助于减少云/云阴影检测的遗漏和调试误差。

3.2. 步骤2:优化初始的云和阴影蒙版

3.2.1.使用形态学处理对云和阴影遮罩进行微调(任务D)

虽然从第1步中得到的初始云和阴影掩码可以帮助识别最可能的云和云阴影像素,但仍然存在两个主要问题,包括1)“椒盐噪声”和2)低估云/云阴影周围的低密度边界区域(Li et al., 2017;Zhu等人,2015)。为了解决这些问题,对于每一张PlanetScope图像,我们将形态学的打开、关闭和膨胀与初始云和阴影掩膜上的结构元素相结合,以去除“椒盐噪声”,并包括云和云阴影边界区域(Soille, 1999;Soille和Pesaresi, 2002)。更具体地说,这些形态学操作使用一个移动的结构元素(即包含目标像素及其相邻像素的形状)来探测输入图像并与之交互(Gonzalez和Woods, 2006),目的不同。形态学的开启和关闭有助于去除小物体,填充小的孔洞和缝隙,同时保留输入图像中较大物体的形状和大小。形态学扩张有助于扩大输入图像中物体的形状和平滑边界。关于这些形态运算的细节也在下面的方程式8-9中显示:

其中iCM和iSM分别为初始云掩码和阴影掩码;rCM和rSM分别是改进后的云遮罩和阴影遮罩;○、∙和⊕是开、合和扩张的形态学运算,E为形态加工的结构元素。结构元素是一个圆盘形矩阵(Zheng等人,1995年),具有用户指定的大小(例如本研究中的7 ×7像素)。

3.2.2.使用基于对象的云和云阴影匹配对云和阴影掩码进行微调(任务E)

在任务D之后,仍然存在一些误检错误,特别是与黑暗或明亮的表面物体(如潮湿的土壤和道路;图2)。为了进一步减少这些误差,我们应用了一种基于对象的云和云阴影匹配方法(Zhu和Woodcock, 2012;Li et al., 2017),它利用云-云阴影链接,云及其对应的阴影通常同时出现在具有相似几何形状的图像中。更具体地说,我们首先利用太阳的几何位置计算了云阴影相对于相应云的投影方向(Zhu and Woodcock, 2012)。然后,我们沿着投影方向迭代移动云掩模,直到移动后的云掩模与原云阴影掩模之间达到最大重叠面积,从而计算出云与云阴影之间的最佳匹配距离。最后,我们采取了一个额外的步骤,在Fmask中使用,以排除那些没有匹配的云阴影的云像素,反之亦然。详情请参见Zhu和Woodcock(2012)。
值得注意的是,有两种情况下,基于对象的云和云阴影匹配方法并不适用,因为云并不总是在同一幅图像中有相应的阴影。这包括1)并非所有的云都有相应的阴影,包括但不限于薄云/雾霾,2)投影的云/云阴影对象部分位于图像的边缘或完全位于图像的外部。为了尽量减少与第一个场景相关的不确定性,我们实现了一个附加流程如下:对于任何给定的PlanetScope图像,当云对象的大小远远大于相应的阴影对象(例如超过两倍),且所有匹配的云和云阴影对象的重叠面积与所有云对象的面积之比小于0.5时,我们倾向于保留任务D生成的精细化的云和阴影掩码。我们首先根据云与云阴影的最佳匹配距离确定图像边缘在x轴和y轴上的范围,并将其投影的云/阴影部分或完全放在图像之外。

3.3. 方法评价和跨方法比较

我们采用了两种方法进行方法评价和方法间比较。首先,我们选择了47张具有代表性的PlanetScope图像,使用ENVI 5.3 (Exelis Visual Information solutions, Boulder, Colorado)为每一张选定的图像精心生成云和云阴影的手动掩模,并使用这些手动掩模对所有方法/产品进行定量准确性评估,包括STI- ACSS(我们的方法)、默认的PlanetScope qc(即UDM和UDM2)、Fmask (Zhu和Woodcock, 2012;Zhu等人,2015)、IHOT (Chen等人,2016)和ATSA (Zhu和Helmer, 2018)。具体来说,这47张代表性图片覆盖了所有热带地区,并跨越了云覆盖百分比(0%-96%)的大梯度,其中9张来自bci森林,7张来自manus -urban, 7张来自k67森林,10张来自eucc -plantation, 7张来自machakoss -savannah, 7张来自asm -灌木林。我们使用五种精度指标进行评估,分别是阴影和云的总体精度(OA)、用户的阴影和云的精度(UA,等于100%的佣金误差)和生产者的阴影和云的精度(PA,等于100%的遗漏误差)(Foody, 2002)。其次,由于STI-ACSS和默认质量保证都是专门针对具有较少光谱波段的高时空分辨率PlanetScope数据开发的,我们使用默认质量保证(即UDM和UDM2),特别是更发达的UDM2(自2018年8月以来可用),作为交叉评估STI-ACSS和其他方法(如Fmask、IHOT和ATSA)的基准。这个步骤有助于评估整个图像时间序列中不同方法之间的时间一致性/不一致性。
值得注意的是,1)默认的质量控制可以从 https://www. planet.com/获得;2) Fmask和ATSA方法最初是针对Landsat和Sentinel-2等多光谱数据设计的,一些与SWIR或TIR波段相关的规则或滤波器不适用于四波段PlanetScope数据;3) IHOT的开发是为了探测雾霾和云,而不是云影。基于这些考虑,为了使跨方法比较更有意义和严格,我们仔细调整了每个站点的Fmask、ATSA和IHOT参数,以达到它们的最佳性能,遵循Chen等人(2016)、Zhu和Helmer(2018)和Zhu和Woodcock(2012)。这些参数的结果显示在表S1中,而关于我们如何调整这些方法以获得特定地点的最优参数的细节显示在补充方法1中。此外,ATSA在交互式数据语言(IDL 8.5, Exelis Visual Information solutions, Boulder, Colorado)中进行,而其他三种方法(Fmask, IHOT和STI-ACSS)在Matlab R2019a (MathWorks, Natick, MA, USA)中进行。

3.4. 灵敏度分析:评估任务C中的异常值阈值对使用STI-ACSS导出的云和阴影掩模的影响

任务C中的离群值阈值用于确定基于多时间的方法中的反射率离群值,对于推导最终的云和阴影掩模至关重要。在这里,我们以eucc种植园场地为例,评估了不同阈值对最终结果的影响,包括2018年PlanetScope图像时间序列(n =35)。具体而言,我们使用云和阴影的手动掩码作为参考,并分别使用以下5个阈值对来评估结果,即1)第1和99百分位,2)2.5和97.5百分位,3)第5和95百分位,4)7.5和92.5百分位,5)第10和90百分位。选择了三个代表性的日期,包括湿季和干季,用于生成人工口罩和跨场景模型性能评估,包括2018年2月22日、7月19日和11月13日。灵敏度分析表明,不同的阈值对倾向于根据手动掩码产生相似的模型性能(图S2),尽管第5百分位和第95百分位的阈值对获得的OA略高于其他阈值对(表S2)。因此,我们在STI-ACSS中使用了第5百分位和第95百分位的阈值对

RSE2021/云检测:Automatic cloud and cloud shadow detection in tropical areas用于PlanetScope热带地区自动云和云阴影检测相关推荐

  1. ISPRS2018/云检测:Cloud/shadow detection based on spectral indices for multi/hyp基于光谱指数的多/高光谱光学遥感成像仪云/影检测

    Cloud/shadow detection based on spectral indices for multi/hyperspectral optical remote sensing imag ...

  2. 用于阴影检测的 DSC 特征

    原文:https://mp.weixin.qq.com/s?__biz=MjM5ODU3OTIyOA==&mid=2650672956&idx=3&sn=49bc9975cba ...

  3. Distraction-Aware Shadow Detection

    Distraction-Aware Shadow Detection 基本信息 值得学习的地方 Abstract 1. Introduction 2. Related Work 3. Our Appr ...

  4. TGRS2020/云检测:Deep Matting for Cloud Detection in Remote Sensing Images深度抠图在遥感图像云检测中的应用

    TGRS2020/云检测:Deep Matting for Cloud Detection in Remote Sensing Images深度抠图在遥感图像云检测中的应用 0.摘要 1.概述 2.云 ...

  5. 三维目标检测论文阅读:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

    VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 理解了PointPillars这篇文章后,看这篇文章就清 ...

  6. 学习笔记:点云库PCL(Point Cloud Library )介绍

    本文简要介绍点云库(PCL),一个用于处理2D和3D数据的开源库,如激光雷达点云. 通过熟悉使用PCL的一些基础知识,以便后续使用PCL进行定位.主要涵盖以下内容: 点云数据Point Cloud D ...

  7. 点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows

    点云生成-PointFlow: 3D Point Cloud Generation with Continuous Normalizing Flows 简介 论文 摘要 1.introduction ...

  8. ㉔云上场景:瑞云科技,支持Render cloud的超强计算

    瑞云科技是一家基于大规模并行计算与尖端计算机视觉技术的公司,是中国"自助式云渲染"的开创者,也是国内规模最大的自助式云渲染农场.备受广大青少年喜爱的国内外动画短片<哈布洛先生 ...

  9. 【华为云技术分享】HDC.Cloud|华为云Stack大咖说:如何实现微服务架构下的分布式事务

    离华为开发者大会2020(Cloud)开幕仅剩一月左右,让开发者们和华为大咖近距离沟通的扫地僧早午餐会也已经开放预约.但是,有些小伙伴们已经等不及到二月了,别急,福利这不就来了吗!华为云Stack混合 ...

最新文章

  1. 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
  2. Python的常见几道数学运算题
  3. python爬虫知识大全_Python爬虫知识点一
  4. if var matlab,matlab中if 语句后面的判别式不能是算术表达式?或者说变量?
  5. 2009年最佳80后科技创业者
  6. Thinkphp5.0 阿里云OSS扩展类上传示例(轮子)
  7. 信息学奥赛一本通(1130:找第一个只出现一次的字符)
  8. 力扣——删除重复的电子邮箱(数据库的题
  9. Java学习笔记2.5.2 循环结构 - 计数循环
  10. Python把list变为str
  11. Mac 10.11下成功安装Wex5及文件扩展属性问题
  12. 软件项目管理第4版课后习题[附解析]第一章
  13. python pop3_Python使用POP3和SMTP协议收发邮件
  14. CF1137A/1138C Skyscrapers
  15. postfix 安装
  16. 2023年股票开户哪家手续费最低?融资融券利息率最低多少?万1融5!支持量化交易的券商
  17. Python实现配色自由,展示一下可视化配色方案
  18. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示
  19. 在linux中连接mysql数据库服务器_Linux下连接Mysql服务器的方式
  20. 在xp下安装Ubuntu

热门文章

  1. Java随笔记 - Java代码实现一个死锁程序
  2. 周纪二 周显王元年(癸丑,公元前368年)——摘要
  3. 启动计算机实现5秒开机,电脑3秒开机,怎么做到的?
  4. 【校园卡】更新联通校园卡套餐海报及常规操作,校园卡最新消息及选购建议,增加评论功能...
  5. 关于12306车票个人信息的泄露
  6. 听听别人怎么说:VueJS 与 ReactJS
  7. 大数据时代下的迁移学习_重磅干货丨详解:学习迁移VS迁移学习大数据!
  8. IDA F5堆栈不平衡的处理
  9. ES6——Promise笔记
  10. C#将日期转化成英文