Efficient Evaluation of the Number of False Alarm Criterion

This paper proposes a method for computing efficiently the significance of a parametric pattern inside a binary image. On the one hand, a-contrario strategies avoid the user involvement for tuning detection thresholds, and allow one to account fairly for different pattern sizes. On the other hand, a-contrario criteria become intractable when the pattern complexity in terms of parametrization increases. In this work, we introduce a strategy which relies on the use of a cumulative space of reduced dimensionality, derived from the coupling of a classic (Hough) cumulative space with an integral histogram trick. This space allows us to store partial computations which are required by the a-contrario criterion, and to evaluate the significance with a lower computational cost than by following a straightforward approach. The method is illustrated on synthetic examples on patterns with various parametrizations up to five dimensions. In order to demonstrate how to apply this generic concept in a real scenario, we consider a difficult crack detection task in still images, which has been addressed in the literature with various local and global detection strategies. We model cracks as bounded segments, detected by the proposed a-contrario criterion, which allow us to introduce additional spatial constraints based on their relative alignment. On this application, the proposed strategy yields state-of the-art results, and underlines its potential for handling complex pattern detection tasks.


Introduction
Since the seminal articles of Desolneux et al. [10,11], detection approaches based on the Number of False Alarms criterion (NFA) became more and more popular in the field of image processing this last decade. In these approaches, the words 'a-contrario' refer to the fact that detection is performed by contradicting a 'naive' model that represents the statistics of the outliers (the null hypothesis in statistical decision theory). Then, the inliers are detected as too regular to appear 'by chance' according to the naive model. Defining a measurement of deviation relatively to the naive model, the main asset of such approaches is their independence from threshold parameters, as they cast the detection as an optimization problem by maximizing the significance defined from deviation. Then, to interpret this maximum of significance (or minimum NFA value) in terms of presence or absence of structured pattern, one refers to the NFA definition itself: the NFA of a pattern candidate is the expected number of false positives (random patterns) occurring in the search space when accepting all patterns at least as significant as the candidate. By setting the NFA detection threshold to 1 irrespective of the detection task, the a-contrario framework simply states that the upper bound for detecting a random rare event is at most one occurrence.
Since the introductory illustration of a-contrario methods on alignment detection [10], some recent works developed the underlying idea [18,7], but a large interest developed around using this fundamental pattern grounded in the Gestalt continuity principle in order to detect related elements such as segments [29,30,1], vanishing points [4,17] or scratches [19]. Concomitantly, acontrario methods have been developed for detecting more complex patterns, such as circles and ellipses [2,22] as well as coherent clusterings in a broader sense [28,8,25,26,21,32].
Considering pattern recognition problems, in order to find the most significant subset among the ones representing patterns, one should theoretically compute the significance of every possible pattern. If the researched patterns correspond to parametric objects (e.g. lines, ellipses etc.), the dimension (and thus the actual cardinality being used) of the solution space to explore grows with the number of parameters. Then, in order to maintain tractability, discretizing the parameter space or relying on heuristic strategies [30] for exploration are commonly employed. In this work, we show how a cumulative space may be used in order to compute efficiently the significance of a given parametric pattern. Cumulative approaches, widely used in pattern recognition and introduced in [15], rely on a quantization of the entire feasible parameter space denoted as accumulator, in which every observation increments the count of every discrete cell (i.e pattern) consistent with the existence of that observation. In the end, each cell records the total number of supporting observations.
In our work we show that in some favorable cases there is an equivalence between considering cells in a high dimensionality cumulative space and recasting them as n-orthotopes in an alternative cumulative space of decreased dimensionality (by 1 or 2 in the proposed examples). Now, using a trick similar to the integral histogram [23], the fact of considering n-orthotopes allows for an efficient computation of the required NFA values. Specifically, the integral histogram is the result of the propagation of an aggregated histogram from origin through the whole image lattice so that the histogram of any rectangular region may be computed by simple arithmetic operations between four points of the integral histogram. Thus, privileging this cumulative space of reduced dimensionality allows us to lower significantly the complexity of pattern research, and to extend the limits of the parameter space dimension due to the available computer memory size.
Then, as a second contribution, we show how crack detection in still images can benefit from the proposed coupling between an a-contrario criterion and a cumulative space.
2 NFA computation using a cumulative space

Related work
In previous works involving NFA criterion, two 'naive' models have been widely used, namely the Gaussian and Bernoulli models that stand for gray level and binary images, respectively. In this study, we focus on the second case. Pixels take then values in {0, 1} set (or {f alse, true} set). Assuming a Bernoulli distribution of parameter p for pixel binary values, the probability to have a given number κ of true samples, i.e. 1-valued pixels, among a given number ν of pixels is a Binomial distribution of parameter p. Then, according to [13], the Number of False Alarms is where η 2 is the 'number of tests' coefficient that depends on the number of possible patterns of ν pixels. The significance being defined as S (κ, ν, p) = − ln(N F A B (κ, ν, p)), it may be derived from Eq. (1). Using the Hoeffding's approximation like in [12], we may express S (κ, ν, p) in terms of the Kullback-Leibler divergence (K-L) between the true pixel probability restricted to a particular area, p a = κ ν , and the naive model probability p: ∀ (κ, ν) such that κ ν > p,

Proposed approach
According to Eq. (1) or Eq. (2), in order to compute the significance of a given pattern, we need both its geometric area or its number of pixels and its number of true pixels. The main idea of this work is to use a cumulative space to store partial sums of numbers of points in order to decrease the computational cost. Then, the number of points in any pattern of given parameters can be directly retrieved from the values stored in the cumulative space, allowing us to accelerate the algorithm and/or to cope with a finer discretization of the parameter space.
In the following part of this section, we explain our approach and we illustrate its operation through four classic examples, namely detection of rectangular tiles, strips, rings and bounded strips.

Use of cumulative space
The cumulative space on which we will focus varies with the considered pattern. Specifically, it derives from the chosen parametric form for the pattern of interest. Now, all the parametric forms (of a given pattern) are not equivalent in terms of involved cumulative space. Let us point out the representations as a set of 'simpler' patterns (simpler in the sense that they involve less parameters), such that the set is defined by varying one (or two) parameter(s) of the simpler pattern into an interval. For instance, a strip can be represented either as a straight line having a strictly positive width or as a set of parallel lines such that their distance to the origin (ρ parameter in polar representation) varies between two bounds. Now, let us remark that, for such a parametric form, when two parameters represent the bounds of an interval, it is possible to handle them on a single axis/dimension of the associated cumulative space. In the example of the strip, the first representation involves a 3D cumulative space, whereas the second representation allows us to use the same 2D cumulative space as that of straight lines, namely the classic Hough transform space.
Therefore, among several parametric forms of a given pattern, denoted b, we favor the one that is a set of simpler patterns denoted a, having several parameters that we will be able to represent on a same axis of the cumulative space. Such a representation allows us to reduce the dimensionality of the cumulative space and save processing time by storing partial sums, in a similar fashion to integral histograms [23]. It allows us to compute the pattern as follows.
Let l denote the number of parameters required to determine the considered pattern b. We denote by β = (β i ) i∈ [1,l] the tuple of these parameters which take values in A (A depends on the image lattice and on the application that may introduce some specific constraints on the parameters).
Let C be the considered cumulative space. If b pattern has been parametrized as a set of 'well-chosen' a patterns, C is the cumulative space associated to a parametrization. Since a has less parameters than b, some pairs of b parameters are bounds for intervals of a parameters. Then, we distinguish in C the axes that represent only one parameter β i , and the axes that represent two different β i (playing the role of bounds for some a parameters). If m is the number of bi-parameter axes, with 0 ≤ m ≤ l 2 , C dimensionality is l − m, and l − 2m is the number of mono-parameter axes. Note that in C a simpler pattern is represented by a point and a pattern of interest by a n-orthotope (also called hyperrectangle). Indeed, any pattern of interest b is then represented by a n-orthotope of C having l − 2m dimensions reduced to a single point and the other dimensions which are non-null intervals. Now, since C is a cumulative space associated to a pattern, the number of votes for a given a pattern is provided by the value of the corresponding point in C and the number of votes for a given b pattern is the sum of the C point values over the corresponding hypercube.
Finally, following the integral histogram idea [23], we have to compute and store partial sums over C. To be able to specify the partial sum computation, we have to order the parameters.
Without loss of generality, the elements of β tuple are mapped to the C axes, denoted (α i ) i∈[1,l−m] , as follows: the l − 2m first components are mapped to the l − 2m first C parameter axes (that are thus mono-parameter axes) and the 2m last components are mapped to the m last C parameter axes (that are thus bi-parameter axes) so that the β i parameters are reordered where α j denotes an interval lower bound and α j denotes an interval upper bound.
In the following, for conciseness and since we focus on bi-parameter axes, the list of parameters of mono-parameter axes (that may possibly be empty) is denoted by dots. Then, if J C denotes the cumulative space instance where the value of a point represents its number of votes and if we choose a unit step for the cumulative space resolution, the cumulative space instance containing partial sums J C is computed as follows: if m = 1: where 1 [αi>1] denotes the indicator function that takes value 1 if the condition between square brackets is true and value 0 otherwise; and if m = 2, From J C , the number of true pixels in a given pattern such that In summary, the main idea of the paper is that the NFA can be computed more efficiently with cumulative space pre-computation: for an image of size N 2 , using the integral histogram trick in a well-chosen cumulative space of reduced dimension l − m (instead of l) with each single dimension of size M , the complexity is roughly N 2 (J C computation) +M m (J C computation) +M l . Then, reducing the complexity compared to a complete brute force approach in N 2 × M l allows for more precise results by providing finer estimation of pattern parameters.
Let us now consider four classic examples, namely rectangular tiles, strips, rings and bounded strips, by specifying for each case the corresponding cumulative space. These patterns are detected on an image having N c columns and N r rows and half diagonal length -rectangular tiles are parametrized as sets of 2D points, using the coordinates of two opposite corners: (x U L , y U L , x LR , y LR ) where x U L and y U L (respectively x LR and y LR ) denote the image coordinates (column and row) of the upper left (respectively lower right) corner of the tile; The cumulative space T has two dimensions: the column axis x representing x U L and x LR and the row axis y representing y U L and y LR . J T is the binary image itself and J T , the cumulative space containing J T partial sums, is derived from Eq. (4) with l = 4, m = 2, α l−3 = x and α l−2 = y. -strips are parametrized as sets of parallel straight lines, through the polar coordinates of the two border lines: (θ, ρ 0 ) and (θ, ρ 1 ) where θ is the parallel line direction (one single value) and ρ 0 and ρ 1 the distance of the border lines to the space origin. Choosing the image center as origin, ρ 0 and ρ 1 are signed values so that there is no discontinuity in ρ values for strips containing the origin.
The cumulative space S has two dimensions: the angular axis θ and the distance axis ρ representing ρ 0 and ρ 1 . J S is the classic Hough transform [15], and J S is the cumulative space containing J S partial sums, derived from Eq. (4) with l = 3, m = 1 and α l−1 = ρ. -rings are parametrized as sets of concentric circles, through the circle center coordinates (x 0 , y 0 ) and two rays ρ 0 and ρ 1 respectively, where The considered cumulative space R has three dimensions: the column and row axes x and y for the coordinates of the center and the ray axis ρ representing ρ 0 and ρ 1 . J R is the circle Hough transform, and J R is the cumulative space containing J R partial sums, derived from Eq. (4) with l = 4, m = 1 and α l−1 = ρ.
-bounded strips are sets of parallel segment lines that can also be represented as unbounded strips with two extremities. They are parametrized by a 5-tuple (θ, ρ 0 , φ, ρ 1 , ψ) where (θ, ρ 0 , ρ 1 ) represents the unbounded strip as previously stated, and φ, ψ are the angular coordinates of the extremities: The considered cumulative space B has three dimensions, namely the strip angle axis θ, the distance axis ρ representing ρ 0 and ρ 1 and the extremity angular coordinate axis φ representing φ and ψ. J B is the half-line Hough transform (e.g. a true pixel votes only for the line segments containing it having the starting point with the lower angular coordinate), and J B is the cumulative space containing J B partial sums, derived from Eq. (4) with l = 5, m = 2, α l−3 = ρ and α l−2 = φ .

