# fippi

Extract endmember signatures using fast iterative pixel purity index

*Since R2020a*

## Syntax

## Description

extracts endmember signatures from hyperspectral data `endmembers`

= fippi(`inputData`

,`numEndmembers`

)`inputData`

by
using the fast iterative pixel purity index (FIPPI) algorithm.
`numEndmembers`

is the number of endmember signatures to be extracted
using the FIPPI algorithm. For more information about the FIPPI method, see Algorithms.

additionally specifies the option for selecting the dimensionality reduction method to be
used before computing the endmembers.`endmembers`

= fippi(`inputData`

,`numEndmembers`

,'ReductionMethod',`method`

)

**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

FIPPI is an iterative approach that iteratively selects the better candidates for endmembers after each iteration. Unlike pixel purity index (PPI) technique, the FIPPI method selects the initial set of skewers by using the automatic target generation process (ATGP) [1]. As a result the algorithm converges faster and generates unique pixel for each endmember. The steps involved in FIPPI approach are summarized as follows:

Compute principal component bands and reduce the spectral 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.

Find the initial set of endmembers by using the ATGP method. The initial set of endmembers form the set of skewers $${\left\{{\text{skewer}}_{j}^{(1)}\right\}}_{j\text{\hspace{0.17em}}=\text{\hspace{0.17em}}1}^{p}$$ onto which you project the input data.

For iteration 1, Let

*r*be a sample vector that denote a pixel spectra. Then, orthogonally project the sample vector onto each skewers and find the extrema._{1}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 and identify the set of sample vectors {

*r*} with maximum PPI count as endmembers._{k}Generate a new set of skewers by combining the set of new endmembers with the initial set of skewers.

$$\left\{{\text{skewer}}_{j}^{(2)}\right\}\text{\hspace{0.17em}}=\text{\hspace{0.17em}}\text{\hspace{0.17em}}\left\{{\text{r}}_{k}^{(1)}\right\}\cup \left\{{\text{skewer}}_{j}^{(1)}\right\}$$

For iteration 2, project all the sample vectors onto the new set of skewers and identify the new set of endmembers. Then, generate the new set of skewers for the next iteration, $$\left\{{\text{skewer}}_{j}^{(3)}\right\}\text{\hspace{0.17em}}$$.

The iteration stops, if the set of skewers generated in two consecutive iterations remain same. This final set of skewers are the endmembers of the input data.

$$\left\{{\text{skewer}}_{j}^{(n+1)}\right\}\text{\hspace{0.17em}}=\text{\hspace{0.17em}}\text{\hspace{0.17em}}\left\{{\text{skewer}}_{j}^{(n)}\right\}\text{\hspace{0.17em}}$$

## References

[1] Chang, C.-I., and A. Plaza. “A
Fast Iterative Algorithm for Implementation of Pixel Purity Index.” *IEEE Geoscience and Remote Sensing Letters* 3, no. 1 (January 2006): 63–67.
https://doi.org/10.1109/LGRS.2005.856701.

## Version History

**Introduced in R2020a**