ФотоФорум.ру - фото, форумы, фотогалерея, статьи о фотографии

Для полной функциональности сайта необходимо включить файлы cookie.

Для полной функциональности сайта необходимо включить JavaScript.

статьи

4. RAW, TIFF и JPG - в чём разница?

Афанасенков М.А.

Разумно о фото

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

Математическое отступление

Поговорим о преобразовании функций. Для простоты возьмём функцию F(X)=X на отрезке [0,1]. Легко себе представить её график - это прямая линия под 45 градусов. Теперь применим к ней последовательно пару функций - G1(X)=100*X и G2(X)=0.01*X. Финальная функция G2(G1(F(X)))=0.01*100*X=X очевидно никак не изменилась - всё тот же отрезок под 45 градусов. Таким образом, преобразование G1 было обратимым - оно имеет т.н. обратное преобразование G2. Нетрудно видеть, что и преобразование H1(X)=0.1*X также обратимо и имеет обратное - Н2(Х)=10*X. Кроме этого, и порядок применения обратимых преобразований не важен: G2(G1(F(X)))=G1(G2(F(X))). Всё так хорошо лишь пока мы находимся на "территории математики" - все числа у нас действительные, т.е. могут принимать любые значения и быть измерены с любой точностью.

Но как только от "математических" чисел мы переходим к "компьютерным"(или "цифровым"), т.е. к ячейкам памяти, появляются два фундаментальных ограничения:

  • диапазон ограничен максимальным числом М (т.е. Y<M).
  • точность ограничена числом m (т.е. cуществуют только Y=k*m, где k-натуральное число, а все остальные "округляются" до этих)

 Представим, что на рассмотренных выше примерах M=1 и m=0.01., кроме этого считаем значения ограниченными снизу нулём.

 

  • Исходная функция F изменится мало - появятся маленькие "ступеньки" по 0.01 (см График, красные точки)
  • Применим функцию G1. На всех точках при X>0.01 она "обрежется" до единицы и после применения G2 на всём отрезке кроме нуля результат будет 0.01 (см. График, красная линия)
  • Применим функцию H1. Вместо ста разных значений Y теперь принимает всего десять, т.к. от 0 до 0.1 можно разместить всего десять отсчётов с точностью m. Применение обратной функции H2 не меняет картину, а лишь увеличивает шаг в десять раз (см. График, красный пунктир)
  • Применение функций в обратном порядке ("G2 затем G1" и "H2 затем H1") разберите самостоятельно, ответ - на графике синим цветом. Видно, что результат не совпадает ни с чем: ни с функцией F, ни с результатом "прямого" применения пары G1G2 и H1H2.
  • Легко даже в уме прикинуть результат не только для умножения, но и для сложения, например для последовательного применения J1(X)=X+0.5 и J2(X)=X-0.5.

 Обобщим полученные на этом простом примере результаты. Итак, при ограниченном диапазоне значений и ограниченной точности (разрядности) данных, строго говоря, ЛЮБОЕ преобразование МОЖЕТ перестать быть обратимым, и, более того, МОЖЕТ приводить к потере информации. Потеря информации получается ДВУХ сортов: "ограничение" и "потеря разрядности". В приведённом выше примере умножение на 10 (и тем более на 100), а также сложение (и вычитание) 0.5 приводило к "ограничению". А в случае, когда мы сначала делили на 10 (и тем более на 100) - мы видели потерю разрядности.

Поясню выделенное слово "МОЖЕТ". На приведённой в примере функции F(X)=X легко доказать что не только МОЖЕТ, но ВСЕГДА необратимо. Но для некоторых других функций это не так. Например функцию F2(X)=0.1*X можно смело "подвергать" воздействию умножения на 10 - ограничения не произойдёт. Причина - диапазон значений не подходит "достаточно близко к границе". Впрочем, от умножения на 100 это "не спасёт". Другой пример: функцию F3(X)=0.5*X можно безболезненно умножать на два (или прибавлять 0.5), а вот на 10 умножать (или прибавлять 0.8) без ограничения уже не выйдет. Обобщим вновь: чем ближе значения исходной функции к границам диапазона, тем более "мягкими" должны быть преобразования для того, чтобы оставаться обратимыми.

