文章目录

  • 计算公式
  • html源码
  • 运行结果

计算公式

[ W x W y W z ] = [ M ] [ R G B ] \begin{gather} \begin{bmatrix} W_x\\ W_y\\W_z \end{bmatrix}= \begin{bmatrix} M \end{bmatrix} \begin{bmatrix} R\\G\\B \end{bmatrix} \end{gather} ​Wx​Wy​Wz​​ ​=[M​] ​RGB​ ​​​
其中, W x = w x / w y , W y = w y / w y , W z = w z / w y , w x 、 w y 、 w z W_x = w_x/w_y,W_y = w_y/w_y,W_z = w_z/w_y,w_x、w_y、w_z Wx​=wx​/wy​,Wy​=wy​/wy​,Wz​=wz​/wy​,wx​、wy​、wz​为目标混色光色坐标, [ R G B ] \begin{bmatrix} R\\G\\B \end{bmatrix} ​RGB​ ​分别为红绿蓝对应的亮度配比,
[ M ] = [ X r X g X b Y r Y g Y b Z r Z g Z b ] \begin{gather} \begin{bmatrix} M \end{bmatrix}= \begin{bmatrix} X_r&X_g&X_b\\ Y_r&Y_g&Y_b\\ Z_r&Z_g&Z_b\\ \end{bmatrix} \end{gather} [M​]= ​Xr​Yr​Zr​​Xg​Yg​Zg​​Xb​Yb​Zb​​ ​​​
R x = r x / r y R y = 1 R z = ( 1 − r x − r y ) / r y G x = g x / g y G y = 1 G y = ( 1 − g x − g y ) / g y B x = b x / b y B y = 1 B z = ( 1 − b x − b y ) / b y \begin{gather} R_x= r_x/r_y \\ R_y= 1 \\ R_z = (1-r_x-r_y)/r_y\\ G_x= g_x/g_y \\ G_y= 1 \\ G_y = (1-g_x-g_y)/g_y\\ B_x = b_x/b_y \\ B_y = 1 \\ B_z = (1-b_x-b_y)/b_y\\ \end{gather} Rx​=rx​/ry​Ry​=1Rz​=(1−rx​−ry​)/ry​Gx​=gx​/gy​Gy​=1Gy​=(1−gx​−gy​)/gy​Bx​=bx​/by​By​=1Bz​=(1−bx​−by​)/by​​​
其中 ( r x , r y ) , ( g x , g y ) , ( b x , b y ) (r_x,r_y),(g_x,g_y),(b_x,b_y) (rx​,ry​),(gx​,gy​),(bx​,by​)分别为红绿蓝三色的单色色坐标。

html源码

<!DOCTYPE html>
<html>
<head><title>Calculation Matrix</title><link rel="stylesheet" href="style.css">
<script type="text/javascript" src="math.js"></script>
<script type="text/javascript">
function XYZ2RGB(){var x_r,y_r,x_g,y_g,x_b,y_b,X_W,Y_W,Z_W,White_CIEx,White_CIEy,White_CIEz;x_r = Number(document.getElementById("Red_CIEx").value);y_r = Number(document.getElementById("Red_CIEy").value);x_g = Number(document.getElementById("Green_CIEx").value);y_g = Number(document.getElementById("Green_CIEy").value);x_b = Number(document.getElementById("Blue_CIEx").value);y_b = Number(document.getElementById("Blue_CIEy").value);White_CIEx = document.getElementById("White_CIEx").value;White_CIEy = document.getElementById("White_CIEy").value;White_CIEz = 1-White_CIEx-White_CIEy;X_W = White_CIEx/White_CIEy;Y_W = White_CIEy/White_CIEy;Z_W = White_CIEz/White_CIEy;M = Creat_TranMatrix(x_r,y_r,x_g,y_g,x_b,y_b);const White_XYZ = math.matrix([X_W, Y_W, Z_W]);var RGB_ratio = math.matrix();RGB_ratio = math.multiply(M,White_XYZ);const RGB_ratio_array = RGB_ratio.valueOf();document.getElementById('Red').value=RGB_ratio_array[0].toFixed(4);document.getElementById('Green').value=RGB_ratio_array[1].toFixed(4);document.getElementById('Blue').value=RGB_ratio_array[2].toFixed(4);
}
function Creat_TranMatrix(x_r,y_r,x_g,y_g,x_b,y_b){X_r = x_r/y_r;Y_r = 1;Z_r = (1-x_r-y_r)/y_r;X_g = x_g/y_g;Y_g = 1;Z_g = (1-x_g-y_g)/y_g;X_b = x_b/y_b;Y_b = 1;Z_b = (1-x_b-y_b)/y_b;const X_rgb = math.matrix([[X_r, X_g, X_b], [Y_r, Y_g, Y_b],[Z_r, Z_g, Z_b]]);return math.inv(X_rgb);
}
</script>
</head>
<body><!-- 显示结果信息 --><div id = "ResultTable"><table align = "left" border = "1" cellpadding = "20"><tr>   <th>Color</th><th>CIEx</th><th>CIEy</th><th>ratio</th></tr><tr> <td>White</td><td><input id = "White_CIEx" border:none type = "TEXT" value = "0.305"/></td><td><input id = "White_CIEy" border:none type = "TEXT" value = "0.310"/></td><td>-</td></tr><tr>   <td>Red</td>  <td><input id = "Red_CIEx" border:none type = "TEXT" value = "0.64"/></td><td><input id = "Red_CIEy" border:none type = "TEXT" value = "0.33"/></td><td><input id = "Red" border:none type = "TEXT" value = "0.42"/></td></tr><tr>   <td>Green</td><td><input id = "Green_CIEx" border:none type = "TEXT" value = "0.30"/></td><td><input id = "Green_CIEy" border:none type = "TEXT" value = "0.6"/></td> <td><input id = "Green" border:none type = "TEXT" value = "0.36"/></td></tr><tr> <td>Blue</td> <td><input id = "Blue_CIEx" border:none type = "TEXT" value = "0.15"/></td><td><input id = "Blue_CIEy" border:none type = "TEXT" value = "0.08"/></td><td><input id = "Blue" border:none type = "TEXT" value = "0.22"/></td></tr></table></div><div><ul><li onclick="XYZ2RGB()"><a href="#">XYZ2RGB</a></li></ul></div>
</body>
</html>

