(一)背景

彩色通道由RGB三种颜色通道组成,而CMOS采用CFA布局,每个像素点只能感知到一种颜色,其他的颜色需要插值补全。

硬件方面如何解决?一种方法是先用一个分光棱镜,分出三种颜色的光,然后用三个传感器接收图像,另外一种方法利用不同波长的光会在硅晶圆不同深度上的被吸收的原理,让一个像素同时感知到三种颜色。硬件方法都太贵,很少有地方在用。

下面就软件的去马赛克方法进行介绍。

(二)基本原则

如果仅仅是对每个通道进行双线性插值,会造成模糊,伪彩色,拉链效应的问题,因此我们不仅仅需要考虑当前的颜色,还需要考虑和其他颜色的关系,以及与边缘的关系,才能更加准确的还原出每个像素点的真实色彩。由于引出了两大基本原则。

下面的表格是raw图的一部分。

B(-1,-1) G(0,-1) B(1,-1)
G(-1,0) R(0,0) G(1,0)
B(-1,1) G(0,1) B(1,1)

谱相关(spectral correlation)

1.相邻像素颜色色调一致,色调即色度和亮度的比例,可以理解成B/G和R/G

B(0,0) = G(0,0) * (B(-1,-1)/G(-1,-1) + B(1,-1)/G(1,-1) + B(-1,1)/G(-1,1) + B(1,1)/G(1,1))/4

2.相邻像素颜色色差一致,色差即色度和亮度的差,可以理解成B-G,R-G。

B(0,0) = G(0,0) + ((B(-1,-1)-G(-1,-1)) + (B(1,-1)-G(1,-1)) + (B(-1,1)-G(-1,1)) + (B(1,1)-G(1,1)))/4

第二种方法好于第一种,特别是红色或蓝色分量比较饱和,而绿色分量比较不饱和的情况下,由于是除法关系,红色或者蓝色的一点噪声都会对结果噪声很大的影响

空间相关(spatial correlation)

同质区内部,像素之间的颜色都是相近的;在非同质区会有明显差异。也就是说找梯度最小的方向进行插值

(三)方法

双线性插值

缺点:模糊,伪彩色,拉链效应

B1 G2 B3
G4 R5 G6
B7 G8 B9
G5 = (G2+G4+G6+G8)/4

B5 = (B1+B3+B7+B9)/4

B2 = (B1+B3)/2

B4 = (B1+B7)/2

效果不好的原因:

会变模糊,是因为取的平均,相当于一个均值滤波

谱相关

《malver-He-Cutler linear Image Demosaicing》

使用了谱相关原则,在双线性的基础上加入了拉普拉斯算子

伪彩和清晰度方面有所提升

边缘自适应

《Hamilton and Adams 》

1.计算H和V方向上梯度值

2.构造四个插值方法

  • 如果是平坦区域,就均值

  • 如果检测是一个方向上的边缘,那么在梯度小的方向上插值,同时照顾到谱相关的特性,设置出一个卷积核

  • 如果水平垂直两个方向上的梯度都比较大,那么对两个方向上都求一个值,然后取平均

3.引入两个阈值T1和T2,根据H和V是否超过阈值,判断是否存在水平或者垂直的边缘,从而选择对应的插值方法

(四)难点

1.摩尔纹

物体在sensor上面成的像,空间频率与sensor的采样频率接近,产生了干涉。

解决方法:

1.在CFA之前加一个低通滤波器(滤镜),滤除部分高频信息,通过降低图像锐度的方法减少摩尔纹发生的概率

2.提高像素密度

3.稍微改变聚焦位置

4.改变物距和摄像机角度

2.锯齿效应

在图像边缘交界区域,demosaic插值没有沿着边缘进行

左图是双线性插值,有明显的锯齿效应,会产生像素点模糊以及颜色溢出。右图是基于梯度的插值,就不会有明显的锯齿。

解决方法:按照空间相关原则进行插值

3.伪彩

原因:图像重合错位;在不恰当的领域插值,常在色彩边缘处

解决方法:

常常使用中值滤波去除错误的颜色,但是对于包含较多点线等细节的图像,不适合使用,比较容易造成细节丢失。

在后面加一个去伪彩模块