RIT Hyperpsectral Target Recognition Contest

RIT is currently hosting a hyperspectral target recognition contest.  They group provides a training set and a test set.  You run your algorithm on the test set and then submit your results via web browser.  The website scores you and determines your rank.

I won’t go into much more detail of the contest.  Go to the website, get an account, and check it out for yourself.  I am interested though in getting a forum or listserv together so folks working on the project can collaborate (there is no prize money involved).  I have solicited RITto see if they are willing to put together such a forum or listserv.  I will keep everyone posted on what I find.  If nothing happens, I’ll start one and host it here.

In the meantime, I’m curious to know who is all competing in this contest.

Popular Hyperspectral Target Detection Kernels

I’ve been implementing several hyperspectral target detection algorithms for the Matlab Hyperspectral Toolbox.  I am going to use this post to summarize my research and implementations.  It will take me a few days to  get all my thoughts together, so this note will be a “living post” over the next week or so.  Please email me if you find any errors or something is not explained clearly.  I can be contacted at first.last-At-gergltd.com.  Thanks, Isaac Gerg


p – Number of bands.  E.g. for AVIRIS p = 224.

N – Number of pixels.

q – Number of materials in the scene.

\mathbf{M} – Matrix of hyperspectral imagery (HSI) data. Size is (p x N).

\mathbf{x} – Observation vector, a pixel.  Size is (p x 1).

\mathbf{\mu} – Data mean.  Size is (p x 1).

\mathbf{t} – Target of interest.  Size is (p x 1).

\mathbf{\Gamma} – Covariance matrix of M.  Size is (p x p).  \mathbf{\Gamma} = \frac{(\mathbf{M}-\mathbf{\mu}\mathbf{1}^T)(\mathbf{M}-\mathbf{\mu}\mathbf{1}^T)^T}{N}

\mathbf{R} – Correlation matrix of M. Size is (p x p). \mathbf{R} = \frac{\mathbf{M}\mathbf{M}^T}{N}

\mathbf{U} – Matrix of background endmembers. Size is (p x q).

\mathbf{P}_{U}^{\perp} – Orthogonal projection of \mathbf{U}.  \mathbf{P}_{U}^{\perp} = \mathbf{I} - \mathbf{U}\mathbf{U}^{\dagger}


Assume the mean has been removed from the data unless otherwise noted. Assume these kernels work on radiance or reflectance data unless otherwise noted.

RX Detector

D_{RX Detector}(\mathbf{x}) = \mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{x}

Matched Filter (MF)

D_{Matched Filter}(\mathbf{x}) = \frac{\mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{t}}{\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{t} }

Adaptive Coherent/Cosine Estimator (ACE)

D_{ACE}(\mathbf{x}) = \frac{(\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{x})^2}{(\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{t})(\mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{x}) }

Constrained Energy Minimization (CEM)

\mathbf{x} and \mathbf{t} are not centered for this algorithm.  I.e. Do not remove the mean of the data when computing this kernel.

D_{CEM}(\mathbf{x}) = \frac{\mathbf{t}^T\mathbf{R}^{-1}\mathbf{x}}{\mathbf{t}^T\mathbf{R}^{-1}\mathbf{t} }

Generalized Likelihood Ratio Test (GLRT)

D_{GLRT}(\mathbf{x}) = \frac{(\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{x})^2}{(\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{t}) (1 + \mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{x})}

Orthogonal Subspace Projection (OSP)

D_{OSP}(\mathbf{x}) =  \mathbf{t}^T \mathbf{P}_{U}^{\perp} \mathbf{x}

Adaptive Matched Subspace Detector (AMDS)

B is a matrix of background signatures.  Size is (p x q).  Z is a matrix of background and target signatures.  Size is (p x (q + # targets)).

D_{AMDS}(\mathbf{x})=\frac{\mathbf{x}^{T}(\mathbf{P}_{B}^{\perp} - \mathbf{P}_{Z}^{\perp})\mathbf{x}}{\mathbf{x}^{T}\mathbf{P}_{Z}^{\perp}\mathbf{x}}

More to come…..

Matlab Hyperspectral Toolbox Released!

I just released my Matlab Hyperspectral Toolbox.  Its available for download at:


There are separate downloads for the code and the sample data files.  Im still getting the hang of how to handle sourceforge.net, but will have a webpage (wiki) up soon.

The current release features a function called hyperDemo which demonstrates two fully unsupervised exploitation chains, one utilizing ATGP and one utilizing ICA.

I am hoping in the next week to publish methods for doing ACE  as well as a few others.


PS:  Project website now working and is located at: http://matlabhyperspec.sourceforge.net/

Matlab Hyperspectral Toolbox

I developed a Matlab hyperspectral toolbox as part of my Master’s thesis during 2006-2008.  I am currently in the midst of updating the documentation and cleaning the code.  I will release this code shortly on sourceforge and begin continued work on the toolbox.  Currently, the toolbox will have algorithms to estimate the number of materials in an HSI scene, compute endmembers, and compute material abundance maps (MAMs) using different constrained least square techniques.  I will be providing a demo with the toolbox which demonstrates usage of the functions to help everyone understand how to use the toolbox.

I plan on adding several HSI algorithms as well including:

  • ACE
  • GLRT
  • OSP
  • Sof the algorithms Josh Broadwater of JPL has come up with that are based on constrained least squares methods.
  • RX detector
  • New super-resolution methods based on material abundance map information
  • MNF
  • Destreaking algorithm (for processing Hyperion data)

If you are interested in getting involved with the project, please email me at first.last -At- gergltd.com.  If you are a current Penn State Schreyer Honors College student looking for a thesis topic, I have lots of possible projects for you to work on and money to fund you through Penn State.