基于GPU的图像处理并行算法分析
2017-03-24邵欣明
邵欣明
【摘 要】在计算机技术的快速发展过程中,人们需要对各种复杂的图像进行处理,图像处理的方法呈现出多样化和复杂化的特点,人们对CPU的性能要求也在逐渐提高,传统的CPU图像处理方法已经不能满足目前人们的实际需求。对一种高效快捷的图像处理方法进行研究,在充分利用GPU并行处理能力的基础上,采用G++语言来完成相应的图像计算,其中的图像处理并行算法主要包括彩色负片处理算法、透明合并处理算法等,并且与GPU实现相同效果的性能进行相互对比,以此来证明基于GPU的图像处理并行算法的高效性。
【Abstract】In the process of computer technology rapidly develop, people need to deal with all kinds of complex images. Image processing method presents diversity and complex characteristics, and the remind for CPU capability is higher, the traditional CPU image processing already can not satisfy the needs of people at present. In this paper, it research a high efficiency and fast image processing method. It makes full use of GPU parallel processing ability, using G++ language to complete the corresponding images. The image parallel processing algorithm method main contain the color negative film processing algorithms, transparent merging processing algorithms and so on, and comparing the performance of achieving the same effect with the GPU, to prove the efficiency of parallel image processing algorithm. based on GPU .
【关键词】GPU;图像处理;并行算法
【Keywords】GPU; image process; parallel algorithm
【中图分类号】TP301. 6 【文献标志码】A 【文章编号】1673-1069(2017)03-0071-02
1 引言
在目前业务逐渐复杂的情况下,人们需要进行各种形式的图像处理,其处理形式主要包括对数字图形进行模糊、锐化和合并并根据人们的实际需求将原始图形转化成人们所需要的图形。人们对应用系统图形方面处理质量要求越来越高,虽然CPU的整体运行速度无法满足人们的实际需求,这就需要利用GPU的快速计算能力,将其应用到图形计算当中,以此来形成相应的通用计算,并且能够通过C++语言解决和处理复杂问题。
2 基于GPU图像处理的相关技术
GPU技术。在计算机发展的过程中,人们对图像处理的要求还没有那么复杂,其中图像的运行和相关的计算方法都比较简单,所以说不用借助相应的硬件处理设备来对图像进行编辑处理,只需要借助GPU强大的计算能力就能夠对图形进行处理。但是随着社会的不断进步和计算机技术的不断发展,人们需要更快的运算速度来进行更高质量的图像处理,这就促使GPU运算技术产生并不断发展。从目前来看,CPU一般指的是中央处理器,是一种超大规模的集成电路,其主要功能是对计算机的指令进行解释,并对相应的计算机软件数据进行处理,而对数字进行处理就主要依靠GPU来进行,通过指令来产生相应的操作控制信号,以此来进行相应的图像处理。而GPU主要指的是图形处理器,也可以被称为视觉处理器,其主要功能是将计算机系统所需要的现实信息进行转换驱动,并且向显示器提供相应的扫描信号,来对显示器的显示进行正确控制,另外,图形处理器也是显卡的处理器,是显卡中较为重要的一部分,与CPU相比来说,两者具有一定的相似之处,而GPU主要是执行复杂的数学计算和几何计算,也就是说如果CPU想要画一个图形,只需要结合想要图形的实际坐标和特征,来产生相应的信号,而GPU就能够对该图形的所有像素进行计算并且集成,并且在显示器的指定位置上画出相应的图形,并且对CPU进行图形完成的通知,等待后续的命令[1]。
CUDA。从上述可以知道,GPU主要是对图形进行编辑和处理,但是在计算机的众多应用领域当中,GPU仍旧不能发挥出其具体功能,其主要是由于API的编程较为复杂,同时由于GPU内部的内存量较小,不能支持较大的程序规模,另外GPU的编程灵活性较差,这就使GPU无法发挥出其主要功能。为了对上述问题进行解决,厂商NVIDIA推出了一种运算平台,也就是CUDA,这种运算平台能够并行计算架构,使GPU能够对相对较为复杂的问题进行解决,目前的CUDA已经能够支持C++语言的实际运行,这也就意味着GPU能够发挥出更为重要的作用。
数字图形处理算法。数字图像处理是根据实际的需求,来对图像进行相应的运算和设计,对数字图像进行处理主要目的体现以下方面:一是提高图像的整体视觉效果和质量;二是对图像中所包含的信息和资源进行提取和处理,三是对数字图像的格式和信息进行变化处理,以此来保证数字图像数据的安全快速传递[2]。
3 基于GPU的数字图像处理并行算法
3.1 高斯模糊算法并行化
高斯模糊也被称为高斯平滑,目前属于一种在各种图像处理软件中进行广泛使用的处理效果,对其进行应用的主要目的是减少图像噪声和降低细节层次,高斯模糊当中的模糊,可以被看成周边像素的平均值。高斯模糊算法并行化在串联的程序结构当中无法进行灵活变换,为了能够对GPU中的硬件多线程资料进行最大程度的利用,就需要按照CUDA多线程架构处理的思想来对程序进行重构。在利用GPU对图像进行高斯模糊变化的过程中,其主要前提是水平方向上的一维高斯矩阵变换和垂直方向上的一维高斯矩阵变换是不相关的,换个说法是可以对其进行分开处理,针对某一方向的处理,各个像素之间的处理也是不相关的,结合这样的特性,可以利用GPU中的多线程并行将像素的处理任务分为不同的模块,并且使GPU的线程来对其进行计算。基于CUDA的高斯模糊处理,首先是需要对需要处理的原始图形进行读入,然后将图像中的像素在水平和垂直方向中进行分块,使GPU的线程块能够对这些模块进行分开处理,在进行处理之后,将处理之后的结果进行合并,这样就达到了想要的原始图像高斯模糊效果。在这样的过程中,需要根据实际的不同需求,来提供相应的函数,使GPU中的线程块能够对不同的数据进行不同的處理和操作,这也就是高斯模糊算法在CUDA基础上来进行图像处理的[3]。
3.2 彩色附页处理算法并行化
对于彩色附页的处理来说,属于一种特别耗费时间的图像处理过程,因为这种数字图像处理方法要求将整个图像中的每一个像素点都进行处理,但是从数字处理的角度来看彩色附页处理,其整体处理流程较为简单,首先是需要对图像进行处理,然后根据图像格式的不同来放入内存,并且对图像的所有像素点进行读取,对其中的r、g、b值进行取出,用255减去所取出的值,得出处理过后的数值,最后利用这些数值,就能够形成所需要的负片图像。在进行负片处理的过程中可以看出,针对图像中的每一个像素点的处理都是相对独立的,也就是说在对某一像素点进行处理的过程中,其中各种数值的取值是与其他像素值不相关的,针对这样的独立性特点,可以在图像处理的过程中,充分利用GPU多线程并行处理的优势,对所需要处理图像中进行一定程度的分割,然后对所分割图像中的所有像素点进行处理,最后进行统一的合并,就能够得出所需要的图像[4]。在对图像中各个像素点进行处理的过程中,需要注意这样像素点之间的运算必须保证相互独立,如果出现像素点不独立的情况,那么就需要在程序中编写大量的控制代码,而这样的控制代码的运行方式与GPU的处理方式不相匹配,不能达到最好的图像处理效果。
3.3 透明合并处理算法并行化
图像的透明合并处理也就是说需要实现图像的一种半透明效果,从这种处理方式的数学公式和函数当中可以看出,图像的透明合并处理并不复杂,并且能够在一定程度上实现各种形式的半透明效果,其中主要包括火光、烟雾和阴影等。在利用GPU多线程处理器来对图像进行透明合并处理的过程中,首先需要对两幅图像的位置进行确定,并且根据图像的实际大小,来对混合处理的范围进行确定,并且将所需要处理的范围进行分割,然后利用GPU的多线程处理器,来对所分割的单元进行处理,最后进行统一合并,来完成图像的透明化处理[5]。在对图像进行透明合并处理的过程中,不存在较为复杂的逻辑控制,也就是说对于不同的处理对象,其处理流程和方式都是保持一致的,而不同处理对象之间并不存在相应的联系。
4 结语
通过对以上算法的介绍可以发现,在利用CUDA编程框架,在基于GPU多线程处理器对图像进行处理的方式,具有较快的速度和较高的成像效果。
【参考文献】
【1】翟优,曾峦,熊伟.基于不变特征描述符实现星点匹配[J].光学精密工程,2012(11):56-57.
【2】陈庆奎,王海峰,那丽春,等.图形处理器通用计算的研究综述[J].黑龙江大学自然科学学报,2012(05):23-24.
【3】Giorgia Zucchelli.使用MATLAB轻松享受GPU的强大功能[J].电子设计技术,2012(03):44-45.
【4】刘绍波,刘明贵,张国华.基于CUDA的加速MATLAB计算研究[J].计算机应用研究,2010(06):46-47.
【5】宋晓丽,王庆.基于GPGPU的数字图像并行化预处理[J].计算机测量与控制,2009(06):77-78.