DNG

Про Adobe DNG SDK

Вдогонку ко вчерашнему.

При рассмотрении потрохов DNG SDK (каковой, конечно же, используется в Adobe DNG Converter, другой вопрос что публичная версия могла несколько устареть) объяснение такому поведению EXIF нашлось:

  • Структура dng_exif - это разобранный (в кучу полей) EXIF
  • Пишется EXIF-таблица - из этой структуры.
  • Соответственно
    • Если поле (тег) неизвестно (ну вот OffsetTime), оно не разбирается.
    • Если поле не разобрано - оно не пишется.
    • Если тег известен, то он может разбираться в несколько полей dng_exif
    • Так, к примеру,
  • ...

Про Adobe DNG Converter и "архивный формат"

Возьмем, значит, ARW-файл от Sony A7RM3 и скормим его Adobe DNG Converter 10.1

И начнем рассматривать EXIF (это у меня любимая забава).

В исходнике было:

 | | 0) ExposureTime = 0.025 (1/40) | | - Tag 0x829a (8 bytes, rational64u[1]): | | 143a: 01 00 00 00 28 00 00 00 [....(...] | | 1) FNumber = 3.2 (32/10) | | - Tag 0x829d (8 bytes, rational64u[1]): | | 1442: 20 00 00 00 0a 00 00 00 [...

Об "архивном формате DNG" (в очередной раз)

На этих картинках, дети, вы видите две гистограммы (почти) одного файла:

Слева - оригинал (это Hasselblad X1D, ISO25600), справа - DNG (сделано Adobe DNG Converter 9.9.0.178).

Как мы видим, в DNG не сохранены оригинальные значения из RAW а скромно и от души прибавлено три стопа (что, естественно, превратило детали в светах - в тыкву). Ну и...

Трудовые будни или еще раз о формате DNG

Не могу молчать, могу только материться, да и то с трудом.

Преамбула:

Даже если вот рассматривать только документированные форматы данных, там спецификации довольно расплывчатые бывают (вот, к примеру мой вопль о JPEG color profiles). Соответственно, в частности в LibRaw, мы работаем только с реальными примерами из реальной жизни, ибо наворотить создатель файла может всякого, всюду соломки не подстелишь, работаем по заявкам. Так вот.

Акт 1, LibRaw "пару месяцев назад"

Все DNG-теги парсятся в общую кучу, то есть вот если...

На третий день зоркий глаз заметил....

А вот, к примеру, Adobe DNG SDK.

Лежит такой у них на сайте, dng_sdk_1_4.zip. И лежит. Если и меняется - снаружи незаметно. 4 года уже лежит.

Но каникулы ж, можно самому себе занятие придумать. Дай, думаю, скачаю, посмотрю.

Скачал, посмотрел.

И вот действительно, dng_sdk_1_4 скачаный сегодня и скачаный года полтора назад (октябрь 2015 в моем случае) - это разные DNG SDK. Заметно так разные.

Сюрприз!

P.S. C XMP Toolkit такого свинства нет, там и файлы для скачивания со своими именами и XMP_Version.h унутре есть.

О "неразрушающем редактировании"

И снова перед вами две гистограммы. Сверху "было", снизу "стало":

  • Было: 12 бит на канал (смотрим на Values справа от канала: 4000+), байер (4 канала в каждом 4M pixels)
  • Стало: 8 бит на канал (отчего уже на уровне EV0 ясно видимые глазом дырки), кроме того переехали максимумы в каналах (т.е. наложен какой-то баланс белого).

Что же случилось с файлом? Случился с ним редактор Picktorial (ссылку не...

Снова о любимом формате DNG

Перед вами, дети, две RAW-гистограммы. Сверху - оригинальный файл, снизу - конверсия в DNG при помощи Lightroom 5.7:

(кликабельно)

Извините за размер, так вот было удобнее сделать.

Даже на превьюшке видно, что максимумы в красном-синем каналах - сильно в других местах. Потому что в Adobe решили, что так вам будет лучше и в архивный формат записали вот такие вот модифицированные данные.

Справедливости ради, это sRAW то...

REQ: целочисленные DNG, больше 16 бит

Граждане читатели!

А никто не встречал в дикой природе целочисленных (SampleFormat: 1) DNG с разрядностью больше 16 (BitsPerSample: 17-32)?

Может какой софтварий их производит?

Еже видели такие - пришлите для опытов пожалуйста!

Я, понятно, могу сам нагенерировать, Adobe DNG SDK доступен мне, но если их в дикой природе нет, то я и связываться пока не буду.

Не корысти ради, а пользы для

Сел тут приделывать поддержку floating point DNGs к LibRaw (отчего всем настанет). Потому что Lr/ACR их начали делать, да и вообще давно просили.

Встал вопрос с примерами:

  • Lr/ACR делают 16-битный 3-канальный (после демозаики), жатый deflate. ОК
  • HDRMerge делает одноканальный (байеровский) 16/24/32-битный, deflate. OK

А где бы взять реальных (! это важно) примеров остальных форматов

  • floating point нежатый, 1/3 канала, разные предикторы
  • floating point, deflate, 3 канала, 24 и 32 бита (ну это я  попробую из sRAW c помощью HDRMerge слепить не работает, не принимает HDRMerge sRAW)
  • 32-bit integer, жатый и нежатый, разные предикторы

То есть понятно, DNG SDK мне всякого добра насоздает без проблем, но хотелось бы или просто примеров файлов из реальной жизни, или примеров софта, который их делает (а скую дальше сам)

Иголка в яйце, яйцо в утке, утка в зайце, заяц - в шоке

Вот есть такой DNG, который я не люблю.

В частности по вот какой причине, следите за руками

  1. Теги DNG - это не все возможные метаданные. Всякие camera-specific вещи, вроде "активных точек автофокуса" туда не вписываются (ну и невозможно запихать в стандарт всю фантазию camera makers).
  2. Эти же теги не вписываются и в EXIF, поэтому их пишут в вендор-специфичный блок Makernotes (или много блоков, фантазия, повторяю, бесконечна).
  3. OK, говорят авторы стандарта DNG, мы этот блок целиком вот и фиганем в
  4. ...

Про DNG 1.4

Не прошло и полгода Прошло почти 7 месяцев с выпуска LightRoom 4, и Adobe таки выпустила в свет спецификации DNG 1.4 и DNG SDK той же версии (брать отсюда).

Существенные нововведения:

  • Lossy-компрессия. Правда вот такая вот:
    Lossy JPEG is allowed for IFDs that use PhotometricInterpretation=34892 (LinearRaw) and 8-bit integer data.
    То есть 8-битные линейные данные после демозаики. На практике этот режим полезен, пожалуй, только для какой-то quick-n-durty обработки, например в очень ограниченных ресурсах. Да и то, линейные 8 бит - это как-то не того, разве только тонововая кривая как-то спасет.
  • Поддержка floating point (16, 24 и 32 бита) - теперь в стандарте (не знаю, будут ли float-DNG от darktable быть совместимыми). К этой поддержке прилагается новый поддерживаемый формат сжатия (ZIP/Deflate), а к этому формату сжатия - новые предикторы 'Horizontal Difference X2 и X4', которые, по идее, позволят эффективно сжимать байеровские данные.
  • Transparency masks, которые позволяют, к примеру, удобно/эффективно хранить в DNG склеенные панорамы с неровным краем изображения.
  • ProxyDNG Files - файлы с низким разрешением, но содержащие указание на оригинальные размеры. Как следствие, всё редактирование, сделанное над Proxy - можно без изменений перенести на исходный файл. Если этот Proxy-вариант еще и пожать с потерями, то получается достаточно вкусно для многих применений (помимо работы на мелких ноутбуках и планшетах, в голову приходят еще всяческие операции с несколькими кадрами сразу: панораму или focus stacking делаем быстро из файлов низкого разрешения, а финальный рендер делаем в фоне).
Имею про это сказать:

DNG, уровень черного и dcraw

В стандарте DNG 1.2 правильной поддержке уровня черного уделена масса внимания: можно задать базовый паттерн произвольного размера с разными уровнями (скажем, поканальными) и коррекцию этого паттерна для каждой конкретной строки и столбца. Для большинства практических применений этого достаточно, нормально описать таким способом нельзя, пожалуй, только неповернутый паттерн Fuji SuperCCD.

Надо сказать, что Adobe DNG Converter креативно пользуется этими возможностями. Скажем, для новых камер Canon (смотрел 50D и 5DmkII) считается только базовое значение, тогда как для старых (смотрел 400D) считается уровень черного для каждой строки. И это правильно, товарищи!

Но вот dcraw, а за ней и все приложения, использующие её код, начиная с LightZone и ACDSee, а заканчивая LibRaw, поступают с этими данными тупо и глупо: все что есть в DNG-файле усредняется и это среднее вычитается из всех значений.

Естественно, это все касается только тех форматов данных, где вычитание базового черного не делает сама камера. Из распространенных - это камеры Canon (все), ряд моделей Sony и многие P&S камеры.

Как следствие, если в DNG-файле и были данные для подавления бандинга и прочих подобных безобразий, на этапе обработки ими не пользуются и бандинг не подавляется.

Пользователи LibRaw будут со временем осчастливлены кодом получше, а вот пользователям других производных от dcraw я бы посоветовал форматом DNG без нужды не увлекаться.

Универсальный (нецензурно) архивный (нецензурно) формат

О сколько нам открытий чудных....

DNG мы уже пинали с примерами, но пинали мягко, оставаясь в рамках Adobe workflow. Там проблемы, которые создает DNG заметны, только в довольно экстремальных ситуациях.

Но вот если мы живем не Адобом единым, то жизнь становится куда веселее. Вот к примеру LighZone. Отличная по своим идеям программа, все такое, но вот распаковку RAW там делают запуском внешней dcraw.exe.

Все ли хорошо в RAW?

Мы с Ильей Боргом написали в Компьютерру статью, в которой постарались описать наше видение современного состояния дел с RAW-форматами. Прошло три недели с выхода журнала и, согласно первоначальной договоренности, перепечатываем у себя:

Позволю себе процитировать вводный раздел целиком.

Два пути в никуда: в поисках утраченного смысла

За последние 10—15 лет цифровая фотография вытеснила фотопленку практически из всех традиционных областей применения. Конечным потребителям проданы сотни миллионов цифровых фотокамер, не считая камер, проданных в мобильных телефонах. Столь массовая индустрия не может существовать без стандартов — и таковые, казалось бы, имеются: стандартизованы устройства для хранения данных (flash-карточки) и формат изображений JPEG — наиболее массовый и удовлетворяющий потребности подавляющего числа пользователей.

Однако формат JPEG далеко не всегда удовлетворяет требованиям профессионалов — фотографов, дизайнеров, персонал prepress-бюро, а тем более фотобанков и фотоархивов. Зачастую не удовлетворяет он и требованиям "продвинутых" фотолюбителей. Именно поэтому многие модели фотокамер, обычно позиционируемые производителем как профессиональные и полупрофессиональные, поддерживают, кроме JPEG, и запись изображения в так называемом "формате RAW". У стороннего наблюдателя может создаться впечатление, что RAW — это тоже такой стандартный формат, обеспечивающий лучшее качество — "качество для профи".

В нашем маленьком тексте мы хотим показать, что на самом деле жизнь гораздо сложнее, а положение профессионалов на сегодняшнем цифровом фоторынке не просто ужасно, а совершенно ужасно, и к тому же еще и быстро ухудшается (в то время как у менее притязательных любителей — все отлично).

Как мне кажется, обсуждать данный текст лучше рядом с ним, поэтому комментарии тут я закрываю. LibRaw.SU дает комментировать без авторизации, хотя авторизованым пользователям доступно чуть больше пряников.

Subscribe to DNG