ASTM E308 и Reference White XYZ: методика вычисления

  • Автор темы Автор темы mihas
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

mihas

Топикстартер
15 лет на форуме
Сообщения
4 860
Реакции
2 882
У меня к сожалению пока нет стандарта ASTM E308 никакого года, не могу посмотреть что там, может кто знает. Каким именно образом правильно посчитать из SPD иллюминанта референсные значения XYZ белой точки?
Если верить Линдблуму - он берет белую точку из ASTM E308-01 (на сегодня актуальный стандарт ASTM E308-13 но не важно). Смотрим код Линдблума, координаты белого для D50 там такие:
X=0.96422 Y=1 Z=0.82521
Как они получены?
Если мы возьмем формулу Spectral Power Distribution для источника D, строго посчитаем спектры для температуры 5003К (D50) и вычислим из них координаты XYZ - они с приведенными цифрами не сойдутся. Так например Линдблум отмечает, что кривые стандартного наблюдателя отличаются от нуля в диапазоне 360 to 830 nm. Хорошо, берем такой диапазон на SPD D50 c шагом 10 нм - получаем координаты белого:
X=0.9639137810760596 Y=1 Z=0.8247197515129133
Не сходится с ASTM. Ладно, берем наш привычный измеряемый диапазон 380 to 730 nm. Все равно не сходится, получаем:
X=0.9638310889412006 Y=1 Z=0.8246901294158935
Хорошо, предполагаем мы, вот например MT в своих вычислениях интерполирует спектры с шагом 10 нм в шаг 5 нм. Считаем с шагом в 5 - все равно не сходится, получаем еще один набор цифр для референсного белого:
X=0.9641051145413866 Y=1 Z=0.8253190042029728
Ну ладно, берем SPD источника D50 с шагом 1 нм, считаем в диапазоне 360 to 830 nm, получаем:
X=0.9642063494634407 Y=1 Z=0.8253517346233101

Очевидно, что шаг SPD влияет на результат, но точного совпадения с ASTM мы так и не получили. Может диапазон длин волн надо брать иной? Тогда хотелось бы знать какой? В ASTM E308 наверняка написано, вот бы посмотреть.
 
Линдблум пишет здесь http://brucelindbloom.com/Eqn_DIlluminant.html что SPD источника D, как впрочем и абсолютно черного тела, часто нормируют к 100 в 560 нм: "This equation is often used in a relative form, normalizing so that SD(λ) is 100 or 1.0 at λ = 560 nm". Но если для черного тела такая процедура скорее обязательная (там без нормировки дикие совсем цифры SPD непонятной размерности), то в каких случаях нормировка 560нм к 100 нужна или не нужна для источника дневного света D не понятно. К счастью, ей можно пренебречь, для D50 SPD в 560нм = 100.00000000000293. Нормировка мало что меняет. Тем не менее попробовал посчитать и так координаты XYZ для опорного белого D50, получил отклонение в 14 знаке после запятой относительно рассчетов из SPD D50 без нормировки, но точно к этим цифрам X=0.96422 Y=1 Z=0.82521 снова не приблизился. Мне вобщем говорили, что отклонение на единицу в пятом знаке после запятой не критично и можно пренебречь, тем не менее все же интересно, как получены эти референсные значения. Указанные отклонения в вычислениях координат белого приводят к отклонениям на 1-2 сотые в вычислении координат Lab, не много, но тем не менее.
 
Не то, чтобы на бюрократию потянуло, просто вполне практические вопросы хочу решить.
Есть референсы белого у Ханта, он их вычисляет в диапазоне 380 nm to 780 nm с интервалом 5 нм, получает для D50:
X=0.9641 Y-1 Z=0.8250
Заметим, что кривые стандартного наблюдателя отличаются от нуля в другом диапазоне - 360 to 830 nm. И наши привычные замеры спектрофотометром не совпадают ни с ним, ни с Хантом - наши привычные 380 to 730 nm.
Иными словами, для каждого спектрального диапазона референсные значения XYZ опорного белого будут разными и разница эта заметно влияет на вычисления координат Lab.
Если мы попробуем приблизиться к искомым цифрам D50 XYZ по Ханту X=0.9641 Y-1 Z=0.8250 в диапазоне 380 nm to 780 nm с интервалом 5 нм то цветовую температуру должны будем выставить не 5000, не 5003, а 5001.6 - 5007.7 в зависимости от того, совпадет ли точно координата X или Z. Абсолютно не понятны становятся референсные значения белого D50 Ханта, если они не достигаются.
Если мы возьмем "диапазон Линдблума" 360 to 830 nm или шире (не имеет значения если шире потому что там нули) с шагом так же 5 нм, то чтобы "попасть" в искомые (ASTM?) X=0.96422 Y=1 Z=0.82521 нам потребуется температура источника D 5002.2 - 5002.4. Вот тут уже как-то все поточнее становится.

