1背光源调光方案
以TFT液晶面板结构为例,包括背光、偏光片、液晶阵列、彩色滤光片等部分,人眼所感知的显示图像为上述各部分的综合效果。假设背光亮度归一化后设为b(为[0,1]区间实数),0对应于背光关闭情况,1对应于背光发光亮度最大情况。若光源为LED,则b的调节可包括电流脉宽调制、电流幅度调节等方法。
假设以图像为8bit灰度图进行讨论,f(x,y)表示图像中某点(x,y)的灰度值,x、y为该点坐标。则该点位置的液晶透过率可表示为:
t(x,y)=f(x,y)/255(1)
该图像点可被观测到的亮度L(x,y)为背光源发光和液晶透过率的综合效果,可表示为背光亮度b和液晶透过率t(x,y)的近似线性组合:
L(x,y)=b·t(x,y)=b·f(x,y)/255(2)
根据视觉光效一致性的要求,必须寻找一种方法使像素灰度值在增大(以补偿背光b变小)的时候尽量不饱和。为达到这个目的,本文首先将图像灰度值范围先限制在一定区间,然后再对直方图进行拉伸,以实现像素灰度值的增大。图像直方图由门限fgl和fgh进行裁剪,使图像中的某些点被钳位于fgl和fgh,该图像的灰度区间限制于[fgl,fgh],背光源调光问题转化为这幅直方图经过裁剪的图像应当如何进行调整,使得它的背光能尽量降低亮度。
显然对固定的失真度,fgl和fgh可以有多种取值,这里取值方式应满足公式(3):
min(fgh-fgl)(3)
这样处理的目的是将图像灰度区间限制在一个最小范围内。
公式(3)实现后,下一步对直方图进行线性搬移,使灰度整体向暗区域移动fgl.这样图像灰度区域由[0,255]区间内的原分布,被压缩在[0,fgh-fgl]区间。
假设背光变暗,此时应对图像进行灰度拉伸,以弥补背光导致的亮度损失。若采取线性拉伸方法,显然拉伸的最大倍数为255/(fgh-fgl),此时像素灰度不会饱和,则背光亮度可由1降低为(fgh-fgl)/255.根据公式(2),经过处理后的图像在背光调节前后视觉效果不变。
2硬件和软件实现方案
本实验采用mini2440开发板进行验证,mini2440是一款低价实用的ARM9开发板,处理器为三星S3C2440(ARM920T,最高主频可达532MHz)。液晶屏支持黑白、4级灰度、16级灰度、256色、4,096色STN液晶显示,尺寸从3.5~12.1in,屏幕分辨率可以达到1,024×768像素,实验采用了3.5inLED背光TFT液晶屏。
实验中根据图像算法计算图像的灰度值,通过对显示图像的直方图进行裁剪,使之限定在一定范围内,其后进行直方图拉伸,再由计算公式(fgh-fgl)/255计算出背光源的显示亮度,并控制背光源脉宽调制输出脉冲的占空比,实现背光源LED的亮度调节。硬件框图如图1所示。
2.1LED背光源驱动设计
设计采用恒流型LED驱动,输出电流稳定,保证了背光LED的亮度恒定,方便通过更改相关的外围电阻来确定输出电流的大小,并具有高灵敏度的开关控制功能,能实现通过PWM来控制LED的亮度。
AMC7140是大功率的LED恒流驱动芯片,宽电压输入DC范围为5~50V,输出电流最大达700mA,适合驱动1W、3W、5W的LED灯,TO-252-5L封装,带PWMCONTROL端(OE引脚)。如图2所示是AMC7140的引脚图,其中引脚1是电源输入;引脚2是输出电流的控制端,通过一个高精度的电阻Rset接地实现对电流的控制,电流Iset=1.2V/Rset,输出电流Iout=500×Iset;引脚3接地;引脚4是PWM控制端,高电平有效;引脚5是输出端。AMC7140的应用电路如图3所示。
2.2基于S3C2440的PWM控制的实现
S3C2440有5个16bit定时器。定时器0、1、2、3有脉宽调制功能(PWM);定时器4是内部定时器,没有输出引脚;定时器0有死区发生器,常用于大电流设备中;定时器0、1共用一个8bit预脉冲分频器,定时器2、3、4共用另外一个。每个定时器都有一个时钟分频器,它可以产生5种分频信号(1/2、1/4、1/8、1/16和TCLK)。每个定时器模块从自己的时钟分频器获取时钟信号,时钟分频器从相应的8bit预脉冲分频器中获取时钟。这个8bit预脉冲分频器是可编程的,并依据TCFG0和TCFG1寄存器中的值对PCLK进行分频。定时器被使能之后,定时器计数缓冲寄存器(TCNTBn)中的初始值就被加载到递减计数器中,定时器比较缓冲寄存器(TCMPBn)中的初始值就被加载到比较寄存器中,以便与递减计数器的值进行比较。这种TCNTBn和TCMPBn的双缓冲特点使得定时器在频率和占空比变化时输出的信号更加稳定。每个定时器都有一个自己的时钟驱动的16bit递减计数器,当计数器减到0时,产生一个定时器中断请求,以通知CPU定时器操作完成,同时定时器计数缓冲寄存器的值被再次自动加载到递减计数器继续下次操作。然而,如果在正常模式下清除定时器TCONn的使能位,TCNTBn的值将不再加载进计数器,TCNTBn的值常用于PWM.当递减计数器的值等于比较寄存器的值,定时器控制逻辑改变输出电平,因此,比较寄存器决定了PWM输出的开启和关闭。
设置一个定时器,首先初始化TCNTBn和TCMPBn,在初始化定时器时,主要设定以下几个寄存器(以定时器0为例):
定时器输出时钟频率=PCLK/(prescalervalue+1)/(pidervalue)
TCFG0寄存器设置:TCFG0=99;//prescalervalue="99"
TCFG1寄存器设置:TCFG1=0x03;//pidervalue="1/16"
这样,当PCLK=400M时,定时器输出频率为6.25M.
定时器初值的设置包括:
TCNTB0寄存器设置:TCNTB0=62500;//装入初值1s中断一次
TCMPB0寄存器设置:TCMPB0=rTCNTB0》1;//50%
接着就可以启动定时器,第一次必须手动装载:TCON=1《1;
装载后,改为自动装载,并启动定时器:TCON=0x09.
2.3基于S3C2440的图像算法设计
S3C2440芯片内部集成了LCD控制器,用来向LCD传输图像数据,并提供必要的控制信号,比如VFRAME、VLINE、VCLK、VM等,可以支持STNLCD和TFTLCD.mini2440采用3.5in(分辨率为240×320像素)的TFT液晶显示屏,配置为常用的16BPP(5:6:5)模式。要显示图像,只要向LCD_BUFFER写入像素数据(R(5):G(6):B(5)),LCD控制器就会自动通过DMA读取数据送往TFTLCD显示。
图像算法是基于图像直方图进行数据变换的,所以,首先应编写子程序并先计算形成显示图像的灰度直方图,算法如下所示(其中bmp为原始的灰度图像,bmp_2为灰度值数组):
for(y=0;y<320;y++)
{for(x=0;x<240;x++)
{bmp_2[bmp[p]]++;
p=p+1;
}
}
假设取5%的失真度,那么需要变换的像素点数量为240×320×5%=3,840点,然后根据上述算法原理采用逐点计算的方法使fgl从灰度0开始分别计算出对应的(fgh-fgl),最后比较求出min(fgh-fgl)。
下一步对直方图进行线性搬移,使灰度整体向暗区域移动fgl,这样图像灰度区域由[0,255]区间内的原分布,被压缩在[0,fgh-fgl]区间。接下来应对图像进行灰度拉伸,以弥补背光导致的亮度损失。若采取线性拉伸方法,显然拉伸的最大倍数为255/(fgh-fgl)。算法如下所示(其中bmp为原始的灰度图像,bmp_new为更新图像,min=min(fgh-fgl)):
for(y=0;y<320;y++)
{for(x=0;x<240;x++)
{if(bmp[p]>=fgl)
bmp_new[p]=(bmp[p]-fgl)*255/min;
else
bmp_new[p]=0;
p++;
}
}
此时像素灰度不会饱和,则背光亮度可由1降低为(fgh-fgl)/255,由LED驱动电路通过PWM实现相应亮度的控制。
3实验结果
如图4所示为测试图像,图4(a)为原始图像,图4(b)、(c)、(d)为采用直方图裁剪与拉伸算法的试验结果图。
测试图4(b)的失真度为5%,节能比例为35%;测试图4(c)的失真度为10%,节能比例为55%;测试图4(d)的失真度为20%,节能比例为67%.由实验结果可知,在一定的失真度下,显然直方图裁剪的灰度范围越小,背光亮度可降低的幅度越大。原始测试图像与经过直方图裁剪和拉伸的图像相比,在失真度5%的约束下,由于图像进行了直方图搬移,整体亮度有所变化,总的来说图像质量没有明显损失。
4结论
本文提出了基于视觉特性的液晶显示器背光源节电调光方法,建立了直方图裁剪和拉伸的处理框架,并在此基础上利用ARM平台加以验证,证明本文的方法在失真度为5%的情况下可实现约35%的背光节电效果,且图像质量没有明显损失。