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

(如果需要计算其他颜色的色差,只需要修改代码9、10行的初始值)

直接给大家上源代码(vs2017):

运行结果:运行结果已经确定正确

源代码:

#include

#include

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);

}

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

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

    C计算CIELAB.CIELUV均匀颜色空间中两种颜色的色差 ** 如何利用C语言计算两种颜色在CIELAB.CIELUV的总色差?例如:已知两颜色样品的色度值为:Y1=76.79,x1=0.4480 ...

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

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

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

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

  4. keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

    前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...

  5. 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...

    引 言 步进电机位移与输入脉冲信号数相对应,精度高.响应特性好.可靠性高.速度可在较宽范围内平滑调节,是控制系统中一种重要的自动化执行元件. SCM(Single Chip Microcomputer ...

  6. 易语言链接mdb和accdb数据库的两种方法

    易语言链接Access数据库经常会遇到链接错误,其实主要是看你的电脑 Microsoft Access的版本,也就是要看看你数据库文件的后缀是 .mdb还是.accdb PS: access2003以 ...

  7. Java计算两点间经纬度距离(两种方式)

    反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...

  8. C语言四川麻将算法,四川麻将中番种是如何计算的详细解析

    同城游中的四川麻将里都是有番数的,不过对新手玩家而言,计番是个头疼的问题,那么麻将中有都哪些番数呢?现在赶紧来看看四川麻将番种是如何计算的详细解析吧. 四川麻将中基础牌型(格)与基本番数 平胡:普通的 ...

  9. 经纬度计算距离公式 java_Java计算两点间经纬度距离(两种方式)

    反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...

最新文章

  1. 得到 yyyy/mm/dd 格式时间
  2. WCF热带鱼书学习手记 - Service Contract Overload
  3. LeetCode 第 198 场周赛(434/5778,前7.51%)
  4. 论文浅尝 | GEOM-GCN: Geometric Graph Convolutional Networks
  5. Ambari系统架构
  6. halcon区域腐蚀膨胀算子_Halcon 形态学膨胀腐蚀应用举例
  7. 5. DICOM图像层级分类-DCMTK-压缩图像PixelData读取
  8. Unity发布WebGL遇到的问题
  9. 2019年前端开发工作总结
  10. httpclient.execute长时间停滞问题
  11. Java绩效评语_导师评语(转) - Java, Only Java! - BlogJava
  12. 小米10如何安装google play商店
  13. 大数据分析项目实例:Hadoop数据分析应用场景
  14. 从根上理解高性能、高并发(七):深入操作系统,一文读懂进程、线程、协程
  15. 现在开始学程序还不晚吧
  16. OTA (空中下载技术)
  17. 宠物诊所java项目_JavaWeb项目-宠物诊所管理系统
  18. 1-Java的诞生和发展
  19. 用74ls90及少量器件制作电子时钟
  20. PHP防伪防串货溯源系统源码

热门文章

  1. 你知道吗?CAD电子目录≠产品CAD库
  2. 计算机是怎样跑起来的(Ⅱ-2)连接电源、数据总线和地址总线
  3. 永磁同步电机转子位置估算专题——正交锁相环
  4. 详解ES6中的 let 和const
  5. 软考A计划-试题模拟含答案解析-卷五
  6. 显示器产品辐射发射(RE102)问题整改案例与关键技术仿真分析
  7. 机器学习——如何优化模型(上)
  8. jsp网页连接mysql数据库
  9. 办公网络设置代理服务器
  10. 微星性能测试软件,微星MSI Kombustor