图像颜色迁移专题介绍(一): Global Color Transfer

  • Post author:
  • Post category:其他


最近因为种种工作的要求,需要我在视觉领域找一个题目做一做。我决定重操旧业,把我硕士阶段曾经研究过一小段时间的图像颜色迁移方法重新拾起来,看一下有什么可以做的东西。本篇博客就是我最近做算法调研时候的一些思路的分享,希望给那些做类似研究的同学提供一点帮助。

1. 简介

我们在拍摄照片或者获取图片的时候,往往需要对其颜色做后期处理,以满足图片使用场景的要求。这种后期处理往往需要使用类似PS,LR这样的软件,通过人工调色,以输出结果。可想而知,这个过程耗时耗力,且对使用者存在一些专业上的要求。因此,一些研究者提出借用一些现成的优秀样例,将其已经配好的颜色方案,直接迁移到原始图片上,实现对原始图片颜色的编辑,使之与优秀样例在配色风格上保持一致。这就是图像颜色迁移研究的初始目标。这里必须要提的就是图像迁移领域最经典的文章:Color Transfer between Images [1].

2. Color Transfer between Images

E. Reinhard几乎可以被认为是图像迁移领域的先驱,其大作Color Transfer between Images在视觉和图像处理领域打开了一扇门,使得我们能够在其基础上建立图像迁移算法的各种改进。因此,我们需要详细的了解一下这篇文章的一些基础理论。


Lab颜色空间

根据Ruderman在1998年所建立的理论[2],基于RGB颜色表示的图片,其各个通道的数据具有紧密的关联性,这不利于建立一种基于通道分离的颜色处理算法。因此,Ruderman根据人的视觉敏感机理,提出了一个新的颜色空间,使得颜色能够被近似正交分离,得到一个颜色无关联的三通道表示模式,即Lab颜色空间。这篇文章可以被认为是图像颜色迁移的理论基石。

图1. RGB到Lab空间的映射,左上:RGB原图;右上:变换后的L通道颜色图;左下:变换后的a通道颜色图;右下:变换后的b通道颜色图。


基于Lab颜色空间的颜色迁移

在Lab颜色空间的基础上,Reinhard提出了颜色空间迁移的基本思路,即首先将图片变换到Lab空间,之后在利用均方差,将源图片按照参考图片的Lab值,做近似等距迁移,并最终得到结果。

首先从RGB空间变换到LMS空间:

之后为了将LMS做偏差规整,取对数:

最后将其转换为Lab值:

将源图像和参考图像均转换到Lab空间,之后做均方差变换:

计算源图像Lab三个通道的均值,并计算Lab与均值的差。

计算源图像和参考图像的Lab三个通道的标准差,之后将之前在源图像计算的差乘以标准差的比值,得到一个近似等距变换的颜色迁移结果:

最后将得到的新的Lab值映射会RGB空间:

计算log的反函数pow:

L  = Pow(

L

)

M = Pow(

M

)

S =  Pow(

S

)

最后得到RGB:

整个计算过程没有任何复杂的优化和计算,全部都是初级的矩阵变换。



图2. 图像颜色迁移示例;左图:源图像;中图:参考图像;右图:颜色迁移结果。

3. 代码实现的一些问题

如果你是自己编程实现的上述功能,而不是用的包装好的现成的代码,那么你大概率会遇到几个问题,包括非法值和异常颜色偏差。


非法值

非法值的产生大概率是由函数Log产生的。其原因在于,log(0)是非法的,而图像的像素是可能产生log(0)的计算。因此,需要在载入RGB颜色时,就要避免全0的情况,即应该设置最小颜色值。如果将颜色值映射到0-1,那么理论上次最小颜色值应该是1/255=0.003921。也就是说,小于这个值的时候,应该设置一个值,以避免0的出现。你可以指定一个最小值为0.001。

这里我发现了一个问题,如果按照比较精确的方法指定了最小值,如0.001,在一些特殊的颜色迁移任务中,结果会比较糟糕,如下图:



图3. 图像颜色迁移示例;左图:源图像;中图:参考图像;右图:颜色迁移结果。 可以看到,颜色出现显著的异常。

如果我们改变最小值,如0.1,颜色的细节就会被重构,已得到一个更好的结果如下图:


图4. 基于不同最小值的图像颜色迁移示例。

因此,我们可以得到一个结论,图像迁移在RGB的极限值区域,可能会因为变换过程造成一些信息的损失,如果不能做合理的变换处理,有可能会出现异常。我们将在未来的工作提到更新的研究工作是如何通过对应关系来改善颜色迁移的质量的。


颜色偏差

颜色偏差指的是当我们把信息从Lab映射回RGB时,颜色会超过合法的区域。如果不做处理,结果可能会出现颜色异常,如下:



图5. 图像颜色迁移示例;左图:源图像;中图:参考图像;右图:颜色迁移结果。可以看到,结果出现了明显的颜色异常情况。

所以在输出颜色时,需要检查颜色值是否合法,即保证其在0-255的范围内,如果超过这个范围,则自动赋值为最临近的合法值。


Reference

[1]  E. Reinhard, M. Adhikhmin, et al. Color transfer between images[J]. IEEE Computer graphics and applications, 2001, 21(5): 34-41.

[2] D.L. Ruderman, et al. Statistics of Cone Responses to Natural Images: Implications for Visual Coding. J. Optical Soc. of America, vol. 15, no. 8, 1998, pp. 2036-2045.



版权声明:本文为aliexken原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。