JzAzBz java实现精度

时间:2018-03-24 12:02:53

标签: java colors

我做了一个新的perceptualy统一颜色空间JzAzBz的java实现。 OSA出版物是:https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-13-15131&id=368272

我的java代码是:

navbar-brand

当我测试它运行XYZToJab然后JabToXYZ时,我得到X和Z的良好精度(delta顺序是E-9)但是对于Y我得到一个不好的精度(delta顺序是1-5%)。

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

实施几乎是正确的:错误在于JabToXYZ,其中最后一行的前一行应该从

更改
(XYZp[1] + (g - 1) * XYZp[0]) / g;

(XYZp[1] + (g - 1) * xyz[0]) / g;

然而,在JabToXYZ函数中使用舍入反转矩阵到6位小数的事实将阻止您获得干净的反转。您应该尝试以全双精度计算逆:

>>> import numpy as np
>>> np.set_printoptions(formatter={'float': '{:0.15f}'.format})
>>> import colour.models.jzazbz
>>> colour.models.jzazbz.JZAZBZ_IZAZBZ_TO_LMS_P_MATRIX
array([[1.000000000000000, 0.138605043271539, 0.058047316156119],
       [1.000000000000000, -0.138605043271539, -0.058047316156119],
       [1.000000000000000, -0.096019242026319, -0.811891896056039]])
>>> colour.models.jzazbz.JZAZBZ_LMS_TO_XYZ_MATRIX
array([[1.924226435787607, -1.004792312595365, 0.037651404030618],
       [0.350316762094999, 0.726481193931655, -0.065384422948085],
       [-0.090982810982848, -0.312728290523074, 1.522766561305260]])