int QccHYPkltTrain(const QccIMGImageCube *image, QccHYPklt *klt);
int
QccHYPkltTransform(QccIMGImageCube *image, const QccHYPklt *klt, int num_pcs);
int QccHYPkltInverseTransform(QccIMGImageCube *image, const QccHYPklt
*klt);
QccHYPkltTransform() applies the forward KLT spectrally to each pixel vector in image, which is overwritten with the transformed dataset. num_pcs must be less than or equal to klt->num_bands. If num_pcs is less than klt->num_bands, QccIMGImageCubeResize(3) is called after the spectral transform is performed in order to retain only num_pcs spectral principal components (PCs).
QccHYPkltInverseTransform() is the corresponding inverse transform. If image->num_frames is less than klt->num_bands, QccIMGImageCubeResize(3) is called prior to application of the inverse transform to resize image to have dimension of klt->num_bands spectrally such that the added PCs are zero.