1. A method of hyperspectral image dimension reduction, comprising: receiving a hyperspectral image having a plurality of pixels; establishing a basis vector (BV) set; for each of the plurality of pixels: reading a spectral vector from the pixel; decomposing the spectral vector with the BV set to provide a reduced dimension vector for the pixel; and providing a dimension reduced image comprising the reduced dimension vectors for each pixel; wherein establishing the basis vector (BV) set includes: selecting an initial pixel; reading the spectral vector for the initial pixel, the spectral vector assigned as an initial basis vector (BV) of the set; and for each of the remaining plurality of pixels: reading a spectral vector from the pixel; unmixing the spectral vector with the BV set to determine a residual vector; and in response to a magnitude of the residual vector being greater than a threshold, adding the spectral vector to the BV set; wherein the BV set has a pre-determined maximum number of members, and in response to an attempt to exceed the maximum number, optimizing the set to maintain the maximum number of spectral vectors; wherein the BV set is optimized to maintain the pre-determined maximum number of members; and wherein for optimization, when the maximum number for the BV set is reached, a residual magnitude of a new candidate vector is compared to residual magnitude values of BV set members, the new candidate replacing a BV set member in response to the residual magnitude of the new candidate being larger than a smallest residual computed from the existing BV set member.