- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF83:GEGL
Материал из Linuxformat.
Что за штука... GEGL?
Не один год нам сулили, что GEGL (Generic Graphic Library) будет огромным скачком в развитии Gimp, но по жизни мы ждем его до сих пор. Майкл Дж. Хэммел пробует сунуть туда нос.
Гегель какой-то… не надо мне этого. Пусть Gimp сделает поддержку CMYK, как в Photoshop. Когда она наконец появится?
Тогда же, когда и GEGL. Видите ли, у разработчиков Gimp возвышенный принцип: «всё делать правильно», а не «наскоро сляпать». Поддержка CMYK не была их изначальной целью – они собирались просто добавить 16-битные цветовые каналы. Но когда прикинули фактический объём работ, осознали: потребуется полная переделка внутренней архитектуры. Вот GEGL и является такой архитектурой.
И что, переделка RGB в CMYK– это целый проект?
Нет, новый проект требуется для преображения Gimp из довеска рабочего стола в мощный графический пакет. GEGL не просто изменит работу с цветом – улучшится также управление памятью, благодаря мозаичной обработке и новым процессам работы с графикой; будет осуществляться протоколирование всех ваших действий, чтобы вы потом могли легко воспроизвести их.
На самом деле перевести изображение из RGB в CMYK проще простого. Но это лишь часть проблемы.
«Спят усталые игрушки, книжки спят...»
Подождите, не засыпайте: всё и правда просто! RGB и CMYK – два типа цветовых моделей. Они являются подмножествами гаммы видимых цветов для различных типов носителей. Модель RGB основана на цветах, воспроизводимых люминофорами экрана дисплея. Модель CMYK описывает ситуацию с воспроизведением цветов в технологиях печати.
Стоп-стоп. Что такое цветовая модель?
Цвет – тема довольно сложная, но попробую изложить её кратко. Цвет – это излучаемый (как в мониторе), либо отраженный (как на печатном оттиске) свет. Восприятие определенного цвета зависит от многих факторов, например, от температуры источника отражаемого света. Цветовая модель – как раз RGB или CMYK, запомните – просто абстрактный способ представления цветов с помощью наборов чисел. Числа лишь маркируют определенные точки в пространстве цвета, ограничивая ту часть общей гаммы цветов, которую способна охватить данная цветовая модель. Вы всё ещё здесь?
Пока да.
Хорошо. Визуально цветовая модель обычно представляется в трехмерном виде: представьте куб, раскрашенный всеми цветами радуги – это цветовое пространство, координатные оси которого определяются цветовой моделью. По ним мы и выбираем нужный цвет. [Вы, может быть, встречали такие обозначения – R255G255B255; в 8-битной модели RGB (т.е. 8 бит данных отводится на значение цвета одной точки в одном канале, что дает 2^8=256 градаций цвета по каждой из трех осей пространства – от 0 до 255) оно означает точку с максимальным значением красной, зеленой и синей составляющих, т.е. белый цвет – прим.ред.]
И как скажет вам команда разработчиков Gimp, работа в различных цветовых пространствах требует определенной сложности от графического редактора. GEGL предоставит возможность выбора работы в любом цветовом пространстве – вместо простого преобразования файлов, и все это войдет в состав GEGL, чтобы пользователю не пришлось беспокоиться о дополнительных модулях. Звучит как китайская грамота?
Угадали.
Существует очень важная цветовая модель – CIE L*a*b [CIE – Commission International d’Eclairage, Международная комиссия по освещению, – прим. ред.]. Это международный стандарт, определяющий полный набор цветов, который могут воспринимать наши глаза (L означает освещенность, a и b – соответственно, красно-зеленая и желто-синяя оси). RGB – уникальная по отношению к CIE L*a*b модель, потому как многие другие модели (включая CMYK) необходимо преобразовать в RGB, чтобы стало возможным их однозначное соотнесение с цветами CIE L*a*b.
Поэтому думайте о RGB и CMYK как о средствах воспроизведения цвета, определенного L*a*b, но только при определенных условиях.
Что же это за условия?
Гамма цветов одной цветовой модели (скажем, RGB) отличается от гаммы другой (скажем, CMYK). Распечатайте на принтере фотографию на принтере и поднесите ее к экрану. Цвета не совпадают? Gimp необходимо сообщить об условиях печати на принтере для того, чтобы полученный отпечаток полностью соответствовал изображению на мониторе. Это отнюдь не простая задача.
И GEGL, стало быть, её решит. А с чего мы заговорили о принтерах?
Я же говорю: разработчики обнаружили, что поддержка CMYK потребует куда больше работы, чем просто добавление нового пункта меню. Конечно же, GEGL решит проблему. Код GEGL позволит Gimp работать в различных цветовых пространствах. А в сочетании с информацией о принтерах (также известной как ICC-профили) поможет уравнять печатные оттиски и изображение на экране. Это очень важно для тех, кто работает в области полиграфии, а также при редактировании видео в Gimp.
Вот как, редактирование видео?
Теоретически – да. Но в действительности вы, возможно, будете выполнять работу с помощью дополнительного модуля, который будет загружать части фильма для редактирования. Вы не будете сразу загружать весь фильм в Gimp. В видеомонтаже свои вопросы, с которыми должен разбираться GEGL.
Правда? Расскажите.
Хорошо. Давайте взглянем на задачу с точки зрения конечного пользователя. Представьте, что открываете отсканированную фотографию в Gimp. Одно из первых ваших действий – коррекция гистограммы Уровней. Если вы используете Автоподстройку в диалоге Уровни, то пиксели, близкие к черному, станут чёрными, а близкие к белому станут белыми, а все прочие, что находятся посередине, распределятся так, чтобы образовать хорошую гистограмму. Однако на некоторых изображениях это может привести к пробелам на гистограмме.
Видал я такое, но в голову не брал. Что эти пробелы значат?
Это значит, что из-за ошибок в округлении при вычислениях изображение теряет качество. При работе с фотографией это не страшно. Но при видеомонтаже, когда у вас 60 кадров в секунду, об этом стоит побеспокоиться.
И как это можно исправить?
GEGL будет использовать 16 бит на канал, а не 8, как сейчас. Дополнительные разряды уменьшат ошибки округления и позволят построить более гладкие гистограммы. В результате коррекция цвета будет произведена точнее. Благодаря 16-битным цветовым каналам, GEGL обеспечит и улучшенную обработку изображений.
Чудесно. Только... что такое цветовой канал?
Помните RGB? R означает красный канал, G – зеленый, B – синий. При использовании GEGL вы сможете работать с другими типами цветовых каналов, пока же Gimp знает только эти (а также альфа-канал, он же канал прозрачности). Каждый 8-битный канал может определить цвет при помощи целого числа от 0 до 255, т.е. мы получаем более чем 16 млн. цветов – вроде бы солидная цифра.
С GEGL (при 16-битном цвете) эта цифра увеличится до 65535 значений на канал, что даст свыше 281 триллиона цветов – гораздо больше, чем способен различить глаз. Преобразование цвета пикселя происходит по определенной формуле, причём результат может оказаться значением с плавающей точкой, тогда как каналы оперируют только целыми числами. Ошибки округления при работе с 8 битами вызывают появление пробелов на гистограмме уровней. При работе с 16 битами такие пробелы должны исчезнуть.
Значит, GEGL осчастливит редакторов видео и печатных плакатов; мы получим грамотные цветовые пространства.
Как я уже сказал, GEGL не просто разрешит вопросы с цветами. GEGL – полноценная система обработки изображений. Gimp будет использовать ее только как внутреннюю часть для задач обработки. Некоторые другие функции GEGL обеспечат чтение и запись графических файлов, геометрические операции, преобразование Фурье и свертки. Также будет предоставлен мозаичный механизм для работы с очень большими изображениями. В конечном счёте будет возможна распределенная обработка изображений по сети.
К чему все это приведет?
К тому, что Gimp будет работать быстрее. Следует признать, что для среднего пользователя эти улучшения будут пустым звуком, кроме улучшенного управления цветом (т.е. добавления поддержки CMYK). Но для промышленного применения это означает возможность распределения работы по сети. Программы 3D-рендеринга уже используют такую возможность, потому что они выполняют трудоемкие вычисления. При работе с очень большими изображениями или большим числом слоев (как, например, при работе с видео) GEGL позволит распределить нагрузку по сети и применять общие схемы обработки ко множеству изображений.
Поэтому разработка и длится так долго? GEGL обещали уже довольно давно.
Вы правы: хотя GEGL был анонсирован в 2000 году, его все еще нет. Это даже ещё не даже публичный релиз (хотя CVS-срез находится на диске к журналу). Проекту требуются разработчики, чтобы выполнить список поставленных задач (домашняя страница проекта – www.GEGL.org, а список задач – на сайте http://cvs.gnome.org/viewcvs/*checkout*/GEGL/TODO). В настоящий момент только один активный разработчик вносит изменения в CVS. GEGL выпустят, как только проект получит достаточно разработчиков и выполнит поставленные цели. Вот так всё просто.