APP下载

一种基于阈值分割的自适应逆光图像处理算法*

2020-12-07田文启段新涛张润泽

计算机与数字工程 2020年10期
关键词:逆光直方图亮度

田文启 李 震 段新涛 张润泽

(1.河南师范大学计算机与信息工程学院 新乡 453007)

(2.郑州市财贸学校 郑州 450000)

1 引言

在日常生活中,照相机成为了我们不可缺少的一个重要工具,但大多数人并没有学习过摄影所需要的基本的技巧,造成所拍摄的照片质量不佳,有的时候甚至造成所要拍摄的物体完全看不清楚,其中常见的有运动模糊、抖动、光照不均等造成的图像质量不佳,所以通过相应的图像处理算法解决此类问题很有必要。逆光恢复算法主要针对由于逆光拍摄所造成的照片质量不佳这一问题进行分析和解决。关于逆光问题已经有很多研究者对逆光图像增强的方法进行了探究,常见的逆光图像增强技术[1]可分为两大类:全局处理算法、局部处理算法。基于全局的图像增强技术主要包括:空间域里有直方图均衡化[2]、直方图匹配化[3]、对数变换[4~5]等,其中直方图均衡化是利用图像的直方图分布,将其中较暗区域的灰度值拉伸到整个灰度空间,从而达到提升对比度的效果,但其仅适用于整体偏暗的逆光图像,直方图匹配化则是将直方图均衡化作为中间结果,进而得到原始像素的规定化后的像素之间的映射关系,改变图像的直方图,达到图像增强的目的,而对数变换频域里主要方法有同态滤波[6];基于局部的图像增强算法常见的有Retinex其包括单尺度Retinex 算法[7]和多尺度Retinex 算法[8]另外也有平衡保持双直方图均衡[9]这些全局的算法都有一个通病,要么对逆光区增强不够要么对非逆光区的亮度提升的过高造成非逆光区细节的损失,虽然已经有能很好克服这个问题的算法但其算法复杂度又过高如文献[10]。本文基于文献[10~11]的思路和基础,对分割后的逆光区和非逆光区分别采用不同的算法处理力求找到一种较为合适的算法组合,解决图像非逆光区的虚化的问题,以及相比于其他类似算法具有较低算法复杂度的新的逆光恢复算法。

2 现有光照不均图像处理的算法

用现有的图像逆光处理算法在具体的实施上又可以分为时域算法和频域算法[12],以下我将分别列出:时域逆光算法线性亮度变换、非线性亮度变换,和频域逆光算法中比较经典的Retinex 算法、同态滤波。

2.1 频域算法

用图像的频域算法,首先对图像的像素矩阵进行时域频转换,在频域对图像进行处理,其中变换域并不只频域一种,相应的还有小波域[13]、离散余弦变换(DCT)[14]等,这里我们只探讨傅里叶变换后所对应的频域,在快速傅里叶变换(fft)被发现以前,由于运算量过大造成用计算机实现傅里叶变换很难实现,即使使用快速傅里叶变换,时频转换也会增加算法的运算量,但利用图像像素矩阵在频域的性质,可以得到很好的逆光恢复效果。

2.1.1 Retinex算法

Retinex 的原理基于所有的颜色都是物体反射不同波长的光的能力所决定的,该算法主要有单尺度(SSR)的Retinex 算法[15]、多尺度(MSR)Retinex算法以及彩色恢复多尺度Retinex 算法。这里主要介绍单尺度(SSR)算法,一幅图像可以表示为由入射图像R(x,y)和反射图像L(x,y)共同构成,实现该算法的公式如下:

参数c 的选择会直接影响图像增强的效果,c越小,SSR 的动态压缩能力越强,图像阴暗部分的细节得到更好的增强,但是由于平均对比度范围较小,结果会产生颜色失真;c 越大,SSR 的颜色保真度越高,但是动态压缩能力会减弱。通常SSR是在动态范围压缩和色感一致性之间寻找平衡点,其恢复效果如下:

图1 单尺度Retinex增强

2.1.2 同态滤波

同态滤波的思想和Rtinex的思想是一致的,但具体实施的方法有所不同,同态滤波通过滤波器来完成对图像入射分量的去除,从而只保留图像的反射分量,将图像f(x,y)建模成,入射分量i(x,y)和反射分量r(x,y)的乘积,所以有:

对两边取对数,并做Fourier 变换,得到线性组合的频率域:

对低频能量进行压制,这样就降低了动态范围,而要对高频进行提高,这样就增强了图像的对比度,同态滤波的变换函数如下:

同态滤波结果如图2。

2.2 时域域算法

图像的时域算法又叫做空间域处理[12],即直接对图像的像素值所构成的矩阵空间进行处理,现有的时域逆光恢复算法大多是对图像进行亮度变换,通过设计一个可以满足要求的变换函数,对像素矩阵直接进行变换得到相应的处理结果。

图2 同态滤波效果

2.2.1 线性亮度变换

线性亮度变换的变换函数是线性的,即其函数图像是由一条直线或者几条直线构成,其中比较有代表性的两段折线调节公式如下:

其中是提前选好的分割逆光区和非逆光区的阈值,其中k1、k2、b1、b2分别是两条直线的斜率和截距,是可以根据需要调节的,其变换函数图像如图3。

图3 分段函数变换函数示例图

2.2.2 非线性亮度变换

非线性亮度变换函数的定义和原理与线性变换的类似,只不过是把线性函数变换成了非线性函数,其中把对数作为其变换函数比较常见,变换公式如下:

式子中的c 是用来控制图像亮度提升的大小的,当c 越大的时候,图像的整体亮度就被提升的更亮。

文献[11]中作者提出了一种改进的非线性自适应逆光处理算法,有效地避免了对数变换法对图像的非逆光区的过度增强的缺点,本文的逆光区的增强算法就是基于此算法,它使得用更少的非逆光区的亮度提升就能弥补图像分割所带来的边界失真问题成为可能。

图4 非线性亮度变换结果

3 图像分割

根据逆光图像的特点,其分割算法适合采用基于阈值的分割算法,相较于其他的图像分割算法,具有计算简单、运算效率较高的优点。这里我们选用了阈值分割算法里比较成熟且常用的Otsu 算法。这里用fn(x,y)≤T 表示逆光区,用fn(x,y)>T表示非逆光区,用pi=ni/MN 表示亮度为i的概率,阈值T 的选区就是为了将逆光区和亮光区分开,设图像的大小为M×N,L 表示亮度级,ni表示亮度级为i的像素数目,那么图像的像素值为MN=n0+n1+n2+…nL-1,阈值T取能使类间方差达到最大的值。

公式中的P1(T)是像素值分到逆光区的概率,m(T)是逆光区的均值,m1是亮光区的均值,以上就是Otsu 算法选区阈值T 的方法。我们采用在图像的灰度空间上等间隔取阈值的方法来验证Otsu 算法在图像的逆光恢复上的适用性,阈值的选取示意图如图5。

图5 阈值选取示a区间意图

按照数轴中的整个a 区间的阈值进行分割的结果如图6所示。

从图可以看出,阈值取在a2L2 到a2R1 之间的效果最好,我们再次进行同样的步骤对[a2L2,a]按照a 区间的方法及命名规则命名为区间b,等间隔取阈值,从效果看出从b2R1 到b2R2(b 区间的命名规则与a 区间类似)的效果较好且无明显差别,故我们得到结论对于这张逆光图片阈值应该取在[115,124]之间,归一化后得到效果较好的阈值区间为[0.44,0.48]。同样的我们将区间[a,a2R1]命名为c 区间操作,类似的我们得到从c2L1 到c2L2(c区间命名规则和b 区间一致)效果差不多,归一化后得到阈值区间为[0.48,0.54],综合两个区间可得当阈值取在区间[0.44,0.54]中都能得到较好的分割效果。图像的直方图如图7所示。

图6 a区间分割效果图

图7 图像的直方图

我们所确定的最佳区间在两峰值之间,是符合理论实际的,图8 是采用Otsu 算法所确定的阈值进行图像分割的效果。

图8 Otsu分割效果图

Otsu 算法得到的归一化分割阈值为0.525,在我们所确定的最佳分割的阈值区间里,因此验证了Otsu算法对于逆光图像分割效果的有效性。

4 对现有逆光算法的改进

为了解决非逆光区的虚化以及算法复杂度过高的情况,本文提出了一种基于阈值分割的自适应逆光恢复算法,其算法流程图如图9所示。

图9 本文算法流程图

首先将图像由RGB 空间转化到HSV 空间,这么做的目的是,在不影响逆光恢复的效果的同时减少算法的复杂度和参与运算的数据量,因为图像的逆光恢复只涉及到了图像的亮度分量,所以我们只需要对图像的亮度分量进行处理。其次我们对图像的亮度分量进行分割,所采取的方法就是Otsu算法,对分割后的逆光区进行非线性逆光调节[11],使得用更少的非逆光区的亮度提升就能弥补图像分割所带来的边界失真问题,其变换函数如下:

其中参数C 控制图像变换后的亮度大小其选取遵循如下规则:

参数D的选取则采用如下公式:

其中参数A的选取采用下面的公式:

公式中的k 为常数,选取的为定值k=60,而对图像进行分割后只对暗区进行操作虽然克服了非逆光区的过度增强问题,但带来了比较棘手的问题,即分割边缘的衔接不自然所带来的不好的视觉体验,文献[10]采用了基于局部信息熵的自适应图像增强融合,但算法复杂度过高,尤其是当图像很大的时候,而本文针对这一问题采用了对非逆光区进行亮度提高和增强处理的方法,使得图像衔接的更加自然,我们采用了非线性叠加算法[16]对非逆光区增加亮度,其算法公式如下:

其中img(x,y)是处理后较亮的图像像素值,I(x,y)为要提升亮度的图像像素值,k 为常数值在[0,1]之间的数,可以调节亮度的提升强度,当k 越大时,则亮度提升的越高,这里我们选的k 值为处理后逆光区归一化后最亮的像素值。最后将处理好的逆光区和亮度调整后与处理过的非逆光区融合到一起,并转换回RGB 色彩空间。其整个过程的各个步骤的运行结果,和最终的处理效果图如图10。

图10 本文各个步骤效果图

由图可以看出,对非逆光区域进行亮度提升后,其分割边缘不衔接的问题得到了有效的解决,消除因为图像分割所带来的不良的视觉体验,算法复杂度也大大降低,解决了非逆光区的虚化问题。

5 仿真结果分析

本文所给出的运行结果和运行时间均是在内存为4GB(DDR3)、显卡为GeForce GTX960M、CPU频率为2.3GHz、操作系统为Windows10的笔记本电脑上进行的,所采用的软件为Matlab2016b。

5.1 算法的稳定性

本文算法与其他列举的算法在对不同大小和类型的逆光图像的恢复效果对比如图11所示。

通过对比可以看出本文算法在处理不同大小,不同亮度的图像其效果具有鲁棒性,图像在非逆光区的虚化问题得到了解决。

5.2 算法的复杂度

算法的时间复杂度也比其他的自适应算法低,表1 是本文算法和文献[10]的算法对不同各大小的图像进行逆光恢复的运行时间对比表。

图11 算法运行效果对比图

表1 算法运行时间对比表

由算法运行时间对比表可以看出,本文所提出的算法在避免了非逆光区虚化的情况下,具有较低的算法时间复杂度。

5.3 逆光图像恢复的质量

对于逆光图像的恢复质量的好坏我们采用了图像的信息熵值来衡量,图像的信息熵越高则表明图像所包含的信息越多细节越多,可以作为逆光图像恢复质量的一个评判标准,表2 是各种不同逆光恢复算法恢复出的图像的信息熵。

表2 处理后图像信息熵对比表

由信息熵值大小的对比结果可以看出算法对图像细节损失的多少,可以看出本文所提出的方法在保证了图像的细节的前提下,具有较高的信息熵,即获得了较好逆光恢复效果。

6 结语

为了解决逆光恢复算法对图像非逆光区域的亮度过度提升所造成的虚化以及算法复杂度过高的问题,本文验证了Otsu算法对逆光图像分割的适用性,提出了一种基于阈值分割的图像自适应逆光恢复算法。为了弥补逆光区和非逆光区的衔接问题所带来的不佳视觉体验,对非逆光区采用了非线性亮度叠加算法进行亮度提升,得到了较好效果的逆光恢复图像,解决了非逆光区的虚化问题,对比其他现有的逆光恢复算法,该算法具有较低的时间复杂度,且能较好的恢复逆光区的细节。

猜你喜欢

逆光直方图亮度
用于遥感影像亮度均衡的亮度补偿方法
符合差分隐私的流数据统计直方图发布
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
基于差分隐私的高精度直方图发布方法
逆光的魅力与作用
亮度调色多面手
vivo X20:逆光摄影展
亮度一样吗?
中考频数分布直方图题型展示