我做了一个新的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%)。
有没有人可以帮助我?
答案 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]])