128、去马赛克算法演进:双线性插值、色比恒定与深度学习驱动的方向插值技术去年在调试一款车载环视模组时,遇到一个让人头疼的问题:夜间停车场场景下,白色车身上的红色尾灯边缘出现了明显的彩色锯齿,像被狗啃过一样。客户把样机寄回来,附了一张A4纸,上面手写着三个大字——“彩虹纹”。我盯着屏幕看了半小时,最后把矛头指向了ISP pipeline里的去马赛克模块。这个案例让我意识到,去马赛克算法远不是教科书里那个“插值填像素”那么简单,它直接决定了图像的边缘锐度、色彩保真度,以及——客户会不会退货。从Bayer阵列说起:为什么需要去马赛克CMOS sensor的每个像素只能感知亮度,要获得彩色图像,就得在像素表面覆盖彩色滤光片阵列(CFA)。最经典的Bayer阵列以2x2为单位,包含一个红色、两个绿色、一个蓝色像素——人眼对绿色最敏感,所以绿色采样率翻倍。这意味着每个像素位置只记录了一种颜色分量,另外两种颜色需要从相邻像素“猜”出来。这个“猜”的过程,就是去马赛克(Demosaicing)。别小看这个“猜”。猜得不好,平坦区域出现伪彩色,边缘出现锯齿,纹理区域糊成一团。早期算法简单粗暴,后来逐渐精细,到现在深度学习介入,本质上都是在解决同一个问题:如何在保留细节的同时抑制伪影。双线性插值:最朴素但最脆弱的方案双线性插值的思路很直接:对于缺失的绿色分量,取上下左右四个绿色像素的平均值;对于红色和蓝色,则根据位置取对角或十字方向的均值。代码实现极其简单,但实际调试中我吃过它的亏。