刘 健,郭江宇,张海峰,郝志超,于佳杰
(北方自动控制技术研究所,太原 030006)
目前,移动手持设备集成的功能越来越丰富,随之功耗也越来越大。研究表明,移动手持设备的能量消耗主要集中在射频、CPU与LCD显示模块[1]。LCD显示模块的主要功耗来自其LED背光源,而在使用过程中,背光源不能关闭。降低背光亮度是减少移动手持设备功耗的有效方法。但是,背光亮度的降低,会造成图像显示质量的降低。因此,研究LCD在低背光条件下的图像增强很有必要。
LCD低背光条件下的亮度补偿方法是:当背光降低时,通过补偿像素的灰度值来提高液晶的光透过率,从而维持图像亮度与降低背光前一致[2]。文献[3]提出了一种 CBCS(Concurrent Brightness and Contrast Scaling)算法,通过提高图像像素灰度值来减少背光降低造成的失真,该方法在处理有较多高灰度值的图像时,会造成高灰度区域的细节丢失。文献[4]提出的算法有效避免了高灰度区域的细节丢失,该算法通过假设溢出值,对图像进行预处理,计算假设溢出值时的图像失真度,来反馈调节溢出值,算法的复杂度过高,可能造成计算资源的过多占用。文献[5]提出的算法将提取的灰度图像通过低通滤波器,分别对低频部分与高频部分进行像素补偿与对比度增强,之后恢复彩色图像,该算法较大程度地提高了图像亮度,但是图像的清晰度与SSIM(structural similarity index)指标还有提升空间。
针对LCD在低背光条件下图像质量降低的问题,本文提出一种基于人眼视觉感知特性的图像增强算法。算法考虑了人眼在低灰度背景中的JND(Just Noticeable Difference)曲线,在高灰度区域,设计了防溢出参数避免细节丢失,并对图像进行了局部对比度增强。
LCD本身不发光,背光源的光经过LCD液晶分子的过滤后才被人眼感知[6]。人眼最终感知的图像像素点亮度L由背光源的光强和液晶分子的光透过率决定,液晶分子的光透过率与像素点亮度值近似成正比关系[6]。由式(1)表示:
其中,b表示背光调节因子,取值为0~1,B表示背光源最大光强,t(x)表示某个液晶分子的光透过率。
当b<1时,为保持L不变,需将t(x)扩大1/b倍,即将该像素点的亮度值扩大1/b倍。像素点的亮度值取值范围为0~255,对某些高亮度的像素点亮度值扩大后,会导致亮度值溢出,造成图像失真。
人眼视觉的感知特性表现为,人眼欲辨别目标,需要满足目标与背景的亮度差大于特定阈值的条件,该阈值称为JND,而在不同的灰度背景中,JND有很大差异,JND曲线[7]如图1所示。
由图1可知,在背景灰度较小和较大的区域,人眼辨别目标的能力较弱。例如,背景灰度为25时,人眼无法分辨灰度值为30的目标。通过灰度变换来提高图像的平均灰度,从而提高背景灰度值。在灰度变换领域,采用非线性变换要优于线性变换,非线性变换的结果更适宜人眼观察,常使用的非线性变换有对数函数与指数函数[8]。此外,人眼视觉系统对图像的局部对比度更为敏感。
由第1节可知,在高灰度区域,对图像像素亮度的提升需要考虑溢出范围的大小及处理,避免高灰度区域的细节丢失。在中灰度区域,图像的像素亮度不需要太大的提升。在低灰度区域,可以对图像像素的亮度作较大的提升,增加图像亮度的同时,增加低灰度区域的细节表现力。
算法主要对图像的灰度图进行处理,因此,需要将原RGB颜色空间图像转换到YIQ颜色空间,对Y分量进行处理,最后恢复为RGB颜色空间图像。YIQ空间的各个分量由式(2)计算得到。
依据文献[5]对图像的分类,由图像Y分量的平均值μ确定溢出值θth。当μ值较小时,图像的灰度值主要集中在较低的区域,可以选择较小的溢出值,以增大补偿强度。当μ值较大时,图像的灰度值主要集中在较高的区域,溢出值不宜过小,否则会造成高灰度区域的细节丢失。溢出值由式(3)计算得到。
由人眼视觉感知特性可知,背景灰度在60~200的范围内,人眼的分辨力较好。以某像素点领域内的灰度平均值作为该点的背景灰度。通过提高图像的平均灰度,来提高背景灰度。灰度变换如式(4)所示。
其中,I'(z)为某像素点变换后的灰度值,I(z)为该点变换前的灰度值。算法根据图像亮度均值确定溢出点的大小,从全局上确定图像亮度补偿的强度,对于低灰度区域,为避免对数函数增幅过大,设计了增幅适当且可以根据背光因子动态改变的非线性变换函数,增幅随背光因子的变小而增大。gl为低灰度区域临界点,gb为防止溢出的修正点,a为避免增幅过大的调节参数。式(4)中相关参数由下式决定。
背光因子为0.75,图像Y分量平均值为0.39时的输入输出像素映射曲线如图2所示。变换函数是连续函数,在灰度变换后,不会发生灰度倒序的情况。
经过亮度补偿,图像的亮度会有很大提高,但是会造成局部对比度的下降。由第1节可知,人眼对图像的局部对比度更为敏感。采用Michelson对比度[9]计算公式,如式(6)所示。
其中,Imax和Imin表示邻域中的最高与最低灰度值。Michelson对比度更加符合人眼视觉感知特性。用式(7)对像素点的灰度值进行提升或降低。
其中,μlocal为原图像某像素点领域内的灰度平均值。当该点灰度值大于领域内平均灰度值时,对其进行提升,反之,降低。经式(7)处理后,提高了图像的Michelson对比度。
采用文献[5]算法与本文算法进行图像仿真处理,使用Matlab工具进行仿真的结果如图3与图4所示。图3为不降低背光时的仿真结果,其中图3(a)为原图像显示效果;图 3(b)为使用文献[5]算法处理的图像显示效果,与原图比较,图像亮度有很大提高,但是图像清晰度有所下降;图3(c)为本文算法处理的图像显示效果,提升了图像亮度与清晰度,人眼能分辨出更多细节。图4为应用式(1)进行模拟背光降低25%时的仿真结果。
选取平均亮度由低到高的10幅图像作为测试对象,应用平均梯度与SSIM作为图像增强效果的客观质量评价指标。平均梯度反映图像清晰度;SSIM衡量处理前后两幅图像的结构相似性,取值为0~1,值越大,结构失真度越小[8]。
在进行图像的清晰度质量评价时,需要考虑不同背光源光强对清晰度的影响,结合图像平均梯度的计算方法与式(1),对不同背光因子条件下的图像平均梯度进行比较,比较结果如下页表1所示,表明增强算法对图像的清晰度有较好的提升。表2为不同背光因子条件下SSIM指标大小,结果表明增强算法对图像的结构相似性保持较好。综上所述,增强算法在降低背光的条件下,可以提升图像清晰度并较好的保持图像结构相似性,适宜人眼感知。
在CycloneIV系列FPGA硬件平台上实现了本文算法,并将处理结果与MATLAB仿真结果进行比较,如图 5 所示。从图 5(c)与图 5(a)可以看出,本文算法在降低背光的情况下与原图在不降低背光的情况下视觉效果相近。比较图 5(b)与图 5(c),FPGA相较于MATLAB的处理精度误差不大于1%,此外,本文算法在FPGA上每秒能够处理1 024×768大小的图像60帧以上,满足实时性的要求。
表1 不同背光因子时平均梯度
表2 不同背光因子时SSIM指标
本文依据人眼视觉感知特性,提出了LCD在低背光条件下的图像增强算法。在亮度补偿后容易发生溢出的高灰度区域,采用防止溢出的修正值代替溢出值,从而避免高灰度区域的细节丢失,在低灰度区域,设计了增幅适当且可以根据背光因子动态改变的非线性变换函数,在提高图像整体亮度之后,对局部对比度进行增强,提升了增强后的图像清晰度,并维持了较好的结构相似性。