运行结果

屏幕色彩(一)-已知混色光色点求配色比相关推荐

  1. 转 已知两点坐标和半径求圆心坐标程序C++

    数学思想:利用圆方程和直线方程 已知两点坐标和半径求圆心坐标程序 #include <iostream> #include <fstream> #include <cma ...

  2. python求平行四边形面积_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

  3. 天文观测理论——已知像素大小、焦距,求像素分辨率

    一.已知像素大小.焦距,求像素分辨率 1. 计算 像素分辨率为 Pix, 单位:角秒/像素 像素大小为 d2d^2d2, 单位:平方毫米 焦距为 fff, 单位:毫米 总像素为 rerere, 单位: ...

  4. 【目标检测】已知top, left, bottom, right 求 xmin,ymin,xmax,ymax

    前段时间在项目实践过程中遇到xmin,ymin,width,height 和 xmin,ymin,xmax,ymax相互转换的问题,请看https://blog.csdn.net/AugustMe/a ...

  5. JAVA已知圆心经纬度和半径求圆周点的经纬度

    JAVA已知圆心经纬度和半径求圆周点的经纬度 项目中遇到一个需求,需要根据传入的圆心经纬度和半径参数获得圆周点的经纬度,在网上查询了很多没有找到能用的算法,从GPT中获取到了一个简洁的用java实现的 ...

  6. 已知随机变量X的协方差矩阵求去X的特征值 特征向量 PCA投影矩阵

    已知随机变量X的协方差矩阵求去X的特征值 特征向量 PCA投影矩阵 相关的知识都忘记了,去查的时候没有耐心看别人长篇大论讲解,就只简单记录了一下如果从协方差矩阵来计算特征值和特征向量. 定义:1.特征 ...

  7. 已知三角形三边长求面积java_已知三角形三点坐标求三角形面积.java

    已知三角形三点坐标求三角形面积 主程序代码如下: import java.util.*; public class Tringle { public static void main(String[] ...

  8. js 已知角度和斜边,求直角边

    //已知角度和斜边,求直角边 function hypotenuse(long,angle){//获得弧度var radian = 2*Math.PI/360*angle;return {a:Math ...

  9. python写的平行四边形_python 已知平行四边形三个点,求第四个点的案例

    我就废话不多说了,大家还是直接看代码吧! import numpy as np #已知平行四边形三个点,求第四个点 #计算两点之间的距离 def CalcEuclideanDistance(point ...

最新文章

  1. hdu 杭电 1045 Fire Net
  2. Linux下的一些问题收集及解决方法(一)
  3. Encoder-Decoder (based on RNNS / LSTM)用于序列学习方案
  4. 面向侧面的程序设计AOP-------《二》本质
  5. BaseExecutor.query()-创建CacheKey
  6. 将Host Cobol批次和Monolith Webapps移动到云和微服务
  7. 水星MW300R v2 路由器刷DD-Wrt 小记
  8. @hotmail.com 账户添加别名,重命名到@outlook.com 一系列问题,顺道附上个人解决方法
  9. java volatile关键字的理解
  10. python int占几个字节_int占几个字节(c语言)?
  11. Python小程序(3)--BMR(基础代谢率)计算器
  12. win10计算机本地组策略编辑器,Win10本地组策略编辑器怎么打开(方法汇总)
  13. Android App 增量更新实例(Smart App Updates)
  14. 区块链黑暗森林自救手册
  15. mysql横向扩展_转mysql横向扩展和纵向扩展
  16. 哪些行业用到GPS定位系统_GPS平台_GPS定位平台系统,定位监控系统平台
  17. PostgreSQL引入的JSONB解释
  18. build.gradle 中compileSdkVersion,minSdkVersion,targetSdkVersion,buildToolsVersion的意思
  19. 李开复写给中国大学生的七封信【3/7】
  20. n个数中奇数和,偶数和

热门文章

  1. 挺带劲!通过 Nginx 来实现封杀恶意访问
  2. spleeter分离伴奏和人声
  3. 1080驱动此图形驱动程序_如何更新图形驱动程序以获得最佳游戏性能
  4. 【淘宝API开发系列】获取商品详情,商品评论、卖家订单接口
  5. Python发送多附件邮件的方法
  6. Java中 [I@4554617c 问题解决
  7. 前端初级学习阶段(3)
  8. imac15款和17款区别_5K屏2019款iMac轻体验:优缺点都很明显
  9. 新建UEFI启动分区
  10. censo7安装mysql_centos7 安装MySQL