探究GPU视角下的图像处理并行算法
2019-09-17刘小豫聂维魏浩
刘小豫 聂维 魏浩
摘 要:随着计算机技术的更新发展,人们需要处理各式各样复杂的图像,而图像处理的方式方法也表现出多元化特性,对此,该文基于GPU并行处理能力,提出了一种更加高效、快捷的图像处理方法,通过C++语言进行图像计算,主要从高斯模糊算法并行化、彩色负片处理算法并行化、透明合并处理算法并行化3个方面做了全面分析,从而证明GPU视角下的图像处理并行算法更具优势,值得大力推广与应用。
关键词:GPU 图像处理 并行算法
中图分类号:TP391 文献标识码:A 文章编号:1672-3791(2019)06(c)-0033-02
1 GPU图像处理技术分析
1.1 GPU
通过计算机CPU充分发挥其强有力的运算能力,根据程序设计算法,便能够实现数字图像模糊、合并等相关处理,把原始图像转变为所需图像。而用户对于应用系统图像处理质量的要求不断提高,虽然CPU速度通过摩尔定律周期逐渐提升,但是就越来越复杂的图像处理算法和越来越高的质量要求,CPU的能力依旧显得相对不足。而GPU实际上就是图形处理器,是专门进行图像处理的设施设备。在计算机技术发展的初期阶段,因为图形处理与运算比较简单,再加上质量要求相对偏低,所以,只利用CPU进行图像处理便能够满足图形处理需求。但是,在图形处理质量与速度要求越来越高的趋势下,衍生了GPU。对比来讲,CPU功能比较全面化,能够更好地完成各种图像的处理与控制请求,但是GPU却能够集中运算处理海量数据信息,效率较高,在缓存与控制逻辑上也具备突出性优势。GPU初始设计目标主要针对的是海量数据处理,其硬件结构特性直接明确了其具备高效的运算处理能力。
1.2 CUDA
GPU的作用主要是编辑并处理图像,但是在计算机的各个应用领域,GPU依旧无法充分发挥功能、作用,这主要是因为API编程十分繁杂,再加上GPU内存量比较小,无法支持比较大的程序规模,而且GPU编程缺乏较好的灵活性,导致GPU难以将自身优势、作用充分发挥出来。为了有效解决这些问题,NVIDIA构建了一种运算平台,即CUDA,其可以并行计算框架,促使GPU解决复杂性问题,现阶段CUDA可以支持C++语言稳定运行,这就代表GPU可以发挥更加重要的作用。
1.3 数字图像处理
数字图像处理是基于计算机,在存储介质上,就存储二级制数据图像做变形运算与处理,可改观图像视觉效果,还可以从中获取更具实用价值的信息。数字图像处理算法的关键在于转换信号,把图像信号转换为数字信号,以便于通过计算机做后续处理。
2 GPU视角下的图像处理并行算法
2.1 高斯模糊算法并行化
所谓高斯模糊实际上也是高斯平滑,在图像处理软件中的应用非常广泛,其能够有效减少图像噪声,并降低细节部分的层次,高斯模糊中的模糊能够被看作是周边像素平均值。但是此算法并行化在串联程序结构中根本不能灵活转换,为了最大化地有效利用GPU硬件多线程资料,必须严格遵循CUDA多线程框架处理理念重构程序。在通过GPU进行图像高斯模糊变化时,重要基础是水平方向与垂直方向的一维高斯矩阵变换之间没有相关性,也就是可以分开处理,针对具体一个方向进行处理,各像素的处理彼此不相关联,根据此特性,能够利用GPU多线程并行把像素处理任务划分为不同模块,并利用GPU线程加以计算。以CUDA为基础的高斯模糊处理,需要先读入待处理原始图形,再把图像像素基于水平与垂直方向分块,促使GPU线程块分开处理模块,在处理后,合并处理后结构,以此达到所需原始图像的高斯模糊效果。在此过程中,需就实际需要,提供相应函數,促使GPU线程块针对不同数据做相应处理,这就是高斯模糊算法基于CUDA的图像处理。
2.2 彩色负片处理算法并行化
彩色负片处理过程非常消耗时间,这是由于其要求对整个图像的各个像素点加以处理。就数字计算角度来看,负片处理比较简单,流程为先读入图像,即Bitmap格式图像,将其置入内存,遍布全部像素点,获取r、g、b值,并通过255减去这些值,把最后所得值生成全新负片图像。通过负片算法流程能够看出,其对各像素处理是彼此独立的,即针对某像素进行处理的时候,和其他像素值之间并不存在关系。负片算法此特点使得其十分适合基于GPU多线程并行处理的优势特性,把整体图像划分成许多小图像,对小图像分别做好处理,并把最后所获得的小图像处理结果合并成大图像。在针对图像像素数据做并行运算处理的重要基础上,像素运算彼此间是独立的,如果处理过程中,像素不独立,就明确要求程序编写控制代码,这种程序结构和运行方式并不适合GPU图像处理并行算法,这主要是由于针对控制语句的处理不是GPU的优势。就具体实验证明,基于CUDA的GPU处理比CPU处理所耗费的时间减少了几百倍。
2.3 透明合并处理算法并行化
Alpha透明混合处理其实就是为了实现半透明的良好效果。而透明混合效果处理数学公式具体如(1)所示。假设不透明的物体着色用A表示,而透明的物体颜色用B表示,经过Alpha混合处理,颜色C表示透过B看A所呈现出的颜色。如果B的透明度值是Alpha,取值控制在0~1之间,0代表完全透明,1代表完全不透明,那么获得Alpha混合公式为。
其中,R(s)、G(s)、B(s)代表像素颜色s的RGB分量。通过公式可以看出,Alpha混合处理比较简洁,通过此技术能够获得火光、烟雾、阴影等各种半透明效果。
想要基于CUDA框架,通过GPU内部多线程处理器处理两幅需透明混合处理的图像,先确定图像相对位置。因为图像大小可能不一致,因此,先明确混合处理范围,再将所需处理范围划分为多项处理单元,再通过CPU加以控制,把多项单元分配到GPU多线程处理器加以运算。
可以把两幅Alpha透明混合处理图像基于CUDA编程框架进行GPU处理,这是由于透明混合处理中并不存在太过复杂的逻辑控制,就不同处理对象而言,处理过程相同,但是不同处理对象间并不相关。就具体实验证明,基于CUDA的处理速度比CPU处理速度显著提升。
3 结语
综上所述,伴随着计算机技术在图像处理中的应用越来越广泛,人们对图像处理的速度和效率等相关要求逐渐提高。该文对高斯模糊处理、彩色负片处理、透明合并处理3种处理方式进行分析,可知通过CUDA编程框架利用GPU多线程模块并行处理方式,能够在很大程度上促使图像处理速度与水平得到显著提升。基于CDUA架构,通过编程语言实现基于GPU的图像处理算法,将GPU的并行运算能力作用有效发挥出来,能够在很大程度上提升图像处理速度和效率,以此满足各种应用领域对于数字图像处理的多元化需求。
参考文献
[1] 王平,全吉成,王宏伟.GPU图像并行处理设计模型研究[J].舰船电子工程,2016,36(11):74-76.
[2] 范梦然.GPU上基本图像处理算法性能优化关键技术研究[D].中国科学院大学:中国科学院工程管理与信息技术学院,2017.
[3] 赵明超,陈智斌,文有为.基于GPU图像去噪总变分对偶模型的并行计算[J].计算机应用,2016,36(5):1228-1231.