И, наконец, последнее. Выше я показал, что последовательное применение двух преобразований (прямого и обратного) не совпадает в "цифровом" случае с исходным результатом, т.е. с тождественным преобразованием, которому в математике равно последовательное применение прямой и обратной функции. Но если это справедливо даже для тождественного преобразования(частный случай), то совершенно очевиден и более общий случай ЛЮБОГО преобразования, являющегося математической комбинацией двух других: если "в математике" А(В(...))=С(...), то в общем случае "в цифре" A(B(...)) НЕ РАВНО С(...). Иными словами, если к одной и той же цели "математически" можно придти разными путями, то эти же пути "в цифре" дадут строго говоря РАЗНЫЙ результат.

RAW, JPEG, TIFF и потеря данных. Мифы и реальность

Часто можно слышать и читать в популярных изданиях утверждение, что "JPEG - формат с потерей данных, а вот TIFF и RAW - нет". Этим же утверждением часто "оправдывают" отсутствие сохранения в RAW у некоторых камер ("RAW нет, зато есть TIFF!"). Некоторые авторы идут ещё дальше и даже при наличии обоих форматов в камере (RAW и TIFF) советуют сохранять в TIFF, "как более совместимом и не требующем конвертации". Все эти утверждения и советы в корне неверны. А что же на самом деле?

А на самом деле единственным форматом без потери данных является RAW. Степень потери данных при сохранении в TIFF и JPEG (максимального качества) примерно одинакова на 99% любительских сюжетов. А поскольку время сохранения файла TIFF в камере на порядок больше, чем JPEG, применение формата TIFF в цифровых камерах вообще нецелесообразно.

Утверждение категоричное и "еретическое", но лишь на первый взгляд. Защитники формата tiff наверняка начнут иллюстрировать его преимущества съёмками мелких контрастных чёрно-белых мир. И действительно получат более высокое разрешение и некоторые артефакты у формата JPEG. Но это как раз тот 1%, про который я упоминал. Большинство (99%) РЕАЛЬНЫХ любительских сюжетов не содержат столько мелких контрастных деталей в таких количествах. На РЕАЛЬНЫХ сюжетах потери от JPEG-сжатия по сравнению с TIFF настолько ничтожны, что даже на мониторе ПРИ СЛЕПОМ ТЕСТИРОВАНИИ (когда не знаешь что где) практически невозможно увидеть разницы. После распечатки - тем более. Гораздо заметнее другие потери данных, которые происходят при сохранении в камере, неважно - в TIFF ли или в JPEG. Про них практически никто не вспоминает, а знать о них необходимо.

Итак, на самом деле все цифровые камеры снимают в RAW, просто не все его отдают наружу. RAW - это просто оцифрованный сигнал яркости с каждого сенсора, прошедший лишь предварительную (калибровочную) обработку firmware камеры (исправление отклонений ДАННОЙ матрицы от среднестатистической, иногда - "софтовый ремонт"(ремаппинг) битых пикселей). Это чёрно-белый массив данных, не всегда даже совпадающий по координатам с конечной картинкой (особенно в случае SuperCCD и им подобных). Но это уже "цифровые" данные, они имеют свою разрядность (8, 10, 12, 16бит) и ограничения (соответственно 255, 1023, и т.д.). Дальше у этой информации два принципиально разных пути. Она либо записывается на флеш-память в файл *.CRW (иногда с внутренним сжатием на манер ZIP-а, без потерь), либо (в большинстве случаев) поступает в процессор фотоаппарата на обработку. Процессор делает следующие вещи:

  • интерполирует RGB цвета конечных точек изображения из сигналов окружающих сенсоров всех цветов;
  • применяет цветокорректировку в соответствии с настройками Баланса Белого;
  • применяет цветокорректировку в соответствии с настройками контраста и насыщенности;
  • применяет шарпинг (или блюринг) в соответствии с установками шарпа.
  • конвертирует результат в 8-битный цвет;

И лишь затем результат записывается в TIFF (или JPEG) формате на носитель.