Algorithm
Algorithm 1 describes the way the most significant patterns are detected using the NFA criterion coupled with cumulative spaces. Its inputs are: I the considered binary image, the cumulative space C determined by the considered pattern (for conciseness, C bi-parameter axes are denoted as 'bip-axes'), and the set of possible patterns A, which is determined by image dimensions and possibly by some application specific constraints. The output of Algorithm 1 is the set of the most significant patterns, P. After the initialization step, the algorithm begins a loop that detects successively the patterns that will be added, one by one, to P as the most significant pattern at the current iteration. At each iteration, J C is computed according to Eq. (3) or to Eq. (4) depending on the value of m (in this work we focus on m ∈ {1, 2} but the generalization is trivial). Then, two vectors κ [.] and α [.] of dimensionality N , the number of pixels assumed to be the maximum size of a pattern, are allocated. κ [.] elements are integer values and α [.] elements are l-tuples. They will store, for each pattern size j in pixel unit, the maximum number of true pixels (in κ [j]) and the corresponding pattern parameter tuple (in α [j]). Indeed, for a given pattern area, the significance increases with the number of true pixels. Then, it is not necessary to compute the significance values for each pattern, but only for the patterns having different areas (in pixels) and achieving the maximum number of true pixels κ [j]. Thus, the following for loop allows for the comparison of the significance of patterns having different pixel sizes. Finally, having found the most significant patternα at the current iteration, we add it to the set of significant patterns P only if the global significance of the set of patterns increases. If it is not the case, the algorithm ends. Otherwise, before reiteration, the located pattern is removed from the image. In our case, when we remove a pattern, we do not set to false all its pixels, but only the exceeding ones relative to naive model parameter p. Although sub-optimal, this simple adjustment allows us to avoid penalizing too much patterns which overlap other patterns previously detected.
Note that because of the non monotonicity of the projection of extremities to the strip versus the angular coordinate, in the case of bounded strips, Eq. (6) should be adapted as follows. If there is an extremum between φ and ψ, consider as new bound the pre-image of the image of ψ closest to φ (thus enforcing the monotonicity of the projection).   In these figures, each point represents the highest significance value achieved setting the cardinality value ν and varying the pattern parameters. It means that, given the type of pattern (tile etc.) and the considered binary image, among all the patterns having the same number of pixels (ν value on x-axis value), the significance achieves its maximum value at the y-value of the point. In the first three examples, there are three patterns to detect and only one in the last example (bounded strips). The different colors correspond to the different iterations showing the effect of removing a detected pattern from the image. In other words, they show the highest significance points obtained considering either the whole initial set of true pixels (presented on first row) or true pixel subsets derived by removal of the points belonging to the patterns already detected. Note that in the case of the tile, one of the the patterns is detected in two parts. However, we observe the very good robustness of the proposed detection process. Let us now consider actual data and a real application.

Crack detection in still images
The proposed approach is suited for applications involving a significance measure or NFA criterion, and benefiting from a finer sampling of the pattern space. For instance, for detection tasks that are quite standard a-contrario problems, the basic idea is that the detection relies on pattern significance (or NFA) that itself depends on the number of true pixels belonging to the considered pattern. For instance, for detection estimated at region-level, i.e. in rectangular windows, the refinement of the space would imply that the sampling be performed with a 1-pixel sliding step in both dimensions, rather than using a non-overlapping or half-overlapping window sampling strategy [13]. Undoubtedly, the benefit of the proposed method will be more important for pattern with a high number of parameters, i.e. involving high dimensionality of the parametric space. In this study, we have chosen to illustrate our refinement algorithm on the problem of crack detection.
Crack detection has critical importance for ensuring the security of infrastructures and for minimizing maintenance costs. In terms of appearance, a crack is a discontinuity in the background (i.e. asphalt for roads, concrete for walls or more generally underlying material). Then, it may be detected based on some photometric and geometric features [9] and indeed several proposed approaches (e.g. [31,14]) perform rather well on cracks observed on smooth and homogeneous surfaces (e.g. concrete). However, these methods often fail when the background exhibits noisy texture like in the case of road pavement.
In this study, we focus on noisy background case (including texture, artifacts) and on the dataset proposed in [33]. Since the road surface observations have been acquired by a camera embedded on a vehicle, the road texture induces small clusters of shadow pixels appearing like very numerous dark structures whose density and size vary in the image due to the tilt of the camera (cf. Fig. 2, first column). Therefore, the radiometric features alone do not allow us to distinguish the cracks from the road background and the geometric features should be also considered like in [27]. However, whereas [27] focuses on the modeling of the spatial interactions between line segments, in this work, we focus on the detection of these line segments based on significance (or NFA) computation. The background heterogeneity due to asphalt textons indeed resembles well the null hypothesis. On such a background, the lines that compose the cracks may be seen as a deviation from the naive model, having thus high values of significance.

