image-20211204141527271

1. 问题描述

给定一张原图像:

src1

我们希望通过设计一个灰度图着色算法,使得下述灰度目标图像能够利用彩色原图像的颜色信息进行合理的上色:

tar1

以得到类似下图的效果:

res1

2. 算法描述

实验参考了论文[1],并使用全局匹配的方法进行求解。我们在图像的$l\alpha\beta$颜色空间上进行求解,这是由于$l\alpha\beta$颜色空间的$l$即代表着亮度,通过查找灰度源图像上的像素与彩色目标图像的$l$分量最佳匹配像素,再将目标图像对应匹配像素的$\alpha$和$\beta$分量赋予源图像即可

进行灰度图像上色。算法流程如下:

  1. 将源图像$img_{src}$变换到$l\alpha\beta$颜色空间得到$img_{src}^{(l\alpha\beta)}$,同时将源图像$img_{src}$转换为灰度图$img_{src}^{(grey)}$

  2. 利用如下均值标准差变换,将$img_{src}^{(l\alpha\beta)}$的$l$通道和$img_{src}^{(grey)}$映射到具有灰度目标图像$img_{tar}$的像素值分布,得到$luminance_{src}$和$luminance_{src}^{grey}$
    $$
    \begin{aligned}
    l’&=\frac{\sigma_t^l}{\sigma_s^l}(l-\mu^l_s)+\mu^l_t\\
    \alpha’&=\frac{\sigma_t^\alpha}{\sigma_s^\alpha}(\alpha-\mu^\alpha_s)+\mu^\alpha_t\\
    \beta’&=\frac{\sigma_t^\beta}{\sigma_s^\beta}(\beta-\mu^\beta_s)+\mu^\beta_t\\
    \end{aligned}
    $$

  3. 近邻域标准差计算。利用一个$n\times n$(本实验中取$n=5)$)滑动窗口遍历图像(类似于卷积操作,边界用0填充),对窗口内的所有像素值计算它们的标准差并赋值到一幅标准差图像上。对$luminance_{src}^{grey}$和$img_{tar}$进行该计算,得到$stddev_{src}^{grey}$和$stddev_{tar}$

  4. 最佳匹配查找。遍历$img_{tar}$,已知$img_{tar}$上的某一像素值$p_{tar}$和其标准差$stddev_{tar}$对应的值$\sigma_{tar}$,在源图像上寻找最佳匹配的像素点,这里简单地采用加权的$\mathcal{L}2$范数平方去算:
    $$
    \arg\min
    {x,y} \Big(w_1\ast |luminance_{src}(x,y)-p_{tar}|^2+w_2\ast|stddev_{src}^{grey}(x,y)-\sigma_{tar}|^2\Big)
    $$
    其中$w_1$和$w_2$分别表示亮度值和标准差的对匹配结果的贡献,这里简单地取$w_1=w_2=0.5$

  5. 灰度图上色。将查找到的最佳匹配像素$(\tilde x. \tilde y)$在$img_{src}^{(l\alpha\beta)}$所在像素值的$\alpha$和$\beta$分量赋值给源图像作为其$\alpha$和$\beta$通道的值,而原来的灰度值则作为$l$分量继续使用,并将源图像重新变换回$RGB$颜色空间得到最终的结果

3. 实验结果

原图像 参考图像 结果图像
tar1 src1 res1
tar2 src2 res2
tar3 src3 res3
tar4 src4 res4
tar5 src5 res5

参考文献

[1] Welsh, M. Ashikhmin, and K. Mueller. Transferring color to greyscale im-ages. In Proceedings of the 29th annual conference on Computer graphics and interactive techniques, pages 277–280, 2002.11