Вы видели, сколько преобразований делает процессор камеры? Поскольку разрядность каждого цвета невелика (от 8 до 12 бит, как правило), то ограничение диапазона составляет всего лишь сотни или тысячи, т.е. несильно отличается от приведённого в математическом отступлении примера. Таким образом, каждое преобразование в процессоре камеры необратимо и теряет данные. Сама по себе потеря данных неизбежна - для конечного результата (просмотра на мониторе, печати на бумаге или записи на компакт-диск) нам, так или иначе, потребовалось бы проделать эти преобразования - не в фотоаппарате, так в RAW-конвертере и Фотошопе. Вопрос лишь в СТЕПЕНИ этих потерь. Если мы "угадали" с настройками и сразу получили "хорошую" картинку - нам повезло. А вот если для данного сюжета какой-то из параметров выбран неудачно (баланс белого, контраст, шарп), то нам приходится в Фотошопе делать его корректировку. Т.е. вместо "прямого" пути C() выбирать "окольный" - А(B()). В математическом отступлении наглядно показано, что это ни к чему хорошему не приводит (учитывая 8-битность JPEG). Т.е., совсем "на пальцах": если, скажем, неудачно сработавший автомат баланса белого вместо того чтобы записать в файл градиент от 0 до 255 по одному из каналов (аналог нашего отрезка от 0 до 1) предварительно "умножит его на два", то в Фотошопе мы конечно "поделим обратно на два", но на половине данных произойдёт ограничение - мы никогда не узнаем что там раньше было - градиент ли, рисунок ли...

Вся неприятность ситуации состоит в том, что понять насколько удачны выставленные при съёмке параметры можно только ПОСЛЕ съёмки - посмотрев результат, желательно на большом мониторе. Т.е. когда исправить уже поздно. А формат RAW (в случае если его камера "отдаёт") позволяет вообще не выставлять никаких параметров цвета-контраста-шарпа при съёмке (всё в авто)! На компьютер ставится точный программный аналог камерного процессора (RAW-конвертер) и можно получить на выходе варианты при ЛЮБЫХ параметрах и сравнить их между собой в спокойной обстановке. При недостатке же времени можно запустить пакетное конвертирование с параметрами "AS SHOT" и получить ровно те же JPEG-и, которые камера выдала бы на полном автомате.

Счастливым обладателям 12-битного RAW(в отличие от 8-битного) "в нагрузку" даётся возможность экспокоррекции плюс-минус 2EV (2 "стопа") почти без потери качества(относительно соответствующего повышенного ISO в случае положительной коррекции) ЗАДНИМ ЧИСЛОМ, при конвертации. Т.е. кадры, снятые на ISO400 нормально, и кадры, снятые на ISO100 с недодержкой и "вытянутые" в конверторе, отличаются мало. Это позволяет не слишком заботиться о точности экспозамера и не тратить время на точечные замеры - пусть ценой некоторого шума, но детали в тенях не пропадают в большинстве случаев.

Насколько существенны те "ужасы потерь данных", описанные выше? Почему владельцы многочисленных цифромыльниц без RAW не стонут от несправедливости? Может всё это вообще на глаз не видно? Для тех, кто внимательно читал "математическое отступление", ответ уже должен быть очевиден: чем цветастее и контрастнее снимаемый сюжет, чем выше диапазон его яркостей, тем меньшие ошибки он простит. Кроме самого сюжета, сдвигают значения к границам и ошибки экспозиции (недодержка, передержка). Если автомат поставил "среднюю" экспозицию, то сюжетно важный объект может оказаться недо/пере-свеченным, т.е. наиболее чувствительным к дальнейшим ошибкам обработки (близок к границам). Или, резюмируя: разница между технологиями "JPEG-Фотошоп" и "RAW-конвертер-Фотошоп" малозаметна на правильноэкспонированных низкоконтрастных сюжетах, но начинает становиться тем заметнее, чем:

  • контрастнее сюжет
  • больше недодержка/передержка(или объект в тени или блике)
  • больше ошибка в съёмочных параметрах (например забыли снять режим ББ "ламп накаливания" при выходе на улицу)

 Вот типичная иллюстрация вышесказанному (см. фото): объект был недодержан на две ступени, да и автомат ББ сработал не блестяще. В результате пришлось корректировать и ББ, и экспозицию. Худший результат - коррекция "готового" 8-битного файла в Фотошопе (PS=фотошоп). Средний - коррекция экспозиции в RAW, а цвета - в шопе. И, наконец, лучший - коррекция всего в RAW-конверторе. При этом был применён метод "РББ задним числом", о котором речь пойдёт чуть ниже.  

   Оригинал (общий вид кадра, сильно уменьшено)
