APP下载

CUDA框架视角下的图像处理并行算法分析

2020-10-15刘小豫聂维赵娟吴份侠

关键词:图像处理

刘小豫 聂维 赵娟 吴份侠

【摘  要】图像处理技术是当前计算机必不可少的用途之一。随着计算机技术的不断发展,图像处理的并行算法也在不断的更新。论文主要是基于CUDA框架视角,详细地阐述了CUDA架构的发展脉络,对CUDA图像处理的并行算法进行了系统的分析,同时对CUDA的架构框架环境也有一定的研究,从而打破传统的图像处理壁垒,对新时期图像处理方式进行进一步的探究。

【Abstract】Image processing technology is one of the essential uses of computer nowadays. With the continuous development of computer technology, the parallel algorithm of image processing is also constantly updated. Based on the perspective of CUDA framework, this paper elaborates the development of CUDA architecture, systematically analyzes the parallel algorithm of CUDA image processing, and also studies the CUDA architecture framework environment to a certain extent, so as to break the traditional image processing barriers and further explore the image processing mode in the new era.

【關键词】CUDA;图像处理;并行算法分析

【Keywords】CUDA; image processing; parallel algorithm analysis

【中图分类号】TP391.4                               【文献标志码】A                                   【文章编号】1673-1069(2020)09-0184-02

1 CUDA的发展脉络

CUDA是GPU的衍生产物,随着信息技术的不断发展,显卡也在高速发展,CPU的出现为图片的显示和处理作出了巨大贡献。在此背景之下,NVIDIA公司推出了CUDA技术,不仅能够充分发挥出CPU图像处理的功能,同时对于显卡的发展也起到了不可忽视的推动作用。就目前的CUDA发展技术而言,能够保证使用的平台包括GT200、G80、G92、G94、G96、GF100等。也就是说,截至目前,只有NVIDIA公司所研制的显卡才能够使用CUDA技术作为图像处理的新技术。除此之外,C语言是CUDA编程的核心语言编译器,在发展CUDA的同时,该公司同样也研发出了Geforce 8 CUDA的架构类型。这种类型的架构主要是为了绝大多数较为复杂的计算机问题。因此,技术人员为了能够建立新的、高效的计算机解决方案,同时还能够充分满足计算机中对于密集数据的解决方案,在C语言的基础上增加高性能的计算机指令。

当前的CUDA系统架构内容主要包括开发库、运行期环境和驱动。首先就开发库而言。开发库是在CUDA技术的基础上建立的。在两个标准数学的运算基础上,能够解决大部分大规模并行问题,同时还能够为CUDA的运行提供更为方便和快捷的帮助,满足自身对计算机应用的需要。其次是运行期环境。运行期环境根据其在CUDA的程序代码开发中的运行位置不同分为宿主代码和设备代码两种。其中,宿主代码主要是指能够在CPU上运行的代码,而设备代码则是在GPU上运行的代码。两种代码的编程形成,不仅为计算机的不同运行方式提供了一定的便利,同时也为技术人员在设置代码方面提供了较多的选择。

1.1 CUDA 编程开发

CUDA编程相较于原有的GPU编程而言,在架构上都具有一定的优化和改进。主要体现在两方面:一是对于处理架构方面,由原来的多种方式改为统一的方式,使得过去分布在定点着色器中的计算机资源和片元着色器中的计算机资源都能够得到并加以利用。二是在将片内共享存储器引入计算机设备中,使计算机设备能够支持随机写入和线程之间的通信。对于CUDA构架的两项改进使得该系统能够更适应于GPU的通用计算。而对于技术人员而言,CUDA主要是由C语言来进行开发,而不需要借助图形来学习API,这一特性的开展使得开发人员可以直接从CPU过渡至GPU编程。综上所述,我们可以发现相较于原有的GPU编程语言,CUDA不仅在编程内容和形式上更为简单,同时还能够充分利用GPU的编程特性来完成线程间的通信,对图形并行算法方面也有一定的推动作用。这也是CUDA变成一经推出就广受好评的主要原因之一。

1.2 CUDA编程模型

CUDA的编程模型主要是将CPU作为主机,GPU作为协助处理器和设备之一。这里需要注意的是,CUDA编程模型中,是可以一个主机和若干个设备共存的。相较于传统的GPU编程模型而言,CUDA编程具有更为广泛的应用领域和应用优势。一方面,CPU作为逻辑性较强的设备之一,具有较强的事务处理能力和并行计算能力,而GPU则是主要负责高度线程化的并行计算任务。技术人员在编程过程中,只需要将程序中的并行部分找出来并确定后,就可以将并行部分的内容交由GPU处理。另一方面,CUDA在GPU上运行的内核函数是该程序中一个可以被并行执行的步骤。也就是说,这个内核函数是整个CUDA程序中的组成部分。在CUDA架构中,一个完整的CUDA程序是由一系列的内核函数和主机的串行处理部分共同组成的。这些组成形式具有一定的顺序性,同时也具有一定的一致性。

