下一章 上一章 目录 设置
11、十一 变化检测
...
-
变化检测
第 1 节准备图像
在开始变化检测工作流程之前,图像预处理至关重要。目标是确保每个像素随着时间的推移在同一位置记录相同类型的测量结果。这些步骤包括特别重要的多时相图像配准以及辐射和大气校正。大部分工作已经自动化,并已应用于 Earth Engine 中提供的图像。图像选择也很重要。选择考虑因素包括寻找具有低云量并代表相同物候的图像(例如,叶在或叶在)。
下面块中的代码访问 USGS Landsat 8 Level 2, Collection 2, Tier 1数据集并将其分配给变量landsat8为了提高使用 Landsat 8 ImageCollection时的可读性,代码选择波段2–7并将其重命名为波段名称而不是波段编号。
var landsat8=ee.ImageCollection(\'LANDSAT/LC08/C02/T1_L2\')
.select(
[\'SR_B2\', \'SR_B3\', \'SR_B4\', \'SR_B5\', \'SR_B6\', \'SR_B7\'],
[\'blue\', \'green\', \'red\', \'nir\', \'swir1\', \'swir2\']
);
接下来,你将把 Landsat 8 ImageCollection 分成两个集合,每个集合对应一个时间段,并应用一些过滤和排序来获取两个时间段中每个时间段的图像。在这个例子中,我们知道分析的几个月里几乎没有云;如果你在不同的区域工作,你可能需要应用一些云遮蔽或镶嵌技术。
首先,它创建一个新的几何变量来过滤图像集合的地理范围。接下来,它通过以下方式为事件前图像创建一个新变量:1,按感兴趣的日期范围(例如2013年6月)过滤集合。(2)按几何形状过滤集合。(3)按云量排序因此第一张图像的云量最少。(4)从集合中获取第一张图像。
现在重复上一步,但将其分配给事件后图像变量,并将过滤器日期更改为事件前图像日期范围之后的一段时间(例如,2020年6月)。
var point=ee.Geometry.Point([-123.64, 42.96]);
Map.centerObject(point, 11);
var preImage=landsat8
.filterBounds(point)
.filterDate(\'2013-06-01\', \'2013-06-30\')
.sort(\'CLOUD_COVER\', true)
.first();
var postImage=landsat8
.filterBounds(point)
.filterDate(\'2020-06-01\', \'2020-06-30\')
.sort(\'CLOUD_COVER\', true)
.first();
第2节 :创建假色复合材料
在运行任何类型的变化检测分析之前,首先将输入图像可视化以了解情况、目视检查可能发生变化的位置,并在进一步操作之前识别输入中的任何问题是很有用的。
假色合成物以旨在说明图像对比度的方式在红色、绿色和蓝色通道中从多光谱传感器绘制波段。下面,你将在红色通道中使用SWIR -2、在绿色通道中使用 NIR、在蓝色通道中使用红色生成假色合成图。
按照下面代码块中的格式,首先创建一个变量visParam 来保存显示参数,选择 SWIR-2、NIR 和红色波段,绘制的值介于7750 和 22200之间。接下来,添加预事件和将事件后图像添加到地图并单击运行。单击并前后拖动事件后图像图层上的不透明度滑块以查看两个图像之间的变化。
var visParam={
\'bands\': [\'swir2\', \'nir\', \'red\'],
\'min\': 7750,
\'max\': 22200
};
Map.addLayer(preImage, visParam, \'pre\');
Map.addLayer(postImage, visParam, \'post\');
使用 SWIR 2、NIR 和红色的假色合成。由于植被在近红外波段具有高度反射性,因此绿色通道中的植被清晰可见。绿色的深浅可以表示植被密度;水通常显示为黑色至深蓝色;烧毁或贫瘠的区域显示为棕色。
第 3 节计算 NBR
下一步是数据转换,比如计算NBR。使用这些技术的优点是,数据以及数据中固有的噪声都已减少,以便简化两个图像之间的比较。图像差分是通过从第二日期图像的光谱值中逐像素减去第一日期图像的光谱值来完成的(图F4.4.2)。二维图像差分可以与单波段或光谱指数一起使用,具体取决于应用。确定正确的范围或指数来识别变化并找到正确的阈值来对其进行分类对于产生有意义的结果至关重要。使用已知的指数来突出感兴趣的变化事件之前和之后的土地覆盖状况是一个很好的起点。
例如,归一化水差指数有助于绘制洪水事件期间水位变化的图;NBR擅长检测土壤亮度;NDVI 可用于跟踪植被变化(尽管该指数很快就会饱和)。在某些情况下,建议使用已定制的派生波段组合来表示感兴趣的现象,例如使用归一化差异分数指数来监测森林退化
使用 NBR 检查火灾引起的景观变化,NBR 使用公式(NIR ? SWIR)/(NIR + SWIR) 来衡量火灾的严重程度。选择这些频段是因为它们对火灾引起的森林特定变化反应最强烈。这种类型的方程是变量的差除以它们的总和,被称为归一化差分方程(参见第F2.0章)。结果值始终介于-1和 1之间。NBR 可用于确定最近是否发生过火灾并对植被造成损害,但它的设计目的不是特别好地检测其他类型的土地覆盖变化。
首先,使用内置的归一化差函数计算每个时间段的 NBR 。对于 Landsat 8,请务必使用 NIR 和SWIR2 波段来计算 NBR。然后,使用内置的重命名功能重命名每个图像带。
// Calculate NBR.
var nbrPre=preImage.normalizedDifference([\'nir\', \'swir2\'])
.rename(\'nbr_pre\');
var nbrPost=postImage.normalizedDifference([\'nir\', \'swir2\'])
.rename(\'nbr_post\');
第 4节:单个日期转换
接下来,我们将检查已发生的变化,如比较两个特定日期时所看到的那样。
使用减法函数从事件后图像中减去事件前图像。使用专门的 Fabio Crameri batlow颜色渐变将两个日期的变化图像添加到地图。此色带是专为色盲和色弱观看者可读而设计的颜色组合的示例。了解你的制图选择是制作良好的变化地图的重要组成部分。
// 2-date change.
var diff=nbrPost.subtract(nbrPre).rename(\'change\');
var palette=[
\'011959\', \'0E365E\', \'1D5561\', \'3E6C55\', \'687B3E\',
\'9B882E\', \'D59448\', \'F9A380\', \'FDB7BD\', \'FACCFA\'
];
var visParams={
palette: palette,
min: -0.2,
max: 0.2
};
Map.addLayer(diff, visParams, \'change\');
色带的最低值是深蓝色,中间值是绿色和橙色,最高值是粉红色。我们使用从nbrPost 中减去nbrPre 来识别每个像素的变化。由于存在植被时 NBR 值较高,因此变化图像中的负值区域将代表nbrPre 图像中比nbrPost图像中更高的像素。相反,正差异意味着该区域获得了植被。
在变化图中,较低值范围的区域(蓝色)表示植被受到负面影响的区域,较高值范围的区域(粉色)表示植被增加的区域;绿色/橙色区域变化不大。在事件前和事件后图像中,绿色区域表示植被,而棕色区域表示贫瘠的土地。
第 5节.变更分类
一旦图像被转换和差异化为了突出显示正在发生变化的区域,下一步是将图像分类为由稳定类和变化类组成的专题图。这可以通过对变化层进行阈值处理或使用机器学习算法等分类技术来相当简单地完成。使用差异层的简单阈值处理的一大挑战是了解如何选择合适的阈值来将变化区域与稳定类别分开。另一方面,使用机器学习算法的分类技术使用你提供的用于训练分类器的参考数据示例来划分景观。
在本章中,我们将使用简单的手动阈值方法将图像分类,这意味着我们将决定图像中像素何时被视为变化或不变的最佳值。找到理想值是一项艰巨的任务,并且对于每个用例和输入组来说都是唯一的(例如,SWIR2 单波段变化的阈值将与 NDVI 的阈值不同)
首先,你将为增益和损失的阈值定义两个变量。接下来,创建一个常量值为0的新图像。这将是我们分类的基础。使用where函数对新图像重新分类。将差异图像小于或等于损失阈值的损失区域分类为2。当差异图像大于或等于增益阈值时,将增益区域重新分类为1。最后,单独屏蔽图像并将分类图像添加到地图中。注意:没有必要对图像进行自我屏蔽,并且在许多情况下,你可能对未更改的区域和已更改的区域同样感兴趣。
// Classify change
var thresholdGain=0.10;
var thresholdLoss=-0.10;
var diffClassified=ee.Image(0);
diffClassified=diffClassified.where(diff.lte(thresholdLoss), 2);
diffClassified=diffClassified.where(diff.gte(thresholdGain), 1);
var changeVis={
palette: \'fcffc8,2659eb,fa1373\',
min: 0,
max: 2
};
Map.addLayer(diffClassified.selfMask(),
changeVis,
\'change classified by threshold\');
A)
b)
俄勒冈州南部用材林的变化检测,包括(从左到右)事件前假彩色或合成图、事件后假彩色合成图、差异图像和分类变化图使用□□橡胶;俄勒冈州南部火灾造成的变化示例采用相同的地图类型。假彩色地图以绿色突出显示植被,以棕色突出显示贫瘠的地面。差异图像显示粉红色的 NBR 增益和蓝色的 NBR 损失。分类变化图像以蓝色显示 NBR 增益,以红色显示 NBR 损失。