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 без нужды не увлекаться.