Bayer Demosaic 概述

RAW 域的最后一步处理是 Demosaic,将像素从 RAW 域变换到 RGB 域进行下一阶段的处理。Demosaic 算法的主要难点在于,RAW 域的任何一个像点(photosite)只包含一个真实的采样值,而构成像素(R,G,B)的其它两个值需要从周围像点中预测得到。既然是预测,就一定会发生预测不准的情况,这是不可避免的,而预测不准会带来多种负面影响,包括拉链效应(zipper artifacts),边缘模糊,颜色误差等。

所以 Demosaic 算法的主要挑战就是尽量提高算法的准确性,减少图像边缘损失和颜色误差。

Bayer 格式图像色彩恢复时有两种思路:

  • 无方向性插值:不加边缘方向判断(思路:临近像素的均值),直接利用周围像素信息恢复
  • 有方向性插值:先判断边缘方向,再利用周围像素信息恢复

Bayer 格式图像的绿色成分占比例较多,信息较丰富,色彩恢复时步骤通常是:a、先恢复 G 通道;b、再利用 G 通道信息恢复 R、B 通道。

CFA 双线性插值

无边缘检测

  • 绿色像素上的 R,B 值分别由相邻的 2 个 R,B 像素的灰度求平均值得到。
    以象素点 (2,3) 为例,即已知 G23 该点的 R,B 值计算公式如下:

    R23=R13+R332R_{23} = \frac{R_{13} + R_{33}}{2}

    B_{23} = \frac{B_{22} + B_{24}}{2}

    如图中象素点 (3,3) 和 (4,4),即已知 R33 和 B44 这两点的绿色分量值表示为

    G33=G23+G43+G32+G344G_{33} = \frac{G_{23} + G_{43} + G_{32} + G_{34}}{4}

    G44=G34+G54+G43+G454G_{44} = \frac{G_{34} + G_{54} + G_{43} + G_{45}}{4}

  • 红色像素上的 B 值由对角线上相邻的 4 个 B 像素平均得到。象素点 (3,3) ,R33 的 B 值表示为。

    B33=B22+B24+B42+B444B_{33} = \frac{B_{22} + B_{24} + B_{42} + B{44}}{4}

    蓝色像素上的 R 值由对角线上相邻的 4 个 R 像素平均得到。象素点 (4,4),B44 的 R 值表示为

    R44=R33+R35+R53+R554R_{44} = \frac{R_{33} + R_{35} + R_{53} + R_{55}}{4}

边缘检测,直接采用最近临同色像素的均值求解,图像边缘不够清晰,算法简单。

基于边缘检测和色差的 CFA 插值:Hibbard 原理

G 分量的恢复加入了相邻 G 通道的一阶微分方向判断因子。使用周围 G 通道值信息。

  • 恢复采样点 R 和 B 点的绿色分量:例 B44。
    梯度因子:水平方向 H

    α=G43G45\alpha = \left | G_{43} - G_{45} \right |

    竖直方向 W:

    β=G34G54\beta = \left | G_{34} - G_{54} \right |

    变化小的方向可能是边缘,所以 G44 表示如下:

    G44=G43+G452(α<β)G_{44} = \frac{G_{43} + G_{45}}{2} (\alpha < \beta)

    G_{44} = \frac{G_{34} + G_{54}}{2} (\alpha > \beta)

    G44=G34+G54+G43+G454(α=β)G_{44} = \frac{G_{34} + G_{54} + G_{43} + G_{45}}{4} (\alpha = \beta)

  • 对 R、B 分量插值。基本思想是在图片的小平滑区域内,色差恒定的。假设像素点 P(i,j) 邻近的一个像素点是 P(m,n) 则有:

    RijGij=RmnGmnBijGij=BmnGmnR_{ij} - G_{ij} = R_{mn} - G_{mn} \\ B_{ij} - G_{ij} = B_{mn} - G_{mn}

    例求 R 分量:
    如已知 G43,红色分量表达式:

    R43=R33+R352G33+G352+G43R_{43} = \frac{R_{33} + R_{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{43}

    如已知 G34,红色分量表达式:

    R34=R33+R352G33+G352+G34R_{34} = \frac{R_{33} + R_{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{34}

    如已知 B44,红色分量表达式:

    R44=R33+R35+R53+R554G33+G35+G53+G554+G44R_{44} = \frac{R_{33} + R_{35} + R_{53} + R_{55}}{4} - \frac{G_{33} + G_{35} + G_{53} + G_{55}}{4} + G_{44}

    例求 B 分量:如已知 G43,蓝色分量表达式:

    B43=B24+B442G24+G442+G34B_{43} = \frac{B_{24} + B_{44}}{2} - \frac{G_{24} + G_{44}}{2} + G_{34}

    如已知 R33,蓝色分量表达式:

    B33=B22+B24+B42+B444G22+G24+G42+G444+G33B_{33} = \frac{B_{22} + B_{24} + B_{42} + B_{44}}{4} - \frac{G_{22} + G_{24} + G_{42} + G_{44}}{4} + G_{33}

G 通道有边缘检测采用相邻 G,恢复无色差、色度信息,R、B 通道无边缘检测,恢复采用色差信息。效果接近原始图,算法难度适中。

基于边缘检测和色差的 CFA 插值:laroche 原理

G 分量的恢复改用相邻 R 或 B 通道的二阶微分方向判断因子;恢复时使用相邻 G 通道信息。 R、B 分量的恢复同 Hibbard 使用色差原理。

  • 恢复采样点 R 和 B 点的绿色分量:例 B44。
    梯度因子:水平方向 H:

    α=2B44B42B46\alpha = \left | 2 * B_{44} - B_{42} - B_{46} \right |

    竖直方向 W:

    β=2B44B24B64\beta = \left | 2 * B_{44} - B_{24} - B_{64} \right |

    变化小的方向可能是边缘,所以 G44 表示如下:

    G44=G43+G452(α<β)G_{44} = \frac{G_{43} + G_{45}}{2} (\alpha < \beta)

    G44=G34+G542(α>β)G_{44} = \frac{G_{34} + G_{54}}{2} (\alpha > \beta)

    G44=G34+G54+G43+G454(α=β)G_{44} = \frac{G_{34} + G_{54} + G{43} + G_{45}}{4} (\alpha = \beta)

    其他像素插值方法同 Hibbard。

G 通道有边缘检测采用相邻 B 色度信息,恢复用均值无色差信息、色度信息,R、B 通道无边缘检测,恢复采用色差信息。效果接近原始图,算法难度适中。

基于边缘、色度和色差自适应插值

G 分量的恢复改用相邻 R 或 B 的二阶微分加 G 通道的一阶微分方向判断因子;R、B 分量的恢复使用了色差原理。

  • 恢复绿色分量 G。
    已知 B44, 水平方向梯度和色度算子:

    α=2B44B42B46+G43G45\alpha = \left | 2 * B_{44} - B_{42} - B_{46} \right | + \left | G_{43} - G_{45} \right |

    已知 B44, 竖直方向梯度和色度算子:

    β=2B44B24B64+G34G54\beta = \left | 2 * B_{44} - B_{24} - B_{64} \right | + \left | G_{34} - G_{54} \right |

    G 值公式:

    \begin{equation} G_{44}= \begin{cases}\frac{G_{43}+G_{45}}{2}+\frac{2 * B_{44}-B_{42}-B_{46}}{4} & \alpha<\beta \\ \frac{G_{34}+G_{54}}{2}+\frac{2 * B_{44}-B_{24}-B_{64}}{4} & \alpha>\beta \\ \frac{G_{34}+G_{43}+G_{45}+G_{54}}{4}+\frac{4 * B_{44}-B_{24}-B_{42}-B_{46}-B_{64}} {8} & \alpha=\beta\end{cases} \end{equation}

    已知 R33, 水平方向梯度和色度算子:

    α=2R33R31R35+G32G34\alpha = \left | 2* R_{33} - R_{31} - R_{35} \right | + \left | G_{32} - G_{34} \right |

    已知 R33, 竖直方向梯度和色度算子:

    β=2R33R13R53+G23G43\beta = \left | 2 * R_{33} - R_{13} - R_{53} \right | + \left | G_{23} - G_{43} \right |

    G 值公式:

    \begin{equation} G_{33}= \begin{cases}\frac{G_{32}+G_{34}}{2}+\frac{ 2*R_{33} - R_{31} - R_{35}}{4} & \alpha<\beta \\ \frac{G_{23}+G_{43}}{2}+\frac{2 * R_{33}-R_{13}-R_{53}}{4} & \alpha>\beta \\ \frac{G_{32}+G_{34}+G_{23}+G_{43}}{4}+\frac{4 * R_{33}-R_{31}-R_{35}-R_{13}-R_{53}} {8} & \alpha=\beta\end{cases} \end{equation}

  • 若已知 R33,求 B33。
    B 分量的恢复采用相邻 G 的二阶微分加 B 通道的一阶微分方向判断因子;B 分量的恢复使用了色差原理
    先求对角线方向的梯度和色度算子

    α=2G33G24G42+B24B42\alpha = \left | 2 * G_{33} - G_{24} - G{42} \right | + \left | B_{24 - B_{42}} \right |

    \beta = \left | 2 * G_{33} - G_{22} - G_{44} \right | + \left | B_{22} - B_{44} \right |

    B分量表达式:B 分量表达式:

    \begin{equation}
    B_{33}= \begin{cases}\frac{B_{24}+B_{42}}{2} - \frac{G_{24}+G_{42}}{2} + G_{33} & \alpha<\beta \ \frac{B_{22}+B_{44}}{2} - \frac{G_{22} + G_{44}}{2} + G_{33} & \alpha>\beta \ \frac{B_{22}+B_{24}+B_{42}+B_{44}}{4} - \frac{ G_{22}+G_{24}+G_{42}+G_{44}} {4} + G_{33} & \alpha=\beta\end{cases}
    \end{equation}

    先求对角线方向的梯度和色度算子
    R 分量的恢复采用相邻 G 的二阶微分加 R 通道的一阶微分方向判断因子;R 分量的恢复使用了色差原理。

    α=2G44G35G53+R35R53\alpha = \left | 2 * G_{44} - G_{35} - G{53} \right | + \left | R_{35} - R_{53} \right |

    R分量表达式:R 分量表达式:

    \begin{equation}
    B_{44}= \begin{cases}\frac{R_{35}+R_{53}}{2} - \frac{G_{35}+G_{53}}{2} + G_{44} & \alpha<\beta \ \frac{R_{33}+R_{55}}{2} - \frac{G_{35} + G_{55}}{2} + G_{44} & \alpha>\beta \ \frac{R_{35}+R_{53}+R_{33}+R_{55}}{4} - \frac{ G_{35}+G_{53}+G_{33}+G_{55}} {4} + G_{44} & \alpha=\beta\end{cases}
    \end{equation}

    红色分量表达式:

    R43=R33+R532G33+G532+G43R_{43} = \frac{R_{33} + R_{53}}{2} - \frac{G_{33} + G_{53}}{2} + G_{43}

    蓝色分量表达式:

    B43=B42+B442G42+G442+G43B_{43} = \frac{B_{42} + B_{44}}{2} - \frac{G_{42} + G_{44}}{2} + G_{43}

  • 如已知 G34。
    红色分量表达式:

    R34=R33+R352G33+G352+G34R_{34} = \frac{R_{33} + R{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{34}

    蓝色分量表达式:

    B34=B24+B442G24+G442+G34B_{34} = \frac{B_{24} + B_{44}}{2} - \frac{G_{24} + G_{44}}{2} + G_{34}

R、G、B 通道分别进行了边缘检测,颜色恢复时采用了色差信息及其他通道的信息。效果接近原始图,算法难度较大。

基于边缘、色度和色差自适应插值之标志位:减少 False color

G 分量的恢复改用相邻 R 或 B 的二阶微分加 G 通道的一阶微分方向判断因子;并采用标志因子的统计,R、B 分量的恢复使用了色差原理。

  • 对每个像素计算水平和垂直方向梯度和色度算子。
  • 比较两个方向的算子大小,用 0 或 1 标记。
  • 统计局部区域内如 3x3 窗口统计邻域九个位置的 flag 之和即 total_flag。
  • 设置阈值,判断该像素在局部区域内最可能的方向。

对于图 (a): 已知 B5
水平方向方向算子:

Gh=G4G6+2B5B3B7G_{h} = \left | G_4 - G_6 \right | + \left | 2 * B_5 - B_3 - B_7 \right |

竖直方向方向算子:

Gv=G2G8+2B5B1B9G_{v} = \left | G_2 - G_8 \right | + \left | 2 * B_5 - B_1 - B_9 \right |

方向梯度算子非固定
标志位: flag=1,Gh<GvG_h<G_v ;
flag=0,else

对于图 (b): 已知 G5(G43)
水平方向方向算子:

Gh=2G5G12G13+G1G3+G7G9G_h = \left | 2*G_5 - G_{12} - G_{13} \right | + \left | G_1 - G_3 \right | + \left | G_7 - G_9 \right |

竖直方向方向算子:

Gv=2G5G10G11+G1G7+G3G9G_v = \left | 2*G_5 - G_{10} - G_{11} \right | + \left | G_1 - G_7 \right | + \left | G_3 - G_9 \right |

标志位: flag=1,Gh<Gv;
flag=0,else
已知 G34 和 R33,flag 计算方法同理。

根据阈值判断方向的方法:

对于 B 和 R 位置,取 3x3 窗口,统计邻域九个位置的 flag 之和即 total_flag,在 [0.9] 之间,越大水平方向边界可能性越大,越小竖直方向为边界可能性越大。

取 high_thresh 和 low_thresh,判断边界方向。

total_flag > = high_thresh,水平方向存在边界,插值沿水平方向进行;

total_flag =< low_thresh,竖直方向存在边界,插值沿竖直方向进行;

low_thresh < total_flag < high_thresh,为平滑区域,插值在整个区域进行;

经验值, high_thresh 和 low_thresh 取 7 和 3.

插值方法同上。

有局部区域内边缘方向的整体判断,使得边缘方向判断更加准确。

CFA 插值,还有其他一些比较经典的算法:基于色比的算法;2003 年提出的 Lu 算法;基于权重的 CFA 插值算法;去 False color 的改进算法;其他一些在此基础上改进的算法等等

插值评价方法: 取一张 RGB 三色图像,按照 Bayer 格式取出对应的像素,构成 Bayer 格式图,然后经过 CFA 插值算法插值形成插值后图像。

评价参数:

  • 颜色均方误差(CMSE):插值前与插值后图像的对应像素间的差值(绝对值,方差值)之和的平均值。越小越重建接近原图,重建质量越高。

\begin{equation} C M S E=\frac{1}{3 H W} \sum_{k=R, G, B} \sum_{i=1}^H \sum_{j=1}^W\left(I_o(i, j) k-I_d(i, j) k\right)^2 \end{equation}

  • 例颜色峰值信噪比(Color Peak Signal to Noise Ratio ,CPSNR):越大越重建接近原图,重建质量越高。

CPSNR=10log10(2552CMSE)CPSNR = 10 log_{10}(\frac{255^2}{CMSE})

参考文献

https://zhuanlan.zhihu.com/p/98820927
https://zhuanlan.zhihu.com/p/40626620
[[CameraISPRawLSC]]
[[CameraISPRawNoiseReduction]]
[[CameraISPRawAWB]]