Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

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

pell

Участник
Топикстартер
Сообщения
221
Реакции
0
Добрый день, уважаемый all!

Планирую в ближайшем будущем обзавестись двухмониторной конфигурацией. Впервые в жизни. В силу специфики работы все мониторы необходимо профилировать. В связи с этим возник ряд технических вопросов, как-то.

Общая информация
Насколько я понимаю, в процессе калибровки кроме всего прочего вычисляются поканальные функции точной коррекции гаммы (т.е., функции F:[0,255]→[0,255], F(x)=y, где x — значение цветового канала с заданным наперёд значением гаммы, y — соответствующее ему значение интенсивности цветового канала монитора). Вследствие этого, полное преобразование из, например, sRGB в Monitor-RGB выполняется следующим образом:
  • преобразование sRGB→PCS→Monitor-RGB или прямое sRGB→Monitor-RGB силами Colour Management подсистемы (Microsoft, Adobe и т.д. — неважно). Полученные RGB значения — трёхстимульные значения в кардинальной «мониторной» RGB системе с «идеальной» (например, 2.2) гаммой;
  • значения RGB передаются драйверу видеокарты для отображения. Драйвер видеокарты, используя функции точной коррекции гаммы, преобразует значения в «истинные» мониторные R'G'B';
  • значения R'G'B' используются для отображения.

Правка терминологии приветствуется (спецификацию ICC знаю чуть не наизусть, с техническими же деталями реализации технологии знаком только на уровне «воткнул калибратор, протёр монитор салфеткой, запустил ПО, получил профиль, ляпота!»)

Вопросы
  1. Поддерживает ли Microsoft Windows Vista в двухмониторных конфигурациях различные профайлы для различных мониторов? Т.е., можно ли назначить каждому монитору индивидуальный цветовой профайлы?
  2. Поддерживает ли Microsoft Windows Vista в двухмониторных конфигурациях различные функции коррекции гаммы для различных мониторов, или это зависит от видеоадаптера/драйверов видеоадаптера?
  3. Существует ли возможность в конфигурации "один PC - один видеоадаптер - два монитора" назначить каждому монитору не только свой профиль, но и индивидуальную коррекцию гаммы?
  4. Зависят ли ответы на вопросы от модели видеоадаптера?

Подробности
  • OS Microsoft Windows Vista Home Basic (или, возможно, Home Premium) 32bit
  • ноутбук Dell Inspiron E1405 (или, возможно, 1420)
  • видеоадаптер — Interl Graphics Media Accelerator 950 (или, возможно, Intel Graphics Media Accelerator X3100). Теоретически существует возможность установки 128MB nVidia GeForce 8400M GS, но практически использовать дискретный видеоадаптер очень не хочется (очень-очень-очень-очень)
  • один из мониторов — встроенная в ноутбук TFT панель. В случае необходимости готов пожертвовать точной коррекцией гаммы именно на встроенной панели, внешний монитор должен быть калиброван/профилирован с максимальной возможной точностью
  • профиль, к сожалению, только Matrix/TRC. В связи с техническими ограничениями имеющихся программно-аппаратных средств
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

pell сказал(а):
но практически использовать дискретный видеоадаптер очень не хочется (очень-очень-очень-очень)

Честно говоря никогда не настраивал 2-х мониторный конфиг а тем более в Висте. Но читая форум уловил что видиоадаптер nVidia (и наверное встроенный Intel) распознаются системой как одно устройство следовательно калибровать их по-отдельности не удастся. Карты Radeon (ATI) распознаются как два разных устройства и проблем с калибрацией не возникает. Впрочем если наплевать на экран лептопа то второй монитор можно откалибровать на любом видеоадаптере.
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

pell сказал(а):
Вследствие этого, полное преобразование из, например, sRGB в Monitor-RGB выполняется следующим образом:
Верно. Лишь небольшое уточнение. На стадии sRGB→XYZ(PCS) rgb сперва переводятся в linear-energy (т.е. убирается гамма-компенсация). Затем выполняется матричное преобразование. На стадии XYZ→MonitorRGB выполняется обратное действие, rgb обратно подвергаются степенной компрессии в целевую гамму (тег TRC в профиле). Здесь можно увидеть пример.

