Google Earth Engine(GEE)——协方差、特征值、特征向量主成分分析(部分)

主成分(PC)的变换(又称为Karhunen-Loeve变换)是一种光谱转动所需要的光谱相关的图像数据,并输出非相关数据。PC 变换通过特征分析对输入频带相关矩阵进行对角化来实现这一点。要在 Earth Engine 中执行此操作,请在阵列图像上使用协方差缩减器并eigen()在结果协方差阵列上使用该命令。为此目的考虑以下函数(这是完整示例的一部分 ):

先看函数:

eigen()特征向量

计算 A 行 A 列的二维方形数组的实数特征向量和特征值。返回一个包含 A 行和 A+1 列的数组,其中每一行在第一列中包含一个特征值,在其余 A 列中包含相应的特征向量。行按特征值降序排列。
此实现使用来自 https://ejml.org 的 DecompositionFactory.eig()。

Computes the real eigenvectors and eigenvalues of a square 2D array of A rows and A columns. Returns an array with A rows and A+1 columns, where each row contains an eigenvalue in the first column, and the corresponding eigenvector in the remaining A columns. The rows are sorted by eigenvalue, in descending order.

This implementation uses DecompositionFactory.eig() from https://ejml.org.

Arguments:

this:input (Array):

输入(数组):
用于计算特征值分解的二维方形数组。

A square, 2D array from which to compute the eigenvalue decomposition.

Returns: Array

ee.Reducer.centeredCovariance()

创建一个 reducer,将一些长度相同的一维数组减少到 NxN 形状的协方差矩阵。警告:此reducer 要求数据以均值为中心。

Creates a reducer that reduces some number of 1-D arrays of the same length N to a covariance matrix of shape NxN. WARNING: this reducer requires that the data has been mean centered.

No arguments.

Returns: Reducer

matrixMultiply(image2)矩阵乘法

返回 image1 和 image2 中每个匹配的波段对的矩阵乘法 A*B。如果 image1 或 image2 只有 1 个波段,则将其用于另一个图像中的所有波段。如果图像具有相同数量的波段,但名称不同,则它们按自然顺序成对使用。输出波段以两个输入中较长的命名,或者如果它们的长度相等,则按 image1 的顺序命名。输出像素的类型是输入类型的并集。

Returns the matrix multiplication A*B for each matched pair of bands in image1 and image2. If either image1 or image2 has only 1 band, then it is used against all the bands in the other image. If the images have the same number of bands, but not the same names, they're used pairwise in the natural order. The output bands are named for the longer of the two inputs, or if they're equal in length, in image1's order. The type of the output pixels is the union of the input types.

Arguments:

this:image1 (Image):

The image from which the left operand bands are taken.

image2 (Image):

The image from which the right operand bands are taken.

Returns: Image

代码:

构建一个函数,包含协方差计算,转换数组
var getPrincipalComponents = function(centered, scale, region) {
  // 将图像的波段折叠成每个像素的一维阵列。
  var arrays = centered.toArray();

  // 计算区域内波段的协方差。
  var covar = arrays.reduceRegion({
    reducer: ee.Reducer.centeredCovariance(),
    geometry: region,
    scale: scale,
    maxPixels: 1e9
  });

  // 获取“数组”协方差结果并转换为数组。
  // 这表示区域内的带间协方差。
  var covarArray = ee.Array(covar.get('array'));

  // 执行特征分析并将值和向量分开。
  var eigens = covarArray.eigen();

  // 这是特征值的 P 长度向量。
  var eigenValues = eigens.slice(1, 0, 1);
  // 这是一个在行中具有特征向量的 PxP 矩阵。
  var eigenVectors = eigens.slice(1, 1);

  // 将数组图像转换为二维数组以进行矩阵计算。
  var arrayImage = arrays.toArray(1);

  // 左乘图像数组乘以特征向量矩阵。
  var principalComponents = ee.Image(eigenVectors).matrixMultiply(arrayImage);

  // 将特征值的平方根转换为 P 波段图像。
  var sdImage = ee.Image(eigenValues.sqrt())
      .arrayProject([0]).arrayFlatten([getNewBandNames('sd')]);

  // 将 PC 转换为 P 波段图像,由 SD 归一化。
  return principalComponents
      // Throw out an an unneeded dimension, [[]] -> [].
      .arrayProject([0])
      // Make the one band array image a multi-band image, [] -> image.
      .arrayFlatten([getNewBandNames('pc')])
      // Normalize the PCs by their SDs.
      .divide(sdImage);
};

