CUDA技术在数字图像匹配中的应用

2019-09-10 04:52姜雪茸魏威
现代信息科技 2019年18期

姜雪茸 魏威

摘  要:数字图像匹配技术是数字处理领域中重要的环节,常运用于图像处理、计算机视觉、遥感数据分析。为提高图像匹配速度,本文提出了采用并发执行多个线程的适合于大规模、高速、通用计算任务的CUDA技术解决图像匹配问题的方法。阐述了CUDA的编程原理和开发方法,论述了图像匹配的基本原理,设计了图像匹配的相关算法。

关键词:图像匹配;CUDA;算法设计

中图分类号:TP391.41     文献标识码:A 文章编号:2096-4706(2019)18-0061-03

Abstract:Digital image matching technology is an important link in the field of digital processing,which is often used in image processing,computer vision,remote sensing data analysis. In order to improve the speed of image matching,this paper proposes a method to solve the problem of image matching by using CUDA technology which is suitable for large-scale,high-speed and general-purpose computing tasks and executes multiple threads concurrently. This paper expounds the programming principle and development method of CUDA,expounds the basic principle of image matching,and designs the relevant algorithm of image matching.

Keywords:image matching;CUDA;algorithm design

0  引  言

目前,图像匹配技术在地形匹配、网络检索、运动目标跟踪以及工业实时监测等领域中应用广泛,但在图像匹配过程中图像数据量大、计算复杂、实时性要求高,如何在保证图像处理清晰度的情况下,提高图像匹配的速度成为了问题。由此,本文提出采用具备强大通用并行计算能力的基于GPU(Graphics Processing Units)平台的统一并行计算架构(CUDA,Compute Unified Device Architecture)。CUDA运行原理是并发执行多个线程实现大规模快速并行计算,可快速处理大规模数字图像匹配问题,也可解决数字图像匹配中效率低下的问题[1]。基于以上分析,本文将图像匹配的相关算法在CUDA平台上予以实现并尝试解决图像匹配实时性技术问题。

1  图像匹配和CUDA技术分析

1.1  图像匹配

图像匹配主要研究影像内容、特征、结构、关系、纹理及灰度等的相关关系,进行相似性和一致性分析,寻找相似影像,是计算机图像视觉和处理中一项重要的技术。主要是图像在灰度上和特征上的匹配。

基于特征的图像匹配:因为图像自身具有特征点、边缘、轮廓、特征结构及统计特征、重心等基本特征,因此可以通过每幅图像的特征提取比对来进行图像匹配。

基于灰度匹配的方法,利用整幅图像的灰度信息建立两幅图像之间的相似性度量,然后采用某种搜索方法寻找使相似性度量值最大或最小的变换模型的参数值。常用的相似性度量有:两幅图像灰度的平方差之和、序贯相似度检测、互相关、相位相关[2]。

基于图像灰度的匹配流程是将待配准图像与基准图像间所存在的像素进行逐一比较,从而获得其中的最佳点来作为匹配点。基于灰度的图像匹配算法中最基本的算法主要有:最小绝对差算法、最小平方差算法、最小卷积算法、最大互相关算法、不变矩算法等几十种算法。

1.2  CUDA技术

实现图像匹配的常用三种方法为专用ASIC器件、高速DSP、软件。这三种方法中,面向算法的专用ASIC器件和高速DSP方法需要专业硬件,具有一定的局限性,而具备多核处理器的GPU具有高度并行計算特性,已经在图形图像处理领域表现突出。因此采用基于GPU的CUDA平台软件编程方法实现图像匹配。

CUDA是NVIDIA公司于2007年正式发布的统一并行计算架构,是NVIDIA公司设计的针对异构计算资源下的大规模并行计算的一个计算架构,是一种由NVIDIA提出的并由其制造的图形处理单元实现的一种并行计算平台及程序设计模型,它利用GPU的多核硬件资源实现大规模并行计算[3]。

CUDA语言是C语言的扩展,这使得熟悉C语言的编程人员能够快速掌握应用CUDA开发通用计算程序[4]。CUDA编程模型采用SIMT模式执行程序,将CPU作为主机称为HOST,GPU作为协处理器称为DEVICE。

一个完整的程序主要包括处理的串行部分(即HOST端)和设备端(即DEVICE端)处理函数所实现的并行部分,并行处理的部分是由函数完成的。当整个程序执行到函数时,程序就会转入到DEVICE端处理程序的并行部分,当在DEVICE端并行部分处理完成后,也就是函数执行完毕,程序继续转入到HOST进行剩余部分的处理。

在CUDA架构下,计算任务被映射为大量的可并行线程,因此显卡的最小执行单元为线程(thread)。一个线程块(block)中包含多个可以沟通协作的线程,而执行相同程序的则可以组成一个线程网格(grid)。每个线程都有其所在block中的ID号,同时每个block也有在grid中的ID,其中ID可以是一维、二维和三维的,每个执行内核函数的线程都拥有一个独一无二的线程,而每个线程都可以使用它的线程索引和分块索引的组合来确定其在全局网格的位置。如图1所示。

2  基于CUDA的图像匹配算法设计

基于图像灰度的图像匹配主要是将待匹配的配准图像与基准图像间的像素进行一一比对,因此涉及到的相关计算具有图像数据量大的特点,特别适合CUDA多核处理单元并行计算,且各像素是独立的,其数据耦合度低、计算密度高,所以使用CUDA进行基于灰度图像的匹配是理想选择。

2.1  图像匹配算法

2.2  CUDA平台算法设计

无论哪种算法在CUDA平台上设计的流程都包括两个方面:HOST端和DEVICE端实现。

HOST端实现的流程分为:数据初始化、数据复制、kernel函数调用、空间释放,而在DEVICE端主要实现kernel函数的并行处理[6,7]。

现以最大互相关算法式(4)中的  部分为例,其并行程序的kernel函数如下:

__global__ void CJ (inti, intj,intu,intv,ints,intt, float w)

{

intw = 0;

inti=ThreaIdx.x,j=BlockIdx.y,

int u= BlockIdx.x*BlockDim.x+ ThreaIdx.x,

int v= BlockIdx.y*BlockDim.y+ ThreaIdx.y;

for (u=1; u<wwidth; u ++)

{

for (v= 1; v<wheight;v++)

{

for (j=1; j<height; j ++)

{

for (i = 1; i <width; i ++)

{

w += s[i][j]*t[i+u][j+v];

}}}}}

int main( )

{

...

Dim3 dimBlock(width,1,1)

Dim3 dimGrid(wwidth/width,height,1)

CJ<<<wheight/height*wwidth/width, width>>>(…);

...

}

2.3  实验结果

经过实际应用,相同灰度图像匹配,采用最大互相关算法对基准图512*512、待配准图256*256进行实验,在基于CUDA的GPU平台上并行处理运行用时8.50ms,原始CPU运行用时53.80ms,时间加速比达到了6.33。

3  结  论

本文针对灰度图像匹配算法中常见问题:运算数据量大、算法繁琐、实时性差,采用CUDA的高性能并行处理能力,进行CUDA并行程序设计、实验,实现了图像匹配时提高处理能力、提高运算速度的目的。

参考文献:

[1] 曾胜田,刘羽,马梦琦.基于CUDA的Prewitt算子并行實现 [J].微计算机应用,2011,32(11):71-75.

[2] 冈萨雷斯.数字图像信息处理 [M].第2版.北京:电子工业出版社,2007.

[3] 董荦,葛万成,陈康力.CUDA并行计算的应用研究 [J].信息技术,2010,34(4):11-15.

[4] 陈茜,邱跃洪,易红伟.基于GPU的星图配准算法并行程序设计 [J].红外与激光工程,2014,43(11):3756-3761.

[5] 杨靓,黄士坦.最大互相关图象匹配算法的硬件实现 [J].微电子学与计算机,1999(5):28-30.

[6] 贺晓佳.灰度图像快速匹配算法研究 [D].合肥:合肥工业大学,2012.

[7] 董安国.图像匹配最大互相关快速算法 [J].浙江万里学院学报,2005(4):13-15.

作者简介:姜雪茸(1978-),女,汉族,山东齐河人,专任

教师,副教授,硕士,研究方向:软件工程;魏威(1978-),男,汉族,甘肃榆中人,专任教师,副教授,学士学位,研究方向:软件工程。