Multi-dimensional pixel purity index for convex hull

0 downloads 0 Views 2MB Size Report
endmember detection [11], [12], and endmember bundles [13], the PPI algorithm is ... image processing. The original PPI algorithm [3] is based on the convex ... non-zero abundances for all endmembers lie in the interior of the convex hull of ...... below one second for processing real data sets on commodity hardware, and ...
1

Multi-dimensional pixel purity index for convex hull estimation and endmember extraction



Rob Heylen∗ , Paul Scheunders† IBBT-Visielab, University of Antwerp Universiteitsplein 1 2610 Wilrijk, Belgium ∗ Email: [email protected]. Tel: +32(0)3 265 2478. Fax: +32(0)3 265 2245 Email: [email protected]. Tel: +32(0)3 265 2473. Fax: +32(0)3 265 2245

Abstract—One of the earliest endmember extraction algorithms employed in hyperspectral image processing is the pixel purity index (PPI) algorithm. This algorithm is still popular today, but suffers from several drawbacks, such as a large computational cost. Many recent papers focus on improving the speed of the PPI algorithm with high-performance computing or combinatorial methods. In this work, we present a computationally efficient way of calculating the PPI scores, based on the geometrical interpretation of the PPI sampling process. We first demonstrate the equivalence with Monte-Carlo sampling of the polar cones of the convex hull of the data set. Next, we introduce a more efficient sampling method, where we use higher dimensional subspaces to sample these polar cones instead of one-dimensional skewers. The resulting algorithm can be used to quickly estimate the most important convex hull vertices of the data set, determine the corresponding PPI scores, and produce a list of endmember candidates. An unweighted version of this algorithm is introduced as well, which is simpler to implement, has a higher computational performance, and yields similar endmembers. If the subspace dimension is chosen one, both algorithms reduce to the PPI algorithm. We demonstrate the properties of these algorithms, such as convergence speed and accuracy, on artificial and real hyperspectral data, and show that the results correspond to those obtained with PPI. The proposed algorithms however are up to three orders of magnitude faster, and can generate representative PPI scores in less than a second on real hyperspectral data sets.

I. I NTRODUCTION A well-known problem in hyperspectral images is the tradeoff between spectral and spatial resolution. While sensors exist that can generate images with thousands of spectral bands, the spatial resolution is usually several or dozens of meters squared per pixel. This low spatial resolution can cause spectral mixing of the different components present in the field of view of any given pixel. With spectral unmixing techniques [1], one aims to model these spectral mixing interactions, and tries to unravel the different contributions, leading to powerful methods for obtaining sub-pixel resolution, or perpixel estimates of the pure components. Spectral unmixing is usually presented as a two-step process. The first step typically consists of an endmember estimation algorithm (EEA), used for estimating the spectra of the endmembers, or the pure components present in the image scene. The second step is the actual unmixing phase, where the abundances of each endmember in each pixel are estimated.

Most unmixing algorithms require several additional steps, such as denoising of the data, dimensionality reduction, or estimation of the number of endmembers, and some algorithms exist that do the unmixing and endmember estimation at the same time. There exists a myriad of techniques and methods, with a wide variety of approached and assumptions, and we refer to the excellent overview paper [2], where a very recent and complete overview of the hyperspectral unmixing literature is provided. In this paper, we focus on the endmember extraction phase of the hyperspectral unmixing process. One of the first algorithms used for endmember extraction is the pixel purity index (PPI) algorithm [3]. While many other EEA algorithms have been developed after PPI, such as orthogonal subspace projection [4], N-FindR [5], convex cone analysis, [6], vertex component analysis [7], simplex growing algorithm [8], joint Bayesian endmember extraction [9], and more recently, unmixing with spatial-spectral preprocessing [10], piecewise convex endmember detection [11], [12], and endmember bundles [13], the PPI algorithm is still very popular up until today. One of the major reasons is that the PPI algorithm is present in the ENvironment for Visualizing Images (ENVI) software, a popular tool for hyperspectral image processing. The original PPI algorithm [3] is based on the convex geometry arguments presented in [14] and [15]. In [14], one presents the relation between the linear mixing model (LMM), where each spectral mixture is considered a convex linear combination of a small number of endmember spectra, and the geometrical concept of a simplex in a high-dimensional spectral space. It is stated that endmember extraction can be considered as locating the vertices that span the simplex surrounding the data in spectral space, and that unmixing a pixel with respect to these endmembers to find their abundances is nothing more than determining its barycentric coordinates. In [15], the relation between the endmember simplex and the convex hull of the data set is presented. Pixels which have non-zero abundances for all endmembers lie in the interior of the convex hull of the data set, and only data points on this convex hull need to be considered when looking for the endmembers. Only pixels with at least one abundance equal to zero can lie on the convex hull, and the more abundances are zero (the more “pure” the pixel is), the more explicit this pixel will be present on the convex hull.

2

These observations lead to the PPI algorithm presented in [3], where one estimates a purity index, or score, for each pixel in the data set by estimating the convex hull of the data set via an iterative method. At each iteration, the entire highdimensional data set is projected onto a random vector, called a skewer, and the pixels corresponding to the maximum and minimum of this projection are identified as belonging to the convex hull. A count is kept for each pixel, and those that are found more often will have a higher score, and subsequently a higher probability of being an actual endmember. After many random projections, the pixels with the highest purity indices are selected as endmember candidates, and used in subsequent processing depending on the application. While the PPI algorithm is simple to implement, its computational requirements are large. Since the data set is very high dimensional, a large number of random projections is required to find representative PPI scores. Furthermore, the endmember candidates returned by the PPI algorithm can differ between runs due to the random nature of the projections, and often show large correlations. Several papers try to resolve these problems. For instance, in [16], [17], one introduces a block of skewers method to deal with the computational complexity. One shows that due to the linear nature of the vector dot product, calculation of several skewer projections allows for the calculation of linear combinations of these skewers as well, with minimal computational overhead. An extension of this method is the pyramid-based block of skewers method [18], where one shows that an intelligent selection of the linear combinations can further reduce the computational requirements, while yielding similar results. Other papers focus on high-performance computing [19] to speed up the PPI algorithm, and use parallel or hardware implementations, such as graphical processing units (GPU) [20], field-programmable gate arrays (FPGA) [21], [22], [23], [24], [25], [26], [27], systolic arrays [28] or cluster implementations [29]. Other techniques focus on improving the speed of the PPI algorithm by including an initialization algorithm for determining the skewers, resulting in the fast iterative PPI (FIPPI) algorithm [30], [31]. Several other techniques concerning PPI are described in the overview paper [32]. The recently developed random PPI [33] algorithm resolves many of the problems concerning estimation of the parameters of the algorithm, and inconsistent results between runs, from a signal processing point of view. Even more recently, iterative PPI [34] reformulates the PPI algorithm in such a way that it can be used as a real-time algorithm. In this paper, we present a multi-dimensional extension of the PPI algorithm, capable of generating similar purity scores as the PPI algorithm, but orders of magnitude faster. The algorithm is based on the observation that the PPI algorithm can be interpreted as a Monte-Carlo integration of the highdimensional solid angles of the polar cones of the convex hull vertices. The multi-dimensional extension consists of sampling these solid angles with higher-dimensional cuts, such as planes and hyperplanes, which causes the scores to converge much faster than when sampled with one-dimensional lines such as in the PPI algorithm. Furthermore, while the algorithm is computationally more involved than the PPI algorithm, it is