Не все программы выполняют полное преобразование из, например, sRGB в Monitor-RGB. Здесь я попытался кратко перечислить варианты.
pell сказал(а):
Правка терминологии приветствуется
Место в профиле, где храниться "функция точной коррекции гаммы", принято называть vcgt. Место, где происходит вычисление "функции точной коррекции гаммы" принято называть LUT. В случае LCD-монитора таких мест минимум два (в случае двухмониторной системы соответственно четыре). Один LUT на видеокарте, второй внутри процессора монитора. Они равноправны, последовательны. Могут иметь разную разрядность, и соответственно, разный уровень ошибок дискретизации. Доступ к ним также различен. LUT видеокарты можно загрузить через функции драйвера, а можно и штатной функцией API (в windows), LUT собственно монитора порой доступен по DDC (обращение к шине i2c). Содержимое LUT видеокарты можно проверить программой CalibrationTester.

Windows самостоятельно не загружает vcgt в LUT. Нужен "загрузчик". Таких программ много, Adobe Gamma Loader, Logo Calibartion Loader и т.п. От "интеллекта" загрузчика зависит, сможет ли он в двухмониторной конфигурации правильно загрузить оба LUT'а. Порой это приходится делать вручную.

Второе место, где понадобятся данные о профиле(ях) монитора - display compensation. Это собственно CMS. Выполняет display compensation пользовательская программа. От "интеллекта" программы зависит, сможет ли он в двухмониторной конфигурации правильно загрузить данные профилей. Photoshop может.

Я не давал готовых ответов, но попытался подсказать, от каких компонент эти ответы зависят.
 
Ответ...

sabos сказал(а):
Место в профиле, где храниться "функция точной коррекции гаммы", принято называть vcgt.

В моём мониторном профиле есть следующие тэги (подряд):
1) desc - description
2-4) rXYZ, gXYZ, bXYZ - кардиналы
5-7) rTRC, gTRC, bTRC - гамма
8) wtpt - white point
9) cprt - copyright
A) bkpt - black point
B) vcgt - нестандартный тэг, внутри лежат странные данные, которые я интерпретировать не смог.
C) chad - chromatic adaptation
D) dmnd - device manufacturer
E) dmdd - device model

Тэг B - тот самый, загружаемый, как я понял, в LUT то ли видеоадаптера, то ли видеокарты. Загружает его в моём случае Pantone'овский софт. Куда именно - непонятно.

sabos сказал(а):
Второе место, где понадобятся данные о профиле(ях) монитора - display compensation. Это собственно CMS. Выполняет display compensation пользовательская программа. От "интеллекта" программы зависит, сможет ли он в двухмониторной конфигурации правильно загрузить данные профилей. Photoshop может.

Собственно, кроме Photoshop и Canon Digital Photo Professional мало что интересует. Подозреваю, что DPP тоже сможет. Или не сможет:)

sabos сказал(а):
Я не давал готовых ответов, но попытался подсказать, от каких компонент эти ответы зависят.

Получается, что в моём случае алгоритм поиска ответа следующий:
1) выяснить, куда именно загружает vcgt-данные Pantone'овский софт
2) выяснить, поддерживает ли Pantone'овский софт загрузку vcgt-данных в LUT монитора
3) выяснить, поддерживает ли Pantone'овский софт загрузку vcgt-данных в два (и более) мониторов из различных профилей
4) если да, то проблемы могут возникнуть только с назначением в Vista каждому монитору своего профиля (умеет ли это Vista вообще, или в системе один профиль на все мониторы?)
5) если нет, то приобретать другой софт (радикальный способ - написать собственный загрузчик)

Огромное спасибо за содержательный ответ! Теперь хотя бы понятно стало, в каком направлении копать.

Однако Самый Главный Вопрос(TM) остался без ответа — можно ли в Windows Vista назначить каждому монитору свой профиль, или профиль в системе один на все мониторы и тратить время, силы и энергию на разбирательства с LUT'ами бессмысленно?
 
Ответ: Ответ...

