基于图形处理器的图像实时去雾方法

文档序号:10656840阅读:504来源:国知局
基于图形处理器的图像实时去雾方法
【专利摘要】本发明公开了一种基于图形处理器的图像实时去雾方法,主要解决现有技术中采用计算机中央处理器CPU处理速度慢,不适合对高分辨率图像进行实时去雾的缺点。其实现步骤为:1.初始化计算机,并输入有雾图像并读取图像数据;2.计算输入雾图的暗通道图;3.根据暗通道图计算大气光值;4.计算输入雾图的初始透射率图;5.对初始透射率图进行引导滤波得到最终透射率图;6.根据最终透射率图对景物进行复原,输出清晰无雾图像。本发明能保证良好的去雾效果,且处理速度快,满足1080p图像的实时去雾要求,可用于对高分辨率图像的实时去雾处理。
【专利说明】
基于图形处理器的图像实时去雾方法
技术领域
[0001] 本发明属于图像处理技术领域,更进一步设及一种图像实时去雾方法,可用于室 外目标识别跟踪、公路视觉监视、卫星遥感监测等领域当中。
【背景技术】
[0002] 雾图的产生主要是因为大气中雾、水蒸气等浑浊媒质的散射影响,使摄像机接收 到的光强严重衰减,所获图像对比度较低,细节信息不明显,信息的可辨识度大大降低。因 此,为了保证图像清晰度和信息的可辨识度,并改正图像因大气光而带来的色移,通常采用 图像去雾算法对雾图进行处理。基于暗通道先验的图像去雾算法从物理上对图像进行去 雾,效果明显且真实自然,所W被广泛应用在图像去雾领域当中。
[0003] 但是由于该算法计算复杂度高,处理速度较慢,因此限制了其在实时去雾领域的 应用。近年来,为了解决图像去雾算法时间效率低的问题,许多基于不同平台的优化去雾算 法应运而生。然而运些算法都只对分辨率较小的图像有良好的效果,对高清视频图像却依 然难W做到实时处理。所W,在采用暗通道先验的去雾算法保证良好的去雾效果基础上,将 精力放在如何提升算法运算速度上,从而诞生了使用GPU的高性能计算提高暗通道先验去 雾算法速度的想法。GPU高性能计算是当前一个热口的研究领域,通过GPU的并行架构与CPU 相结合,有效地减少计算时间、提高运算效率的一种运算方案。
[0004] 四川川大智胜软件股份有限公司,四川大学的专利申请"一种基于CUDA的图像实 时去雾方法"(公开号:〔化030498904,申请号:〔肥01310017014.乂,申请日:2013年1月17日) 中公开了一种基于CUDA的图像实时去雾的方法。该方法主要利用CUDA构建CPU与GPU协同工 作环境;输入原始有雾图像,获取该图像的暗原色图像及其大气光值;根据暗原色先验获取 原始有雾图像的透射率初始值,并利用引导滤波算法得到优化后的透射率;根据大气散射 模型中的原始有雾图像、透射率分布和大气光确定去雾后的复原图像。该方法充分结合CPU 和GPU各自的优点,构建两者协同工作的编程模型,并利用暗原色先验知识与大气散射模型 估计出大气光值、透射率分布,最终实现又好又快的实时雾天图像复原效果。例如对分辨率 为600X400的低分辨视频图像,其处理速度可W达到32帖/秒,基本满足实时去雾要求。该 方法的不足是整个实现方案的并行度不够,部分过程仍然使用CPU进行串行处理,GPU计算 部分没有充分挖掘数据的复用性,并且未采用纹理存储和共享存储等高速存储器对数据的 访问模式进行优化,导致其只能对低分辨视频图像进行实时处理,当图像分辨率稍高一些 时,则不能实现快速处理,比如对分辨率为720 X 576的视频图像,其处理速度仅为21帖/秒。 显然,对于IOSOp运样的高清视频图像难W实现实时处理。

【发明内容】