capable of identifying an unlimited number of convex hull vertices at each iteration, while the PPI algorithm is restricted to a maximum of two. Because of this, the number of iterations required is drastically lower than with the PPI algorithm, leading to severely reduced computational runtimes. The outline of this paper is as follows: In section II we present the PPI algorithm, and discuss some of its properties and shortcomings. In section III we introduce convex hulls and their polar cones, and demonstrate the relation between the solid angles of these polar cones, and the PPI algorithm. We derive an analytical relation between these solid angles, and the PPI scores in the limit of infinitely many skewers. In section IV we use these properties to derive the multi-dimensional PPI (MDPPI) algorithm, which uses higher-dimensional subspaces instead of skewers to calculate the PPI scores. An unweighted version is provided as well, which can be used to quickly estimate the convex hull of a hyperspectral data set, and yields similar endmembers. Furthermore, we show that the PPI algorithm is a natural one-dimensional extension of the MDPPI algorithm. In section V, several experiments are performed on real data sets, which demonstrate that the MDPPI algorithm returns similar scores and endmembers as the PPI algorithm, but with runtimes that are up to three orders of magnitude faster. Section VI contains the conclusions and future work. II. T HE PIXEL PURITY INDEX ALGORITHM The PPI algorithm has been described numerous times in the literature (see any paper on the PPI method mentioned in the introduction), and for completeness and fixing the notation, we present the PPI algorithm, and some of its drawbacks, here as well. The main idea behind the PPI algorithm is that endmembers should be located at the spatial extremes of the data cloud in spectral space. By projecting the data onto random vectors, these extreme pixels will have a higher probability of appearing as extremes in these projections as well. The PPI algorithm counts how many times a pixel has been identified as an extreme, and hence associates a score with each pixel. The pixels with the highest PPI scores are designated as endmembers. More formally, suppose one has a data set of N points in a d-dimensional spectral space Rd , forming a data cube X = (x1 , . . . , xN ) of size (d, N ). We suppose that the endmembers are present in the data set, and we do not consider possible pre-processing steps such as dimensionality reduction or noise removal. The PPI algorithm then works in several steps: 1) Initialization: Select a large number K and a threshold T . Generate a set of K random vectors {si }K i=1 , called skewers. Initialize a vector n of length N that will contain the PPI scores, which count how many times a pixel is found as an extremum: ∀i ∈ 1, . . . , N : ni = 0. 2) Iteration: Loop over the K skewers si : a) Project the data orthogonally onto this skewer: y = X T si . b) Find the indices of the maximum and the minimum of these projections: I− = argmini {yi }N i=1 and I+ = argmaxi {yi }N . i=1

3

c) Increase the corresponding PPI scores by one: nI− → nI− + 1 and nI+ → nI+ + 1. 1

3) Thresholding: The endmember candidates are those points with PPI score larger than T . 4) Optional post-processing, e.g. clustering of endmembers, or removal of redundant endmembers. We will not consider this step in this work. The PPI algorithm contains two parameters: The number of skewers K, and the threshold T . Usually, the larger the number of skewers K, the better the obtained results become, since we have generated more samples. It is however hard to know beforehand what a realistic value of K should be. Typically, K is chosen in the order O(104 ) [32], [20]. The selection of the threshold T poses another problem, since it is hard to fix T beforehand, and it can have a large effect on the number of endmembers returned by the algorithm. Several approaches fix T in a manual fashion after the extrema counts have been calculated, since usually there is a relatively small group of pixels with very high counts, and the threshold can be adapted manually to select only this group. Another approach selects only a predefined number of pixels, those with the highest scores. Because the selected endmember candidates can show a high degree of correlation, one can easily miss actual endmembers with this method. Therefore, most techniques will rather select too many endmember candidates, and perform post-processing steps to prune these candidates. Due to the random generation of the skewers, two runs of the PPI algorithm with identical K and T parameters will seldom produce the same set of endmember candidates. While some techniques are developed to alleviate this problem, such as Fast Iterative PPI (FIPPI) [31], this remains one of the major drawbacks of the PPI algorithm. One final remark concerns the generation of the random skewers. Each skewer has d components, and it is important to specify how these skewer components are generated randomly. If one selects each skewer component uniformly from a given interval, such as [−1, 1], the skewer will be a point randomly and uniformly drawn from a hypercube. Since only the direction of the skewer matters, one usually normalizes these skewers to unit length, so that they lie on the unit sphere. However, points uniformly drawn from a hypercube will not give a uniform distribution over the unit sphere after normalization, and the deviation from a uniform distribution increases with the dimensionality. In d dimensions, the local point density ρ(n) on the unit sphere after normalization of a uniform hypercube distribution differs strongly with the direction: e.g. ρ([1, 0, . . . , 0]) ∼ 1 and ρ(d−1/2 [1, 1, . . . , 1]) ∼ d1/2 . Since the main idea behind the PPI algorithm is based on projections onto vectors with random directions, it is important not to strongly favor any given direction over others, since then it becomes easy to miss valid extrema in the less densely sampled directions. Luckily, generating vectors with uniformly distributed directions can be done easily by drawing each vector component from a standard normal distribution. If one normalized the resulting distribution, one obtains a uniform distribution on the unit sphere [35]. In the remainder of this work, we consider the skewers to have random and uniformly

6

2

3 5

4

Fig. 1: A data set in two dimensions (points), the border of its convex hull (solid lines), and the polar cones at each convex hull vertex (dashed lines). These cones are uniquely determined by the vectors orthogonal to the associated convex hull faces.

