APP下载

基于FPGA实时处理的色彩插值算法*

2010-06-25曾伟民黄春晖陈炳来

电视技术 2010年1期
关键词:二阶像素点插值

曾伟民,黄春晖,陈炳来

(福州大学 物理与信息工程学院,福建 福州 350002)

1 引言

随着数码相机、拍摄手机的普及,CCD/CMOS图像传感器近年来得到广泛的关注和应用。对于专业相机,使用3个传感器,每一个像素点都可以直接获得R,G,B 3个值,每个传感器需要精确的机械控制,以便对应各自的色彩通道,这是最昂贵的解决方法。在这种情况下,每个传感器得到一幅完整的单通道图像,最后再合成一幅全彩色图像,而不会出现马赛克现象。

一般数码相机的传感器(CCD或CMOS)约占整机总成本的10%~25%,为了减少成本,缩小体积,一般市场上的数码相机大多采用单传感器,即在传感器的表面覆盖一层色彩滤波阵列(Color Filter Array,CFA),其中 Bayer阵列在业界使用最为广泛 (本文讨论只针对此阵列),这样一来每个像素点只能捕获三基色R,G,B中的一个,而缺失另外两个色彩值,这时候得到的是一幅马赛克图像。为了得到全彩色的图像,需要利用其周围像素点的色彩信息来估计出缺失的另外两种颜色,这种处理叫作色彩插值,也称作彩色插值或去马赛克。

经过30多年的发展,学者们提出了各种各样的色彩插值算法。本文对各种算法的优、缺点进行了深入的分析,并对Lu算法进行改进,使之能够应用于实时FPGA硬件系统。

2 算法分析及Lu算法改进

2.1 经典算法分析

双线性算法(Bilinear)[1],该算法始终在 3×3 窗口中求平均值,忽略了图像的细节信息,以及图像3个颜色通道之间的相关性,所以往往得不到满意的插值效果,容易在边缘处产生虚假色和彩色摩尔纹。

一阶(Hibbard)[2],二阶(Laroche)[3]微分算法,插值绿色通道G时,进行了边缘检测,插值红/蓝色通道(R/B)时利用不同颜色通道间的相关性(色差恒定性),因此插值效果较双线性算法有了很大提高。但是,在插值通道G时,没有用到通道相关性,插值通道R/B时,没进行边缘检测,故插值的准确性不是很好。

自适应插值算法(Adams-Hamilton)[4],对一阶、二阶微分算法进行了改进,结合了一阶微分和二阶微分进行边缘检测,插值时对三通道都进行了边缘检测,并考虑了通道间的相关性,因此插值效果较一阶、二阶微分算法有了进一步提高。

以上算法虽然取得了很好的插值效果,但是它们在插值过程中都采用对周围像素值取平均的方式,即对参与插值的像素赋予相同的权重,或0.5或0.25,这种方式被称为线性插值。此方式实现起来比较简单,但实际图像的很多细节并非周围像素值取平均可以描述的,而是侧重于某一个方向,因此用线性插值法进行插值是不可取的。Kimmel算法[5]在结合边缘检测和色彩通道相关性的基础上首次引入加权系数(即非线性插值),它根据梯度信息,对不同像素点赋予不同权重,非线性插值算法对边缘具有很强的自适应能力[6],因此Kimmel算法取得了非常好的插值效果。Lu算法[7]也属于此类算法,是对Kimmel算法的改进。首先,在加权系数的计算上,Lu算法采用Sobel算子和一维二阶梯度算子相结合,计算简单有效,避免了Kimmel算法中的复杂的开平方运算;其次,在色彩通道相关性上,Lu算法采用的是色差恒定性,计算简单有效,不像Kimmel算法采用的是色比恒定性,需要用到除法,计算量大,并且容易出现噪声点。Lu算法是当前常规算法中综合性能最好的算法之一。

随着新技术的产生与发展(如小波变换技术,人工神经网络技术),出现了一些新的色彩插值算法(基于小波变换算法及基于神经网络算法),这类算法以新技术为基础,具有比常规算法更好的插值效果,但是这一类算法计算量非常巨大,不适合运用于实时硬件系统。

2.2 改进Lu算法

通过以上的分析,Lu算法是能运用于FPGA实时硬件系统综合性能最好的算法。但是由于它采用了非线性插值方法,需要调用5个除法器,除法器是IC设计中最耗费硬件资源的单元,运算时间长,工作频率低;此外,Lu算法对插值后的结果进行了迭代修正,需要对插值结果进行存储。这些不仅浪费大量的硬件资源,大大增加系统的成本,并且很难实时处理。基于这些原因,本文对Lu算法进行改进,在不明显影响插值质量的前提下,降低算法计算量,提高工作频率,使之适合实时硬件系统。

按照Bayer模式的色彩滤波阵列,在有周期规律的采样中,G像素的个数占像素总量的50%,R像素和B像素各占25%,G平面的像素数目更多,会有更少的混淆现象,对细节的保存要比其他两个平面要好,G平面的插值好坏直接影响了R/B通道的插值,而且人眼对绿色最为敏感,因此对绿色通道仍然采用非线性插值方法。本文采用乘法和对比相结合的方法近似代替除法运算。由于R像素和B像素所占比例均只有25%,丢失的信息多,即使采用非线性插值算法,也无法很准确地插值,即在R/B通道的插值上采用线性插值方法和非线性插值区别不大,因此在R/B通道上采用线性插值方法。另外,Lu算法的迭代修正步骤,虽然能减少伪彩色和锯齿形失真,但是需要对图像进行存储,浪费大量的硬件资源,大大增加系统的成本,而且很难实时实现。在Matlab仿真Kodak图像数据库中的24幅全彩图像,通过对比修正前后的图像,差异并不明显。综合考虑以上因素,本文不对插值后的图像进行迭代修正,而是将其伪彩色和锯齿形失真当成噪声点,留给后续的去噪步骤进行处理。

