[论文阅读] 颜色迁移-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 论文链接 ...
随机推荐
- 给 SSH 启用二次身份验证
转载自:https://mp.weixin.qq.com/s/ssuhFbfaHxxzGmLg6Y2MjA 目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他 ...
- Deployment控制器(pod)更新策略
最小就绪时间: 配置时,用户可以使用Deplpoyment控制器的spec.minReadySeconds属性来控制应用升级的速度.新旧更替过程中,新创建的Pod对象一旦成功响应就绪探测即被视作可用, ...
- Nexus OSS 3 搭建并配置使用 Docker & Git LFS 仓库
转载自:https://cloud.tencent.com/developer/article/1010590 1.Nexus OSS 3 介绍 我们知道 Nexus 是一个强大的 Maven 仓库管 ...
- 基于python的端口扫描
前言 端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关).端口扫描是计算机解密高手喜欢的一种方式.攻击者可以通过它 ...
- 制造企业有可能自行开发ERP系统吗?
当然可以啊! 生产企业对于ERP的需求是一直存在的,但市场上多为标准化的产品,与企业的个性化需求矛盾着. 有很多制造企业自行开发ERP系统啊!只是各个企业成效不同而已,毕竟不同企业的IT开发能力不同而 ...
- Netty 学习(六):创建 NioEventLoopGroup 的核心源码说明
Netty 学习(六):创建 NioEventLoopGroup 的核心源码说明 作者: Grey 原文地址: 博客园:Netty 学习(六):创建 NioEventLoopGroup 的核心源码说明 ...
- vue中a标签地址传参
注意: 1)href前面加冒号" : ". 2)字符串用单引号包裹 . 3)传过去数值用+号连接 传值:<li class="list-li ...
- ifram父页面、子页面元素及方法的获取调用
page1 父页面 <div id="ifram" class="parent1"> <iframe frameborder="0& ...
- SpringBoot内置工具类,告别瞎写工具类了
不知大家有没有注意到,接手的项目中存在多个重复的工具类,发现其中很多功能,Spring 自带的都有.于是整理了本文,希望能够帮助到大家! 一.断言 断言是一个逻辑判断,用于检查不应该发生的情况 Ass ...
- Optimize(优化实验)
十大优化法则 1.更快(本课程重点!) 2.更省(存储空间.运行空间) 3.更美(UI 交互) 4.更正确(本课程重点!各种条件下) 5.更可靠 6.可移植 7.更强大(功能) 8.更方便(使用) 9 ...