distributed directions, unless explicitly stated otherwise. III. R ELATION WITH POLAR CONES OF THE CONVEX HULL To introduce a geometrical interpretation of the PPI algorithm, we first introduce the concepts of polar cones and convex hulls. The convex hull C(X) of the data set X = {xi }N i=1 consists of all points that can be written as a convex combination of points in X: ( PN ai xi y= N (1) y ∈ C(X) ⇐⇒ ∃{ai ≥ 0}i=1 : PN i=1 i=1 ai = 1 For a finite data set consisting of high-dimensional points, such as the hyperspectral data set X, the convex hull will be a convex polytope, spanned by a subset of points from X. One can hence find an index set Ic (X) that contains the indices of the points in X that span the convex hull, and the corresponding set of convex hull vertices Y = {xi }i∈Ic (X ) . Next, we can define the polar cone Z(xi ) at xi as z ∈ Z(xi ) ⇐⇒ ∀q ∈ C(X) : (z − xi ) · (q − xi ) ≤ 0 (2) It is worth noting that the polar cone of any point on the interior of the convex hull contains only that point itself, and in the case of a hyperspectral data set, only the polar cones of the convex hull vertices will have a non-zero volume. Constructing these polar cones can be done as following: In each convex hull vertex y i , several faces of the convex hull come together. The orthogonal vectors to these faces, pointing outwards with respect to the convex hull, span the polar cone at y i . See Fig. 1 for an example of a data set in 2 dimensions, its convex hull, and the polar cones associated with each convex hull vertex. To find the relation of the PPI algorithm with these concepts, we require three observations: 1) The length of the skewers in the PPI algorithm is irrelevant, since rescaling a skewer will not affect which data

4

1

2

6 3 5 4 Fig. 2: The partitioning of the unit sphere (a circle in 2 dimensions) associated with the polar cones from Fig. 1. Determining the PPI score is equivalent to estimating the solid angle sizes of these polar cones by Monte Carlo sampling.

points are the minimum or maximum after projection. We can consider all skewers to lie on the unit sphere, and hence have unity length, without affecting the PPI results. 2) Translation of the entire data set will not affect the outcome of the PPI algorithm, since a translation does not affect which data points are the minimum or maximum after projection either. 3) The solid angles associated with the polar cones form a partitioning of the unit sphere. See Fig. 2 for an example. This leads us to the following reasoning: A skewer si on the unit sphere will lie in the partition of a given polar cone, associated with convex hull vertex y j . Since translation of all data points over −y j will not affect the outcome of the algorithm, we can consider y j to lie in the origin, and with (2) we know that all other x in the data set will have a smaller than zero dot product with the skewer si . Hence y j is the maximum identified by the PPI algorithm for skewer si , and the PPI score of this pixel will be increased by one. The probability that a randomly drawn skewer will lie in any given polar cone partition is proportional to the solid angle of this polar cone, since we consider the skewers to be uniformly distributed on the unit sphere (after optional normalization). Hence calculating the PPI scores of a data set corresponds to estimating the sizes of the polar cone solid angles by random sampling, or Monte Carlo integration. The limit for an infinite number of samples is hence known. With the correct normalization factors, this becomes lim

K→∞

1 ni 2K

=

Ω(xi ) Sd

(3)

where Sd is the surface area of a d-dimensional unit sphere Sd

=

2π d/2  Γ d2

(4)

and Ω(x) is the solid angle of the polar cone located at x. The normalization factor 2K in the left-hand side equation equals the total number of extreme points found, since at each of the K iterations of the PPI algorithm, two counts are increased by one, corresponding to the minimum and the maximum of the projections. This equation allows us, at least in theory, to calculate the relative PPI scores for an infinite number of

skewers. Unfortunately, explicit calculation of the solid angles Ω(x) proves to be very difficult for two technical reasons. First of all, calculating the convex hull in a low dimensional space is computationally easy, but this becomes very demanding in high dimensional spaces. Most convex hull algorithms show an exponential runtime dependence on the dimensionality of the input space. E.g. the gift wrapping (also called Jarvis march) [36] algorithm has a O(N h) time complexity in 2 and 3 dimensions, with N the number of points in the data set, and h the number of vertices spanning the convex hull. It can be easily extended to higher dimensions, but its computational complexity rises to O(N [d/2]+1 ), with [.] the floor function [37]. Faster algorithms, such as Qhull [38] and Chan’s algorithm [39], can determine the convex hull in O(N log(h)) time, in both 2 and 3 dimensions. Their time complexity in higher dimensions however also increases rapidly. Furthermore, the memory requirements to store the convex hull structure also increases rapidly with the dimensionality. Therefore, the calculation of the exact convex hull in large data sets of very high dimension, such as hyperspectral data sets, is practically impossible. The second reason is the need to calculate the solid angles of high-dimensional polyhedral cones. While this is simple in 2 dimensions, and a computationally efficient closed-form equation exists for 3 dimensions [40], there is no closed-form equation known for solid angles in higher dimensions. In [41], a rather involved series expansion is provided that converges towards the correct solution in any number of dimensions, but as the authors state, this expansion is computationally untractable for very high dimensions. However, while we cannot use (3) explicitly to calculate the limiting PPI scores, it does show that any algorithm that can estimate the solid angles {Ω(xi )}i will yield similar results as the PPI algorithm. The multi-dimensional PPI algorithm, presented in the next section, is a multi-dimensional extension of the Monte-Carlo random sampling process, and the solid angle estimates obtained with it will converge much faster to the limiting solution, yielding a much faster algorithm. IV. M ULTI - DIMENSIONAL PPI A. The algorithm We want to estimate the high-dimensional solid angles of the polar cones as efficiently as possible, since these estimates will converge to the same limit as the PPI algorithm. Although we cannot calculate high-dimensional solid angles and convex hulls, we can efficiently calculate these quantities in low dimensions, and this forms the crux of the algorithm: we construct many random D-dimensional subspaces, with D relatively low, and perform a Monte-Carlo integration by first projecting the data onto each subspace, and then analytically calculating the contributions to the respective solid angles for this sample. This is equivalent to sampling the polar cone partitioning of the unit sphere with higher-dimensional samples instead of one-dimensional skewers. Since the sampling still happens randomly and uniformly, and we can compute the contributions of each sampling to the solid angles analytically, the resulting relative scores converge towards the same limit

5

Fig. 3: Spherically projected schematic representation of the Monte-Carlo sampling process of the solid angles of a partitioning of the unit sphere (black triangulation). Left: sampling with random skewers, which results in random points on the unit sphere. The solid angles are estimated as the relative number of points inside each triangle (colored dots). Right: sampling with two-dimensional planes, uniformly distributed on the unit sphere. The solid angle estimates correspond to the normalized sum of the angles associated with the pieces of the line inside each triangle (colored lines).

