论文部分内容阅读
二值图像连通域标记是指将二值图像中通过给定规则相互连接的像素附上同样的标记,而相互不连接的像素附上不同标记的处理过程。二值图像连通域标记在机器人视觉,人脸识别等相关领域有着重要的应用。二值图像连通域快速标记算法是在CPU(Central Processing Unit)上进行一次光栅扫描标记后采用集合合并方式处理等价类的一种算法,该算法在以CPU为处理核心的算法中是效率最高和最具鲁棒性的算法。但是与其他现有标记算法相比该算法的效率和性能提升幅度比较有限。本文以并行处理为出发点,设计和实现了一种并行的二值图像连通域标记算法来提高二值图像连通域标记问题的处理效率。GPU(Graphic Processing Unit)是显卡的“心脏”,由于现代计算机对图像处理要求越来越高,特别是计算机系统对于2D和3D图像的实时处理主要依赖于GPU的图像处理能力。当前可编程GPU具有卓越的计算功率和非常高的存储器带宽,可以被认为是一种高度并行化、多线程和多核的处理器。CUDA(Compute Unified Device Architecture)是NVIDIA公司提出的一种新的实现GPU通用计算的软硬件架构。通过CUDA架构编程人员可方便的使用类似C语言的代码启动大量的GPU线程实现并行工作。本文所设计的算法以CUDA架构为基础,并以CUDA C为编程语言,实现二值图像连通域标记问题的并行处理。通过二值图像连通域标记问题的可并行化分析,设计出了一种完全基于GPU内核多线程并行运行的二值图像连通域标记算法。该算法的输入为PBM(Portable Bitmap Image)格式二值图像文件,经过I/O(Input/Output)初始化后将二值图像文件格式化为由4个特定位置像素为一最小连接体,以最小连接体为元素的矩阵描述原始图像。通过对图像描述矩阵进行初次标记,一次和反推标记和循环等价标记三个完全并行步骤后实现了对二值图像连通域标记问题的处理。该算法最终输出为对应的标记值矩阵和连通域数目。在算法设计基础上编程实现了二值图像连通域并行标记算法,并以CUDA代码的优化措施为参考对应用程序进行了优化。对应用程序进行了实验验证和效率分析,得出了算法的加速比和鲁棒性数据。最终实验结果显示本研究所设计的算法相对于二值图像连通域快速标记算法具有明显的效率优势。该算法能够在任何具有支持CUDA的GPU的计算设备上运行,具有较高的经济性和可实现性。算法的设计达到了研究的预期目标。