(1) Randomly initialize the set of endmembers from the dimensionality reduced |

hyperspectral data. , and ; |

(2) **repeat** |

(3) Calculate the volume of the current endmember set |

* *; |

(4) For every pixel spectrum vector (, is the number of pixels) in the |

dimensionality reduced data set, test this pixel in all the endmember positions |

in the set and recalculate the volume ; |

(5) If the new volume is larger than the previous one, then update the set to |

, and , then go to step (3). If the new volume is not larger than the |

previous one, then no replacement is required; |

(6) **until** the endmember set converges and no new replacement takes place. |