as (3). A schematic representation of Monte-Carlo integration of the solid angles associated with a partitioning of the three-dimensional unit sphere with one and two-dimensional skewers is provided in Fig. 3. Another interpretation of this algorithm is the following: At each iteration, we generate D orthonormal skewers randomly, which span the subspace onto which we project. Suppose we generate a new skewer as a linear combination of the D skewers spanning the subspace. Then this skewer will also lie in the same subspace, and the corresponding maximum that would be identified by the PPI algorithm after projection onto this skewer is determined by the corresponding polar cone in this subspace. Hence calculating the solid angles in this Ddimensional space after projection corresponds to calculating the limit for infinitely many random linear combinations of the D skewers that span the subspace. This is a much more powerful result than e.g. the blocks of skewers [16] or the pyramid-based block of skewers [18] methods, where only a limited number of linear combinations of skewers are taken each iteration. The multi-dimensional PPI (MDPPI) algorithm consists of the following steps: 1) Initialization: Determine the dimensionality D of the projections, the number of projections K, and a thresh~ old T . Initialize the score vector n = {ni }N i=1 = 0 2) Iteration: Loop K times a) Generate a random D-dimensional subspace basis by generating D vectors {ui }D i=1 with uniformly distributed directions, and orthonormalizing this  D set: V = {v i }D = orth {u } . i i=1 i=1 b) Project the data set X orthogonally onto this subspace: Y = V T X. The projection Y is a D × N matrix, containing N points in D-dimensional space. c) Determine which vertices in Y span the convex hull, resulting in the index set Ic (Y ). d) Determine the weights (solid angle contributions)

associated with each vertex in the convex hull: ∀i ∈ Ic (Y ) : σi = Ω(xi ). e) Increase the score for each vertex in Ic (Y ) with their weights: ∀i ∈ Ic (Y ) : ni → ni + σi 3) Normalization: Normalize the score vector with KSD , with SD given by (4). 4) Thresholding: The endmember candidates are those points with PPI score larger than T . If we define the convex hull of a one-dimensional data set as the set containing the maximum and minimum, with unity weights, the MDPPI algorithm reduces to the PPI algorithm for D = 1. The scores obtained by the MDPPI algorithm will converge towards the true full-dimensional polar cone solid angles, normalized by the surface area of the d-ball. Since the MDPPI algorithm does not sample the polar cones with onedimensional skewers as in the PPI algorithm, but with higherdimensional cuts, such as planes or volumes, the scores will converge much faster to the exact solutions. While the convex hull can be easily determined by e.g. the Qhull algorithm [38] for D not too large, the weighting requires the explicit construction of the polar cones, which involves determining the normal vectors to the convex hull faces, and some careful index manipulations so that the spanning vectors of each polar cone keep the correct order. Furthermore, we are required to calculate the solid angles of these polar cones, which imposes a restriction on the possible values of D. Since we are unaware of analytical techniques that allow the calculation of solid angles in more than three dimensions, we are restricted to the values D ∈ {1, 2, 3}. For D = 1, we obtain the PPI algorithm if we use the correct convex hull and weighting conventions. For D = 2, the solid angles of the polar cones are regular angles in a 2-dimensional plane, and are simple to determine. For D = 3 however we have to calculate the solid angles of cones that are determined by 3 or more vectors in R3 . In our implementation, we have employed the algorithm given in [40]: Let n1 , . . . , nq ∈ R3 be the vectors determining the polar cone. Let i be a circular index in {1, . . . , q}, and define ai

= ni−1 · ni+1

(5)

bi ci di

= ni−1 · ni = ni · ni+1 = bi−1 = ni−1 · (ni × ni+1 )

(6) (7) (8)

Then the solid angle Ω(n1 , . . . , nq ) is given by Ω(n1 , . . . , nq ) = 2π −

q X

atan2(di , bi ci − ai )

(9)

i=1

where we have used the two-argument atan2 function instead of the normal arctangent function. Remark that this solid angle depends on the orientation by which the cone vectors are traversed. Reversing this order will result in 4π − Ω. But since we know that in three dimensions the solid angle of a polar cone should be smaller than 2π, this problem is easily resolved. The major advantage of the MDPPI algorithm over the original PPI algorithm is that, although a single iteration is

6

computationally much more intensive than an iteration of the PPI algorithm, the MDPPI algorithm is capable of identifying an unlimited number of convex hull points in each iteration, while the PPI algorithm can add at most 2 convex hull points at each iteration. Furthermore, points with small polar cones will have a much higher probability of being sampled for higher values of D, since the randomly generated subspace only needs to intersect with the cone to identify such a point, instead of requiring a skewer that lies exactly in this cone, as the PPI algorithm. B. Unweighted MDPPI The MDPPI algorithm presented in previous subsection has some important drawbacks. First of all, we can only execute the algorithm for D ∈ {1, 2, 3} due to the lack of a closed-form equation for higher-dimensional solid angles. Furthermore, determining the polar cones and their solid angles is computationally intensive, and can be cumbersome to implement. Therefore, we present a second version of the MDPPI algorithm where we simply skip the calculation of the polar cones and their solid angles, and weight each convex hull vertex encountered with the constant one. This algorithm is hence similar to the MDPPI algorithm presented in previous section, except the weighting in step 2d. becomes ∀i P ∈ Ic (Y ) : σi = 1, and the normalization factor in step 3 is i ni , so that the resulting scores will sum to one. This unweighted MDPPI (UMDPPI) algorithm will also assign a score to each data point, which counts the number of times the point has been found in the convex hull of a random lower-dimensional projection. This corresponds exactly to the number of times the random low-dimensional subspace intersected with each point’s polar cone in the high-dimensional space. While there is no one-to-one relation with the polar cone solid angles, it is clear that hull vertices with large polar cones will on average have a higher probability of being cut by a random lower-dimensional subspace, and hence appear more often as convex hull vertices in these projections as well. Hence, taking the points with the highest scores as endmember candidates will return similar results as the PPI algorithm (see also the experimental section). Possible exceptions are data points with very long and thin, or obtuse, polar cones, which will have a small solid angle, but a high probability of being found in a lower-dimensional projection. The UMDPPI algorithm hence provides a simpler alternative for the MDPPI algorithm, and has no theoretical restrictions on the possible values of the dimensionality D. In practice however, we are restricted to maximum values around D ≈ 6 due to computational concerns: The runtimes and required memory become very large. V. E XPERIMENTS A. Setup In this section, we compare the performance of the MDPPI and UMDPPI algorithms with the PPI algorithm, as these algorithms are intended as a faster alternative to the PPI algorithm. We have used several artificial and two real data

(a) Cuprite

(b) Indian Pines

Fig. 4: The AVIRIS Cuprite and Indian Pines data sets. Bands used as RGB channels are bands (40, 20, 10), corresponding to (731, 557, 458) nm. The Cuprite data set is cropped to a 301 × 365 pixel subset containing interesting mineralogical features, and restricted to a contiguous 51-band subset in the range (1979 - 2477) nm. The Purdue university Indian Pines data set has 145 × 145 pixels and 188 spectral bands, after removal of the noisy and water absorption bands.

sets, i.e. the well-known AVIRIS Cuprite and Indian Pines data sets. Both are depicted and described in Fig. 4. As a graphical illustration on how the (U)MDPPI algorithm works, we have illustrated a single iteration of the algorithm in Fig. 5, executed on the Indian Pines data set with D = 2 and D = 3. B. Estimating high-dimensional solid angles To demonstrate the capacity of the MDPPI algorithm to correctly estimate high-dimensional solid angles, we have performed the following simple test. We first constructed a unit simplex in d dimensions, consisting of the origin, and the d vectors listed columnwise in the d-dimensional unit matrix. We then know that the origin has a relative solid angle of 2−d (normalized with the surface area of the d-ball), and that the relative solid angle of all other vertices is (1 − 2−d )/d. Executing the MDPPI algorithm allows us to estimate the solid angle associated with e.g. the origin, as a function of the number of iterations. This result is demonstrated in Fig. 6 (a), for D = 1 (the PPI algorithm), D = 2 and D = 3. All three results converge towards the correct solution, but the higher the value of D, the faster the convergence goes. This is more clearly illustrated in Fig. 6 (b), where we have performed the same experiment 100 times, and have plotted one standard deviation over the 100 runs. It is clear that the higher values of D have a much smaller standard deviation, and will hence converge much faster towards the correct solution. One remark here is that the total number of random vectors generated in the algorithm equals KD, hence by rescaling the number of iterations with D, a comparison in function of the number of random vectors generated can be obtained. The observed faster convergence for higher values of D is still clearly present however. This controlled setup can also be used to evaluate the results obtained by the UMDPPI algorithm. While the convergence of the UMDPPI scores towards their final values is very similar to those of the MDPPI algorithm observed in Fig. 6, their final scores are not the same. This can be expected due to the

7

0.15

0.1

0.1 D=1 D=2 D=3 exact solution

0.05

Estimated solid angle

0

−0.05

−0.1

−0.15

−0.2 −1.3

0.08

0.06

0.04

0.02 −1.2

−1.1

−1

−0.9

−0.8

−0.7

−0.6

−0.5

0 0 10

1

2

10

3

10

10

4

10

K

0.08 D=1 D=2 D=3 exact solution

−0.1

−0.2

−0.25 −0.8 −0.6

−0.3 0.16

0.18

−0.4 0.2

0.22

0.24

Standard deviation

0.06 −0.15

0.04

0.02

0

−0.2 0.26

0.28

0

−0.02 1 10

Fig. 5: Visual representation of a single iteration (random projection) of the (U)MDPPI algorithm on the Indian Pines data set. Top: D = 2, so the projection is done onto a plane. The convex hull is indicated with a red line, and the convex hull data points with red circles (10 data points). Bottom: D = 3. We have plotted only the convex hull containing all data inside. There are 48 points spanning this convex hull. In the MDPPI method, the score of each convex hull vertex is increased with the solid angle, while in the UMDPPI version, the scores are increased with one.

lack of the weighting step in the UMDPPI algorithm, which causes the scores to count how many times a random subspace intersects with each polar cone, followed by normalization. E.g. in the case of the vertex at the center, the UMDPPI score will count how many times the random subspace intersected with the orthant where all coordinates are negative. These relative scores have been plotted in table I, after K = 106 iterations to ensure that convergence has been reached. The main observation from this table is that the UMDPPI algorithm will decrease the larger scores and increase the smaller scores. The reason for this is twofold: Very large solid angles are found at almost each iteration, but their scores can increase with only one at each iteration. Smaller angles that are not often encountered on the other hand will be weighted with one as well. The ranking of the scores however will not change in this simple experiment, and the points with the

2

3

10

4

10

10

K

Fig. 6: Top: The solid angle fraction of the vertex in the origin of a 5-dimensional unit simplex as a function of the number of iterations K, as estimated by the MDPPI algorithm for several values of the dimensionality D. The correct solution, 2−5 , is indicated by the black line. Bottom: One standard deviation of 100 runs of the solid angle estimations, for identical parameters.

Theoretical (U)MDPPI D = 1 MDPPI D = 2 MDPPI D = 3 UMDPPI D = 2 UMDPPI D = 3 UMDPPI D = 4

origin 0.03125 0.03126 0.03129 0.03122 0.07198 0.1241 0.15817

other 0.19375 0.19375 0.19374 0.19376 0.18560 0.17517 0.16837

TABLE I: Relative scores found for the vertex in the origin, and the average over the 5 other vertices, for the 5-dimensional unit simplex after K = 106 iterations of the MDPPI and UMDPPI algorithms. The theoretical relative solid angles are indicated as well.

8

5

5

10

4

# convex hull points found

# convex hull points found

10

10

3

10

D=1 D=2

2

10

D=3 D=4

1

10

D=5

4

10

3

10

D=1 D=2

2

D=3

10

D=4 D=5

1

10

D=6

size data set

size data set

0

10 0 10

0

1

10

2

10

3

10

4

10

K

Fig. 7: The number of points identified as belonging to the convex hull of the unit hypercube in 16 dimensions by the UMDPPI algorithm, as a function of the number of iterations K, and for several values of the dimensionality D. The PPI results correspond to D = 1. The total number of convex hull points is 216 = 65536, and is indicated with the dashed line.

highest ranking are indeed those with the largest polar cones. This different behavior between the MDPPI and UMDPPI algorithm is also observed in real data sets (see subsection V-D). C. Identifying convex hull vertices While both the MDPPI and UMDPPI algorithms can be used to estimate the endmembers in a hyperspectral image, they can also be used to estimate which data points of the hyperspectral data set lie on the convex hull in the highdimensional spectral space: Each data point with a non-zero score certainly lies on the high-dimensional convex hull, since it was identified as a convex hull point in a lower-dimensional ”shadow” of the data set. Points with scores zero however could also be convex hull points, since the algorithms might simply not have found these points yet. To test this possible application of the algorithms, we have performed two tests, one on artificial and one on real data, where we calculate the number of points identified as belonging to the convex hull as a function of the number of iterations. The first data set consists of the corners of a 16dimensional unit hypercube, hence here we know that every data point will be a convex hull vertex, and all points are equivalent. The number of points identified as convex hull vertices by the UMDPPI algorithm as a function of the number of iterations has been plotted in Fig. 7. From this graph, it is clear that the number of points identified per iteration rised dramatically for increasing values of D. For any value of D, eventually all points are correctly identified as belonging to the convex hull. In Fig. 8 we repeated the same experiment on the Indian Pines data set (see Fig. 4), and a similar behavior is observed. The number of points identified as belonging to the convex hull increases strongly with increasing subspace dimension D, and also here, eventually all points are identified as belonging to

10 0 10

2

4

10

10

6

10

K

Fig. 8: The number of points identified as belonging to the convex hull of the Indian Pines data set by the UMDPPI algorithm, as a function of the number of iterations K, and for several values of the dimensionality D. The PPI results correspond to D = 1. The total number of data points in the Indian Pines data set is indicated with the dashed line. Remark that eventually, almost all data points are identified as convex hull points, a typical consequence of the high dimensionality of the data.

