光谱预处理技术详解
1. 光谱中心化与标准化
光谱的中心化和标准化是重要的预处理步骤,它们能将每个波长的光谱值分别转换为零均值或零均值且单位方差。与对每个单独光谱进行标准化的SNV变换不同,中心化和标准化是按光谱的每个波长(列方向)进行的。
- 中心化 :通过从光谱波长值中减去该波长所有光谱值的均值来实现。
- 标准化 :先从每个光谱波长值中减去该波长所有光谱值的均值,再除以它们的标准差。
以下是实现中心化和标准化的代码:
# centre the spectra wavelengths
datsoilspc$specNorm <- scale(datsoilspc$spcAT, center = TRUE, scale = FALSE)
# standardize the spectra wavelengths
datsoilspc$specSdt <- scale(datsoilspc$spcAT, center = TRUE, scale = TRUE)
绘制原始光谱、中心化光谱和标准化光谱的代码如下:
# plot the original spectra
plot(colnames(datsoilspc$spcAT), datsoilspc$spcAT[1,],
type = "l",
ylab = " ",
xlab = "Wavelength /nm",
col = rgb(red = 1, gree