一种改进的图像阴影去除方法
2021-04-17胡德敏胡钰媛褚成伟
胡 晨,胡德敏,胡钰媛,褚成伟
(上海理工大学 光电信息与计算机工程学院,上海200093)
阴影作为干扰图像质量的因素,根据其产生原因的不同分成两类:一种是由于物体没有接受光源照射产生的影子,即自阴影;另一种是由于自身对光源的遮挡在另一个物体上产生的影子,称为投影阴影[1]。本文主要解决投影阴影问题。
阴影去除主要分为两大类型:有模型方法和无模型方法。基于有模型的方法是对场景中的目标根据先验知识,建立模型以区分阴影与非阴影。该方法效果较好但是建模过程复杂耗时。无模型方法只需根据阴影光照、颜色、几何特征等来去除阴影,无需长时间训练。但该方法会导致纹理不一致以及色彩偏移等问题[2],易降低阴影去除后的视觉效果。
文献[1,3]中基于模型学习角度建立数据集对阴影进行训练进而去除阴影。该方法针对单色图像即非彩色图像而设计,无法解决彩色图像的阴影处理。文献[4~6]虽然能较好地恢复阴影处真实信息,但需要大量预训练,训练不充分易导致阴影去除后纹理不一致。上述方法依赖于长时间的训练,训练不足会导致阴影去除失败。
文献[2,7]无需模型训练,但均需无阴影背景图来去除阴影。如果无背景图,将无法去除阴影。文献[8]基于光照优化去除阴影,缺点是当相似区域纹理差别大时,会导致阴影去除后纹理不一致与光照不饱和。文献[9]依据HSI空间检测出阴影,但未恢复阴影处光照。文献[10]将非阴影区域与阴影区通道的平均值之比作为常数,对检测出的阴影区域乘以常数去除阴影,在恢复图像阴影区域时会造成纹理不一致。
针对以上阴影去除后存在纹理不一致与光照饱和以及需大量训练的问题。本文使用HSV颜色格式比率直方图的方法检测图像中阴影,提出了一种基于Retinex新的估算入射光图以及改进梯度下降中权重求取的方法,旨在通过改善光照不饱和与增强反射光图纹理来得到无阴影图像。
1 阴影检测
阴影去除过程可以分为两个过程:阴影检测以及恢复阴影区域的真实信息[11]。阴影去除需先检测出图像中阴影区域。目前致力于研究阴影检测的方法中,文献[12]通过将RGB格式的原图转换为HSV(色度、饱和度、亮度)格式、YUV(亮度、色度、浓度)格式以及YIQ(亮度、相位、正交)格式获得阴影亮度和饱和度,利用亮度与饱和度检测阴影。相比于YIQ注重伽马校正,YUV注重兼容彩色与黑白制式电视机,HSV格式是根据人观察色彩的生理特征而提出的颜色格式,视觉效果上更友好。与其它两种方法相比,在HSV格式下,阴影检测效果更佳,因此本文使用HSV格式获取饱和度与亮度。
将RGB颜色通道的图像转换为HSV颜色通道后[13],对图像值域0~255按照式(1)进行归一化。
(1)
式中,R、G、B分别为RGB图像分离后的通道。对于每一个像素点设max等于归一化后R′、G′、B′中的最大值,min等于这些值中的最小值,按照式(2)转换到亮度通道V。
V=max
(2)
按照式(3)转换到饱和度通道S。
(3)
依据上述计算式转换RGB图像得到饱和度S和亮度V通道值。利用阴影像素具有较高的饱和度和较低亮度值特点,使用通道V和通道S计算每个像素点x的归一化饱和值差分指数(Normalized Saturation Value Difference Index,NSVDI)。
基于阴影区域的像素在亮度和饱和度的比率直方图中,值比非阴影区域要高的特点,结合最大类间方差法(Nobuyuki Ostu,OSTU)在比率直方图中分割阴影与非阴影区域[8]。如式(4)所示,利用NVSDI在阴影识别中的广泛应用[14-15]作为判断阴影像素点标准。
(4)
其中,S是饱和度分量;V是亮度值分量。对于每一个像素点计算其NSVDI值,得到一个r(x)的灰度图像。应用OSTU方法自适应求出r(x)直方图的最优阈值T[12],如式(5)所示。
(5)
其中,Pi是灰度级为i的像素点的概率;将图像按T分为背景与对象,w(T)是其中一类灰度图像的零阶累积矩,μ(T)是另一类;θ是原始图片的总平均级别。
利用OSTU阈值对NSVDI直方图进行判断,将图像中所有像素点值r(x)与阈值T相比较判断像素点为阴影或非阴影:r(x)>T为阴影;r(x) 检测出图像中的阴影区域后,需要恢复阴影区域的真实信息。使用基于Edwin.H.Land提出的Retinex理论恢复阴影区域的真实信息[7]。 Retinex理论认为一幅图像I由反射图像R和入射图像L组成,原理图如图1所示。 图1 Retinex示意图 当入射光照射在反射物体上时,反射物体将入射光反射到观察者眼中,由此形成观察者最终看到的图像。Retinex理论可用式(6)表示。 Ix=Lx·Rx (6) 其中,Ix代表照相机接收到或人眼观察到的图像;Lx代表环境光的入射图像,直接决定了图像中像素所能达到的动态范围;Rx代表反射光图像是增强后的图像[16]。式(6)有其明确的物理意义,即人眼观察到的图像可以分解成所需要的反射光图像与入射光的乘积。在式(6)中已知Ix的值,Lx与Rx的值均未知且Rx是所求的值,通过简单的计算式变换,可以得到Rx=Ix/Lx,欲获得增强后图像Rx只需求解未知图像Lx。 作为一种颜色恒定方法,文献[17]中试图利用max-RGB中R、G、B这3种颜色通道来获取估计光照,但这种方法只能提高全局光照。为了解决非均匀光照,对于阴影像素x,本文提出了新的估算方法,如式(7)所示。 (7) 其中,Ωx是以像素x为中心的n×n个像素的邻域;变量c为邻域内像素点;y是区域内索引,将其赋值给Lx;用平均值替代最大值避免像素x光照恢复后不饱和。将式(7)代入式(6)后得式(8),如下所示。 (8) 其中,ε是一个极小正常数,存在目的是保证式子有意义,该计算式可以不均匀的提高阴影处的亮度。为保证式(8)有意义,基于式(7)将图像倒转可表示为 1-Ix=[1-Rx]·Lx+a[1-Lx] (9) 其中,加入权重因子a用来调整饱和度,接下来阐述式(9)与式(6)的关系。 (10) 将式(10)代入式(9)中可得式(11)。 (11) 在式(11)中,当a的值取1时可以发现其与式(8)相等,因此保证了公式推演的正确性。此处a取值σn/σs·μs;其中,σn和σs分别是非阴影与阴影区域像素方差;μs是阴影区域像素平均值。 实际照明条件下阴影边缘光照强度逐渐减弱,阴影检测时可能存在边界检测不准确的情况。阴影光照恢复后,边缘光照过度不自然,严重影响阴影去除的效果,因此需平滑边缘区域。边缘区域使用n×n均值滤波平滑阴影与非阴影区域。根据距离阴影边缘远近,按式(12)由近及远赋予由大到小的权值。 1-d/(max-min) (12) 其中,max与min分别是区域中像素点距离边缘像素最远及最近的距离;d是区域像素距离边缘像素点的距离。 在恢复阴影区域光照后会引起纹理细节的丢失,为了还原丢失的纹理细节需要应用原始阴影图像作为指导,以便增强阴影区域S的纹理细节。本文改进了纹理增强梯度下降方法中权重的系数,增强纹理的计算式如式(13)所示。 (13) 式(13)中前半部分是数据项,后半部分是梯度约束项,用来保持阴影区域的梯度信息。Ix是原图中像素x的值;Rx是恢复亮度后的像素x的值;∇是梯度算子;λ1是用于平衡梯度的约束项,本文将其改进取值为σn/σs·μs,σn和σs分别是非阴影与阴影区域像素方差,μs是阴影区域像素平均值。 由于阴影的影响,阴影区域的梯度可能会减弱,因此为式(13)中的原始梯度新设置了一个权重系数λ2来补偿光遮挡造成的梯度弱化。对于一幅图像来说λ2是固定的,取值为μn-σn/σs·μs,μn是非阴影区域像素平均值。改进后的函数如式(14)所示。 (14) 通过式(14)梯度下降法解决了纹理细节丢失的问题,纹理细节的增强,可以有效恢复阴影区域的真实信息,达到去除阴影的效果。 文中提出去除阴影的算法如下所示,并在数据集UIUC上验证了算法的有效性。 算法:阴影去除算法; 输入:已知RGB图像阴影位置Ishadow与原始图像I; 输出:阴影去除后恢复阴影处真实信息的图像R′。 1.x∈Ω;//Ω是以阴影像素点x为中心的n×n的区域 2.w←0;//初始化平滑权重 3.for eachxin shadow 4.calculateσs//阴影区域像素方差 5.calculateμs//阴影区域像素平均值 6.end for; 7.for eachxin noshadow 8.calculateμn//非阴影区域像素平均值 9.calculateσn//非阴影区域像素区域方差 10.end for; 11.λ1,a←σn/σs·μs; 12.λ2←μn-σn/σs·μs; 13.Ishadow→R′、G′、B′ //分离通道为R′、G′、B′ 14.for eachxin shadow 15.将x带入式(9)计算得Lx 16.Rx←((Ix-1+a)/(1-1/a+Lx))+1-a 17.end for; 18.for eachxin edge 19.foriinΩ 20.wi←1-d/(max-min) 21.根据权重平滑边缘区域 22.end for 23.end for; 24.for eachxin shadow 25.∇Ix//对原图像求导后,计算每个像素的值 26.∇Rx//求导 27.Rx←∑(Ix-Rx)2+λ1∑(∇Ix-λ2∇Rx)2//恢复阴影处纹理细节 28.end for 本文实验的目的是改善阴影恢复后原阴影处的光照不饱和度与纹理一致性,并用公开数据集UIUC验证结果。实验的软硬件环境如表1所示。 表1 软硬件环境 为评估阴影检测效果,阴影检测评价标准采用平均错误率(Balanced Error Rate,BER)计算了阴影区域与非阴影区域像素级分类误差率,如式(17)所示。 (17) 其中,TN、TP分别表示正确分类的非阴影与阴影像素数;FP表示错误分类为阴影的非阴影像素数;FN表示错误分类为非阴影的阴影像素数。使用BER方法的原因是因为图像中阴影像素点比非阴影像素点数目少,BER值越低表示阴影检测效果越好。 为衡量阴影去除效果,文献[18]在文献[6]提出的均方根误差(Root Mean Square Error,RMSE)方法的基础上,提出了均方根误差比(Root Mean Square Error Ratio,ER)来衡量阴影去除的效果。本文使用文献[18]的评价标准,如式(18)所示。 (18) 其中,IS、IR″、IG分别表示阴影图像、阴影去除后的图像、无阴影真实图像,均方根误差比值越小表明效果越好。 4.2.1 阴影检测 将获取的RGB颜色通道图像转换到HSV三通道格式,分离三通道获得色度H、饱和度S、亮度V,依据阴影具有较高的饱和度和较低的亮度值,根据式(4)对每个像素点计算得到归一化饱和值差分指数NSVDI。 图2所示为得到的NSVDI结果图,从左到右依次为S饱和度、V亮度和NSVDI阴影遮罩图。 图2 饱和强度图 由图2可以看出,应用饱和度与亮度信息计算得到的NSVDI图中阴影明显区别于图像其它部分。对得到的NSVDI使用大津法自动获取阈值,每一个像素点的NSVDI与阈值相比较,大于阈值的为阴影像素点,小于阈值的为非阴影像素点。比较后得到的阴影二值掩码图如图3所示。 图3 二值掩码图 由图3可以看出,图像中阴影已被识别出来。使用本文与其它方法在公开数据集UIUC上检测阴影的平衡误差率如表2所示。 表2 平衡误差率对比 由表2可以看出,相比于其它方法,在本文OSTU方法下,阴影检测的平衡误差率更低,阴影检测效果更好。这是由于本文使用OSTU方法对HSV模式下饱和度与亮度的饱和度差分指数自动求取阈值,可更好地检测出阴影。文献[1]提出的方法由于受到低反射率影响导致BER值更高;文献[6]提出的方法通过训练寻找成对区域来检测阴影,当训练不充分时会导致高的BER值;文献[10]则是依托于固定阈值,导致阴影分类不准,从而在某些情况下BER值高。 4.2.2 恢复阴影真实信息 在估算入射光方法中,通过多次对比实验发现Ωx的邻域取值n范围在3~5时效果较好。当n取值过大时会出现色彩偏差,过小时达不到估算效果。在平滑阴影边缘区域中,多次对比实验数据表明平滑范围值n取5~8时可以达到较好的效果。n较小时平滑效果不明显,当取更大的值时平滑效果增加不明显。 假定ER(image)表示在整幅图像上计算均方根误差得到的ER值;ER(shadow)表示在阴影位置计算均方根误差得到的ER值。本文阴影去除方法与其它阴影去除方法在UIUC数据集上均方根误差比ER值比较如表3所示,视觉效果对比则如图4所示。 由图4可以看出,本文方法在饱和度上比其它方法恢复的更好,这是由于本文采用HSV模式将最大值替换为均值,解决了光照不饱和问题。文献[10]提出的方法没有考虑光照饱和问题,而是直接使用固定常数恢复阴影区域信息,因此在某些情况下饱和度过高。相比于其它几种方法,本文提出的方法在纹理细节上视觉效果更佳,这是由于本文使用改进的纹理增强梯度下降方法,不需要大量模型训练,节省了时间。文献[1]提出的方法采用支持邻域内部平滑来恢复阴影真实信息,该方法没有考虑阴影内部纹理信息。文献[6]提出的方法依赖于不同照明对和不同材料对,当照明对与材料对寻找不准确时导致阴影恢复效果欠佳。同样由于上述原因,在表3的均方根误差比中相对于其它方法本文方法的值更低。 表3 均方根误差比 图4 实验结果对比图 阴影的存在会造成有用信息的丢失,本文在Retinex理论基础上,提出了一种估算入射光图和改进梯度下将方法中权重的方法,改善了光照恢复不饱和问题。对于每一个阴影处像素点,初步恢复阴影处信息的值,之后利用自适应权重参数恢复阴影区域的纹理,可达到恢复阴影区域真实信息的目的。阴影检测使用亮度与饱和度信息在减少计算量的同时提高了阴影识别准确率。真实数据集实验表明,本文方法相对于其它主流方法在平衡错误率、均方根误差比两个评估指标上有着明显的提高,同时保持了较好的视觉效果。后期工作中,将进一步探究在复杂背景下提高去除阴影后纹理的一致性。2 恢复阴影区域真实信息
2.1 Retinex理论
2.2 估算入射光
2.3 平滑边缘区域
2.4 恢复纹理细节
3 基于Retinex的阴影去除算法
4 实验与分析
4.1 评价指标
4.2 实验结果分析
5 结束语