the convex hull. This is a typical consequence of the “curse of dimensionality” when dealing with very high-dimensional data: The high-dimensional volume enveloped by the convex hull of any number of points becomes very small in higherdimensional spaces, and the probability of encountering a data point inside the convex hull of a set of other points basically becomes zero. Therefore, all data points of a real hyperspectral data set generally will lie on the convex hull. D. Endmember scoring and identification Both the PPI and MDPPI algorithms will return a score for each pixel, and as a first experiment, we would like to test whether the scores returned by each algorithm are comparable. This can be accomplished by sorting the scores from high to low, and plotting these sorted scores. We plot only the highest scores since these are the ones that will identify the endmembers returned by the algorithm. In Fig. 9, we have plotted these sorted scores, for the MDPPI and UMDPPI algorithm, and for several values of the dimensionality D. The PPI algorithm corresponds to the D = 1 results. The values for K are chosen heuristically, and other values will return similar results. These graphs demonstrate that the scores returned by the MDPPI algorithm are all similar, and correspond to the PPI results. This confirms that the MDPPI algorithm can be used as a drop-in replacement for the PPI algorithm, and does not even require adaptation of the thresholds used, since the normalization present in the algorithm makes sure that the scaling is identical: all scores sum to one. On the other hand, the scores returned by the UMDPPI algorithm have a different shape, and also show a non-trivial dependence on the dimensionality D. We observe the same effect as with

9

0

10

100 D=1 K=105 (W) D=2 K=10 (W) 2

D=3 K=10 (W)

−1

10

3

D=2 K=10 (U) 2

score

D=3 K=10 (U) −2

10

−3

10

90

size intersection with D=1 (W)

3

80 70

D=2 (W) D=3 (W) D=2 (U) D=3 (U)

60 50 40 30 20 10

−4

10

0

20

40

60

80

0 0

100

20

40

rank

artificial data sets when using the UMDPPI algorithm: high scores become lower, and low scores become higher, leading to a flattening of the sorted score graph. This effect increases for increasing D. Although the scores returned by the MDPPI and PPI algorithm are very similar, it is not guaranteed that the associated endmember candidates are the same. On the other hand, deviating scores, such as those obtained by the UMDPPI algorithm, might still correspond to the same endmembers. To test this, we have taken the M highest scoring data points returned by either algorithm from Fig. 9, and have looked at the size of their intersection, which measures the number of endmembers common in both sets. These sizes are given in Fig. 10, where we compare the results returned by the (U)MDPPI algorithm with D > 1 with those returned by the PPI algorithm, as a function of the size of the endmember set M . This figure shows that, if we select for instance the 100 endmembers with the highest scores as obtained with PPI with K = 105 on the one hand, and those obtained with MDPPI with D = 3 and K = 100 on the other hand, there will be 97 endmembers identical between the two endmember sets. This clearly indicates that the MDPPI algorithm will yield similar results as the PPI algorithm, and can do so in much less iterations. Furthermore, although the UMDPPI algorithm returns quite different values for the highest scores, Fig. 10 demonstrates that the associated endmembers are the same as those obtained with PPI. Hence for the purpose of endmember identification, either the weighted or unweighted methods will return similar endmembers sets. E. Computational performance When the (U)MDPPI algorithm is run with a profiler, it becomes clear that most of the computational runtime is consumed by the calculation of the convex hulls. These runtimes increase dramatically for larger values of D, as illustrated by Fig. 11, where we have plotted the runtimes

80

100

Fig. 10: The size of the intersection between the endmember sets obtained with the (U)MDPPI algorithm, and the PPI algorithm run with 105 skewers on the Indian Pines data set, as a function of the number of endmembers selected. The MDPPI results are indicated with (W), and the UMDPPI results with (U). 4

10

3

10

runtime (seconds)

Fig. 9: The highest 100 scores as obtained by the MDPPI and UMDPPI algorithms, indicated with (W) and (U) respectively, when executed on the Indian Pines data set. The used values of the subspace dimension D and the number of iterations K are indicated. The D = 1 result corresponds to the PPI algorithm.

60

# endmembers

2

10

1

10

0

10

−1

10

−2

10

2

3

4

5

6

7

8

9

dimension

Fig. 11: The average runtime of calculating the convex hull of the Cuprite data set (see Fig. 4) with the Qhull algorithm, after projection on a random hyperplane of given dimension.

required for calculating a convex hull using the popular Qhull algorithm (implemented in MATLAB’s “convhulln” function), as a function of the dimensionality D. It is clear that values of D above 6 or 7 will result in a very slow algorithm, and will cancel out the advantages of finding much more convex hull points per iteration. To test the computational performance of the entire algorithm, we have executed each algorithm for K = 1000 iterations on the Indian pines and the Cuprite data sets, and have determined the average runtime per iteration. Since the algorithm is a sequential algorithm, the runtime scales linearly in the number of iterations. The average runtimes per iteration are listed in table II for the Cuprite and Indian Pines data sets separately, along with the number of points identified per iteration, and the resulting number of points processed per second. The algorithms were implemented as presented in section IV, in MATLAB, and ran on a Intel Core i7-2600K

10

Cuprite D=1 D=2 D=3 D=4 D=5 D=6 D=2 D=3

t 3.0 9.8 48.5 85.7 184 1103 14 57.6

pts/it 2 14.4 57.0 165 405 867 14.5 56.7

pts/sec 665 1467 1175 1930 2197 786 1039 985

Indian Pines (U)MDPPI D = 1 UMDPPI D = 2 UMDPPI D = 3 UMDPPI D = 4 UMDPPI D = 5 UMDPPI D = 6 MDPPI D = 2 MDPPI D = 3

t 1.9 3.5 10.5 19.6 65.7 537 7.2 20.4

pts/it 2 12.2 46.6 137 329 692 12.1 46.4

pts/sec 1036 3497 4462 6959 5015 1288 1681 2270

(U)MDPPI UMDPPI UMDPPI UMDPPI UMDPPI UMDPPI MDPPI MDPPI

TABLE II: The average runtime per iteration t in milliseconds, the average number of convex hull points processed per iteration (pts/it), and the number of points processed per second (pts/sec), when executing the MDPPI and UMDPPI algorithms on the Cuprite and Indian Pines data sets.

