如何使用RGB格式图像传感器去构建一个通用马赛克算法

描述

Bayer 格式的图像传感器在每个像素位置上只采样红绿蓝三原色中的一种。在某些应用中,Bayer 颜色滤光片阵列(colour filter array)的一个 G(绿色)滤光片会被其他滤光片代替,如 W(白色) 滤光片或 IR(红外) 滤光片等。而绝大多数发表的去马赛克算法都是基于经典的Bayer 格式。文中提出了一种通用的去马赛克算法,不仅可以适用于所有以 2x2 为最小采样周期的图像传感器而且该方法在颜色峰值信噪比(CPSNR)方面也达到了很高的指标。

1  引言

Bayer 格式的图像传感器在每个像素位置上只采样红绿蓝三原色中的一种[1-5]。为了提升去马赛克后输出图像的分辨率, Bayer 格式图像传感器在其 2×2 的最小采样周期的对角线位置上采样绿色。某些应用要求成像设备能够同时提供被摄场景的 RGB 图像和红外图像[6],从降低成本的角度考虑,这就需要图像传感器在采样红绿蓝三原色的同时也采集红外光。在现有 Bayer 格式传感器基础上最简单的一种改进方法是将现有 2×2 最小采样周期对角线上的一个绿色滤镜换成红外滤镜。业内称这种图像传感器为RGBIR 格式。

S.Süsstrunk 和 C.Fredembach 也在文[7]中提出了 RGBIR 传感器的许多其他应用,包括去雾和皮肤平滑。而另外一些应用要求图像传感器在采集彩色图像的同时可以提供更好的低光性能,会将现有 Bayer 格式的一个绿色滤镜直接拿掉,这样该通道就可以采集各种波长的光线。业内称这种图像传感器为 RGBW 格式[8]。后续为了说明的方便,统一称这种改进型图像传感器为 RGBX 传感器。

为了满足上述应用,文献[9,10]中讨论了彩色滤镜的其他排列组合方法。然而,考虑到传感器的制造成本,本文只关注以 2×2 为最小采样周期的非 bayer CFA 模式。如图 1 所示,这是一种改进型的图像传感器。

图 2 是这种改进型图像传感器对应的一个典型的量化响应曲线,横坐标是入射光波长,纵坐标是不同波长对应的量化效率

由于 X 通道和绿色通道对入射光的量化响应曲线形状存在极大差异,导致了对角线位置上绿色和红外的采样值一般也差异较大。而传统针对 Bayer 格式的去马赛克方法的处理流程一般是首先利用 Bayer采样对角线上的两个绿色通道的相关性,内插出全分辨率的绿色通道,然后再基于局部色差一致性的假设,内插出全分辨率的红色和蓝色通道。不难看出,将一个绿色通道替换成了 X 通道之后,四个通道的采样率一致,所以这种先内插高采样率的绿色通道的去马赛克方法显然不再适用于改进型的图像传感器。

虽然,将双线性(bilinearity)、双三次(bicubic)等普通的内插方法分别作用于 RGBX 传感器的四个通道可以完成 RGBX 的去马赛克操作,输出四个全分辨率的图像。但是这类将每个通道独立内插的做法完全没有利用通道间的信息,去马赛克后输出图像的效果会存在分辨率低、亮色混叠严重等问题。就我们学术查新的结果来看,目前学术界还没有公布高性能的完全兼容 Bayer 格式的 RGBX 去马赛克算法。

2  本文提出的算法

由于我们假设 RGBX 图像传感器中所有通道都具有相同的采样频率(Bayer 格式可以认为是一种RGBX 图像传感器的特殊格式),因此本文提出的算法不需要遵循先内插 G 通道传统去马赛克算法流程框架。具体算法流程如下所述。

我们将原始的 RAW 图像看成是四个全幅面的RGBX 图像经过采样函数相加后的输出结果。表示为式(1)。

(1)

其中 f 代表全幅面图像,如 fCFA 代表全幅面的 RAW  图像, fR 代表全幅面的 R 图像,以此类推。

n1 = [1,2,...H],n2 = [1,2,...W] 分别代表图像垂直和水平方向像素位置,H 为全幅面图像高度,W 为全幅面图像宽度。

定义亮度分量L,色度分量C1,C2,C3 和 RGBX 的转换关系用矩阵表示如式(2)。