Мой практический интерес заключается в следующем: вычисляя координаты CIE Lab из например привычных спектров замеров 380 to 730 nm - лучше какие взять референсные значения XYZ белой точки? Вышецки, которого у меня тоже нет? Хант? Линдблум и его (предположительно) ASTM E308-01? Или методически вернее будет безупречно посчитать XYZ белого из такого же спектрального диапазона 380 to 730 nm, что и замеры? Или наоборот полного диапазона кривых стандартного наблюдателя 360 to 830? Но во всех случаях кроме диапазона непосредственных замеров получится XYZ из спектров мы вычислим чуть с одним белым а Lab из этого XYZ немного с другим.

За последнее время я узнал, что CIE не публиковало таблиц наблюдателей CIE и daylights component с шагом 1 нм, только 5. Все что можно найти с шагом 1 нм (например вот тут http://www.rit.edu/cos/colorscience/rc_useful_data.php) - все это интерполяции. CIE не говорит, какая интерполяция лучше хотя и изучала этот вопрос, говорит, что надежные результаты с шагом 5. Для меня тоже пока остается открытым вопрос, методом какой именно интерполяции лучше превратить таблицы с шагом 5 в таблицы с шагом 1 наблюдателей CIE, daylights component, или источников F с острыми пиками. Бог с ним, еще поковыряюсь. Так же экспериментально убедился в том, что наши программы вроде MT и PO - интерполируют наши обычные спектры с шагом 10 нм в шаг 5 нм для вычисления ZYZ. Тоже учитываю. Осталось выяснить, кто какие XYZ опорного белого вычисляет и как, и самое главное - а как правильно?

Может быть мои явные разночтения с Хантом заключаются в том, что он вычисляет SPD D50 с точностью 2 знака после запятой а я 15 знаков. Перепроверю и эту теорию. В чем я убедился, так в том, что справочным таблицам и формулам в книгах лучше не доверять а перепроверять и сверять с другими источниками. Первый раз напоролся на Алексея Шадрина с перепутанными матрицами XYZ->RGB вместо RGB->XYZ в хорошей книге о калибровке мониторов, потом пошло поехало. Даже спектры D50 строго посчитать по формуле SPD для источника D и то не могут все одинаково!-)
 
Последнее редактирование:
Разница происходит из диапазона, конечно. Полагаю, что нужно принять какой-то один и в нем все считать. Принимать тот, где есть наиболее узкое место по измерениям. В моем случае, например, есть данные по CMF сенсоров 400~720 (к сожалению, так вот узко). Это и беру для расчетов.

Интерполяция принципиальную картину не изменит - у нас интегрирование, отсутствующие данные она все равно не насчитает. Линейной достаточно вполне. Сплайновую не рекомендую, т.к. даст завихрения на краях и в некоторых случаях даже в середине (спектры каких люминесцентных осветителей), это будет вранье.

А вообще, на мой взгляд, отличие в сотые доли dE уже придирки. :)
 
В моем случае, например, есть данные по CMF сенсоров 400~720 (к сожалению, так вот узко). Это и беру для расчетов.
Да я пока склоняюсь к тому же. Не то чтобы могу обосновать математически, просто представляется, что белая точка через диапазон от и до нм получается привязана к конкретным замерам а не абстрактная.

