• [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL)


    [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL)

    文章: The Linear Monge-Kantorovitch Linear Colour Mapping for Example-Based Colour Transfer, [paper], [matlab代码]

    1-算法原理

    本文将颜色迁移变成数据分布的转换问题, 因而本文需要解决2个方面的问题, 如何描述图像颜色分布, 二是如何对数据分布进行变换.

    对于数据分布, 本文使用均值和协方差来对数据分布进行描述, 对于分布变换, 本文使用线性变换进行处理.

    数据的均值和协方差比较简单, 因而本文的重点在于寻找变换方法. 本文使用的线性变换如下所示:

    { t ( u ) = T ( u − μ u ) + μ v T Σ u T T = Σ v (5) \left\{

    (5)t(u)=T(uμu)+μvTΣuTT=Σv" role="presentation">(5)t(u)=T(uμu)+μvTΣuTT=Σv
    \right. {t(u)=T(uμu)+μvTΣuTT=Σv(5)

    式中, u u u 为原始图像, v v v 为目标图像, μ \mu μ 为均值, Σ \Sigma Σ 为协方差, T T T 为需要求解的线性变换.

    Σ u = A A T \Sigma_u = AA^T Σu=AAT , Σ v = B B T \Sigma_v = BB^T Σv=BBT, 则

    T ( A A T ) T T = B B T ( T A ) ( T A ) T = B B T T A = B T = B A − 1 T(AA^T)T^T = BB^T \\ (TA)(TA)^T = BB^T \\ TA = B \\ T = BA^{-1} T(AAT)TT=BBT(TA)(TA)T=BBTTA=BT=BA1

    只要知道了A和B即可知道线性变换T.

    2-算法核心

    本文的核心就是寻找A和B. 文中主要使用的方法是矩阵分解, 介绍了几种方法.

    2.1-Independent Transfer(IT)

    首先介绍的是每个通道单独进行转换时, 协方差变成了对角矩阵, 对角元素为每个通道的方差的平方根, 这样变换公式为:

    T = ( var ⁡ ( v 1 ) var ⁡ ( u 1 ) 0 0 ⋱ var ⁡ ( v N ) var ⁡ ( u N ) ) (11) T=\left(

    (11)var(v1)var(u1)00var(vN)var(uN)" role="presentation">(11)var(v1)var(u1)00var(vN)var(uN)
    \right) T=var(u1)var(v1) 00var(uN)var(vN) (11)

    这种变换方式可以使用如下公式等价, 即为 Color transfer between images 中描述的方法

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

    式中, i为通道, s表示源图像, t表示目标图像. 这种方法需要假设图像各颜色通道分布是独立可分离的, 但实际情况可能不满足这种情况, 因而实际效果可能不好. 需要先将图像转换到不相关的颜色空间, 一般在Lab颜色空间效果较好.

    rgb和lab空间结果比较
    上图中, 依次为原始图像, 参考图像, rgb空间结果, lab空间结果.

    2.2-Cholesky Decomposition(CD)

    关于 Cholesky Decomposition 可以参考:

    1. 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用_大饼博士X的博客-CSDN博客_cholesky分解法求解线性方程组
    2. Cholesky分解 - 知乎 (zhihu.com)

    Cholesky Decomposition 可以将矩阵分解为 A = L L T A=LL^T A=LLT 形式, 这样变换公式为:

    T = L v L u − 1 (12) T = L_vL_u^{-1} \tag{12} T=LvLu1(12)

    文中说这种方法对于通道的顺序有一定的要求, 不同的颜色通道顺序结果不一样, 如RGB与BGR的结果很有可能不一样.

    rgb和bgr结果比较
    上图中, 依次为原始图像, 参考图像, rgb结果, bgr空间结果.

    2.3-Square Root Decomposition(SRD)

    这种方法是对 Cholesky Decomposition 方法的一种改进, 分解公式为:

    Σ u = P u T D u P u , Σ u 1 / 2 = P u T D u 1 / 2 P u Σ v = P v T D v P v , Σ v 1 / 2 = P v T D v 1 / 2 P v \Sigma_u = P_u^T D_u P_u, \Sigma_u^{1/2} = P_u^T D_u^{1/2} P_u \\ \Sigma_v = P_v^T D_v P_v, \Sigma_v^{1/2} = P_v^T D_v^{1/2} P_v Σu=PuTDuPu,Σu1/2=PuTDu1/2PuΣv=PvTDvPv,Σv1/2=PvTDv1/2Pv

    这样变换公式为:

    T = Σ v 1 / 2 Σ u − 1 / 2 (15) T = \Sigma_v^{1/2}\Sigma_u^{-1/2} \tag{15} T=Σv1/2Σu1/2(15)

    Square Root Decomposition 分解后, D为特征值的对角矩阵, 特征值从大到小排列, 可以实现主方向对齐, 类似PCA处理, 可以减少对颜色通道顺序的依赖, 这样在不同的颜色空间下结果类似.

    这种矩阵分解的方法可能的问题是, 局部出现颜色变化不一致的问题, 应该是与 [论文阅读] 颜色迁移-Correlated Color Space 中描述的问题一样.

    SRD结果
    上图中, 依次为原始图像, 参考图像, SRD结果.

    2.4-Linear Monge-Kantorovitch(MKL)

    将分布变换的问题转换为最优传输的问题, 关于 Monge-Kantorovitch 可以参考: 最优传输–Monge-Kantorovich理论_asforking的博客-CSDN博客

    这样变换公式为:

    T = Σ u − 1 / 2 ( Σ u 1 / 2 Σ v Σ u 1 / 2 ) Σ u − 1 / 2 (25) T = \Sigma_u^{-1/2}(\Sigma_u^{1/2}\Sigma_v\Sigma_u^{1/2})\Sigma_u^{-1/2} \tag{25} T=Σu1/2(Σu1/2ΣvΣu1/2)Σu1/2(25)

    这个算法在 Square Root Decomposition 基础上进一步进行了改进, 对变换进一步约束了位移, 这样可以最小化颜色的变化.

    regrain结果
    上图中, 依次为原始图像, 参考图像, regrain结果.

    3-参考

    1. The Linear Monge-Kantorovitch Linear Colour Mapping for Example-Based Colour Transfer 论文理解_玉兔金兔的博客-CSDN博客
  • 相关阅读:
    vue实现文字手工动态打出效果
    剑走偏锋:非传统问题在面试中的应对策略
    Pandas-pd.to_numeric函数知识点总结
    javaweb论坛网站源码
    基于布谷鸟搜索混合灰狼优化算法求解单目标优化问题(AGWOCS)
    【RocketMQ】Rebalance负载均衡总结
    6.3.3 配置MySQL系统环境变量
    【JQuery】JQuery入门——模拟用户分组以及页面换肤
    基于邻接矩阵的克鲁斯卡尔算法和普利姆算法
    计算机毕业设计之java+javaweb的新冠疫情下的校园出入系统
  • 原文地址:https://blog.csdn.net/j05073094/article/details/127718950