Carlinet 201X Itip
Carlinet 201X Itip
Computation Algorithms
Edwin Carlinet, Thierry Géraud
Abstract—Connected operators are morphological tools that in astronomical imagery [12], and even multivariate data with
have the property of filtering images without creating new special ordering relation [13]. With the improvement of optical
contours and without moving the contours that are preserved. sensors, images are getting bigger (so do image data sets)
Those operators are related to the max-tree and min-tree repre- which argues for the need for fast algorithms. Many algorithms
sentations of images, and many algorithms have been proposed have been proposed to compute the max-tree efficiently but
to compute those trees. However, no exhaustive comparison of
only partial comparisons have been proposed. Moreover, some
these algorithms has been proposed so far, and the choice of
an algorithm over another depends on many parameters. Since of them are dedicated to a particular task (e.g., filtering) and
the need for fast algorithms is obvious for production code, we are unusable for other purposes.
present an in-depth comparison of the existing algorithms in a In a short paper [14], we have presented a first comparison
unique framework, as well as variations of some of them that of many state-of-the-art max-tree algorithms in a unique frame-
improve their efficiency. This comparison involves both sequential work, i.e., same architecture, same language (C++) and same
and parallel algorithms, and execution times are given w.r.t. the outputs. Yet this comparison was performed on a single image,
number of threads, the input image size, and the pixel value the pseudo-code of all the algorithms were not listed, and
quantization. Eventually, a decision tree is given to help the user the description of those algorithms and their comparison were
choose the most appropriate algorithm with respect to the user short. This paper aims at correcting those three drawbacks,
requirements. To favor reproducible research, an online demo
allows the user to upload an image and bench the different
so it presents a full and exhaustive comparative review of the
algorithms, and the source code of every algorithms has been state-of-art component tree computation algorithms.
made available. The paper is organized as follows. Section II recalls basic
notions and manipulations of max-tree. Section III describes
Keywords—Component tree, max-tree, min-tree, connected oper- the algorithms and implementations used in this study; in
ators, filtering, mathematical morphology, algorithms.
particular, a new technique that improves the efficiency of
EDICS Categories: ARS-RBS, TEC-PRC, SMR-STM union-find-based algorithms is presented in Section III-A4.
Section IV is dedicated to the comparison of those algorithms
both in terms of complexity and running times through exper-
I. I NTRODUCTION imentations. Last we conclude in Section V.
N mathematical morphology, connected filters are those
I that modify an original image by only merging flat zones,
hence those that preserve some of the original image contours.
II. A TOUR OF MAX - TREE : DEFINITION , REPRESENTATION
AND ALGORITHMS
Originally, they were mostly used for image filtering [1, 2].
Major advances came from max- and min-tree as hierarchical A. Basic notions for max-tree
representations of connected components and from an efficient Let f : Ω → V be an image on a regular domain Ω,
algorithm able to compute them [3]. Since then, usage of these having values on a totally preordered set (V, ≤) and let N
trees has soared for more advanced forms of filtering: based on be a neighborhood on Ω. Let λ ∈ V , we note [f ≤ λ]
attributes [4, 5], using new filtering strategies [3, 6], allowing the set { p ∈ Ω, f (p) ≤ λ }. Let X ⊂ Ω, we note
new types of connectivity [7]. They are also a base for other CC (X) ⊂ P(Ω) the set of connected components of X w.r.t.
image representations. In [8] a tree of shapes is computed from the neighborhood N ; P(Ω) being the power set of all the
a merge of the min- and max- trees. In [9] a component tree possible subsets of Ω. { CC ([f = λ]), λ ∈ V } are level
is computed over the attributes values of the max-tree. Max- components and Ψ = { CC ([f ≥ λ]), λ ∈ V } (resp. ≤) is
trees have been involved in many applications: computer vision the set of upper components (resp. lower components). The
through motion extraction [3], features extraction with MSER latter endowed with the inclusion relation form a tree called
[10], segmentation, 3D visualization [11]. With the increase the max-tree (resp. min-tree). Since min- and max-trees are
of applications comes an increase of data type to process: 12- dual, this study obviously holds for min-tree as well. Finally,
bit images in medical imagery [11], 16-bit or float images the peak component of p at level λ noted Ppλ is the upper
component X ∈ CC ([f ≥ λ]) such that p ∈ X.
* [email protected]
The authors are both with EPITA Research and Development Laboratory
(LRDE), 14-16 rue Voltaire, FR-94276 Le Kremlin-Bicêtre, France, and B. Max-tree representation
with Université Paris-Est, Laboratoire d’Informatique Gaspard-Monge, A3SI,
ESIEE Paris, 2 bd Blaise Pascal, B.P. 99, FR-93162 Noisy-le-Grand Cedex, Berger et al. [12], and Najman and Couprie [15] rely on a
France. simple and effective encoding of component-trees using an
2 IEEE TRANSACTIONS ON IMAGE PROCESSING
included in B (parent is actually the covering relation of else out(p) ← f (p) . (3)
function M AXTREE(f )
hand, the relation parent is unaffected by the union-by-rank, p for all p do parent(p) ← −1
becomes the new root whatever the rank of zp and zn . Whereas S ← sort pixels increasing
without balancing the root of any point p in zpar matches the j =N −1
root of p in parent, this is not the case anymore. For every for all p ∈ S backward do
connected components we have to keep a connection between parent(p) ← p; zpar(p) ← p . make-set
the root of the component in zpar and the root of max-tree zp = p
for all n ∈ Np s.t. parent(n) 6= −1 do
in parent. Thus, we introduce an new image repr that keeps zn ← FIND - ROOT(zpar, n)
this connection updated. if zp 6= zn then
if f (zp ) = f (zn ) then SWAP(zp , zn )
zpar(zn ) ← zp . merge-set
zpar repr parent zpar repr parent
A B C A B C A B C A B C A B C A B C
parent(zn ) ← zp
B B B A E C B E B B B B A E C B E B S[j] ← zn ; j ← j − 1
D E F D E F D E F D E F D E F D E F
B E E B E E
G H I G H I G H I G H I G H I G H I
S[0] ← parent[S[0]]
H H H G H I H H H H B H G H I H E H C ANONICALIZE(parent, S)
zpar repr[z p ] repr[zn ] parent zp p return (parent, S)
zp zn p r B E
B n H E H zpar(zn ) ← z p parent(r) ← p
p C A E H zn B H r Fig. 6. Union-find with level compression.
C A E G I B G I
G I C A G I
C A zpar parent
find-root technique tends to create a degenerated tree in flat zones. Level
compression avoids this behavior by a special handling of flat
(a) (b) zones. In Fig. 6, p is the point in process at level λ = f (p), n
Fig. 5. Union-by-rank. (a) State of the algorithm before processing the a neighbor of p already processed, zp the root of Ppλ (at first
neighbor H from E. (b) State of the algorithm after processing. zp = p), zn the root of Pnλ . We suppose f (zp ) = f (zn ), thus
zp and zn belong to the same node and we can choose any of
The union-by-rank technique and structure update are il- them as a canonical element. Normally p should become the
lustrated in Fig. 5. The algorithm has been running until root with child zn but level compression inverts the relation,
processing E at level 12, the first neighbor B has already zn is kept as the root and zp becomes a child. Since parent
been treated and neighbors D and F are skipped because not may be inverted, S array is not valid anymore. Hence S is
yet processed. Thus, the algorithm is going to process the last reconstructed, as soon as a point p gets attached to a root node,
neighbor H. zp is the root of p in zpar and we retrieve the root p will not be processed anymore so it is inserted in back of S.
zn of n with find-root procedure. Using repr mapping, At the end S only misses the tree root which is parent[S[0]].
we look up the corresponding point r of zn in parent. The
tree rooted in r is then merged to the tree rooted in p (parent
merge). Back in zpar, the components rooted in zp and zn B. Flooding algorithms
merge. Since they have the same rank, we choose arbitrary zp A second class of algorithms, based on flooding, contrasts
to be the new root. with the immersion-based algorithms described in the previous
The algorithm in Fig. 4 is slightly different from the section III-A. Salembier et al. [3] proposed the first efficient
one of [15]. They use two union-find structures, one to algorithm to compute the max-tree. A propagation starts from
build the tree, the other to handle flat zones. In their paper, the root that is the pixel at lowest level lmin . Pixels in the
lowernode[zp ] is an array that maps the root of a com- propagation front are stored in a hierarchical queue composed
ponent zp in zpar to a point of current level component in by as many FIFO queues as the number of levels. It allows to
parent (just like repr(zp ) in our algorithm). Thus, they apply access directly any pixel in the FIFO queue at a given level.
a second union-find to retrieve the canonical element. This Fig. 7 shows a slightly modified version of Salembier’s original
extra union-find can be avoided because lowernode[x] is algorithm where the original STATUS image is replaced by
already a canonical element, thus f indoot on lowernode(zp ) the parent image having the same role. The flood(λ, r)
is useless and so does parent balancing on flat zones. procedure is in charge of flooding the peak component Prλ
3) Canonicalization: Both algorithms call the C ANONICAL - and building the corresponding sub max-tree rooted in r. It
IZE procedure to ensure that any node’s parent is a canonical proceeds as follows: first pixels at level λ are retrieved from
node. In Fig. 3, canonical property is propagated downward. S the queue, their parent pointer is set to the canonical element r
is traversed in direct order such that when processing a pixel and their neighbors n are analyzed. If n is not in the queue and
p, its parent q has the canonical property that is parent(q) is has not yet been processed, then n is pushed in the queue for
a canonical element. Hence, if q and parent(q) belongs to the further processing and n is marked as processed (parent(n)
same node i.e f (q) = f (parent(q)), the parent of p is set to is set to INQUEUE which is any value different from -1). If
the component’s canonical element: parent(q). the level l of n is higher than λ then n is in the childhood
4) Level compression: Union-by-rank provides time com- of the current node, thus flooding is halted at the current level
plexity guaranties at the price of an extra memory requirement. and a recursive call to flood initiates the process for the
When dealing with huge images, it results in a significant peak component Pnl rooted in n. During the recursive flooding,
drawback (e.g. RAM overflow. . . ). Since the last point pro- some points can be pushed in the queue between level λ and l.
cessed always becomes the root, union-find without rank Hence, when flood ends, it returns the level l0 of n’s parent.
IEEE TRANSACTIONS ON IMAGE PROCESSING 5
If l0 > λ, we need to flood levels l0 until l0 ≤ λ i.e. until heap based on hierarchical queues while in [20] they are
there are no more points in the queue above λ. Once all pixels implemented using a standard heap (based on comparisons).
at level λ have been processed, we need to retrieve the level The algorithm given in Fig. 8 is a code transcription of the
lpar of the parent component and attach r to its canonical method described in [26]. The array levroot in the recursive
element. A levroot array stores canonical element of each version is replaced by a stack with the same purpose: storing
level component and -1 if the component is empty. Thus we the canonical element of level components. The hierarchical
just have to traverse levroot looking for lpar = max{h < queue hqueue is replaced by a priority queue pqueue that
λ, levroot[h] 6= −1} and set the parent of r to levroot[lpar]. stores the propagation front. The algorithm starts with some
Since the construction of parent is bottom-up, we can safely initialization and choose a random point pstart as the flooding
insert p in front of the S array each time parent(p) is set. For point. pstart is enqueued and pushed on levroot as a canonical
a level component, the canonical element is the last element element. During the flooding, the algorithm picks the point p
inserted ensuring a correct ordering of S. Note that the pass at highest level (with the highest priority) in the queue, and
which gets the minimum level of the image is not necessary. the canonical element r of its component which is the top
Instead, we could have called flood in Max-tree procedure of levroot (p is not removed from the queue). Like in the
until the parent level returned by the function was -1, i.e the recursive version, we look for neighbors n of p and enqueue
last flood call was processing the root. Anyway, this pass has those that have not yet been seen. If f (n) > f (p), n is pushed
other advantages for optimization that will be discussed in the on the stack and we immediately flood n (a goto that mimics
implementation details section. the recursive call). On the other hand, if all neighbors are in
Salembier et al. [3]’s algorithm was rewritten in a non- the queue or already processed then p is done, it is removed
recursive implementation in [27] and later by [26] and [20]. from the queue, parent(p) is set its the canonical element r
These algorithms differ in only two points. First, [20] uses and if r 6= p, p is added to S (we have to ensure that the
a pass to retrieve the root before flooding to mimics the canonical element will be inserted last). Once p removed from
original recursive version while [26] does not. Second, priority the queue, we have to check if the level component has been
queues in [26] use an unacknowledged implementation of fully processed in order to attach the canonical element r to its
6 IEEE TRANSACTIONS ON IMAGE PROCESSING
parent. If the next pixel q has a different level than p, we call Thread 1 Thread 2
the procedure ProcessStack that pops the stack, sets parent T1 ← M (f|D1 ) T3 ← M (f|D3 )
Thread 1
relationship between canonical elements and inserts them in S D1 T2 ← M (f|D2 ) T4 ← M (f|D4 )
until the top component has a level no greater than f (q). If the D2 Thread 2
T12 ← T1 ⊕ T2
Wait thread 2
T34 ← T3 ⊕ T4
Wait thread 3
stack top’s level matches q’s level, q extends the component TΩ ← T12 ⊕ T345 T345 ← T34 ⊕ T5
D3 D1 D2 D3
so that no more processing is needed. On the other hand, if D4 Thread 3
Thread 3
the stack gets empty or the top level is lesser than f (q), then D5 D4 D5 T5 ← M (f|D5 )
q is pushed on the stack as the canonical element of a new (a) (b) (c)
component. The algorithm ends when all points in queue have
been processed, then S only misses the root of the tree which Fig. 9. Map-reduce idiom for max-tree computation. (a) Sub-domains of f .
is the single element that remains on the stack. (b) A possible distribution of jobs by threads. (c) Map-reduce operations. M
is the map operator, ⊕ the merge operator.
procedure CONNECT(p,q)
C. Merge-based algorithms and parallelism x ← FINDREPR(parent, p)
Whereas the algorithms of the two first classes (Sec- y ← FINDREPR(parent, q)
if f (x) < f (y) then SWAP(x, y)
tions III-A and III-B) are sequential, this section is dedicated
while x 6= y do . common ancestor found ?
to parallel algorithms. Merge-based algorithms consist in com- parent(x) ← FINDREPR(parent, parent(x));
puting max-trees on sub-parts of images and merging back z ← parent(x)
trees to get the max-tree of the whole image [21, 17, 22]. if x = z then parent(x) ← y ; y ← x
Those algorithms are typically well-suited for parallelism since else if f (z) ≥ f (y) then x ← z
they adopt a map-reduce idiom. Computation of sub max- else parent(x) ← y ; x ← y ; y ← z
trees (map step), done by any sequential method and merge
function FINDREPR(par, p)
(reduce-step) are executed in parallel by several threads. In if f (p) 6= f (par(p)) then return p
order to improve cache coherence, images should be split in
par(p) ← FINDREPR(par, par(p))
contiguous memory blocks that is, splitting along the first return par(p)
dimension if images are row-major. Fig. 9 shows an example
of parallel processing using a map-reduce idiom. The domain procedure MERGETREE(Di , Dj )
has been split into five sub-domains {D1 , D2 , . . . , D5 }, we for all (p, q) ∈ Di × Dj such that q ∈ N (p) do
thus have 5 map operations which run a sequential algorithm CONNECT (p,q)
TABLE I. C OMPLEXITY AND SPACE REQUIREMENTS OF MANY MAX - TREE ALGORITHMS . n IS THE NUMBER OF PIXELS AND k THE NUMBER OF GRAY
LEVELS .
Time (ms)
6400
3200 400
1600
800 300
400
200
200
100
50
1 2 4 8 16 32 64 128 256 100
2 4 6 8 10 12 14 16
Number of pixels ( ×106 ) Number of threads
(a) (a)
3500 4.0
3000 3.5
2500 3.0
2000 2.5
Time (ms)
Speed Up
1500 2.0
Wilkinson [20]
Salembier et al. [3]
1000 1.5
Berger + level compression Matas et al. [22]
Berger et al. [12] Berger + rank
500 Najman and Couprie [15] 1.0 Berger + level compression
Berger + rank Salembier-based [17]
Nistér and Stewénius [26] Salembier unrecursive
0 0.5
8 10 12 14 16 18 20 22 24 26 28 30 32 2 4 6 8 10 12 14 16
Number of bits Number of threads
(b) (b)
Fig. 12. (a) Comparison of the algorithms on 8-bit images as a function
of the size; (b) Comparison of the algorithms on 8 Mega-pixels images as a 2500
Matas et al. [22]
(c)
quantized data. Fig. 12b shows that it is relevant up to 18 bits. Fig. 13. (a,b) Comparison of the parallel algorithms on a 6.8 Mega-pixels 8-
It operates on flat-zones but when quantization gets higher, flat- bits image as a function of number of threads. (a) Wall clock time; (b) speedup
zones are less probable and the tests add worthless overheads w.r.t the sequential version; (c) Comparison of the parallel algorithms using
(see Fig. 14). Union-find is not affected by the quantization 8 threads on a 6.8 Mega-pixels image as a function of the quantization.
but sorting does, counting sort and radix sort complexities are
respectively linear and logarithmic with the number of bits. of hierarchical queues w.r.t the number of bits is evident on
The break in union-find curves between 18 and 20 bits stands Fig. 12b. By using a standard heap instead of hierarchical
for the switch from counting to radix sort. Flooding-based queues, [20] does scale well with the number of bits and
algorithms using hierarchical queues outperform our union- outperforms every algorithms except our implementation of
find by rank on low quantized image by 41% on average. As union-by-rank. In [20], the algorithm is supposed to match
expected, [3] and [26] (which is the exact non-recursive version [3]’s method for low quantized images, but in our experiments
of the former) closely match. However, the exponential cost it remains 4 times slower. Since [15]’s algorithm is always
IEEE TRANSACTIONS ON IMAGE PROCESSING 9
Embedded system ? that outranks all the others in every case and we pro-
(memory limitation) yes Salembier et al. [3] or vided a decision tree to choose the appropriate algorithm
Nistér and Stewénius [26] w.r.t. to data and hardware. We proposed a max-tree al-
no Low (± parallelism)
quantization ? gorithm using union-by-rank that outperforms the existing
Berger + rank one from [15]. Furthermore, we proposed a second one that
no
uses a new technique, level compression, for systems with
yes Berger + level compression strict memory constraints. Extra-materials including the im-
yes (± parallelism) age dataset used for this comparison, and a “reproducible
Low
research” code, intensively tested, is available on the Internet
quantization ? Berger et al. [12] or at http://www.lrde.epita.fr/Olena/MaxtreeReview.
no Wilkison [20] Actually the union-find algorithm is a versatile tool used
in many algorithms. A recent publication [30] shows that the
Fig. 16. Decision tree to choose the appropriate max-tree algorithm. morphological tree of shapes, which is a self-dual represen-
tation of the image contents, can also be computed using
outperformed by our implementation of union-find by rank, union-find. In [31], a specific binary tree, corresponding to an
it will not be tested any further. Furthermore, because of the ordered version of the edges of the minimum spanning tree, is
strong similarities of [26] and [20], they are merged in our computed thanks to a Kruskal-like algorithm and involves the
single implementation (called Non-recursive Salembier below) union-find algorithm. Thus, the results presented in this paper
that will use hierarchical queues when quantization is below 18 also apply to obtain those trees in the most efficient way.
bits and switches to a standard heap implementation otherwise.
Finally, the algorithm Berger + level compression will enable
level compression only when the number of bits is below 18. R EFERENCES
Fig. 13 shows the results of the map-reduce idiom applied [1] L. Vincent, “Grayscale area openings and closings, their
on many algorithms and their parallel versions. As a first result, efficient implementation and applications,” in Proc. of
we can see that better performance is generally achieved with EURASIP Workshop on Mathematical Morphology and
8 threads that is when the number of threads matches the its Applications to Signal Processing, 1993, pp. 22–27.
number of (logical) cores. However, since there are actually [2] P. Salembier and J. Serra, “Flat zones filtering, connected
only 4 physical cores, we can expect a ×4 maximum speedup. operators, and filters by reconstruction,” IEEE Trans. on
Some algorithms benefit more from map-reduce than others. Image Processing, vol. 4, no. 8, pp. 1153–1160, 1995.
Union-find-based algorithms are particularly well-suited for [3] P. Salembier, A. Oliveras, and L. Garrido, “Antiextensive
parallelism. Union-find with level compression achieves the connected operators for image and sequence processing,”
best speedup, 3.6 times faster that the sequential version while IEEE Transactions on Image Processing, vol. 7, no. 4,
the union-find by rank, second, performs a ×3.1 speedup. pp. 555–570, 1998.
More surprising, the map-reduce pattern achieves significant [4] R. Jones, “Connected filtering and segmentation using
speedup even when a single thread is used (×1.7 and ×1.4 component trees,” Computer Vision and Image Under-
for union-find with level compression and union-find by rank standing, vol. 75, no. 3, pp. 215–228, 1999.
respectively). This result is explained by a better cache coher- [5] J. Hernández and B. Marcotegui, “Shape ultimate at-
ence when working on sub-domains that balances tree merges tribute opening,” Image and Vision Computing, vol. 29,
overheads. On the other hand, flooding algorithms do not scale no. 8, pp. 533–545, 2011.
that well because they are limited by post-processes. Indeed, [6] E.R. Urbach and M.H.F. Wilkinson, “Shape-only granu-
Fig. 15 shows that 76% of the time of parallelized Salembier’s lometries and grey-scale shape filters,” in Mathematical
algorithm is spent in post-preprocessing (that is going to Morphology and Its Applications to Signal and Image
happen as well for union-find algorithms on architectures with Processing (Proceedings of ISMM), 2002, pp. 305–314.
more cores). In [17] and [22], they obtain a speedup almost [7] G.K. Ouzounis and M.H.F. Wilkinson, “Mask-based
linear with the number of threads because only a parent second-generation connectivity and attribute filters,”
image is built. If we remove the canonicalization and the IEEE Transactions on Pattern Analysis and Machine
S construction steps, we also get those speedups. Fig. 13c Intelligence, vol. 29, no. 6, pp. 990–1004, 2007.
shows the exponential complexity of merging trees as number [8] P. Monasse and F. Guichard, “Fast computation of a
of bits increases that makes parallel algorithms unsuitable for contrast-invariant image representation,” IEEE Trans. on
high quantized data. In light of the previous analysis, Fig. 16 Image Processing, vol. 9, no. 5, pp. 860–872, 2000.
provides some guidelines on how to choose the appropriate [9] Y. Xu, T. Géraud, and L. Najman, “Morphological filter-
max-tree algorithm w.r.t. to image types and architectures. ing in shape spaces: Applications using tree-based image
representations,” in Proc. of International Conference on
Pattern Recognition, 2012, pp. 485–488.
V. C ONCLUSION
[10] J. Matas, O. Chum, M. Urban, and T. Pajdla, “Robust
In this paper, we tried to lead a fair comparison of max- wide-baseline stereo from maximally stable extremal
tree algorithms in a unique framework. We highlighted the regions,” Image and Vision Computing, vol. 22, no. 10,
fact that there is no such thing as the “best” algorithm pp. 761–767, 2004.
10 IEEE TRANSACTIONS ON IMAGE PROCESSING
Number of
threads
serial 82% 12%
1 62% 10% 19%
Berger +
union by rank 2 31% 6% 55%
4 16% 3% 73%
8 17% 3% 73%
serial
1 8% 68% 21%
Matas 2 5% 34% 58%
et al. [22] 4 2% 18% 76%
8 2%19% 76%
serial 88% 9%
1 72% 4% 20%
Berger + level
compression 2 36% 2% 57%
4 18% 1% 75%
8 19% 2% 75%
serial 95%
Union-find (Map-step)
1 64% 5% 26% Flooding (Map-step)
Salembier
non-recursive 2 33% 2% 60% Merging (Reduce-Step)
4 16% 1% 76%
Canonicalization
8 18%2% 76%
0 100 200 300 400 500 600 700 800
Wall clock time (ms)
[11] M.A. Westenberg, J.B.T.M. Roerdink, and M.H.F. actions on Pattern Analysis and Machine Intelligence,
Wilkinson, “Volumetric attribute filtering and interactive vol. 30, no. 10, pp. 1800–1813, 2008.
visualization using the max-tree representation,” IEEE [18] A.V. Aho, J.D. Ullman, and J.E. Hopcroft, Data Struc-
Transactions on Image Processing, vol. 16, no. 12, pp. tures and Algorithms. Addison Wesley, 1983.
2943–2952, 2007. [19] R.E. Tarjan, “Efficiency of a good but not linear set union
[12] C. Berger, T. Géraud, R. Levillain, N. Widynski, A. Bail- algorithm,” Journal of the ACM, vol. 22, no. 2, pp. 215–
lard, and E. Bertin, “Effective component tree computa- 225, 1975.
tion with application to pattern recognition in astronomi- [20] M.H.F. Wilkinson, “A fast component-tree algorithm for
cal imaging,” in Proc. of IEEE International Conference high dynamic-range images and second generation con-
on Image Processing, vol. 4, 2007, pp. IV–41. nectivity,” in Proc. of IEEE International Conference of
[13] B. Perret, S. Lefèvre, C. Collet, and É. Slezak, “Con- Image Processing, 2011, pp. 1021–1024.
nected component trees for multivariate image processing [21] G.K. Ouzounis and M.H.F. Wilkinson, “A parallel im-
and applications in astronomy,” in Proc. of Intl. Confer- plementation of the dual-input max-tree algorithm for
ence on Pattern Recognition, 2010, pp. 4089–4092. attribute filtering,” in Mathematical Morphology and Its
[14] E. Carlinet and T. Géraud, “A comparison of many max- Applications to Signal and Image Processing (Proceed-
tree computation algorithms,” in Mathematical Morphol- ings of ISMM), vol. 1. ”Instituto Nacional de Pesquisas
ogy and Its Applications to Signal and Image Processing Espaciais (INPE)”, 2007, pp. 449–460.
(Proceedings of ISMM), ser. Lecture Notes on Computer [22] P. Matas, E. Dokladalova, M. Akil, T. Grandpierre, L. Na-
Science, vol. 7883. Springer, 2013, pp. 73–85. jman, M. Poupa, and V. Georgiev, “Parallel algorithm for
[15] L. Najman and M. Couprie, “Building the component concurrent computation of connected component tree,” in
tree in quasi-linear time,” IEEE Transactions on Image Advanced Concepts for Intelligent Vision Systems, 2008,
Processing, vol. 15, no. 11, pp. 3531–3539, 2006. pp. 230–241.
[16] M.H.F. Wilkinson and M.A. Westenberg, “Shape preserv- [23] D. Menotti, L. Najman, and A. de Albuquerque Araújo,
ing filament enhancement filtering,” in Proc. of Medical “1D component tree in linear time and space and its
Image Computing and Computer-Assisted Intervention, application to gray-level image multithresholding,” in
2001, pp. 770–777. Mathematical Morphology and Its Apps. to Signal and
[17] M.H.F. Wilkinson, H. Gao, W.H. Hesselink, J.E. Jonker, Image Processing (Proc. of ISMM), 2007, pp. 437–448.
and A. Meijster, “Concurrent computation of attribute [24] V. Morard, P. Dokládal, and E. Decenciere, “One-
filters on shared memory parallel machines,” IEEE Trans- dimensional openings, granulometries and component
IEEE TRANSACTIONS ON IMAGE PROCESSING 11