0%

Camera-Raw域BayerDemosaic

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值计算公式如下: \[ R_{23} = \frac{R_{13} + R_{33}}{2} \] \[ B_{23} = \frac{B_{22} + B_{24}}{2} \]

  • 红、蓝像素上的G值由相邻的4个绿色像素求平均值得到
    如图中象素点(3,3)和(4,4),即已知R33和B44这两点的绿色分量值表示为 \[ G_{33} = \frac{G_{23} + G_{43} + G_{32} + G_{34}}{4} \]

    \[ G_{44} = \frac{G_{34} + G_{54} + G_{43} + G_{45}}{4} \]

  • 红色像素上的B值由对角线上相邻的4个B像素平均得到。象素点(3,3) ,R33的B值表示为
    \[ B_{33} = \frac{B_{22} + B_{24} + B_{42} + B{44}}{4} \] 蓝色像素上的R值由对角线上相邻的4个R像素平均得到。象素点(4,4),B44的R值表示为 \[ R_{44} = \frac{R_{33} + R_{35} + R_{53} + R_{55}}{4} \]

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

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

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

  • 恢复采样点R和B点的绿色分量:例B44
    梯度因子:水平方向H \[ \alpha = \left | G_{43} - G_{45} \right | \] 竖直方向W: \[ \beta = \left | G_{34} - G_{54} \right | \] 变化小的方向可能是边缘,所以G44表示如下: \[ G_{44} = \frac{G_{43} + G_{45}}{2} (\alpha < \beta) \] \[ G_{44} = \frac{G_{34} + G_{54}}{2} (\alpha > \beta) \] \[ G_{44} = \frac{G_{34} + G_{54} + G_{43} + G_{45}}{4} (\alpha = \beta) \]

  • 对R、B分量插值。基本思想是在图片的小平滑区域内,色差恒定的。假设像素点P(i,j)邻近的一个像素点是P(m,n)则有: \[ R_{ij} - G_{ij} = R_{mn} - G_{mn} \\ B_{ij} - G_{ij} = B_{mn} - G_{mn} \] 例求R分量: 如已知G43,红色分量表达式: \[ R_{43} = \frac{R_{33} + R_{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{43} \] 如已知G34,红色分量表达式: \[ R_{34} = \frac{R_{33} + R_{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{34} \] 如已知B44,红色分量表达式: \[ R_{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,蓝色分量表达式: \[ B_{43} = \frac{B_{24} + B_{44}}{2} - \frac{G_{24} + G_{44}}{2} + G_{34} \] 如已知R33,蓝色分量表达式: \[ B_{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: \[ \alpha = \left | 2 * B_{44} - B_{42} - B_{46} \right | \] 竖直方向W: \[ \beta = \left | 2 * B_{44} - B_{24} - B_{64} \right | \] 变化小的方向可能是边缘,所以G44表示如下: \[ G_{44} = \frac{G_{43} + G_{45}}{2} (\alpha < \beta) \]

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

    \[ 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,水平方向梯度和色度算子: \[ \alpha = \left | 2 * B_{44} - B_{42} - B_{46} \right | + \left | G_{43} - G_{45} \right | \] 已知B44,竖直方向梯度和色度算子: \[ \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,水平方向梯度和色度算子: \[ \alpha = \left | 2* R_{33} - R_{31} - R_{35} \right | + \left | G_{32} - G_{34} \right | \] 已知R33,竖直方向梯度和色度算子: \[ \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分量的恢复使用了色差原理 先求对角线方向的梯度和色度算子 \[ \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分量表达式: \[ \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} \]

  • 已知B44,求R44 先求对角线方向的梯度和色度算子 R分量的恢复采用相邻G的二阶微分加R通道的一阶微分方向判断因子;R分量的恢复使用了色差原理。 \[ \alpha = \left | 2 * G_{44} - G_{35} - G{53} \right | + \left | R_{35} - R_{53} \right | \] \[ \beta = \left | 2 * G_{44} - G_{33} - G_{55} \right | + \left | B_{33} - B_{55} \right | \] 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} \]

  • 如已知G43 红色分量表达式: \[ R_{43} = \frac{R_{33} + R_{53}}{2} - \frac{G_{33} + G_{53}}{2} + G_{43} \] 蓝色分量表达式: \[ B_{43} = \frac{B_{42} + B_{44}}{2} - \frac{G_{42} + G_{44}}{2} + G_{43} \]

  • 如已知G34 红色分量表达式: \[ R_{34} = \frac{R_{33} + R{35}}{2} - \frac{G_{33} + G_{35}}{2} + G_{34} \] 蓝色分量表达式: \[ B_{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 水平方向方向算子:

\[ G_{h} = \left | G_4 - G_6 \right | + \left | 2 * B_5 - B_3 - B_7 \right | \]

竖直方向方向算子: \[ G_{v} = \left | G_2 - G_8 \right | + \left | 2 * B_5 - B_1 - B_9 \right | \] 方向梯度算子非固定 标志位: flag=1,\(G_h<G_v\) ; flag=0,else

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

\[ G_h = \left | 2*G_5 - G_{12} - G_{13} \right | + \left | G_1 - G_3 \right | + \left | G_7 - G_9 \right | \]

竖直方向方向算子: \[ G_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 = 10 log_{10}(\frac{255^2}{CMSE}) \]

参考文献

https://zhuanlan.zhihu.com/p/98820927
https://zhuanlan.zhihu.com/p/40626620