// 这个函数基本上涵盖了主成分分析和归一化的过程

### 回答1: 我们正在研究如何使用Google Earth Engine (GEE)来构建Geographically Weighted Principal Components Analysis (GWPCA)函数库,以便利用空间数据进行分析。 ### 回答2: 在使用Google Earth EngineGEE)构建GWPCA(地理加权主成分分析)函数库时,我们需要进行以下几个步骤。 首先,我们需要了解GWPCA的基本原理。GWPCA是一种基于地理加权的主成分分析方法,它考虑了空间数据的地理关联性和权重分布。在GEE中,我们可以通过使用合适的数据集(如遥感影像数据)来进行GWPCA分析。 其次,我们需要使用JavaScript编程语言在GEE平台上实现GWPCA函数库。在编程过程中,我们可以引用GEE提供的已有函数和库,如图像集合、波段操作、统计计算等。通过这些函数和库的组合,我们可以编写出符合GWPCA算法步骤的代码。 具体来说,GWPCA算法的步骤包括:数据准备、地理加权矩阵计算、数据标准化、协方差矩阵计算特征值-特征向量分解、主成分得分计算等。我们需要根据这些步骤编写对应的函数,并将这些函数整合到GWPCA函数库中。 构建GWPCA函数库时,我们可以根据GEE的平台特点,利用分布式计算的优势来加速分析过程。同时,我们还可以考虑提供用户友好的接口,如参数设置、图形展示等,方便用户在GEE平台上使用GWPCA函数库进行地理分析。 最后,我们可以通过验证和调试来确保GWPCA函数库的准确性和稳定性。通过对实际数据集的应用和分析,我们可以评估GWPCA函数库的性能,并根据反馈进一步完善和优化。 总之,基于GEE构建GWPCA函数库需要了解GWPCA原理,使用JavaScript编程在GEE平台上实现相应代码,并通过验证和调试来确保函数库的准确性和性能。这将使用户能够在GEE平台上更方便、高效地进行地理加权主成分分析。 ### 回答3: 基于GEEGoogle Earth Engine)构建GWPCA(Generalized Weighted Principal Component Analysis)函数库,可以实现对遥感影像数据的高效处理和分析。 首先,GEE是一个基于云计算平台的开放平台,提供了大规模遥感数据的存储、处理和分析能力。它具有强大的计算能力和丰富的遥感算法库,使得我们能够在云端快速、高效地处理大数据量的遥感影像。 GWPCA是一种广义加权主成分分析方法,可以用于遥感影像数据的降维和特征提取。通过构建GWPCA函数库,可以将GWPCA方法应用于GEE平台,实现对遥感影像数据的处理和分析。 构建GWPCA函数库的过程中,需要首先将GWPCA算法转化为可在GEE平台上运行的代码。这包括算法的数学模型、参数设置以及实现步骤等。在GEE平台上,可以用JavaScript或Python等编程语言编写代码,实现GWPCA算法的具体功能。 其次,构建GWPCA函数库还需要进行算法验证和性能优化。在算法验证方面,可以使用现有的遥感影像数据集进行测试,比较GWPCA方法与其他降维算法的效果和准确性。在性能优化方面,可以利用GEE平台的分布式计算和并行处理能力,对GWPCA算法进行优化,提高运行效率和处理能力。 最后,构建完成的GWPCA函数库可以应用于各种遥感影像数据的处理和分析任务。以影像分类为例,可以利用GWPCA函数库实现对多光谱遥感影像数据的降维和特征提取,提高分类精度和效率。同时,GWPCA函数库还可以结合其他遥感算法和工具,实现更为复杂的影像处理和分析任务。 总之,基于GEE构建GWPCA函数库可以充分发挥GEE平台的优势,实现对大规模遥感影像数据的高效处理和分析,为遥感科学和应用提供强大的支持。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值