- Сообщения
- 4 860
- Реакции
- 2 886
Назрел давно насущный вопрос, который требует разрешения, вот уже и в личку спрашивают, лучше подробно в паблике разберем. Итак, есть явные вопиющие несоответствия (пока отложим незначительные - рассмотрим именно вопиющие) в лабах для света ну например D65 (главное не D50) в разных программах разберем по существу откуда ноги растут у ошибок.
Вот исходный спектр первого попавшегося тестового образца, на котором будем упражняться (380-730 нм шаг 10):
Вот результаты разных вычислений, смотрим сразу на последнюю цифру b-координаты и видим две группы цифр - около 0 и около 8, какие из них неверные и почему (D65 2 гр):
1 colorlabNoCat 8.95 11.83 9.79 40.95 -19.08 -0.11
2 colorlabCAT02 9.18 11.85 7.40 40.97 -17.27 8.68
3 Argyll 8.9487 11.831 9.7842 40.946 -19.080 -0.082804
4 My_cat02 9.50 12.25 7.66 41.61 -17.41 8.76
5 My_bradford 9.16 11.82 7.46 40.92 -17.24 8.40
6 My_NoCat 8.95 11.83 9.79 40.95 -18.00 8.60
7 My_mistake_On 8.95 11.83 9.78 40.95 -19.07 -0.08
8 lindbloomNoCat 8.95 11.83 9.78 40.9446 -17.9772 8.6117
9 MT 9.18 11.85 7.40 40.97 -17.27 8.68
Как видим, XYZ везде близко совпадают, а вот далее наступают огромные разночтения в лабах. Кто врет? Смотрите, сходятся Линдблум, Measure Tool, колорлаб с хромадаптацией и мой калькулятор - b-координата =8. И сходятся Argyll, colorlab без хромадаптации и "My_mistake_On" b-координата =0. "My_mistake_On" - специальный переключатель, который есть у меня в дополнительных установках хромадаптации, чтобы имитировать неправильные вычисления. Впрочем он как раз для поиска логики во всей этой каше и сам возможно должен быть еще переписан капельку, надо дожать вопрос.
В чем смысл - история интересная! Многие программы без предупреждения включают хроматическую адаптацию. Как работают формулы, для координат XYZ D65 вычисляется поправка на D50 - это и есть хроматическая адаптация к D50, так нужно делать для правильного профилирования, во всех профилях хранятся адаптированные лабы. Отсюда хитрый вопрос - а для вычисления Lab какой свет теперь надо подать для вычислений из адаптированных XYZ - D50 или D65? Тут и сидит ошибка потому что в данном случае Аржилл подал свет D65 при вычислении Lab из XYZ уже D50, а надо было как у меня, MT и линдблума в случае хромадаптации XYZ к D50 подать в формулу Lab D50 а без хромадаптации - D65.
Вот эта штука нам тоже поможет http://www.brucelindbloom.com/iPhone/ColorConv.html если и там не сидят ошибки связанные с хромадаптацией (я уже устал ковыряться в логике Линдблума). Посчитайте из XYZ так и сяк. И в мой калькулятор можно пихать чистый XYZ без всего если надо.
У меня в настройках хромадаптации есть переключатель "Считать Lab как Measure Tool" - он работает автоматически, но можно на нем нажимать - тогда будет считать по желанию лабы с ошибкой как Argyll. Автомат вернется с кнопкой Reset.
Если вдруг обнаружите, что у меня логика автомата переключателя неправильная - скажите, я сразу перепишу скрипт. Автомат возвращается кнопкой Reset.
Я нашел ошибку как раз на разнице между кодом Линдблума, который люблю почитать, и вычислениями MT и учел в своем калькуляторе. А тут видите и у Argyll с колорлабом порой собственная логика.
Чуть позже разберем, почему цифры не сходятся в десятых и сотых - сейчас магистральный вопрос - почему разница по b-координате в 8 единиц.
Надеюсь по результатам обсуждения попонятнее написать для пользователя логику работы автомата у меня в калькуляторе mistake/no mistake - пока просто не надо трогать автомат и дать считать правильно (или убрать вообще эту кнопку, но без нее исследовать вопрос сложнее).
Я уже наступал на эти грабли, по которым прошелся и Argyll и Линдблум так что готов еще вопрос обкурить.
Что точно видно из приведенных цифр это то, что колорлаб и MT при хроматической адаптации CAT02 от D65 к D50 дают правильные идентичные цифры. Но вот без хромадаптации один считать не умеет а второй считает не правильно. С моим CAT02 они слегка не сходятся скорее всего потому, что задействуют упрощенный алгоритм, а я задействую полный. Точнее отвечу, когда тоже пропишу еще и упрощенный тоже для изучения.
Вот исходный спектр первого попавшегося тестового образца, на котором будем упражняться (380-730 нм шаг 10):
Код:
0.0406 0.0502 0.0576 0.0618 0.0707 0.0749 0.0796 0.0825 0.0845 0.0889 0.1029 0.1343 0.1690 0.1746 0.1615 0.1576 0.1517 0.1227 0.0948 0.0881 0.0911 0.0915 0.0875 0.0836 0.0843 0.0879 0.0942 0.1055 0.1190 0.1264 0.1251 0.1196 0.1107 0.1060 0.1121 0.1306
1 colorlabNoCat 8.95 11.83 9.79 40.95 -19.08 -0.11
2 colorlabCAT02 9.18 11.85 7.40 40.97 -17.27 8.68
3 Argyll 8.9487 11.831 9.7842 40.946 -19.080 -0.082804
4 My_cat02 9.50 12.25 7.66 41.61 -17.41 8.76
5 My_bradford 9.16 11.82 7.46 40.92 -17.24 8.40
6 My_NoCat 8.95 11.83 9.79 40.95 -18.00 8.60
7 My_mistake_On 8.95 11.83 9.78 40.95 -19.07 -0.08
8 lindbloomNoCat 8.95 11.83 9.78 40.9446 -17.9772 8.6117
9 MT 9.18 11.85 7.40 40.97 -17.27 8.68
Как видим, XYZ везде близко совпадают, а вот далее наступают огромные разночтения в лабах. Кто врет? Смотрите, сходятся Линдблум, Measure Tool, колорлаб с хромадаптацией и мой калькулятор - b-координата =8. И сходятся Argyll, colorlab без хромадаптации и "My_mistake_On" b-координата =0. "My_mistake_On" - специальный переключатель, который есть у меня в дополнительных установках хромадаптации, чтобы имитировать неправильные вычисления. Впрочем он как раз для поиска логики во всей этой каше и сам возможно должен быть еще переписан капельку, надо дожать вопрос.
В чем смысл - история интересная! Многие программы без предупреждения включают хроматическую адаптацию. Как работают формулы, для координат XYZ D65 вычисляется поправка на D50 - это и есть хроматическая адаптация к D50, так нужно делать для правильного профилирования, во всех профилях хранятся адаптированные лабы. Отсюда хитрый вопрос - а для вычисления Lab какой свет теперь надо подать для вычислений из адаптированных XYZ - D50 или D65? Тут и сидит ошибка потому что в данном случае Аржилл подал свет D65 при вычислении Lab из XYZ уже D50, а надо было как у меня, MT и линдблума в случае хромадаптации XYZ к D50 подать в формулу Lab D50 а без хромадаптации - D65.
Вот эта штука нам тоже поможет http://www.brucelindbloom.com/iPhone/ColorConv.html если и там не сидят ошибки связанные с хромадаптацией (я уже устал ковыряться в логике Линдблума). Посчитайте из XYZ так и сяк. И в мой калькулятор можно пихать чистый XYZ без всего если надо.
У меня в настройках хромадаптации есть переключатель "Считать Lab как Measure Tool" - он работает автоматически, но можно на нем нажимать - тогда будет считать по желанию лабы с ошибкой как Argyll. Автомат вернется с кнопкой Reset.
Если вдруг обнаружите, что у меня логика автомата переключателя неправильная - скажите, я сразу перепишу скрипт. Автомат возвращается кнопкой Reset.
Я нашел ошибку как раз на разнице между кодом Линдблума, который люблю почитать, и вычислениями MT и учел в своем калькуляторе. А тут видите и у Argyll с колорлабом порой собственная логика.
Чуть позже разберем, почему цифры не сходятся в десятых и сотых - сейчас магистральный вопрос - почему разница по b-координате в 8 единиц.
Надеюсь по результатам обсуждения попонятнее написать для пользователя логику работы автомата у меня в калькуляторе mistake/no mistake - пока просто не надо трогать автомат и дать считать правильно (или убрать вообще эту кнопку, но без нее исследовать вопрос сложнее).
Я уже наступал на эти грабли, по которым прошелся и Argyll и Линдблум так что готов еще вопрос обкурить.
Что точно видно из приведенных цифр это то, что колорлаб и MT при хроматической адаптации CAT02 от D65 к D50 дают правильные идентичные цифры. Но вот без хромадаптации один считать не умеет а второй считает не правильно. С моим CAT02 они слегка не сходятся скорее всего потому, что задействуют упрощенный алгоритм, а я задействую полный. Точнее отвечу, когда тоже пропишу еще и упрощенный тоже для изучения.
Последнее редактирование: