Вопрос: поддержка icc v4

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

ametim

Участник
Топикстартер
Сообщения
17
Реакции
0
У меня такое подозрение, что Windows и граф.карты NVidia не поддерживают icc v4. Но подтверждения на официальных страницах не нашел. А что скажите вы? У кого-нибудь есть ссылки с опровержением или подтверждением моих подозрений?

И след. вопрос. Если я создал профиль версии 4 (писал об этом здесь) , как заставить монитор этот профиль использовать? Есть ли какое-нибудь бесплатное ПО для этого?

И еще один вопрос. Я сам не специалист в вашей области, я просто студент-программист. Моему шефу нужен профиль (ему нужен, а программировать мне :) ) с использованием матрицы 3х4 и гаммы. В старых версиях icc спецификации такой возможности вроде нет. Так как можно этот оффсет (4я колонка в матрице) в профиле описать?

Очень надеюсь на вашу помощь.
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
У меня такое подозрение, что Windows и граф.карты NVidia не поддерживают icc v4.

v4 -- только Vista

с уважением,
Александр
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
Я сам не специалист в вашей области, я просто студент-программист. Моему шефу нужен профиль (ему нужен, а программировать мне :) ) с использованием матрицы 3х4 и гаммы.

Исхитрись ка мне добыть
То Чаво Не Может Быть!
Запиши себе названье,
Чтобы в спешке не забыть!

А не выполнишь к утру
В порошок тебя сотру,
Потому как твой карахтер
Мне давно не по нутру!

Так что неча губы дуть,
А давай скорее в путь!
Государственное дело
Ты ухватываешь суть?

(с) Леонид Филатов "Про Федота-стрельца".

:)
 
Ответ: Вопрос: поддержка icc v4

minos сказал(а):
Исхитрись ка мне добыть
То Чаво Не Может Быть!
Запиши себе названье,
Чтобы в спешке не забыть!

А не выполнишь к утру
В порошок тебя сотру,
Потому как твой карахтер
Мне давно не по нутру!

Шеф-немец, он по-русски не поймет.
Мне посоветовали, если невозможно использовать матрицу 3х4, описать все в LUT8 / Lut16, только я несовсем понимаю как это сделать.

Достаточно будет в этой таблице записать входные таблицы, для них рассчитать и записать выходные таблицы?

И правильно ли я понял, что точки во входных и выходных таблицах имеют значения от 0.0 до 1.0? И что это всего лишь масштабное значение?

Если это все так, то спрограммировать это будет не так уж и сложно. Но блин, хотеть-то они хотят, а объснить не могут. Вот и приходиться мучить вас своими вопросами .. :( Т.е. я не специально :)
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
Шеф-немец, он по-русски не поймет.
Мне посоветовали, если невозможно использовать матрицу 3х4, описать все в LUT8 / Lut16, только я несовсем понимаю как это сделать.

Достаточно будет в этой таблице записать входные таблицы, для них рассчитать и записать выходные таблицы?

Вручную??? 'cooll)'

ametim сказал(а):
... Но блин, хотеть-то они хотят, а объснить не могут. Вот и приходиться мучить вас своими вопросами .. :( Т.е. я не специально :)

Предлагаю все-таки попросить объяснить, что надо...
 
Ответ: Вопрос: поддержка icc v4

AVorobyoff сказал(а):

Ну не совсем вручную :) Пишу программку в С++, которая мне сгенерирует входные значения от 0 до 65535 и рассчитает для каждого входного выходное значение: вых = (вх * 3х3матрица + оффсет) * гамма. А потом все это дело в профиль запишет.

Сгенерил сегодня профиль только с 3мя входными (0, 32767, 65535) /выходными (0, 25000, 65535) значениями. Но даже такой профиль не хочет ни NVidia, ни Windows признавать. Хотя ICC Profile Inspector и Profile Dump признают его годность.

Наверно, придется с Вами согласится. Уж пусть лучше объясняют ...
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
У меня такое подозрение, что Windows и граф.карты NVidia не поддерживают icc v4.
А как вы определяете, что они его "не поддерживают" и как они по-вашему должны его "поддерживать"? В чем это должно по-вашему выражаться?
 
Ответ: Вопрос: поддержка icc v4

ilias сказал(а):
А как вы определяете, что они его "не поддерживают" и как они по-вашему должны его "поддерживать"? В чем это должно по-вашему выражаться?

Посмотрел отличия старых и новой версий. Профиль, созданный согласно новой спецификации - взять хотя бы даже теги r-,g-, bTRC, описание параметрических кривых, в старых версиях отдельного подпункта нет ('curve'), в новых есть ('para') - воспринимается, как недействительный профиль и соответственно не устанавливается.

Или поддержка как-то по-другому определяется? Но я не исключаю, что ошибки со своей стороны, только не знаю, где ее искать.
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
воспринимается, как недействительный профиль и соответственно не устанавливается.
я не силен в спефикации тэгов ICC, но просто интересно что значит не устанавливается? куда конкретно? на закладку управление цветом в свойства монитора? Может банально в хедере нету Profile type=mntr?
 
Ответ: Вопрос: поддержка icc v4

ilias сказал(а):
я не силен в спефикации тэгов ICC, но просто интересно что значит не устанавливается? куда конкретно? на закладку управление цветом в свойства монитора? Может банально в хедере нету Profile type=mntr?

Правой кнопкой мыши кликаем по профилю, выбираем пункт "инсталлировать" профиль и получаем ошибку.

К сожалению, все не так банально как кажется. Вроде все есть и все правильно. Но вчитываешься каждый раз в спецификацию и понимаешь, что что-то ты понял не так. Но в какой-то момент воображение отказывается работать :(
 
Ответ: Вопрос: поддержка icc v4

Уважаемый автор, как программист программисту скажу: даже я вас не понимаю. :)

