[论文阅读] 颜色迁移-Correlated Color Space
创始人
2024-03-15 03:59:56
0

[论文阅读] 颜色迁移-Correlated Color Space

文章: Color transfer in correlated color space, [paper], [matlab code], [opencv code]

1-算法原理

本文算法比较简单, 其原理是把原始图像本身的空间分布进行归一化, 然后通过旋转平移缩放等变换, 变换到目标图像的空间分布, 如下所示:

I=Tt⋅Rt⋅St⋅St⋅Ss⋅Rs⋅Ts⋅Is(1)I = T_t \cdot R_t \cdot S_t \cdot S_t \cdot S_s \cdot R_s \cdot T_s \cdot I_s \tag{1} I=Tt​⋅Rt​⋅St​⋅St​⋅Ss​⋅Rs​⋅Ts​⋅Is​(1)

T表示平移, R表示旋转, S表示缩放. 下标t表示目标图像, 下标s表示原始图像, 文中的原始公式存在问题, 我这里进行了调整.

因而本文就是寻找这个变换矩阵, 使用的方法是使用SVD分解(关于SVD算法, 可以戳这里: 奇异值分解(SVD) - 知乎 (zhihu.com).)

Cov=U⋅Λ⋅VTCov = U \cdot \Lambda \cdot V^T Cov=U⋅Λ⋅VT

具体地, 本文算法步骤为:

  1. 计算图像每个颜色通道的均值, 及图像的协方差矩阵
  2. 对协方差矩阵进行SVD分解
  3. 构建变换需要的矩阵
  4. 使用公式对图像进行颜色迁移

2-算法核心

对于n维颜色空间, 为了方便处理, 可以调整为n+1维的齐次坐标标示. 对于本文, 使用的是RGB 3维颜色空间, 齐次坐标维4维的.

对于上述几个变换矩阵, 平移矩阵T很容易想到, 可以使用各颜色通道的均值来表示. 但对于旋转矩阵R和缩放矩阵S就需要用到SVD分解矩阵的性质了: UUU 表示旋转, Λ\LambdaΛ 表示缩放拉伸.

因而所需变换矩阵如下:

Λ=diag(λc1,λc2,λc3)\Lambda = diag(\lambda^{c1}, \lambda^{c2}, \lambda^{c3}) Λ=diag(λc1,λc2,λc3)

Ts=(100−msc1010−msc2001−msc30001),Tt=(100mtc1010mtc2001mtc30001)T_s = \begin{pmatrix} 1 & 0 & 0 & -m_s^{c1} \\ 0 & 1 & 0 & -m_s^{c2} \\ 0 & 0 & 1 & -m_s^{c3} \\ 0 & 0 & 0 &1 \end{pmatrix} , T_t = \begin{pmatrix} 1 & 0 & 0 & m_t^{c1} \\ 0 & 1 & 0 & m_t^{c2} \\ 0 & 0 & 1 & m_t^{c3} \\ 0 & 0 & 0 &1 \end{pmatrix} Ts​=⎝⎜⎜⎛​1000​0100​0010​−msc1​−msc2​−msc3​1​⎠⎟⎟⎞​,Tt​=⎝⎜⎜⎛​1000​0100​0010​mtc1​mtc2​mtc3​1​⎠⎟⎟⎞​

Rs=Us−1,Rt=UtR_s = U_s^{-1}, R_t = U_t Rs​=Us−1​,Rt​=Ut​

Ss=(1/ssc100001/ssc200001/ssc300001),St=(stc10000stc20000stc300001)S_s = \begin{pmatrix} 1/s_s^{c1} & 0 & 0 & 0 \\ 0 & 1/s_s^{c2} & 0 & 0 \\ 0 & 0 & 1/s_s^{c3} & 0 \\ 0 & 0 & 0 &1 \end{pmatrix} , S_t = \begin{pmatrix} s_t^{c1} & 0 & 0 & 0 \\ 0 & s_t^{c2} & 0 & 0 \\ 0 & 0 & s_t^{c3} & 0 \\ 0 & 0 & 0 &1 \end{pmatrix} Ss​=⎝⎜⎜⎛​1/ssc1​000​01/ssc2​00​001/ssc3​0​0001​⎠⎟⎟⎞​,St​=⎝⎜⎜⎛​stc1​000​0stc2​00​00stc3​0​0001​⎠⎟⎟⎞​

式中, ci表示颜色通道, sci=λcis^{ci}=\sqrt{\lambda^{ci}}sci=λci​. 这里取了根号, 如果不取根号是不是也可以???

本文算法是对3个通道一起处理, 如果每个通道单独处理, 上述公式可以等效为:

Ci=σtiσsi(Csi−μsi)+μtiC^i = \frac{\sigma_t^{i}}{\sigma_s^{i}}(C_s^{i} - \mu_s^{i}) + \mu_t^{i} Ci=σsi​σti​​(Csi​−μsi​)+μti​

式中, i表示通道.

3-算法效果

如下所示为文中给出的一组结果:

迁移结果示例

4-补充说明

作者在自己给出的matlab代码中指出了本文算法存在的一个问题, 我们先来看看实际的情况, 如下所示为一组图像的测试结果.

异常结果

可以看到, 结果出现了异常. 作者给出的分析是:

  • SVD生成的Λ\LambdaΛ 矩阵中对角线上的值, 是由特征值从大到小排列的, 源图像和目标图像的这个排列可能不匹配
  • 如源图像排列为c1, c2, c3, 目标图像排列为c2, c1, c3
  • 即使排列相同, 它们的方向可能相反, 如目标图像排列为c1, -c2, c3

针对这个问题, 作者代码实现中给出了解决方案, 进行列匹配(matchColumns):

  1. 对旋转矩阵UtU_tUt​ 的所有列进行排列组合, 与UsU_sUs​ 对应的列求点积和
  2. 找到和最大的一个组合为最优匹配
  3. 根据组合中坐标轴的顺序, 对Λt\Lambda_tΛt​ 的顺序进行调整, 同时调整方向

下面是调整后的结果:

调整后结果

相关内容

热门资讯

轻纺城:3.71亿元房屋征收补... 12月25日,轻纺城(600790)发布公告,2022年6月,公司子公司国际物流中心与房屋征收部门签...
诉讼未决,海辰储能赴港IPO前... 储能类公司赴港IPO难不难?对果下科技而言,不难——更新招股书后便很快登陆港股市场。对海辰储能而言,...
江丰电子:分红政策详见未来三年... 证券之星消息,江丰电子(300666)12月25日在投资者关系平台上答复投资者关心的问题。 投资者提...
深度关注丨促进"四项... 安徽省亳州市健全“纪巡”联动机制,该市市委巡察机构将发现的生态环境保护方面问题线索及时移交市纪委监委...
上海出台23条政策措施 支持长... 近日,上海市科委会同松江区研究制订了《关于支持长三角G60科创走廊策源地建设的若干措施》。《若干措施...
藏格矿业:发布对外投资管理制度 藏格矿业公告称,公司制定对外投资管理制度,规范对外投资行为,明确对外投资需遵循合法合规、符合发展战略...
一审败诉!海峡创新因担保卷入房... 12月25日晚间,海峡创新(300300)发布公告,公司收到浙江省杭州市拱墅区人民法院送达的民事判决...
形势政策系列报告会第三场报告会... 新华社北京12月25日电 由中央宣传部、中央和国家机关工委、教育部、中央军委政治工作部、北京市委联合...
以考提质 以答践责——长春市宽... 12月23日,长春市宽城区举行2025年度领导干部法律知识考试,28名新提拔处级领导干部和31名新提...