首页 > 其他分享 >[论文阅读] 颜色迁移-梯度保护颜色迁移

[论文阅读] 颜色迁移-梯度保护颜色迁移

时间:2023-08-04 20:13:52浏览次数:40  
标签:颜色 梯度 图像 直方图 公式 迁移 lambda

[论文阅读] 颜色迁移-梯度保护颜色迁移

文章: [Gradient-Preserving Color Transfer], [代码未公开]

本文目的: 如题所示为梯度保护的颜色迁移方法.

1-算法原理

人类的视觉系统对局部强度差异比强度本身更敏感, 因而, 保持颜色梯度是场景保真度的必要条件, 因而作者认为: 一个好的颜色迁移算法需要保持颜色梯度.

颜色梯度从字面意思理解就是要保持颜色和梯度, 颜色迁移就是要保持源图像中的细节(梯度)和目标图像中的颜色.

因而本文就是从2这个方面进行设计算法的, 最小化如下所示公式, 即可得到输出图像.
在这里插入图片描述
式中, \(H(*)\) 为直方图, \(\nabla\) 为梯度算子

  • 第一部分是直方图, 用于获取目标/参考图像颜色, 输出图像的直方图和目标/参考图像的直方图尽可能的接近
  • 第二部分是梯度, 用于保留源图像梯度, 输出图像的梯度和源图像的梯度尽可能的接近
  • 参数λ是用于平衡目标图像颜色和源图像梯度的系数

但上述公式1很难优化, 主要原因函数 \(H(*)\) 是作用于图像整体的统计运算, 而梯度算子 \(\nabla\) 是应用于图像中的每个像素.

1.1-方法简化

针对公式难以优化问题, 作者对公式进行了简化:

  • 公式1的第一部分作用是尽可能的使输出图像的直方图接近目标图像的直方图, 其功能就相当于直方图匹配
  • 可以先将源图像和目标图像进行直方图匹配, 得到中间图像f
  • 输出图像尽可能的接近中间图像f, 相当于输出图像直方图尽可能接近目标图像直方图

因而上述公式可以更改为:
在这里插入图片描述
进一步地, 使用矩阵方式表示, 并求导可以得到:
在这里插入图片描述
式中, \(o\) 输出的图像, \(D_x\) , \(D_y\) 为梯度算子, 文中使用sobel算子, 关于sobel算子, 可以戳这里: Sobel算子

2-算法核心

2.1-关于公式简化

比较难以理解的是公式2到公式3的变换, 这里做个简单说明, 可能不太正确.

要求公式2的最小值, 就要求其导数=0时的解, 为了方便理解, 这里去除下标, 对单个像素进行说明, 对公式2求导:

\[2(o-f)+\lambda [2(D_x*o-Dx*s)*Dx + 2(D_y*o-Dy*s)*Dy ] = 0 \\ o+ \lambda (D_x^2*o+D_y^2*o) = f + \lambda (D_x^2*s+D_y^2*s) \\ [1+ \lambda (D_x^2+D_y^2)]o = f + \lambda (D_x^2+D_y^2)s \]

当对于所有像素, 使用矩阵表示时, \(D_x^2\) 为 \(D_x^TD_x\), 这样就可以得到公式3.

这样就可以通过求解线性方程得到输出图像o:

\[o = A^{-1}b \\ A = I + \lambda (D_x^TD_x + D_y^TD_y) \\ b = f + \lambda (D_x^TD_x + D_y^TD_y)s \]

2.2-关于参数λ

算法中的唯一控制参数为λ, 文中也进行了讨论.

文中使用了 MSE 来对颜色迁移后的图像进行定量评估, MSE 计算方式如下:
在这里插入图片描述
MSE的值随 λ 变化为变化, 经过文中例子进行测试, λ在1附近时, MSE的值最小(越小越好).

如下所示为不同λ时的结果对比.
在这里插入图片描述

3-算法复现

