О шумах в каналах и о RAW-конверторах

Как мы вскользь обратили внимание в прошлой статье, разница в чувствительности между цветовыми каналами цифровой камеры приводит к разной поканальной "проработке" и, как следствие, к разному уровню шума в каналах. Вторым фактором, влияющим на разный уровень шума, является бОльшее количество зеленых пикселов в байеровской матрице - это позволяет уменьшить шум в зеленом примерно в 1.4 раза и еще более усиливает вышеуказанный разбаланс по шумам.

Однако тема оказалась более богатой, чем кажется на первый взгляд. Дело в том, что при преобразовании байеровских данных в трехкомпонентный RGB-формат может происходить смешение каналов:

  • При балансе белого, если баланс белого производится путем умножения на матрицу 3x3, содержащую как коэффициенты баланса, так и профиль камеры.
  • При интерполяции байеровских, если производится сложная интерполяция, смешивающая каналы (AHD, VNG).
Достаточно очевидно, что наиболее сильно эта проблема будет проявляться в тенях, где отношение сигнал-шум минимально, поэтому тестовую мишень надлежит сильно недодерживать.

Ситуация, когда мы сначала недодерживаем на три ступени, а потом корректируем на +2 eV в конверторе отвечает весьма распространенному случаю "экспозиции вправо", когда полутона сначала недодержали, чтобы не было вылета в светах, а потом тянули, чтобы вернуть их в полутона (подробнее эта проблема рассмотрена в статье Зоны Адамса в цифрах и буквах).

Тестовый кадр и тестовая методика

В качестве тестового кадра был взят кусок белого картона из упаковки бумаги для фотопринтера Epson. Этот лист был освещен ярким дневным солнцем (полдень по Москве т.е. на два часа меньше астрономического полудня) и снят с экспокоррекцией -3 eV, цветовая температура с точки зрения Adobe Camera Raw (далее в тексте ACR) была 5200K.

Если конвертировать файл без экспокоррекции, то средние значения (в шкале 0-255) по полю получаются 39-40 по всем каналам. Экспопоправка +1.4eV в ACR дала значения по полю равные 69-70, эти значения и были взяты как целевые для всех опробованных конверторов.

Чтобы увеличить видимость шумов, после конвертации RAW на все кадры накладывалась одинаковая кривая (прямая линия от точки 0,50 до 255,100) и одинаковый sharpening (300%, radius 0.3, threshold 10).

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

В тех конверторах, где есть режим half мы получали и изображение половинного разрешения, для целей сравнения оно увеличивалось вдвое (Image Size - Bicubic Sharper в Photoshop CS3).

Эксперименты проводились на камере Canon 1D mk III (14-битный АЦП) при 100ISO.

dcraw

Для режима half dcraw -h мы видим гигантскую разницу в шумах между каналами (здесь и далее красный канал слева, зеленый - справа). Она гораздо больше, чем было показано в предыдущей статье для почти такого же кадра (в той статье кадр был экспонирован на -2eV, а не на -3), одна из причин этого - другая обработка, а к остальным причинам этой разницы мы еще вернемся ниже.

Для AHD-интерполяции картина меняется: появляется высокочастотный шум, зеленый канал становитсязаметно более шумный по понятной причине: интерполяция использует данные из соседних каналов (вместе с шумом) для восстановления деталей (или видимости деталей). При этом, уровень шума в красном канале снижается, по всей видимости за счет замешивания менее шумного зеденого канала при интерполяции.

Adobe Camera Raw

Adobe Camera Raw не имеет средств управления видом интерполяции. Шумовая картинка очень похожа на dcraw-AHD, но несколько размытую: шум в красном канале меньше, чем в случае dcraw, а зеленый канал кажется размытым в сравнении с зеленым каналом dcraw. В зеленом канале мы видим и низкочастотный шум, который, по всей видимости, проник туда из красного канала (при этом, у двух других рассматриваемых конверторов этого эффекта нет).

Raw Photo Processor

Raw Photo Processor (далее в тексте - RPP) - это бесплатный (Mac-only) конвертор RAW-данных, основным приоритетом при разработке которого является качество изображения. Как мы видим, даже для half-интерполяции (слева) результат заметно лучше, чем у dcraw, особенно в шумном красном канале. По всей видимости, шумы снижены за счет обработки в плавающей точке, что резко снижает цифровой шум за счет округления.

В режиме AHD-интерполяции шумы меньше чем у ACR, при этом не видно эффекта размытия - шум остается высокочастотным уровень его низок. В отличие от ACR, в зеленом канале нет низкочастотного шума.

Заключение

Мы в очередной раз увидели разницу по шумам между каналами, как и ожидалось (и ранее показывалось), она весьма существенна.

Помимо этого, показано, что характер шума сильно зависит от используемого RAW-конвертора и метода интерполяции байеровских данных.

Конечно, отсутствие детального описания внутренностей конверторов (кроме dcraw) не позволяет разложить эффект "по полочкам" детально (это - от округления, это - от матричного баланса белого), но разница в уровнях шума между разными программами обработки RAW настолько велика, что становится одним из существеннейших факторов при выборе между ними в случае применения экстремальных коррекций.

Почему это важно?

Казалось бы, кому интересен шум, который ясно виден только после многократного усиления канала? Однако не все так просто:

  • Красный канал очень контрастен на пейзажных снимках, особенно на снимках с облачным небом. Если мы используем его при смешении каналов (по Маргулису), то при шумном красном, мы замешаем и его шум.
  • Во многих случаях красный является дополнительным цветом (то же небо), создавая тонкие оттенки. Шум в этом канале создаст грязные оттенки.
  • Эксперименты сделаны на 100ISO, с повышением чувствительности проблема становится только острее.

Comments

open interpolation algorithm

Вопрос. Планируют ли авторы LibRAW делать "открытую" реализацию алгоритмов демозаики и шумоподавления? "Открытая" -- здесь означает, что будет некоторое публичное обсуждение применяемых алгоритмов. Или в LibRAW будет только реализация из dcraw?

В собственно библиотеку

В собственно библиотеку LibRaw новые методы включать смысла нет. Во вспомогательные библиотеки - очевидно, есть. Причём как открытые, так и закрытые методы реализации. Дискуссия же возможна часто даже в отношении закрытых методов. Мы будем такие дискусси всячески приветствовать и поддерживать здесь.