基于CUDA的红外图像快速增强算法研究
2012-03-17张绍良闫钧华朱智超
张绍良,闫钧华,刘 成,朱智超
(南京航空航天大学 航天学院,江苏 南京 210016)
红外探测技术具有环境适应性强,在夜间和恶劣气候环境下均能工作,抗干扰性强且具有一定的辨别真伪的能力。但是,红外图像相对可见光图像,整体灰度分布低且集中、性噪比和对比度低、视觉模糊[1],因此要对红外图像进行增强,提高图像的对比度,突出图像中感兴趣的信息,抑制无用的信息。常用的图像增强方法有灰度变换、直方图修正、噪声滤除、图像锐化、频率滤波和彩色增强等[2-3]。在对图象锐化和噪声滤除的研究中发现,图像锐化可以很好的突出图像边缘信息,却不能保留图像背景信息;降噪滤波则在降噪的同时使得图像边缘模糊。本文采用多分辨率图像融合[4]的相关算法融合平滑后的图像与锐化后的图像,既突出图像边缘,又保留图像背景信息,实现图像增强。
近年来,随着GPU技术的发展,GPU已具备很高的计算性能,目前主流GPU的浮点计算能力达到主流CPU的10倍以上。2007年6月,NVIDIA推出的CUDA[5](Compute Unified Device Architecture,统一计算设备架构)实现了GPU上的数据并行处理,使得数据的处理能力获得几倍,几十倍,甚至上百倍的加速比,已在图像处理、分子动力学仿真、生物计算、音视频编解码等方面得到广泛应用[6]。如何充分应用GPU的并行计算特点实现复杂问题的快速计算,实现实时处理,已成为当今的热点问题。文中研究基于CUDA快速实现红外图像增强算法,具有良好的红外图像增强性能,同时具有很高的实时性。
1 一种改进的Sobel边缘检测算法
边缘检测算法的好坏对图像增强的效果具有较大的影响,经典Sobel边缘检测算法[4-5]具有提取的边缘显著、计算量小、速度快等特点,在很多领域得到了广泛的应用。但是经典Sobel边缘检测算法检测的方向有限,只检测水平方向和竖直方向,对其他方向纹理特征边缘的检测能力弱,抗噪能力比较低。为弥补经典Sobel边缘检测算法在边缘方向上的不足,对Sobel算法进行改进,增加对45°和135°两个边缘方向的检测,并考虑像素位置对提取边缘的影响。Sobel算法是一种基于梯度的边缘检测算法,采用模板掩模运算。如图1所示,(a)表示以(i,j)为中心的邻域图像像素点,(b)表示掩模模板,(c)表示边缘提取后(i,j)位置像素值,则掩模运算过程可用式(1)表示。
图1 Sobel算子掩模过程Fig.1 Mask process of Sobel operator
式中P(i,j),表示掩模处理前的像素点,P(′i,j)表示掩模 处理后的像素点,f(x,y)表示掩模模板。除了水平和竖直两个边缘方向的检测外,增加对45°和135°两个边缘方向的检测,4个边缘方向的检测模板为 f0°, f45°, f90°, f135°,如图 2 所示。 掩模后的结果为中的最大值,如式(2)。
图2 Sobel算子Fig.2 Sobel operator
图 5(e)为 Sobel边缘检测结果,图 5(f)为改进的 Sobel边缘检测结果。实验结果表明,改进的Sobel算法改善了经典Sobel算法边缘检测方向上的不足,提高了边缘检测的质量。
2 改进的中值滤波算法
红外图像一般受到高斯噪声和椒盐噪声影响,均值滤波可对高斯噪声有很好的抑制效果,但是对椒盐噪声则无能为力。中值滤波算法[7]是一种非线性滤波算法,首先以图像的每一点(i,j)为中心选取一个滤波区域,一般可取 3×3的区域,然后对区域内的数据排列大小,取其中的中间值作为滤波输出结果。它对椒盐噪声有较好的抑制效果,但对高斯噪声的抑制作用不强。比较均值滤波、中值滤波两种算法各自的优缺点,本文将两种算法相结合,提出一种改进的中值滤波算法,算法中像素点在覆盖区域中的不同,对中值滤波结果的影响程度不同。本文采用3×3的区域,中心点的影响因素为1/3,其他点的影响因素为1/12,算法描述如下。
1)取(i,j)位置 3×3 的邻域,依据邻域中点的位置不同,将整个邻域分为3个区域,用X、Y、Z表示,如图3所示。
图3 改进的中值滤波过程Fig.3 Improvedmedian filtering process
2)给X、Y、Z区域点分配不同的权值,X区域的权值取1/12,Y区域的权值取1/12,Z区域的权值取1/3。将X、Y、Z区域的像素值分别与其权值相乘,得到新值。
3)分别取 X、Y、Z 区域新值的中值 fx、 fy、 fz,如果参与的数据个数为偶数,则结果为中间两个值的平均值。
4)取 fx、 fy、 fz的中值作为改进中值滤波 f(i,j)输出。
改进的中值滤波算法相对于经典中值滤波算法,增强了在不善于循环排序的并行CUDA语言中的应用效果;并且给像素点加入权值,采用两级中值滤波,兼顾平均值滤波,从而提高了对噪声的滤除效果,中值滤波和改进中值滤波效果见图 5(c)和图 5(d)。
3 改进的Laplace金字塔图像融合算法
根据滤波图像和边缘检测图像的特征不同,文中采用Laplace
金字塔分解的图像融合算法[8],达到增强图像的目的[3,9-10]。算法如图4所示:分为Guass塔式分解、建立Laplace金字塔、塔式子图像融合和Laplace图像重构。Laplace算法是一种二维运算算法,对于CUDA并行计算,计算较为复杂,数据传递次数多,降低了GPU并行计算的优势。因此,文中对Laplace算法进行了改进,w(m,n)=w(n)Tw(n),其中:
图4 Laplace金字塔分解的图像增强Fig.4 The image enhancement process by Laplace pyramid decomposition
可以将Gauss塔式分解先对每一行进行分解,再对每一列进行分解,理论证明,解耦前后数据处理的作用完全相同,但是解耦前要处理25次取值和加法运算,解耦后只需处理10次取值和加法运算,加快了处理速度。
改进的Laplace算法步骤如下:
1)Gauss塔式分解,包括低通滤波和降采样过程。设原图像G0为高斯分解第0层,则Gauss金字塔分解变换可用式(3)表示。
2)由Gauss金字塔建立Laplace金字塔。此过程分为内插放大和带通滤波两个过程。内插放大过程由式(4)、(5)表示,内插放大先对行数据内插放大两倍,再对列数据内插放大两倍,并且插值时,奇数位置用式(4)插值,偶数位置用式(5)插值。由Gl内插放大,得到放大的图像G*l,使G*l的尺寸与Gl-1的尺寸相同。
带通滤波过程就是Gauss金字塔本层图像与其高一层图像经过放大之后的图像之差。如式(6)所示。
3)Laplace子图融合过程。对不同层次的子图,采取不同的融合方法。本文将Laplace顶层子图作为图像的低频子图,其余层次子图作为图像的高频子图。Sobel边缘检测后的图像低频子图的信息较少,将中值滤波后的图像低频子图作为融合后的图像低频子图。对于高频子图,则需要分析纹理特征,根据各自不同特点,采用基于区域特性的能量加权平均融合规则。边缘提取的子图,有较明显的纹理特征,取能量最高的方向的能量均值作为该区域的能量权值,而中值滤波的图像则按照本区域能量均值作为能量权值,融合过程用式(7)表示。
其中G为融合后高频子图,G1、G2分别为边缘检测和中值滤波的高频子图,H1、H2为对应的能量权值。
4)Laplace 图像重构。 从 laplace 金字塔 LP0,LP1,…,LPN的顶层开始,按(8)式递推,便可得到重构图像。
其中G*l+1由Gl+1内插放大,最终可获得融合图像G0,即增强的红外图像,图像增强效果见图 5(g)和图 5(h)。
改进的Laplace金字塔图像融合算法与原Laplace金字塔融合算法相比,在Gauss分解过程中减少了3/5的计算量,在内插放大过程则减少了4/5的计算量。另外,比起原算法,改进算法跟适合CUDA实现。
4 红外图像增强算法的CUDA实现
红外图像增强的CUDA实现算法主要分为改进Sobel边缘检测、改进中值滤波和改进Laplace金字塔分解图像融合3个部分,其中改进Sobel边缘检测和改进中值滤波算法采用纹理拾取操作实现,并将处理后的数据放在全局存储器中,作为改进Laplace图像融合的数据源。
4.1 纹理拾取实现步骤如下
1)声明CUDA数组,分配二维数据空间,用cuda Creat Channel Desc()实例化结构体 cudaChannelFormat,使用cudaMallocArray分配二维的 CUDA数组,cudaMemcpyToArray()
将数据拷贝到纹理存储器中。
2)声明纹理参考系。纹理参考系通过一个作用范围为全文 件 的 texture 型 变 量 声 明 :texture <unsigned char,2,cudaReadModeNormailzedFloat>texRef。
3)设置运行时纹理参考属性为位置最近像元值、非归一化、钳位模式。方法如下:
4)纹理邦定。采用 cudaBindTextureToArray()将数据和纹理绑定,解除绑定用cudaUnbindTexture()。
5)纹理拾取与kernel启动。纹理拾取采用tex2D(texRef,… )实现。
改进 Sobel边缘检测调用的 kernel函数为 Sobel<<<gridsize,blocksize,0,stream>>>(…);
改 进 中 值 滤 波 调 用 filter <<<gridsize,blocksize,0,stream>>>(…);
4.2 Laplace图像融合算法的CUDA实现可分为4部分
1)申请二维数据空间:cudaMallocPitch((void**)& dst,&pitch,size);
2)定义 GPU 线程执行配置:Dim3 grid(blockx,blocky,1);Dim3 block(threadx,thready,1);
3)启动 kernel程序:Kernel<<<grid,block,0,stream>>>(…);
4)释放 GPU 数据空间:cudaFree(…);
Kernel函数的编写结构为:
定义线程索引
定义Shared Memory存储器结构:
5 实验结果及分析
文中所采用的实验环境:CPU采用Intel Core 2 Quad Q8200,4核, 主频 2.33 GHz;GPU 采用支持 CUDA 的 NVIDA GeForce GTX 480,计算能力 2.0,GPU 运行频率 1.4G,操作系统为Windows XP;实验测试平台采用visual studio 2005,结合CUDA2.0,windows API和 Opencv。 实验图像为 256×256 的 8位灰度红外图像,图 5(a)为原图像,图 5(b)为加噪声图像。本文所研究算法的图像处理结果如图5中各图像所示。
图5 图像数据处理结果Fig.5 The results of processing image data
表1列出了图5中各图像的平均值、标准差、平均梯度、空间频率和归一化方差等性能指标。由表1可得如下结论:①对比图 5(a)、(b)、(g)和(h),本文所研究的的红外图形增强算法有较好的增强效果,但抗噪声干扰方面还有待提高。②对比图 5(c)、(d)和图 5(e)、(f),改进的中值滤波和改进的Sobel边缘检测算法比改进前的算法在图像处理的质量上有一定的提高。
表1 图5中各图像性能指标数据统计Tab.1 Image performance statistics in figure 5
表2列出了文中所研究的红外图像增强算法在GPU和CPU上执行时间的实验结果。
表2中数据的对比图线如图6所示。从表2和图6可得到如下结论:1)文中所研究的红外图像增强算法在GPU上的执行时间明显少于CPU上的执行时间,GPU有明显的加速效果。原因分为两个方面:一方面,GPU有着高度的并行计算能力,能同时处理多个数据,分辨率为3 096×3 096的图像的加速比达32.189。另一方面,本文所研究的算法有较好的并行特性,如在改进的中值滤波算法中,除去了原算法中的排序算法;改进的Laplace塔式分解融合算法中,在Gauss分解和内插放大方面做了修改,使算法有更好的分块和并行特性,从而提高了GPU的运算效率。 2)GPU处理低分辨率的图像的加速效果没有高分辨率图像效果好。分辨率为3 096×3 096的图像的GPU加速比是分辨率为512×512的图象的3.5倍。因为有一定的时间开销花费在系统调度和数据传输上,被处理的数据越少,此方面占的比重越大。另外,被处理的数据量很大时,所需的线程不足,一部分并行计算反而被转化为串行,使得GPU的加速比的增量减缓,GPU的加速性能不能进一步提高。
表2 红外图像增强算法在GPU与CPU上的执行时间对比Tab.2 Execution time comparison of in frared image enhancem ent algorithms between by the GPU and CPU
图6 CPU与GPU执行效率对比图Fig.6 The comparison of execution efficiency between CPU and GPU
6 结束语
通过对红外图像进行改进的中值滤波和改进的Sobel边缘检测处理后,分析处理后图像的特征,采用改进的Laplace金字塔分解的图像融合算法,并基于CUDA并行处理技术,在可编程GPU上实现了红外图像快速增强的目的。这种方法可提高红外图像增强的实时性,适用于对实时性要求较高的领域。CUDA的并行计算技术的应用复杂,如何更充分的利用GPU的并行计算优势,加快红外图像处理速度,依然值得进一步研究。
[1]李俊山,杨威,张雄美.红外图像处理、分析与融合[M].北京:科学出版社,2009.
[2]朱玉娥,吴晓红,何小海.基于GPU图像边缘检测的实时性[J].电子测量技术,2009,32(2):140-142.
ZHU Yu-e,WU Xiao-hong,HE Xiao-hai.Real-time edge detection based on GPU[J].Electronic Measurement Technology,2009,32(2):140-142.
[3]李建林,俞建成,孙胜利.像素级的图像融合方法[J].红外,2007,28(1):9-13.
LI Jian-lin,YU Jian-cheng,SUN Li-Sheng.A Pixel-level image fusion approach[J].Infrared,2007,28(1):9-13.
[4]Yi S,Labate D,Easley GR,et al.A shearlet approaeh to edge analysis and detection[J].Image Processing,2008,18 (5):929-941.
[5]NVIDIA Corporation.CUDA Programming Guide 2.0[EB/OL].(2009).http://www.nvidia.com.
[6]张舒,褚艳利.GPU高性能运算之CUDA[M].北京:中国水利出版社,2009.
[7]沈庭之,王卫江,云雪梅.数字图像处理及模式识别[M].2版.北京:北京理工大学出版社,2007.
[8]Simth MI, Heather JP.A review of image fusion technology in 2005[J].Proc.of SPIE,2005(5782):29-45.
[9]刘成,闫钧华.用于飞行员视觉增强的快速红外图像增强方法[J].计算机工程与设计,2011,32(3):1002-1005.
LIU Cheng,YAN Jun-hua.Fast infrared image enhancement method for enhancing pilots’ sight[J].Computer Engineering and Design,2011,32(3):1002-1005.
[10]敬忠良,肖刚,李振华.图像融合:理论与应用[M].北京:高等出版社,2007.