055、去马赛克的“伪彩色诅咒“——方向插值/残差插值/深度学习方法的伪色抑制能力对比及在红色高光区域的实战表现

055、去马赛克的“伪彩色诅咒“——方向插值/残差插值/深度学习方法的伪色抑制能力对比及在红色高光区域的实战表现

055、去马赛克的"伪彩色诅咒"——方向插值/残差插值/深度学习方法的伪色抑制能力对比及在红色高光区域的实战表现

去年秋天,我在调试一台车载前视摄像头的HDR融合链路,遇到一个让人挠头的现象:傍晚逆光场景下,前方车辆尾灯和红色广告牌周围,总有一圈青绿色的“鬼影”在闪烁。不是镜头眩光,也不是ISP的色差校正没生效,问题出在去马赛克(Demosaic)环节。当时用的是经典的方向插值算法,红色高光区域的边缘处,R、G、B三通道的插值方向不一致,导致高频信息被错误地“染色”成了伪彩色。这个案例让我决定把去马赛克的伪色抑制能力彻底扒一遍。

先说说伪彩色到底怎么来的。拜耳阵列里每个像素只采集一种颜色,另外两种颜色要靠邻居猜。猜的过程如果方向判断错了,比如在红色高光边缘处,水平方向梯度小、垂直方向梯度大,算法却沿着水平方向插值绿色,那就会把红色像素的亮度泄漏到绿色通道里,形成青绿色或品红色的边缘。方向插值算法的核心是梯度方向判断,但它在高饱和色块边缘特别容易翻车——因为梯度计算本身用的是未插值的原始数据,信噪比低,方向判断极易受噪声干扰。

我拿一个典型的红色高光区域做测试:一块纯红色LED灯牌,周围是深色背景,灯牌边缘有强烈的亮度跳变。用双线性插值,伪彩色带宽约6个像素,边缘处有明显的青绿色条纹;用方向插值(比如经典的Hamilton-Adams算法),伪彩色带宽缩到3个像素左右,但边缘处仍有可见的品红色和绿色交替的“拉链”效应。问题在于,方向插值只考虑了局部梯度,没有利用颜色通道之间的相关性——红色高光区域里,R通道的亮度远高于G和B,但插值G和B时,算法并不知道这个先验信息。

后来我换用残差插值(Residual Interpolation)思路。核心思想是先对R、G、B做一