Skip to content

ersanliqiao/color_transfer_cplusplus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 

Repository files navigation

color_transfer_cplusplus

color transfer of opencv/c++ version 本文描述了一种更加通用的将一幅图像的颜色特征应用到另一幅图像上面的颜色校正方法。 当一幅特殊的三通道图像以任意已知的颜色空间显示时,不同通道的像素值是相关的。比如在RGB空间中,如果蓝色通道的像素值非常大,通常红色、绿色通道的像素值也会很大。这表明如果我们希望以相关性的方法改变一幅图像颜色的表现,必须串联着改变所有颜色通道。这大大增加了颜色修正的复杂性。我们希望的是坐标之间没有相关性的垂直颜色空间。 Ruderman等学者提出一种lαβ颜色空间,能够最小化许多自然场景下不同通道的相关性。这个空间是源自于数据驱动的人类感知研究(研究假设人类视觉系统能够完全适合于处理自然景色)。 lαβ颜色空间能够更好地理解人类视觉系统,由于 lαβ空间的坐标轴之间几乎没有相关性,使得我们相信在对不同颜色通道做不同的操作时不会发生跨通道的伪影出现。 去相关的颜色空间 由于lαβ是LMS锥空间的变换,因此首先将图像转换到LMS空间。 (1)RGB空间到XYZ三基色空间 (2)从设备无关空间XYZ转换到LMS空间 将以上两步整合一下,得到RGB到LMS空间的转换关系: 改空间存在大量的相交,将数据转换到对数空间能够大大减少。

为了进一步消除坐标轴之间的相关性,使用PCA(主成分分析,有效地旋转坐标轴)最大程度地计算坐标轴之间的非相关性。 如果把L通道看做红色,M通道看做绿色,S通道看做蓝色,可以将lαβ看做立色彩空间的变种: 将颜色校正放在lαβ空间的原因便是该空间的去相关性能够使我们分别操作三个通道,从而简化整个过程。 当颜色处理完成后,我们还需要将图像从lαβ空间转换回RGB空间。 (1)lαβ空间到LMS空间 (2)LMS空间到RGB空间

接下来,开始进行颜色校正,使得合成的图像具有另外一幅图像外观。更正规的说法便是将lαβ空间具有的像素分布转移到别的图像上面。因此,沿着三个坐标轴的均值和方差能够满足这个目的。接着将以上操作对源图像与目标图像进行。 注意必须分别计算lαβ空间的三个通道的均值与方差。 (1)从图像像素值减去均值 (2)对合成图像的像素点通过计算得到的方差做比例变换,使得最终结果具有相同的标准差 (3)接着加上从新图像计算得到的均值 (4)将结果从lαβ空间转换到RGB空间

About

color transfer of opencv/c++ version

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages