如何转换CIE XYZ至Munsell及回到R

时间:2016-09-21 13:08:23

标签: r package color-theory

我正在尝试使用R中的包munsellinterpol实现从CIE XYZ颜色空间到Munsell规范的转换(据我所知,此包基于也可用的Kubelka-Munk工具箱,例如,在Matlab中)。

无论如何,从Munsell到XYZ的转换没有问题:

MunsellToXYZ("2.22Y 3/9")
# $X
# [1] 7.062125

# $Y
# [1] 6.391178

# $Z
# [1] -0.4203379

# $Status.ind
# [1] 1

然而,走另一条路似乎不起作用:

XYZtoMunsell(c(7.062125, 6.391178, -0.4203379))
# $Status.ind
# [1] 4

# $Status.dist
# NULL

# $Status.num
# NULL

此外,第一次调用该函数时,R输出一个奇怪的错误:

PLEASE NOTE:  As of version 0.3-5, no degenerate (zero area) 
regions are returned with the "Qt" option since the R 
code removes them from the triangulation. 
See help("delaunayn").

我知道这些函数利用某种优化来近似基于Munsell注释数据的良好映射。而且我确实意识到并非所有颜色都可能具有良好的Munsell映射。但我希望这些功能至少可以向前和向后工作,但情况似乎并非如此。

实际上,甚至文档中给出的示例都不起作用:

XYZtoMunsell(c(0.310897, 0.306510, 74.613450))
# $Status.ind
# [1] 4

# $Status.dist
# NULL

# $Status.num
# NULL

非常感谢任何帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

2018年6月6日,munsellinterpol软件包进行了大幅改写。 示例:

XYZtoMunsell(c(7.062125, 6.391178, -0.4203379))
XYZtoMunsell(c(0.310897, 0.306510, 74.613450)) 
sRGBtoMunsell(c(23,45,67))

现在工作正常(我检查了v。2.5-1)。

第一个:XYZ=c(7.062125, 6.391178, -0.4203379) 超出MacAdam限制,因为$Z<0$等于$x+y>1$。 但是XYZtoMunsell()现在还不那么严格,因此不在乎。 已发布的Munsell HVC -> xy查找表在$x+y>1$处有很多点。