pell сказал(а):
В моём мониторном профиле есть следующие тэги
А где lumi? Чуть поясню. Раньше, в профилях версии 2, тег wtpt описывал белую точку as-is. Это вызывало некоторые проблемы с PCS, неграмотный софт ничтоже сумняшеся стыковал профили с разными (по белому) PCS. Дабы прекратить этот бардак, icc рекомендовала насильно ставить wtpt в D50, а к данным применять хроматический переход (по Бредфорду). chad - матрица этого перехода. Теперь появилась другая проблема - узнать белый можно, лишь обратив chad. А яркость вообще узнать нельзя. Поэтому icc рекомендовала дополнить профиль тегом lumi - истинной белой точкой.
pell сказал(а):
vcgt - нестандартный тэг, внутри лежат странные данные, которые я интерпретировать не смог.
Примитивный одномерный массив (index table). Ранее был 8-разрядным (255 значений, точку 0 изменить нельзя). Теперь, с распространением 10-bit (и более) LUT - vcgt стал точнее. Кстати, редактировать этот тег можно, как коммерческими, так и бесплатными программами.
pell сказал(а):
Тэг B - тот самый, загружаемый, как я понял, в LUT то ли видеоадаптера, то ли видеокарты. Загружает его в моём случае Pantone'овский софт. Куда именно - непонятно.
Воспользуйтесь моим советом насчет бесплатной утилиты CalibrationTester - станет понятнее, куда именно.
pell сказал(а):
2) выяснить, поддерживает ли Pantone'овский софт загрузку vcgt-данных в LUT монитора
С вероятностью 80% - нет. Скорее всего грузит в LUT видеокарты. Загрузку непосредственно в монитор умеют считанные программы на считанных моделях LCD. Например i1 match с его PBC-технологией или BasICColor Display.
pell сказал(а):
3) выяснить, поддерживает ли Pantone'овский софт загрузку vcgt-данных в два (и более) мониторов из различных профилей
Даже если он ошибается - не страшно. Кроме Pantone'овского loader'a процесс загрузки vcgt в LUT выполняет еще большое множество утилит. Здесь у вас есть маневр.
pell сказал(а):
4) если да, то проблемы могут возникнуть только с назначением в Vista каждому монитору своего профиля (умеет ли это Vista вообще, или в системе один профиль на все мониторы?)... Однако Самый Главный Вопрос(TM) остался без ответа
Еще windows 2000 это умел. Если распознавал два монитора. Здесь lunatik прав, в некоторых моделях Nvidia хитрила, и в двухмониторной конфигурации отдавала системе один монитор, типа 2560x1024.
pell сказал(а):
5) если нет, то ... радикальный способ - написать собственный загрузчик
Моя молодежь со своим Linux так и поступила, способ agryll не сработал.
 
Ответ: Ответ...

sabos сказал(а):

Нету. Чуть поясню. Спецификацию ICC знаю чуть не наизусть, Matrix/TRC профили бегло читаю в hex-редакторе (последствия отладки собственноручно писаной CMS), с CLUT'овскими чуть хуже - многомерные таблицы в hex'е читать так и не научился.

sabos сказал(а):
Примитивный одномерный массив (index table). Ранее был 8-разрядным (255 значений, точку 0 изменить нельзя). Теперь, с распространением 10-bit (и более) LUT - vcgt стал точнее.

Спасибо, получается, правильно расшифровал семантику по косвенным признакам. У меня - 16bit. Интересно - максимальная интенсивность красного канала измерена как E8CB=59595, зелёного - E7D8=59352, синего - EFC5=61381. Больше всего интересует, откуда такая точность при измерении по то ли 32, то ли 48 образцам:) Однако интерполяция!

sabos сказал(а):
Кроме Pantone'овского loader'a процесс загрузки vcgt в LUT выполняет еще большое множество утилит. Здесь у вас есть маневр.

Это да, помнится, vgrin с iXBT писал свой LUT-loader. Однако, я правильно понимаю, что одна видеокарта = один LUT. И с загрузкой vcgt в видеоадаптер я остаюсь с одним монитором, настроенным точно, и с одним - не шибко?

sabos сказал(а):
Еще windows 2000 это умел. Если распознавал два монитора. Здесь lunatik прав, в некоторых моделях Nvidia хитрила, и в двухмониторной конфигурации отдавала системе один монитор, типа 2560x1024.

Ура! Самый Главный Вопрос(TM) прояснился. Двухмониторную конфигурацию можно собирать смело. Остальное - вопрос применения правильного софта (я, в принципе, готов пожертвовать vcgt тэгом профиля ноутбучной матрицы - всё равно там и цветовой охват аховый, и серый гуляет, и чёрный не шибко чёрный.

Ещё раз спасибо за консультацию :thumbs_up
 
Ответ: Ответ...

pell сказал(а):
У меня - 16bit. Интересно - максимальная интенсивность красного канала измерена как E8CB=59595, зелёного - E7D8=59352, синего - EFC5=61381.
Она не "измерена", она вычислена. Чуть поясню ;-). Задачей LUT-коррекции есть не только приведение яркостных к целевой TRC (к степенной). Но и приведение точки белого к целевой. Пусть некий монитор имеет native white зеленого цвета. Мы можем исправить это, ограничив зеленый канал через LUT. Измеряем XYZ-значения для r255g255b255 при линейном LUT, определяем разность с эталоном (пусть D65), вычисляем коррекцию, загружаем в LUT. Кстати, аналогичным способом можно управлять и светлотой. Способ коррекции через LUT имеет лишь один недостаток - вносит ошибку дискретизации. Иногда заметную.
pell сказал(а):
Больше всего интересует, откуда такая точность при измерении по то ли 32, то ли 48 образцам:) Однако интерполяция!
Для измерения белого достаточно одного образца. Белого. А точность происходит от усреднения промеров - за 1 сек прибор успевает сделать 60-100 промеров. Кроме того, различайте стадию линеаризации (построения vcgt) и профилирования. На первой замеряется заметно больше 50 образцов.
pell сказал(а):
правильно понимаю, что одна видеокарта = один LUT.
Нет. Если карта содержит три выхода (пусть VGA, DVI и TV) - она содержит три LUT. Другой вопрос - сможем ли мы до всех трех добраться. Через системный API - не факт. Через драйвер - легко. Но увы, способ "через драйвер" аппаратно-зависим и мало популярен.
 
Ответ: Ответ...

pell сказал(а):
Ура! Самый Главный Вопрос(TM) прояснился.

Однако всё не так радужно. Под рукой есть (другой) ноутбук с ATI X1400. Подключил только что к нему второй монитор. Копаюсь уже минут десять с настройками, не могу понять, где и как именно назначить основному монитору его профиль (измеренный), а второму (например) sRGB. Система (Windows XP Home SP2) всегда ставит один профиль (последний выбранный) на два монитора.

Пробовал так:
а) Start/Control Panel/Display/Settings
б) правой кнопкой по иконке монитора (с цифрой 1 или 2), Properties/Color Management, выбираю профиль из списка, Set As Default, OK
в) правой кнопкой по иконке второго монитора, Properties/Color Management, выбираю профиль из списка, Set As Default, OK
г) повторяю п. б), вижу, что профиль монитора изменился

Что я делаю неправильно?
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

Скриншот моей двухмониторной конфигурации.
 

Вложения

  • 2xDisplay_WinColorManagement.png
    2xDisplay_WinColorManagement.png
    18 КБ · Просм.: 688
Ответ: Ответ...

sabos сказал(а):
Кроме того, различайте стадию линеаризации (построения vcgt) и профилирования. На первой замеряется заметно больше 50 образцов.

А то мне не видно, сколько образцов прибор промеряет. Особенно после того, что он эти образцы жизнерадостными зелёными лампочками показывает. 32 штуки, из коих (если память не подводит, прибор дома, сейчас проверить не могу) 8 серых, 8 красных, 8 зелёных и 8 синих. Никаких дополнительных измерений не производится.

Прибор - Pantone Huey Pro.
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

sabos сказал(а):
Скриншот моей двухмониторной конфигурации.

А вот моей.
 

Вложения

  • out.png
    out.png
    22.6 КБ · Просм.: 1 018
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

У меня кстати тоже не вышло (без монитора тыкал). Сatalist вырезан на корню ибо с ним huey калибровал как-то криво. Винда ХР. Может дело в дровах карточки?
 
Ответ: Ответ...

pell сказал(а):
А то мне не видно, сколько образцов прибор промеряет... Прибор - Pantone Huey Pro.
Дык фанера тогда этот "Pantone'овский софт" :-). Профанация это, а не калибровка. Жертвам Huey могу лишь посоветовать проверить, не oem ли это. Часом не squid? Если нет, то вижу лишь один путь, разбирать исходники argyll (это GNU). Или LProf.
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

pell сказал(а):
Тогда все просто - у вас система мониторы не видит. Копать туда. Обратите внимание - у меня display четко определен, а у вас некое undefined (multiple monitors). Вот windows и плющит.
 
Ответ: Ответ...

