Implementation of a parallel algorithm of image segmentation based on region growing
Keywords:computer vision, image processing, segmentation techniques, Region growing, parallel processing, parallel algorithms, GPU, SIMD, texture analysis, Digital Image Processing
AbstractIn computer vision and image processing, image segmentation remains a relevant research area that contains many partially answered research questions. One of the fields of most significant interest in Digital Image Processing corresponds to segmentation, a process that breaks down an image into its different components that make it up. A technique widely used in the literature is called Region Growing, this technique makes the identification of textures, through the use of characteristic and particular vectors. However, the level of its computational complexity is high. The traditional methods of Region growing are based on the comparison of grey levels of neighbouring pixels, and usually, fail when the region to be segmented contains intensities similar to adjacent regions. However, if a broad tolerance is indicated in its thresholds, the detected limits will exceed the region to identify; on the contrary, if the threshold tolerance decreases too much, the identified region will be less than the desired one. In the analysis of textures, multiple scenes can be seen as the composition of different textures. The visual texture refers to the impression of roughness or smoothness that some surfaces created by the variations of tones or repetition of visual patterns therein. The texture analysis techniques are based on the assignment of one or several parameters indicating the characteristics of the texture present to each region of the image. This paper shows how a parallel algorithm was implemented to solve open problems in the area of image segmentation research. Region growing is an advanced approach to image segmentation in which neighbouring pixels are examined one by one and added to an appropriate region class if no border is detected. This process is iterative for each pixel within the boundary of the region. If adjacent regions are found, a region fusion algorithm is used in which weak edges dissolve, and firm edges remain intact, this requires a lot of processing time on a computer to make parallel implementation possible
Keely, C. C., Hale, J. M., Heard, G. W., Parris, K. M., Sumner, J., Hamer, A. J., Melville, J. (2015). Genetic structure and diversity of the endangered growling grass frog in a rapidly urbanizing region. Royal Society Open Science, 2 (8), 140255. doi: https://doi.org/10.1098/rsos.140255
Ashburner, J., Friston, K. J. (2005). Unified segmentation. NeuroImage, 26 (3), 839–851. doi: https://doi.org/10.1016/j.neuroimage.2005.02.018
Bandler, R., Tork, I. (1987). Midbrain periaqueductal grey region in the cat has afferent and efferent connections with solitary tract nuclei. Neuroscience Letters, 74 (1), 1–6. doi: https://doi.org/10.1016/0304-3940(87)90041-3
Patel, N. H., Liu, P. Z. (2009). Segmentation. Encyclopedia of Insects, 909–912. doi: https://doi.org/10.1016/b978-0-12-374144-8.00240-x
Taylor, J. R. A., deVries, M. S., Elias, D. O. (2019). Growling from the gut: co-option of the gastric mill for acoustic communication in ghost crabs. Proceedings of the Royal Society B: Biological Sciences, 286 (1910), 20191161. doi: https://doi.org/10.1098/rspb.2019.1161
Chen, D. (2008). Image Segmentation. User Centered Design for Medical Visualization, 258–279. doi: https://doi.org/10.4018/978-1-59904-777-5.ch013
Hsiao, Y.-T., Chuang, C.-L., Jiang, J.-A., Chien, C.-C. (2005). Robust Multiple Targets Tracking Using Object Segmentation and Trajectory Estimation in Video. 2005 IEEE International Conference on Systems, Man and Cybernetics. doi: https://doi.org/10.1109/icsmc.2005.1571289
Tynan, A. C., Drayton, J. (1987). Market segmentation. Journal of Marketing Management, 2 (3), 301–335. doi: https://doi.org/10.1080/0267257x.1987.9964020
Felzenszwalb, P. F., Huttenlocher, D. P. (2004). Efficient Graph-Based Image Segmentation. International Journal of Computer Vision, 59 (2), 167–181. doi: https://doi.org/10.1023/b:visi.0000022288.19776.77
Hu, R., Dollar, P., He, K., Darrell, T., Girshick, R. (2018). Learning to Segment Every Thing. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. doi: https://doi.org/10.1109/cvpr.2018.00445
Owens, J. D., Houston, M., Luebke, D., Green, S., Stone, J. E., Phillips, J. C. (2008). GPU Computing. Proceedings of the IEEE, 96 (5), 879–899. doi: https://doi.org/10.1109/jproc.2008.917757
Stuart, J. A., Owens, J. D. (2011). Multi-GPU MapReduce on GPU Clusters. 2011 IEEE International Parallel & Distributed Processing Symposium. doi: https://doi.org/10.1109/ipdps.2011.102
Nickolls, J., Dally, W. J. (2010). The GPU Computing Era. IEEE Micro, 30 (2), 56–69. doi: https://doi.org/10.1109/mm.2010.41
Bergstra, J., Breuleux, O., Bastien, F. F., Lamblin, P., Pascanu, R., Desjardins, G. et. al. (2010). Theano: a CPU and GPU math compiler in Python. Proceedings of the Python for Scientific Computing Conference (SciPy).
Sanders, J., Kandrot, E. (2010). CUDA by Example: An Introduction to General-Purpose GPU Programming. NVIDIA Corporation, 311.
Pratx, G., Xing, L. (2011). GPU computing in medical physics: A review. Medical Physics, 38 (5), 2685–2697. doi: https://doi.org/10.1118/1.3578605
Sengupta, S., Harris, M., Zhang, Y., Owens, J. D. (2007). Scan primitives for GPU computing. Proceedings of the SIGGRAPH/Eurographics Workshop on Graphics Hardware, 97–106.
Che, S., Boyer, M., Meng, J., Tarjan, D., Sheaffer, J. W., Skadron, K. (2008). A performance study of general-purpose applications on graphics processors using CUDA. Journal of Parallel and Distributed Computing, 68 (10), 1370–1380. doi: https://doi.org/10.1016/j.jpdc.2008.05.014
Power, J., Hestness, J., Orr, M. S., Hill, M. D., Wood, D. A. (2015). gem5-gpu: A Heterogeneous CPU-GPU Simulator. IEEE Computer Architecture Letters, 14 (1), 34–36. doi: https://doi.org/10.1109/lca.2014.2299539
Feng, W., Xiao, S. (2010). To GPU synchronize or not GPU synchronize? Proceedings of 2010 IEEE International Symposium on Circuits and Systems. doi: https://doi.org/10.1109/iscas.2010.5537722
Lee, V. W., Hammarlund, P., Singhal, R., Dubey, P., Kim, C., Chhugani, J. et. al. (2010). Debunking the 100X GPU vs. CPU myth. Proceedings of the 37th Annual International Symposium on Computer Architecture - ISCA ’10. doi: https://doi.org/10.1145/1815961.1816021
Zhou, Y., Tan, Y. (2009). GPU-based parallel particle swarm optimization. 2009 IEEE Congress on Evolutionary Computation. doi: https://doi.org/10.1109/cec.2009.4983119
Shah, S., Bull, M. (2006). OpenMP---OpenMP. Proceedings of the 2006 ACM/IEEE Conference on Supercomputing - SC ’06. doi: https://doi.org/10.1145/1188455.1188469
Hermanns, M. (2002). Parallel programming in Fortran 95 using OpenMP. School of Aeronautical Engineering.
Chapman, B., Jost, G., Van Der Pas, R. (2008). Using OpenMP. Cluster Computing.
How to Cite
Copyright (c) 2020 Jesús Antonio Álvarez-Cedillo, Mario Aguilar-Fernández, Teodoro Álvarez-Sánchez, Raúl Junior Sandoval-Gómez
This work is licensed under a Creative Commons Attribution 4.0 International License.
The consolidation and conditions for the transfer of copyright (identification of authorship) is carried out in the License Agreement. In particular, the authors reserve the right to the authorship of their manuscript and transfer the first publication of this work to the journal under the terms of the Creative Commons CC BY license. At the same time, they have the right to conclude on their own additional agreements concerning the non-exclusive distribution of the work in the form in which it was published by this journal, but provided that the link to the first publication of the article in this journal is preserved.