CPU at 3.40GHz, with 16Gb of RAM running Ubuntu Linux. We did not make use of any parallellization, even though both the MDPPI and UMDPPI algorithm are perfectly fit for trivially parallel implementations. This table clearly illustrated that, although a single iteration of the (U)MDPPI algorithm with D > 1 takes longer than an iteration of the PPI algorithm, the number of points found per iteration, and the resulting number of points processed per second, are much larger than for the PPI algorithm, at least for D ≤ 6. Furthermore, points which have but a small probability of being identified as extrema in the PPI algorithm (hence with small polar cones) will have a much larger probability of being identified by the (U)MDPPI algorithm. To quantify this property, we have conducted the following experiment: We first ran the PPI algorithm for a fixed number of iterations, and have counted the number of non-zero scores. This is indicative of the number of different convex hull points that have been identified by the PPI algorithm. Next, we ran the UMDPPI algorithm not for a fixed number of iterations, but until the number of convex hull points found equals or surpasses the number found by PPI. We ran two experiments of 104 and 106 iterations for the reference PPI algorithm. The runtimes, and number of iterations required, are listed in table III. From this table it is clear that the number of iterations required, and hence the runtime, decreases drastically for larger D. One must keep in mind however that the scores returned by the UMDPPI algorithm can take on only K + 1 discrete values, hence the lower the number of iterations, the larger the granular distortion of the scores will be. The MDPPI algorithm on the other hand does not show this drawback, but can only be used for values of D ∈ {1, 2, 3}. Hence, for the purpose of endmember extraction or identifying convex hull vertices, the UMDPPI algorithm is the algorithm of choice, and can show runtimes up to three orders of magnitude faster than the PPI algorithm, at the cost of a possible lower precision

D D D D D D D D D D D D D

=1 =2 =3 =4 =5 =6 =1 =2 =3 =4 =5 =6 =7

iterations 104 252 26 7 2 1 106 16631 1102 150 32 12 4

hull pts 523 525 531 558 595 722 3545 3546 3547 3550 3572 3692 3564

runtime (s) 16.27 1.98 0.41 0.15 0.18 0.57 1625 120 15.2 2.90 2.05 5.59 25.28

TABLE III: The number of iterations and the runtime (in seconds) of the UMDPPI algorithm required to find a number of convex hull points in the Indian Pines data set that surpasses the number found by PPI with K = 104 and K = 106 iterations, for several values of the dimensionality D. The maximal increase in speed is a factor 108 for 104 iterations, and 793 for 106 iterations.

in the quantized scores. If one requires the endmember scores to be as close as possible to those obtained with PPI, the MDPPI algorithm should be used, and the runtimes can be up to two orders of magnitude faster. Finally, we would like to remark that the presented PPI runtimes are already relatively short when compared to those in the literature, where often runtimes of the order 5-50 minutes are reported on data sets similar in size to the Cuprite data set, and 104 skewers. A further speedup can be obtained by parallelization of the algorithm. VI. C ONCLUSIONS In this work, we have presented a multi-dimensional extension of the PPI algorithm. This MDPPI algorithm is based on an improved Monte-Carlo sampling method for the solid angles of the convex hull polar cones, where the sampling is done with higher-dimensional projections instead of one-dimensional skewers. An alternative interpretation of the MDPPI algorithm is provided, where it is shown that at each iteration, the fractional scores calculated correspond to the analytical limit for infinitely many linear combinations of skewers in the linear subspace considered. The MDPPI algorithm is demonstrated on the AVIRIS Cuprite and Indian Pines data sets, and shown to return qualitatively similar scores, and identifying the same endmembers, as the PPI algorithm. An unweighted version of the algorithm is provided as well, which is simpler to implement, has a higher computational performance, and returns the same endmembers, at the cost of quantization errors in the returned endmember scores. The runtimes required to obtain results that are qualitatively equivalent to those obtained with the PPI algorithm are shown to be up to three orders of magnitude smaller, and can be well below one second for processing real data sets on commodity hardware, and without employing parallelization. Future work includes finding a good approximation for solid angles in more than 3 dimensions, which will allow us to extend the MDPPI algorithm to D > 3 and obtain further computational improvements. Also, since this work

11

only concerns multi-dimensional extensions of the standard PPI algorithm, many of the problems encountered with PPI, such as inconsistency of the endmember sets between runs, or the difficulty estimating the algorithmic parameters, are also present in the MDPPI algorithm. Since many of these problems are already solved to a certain extent by modifying the PPI algorithm, similar modifications could be applied and studied on the MDPPI algorithm. ACKNOWLEDGMENT This work was partially funded by the CHAMELEON project of the strategic basic research (SBO) program of the Flemish government agency for Innovation by Science and Technology (IWT). R EFERENCES [1] N. Keshava and J.F. Mustard, “Spectral unmixing,” IEEE Sig. Proc. Mag., vol. 19, pp. 44–57, 2002. [2] J. M. Bioucas-Dias, A. Plaza, N. Dobigeon, M. Parente, Qian Du, P. Gader, and J. Chanussot, “Hyperspectral unmixing overview: Geometrical, statistical, and sparse regression-based approaches,” IEEE J. Sel. Top. Applied Earth Observations and Remote Sensing, vol. 5, no. 2, pp. 354–379, 2012. [3] J.W. Boardman, F. A. Kruse, and R. O. Green, “Mapping target signatures via partial unmixing of aviris data,” Proc. JPL Airborne Earth Sci. Workshop, pp. 23–26, 1995. [4] C.-I Chang, X.-Li Zhao, M.L.G. Althouse, and J.J. Pan, “Least squares subspace projection approach to mixed pixel classification for hyperspectral images,” IEEE Tran GRS, vol. 36, no. 3, pp. 898–912, 1998. [5] E.M. Winter, “N-FINDR: An algorithm for fast autonomous spectral end-member determination in hyperspectral data,” Proc. SPIE, vol. 3753, pp. 266–275, 1999. [6] A. Ifarraguerri and C-I. Chang, “Multispectral and hyperspectral image analysis with convex cones,” IEEE Tran GRS, vol. 37, no. 2, pp. 756– 770, 1999. [7] J.M.P. Nascimento and J.M.B. Dias, “Vertex component analysis: a fast algorithm to unmix hyperspectral data,” IEEE Tran GRS, vol. 43, no. 4, pp. 898–910, 2005. [8] C-I. Chang, C-C. Wu, W-M. Liu, and Y-C. Ouyang, “A new growing method for simplex-based endmember extraction algorithm,” IEEE Tran GRS, vol. 44, no. 10, pp. 2804–2819, 2006. [9] N. Dobigeon, S. Moussaoui, M. Coulon, J.-Y. Tourneret, and A. O. Hero, “Joint Bayesian endmember extraction and linear unmixing for hyperspectral imagery,” IEEE Tran Sig. Proc., vol. 57, no. 11, pp. 4355– 4368, 2009. [10] G. Martin and A. Plaza, “Spatial-spectral preprocessing prior to endmember identification and unmixing of remotely sensed hyperspectral data,” IEEE J. sel. top. applied earth observations and remote sensing, vol. 5, no. 2, pp. 380–395, 2012. [11] A. Zare and P. D. Gader, “PCE: Piece-wise convex endmember detection,” IEEE Tran GRS, vol. 48, no. 6, pp. 2620–2632, 2010. [12] D.T. Anderson and A. Zare, “Spectral unmixing cluster validity index for multiple sets of endmembers,” IEEE J. sel. top. applied earth observations and remote sensing, vol. 5, no. 4, pp. 1282–1295, 2012. [13] B. Somers, M. Zortea, A. Plaza, and G.P. Asner, “Automated extraction of image-based endmember bundles for improved spectral unmixing,” IEEE J. sel. top. applied earth observations and remote sensing, vol. 5, no. 2, pp. 396–408, 2012. [14] J.W. Boardman, “Automating spectral unmixing of aviris data using convex geometry concepts,” Summaries of the Fourth Annual JPL Airborne Geoscience Workshop, vol. 1, pp. 11–14, 1994. [15] J.W. Boardman, “Geometric mixture analysis of imaging spectrometry data,” Proc. Int. GRS Symp., vol. 4, pp. 2369–2371, 1994. [16] J. Theiler, D.D. Lavenier, N.R. Harvey, S.J. Perkins, and J.J. Szymanski, “Using blocks of skewers for faster computation of pixel purity index,” Proc. SPIE Int. Conf. Optical Science and Technology, pp. 61–71, 2000. [17] F. Chaudhry, S. Chakravarty, A. Plaza, and C.-I Chang, “Design of fast pixel purity index algorithms for endmember extraction in hyperspectral imagery,” American Society for Photogrammetry and Remote Sensing (ASPRS) Annual Conference, 2005.

[18] C.-I Chang, M. Hsueh, W. Liu, C.-C. Wu, F. Chaudhry, G. Solyar, and A. Plaza, “A pyramid-based block of skewers for pixel purity index for endmember extraction in hyperspectral imagery,” Int. J. High Speed Electronics and Systems, vol. 18, no. 2, pp. 469–482, 2008. [19] C.A. Lee, S.D. Gasster, A. Plaza, C.-I. Chang, and H. Bormin, “Recent developments in high performance computing for remote sensing: A review,” IEEE J. sel. top. applied earth observations and remote sensing, vol. 4, no. 3, pp. 508–527, 2011. [20] S. Sanchez and A. Plaza, “Gpu implementation of the pixel purity index algorithm for hyperspectral image analysis,” IEEE International Conference on Cluster Computing, 2010. [21] D. Valencia, A. Plaza, M.A. Vega-Rodriguez, and R. Perez, “Fpga design and implementation of a fast pixel purity index algorithm for endmember extraction in hyperspectral imagery,” Optics East 2005, III Conference on Chemical and Biological Standoff Detection, 2005. [22] D. Valencia and A. Plaza, “Fpga-based compression of hyperspectral imagery using spectral unmixing and the pixel purity index algorithm,” Lecture Notes in Computer Science, vol. 3993, pp. 24–31, 2006. [23] A. Plaza and C-I. Chang, “Impact of initialization on design of endmember extraction algorithms,” IEEE Tran GRS, vol. 44, no. 11, pp. 3397–3407, 2006. [24] M. Hsueh and C.-I. Chang, “Field programmable gate arrays (fpga) for pixel purity index using blocks of skewers for endmember extraction in hyperspectral imagery,” Int. J. High Performance Computing Applications, vol. 22, no. 4, pp. 408–423, 2008. [25] C. Gonzalez, D. Mozos, J. Resano, and A. Plaza, “Fpga for computing the pixel purity index algorithm on hyperspectral images,” Engineering of Reconfigurable Systems and Algorithms (ERSA’10), 2010. [26] C. Gonzalez, J. Resano, D. Mozos, A. Plaza, and D. Valencia, “Fpga implementation of the pixel purity index algorithm for remotely sensed hyperspectral image analysis,” EURASIP Journal on Advances in Signal Processing, vol. 2010, 2010. [27] C. Gonzalez, J. Resano, A. Plaza, and D. Mozos, “Fpga implementation of abundance estimation for spectral unmixing of hyperspectral data using the image space reconstruction algorithm,” IEEE J. sel. top. applied earth observations and remote sensing, vol. 5, no. 1, pp. 248– 261, 2012. [28] D. Lavenier, E. Fabiani, S. Derrien, and C. Wagner, “Systolic array for computing the pixel purity index (ppi) algorithm on hyper spectral images,” Proc. SPIE Imaging Spectrometry VII, vol. 4480, pp. 130–138, 2002. [29] D. Valencia A. Plaza and J. Plaza, “High-performance computing in remotely sensed hyperspectral imaging: The pixel purity index algorithm as a case study,” 7th Workshop on Parallel and Distributed Scientific and Egineering Computing (PDSEC), 2006. [30] A. Plaza and C.-I Chang, “Fast implementation of pixel purity index algorithm,” SPIE Symposium on Defense and Security, XI Conference on Algorithms and Technologies for Multispectral, Hyperspectral and Ultraspectral Imagery, 2005. [31] C.-I Chang and A. Plaza, “A fast iterative algorithm for implementation of pixel purity index,” IEEE GRS Lett, vol. 3, no. 1, pp. 63–67, 2006. [32] F. Chaudhry, C.-C. Wu, W. Liu, C.-I Chang, and A. Plaza, Pixel purity index-based algorithms for endmember extraction from hyperspectral imagery, Research Signpost, Kerala, India, 2006. [33] C.-I Chang, C.-C. Wu, and H.-M. Chen, “Random pixel purity index,” IEEE GRS Lett., vol. 7, no. 2, pp. 324–328, 2010. [34] C.-I Chang and C.-C. Wu, “Iterative pixel purity index,” IEEE WHISPERS, 2012. [35] G. Marsaglia, “Choosing a point from the surface of a sphere,” Ann. Math. Stat., vol. 43, no. 2, pp. 645–646, 1972. [36] R. A. Jarvis, “On the identification of the convex hull of a finite set of points in the plane,” Inf. Proc. Lett., vol. 2, pp. 18–21, 1973. [37] S.S. Skiena, The Algorithm Design Manual, New York: Springer-Verlag, 1997. [38] C.B. Barber, D.P. Dobkin, and H. Huhdanpaa, “The quickhull algorithm for convex hulls,” ACM Trans. Math. Softw., vol. 22, no. 4, pp. 469–483, 1996. [39] T.M. Chan, “Optimal output-sensitive convex hull algorithms in two and three dimensions,” Discrete & Computational Geometry, vol. 16, pp. 361–368, 1996. [40] O. Mazonka, “Solid angle of conical surfaces, polyhedral cones, and intersecting spherical caps,” arXiv:1205.1396v1 [math.MG], 2012. [41] J. M. Ribando, “Measuring solid angles beyond dimension three,” Discrete Comput. Geom., vol. 36, no. 3, pp. 479–487, 2006.