"AVOCADO"(异常植被变化检测)算法
AVOCADO"(异常植被变化检测)算法是一种连续的植被变化检测方法,也能捕捉植被再生。该算法基于 R 软件包 "npphen"(Chavez 等人,2017 年),开发用于监测物候变化,并经过调整,以半自动和连续的方式监测森林干扰和再生。该算法使用所有可用数据,不需要某些预处理步骤,如去除异常值。参考植被(本例中为未受干扰的森林)取自附近已知在整个时间序列中未受干扰的像素,因此无需留出部分时间序列作为历史基线。通过在 AVOCADO 中使用完整的时间序列,可以对植被变化做出更可靠的预测,同时提高我们处理数据缺口的能力。该算法考虑了年度物候的自然变异性(利用核拟合的灵活性),因此适用于监测季节性强的地区(如干旱生态系统)和渐变/微小变化的地区(如退化)。
"AVOCADO"(异常植被变化检测)算法是一种用于检测植被变化的算法。这个算法主要用于遥感图像的处理,通过比较不同时间点的图像来识别和定位植被变化的区域。
该算法的核心思想是将植被的变化视为异常值,并使用统计学方法来检测和分类这些异常值。具体而言,AVOCADO算法使用了聚类分析和假设检验的技术,对图像中的像素进行分类和比较。
首先,AVOCADO算法将两个不同时间点的图像分别转换为灰度图像。然后,使用聚类分析将像素分为不同的类别,类别之间的差异被认为是植被变化的指标。
接下来,AVOCADO算法使用假设检验来确定哪些类别的差异是统计显著的。通过比较类别之间的均值和方差,算法能够确定哪些区域的植被发生了显著变化。
最后,AVOCADO算法将检测到的变化区域标记出来,并生成一个变化图像,以便进一步分析和应用。
总的来说,AVOCADO算法是一种有效的植被变化检测方法,可以在遥感图像中准确地识别和定位植被变化的区域。它可以在农业、环境监测和城市规划等领域中得到广泛应用。
步骤
步骤 1:安装所需软件包
软件包可通过 github 获取,并可通过 "远程 "安装:
library(remotes)
install_github('MDecuy/AVOCADO')
#load library
library(AVOCADO)
请注意,关于 AVOCADO 算法所有参数的解释可在 github 文档中找到。
其他需要的软件包:rgdal、raster、npphen、bfastSpatial、RColorBrewer、rts、lubridate
GitHub - MDecuy/AVOCADO: Monitoring vegetation change in a continuous way
步骤 2:下载卫星数据
目前有多种卫星来源和数据下载方式,如地球探索者或谷歌地球引擎平台。有关如何在谷歌地球引擎指南平台上下载各种卫星数据的信息很多,但在此我们提供了一个 Landsat Collection 2 Level 2 数据的小型示例脚本。
第一步是上传您感兴趣区域(AOI)的形状文件。这可以在 "资产 "选项卡下完成,一旦上传,您就可以将目录(见 "表 ID")添加到下面的脚本中(在 "var input_polygon "下)。
GEE代码:
//Downloading Landsat data via the Google Earth Engine (GEE) platform.
// Paste this code into your GEE script page
// Specify the location of the before uploaded shapefile in your assets
var input_polygon = 'users/yourusername/ AOI';
// Export folder in your google drive
var input_export_folder = 'FolderName_You_Created_in_Your_GoogleDrive_Account';
// Start and end dates
var input_StartStr = ee.String('1990-01-01');
var input_FinishStr = ee.String('2015-01-01');
/* available indices: NDVI (ndvi_ind), NBR (nbr_ind), EVI (evi_ind), SAVI (savi_ind), tasseled cap
brightness (Tcap_bri_ind), tasseled cap greenness (Tcap_gre_ind), tasseled cap wetness (Tcap_wet_ind)
Specify the vegetation indices you are interested in by marking it as TRUE, or if not as FALSE.
In this example we use NDMI.*/
var ndvi_ind = ['FALSE'];
var ndmi_ind = ['TRUE'];
var nbr_ind = ['FALSE'];
var evi_ind = ['FALSE'];
var savi_ind = ['FALSE'];
var Tcap_bri_ind = ['FALSE'];
var Tcap_gre_ind = ['FALSE'];
var Tcap_wet_ind = ['FALSE'];
///
// END of input variables.
/* The following lines can be left default, unless you want
to change e.g. the cloud cover percentage.*/
///
// Buffer to download around the above area, use 0 for no buffer
var input_buffer = 0;
// Convert text string dates to date tpe
var Start = ee.Date(input_StartStr);
var Finish = ee.Date(input_FinishStr);
// Create a feature collection out of the fustion table id
var Polygon = ee.FeatureCollection(ee.String(input_polygon));
// Buffer the area of interest
var PolygonBuffer = input_buffer === 0 ? Polygon.first().geometry() : Polygon.first().geometry().buffer(input_buffer);
Map.addLayer(PolygonBuffer,null,'Buffer');
Map.centerObject(PolygonBuffer);
// Standard names to rename the bands regardless of collection
var selected_bands = ['blue','green','red','nir','swir','swir2','QA_PIXEL'];
// Applies scaling factors.
var applyScaleFactors = function (image) {
var opticalBands = image.select('SR_.*').multiply(0.0000275).add(-0.2);
return image.addBands(opticalBands, null, true);
};
// Merge the 3 collections, select, and rename the bands to standard names
var Collection = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2').map(applyScaleFactors)
.select(['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_