色彩理论:如何将Munsell HVC转换为RGB / HSB / HSL

问题描述 投票:24回答:8

我正在查看描述牙科中用于描述牙齿颜色的标准颜色的文件。他们引用色调,值,色度值,并指出它们来自1905年Munsell的颜色描述:

由A. H. Munsell在1905年开发的颜色符号系统根据三个属性识别颜色:HUE,VALUE(亮度)和CHROMA(饱和度)[15]

HUE(H):Munsell将色调定义为我们将一种颜色与另一种颜色区分开来的质量。他选择了五种主要颜色:红色,黄色,绿色,蓝色和紫色;五种中间色:黄红色,绿黄色,蓝绿色,紫蓝色和红紫色。它们被放置在相同点的色环周围,这些点之间的颜色是两者的混合,有利于更接近的点/颜色(见图1)。

VALUE(V):此符号表示颜色相对于中性灰度的亮度或暗度,中性灰度从绝对黑色(值符号0)延伸到绝对白色(值符号10)。这实际上是颜色的“明亮”程度。

CHROMA(C):这表示给定色调与相同值的中性灰色的发散程度。根据要评估的样品的强度(饱和度),色度的范围从0变为中性灰色到10,12,14或更远。

有各种用于分类颜色的系统,Vita系统最常用于牙科。这使用字母A,B,C和D来表示牙齿的色调(颜色)。色度和值均由1到4的值表示.A1比A4轻,但A4比A1更饱和。如果按照值的顺序放置,即亮度,从最亮到最暗的顺序是:

A1,B1,B2,A2,I,D2,1,Bz,I,Dch,Az.5,Bch,2,Ah,Zz,Ts

每种色调的色调,值和色度的确切值如下所示(16

所以我的问题是,任何人都可以将Munsell HVC转换为RGB,HSB或HSL吗?

Hue    Value (Brightness) Chroma(Saturation)
===    ================== ==================
4.5    7.80               1.7
2.4    7.45               2.6
1.3    7.40               2.9
1.6    7.05               3.2
1.6    6.70               3.1
5.1    7.75               1.6
4.3    7.50               2.2
2.3    7.25               3.2
2.4    7.00               3.2
4.3    7.30               1.6
2.8    6.90               2.3
2.6    6.70               2.3
1.6    6.30               2.9
3.0    7.35               1.8
1.8    7.10               2.3
3.7    7.05               2.4

他们说价值(亮度)与0..10不同,这很好。所以我认为7.05意味着70.5%。

Hue测量的是什么?我习惯于在degrees(0..360)测量。但我看到的价值都是红色的 - 当它们应该更黄或者棕色时。

最后,它说Choma /饱和度可以从0..10 ...甚至更高 - 这使它听起来像任意规模。

那么有人能将Munsell HVC转换为HSB或HSL,还是更好的RGB?

colors rgb hsl hsb color-theory
8个回答
11
投票

你在这里给出的色调规范是不完整的(4.5应该是4.5Y等)。由于链接已经死亡,如果有人感兴趣,这里的规格仍然存在:http://web.archive.org/web/20071103065312/http://lib.umich.edu/dentlib/Dental_tables/Colorshadguid.html

我能找到的唯一免费的Munsell转换工具是:

http://web.archive.org/web/20020809130910/standards.gretagmacbeth.com/cmc/munsell.exe

你可以看到很老,但似乎运作良好。目前可以执行此操作的程序不是免费的:

Munsell产品的现有持有者是X-Rite,他们可能也有一些转换解决方案。

此外,请注意您提供的链接包括其他颜色坐标中相同颜色的定义 - 即Yxy和CIE lab *。两者都可以在http://www.colorpro.com/info/tools/convert.htm在线自由转换或使用此free color converter离线转换


15
投票

它涉及很多。简短的回答是,将Munsell代码转换为RGB涉及3D高度非线性的经验数据的插值。唯一公开的数据集是在20世纪30年代收集的。我在网上找到的免费或廉价程序已被证明是有缺陷的。我写了自己的。但我正在跳跃。让我们从基础开始。

Munsell代码的种类与其他代码xyY,Lab和RGB不同。 Munsell符号描述了对象的颜色 - 人们在查看对象时的体验。 (Isaac Newton是第一个意识到颜色在旁观者眼中的人。)Munsell对人类主体和巧妙设备进行了大量实验。

其他代码,即xyY,Lab *和RGB,描述了从物体反弹并通过人眼相当简单的数学模型通过卷积的光。一些谷歌术语是“光明”,“三刺激”和“CIE标准观察者”。

Munsell描述了在各种光源下感知物体的颜色。另一个谷歌术语是“色彩适应”。如果照明不太奇怪,大脑中的色彩适应是自动的。这真的非常了不起。在蓝天下拍一张打字纸。纸看起来很白。把它放在室内,在白炽灯(黄色)下看它。它仍然看起来很白!孟塞尔凭经验挖掘出惊人的处理能力。 Munsell代码还保留了不同色度的感知色调。天蓝色和粉蓝色,孟塞尔指定相同的色调符号,例如5RP,对于具有正常视力的典型人来说将是相同的色调。更多关于脚注的内容。

除非指定了光源,否则CIE xyY,Lab *和RGB均无意义。在数学模型中对光源的色度适应在计算上是困难的。 (粗略但简单的近似可以使用“Bradford矩阵”完成。)我们使用的RGB默认为“sRGB”,它指定了一个名为D65的光源。 D65就像中午无云的日子。 OP列出的实验室编号可能与D50有关,更像下午或晨光。 xyY数字可能与D50有关,或者它们可能与称为C的旧标准有关。我不打算检查。 C是来自标准照明灯具的灯,在20世纪30年代相对便宜。它已经过时了。但C在这个问题的答案中起着关键作用。

在20世纪30年代,色彩科学家正在开发数学模型。他们所做的一件事就是采用标准的Munsell颜色书,在书中的彩色芯片上照射光源-C灯,并以xyY格式记录数据。该数据集称为“Munsell Renotation Data”,是唯一可免费获得的数据集。其他人肯定存在,但他们是密切关注的秘密。

不过好消息。数据集运行良好。今天的Munsell当局是一家名为Gretag Macbeth的公司。我想他们有大量与他们销售的彩色芯片相关的数据。我知道他们发布的唯一数字是他们的"Color Checker"卡上的一小组颜色的D50 Lab和D65 sRGB数字。我根据旧的注释数据编写了一个插补器。它几乎完全同意Color Checker卡的数字。我很遗憾地告诉我,到目前为止,我只编写了转换的代码,与OP请求的方向相反(一年前,我输入此内容)。它从sRGB到Munsell。我点击一个图像,程序显示所点击区域的sRGB和Munsell符号。我把它用于油画。

脚注:CIE有一个类似于Munsell的标准。它被称为LCh下标a,b。它是极坐标中的Lab *。色调是度数。色度数约为Munsell HVC中C的5倍。但LCh有其问题。如果您曾经使用照片编辑器来提升天空的生动性,只看到蓝色变成紫色,程序可能正在使用LCh。当我开始编写程序时,我没有意识到Bruce Lindloom完成了与我正在做的工作相似的工作。当我完成项目时,His web site对我来说非常宝贵。他设计了一个他称之为UPLab的空间,这是LCh整理出来与Munsell对齐。在我发现Linbloom先生的网站之前,我已经重新发明了LCh和(基本上)UPLab,但他对这个主题的了解远远超过我的。


9
投票

Munsell Renotation System to sRGB Colourspace Conversion

Colour,我们的开源Python色彩科学包允许执行该转换。

从Munsell记谱系统到CIE xyY颜色空间

基于Centore(2012)方法的以下两个定义在Munsell Renotation System和CIE xyY colourspace之间进行转换:

从CIE xyY色彩空间到sRGB色彩空间

从CIE xyY色彩空间转换为sRGB色彩空间是通过首先转换为CIE XYZ三刺激值然后使用以下定义转换为sRGB色彩空间来完成的:

履行

以下是使用上述定义的带注释的完整示例:

import colour

# The *Munsell Renotation System* colour we would like to convert
# to *sRGB* colourspace.
MRS_c = '4.2YR 8.1/5.3'

# The first step is to convert the *MRS* colour to *CIE xyY* 
# colourspace.
xyY = colour.munsell_colour_to_xyY(MRS_c)

# We then perform conversion to *CIE xyY* tristimulus values.
XYZ = colour.xyY_to_XYZ(xyY)

# The last step will involve using the *Munsell Renotation System*
# illuminant which is *CIE Illuminant C*:
# http://nbviewer.ipython.org/github/colour-science/colour-ipython/blob/master/notebooks/colorimetry/illuminants.ipynb#CIE-Illuminant-C
# It is necessary in order to ensure white stays white when
# converting to *sRGB* colourspace and its different whitepoint 
# (*CIE Standard Illuminant D65*) by performing chromatic 
# adaptation between the two different illuminant.
C = colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['C']
RGB = colour.XYZ_to_sRGB(XYZ, C)

print(RGB)

[ 0.96820063 0.74966853 0.60617991]

您还可以执行从sRGB colourspace到Munsell Renotation System的反向转换:

import colour

C = colour.ILLUMINANTS['CIE 1931 2 Degree Standard Observer']['C']

RGB = (0.96820063, 0.74966853, 0.60617991)

print(colour.xyY_to_munsell_colour(colour.XYZ_to_xyY(colour.sRGB_to_XYZ(RGB, C))))

4.2YR 8.1 / 5.3

参考

  • Centore,P。(2012)。 Munsell注释的开源反演算法。色彩研究与应用,37(6),455-464。 DOI:10.1002 / col.20715

6
投票

为了完整性,这里是我的页面的archive.org版本,其中包含3个颜色空间中的颜色,Munsell,Yxy和Lab:

Vita shade-guide colors
_________________________________________________________________

         Munsell         Chromaticity
         notation        coordinates             CIE L* a* b*
         (ref 151)       (ref 152)               (ref 151)
      _____________  _____________________   ___________________
Shade  H    V  C       Y      x      y        L*      a*     b*
_________________________________________________________________

A1    4.5Y 7.80/1.7   55.92  0.3352 0.3459   79.57  -1.61  13.05
A2    2.4Y 7.45/2.3   49.95  0.3468 0.3539   76.04  -0.08  16.73
A3    1.3Y 7.40/2.9   48.85  0.3559 0.3593   75.36   1.36  19.61
A3.5  1.6Y 7.05/3.2   44.12  0.3627 0.3657   72.31   1.48  21.81
A4    1.6Y 6.70/3.1   38.74  0.3633 0.3658   68.56   1.58  21.00
B1    5.1Y 7.75/1.6   54.76  0.3336 0.3447   78.90  -1.76  12.33
B2    4.3Y 7.50/2.2   50.97  0.3437 0.3549   76.66  -1.62  16.62
B3    2.3Y 7.25/3.2   46.91  0.3611 0.3669   74.13   0.47  22.34
B4    2.4Y 7.00/3.2   43.38  0.3620 0.3678   71.81   0.50  22.15
C1    4.3Y 7.30/1.6   47.16  0.3361 0.3462   74.21  -1.26  12.56
C2    2.8Y 6.95/2.3   42.12  0.3487 0.3563   70.95  -0.22  16.72
C3    2.6Y 6.70/2.3   39.11  0.3499 0.3569   68.83  -0.01  16.68
C4    1.6Y 6.30/2.7   33.77  0.3600 0.3622   64.78   1.59  18.66
D2    3.0Y 7.35/1.8   48.71  0.3391 0.3473   75.27  -0.54  13.47
D3    1.8Y 7.10/2.3   44.48  0.3482 0.3534   72.55   0.62  16.14
D4    3.7Y 7.05/2.4   43.45  0.3492 0.3591   71.86  -1.03  17.77
_________________________________________________________________
H        hue
V        value
C        chroma
Y        lightness
x and y  hue and chroma
L*       lightness
a*       hue and chroma on a red/green scale
b*       hue and chroma on a yellow/blue scale

参考

  • 151 O'Brien,W.J.,Groh,C.L。和Boenke,K.M。一种新的,用于牙齿色调的小色差方程。 J.Dent。 RES。 69:1762-1764,1990。
  • 152 O'Brien,W.J.,Groh,C.L。和Boenke,K.M。未发表的数据。密歇根大学牙医学院,安娜堡。

6
投票

有一个免费的R包munsell将(除其他外)将Munsell代码转换为RGB:

R> library(munsell)
R> mnsl2hex("5PB 5/10")
[1] "#3B75BB"

4
投票

我在这里找到了一个页面:munsell-to-rgb.blogspot.com似乎正在完成你所追求的目标。目前似乎尚未完成,但博客的所有者计划尽可能多地使用Munsell-to-RGB转换来更新它(并且他接受了请求!)。

令人惊讶的是,为这些颜色系统找到可访问的转换表是多么困难;希望这将是我们的答案! :d


3
投票

我迟到了,但我找到了另一个可能对这个主题有用的资源。

“Munsell色彩科学实验室”的某个人从Munsell挖出了1943年的数据,这些数据全部基于20世纪30年代的Munsell研究:http://www.cis.rit.edu/research/mcsl2/online/munsell.php

该页面指的是Excel电子表格,其中“仅限于真实颜色”的数据子集属于“Macadam限制”,这似乎意味着可以实际出现在反射表面上的色域。然而,电子表格链接不起作用,但是在预感中,我猜测它遗漏了目录树的一个级别。我尝试了网址http://www.cis.rit.edu/research/mcsl2/online/real_sRGB.xls - 它有效。 (如果网站的所有者最终注意到它,并且修复了链接,我可能不会感到惊讶,这可能会破坏我的链接。)

我稍微弄乱了那个电子表格,让它生成HTML以显示RGB颜色,并将这些单元格添加到电子表格中:

<table>
  .<colgroup> <col /> <col span="3" style="background-color:#eeeeee;" /> <col span="3" /> <col span="3" style="background-color:#eeeeee;" /> <col span="3" /> <col span="3" style="background-color:#eeeeee;" /> <col span="3" /> <col style="background-color:#eeeeee;" /> <col /> </colgroup>
  ="<tr> <th> "&A1&" </th> <th> "&B1&" </th> <th> "&C1&" </th> <th> "&D1&" </th> <th> "&E1&" </th> <th> "&F1&" </th> <th> "&G1&" </th> <th> "&H1&" </th> <th> "&I1&" </th> <th> "&J1&" </th> <th> "&K1&" </th> <th> "&L1&" </th> <th> "&M1&" </th> <th> "&N1&" </th> <th> "&O1&" </th> <th> "&P1&" </th> <th> "&Q1&" </th> <th> "&R1&" </th> <th> "&S1&" </th> <th> #RGB </th> <th> sample </th> </tr> "
  ="<tr> <td> "&A2&" </td> <td> "&B2&" </td> <td> "&C2&" </td> <td> "&D2&" </td> <td> "&E2&" </td> <td> "&F2&" </td> <td> "&G2&" </td> <td> "&H2&" </td> <td> "&I2&" </td> <td> "&J2&" </td> <td> "&K2&" </td> <td> "&L2&" </td> <td> "&M2&" </td> <td> "&N2&" </td> <td> "&O2&" </td> <td> "&P2&" </td> <td> "&Q2&" </td> <td> "&R2&" </td> <td> "&S2&" </td> <td> #"&T2&" <td style="&CHAR(34)&"background-color:#"&T2&"; width:2em;"&CHAR(34)&"> &nbsp; </td> </tr> "
  ="<tr> <td> "&A3&" </td> <td> "&B3&" </td> <td> "&C3&" </td> <td> "&D3&" </td> <td> "&E3&" </td> <td> "&F3&" </td> <td> "&G3&" </td> <td> "&H3&" </td> <td> "&I3&" </td> <td> "&J3&" </td> <td> "&K3&" </td> <td> "&L3&" </td> <td> "&M3&" </td> <td> "&N3&" </td> <td> "&O3&" </td> <td> "&P3&" </td> <td> "&Q3&" </td> <td> "&R3&" </td> <td> "&S3&" </td> <td> #"&T3&" <td style="&CHAR(34)&"background-color:#"&T3&"; width:2em;"&CHAR(34)&"> &nbsp; </td> </tr> "
  ="<tr> <td> "&A4&" </td> <td> "&B4&" </td> <td> "&C4&" </td> <td> "&D4&" </td> <td> "&E4&" </td> <td> "&F4&" </td> <td> "&G4&" </td> <td> "&H4&" </td> <td> "&I4&" </td> <td> "&J4&" </td> <td> "&K4&" </td> <td> "&L4&" </td> <td> "&M4&" </td> <td> "&N4&" </td> <td> "&O4&" </td> <td> "&P4&" </td> <td> "&Q4&" </td> <td> "&R4&" </td> <td> "&S4&" </td> <td> #"&T4&" <td style="&CHAR(34)&"background-color:#"&T4&"; width:2em;"&CHAR(34)&"> &nbsp; </td> </tr> "
  .
  .
  .
  ="<tr> <td> "&A1626&" </td> <td> "&B1626&" </td> <td> "&C1626&" </td> <td> "&D1626&" </td> <td> "&E1626&" </td> <td> "&F1626&" </td> <td> "&G1626&" </td> <td> "&H1626&" </td> <td> "&I1626&" </td> <td> "&J1626&" </td> <td> "&K1626&" </td> <td> "&L1626&" </td> <td> "&M1626&" </td> <td> "&N1626&" </td> <td> "&O1626&" </td> <td> "&P1626&" </td> <td> "&Q1626&" </td> <td> "&R1626&" </td> <td> "&S1626&" </td> <td> #"&T1626&" <td style="&CHAR(34)&"background-color:#"&T1626&"; width:2em;"&CHAR(34)&"> &nbsp; </td> </tr> "
</table>

该表需要从A2到A1626开始的每一行,以及其他每一行。

我希望这有帮助。


1
投票

尽管有这篇老帖,为了更新史蒂夫的答案,这里是RIT的Munsell数据库的“更正”链接:

https://www.rit.edu/cos/colorscience/rc_munsell_renotation.php

并且直接链接到sRGB的电子表格转换了“真实”Munsell颜色的值:

http://www.rit-mcsl.org/MunsellRenotation/real_sRGB.xls

这是一个电子表格,其中包括从Munsell HVC表示法转换为xyY,然后转换为XYZ_C,然后转换为D65光源,然后转换为浮点sRGB,然后量化为8位sRGB值(他们称之为dRGB)。

至于OP的问题:sRGB(显然)是RGB加色模型。但是与其他颜色模型(如减色CMYK)的差异足够复杂,“简单”算法无法处理转换 - 而颜色模型转换可以用矩阵近似,更常见的是LUT(查找表)是首选,例如ICC配置文件中的LUT或电影制作中使用的3D LUT。 (并非所有ICC配置文件都是基于LUT的,但是基于LUT的转换IMO就是这里所需要的)。

Munsell数据肯定属于这一类,因为它不仅是一种不同的颜色模型,它不仅是基于感知的减法模型,而sRGB基于红绿和蓝光之间的简单关系。

电子表格是可用的查找表,因此将诸如牙科图表之类的内容转换为sRGB的程序将接收该数据并引用电子表格中包含的LUT,并返回sRGB值。

旁注:为清楚起见,我想提一下,尽管可以使用算法/矩阵合理地完成某些颜色空间或颜色模型变换,但特别是当从给定颜色模型的测量数据创建LUT时,3D LUT是首选空间,映射某些模型中固有的许多非线性。

一个极端的例子是计算机显示器上的sRGB图像与将图像打印到纸张上的图像,并显示在坐在报亭上的杂志的封面上,该报刊亭用荧光灯照亮。这需要3D LUT才能实现精确转换!

在故事片行业(我主要工作),我们在整个图像流水线中使用3D LUT,不仅用于转换/转换,还用于“查看”和应用/模拟“外观”。例如,拍摄用数码相机拍摄的图像,并将特定胶片的LUT应用于该图像,使其显示为胶片。

© www.soinside.com 2019 - 2024. All rights reserved.