Примерная цель (общий вид кадра, сильно уменьшено)
   И сравнение разных способов её достижения (небольшой фрагмент, 100%). Артефактов JPEG от выкладывания в Сеть здесь нет, все что видно - артефакты цветокоррекции и "вытягивания". Обратите внимание на синюю рваную пелену на глазу. Желтизну кожи на нижних вариантах без избирательной обработки убрать невозможно - сильно гадятся другие цвета (которых не видно на фрагменте). Единственный способ далее уточнять цветопередачу - избирательное применение к разным участкам разных фильтров - непозволительно трудоёмок для любителя.

Казалось бы, если не ошибаться с балансом белого и экспозицией (как намеренно сделано в приведённом примере чтобы различия были видны НАГЛЯДНО), всё это не нужно... Но,

  • во-первых, не ошибаться очень трудно. Ручной баланс белого, конечно, многое спасает, но катастрофически снижает оперативность (вот Вы увидели, что на вечеринке завязалось нечто... или что Ваш ребёнок заполз куда-то и вот сейчас... Если Вы начнёте обкладывать место действия листами белой бумаги и лихорадочно вспоминать на какие кнопки нажимать для выставления ББ, в 99% случаев интересный момент будет упущен.) Единственный выход - снимать на автомате, а он часто ошибается. Второй выход - РББ "задним числом" есть ТОЛЬКО у снимающих в RAW (о нём - чуть ниже).
  • во-вторых, даже у "правильно" сделанного "в среднем" кадра могут оказаться интересные (сюжетно-важные) детали в тенях/светах, особенно если они не в центре кадра. Конечно, на "продвинутых" моделях кроме "фокус-лока"(блокировки фокуса перед окончательным кадрированием) есть ещё и "экспо-лок". Но по опыту им пользуются очень немногие, хорошо если с "фокус-локом" освоятся... Да и неудобно это, неоперативно... Не совсем для любителя.

Не удержусь и приведу ещё одну, возможно, даже более наглядную, иллюстрацию различий RAW/TIFF/JPG форматов для съёмки (по совету читателей).

Это - снимок на стандартной экспозиции, сразу в JPG (Обратите внимание на выбеленное небо...):

Это - он же, с той же экспозицией, но "вытащенный" из RAW. Небо "проявилось.

А ниже - не белый прямоугольник, а тот самый кусочек неба, который обведён в рамку, но из оригинального JPG (виден уменьшенный, по ссылке откроется оригинальный, все сжатия из фотошопа на качестве 12, т.е. максимальном)

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

А это - мои результаты "вытаскивания" деталей облака. Я решил сузить и упростить задачу - заняться ТОЛЬКО облаком. Почему? Дело в том, что существует очень много способов затемнить небо, не трогая кремль, в том числе довольно трудоёмкие (вырезание в другой слой, маскирование, кривые, кисть истории и т.п.). Всегда найдутся фанатики перепробовать все и обвинить меня в неквалифицированном владении фотошопом. Поэтому, чтобы не тратить время, забудем про кремль и предположим что нам важно максимально детализировать именно облака (показать "грозу над Кремлём"). Совершенно ясно, что если детали в файле есть, то и более общую задачу удастся решить, а если нет - то никакие маски и кисти не помогут...

Пояснения: JPG - снято сразу в JPG, TIF8 - снято сразу в TIF, TIF16 - так было бы, если бы камера сохраняла 16-битный TIF, RAW-1 - коррекция из RAW на одну ступень, RAW-2 - на две ступени.
Наглядно видно, что самый резкий шаг проходит между TIF16 и RAW-1, т.е. максимальное количество информации теряется в камере не от сжатия в JPG и даже не от преобразования в 8-битный цвет, а на предыдущих этапах (интерполяции и цветокоррекции). В RAW она сохраняется и "извлекается" конвертером, а даже в 16-битном TIF-е оказывается потерянной.

Ручной баланс белого "задним числом"

Распространённый миф о том, что "в Фотошопе можно подправить всё что угодно" и исправить любые цвета, как мы видели выше, не соответствует действительности. Но не только из-за искажений. Исправление баланса белого в Фотошопе - нетривиальный процесс. Только для чрезвычайно узкого круга "стандартных" сюжетов работают "автоматические" кнопки типа "автоколор" или "автолевелс". Для остальных подобрать коррекцию не всегда тривиально, т.к. света, тени и средние тона надо корректировать по-разному, и самый частый эффект - "голову вытащишь - хвост увязнет" - не удаётся "покрасить" все детали правильно ОДНОВРЕМЕННО. Поэтому лучше всего максимальную часть работы сделать ДО Фотошопа - либо в фотоаппарате, либо (если есть возможность) - в RAW-конвертере.

