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
#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均匀颜色空间中两种颜色的色差相关推荐
- C计算CIELAB、CIELUV均匀颜色空间中两种颜色的色差
C计算CIELAB.CIELUV均匀颜色空间中两种颜色的色差 ** 如何利用C语言计算两种颜色在CIELAB.CIELUV的总色差?例如:已知两颜色样品的色度值为:Y1=76.79,x1=0.4480 ...
- php中颜色的索引值,计算PHP中两种颜色之间的平均颜色,使用索引号作为参考值...
我们假设为了讨论的目的,每个颜色都有一个"值".那么,你想要的就足够简单: $index = 0.2; $val1 = get_value_of_color($color1); $ ...
- 蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动. 请写一个程序,计算你总共能够到达多少块黑色的瓷砖. 输入格式 第一行是两个整数 ...
- keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法
前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...
- 步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...
引 言 步进电机位移与输入脉冲信号数相对应,精度高.响应特性好.可靠性高.速度可在较宽范围内平滑调节,是控制系统中一种重要的自动化执行元件. SCM(Single Chip Microcomputer ...
- 易语言链接mdb和accdb数据库的两种方法
易语言链接Access数据库经常会遇到链接错误,其实主要是看你的电脑 Microsoft Access的版本,也就是要看看你数据库文件的后缀是 .mdb还是.accdb PS: access2003以 ...
- Java计算两点间经纬度距离(两种方式)
反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...
- C语言四川麻将算法,四川麻将中番种是如何计算的详细解析
同城游中的四川麻将里都是有番数的,不过对新手玩家而言,计番是个头疼的问题,那么麻将中有都哪些番数呢?现在赶紧来看看四川麻将番种是如何计算的详细解析吧. 四川麻将中基础牌型(格)与基本番数 平胡:普通的 ...
- 经纬度计算距离公式 java_Java计算两点间经纬度距离(两种方式)
反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...
最新文章
- 得到 yyyy/mm/dd 格式时间
- WCF热带鱼书学习手记 - Service Contract Overload
- LeetCode 第 198 场周赛(434/5778,前7.51%)
- 论文浅尝 | GEOM-GCN: Geometric Graph Convolutional Networks
- Ambari系统架构
- halcon区域腐蚀膨胀算子_Halcon 形态学膨胀腐蚀应用举例
- 5. DICOM图像层级分类-DCMTK-压缩图像PixelData读取
- Unity发布WebGL遇到的问题
- 2019年前端开发工作总结
- httpclient.execute长时间停滞问题
- Java绩效评语_导师评语(转) - Java, Only Java! - BlogJava
- 小米10如何安装google play商店
- 大数据分析项目实例:Hadoop数据分析应用场景
- 从根上理解高性能、高并发(七):深入操作系统,一文读懂进程、线程、协程
- 现在开始学程序还不晚吧
- OTA (空中下载技术)
- 宠物诊所java项目_JavaWeb项目-宠物诊所管理系统
- 1-Java的诞生和发展
- 用74ls90及少量器件制作电子时钟
- PHP防伪防串货溯源系统源码