sabos сказал(а):
Дык фанера тогда этот "Pantone'овский софт" :-). Профанация это, а не калибровка. Жертвам Huey могу лишь посоветовать проверить, не oem ли это. Часом не squid? Если нет, то вижу лишь один путь, разбирать исходники argyll (это GNU). Или LProf.

Сам знаю, что фанера. Давно уже чуть не плачу с того, что прибор есть, а воспользоваться им - нет. Да, не OEM точно.


Не по теме:
Ну ведь подключается этот Huey как HID по USB, ну дайте спецификацию чиселок, которые через стандартный протокол гоните, я себе сам профилирующее ПО напишу. От только не могут они так сделать, иначе с чего деньги зарабатывать да три светодиода + три светофильтра + одна микросхема + проводок + корпус по $100 продавать. Чуть не копеечный прибор - по сути, единственная дорогая часть - светофильтры сделать, во-первых, не слишком быстро мутнеющие со временем, во-вторых, достаточно чистых цветов, в-третьих, больше трёх (для того, чтобы можно было спектральные пропускающие хар-ки фильтров делать "псевдозональными" с узкими зонами пропускания).


P.S. С монитором (хочу брать NEC серии NX) сразу и прибор для калибровки надо бы обновить. Совсем другая жизнь начнётся!;)
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista P

Программку для автоматизации загрузки LUT «многоголовых» видеокарт, включая nVidia, буквально недавно выкладывали [POST=364889]тут[/POST]. Можно написать и свой собственный загрузчик — для этого достаточно всего лишь распарсить профиль и вызвать функцию SetDeviceGammaRamp из системной библиотеки gdi32.dll. Помимо самих значений для таблицы LUT, эта функция принимает в качестве параметра hDC — контекст графического устройства: на каком экране находится этот контекст (или большая его часть), туда и будет вывод. Соответственно, создаём по контексту на каждом экране — и вперёд.
 
Ответ: Ответ...

pell сказал(а):
Сам знаю, что фанера
Ну ведь можно было и не фанеру купить. Если вам так важно хорошее цветовоспроизведение.

Не по теме:
Я когда покупал сей девайс вполне отдавал себе отчет что покупаю. За эти деньги он работает удовлетворительно. Не супер но иначе зачем было бы продавать крутые девайсы за много килобаксов? Мне удалось добиться соответствия изображения на трех дизайнерских мониторах (старых и разных) печатному оттиску. В пределах погрешности этого самого оттиска. Погрешность большая. Но по-крайней мере все три монитора показывают одинаковую картинку. От которой можно плясать дальше.
 
Ответ: Ответ...

lunatik сказал(а):
Ну ведь можно было и не фанеру купить.

Денег было жалко!

lunatik сказал(а):
Если вам так важно хорошее цветовоспроизведение.

Tempora mutantur et nos cum illis mutamur. Когда покупал, меня и матовая матрица Dell Inspiron E1405 вполне удовлетворяла (об неё, кстати, прямо сейчас глаза и ломаю).
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

Ага я тоже так думал. Сэкономил деньги - потратил время (на попытки добиться от huey достойных результатов) теперь жалею что не купил (как люди советовали) хотя бы Eye One LT
 
Ответ: Расскажите, пожалуйста, про профилирование (калибровку) двухмониторных Vista PC

Случайно наткнулся на решение для Windows XP от... Microsoft :)

Ссылка - http://www.microsoft.com/downloads/...A0-7721-43CA-9174-7F8D429FBB9E&displaylang=en

По порядку:
а) скачать и установить Microsoft Color Control Panel Applet
б) отпрофилировать каждый из мониторов
в) запустить Start/Control Panel/Color, установить соответствие между профилями и мониторами, закрыть апплет
г) добавить а автозапуск LUT-loader. Для этого необходимо запустить апплет с ключом командной строки /L. Например, при установке в каталог по умолчанию: "C:\Program Files\Pro Imaging Powertoys\Microsoft Color Control Panel Applet for Windows XP\WinColor.exe" /L
д) удалить из автозапуска все другие LUT-loader'ы (как-то: Adobe Gamma Loader, ColorVision что-то-там-в-клеточку, Pantone-в-полосочку и т.п.)
е) перезагрузка

В Vista подобный апплет идёт в поставке by default, как окажусь вблизи Vista PC и свободного монитора одновременно, поставлю эксперимент.
 
Статус
Закрыто для дальнейших ответов.