这里使用matlab对算法进行了复现, 结果如下所示:
RGB颜色空间
在这里插入图片描述
HSV颜色空间
在这里插入图片描述
Lab颜色空间
在这里插入图片描述
依次为源图像, 目标/参考图像, 结果.

4-参考

标签:颜色,梯度,图像,直方图,公式,迁移,lambda
From: https://www.cnblogs.com/yfor1008/p/16927925.html

相关文章

  • blazor 输入字体颜色是黑色,,提示字体颜色不对
     下图是目标样式 样式修改都不起作用,后面百度发现是字段: -webkit-text-fill-color修改 这样就可以了,输入和提示字体颜色都是白色完成要求......
  • js设置随机颜色
    varchars=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];functiongen......
  • LightGBM为什么比xgbost好?——选择梯度大(残差大)样本来进行特征分裂生成的树,借鉴了Ad
    LightGBM(LightGradientBoostingMachine)是一款基于决策树算法的分布式梯度提升框架。为了满足工业界缩短模型计算时间的需求,LightGBM的设计思路主要是两点:减小数据对内存的使用,保证单个机器在不牺牲速度的情况下,尽可能地用上更多的数据;减小通信的代价,提升多机并行时的效率,实现在......
  • 强化学习——策略梯度之Reinforce
    1、策略梯度介绍相比与DQN,策略梯度方法的区别主要在于,我们对于在某个状态下所采取的动作,并不由一个神经网络来决定,而是由一个策略函数来给出,而这个策略函数的目的,就是使得最终的奖励的累加和最大,这也是训练目标,所以训练会围绕策略函数的梯度来进行。2、策略函数以Reinforce算法......
  • ELK logstash升级到2.0以及logstash-forwarder迁移到Filebeat
    将从logstash1.5版本升级到2.1版本,以及将《ELK部署指南》中使用的logstash-forwarder转移到Filebeat上。升级步骤停止logstash以及发送到logstash的所有管道。更新apt或yum源或者下载新版包。安装新版的logstash。测试logstash配置文件是否正确。启动logstash以及第一步停止的管道......
  • .ibd迁移数据
    概述从MySQL5.6版本开始,引入了传输表空间这个功能,可以把一张表从一个数据库移到另一个数据库或者另一台机器上。在做数据迁移时,非常方便,尤其是针对一张数据量很大的表来说。相比mysqldump的方式,表空间传输要快很多,而且更加灵活。当然如果想使用表空间传输的功能,也必须满足以下几个......
  • Android中的颜色设置
    1、在android中经常看到设置的颜色为八位的十六进制的颜色值,例如:publicstaticfinalclasscolor{publicstaticfinalintlightblue=0x7f040000......
  • halo博客从1.X迁移到2.X注意事项
    前言官方的迁移教程很详细:https://docs.halo.run/getting-started/migrate-from-1.x但是从我看官方文档到完成数据迁移,途中也吃了不少亏(昨天弄到半夜),所以写出这篇文档,避免更多的人踩坑本教程只针对于halo1.5/1.6Sakura主题迁移到halo2.8的踩坑记录,也许其他主题并不一样。且随......
  • TabR:检索增强能否让深度学习在表格数据上超过梯度增强模型?
    这是一篇7月新发布的论文,他提出了使用自然语言处理的检索增强RetrievalAugmented技术,目的是让深度学习在表格数据上超过梯度增强模型。检索增强一直是NLP中研究的一个方向,但是引入了检索增强的表格深度学习模型在当前实现与非基于检索的模型相比几乎没有改进。所以论文作者提出......
  • [Ynoi Easy Round 2021] TEST_152(颜色段数均摊+扫描线)
    题目传送门solution简单题,考虑正着做扫描线,维护最后一次覆盖每个位置的修改时间,这个可以用\(set\)维护颜色段数均摊。那么显然对于一个以当前位置为右端点的询问,其答案就是所有最后修改时间大于等于左端点的位置的数的和。开一个树状数组维护最后一次修改时间是\(i\)的位......