计算机视觉与模式识别(二)色彩迁移

时间:2023-01-09 12:32:03

色彩迁移

这一个学期任务量比较大,主要是计算机视觉这门课和计算机图形学任务量有点大,所以暑假才有时间更新这系列博客,这系列博客主要是利用CImg这个库来实现一些算法,而不是应用一些算法。
下面开始本期的介绍!


1.什么是色彩迁移?

计算机视觉与模式识别(二)色彩迁移

对于搞CV(Computer Vision)的人来说,什么都不如用图像来解释,解释地清楚。颜色迁移就是将目标图的整体颜色附加到你想改变的原图上,最后使得结果图拥有原图的形状信息而色彩信息来自目标图。


2.ColorTransfer算法

在色彩迁移领域最著名的经典论文便是2001年Reinhard的Color transfer between images,谷歌学术引用量1500+,下面介绍下其中心思想:
原图像和目标图像都是在RGB空间下,我们要将其转换至Lab空间下,利用图像的统计数据(均值和标准差)进行颜色迁移,最后转回到RGB空间中。
我们有一个重要的假设,图像灰度值的分布近似为高斯分布
我们将标准正态分布记为X,原图灰度值的正态分布记为 Z1 ,目标图像灰度值的正态分布记为 Z2
那么由概率统计正态分布公式:
Z1=σ1X+μ1
Z2=σ2X+μ2
因此可以得出原图像的灰度变换公式:

Z1=σ1σ2(Z2μ2)+μ1


2.实现代码

这里放上我的GitHub链接,里面由颜色迁移的代码

Github代码


3.效果展示

计算机视觉与模式识别(二)色彩迁移
计算机视觉与模式识别(二)色彩迁移
这是两个效果比较好的颜色迁移示例。当然这么简单高效的算法肯定也由效果奇差的时候:

计算机视觉与模式识别(二)色彩迁移

4.总结

色彩迁移的初步算法是由 Reinhard等人根据 l,α,β 颜色空间中各通道互相不关联的特点,根据着色图像的统计分析确定一个线性变换,使得目标图像和原图像在 l,α,β 空间具有相同的均值和方差。这个算法的优点在于实现简单,且运行效率很高。缺点在于该算法基于整体色彩迁移,对全局颜色基调单一的图像有着良好的迁移效果,而对于颜色内容比较丰富的图像,其效果不明显。同时如果两张图像的颜色非常不同,在 l,α,β 空间颜色通道会扩大其色度差,使得结果图像出现不自然的结果。
基于Reinhard的算法的缺点,我认为可以通过进行局部色彩迁移来进行色彩迁移。这方面的重要的论文是Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,利用GMM高斯混合模型以及修改的EM算法来对颜色区域进行分割,得到更好的局部色彩迁移结果。