В фотоаппарате для этого предназначена функция "ручной баланс белого" (далее - "РББ"). При её наличии, как правило, результат получается лучше, чем на автомате или "пресетах". Алгоритм её использования подробно описан в инструкции и может отличаться для разных камер, но общее у них ОДНО - необходимо поместить вместо объекта (или рядом с ним) лист бумаги и откалиброваться по нему ДО ТОГО как начать съёмки. Как я уже упоминал выше, во многих случаях это неудобно, неоперативно и часто попросту делает съёмку невозможной. Однако, у владельцев камер с форматом RAW есть блестящий выход - "РББ задним числом". Суть метода очень проста:

  1. видим событие, НЕМЕДЛЕННО снимаем его (в RAW разумеется);
  2. запоминаем место и точку съёмки;
  3. когда событие переместилось(закончилось), ребёнок уполз, драку разняли и т.п., кладём на ЭТО ЖЕ место (события) листок бумаги, а сами занимаем ту же точку и просто СНИМАЕМ бумагу (тоже в RAW). Подчёркиваю - НЕ УСТАНАВЛИВАЕМ РББ а просто нажимаем на спуск. Важно лишь чтобы освещение оставалось прежним (т.е. таким же как при съёмке события).
  4. позже, дома, в RAW-конверторе выбираем пару событие/листок, тыкаем в листок пипеткой и говорим конвертору "конверти всё выделенное с таким же ББ". Технические подробности различаются для разных конверторов, но суть везде одна.

 Единственным недостатком указанного способа является лишний расход места на флеш-карте на "служебные" кадры с бумагой, но при нынешних ценах на память и их тенденциях это не слишком обременительно... Зато "неизменно превосходный результат"!

Практические выводы 

  • Камера с сохранением в RAW имеет много преимуществ, в частности
    • Максимальная оперативность при съёмке (не нужно выставлять НИКАКИХ цвето-контрастно-шарповых параметров). Для любителя особенно ценно, поскольку ему ещё выставлять кучу других параметров (ISO, программу экспозиции/выдержку или диафрагму, зум, следить за фокусом, за кадрировкой, а голова не резиновая, выдержка с диафрагмой путаются :-), а тут ещё баланс белого, будь он неладен...)
    • Возможность РББ "задним числом"
    • Возможность "вытащить" максимальное качество за счёт минимальной потери данных.
  • Желательно обеспечить и сохранить максимально возможное качество ДО обработки, а так же именно его (первичные данные с камеры) сохранять в архивах в качестве "негативов" - т.к. любая обработка необратимо изменяет оригинал и переобработать по-другому без потери качества уже не получится.. Максимально возможное качество это:
    • RAW если возможен
    • РББ если возможен, в т.ч. и "задним числом"
    • Если RAW невозможен - JPEG максимального размера и максимального качества. Часто говорят что для 10*15 это избыточно. При нынешних смешных ценах на болванки, положите на полку - пусть будет. Никто не знает, какую ценность для Вас будет представлять этот кадр через десять-двадцать-тридцать лет. Возможно потом будет обидно, что сохранили его всего лишь "800*1200" из-за экономии одного-двух-трёх мегабайтов на болванке (т.е примерно трёх-пяти-семи копеек!).
  • При 10-12битном RAW конвертирование и обработка его в 16-битных форматах и лишь на последнем этапе (перед печатью и сохранением в архиве) "обрезка" до 8 бит позволяет снизить описанные выше потери при обработке.

 И отдельное пожелание некоторой (немногочисленной, но существующей) категории читателей, которые думают примерно так: "короче, я всё равно ничо не понял, я забашлял штуку баксов, и чо теперь - ещё с Фотожопой разбираться??? Не, пусть камера за меня думает! Буду снимать на полном автомате!"... Никаких проблем! Не надо фотошопа. Освойте только одну операцию в RAW-конверторе - пакетную конверсию в JPEG со всеми настройками "AS SHOT". А снимайте всё равно в RAW и НЕ СТИРАЙТЕ ИХ после конверсии - сбрасывайте на болванку. Возможно со временем не Вы, так Ваши дети/жёны/друзья захотят сделать из некоторых снимков конфетку - тут то им архивы с RAW и пригодятся. Опять же никто не знает, какой из снимков будет интересен через несколько лет и кому...

Смотреть другие статьи о фотографии