Журнал "Компьютерра" №758
Шрифт:
• Метаданные - это данные о снимке: дата и время съемки, экспозиционные параметры, данные о характере освещения (балансе белого), модель и заводской номер камеры, использованный объектив и так далее.
• Пара-метаданные (описание формата данных) - описывают как способ хранения данных снимка (разрядность, способ сжатия и т. п.), так и метаданные. Пара-метаданные (собственно формат данных 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 тысяч строк написанного им кода.
Нетрудно видеть, что оба способа бесперспективны, особенно в стратегическом плане.
Формат 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). Визуальное различие между двумя вариантами конверсии невелико и скорее всего на журнальной печати видно не будет, но механическое вычитание показывает, что разница есть.
Довольно трудно считать "архивным" формат, который не обеспечивает идентичность с исходным материалом, даже когда архив и исходный материал обрабатывались одинаково.
Для проверки "универсальности" выполним обратную операцию: возьмем кадр, сделанный с помощью относительно новой камеры (Canon 1D Mark III), преобразуем его в DNG современной версией DNG-конвертора и попробуем "подсунуть" старой версии конвертора Adobe Camera Raw, которая эту камеру не знает.
Этот эксперимент весьма актуален потому, что поддержка новых камер в Adobe Photoshop CS2 прекращена, однако далеко не все готовы платить за апгрейд до Adobe Photoshop CS3 или CS4, не предоставляющих никаких дополнительных преимуществ в применении к их задачам.
Выяснилось, что версия Camera Raw 2.4 полученный DNG-файл просто не открывает, а версии 3.x - открывают, но результаты конверсии RAW и DNG в RGB (рис. 2) отличаются еще больше, чем в предыдущем эксперименте.