一种图像快速去雾方法、装置、终端及存储介质与流程

文档序号:20707439发布日期:2020-05-12 16:39阅读:135来源:国知局
一种图像快速去雾方法、装置、终端及存储介质与流程

本发明涉及图像处理技术领域,尤其涉及一种图像快速去雾方法、装置、终端及存储介质。



背景技术:

雾天图像存在广泛,如晨雾、海雾、雾霾、雨雾等等。在雾天条件下拍摄的照片,通常具有对比度低、亮度高、细节不清楚等特点。去雾技术一般分为两种:基于非物理模型的去雾和基于物理模型的去雾。前者基于非物理模型的去雾技术,一般是以去除噪声、提高对比度为目的,常用的方法有:直方图均衡化、retinex算法、小波变化和同态滤波。后者基于物理模型的去雾技术,对雾天图像建立退化模型,从而逆向恢复出无雾图像,其中比较经典的是2009年何凯明提出的基于暗通道先验理论的去雾算法。

基于暗通道先验理论的去雾算法能有效去除非天空、雪地等纯白且高亮度区域中的雾,恢复出的图像协调且色彩不失真。

但是,此去雾算法也存在几个明显的缺点:

1)由于暗通道先验理论的定义是:在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值,所以基于暗通道先验理论的去雾技术对于天空是失效的;

2)经典的基于按通道先验理论去雾的技术中,大气光值估计复杂度高,影响算法的实时性;

3)此技术去雾后,图像整体亮度较低,细节对比度较弱。



技术实现要素:

本发明所要解决的技术问题在于,提供一种图像快速去雾方法、装置、终端及存储介质,能够有效避免现有技术对天空区域失效的问题,减少计算大气光值过程中的排序与循环遍历问题,有利于算法在硬件上实现,同时能达到亮度合适、细节明显、整体图像均衡、色彩不失真的效果。

为解决上述问题,本发明实施例提供一种图像快速去雾方法,包括:

s1.通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域;

s2.通过clahe增强算法,对所述天空区域进行clahe增强,得到所述天空区域的去雾图像;

s3.通过改进的暗通道理论,对所述非天空区域首先分别进行暗原色增强和clahe增强,然后取两者均值以增强对比度和亮度,得到所述非天空区域的去雾图像;

s4.对所述天空区域的去雾图像和所述非天空区域的去雾图像进行去雾复原处理,得到所述原始有雾图像对应的去雾图像。

优选地,所述通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域,包括:

s11.将原始有雾图像进行灰度化处理,得到灰度图像;

s12.使用中值滤波器消除椒盐噪声,保护所述灰度图像的边缘信息;

s13.采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描;

s14.多种方式联合判断天空边界,并标记天空区域和非天空区域;其中,确定天空区域的必要条件,列头元素为天空边界特殊情况和利用水平或竖直方向梯度判断非列头天空边界。

优选地,步骤s11中,所述将原始有雾图像进行灰度化处理,能够快速标识天空与非天空的矩阵,由以下公式确定:

g(x,y)=0.299*i(x,y,1)+0.587*i(x,y,2)+0.114*i(x,y,3)(公式1);

其中,i(x,y,1)、i(x,y,2)、i(x,y,3)分别表示rgb色彩空间的三通道;

步骤s12中,使用中值滤波器消除椒盐噪声,由以下公式确定:

gmed(x,y)=med{g(i,j),(i,j)∈ω(x,y)}(公式2);

其中,ω(x,y)表示以坐标(x,y)为中心的邻域像素,取半径为r的矩形区域(r为大于0的整数)。med表示将邻域像素值排序后,取中间像素值;

步骤s13中,采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描,如果列头元素属于非天空区域,则此列后续位置像素全为非天空区域,如果列头元素属于天空区域,则通过亮度阈值和梯度变化联合确定天空边界,此列后续像素为非天空区域;

步骤s14中,所述多种方式联合判断天空边界,具体的:

天空边界的判断考虑计算水平或竖直方向相邻两组梯度值;

天空区域像素亮度值大于图像的均值亮度,以此为天空区域的必要条件,即:

gmed(x,y)>mean(gmed),(x,y)∈esky(公式3);

其中,esky表示属于天空区域的坐标集合,mean(gmed)表示对计算均值滤波图像的均值;

对于第一行像素,可能全部属于天空区域,也可能只有部分属于天空区域;当第一行不全是天空区域时,可得到部分天空边界在第一行,满足如下公式:

对于图像的某一列,当天空与非天空的边界不为列头元素即不满足上述公式时,采用水平或竖直方向计算梯度差天空与非天空区域的边界,边界判定条件如下:

其中,g(x,y)为图像坐标为(x,y)处的亮度值,tgrad为自定义的梯度阈值,tlight为自定义的亮度阈值;联合(公式3-5),可得到天空与非天空区域的边界,记为boundary(y),此数组记录了对于第y列,天空与非天空的边界在第boundary(y)行;

若天空区域记为1,那么标记天空区域和非天空区域的矩阵flag(x,y)为:

即,从天空边界数组得到标记矩阵。

优选地,所述改进的暗通道理论,为:

在绝大多数非天空的区域中,某些像素至少有一个色彩通道的值很低;

假设输入图像为j(x,y),则暗通道可以用如下公式表示:

其中,ω(x,y)表示以坐标(x,y)为中心的区域,表示输入图像在坐标(i,j)处rgb三通道的最小值;

在计算机视觉中,有如下经典雾图退化模型:

i(x,y)=j(x,y)t(x,y)+a(1-t(x,y))(公式8);

应用公式7,将公式8变形可得到:

其中,ω是去雾参数,值可为0~1,一般建议取值0.9~0.95;

为了去雾后图像协调,对得到的透射率图需要再进行细化操作,处理方法是引导滤波法,最终得到的去雾图像为:

重新定义大气光值的计算方法:在暗通道图中取亮度值最亮的点,与一个自定义大气光值阈值比较,取两者最小值为大气光值。

优选地,通过天空区域识别算法,得到标记天空区域与非天空区域的矩阵flag(x,y);

通过clahe增强算法,得到亮度和对比度增强的图像,假设为clahe(x,y);

通过改进的暗通道理论,得到非天空区域增强的图像j(x,y);

综合上述三种算法,得到原始有雾图像对应的去雾图像为:

本发明实施例还提供一种图像快速去雾装置,包括:

天空区域识别单元,用于通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域;

天空区域处理单元,用于通过clahe增强算法,对所述天空区域进行clahe增强,得到所述天空区域的去雾图像;

非天空区域处理单元,用于通过改进的暗通道理论,对所述非天空区域首先分别进行暗原色增强和clahe增强,然后取两者均值以增强对比度和亮度,得到所述非天空区域的去雾图像;

去雾复原处理单元,用于对所述天空区域的去雾图像和所述非天空区域的去雾图像进行去雾复原处理,得到所述原始有雾图像对应的去雾图像。

优选地,所述天空区域识别单元,具体用于:

将原始有雾图像进行灰度化处理,得到灰度图像;

使用中值滤波器消除椒盐噪声,保护所述灰度图像的边缘信息;

采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描;

多种方式联合判断天空边界,并标记天空区域和非天空区域;其中,确定天空区域的必要条件,列头元素为天空边界特殊情况和利用水平或竖直方向梯度判断非列头天空边界。

本发明实施例还提供一种终端设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的图像快速去雾方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的图像快速去雾方法。

实施本发明实施例具有如下有益效果:

针对暗通道先验理论对天空失效的问题,本发明提出先利用天空平均亮度高且区域对比度小的特性,将图像划分为天空区域和非天空区域。对非天空区域,使用暗通道去雾,有效避免了对天空失效的问题。

针对利用暗通道理论计算去雾图像过程中,大气光值估计算法复杂度过高的问题,本发明也做了算法优化。对于大气光值,原始定义为:在暗通道图中取亮度值前0.1%像素,对应到原图中取最亮的值即为大气光值,此方式太过复杂。本发明重新定义大气光值的计算方法:在暗通道图中取亮度值最亮的点,与一个自定义大气光值阈值比较(如240),取两者最小值为大气光值。这样大大减少了计算大气光值过程中的排序与循环遍历问题,有利于算法在硬件上实现。

针对暗通道去雾图像亮度低、细节弱的问题,本发明采用限制对比度自适应直方图均衡(clahe)算法增强图像整体亮度和细节。对于非天空区域,采用本发明实施例改进的暗原色理论+clahe结合技术。对于天空区域,单独使用clahe技术。最终组合结果能达到亮度合适、细节明显、整体图像均衡、色彩不失真的效果。

附图说明

图1是本发明一个实施例提供的图像快速去雾方法的流程示意图;

图2是本发明一个实施例提供的去雾算法流程框图;

图3是本发明一个实施例提供的天空区域识别算法流程框图;

图4是本发明一个实施例提供的图像分成4个小块示意图;

图5是本发明一个实施例提供的直方图裁剪过程示意图;

图6是本发明一个实施例提供的clahe的插值示意图;

图7是本发明一个实施例提供的天空标识算法结果图;

图8是本发明一个实施例提供的原始暗原色去雾和本发明去雾技术效果对比图;

图9是本发明一个实施例提供的信息熵和ssim客观对比两种增强效果示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1-2。

一种图像快速去雾方法,包括:

s1.通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域;

s2.通过clahe增强算法,对所述天空区域进行clahe增强,得到所述天空区域的去雾图像;

s3.通过改进的暗通道理论,对所述非天空区域首先分别进行暗原色增强和clahe增强,然后取两者均值以增强对比度和亮度,得到所述非天空区域的去雾图像;

s4.对所述天空区域的去雾图像和所述非天空区域的去雾图像进行去雾复原处理,得到所述原始有雾图像对应的去雾图像。

请参阅图3。

在具体的实施例当中,所述通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域,包括:

s11.将原始有雾图像进行灰度化处理,得到灰度图像;

s12.使用中值滤波器消除椒盐噪声,保护所述灰度图像的边缘信息;

s13.采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描;

s14.多种方式联合判断天空边界,并标记天空区域和非天空区域;其中,确定天空区域的必要条件,列头元素为天空边界特殊情况和利用水平或竖直方向梯度判断非列头天空边界。

在具体的实施例当中,步骤s11中,所述将原始有雾图像进行灰度化处理,能够快速标识天空与非天空的矩阵,由以下公式确定:

g(x,y)=0.299*i(x,y,1)+0.587*i(x,y,2)+0.114*i(x,y,3)(公式1);

其中,i(x,y,1)、i(x,y,2)、i(x,y,3)分别表示rgb色彩空间的三通道;

步骤s12中,雾天图像中椒盐噪声对后续利用梯度方式判定天空边缘影响特别大,因此,必须在预处理阶段就将椒盐噪声去除。在各种去噪算法中,中值滤波不仅能有效去除椒盐噪声,而且能保护图像的边缘细节信息。

中值滤波是一种非线性平滑技术,基本原理是将某一点的像素值设置为以其为中心的邻域所有像素值的中值。

使用中值滤波器消除椒盐噪声,由以下公式确定:

gmed(x,y)=med{g(i,j),(i,j)∈ω(x,y)}(公式2);

其中,ω(x,y)表示以坐标(x,y)为中心的邻域像素,取半径为r的矩形区域(r为大于0的整数)。med表示将邻域像素值排序后,取中间像素值;

步骤s13中,采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描。因为天空区域在图像上侧,所以需要按列判断天空边界在一列的哪一个位置。如果列头元素属于非天空区域,则此列后续位置像素全为非天空区域,如果列头元素属于天空区域,则通过亮度阈值和梯度变化联合确定天空边界,此列后续像素为非天空区域;

步骤s14中,所述多种方式联合判断天空边界,具体的:

单独采用亮度判断非列头像素是否为天空区域,这很不准确。对于大多数图像,每列只会有一个天空边界。同时,天空区域和非天空区域梯度有一个明显的变化,这表现在水平或竖直方向。为了避免图像条纹或噪声等假边界的干扰,这里天空边界的判断考虑计算水平或竖直方向相邻两组梯度值;

天空区域像素亮度值大于图像的均值亮度,以此为天空区域的必要条件,即:

gmed(x,y)>mean(gmed),(x,y)∈esky(公式3);

其中,esky表示属于天空区域的坐标集合,mean(gmed)表示对计算均值滤波图像的均值;

对于第一行像素,可能全部属于天空区域,也可能只有部分属于天空区域;当第一行不全是天空区域时,可得到部分天空边界在第一行,满足如下公式:

对于图像的某一列,当天空与非天空的边界不为列头元素即不满足上述公式时,采用水平或竖直方向计算梯度差天空与非天空区域的边界,边界判定条件如下:

其中,g(x,y)为图像坐标为(x,y)处的亮度值,tgrad为自定义的梯度阈值,tlight为自定义的亮度阈值;联合(公式3-5),可得到天空与非天空区域的边界,记为boundary(y),此数组记录了对于第y列,天空与非天空的边界在第boundary(y)行;

若天空区域记为1,那么标记天空区域和非天空区域的矩阵flag(x,y)为:

即,从天空边界数组得到标记矩阵。

在具体的实施例当中,clahe增强算法。

clahe的中文名为对比度限制的自适应直方图均衡,此算法能避免一般直方图均衡算法导致可能导致的局部对比度损失和亮区过增强现象。

clahe算法可分为三步:图像分块、有裁剪的直方图均衡化和线性插值。

(1)图像分块

将原始图像分成大小一样的n个矩形,为后续无失真提高图像对比度做准备。注意,图像分块数目不宜过多,以免大幅影响算法复杂度。一般的,我们将图像分成4*4的小块,请参阅图4。

(2)有裁剪的直方图均衡化

为避免亮区过度增强和细节损失,避免图像失真,需要对子块中统计得到的直方图进行裁剪,使其幅值低于某个上限,当然裁剪掉的部分又不能扔掉,我们还需要将这部分裁剪值均匀地分布在整个灰度区间上,以保证直方图总面积不变,请参阅图5。

其中,n为图像灰度级,num(n)则为对应灰度级n的像素数目,limit是裁剪值。

(3)线性插值

插值是为了消除因为分块进行直方图均衡化,从而引起的块现象,请参阅图6。

在具体的实施例当中,所述改进的暗通道理论,为:

在绝大多数非天空的区域中,某些像素至少有一个色彩通道的值很低;

假设输入图像为j(x,y),则暗通道可以用如下公式表示:

其中,ω(x,y)表示以坐标(x,y)为中心的区域,表示输入图像在坐标(i,j)处rgb三通道的最小值;

公式7指出了暗通道值趋近于零,造成这一现象的原因主要有三个:

①建筑物、汽车、树木等的阴影;

②色彩鲜艳的花朵、建筑、风景等;

③光照昏暗的角落等等。

在计算机视觉中,有如下经典雾图退化模型:

i(x,y)=j(x,y)t(x,y)+a(1-t(x,y))(公式8);

应用公式7,将公式8变形可得到:

其中,ω是去雾参数,值可为0~1,一般建议取值0.9~0.95;

为了去雾后图像协调,对得到的透射率图需要再进行细化操作,处理方法是引导滤波法,最终得到的去雾图像为:

重新定义大气光值的计算方法:在暗通道图中取亮度值最亮的点,与一个自定义大气光值阈值比较,取两者最小值为大气光值。

这样大大减少了计算大气光值过程中的排序与循环遍历问题,有利于算法在硬件上实现。

在具体的实施例当中,通过天空区域识别算法,得到标记天空区域与非天空区域的矩阵flag(x,y);

通过clahe增强算法,得到亮度和对比度增强的图像,假设为clahe(x,y);

通过改进的暗通道理论,得到非天空区域增强的图像j(x,y);

综合上述三种算法,得到原始有雾图像对应的去雾图像为:

在具体的实施例当中,基于天空识别和改进暗原色去雾算法的实验效果。

这里选取一组图像进行实验,图像分辨率为325*450,首先进行天空区域识别。这里采用3*3的中值滤波模板,得到的实验效果图如图7。

图7中的图(c)即是标识天空的二值化图像,白色表示天空区域,黑色表示非天空区域。

对于原始暗原色和本发明实施例去雾技术,设置中值滤波半径为1,最小大气光值a=240,最小值滤波半径为4,引导滤波半径为40,引导滤波中引导图设置为原图对应的灰度图,引导滤波的正则化参数设置为0.01。设置完成后,原始暗通道去雾算法和本发明实施例基于天空识别和改进暗原色去雾算法的效果对比图如图8。

从主观上,可以发现本发明实施例增强后图像天空区域不会出现过增强现象,同时图像细节和亮度都相对原始暗原色去雾算法有较为明显的提升。

在客观上,这里使用ssim和信息熵评价图像增强效果。ssim评价的是两幅图像的结构相似性,即从亮度、对比度、结构三方面综合评价两图的相似程度,相似度越高,说明失真越小。信息熵表示灰度分布的聚集特征,用于评价图像平均信息量的多少,图像灰度级分布越平均,信息熵越大。对图8进行客观评价如图9所示。

从客观对比来看,本发明实施例增强比经典暗原色增强更为优秀,信息熵体现了本发明实施例去雾图像具有更多细节,ssim体现了本发明实施例去雾图像与原始图像相似度更高,体现为失真更小。注意,原图的ssim为1,表示原图和原图的相似度为100%。

由于天空区域识别算法、clahe增强和改进的暗通道先验去雾算法可以并行运行,这很适合在fpga等平台上并行加速。同时,本发明实施例算法时间复杂度低,这有利于在硬件平台上实现视频的实时去雾。

现对于现有技术,上述实施例具有如下有益效果:

针对暗通道先验理论对天空失效的问题,本发明提出先利用天空平均亮度高且区域对比度小的特性,将图像划分为天空区域和非天空区域。对非天空区域,使用暗通道去雾,有效避免了对天空失效的问题。

针对利用暗通道理论计算去雾图像过程中,大气光值估计算法复杂度过高的问题,本发明也做了算法优化。对于大气光值,原始定义为:在暗通道图中取亮度值前0.1%像素,对应到原图中取最亮的值即为大气光值,此方式太过复杂。本发明重新定义大气光值的计算方法:在暗通道图中取亮度值最亮的点,与一个自定义大气光值阈值比较(如240),取两者最小值为大气光值。这样大大减少了计算大气光值过程中的排序与循环遍历问题,有利于算法在硬件上实现。

针对暗通道去雾图像亮度低、细节弱的问题,本发明采用限制对比度自适应直方图均衡(clahe)算法增强图像整体亮度和细节。对于非天空区域,采用本发明实施例改进的暗原色理论+clahe结合技术。对于天空区域,单独使用clahe技术。最终组合结果能达到亮度合适、细节明显、整体图像均衡、色彩不失真的效果。

本发明实施例还提供一种图像快速去雾装置,包括:

天空区域识别单元,用于通过天空区域识别算法,将原始有雾图像划分为天空区域和非天空区域;

天空区域处理单元,用于通过clahe增强算法,对所述天空区域进行clahe增强,得到所述天空区域的去雾图像;

非天空区域处理单元,用于通过改进的暗通道理论,对所述非天空区域首先分别进行暗原色增强和clahe增强,然后取两者均值以增强对比度和亮度,得到所述非天空区域的去雾图像;

去雾复原处理单元,用于对所述天空区域的去雾图像和所述非天空区域的去雾图像进行去雾复原处理,得到所述原始有雾图像对应的去雾图像。

优选地,所述天空区域识别单元,具体用于:

将原始有雾图像进行灰度化处理,得到灰度图像;

使用中值滤波器消除椒盐噪声,保护所述灰度图像的边缘信息;

采用从左往右、从上往下的按列扫描方式对所述灰度图像进行扫描;

多种方式联合判断天空边界,并标记天空区域和非天空区域;其中,确定天空区域的必要条件,列头元素为天空边界特殊情况和利用水平或竖直方向梯度判断非列头天空边界。

本发明实施例还提供一种终端设备,包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的图像快速去雾方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的图像快速去雾方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1