# ppi

## Description

extracts endmember signatures from hyperspectral data `endmembers`

= ppi(`inputData`

,`numEndmembers`

)`cube`

by using the
pixel purity index (PPI) algorithm. `numEndmembers`

is the number of
endmember signatures to be extracted using PPI algorithm.

The function projects the hyperspectral data onto a set of randomly generated unit vectors. The pixels with extreme values in the direction of an unit vector are considered pure pixels and they constitute the endmembers. The value of an endmember across all the spectral bands in the input data comprises the endmember signature. For more information, see Algorithms.

specifies options using one or more name-value pair arguments in addition to the input
arguments in the previous syntax. Use this syntax to set the options for`endmembers`

= ppi(`inputData`

,`numEndmembers`

,`Name,Value`

)

number of randomly generated unit vectors to be used for projection.

extracting endmember signatures from a reduced hyperspectral data.

**Note**

This function requires the Hyperspectral Imaging Library for Image Processing Toolbox™. You can install the Hyperspectral Imaging Library for Image Processing Toolbox from Add-On Explorer. For more information about installing add-ons, see Get and Manage Add-Ons.

The Hyperspectral Imaging Library for Image Processing
Toolbox requires desktop MATLAB^{®}, as MATLAB
Online™ or MATLAB
Mobile™ do not support the library.

## Examples

## Input Arguments

## Output Arguments

## Algorithms

Pixel purity index (PPI) method computes the orthogonal projections of hyperspectral data
values on a set of randomly generated unit vectors known as the
*skewers*. Then, the method computes the PPI count for each data value.
PPI count is the number of times a data value results as an extrema point when projected on to
these skewers. Those data values with more than expected number of PPI count comprise the
endmembers of the hyperspectral data. PPI is a non-iterative method and the steps involved are
summarised as follows:

Compute principal component bands and reduce the dimensionality of the input data by using MNF or PCA. The number of principal component bands to be extracted is set equal to the number of endmembers to be extracted.

Generate

*k*number of skewers of length same as the input data.Let

**r**be the sample vector that denote a pixel spectra. Then, orthogonally project the sample vector onto each skewers and find the extrema.Store the location of each extreme value and count their occurrences. The number of occurrences is known as the PPI count.

Find the PPI count for each pixel spectra in the input data cube.

Arrange the pixel spectra in descending order of their PPI counts and identify the first

*n*number of pixel spectra in the ordered set as endmembers. The number of endmembers to be selected is specified by the input argument`numEndmembers`

.

## References

[1] J.W Boardman, F.A. Kruse and R.O. Green, "Mapping target signatures via partial unmixing of AVIRIS data.", Technical Report, California, USA, 1995.

## Version History

**Introduced in R2020a**