[论文阅读] 颜色迁移-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\left(u-\mu_u\right)+\mu_v \\
T \Sigma_u T^T=\Sigma_v \tag{5}
\end{array}\right.
\]
式中, \(u\) 为原始图像, \(v\) 为目标图像, \(\mu\) 为均值, \(\Sigma\) 为协方差, \(T\) 为需要求解的线性变换.
让 \(\Sigma_u = AA^T\) , \(\Sigma_v = BB^T\), 则
(TA)(TA)^T = BB^T \\
TA = B \\
T = BA^{-1}
\]
只要知道了A和B即可知道线性变换T.
2-算法核心
本文的核心就是寻找A和B. 文中主要使用的方法是矩阵分解, 介绍了几种方法.
2.1-Independent Transfer(IT)
首先介绍的是每个通道单独进行转换时, 协方差变成了对角矩阵, 对角元素为每个通道的方差的平方根, 这样变换公式为:
\sqrt{\frac{\operatorname{var}\left(v_1\right)}{\operatorname{var}\left(u_1\right)}} & & 0 \\
0 & \ddots & \\ \tag{11}
& & \sqrt{\frac{\operatorname{var}\left(v_N\right)}{\operatorname{var}\left(u_N\right)}}
\end{array}\right)
\]
这种变换方式可以使用如下公式等价, 即为 Color transfer between images 中描述的方法
\]
式中, i为通道, s表示源图像, t表示目标图像. 这种方法需要假设图像各颜色通道分布是独立可分离的, 但实际情况可能不满足这种情况, 因而实际效果可能不好. 需要先将图像转换到不相关的颜色空间, 一般在Lab颜色空间效果较好.

上图中, 依次为原始图像, 参考图像, rgb空间结果, lab空间结果.
2.2-Cholesky Decomposition(CD)
关于 Cholesky Decomposition 可以参考:
- 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用_大饼博士X的博客-CSDN博客_cholesky分解法求解线性方程组
- Cholesky分解 - 知乎 (zhihu.com)
Cholesky Decomposition 可以将矩阵分解为 \(A=LL^T\) 形式, 这样变换公式为:
\]
文中说这种方法对于通道的顺序有一定的要求, 不同的颜色通道顺序结果不一样, 如RGB与BGR的结果很有可能不一样.

上图中, 依次为原始图像, 参考图像, rgb结果, bgr空间结果.
2.3-Square Root Decomposition(SRD)
这种方法是对 Cholesky Decomposition 方法的一种改进, 分解公式为:
\Sigma_v = P_v^T D_v P_v, \Sigma_v^{1/2} = P_v^T D_v^{1/2} P_v
\]
这样变换公式为:
\]
Square Root Decomposition 分解后, D为特征值的对角矩阵, 特征值从大到小排列, 可以实现主方向对齐, 类似PCA处理, 可以减少对颜色通道顺序的依赖, 这样在不同的颜色空间下结果类似.
这种矩阵分解的方法可能的问题是, 局部出现颜色变化不一致的问题, 应该是与 [论文阅读] 颜色迁移-Correlated Color Space 中描述的问题一样.

上图中, 依次为原始图像, 参考图像, SRD结果.
2.4-Linear Monge-Kantorovitch(MKL)
将分布变换的问题转换为最优传输的问题, 关于 Monge-Kantorovitch 可以参考: 最优传输--Monge-Kantorovich理论_asforking的博客-CSDN博客
这样变换公式为:
\]
这个算法在 Square Root Decomposition 基础上进一步进行了改进, 对变换进一步约束了位移, 这样可以最小化颜色的变化.

上图中, 依次为原始图像, 参考图像, regrain结果.
3-参考
[论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL)的更多相关文章
- 【CV论文阅读】Deep Linear Discriminative Analysis, ICLR, 2016
DeepLDA 并不是把LDA模型整合到了Deep Network,而是利用LDA来指导模型的训练.从实验结果来看,使用DeepLDA模型最后投影的特征也是很discriminative 的,但是很遗 ...
- 分布式多任务学习论文阅读(四):去偏lasso实现高效通信
1.难点-如何实现高效的通信 我们考虑下列的多任务优化问题: \[ \underset{\textbf{W}}{\min} \sum_{t=1}^{T} [\frac{1}{m_t}\sum_{i=1 ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 论文阅读之Joint cell segmentation and tracking using cell proposals
论文提出了一种联合细胞分割和跟踪方法,利用细胞segmentation proposals创建有向无环图,然后在该图中迭代地找到最短路径,为单个细胞提供分割,跟踪和事件. 3. PROPOSAL GE ...
- YOLO 论文阅读
YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...
- [论文阅读] RNN 在阿里DIEN中的应用
[论文阅读] RNN 在阿里DIEN中的应用 0x00 摘要 本文基于阿里推荐DIEN代码,梳理了下RNN一些概念,以及TensorFlow中的部分源码.本博客旨在帮助小伙伴们详细了解每一步骤以及为什 ...
- BERT 论文阅读笔记
BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...
- Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读
Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...
- 深度学*点云语义分割:CVPR2019论文阅读
深度学*点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...
- 《Learning to warm up cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shifting Networks》论文阅读
<Learning to warm up cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shi ...
随机推荐
- 修复 Elasticsearch 集群的常见错误和问题
文章转载自:https://mp.weixin.qq.com/s/8nWV5b8bJyTLqSv62JdcAw 第一篇:Elasticsearch 磁盘使用率超过警戒水位线 从磁盘常见错误说下去 当客 ...
- Elasticsearch: 使用URI Search
在Elasticsearch中,我们可以使用_search终端进行搜索.这个在我之前的文章 "开始使用Elasticsearch (2)" 中有很多的描述.针对这种搜索,我们可以使 ...
- 使用Prometheus和Grafana监控nacos集群
官方文档:https://nacos.io/zh-cn/docs/monitor-guide.html 按照部署文档搭建好Nacos集群 配置application.properties文件,暴露me ...
- 第二章:视图层 - 6:QueryDict对象
类的原型:class QueryDict[source] 在HttpRequest对象中,GET和POST属性都是一个django.http.QueryDict的实例.也就是说你可以按本文下面提供的方 ...
- 12. Fluentd部署:多Workers进程模式
介绍如何使用Fluentd的多worker模式处理高访问量的日志事件.此模式会运行多个worker进程以最大利用多核CPU. 原理 默认情况下,一个Fluentd实例会运行一个监控进程和一个工作进程. ...
- PAT (Basic Level) Practice 1030 完美数列 分数 25
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...
- 巧用VBA实现:基于多个关键词模糊匹配Excel多行数据
在用Excel处理实际业务中,我们会碰到如下场景: 1.从一堆人名中找到包含某些关键字的名字: 2.从银行流水文件中根据[备注]字段找到包含某些关键字的,统一识别为[手续费业务]等. 这本质说的都是一 ...
- selenium4-定位单个页面元素
在操作各项页面元素之前,先介绍下如何通过Python代码来找到这些元素.WebDriver提供了18种元素定位方法,共分为两类(定位当个元素.定位组元素),本节先举例详细介绍下selenium4-定位 ...
- java:找不到符号
出现这种情况的原因之一:实体类的字段修改过.实体类中的变量名修改.然而其他地方调用的字段名还是修改之前的变量.
- C#-多线程的使用Tread
首先是概念,什么是线程? 线程是操作系统分配CPU时间的基本单元,在一个进程中可以有多个线程同时执行代码. 谈一谈什么是进程? 简单的说,一个正在运行的应用程序可以视为一个进程,进程间相互独立,资源不 ...