Компьютерра - Журнал "Компьютерра" №758
• Архивисты (в широком смысле, от фотобанков и фотослужб компаний до отдельных фотографов): для них засилье форматов - просто кошмар, не дающий спать спокойно. Кроме самих данных, приходится хранить программы, умеющие с ними работать, инструкции по использованию этих программ и свои собственные записи о том, какой именно способ применения этих программ - вплоть до последовательности выполнения коррекций - приводит к нужному результату. Уже зафиксирован случай, когда изменения в формате RAW привели к несовместимости сверху вниз: параметры обработки, установленные в старой версии программы, не воспринимаются новой версией, а иногда и вовсе приводят к ее падению. Мы говорим о конверторе Nikon Capture. (Возможно, это не единственный пример. Авторы не проводили специальных исследований этого вопроса.)
Стремительность развития цифровой фототехники не позволяет создать универсальный формат данных, который устроил бы всех и навсегда. Вместе с тем сегодняшнее изобилие явно избыточно. И вызвано оно, в числе прочего, отсутствием серьезных попыток стандартизации.
Фотографической индустрии всегда было присуще разнообразие, порой совершенно неуместное. Появлялись и вымирали форматы пленки (828, 110, 126, APS, disc film), хирели или вовсе исчезали вариации химического процесса (Polacolor, C-22, K-14). Не все знают, чем вызвано упомянутое разнообразие (к сожалению, помимо экономических и технологических факторов, сей калейдоскоп зачастую объясняется тривиальным желанием привязать к себе потребителя или заработать на предоставлении прав конкурентам); но все знают, к чему это привело: архивы, накопленные в "форматах-неудачниках", могут поддерживаться только профессиональными архивными службами, а частным лицам и мелким компаниям это не под силу. Очень не хотелось бы, чтобы подобная участь ожидала накапливаемые сегодня цифровые фотоархивы. Особенно принимая во внимание, что за последние пять лет фотографий снято примерно столько же, сколько за предыдущие тридцать.
Данные,метаданные и смыслыОдним из существенных достижений цифровой фотографии является то, что кроме самого снимка (то есть собственно данных) сохраняются еще и метаданные.
• Данные - это сам снимок: информация о яркости света для каждой точки сенсора фотокамеры. Как правило, в RAW-формате эти данные никак не обработаны (разве что пропущены через нормализующий усилитель перед преобразованием в цифровой вид), а в случае формата JPEG - подвергнуты цветовой и тоновой коррекции.
• Метаданные - это данные о снимке: дата и время съемки, экспозиционные параметры, данные о характере освещения (балансе белого), модель и заводской номер камеры, использованный объектив и так далее.
• Пара-метаданные (описание формата данных) - описывают как способ хранения данных снимка (разрядность, способ сжатия и т. п.), так и метаданные. Пара-метаданные (собственно формат данных RAW-файла) - это то, что придает хранимым битовым последовательностям смысл ("в этом поле хранится фокусное расстояние объектива, выраженное в десятых долях дюйма"). Так как производители не документируют формат, то поиском смысла байтов приходится заниматься "хакерам" (в хорошем смысле слова), которые различными способами составляют свои описания форматов (об этом мы поговорим чуть ниже). В целях дальнейшего изложения поделим данные и метаданные на следующие группы:
• Необходимы для получения качественного изображения из RAW: производитель и модель камеры, использованная при съемке чувствительность, данные о балансе белого, использовалась ли вспышка. Ну и сами данные снимка, то есть карта освещенности, зафиксированная сенсором.
• Могут быть использованы при обработке RAW: настройки камеры (контраст-насыщенность), параметры оптики и фокусировки и т. п.
• Не нужны для обработки, но полезны для показа, каталогизации и поиска: дата и время, GPS-координаты, автор снимка, описание снимка и т. п. Нельзя сказать, что никакого стандарта на метаданные нет: существует стандарт EXIF, и большинство производителей камер ему следует. Однако EXIF, создававшийся в первую очередь для сопровождения готовых изображений, описывает поля, нужные для каталогизации (третья группа в нашей классификации), но практически никак не помогает авторам программ обработки RAW. Также нельзя сказать, что данные и метаданные совсем не документированы, но документированность эта соответствует старой шутке [FreeBSD kernel is very well documented, unfortunately it all on "C"]:
• Данные и некоторая часть метаданных "документированы" в известной программе dcraw Дэйва Коффина (Dave Coffin), которая на сегодня поддерживает (умеет распаковывать) форматы 312 цифровых камер.
• Метаданные "документированы" в программе ExifTool Фила Харви (Phil Harvey), которая на самом деле оперирует с гораздо большим объемом информации, чем просто EXIF, - программа распознает и расшифровывает и ряд служебных полей, в том числе внедряемых в RAW-файл некоторыми конверторами. Интересно, что по объему программного кода ExifTool почти на порядок превышает dcraw (75 тысяч строк кода против 8 тысяч). Это соотношение вполне адекватно отражает соотношение трудоемкости расшифровки данных и метаданных: метаданные гораздо разнообразнее.
Такой "документации", разумеется, совершенно недостаточно. Несмотря на все усилия "хакеров", случаются ошибки, полнота описания метаданных хромает, иногда правильная расшифровка поля данных от какой-то камеры становится доступной как раз к тому моменту, когда камера уже снята с производства.
В результате даже авторы программ обработки RAW не могут с уверенностью утверждать, что они все делают правильно [Исключением из этого правила являются конверторы, поставляемые производителем фотокамеры]. Забавным следствием является то, что сравнение качества программ обработки RAW на одном-двух примерах становится бессмысленным.
Революционная ситуация цифровой фотографииТаким образом, в индустрии цифровой фотографии складывается революционная ситуация в полном соответствии с определением В. И. Ленина:
Фотографы (и вся индустрия, использующая результаты их работы) не могут жить по-старому: разнообразие недокументированных форматов никого не устраивает, особенно учитывая, что новые модификации форматов прирастают экспоненциально.
Производители фототехники не могут управлять по-старому: несмотря на все их усилия, в том числе (и особенно) по сокрытию информации, конверторы независимых производителей доминируют по числу пользователей и зачастую обеспечивают более высокое качество результата.
Как известно, перерастание революционной ситуации в революцию зависит от наличия партии, готовой и способной возглавить борьбу.
Встает резонный вопрос: а как в этом хаосе работает хоть что-то? Разработчики в основном используют два подхода, хоть как-то снижающих энтропию:
• Часть программных решений поддерживает весьма ограниченное количество форматов данных, что сильно упрощает задачу.
• Если автор программы заявляет поддержку большинства распространенных форматов, то скорее всего он использует исходные тексты dcraw либо как готовое решение, либо как документацию. В числе прочих это делает и такая крупная компания, как Adobe. Приходится констатировать, что огромная индустрия зависит от одного человека и 8 тысяч строк написанного им кода.
Нетрудно видеть, что оба способа бесперспективны, особенно в стратегическом плане.
Adobe DNGФормат DNG предложен компанией Adobe в сентябре 2004 года в качестве универсального формата "цифрового негатива", предназначенного для вечного архивного хранения данных. Спецификация DNG 1.0 была очень плохо продумана [В DNG 1.0 не было места для хранения части данных: значений маскированных (закрытых от света) пикселов, которые используются для расчета уровня шума и некоторых видов шумопонижения], и через полгода Adobe предложила спецификацию DNG 1.1. Помимо описания формата, был выпущен и DNG SDK, который иначе как "отпиской" не назовешь: удобочитаемая документация, полезные примеры, а также программные заготовки практически отсутствуют.
Прежде чем двигаться дальше, проверим оба утверждения Adobe: об архивности и об универсальности.
Архивный?Эксперимент очень прост: сымитируем ситуацию, которая могла бы иметь место года три назад, для чего возьмем исходный RAW-файл от достаточно старой камеры (Canon Powershot G6) и преобразуем его в DNG старой версией конвертора Adobe [Adobe DNG Convertor, поставлявшийся совместно Adobe Camera Raw 2.3]. Для проверки архивности преобразуем с одинаковыми настройками оба файла - исходный RAW и производный от него DNG - в растровый RGB-формат, воспользовавшись текущей версией Adobe Camera Raw [Adobe Camera Raw 4.5], и посмотрим на разницу в результатах (рис. 1). Визуальное различие между двумя вариантами конверсии невелико и скорее всего на журнальной печати видно не будет, но механическое вычитание показывает, что разница есть.