Please include the following references when citing the YACCLAB project/dataset:
Allegretti, Stefano; Bolelli, Federico; Grana, Costantino "Optimized Block-Based Algorithms to Label Connected Components on GPUs." IEEE Transactions on Parallel and Distributed Systems, 2019. BibTex. PDF.
Bolelli, Federico; Cancilla, Michele; Baraldi, Lorenzo; Grana, Costantino "Towards Reliable Experiments on the Performance of Connected Components Labeling Algorithms" Journal of Real-Time Image Processing, 2018. BibTex. PDF.
Grana, Costantino; Bolelli, Federico; Baraldi, Lorenzo; Vezzani, Roberto "YACCLAB - Yet Another Connected Components Labeling Benchmark" Proceedings of the 23rd International Conference on Pattern Recognition, Cancun, Mexico, 4-8 Dec 2016. BibTex. PDF.
YACCLAB is an open source C++ project that enables researchers to test CCL algorithms under extremely variable points of view, running and testing algorithms on a collection of datasets described below. The benchmark performs the following tests which will be described later in this readme: correctness, average run-time (average), average run-time with steps (average_ws), density, size, granularity and memory accesses (memory). Notice that 8-connectivity is always used in the project.
This project follows the Reproducible Research paradigms and received the Reproducible Label in Pattern Recognition (RLPR).
## RequirementsTo correctly install and run YACCLAB following packages, libraries and utilities are needed: - CMake 3.18 or higher (https://cmake.org); - OpenCV 3.0 or higher (http://opencv.org), required packages are `core`, `imgcodecs`, `imgproc`; - Gnuplot (http://www.gnuplot.info/); - One of your favourite IDE/compiler with C++14 support. GPU algorithms also require: - CUDA Toolkit 9.2 or higher (https://developer.nvidia.com/cuda-toolkit) and OpenCV `cudafeatures2d` package (as of OpenCV 4.5.3, package dependencies entail that required packages for CUDA algorithms are `core`, `cudafeatures2d`, `cudaarithm`, `cudafilters`, `cudaimgproc`, `cudawarping`, `cudev`, `features2d`, `imgcodecs`, `imgproc`). Notes for gnuplot: - on Windows system: be sure add gnuplot to system path if you want YACCLAB automatically generates charts. - on MacOS system: 'pdf terminal' seems to be not available due to old version of cairo, 'postscript' is used instead.
## Installation (refer to the image below) -Clone the GitHub repository (HTTPS clone URL: https://github.com/prittt/YACCLAB.git) or simply download the full master branch zip file and extract it (e.g YACCLAB folder).
Install software in YACCLAB/bin subfolder (suggested) or wherever you want using CMake (point 2 of the example image). Note that CMake should automatically find the OpenCV path whether correctly installed on your OS (3), download the YACCLAB Dataset (be sure to check the box if you want to download it (4a) and (4b) or to select the correct path if the dataset is already on your file system (7)), and create a C++ project for the selected IDE/compiler (9-10). Moreover, if you want to test 3D or GPU algorithms tick the corresponding boxes (5) and (6).
Set the configuration file (config.yaml) placed in the installation folder (bin in this example) in order to select desired tests.
Open the project, compile and run it: the work is done!
Name | Meaning | Default |
---|---|---|
YACCLAB_DOWNLOAD_DATASET |
whether to automatically download the 2D YACCLAB dataset or not | OFF |
YACCLAB_DOWNLOAD_DATASET_3D |
whether to automatically download the 3D YACCLAB dataset or not | OFF |
YACCLAB_ENABLE_3D |
enable/disable the support for 3D algorithms | OFF |
YACCLAB_ENABLE_CUDA |
enable/disable CUDA support | OFF |
YACCLAB_ENABLE_EPDT_19C |
enable/disable the EPDT_19C 3D algorithm which is based on a heuristic decision tree generated from a 3D mask with 19 conditions (may noticeably increase compilation time), it has no effect when YACCLAB_ENABLE_3D is OFF |
OFF |
YACCLAB_ENABLE_EPDT_22C |
enable/disable the EPDT_22C 3D algorithm which is based on a heuristic decision tree generated from a 3D mask with 22 conditions (may noticeably increase compilation time), it has no effect when YACCLAB_ENABLE_3D is OFF |
OFF |
YACCLAB_ENABLE_EPDT_26C |
enable/disable the EPDT_26C 3D algorithm which is based on a heuristic decision tree generated from a 3D mask with 26 conditions (may noticeably increase compilation time), it has no effect when YACCLAB_ENABLE_3D is OFF |
OFF |
YACCLAB_FORCE_CONFIG_GENERATION |
whether to force the generation of the default configuration file (config.yaml ) or not. When this flag is turned OFF any existing configuration file will not be overwritten |
OFF |
YACCLAB_INPUT_DATASET_PATH |
path to the input dataset folder, where to find test datasets |
${CMAKE_INSTALL_PREFIX}/input |
YACCLAB_OUTPUT_RESULTS_PATH |
path to the output folder, where to save output results |
${CMAKE_INSTALL_PREFIX}/output |
OpenCV_DIR |
OpenCV installation path | - |
If your project requires a Connected Components Labeling algorithm and you are not interested in the whole YACCLAB benchmark you can use the connectedComponent function of the OpenCV library which implements the BBDT and SAUF algorithms since version 3.2., Spaghetti Labeling algorithm and BKE (for GPU only) since version 4.6.
Anyway, when the connectedComponents function is called, a lot of additional code will be executed together with the core function. If your project requires the best performance you can include an algorithm implemented in YACCLAB adding the following files to your project:
Algorithm Name | Authors | Year | Acronym | Required Files | Templated on Labels Solver |
---|---|---|---|---|---|
- | L. Di Stefano, A. Bulgarelli [3] |
1999 | DiStefano | labeling_distefano_1999.h | ❌ |
Contour Tracing | F. Chang,C.J. Chen,C.J. Lu [1] | 1999 | CT | labeling_fchang_2003.h | ❌ |
Run-Based Two-Scan | L. He,Y. Chao,K. Suzuki [30] | 2008 | RBTS | labeling_he_2008.h | ✔ |
Scan Array-based with Union Find | K. Wu,E. Otoo,K. Suzuki [6] | 2009 | SAUF | labeling_wu_2009.h, labeling_wu_2009_tree.inc | ✔ |
Stripe-Based Labeling Algorithm | H.L. Zhao,Y.B. Fan,T.X. Zhang,H.S. Sang [8] | 2010 | SBLA | labeling_zhao_2010.h | ❌ |
Block-Based with Decision Tree | C. Grana,D. Borghesani,R. Cucchiara [4] | 2010 | BBDT | labeling_grana_2010.h, labeling_grana_2010_tree.inc | ✔ |
Configuration Transition Based | L. He,X. Zhao,Y. Chao,K. Suzuki [7] | 2014 | CTB | labeling_he_2014.h, labeling_he_2014_graph.inc | ✔ |
Block-Based with Binary Decision Trees | W.Y. Chang,C.C. Chiu,J.H. Yang [2] | 2015 | CCIT | labeling_wychang_2015.h, labeling_wychang_2015_tree.inc, labeling_wychang_2015_tree_0.inc | ✔ |
Light Speed Labeling | L. Cabaret,L. Lacassagne,D. Etiemble [5] | 2016 | LSL_STDILSL_STDZIILSL_RLEIII | labeling_lacassagne_2016.h, labeling_lacassagne_2016_code.inc | ✔IV |
Pixel Prediction | C.Grana,L. Baraldi,F. Bolelli [9] | 2016 | PRED | labeling_grana_2016.h, labeling_grana_2016_forest.inc, labeling_grana_2016_forest_0.inc | ✔ |
Directed Rooted Acyclic Graph | F. Bolelli,L. Baraldi,M. Cancilla,C. Grana [23] | 2018 | DRAG | labeling_bolelli_2018.h, labeling_grana_2018_drag.inc | ✔ |
Spaghetti Labeling | F. Bolelli,S. Allegretti,L. Baraldi,C. Grana [26] | 2019 | Spaghetti | labeling_bolelli_2019.h, labeling_bolelli_2019_forest.inc, labeling_bolelli_2019_forest_firstline.inc, labeling_bolelli_2019_forest_lastline.inc, labeling_bolelli_2019_forest_singleline.inc | ✔ |
PRED++ | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | PREDpp | labeling_PREDpp_2021.h, labeling_PREDpp_2021_center_line_forest_code.inc.h, labeling_PREDpp_2021_first_line_forest_code.inc.h | ✔ |
Tagliatelle Labeling | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | Tagliatelle | labeling_tagliatelle_2021.h, labeling_tagliatelle_2021_center_line_forest_code.inc.h, labeling_tagliatelle_2021_first_line_forest_code.inc.h, labeling_tagliatelle_2021_last_line_forest_code.inc.h, labeling_tagliatelle_2021_single_line_forest_code.inc.h | ✔ |
Bit-Run Two Scan | W. Lee,F. Bolelli,S. Allegretti,C. Grana [32] | 2021 | BRTSVII | labeling_lee_2021_brts.h | ✔ |
Bit-Merge-Run Scan | W. Lee,F. Bolelli,S. Allegretti,C. Grana [32] | 2021 | BMRSVII | labeling_lee_2021_bmrs.h | ✔ |
Null Labeling | F. Bolelli,M. Cancilla,L. Baraldi,C. Grana [13] | - | NULLV | labeling_null.h | ❌ |
SAUF 3D | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | SAUF_3D | labeling3D_SAUF_2021.h, labeling3D_SAUF_2021_tree_code.inc.h | ✔ |
SAUF++ 3D | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | SAUFpp_3D | labeling3D_SAUFpp_2021.h, labeling3D_SAUFpp_2021_tree_code.inc.h | ✔ |
PRED 3D | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | PRED_3D | labeling3D_PRED_2021.h, labeling3D_PRED_2021_center_line_forest_code.inc.h, labeling3D_PRED_2021_first_line_forest_code.inc.h, labeling3D_PRED_2021_last_line_forest_code.inc.h, labeling3D_PRED_2021_single_line_forest_code.inc.h | ✔ |
PRED++ 3D | F. Bolelli,S. Allegretti,C. Grana [33] | 2021 | PREDpp_3D | labeling3D_PREDpp_2021.h, labeling3D_PREDpp_2021_center_line_forest_code.inc.h, labeling3D_PREDpp_2021_first_line_forest_code.inc.h, labeling3D_PREDpp_2021_last_line_forest_code.inc.h, labeling3D_PREDpp_2021_single_line_forest_code.inc.h | ✔ |
Entropy Partitioning Decision Tree RLPR | M. Söchting,S. Allegretti,F. Bolelli,C. Grana [31] | 2021 | EPDT_19c and EPDT_22cVI | labeling3D_BBDT_2019.h, labeling_bolelli_2019_forest.inc, labeling_bolelli_2019_forest_firstline.inc, labeling_bolelli_2019_forest_lastline.inc, labeling_bolelli_2019_forest_singleline.inc | ✔ |
I standard version.
II with zero-offset optimization.
III with RLE compression.
IV only on TTA and UF.
V it only copies the pixels from the input image to the output one simply defining a lower bound limit for the execution time of CCL algorithms on a given machine and dataset.
VI EPDT_19c and EPDT_22c algorithms are based on very big decision trees that translate to many lines of C++ code. They may thus noticeably increase the build time. For this reason, a special flag (YACCLAB_ENABLE_EPDT_ALGOS
) to enable/disable such algorithms is provided in the CMake file. By default the flag is OFF.
VII CCL algorithm for images in bitonal (1 bit per pixel) format. When applied to these algorithms, the average tests also consider the time for 1 byte to 1 bit per pixel conversion. On the other hand, when performing average with steps tests conversion time is ignored.
Algorithm Name | Authors | Year | Acronym | Required Files | 2D/3D |
---|---|---|---|---|---|
Union Find | V. Oliveira,R. Lotufo [18] | 2010 | UF | labeling_oliveira_2010.cu | 2D and 3D |
OptimizedLabel Equivalence | O. Kalentev,A. Rai,S. Kemnitz,R. Schneider [19] | 2011 | OLE | labeling_kalentev_2011.cu | 2D |
Block-run-based | P. Chen,H.L. Zhao,C. Tao,H.S. Sang [25] | 2011 | BRB | labeling_chen_2011.cu | 2D |
Stava | O. Stava,B. Benes [38] | 2011 | STAVA | labeling_stava_2011.cu | 2D |
Rasmusson | A. Rasmusson,T.S. Sørensen,G. Ziegler [37] | 2013 | RASMUSSON | labeling_rasmusson_2013.cu | 2D |
Accelerated CCL | F. N. Paravecino,D. Kaeli [34] | 2014 | ACCL | labeling_paravecino_2014.cu | 2D |
8-Directional Label Selection | Y. Soh,H. Ashraf,Y. Hae,I. Kim [36] | 2014 | DLS | labeling_soh_2014_8DLS.cu | 2D |
Modified 8-Directional Label Selection | Y. Soh,H. Ashraf,Y. Hae,I. Kim [36] | 2014 | M8DLS | labeling_soh_2014_M8DLS.cu | 2D |
Line-based Union-Find | K. Yonehara,K. Aizawa [39] | 2015 | LBUF | labeling_yonehara_2015.cu | 2D |
Block Equivalence | S. Zavalishin,I. Safonov,Y. Bekhtin,I. Kurilin [20] | 2016 | BE | labeling_zavalishin_2016.cu | 2D and 3D |
DistancelessLabel Propagation | L. Cabaret,L. Lacassagne,D. Etiemble [21] | 2017 | DLP | labeling_cabaret_2017.cu | 2D |
Komura Equivalence (8-conn) | S. Allegretti,F. Bolelli,M. Cancilla,C. Grana [22] | 2018 | KE | labeling_allegretti_2018.cu | 2D |
Hardware Accelerated4-connected | A. Hennequin,L. Lacassagne,L. Cabaret,Q. Meunier [35] | 2018 | HA4 | labeling_hennequin_2018_HA4.cu | 2D |
Hardware Accelerated8-connected | A. Hennequin,L. Lacassagne,L. Cabaret,Q. Meunier [35] | 2018 | HA8 | labeling_hennequin_2018_HA8.cu | 2D |
CUDA SAUF | S. Allegretti,F. Bolelli,M. Cancilla,C. Grana [29] | 2019 | C-SAUF | labeling_allegretti_2019_SAUF.cu,labeling_wu_2009_tree.inc | 2D |
CUDA BBDT | S. Allegretti,F. Bolelli,M. Cancilla,C. Grana [29] | 2019 | C-BBDT | labeling_allegretti_2019_BBDT.cu, labeling_grana_2010_tree.inc | 2D |
CUDA DRAG | S. Allegretti,F. Bolelli,M. Cancilla,C. Grana [29] | 2019 | C-DRAG | labeling_allegretti_2019_DRAG.cu | 2D |
Block-based Union Find | S. Allegretti,F. Bolelli,C. Grana [24] | 2019 | BUF | labeling_allegretti_2019_BUF.cu | 2D and 3D |
Block-based Komura Equivalence | S. Allegretti,F. Bolelli,C. Grana [24] | 2019 | BKE | labeling_allegretti_2019_BKE.cu | 2D and 3D |
#include "labels_solver.h"
#include "labeling_algorithms.h"
#include "labeling_grana_2010.h" // To include the algorithm code (BBDT in this example)
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
BBDT<UFPC> BBDT_UFPC; // To create an object of the desired algorithm (BBDT in this example)
// templated on the labels solving strategy. See the README for the
// complete list of the available labels solvers, available algorithms
// (N.B. non all the algorithms are templated on the solver) and their
// acronyms.
BBDT_UFPC.img_ = imread("test_image.png", IMREAD_GRAYSCALE); // To load into the CCL object
// the BINARY image to be labeled
threshold(BBDT_UFPC.img_, BBDT_UFPC.img_, 100, 1, THRESH_BINARY); // Just to be sure that the
// loaded image is binary
BBDT_UFPC.PerformLabeling(); // To perform Connected Components Labeling!
Mat1i output = BBDT_UFPC.img_labels_; // To get the output labeled image
unsigned n_labels = BBDT_UFPC.n_labels_; // To get the number of labels found in the input img
return EXIT_SUCCESS;
}
A YAML configuration file placed in the installation folder lets you specify which kinds of tests should be performed, on which datasets and on which algorithms. Four categories of algorithms are supported: 2D CPU, 2D GPU, 3D CPU and 3D GPU. For each of them, the configuration parameters are reported below.
execute - boolean value which specifies whether the current category of algorithms will be tested:
execute: true
perform - dictionary which specifies the kind of tests to perform:
perform:
correctness: false
average: true
average_with_steps: false
density: false
granularity: false
memory: false
blocksize: false
correctness_tests - dictionary indicating the kind of correctness tests to perform:
correctness_tests:
eight_connectivity_standard: true
eight_connectivity_steps: true
eight_connectivity_memory: true
eight_connectivity_blocksize: true
tests_number - dictionary which sets the number of runs for each test available:
tests_number:
average: 10
average_with_steps: 10
density: 10
granularity: 10
algorithms - list of algorithms on which apply the chosen tests:
algorithms:
- SAUF_RemSP
- SAUF_TTA
- BBDT_RemSP
- BBDT_UFPC
- CT
- labeling_NULL
check_datasets, average_datasets, average_ws_datasets, memory_datasets and blocksize_datasets- lists of datasets on which, respectively, correctness, average, average_ws, memory and blocksize tests should be run:
Federico Bolelli 💻 📆 🚧 🚇 🤔 |
Stefano Allegretti 💻 🚧 🐛 🤔 🚇 |
Costantino Grana 💻 📆 🤔 🚇 |
Michele Cancilla 💻 📦 🚧 |
Lorenzo Baraldi 💻 📦 |
Maximilian Söchting 💻 |
patrickhwood 🐛 |
WalnutVision 🐛 |
This project follows the all-contributors specification. Contributions of any kind welcome.
[1] |
F. Chang, C.-J. Chen, and C.-J. Lu, “A linear-time component-labeling algorithm using contour tracing technique,” Computer Vision and Image Understanding, vol. 93, no. 2, pp. 206–220, 2004. |
[2] |
W.-Y. Chang, C.-C. Chiu, and J.-H. Yang, “Block-based connected-component labeling algorithm using binary decision trees,” Sensors, vol. 15, no. 9, pp. 23 763–23 787, 2015. |
[3] |
L. Di Stefano and A. Bulgarelli, “A Simple and Efficient Connected Components Labeling Algorithm,” in International Conference on Image Analysis and Processing. IEEE, 1999, pp. 322–327. |
[4] |
C. Grana, D. Borghesani, and R. Cucchiara, “Optimized Block-based Connected Components Labeling with Decision Trees,” IEEE Transac-tions on Image Processing, vol. 19, no. 6, pp. 1596–1609, 2010. |
[5] |
L. Lacassagne and B. Zavidovique, “Light speed labeling: efficient connected component labeling on risc architectures,” Journal of Real-Time Image Processing, vol. 6, no. 2, pp. 117–135, 2011. |
[6] |
K. Wu, E. Otoo, and K. Suzuki, "Optimizing two-pass connected-component labeling algorithms,” Pattern Analysis and Applications," vol. 12, no. 2, pp. 117–135, 2009. |
[7] |
L. He, X. Zhao, Y. Chao, and K. Suzuki, "Configuration-Transition-Based Connected-Component Labeling", IEEE Transactions on Image Processing, vol. 23, no. 2, pp. 943–951, 2014. |
[8] |
H. Zhao, Y. Fan, T. Zhang, and H. Sang, "Stripe-based connected components labelling," Electronics letters, vol. 46, no. 21, pp. 1434–1436, 2010. |
[9] |
C. Grana, L. Baraldi, and F. Bolelli, "Optimized Connected Components Labeling with Pixel Prediction," in Advanced Concepts for Intelligent Vision Systems, 2016, pp. 431-440. |
[10] |
M. J. Huiskes and M. S. Lew, “The MIR Flickr Retrieval Evaluation,” in MIR ’08: Proceedings of the 2008 ACM International Conference on Multimedia Information Retrieval. New York, NY, USA: ACM, 2008. |
[11] |
G. Agam, S. Argamon, O. Frieder, D. Grossman, and D. Lewis, “The Complex Document Image Processing (CDIP) Test Collection Project,” Illinois Institute of Technology, 2006. |
[12] |
D. Lewis, G. Agam, S. Argamon, O. Frieder, D. Grossman, and J. Heard, “Building a test collection for complex document information processing,” in Proceedings of the 29th annual international ACM SIGIR conference on Research and development in information retrieval. ACM, 2006, pp. 665–666. |
[13] |
F. Bolelli, M. Cancilla, L. Baraldi, C. Grana, "Towards Reliable Experiments on the Performance of Connected Components Labeling Algorithms," Journal of Real-Time Image Processing, 2018. |
[14] |
D. Baltieri, R. Vezzani, and R. Cucchiara, “3DPeS: 3D People Dataset for Surveillance and Forensics,” in Proceedings of the 2011 joint ACM workshop on Human gesture and behavior understanding. ACM, 2011, pp. 59–64. |
[15] |
F. Dong, H. Irshad, E.-Y. Oh, M. F. Lerwill, E. F. Brachtel, N. C. Jones, N. W. Knoblauch, L. Montaser-Kouhsari, N. B. Johnson, L. K. Rao et al., “Computational Pathology to Discriminate Benign from Malignant Intraductal Proliferations of the Breast,” PloS one, vol. 9, no. 12, p. e114885, 2014. |
[16] |
D. Maltoni, D. Maio, A. Jain, and S. Prabhakar, "Handbook of fingerprint recognition", Springer Science & Business Media, 2009. |
[17] |
C.Grana, F.Bolelli, L.Baraldi, and R.Vezzani, "YACCLAB - Yet Another Connected Components Labeling Benchmark," Proceedings of the 23rd International Conference on Pattern Recognition, Cancun, Mexico, 4-8 Dec 2016, 2016. |
[18] |
V. Oliveira and R. Lotufo, "A study on connected components labeling algorithms using GPUs," in SIBGRAPI. vol. 3, p. 4, 2010. |
[19] |
O. Kalentev, A. Rai, S. Kemnitz, R. Schneider," Connected component labeling on a 2D grid using CUDA," in Journal of Parallel and Distributed Computing 71(4), 615–620, 2011. |
[20] |
S. Zavalishin, I. Safonov, Y. Bekhtin, I. Kurilin, "Block Equivalence Algorithm for Labeling 2D and 3D Images on GPU," in Electronic Imaging 2016(2), 1–7, 2016. |
[21] |
L. Cabaret, L. Lacassagne, D. Etiemble, "Distanceless Label Propagation: an Efficient Direct Connected Component Labeling Algorithm for GPUs," in Seventh International Conference on Image Processing Theory, Tools and Applications, IPTA, 2017. |
[22] |
S. Allegretti, F. Bolelli, M. Cancilla, C. Grana, "Optimizing GPU-Based Connected Components Labeling Algorithms," in Third IEEE International Conference on Image Processing, Applications and Systems, IPAS, 2018. |
[23] |
F. Bolelli, L. Baraldi, M. Cancilla, C. Grana, "Connected Components Labeling on DRAGs," in International Conference on Pattern Recognition, 2018, pp. 121-126. |
[24] |
S. Allegretti, F. Bolelli, C. Grana, "Optimized Block-Based Algorithms to Label Connected Components on GPUs," in IEEE Transactions on Parallel and Distributed Systems, 2019. |
[25] |
P. Chen, H. Zhao, C. Tao, H. Sang, "Block-run-based connected component labelling algorithm for gpgpu using shared memory." Electronics Letters, 2011 |
[26] |
F. Bolelli, S. Allegretti, L. Baraldi, and C. Grana, "Spaghetti Labeling: Directed Acyclic Graphs for Block-Based Bonnected Components Labeling," IEEE Transactions on Image Processing, vol. 29, no. 1, pp. 1999-2012, 2019. |
[27] |
D. S. Marcus, A. F. Fotenos, J. G. Csernansky, J. C. Morris, R. L. Buckner, “Open Access Series of Imaging Studies (OASIS): Longitudinal MRI Data in Nondemented and Demented OlderAdults,” J. Cognitive Neurosci., vol. 22, no. 12, pp. 2677–2684, 2010. |
[28] |
A. Lucchi, Y. Li, and P. Fua, “Learning for Structured Prediction Using Approximate Subgradient Descent with Working Sets,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2013, pp. 1987–1994. |
[29] |
S. Allegretti, F, Bolelli, M. Cancilla, F. Pollastri, L. Canalini, C. Grana, "How does Connected Components Labeling with Decision Trees perform on GPUs?," In 18th International Conference on Computer Analysis of Images and Patterns, 2019. |
[30] |
L. He, Y. Chao, K. Suzuki. "A run-based two-scan labeling algorithm." IEEE Transactions on Image Processing, 2008. |
[31] |
M. Söchting, S. Allegretti, F. Bolelli, C. Grana. "A Heuristic-Based Decision Tree for Connected Components Labeling of 3D Volumes." 25th International Conference on Pattern Recognition, 2021 |
[32] |
W. Lee, F. Bolelli, S. Allegretti, C. Grana. "Fast Run-Based Connected Components Labeling for Bitonal Images." 5th International Conference on Imaging, Vision & Pattern Recognition, 2021 |
[33] |
F. Bolelli, S. Allegretti, C. Grana. "One DAG to Rule Them All." IEEE Transactions on Pattern Analisys and Machine Intelligence, 2021 |
[34] |
F. N. Paravecino, D. Kaeli, "Accelerated Connected Component Labeling Using CUDA Framework." International Conference on Computer Vision and Graphics, ICCVG, 2014 |
[35] |
A. Hennequin, L. Lacassagne, L. Cabaret, Q. Meunier, "A new Direct Connected Component Labeling and Analysis Algorithms for GPUs", DASIP, 2018 |
[36] |
Y. So, H. Ashraf, Y. Hae, I. Kim, "Fast Parallel Connected Component Labeling Algorithm Using CUDA Based On 8-Directional Label Selection", International Journal of Latest Research in Science and Technology, 2014 |
[37] |
A. Rasmusson, T.S. Sørensen, G. Ziegler, "Connected Components Labeling on the GPU with Generalization to Voronoi Diagrams and Signed Distance Fields", International Symposium on Visual Computing, 2013 |
[38] |
O. Stava, B. Benes, "Connected Components Labeling in CUDA", GPU Computing Gems, 2011 |
[39] |
K. Yonehara, K. Aizawa, "A Line-Based Connected Component Labeling Algorithm Using GPUs", Third International Symposium on Computing and Networking, 2015 |