Если очень хочется, могу поделиться кодом на VB.NET, создающим профили устройств отображения (пример программы можно посмотреть во вложении). Но там, правда, много вспомогательных классов, так что разобраться вряд ли будет легче, чем в спецификации ICC. Одно ограничение: строится только профиль устройства as-is, без корректирующих данных (vcgt).


Касательно поддержки ICCv4 в Windows. Это очень легко проверить, создав какой-нибудь TIFF-файл с внедрённым v4-профилем и открыть его в Средстве просмотра изображений — всё должно быть как полагается, а ведь кроме ICM оно ничего использовать не может. Похоже, что поддерживаются даже параметризованные TRC, хотя до конца не уверен.

Касательно поддержки профилей самими видеокартами. Они их вообще никак не поддерживают — профили поддерживаются только системой и профессиональными приложениями. Чтобы загрузить корректирующие данные в LUT видеокарты, в Windows XP и более ранних версиях нужен специальный загрузчик, обычно поставляемый с калибраторами. При желании, можно написать и свой собственный — там всё в одно действие делается (SetDeviceGammaRamp). Главное, чтобы в самом профиле содержались необходимые данные (тэг vcgt).


Теперь ближе к вашему творчеству. Услышав громкие слова типа «LUT» и «табличные профили», я было решил, что всё крайне серьёзно (сам я пока не дошёл до таких вершин). Но теперь кажется, что вы просто двигаетесь не в том направлении.
  • Табличные (LUT-based) профили для мониторов, как показывает личный опыт, моделируют устройство даже хуже, чем матричные профили. Поэтому выходить за рамки матричной модели, если только не нужно что-то особенное, я бы не стал.
  • Настоящий табличный профиль предполагает большие таблицы пересчёта из пространства устройства в пространство связи и обратно. В случае с мониторами это позволяет учитывать снижение насыщенности RGB-стимулов при низкой интенсивности. У вас же в примере лишь какие-то жалкие табличечки, да к тому же с числами от балды. Возможно, Windows проверяет корректность всех значений; например, абы какую гамму в LUT видеокарты нельзя загрузить.
  • В матричной модели есть вполне станадртный способ задания чёрной точки — тэг bkpt. Могут быть лишь нюансы в связи с хроматической адаптацией и её несоблюдением в v2-профилях (я уже забыл: толи это касалось только wtpt, толи ещё и bkpt). Но обычно на неё все забивают, и я даже не уверен, что она всеми учитывается.
Сначала надо бы с этим разобраться, а потом уже дальше идти. И, конечно, узнать во всех подробностях, что от вас требуется. Не зная цели, трудно показывать маршрут.
 

Вложения

Ответ: Вопрос: поддержка icc v4

Samsonov сказал(а):
Уважаемый автор, как программист программисту скажу: даже я вас не понимаю. :)
:) Я уже писал Евгению, что может быть за 6 лет моего пребывания в Германии, я разучился ясно выражать свои мысли на русском языке.

Samsonov сказал(а):
Касательно поддержки ICCv4 в Windows.
Поддерживается, сегодня наконец-то получилось создать пару таких профилей. Параметрические функции не попробовал, но думаю, тоже не проблема.

Общался сегодня с Филом из ICC. Он посмотрел мои профили и объяснил, в чем проблемы:
- Хедер. Версия профиля - она не версия профиля как таковая, а совместимость с версией icc specification.
- матричная модель поддерживается, когда PCS является XYZ (Почему, не знаю)
- LUT-модель - когда PCS является Lab (Почему, не знаю)

Samsonov сказал(а):
Касательно поддержки профилей самими видеокартами...
Наверно, зависит от карты и установленных драйверов. У меня стоит немолодая NVidia GeForce4 MX, драйвер 6.14.10.9371. И можно грузить профиль непосредственно через карточку. Единственное НО, загрузить созданный профиль через карточку не удается. Предположение: она поддерживает только матричную модель.

Samsonov сказал(а):
Теперь ближе к вашему творчеству...
Жалкие табличечки-то были только в примере, ну не все же 4096 возможных значения мне здесь писать :) Матричная модель не подходит, потому как я в качестве параметров получаю кроме прочего матрицу размером 3х4. Куда же мне тогда этот 4й столбец деть-то? :)
И параметры будут тоже не от балды, а получены после калибровки монитора / проектора. Но я вначале программу протестировать хотел.
 
Ответ: Вопрос: поддержка icc v4

ametim сказал(а):
Версия профиля — она не версия профиля как таковая, а совместимость с версией icc specification.
Естественно. От этого зависит то, как профиль будет интерпретирован. А сама «версия профиля» мало кому интересна, и если уж очень нужно как-то различать версии, то есть поле «Время создания» (по Гринвичу).

Матричная модель поддерживается, когда PCS является XYZ (почему, не знаю), LUT-модель — когда PCS является Lab (почему, не знаю).
Потому что так принято.

Матричная модель не подходит, потому как я в качестве параметров получаю кроме прочего матрицу размером 3х4. Куда же мне тогда этот 4-й столбец деть-то?
Если «4-й столбец» — это свободный член (bias), то его роль выполняет тэг bkpt.



В nVidia можно грузить профиль непосредственно через драйвер карточки.
Ой, и правда, приделали туда такую возможность. Только у меня оно вываливается при попытке загрузить любой профиль — хоть созданный i1Match, хоть PM5, хоть Spyder2/3. Естественно, все профили обычные, матричные.

И что, реально прям LUT меняется? Жаль только, что nVidia всё равно не позволяет использовать разные профили для каждого видеовыхода.
 
Статус
Закрыто для дальнейших ответов.