基于Bayer格式图像的实时色彩还原算法

2019-05-14 08:10徐弘基王若溪常玉春
液晶与显示 2019年3期
关键词:色差插值梯度

王 麓,徐弘基,王若溪,孙 畅,常玉春

(吉林大学 电子科学与工程学院,吉林 长春 130012)

1 引 言

随着CMOS图像传感器的飞速发展,在实时图像处理和目标识别中大多采用单CMOS Bayer格式图像传感器作为成像元件进行彩色图像捕获,再将Bayer图像转换成为RGB图像数据,用于实时图像记录、处理及数据传输,转换方式大多采用外部处理器来实现,如果处理器的速度足够快,可以实现实时色彩还原,但随着分辨率和帧频的大幅度增加,目前的色彩还原的图像处理算法很难满足实时性的需要,例如Kimmel的加权系数法[1]、AHD算法[2]以及Gunturk的基于小波变换的迭代方法[3]等等。尽管这些算法能做到较为准确的色彩还原,但由于这些算法的复杂程度过高,所消耗的资源过大,无法实现实时色彩还原。所以本文提出一种新的基于突变检测机制及色差空间理论的颜色插值算法,旨在解决色彩还原程度和计算复杂二者之间的矛盾,能够满足大面阵高帧频数字相机在实时图像处理中的应用。

2 两种经典的Bayer图像还原算法

两种传统的Bayer 插值算法分别是:双线性插值[4]和边缘检测算法[5]。

图1 Bayer格式图像示意图Fig.1 Bayer format image diagram

根据图1,双线性插值算法利用目标位置附近距离最小的相同颜色像素点的均值对该点进行插值计算。计算规则如下:

(1)

(2)

(3)

(4)

通过这样简单的计算,会使最终的色彩还原有较大失真。

边缘检测算法是一种基于梯度插值的算法,以B33为例,计算规则如下:

水平方向梯度表达式为

α=|G32-G34|,

(5)

竖直方向梯度表达式为

β=|G23-G43|,

(6)

通过比较两个方向梯度值的大小最终确定G33的表达式:

(7)

它在一定程度上弱化了利用梯度分量的大小还原出G分量的值,再根据该分量的值,利用双线性插值恢复出R分量和B分量的像素值。

经典色彩还原算法,对视场边缘像素色彩还原时需要单独处理,不能用同一的算法实现快速的流式处理。对于实时图像处理具有较大影响。同时在突变区域会产生色彩混叠效应,图像边缘色彩还原错误。

3 改进的插值算法

3.1 插值前预处理

为了简化整幅图像边界处像素点的计算,适合用FPGA实现实时色彩还原,本文采用了一种扩展卷边的图像预处理方法。即采用每幅图像的左右及上下的边缘2个像素单位作镜像,添加到原图像上,假设原图像的大小m×n,利用该规则将原图像的行列值均扩大4个像素单位,即扩大后的图像大小为 (m+4)×(n+4)个像素单位。图像扩大前的像素值分布示意图如图2所示,图像扩大后的像素值分布示意图如图3所示。

对于预处理后的图像,可以利用一套算法实现对整幅图像的色彩还原,无需判断该像素是否

图2 图像扩大前像素值分布示意图Fig.2 Distribution diagram of pixel values before image expansion

图3 图像扩大后像素值分布示意图Fig.3 Distribution diagram of pixel values after image expansion

属于该幅图像的边缘。也确保了整幅图像的色彩还原没有边缘轮廓效应。也提高了计算效率,更适合流式处理。最后将色彩还原后的图像数据每个边缘区域去掉两行与两列。

3.2 全图像绿色缺失点插值算法

以图1的B33点为例,水平方向梯度表达式为:

∂H=|2B33-B31-B35|+|G32-G34|,

(8)

即利用向量[B31G32B33G34B35]与向量[-1 1 2 -1 -1]T做乘积运算,竖直方向梯度表达式为:

∂V=|2B33-B13-B53|+|G23-G43|,

(9)

