Ответ: Вопрос: поддержка 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). Но обычно на неё все забивают, и я даже не уверен, что она всеми учитывается.
Сначала надо бы с этим разобраться, а потом уже дальше идти. И, конечно, узнать во всех подробностях, что от вас требуется. Не зная цели, трудно показывать маршрут.