Related work
Crack detection approaches generally involve a preprocessing step that aims at computing a new data image on which the detection will be easier. The preprocessing step may consist in removing adverse or clutter features (e.g. shadow removal [33]), or in enhancing the pattern e.g. by subtracting the median filtered image [14], or in stressing the filiform feature of the cracks e.g. by using Laplacian of Gaussian or steerable filters [6,16]. In this work, we consider the same preprocessing step as in [3]. Basically, it involves the shadow removal by background subtraction and the estimation of a new radiometric image, whose values gather both gray level information and gradient orientation features.
Then, from the preprocessed image, two analysis scales may be considered for crack detection itself. In [31,20], the detection is based on a local analysis performed across the whole image space using a sliding window, whereas in [33,24,5], the detection relies on a global process related to the expected photometric properties of cracks, based on the computation of minimum cost paths. The local or global search strategy and the parameters required by the algorithms set the scale for the patterns to be detected. Now, we observed that the cracks may be highly variable in terms of scale, thinness and relative contrast. Thus, both local and global scales seem relevant and will then be considered in the proposed approach, through the measure of significance relatively to the context in a multi-scale reasoning.
Finally, note that since the used NFA criterion applies to binary images, we perform an automatic thresholding operation on the pre-processed image to derive the seed image, i.e. the binary image where true pixels are very likely to belong to the crack. Then, the objective of the whole algorithm presented in next section is to remove the false positives and to correct the false negatives on this seed image.

Crack detection algorithm
Following a multi-scale strategy, we adopt a two-step algorithm. The input image is the binary image of the seeds in which the true pixels represent (in an incomplete way and including some false positives) the researched patterns. The first step deals with local scale, and aims at determining the most significant local alignments of true pixels, that are called elementary strips in the following. Then, the second step is intended to identify the significant straight chains of elementary strips.
Algorithm 2 describes the method based on the two successive steps. In Algorithm 2, a window refers to the rectangular image sub-area used for local detection. Its dimensions in columns and rows are given as input parameters. Then, in every considered window, the elementary strips are detected as the most significant unbounded strip(s), following Section 2.2. At the end of this step, a new binary image is derived such that the true pixels are exclusively located in detected significant local strips. In other words, the maximization of significance at local scale (over each window) is used as a filtering process which removes a part of the false positives present in the seed image. Besides, the extremities of local strips are also stored as possible extremities of the bounded strips which are estimated in the next step. Then, at image scale, the most significant bounded strip(s) are detected following Section 2.2. Finally, the cracks are approximated by the concatenation of the elementary strips (detected at local scale) that also belong to a bounded strip detected at image scale.