即利用向量[B13G23B33G43B53]与向量[-1 1 2 -1 -1]T做乘积运算。通过两个方向梯度大小的比较,确定该点水平方向边缘值和竖直方向边缘值[6-7]。依据式(8)和式(9),突变处像素值的计算规则如下:

(10)

得出B33点处水平方向边缘值和竖直方向边缘值后,取一个像素点5×5的邻域,统计该邻域内水平方向边缘值和竖直方向边缘值并带入下式,得:

flag_H=[H(i-2,j)H(i-1,j)H(i,j)
H(i+1,j)H(i+2,j)][1 0 1 0 1]T,

(11)

flag_V=[V(i,j-2)V(i,j-1)V(i,j)
V(i,j+1)V(i,j+2)][1 0 1 0 1]T,

(12)

从而得到该点处的水平/竖直方向梯度标志位的值。

根据参考文献[6]可知,每幅图像都具有平滑的特性,只有在边缘区域会有可能出现色差突变的情况。因此可以得到如下结论:图像边缘处的色差梯度值将远大于图像其他地方的色差梯度值。所以,本文根据此结论选取色差梯度值小的方向作为插值方向。故利用式(11)和式(12),通过对比水平梯度标志位与竖直梯度标志位值的大小的方法,确定B33点处的插值方向,求出G33如公式(13)所示。

(13)

3.3 蓝(红)色通道红(蓝)色缺失分量插值算法

当红、蓝通道的绿色分量已经求得之后,就利用图像平滑特性,根据色差法求得蓝(红)色通道红(蓝)色缺失点像素值[8]。正如前文所提到过的,每幅图像只有在边缘区域才会出现色差突变,这样就可以通过求某点周围的色差值的均值来等效替代该点处的色差值,进而计算得到红、蓝通道的对应缺失分量[9]。具体方法如下(以计算某蓝色通道的红色缺失分量为例):

ΔCr(i-1,j-1)=G(i-1,j-1)-R(i-1,j-1),

(14)

ΔCr(i-1,j+1)=G(i-1,j+1)-R(i-1,j+1),

(15)

ΔCr(i+1,j-1)=G(i+1,j-1)-R(i+1,j-1),

(16)

ΔCr(i+1,j+1)=G(i+1,j+1)-R(i+1,j+1),

(17)

利用式(14)~(17)可以计算得出某蓝色通道处周围右上方(45°)、右下方(135°)、左下方(225°)、左上方(315°)4个方向的红、绿色差分量。根据图像平滑特性,有下式成立:

ΔCr(i,j)=[ΔCr(i-1,j-1)+ΔCr(i-1,j+1)+
ΔCr(i+1,j-1)+ΔCr(i+1,j+1)]/4,

(18)

通过ΔCr(i,j)=G(i,j)-R(i,j)可以得到:

R(i,j)=G(i,j)-ΔCr(i,j),

(19)

至此,某蓝色通道的红色缺失分量得以求取。某红色通道的蓝色缺失分量的计算方法同上。

3.4 绿色通道红、蓝缺失分量插值算法

绿色通道红、蓝缺失分量插值算法类似于前文的蓝(红)色通道红(蓝)色缺失分量插值算法,但由于Bayer图像通道颜色的分布规律,每个绿色通道周围只能存在两个相同的通道颜色,所以在计算时只需计算两个相同通道颜色的色差值,再取其均值,带入色差公式,即可求得绿色通道红、蓝缺失分量。

4 算法仿真与分析

为了验证本算法的性能,本文采用恢复马赛克图像最常用的两种指标—峰值信噪比(peak signal-to-noise ratio, PSNR)和均方误差(mean squared error,MSE)来对色彩恢复后的图像进行分析。PSNR和MSE定义如下:

(20)

(21)

其中,M和N代表图像的大小为M×N个像素单位,B代表编码一个像素所需要的二进制位数(B取8),f0(x,y,i)代表原始图像在x行y列的强度分量,fr(x,y,i) 代表恢复后图像在x行y列的强度分量。