(2)

因此全幅面的 RAW 图像(CFA)也可以看成是四个全幅面的亮度和色度分量经过采样函数相加后的输出结果如式(3)。

(3)

其中 ,-1 = ejπ 则色度分量 C1 可以看成是调制到中心频率为(0.5,0)上的高频信号,色度分量C2 可以看成是调制到中心频率为(0,0.5)上的高频信号,色度分量 C3 可以看成是调制到中心频率为(0.5,0.5)上的高频信号,而亮度分量可以看成一个基频信号。

图 3 是将频率零点位移到中心点之后的亮度和色度分量在频域上的能量分布示意图。横坐标代表水平方向上的频率,纵坐标代表垂直方向上的频率。由图 3 可见,亮度信号 L 主要分布在二维坐标系的低频区域。色度信号 C1 到 C3 分布在二维坐标系的高频区域,其中 C3 分布在上图的四角,代表色度在对角线方向上的高频信号。C1 分布在上图的水平两侧,代表色度在水平方向上的高频信号。C2 分布在上图的垂直两侧,代表色度在垂直方向上的高频信号。去马赛克的思想可以是通过低通滤波器恢复出亮度信号,高通滤波器恢复出色度信号,然后通过矩阵变换转换到 RGBX 上。

在开始去马赛克运算之前,需要先对第四通道进行预校正运算。第四通道指的是四个通道中 RGB 通道外的通道,如果是 RGBIR 图像传感器,第四通道则为红外通道,如果是 RGBW 图像传感器,W 代表无色的滤镜,即这个通路响应从可见光到红外光的全部波长光线,第四通道则为 W 通道。

这里仍以 RGBIR 图像传感器为例,具体地说,在进行上述亮度和色度的卷积运算之前,最好对红外通道进行预校正运算,这是由于红外通道的量化相应曲线和 RGB 通道的量化相应曲线存在较大差异,在某些场景可能导致即使在相邻区域红外和可见光通道的信号也存在较大差距。而滤波器设计时受到阶数的限制,会有波纹现象。

经过卷积运算之后,RAW 图像上相邻区域输入信号的差异可能会被放大,那么在平坦区域上去马赛克输出可能会出现“网格”现象。红外通道预校正的目的是为了弱化当前像素邻近区域尤其是平坦区域上红外通道和可见光(RGB)通道的差异。

红外通道(第四通道)的预校正运算由校正因子和红外分量相乘完成。校正因子包括全局校正因子和局部校正因子。全局校正因子由输入的 RAW 图像中 RGB 通道的平均值和红外通道平均值相除获得。局部校正因子由当前红外通道邻域内的 RGB 通道的平均值和红外通道平均值相除获得。全局校正因子和局部校正因子通过加权系数融合得到。加权系数由当前红外通道邻近的 RGB 通道的梯度值通过查表计算得到。梯度值越大,局部校正因子的加权系数越小,反之则越大。

经过预校正处理之后可以开始内插运算。亮度分量去马赛克运算可以通过一个亮度滤波器和输入的全幅面的 RAW 数据进行卷积运算从 RAW 数据中恢复出亮度信号。这里亮度滤波器的参数可以预先设定,也可以根据 RAW 图像中当前像素的局部特征动态调整。

根据 RAW 图像中当前像素的局部特征动态调整亮度滤波器参数,具体是指先通过计算以当前像素为中心的 n×n(为获得较好的处理效果,n 最好大于或等于 3)邻域在各方向上的梯度或其他等效信息,然后利用梯度值或其他等效信息作为检索值查找预定义查找表得到对应的滤波器参数。或者通过计算不同方向之间梯度差或比值并与预定义阈值比较,从而判断当前像素处于平坦区域还是边界区域或者是细节区域。

若当前像素处于平坦区域,则选用对低频区域响应较好的亮度滤波器参数。若当前像素处于边界区域,则需要判断当前像素所在边界方向,并选用在此方向上响应较好的亮度滤波器参数。若当前像素处于细节区域时,则需要判断当前像素所在频段,并选用在此频段上响应较好的亮度滤波器参数。

对于平坦区域的判定,是指计算各方向间的梯度差或比值并与预定义阈值比较,当结果小于预定义阈值且各方向的梯度绝对值也小于预定义阈值时,认为是平坦区域。