Results
We have applied the proposed algorithm to the public CrackTree dataset provided by [33], which illustrates our approach very well since noisy texture and other degradation artifacts are commonly present on the asphalt surface.
To evaluate quantitatively the obtained results, the precision and recall parameters are computed while distinguishing between the mis-detection and the mis-location of a crack as follows. The true positives and the false positives are computed by comparing the detection results with incrementally dilated ground-truth, while the false negatives are computed comparing the groundtruth with an incrementally dilated version of the detection results. In both cases, the dilation radius corresponds to spatial imprecision. Algorithm 2: Crack estimation; I is the image of the seeds, operator ∧ between two binary images is the binary AND operator applied at pixel level.   [33]. Table 1 presents the main statistical values on precision and recall indexes for the considered dataset and increasing dilation radius. For comparison, in [33], the mean precision-recall values were equal to (0.79, 0.92) (accepting an imprecision of 2 pixels) as stated in [33]. We note that precision is improved due to the fact that the analysis at two successive scales allows us to filter most of the false positives. Now, to provide a deeper and more specific analysis of the obtained results, we have selected some typical examples of results that are shown in the next figures. In these figures, the first column shows the original images; the second column shows in the blue channel the seed image obtained automatically following [3], whereas the results of the local (window based) strip detection appear in red with the window grid in green. The third column shows the final strips (belonging to a significant alignment at global scale) in red overlaid with ground truth in blue. In the last column we show the results of a simple post-processing step which connects the true pixels validated by the final strips using minimum cost paths and possibly remove the obtained path based on its average cost value. Note that this post-processing is not the object of our study but it was necessary to extract the final cracks (for instance for quantitative evaluation). Figure 2 illustrates how the proposed approach is able to cope with cracks of different width and depth (making the crack more or less dark) and with background texture.
Due to the camera tilt, the background textons are much more prominent in the lower part of the image(cf. 1 st line example for instance) creating numerous false alarms at pixel level (blue pixels in the images of the second column of Fig. 2). However, local analysis counters the non stationarity of such a noise (caused by textons) by selecting the most significant elementary strips within local windows (red segments in the images of the second column of Fig. 2). However, most of the elementary strips are false alarms at global scale. Then, global analysis allows for their filtering by checking their consistency elementary strips at image scale (red segments in the third column versus the second column in Fig. 2). Finally, having detected the rough shape of the cracks, the post-processing step allows for a finer estimation of the shape as well as removal of some isolated false alarms. Note also that the local analysis is important not only to improve the resilience to texture non stationarity, but also to crack width variations. For instance, the second row illustrates the ability to recover not only main cracks but also thinner ones: the window scale step allows for local significance maximization whereas a global measure would estimate that thin cracks are insignificant relatively to wider cracks.
On Figure 3, examples have been chosen to illustrate the limits of the proposed approach. Three main phenomena induce adverse conditions for cracks detection: the shortness of some crack subparts, the thinness of the crack, and an apparent partial occlusion of the crack. The first phenomenon is illustrated for instance on the two first rows of Figure 3, where some branches of a main crack are missed because they do not present a length sufficient to be considered as significant. The second phenomenon is illustrated on the two last rows of Figure 3, where the thinness of some crack subparts makes them almost invisible. However, in these examples (as in many others but not always), the post-processing allows for the reconnection of the actually detected crack subparts. The third phenomenon is illustrated on the third and the fifth rows of Figure 3, where in some places the crack has been partially filled by the background material inducing a kind of occlusion of the crack. Then, like in the case of the crack extreme thinness, some crack parts are missing at the end of the global scale analysis. Note also the fifth row case is particularly adverse since it combines both thinness and partial occlusion. Figure 4 presents results on images with a shadow introducing an adverse effect which increases from first to last rows. Indeed, in the 1 st and 2 nd line cases, the presence of the shadow only affects the global distribution of gray level values which, according to the shown results, does not actually impact the algorithm performance. The result shown on 3 rd row allows us to check the robustness to illumination non stationarity induced by the shadow, whereas the result shown on 4 th row stresses the limit of this robustness. Indeed, when in 3 rd row case, the local analysis is still able to detect the crack in the shadowed part (because local contrast remains even if attenuated), in 4 th row case, the darkness of the shadow removes some subparts of the crack that cannot be recovered based on alignment criterion because of the "alligator-skin" feature of the crack.
In summary,we evaluate our algorithm with respect to five adverse phenomena for crack detection: two phenomena that are independent of the cracks themselves, namely the background texture and the shadow presence, and three phenomena that characterize the cracks, namely the thinness, the length of secondary branch(es), and the partial filling (behaving like partial occlusion). The analysis of the results shows that, even in presence of these adverse phenomenons, the algorithm is able to detect almost every strip that composes the actual cracks, and follow their jagged behavior. The window level detection allows us to remove most false alarms introduced at pixel level (seeds), but introduces some window level false alarms (on average, one detection per window is not related to an actual crack) which are then removed by the image scale detection, unless they are found to belong to a significant strip at image level.

Conclusion
In this paper, a generic method for the NFA criterion computation for pattern detection is proposed. We consider that relying on an advantageous grouping of parameters in the engendered cumulative space is applicable to a wide variety of problems, and may facilitate the use of a-contrario based algorithms for various applications involving parametric pattern detection. Our technique was applied to a crack detection task, which naturally fits the problem as cracks can be seen as a deviation from the naive model in a heterogeneous background, allowing us to illustrate the pertinence and the benefit of reparametrization and multi-scale a-contrario analysis for complex patterns.
Future work will be devoted to accelerating the accumulation tasks since most cumulative space operations are inherently independent, and they can take advantage of parallel architectures. On such architectures (GPU, FPGA), the available memory resources are often more constrained than on generic systems. However, the reduced memory footprint resulting from our algorithm should be directly beneficial in such scenario.