**4. LCMV-BSS Algorithms**

Now, if we replace the full band set **Ω** in **R**−<sup>1</sup> of (5) with a selected band subset **Ω**BS, then (5)

$$\mathbf{M}\mathbf{V}(\boldsymbol{\Omega}\_{\mathrm{BS}}) = \mathbf{c}^{T} \left(\mathbf{D}\_{\boldsymbol{\Omega}\_{\mathrm{BS}}}^{T} \mathbf{R}\_{\boldsymbol{\Omega}\_{\mathrm{BS}}}^{-1} \mathbf{D}\_{\boldsymbol{\Omega}\_{\mathrm{BS}}}\right)^{-1} \mathbf{c} \tag{7}$$

which is the minimum variance weighted by R−<sup>1</sup> **Ω**BS resulting from the LCMV filter using a partial band subset specified by **Ω**BS. There is another interpretation of (7) which can be also considered as the least R−<sup>1</sup> **Ω**BS -weighted square error. It should be noted that the constraint vector **c** is specifically designed to take care of *M* class signatures, **d**1, **d**2, ··· , **d***M*, not bands. Accordingly, **c** has nothing to do with the selected band subset **Ω**BS and, thus, it remains a constant in (7) for any selected band subset **Ω**BS.

Using the MV(**Ω**BS) in (7), a criterion can be designed to find an optimal band subset **<sup>Ω</sup>**<sup>∗</sup>BS which solves

$$
\Omega\_{\rm BS}^{\*} = \arg \left\{ \min\_{\Omega \& \subseteq \rm O} \mathcal{M}V(\Omega\_{\rm BS}) \right\}.\tag{8}
$$

By virtue of (8), two types of algorithms from SQ N-FINDR and SC N-FINDR, called the sequential LCMV-BSS (SQ LCMV-BSS) algorithm and the successive LCMV-BSS (SC LCMV-BSS) algorithm, can be further developed as follows.

## *4.1. SQ LCMV-BSS*

The idea of SQ LCMV-BSS is to use two loops to iterate band subsets **Ω**BS in an outer loop and compute MV(**Ω**BS) in (7) in an inner loop. Depending upon how MV(**Ω**BS) is computed in the inner loop, two versions can be developed. The first one is called SQ LCMV-BSS-1, and finds the minimum variance MV(**Ω**(*j*) BS ) currently being iterated for 1 ≤ *j* ≤ *n*BS in the inner loop compared to the minimum variance MV(**Ω**(*l*) BS ) obtained at the *l*th iteration in the outer loop. A detailed step-by-step implementation is described below.

#### **Algorithm 1** SQ LCMV-BSS-1

Step 1: Initial conditions

(i) *n*BS = *p*, which is the number of selected multiple bands determined by VD. 

(ii) Let **Ω**(0) *p* = ,**B**(0) 1 , **B**(0) 2 , ··· , **B**(0) *p* with **B**(0) 1 = **B**1, **B**(0) 2 = **B**2, ··· , **B**(0) *p* = **B***p* uniformly selected from the band set **Ω**.

(iii) Calculate

$$\mathbf{MV}(\boldsymbol{\Omega}\_p^{(0)}) = \mathbf{c}^T \left( \mathbf{D}\_{\boldsymbol{\Omega}\_p^{(0)}}^T \mathbf{R}\_{\boldsymbol{\Omega}\_p^{(0)}}^{-1} \mathbf{D}\_{\boldsymbol{\Omega}\_p^{(0)}} \right)^{-1} \mathbf{c}.$$

Step 2: Outer loop For *l* = 1, ··· , *L* do Step 3: Inner loop Compute MV(**Ω**(*l*) *p*

> For *j* = 1, ··· , *p* do

Find an index *j*\* by

)

$$j^\* = \arg\left\{ \left( \min\_{1 \le j \le p} \mathsf{MV}(\boldsymbol{\Omega}\_p^{(j)}) \right) < \mathsf{MV}(\boldsymbol{\Omega}\_p^{(l)}) \right\}$$

with

$$\mathbf{MV}(\boldsymbol{\Omega}\_{\boldsymbol{\theta}}^{(j)}) = \mathbf{c}^{T} \left( \mathbf{D}\_{\boldsymbol{\Omega}\_{\boldsymbol{\theta}}^{(j)}}^{T} \mathbf{R}\_{\boldsymbol{\Omega}\_{\boldsymbol{\theta}}^{(j)}}^{-1} \mathbf{D}\_{\boldsymbol{\Omega}\_{\boldsymbol{\theta}}^{(j)}} \right)^{-1} \mathbf{c}$$

which specifies the band to be replaced by the *l*th band **B***l*. Such a band is now denoted by **B**(*l*+<sup>1</sup>) *j* . A new set of bands is then produced by letting **B**(*l*+<sup>1</sup>) *j*∗ = **B***l* and **B**(*l*+<sup>1</sup>) *j* = **B**(*l*) *j* for *j* = *j*∗