Интерполяция принципиальную картину не изменит - у нас интегрирование, отсутствующие данные она все равно не насчитает. Линейной достаточно вполне. Сплайновую не рекомендую, т.к. даст завихрения на краях и в некоторых случаях даже в середине (спектры каких люминесцентных осветителей), это будет вранье.
Сплайновую интерполяцию если брать не просто кубическую, а сплайнами Эрмита (Hermite spline) или сплайнами Акимы - там на острых пиках вполне приемлемо получается результат. Мне интерполяция собственно нужна только для тех случаев, когда имеем дело с спектрами Argyll с шагом 3-3-4 нм а не 10. Для этого должны быть таблицы с шагом 1 нм (и тут собственно я и вижу, что разного типа кривые нужные в вычислениях, а именно - наблюдателя CIE, dailight components и источников F - всех их можно интерполировать по-разному из 5 в 1). Для всего остального достаточно шага 5 от CIE. Данные экспериментальные пробовали всеми имеющимися способами интерполировать из шага 10 в 5, линейный способ точно сильно расходится с вычислениями MT и PO, кубический сплайн значительно ближе по получаемому результату XYZ и Lab. Однако надо помнить, что MT точно с PO тоже не сходятся!

А вообще, на мой взгляд, отличие в сотые доли dE уже придирки. :)
Бесспорно! Тем не менее, хочется все учесть и сделать максимально все правильно по науке. А справочники все дают разные цифры. И каждый автоитетен по своему. Да, про ASTM еще в одном цифровом источнике цифры мне прислали, те же что и у Линдблума в скриптах, значит хотя бы убедился, что да, это ASTM а не с потолка Линдблум взял.
 
Для памятки. Различия в вычислениях белой точки относительно вычислений Measure Tool. Вычисляем всякие цвета XYZ из замеров интерполированных спектров 5 из 10. Из XYZ вычисляем Lab с разной референсной белой точкой, берем ее:
1) из ASTM.
2) у Ханта.
3) вычисляем из спектра в диапазоне измерений с температурой 5000К.
4) то же самое с температурой 5003К.
5) то же самое, но без интерполяции в 5 из 10 нм.
6) вычисляем из спектра в широком диапазоне кривых стандартного наблюдателя 360 to 830 nm с шагом 5 нм.

Получаем колориметрическую разницу (дельту Е) между нашими вычислениями и MT среднюю/максимальную:
1) 0.02/0.05
2) 0.02/0.04
3) 0.01/0.03
4) 0.01/0.03
5) 0.05/0.08
6) 0.02/0.04

Похоже (варианты 3 и 4 с наименьшей дельтой) на то, что и MT берет референсный белый не из справочников, а все же вычисляет из спектров и именно в диапазоне измерений а не каком-то ином, но точно с интерполяцией из 10 в 5 нм. Пока только не могу добиться полностью нулевой дельты с ним так как дельта 0.01 возникает на стадии еще XYZ до вычисления Lab, здесь я предполагаю, играет роль именно метод интерполяции спектров из 10 в 5. В свое время перепробовали разные методы, линейная никуда не годилась, там дельта почти 0.05 как и без интерполяции если не хуже, кубическими сплайнами дает 0.01. Проверяли и Акиму и Лагранжа варианты и я уж даже не упомню чего еще - нулевую среднюю дельту между XYZ своими и MT к сожалению не получили нигде пока. И еще отметили, что интерполяции у MT и Гейделя разные точно судя по разнице XYZ, и у MT более всего похожа на кубическую а у Гейделя в PO - даже не знаю на какую! Впрочем я тогда сплайн Эрмита не проверял точно, а теперь лень PO ставить!-)
И жаль - MT не может Lab вычислить просто из XYZ (и обратно не может). Помогло бы. Может гретаговский ColorLab, но он тоже не сходится с MT при таких вычислениях. Между MT и ColorLab нехилая разница преобразования Spct->XYZ->Lab в первом и тот же XYZ->Lab во втором - не сходятся с дельтой 0.04/0.09. Значит тоже разные референсные белые используют. Ну тут как раз ясно - раз спектров не дали колорлабу - надо брать реф вайт из справочника, вычислить не из чего. Такая большая дельта косвенно подтверждает, что MT все же вычисляет свой белый из спектра.
 
Последнее редактирование:
но точно с интерполяцией из 10 в 5 нм
Интерполяций может быть две. Или одна из них. Измеренные данные же есть как для CMF, так и для осветителя под шаг 5 нм. Можете попробовать варианты.

