CrazyBingo

【连载6.2.3】3X3 Bayer阵列恢复算法优化方案

1
阅读(2475)

Bayer阵列的恢复算法,有很多种。最简单的可以通过2*2,即2行通过插值来实现RGB阵列的恢复。据说OV7725 内部就是通过2行插值实现的Bayer阵列恢复,因此输出的彩色图像,在质量上都欠佳。

Bingo在前面一节中设计的是3X3的Bayer阵列恢复,即通过3行的值来实现RGB阵列的恢复。3X3阵列恢复的算法,明显比2X2恢复后的图像要鲜艳,同时更清晰的细节。但是仔细的观察上述工程中恢复得到的图像,如下所示:

4.jpg

从图中可见,图像的边缘有锯齿,细节不够清晰。那么,使用3X3的阵列恢复,是否有还有优化的余地呢???答案是必然的。这里Bingo给出通过Matlab仿真测试的2X2恢复、3X3恢复、3X3梯度恢复后的三种图像,对比如下所示:

2.jpg

可见从做到右,边缘细节明显增强,画质也更加优越。。3X3梯度恢复方案,Bingo也不是凭空想象出来的。当年Bingo通过查阅n多论文,最后得到了针对3X3 Bayer阵列恢复的优化方案。这里Bingo给出方案,但希望读者自己去实现,自己动手,丰衣足食。

3X3梯度Bayer阵列优化方案:

原有的3x3模板不变,无需使用不同像素的通道信息,考虑G分量的水平、竖直梯度,以及R/B的对角线梯度(主要是G在四周的情况,即中间为R或者B),进一步保留图像的边缘信息,改善奇数行以及偶数行3*3矩阵处理的方案!公式及算法如下所示:

1)奇数行

    a) 奇数列,B在中心

6.jpg

2)偶数行

    a)偶数列,R在中心

7.jpg

由于在处理过程中边界行列的舍取,相对于5X5而言,3x3更多的减少了边界效应。3X3如下图所示,采用一般的3X3领域插值算法,与采用边缘导向算法,处理后的得到图像,进行边沿提取进行对比,可见边缘导向算法后边缘和细节更加完整,同时,由于在改进型插值方案中,采取了对角线梯度法,红色和蓝色分量也更加接近真实。

8.jpg

补充:其实很多图像算法对边界也采用补0的方式,读者也可以试试。采用补0的方式,就不需要缓存行/像素,直接可以在第一个像素得到3*3矩阵了,反而更简单了。