[论文阅读] 颜色迁移-N维pdf迁移

文章: N-Dimensional Probability Density Function Transfer and its Application to Colour Transfer, [paper ][code]

1-算法原理

简单来说, 本文将图像看作是随机变量的一组样本, 图像之间的颜色迁移可以看作是样本之间分布的迁移. 因而本文的方法就是寻找样本分布之间的迁移方法.

如下图所示为文中给出的2d pdf迁移方法的示例.

具体的, 本文算法步骤如下所示:

下面就我个人理解进行说明下:

  1. 第一步是初始化, 可以看到, 本文是在rgb空间进行处理的, 且是使用迭代的方法, 因而处理过程中x是不断变化的
  2. 第二大步是算法核心, 算法迭代, 查找映射关系, 具体的
  3. 使用旋转矩阵R对样本x和y进行处理, 将其变换到新的坐标系, 对应上图中的步骤3
  4. 在新的坐标系, 对每个轴寻找1维的pdf映射, 对应上图中的步骤5
  5. 对图像进行映射, 得到当前步骤处理后的图像, 对应上图中的步骤6
  6. 处理完后, 映射回原始坐标系, 对应上图中的步骤7
  7. 重复步骤2-5, 得到最终的图像.

2-算法核心

本文的目的是N维pdf的迁移, 但对于高维的pdf迁移是比较困难的, 因而本文将其转换为1维的迁移. 因此本文有2个方面的问题需要解决: 一是1维pdf如何迁移; 二是如何转换为1维pdf.

2.1-1D pdf transfer

本文介绍了一种方法, 如下所示, Cx 和 Cy 分别为累积概率分布函数.



这种方法是 Digital Image Processing 书中的方法, 我觉得有点类似直方图均衡或者直方图规定化(直方图匹配).

代码中给出的实现是使用插值算法实现的, 作者给出的实现是使用matlab的, 其中PX为原始图像某个轴的累积概率分布, PY为目标图像某个轴的累积概率分布

f = interp1(PY, 0:nbins-1, PX, 'linear');

2.2-rotation matrix R

本文使用旋转矩阵R将原始样本变换到新的坐标系, 然后对新坐标系的每个轴进行1d transfer. 之所有要使用旋转矩阵, 个人以为的原因是(可能并不准确):

  1. 样本分布比较复杂, 原始坐标系(RGB空间)中的迁移不能实现准确的pdf匹配
  2. pdf的迁移存在大量非线性处理, 原始坐标系(RGB空间)可能不足以表达
  3. 原始坐标系变换, 拉伸幅度可能过大, 导致图像颜色异常, 变换到新的高维坐标系后, 每个轴的变化变小, 可以减少拉伸幅度

因而旋转矩阵R的选择比较关键, 文中测试了几种R的选择方法, 最后发现使用随机的方法, 效果最好, 如下所示:

旋转矩阵R的大小为 m*3, 根据文章中的说法, m越大pdf匹配越精确, 但速度也越慢. 代码中给出的实现使用m=6, 如下所示.

R{1} = [1 0 0; 0 1 0; 0 0 1; 2/3 2/3 -1/3; 2/3 -1/3 2/3; -1/3 2/3 2/3];
for i=2:nb_iterations
R{i} = R{1} * orth(randn(3,3));
end

这里没有看懂, 直接给R随机赋值不行吗?

3-算法效果

如下图所示为文章中给出的效果.

[论文阅读] 颜色迁移-N维pdf迁移的更多相关文章

  1. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  2. 论文阅读:《Bag of Tricks for Efficient Text Classification》

    论文阅读:<Bag of Tricks for Efficient Text Classification> 2018-04-25 11:22:29 卓寿杰_SoulJoy 阅读数 954 ...

  3. BERT 论文阅读笔记

    BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...

  4. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  5. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  6. 深度学*点云语义分割:CVPR2019论文阅读

    深度学*点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  7. 《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 ...

  8. 分布式多任务学习论文阅读(四):去偏lasso实现高效通信

    1.难点-如何实现高效的通信 我们考虑下列的多任务优化问题: \[ \underset{\textbf{W}}{\min} \sum_{t=1}^{T} [\frac{1}{m_t}\sum_{i=1 ...

  9. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  10. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

随机推荐

  1. ubuntu下vscode安装go插件失败解决办法

    go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct go env -w GOSUMDB=gosum.io+ce6e ...

  2. 解决Nginx+Tomcat中https转http请求问题---解决js加载使用http的问题

    解决js加载使用http的问题 控制台错误提示: Mixed Content: The page at '' was loaded over HTTPS, but requested an insec ...

  3. docker -v 和Dockerfile 中VOLUME 区别

    在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...

  4. 集合框架——LinkedList集合源码分析

    目录 示例代码 底层代码 第1步(初始化集合) 第2步(往集合中添加一个元素) 第3步(往集合中添加第二个元素) 第4步(往集合中添加第三个元素) LinkedList添加元素流程示意图 第5步(删除 ...

  5. Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer

    这一章我们来唠唠如何优化BERT对文本长度的限制.BERT使用的Transformer结构核心在于注意力机制强大的交互和记忆能力.不过Attention本身O(n^2)的计算和内存复杂度,也限制了Tr ...

  6. .NET 5 设计 API (资源站)

    跟新于 2022-11日 数据抓取端 随着数据的增多,问题也越来越多 用redis 主要是为了 以后进行,多个数据库写入. 例如我搭建一个 别的数据库论坛,我直接拿数据去redis里面拿,就不用跨库查 ...

  7. RAID5 IO处理之对齐读代码详解

    1 总体流程 当一个读请求的覆盖范围落在一个chunk范围内时为对齐读,流程图如下所示: 2 入口 在RAID5的IO处理函数 make_request() 一开始进行了对齐读的判断和处理,代码如下所 ...

  8. 商品期货通用模型JF1

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 行情不确定性加剧 回顾2022年上半年的期货市场行情,在一个个宏观事件的不断冲击下,期货市场的不确定性加 ...

  9. 【Firefox浏览器】关闭触摸板双指滑动进行前进后退的功能

    痛点 本以为只是Chrome浏览器存在这一奇葩功能,没成想Firefox也沦陷了!有好一阵子在使用Firefox的时候,并未发现其存在这个功能.直到有一天,打开自己的博客,翻阅上篇< [Chro ...

  10. 一天十道Java面试题----第三天(对线程安全的理解------>线程池中阻塞队列的作用)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 21.对线程安全的理解 22.Thread和Runnable的区别 23.说说你对守护线程的理解 24.ThreadLoc ...