色彩迁移
这一个学期任务量比较大,主要是计算机视觉这门课和计算机图形学任务量有点大,所以暑假才有时间更新这系列博客,这系列博客主要是利用CImg这个库来实现一些算法,而不是应用一些算法。
下面开始本期的介绍!
1.什么是色彩迁移?
对于搞CV(Computer Vision)的人来说,什么都不如用图像来解释,解释地清楚。颜色迁移就是将目标图的整体颜色附加到你想改变的原图上,最后使得结果图拥有原图的形状信息而色彩信息来自目标图。
2.ColorTransfer算法
在色彩迁移领域最著名的经典论文便是2001年Reinhard的Color transfer between images,谷歌学术引用量1500+,下面介绍下其中心思想:
原图像和目标图像都是在RGB空间下,我们要将其转换至Lab空间下,利用图像的统计数据(均值和标准差)进行颜色迁移,最后转回到RGB空间中。
我们有一个重要的假设,图像灰度值的分布近似为高斯分布。
我们将标准正态分布记为X,原图灰度值的正态分布记为
那么由概率统计正态分布公式:
因此可以得出原图像的灰度变换公式:
2.实现代码
这里放上我的GitHub链接,里面由颜色迁移的代码
3.效果展示
这是两个效果比较好的颜色迁移示例。当然这么简单高效的算法肯定也由效果奇差的时候:
4.总结
色彩迁移的初步算法是由 Reinhard等人根据
基于Reinhard的算法的缺点,我认为可以通过进行局部色彩迁移来进行色彩迁移。这方面的重要的论文是Local Color Transfer via Probabilistic Segmentation by Expectation-Maximization,利用GMM高斯混合模型以及修改的EM算法来对颜色区域进行分割,得到更好的局部色彩迁移结果。