Про sRAW

Про внутреннее устройство sRAW я задумался, увидев вот такую вот гистограмму у темнового кадра (это 6D, ISO800, 20 секунд выдержки):

Внутренний голос протестовал против того, что у синего-красного пики на нуле (как им, в теории, и надо быть в темновом кадре), а у зеленого - очень даже нет.

Пришлось прикрутить к RawDigger возможность рассматривать sRAW в исходном виде (т.е. прямо вот в виде YCbCr, который там хранится).

И вот что видно, если начать рассматривать:

Изучаемые файлы взяты с Imaging Resource, это 5D Mark II. Там представлены серии одной и той же сцены в обычном RAW, sRAW1 и sRAW2 (в новых камерах это называется mRAW и sRAW, но смысл тот же).

Снята обычная для этого сайта сцена, содержащая достаточно насыщенные цвета:

Гистограмма обычного RAW тоже нормальная (внимание, логарифмический вертикальный масштаб, для совместимости с гистограммами sRAW):

Включим теперь в RawDigger показ "sRAW как YCbCr" и откроем следующий кадр.

Прежде чем начать рассматривать гистограммы, вынужден сделать отступление:

  • sRAW запакованы обычным для Canon Lossless JPEG, яркостные данные (канал Y) вместе с цветовыми (каналы Cb/Cr);
  • значения в канале Y от 0 до 16383, значения в каналах Cb/Cr - 16384 плюс-минус несколько сотен.
  • При конверсии в RGB, из значений Cb/Cr вычитают 16384 (получая ноль плюс-минус несколько сотен) и умножают на матрицу конверсии из YCC в RGB.
  • Но RawDigger не предназначен (не умеет и трудно переделывать) к показу отрицательных значений (Cb/Cr - 16384), а иметь Cb/Cr строго больше чем Y - неудобно.
  • Поэтому в RD из распакованых значений Cb/Cr вычитается 8192 и эти каналы получаются "среднесерыми" в диапазоне значений Y.
Так вот, вышепоказанный кадр в sRAW1, гистограмма (в шкале EV для совместимости с предыдущей гистограммой):
То, что пики цветности такие узкие - следствие нелинейного характера гистограммы по оси X (по оси Y она тоже логарифмическая, иначе кроме пика на 8192 ничего не было бы видно). Вот она же, но линейная по горизонтальной оси:
Как мы видим, в каналах цветности диапазон использован на несколько процентов (573-723 значения из 16к диапазона). Впрочем, для каналов цвета это обычное дело, посмотрите вот хоть на Lab.

Если смотреть по каналам, то канал яркости очень даже хороший:

Прекрасное 10-мегапиксельное черно-белое изображение.

В каналах цветности, понятное дело, почти ничего не видно (несмотря на то, что RawDigger постарался смасштабировать на весь диапазон):

Более того, если посмотреть внимательнее, то в sRAW1 (половинное разрешение, у данной камеры это 10 мегапикселей), только четверть всех пикселов содержит цветовые данные (а цвет остальные пикселов интерполируется). Вот канал Cb на маленьком колорчекере внизу кадра (увеличение 300%), серое - то что будет интерполировано и на фоне серого виден "более синий" (т.е. светлый) или "менее синий" цветовой канал:

В sRAW2 (5 мегапикселов) яркостной информации вдвое меньше (5 мегапикселов вместо 10), а цветовой - столько же, потому что в данных записан не каждый четвертый Cb/Cr канал, а каждый второй (увеличение 500% чтобы было близко по размеру к предыдущему случаю):

Итого

В sRAW c 20-мегапиксельной матрицы содержится:
  • 10/5 (sRAW1/sRAW2) "яркостных мегапикселов";
  • 2.5 "цветовых мегапиксела".
При этом, всей цветовой информации - меньше 10 бит (возможно, на совсем насыщенных сценах будет несколько больше, но вообще рассматриваемую сцену нельзя назвать совсем уж бледной).

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

Вышесказанного - лично мне достаточно, чтобы этот режим на камере никогда не включать.

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

P.S. Как тут метко заметил коллега, "(почти) никто никогда не видел JPEG до преобразования из YCC в RGB, а результат - почти всех устраивает".

Comments

То есть, они ещё и сабсемплинг цвета, как в обычном JPEG, делают?

Ну да.

Только вот я не знаю, как это принято в JPEG интерполировать, а в sRAW во всех (двух) декодерах что видел - банальное усреднение соседей.

А никак, стандарт ничего про это не говорит -- как всегда, он же определён фактически через декодирование :)

Нужно будет как то попробовать на исо 25600)

Буквально вчера попробовал потянуть тени из sRAW с второго пятачка и столкнулся с жестью. А тут и ваш пост как раз