- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CUDA图像分割并行算法设计与实现
基于CUDA图像分割并行算法设计与实现 摘要:图像分割技术是计算机视觉领域中对图像进行分析和模式识别的基础,无论在理论研究还是实际应用中都得到了人们的广泛重视。本文在对现有图像分割算法进行分析的基础上,针对串行图像分割算法代次数多、运算效率低的问题,提出了一种适用于CUDA架构的新型图像分割并行算法,该算法与OpenCV实现的cvBlob算法相比,该算法具有更高效率。 关键词:图像分割 区域生长 CUDA GPU并行计算 中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2013)03-0141-04 1 概述 随着数字图像处理技术的飞速发展,图像处理的应用范围不断扩展,其中图像分割是由图像处理到图像分析的关键步骤。图像分割是为了更好理解图像的内容,按照实际应用要求和图像内容,将图像分割成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程[1]。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法等[1][2]。 (1)基于区域的分割。基于区域的分割算法是指侧重于根据区域内的特征相似性来进行分割的方法,其基本思想是根据图像的特征将图像划分为不同区域。常见的基于区域的图像分割的算法大致可以划分为三大类,即,阈值法、区域生长法以及区域分裂合并法。由于基于区域的分割算法简单、精度较高,且分割结果较为连续,因此应用较为广泛。 (2)基于边缘检测的分割。该方法主要是基于图像一定有边缘存在的假设上进行的,通过检测图像灰度值的突变来标记出不同区域的边缘。其实现的基本思想为:先检测图像中的边缘点,再按照一定的规则将边缘合并成轮廓。 (3)边缘与区域相结合的分割。该方法集成了边缘检测与基于区域分割两者的优点,一方面通过边缘点的限制避免区域的过度分割,另一方面通过区域分割补充漏检的边缘来保证图像轮廓的完整性。 目前越来越多的大规模图像处理对计算的速度提出的较高的要求。因此,本文介绍了一个在GPU的CUDA环境上实现的一个并行算法来提升图像分割的效率。 本文在对现有图像分割算法进行分析的基础上,对传统图像分割算法中的区域生长法进行了基于CUDA架构的并行化设计改进,提出一种新型的利于并行实现基于区域的图像分割算法。实验证明,该设计提高了计算能力和运行速度,有效缩减程序耗时,降低算法运行时间。 2 基于CUDA的区域生长算法的并行设计 2.1 串行算法描述和分析 区域生长是根据事先定义的准则将像素或者子区域聚合成更大区域的过程[1][2]。首先从图像中选取某个或某些像素点作为种子点,再由种子点出发,向这些点的八邻域内进行搜索与种子点具有某种相似性质的像素点,并将这些像素点合并到种子点所在的区域中,每一轮生长的新像素点作为下一轮生长的种子像素点继续迭代地进行上述过程,直到没有新的点归入该区域。主要根据像素的灰度值进行区域划分,将灰度值相似的像素点划分在同一区域,即区域内的像素点灰度值之差不大于指定阈值。 为了方便并行改进,在经典的串行算法基础上添加了对区域面积的判断以及对各区域的重新标记过程,即:区域生长完毕之后,将符合面积标准的区域按序进行标记,以便进行下一步的图像处理。此外,考虑到区域面积过大或过小的区域极有可能是背景色或噪声,因此面积不在给定的面积范围内的区域将被从结果中剔除,即将该区域标记值置0。串行分割算法流程如图1所示。 通过对上述串行算法进行分析可知,大量的时间被用于程序的反复迭代及判断,算法效率不高的主要原因在于以下三点: (1)大多数算法采用的主要是交互式人为手动设置种子点,这一步骤导致程序运行缓慢; (2)区域生长过程是一个迭代的过程。其中,下一轮迭代的结果与上一轮迭代息息相关,导致程序的串行度较高; (3)计算区域面积是一个串行的过程。由于在计算面积的过程中,每次只能使一个区域面积加1,当区域面积过大或是区域个数较多时,该过程将耗费程序的大量时间。 因此,本文从该算法的问题入手,利用CUDA架构的特点对原算法重新进行并行设计,将以上所提的三个耗时点,即设置种子点、区域生长、计算面积同时放入GPU进行计算,从而达到缩减程序时间的效果。 2.2 基于CUDA的并行算法设计 在对区域生长串行算法进行分析中可知,程序的大部分时间都花在区域生长的不断迭代过程中,因此,减少迭代次数是实现算法性能提升的关键,而区域生长算法具有全局统一的特性,所以本文采用分而治之的方法,即将图像分成若干块,先以各个分块为单位同时进行区域生长,然后再将这些分块进行合并。并行算法具体流程如图2所示。 在CUDA架构下,计算任务被映射为大量的可并行线程,因此显卡芯片的最小执行单位是线程。一个线程块中包含多
您可能关注的文档
最近下载
- 天然气长输管道安装施工风险危害清单.docx VIP
- 【国家标准】NBT 31008-2019 海上风电场工程概算定额.pdf VIP
- 2025年通信工程施工企业安全生产三类人员考试(项目负责人·B证)历年参考题库含答案详解(5套).docx VIP
- 1例慢性心功能不全急性加重的护理查房.pptx VIP
- 习题-9-能量代谢与体温.doc VIP
- 四大家鱼养殖技术规范(DB44-T 483-2008).docx VIP
- 下载PDF文件(1429K).PDF VIP
- 科研项目经费报销细则_附件.doc VIP
- 中医治疗心悸课件最新完整版本.pptx VIP
- JB∕T 7175.6-2015 滚动直线导轨副 第6部分:额定动载荷和额定寿命.pdf
原创力文档


文档评论(0)