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

news2024/9/22 13:27:15

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

文章: Color transfer in correlated color space, [paper], [matlab code], [opencv code]

1-算法原理

本文算法比较简单, 其原理是把原始图像本身的空间分布进行归一化, 然后通过旋转平移缩放等变换, 变换到目标图像的空间分布, 如下所示:

I = T t ⋅ R t ⋅ S t ⋅ S t ⋅ S s ⋅ R s ⋅ T s ⋅ I s (1) I = T_t \cdot R_t \cdot S_t \cdot S_t \cdot S_s \cdot R_s \cdot T_s \cdot I_s \tag{1} I=TtRtStStSsRsTsIs(1)

T表示平移, R表示旋转, S表示缩放. 下标t表示目标图像, 下标s表示原始图像, 文中的原始公式存在问题, 我这里进行了调整.

因而本文就是寻找这个变换矩阵, 使用的方法是使用SVD分解(关于SVD算法, 可以戳这里: 奇异值分解(SVD) - 知乎 (zhihu.com).)

C o v = U ⋅ Λ ⋅ V T Cov = U \cdot \Lambda \cdot V^T Cov=UΛVT

具体地, 本文算法步骤为:

  1. 计算图像每个颜色通道的均值, 及图像的协方差矩阵
  2. 对协方差矩阵进行SVD分解
  3. 构建变换需要的矩阵
  4. 使用公式对图像进行颜色迁移

2-算法核心

对于n维颜色空间, 为了方便处理, 可以调整为n+1维的齐次坐标标示. 对于本文, 使用的是RGB 3维颜色空间, 齐次坐标维4维的.

对于上述几个变换矩阵, 平移矩阵T很容易想到, 可以使用各颜色通道的均值来表示. 但对于旋转矩阵R和缩放矩阵S就需要用到SVD分解矩阵的性质了: U U U 表示旋转, Λ \Lambda Λ 表示缩放拉伸.

因而所需变换矩阵如下:

Λ = d i a g ( λ c 1 , λ c 2 , λ c 3 ) \Lambda = diag(\lambda^{c1}, \lambda^{c2}, \lambda^{c3}) Λ=diag(λc1,λc2,λc3)

T s = ( 1 0 0 − m s c 1 0 1 0 − m s c 2 0 0 1 − m s c 3 0 0 0 1 ) , T t = ( 1 0 0 m t c 1 0 1 0 m t c 2 0 0 1 m t c 3 0 0 0 1 ) T_s = \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} Ts=100001000010msc1msc2msc31,Tt=100001000010mtc1mtc2mtc31

R s = U s − 1 , R t = U t R_s = U_s^{-1}, R_t = U_t Rs=Us1,Rt=Ut

S s = ( 1 / s s c 1 0 0 0 0 1 / s s c 2 0 0 0 0 1 / s s c 3 0 0 0 0 1 ) , S t = ( s t c 1 0 0 0 0 s t c 2 0 0 0 0 s t c 3 0 0 0 0 1 ) S_s = \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} Ss=1/ssc100001/ssc200001/ssc300001,St=stc10000stc20000stc300001

式中, ci表示颜色通道, s c i = λ c i s^{ci}=\sqrt{\lambda^{ci}} sci=λci . 这里取了根号, 如果不取根号是不是也可以???

本文算法是对3个通道一起处理, 如果每个通道单独处理, 上述公式可以等效为:

C i = σ t i σ s i ( C s i − μ s i ) + μ t i C^i = \frac{\sigma_t^{i}}{\sigma_s^{i}}(C_s^{i} - \mu_s^{i}) + \mu_t^{i} Ci=σsiσti(Csiμsi)+μti

式中, i表示通道.

3-算法效果

如下所示为文中给出的一组结果:

迁移结果示例

4-补充说明

作者在自己给出的matlab代码中指出了本文算法存在的一个问题, 我们先来看看实际的情况, 如下所示为一组图像的测试结果.

异常结果

可以看到, 结果出现了异常. 作者给出的分析是:

  • SVD生成的 Λ \Lambda Λ 矩阵中对角线上的值, 是由特征值从大到小排列的, 源图像和目标图像的这个排列可能不匹配
  • 如源图像排列为c1, c2, c3, 目标图像排列为c2, c1, c3
  • 即使排列相同, 它们的方向可能相反, 如目标图像排列为c1, -c2, c3

针对这个问题, 作者代码实现中给出了解决方案, 进行列匹配(matchColumns):

  1. 对旋转矩阵 U t U_t Ut 的所有列进行排列组合, 与 U s U_s Us 对应的列求点积和
  2. 找到和最大的一个组合为最优匹配
  3. 根据组合中坐标轴的顺序, 对 Λ t \Lambda_t Λt 的顺序进行调整, 同时调整方向

下面是调整后的结果:

调整后结果

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

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

相关文章

WMS手动配货和自动配货的区别

手动配货 不知道配货流程的朋友可以看一下前面的文章链接: 深入浅出WMS之出库流程里面有对出库的解释说明,其中也有对配货的解释。前端页面也可以在前面的那篇文章中看到,这里我们来说一下后端部分。 查 手动配货是选中出库单的某条数据,然…

一文教你从Linux内核角度探秘JDK NIO文件读写本质(上)

1. 前言 在深入讲解Netty那些事儿之从内核角度看IO模型一文中曾对 Socket 文件在内核中的相关数据结构为大家做了详尽的阐述。 Socket内核结构.png 又在此基础之上介绍了针对 socket 文件的相关操作及其对应在内核中的处理流程: 系统IO调用结构.png 并与 epoll 的…

由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档

引言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

[附源码]计算机毕业设计springboot作业管理系统

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

词袋模型(Bag-of-words model)

词袋模型词袋模型简介示例计算机视觉中的词袋模型词袋模型 简介 词袋模型(Bag-of-words model)是用于自然语言处理和信息检索中的一种简单的文档表示方法。通过这一模型,一篇文档可以通过统计所有单词的数目来表示,这种方法不考…

redis安装

版本号:redis-6.2.1 下载redis-6.2.1.tar.gz放/opt目录 解压命令:tar -zxvf redis-6.2.1.tar.gz 解压完成后进入目录:cd redis-6.2.1 在redis-6.2.1目录下执行make命令 出现make test 执行make install 查看redis默认安装路径:/u…

二、CANdelaStudio入门-版本介绍

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的各个版本,欢迎各位朋友订阅、评论,可以…

PbootCMS简单两步增加自动清理日志功能

问:网站没人访问触发不了清理怎么办? 答:我建议你不要关心这个,都没人访问你的网站,你还有个锤子东西需要清理? 问:听人说前台插入script触发会不安全? 答:都是成年人…

Web应用程序,简单的日志系统解决方案

一、简介 今天介绍一下,当你的程序没有日志系统时,如何快速方便查看当前程序日志的解决方案。如果你的程序有日志系统,可以不看本篇博客哈。本文实例是使用 C# 讲解,当然实现的核心思想适用于其他语言开发的系统。 二、解决方案…

nexus搭建测试dockermavennpm仓库

JAVA下载 https://www.oracle.com/java/technologies/downloads/archive/ https://login.oracle.com/mysso/signon.jsp QQq951699. [rootvm1 ~]# mkdir -p /data [rootvm1 ~]# mv jdk-8u221-linux-i586.tar.gz /data [rootvm1 ~]# cd /data;tar xf jdk-8u221-linux-i586.tar.g…

222页8万字智慧园区IOC平台运维管理平台解决方案

目 录 第一章 项目概述 7 1.1 园区格局的变化 7 1.1.1 传统安防面临的不足与挑战 7 1.1.2 园区安防未来的发展趋势 7 1.2 需求分析 8 1.2.1 平台集成化 8 1.2.2 数据可视化 8 1.2.3 管控全面化 8 1.2.4 覆盖高清化 9 1.2.5 指挥简易化 9 1.2.6 建设智能化 9 1.3 建设思路 9 1.3…

基于物联网设计的自反馈深紫外杀菌消毒系统(STM32F407)

一、前言 目前常态化防控病毒有很多种,其中主要是人工喷洒消毒液这种消毒方式,这种消毒效果无法得到量化,同时还可能存在喷洒盲区,也会对公民的呼吸道产生刺激,腐蚀损坏公共设施,而对于室内公共空间的消毒的要求会更高,基于这样的状况,人工喷洒消毒液这种方式肯定不太…

[附源码]JAVA毕业设计教学成果管理平台(系统+LW)

[附源码]JAVA毕业设计教学成果管理平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。 目录 LU分解法 概念 确定L、U矩阵 LU分解法的意义 程序设计 LUP求逆 1)代码 2)代…

uniapp 监听通知栏消息插件(支持白名单、黑名单、过滤) Ba-NotifyListener

简介(下载地址) Ba-NotifyListener 是一款实时监听通知栏消息的uniapp插件。支持白名单、黑名单;支持监听消息移除;支持自定义过滤条件(如短信验证码)等。 支持监听所有通知栏消息(包含id、ti…

springboot整合layui排坑

参考:thymeleaflayui加载页面渲染时TemplateProcessingException: Could not parse as expression: "_yaoshengting的博客-CSDN博客 目录 1.table渲染问题 2.解决方式 1.将clos后的[[ ]]分成四行写 2.加上 th:inline"none 1.table渲染问题 源代码&…

[附源码]Python计算机毕业设计Django拉勾教育课程管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

spark shuffle·读写流程 和 rdd持久化

1.对比mapreduce和spark mapreduce里 map的第3条就是说,比如我存了很多条数据,如果一条一条写进磁盘,肯定有很多次IO,我先归并到一个缓存里面再溢写磁盘。 spark与其的差别就是用map代替了buffer,因为map存的key唯一&…

[附源码]JAVA毕业设计教学辅助系统(系统+LW)

[附源码]JAVA毕业设计教学辅助系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

[附源码]计算机毕业设计springboo酒店客房管理系统

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