基于两点三次样条插值算法的大尺寸LCD图像缩放引擎设计
2013-01-18向祖权刘政林刘志会
向祖权 刘政林 刘志会
(武汉理工大学交通学院1) 武汉 430063) (华中科技大学光学与电子信息学院2) 武汉 430074)
0 引 言
在图像显示领域,很多情况下图像源输出的图像分辨率是变化的,目前工业上常用的分辨率有 VGA,SVGA,XGA,SXGA,UXGA 等.另一方面由于工业生产标准化的需要,常见的LCD显示面板中,某一物理尺寸的显示屏其分辨率都是固定的,例如381mm(15in)液晶屏的分辨率为1 024×768,431.8mm(17in)液晶屏的分辨率为1 280×1 024,这就造成信号源输出的图像分辨率和LCD显示器的物理分辨率不匹配的问题[1].要在液晶显示器上取得最佳的全屏图像显示效果,就是以显示屏的物理分辨率来显示图像.假如输入图像的分辨率为800×600,而显示器的物理分辨率为1024×768,如果没有LCD控制器的话,800×600大小的图像将显示在显示屏的中央,而在图像四周填充黑框来实现全屏显示.这样的显示效果是难以令人接受的,故而需要LCD控制器对图像数据进行缩放以匹配显示器的物理分辨率,以求获得最佳的显示效果.
图1是设计的大尺寸LCD控制器的原理框图,本文主要论述了控制器的核心部分——图像缩放引擎的设计实现[2-5].
图1 LCD控制器的基本结构
1 两点三次样条插值算法的提出
在图像缩放应用中,用的最流行的简单算法主要是nearest,bilinear和bicubic.例如,Adobe的图像处理软件Photoshop中提供了这3种插值算法.在中低端数码相机图像插值中,几乎全部采用这3种插值算法,具体采用这3种算法中的哪一种,主要根据应用场合而定.图像缩放算法的复杂程度和图像的缩放质量是成正比的,也就是说算法越复杂,得到的缩放图像质量一般也越高.但复杂的算法需要的计算时间大大增加,从而造成前面的数据计算还没有完成,后面的数据已经进入而覆盖前面的数据这样的混乱局面,且随着算法的复杂程度增加,用硬件实现也较困难,因此两者是不可兼得的.例如LCD显示器在UXGA模式下时,其显示时钟高达135.48MHz,要在如此高的频率下实现图像缩放的实时性,采用复杂的算法具有相当的难度.本文结合LCD这一特定的应用场合,提出了一种基于两点的三次样条插值算法,该算法在硬件实现上和nearest,bilinear一样简单,但可以获得比它们好的图像处理效果.
下面阐述基于两点的三次样条插值函数的求取过程.如图2所示,虚线表示最近领域插值的插值核曲线,点化线表示线性插值的插值核曲线,实线表示提出的基于两点的三次样条插值核曲线.三次样条函数f(x)必须满足下面3个条件:(1)函数通过点A(0,0),C(1/2,1/2)和D(1,1),即f(xi)=yi,i=1,2,3;(2)函数一阶导数和二阶导数连续;(3)函数在每一个子区间[xi,xi+1]上均是三次多项式.
图2 插值核曲线
根据条件(3),三次样条函数f(x)的一般表达式可写为
式中:ai,bi,ci,di为待定系数.
根据式(1)和分段插值条件,来建立由系数ci表示的函数表达式.根据条件(1),可以得到
用ci来表达未定系数bi,di,f(x)的表达式为:
式中:hi+1=xi+1-xi.
基于子区间[xi,xi+1]和[xi-1,xi]上样条函数内在关系.可以得到一个可以惟一确定系数ci的表达式
式中:
为了惟一的确定出ci,还需要另外一个边界条件,在本算法的推导中设定点A和D的一阶导数为零.最后可以推出基于两点的三次样条插值函数为
提出的基于两点的三次样条插值核曲线之所以能够取得比线性插值更好的图像插值效果,其主要原因在于:(1)点A和D 处的一阶导数为零,保证了尖锐边缘区域与平滑区域两边的平滑过渡;(2)点C处的一阶导数等于1.5,这和线性插值相比,可以得到更好的高频响应,从而使图像边缘更加接近源图像.
2 图像缩放引擎的结构及插值滤波器设计
2.1 图像缩放引擎的结构
LCD控制器的关键部分就是图像缩放引擎.从图1可以看出,图像缩放引擎由FIFO、水平缩放、Line buffer和垂直缩放4个部分组成.在用硬件实现时,其具体的结构及各功能模块之间的信号关系见图3.
图3 图像缩放引擎的总体结构
FIFO的作用是用来在输入时钟域和显示时钟域之间稳定地传递数据,并缓冲输入数据,保证输入和输出图像的帧同步,FIFO以前为输入时钟域,之后属于显示像素时钟域,该时钟由内部或者外部PLL提供.水平缩放引擎实现对输入图像水平方向的缩放,处理后的数据进入行缓冲器(line buffer)进行缓存.垂直缩放引擎实现对输入图像垂直方向的缩放.水平和垂直缩放器均是基于本章第三节提出的两点三次样条插值的低通滤波器.设计的LCD控制器预期支持的最高分辨率为SXGA,为了给FIFO预留一定的裕度,图像缩放引擎中的FIFO大小为2 048×24.在垂直方向要插值出一行新的数据,由两点三次样条插值算法可知必须事先在line buffer中预存2行图像数据,同时为了时序配合的需要,line buffer也需要一定的裕度,因此在设计中line buffer的大小为4行,每行的大小为2 048×24.
2.2 插值滤波器的设计
从两点三次样条插值的插值核函数可以看知,每求取一个插值系数,需要做一次立方、一次平方、两次乘法和一次减法运算,为了减少实时计算滤波器插值系数的工作量,在滤波器硬件实现时采用查表法(look-up table,LUT)来实现插值系数的求解.每一个LUT的大小是256×8,将插值曲线的变量取值区间[0,1]等分为256份,则可以得到256个函数值f(xi),i=0,1,2,…,255,每个f(xi)为8bits.具体的插值实现如下.
如图4所示,插值点的像素值由下式确定
式中:i和j均为整数,i=1,2,…,out_num,j=1,2,…;in_num,out_num 为图像放大后的分辨率,in_num 是源图像的分辨率;f(xi)和1-f(xi)为插值滤波器的插值系数.
i和j之间的关系如下.
函数Round就是对i×ratio截取整数部分.ratio则由下式求得.
新的插值位置:
函数Fraction就是对i×ratio截取其小数部分.
图4 插值实现原理图
式(12)确定了插值点的位置,该位置信息确定后,将其映射成LUT的入口地址,则可以查找到相应的插值系数f(xi),另外一个插值系数1-f(xi)通过对f(xi)执行逻辑非操作来实现.LUT的入口地址由下式确定:
LUT技术的使用,简化了水平和垂直缩放器的滤波器结构,水平和垂直滤波器结构见图5.
图5 插值滤波器结构
3 算法效果的Q值评价
为了评价本文提出的两点三次样条插值的图像处理效果,采用文献[6]提出的Q值评价法来评价插值后的图像质量,该评价方法已经被证明了它比MSE,NMSE,PSNR更符合人的主观视觉感受.用于评价的图像来自 USC-SIPI(university of southern california-signal &image processing institute)图像数据库.所选用的图像见图6.对图中的8幅图像先进行2倍抽取得到低分辨率的图像,然后采用nearest,bilinear,bicubic和两点三次样条插值法进行重建.各重建图像的Q值评价见表1.
图6 用于Q值评价的测试图像(512×512)
表1 两点三次样条插值和传统插值算法之间的Q值评价
由表1可见,4种插值算法的Q值比较接近于1,可见各种算法处理后得到的图像与原始图像比较接近.但nearest插值法的Q值最低,bilinear的Q值较大,bicubic的Q值最高,本文提出的基于两点的三次样条插值法的Q值非常接近bicubic的Q值,甚至有2幅图像(elaine、tiffany)的Q值大于了bicubic处理后的Q值,可见本文提出的算法处理效果非常接近于bicubic算法的处理效果.而在硬件实现时,当均使用LUT查找表技术来实现时,根据本课题LCD控制器的体系结构,实现bicubic算法时需要进行3次加法、4次乘法、且至少需要4行line buffer,而实现本文提出的插值算法则只需要进行1次加法,2次乘法和至少需要2行line buffer,因此本文提出的算法在节省硬件开销的同时,可以达到和bicubic非常接近的图像处理效果,对于设计的LCD控制器来说是一个性价比较高的选择.
4 结束语
图像缩放引擎已经用Verilog HDL进行RTL描述并完成FPGA验证,许多测试图像和几部电影被显示在15in的LCD屏上,FPGA验证时的显示效果见图7.
图7 FPGA验证时静态文本图像和视频图像的显示效果
当在 VGA,SVGA,XGA,SXGA,UXGA之间改变图像分辨率时,图像缩放引擎工作正常,在LCD屏上得到了良好的图像显示效果和稳定性,整个画面清晰、无抖动、色彩渲染效果理想.这表明设计的图像缩放引擎工作正确,达到预期设计目标.提出的两点三次样条插值算法不仅使图像缩放引擎的硬件实现简单,而且节省硬件开销,同时取得了良好的图像处理效果.
[1]KIM H C,KWON B H,CHOI M R.An image interpolator with image improvement for LCD controlle[J].IEEE Trans.On Consumer Electronics,2001,47(2):263-271.
[2]向祖权,邹雪城,刘政林,等.应用 MTV412M实现LCD控制器AMI-Scaler的显示控制[J].微电子学与计算机,2006,23(11):60-62.
[3]陆二庆,栗方,赵荣阳.S3C2410TFT-LCD显示的驱动程序设计[J].电脑开发与应用,2009,22(3):55-59.
[4]梁浩东,张国平,潘 梁.基于ARM处理器S3C2440A的便携式视频展示台的设计[J].电子设计工程,2013,21(14):21-25.
[5]赵慧波,邹雪城.LCD定标器中输入数据格式测量的设计实现[J].华中科技大学学报:自然科学版,2005(3):78-81.
[6]ZHOU Wang,ALAN C B.A universal image quality index[J].IEEE Signal Processing Letters,Mar.,2002(9):81-84.