对于边界区域的判定,是指计算各方向间的梯度差或比值并与预定义阈值比较,当结果大于预定义阈值且被减或被除梯度所示方向的梯度绝对值也大于预定义阈值时,认为是边界区域。一般可以认为,若当前像素既不在平坦区域,也不在边界区域,则该像素处于细节区域。当判断当前像素处于细节区域时,需要判断当前像素所在频段。当前像素所在频段由以下方法近似得到:预定义几组通过频率不同的带通滤波器和当前像素所在邻域做卷积运算后取最大值,其对应的带通滤波器通过频率即为当前像素所在频段。

色度分量去马赛克的运算可以通过三个高通滤波器分别和输入的全幅面的 RAW 数据进行卷积运算,从 RAW 数据中分别恢复出色度信号。这里高通滤波器的参数可以预先设定,也可以利用上述梯度值(即以当前像素为中心的n×n邻域在各方向上的梯度)或其他等效信息作为检索值查找预定义查找表得到对应的滤波器参数。或者根据RAW图像中当前像素的局部特征以及前述亮度滤波器参数动态调整。

上述根据 RAW 图像中当前像素的局部特征以及上述亮度滤波器参数动态调整色度滤波器参数,其思想是降低亮度和色度在高频部分的混叠(假色)现象。具体是指当前像素对应的亮度滤波器的通带接近默认色度滤波器的通带时,抑制色度滤波器的幅值。反之,则保留色度滤波器的幅值。

具体地,若亮度滤波器在水平方向上的通过频率较高时,则抑制当前像素对应的色度 C1 滤波器的幅值;若亮度滤波器在垂直方向上的通过频率较高时,则抑制当前像素对应的色度 C2 滤波器的幅值;若亮度滤波器在对角线方向上的通过频率较高时,则抑制当前像素对应的色度 C3 滤波器的幅值。抑制色度滤波器的幅值是指通过动态计算调整因子 ,点乘至色度滤波器参数上完成。

上述色度滤波器的参数调整也可以通过调整色度滤波器的截止频率来实现。具体是指当前像素对应的亮度滤波器的通带接近默认色度滤波器的通带时,提升色度滤波器的截止频率。具体地,若亮度滤波器在水平方向上的通过频率较高时,则提升当前像素对应的色度 C1 滤波器的截止频率。若亮度滤波器在垂直方向上的通过频率较高时,则提升当前像素对应的色度 C2 滤波器的截止频率。若亮度滤波器在对角线方向上的通过频率较高时,则提升当前像素对应的色度C3滤波器的截止频率。

需要说明的是,上述亮度分量的去马赛克输出也可以在 3 个色度分量都完成去马赛克运算之后由原始 RAW 数据和全幅面的色度分量之和相减获得。类似地,某一个色度分量的去马赛克输出也可以在亮度和其他 2 个色度分量完成去马赛克运算之后由原始 RAW 数据和上述全幅面的亮度和 2 个色度分量之和相减获得。

最后,利用式(4)中定义的亮度色度和 RGBX 的转换矩阵计算得出内插后的 RGBX 四个通道像素值。

(4)

3  测试结果

由于目前学术界和工业界都还没有标准的RGBX 测试集,因此在客观测试中本文采用了测试Bayer 格式去马赛克性能最常用的测试集 Kodak 的24 张 RGB 图像。

鉴于本文算法可以完全兼容 Bayer 格式,在我们的实验中,直接用 Bayer CFA 模式对图像进行采样,得到 raw 图像然后对下采样后的图像进行去马赛克插值,以评价插值结果。

我们将颜色峰值信噪比 CPSNR 作为客观评测性能指标。表 1 记录了 CPSNR 比较结果。从表中可以看出,本文提出的去马赛克算法以平均将近 0.8 dB 优于文献[11]中的算法,高于文献[12]中的 EIG 内插算法超过 1 dB,高于文献[13-15]中的线性插值法超过 4 dB。

4  结语

本文的主要贡献是建立了一个通用的去马赛克算法架,该算法适用于所有以 2×2 为最小采样周期的 Bayer 以及非 Bayer 模式图像传感器。实验结果表明,该方法对比其他算法具有较好的 CPSNR。经过少量修改后该方法也可用于其他以 4×4 为最小采样周期的 raw 信号。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分