This is an instance of sparse coding, which consists of modeling data vectors as sparse linear combinations of basis elements.
with dimensionality reduction techniques such as PCA, the learned basis vectors need not be orthogonal, which gives more flexibility to represent the data (Mairal et al., 2009).