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
Notation
[latex]p[/latex] – Number of bands. E.g. for AVIRIS p = 224.
[latex]N[/latex] – Number of pixels.
[latex]q[/latex] – Number of materials in the scene.
[latex]\mathbf{M}[/latex] – Matrix of hyperspectral imagery (HSI) data. Size is (p x N).
[latex]\mathbf{x}[/latex] – Observation vector, a pixel. Size is (p x 1).
[latex]\mathbf{\mu}[/latex] – Data mean. Size is (p x 1).
[latex]\mathbf{t}[/latex] – Target of interest. Size is (p x 1).
[latex]\mathbf{\Gamma}[/latex] – Covariance matrix of M. Size is (p x p). [latex]\mathbf{\Gamma} = \frac{(\mathbf{M}-\mathbf{\mu}\mathbf{1}^T)(\mathbf{M}-\mathbf{\mu}\mathbf{1}^T)^T}{N}[/latex]
[latex]\mathbf{R}[/latex] – Correlation matrix of M. Size is (p x p). [latex]\mathbf{R} = \frac{\mathbf{M}\mathbf{M}^T}{N}[/latex]
[latex]\mathbf{U}[/latex] – Matrix of background endmembers. Size is (p x q).
[latex]\mathbf{P}_{U}^{\perp}[/latex] – Orthogonal projection of [latex]\mathbf{U}[/latex]. [latex]\mathbf{P}_{U}^{\perp} = \mathbf{I} – \mathbf{U}\mathbf{U}^{\dagger}[/latex]
Kernels
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
[latex]D_{RX Detector}(\mathbf{x}) = \mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{x}[/latex]
Matched Filter (MF)
[latex]D_{Matched Filter}(\mathbf{x}) = \frac{\mathbf{x}^T\mathbf{\Gamma}^{-1}\mathbf{t}}{\mathbf{t}^T\mathbf{\Gamma}^{-1}\mathbf{t} }[/latex]
Adaptive Coherent/Cosine Estimator (ACE)
[latex]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}) }[/latex]
Constrained Energy Minimization (CEM)
[latex]\mathbf{x}[/latex] and [latex]\mathbf{t}[/latex] are not centered for this algorithm. I.e. Do not remove the mean of the data when computing this kernel.
[latex]D_{CEM}(\mathbf{x}) = \frac{\mathbf{t}^T\mathbf{R}^{-1}\mathbf{x}}{\mathbf{t}^T\mathbf{R}^{-1}\mathbf{t} }[/latex]
Generalized Likelihood Ratio Test (GLRT)
[latex]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})}[/latex]
Orthogonal Subspace Projection (OSP)
[latex]D_{OSP}(\mathbf{x}) = \mathbf{t}^T \mathbf{P}_{U}^{\perp} \mathbf{x} [/latex]
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)).
[latex]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}}[/latex]
More to come…..