通过以上的计算方法,不难发现,PSNR的值越大,代表图像色彩还原出的水平越高[10]。

图4 不同算法的PSNR结果统计Fig.4 Statistics of PSNR results by different algorithm

几种不同算法恢复结果的PSNR统计如图4所示。我们可以很容易发现,从PSNR 的角度来看,本文的算法明显优于其它几种算法,尤其是在细节多且复杂的情况下,这种优势更为明显。

5 本文算法与其它算法的比较

图5是经过不同算法进行色彩还原后,从目测结果可知经过双线性插值法(BI)还原后的图5(b)在色彩还原方面有很大程度上的偏差,距离原图像色彩还有较大差距;经过参考文献[5]还原后的图5(c)会产生Zipper效应[11],且在图像边缘位置出现较明显的不规则区域,使得图像色彩突变部分出现较为明显的失真;经过参考文献[6]还原后的图5(d)会在某些区域会产生小面积的色彩失真,影响最终成像;经过本文算法还原后的图5(e)的色彩基本和原图保持一致,并且细节丰富、锐化了图像纹理并大大减少了Zipper效应,极大程度上改善了目标图像的视觉质量,达到了预期的效果。

图5 不同算法对应的色彩恢复结果。(a)原图; (b)BI 方法; (c)参考文献[5]方法; (d) 参考文献[6]方法; (e) 本文算法。Fig.5 Color recovery results of different algorithm.(b)Original figure. (b)BI method. (c)Ref.[5]method. (d) Ref.[6]method. (e) Proposed meth.

图6 算法硬件实现流程图Fig.6 Flow diagram of the hardware implementation of the algorithm

6 算法的硬件实现

本算法在基于Virtex-6的实时图像处理平台实现,通过带有预处理的自适应插值方式对Bayer图像进行色彩恢复,具体过程如下:接收分辨率为12k×5k的CMOS图像传感器中的Bayer图像数据,通过FPGA内部的仲裁机制把数据存储在存储器中。然后利用Virtex-6的性能优势对采集到的图像进行色彩恢复的相关图像处理过程。经过处理的图像再根据后续的需要通过Camera Link接口或者DVI接口协议进行后续传输。同时,该系统基于单片XC6VLX240T FPGA进行设计,并预留了丰富的外部接口,以满足后续的升级、扩展等需求。表1为采用本文算法实现12k×5k Bayer数据还原时FPGA资源的使用情况,从表中可以看出此算法占用资源少,执行效率高,适合用FPGA做并行处理[12]。

图7 硬件实现平台Fig.7 Hardware implementation platform

表1 FPGA资源利用率Tab.1 FPGA resource utilization ratio

7 结 论

本文提出了一种基于FPGA实现的Bayer图像色彩还原方法,与传统的双线性插值和梯度插值算法相比稍显复杂,但由于其巧妙的加入了图像边界处的预处理,令其可以与内部像素点运算方法一致,无需考虑判断像素点位置。各个步骤的运算也充分考虑到了每个像素点中R、G、B 3种颜色的关系以及相邻像素点的平滑特性,通过对5×5邻域内特定方向梯度值的统计,大大消除传统方法所带来的色彩混叠错误,尽可能还原出更高精度的画面色彩。在完成色彩还原的同时,做到提高计算效率并降低复杂度。经过色彩还原后的图像具有边界清晰,细节丰富的特点且满足项目的实时性要求。实验结果表明,利用该方法可以实现12k×5k@10 f/s的图像数据实时色彩还原。

猜你喜欢
色差插值梯度
CIEDE2000色差公式在彩涂板色差检测上的应用研究
一个带重启步的改进PRP型谱共轭梯度法
一个改进的WYL型三项共轭梯度法
一种自适应Dai-Liao共轭梯度法
一个具梯度项的p-Laplace 方程弱解的存在性
彩涂板色差标准板管理方法的探讨
基于Sinc插值与相关谱的纵横波速度比扫描方法
基于pade逼近的重心有理混合插值新方法
涂装色差控制工艺分析
混合重叠网格插值方法的改进及应用