ti-enxame.com

Teoria das cores: Como converter Munsell HVC para RGB / HSB / HSL

Estou vendo um documento que descreve as cores padrão usadas na odontologia para descrever a cor de um dente. Eles citam os valores matiz, valor, croma e indicam que são da descrição da cor de Munsell de 1905:

O sistema de notação de cores desenvolvido por A. H. Munsell em 1905 identifica as cores em termos de três atributos: HUE, VALUE (Brilho) e CHROMA (saturação) [ 15 ]

Tonalidade (H): Munsell definiu tonalidade como a qualidade pela qual distinguimos uma cor da outra. Ele selecionou cinco cores principais: vermelho, amarelo, verde, azul e roxo; e cinco cores intermediárias: amarelo-vermelho, verde-amarelo, azul-verde, roxo-azul e vermelho-roxo. Eles foram colocados em torno de um círculo de cores em pontos iguais e as cores entre esses pontos são uma mistura dos dois, em favor do ponto/cor mais próximo (veja a Figura 1.).

alt text

VALOR (V): Esta notação indica a claridade ou escuridão de uma cor em relação a uma escala de cinza neutra, que se estende do preto absoluto (símbolo de valor 0) ao branco absoluto (símbolo de valor 10). Isso é essencialmente o quão "brilhante" é a cor.

CHROMA (C): indica o grau de divergência de uma determinada tonalidade em relação a um cinza neutro do mesmo valor. A escala de croma se estende de 0 para um cinza neutro a 10, 12, 14 ou mais, dependendo da força (saturação) da amostra a ser avaliada.

Existem vários sistemas para categorizar cores, o sistema Vita é mais comumente usado em Odontologia. Utiliza as letras A, B, C e D para anotar a tonalidade (cor) do dente. O croma e o valor são ambos indicados por um valor de 1 a 4. A1 sendo mais leve que A4, mas A4 sendo mais saturado que A1. Se colocado em ordem de valor, ou seja, brilho, o pedido do mais claro ao mais escuro seria:

A1, B1, B2, A2, A3, D2, C1, B3, D3, D4, A3.5, B4, C2, A4, C3, C4

Os valores exatos de Matiz, Valor e Croma para cada uma das tonalidades são mostrados abaixo ( 16 )

alt text

Então, minha pergunta é: alguém pode converter o Munsell HVC em RGB, HSB ou 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

Eles dizem que o valor (brilho) varia de 0..10, o que é bom. Então, tomo 7,05 para significar 70,5%.

Mas em que Hue é medido? Estou acostumado a matiz sendo medido em degrees (0..360). Mas os valores que vejo seriam todos vermelhos - quando deveriam ser mais amarelos ou marrons.

Por fim, diz que Choma/Saturação pode variar de 0..10 ... ou ainda mais alto - o que faz parecer uma escala arbitrária.

Então, alguém pode converter o Munsell HVC para HSB ou HSL, ou melhor ainda, RGB?

25
Ian Boyd

A especificação de matiz que você forneceu aqui está incompleta (4.5 deve ser 4.5Y etc). Como o link está inoperante, se alguém estiver interessado, as especificações ainda estão ativas aqui: http://web.archive.org/web/20071103065312/http://lib.umich.edu/dentlib/Dental_tables/ Colorshadguid.html

O único utilitário gratuito para a conversão de Munsell que encontrei foi o seguinte:

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

Muito antigo, como você pode ver, mas parece funcionar bem. Os programas atuais que podem fazer isso não são gratuitos:

Os atuais detentores dos produtos Munsell são X-Rite , provavelmente também possuem algumas soluções de conversão.

Além disso, observe que o link que você forneceu inclui definições para as mesmas cores em outras coordenadas de cores - ou seja, Yxy e CIE l a b *. Ambos podem ser livremente convertidos on-line em http://www.colorpro.com/info/tools/convert.htm ou off-line com este conversor de cores gratuito

11
Ohad Schneider

É bastante envolvido. A resposta curta é: a conversão de códigos de Munsell em RGB envolve a interpolação de dados empíricos em 3D altamente não lineares. O único conjunto de dados disponível ao público foi coletado na década de 1930. Programas gratuitos ou baratos que encontrei na rede provaram ser falhos. Eu escrevi o meu. Mas estou pulando em frente. Vamos começar com o básico.

Os códigos de Munsell são de tipos diferentes dos outros códigos, xyY, Lab e RGB. A notação de Munsell descreve a cor de um objeto - o que as pessoas experimentam quando visualizam o objeto. (Isaac Newton foi o primeiro a perceber que a cor está nos olhos de quem vê.) Munsell conduziu extensas experiências com seres humanos e dispositivos engenhosos.

Os outros códigos, ou seja, xyY, L a b * e RGB, descrevem luz que ricocheteou em um objeto e passou por uma convulsão com um modelo matemático bastante simples de um olho humano. Alguns termos do Google são "iluminante", "tri-estímulo" e "observador padrão da CIE".

Munsell descreve as cores dos objetos à medida que são percebidos sob uma ampla variedade de iluminantes. Outro termo do google é "adaptação cromática". A adaptação cromática no cérebro é automática se a iluminação não for muito estranha. É realmente bastante notável. Pegue um pedaço de papel para escrever do lado de fora, sob um céu azul. O papel parece branco. Leve-o para dentro de casa e observe-o sob luzes incandescentes (amareladas). Ainda parece branco! Munsell aproveitou esse poder de processamento surpreendente empiricamente. Os códigos de Munsell também preservam a tonalidade percebida em diferentes cromos. Um céu azul e um pó azul que Munsell atribui a mesma notação de tonalidade, por exemplo 5RP, parecerá ao ser humano típico com visão normal o mesmo tom. Mais sobre isso na nota de rodapé.

CIE xyY, L a b * e RGB não significam nada, a menos que um iluminante seja especificado. A adaptação cromática para iluminantes no modelo matemático é computacionalmente difícil. (Aproximações simples, porém simples, podem ser feitas usando as "matrizes de Bradford".) O RGB que usamos é por padrão "sRGB", que especifica um iluminante chamado D65. D65 é algo como um dia sem nuvens ao meio-dia. Os números de laboratório listados pelo OP provavelmente são relativos ao D50, que é mais parecido com a luz da tarde ou da manhã. Os números xyY podem ser relativos a D50, ou podem ser relativos a um padrão antigo chamado C. Não vou verificar. C era a luz de uma luminária padrão que era relativamente barata de construir nos anos 30. Isso é obsoleto. Mas C desempenha um papel fundamental na resposta à pergunta.

Nos anos 30, os cientistas das cores estavam desenvolvendo os modelos matemáticos. Uma das coisas que eles fizeram foi pegar um livro de cores padrão da Munsell, iluminar a luz C dos chips coloridos do livro e registrar os dados no formato xyY. Esse conjunto de dados, chamado de "Dados de renovação da Munsell", é o único disponível gratuitamente. Outros certamente existem, mas são segredos bem guardados.

Boas notícias embora. O conjunto de dados funciona bem. A autoridade de Munsell hoje é uma empresa chamada Gretag Macbeth. Imagino que eles tenham dados volumosos relacionados aos chips de cores que vendem. Os únicos números que eu sei que eles publicam são os números D50 Lab e D65 sRGB para um pequeno conjunto de cores em seus cartões "Color Checker" . Eu escrevi um interpolador com base nos dados antigos de renotação. Ele concorda com os números do cartão do Verificador de cores quase exatamente. Lamento informar que, até agora, só escrevi código para a conversão que segue a direção oposta à solicitada pelo OP (há um ano, enquanto digito isso). Vai do sRGB para Munsell. Clico em uma imagem e o programa exibe as notações sRGB e Munsell para a área clicada. Eu o uso para pintura a óleo.

My "color-picker" program - work in progress

Nota de rodapé: A CIE tem um padrão que é análogo a Munsell. É chamado LCh inscrito com a, b. É L a b * em coordenadas polares. Os tons estão em graus. Os números de croma são aproximadamente 5 vezes o C no Munsell HVC. LCh tem seus problemas embora. Se você já usou um editor de fotos para aumentar a vivacidade do céu, apenas para ver o azul ficar roxo, o programa provavelmente estava usando o LCh. Quando comecei a escrever meu programa, eu não sabia que Bruce Lindloom havia feito um trabalho paralelo ao que eu estava fazendo. O site dele foi inestimável para mim ao concluir o projeto. Ele projetou um espaço que ele chama de UPLab, que é LCh endireitado para se alinhar com Munsell. Eu já havia reinventado o LCh e (essencialmente) o UPLab antes de descobrir o site do Sr. Linbloom, mas o conhecimento dele sobre o assunto excede em muito o meu.

15
Jive Dadson

Conversão de Munsell Renotation System para sRGB Colourspace

Color , nosso código aberto Python permite realizar essa conversão.

Do sistema de renovação Munsell ao CIE xyY Colourspace

As duas definições a seguir, baseadas no método Centore (2012), convertem entre o Sistema de Renovação Munsell e CIE xyY espaço de cor:

Do CIE xyY Colourspace ao sRGB Colourspace

A conversão de CIE xyY espaço de cores em sRGB espaço de cores é feita pela primeira conversão para CIE XYZ valores tristimulus e, em seguida, para sRGB espaço de cor usando as seguintes definições:

Implementação

Aqui está um exemplo completo anotado usando as definições acima:

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]

Você também pode realizar a conversão reversa de sRGB espaço de cores para Sistema de Renovação Munsell :

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

Referências

  • Centore, P. (2012). Um algoritmo de inversão de código aberto para a renotação de Munsell. Pesquisa e aplicação de cores, 37 (6), 455–464. doi: 10.1002/col.20715
10
Kel Solaar

Para completar, aqui está a versão archive.org da minha página, que contém as cores em três espaços de cores, Munsell, Yxy e 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

Referências

  • 151 O'Brien, W.J., Groh, C.L. e Boenke, K.M. Uma nova equação de diferença de cor pequena para tonalidades dentárias. J.Dent. Res. 69: 1762-1764, 1990.
  • 152 O'Brien, W.J., Groh, C.L. e Boenke, K.M. Dados não publicados. Faculdade de Odontologia da Universidade de Michigan, Ann Arbor.
6
Ian Boyd

Existe um pacote R gratuito munsell que irá (entre outras coisas) converter os códigos de Munsell em RGB:

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

Há uma página que encontrei aqui: munsell-to-rgb.blogspot.com que parece estar fazendo exatamente o que você procura. Parece inacabado no momento, mas o proprietário do blog planeja atualizá-lo regularmente com o maior número possível de conversões de Munsell para RGB (e ele aceita solicitações!).

É incrível o quão difícil é encontrar tabelas de conversão acessíveis para esses sistemas de cores; espero que esta seja a nossa resposta! : D

4
Jarordirt

Estou atrasado para a festa, mas encontrei outro recurso que pode ser útil sobre este tópico.

Alguém do "Munsell Color Science Laboratory" descobriu alguns dados de Munsell de 1943, todos baseados na pesquisa da Munsell dos anos 30: http://www.cis.rit.edu/research/mcsl2/online/munsell.php

A página se refere a uma planilha do Excel com o subconjunto "somente cores reais" dos dados que se enquadram no "limite de macadame", que parece significar a gama de cores que realmente podem aparecer em superfícies reflexivas. O link da planilha não funciona, no entanto, mas com um palpite, imaginei que ele deixasse de fora um nível da árvore de diretórios. Eu tentei o URL http://www.cis.rit.edu/research/mcsl2/online/real_sRGB.xls - e funcionou. (Eu não ficaria surpreso se o proprietário do site finalmente notá-lo e corrigir o link, o que provavelmente quebrará meu link.)

Eu brinquei um pouco com a planilha para gerar HTML para me mostrar as cores RGB e adicionei essas células à planilha:

<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>

A tabela precisa de uma linha, cada uma começando com A2 a A1626, e uma cada uma das outras.

Eu espero que isso ajude.

3
Steve

Apesar deste post antigo, para atualizar a resposta de Steve, aqui estão os links "corrigidos" para os repositórios de dados de Munsell da RIT:

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

E um link direto para a planilha dos valores convertidos sRGB das cores "reais" de Munsell:

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

É uma planilha que inclui uma conversão da notação Munsell HVC para xyY, depois para XYZ_C, depois convertida em iluminante D65, depois em sRGB de ponto flutuante e quantizada em valores de 8 bits sRGB (que eles chamam de dRGB).

Quanto à pergunta do OP: o sRGB é (obviamente) um modelo de cores aditivo RGB. Mas as diferenças com outros modelos de cores, como CMYK subtrativo, são complexas o suficiente para que um algoritmo "simples" não lide com a conversão - enquanto as transformações de modelos de cores podem ser aproximadas com uma matriz, mais frequentemente uma LUT (Look Up Table) é preferida, como uma LUT em um perfil ICC ou uma 3D LUT, usada na produção de filmes. (Nem todos os perfis ICC são baseados em LUT, mas uma IMO de conversão baseada em LUT é o que é necessário aqui).

Os dados de Munsell certamente se enquadram nessa categoria, pois além de ser um modelo de cores diferente, não é apenas um modelo subtrativo, é baseado na percepção, enquanto o sRGB é baseado em uma simples relação entre luz verde vermelha e azul.

A planilha é a tabela de consulta utilizável; portanto, um programa para converter itens como sua tabela dentária em sRGB coletaria esses dados e faria referência à LUT contida na planilha e retornaria os valores de sRGB.

Nota lateral: Quero mencionar com clareza que, embora alguns cores- transformações de espaço ou modelo de cores podem ser feitas razoavelmente com um algoritmo/matriz, as LUTs 3D são preferidas principalmente quando as LUTs são criadas a partir de dados medidos de um determinado modelo/espaço de cores, que mapeia o muitas não linearidades inerentes a alguns modelos.

Um exemplo extremo é uma imagem sRGB no monitor do computador versus como essa imagem é impressa em papel e aparece na capa de uma revista em uma banca de jornal iluminada com luz fluorescente. Isso requer um 3D LUT para uma transformação precisa!

Na indústria de longas-metragens (onde trabalho principalmente), usamos LUTs 3D em todo o pipeline de imagens, não apenas para conversão/transformação, mas para "visualização" e aplicação/emulação de "aparência". Por exemplo, tirar uma foto tirada com uma câmera digital e aplicar uma LUT de um determinado estoque de filme a essa imagem para que ela apareça como filme.

1
Myndex