Расщепи своих каналов

Выпустил LibRaw 0.7-BETA1.

Каких-либо изменений собственно библиотеки в сравнении с предыдущей Alpha6 нет, но зато добавлено новое тестовое приложение, которое мне кажется очень полезным в хозяйстве:

4channels - сохраняет RAW-файл в виде четырех отдельных TIFF-файлов, по одному на канал.

По-умолчанию все сохраняется "как есть" - в линейные 16-битные TIFF-ы, вычтен только базовый черный, желаемого результата можно достичь опциями командной строки:

  • -s N выбрать N-е изображение (для файлов с несколькими изображениями)
  • -g выводить гамма-корректированное (2.2) изображение
  • -A автомасштабирование значений в целое число раз
  • -B отключить вычитание уровня черного
  • -N отключить тоновую кривую для RAW

Применение этой штуки к попавшимся под руку примерам оказалось весьма поучительным. Ну, естественно, у Sony F828 все как и обещано, второй канал зеленого из первого никакими кривыми сделать нельзя, спектральная чувствительность очень разная.

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

Неоднократно приходилось слышать жалобы на обработку RAW с зеркалок Olimpus: дескать два зеленых канала там сильно разные, отчего все интерполяторы дурят. Я посмотрел кадры с E300, E410 и E500 - да, каналы разные, но не ужас-ужас. Разница в средней величине на небе в 6-й зоне есть, но не такая большая, порядка 1.5 единиц в метрике "8 бит-гамма 2.2". Вот что там "ужас-ужас" - это уровень шумов, даже в светах. Отвык я от такого.

Вместе с тем, разница среднего для Canon 5D Mark II между двумя зелеными каналами тоже оказалась ненулевой - для серого зимнего неба в той же 6-й зоне - около половины единицы в той же метрике "8 бит gamma 2.2".

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

Comments

<blockquote><em>
> Мораль проста: уважающий себя профиль цифровой камеры обязан быть четырехканальным, разница в зеленом есть даже там, где ее не ожидаешь.
</em></blockquote>

<p>
Спасибо! Ценное наблюдение. Давно хотел проверить, да руки никак не доходят. И вряд&nbsp;ли скоро дойдут&nbsp;:-(
</p>

С Олимпусами беда в том, что эта "разница" по зелёным каналам может менятся от камеры к камеры. Т.е. есть камеры в пределах модельного ряда, у котороых это разница минимальная, а есть отдельные экземпляры, когда соотношение уровней двух зелёных каналов G1/G2 составляет порядка ~1.06 (речь идёт о линейных данных с матрицы), что уже достаточно для появления артефактов интерполяции. Более того, у E-330 ещё есть беда, когда даже уровни чёрного для 2-х зелёных каналов и красного и синего могут значительно отличаться.
Причём получается подобная ситуация в случае,если на снимке много пересветов.
Конечно тут спасает то, что хотя бы усреднённые уровни черного для каждого из каналов содержаться в EXIF. Но, проблема dcraw (и порождённых от него конверторов) в том, что он для всех каналов использует одно значение взятое как среднее от этих 4-x уровней чёрного. Впрочем это Вы и сами знаете.
В результате для адекватной интерполяции RAW с камер Олимпус надо:
1) Использовать независимые уровни чёрного для каждого из каналов.
2) Корректировать один из G каналов используя соотношение усреднённых значений зелёных каналов. И кстати, при этом ещё и надо подкорректировать множители для R и B, чтобы ББ не нарушался.
По крайней мере после таких исправлений в dcraw/ufraw из них удаётся получить нормальную картинку для камер Olympus.