摘 要:色温修正是液晶显示屏(LCD)色彩校正系统的重要部分,直接影响最终的显示质量和用户的观赏体验。为改善LCD的显示效果,设计一种基于RGB颜色空间的LCD色温实时修正方案,并给出基于亮度的参考白点估计方法,简化对于参考白点的选取。采用DDR3 SDRAM作为帧缓存实现本帧增益,校正本帧数据,提高校正的准确性。通过Xilinx公司以XC7K325T-2FFG900为核心芯片的Kintex7 FPGA开发板进行验证,结果表明,该方案在FPGA内部实现对视频数据色温修正的处理,采用查找表的方式存储用户预设的色温,降低了计算复杂度。
关键词:色温修正;现场可编程门阵列;液晶显示屏;色彩校正;白点估计;亮度
1 概述
随着显示技术的发展,液晶显示屏(Liquid Crystal Display,LCD)以其独具的低压、低功耗特性近年来在人们的生产生活得到广泛的普及[1]。受到光源色温的影响,图像在实际显示时会出现不同程度的偏色现象,为了消除这种影响需要对图像进行色温修正。许多光学设备如显示器、数码相机都需要进行色温调整,调整的好坏直接影响最终画面的质量。而且近年来显示设备的色彩显示效果逐渐成为各大厂商的竞争焦点。
目前常用的色温修正算法主要有灰度世界算法[2-3]、边缘灰度世界算法[4-5]、Rentix 算法[2,6]、色域映射算法[7]、神经网络算法[8]以及基于多帧图像的算法[9]。在这些算法中神经网络法和色域映射法较为准确,但是由于其算法复杂,现场可编程门阵列(Field Programmable Gate Array,FPGA)实现困难且会耗费许多资源,因此在实际中主要使用灰度世界法和Rentix算法。简单灰度世界法在场景中出现大面积色块时会错误选取参考白点进而调整结果会出现较大的偏差。边缘灰度世界法虽然可以克服上述缺陷但是需要大量的微分运算,也不适合使用FPGA实现。本文方案基于映射的颜色校正方法[10],首先进行参考白点估计找出每一帧图像的白点,代表这一帧图像的光源信息;然后进行增益的计算将标准白色卡的白点和图像的白点相除得到增益值;最后按照映射的方法对图像的每一个像素点都乘以增益值从而实现颜色校正。考虑上述色温修正算法中对于参考白点的选取不足和硬件实现的方便,提出一种基于亮度的参考白点估计方法,找出一帧图像中在一定误差范围内满足CIE 1931色度坐标的具有最大亮度值的像素点作为该帧图像的参考白点,该点代表该帧图像的光源信息。
2 色温实时修正原理
2.1 色温
色温是对光源颜色进行描述的一个色度量,它用物理学中的绝对黑体加热到不同温度时所发出的光色来表达一个光源的颜色。所谓绝对黑体是指不反射光也不透射光的物体,当现实生活中的光源(日光灯、白炽灯等)发出的光的颜色和黑体加热到某温度下发出的光的颜色相同时,就用该温度值表示该种颜色的光的色温,用绝对温度K表示,称为开氏温标[11]。
色温与所处的地理位置有关,接近赤道地区的平均色温为11 000 K,中国的平均色温为8 000 K~9 500 K,所以在我国播放其他国家或地区的片源时,首先需要将色温修正到适合我国的范围,这样才能达到最佳的观赏效果。
白光可由色温来描述,用黑体辐射的温度值来表达光源的色温。对于数字显示器而言,白色可用R,G,B三色叠加获得。由于CIE 1931 RGB使用红绿蓝三基色系统匹配某些可见光颜色时会出现负值,而且使用也不方便,因此将RGB数据转化为CIE 1931 XYZ值来表示。其中,X,Y,Z是想象的三基色与可见颜色不存在对应关系,只有Y表示光亮度值。
不同的显示技术色温也不同,例如与阴极射线管(CRT)显示器相比,LED,LCD显示屏和等离子平板显示器(PDP)的色温较低。所以这些数字显示设备的输出必须经过色温修正才能得到更好的显示效果。
2.2 色温修正算法
基于映射的色温修正算法一般分以下3个步骤进行:
第1步 进行参考白点的估计,找出每一帧图像的白点,这个白点代表了这一帧图像的光源信息。本文提出基于亮度的参考白点估计法,同时对该帧图像进行缓存,以便后面实施本帧增益校正本帧图像,提高校正准确性。
第2步 进行增益的计算,由用户输入预设的色温值,根据查找表读出对应的RGB值,然后与第1步得到白点值对应的RGB值进行运算得到增益值。这一步用户输入预设色温值可以实时的由用户改变,达到实时校正的目的。
第3步 根据得到的增益值对一帧的每一个像素点进行校正,得到用户期望的色温值对应的图像。算法实现的效果很大程度上取决于对于参考白点的估计。
3 色温修正算法的硬件结构
根据具体情况,选择以Xilinx公司XC7K325T-2FFG900为核心芯片的Kintex7 FPGA作为开发平台。该开发板配有一定数量的I/O和各种数据接口,另外通过USB电缆将PC机与Kintex7连接起来就能进行编程调试,使用方便可靠。
本文研究了一种LCD色温实时修正算法的硬件实现方案,并提出了一种基于亮度的参考白点估计方法,描述为:找出待处理的视频中每一帧的参考白点,同时进行帧缓存;然后实时根据用户输入的预设色温进行增益的计算,最后对本帧图像每一个像素点进行修正输出。整个硬件实现方案中包括以下关键环节:参考白点估计,色温预设与增益计算,色温修正输出。
3.1 基于亮度的参考白点估计
视频处理技术中一般对每一个像素点进行处理,本文根据硬件方案的处理方便选取RGB颜色空间进行处理。根据色度学原理,一帧图像的白点可以近似地取为图像中亮度最大的像素点。但是单纯地选取亮度最大的点可能将过曝光的点错误选入。因此,本文采用如下的方法选取参考白点:根据CIE1931色度图将色温对应的x,y坐标制成一张查找表;对输入的RGB三通道值通过式(1)转换到CIE1931-XYZ坐标下,然后通过式(2)转换到x,y坐标下;根据x比较查找表输出的y值和计算的y值是否在误差范围内相等,不相等则舍弃该点,相等则记录对应的Y和RGB值,直到一帧图像的结束输出代表光源信息且满足误差条件的最大Y值及其对应的RGB值作为该帧的白点值。每当有新帧图像到来时发出有效信号,复位上一帧的处理,进行新帧的处理工作。
如图1所示为参考白点估计的结构框图。对输入的每一个像素 RGB值,通过式(1)变换到CIE1931-XYZ坐标下,然后运用式(2)再转换到x,y下,最后将x输入到色温x,y查找表中比较输出的y值和计算得到的y是否在误差范围内可以接受,如果满足条件则将亮度Y和当前的最大亮度Y进行比较,大于当前值则取代当前值,否则舍弃;同时将输入的像素RGB值合并为一路进行延时移位运算,帧结束信号到来时将对应最大亮度的RGB值输出,同时清除移位FIFO以及最大亮度Y的值,为下一帧处理做好准备。
图1 参考白点估计结构
3.2 色温预设与增益计算
将色温及其对应的RGB值预先制成查找表(look up table)初始化在程序中,在程序运行过程中实时的接收用户输入的预设色温,然后在一帧图像的结束时和由参考白点模块得到的代表光源信息的最大亮度值对应的RGB值进行增益计算从而达到实时校正的目的。增益的计算值采用比值法获得,用预设色温对应的RGB值比上一帧图像中代表光源信息的RGB值。与传统的增益计算相比使用查找表得到色温对应的RGB值代替原来复杂的乘除运算使得处理的速度更快,有利于适应越来越快的视频处理速度而且实现更方便有效。
3.3 色温修正
为了提高校正的准确性,通过对输入的图像进行帧缓存实现本帧增益值校正本帧的图像;相对于使用前一帧的增益校正后一帧的数据方法,不但可以避免第1帧图像得不到校正的缺陷,而且能克服由于场景突变带来的前后帧图像差异很大导致的校正不准确。在具体的实现过程中由于FPGA一般处理的是整数,因此在修正过程中结合上一步的增益计算模块,将从帧缓存中输出的像素值和本帧图像代表光源信息的像素值相乘,然后再除以用户预设色温对应的像素值得到最后的修正值,这样可以避免增益计算过程中出现小数的情况。
如图2所示,从第1帧开始的每一帧图像到来时,都会根据用户预设的色温对应的RGB值和本帧图像代表光源信息的RGB值进行对应的像素点的修正,用户实时输入的色温值通过查找表输出一路对应的RGB值,然后经过信号分解模块将一路数据分为三路输入到修正模块,该模块同时实时的接收帧缓存给出的本帧各像素值和本帧对应光源信息的RGB值,最终完成该帧图像的色温修正,以后每一帧图像都经过该步骤处理实现色温的实时修正。
图2 色温修正结构
4 实验结果与分析
4.1 基本功能实现效果
为观察本文方法的实现效果,输入色温6 500 K、大小1 920×1 080的24色彩色面板,通过OSD分别设置输出色温为3 000 K,8 500 K和20 000 K后得到并比较最后的显示效果。显示结果表明,输出色温为3 000 K的效果图整体呈偏红黄,输出色温为20 000 K的效果图整体呈偏蓝,而输出色温为8 500 K的最终显示效果符合一般需求。这也正好反映了低色温的图像偏红,高色温的图像偏蓝的理论,说明本文提出的方法可以正确调整到预设的色温下。在实际应用中,用户可以根据个人需要通过OSD设置输出图像色温大小。
4.2 算法比较分析
为了说明本文方法不会误选过曝光点作为参考白点,自制带有过曝光白点、大小为1 920×1 080的彩条作为输入,比较灰度世界法和本文方法在输出相同色温图像时的表现效果。原始的输入图像由白色、浅蓝色、橘黄色、绿色、紫色、深蓝色、红色7种颜色的彩条构成,其中白色部分彩条中有一半的像素点被人为改为过曝光值。首先比较输出3 000 K色温图像时灰度世界法和本文方法的表现效果,由于灰度世界法通过选取最大RGB值作为参考白点,因此会将过曝光的白点误选为参考白点导致求到的增益也会偏大,显得偏红的效果不明显;然后比较输出20 000 K色温图像时灰度世界法和本文方法的表现,同样采用灰度世界法使得输出会显得偏蓝的效果不明显。
为了进一步说明在真实图像中的实现结果,输入1080P50制式的3G视频信号,比较灰度世界法和本文方法在输出相同色温图像时的表现效果。如图3为原始彩色视频图像,分别实验比较输出3 000 K,20 000 K色温图像时灰度世界法和本文方法的表现效果,得到的结论与测试图像一致,同样的采用输出灰度世界法的效果不明显。
图3 原始输入视频图像
4.3 资源消耗统计与分析
表1和表2分别为灰度世界法和本文方法的资源消耗情况,可以看出灰度世界法需要消耗18个RAM36E1/FIFO36E1s、8 个 RAM18E1/FIFO18E1s和18个DSP48E1s,本文方法所需21个RAM36E1/FIFO36E1s和8个RAM18E1/FIFO18E1s及23个DSP48E1s。
表1 灰度世界法的资源消耗
表2 本文方法的资源消耗
相对灰度世界法本文方法需要多3个RAM36E1/FIFO36E1s和5个DSP48E1s。本文实现的算法相对于灰度世界法的资源消耗的主要差异在参考白点估计部分,灰度世界法选取最大RGB值作为参考白点,而本文的方法对于参考白点的选取要通过查找表进行颜色空间的转换和除法器来计算得到,所以相对灰度世界法本文实现的方法资源相对多一点。但是从上面的效果分析本文的方法效果比灰度世界法要优越,在可以接受的范围内牺牲一些资源换取更好的效果是值得的。
首先对算法的基本功能进行了测试验证了本文方法的可行性;然后通过与灰度世界法进行比较分析,验证本文方法不会误选过曝光白点和处理大面积色块时的表现;最后对实现的硬件资源进行分析比较,经过测试本文方法可以适应标清、高清和3G视频信号,最高运行时钟频率为148.5 MHz。经过对大量视频的测试,本文实现的方法虽然占用稍多的硬件资源,但是实现的效果相对有很大的改善,具有一定的显示意义。
5 结束语
本文提出一种基于亮度的参考白点估计方法,实现了LCD色温实时修正的硬件化。通过对一帧图像的亮度值的比较和筛选找出代表光源信息的像素点作为参考白点进行色温校正,避免了灰度世界法在大面积色块时算法失效的问题,而且使用CIE1931色度图建立的色温x,y查找表可以避免将过曝光的点误选为参考白点,提高了对参考白点选取的准确性。另外,使用帧缓存实现本帧增益对本帧图像的实时修正,避免了场景突变带来的帧间差异造成的影响,提高了修正准确性,修正后的显示效果较源图像有较大改善。