BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/lj/archive/2009/0604.1422.html

дорогая цветопередача
06.04.09 14:22 // оригинал
На выходных наконец-то дошли руки до того, чтоб закрыть оставшиеся косяки с цветопередачей нового монитора. Во первых строках поста, конечно, хочется передать отдельный привет виндовой системе управления цветами (ICM). Чтобы воспользоваться цветовым профилем, хоть стандартным от монитора, хоть полученным в результате калибровки, нужно выполнить аж три условия.

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

Во-вторых, загрузить его в LUT монитора (если он такое понимает, как NECовская тридцатка) или видеокарты (в случае Dellовской тридцатки), в последнем случае это нужно проделывать при каждом старте системы. Причем диалоги UAC от висты и от семерки все нафиг сбрасывают (еще один повод избавляться от UAC), хорошо хоть в семерке появилась возможность отключать затемнение экрана, переключение в которое и дает такой эффект. Кстати, в семерке появилась возможность загрузки профиля штатными средствами, уже прогресс - раньше для этого приходилось пользоваться внешними загрузчиками (галочка Color Management->Advanced->Change system defaults->Advanced->Use Windows display calibration, есть шанс, что это отразится и на сбросе от UAC, уже неохота проверять).

Эффект от загрузки профиля уже вполне заметен, но и это еще не все. Финальный штрих - прикладная программа должна быть в курсе того, какой профиль выбран в системе, и при выводе проводить преобразование из цветового пространства медиафайла в системное (хорошо бы при этом считывать информацию из самого файла, но на худой конец сойдет и расчет на то, что там sRGB). Хорошая демонстрация того, что бывает при игнорировании информации из файлов, есть тут; в браузерах, не признающих ICM, наиболее нагляден пример из раздела "Why is color management important".

Для обычных мониторов последнее условие в основном важно при работе с фотографиями, на мониторах же с так называемым расширенным цветовым охватом (wide gamut), к которым относятся обе упомянутые тридцатки, это становится актуально везде (за подробностями - сюда, если на пальцах, то в противном случае все выглядит примерно как при задирании saturation). Я не очень понимаю, почему за те почти 15 лет, что прошли после появления ICM в Windows'95, никому в Microsoft не пришло в голову избавить пользователей от этого геморроя, дав общесистемную настройку, обеспечивающую для программ, слыхом не слыхавших про ICM, хотя бы дефолтовое преобразование sRGB->монитор. Но что имеем, то имеем, а поведение UAC, не изменившееся в семерке, лишь демонстрирует, в каком загоне тут работа с цветами.

Итого, для адекватной передачи цветов на мониторах с wide gamut выбор прикладных программ становится жизненно важным. В случае фото или веба все тривиально. Фотошоп, Lightroom и стандартный просмотрщик висты/семерки о всех этих заморочках в курсе и подхватывают все на ура, у ACDSee и FastPictureViewer есть подходящие настройки. IrfanView грозится обеспечить полную поддержку ICM со следующей версии, пока же от него пришлось отказаться. На вебе выбор невелик - сафари или третий FF (можно поставить плагин, можно в about:config врубить фильтрацию по gfx.color и поменять пару свойств, эффект будет тот же) - кстати, советую это сделать и заценить разницу с IE или на упомянутой выше странице, или тут.

С видео же полный швах - насколько я понял, практически все медиаплейеры просто игнорируют работу с цветами. Конечно, ixbtшная ветка по деллу полна восторгов о ярких цветах, но лично для меня веселый загар большинства персонажей большинства фильмов, переходящий в нездоровый румянец, кислотный зеленый цвет травы и прочие прелести расширенного охвата (а уж во что превращаются стартрековские красные униформы - просто непередаваемо) - вовсе не то, о чем мечталось. К счастью, небольшой поиск привел на страницу с описанием грязного хака, позволяющего подхватить ICC-профиль в Media Player Classic - через редактирование шейдеров (раздел "4. Experimental colour correction in Media Player Classic"). Проверил, результат вполне удовлетворителен. Единственный подводный камень - при переносе полученного шейдера нужно учесть, что в системе с русской локалью запятые в числах нужно заменить на точки. Кроме того, чтобы при просмотре через VMR9 черный цвет выглядел как черный, а не темно-серый, стоит подправить первую строчку функции main этого шейдера, позаимствовав код из шейдера "16-235 -> 0-255".

Окончательный вариант для моих настроек выглядит так:


sampler s0 : register(s0);
float4 p0 : register(c0);

static float4x4 r2r =
{
0.701797172201328,0.31522478186818,-0.0170219540695086,0,
0.0424436523871912,0.948910562083758,0.00864578552905135,0,
0.0112113910919667,-0.0114383758869162,1.00022698479495,0,
0, 0, 0, 0
};

#define Const_1 (16.0/255.0)
#define Const_2 (255.0/219.0)

float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c0 = ( tex2D( s0, tex ) - Const_1 ) * Const_2;
c0 = pow(c0, 2.2);
c0 = mul(r2r, c0);
c0 = saturate(c0);
c0 = pow(c0, 1/2.2);
return c0;
}


Что особенно забавно: получается (из того, как это реализовано), что единственное, чего не хватает всем прочим программам после загрузки профиля в систему, - правильного выставления цветовых координат чистых цветов. Если б система могла использовать эти 9 чисел самостоятельно, не пришлось бы рыть носом в поисках правильных программ.

 
теги: софт, цацки  |  обсудить  |  все отзывы (0)  |  обсудить в LJ [1639]
назад «  » вперед

аналогичные материалы
ihrkampfное // 02.10.24 16:30
синхронное // 13.06.24 18:07
автоматизаторское // 16.05.24 18:12
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
тейлскейлное // 18.04.23 20:43
ютубноподкастное // 15.10.22 22:07
дваждыодиннадцатое // 22.06.22 03:30
безоблачнопарольное // 22.03.22 23:05
объективноапгрейдное // 25.02.22 21:07
 
последние записи
ihrkampfное // 02.10.24 16:30
отпускное // 08.07.24 23:02
синхронное // 13.06.24 18:07
автоматизаторское // 16.05.24 18:12
песчаное // 13.03.24 18:05
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
qtменюшное // 29.09.23 23:47
неестественноинтеллектуальное // 29.09.23 16:50
основательное // 18.09.23 00:15





  Copyright © 2001-2024 Dmitry Leonov Design: Vadim Derkach