VC编程实现色彩空间XYZ与LAB相互转换[通俗易懂]

VC编程实现色彩空间XYZ与LAB相互转换[通俗易懂]VC编程实现色彩空间XYZ与LAB相互转换文章VC编程实现色彩空间RGB与XYZ相互转换已经介绍了RGB与XYZ色彩空间的转换算法以及实际的VC源代码,在上一篇文章已经提到,在PhotoShop中经常使用有RGB(红色、绿色、蓝色)、CMYK(青色、洋红、黄色、黑色)、HSB(色相、饱和度、亮度)和Lab4中色彩空间。我们用到XYZ色彩空间的目的是进行RGB与LAB色彩空

大家好,又见面了,我是你们的朋友全栈君。

VC编程实现色彩空间XYZ与LAB相互转换

文章VC编程实现色彩空间RGB与XYZ相互转换已经介绍了RGB与XYZ色彩空间的转换算法以及实际的VC源代码,在上一篇文章已经提到,在PhotoShop中经常使用有RGB(红色、绿色、蓝色)、CMYK(青色、洋红、黄 色、黑色)、HSB(色相、饱和度、亮度)和Lab4中色彩空间。我们用到XYZ色彩空间的目的是进行RGB与LAB色彩空间转换的中介,承接前文,本文将介绍XYZ与LAB色彩空间之间的转换方法,并列出具体的算法公式和VC源代码。

1. 色彩空间XYZ转LAB(CIE L*a*B*)

1.1. 理论公式

XYZ转LAB的算法公式

XYZ色彩空间转LAB色彩空间的公式
XYZ色彩空间转LAB色彩空间公式


1.2. VC实例代码:

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//REF_X 、REF_Y 、REF_Z 是参照白点CIE XYZ三色刺激值
static
double
REF_X=96.4221;        
static
double
REF_Y=100.000;
static
double
REF_Z=82.5221;
// 类似Gamma函数的校正函数,XYZ转LAB时用
double
CColorUtility::revise(
double
x){
    
if
(x>
pow
(6.0/29.0,3))
        
x=
pow
(x,1.0/3.0);
    
else
        
x=(1.0/3.0)*(29.0/6.0)*x+(16.0/116.0);
    
return
x;
}
bool
CColorUtility::_cie_xyz2lab(
const
double
xyz[3],
double
(&lab)[3]){
    
double
x=xyz[0]/REF_X;
    
double
y=xyz[1]/REF_Y;
    
double
z=xyz[2]/REF_Z;
 
    
x=revise(x);
    
y=revise(y);
    
z=revise(z);
 
    
lab[0]=(116.0*y)-16.0;
    
lab[1]=500.0*(x-y);
    
lab[2]=200.0*(y-z);
     
    
return
true
;
}

到此,便使用VC编程实现了色彩空间XYZ到LAB的转换,下面我们来看看其逆变换,即LAB转XYZ的具体理论和实现:

2.色彩空间LAB(CIE L*a*B*)转XYZ

2.1. 理论公式

色彩空间LAB转XYZ理论计算公式
其中:色彩空间LAB转XYZ计算公式


2.2. VC实例代码:

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 类似Gamma函数的校正函数的反函数,LAB转XYZ时用
double
CColorUtility::r_revise(
double
x){
    
if
(x>6.0/29.0)
        
x=
pow
(x,3.0);
    
else
        
x=(x-16.0/116.0)*3*
pow
(6.0/29.0,2);
    
return
x;
}
bool
CColorUtility::_cie_lab2xyz(
const
double
lab[3],
double
(&xyz)[3]){
    
double
y=(lab[0]+16.0)/116.0;
    
double
x=y+lab[1]/500.0;
    
double
z=y-lab[2]/200.0;
 
    
y=r_revise(y);
    
x=r_revise(x);
    
z=r_revise(z);
 
    
xyz[0]=x*REF_X;
    
xyz[1]=y*REF_Y;
    
xyz[2]=z*REF_Z;
 
    
return
true
;
}

REF_X 、REF_Y 、REF_Z 是参照白点CIE XYZ三色刺激值,与色彩空间XYZ转LAB的取值一样。到此,便使用VC编程实现了色彩空间LAB到XYZ的转换,本文介绍了LAB色彩空间与XYZ色彩空间的正变换和逆变换,结合前文,便实现了RGB->XYZ->LAB色彩空间的变换,同样也可以实现LAB->XYZ->RGB逆变换。为方便读者理解,给出了具体的计 算公式和实际源码。VC图形图像处理编程博大精深,有任何建议欢迎留言讨论,后续文章我们将继续介绍VC编程实现其它色彩空间之间的相互转换。

本系列程序均在Win7+VS2008测试通过,并且结果与PS3的运算结果一致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151193.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux的vi命令详解_centos7 vi命令

    linux的vi命令详解_centos7 vi命令Linux命令-vi命令  vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器.由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器.。1.语法:vi[参数][文件名称]…2.功能:  编辑文件。3.参数:n打印最近的n条历史命令。-N显示历史记录中最近的N个记录。-c清空当前历史命令。-a将目前新增的历史

    2022年9月22日
    3
  • scrapy安装步骤_scrapy安装失败

    scrapy安装步骤_scrapy安装失败scrapy安装指南

    2022年9月18日
    2
  • Xmind8 Pro 最新版 激活成功教程教程(序列号|激活成功教程文件)

    Xmind8 Pro 最新版 激活成功教程教程(序列号|激活成功教程文件)一 下载 XMindCrack jar 文件 传的貌似被屏蔽了 如果需要请留下邮箱 抽空会发给你 百度云 https pan baidu com s 1x5Y4FFG61MT 里面激活成功教程文件 安装包都给了 但 Xmind 安装包不一定是最新的 有需求的可自行去官网下载 https www xmind cn xmind8 pro 二 找到 Xmind 安装根目录

    2025年9月20日
    2
  • Win7如何简单的关闭445端口及445端口入侵详解

    Win7如何简单的关闭445端口及445端口入侵详解最近永恒之蓝病毒攻击了很多教育网的同学,下面我们就来看一下如何关闭445端口根据网络安全机构通报,这是不法分子利用NSA黑客武器库泄漏的“永恒之蓝”发起的病毒攻击事件。“永恒之蓝”会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。由于以前国内多次爆发利用445端口传播的蠕虫,运

    2022年6月15日
    127
  • jvisualvm功能演示

    jvisualvm功能演示1 启动在命令行输入 jvisualvm 如果 jdk 安装正确的话 6 x 以上版本 就会看到如下的一个窗口 看起来相当简洁 不像是很强大的样子 2 运行一个 Java 程序 IncTestN jvisualvm 会自动找到它 3 右键点击它 打开 可以看到它有很多标签页 可以让我们监测程序的各种数据 默认没有这么多 我其实安装了一些 jvisualvm 的插件 4 查看 j

    2025年12月2日
    2
  • 虚拟存储技术「建议收藏」

    虚拟存储技术「建议收藏」一.实现内存扩充的技术:(1)覆盖技术:在程序运行中,在不同时刻把同一个存储区分配给不同程序段和数据段,实现存储区共享。适用于连续存储(单一连续区分配,分区)如图BDG共享一个存储区(三个进程不同时发生),CEFH同理(2)交换技术(对换技术):1.定义:将内存中某进程的的程序和数据(全部或部分)写入外存的交换区,从而腾出内存空间给其他进程使用。2.相关涉及知识

    2022年9月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号