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…..