=Paper= {{Paper |id=Vol-1710/paper2 |storemode=property |title=Linear Variation and Optimized Algorithm of Connected-Component Labeling in Binary Image |pdfUrl=https://ceur-ws.org/Vol-1710/paper2.pdf |volume=Vol-1710 |authors=Fedor Alekseev,Mikhail Alekseev,Artyom Makovetskii,Elena Bruches,Dmitrii Karpenko,Varvara Krayvanova,Marina Danshina,Andrey Philippovich,Irina Golubeva,Alexei Ignatov,Alina Kadyrova,Konstantin Fursov,Nikolay Karpov,Eduard Babkin,Alexander Demidovskij,Yury Kashnitsky,Edward Klyshinsky,Petr Ermakov,Natalia Lukashevich,Olesya Karpik,Anton Korsakov,Ivan Fomin,Dmitry Gromoshinsky,Aleksandr Bakhshiev,Dmitrii Stepanov,Ekaterina Smirnova,Taisiya Kostareva,Svetlana Chuprina,Alexandr Nam,Artem Kruglov,Yurii Chiryshev,Kirill Kuptsov,Sergey Eremeev,Dmitry Andrianov,Valeri Labunets,Denis Komarov,Ekaterina Ostheimer,Valeri Labunets,Ivan Artemov,Ekaterina Ostheimer,Benjamin Lind,B. Remy Cross,Georgy Mkrtchyan,Oxana S. Logunova,Ivan A. Posokhov,Anatoliy Y. Mikov,Elena A. Ilyina,Natalya V. Dyorina,Anatoliy B. Belyavskiy,Aleksey S. Makarov,Marina V. Bolsunovskaya,Ilya Makarov,Pavel Polyakov,Anton Malenichev,Olga Krasotkina,Vadim Mottl,Oleg Seredin,Alexey Mikhaylichenko,Yana Demyanenko,and Elena Grushko,Alexander Mikov,Elena Zamyatina,Daria Germanova,George Moiseev,Andrey Mukhtarov,Sergey Porshnev,Vasiliy Zuzin,Anastasia Bobkova,Vladimir Bobkov,Anastasiia Nesterenko,Thu Huong Nguyen,Aleksei Zhukov,The Long Nguyen,Sergey Nikolenko,Andrey Philippovich,Maxim Boynov,Marina Danshina,Alexey Ruchay,Mikhail Semenov,Elena Koroleva,Dilmurat Tursunov,Lev Bulygin,Andrei Shcherbakov,Alexander Sirotkin,Ilya Musabirov,Paul Okopny,Denis Bulygin,Vladimir Ivanov,Dmitry M. Stepanov,Vyacheslav V. Mizgulin,Vsevolod V. Kosulnikov,Radi M. Kadushnikov,Evgeny D. Fedorov,Olga A. Buntseva,Vladimir Surin,Alexander Tyrsin,Dmitrii Tihonkih,Artyom Makovetskii,Vladislav Kuznetsov,Nataly Zhukova,Alexander Vodyaho,Maksim Lapaev,Alexey Zraenko,Olga M. Zvereva |dblpUrl=https://dblp.org/rec/conf/aist/AlekseevAM16 }} ==Linear Variation and Optimized Algorithm of Connected-Component Labeling in Binary Image== https://ceur-ws.org/Vol-1710/paper2.pdf
Linear Variation and Optimization of Algorithms
 for Connected Components Labeling in Binary
                    Images

         Fedor Alekseev1 , Mikhail Alekseev23 , and Artyom Makovetskii24
1
    Moscow Institute of Physics and Technology State University, Dolgoprudny, Russia
                               alekseev@phystech.edu
                 2
                   Chelyabinsk State University, Chelyabinsk, Russia
                                   3
                                      alexeev@csu.ru
                                 4
                                     artemmac@mail.ru



        Abstract. Linear variation is a topological characteristic of a function of
        two variables. The problem of linear variation computing can be reduced
        to the problem of counting connected components in a binary image
        with eight-connected connectivity. The proposed method is essentially a
        modification of some known raster algorithms for connected components
        labeling that groups pixels into 2 × 2 cells. A performance benchmark of
        the proposed method applied to some approaches on random images is
        provided.

        Keywords: Binary raster image, connected component labeling, pat-
        tern recognition


1     Introduction

Continuous functions of two variables have a set of topological characteristics
referred to as linear variations. Kronrod[1] introduced the notion of regular com-
ponent of the level set of continuous function of two variables. The simplest
topological characteristic in linear variation theory is the number of regular
components for all level sets of a function. Works [2,3,4] address the necessity of
linear variation in image restoration theory.
    The problem of computing linear variation in discrete case is equivalent to
the problem of counting the number of connected components (CC) in a binary
image with 8-connectivity. This is usually done through CC labeling, and many
approaches for that are known[5]. We came to the labeling problem while search-
ing an efficient algorithm algorithm for linear variation computation. Of course,
the labeling problem also is well known in the digital image processing theory.
    This paper presents an efficient way to convert the initial binary image with
8-connectivity into a condensed (non-binary) image with new connectivity that is
2 times smaller in each dimension than the initial image. Most approaches for CC
labeling are still valid for the new image. As time and memory consumptions
of conventional approaches usually depend linearly on the number of pixels,
running them on the condensed image can be more efficient than running on the
initial image.
    It is worth noting that our method exploits an important property of 8-
connectivity that does not hold for 4-connectivity, so it is not applicable in the
latter case.

2     2 × 2 condensation
We will use the fact that in case of 8-connectivity all 4 pixels of any 2 × 2 square
are adjacent to each other, and so are contained in same CC and should have
same labels upon completion of the labeling algorithm. So instead of labeling
single pixels we can label 2 × 2 groups of pixels, or “cells”.
    Consider a 2𝑁 × 2𝑀 binary image5 specified by binary predicate 𝑏(𝑥, 𝑦),
returning 1 in case the pixel at the given coordinates is an object pixel, and 0
otherwise (background pixel). For convenience we use 0-indexation throughout
the paper, so the topmost row is associated with row index 𝑦 = 0, and the
leftmost column is associated with column index 𝑥 = 0.
    The condensed image will be of size 𝑁 × 𝑀 . Each pixel of the condensed
image will unambiguously represent the configuration of the corresponding 2 × 2
cell of pixels of the initial binary image. So the condensed image will contain
pixels of 24 = 16 colors. We suggest the function 𝑐(𝑥, 𝑦) denoting the color of a
pixel of condensed image to be the following:
                   𝑐(𝑥, 𝑦) = 20 𝑏(2𝑥, 2𝑦) + 21 𝑏(2𝑥 + 1, 2𝑦)
                           + 22 𝑏(2𝑥, 2𝑦 + 1) + 23 𝑏(2𝑥 + 1, 2𝑦 + 1)
    So the value of each pixel of the initial image is stored in the corresponding
bit in color of the corresponding pixel of the condensed image. Note that if
𝑐(𝑥, 𝑦) = 0 for some (𝑥, 𝑦), then there are no object pixels in this cell, and no
label should be assigned to this whole cell. The enumeration of pixels inside one
cell is shown on Figure 1.


                                          0   1
                                          2   3

                             Fig. 1: Cell pixels enumeration


   We need also to define a connectivity function for the condensed image. We
cannot actually just use 8-connectivity, as whether two cells are adjacent cells of
one CC depends not only on their coordinates, but also on their configuration.
See Figure 2 for examples.
5
     For convenience in this paper we consider only input images with even size in both
    dimensions. If this is not the case, one can easily append a row or a column of
    background pixels to the image.
 (a) Nearby cells that are      (b) Directly    connected    (c) Cells that are not
 not directly connected.        cells.                       nearby in terms of 8-
                                                             connectivity, cannot be
                                                             directly connected.

                           Fig. 2: Cells connectivity examples
                                             .


    However, for every possible case of relative placement of two nearby cells
there is a mask of pixels of each cells that are important for direct connectivity
of this pair of cells. So two cells are considered directly connected, if they are
nearby in terms of 8-connectivity and each of them contains at least one object
pixel in the mask of important pixels corresponding to relative placement of the
cells. The masks are shown in Figure 3.




              3                  2   3                 2
                  0              0   1             1                   1   0
                                                                       3   2

Fig. 3: Masks of important pixels for all four cases of relative placement of two nearby
cells. Those pixels are filled in gray, with their numbers within cell specified.




    if (b(x, y)) {                                if (c(x, y)) {
      if (b(x, y-1)) {                              if ((c(x, y-1) & ((1<<2) | (1<<3)))
        // copy labels, or union label sets           && (c(x, y)   & ((1<<0) | (1<<1)))) {
      }                                                // copy labels, or union label sets
      // consider other directions                  }
    }                                               // consider other directions
                                                  }

  (a) Binary image with 8-connectivity.
                                               (b) Condensed image with new connec-
                                               tivity.

                       Fig. 4: Checking the nearby top pixel/cell.



    The idea is that if we naturally encode mask pixels as 4-bit numbers in the
way similar to how we defined 𝑐, we can express the predicate denoting whether
two nearby cells are directly connected efficiently with just two bitwise and one
logical AND operations. As an example, Figure 4 compares possible codes in C
checking if the labels of the current pixel or cell and the one right on top of
it should be same for classic 8-connectivity and for the new connectivity. Note
that as bitwise operations are usually relatively cheap, we added only a little
complication compared to the decrease of the number of pixels to process by the
factor of 4.


3     Benchmarks

In this section we present performance benchmarks of some popular methods for
counting CC both with and without the 2 × 2 cells optimization.


3.1   Algorithms overview

As each of these methods, omitting DTSUF could be used with both condensed
and non-condensed images, for convenience we denote height and width of the
image on input of each algorithm as 𝐻 and 𝑊 .
    Also to avoid repeating “pixel or cell” we will just use the word “pixel” mean-
ing the appropriate raster for non-condensed and condensed images. When men-
tioning neighbors of some pixel, we mean pixels that are directly connected to
it in terms of appropriate connectivity.


DFS The first algorithm we chose for the benchmark is Depth First Search
graph traversal. Graph traversal algorithms are the general approach for CC
labeling in graphs, and DFS is arguably the most simple. Although not intended
for image labeling and suboptimal in most cases, it still has linear in the number
of pixels worst-case complexity in both time and memory.
    Like most approaches, the algorithm has an outer loop over all pixels of
the image. Each time an object pixel (non-empty cell, in case it is actually a
cell) which is not labeled yet is encountered, DFS traversal is launched from
that pixel. The traversal labels all the object pixels of the same CC, launching
recursively from all unlabeled neighbors of current pixel.


SUF Another general approach for graph CC labeling which is more popular in
image labeling is using some kind of a data structure to maintain disjoint sets
of pixels that are considered to be in the same CC.
    The structure is commonly called Union-Find, as the two essential operations
it is supposed to support are Union, which is used to merge some two of the
disjoint sets in one, and Find, which is used to find the representative element of
the set some element belongs to, so that we can always tell if two elements are
in the same set. The structure can be implemented so that the amortized time
complexity for each operation is 𝑂(𝛼(𝐻𝑊 )), where 𝛼 is the inverse Ackermann
function, and 𝛼(𝐻𝑊 ) < 5 for all remotely practical image sizes[6].
    The approach that is named SUF (Scan with Union-Find) in this paper
follows.
    Pixels are processed in the natural order: from top to bottom and from left
to right, so each row is fully processed before all rows after it. So for each object
pixel we encounter there are at most 4 nearby pixels that were already processed,
see Figure 5.
    At first each object pixel is considered to belong to its own CC, so right
before considering the neighbors we increment the CC counter. Moreover, it is
associated with its own disjoint set in the Union-Find structure. More specifi-
cally, object pixel at position 𝑥, 𝑦 is associated with the set number 𝑥𝑊 + 𝑦 to
guarantee absence of collisions.
    The possible neighbors are processed in the order shown on Figure 5, and
for each neighbor that is object pixel, the Union operation is performed on
the two sets containing the current and the neighbor pixel. In case the Union
operation was successful, which means that the pixels had belonged previously
to different sets and we have just found a way to merge two CC, the CC counter
is decremented.


                                      1   2   3
                                      4

                  Fig. 5: Neighbor mask for SUF algorithm family.



   Note that this algorithm outputs not the matrix of final labels, but only the
number of CC. This is the place in which it differs from some common two-pass
approaches for CC labeling, as it is an algorithm not for labeling, but just for
counting CC. The latter is exactly what is needed for the aforementioned linear
variation problem.
   Also we have to mention that for performance reasons the Union-Find inter-
nal structures are allocated ahead to have the size of at least 𝐻𝑊 to guaran-
tee that each object can be easily associated with unique starting set given
only its coordinates. So memory consumption of SUF is linear in the num-
ber of pixels (𝑂(𝐻𝑊 )), while its amortized time complexity is “almost” linear
(𝑂(𝐻𝑊 𝛼(𝐻𝑊 ))).


SUF2 This approach is a modification of SUF designed to reduce memory
consumption and potential number of cache-misses generated by Union-Find
operations.
    The idea is to run through each row twice: first time to establish label equiv-
alence classes within row, and the second time to set unique equal label for all
pixels of same CC. This gives us the opportunity to maintain just 𝑂(𝑊 ) differ-
ent labels at each moment, and so the Union-Find structure can be allocated for
only 𝑂(𝑊 ) elements, as opposed to 𝑊 𝐻 elements needed for SUF.
    The exact maximum number of label equivalence classes between two adja-
cent rows depends on whether the given image is condensed. For non-condensed
images 𝑊 = 2𝑀 , and maximum number of label equivalence classes in two ad-
jacent rows is 𝑀 = 𝑊  2 , as if two object pixels are both in adjacent rows and in
adjacent columns, then they are neighbors in terms of 8-connectivity.
    On the other hand, for condensed images 𝑊 = 𝑀 , and maximum number of
label equivalence class in two adjacent rows of cells is 2𝑊 = 2𝑀 . See Figure 6
for illustration on the extremal cases.




(a) Non-condensed image, up to 5 differ-
ent labels on 10 columns.                  (b) Condensed image, up to 10 different
                                           labels on 5 columns.

                         Fig. 6: Extremal cases for SUF2.



    Our benchmarks show that, although SUF2 without condensation is generally
more efficient on noise images than SUF without condensation, the mentioned
consideration make the 2×2 optimization of SUF2 less dramatic in means of per-
formance increase factor. Optimized SUF2 significantly outperforms optimized
SUF only on huge noise images with less than 60% density, while falling behind
on small and medium-sized noise images.
    Note that, while SUF2 is intended for CC counting, its memory consumption
is only 𝑂(𝑊 ), which is significant for embedded systems and other resource-tight
applications. The time complexity is same as that of SUF, i. e. 𝑂(𝐻𝑊 𝛼(𝐻𝑊 )).


DTSUF This modification of SUF was implemented to compare the optimiza-
tion we present with another optimization suggested by Wu, Otoo and Suzuki[7],
namely decision tree. Unfortunately DTSUF (Decision Tree Scan plus Union-
Find) is not applicable for condensed image, as it exploits similar observations
on 8-connectivity. So this approach is the direct competitor to our optimizations
of SUF.
    As before, the goal is to reduce the number of pixel lookup and label copy
operations. This is achieved with careful consideration of only the necessary
neighbors, stopping once the set of one or two label operations that are needed is
determined. The decision tree for processing an object pixel is shown on Figure 7.


3.2   Condensation types

For memory-tight applications such as embedded systems it can be useful to
utilise the suggested condensation in a lazy way, so that without actually con-
structing the condensed image we use a function (“view”) calculating color of
                                                                              0           b       1
                                                                                                      union(e,b)
                                                              c
                                                         0
                                                                          1
                                                   a
         a b c                                 0         1
         d e                                             union(e,a)
                                                                                      a
                                          d                                       0
                                    0          1                                              1
(a) Neighbor     enumera-
tion.                                                                     d
                              new label       union(e,d)              0           1
                                                                                                  union(e,c,a)
                                                             union(e,c)       union(e,c,d)

                                                       (b) The decision tree.

                      Fig. 7: DTSUF decision tree optimization.



each cell with 4 lookups to the original binary image. This is probably most in-
teresting when combined with SUF2 algorithm, as it is a way to win some time
while avoiding memory footprint increase. However this lazy approach increases
the number of image lookups.
    So the benchmark charts show three levels of optimization applied to DFS,
SUF and SUF2: just method name in legend refers to method applied to non-
condensed image, “ on 2x2 view” means lazy memory-less condensation and “ on
2x2 copy” means that a temporary condensed image was constructed in memory.
For the latter case, the construction time was included into the overall measured
time of run.


3.3   Measurement

For measurement purposes all algorithms and optimizations were implemented
by us in C++ .
    The program was compiled using g++ 5.3.0-3 compiler with -O3 optimiza-
tion flag. All tests were run on same machine running under Arch Linux with
standard linux 4.4.1-2 kernel, utilising non-overclocked Intel(R) Core(TM)
i5-2430M CPU @ 2.40GHz (L3 cache size 3072K) processor and non-overclocked
1333MHz 8GiB Kingston RAM.
    The test images were random images, generated in the following manner. At
first, for given density 𝑑, the first 4𝑑𝑁 𝑀 pixels of the 2𝑁 × 2𝑀 image were filled
with object values, while rest filled with background values. Then all the pixels
were permuted using std::shuffle function from C++ standard library, which
is an implementation of Fisher-Yates Shuffle algorithm.
    All methods were run on same tests, which was achieved by supplying same
seed to the std::mt19937 Mersenne Twister[8] random number engine imple-
mentation from C++ standard library before passing the engine to std::shuffle.
    Benchmarks showed that for random images, the run time depends non-
trivially on the value of density 𝑑, which is the ratio of object pixels in the image.
On the one hand, this is because all of the considered algorithms pass background
pixels without any processing, and somehow process the object pixels, so the
exact number of operations such as Union and Find should generally grow with
𝑑. On the other hand, the greater the value of 𝑑, the less number of CC is likely
to be present in the image, which reduces the number of relatively expensive
Union operations.
    So benchmarks were run for all 𝑑 ∈ { 2%, 5%, 10%, 15%, . . . , 90%, 95%, 98% }
to achieve a picture of how the speedup depends on the number of object pixels
in the image.
    It is worth noting again that for “2x2 copy” optimization, the apparent time
overhead of constructing the extra condensed image was included into the total
run time, since we measured the total run time of the “black box” CC count-
ing subroutine, supplied with only the original image, so that all the needed
preparations are done inside the subroutine.


3.4          Results

The overall benchmark plot of average run time for all algorithms and optimiza-
tions is presented on Figure 8. The actual measured points are known for sure
only for the mentioned values of d, the points are connected to help distinguish
groups of points corresponding to same algorithms.


                     120
                             DFS
                             DFS on 2x2 view
                             DFS on 2x2 copy
                     100     SUF
                             SUF on 2x2 view
                             SUF on 2x2 copy
                             DTSUF
                      80     SUF2
                             SUF2 on 2x2 view
      cpu time, ms




                             SUF2 on 2x2 copy
                      60


                      40


                      20


                       0
                                   20           40                60       80
                                                     density, %

                     Fig. 8: Average CPU time per run on random images 1200 × 1800 px.
    To show more closely how efficient the optimizations actually appear to be,
we plotted speedup/density charts for the considered methods (Figure 9). Here
the speedup of algorithm A relative to algorithm B is defined as 𝑇𝑇𝐵 𝐴
                                                                       , where 𝑇𝐴
and 𝑇𝐵 are the total times used by the corresponding algorithms to count CC in
all the test images of same density. The greater the speedup of optimized method
relative to original method, the more efficient the optimization is considered.


              3.0                                                       4.0
                    A = DFS                                                   A = SUF
                    A = DFS on 2x2 view                                 3.5   A = SUF on 2x2 view
              2.5   A = DFS on 2x2 copy                                       A = SUF on 2x2 copy
                                                                        3.0   A = DTSUF
              2.0
  TDFS /TA




                                                                        2.5




                                                             TSUF /TA
                                                                        2.0
              1.5

                                                                        1.5
              1.0
                                                                        1.0


              0.5                                                       0.5
                     20        40          60     80                           20       40          60     80
                               density, %                                               density, %

              (a) Speedup of DFS optimizations                      (b) Speedup of SUF optimizations
              3.0                                                   3.0
                    A = SUF2                                                                    A = SUF
                    A = SUF2 on 2x2 view                            2.5                         A = SUF on 2x2 view
              2.5   A = SUF2 on 2x2 copy                                                        A = SUF on 2x2 copy
                                                                                                A = DTSUF
                                                                    2.0
                                                           TDTSUF /TA




              2.0
  TSUF2 /TA




                                                                    1.5

              1.5
                                                                    1.0

              1.0
                                                                    0.5


              0.5                                                   0.0
                     20       40           60     80                          20        40          60     80
                              density, %                                                density, %

        (c) Speedup of SUF2 optimizations                    (d) Speedup of SUF optimizations, rel-
                                                             ative to DTSUF

                                            Fig. 9: Speedup/density charts



    The speedup plots on Figures 9a to 9c suggest that the “2x2 copy” optimiza-
tion speeds up the considered methods by factor greater than 1 for all tested
densities. On the other hand, the “2x2 view” optimization is showed to be not
time-efficient at all for some densities, slowing down DFS and SUF2 if run on
images with densities less than 35% and 25% respectively. Utilizing the latter
optimization also does not speed up SUF on images on density approaching 20%,
although it does not slow down the algorithms either.
    The worst-case and best-case speedups are shown on the Table 1. Here we
see that while “2x2 view” optimization is more memory-efficient than “2x2 copy”,
it can slow down the original method in some situations, and generally it does
not give as much performance advantage.
    We should also mention the chart on Figure 9d, featuring speedup of our
SUF optimizations relative to DTSUF in order to compare our optimizations
to the optimization by Wu, Otoo and Suzuki. The plot clearly shows that for
all the densities under 80% our “SUF on 2x2 copy” algorithm outperforms the
decision-tree based approach by the factor of at least 1.5, with speedup reaching
2.5 for 2% density.


                                     worst speedup              best speedup
    Algorithm         worst speedup     density    best speedup    density
    DFS on 2x2 view         0.7            10           1.4          65
    DFS on 2x2 copy         1.2            10           2.9          98
    SUF on 2x2 view         1.0            15           1.9          95
    SUF on 2x2 copy         1.7            20           3.5          98
    DTSUF                   0.8             2           2.9          98
    SUF2 on 2x2 view        0.8            10           1.6          75
    SUF2 on 2x2 copy        1.1            10           3.0          98
Table 1: The worst and the best speedups relative to original methods. The shown
speedup of DTSUF is relative to SUF.




4    Conclusion
We present an efficient way to convert the initial binary image with 8-connectivity
into a smaller condensed image with new connectivity. Most approaches for con-
nected components labeling are still valid for the new image. As time and memory
complexities of conventional approaches usually depend linearly on the number
of pixels, running them on the condensed image can be more efficient than run-
ning on the initial image. The provided benchmark on random images showed
worst-case speedup factor of 1.7 for one of our optimizations of the common
SUF approach to CC labeling. The same algorithm is shown to outperform the
previously known decision tree optimization of SUF by at least 1.5 factor for
images with less than 80% density.


5    Acknowledgements
The work was supported by the Ministry of Education and Science of Russian
Federation (grant 2/1766/2014K).


References
1. Kronrod, A.: On functions of two variables. Uspehi Mat. Nauk 5, 1(35), 24-134(1950)
2. Makovetskii, A., Kober, V.: Image restoration based on topological properties of
   functions of two variables. Proc. SPIE Applications of Digital Image Processing
   XXXV, 8499, 84990A (2012)
3. Makovetskii, A., Kober, V.: Modified gradient descent method for image restoration.
   Proc. SPIE Applications of Digital Image Processing XXXVI, 8856, 885608-1 (2013)
4. Chochia, P., Milukova, O.: Comparison of Two-Dimensional Variations in the Con-
   text of the Digital Image Complexity Assessment. Journal of Communications Tech-
   nology and Electronics, 2015, 60, no. 12, pp. 1432-1440
5. He, L., Chao, Y., Suzuki, K., Wu, K.: Fast connected-component labeling. Pattern
   Recognition. v42, Pages 1977-1987. (2009)
6. Cormen, H., Leiserson, E., Rivest, L., Stein, C.: Introduction to Algorithms (Second
   ed.). MIT Press (2001)
7. Wu, K, Otoo, E., Suzuki, K.: Optimizing two-pass connected-component labeling
   algorithms. Pattern Anal. Appl. (2008)
8. Matsumoto, M., Nishimura, T.: Mersenne twister: a 623-dimensionally equidis-
   tributed uniform pseudo-random number generator. ACM Transactions on Modeling
   and Computer Simulation 8 (1): 3–30. (1998)