[0005] 本发明的目的在于针对上述现有技术的不足,提供一种基于图形处理器GPU的高 清视频图像实时去雾方法。W保证良好的去雾效果,提高去雾效率,实现对高清视频图像的 实时去雾处理。
[0006] 实现本发明目的的具体思路是:采用暗通道先验的图像去雾算法,提出基于图形 处理器GPU的高性能并行计算方案对算法的各个模块进行深度优化,在保证去雾效果的基 础上,最大限度的提高算法处理速度。其技术方案包括如下:
[0007] (1)初始化计算机:将图形处理器GPU与计算机连接起来,由计算机分配图形处理 器GPU中的全局存储器;
[0008] (2)将RGB彩色有雾图像I输入到计算机内存中,读取输入雾图I的数据,并将读取 到的整型数据转换为浮点型数据存储在全局存储器中;
[0009] (3)计算输入雾图I的暗通道图IdaA:
[0010] (3a)通过并行处理方式,求出输入雾图I中每个像素点的=通道最小值,生成一幅 灰度图,并将数据存储在全局存储器中;
[0011] (3b)将所得灰度图像与纹理存储进行绑定;
[0012] (3c)通过并行处理方式,对绑定到纹理存储中的图像进行最小值滤波,即先进行 行向最小值滤波,再对行向滤波后的结果进行列向最小值滤波,得到输入雾图I的暗通道图 Jdatk,并将其存储在全局存储器中.
[0013] (4)求取大气光值:
[0014] (4a)采用合并访存方式,利用归约算法计算出输入雾图暗通道图像中亮度最大的 0.1 %的像素点,并将运些点的坐标存储在全局存储器中;
[0015] (4b)采用合并访存方式,利用归约算法选定(4a)中存储坐标对应输入雾图I中最 亮点的像素值作为大气光A值;
[0016] (5)通过并行处理方式,计算图像中每个点的初始透射率:
[0017]
<1>
[0018] 用计算得到的所有F(X)生成初始透射率图f,并存储在全局存储器中,其中,AK表 示任意一个颜色通道的大气光值,常数《取〇. 95;
[0019] (6)通过并行处理方式,W输入雾图I的灰度图I'为引导图像,取滤波核尺寸为35 X35,对初始透射率图!?进行引导滤波,将滤波后输出的精细化图像,作为最终透射率图t存 储在全局存储器中;
[0020] (7)通过并行处理方式,根据式<2〉计算输入雾图I中每个点经过去雾之后的像素 值 J(X):
[0021] I(x) =J(x)t(x)+A(l-t(x)) <2>
[0022] 其中,I(X)表示输入雾图I中任意X点的像素值,t(x)表示最终透射率图t中任意X 点的透射率值,A代表大气光值;
[0023] 用计算得到的所有J(X)生成清晰无雾图像J,并将数据存储在全局存储器中;
[0024] (8)采用合并访问的方式,从图形处理器GPU内部的全局存储器中读取所得清晰无 雾图像J,输出到计算机内存中。
[0025] 与现有技术相比,本发明具有W下优点:
[0026] 第一,本发明提出将连接有图形处理器GPU的计算机作为硬件实现平台,采用 Tesla-C2075GPU硬件架构,克服了现有技术中并行计算性能不高W及GPU资源利用率不高 的缺点,使得本发明对高分辨率图像进行去雾处理的效率更高,速度更快;同时由于本发明 采用多线程并行处理的方式,对一幅图像中多个像素点的计算同时进行,使得图形处理器 GPU的资源得到了更加有效的利用。
[0027] 第二,本发明引入行列滤波分开进行的思想来实现最小值滤波算法,先对输入图 像进行行向滤波,再对行向滤波的结果进行列向滤波,减少了单个像素的比较次数,减少了 计算量,提高了最小值滤波算法的运算速度;同时由于本发明在最小值滤波算法的具体实 现过程中引入纹理存储的访问模式,克服了滤波过程中大量的边界判断指令对warp流水线 操作的中断影响,提高了数据访问速度,进一步提升了算法的运行效率。
[0028] 第=,本发明引入图像转置的方法来实现均值滤波算法,同样引入行列分开的滤 波思想,先对均值滤波的输入图像进行转置,对转置后的图像进行基于滑窗制的列向均值 滤波;再对列向滤波后图像的进行逆转置W及列向均值滤波,即可得到最终结果;本发明通 过图像转置的方式保证了每个线程在同一位置的数据是连续的,因此可W采用合并访问的 模式来读取数据,提高了数据访问速度,克服了算法执行效率不高的缺点。
[0029] 第四,本发明引入滑窗制的均值滤波算法,其包含了数据复用的概念,相较传统算 法对图像中每个元素进行滤波时都要进行一遍循环累加的复杂计算,计算量小,运算速度 快。
[0030] 第五,本发明在利用归约算法计算大气光值,W及在均值滤波中对图像进行转置 时,引入合并访存的数据访问模式,提高了数据访问速度,优化了显存的性能;克服了现有 技术对存储器中数据访问速度慢,效率不高的缺点。
[0031] 第六,本发明引入单线程处理单/单列像素点,多线程并行处理的计算方法,克服 了现有技术中串行处理消耗时间过长、计算量过大的缺点,提高了去雾算法的效率W及图 形处理器GPU资源的利用率。
【附图说明】
[0032] 图1是本发明的实现流程图。
[0033] 图2是本发明用于实验的S组有雾图像。
[0034] 图3是本发明对附图2中S组有雾图像进行去雾之后的S组结果图。
【具体实施方式】
[0035] 下面结合附图1对本发明做进一步描述。
[0036] 步骤1,初始化计算机。
[0037] 将图形处理器GPU与计算机连接起来,图形处理器GPU是指Tesla-C2075图形处理 器GPU硬件架构;
[0038] 计算机为图形处理器GPU分配共享存储器,纹理存储器和全局存储器S种存储空 间,用来存放图形处理器GPU进行并行计算时的数据,运些数据包括输入雾图的图像数据、 输出清晰图像的图像数据W及各个内核函数输出的中间结果。
[0039] 步骤2,输入雾图I并读取图像数据。
[0040] 将雾图I输入到计算机内存中并读取其图像数据,将整型数据转换为浮点型数据 存储在全局存储器中。
[0041] 步骤3,计算输入雾图I的暗通道图idaA。
[0042] 采用单线程对单像素点进行计算,多个线程同时对多个点进行计算的方式,求出 输入雾图I中每个像素点的=通道最小值,生成一幅灰度图Idatk',并将其存储在全局存储 器中;
[0043] 将灰度图Idatk'与纹理存储进行绑定,即采用纹理存储的访问模式读取灰度图 Idatk'中的数据;取滤波核尺寸为l5X15,?行列分开的滤波模式对灰度图IdaTk'进行最小值 滤波,滤波过程中采用单线程对单像素点进行滤波,多个线程同时对多个点进行滤波的方 式;滤波输出结果即为暗通道图Idatk,并将其存储在全局存储器中。
[0044] 步骤4,计算大气光值A。
[0045] 采用合并访存的方式,即采用共享存储器的访问模式对暗通道图Idatk中的数据进 行访问,利用归约算法计算暗通道图Idatk中亮度最大的0.1%的像素点,并将运些点的对应 坐标存储在全局存储器中;
[0046] 采用合并访存的方式,利用归约算法选定上述存储的坐标对应输入雾图I中最亮 点的像素值作为大气光值A;
[0047] 运里之所W使用共享存储器对暗通道图Idatk中的点进行访问,是因为在图形处理 器GPU架构中,每个线程可使用的寄存器数目是有限的,GPU不能提供足够的寄存器来存放 数据,所W将常量数据放入共享存储器中,不但解决了存储器数目有限的问题,更提高了数 据的访问速度;
[004引合并访存的方式是指,在图形处理器GPU中,同一个half-wa巧中的线程每次访问 共享存储器中同一位置上的数据。
[0049]步骤5,采用单线程对单像素点进行计算,多个线程同时对多个点进行计算的方 式,求出输入雾图I中每个点的初始透射率/飞A-)。
[0化0]
:<衫:
[0化1]用计算得到的所有^(.^)生成初始透射率图?^并存储在全局存储器中,其中,46表 示任意一个颜色通道的大气光值,常数《取〇. 95。
[0052]步骤6,计算最终透射率图t。
[0化3] W输入雾图I的灰度图I'为引导图像,取滤波核尺寸为35X35,对初始透射率图/ 进行引导滤波,滤波过程中采用单线程对单像素点进行滤波,多个线程同时对多个点进行 滤波的方式,将滤波输出的精细化图像作为最终透射率图t存储在全局存储器中。其中,引 导滤波算法的具体实现步骤如下:
[0054] (6a)分别对引导图像I'和初始透射率图?进行均值滤波:
[0055] (6al)采用合并访存的方式,对引导图像I '进行转置,转置过程中每个线程块 block执行一个16X16的子数据块的转置,每个线程thread执行一个像素点的转置,多个线 程块block并行处理,将转置后的图像I'T存储在全局存储器中;
[0056] (6a2)采用单线程对单列像素点进行滤波,多个线程同时对多个列进行滤波的方 式,对转置后的图像I' T进行滑窗制的列向均值滤波:
[0057] (6a2a)取滤波半径为7,记图像I'T中第1行第巧揃像素点为(I'T)日,日,W(I'T)日,0为 滤波中屯、,计算第I行到第15行的第I列所有点像素值之和S皿0,0;
[005引(6曰26)^第1行第^'列的像素点(1'了)1^为滤波中屯、,计算第1-7行到第1巧行的第占- 列的所有点的像素值之和Siimi, j:
[0059] S 皿 i,j = s 皿 i,j-i-(rT)ij-i-7+(I,T)i,j" <4>
[0060] 其中,i = 0,l,. . . ,m-l,j = 0,l,. . . ,n-l,m表示图像I'T的高度,n表示图像I'T的宽 度; T 別川1 .
[0061] (6a2c)根据上述S皿十算第i行第j列的像素点(I'T)i,北勺滤波输出为 Zx /十I
[00创 (6a2d似此类推,对图像I'T中的所有像素点按上述(6a2b)-(6a2c)进行滤波,输 出最终的滤波结果WeaMiiTS
[0063] (6a3)采用合并访存的方式,对最终的滤波图像进行逆转置,即用每个线程 块block执行一个16X16的子数据块的转置,每个线程thread执行一个像素点的转置,多个 线程块block并行转置多个数据块,得到逆转置图像WWW,/ ;
[0064] (6a4)对逆转置图像再次进行列向均值滤波,输出均值滤波最终结果 mea打I' ;
[00化](6曰5)按照如上述相同的过程对初始透射率图f进行均值滤波;
[0066] 经过上述(6al)-(6a5)的过程,分别输出滤波后的结果meanr和《00巧,并将结果 存储在全局存储器中;
[0067] (6b)计算引导图像I'的方差矩阵varr和引导图像I'与初始透射率图J的协方差 系数矩阵CWf;:,并根据方差矩阵van'和协方差系数矩阵CWw,计算第一线性相关系数矩阵 a和第二线性相关系数矩阵b:
[006引
<5>
[0069] 其中,修正因子e取1〇-5;
[0070] (6c)分别对第一线性相关系数矩阵a和第二线性相关系数矩阵b进行均值滤波,分 别输出滤波结果meana和meanb,结合meana和meanb计算最终的透射率图t:
[0071] t=meana.*I'+meanb。<6〉
[0072] 步骤7,采用单线程对单像素点进行计算,多个线程同时对多个点进行计算的方 式,通过式<7〉求出输入雾图I中每个点经过去雾之后的像素值J(X):
[0073] I(x)=J(x)t(x)+A(l-t(x)) <7〉
[0074] 其中,I (X)表示输入雾图I中任意X点的像素值,t (X)表示最终透射率图t中任意X 点的透射率值,A代表大气光值;
[0075] 用计算得到的所有J(X)生成清晰无雾图像J,并将数据存储在全局存储器中;
[0076] 步骤8,输出清晰无雾图像:
[0077] 采用合并访问的方式,从图形处理器GPU内部的全局存储器中读取出清晰无雾图 像的数据,输出到计算机内存中。
[0078] 本发明的效果通过如下实验进一步描述。
[0079] 本发明的硬件环境是Tesla-C2075图形处理器GPU硬件架构,中央处理器CPU型号 为 Intel(R)Core(TMH5-2450M, 2.50GHz。
[0080] 实验I,用本发明方法对如图2所示的=组有雾图像进行去雾处理,得到去雾后的 结果,如图3所示,其中图3(a)是对第一幅雾图2(a)的去雾结果,图3(b)是对第二幅雾图2 (b)的去雾结果,图3(c)是对第S幅雾图2(c)的去雾结果,由图3可见,本发明的去雾效果良 好,去雾后的图像清晰自然。
[0081] 实验2,将本发明进行图像去雾时所需的处理时间与基于CPU的图像去雾算法进行 图像去雾时所需的处理时间进行对比,结果如表1:
[0082] 表1中输入雾图的分辨率大小分别是270 X 193,600 X 400,800 X 457,1024 X 768, 1920X1080;
[0083] 表1本发明处理时间与CPU处理时间对比
[0084]
[0085] 从表1可见,本发明对运些图像进行去雾时均可做到实时处理;采用基于CPU的图 像去雾算法对图像进行去雾时,对分辨率大小为270 X 193,600 X 400,800 X 457,1024 X 768,1920 X 1080的图像,处理时间分别为23.1 Ims,143.47ms,260.52ms,494.34ms, 1329.40ms;而本发明在图形处理器GPU上对图像进行去雾时,对分辨率大小为270 X 193, 600 X 400,800 X 457,1024 X 768,1920 X 1080 的图像,处理时间分别为 2.02ms ,6.22ms, 7.57ms,14.02ms,29.77ms;对比中央处理器CPU与图形处理器GPU对图像进行去雾时所需的 处理时间,对于分辨率大小分别为270 X 193,600 X 400,800 X 457,1024 X 768,1920 X 1080 的图像,GPU相较CPU获得的加速比分别是11,23,34,35,45。
[0086] 可见,图像分辨率越大,GPU相较CPU获得的加速比越高,图形处理器GPU卓越的计 算能力越能体现出来。
[0087] 综上,本发明提升了去雾效率,能实现对高清视频图像的实时去雾处理。
【主权项】
1. 一种基于图形处理器的图像实时去雾方法,包括: (1) 初始化计算机:将图形处理器GHJ与计算机连接起来,由计算机分配图形处理器GPU 中的全局存储器; (2) 将RGB彩色有雾图像I输入到计算机内存中,读取输入雾图I的数据,并将读取到的 整型数据转换为浮点型数据存储在全局存储器中; (3) 计算输入雾图I的暗通道图IdariS (3a)通过并行处理方式,求出输入雾图I中每个像素点的三通道最小值,生成一幅灰度 图,并将数据存储在全局存储器中; (3b)将所得灰度图像与纹理存储进行绑定; (3c)通过并行处理方式,对绑定到纹理存储中的图像进行最小值滤波,即先进行行向 最小值滤波,再对行向滤波后的结果进行列向最小值滤波,得到输入雾图I的暗通道图 Idalrk,并将其存储在全局存储器中; (4) 求取大气光值: (4a)采用合并访存方式,利用归约算法计算出输入雾图暗通道图像中亮度最大的 〇. 1 %的像素点,并将这些点的坐标存储在全局存储器中; (4b)采用合并访存方式,利用归约算法选定(4a)中存储坐标对应输入雾图I中最亮点 的像素值作为大气光A值; (5) 通过并行处理方式,计算图像中每个点的初始透射率?0):<1> 用计算得到的所有?(4生成初始透射率图?,并存储在全局存储器中,其中,Ae表示任意 一个颜色通道的大气光值,常数ω取0.95; (6) 通过并行处理方式,以输入雾图I的灰度图Γ为引导图像,取滤波核尺寸为35X35, 对初始透射率图?进行引导滤波,将滤波后输出的精细化图像,作为最终透射率图t存储在 全局存储器中; (7) 通过并行处理方式,根据式〈2>计算输入雾图I中每个点经过去雾之后的像素值J (X): I(x)=J(x)t(x)+A(l-t(x)) <2> 其中,I(X)表示输入雾图I中任意X点的像素值,t(x)表示最终透射率图t中任意X点的 透射率值,A代表大气光值; 用计算得到的所有JU)生成清晰无雾图像J,并将数据存储在全局存储器中; (8) 采用合并访问的方式,从图形处理器GPU内部的全局存储器中读取所得清晰无雾图 像J,输出到计算机内存中。2. 根据权利要求1所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤 (3a)、步骤(3c)步骤(5)、步骤(6)、步骤(7)中的并行处理方式是指,单线程处理单像素点, 多个线程同时处理多个点。3. 根据权利要求1所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤(3b) 中所述的将所得灰度图像与纹理存储进行绑定是指,在滤波核尺寸取15X15的最小值滤波 过程中,采用纹理存储的访问模式对灰度图像中的数据进行访问,以克服最小值滤波中边 界判断指令对warp流水线操作的中断影响,提高数据的访问速度。4. 根据权利要求1所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤 (4a)、步骤(4b)中的合并访存方式是指,在图形处理器GPU中,采用共享存储器的访问模式 对数据进行处理,同一个half-warp中的线程每次访问共享存储器同一位置上的数据。5. 根据权利要求1所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤(6) 对初始透射率图?进行引导滤波,按如下步骤进行: (6a)分别对引导图像Γ和初始透射率图?进行均值滤波,分别输出滤波后的结果meanr 和,计算引导图像Γ的方差矩阵van,和引导图像Γ与初始透射率图f的协方差系数 矩阵: (6b)根据上述方差矩阵van,和协方差系数矩阵,计算第一线性相关系数矩阵&和 第二线性相关系数矩阵b: 一以) <3> b = mean, - a.mccwr 其中,修正因子ε取l〇_5; (6c)分别对第一线性相关系数矩阵a和第二线性相关系数矩阵b进行均值滤波,分别输 出滤波结果meana和meanb,结合meana和meanb计算最终的透射率图t: t=mean a ·氺1'+meanb 〇 〈4>〇6. 根据权利要求6所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤(6a) 中分别对引导图像Γ和初始透射率图Γ进行均值滤波,步骤如下: (6al)采用合并访存的方式,对引导图像Γ进行转置,转置过程中每个线程块block执 行一个16 X 16的子数据块的转置,每个线程thread执行一个像素点的转置,多个线程块 block并行处理,将转置后的图像Γτ#储在全局存储器中; (6a2)对转置后的图像〗'1进行滑窗制的列向均值滤波,即用单线程处理单列像素点,用 多个线程同时对多个列进行滤波,滤波输出结果》存储在全局存储器中; (6a3)采用合并访存的方式,对图像进行逆转置,即用每个线程块block执行一 个16X16的子数据块的转置,每个线程thread执行一个像素点的转置,多个线程块block并 行转置多个数据块,得到逆转置图像; (6a4)对逆转置图像..7再次进行列向均值滤波,输出均值滤波最终结果meanr ; (6a5)按照如上述相同的过程对初始透射率图f进行均值滤波。7. 根据权利要求7所述的基于图形处理器的图像实时去雾方法,其特征在于:步骤 (6a2)中对转置后的图像Γ τ进行滑窗制的列向均值滤波,步骤如下: (6a2a)取滤波半径为7,记图像Ι'τ中第1行第1列的像素点为(Γτν〇,以(T tVo为滤波 中心,计算第1行到第15行的第1列所有点像素值之和sumo,〇; (6a2b)以第i行第j列的像素点(Γτ)^为滤波中心,计算第i-7行到第i+7行的第j列的 所有点的像素值之和sunn, j: sumi,j = sumi,j-i_(I 'T)i,j-1-7+(1 'T)i,j+7 <5> 其中,i = 0,l,. . .,m-l,j = 0,l,. . .,n-l,m表示图像Ι'τ的高度,η表示图像Ι'τ的宽度; sum . (6a2c)根据上述sumw计算第i行第j列的像素点(Tt)W的滤波输出为 (6a2d)以此类推,对图像1〃中的所有像素点按上述(6a2b) - (6a2c)进行滤波,输出最 终的滤波结果。
【文档编号】G06T5/00GK106023091SQ201610255815
【公开日】2016年10月12日
【申请日】2016年4月22日
【发明人】吴宪云, 王茹, 李云松, 雷杰, 王柯俨, 刘凯
【申请人】西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1