Sparse dictionary learning