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

news2024/10/7 8:29:16

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

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

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

1-算法原理

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

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

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

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

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

1.1-方法简化

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

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

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

2-算法核心

2.1-关于公式简化

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

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

2 ( o − f ) + λ [ 2 ( D x ∗ o − D x ∗ s ) ∗ D x + 2 ( D y ∗ o − D y ∗ s ) ∗ D y ] = 0 o + λ ( D x 2 ∗ o + D y 2 ∗ o ) = f + λ ( D x 2 ∗ s + D y 2 ∗ s ) [ 1 + λ ( D x 2 + D y 2 ) ] o = f + λ ( D x 2 + D y 2 ) s 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 2(of)+λ[2(DxoDxs)Dx+2(DyoDys)Dy]=0o+λ(Dx2o+Dy2o)=f+λ(Dx2s+Dy2s)[1+λ(Dx2+Dy2)]o=f+λ(Dx2+Dy2)s

当对于所有像素, 使用矩阵表示时, D x 2 D_x^2 Dx2 D x T D x D_x^TD_x DxTDx, 这样就可以得到公式3.

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

o = A − 1 b A = I + λ ( D x T D x + D y T D y ) b = f + λ ( D x T D x + D y T D y ) s 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 o=A1bA=I+λ(DxTDx+DyTDy)b=f+λ(DxTDx+DyTDy)s

2.2-关于参数λ

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

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

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

3-算法复现

这里使用matlab对算法进行了复现, 结果如下所示:

RGB颜色空间
在这里插入图片描述
HSV颜色空间
在这里插入图片描述
Lab颜色空间
在这里插入图片描述
依次为源图像, 目标/参考图像, 结果.

4-参考

  • Gradient-Preserving Color Transfer_铿锵的玫瑰的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+django留守儿童爱心捐赠网站

开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat11 开发软件:PyCharm 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究…

城市应急处置系统实施目标

针对需求分析中的业务目标,本系统在实施中,通过 “两个工作台七个子系统”的目标来支撑业务目标,满足系统延续需求、功能需求、制度建设需求、平台拓展需求和技术性能需求。 具体分为事前6个子系统、事中2个工作台和事后1个子系统这三方面目标…

002:UIView

UIView简介: UIView作为最基础的视图类,起着管理屏幕上一定区域内容展示的作用。作为各种视图的父类,提供相应的基础能力。 外观、渲染和动画。相应区域内的事件。布局和管理子视图。 布局: 设置自身大小(size&…

[附源码]Python计算机毕业设计SSM基于农产品交易系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

动态代理:JDK动态代理源码学习

文章目录前言概述什么是代理静态代理动态代理正文入口方法1:newProxyInstance方法2:getProxyClass0方法3:get 获取代理方法4:apply 创建代理方法5:generateProxyClass方法6:generateClassFile代理类总结前言…

LeetCode_动态规划_困难_1691.堆叠长方体的最大高度

目录1.题目2.思路3.代码实现(Java)1.题目 给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个子集 ,并将它们堆…

ubuntu14.04搭建openGrok 1.7.40 + Java17+tomcat10.0.27阅读android系统代码

为了快速阅读android系统代码,首选openGrok,其它SI或understand估计不适合了。 话不多说,工欲善其事必先利其器,先下载源码和工具. 以下命令默认使用root,防止权限问题 一、下载android 代码 还是清华的镜像比较牛…

农村金融专题-保险支出、收入、补贴各省份涉农贷款数据集

一、31省市农业保险赔付支出 1、数据来源:wind数据库 2、时间跨度:2005-2019年 3、区域范围:全国 4、指标说明: 部分数据如下: 二、各省农业保险保费收入 1、数据来源: 中国保险数据 2、时间跨度&…

「杂谈·II」cmp() 的参数类型应该是啥?

0. 引言 上了一节 DS 课,但是回到了初学 C 的内容…… 众所周知,最小生成树的 Kruskal 要用边表排序,通常是 sort() 配 cmp()。 而 cmp() 的两个参数的类型最好是什么呢? 让我们回到初学 C 的时候,温习一下知识…… 1…

MySQL数据库学习(3)

MySQL中select语句语法简单介绍&#xff1a; 基本语法规则&#xff1a; SELECT {* | <字段列名>} [FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator> <expression>…

FineReport商业智能数据分析-下拉框控件

1. 概述 1.2 应用场景 「下拉框控件」可应用于填报、参数等场景&#xff0c;本文将介绍「下拉框控件」的属性及应用。 1.2.1 填报控件 填报报表中&#xff0c;可以用来在多个预备选项中选择一个值填入。如下图所示&#xff1a; 1.2.2 参数控件 参数面板处可以通过该控件过…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.4 流控效果【warm up】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.4 流控效果【warm up】31.4.1 流控效果31.4.2 流控效果 - warm up31.4.3 案例31 限…

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

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based 文章: [Illuminant Aware Gamut-Based Color Transfer], [python代码] 本文目的是提出一种新的颜色迁移算法, 可以感知光源变化的全色域颜色迁移方法. 1-算法原理 图像是由摄像机对光谱场景内容和场景照度的敏感性所产生…

springboot validated注解数据校验 异常处理

springboot validated 数据校验validated 数据校验简单的写一下这个用法啊&#xff0c;清晰的本篇文章就记录这个注解的一个用法。validated 数据校验 我们一般的数据校验是怎么用的&#xff1f;在常规模式下我们可能就是在前端去通过js去判断&#xff1f;还是在后端重新查找数…

【C语言字符串相关函数大全】

【C语言字符串相关函数大全】【1】atof【2】atoi【3】atol【4】isalnum【5】isdigit【6】islower【7】isupper【8】isprint【9】memchr【10】memcmp【11】memcpy【12】memset【13】strcat【14】strchr【15】strcmp【16】strpbrk【17】strstr【18】strtok【19】源码【20】源码执…

Mipmap的作用以及其优势和缺点

Mipmap的作用以及其优势和缺点 定义 Mipmap,又叫做多级渐进贴图纹理映射,作用在游戏的纹理贴图,根据渲染物体距离相机的远近,选用不同大小的纹理贴图; 作用 可以使得远处的像素不发生闪烁;减小带宽;减小带宽的原理 说到MipMap可能很多人都会觉得,只是开启后会增加内…

Vue3 学习笔记 —— 函数式编程、createVNode、render、h 函数

目录 2. createVNode()、render() 2.1 初步使用 createVNode()、render() 2.2 h 函数源码分析 3. 使用 h 函数的几种方法 3.1 h 函数 接收的参数 3.2 h 函数 使用方法 4. 通过 h 函数实现 button 组件 4.1 使用 props 接收传入组件的参数 4.2 使用 emit 向组件外发送事…

自动化运维工具—Ansible概述及命令行模块

一.自动化运维工具—Ansible概述及命令行模块 1.1 Ansible是什么 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

机器人手臂四旋翼的笛卡尔阻抗控制(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 当机器人手指与障碍物接触时,呈现出2阶机械阻抗特性。在阻抗控制算法中,不需直接计算加速度,从而避免了因大加速度误差给控制带…

leetcode 473. 火柴拼正方形-思路整理与细节分析

题目&#xff1a; 你将得到一个整数数组matchsticks&#xff0c;其中 matchsticks[i]是第i个火柴棒的长度。你要用所有的火柴棍拼成一个正方形。你不能折断任何一根火柴棒&#xff0c;但你可以把它们连在一起&#xff0c;而且每根火柴棒必须使用一次。如果你能使这个正方形&am…