姜雪茸 魏威

摘 ?要:數字圖像匹配技術是數字處理領域中重要的環節,常運用于圖像處理、計算機視覺、遙感數據分析。為提高圖像匹配速度,本文提出了采用并發執行多個線程的適合于大規模、高速、通用計算任務的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-),男,漢族,甘肅榆中人,專任教師,副教授,學士學位,研究方向:軟件工程。