Implementation Requirements
- The principal component analysis (PCA) shall be implemented as a GPF operator.
- The GPF operator shall make use of more general PCA algorithm classes that do stand alone. The GPF operator shall not exhibit algorithm code.
- The singular value decomposition shall be calculated by means of a standard library, e.g. UJMP or JLAPACK
- PCA and factor analysis are very similar. It should be feasible to develop an abstraction of both algorithms, so the GPF operator can make use of both PCA and factor analysis without changing the operator implementation
User Requirements
- Input
- The input bands shall be selectable
- The GPF operator shall be applicable to one or more input products at once
- Output
- The contribution of each principal component to the input bands shall be put out as band -> KS: I am not sure, if this it the correct description of the output bands?
- The residuals shall be put out as band
- The principal components (eigenvectors and eigenvalues) shall be put out as product metadata (see table below)
- The principal components (eigenvectors and eigenvalues) shall be put out as XML or ASCII text file (see table below)
- Parameters
- The number of principal components shall be defined
- manually (number of principal components shall correspond to the number of input bands by default)
- automatically (based on a user-defined percentage of variance to be reached)
- It shall be possible to select a region-of-interest (ROI)
- It shall be possible to load a PCA result from an XML or ASCII text file
- The number of principal components shall be defined
Note
The PCA eigenvectors shall be stored according to the following scheme (eigenvectors are the column vectors):
|
PC1 |
PC2 |
PC3 |
PC4 |
... |
|---|---|---|---|---|---|
B1 |
|
|
|
|
|
B2 |
|
|
|
|
|
B3 |
|
|
|
|
|
B4 |
|
|
|
|
|
... |
|
|
|
|
|
Labels