基于CUDA架构下的图像锐化算法实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课题: 基于CUDA架构下的图像锐化算法实现 年级专业班级: 2015级 指导老师: 姓名: 学号: 2017年12月25日 一、引言 随着计算机的普及,图像处理的应用领域必然涉及到人类生活和工作的方方面面。在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓变得模糊。同时在生活中,图像经过转换和传输后,难免会产生模糊和退化。为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘、轮廓线以及图像的细节变得清晰,更加符合人类的观察习惯。经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。 CUDA是显卡厂商NVIDIA推出的运算平台。 CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构以及GPU内部的并行计算引擎。 而图像锐化算法常常伴随着大量的繁琐复杂的数学计算,经常因时间过长而卡顿。于是我们打算将传统模式下的图形锐化算法在可以并行运算的CUDA架构上实现,充分利用GPU强大的运算和处理能力,从而加快的锐化算法的运行速率,显著提高图形锐化的效率。 二、设计题目 基于CUDA架构下的图像锐化算法实现 三、目的与要求 (1):运用图像锐化算法增强图像的细节边缘和轮廓 (2):运用CUDA架构加快图像锐化的处理速度 (3):分析算法的优缺点和应用场景 四、算法介绍 ——基于二阶微分的图像锐化—拉普拉斯算子 二阶拉普拉斯算子是最简单的各向线性微分算子,具有旋转不变性,比较适用于改善因为光线的漫反射造成的图像模糊。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数定义为: 为了更适合于数字图像处理,将该方程表示为离散形式: 这个公式可以转化为三维模板形式的四邻域拉普拉斯算子: 0 1 0 1 -4 1 0 1 0 和八邻域拉普拉斯算子: 1 1 1 1 -8 1 1 1 1 这样观察和理解起来更加的容易和清晰,即使用3*3的拉普拉斯模板对数字图像中像素(x,y)的邻域的灰度值进行处理,然后将处理后得到的数据赋予像素(x,y),产生一个输出图像g的灰度值。如此自左向右,自上向逐像素的处理,即可得到全图的锐化处理图像。 由于拉普拉斯是一种微分算子,它的应用强调图像中灰度的突变即降低灰度缓慢变化的区域,这将产生一幅把图像中的浅灰色边线和突变点叠加到暗背景中的图像。将原始图像和拉普拉斯图像叠加在一起的方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息。所以在实际使用中,如果所使用的定义具有负的中心系数,那么就必须将原始图像减去经拉普拉斯变换后的图像,从而得到锐化的结果,反之,如果拉普拉斯定义的中心系数为正,则原始图像要加上经拉普拉斯变换后的图像。故使用拉普拉斯算子对图像增强的基本方法可以表示为下式: 五、程序结构图 8邻域4邻域拉普拉斯算子读取图片数据,将其送入缓冲区图像初始化 8邻域 4邻域 拉普拉斯算子 读取图片数据,将其送入缓冲区 图像初始化 将处理后的数据恢复到数据区中 将处理后的数据恢复到数据区中 六、CUDA程序设计实现 在这里我们使用的CUDA8.0版本: 从拉普拉斯算子的原理可以看出,每个像素的值只与其8领域的像素值有关,并且每个像素值的算法是完全相同的,于是使一个像素对应一个线程。由此主要设计kemel函数LinearSharpen,如下: __global__ void LinearSharpen() 算法核心代码分析: 此处为定义八邻域拉普拉斯算子模板 此处为计算当前像素点的索引值,其中width为图像宽度,BLOCK_SIZE为一个线程块包含线程的行数或列数(由于每个线程块最多能包含512个线程,所以定义线程块大小为16×16),blockldx.x和blockIdx.y分别表示当前线程块的x和y方向索引值,threadldx.x和threadldx.y分别表示当前线程的x和y方向索引值。 此处为根据index计算8领域点的索引值并将其像素灰度值付给nTmp[3][3]矩阵。 计算梯度。 由梯度计算当前像素点锐化后的像素灰度值。 主程序代码分析: 主程序代码分析将以伪代码的方式,以便

文档评论(0)

jyr0221 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档