2 CUDA框架视角下的图像处理并行算法

在CUDA框架视角下,图像处理并行算法是基于计算机图像处理方式的更新和优化之后的。在CUDA框架视角下的图像处理并行算法中存在图像插值。图像插值的作用主要是用来计算在已有的图像像素基础上,图像在被经过放大后所缺少的像素值。这部分像素值被称为图像插值。除此之外,还有最近邻插值和双线性插值。这三条插值是目前在CUDA框架中最常用到的插值。其中双线性插值又可以称为双线性内插,主要是应用于数学函数公式中的两个变量,即插值函数的线性插值拓展,通俗来说,双线性内插值的核心思想是在函数的两个方向分别进行一次线性插值,从而求得该插值函数的两个变量。

2.1 双线性算法设计思路

在上文中我们提到了双线性插值的概念和应用方式。此段主要是探讨双线性算法的设计思路。双线性插值的设计思路主要从三个方面来展开:

一是在并行算法中能够实现对图像处理的一些基本功能。其中主要包括对图像的打开、显示和保存等。这些基本功能看似简单,是日常计算机操作中最为直接的图像处理方式,但对于双线性插值而言,在打开图片的同时,还包括将图片内容读入内存的步骤,除此之外,对于该图像文件除文件头以外的部分存储在计算机中。最后根据该图像的调色板、图像颜色和种类等参数内容一起保存至数据库中,进行存储。

二是在图片显示阶段的参数设置和存储步骤完成后,对于图片的放大等内容需要开发者利用代码对放大以后的图片进行再一次的存储。这个步骤就相当于将原图的放大参数进行重新拷贝,并对图片的颜色、种类或者光效等参数进行修改。

三是利用双线性内插值的算法,将原图生成的信息作为基础,通过将图片进行放大、缩小等操作得到新的像素信息,使得图片的像素信息更具有双新线内插值的算法设计思路,并逐一对该双行线的算法进行分析和研究。

2.2 双线性插值算法实现

想要充分实现图像的双线性内插值的算法,主要通过C++语言和CUDA双线性插值两种方式。通过分析或者结合这两种双线性内插值的算法的方式,来提取两种算法之间的不同特点,同时也能够使两种算法更能够适用于CUDA框架编程。虽然就目前的图像处理方式而言,C++语言编程也能够处理图像,完成对图像的编辑和参数的存储,但相比较而言,CUDA编程比C++语言更加高效和方便。就本文内容而言,主要是对CUDA框架中的双线性内插值算法进行研究。因此,在基于CUDA框架对图像进行处理时,首先要对纹理寄存器进行预留,纹理寄存器是基于CUDA框架中,对图像处理所需要的主要工作区之一。纹理寄存器主要是一种只读的存储器,是由GPU纹理渲染的图形专用单元发展而来。在计算机硬件中,纹理存储器的数据是位于显存中的,在读取该文件时,可以通过纹理缓存的加速器来进行读取,不仅能够充分提高数据的读取速度,同时还能够保证数据的安全性。除此之外,目前来说,纹理存储器中所绑定的数据量是比较大的,同时也支持一维、二维甚至是三维纹理。随机访问数据时,紋理存储器也能够起到一定的加速效果。

3 结论

综上所述,本文在基于CUDA框架上,详细阐述了图像处理的需求特点和当前计算机对图像处理的需求。其中主要包括图像的插值需求和双线性插值的算法分析。通过对CUDA框架的图像处理并行算法分析,为未来CUDA架构的高性能计算方法奠定了良好的基础。

【参考文献】

【1】岳俊,邹进贵,何豫航.基于CPU与GPU/CUDA的数字图像处理程序的性能比较[J].地理空间信息,2012,10(04):45-47+180.

【2】刘鑫,姜超,冯存永.CUDA和OpenCV图像并行处理方法研究[J].测绘科学,2012,37(04):123-125.

【3】许雪贵,张清.基于CUDA的高效并行遥感影像处理[J].地理空间信息,2011,9(06):47-54+4.

猜你喜欢

图像处理
视觉系统在发动机涂胶的应用
“课程思政”视域下职业学校《图像处理》课程教学改革实践
构建《Photoshop图像处理》课程思政实践教学路径的探索
基于图像处理与卷积神经网络的零件识别
基于新一代信息技术的Photoshop图像处理课程开发与建设
基于机器视觉的自动浇注机控制系统的研究
Photoshop软件图像处理技巧
基于二元全区间插值法的畸变图像矫正方法
机器视觉技术在烟支钢印检测中的应用