导向滤波的高光去除改进算法

2021-10-28 05:59:32郭碧茹孔韦韦
计算机工程与应用 2021年20期
关键词:高光色度像素点

郭碧茹,孔韦韦,陈 斌

1.西安邮电大学 计算机学院,西安 710121

2.陕西省网络数据分析与智能处理重点实验室,西安 710121

机器视觉应用过程中涉及的检测算法与采图效果有很强的关联性。然而,在实际场景中,由于环境光的限制,导致很多情况下无法获得理想的打光效果。譬如,当目标物体的表面较为光滑时,可能会出现反光现象,而反光部分在图像中通常是显著区别于周围颜色的高光区域,在该区域中,目标物体原有的纹理、形状、颜色等特征都会出现不同程度的减弱甚至消失。与此同时,图像中高光区域的存在,还会直接导致图像分割[1]、图像识别[2]及特征匹配[3]过程中产生错误。因此,图像中高光区域的存在是影响机器视觉应用的一个重要问题,有必要研究如何去除图像中的高光从而恢复物体的原有特征的有效方法。

针对该问题,国内外主流解决方法大致分为两类:基于实验室标定的序列图像高光补偿方法[4]以及基于双色反射模型[5]的单张图像高光去除方法。因为基于序列图像高光补偿的方法对光源的数量和位置变化有要求[6],实际情况下往往难以获得合格的序列图像,因此,对单张图像的高光去除方法显得尤为重要。

基于单张图像的高光去除方法主要基于由镜面反射和漫反射构成的双色反射模型。Shafer[5]率先提出了能够分离镜面反射分量的双色反射模型。之后,Tan等[7]根据Shafer的研究,将像素点投射到最大强度色度空间,采用从镜面到漫射机制和强度对数微分的方法,分离出了漫反射分量和镜面反射分量,但在分离过程中,像素点色度发生了变化,从而导致图像的颜色失真;郑芝寰等[8]为解决颜色失真的问题,提出基于色度聚类的高光区域选取算法和利用MSF图像寻找高光点的体色度的算法,但计算过程较为复杂;Yang等[9]基于漫反射分量的最大部分在彩色图像中平滑变化的特性,将低通滤波器应用到颜色分量的最大部分用于估计镜面反射分量,该方法可以去除高光,但是对于黑色像素点会出现褪色和纹理缺失现象;高如新等[10]针对褪色和纹理缺失问题,将漫反射分量的像素点和镜面反射分量的像素点加以分离,应用双边滤波器对两类像素点的最大漫反射色度分别进行了估算,去除了镜面反射分量,但由于双边滤波出现了梯度反转,导致一些图像出现了伪影[11];许丽等[12]针对高光区域颜色失真和纹理缺失的现象,采用x-means聚类算法,在最大最小色度空间进行像素聚类,最终将漫反射像素点与镜面反射像素点分离,但x-means聚类算法需要用户初始输入最小聚类数和最大聚类数方可运行,这导致聚类结果依赖于人工设定的聚类数。

在此背景下,为了防止黑色像素点褪色、较好地保留图像边缘和纹理信息、避免伪影,本文提出了一种导向滤波的高光去除改进算法。该算法通过设定阈值将图像中的黑色像素加以分离,并分别估算黑色像素和其他像素的最大漫反射色度;同时,该算法还利用导向滤波器保边滤波和梯度保持的优点,对最大色度图进行了平滑处理,最大限度地保留了图像的边缘和纹理,避免了伪影效应;此外,本文在分离漫反射分量时,根据公式中分母与设定阈值的关系,将像素点划分为两类,并采用不同方法实现了漫反射分量的精确分离。根据实验结果,该算法相比于传统算法,在防止黑色像素褪色、保留图像边缘纹理信息和避免伪影方面均表现出优势。

1 基于双色反射的高光去除模型

本文算法基于Tan等的基于双色反射的高光去除模型[7]。任意光线的反射能量都可以分为漫反射和镜面反射两种分量,不同光线中两种分量所占的比例不同。文献[5]提出,图像中任意像素点的反射光线可以表示为:

文献[7]对图像中任意像素点的色度进行了定义:其中,α(x)代表像素颜色有关的色度,β(x)代表漫反射色度,γ(x)代表镜面反射色度。

同时,文献[7]定义任意像素点的最大色度为:

定义任意像素点的最大漫反射色度为:

假设光源为标准白光,文献[7]提出,图像中每一个像素点的漫反射分量I d(x)可以表示为:

其中,αmax(x)、Imax(x)容易求出,但最大漫反射色度βmax(x)并非已知。因此,若能求解βmax(x),便可得到每个像素点的漫反射分量,故图像的高光去除问题可以简化为每个像素点的最大漫反射色度βmax(x)的求取问题。

进一步的,文献[9]提出,最大漫反射色度βmax(x)可用式(7)进行估计:

给定一幅含高光的toys图像(图1(a)),文献[9]对每个像素点的最大色度加以求解,得到了toys图像的最大色度图(图1(b))。设置最大漫反射色度βmax(x)的估计值为常数0.5,使用式(5)、式(6)提取出漫反射分量,然后根据所提取的漫反射分量计算最大漫反射色度,得到最大漫反射色度图(图1(c))。通过观察最大漫反射色度图不难发现,在表面颜色相似的局部区域,最大漫反射色度的方差非常小,具有局部平滑的特征。进一步比较最大色度图和最大漫反射色度图得知,二者的区别仅在于高光部分。因此,对最大色度图应用低通滤波,将会平滑高光引起的方差,得到真正的最大漫反射色度βmax(x)。

图1 文献[9]的最大色度图和最大漫反射色度图Fig.1 Maximum chromaticity image and maximum diffuse chromaticity image of literature[9]

因而,最大漫反射色度的估算值βmax(x)所对应的灰度图可以作为引导图来平滑最大色度图αmax(x),从而获得每个像素点滤波后的最大色度显然,滤波后的最大色度比αmax(x)更接近βmax(x)。然而,在平滑过程中,漫反射像素点也会被镜面反射像素点影响,导致漫反射像素点滤波后的灰度值略低于滤波前的灰度值,即漫反射像素点的略小于αmax(x)。然而,由于漫反射像素点不包含镜面反射分量,其最大漫反射色度值与最大色度值相等。因此,文献[9]为了消除漫反射像素点所受到的影响,选取与αmax(x)两者中的最大值,作为真实的最大漫反射色度值βmax(x),即:

最后,将βmax(x)代入式(6)得到,再将代入式(5)中,可得到图像的漫反射分量I d(x),I d(x)即为原图像去除高光后的图像。

2 改进的高光去除算法

2.1 传统的图像高光去除算法

基于第1章的分析可以得到传统的图像高光去除算法。

步骤1提取原图像中每个像素点的RGB三通道值,代入式(3)计算每个像素点的最大色度αmax(x),得到最大色度图。

步骤2通过式(7)计算每个像素点的最大漫反射色度估算值βmax(x),得到最大漫反射色度估算图。

步骤3采用双边滤波器对最大色度图过滤高光,并在此过程中,将最大漫反射色度估算图作为滤波引导图像,得到滤波后的最大色度

步骤4在得到每个像素点的滤波后的最大色度后,将其与滤波前的最大色度αmax(x)进行比较,取较大值作为真实的最大漫反射色度值βmax(x)。

步骤5将βmax(x)代入式(6),得到,再将代入式(5)中,得到每个像素点的漫反射分量I d(x),由每个像素点的漫反射分量I d(x)构成的图像即为原图像去除高光后的图像。

2.2 改进的最大漫反射色度估计

通过研究发现,基于现有文献所提出的算法,去除高光后的效果图中有部分原图像颜色为黑色的区域在去除高光后发生了褪色,且同时产生了光晕。文献[9]和文献[13]中的cups图像的原图像和去除高光后的效果图如图2所示。

图2 文献[9]、文献[13]去除高光效果图Fig.2 Highlight removal effect of literature[9]and literature[13]

在图2(b)和图2(c)中,女孩的头部以及头部以上区域由原图像中的黑色褪色为了灰色,并产生了不同程度的光晕。由此发现,上述文献在对黑色的像素点进行去高光处理时出现了错误。究其原因,文献[9]和文献[13]在步骤2中均采用传统算法计算最大漫反射色度的估算值,而传统算法利用式(7)计算最大漫反射色度估算值。对于黑色的像素,RGB三通道值均较小且RGB三通道值之间差值较小,使得式(7)中分子αmax(x)-αmin(x)的值接近于0,导致计算出的最大漫反射色度的估算值与实际值产生了偏差。

因此,本文设定阈值th1∈[10,20],即th1为区间[10,20]中的某一设定值。当某像素点的三通道值中的最大值小于阈值th1时,将该像素点视为黑色像素。由于图像中的高光通常接近于白光,而黑色像素三通道值中的最大值小于阈值th1,因此可以认为黑色像素不含高光部分,即黑色像素点为漫反射像素点。漫反射像素点的最大漫反射色度等于像素点的最大色度。因此,区别于传统算法,将包括黑色像素在内的每个像素点的最大漫反射色度的估算值β͂max(x)进行统一计算,本文将黑色像素的最大漫反射色度的估算值β͂max(x)置为最大色度值αmax(x),从而避免对黑色像素的最大漫反射值产生错误估计。

漫反射像素点的最大漫反射色度值等于最大色度值的证明如下:

基于上述改进的最大漫反射色度估算值的计算方法,得到本文的最大漫反射色度估算图,并采用传统算法计算得到传统最大漫反射色度估算图。本文最大漫反射色度估算图和传统最大漫反射色度估算图如图3所示。

图3 本文最大漫反射色度和传统最大漫反射色度估算图Fig.3 Proposed maximum diffuse chromaticity and traditional maximum diffuse chromaticity estimation images

可以看出,相比于传统的最大漫反射色度估算图,本文对于黑色像素的最大漫反射色度的估计更为准确,使得黑色像素的区域更为显著,图像的边缘和细节更清晰,有利于最大漫反射色度估算图在作为引导图引导平滑过程时能够更好地保留图像边缘和细节。

2.3 利用导向滤波器平滑高光

双边滤波器虽然能保边滤波,但对于图像的细节和纹理信息保留较差,且在像素点周围相似亮度的像素点很少时,输出亮度会变暗,引起梯度反转,导致光晕伪影的出现。针对双边滤波器的缺陷,在传统算法的步骤3中,本文决定采用导向滤波器[14]来平滑高光。

导向滤波器引入了一个包含导向图像和输入图像的局部线性模型,其中,导向图像作为滤波内容图像,对输入图像进行引导滤波,这就保证了导向滤波既可以平滑噪声,又可以保留导向图像的边缘纹理信息。同时,导向滤波的权值不仅取决于欧式距离,还取决于亮度差,这就避免了由于亮度差导致的伪影效应。

假设导向滤波的输入图像为P,输出图像为q。则输出图像q可以表示为:

其中,I i为导向图像I的像素值,ωk为滤波窗口为窗口ωk中像素点的个数,另外,

其中,μk和分别是导向图I在窗口ωk中的均值和方差,ε是正则化参数。

为了方便对比,本文分别采用双边滤波器和导向滤波器,在相似的滤波强度下进行平滑滤波,双边滤波的效果图和导向滤波的效果图如图4所示。

图4 双边滤波和导向滤波效果图Fig.4 Result image of bilateral filter and guided filter

可以看出,图4(a)中存在较多未被完全平滑的高光区域,如右侧玩具的双臂,同时部分漫反射像素点被过度平滑,如图4(a)框选部分的物体已经被平滑得很模糊;此外,相比图4(b),图4(a)的边缘部分较为模糊。细节信息的保留程度也较差,例如在图4(a)中,鱼眼和鱼尾部位的纹理相比图4(b)显得模糊。因此,总体上看,相比于双边滤波,导向滤波在边缘和细节方面表现更好。

此外,导向滤波算法的时间复杂度与滤波半径的大小无关,因此在采用较大滤波半径处理图像时效率更高;而采用双边滤波平滑高光,包括了两个卷积运算,时间成本较高。本文采用导向滤波器在运行效率上有明显的提升。在上述图4的滤波处理中,双边滤波的处理时间为5.054 s,导向滤波的处理时间为0.145 s,导向滤波的处理效率提高了35倍。

2.4 改进的漫反射分量计算方法

在传统算法的步骤5中,将βmax(x)代入式(6)中可得到图像的漫反射分量∑I d(x)。

在仿真实验过程中,当式(6)的分母αmax(x)(3βmax(x)-1)接近于0时,得到的∑I d(x)数值相比真实值大很多。因此,本文针对漫反射分量的计算方法加以了改进。

记f(x)=αmax(x)(3βmax(x)-1),阈值th2∈[10-6,10-4],即th2为区间[10-6,10-4]中的某个设定值。依据阈值th2将图像中的像素点分为两类,第一类像素点为f(x)≤th2的像素点,第二类像素点为f(x)>th2的像素点。

对于第一类像素点,因f(x)≤th2,则有f(x)→0,因此有αmax(x)→0或(3βmax(x)-1)→0。下面对αmax(x)→0和(3βmax(x)-1)→0两种情况分别作以分析:

(1)αmax(x)→0的情况

(2)(3βmax(x)-1)→0的情况

若(3βmax(x)-1)→0,则有:

由此可得出:因为假设光源为标准白光,而标准白光的色度坐标[14]为,R为,G为B为,因此有:

由式(16)可知,该像素点的镜面反射分量为0,因此,该像素点为漫反射像素点。因此,该像素点的三通道值的漫反射分量分别与该像素点的三通道值相同。

综合上述(1)和(2)两种情况可得出,第一类像素点的三通道值的漫反射分量分别与该像素点的三通道值相同。

对于第二类像素点,由于f(x)>th2,因此可直接根据式(6)与式(5)计算漫反射分量I d(x)。

综上,本文在传统算法的步骤5中计算图像中每个像素点的漫反射分量时,首先根据f(x)和th2的大小关系判断像素点属于哪一类像素点,然后根据像素点的类别采用不同方法计算该像素点的漫反射分量,这样避免了在分母接近于0时对∑I d(x)的错误计算。

2.5 本文算法流程图

综合本节内容,得到本文的图像高光去除算法流程图如图5所示。

图5 本文算法流程图Fig.5 Flow chart of algorithm in this paper

3 实验结果与分析

为了验证本文算法的有效性,本文选取目前视觉效果较好的文献提出的算法加以比较。本文所使用的计算机配置为Intel64 Family 6 Model 142 Stepping 11 GenuineIntel~1 800 MHz的处理器,4 GB内存,64位版本的Windows操作系统以及MATLAB R2019b软件。

Toys图像去除高光后的效果如图6所示。不难看出,在图6(c)、图6(d)中,鱼眼白部位的颜色发红,与原图像该位置的白色差别明显。这是因为鱼眼白部分与鱼眼珠、眼圈部分亮度差异较大,文献[10]和文献[13]在双边滤波过程中产生了梯度反转,使鱼眼白部分受到周边梯度域颜色的影响产生了伪影。本文由于采用了导向滤波,鱼眼白部位的颜色没有发生偏差,与输入图颜色相同。并且,本文算法得出的图像边缘轮廓和纹理细节都更为清晰,视觉效果更好。

图6 toys图像去除高光效果图Fig.6 Highlight removal effect of toys image

为了进行更为全面的比较,本文针对masks、cups、fruits、animals四幅图像进行去除高光处理,并与文献[11]、文献[13]、文献[15]得出的结果进行了对比。

图7给出了masks图像去除高光后的效果图。masks图像包括有较多纹理。可以看到文献[13]的算法在脸部具有明显的光晕,文献[11]、文献[15]脸部的高光也去除得不太彻底。综合来看,本文算法对高光的去除较为彻底。

图7 masks图像去除高光效果图Fig.7 Highlight removal effect of masks image

图8给出了cups图像去除高光后的效果图。可以看到,相比于原图像,文献[11]算法得到的图像对比度不佳;基于文献[13]的算法,女孩的头顶产生了光晕,产生光晕的原因在于该方法不能很好地处理黑色像素;此外,文献[13]和文献[15]右侧杯子的高光去除也不彻底。本文算法女孩头顶没有光晕,且右侧杯子的高光去除得较好。

图8 cups图像去除高光效果图Fig.8 Highlight removal effect of cups image

图9给出了fruits图像去除高光后的效果图。该图像在不同水果表面上具有不同形状的高光。可以发现,文献[13]和文献[15]对于黄色水果的高光去除得不是很彻底,本文算法在视觉效果上与真实值最为接近。

图9 fruits图像去除高光效果图Fig.9 Highlight removal effect of fruits image

图10给出了animals图像去除高光后的效果图。可以看到右侧兔子耳朵处的高光比较难以去除。文献[11]的算法高光去除得较好,但图像纹理模糊;文献[15]因为去除了过多的高光导致线条变淡;文献[13]和本文算法去除高光效果相当,但本文色彩更接近于真实值。

图10 animals图像去除高光效果图Fig.10 Highlight removal effect of animals image

本文算法与其他算法的峰值信噪比值(PSNR)对比结果如表1所示。

表1 不同算法的PSNR值对比Table 1 Comparison of PSNR of different algorithms dB

从表1可以看出,与其他算法相比,本文算法对应的PSNR指标表现最好,与视觉效果表现基本一致。因此,本文算法无论在主观视觉效果还是客观评价结果方面均优于传统算法。

本文算法与其他算法的运行时间对比结果如表2所示。

表2 不同算法的运行时间对比Table 2 Comparison of running time of different algorithms s

从表2可以看出,在算法运行时间方面,本文算法的表现最优。文献[11]在使用x-means聚类算法过程中,需要迭代进行2-means聚类,并计算贝叶斯信息准则分数以确定最优分类数,从而导致运行时间过长;文献[13]和文献[15]也涉及到聚类算法,需要多次迭代确定聚类簇,导致运行时间较长。本文算法采用的导向滤波为时间复杂度为O(1)的快速滤波器,整体提高了运行效率,使得本文算法适用于实时处理。

4 结语

针对图像高光去除问题,本文进行了理论分析和实验观察,从中发现传统算法的一些问题。首先,传统算法在计算最大漫反射色度时对黑色像素没有进行分开处理,导致对黑色像素的最大漫反射色度估算产生偏差;其次,传统算法使用双边滤波器对最大色度图进行滤波,导致纹理细节部分没有得到很好保留且出现了伪影;此外,传统算法在滤波后计算漫反射分量时,忽略了公式中分母接近于0的情况,导致计算结果比真实值大。针对传统算法中存在的上述缺陷,本文提出了一种导向滤波的高光去除改进算法。首先,通过阈值th1分离出图像中的黑色像素,并分别估算黑色像素和其他像素的最大漫反射色度;其次,利用导向滤波器保边滤波和梯度保持的优点,对最大色度图进行平滑处理,从而最大限度地保留了图像的边缘和纹理,避免了伪影效应,且相比于采用双边滤波,运行效率得到了提升;此外,本文在分离漫反射分量时,根据公式中分母与阈值th2的关系,将像素点分为两类,分别采用不同方法实现了漫反射分量的精确分离。客观评价指标和主观视觉感受表明,本文算法相比于传统算法,在防止黑色像素褪色、保留图像边缘纹理信息和避免伪影方面均表现出优势。

然而,本文对于高光区域占比较大的图像处理效果不太理想,这是因为本文是将高光区域作为噪点进行去高光处理,对于高光区域占比较大的图像,滤波算法不能很好地区分噪声对象和需保留的对象,导致滤波效果较差。因此,未来的研究方向是如何对高光区域占比较大的图像进行去高光处理。

猜你喜欢
高光色度像素点
见证彼此高光
睿士(2023年8期)2023-08-23 13:07:06
想做联名爆款?超级飞侠、熊出没、奥特曼等“高光”IP等你来聊
玩具世界(2021年5期)2021-03-08 08:42:02
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于改进色度模型的非接触式心率检测与估计
释放出来自HDR的高光力量 Optoma奥图码UHZ880
景德镇早期青白瓷的器型与色度
如何提高苹果的着色度
现代农业(2016年6期)2016-02-28 18:42:48
基于Node-Cell结构的HEVC帧内编码
电视技术(2014年11期)2014-12-02 02:43:28
基于Moldflow 的高光无痕电视前壳注射模具设计
中国塑料(2014年2期)2014-10-17 02:51:06