Теория цвета: как конвертировать Munsell HVC в RGB/HSB/HSL
Я смотрю на документ, который описывает стандартные цвета, используемые в стоматологии, для описания цвета зуба. Они указывают оттенок, значение, значения цветности и указывают, что они относятся к описанию цвета 1905 Munsell:
Система цветовых обозначений разработанный А. Х. Мунселем в 1905 году определяет цвет с точки зрения трех атрибуты: HUE, VALUE (Яркость) и CHROMA (насыщенность) [15]
HUE (H): Мунселл определил оттенок как качество, с помощью которого мы выделяем один цвет из другой. Он выбрал пять основные цвета: красный, желтый, зеленый, синий и фиолетовый; и пять промежуточные цвета: желто-красный, зелено-желтый, сине-зеленый, фиолетово-синий, и красно-фиолетовый. Они были размещены вокруг цветового круга в равных точках и цвета между этими точки - это смесь двух, в предпочтение ближе к точке/цвету (см. Рис. 1).
![alt text]()
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, A3, D2, C1, B3, D3, D4, A3.5, B4, C2, A4, C3, C4
Точные значения Hue, Value и Показана хрома для каждого из оттенков ниже (16)
![alt text]()
Итак, мой вопрос: может ли кто-нибудь конвертировать 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/Saturation может варьироваться от 0..10
... или даже выше - что делает звук похожим на произвольный масштаб.
Так может ли кто-нибудь конвертировать Munsell HVC в HSB или HSL, или еще лучше, RGB?
Ответы
Ответ 1
Спецификация оттенка, указанная здесь, является неполной (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 или в автономном режиме с помощью этого свободного цвета конвертер
Ответ 2
Это скорее связано. Короткий ответ заключается в том, что преобразование кодов Munsell в RGB включает в себя интерполяцию эмпирических данных в 3D, которая является очень нелинейной. Единственный набор данных, который является общедоступным, был собран в 1930-х годах. Свободные или недорогие программы, которые я нашел в сети, оказались ошибочными. Я написал свой собственный. Но я прыгаю вперед. Давайте начнем с основ.
Коды Munsell отличаются друг от друга, чем другие коды, xyY, Lab и RGB. Обозначение Munsell описывает цвет объекта - то, что люди испытывают при просмотре объекта. (Исаак Ньютон первым понял, что цвет в глазах смотрящего.) Мунселл провел обширные эксперименты с людьми и изобретательными устройствами.
Другие коды, т.е. xyY, Lab * и RGB, описывают свет, который отскочил от объекта и прошел через свертку с довольно простой математической моделью человеческого глаза. Некоторые термины google являются "источниками света", "три-стимулом" и "стандартным наблюдателем CIE".
Munsell описывает цвета объектов, поскольку они воспринимаются под широким спектром источников света. Другой термин google - "хроматическая адаптация". Хроматическая адаптация в мозге автоматическая, если освещение не слишком странно. Это действительно замечательно. Возьмите кусок бумаги для печати снаружи под голубым небом. Бумага выглядит белой. Возьмите его в помещении и посмотрите на него под лампами накаливания (желтоватые). Он по-прежнему выглядит белым! Мунселл использовал эмпирически эту потрясающую вычислительную мощность. Коды Munsell также сохраняют воспринимаемый оттенок на разных хромах. Небесно-голубой и пороховой синий, который Munsell назначает одну и ту же обозначение оттенка, например. 5RP, будет казаться типичному человеку с нормальным зрением, чтобы он был одним и тем же оттенком. Подробнее об этом в сноске.
CIE xyY, Lab * и RGB ничего не значат, если не указан источник света. Хроматическая адаптация для иллюминаторов в математической модели затруднена вычислительно. (Грубые, но простые аппроксимации могут быть выполнены с использованием "матриц Брэдфорда".) RGB, который мы используем, по умолчанию "sRGB", который указывает источник света D65. D65 - это что-то вроде безоблачного дня в полдень. Номера Lab, перечисленные OP, вероятно, относительно D50, что больше похоже на дневной или утренний свет. Числа xyY могут относиться к D50, или они могут относиться к старому стандарту C. Я не собираюсь проверять. C - это свет от стандартной осветительной арматуры, которая была относительно недорогой для строительства в 1930-х годах. Это устарело. Но C играет ключевую роль в ответе на вопрос.
В 1930-х годах цветные ученые разрабатывали математические модели. Одна из вещей, которые они делали, заключалась в том, чтобы взять стандартную Книгу Мунселла Цветной, осветить освещенность-С на цветных чипах в книге и записать данные в формате xyY. Этот набор данных, называемый "данными о реестре Munsell", является единственным, который доступен бесплатно. Другие, безусловно, существуют, но они тесно связаны с секретами.
Хорошая новость. Набор данных работает хорошо. Сегодня авторитет Манселла - это компания под названием Гретаг Макбет. Я думаю, у них есть объемные данные, связанные с цветными фишками, которые они продают. Единственные цифры, которые я знаю о том, что они публикуют, - это D50 Lab и D65 sRGB номера для небольшого набора цветов на своих "Color Checker" . Я написал интерполятор, основанный на старых данных renotation. Он точно соответствует цифрам для карты Color Checker. Я с сожалением сообщаю, что до сих пор я только написал код для конверсии, который идет в противоположном направлении от того, что запросил ОП (год назад, когда я печатаю это). Это идет от sRGB к Munsell. Я нажимаю на изображение, и программа отображает обозначения sRGB и Munsell для выбранной области. Я использую его для рисования маслом.
![My "color-picker" program - work in progress]()
Сноска: CIE имеет стандарт, аналогичный Munsell. Он называется LCh с индексом a, b. Это Lab * в полярных координатах. Цветовая гамма находится в градусах. Число Chroma приблизительно в 5 раз больше C в Munsell HVC. Однако у LCh есть свои проблемы. Если вы когда-либо использовали фоторедактор для накачки яркости неба, только чтобы увидеть, как синий цвет превратился в фиолетовый, программа, вероятно, использовала LCh. Когда я начал писать свою программу, я не знал, что Брюс Линдлум сделал работу, которая параллельна тому, что я делаю. Его веб-сайтбыл бесценен для меня, когда я закончил проект. Он разработал пространство, которое он называет UPLab, которое LCh выпрямилось, чтобы выровняться с Munsell. Я уже повторно изобрел LCh и (по существу) UPLab, прежде чем обнаружил сайт г-на Линблама, но его знание предмета намного превосходит мое.
Ответ 3
Система обновления Munsell для конверсии цветов sRGB
Colour, наш пакет с открытым исходным кодом Python color science позволяет выполнить это преобразование.
От системы обновления Munsell до CIE xyY Colourspace
Следующие два определения, основанные на методе Centore (2012), преобразуют систему обновления Munsell и цветовое пространство CIE xyY:
Из CIE xyY Colourspace в sRGB Colourspace
Преобразование из цветового пространства 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 в систему Rensation 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
Ссылки
- Ценор, П. (2012). Алгоритм инверсии с открытым исходным кодом для ренотации Munsell. Исследование цвета и применение, 37 (6), 455-464. DOI: 10.1002/col.20715
Ответ 4
Для полноты здесь, версия 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., and Boenke, K.M. Новое, маленькое цветовое решение для зубных оттенков. J.Dent. Местожительство 69: 1762-1764, 1990.
- 152 O'Brien, W.J., Groh, C.L., and Boenke, K.M. Неопубликованные данные. Университет Мичиганской школы стоматологии, Анн-Арбор.
Ответ 5
Существует бесплатный пакет R munsell
, который (среди прочего) преобразует коды Munsell в RGB:
R> library(munsell)
R> mnsl2hex("5PB 5/10")
[1] "#3B75BB"
Ответ 6
Здесь есть страница, которую я нашел здесь: munsell-to-rgb.blogspot.com, которая, кажется, делает именно то, что вы после. На данный момент он кажется незаконченным, но владелец блога планирует регулярно обновлять его с помощью таких конверсий Munsell-RGB, которые он может (и он принимает запросы!).
Удивительно, как трудно найти доступные таблицы преобразования для этих систем цветов; надеюсь, это будет наш ответ!: D
Ответ 7
Я опаздываю на вечеринку, но я нашел другой ресурс, который может быть полезен в этой теме.
Кто-то из "Лаборатории науки о цветах Munsell" выкопал некоторые данные 1942 года от Munsell, все они основаны на исследованиях Munsell 1930-х годов: http://www.cis.rit.edu/research/mcsl2/online/munsell.php
Страница ссылается на электронную таблицу Excel с подмножеством "только реальные цвета" данных, которые попадают в "предел Macadam", что, по-видимому, означает гамму цветов, которая может фактически отображаться на отражающих поверхностях. Однако ссылка на электронную таблицу не работает, но, судя по догадке, я догадался, что она оставила один уровень дерева каталогов. Я пробовал URL 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)&"> </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)&"> </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)&"> </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)&"> </td> </tr> "
</table>
В таблице требуется одна строка, каждая из которых начинается с A2 до A1626 и одна из остальных.
Надеюсь, это поможет.