[论文阅读] 颜色迁移-Correlated Color Space
[论文阅读] 颜色迁移-Correlated Color Space
文章: Color transfer in correlated color space, [paper], [matlab code], [opencv code]
1-算法原理
本文算法比较简单, 其原理是把原始图像本身的空间分布进行归一化, 然后通过旋转平移缩放等变换, 变换到目标图像的空间分布, 如下所示:
\]
T表示平移, R表示旋转, S表示缩放. 下标t表示目标图像, 下标s表示原始图像, 文中的原始公式存在问题, 我这里进行了调整.
因而本文就是寻找这个变换矩阵, 使用的方法是使用SVD分解(关于SVD算法, 可以戳这里: 奇异值分解(SVD) - 知乎 (zhihu.com).)
\]
具体地, 本文算法步骤为:
- 计算图像每个颜色通道的均值, 及图像的协方差矩阵
- 对协方差矩阵进行SVD分解
- 构建变换需要的矩阵
- 使用公式对图像进行颜色迁移
2-算法核心
对于n维颜色空间, 为了方便处理, 可以调整为n+1维的齐次坐标标示. 对于本文, 使用的是RGB 3维颜色空间, 齐次坐标维4维的.
对于上述几个变换矩阵, 平移矩阵T很容易想到, 可以使用各颜色通道的均值来表示. 但对于旋转矩阵R和缩放矩阵S就需要用到SVD分解矩阵的性质了: \(U\) 表示旋转, \(\Lambda\) 表示缩放拉伸.
因而所需变换矩阵如下:
\]
\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}
\]
\]
\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} ,
\]
式中, ci表示颜色通道, \(s^{ci}=\sqrt{\lambda^{ci}}\). 这里取了根号, 如果不取根号是不是也可以???
本文算法是对3个通道一起处理, 如果每个通道单独处理, 上述公式可以等效为:
\]
式中, i表示通道.
3-算法效果
如下所示为文中给出的一组结果:

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

可以看到, 结果出现了异常. 作者给出的分析是:
- SVD生成的\(\Lambda\) 矩阵中对角线上的值, 是由特征值从大到小排列的, 源图像和目标图像的这个排列可能不匹配
- 如源图像排列为c1, c2, c3, 目标图像排列为c2, c1, c3
- 即使排列相同, 它们的方向可能相反, 如目标图像排列为c1, -c2, c3
针对这个问题, 作者代码实现中给出了解决方案, 进行列匹配(matchColumns):
- 对旋转矩阵\(U_t\) 的所有列进行排列组合, 与\(U_s\) 对应的列求点积和
- 找到和最大的一个组合为最优匹配
- 根据组合中坐标轴的顺序, 对\(\Lambda_t\) 的顺序进行调整, 同时调整方向
下面是调整后的结果:

[论文阅读] 颜色迁移-Correlated Color Space的更多相关文章
- YOLO: You Only Look Once论文阅读摘要
论文链接: https://arxiv.org/pdf/1506.02640.pdf 代码下载: https://github.com/gliese581gg/YOLO_tensorflow Abst ...
- python opencv 实现Reinhard颜色迁移算法
Reinhard颜色迁移算法的过程很简单,流程如下,细节部分见原文,题目为color transfer between images: 将参考图片和目标图片转换到LAB空间下 得到参考图片和目标图片的 ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- Unity Lighting - Choosing a Color Space 选择色彩空间(四)
Choosing a Color Space 选择色彩空间 In addition to selecting a rendering path, it’s important to choose ...
- 【计算机视觉】Selective Search for Object Recognition论文阅读2
Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Sear ...
- Learning to See in the Dark论文阅读笔记
这是一篇图像增强的论文,作者创建了一个数据集合,和以往的问题不同,作者的创建的see in the dark(SID)数据集合是在极其暗的光照下拍摄的,这个点可以作为一个很大的contribution ...
- Color Space 和 Color Range
颜色有两个属性Color Range和Color Space 有关Color Space的解释可以看下面两个链接: https://www.jianshu.com/p/facdbab5ac20 htt ...
- 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 论文链接 ...
随机推荐
- 关于在PyCharm中使用虚拟环境
Python虚拟环境的概念对于管理项目用到的第三方包真是好处多多,所以也想在PyCharm使用虚拟环境. 在这个过程中,遇到很多问题: 第一是使用Python创建虚拟环境,然后在PyCharm创建项目 ...
- 14. 第十三篇 二进制安装kube-proxy
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247484231&idx=1&sn=9e722bee ...
- 查看pod创建时使用yaml文件内容
除了 kubectl describe pod 以外,另一种获取 Pod 额外信息(除了 kubectl get pod)的方法 是给 kubectl get pod 增加 -o yaml 输出格式参 ...
- k8s中节点级别的日志
容器化应用程序写入到 stdout 和 stderr 中的任何信息,都将被容器引擎重定向到某个地方.例如,Docker 容器引擎将 stdout 和 stderr 这两个输出流重定向到 logging ...
- MongoDB 副本集故障情况描述
副本集有两种类型三种角色 两种类型: 主节点( Primary)类型:数据操作的主要连接点,可读写. 次要(辅助.从)节点( Secondaries)类型:数据冗余备份节点,可以读或选举. 三种角色: ...
- 基于python的RSA解密算法
摘要 网上有很多关于RSA的解密脚本,欧拉函数.欧几里得函数什么的,对于一个大专生的我来说,一窍不通,至此经历了三天三夜,我翻阅了RSA的加密原理,以及其底层算法,专研出了一套我自己的解密算法,尚有不 ...
- Linux+Wine玩GTA5指南
如果你的系统没有Wine先装Wine和winetricks,Wine在各大发行版的源都能找到.记住32位和64位的Wine都要装 安装wget后,输入指令 sudo -s cd /opt mkdir ...
- PHP全栈开发(四): HTML 学习(2. div 布局)
无序列表,有序列表,自定义列表 无序列表是ul表示,每个元素用li表示 有序列表是ol表示,每个元素用li表示 <ul> <li>首页</li><li> ...
- P8548 小挖的买花 方法记录
原题链接 小挖的买花 题目背景 小挖喜欢买花,但是 ta 太懒了!所以这个任务全权交给了你. 题目描述 花店里只有 \(n\) 株花,每一株花都有三个属性:价格 \(cost_i\).美丽度 \(be ...
- ARC144 D - AND OR Equation
ARC144 D - AND OR Equation Solution 首先可以猜测和答案仅和每一个二进制位以及\(f(0)\)有关系,不妨把按位\(\operatorname{AND}\)和按位\( ...