黑龙江大学自然科学学报
主办单位:黑龙江大学
国际刊号:1001-7011
国内刊号:23-1181/N
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:24042 人次
 
    本刊论文
图像快速平滑处理方法

  摘 要 为了解决计算密集型的图像平滑,在分析常见的平滑算法的基础上,采用统一计算设备架构的软件和硬件架构,提出了一种利用图形处理器(GPU)的实现方法。首先引入了高强度的GPU并行计算的结构,介绍了GPU均值滤波和中值滤波两种典型的算法。然后,用不同分辨率的图像作为测试数据,比较相同的市场价格下CPU和GPU之间的计算效率。实验结果表明,同种算法GPU获得了与CPU相同的效果,同时提高的计算效率是CPU的10倍,从而证明了GPU在数字图像处理中的实际应用效果。

  关键词 图形处理器 图像平滑 图像处理

  中图分类号:TP31 文献标识码:A

  0 引言

  近年来,随着图形处理器硬件技术的不断发展以及可编程能力的不断增强,越来越多的应用通过使用基于GPU的计算框架提高了算法和系统的效率。GPU的应用领域不断扩大,已被广泛地应用到通用信号处理、物理模拟、财务数据分析以及生物科学等领域,并取得了显著的效果。在分子动力学领域中,GeForce 8800GTX 实现了比CPU高达240倍的处理速度。在脑电波模拟、视觉和嗅觉计算等方面,通过协同CPU和GPU工作,实现了130倍的性能提高。借助GPU,GIS(地球信息系统)原本需要20分钟完成的计算过程,现在只需要30秒就能完成。

  1 GPU并行计算架构

  GPU现在已已实现可编程的图像处理,由于它具有高内存带宽驱动的多内核,已成为图像处理的绝对主力。

  1.1 GPU架构

  GPU支持单指令多数据(SIMD)指令的数据并行计算。在SIMD结构中,单一的控制组件分配到每个管线,相同的指令同时执行。例如,NVDIA8800GT包含每组8个,共14组的多处理器组,但每个处理器只有一个指令单元。从线程的角度看,每个多处理器组可以同时并行运行768个活跃线程,即GPU包含14组多处理器组可以同时并行10752个活动线程。在存储器方面,每个多处理器拥有16KB的可读写共享内存、8KB的只读常量缓存、8KB的只读纹理缓存和8192个32位寄存器。

  1.2 GPU编程模型

  CUDA(统一设备计算架构)是一个GPU编程平台,见图2。它包括一个硬件驱动程序和应用程序接口(API)以及两个数学函数库,因此程序员不需要调用复杂的图形API接口。 CUDA中的API还兼容标准C语言库,这样程序员就可以通过调用函数访问内存并执行指令。

  为了简化开发,CUDA允许程序员将CPU代码和GPU的代码混合到程序文件。NVCC作为C语言编译器,负责隔离设备代码和宿主代码。在CUDA汇编时,GPU作为计算设备可以执行大量的并行线程,类似于CPU的协同处理器。换句话说,用不同的数据被执行多次的应用程序可以被划分成在不同设备上执行的多个函数,这被称为内核。

  2 基于GPU的图像平滑实现

  2.1 图像平滑的原理

  图像平滑的方法主要分为两类:空域法和频域法。在空域法中,常用的方法是均值滤波和中值滤波。

  均值滤波是一种线性空间滤波。它使用大小这奇数的掩模在图像上滑动,并用掩膜中所像素的灰度均值替换掩膜中心相应的像素灰度值。如果在均值处理时对掩膜中每个像素的权重进行调整,即确定每个像素的系数,它则被称作加权平均滤波。这与频域中的卷积的概念类似,因此线性空间滤波通常被称为掩膜图像卷积。中值滤波是一种非线性空间滤波,与均值滤波的差别在于:掩膜中心对应的像素点的灰度值均被替换为掩膜中所有像素灰度的中值。本文使用了均值滤波和中值滤波两种空域法实现图像的平滑。

  2.2 计算分配

  GPU的数据处理能力要比CPU高得多,虽然它也可以直接负责显示。在与显示相关的算法设计中,应该在直接绘图前尽可能将计算分配给GPU并行处理,而仅让CPU完成数据到内存的加载。在一般与显示无关的算法设计中,GPU并行计算数据,得到结果,然后将数据传输到RAM。

  2.3 实现过程

  用GPU实现图像的平滑的主要步骤如下:

  第1步:读取图像数据。根据图像大小在GPU上分配设备存A,并将数据传送到设备内存A。

  第2步:设置GPU的执行参数,即网格和块的大小。

  第3步:将图像数据与GPU的纹理内存绑定,建立与GPU内存之间的映射。

  第4步:在OpenGL中打开GPU操作所需的高速缓存,完成GPU和OpenGL之间连接。

  第5步:调用内核函数来执行图像平滑。

  第6步:OpenGL显示处理结果。

  内核定义需要使用规范“_global_”, 用扩展语法“<<< >>>” 指定每个并行执行的线程数。内核在程序中声明如下:

  ImageSmooth<<< imageH,64>>>(imageIn,imageW,imageW,imageH)(1)

  其中, <<< >>>中的参数说明:分配imageH个块和每块包含64个活动线程。imageIn 是要处理的图像数据的起始地址指针,imageW是图像宽度,imageH是图像高度。

  数据块的大小被声明为图像高度imageH,每个块负责一行中像素的平滑处理。每个线程块包含64个线程,每个线程负责imageW/64像素的卷积。这样就有64?譱mageH个独立的线程在执行(1)。

  3 结论

  本文实现了基于GPU的图像平滑算法,并分析了其实验结果。结果表明,与CPU相比,在可以分独立单位的典型算法中,比如均值和中值滤波都依赖其固有的并行计算硬件结构特点,GPU可以提高到非常高的性能。当图象数据量增加时,这种提高就更加明显。在实验平台上,GPU的计算会提高到10倍,这表明了GPU在高密度数据计算中的强大的计算能力,这可以为快速图像预处理提供硬件支持。

特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《黑龙江大学自然科学学报》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《黑龙江大学自然科学学报》编辑部  (权威发表网)   苏ICP备20026650号-8