缨帽变换特征是通过缨帽变换(Tasseled Cap Trasform,TCT,又称为 K-T变换)得到的特征分量,是一种特殊的主成分分析方法(PCA)。但与 PCA 所不同的是,缨帽变换具有固定的变换矩阵。缨帽变换根据这个固定的变换矩阵将原始影像投影综合变换到具有物理意义的亮度(Brightness)、绿度(Greenness)和湿度(Wetness)特征向量三维特征空间,充分反映了裸土岩石、植被覆盖度和水分信息。这个变换的过程达到了减少特征维数、增强影像信息的效果。其变换公式如下:
式中,Y 表示缨帽变换后栅格影像;C 表示变换矩阵系数; X 表示变换前影像。
缨帽变换只需要确定变换矩阵系数。变换矩阵系数与影像的传感器相关。不同的传感器影像具有不同的变换矩阵系数。下面以Landsat 5为例:
表1 Landsat 5影像下TCT变换矩阵系数
Landsat5 TCT特征 | Blue | Green | Red | NIR | SWIR1 | SWIR2 |
Brightness | 0.3037 | 0.2793 | 0.4743 | 0.5585 | 0.5082 | 0.1863 |
Greenness | -0.2848 | -0.2435 | -0.5436 | 0.7243 | 0.0840 | -0.1800 |
Wetness | 0.1509 | 0.1973 | 0.3279 | 0.3406 | -0.7112 | -0.4572 |
// 定义变换系数
var coefficients = ee.Array([
[0.3037, 0.2793, 0.4743, 0.5585, 0.5082, 0.1863],
[-0.2848, -0.2435, -0.5436, 0.7243, 0.0840, -0.1800],
[0.1509, 0.1973, 0.3279, 0.3406, -0.7112, -0.4572]
]);
//影像转换为array
var image = ee.Image("LANDSAT/LT05/C01/T1_TOA/LT05_044034_20081011")
.select(['B1', 'B2', 'B3', 'B4', 'B5', 'B7']);
var arrayImage1D = image.toArray();
//print("arrayImage1D",arrayImage1D)
Map.addLayer(arrayImage1D,{},"arrayImage1D")
var arrayImage2D = arrayImage1D.toArray(1);
//print("arrayImage2D",arrayImage2D)
Map.addLayer(arrayImage2D,{},"arrayImage2D")
//相乘变换
var componentsImage = ee.Image(coefficients)
.matrixMultiply(arrayImage2D)
.arrayProject([0])
.arrayFlatten([[
'brightness', 'greenness', 'wetness'
]]);
var vizParams = {
"bands": ['brightness', 'greenness', 'wetness'],
"min": -0.1,
"max": [0.5, 0.1, 0.1]
};
Map.centerObject(image, 7);
Map.addLayer(componentsImage, vizParams, "componentsImage");
print("componentsImage",componentsImage)
运行结果:
Console结果: