C计算CIELAB、CIELUV均匀颜色空间中两种颜色的色差

** 如何利用C语言计算两种颜色在CIELAB、CIELUV的总色差?例如:已知两颜色样品的色度值为:Y1=76.79,x1=0.4480, y1=0.3478;Y2=75.67,x2=0.4621,y2=0.4090 试按照2°视场和D50光源计算两颜色的总色差 和(如果需要计算其他颜色的色差,只需要修改代码9、10行的初始值)直接给大家上源代码(vs2017):**

#include<stdio.h>
#include<math.h>
double Luv_vv(double X, double Y, double Z);//计算u’
double Luv_uu(double X, double Y, double Z);//计算v’
double cijizhiX(double x, double y, double Y);//计算X
double cijizhiZ(double z, double y, double Y);//计算Y
int main()
{double Y1 = 76.79, X1 = 0, Z1 = 0, x1 = 0.4480, y1 = 0.3478, z1 = 0, L1, a1, b1, uu1, vv1, u1, v1;//颜色1初始值double Y2 = 75.67, X2 = 0, Z2 = 0, x2 = 0.4621, y2 = 0.4090, z2 = 0, L2, a2, b2, uu2, vv2, u2, v2;//颜色2初始值double Y0 = 100, X0 = 96.42, Z0 = 82.51, uu0 = 0.20916, vv0 = 0.48808;//D50初始值double Eab = 0, Euv = 0;/*******************基本量的计算*****************/z1 = 1 - x1 - y1;z2 = 1 - x2 - y2;X1 = cijizhiX(x1, y1, Y1); Z1 = cijizhiZ(z1, y1, Y1);X2 = cijizhiX(x2, y2, Y2); Z2 = cijizhiZ(z2, y2, Y2);uu1 = Luv_uu(X1, Y1, Z1); uu2 = Luv_uu(X2, Y2, Z2);vv1 = Luv_vv(X1, Y1, Z1); vv2 = Luv_vv(X2, Y2, Z2);printf("X1=%f,Y1=%f,Z1=%f,X2=%f,Y2=%f,Z2=%f\n\n", X1, Y1, Z1, X2, Y2, Z2);/***********************颜色1************************/L1 = 116 * pow(Y1 / Y0, 1.0 / 3) - 16;a1 = 500 * (pow(X1 / X0, 1.0 / 3) - pow(Y1 / Y0, 1.0 / 3));b1 = 200 * (pow(Y1 / Y0, 1.0 / 3) - pow(Z1 / Z0, 1.0 / 3));u1 = 13 * L1*(uu1 - uu0);v1 = 13 * L1*(vv1 - vv0);printf("L1=%f,a1=%f,b1=%f,u1=%f,v1=%f\n\n", L1, a1, b1, u1, v1);/********************颜色2*********************/L2 = 116 * pow(Y2 / Y0, 1.0 / 3) - 16;a2 = 500 * (pow(X2 / X0, 1.0 / 3) - pow(Y2 / Y0, 1.0 / 3));b2 = 200 * (pow(Y2 / Y0, 1.0 / 3) - pow(Z2 / Z0, 1.0 / 3));u2 = 13 * L2*(uu2 - uu0);v2 = 13 * L2*(vv2 - vv0);printf("L2=%f,a2=%f,b2=%f,u2=%f,v2=%f\n\n", L2, a2, b2, u2, v2);/*********************总色差*************************/Eab = sqrt(pow(L1 - L2, 2) + pow(a1 - a2, 2) + pow(b1 - b2, 2));Euv = sqrt(pow(L1 - L2, 2) + pow(u1 - u2, 2) + pow(v1 - v2, 2));printf("总色差Eab=%lf\n总色差Euv=%lf\n\n", Eab, Euv);return 0;
}
double cijizhiX(double x,double y,double Y)
{return x * Y / y;
}
double cijizhiZ(double z, double y, double Y)
{return z * Y / y;
}
double Luv_uu(double X, double Y, double Z)//计算u'
{double uu;return uu = 4 * X / (X + 15 * Y + 3 * Z);
}
double Luv_vv(double X, double Y, double Z)//计算v'
{double vv;return vv = 9 * Y / (X + 15 * Y + 3 * Z)

运行结果如下:(结果正确)

C计算CIELAB、CIELUV均匀颜色空间中两种颜色的色差相关推荐

  1. cieluv_用C语言计算CIELAB、CIELUV均匀颜色空间中两种颜色的色差

    例如:已知两颜色样品的色度值为:Y1=76.79,x1=0.4480,y1=0.3478:Y2=75.67,x2=0.4621,y2=0.4090试按照2°视场和D50光源计算两颜色的总色差和 (如果 ...

  2. php中颜色的索引值,计算PHP中两种颜色之间的平均颜色,使用索引号作为参考值...

    我们假设为了讨论的目的,每个颜色都有一个"值".那么,你想要的就足够简单: $index = 0.2; $val1 = get_value_of_color($color1); $ ...

  3. unity3d软阴影和硬阴影的原理_Unity3D中两种默认阴影的实现

    Unity3D中两种阴影的实现 传统的ShadowMap ShadowMap说起来十分简单,把摄像机和光源的位置重叠,那么场景中该光源的阴影区域就是那些摄像机看不到的地方,主要应用在前向渲染路径中. ...

  4. python列表去重函数_对python中两种列表元素去重函数性能的比较方法

    测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...

  5. R中两种常用并行方法——2. snowfall

    上一篇博客(R中两种常用并行方法--1. parallel)中已经介绍了R中常见的一种并行包:parallel,其有着简单便捷等优势,其实缺点也是非常明显,就是很不稳定.很多时候我们将大量的计算任务挂 ...

  6. matlab 遍历每个像素点,Mat中两种像素遍历方法比较

    小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...

  7. 蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

    蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动. 请写一个程序,计算你总共能够到达多少块黑色的瓷砖. 输入格式 第一行是两个整数 ...

  8. 函数指针--Nginx和Redis中两种回调函数写法

    1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...

  9. spring mvc中两种异常的处理手法

    spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...

最新文章

  1. oracle database 9i/10g/11g 编程艺术 源代码下载
  2. 《Cisco IOS XR技术精要》一4.4 理解二级提交模型
  3. Python环境下的数据库编程
  4. mysql 不知道这样的主机_求救!!连接本机数据库时出现不知道这样的主机
  5. oracle11管理员连接数据库,1.运行 cmd.exe;2.输入 sqlplus / as sysdba,以系统管理员(sysdba)身份连接数据库,进行数据库管理操作。3.连接成功后执...
  6. sql注入攻击_让你彻底明白sql注入攻击
  7. 打印服务器打印文件,通过打印服务器远程打印文件
  8. 关于bacula网络备份软件的安装以及配置1
  9. 【Spring学习笔记-0】Spring开发所需要的核心jar包
  10. [原创]Jenkins持续集成工具介绍
  11. Java面试----2018年最新Struts2面试题
  12. LabVIEW基于机器视觉的实验室设备管理系统(1)
  13. 弹力球C语言课程设计,弹力球游戏c语言代码
  14. 2020洪灾地图_卫星地图看洪灾:“告急”的鄱阳湖发生了什么?
  15. Mybatis注解@Results、@Result、@ResultMap
  16. 如何写出真正触动人心的广告文案(二)
  17. 【慧河网络安全组】Web基础和http协议培训题_1
  18. HarmonyOS APP开发入门3——组件(二 Text组件)
  19. 在线生鲜订购配送系统,生鲜订购系统 生鲜配送系统 前端+后台 Android源码+SSH后台管理系统+MySQL数据库
  20. C语言报告书学生信息管理系统,C语言实训 学生信息管理系统

热门文章

  1. 负载均衡算法有哪些?
  2. 软件测试如何入门学习?自学软件测试入门经验分享
  3. UE4-(场景)后期盒子(PostProcessVolume)之Exposure自动曝光
  4. 计算机十二种常用密码破解法
  5. python2.7中文编码_python2.7
  6. java swing mysql项目_java swing mysql 实现的家庭收支管理系统项目源码
  7. 【无标题】win11打不开微软商店Microsoft Store
  8. OPOS系统正式启动
  9. 软考A计划-试题模拟含答案解析-卷九
  10. openGauss理事会筹备会圆满成功