1)插值R/B像素上的G分量

在边缘检测梯度计算上与Lu算法相同,仍采用Sobel算子和一维二阶梯度算子相结合的方式。不同的是,Lu算法用4个不同方向梯度的倒数进行权重因子计算,本文直接用梯度进行计算,避免了4次除法运算,以图1在像素点B44上插值绿色分量为G^44为例进行说明。

图1 Bayer滤波阵列

由上可知在计算权重因子 α34′,α43′,α45′,α54′等仍然要用到除法,但是除法是不可取的,本文用乘法和对比相结合的方式近似计算权重因子。以α34′为例进行说明:首先,将分母α平均分成2n份(这样可以用移位进行除运算),n的值取决于所需要的近似精度,则权重系数分别为,共2n个等级,精度为本文取n=5,即将α平均分成32份,精度为0.015625;其次通过对比,判断分子 α43,α45,α54的落点位置 P,选择与之最近的权重系数近似代替真实权重系数。α43′,α45′计算方法与 α34′一样,α54′则多了两个权重系数0和 1。

2)插值R/B像素点的B/R值

如图 1所示,以插值B44上的为例,由于B44的斜方向上采样到4个R分量,信息较多,采用较好的算法则能获得较好的插值效果,因此采用自适应算法进行插值,具体算法如下:

定义:

3)插值G像素点的R/B分量

由于G像素点邻域内所采样到的R/B分量很少,精确的算法对插值效果的提高不明显,故只利用色差恒定性原理进行插值,如图1所示,以插值像素点G34上的,为例,其计算方法为

3 仿真分析

分别采用Lu算法和改进后的Lu算法对Kodak图像数据库中的24幅全彩图像在Matlab上进行了插值,为了更准确地对比两种算法的特性,笔者统计了整幅图像的全局峰值信噪比和边界像素点的峰值信噪比,在边界检测上使用的是Candy算子,通过对比数据发现:改进后的算法在G通道上的插值略逊于原算法,此差距可通过增加近似计算的精度来减小;在R/B通道的插值上,改进后的算法与原算法不相上下。观察两种算法插值恢复的图像,几乎无差异。即使差异最为明显的Lighthouse图像上的栅栏,差异也不会很明显,截取后的栅栏对比如图2所示。

图2 Lighthouse栅栏插值效果对比

编写两种算法的Verilog HDL代码。为了突出重点,两种算法的代码均未考虑数据的读取、存储和接口。由于迭代运算过程繁琐,接口复杂,并且不影响问题的说明,为简化起见,Lu算法的代码不包含迭代修正过程。在Quqrtus II上选用Altera Cyclone II器件族中的EP2C15AF484C6综合实现:Lu算法消耗了1599个LE,331个寄存器,4个内嵌乘法器;改进后的算法消耗了852个LE,280个寄存器,7个内嵌乘法器。时序分析结果:在 Fast model(极限频率)下,Lu 算法为 72.5 MHz,改进后算法为 240 MHz;在 Slow model(保守频率)下,Lu算法为31.25 MHz,改进后算法为112.5 MHz。仿真报告如图3所示。

图3 仿真报告图

4 小结

通过深入分析目前存在的各种色彩插值算法的优缺点,并对Lu算法进行了改进,避免了除法运算和迭代,使之适合FPGA硬件系统的实时实现。Matlab仿真结果表明,改进后的Lu算法在插值效果上略逊于原算法;在Quartus II上仿真表明,改进后的算法节省了大量的LE和寄存器等硬件资源,大大提高了工作频率,很好地折中了插值效果和硬件实现难度之间的矛盾。

[1]HIBBARD R H.Apparatus and method for adaptively interpolating a full color image utilizing luminance gradients[EB/OL].[2009-06-10].http∶//www.freepatentsonline.com/5382976.html.

[2]LAROCHE C A,PRESEOTT M A.Apparatus and method for adaptively interpolating a full color image utilizing chrominance gradients[EB/OL].[2009-06-10].http∶//www.freepatentsonline.com/5373322.html.

[3]HAMILTON F,ADAMS J E.Adaptive color plane interpolation in single sensor color electronic ceamera[EB/OL].[2009-06-10].http://www.freepatentsonline.com/5652621.html.

[5]KIMMEL R.Demosaicking∶image reconstruction from color CCD samples[J].IEEE Trans.Image Processing,1999,8(9):1221-1228.

[6]刘晓松,杨新,文逡,等.一种用于数字图像传感器的彩色插值算法[J].中国图象图形学报,2003,8(5):516-521.

[7]LU Wenmiao,TAN Yappeng.Color filter array demosaicking:new method and performance measures[J].IEEE Trans.Image Processing,2003,12(10):1194-1210.

猜你喜欢

二阶像素点插值
基于局部相似性的特征匹配筛选算法
一类二阶迭代泛函微分方程的周期解
基于Sinc插值与相关谱的纵横波速度比扫描方法
一类二阶中立随机偏微分方程的吸引集和拟不变集
二阶线性微分方程的解法
基于5×5邻域像素点相关性的划痕修复算法
一类二阶中立随机偏微分方程的吸引集和拟不变集
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
一种改进FFT多谱线插值谐波分析方法