A second version of SQ LCMV-BSS, referred to as SQ LCMV-BSS-2, always finds the minimum variance MV(**Ω**(*j*) BS ) currently being iterated for 1 ≤ *j* ≤ *n*BS at each iteration in the inner loop; its detailed step-by-step implementation is summarized as follows.

**Algorithm 2** SQ LCMV-BSS-2

Step 1: Initial conditions (i) *n*BS = *p*, which is the number of selected multiple bands determined by VD. (ii) Let **Ω**(0) *p* = ,**B**(0) 1 , **B**(0) 2 , ··· , **B**(0) *p* - with **B**(0) 1 = **B**1, **B**(0) 2 = **B**2, ··· , **B**(0) *p* = **B***p* uniformly selected from the band set **Ω**. (iii) Calculate MV(**Ω**(0) *p* ) = **<sup>c</sup>***<sup>T</sup>***D***T***Ω**(0) *p* **R**−<sup>1</sup> **Ω**(0) *p* **<sup>D</sup>Ω**(0) *p* −1**c**. Step 2: Outer loop For *l* = 1, ··· , *L* do Step 3: Inner loop For *j* = 1, ··· , *p* do Find an index *j*\* by *j*∗ = arg,min1≤*j*≤*p*MV(**Ω**(*j*) *p* )- with MV(**Ω**(*j*) *p* ) = **<sup>c</sup>***<sup>T</sup>***D***T***Ω**(*j*) *p* **R**−<sup>1</sup> **Ω**(*j*) *p* **<sup>D</sup>Ω**(*j*) *p* −1**c** which specifies the band to be replaced by the *l*th band **B***l*. Such a band is now denoted by **B**(*l*+<sup>1</sup>) *j* . A new set of bands is then produced by letting **B**(*l*+<sup>1</sup>) *j*∗ = **B***l* and **B**(*l*+<sup>1</sup>) *j* = **B**(*l*) *j* for *j* = *j*∗

## *4.2. SC LCMV-BSS*

A second type of LCMV-BSS algorithm is SC LCMV-BSS, which reverses the two loops implemented in SQ LCMV-BSS by iterating the computation of MV(**Ω**BS) in (7) in an outer loop, while iterating band subsets *n*BS in an inner loop. Its detailed step-step implementation is provided in the following.

#### **Algorithm 3** SC LCMV-BSS

Step 1: Initial conditions (i) *n*BS = *p*, which is the number of selected multiple bands determined by VD. (ii) Let **Ω**(0) *p* = ,**B**(0) 1 , **B**(0) 2 , ··· , **B**(0) *p* - with **B**(0) 1 = **B**1, **B**(0) 2 = **B**2, ··· , **B**(0) *p* = **B***p* uniformly selected from the band set **Ω**. (iii) Calculate MV(**Ω**(0) *p* ) = **<sup>c</sup>***<sup>T</sup>***D***T***Ω**(0) *p* **R**−<sup>1</sup> **Ω**(0) *p* **<sup>D</sup>Ω**(0) *p* −1**c** Step 2: Outer loop For *j* = 1, ··· , *p* do Step 3: Inner loop For *l* = 1, ··· , *L* do Find **B**(∗) *j* = arg,min**B***l*∈**Ω**¯ MV(**Ω** *lp*)- where **Ω** ¯ = **Ω** − ,**B**(∗) 1 , ··· ,**B**(∗) *<sup>j</sup>*−1,**B**(*p*) *j*+1, ··· ,**B**(*p*) *p* -, **Ω** *lp* = ,**B**(∗) 1 , ··· ,**B**(∗) *<sup>j</sup>*−1,**B***l*,**B**(*p*) *j*+1, ··· ,**B**(*p*) *p* -. Step 4: Output the final band subset, ,**B**(∗) 1 , **B**(∗) 2 , ··· ,**B**(∗) *p* -.

#### **5. Real Image Experiments**

Three popular real hyperspectral images, Purdue University's Indiana Indian Pines, Salinas, and University of Pavia, available at http://www.ehu.eus/ccwintco/index.php?title=Hyperspectral\_ Remote\_Sensing\_Scenes, were used in experiments. The detailed data descriptions and matlab data files can be also found on this website.

#### *5.1. Purdue Indiana Indian Pines Scene*

The first image scene used for experiments is an airborne visible/infrared imaging spectrometer (AVIRIS) hyperspectral data set from the Purdue Indiana Indian Pines test site shown in Figure 1a, with its ground truth of 17 class maps in Figure 1b. It has a size of 145 × 145 pixel vectors, taken from an area of mixed agriculture and forestry in Northwestern Indiana, USA with details of band and wavelength given in the caption. The data set is available at website https://purr.purdue.edu/ publications/1947/serve/1?el=1. It was recorded in June 1992 with 220 bands which include water absorption bands (bands 104–108 and 150–163, 220).

**Figure 1.** Purdue's Indiana Indian Pines scene with 16 classes. (**a**) Band 186, (**b**) ground truth map, (**c**) ground truth class labels.
