颜色迁移(色彩空间的相互转化)

【OpenCV】Lab颜色空间 Lab是一种色彩空间,也即一种颜色模型,是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立的,在1976年又经修订并被命名为CIELab.它包括人眼所能看到的所有的颜色(可见光谱),所以也是目前为止色域最宽的色彩空间,其每一组色值对应一种确定的与设备无关的色彩.这种用数学理论量化的色彩空间使不同设备的色彩能够相互比较、模拟和匹配.    在Lab颜色空间中,一种颜色 阅读详情

  颜色迁移是计算机视觉领域的一个很有趣的问题,它实际上要我们解决这么一个问题:基于图像A和图像B,合成一幅新的图像C,使其同时具有A的颜色和B的形状等遗传信息,即图像B在不改变它自身所表达的形状信息的情况下,学习了图像A的整体颜色基调,我们把这个过程称为图像的颜色迁移合成。其中图像A 称为颜色图像(源图像),图像B 称为形状图像(目的图像)。

       在进行各种算法分析总结前,做好准备工作是必须的。先来总结下颜色迁移的必要基础知识——色彩空间及色彩空间的转换。

 

色彩空间

       色彩空间是进行颜色信息研究的理论基础,它将颜色从人们的主观感受量化为具体的表达,为用计算机来记录和表现颜色提供了有力的依据。

一幅图像可以用不同的色彩空间表示,其视觉效果是相同的。但色彩空间的选取对图像的色彩迁移算法是否有效有很大的影响,选择一个合适的色彩空间能够保证色彩迁移结果的准确性。用于彩色图像处理的色彩空间必须同时具有独立性和均匀性。独立性是指色彩空间的三个分量互不影响,对其中某个分量的处理不会导致其它分量相对于人眼感觉发生变化;均匀性是指对色彩空间的每一个分量来说,相同数量的变化能够产生大约相同视觉重要性的变化。

       色彩空间的表达形式是多样的,不同的色彩空间具有不同的特性,但因为不同的色彩空间是同构的,所以它们之间可以互相转换。

目前已发展的色彩空间非常多,如RGB,CIE XYZ,LMS,HSV,YCrCb,HSL,CMY(K),YUV,lαβ等。

       下面主要介绍RGB色彩空间和lαβ色彩空间以及它们之间的转换。

 

RGB色彩空间

       色彩混合的基本定律表明:自然界任何一种色彩均可用红、绿、蓝三种原色光混合产生,这在几何上能够以R、G、B三个互相垂直的轴所构成的空间坐标系统来表示,称为RGB色彩空间。如图1所示,RGB色系坐标中三维空间的三个轴分别于红、绿、蓝三基色相对应,原点对应黑色,离原点最远的顶点对应白色,而立方体内其余各点对应不同的颜色。RGB色彩系统用R、G、B三原色通过不同比例的混合来表示任一种色彩,因而它不能直观地度量色调、饱和度和亮度。而且,各分量之间存在着一定的相关性,它们在大多数情况下都是成正比的,主要表现为自然场景中若某一通道大,则像素的其他通道值也较大。这意味着,如果要对图像的色彩进行处理,常常需要对像素的三个分量同时进行修改才不会影响图像的真实感,这将大大增加颜色调整过程的复杂性。因此,在RGB色彩空间下进行色彩迁移会比较复杂,得到的视觉效果也不自然。

                                                                                 

图1 RGB颜色空间

       另外,RGB是与设备相关的色彩空间,即:不同的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同的色彩显示结果。

 

lαβ色彩空间

      lαβ色彩空间是在LMS空间的基础上建立起来的。LMS空间三通道间的相关性很大。图2是Ruderman等人在一幅用LMS空间表示的图像中随机抽取1000个像素点生成的坐标关系图。从图中可以看出,L、M、S三个通道有很大的相关性,尤其是L与M之间。

                                   

                                                                                         图2 LMS色彩空间中L-M和L-S分布图

       Buchsbaum等人对色彩迁移进行了研究,利用一些正交线性变换将人类视觉系统所能感受到的红、绿、蓝三色信号变换到三个不相关的色彩分量。在他们的研究基础上,Ruderman等人经过对大量的自然界图像进行颜色分布统计,得到了图像的颜色分布统计结果,并用转化色彩空间的方法形成一个统计意义上具有近似正交基的均匀色彩空间lαβ,并给出了简单的3×3矩阵运算实现RGB到lαβ空间的转化。lαβ色彩空间是基于数据驱动对人类感觉的研究,它假设人类的视觉系统理想地适应自然景色的处理,由亮度分量l,和两个色度分量α和β组成。其中,α表示黄一蓝通道(yellow—blue opponent),β表示红一绿通道(red—green opponent),见图3。

                                                                   

                                                                                                    图3 lαβ色彩空间

       Ruderman等人在一幅用lαβ色彩空间表示的图像中随机抽取1000个像素点,生成了图4所示的坐标关系图。从中可以看出,lαβ色彩空间不仅基本消除了颜色分量之间的强相关性,而且有效地将图像的灰度信息和颜色信息分离开来。所以可以分别对三个通道图像进行独立的运算,而不需要修改另外两个通道的信息,从而不会影响原图像的自然效果。

                         

                                                                                           图4 lab空间l-a、l-b、a-b关系图

 

色彩空间的转换

       色彩空间一方面要符合人眼的视觉感知特性,另一方面应方便图像的处理。图像色彩迁移的过程是一个改变图像颜色基调的过程,通常希望在改变图像的一个颜色属性时,不改变图像其它的颜色属性。由前面的介绍可知,RGB空间的三通道具有很强的相关性,而lαβ空间的各通道具有最小的相关性。所以,在lαβ空间对图像的颜色进行出来将会变得十分方便。因此,选择在lαβ空间进行图像间的色彩迁移,这就需要将图像从RGB空间转换到lαβ空间。

1.从RGB空间到lαβ空间的转换

需要进行3次变换,即RGB->CIEXYZ->LMS->lαβ,具体步骤如下:

1)从RGB空间到CIE XYZ空间的转换


2)从CIE XYZ空间到LMS空间的转换


通过1、2可以得到RGB空间到LMS空间的转换


       由于数据在LMS空间比较分散,所以进一步将其转换到以10为底的对数空间,这样不仅使数据分布更加聚敛,而且符号人类对于颜色感觉的心理物理学研究结果。


3)从LMS空间到lαβ空间的转换

这一变换是基于对数据的主成分分析(PCA,Principal ComponentAnalysis)得到的,其中l为第一主成分,α为第二主成分,β为第三主成分。


经过这三个步骤就完成了从RGB空间到lαβ空间的转换。

 

色彩空间的逆转换

当图像在lαβ空间进行处理之后,为了显示处理的结果,需要把图像转换到RGB空间,具体步骤为:

1)从lαβ空间到LMS对数空间的转换


2)从LMS对数空间到LMS线性空间的转换


3)从LMS空间到RGB空间的转换


 添加上C/C++代码

  1. void RgbToLab(BYTE R,BYTE G,BYTE B,double& l,double& a,double& b)  
  2. {  
  3.     double L = 0.3811*R + 0.5783*G + 0.0402*B;  
  4.     double M = 0.1967*R + 0.7244*G + 0.0782*B;  
  5.     double S = 0.0241*R + 0.1288*G + 0.8444*B;  
  6.   
  7.     //若RGB值均为0,则LMS为0,防止数学错误log0  
  8.     if(L!=0) L = log(L)/log(10);  
  9.     if(M!=0) M = log(M)/log(10);  
  10.     if(S!=0) S = log(S)/log(10);  
  11.   
  12.     l = (L + M + S)/sqrt(3);  
  13.     a = (L + M - 2*S)/sqrt(6);  
  14.     b = (L - M)/sqrt(2);  
  15.   
  16. }  

  1. void LabToRgb(double l,double a,double b,BYTE& R,BYTE& G,BYTE& B)  
  2. {  
  3.     l /= sqrt(3);  
  4.     a /= sqrt(6);   
  5.     b /= sqrt(2);  
  6.     double L = l + a + b;  
  7.     double M = l + a - b;  
  8.     double S = l - 2*a;  
  9.   
  10.     L = pow(10,L);  
  11.     M = pow(10,M);  
  12.     S = pow(10,S);  
  13.   
  14.     double dR = 4.4679*L - 3.5873*M + 0.1193*S;  
  15.     double dG = -1.2186*L + 2.3809*M - 0.1624*S;  
  16.     double dB = 0.0497*L - 0.2439*M + 1.2045*S;  
  17.   
  18.     //防止溢出,若求得RGB值大于255则置为255,若小于0则置为0  
  19.     if (dR>255) R=255;  
  20.     else if (dR<0) R=0;  
  21.     else R = BYTE(dR);  
  22.   
  23.     if (dG>255) G=255;  
  24.     else if (dG<0) G=0;  
  25.     else G = BYTE(dG);  
  26.   
  27.     if (dB>255) B=255;  
  28.     else if (dB<0) B=0;  
  29.     else B = BYTE(dB);  
  30. }  
关于RGB色彩空间和Lab色彩空间 自学笔记 阅读详情

相关推荐

颜色迁移之二——Reinhard经典算法

接自上一篇“基础知识”,本文里的色彩空间的转换不再赘述。。。         Reinhard等人根据lαβ颜色空间中各通道互相不关联的特点,提出了一组适用于各颜色分量的色彩迁移公式,较好的实现了彩色图像之间的色彩迁移。基本思想就是根据着色图像的统计分析确定一个线性变换,使得目标图像和源图像在lαβ空间中具有同样的均值和方差。 因此需要计算两幅图像的均值和标准方差。假设l、a、b分别是源图像l

Sin_Geek成长の迹 1万+

颜色迁移之一——基础知识(色彩空间及其转换)

因为我的本科毕业论文题目跟颜色迁移有关,我以后我会慢慢总结颜色迁移方面的算法与技术~~~~首先介绍下什么事颜色迁移。        颜色迁移是计算机视觉领域的一个很有趣的问题,它实际上要我们解决这么一个问题:基于图像A和图像B,合成一幅新的图像C,使其同时具有A的颜色和B的形状等遗传信息,即图像B在不改变它自身所表达的形状信息的情况下,学习了图像A的整体颜色基调,我们把这个过程称为图像的颜色迁移

Sin_Geek成长の迹 2万+

opencv颜色识别

利用以上方法可以对颜色进行识别,并实现颜色的分割。边缘检测是图像处理中最基础的算法,可以对图像中的物体进行分割,并且在对边缘进行检测的过程中,能够利用边缘检测的结果对图像进行二值化处理。颜色迁移分为两种类型,一种是基于颜色的颜色迁移,另一种是基于颜色空间转换的颜色迁移。1、颜色匹配:将图片中的各个像素点按照一定的方式进行匹配,其中有两种匹配方式,一种是通过颜色相似度来进行匹配,另一种是通过边缘检测来进行匹配。opencv中的颜色识别模块能够对图像中的颜色进行识别,并且在识别结果中能够显示出具体的颜色。

花生日记 8864

颜色迁移(reinhard VS welsh)

reinhard算法:Color Transfer between Images,作者Erik Reinhard welsh算法:Transferring Color to Greyscale Images,作者Tomihisa Welsh 应用场景: 人像图换肤色,风景图颜色迁移 出发点: RGB三通道有很强的关联性,而做颜色的改变同时恰当地改变三通道比较困难。 需要寻找三通道互不相关的也就是正交的颜色空间,作者想到了Ruderman等人提出的lαβ颜色空间。三个轴向正交意味...

年轻即出发, 6852

【Unity URP】管线升级:解决色彩空间变化带来的问题

记录转管线过程中遇到的一些由于色彩空间变化带来的一些显示问题。

qq_41835314的博客 3243

OpenCV4学习笔记(36)——基于均值迁移(MeanShift)算法和直方图反向投影的目标移动跟踪

在前几篇博文中,整理记录了一些对于视频流进行运动物体检测的方法,例如稀疏光流跟踪、稠密光流跟踪、帧差法等等,但是这些方法都是面向视频中所有物体而言的。而有时候,我们需要的是对某一个特定目标进行跟踪分析,所以这就需要针对目标的移动跟踪算法来实现这种需求。 这就是今天要整理的笔记内容:基于均值迁移(MeanShift)算法的目标移动跟踪。 在之前的博文《OpenCV4学习笔记(15)——图像边缘保留滤...

邱小兵的博客 1761

welsh颜色迁移算法实现过程

最近研究了一下color transfer的相关内容,自从实现了Reinhard经典颜色迁移算法后,便思考着能编写代码实现第二个经典算法:welsh算法,本人在编写调试大概一周才终于实现了出来。 welsh算法基本思想: 1.将目标图像和样本图像转换到Lab空间; 2.对目标图像和样本图像进行亮度重映射,保证后续的像素匹配正确进行; 3.从参考图片中选择一部分样本点,将这些样本点的

帝欣飘逸的博客 4633

剪影照片风格迁移方法

本文提出一种自动化的剪影照片风格迁移方法,通过天空分割与颜色迁移技术,将普通照片转换为具有艺术感的剪影图像。该方法结合关键区域提取与改进的OneCut算法实现精准分割,并采用基于环境色的自适应前景校正,生成自然且视觉协调的结果。

Black的专栏 829

图像彩色化方法(基于颜色传递、颜色扩展)

图像彩色化的研究主要有基于参考图像的颜色传递方法和基于人工着色的局部颜色扩展方法。一般来说,基于参考图像的颜色传递方法首要采取图像处理方法,例如:借助图像融合技术的红外图像彩色化、基于图像分割技术、图像分类技术的图像彩色化方法;基于人工着色的局部颜色扩展方法主要依赖于偏微分方程将彩色化问题转化为最优解问题。 基于颜色传递、颜色扩展 1)基于颜色转移的彩色化 图像色彩迁移是以一幅彩色图像作...

OpenSceneGraph的博客 5778

动态掩码语言模型(MLM)优化策略:效率提升与最新技术实践

本文深入探讨了动态掩码语言模型(MLM)的优化策略与技术实践,涵盖核心原理、效率优化及2025年最新突破。重点解析了动态掩码在提升模型性能中的关键作用,包括工程实现、掩码策略演进及混合专家动态掩码等创新技术,为自然语言处理领域的研究与应用提供实用指南。

vscode5coder的博客 220

MiniMaxH3+ComfyUI本地部署:一键整合包、工作流搭建与报错排查

本地部署视频生成模型时,模型权重、推理框架与自定义节点的匹配是核心挑战。MiniMaxH3作为多模态生成模型,通常依赖ComfyUI这类节点式工作流引擎实现可视化调度。一键整合包将Python环境、PyTorch算子、模型文件预置封装,大幅降低部署门槛,并通过半精度加载、显存碎片回收等机制优化推理速度。在文生视频、图生视频与批量生成场景中,清晰的节点链路和参数调优能力直接影响输出质量与显存占用。针对模型不识别、节点执行失败等高频问题,系统排查命令行日志与模型目录可快速定位故障。本文以MiniMaxH3整合包

weixin_29047545的博客 581

地图图像迁移研究与实现

研究了几种简单的图像风格与色彩迁移,并基于Python语言实现

qq_45957458的博客 3939

Win10内网离线安装NET3.5,绝对成功,保姆级

今天工作安装工具软件套装3.5组件!也在csdn上找了很多方法躺了很多坑,我总结如下! 其实就一条,什么版本的win10装什么版本的net3.5 我的电脑是1909版本,用2004H2的镜像是没有用的,dism组件报错8024402C 所以我下载1909镜像挂在虚拟光驱 ,管理员模式下powershell dism.exe /online /enable-feature /featurename:NetFX3 /Source:E:\sources\sxs dism.exe /online /en..

唉呀妈呀脑瓜疼 6万+

Python实现快速的风格迁移

目录一、什么是风格迁移?二、风格迁移算法实现步骤三、风格迁徙算法代码实现四、代码运行流程五、风格迁徙算法效果展示与分析六、思维扩展参考资料注意事项 一、什么是风格迁移?   所谓的迁移比较简单,即输入包含两个图片,一张source图片,一张target图片,风格迁移的目的是将source图片上面的色彩迁移到target图像中,从而形成一张新的图片,它在现实场景中具有较多的应用,比较经典的应用是手机...

WZZ18191171661的博客 5732

关于VS2019调试问题:进程已退出,代码为-1073741819(已解决)

关于VS2019调试问题:进程已退出,代码为-1073741819(已解决) 详情:上一篇发了这个进程问题,在我翻阅了《c语言程序设计第四版》和《算法与数据结构》两本书对照代码加上调试终于找到了解决方法 解决方法: 首先找到项目的源文件右击找到属性 然后选择从生成中排除选择是! 重新生成解决方案,发现代码问题: 之前的代码: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include &lt

qq_51553982的博客 1万+

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6550

色彩空间的个人理解

色彩空间,顾名思义,是由色彩组成的空间。在此写下我个人对色彩空间的基本看法。 初次接触到色彩空间,是在自学PS时期,为了把女神P的美美的~ 然后就看见了这个: 用画笔进行进一步美颜的时候,又看见了这个: 震惊!我该怎么从这么多颜色里选到想要的那个TAT 如何准确的找到我们想要的颜色?人们把不同的颜色按照不同的组织方式放在一起,组成了不同的色彩空间。每一种色彩都能在色彩空...

weixin_43192572的博客 1774

从寄存器到驱动:深入解读RFSoC RF-ADC阈值与校准API的底层逻辑

本文深入解析Xilinx RFSoC中RF-ADC的阈值检测与校准API的底层逻辑,涵盖寄存器映射、驱动实现及Gen3增强功能。通过详细代码示例和寄存器操作流程,揭示如何精准控制信号阈值检测与校准时序,提升系统稳定性与性能。特别探讨RF数据转换器在无线通信和雷达信号处理中的关键应用。

weixin_30552811的博客 687

【OpenCV3图像处理】颜色空间转换(一)颜色空间分类总结

颜色空间  近100多年来,为了满足不同用途的需要,人们开发了许多不同名称的颜色空间,“可以说表示颜色空间的数目是无穷的”,但是,现有的颜色空间还没有一个完全符合人的视觉感知特性、颜色本身的物理特性或发光物体或反光物体的特性。人们还在继续开发各种新的颜色空间。 不同的颜色空间有着不同的特性,使用在不同的领域。因此在实际中需要进行不同颜色空间的转换。不同颜色空间的转换可以是直接转换,也可以通过与...

把岁月化成歌 留在博客 2万+

15 媒体存储的封装3

CMediaDisk类真正实现了录像文件的存储、查询和点播。存储录像文件时,需要满足以下的几个基本需求:1、异常断电不能丢失数据。2、录像既支持普通文件的查询方式,也支持时间轴的查询方式。3、修改设备时间时,不能够丢失已有录像和数据。向后修改时间时,如果当前时间已有录像,则不覆盖老数据;直到有未录像的时间段时,才再次写入新数据。4、支持删除媒体文件,也支持按时间段删除。5、支持标记录像文件、抓拍文件,也支持按时间段标记。6、支持自动覆盖最老的文件。7、支持多个设备、多路视频的录像存储。

hope_wisdom的技术博客 1122

UCIE Specification详解(五)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1225

An Overview of Color Transfer and Style Transfer for Images and Videos

将目标图像或视频的外观迁移到源图像或视频上将源图像(如一幅绘画)的 “风格” 迁移到目标图像或视频上,使其具有与源图像相同的风格。

Epiphany_yy的博客 1987

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

嵌入式人工智能应用-第三章 opencv操作2 之图像空间和格式

色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。所以人类对于色彩的认识经历了极为漫长的过程,直到近代才逐步完善起来,但至今,人类仍不能说对色彩完全了解并准确表述了,许多概念不是那么容易理解。“色彩空间”一词源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。我们经常用到的色彩空间主要有 RGB、CMYK、Lab 等。

huanghongqi11的博客 1231

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

基于OpenCV的均值迁移法跟踪检测目标

基于OpenCV的均值迁移法实现目标检测

weixin_51182789的博客 263

MATLAB图像处理实战:从色彩空间到风格滤镜的工程实现

图像处理作为计算机视觉的基础技术,其核心在于对像素数据的数学变换与空间映射。通过色彩空间转换、直方图匹配、通道混合等原理,工程师能够实现对图像视觉风格的精准控制,这一技术价值在数字媒体、创意设计等领域尤为突出。在具体应用场景中,例如为图片添加特定文化符号的视觉滤镜,就需要将感性的艺术风格转化为可量化的处理参数。本文以MATLAB为工具,详细演示了如何通过调整RGB通道、应用Gamma校正以及叠加渐变图层,实现复古、暗黑、梦幻等多种风格滤镜,并构建交互式GUI。其中涉及的直方图匹配和色彩平衡技术,正是实现高质

weixin_29973493的博客 339
上一篇: leetcode 实现两个int整数相除(不用乘除,取余)
下一篇: extern "C"的用法解析
SHForWork
博客等级 码龄12年 11粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值