[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based

文章: [Illuminant Aware Gamut-Based Color Transfer], [python代码]

本文目的是提出一种新的颜色迁移算法, 可以感知光源变化的全色域颜色迁移方法.

1-算法原理

图像是由摄像机对光谱场景内容和场景照度的敏感性所产生的综合信号; 场景照明可以对图像的整体RGB值产生显著影响, 引入明显的颜色投射, 可以给图像一个非常不同的外观.

颜色迁移问题与颜色恒定和白平衡问题有相似之处, 因而在处理过程需要考虑场景照明.

本文算法流程如下所示;



主要有4个步骤:

  1. 白平衡, 计算白点(white point), 每个像素除以白点进行归一化(白点归一化为(1,1,1)), 并将(1,1,1)旋转到(0,0,1), 方便处理
  2. 亮度匹配
  3. 3D全色域颜色匹配
  4. 将将(0,0,1)返回到(1,1,1), 并去除白平衡处理

2-算法核心

总结本文影响颜色迁移算法效果的原因, 主要有2个:

  • 场景照明引起的颜色投射偏差
  • 处理后的颜色超出了色域范围, 导致颜色迁移出现颜色偏差

本文针对上述问题提出了解决方法, 因而本文的核心为白平衡和全色域匹配.

2.1-白平衡

本文使用的方法是 Improving Color Constancy by Photometric Edge Weighting 文中的方法, 这里没有详细研究, 有兴趣的可以查看原文.

下图所示为白平衡的影响, 没有看懂 ...... , 文中的解释是, 只有正确的白平衡设置,每个斑块的白色斑块直方图收敛于给定的6个相干峰值.



对于本文算法, 使用白点进行归一化后, 从(0,0,0)到(1,1,1)构成的向量可以表示灰色的深浅, 这有2个好处:

  1. 该向量可以当作是图像的亮度通道, 方便处理
  2. 实现了源图像和目标/参考图像的亮度的对齐

2.2-3D全色域匹配

文中使用如下公式来进行匹配:

\[I_o = T I_s + \mu_t \tag{7}
\]

式中, \(I_s\) 是去除均值后的. 这里关键是是求出T. 由于已经去除了均值, 中心已经移到了(0,0,0), 这里T就只涉及到缩放和旋转了, 如下所示:



本文利用凸包的体积进行优化, 即使输出图像的色域在目标图像的色域内, 并尽可能扩大输出图像的色域, 如下所示:



式中, \(CH_s\) 和 \(CH_t\) 分别为源图像和目标图像的凸包, \(V(*)\) 为计算凸包的体积, ⊕表示凸包的并集, T表示对源图像凸包的缩放和旋转, 如下所示为一个示例:

由于式6是一个非凸函数, 需要用蛮力搜索来寻找全局最优, 本文利用Matlab的fminunc优化工具箱中的准牛顿方法获得了一个近似解.

3-算法效果

本文算法, 相比其它算法效果还是不错的, 如下所示:

4-算法复现

从本文算法描述上看, 算法还比较简单, 但从算法实现上看(python代码戳这里)还是挺发杂的:

下面是使用matlab复现的结果(参考了python代码):





上图为有白平衡结果, 下图为无白平衡结果. 可以看到, 无白平衡结果比有白平衡结果要偏亮一些, 其他倒是没有太大区别, 可能测试图像不多. 这里是否可以去除白平衡提高算法速度!!!

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based的更多相关文章

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

    [论文阅读] 颜色迁移-N维pdf迁移 文章: N-Dimensional Probability Density Function Transfer and its Application to C ...

  2. [论文阅读] 颜色迁移-Correlated Color Space

    [论文阅读] 颜色迁移-Correlated Color Space 文章: Color transfer in correlated color space, [paper], [matlab co ...

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

    [论文阅读] 颜色迁移-Linear Monge-Kantorovitch(MKL) 文章: The Linear Monge-Kantorovitch Linear Colour Mapping f ...

  4. [论文阅读] 颜色迁移-EM概率分割的局部颜色迁移

    颜色迁移-EM概率分割的局部颜色迁移 文章: Local Color Transfer via Probabilistic Segmentation by Expectation-Maximizati ...

  5. [论文阅读笔记] Community aware random walk for network embedding

    [论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...

  6. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

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

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

  8. [论文阅读]阿里DIN深度兴趣网络之总体解读

    [论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...

  9. [论文阅读]阿里DIEN深度兴趣进化网络之总体解读

    [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...

  10. BERT 论文阅读笔记

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

随机推荐

  1. 2023-03-26:给定一个二维数组matrix, 每个格子都是正数,每个格子都和上、下、左、右相邻。 你可以从任何一个格子出发,走向相邻的格子, 把沿途的数字乘起来,希望得到的最终数字中,结尾的0

    2023-03-26:给定一个二维数组matrix, 每个格子都是正数,每个格子都和上.下.左.右相邻. 你可以从任何一个格子出发,走向相邻的格子, 把沿途的数字乘起来,希望得到的最终数字中,结尾的0 ...

  2. 2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import “fmt“ func app() f

    2022-09-06:以下go语言代码输出什么?A:Hi All:B:Hi go All:C:Hi:D:go All. package main import "fmt" func ...

  3. 2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多

    2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多 ...

  4. 2021-09-24:给定一个正整数 n ,输出的第 n 项。前五项如下:1:1。2:11。3:21。4:1211。5:111221。第一项是数字 1 。描述前一项,这个数是 1 即 “ 一 个 1

    2021-09-24:给定一个正整数 n ,输出的第 n 项.前五项如下:1:1.2:11.3:21.4:1211.5:111221.第一项是数字 1 .描述前一项,这个数是 1 即 " 一 ...

  5. 分类树,我从2s优化到0.1s

    前言 Java技术突击网站:http://www.susan.net.cn 分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中. 但就是这样一个简单的分类树查询功能,我们却优化了5次. ...

  6. vue全家桶进阶之路42:Vue3 SCSS、SASS、CSS

    SCSS和SASS都是CSS预处理器,它们的主要目的是简化CSS的编写,增加可维护性,并提供更丰富的功能.下面是它们与普通的CSS的区别: 语法:SCSS和SASS都具有比普通CSS更丰富的语法.其中 ...

  7. Typo in static class property declarationeslint

    eslint 检测提示 Typo in static class property declarationeslint 找了半天原来是propTypes 写成了PropTypes (就是一个首字母大写 ...

  8. JVM系统参数

    JVM(Java虚拟机)是Java程序的运行环境,它可以通过一些系统参数进行配置和优化.以下是一些常用的JVM系统参数: 1. -Xmx: 用于设置JVM堆的最大内存大小.例如,-Xmx1g表示将堆的 ...

  9. Galaxy 平台下 LEfSe 安装与使用教程

    LEfSe (Linear discriminant analysis Effect Size) 是一种用于发现和解释高维度数据生物标识(基因.通路和分类单元等)的分析工具,可以进行两个或多个分组的比 ...

  10. CentOS Linux 7 安全基线设置

    作为一个生信人,不管是日常的数据分析还是其他工具应用的开发,服务器的安全始终是一个无法避免的话题.尤其是当我们拿到一台新的服务器,我们需要怎样才能确保它是安全可靠,并最小限度降低它被攻击的可能性? 下 ...