Правда я так и не пойму, что, собственно, требуется? :) Для чего это надо? Если есть референс, так может взять его и все?
 
Если есть референс, так может взять его и все?
Так в том-то и дело, что референс в ASTM один, у Ханта - другой, у Вышецки наверное третий, из спектров в разных диапазонах и с разным шагом вычисляется и четвертый и десятый. Какой брать - вот вопрос! Я конечно в первую очередь ориентируюсь на высококачественные программы от Гретага и Гейдельберга и пытаюсь понять - а какой референс взяли они.
 
MT более всего похожа на кубическую а у Гейделя в PO - даже не знаю на какую
Поднял старые записи - на Акиму больше всего интерполяция у Гейделя в ColorTool похожа если судить по колориметрическому отклонению. Акима кстати полная противоположность Лагранжу, если судить по этому php-визуализатору с открытым кодом (кое что я оттуда перевел на яваскрипт): http://ross.vc/graph/
Тогда как CIE все время пишет про Лагранжа.

Я понимаю так, что для разного рода спектров - разные интерполяции лучше подходят. Для плавных кривых красок - кубическая и возможно Лагранж, для резких пиков осветителей F - что-то другое. Надо поразбираться. Здесь https://www.google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=http://vision.vein.hu/interpolation/SandorSpectralInterpolErr-1.doc&ei=2H3RU-yxJ6npywOy74Jg&usg=AFQjCNHkX-qeKj4o1m4f0qXDXA6hh8kh8Q&sig2=6FckBE8Y_8Tlvoc6JkC-ww&bvm=bv.71778758,d.bGQ сказано в 4 разделе, что "Простая выборка 5 нм лучше, чем линейная интерполяция из 5 в 1 нм" - с чем я безусловно согласен.
 
А что CIE советует? Какой референс? Может его и взять?

На имеющиеся программы лично я бы не ориентировался, т.к. они полны различных ошибок, багов и допущений. История с матрицами адобовских профилей из соседней темы как бы говорит нам. Аналогично профили от PhaseOne, которые давеча ковырял, так же навевают печаль.
 
А что CIE советует? Какой референс? Может его и взять?
У CIE на сайте не так и много выложено. Все самое фундаментальное только, типа кривых наблюдателей и компонентов дневного света и так далее, а производных от всего этого - типа белых референсов в XYZ там нет. Это как раз в стандарте ASTM E308 все должно быть если я правильно понял и собрано и обосновано. Если кто сей стандарт поимеет - пульнитесь в меня!
Пока придерживаюсь MT - чтобы вычисления ближе всего с ним совпадали. Главное не забывать, что все отличное от D50 он приводит через хроматическую адаптацию к D50, в лоб с ним сравнить честный Lab D65 10 гр. нельзя.
 
  • Спасибо
Реакции: timg
Спасибо за ссылку! Ну вот кое что становится понятно с ASTM и моими с ним небольшими разночтениями. В ASTM берут спектральные компоненты, как рекомендует и Линдблум, в полном диапазоне обозревателя CIE 360-780 нм (Хант берет меньше) и с интервалом 10 и 20 нм, и с точностью 3(5) знака после запятой. Референсы XYZ из ASTM Линдблум берет для 10 нм. Я беру компоненты спектров с точностью не менее 6 знаков после запятой (таблицы от CIE) и не менее 15 знаков (например вычисления SPD источника D или A), что безусловно влияет на результат XYZ при суммировании произведений, и так же беру выборку как 10, так и 5 нм (второе CIE считает точнее) в соответствии с тем, интерполирую ли я замеры из 10 в 5 или нет на выбор (MT и PO интерполируют). Можно брать выборку с интервалом 1 или 3-3-4 нм - но это уже в зависимости от входящих данных редких замеров Argyll.
Таким образом получается, что на значения XYZ ref white влияет несколько факторов: точность таблиц спектральных компонент, диапазон длин волн, и интервал длин волн. Поэтому, сравнивая тот или иной референс белого надо уточнить, каковы были эти три параметра при вычислении.
Открытым остается вопрос, должен ли совпадать диапазон спектра белого с диапазоном измеренных данных, или должен быть шире до значений 360-780. С интервалом, думаю, должен точно совпадать, будет мне кажется ошибкой взять белый референс 20 нм для измерений с интервалом 5 нм и наоборот и считать Lab с таким "чужим" белым.
 
Вот собрал различия в вычислении референсного белого для D50 2 гр:

ASTM: 360-780 nm, 10 nm, X=0.96422, Z=0.82521
CIE: 380-780 nm, 5 nm, X=0,9642, Z=0,8251
Hunt: 380-780 nm, 5 nm, X=0,9641, Z=0,8250​

Не совсем понятно при этом, почему у Ханта цифры XYZ отличаются немного от CIE?
Зато хорошо видно, что CIE и Hunt берут для вычисления диапазон длин волн, не совпадающий с диапазоном Линдблума и ASTM (кривые стандартного наблюдателя CIE на значениях, отличных от нуля).

Еще вопрос возник по ходу, ASTM берет температуру источника A = 2855,6К, но чаще в источниках я встречал 2856К для иллюминанта А. Какая температура правильная? Тут конечно средняя дельта сильно меньше одной сотой но тем не менее.
 
Не решил, какие XYZ иллюминантов "правильные" с точки зрения CIE, в разных ситуациях по-разному. Ну значит так и реализовал:
1) Взять White Point XYZ из стандарта ASTM E308-01 (360-780 нм, шаг 10 нм)
2) вычислить White Point XYZ из спектра осветителя в диапазоне данных Input по CIE*
3) вычислить WP XYZ по CIE в диапазоне 380-780 нм с шагом 5 нм - practical purpose**
4) WP XYZ по CIE в диапазоне 360-830 нм с шагом 1 нм - fundamental colorimetric***

* "It is important to use the same wavelength interval and range
throughout for any set of calculations". CIE 15.2004 p.13

** practical purpose - "For most practical purposes, the summation may
be approximated by using wavelength intervals, Δλ equal
to 5 nm over the wavelength range 380 nm to 780 nm". CIE 15.2004
p.12"

*** fundamental colorimetric - "functions and integrating each set of
products over the wavelength range corresponding to the entire visible
spectrum, 360 nm to 830 nm. The integration can be carried out by
numerical summation at wavelength intervals, Δλ, equal to
1 nm". CIE 15.2004 p.12

Осталось решить, какой вариант белой точки предлагать по дефолту. Для тех кто сверяется с Линдблумом нужен первый, для доверившихся Measure Tool - второй. Сами CIE приводят табличный образец вычисления XYZ иллюминанта для третьего варианта.
 
сказано в 4 разделе, что "Простая выборка 5 нм лучше, чем линейная интерполяция из 5 в 1 нм" - с чем я безусловно согласен.
А почему так? Ну, если не считать побочных эффектов в виде увеличения объемов вычислений. А по смыслу и точности должно быть то на то.
 
А по смыслу и точности должно быть то на то.
Ну может быть. Я при линейной интерполяции не очень понимаю, какие данные могут дать большую точность, разве что спектр иллюминанта Е?
 
А хотя... я сейчас задумался и склоняюсь к тому, что даже линейная интерполяция SPD должна (теоретически) дать небольшую прибавку точности.
Откуда? Да вот отсюда: Welcome to Bruce Lindbloom's Web Site
Мы же помним, что SPD осветителей нам даны с шагом 5 нм, а CMF наблюдателя 1 нм. И потом они перемножаются!
То есть проинтерполировав SPD осветителя до шага 1 нм, мы конечно же не родим никакой дополнительной информации о нём самом. Но мы получим возможность нормально перемножать спектр с более точно заданной CMF.
А если не проинтерполируем, то нам (если я правильно понимаю процесс) и CMF нужно брать с шагом 5 нм - то есть искусственно загрубить их.
 
Насколько я понимаю в данном вопросе мы бессильны проверить точность, эталона нет, можем только предполагать. CMF - это плавные кривые, то есть брать для них шаг хоть 5 хоть 0,5 - по мне так то же на то же.
Вот D50 бы получить замер (не расчет) с шагом в нанометр - это было бы здорово.
 
Статус
Закрыто для дальнейших ответов.