Как устроен RAW и JPEG? В каком формате лучше хранить изображения?

В материале вы узнаете, как происходит получение фотографии, почему и как сжимают изображения, а также что случится с фотографией, если загрузить её в Instagram тысячу раз.

Как устроен RAW и JPEG? В каком формате лучше хранить изображения?

Есть у камер и смартфонов два формата для съёмки фото и видео: сжатый и RAW — «сырой» формат. А недавно Apple представила формат ProRAW, который дебютировал в iPhone 12 Pro и Pro Max с выходом iOS 14.3. 

В этом материале мы разберёмся, что лучше подойдёт для съёмки фото и видео, зачем обычным пользователям этот формат может пригодиться, что будет, если загрузить одну и ту же фотографию в Instagram, «ВКонтакте» или Telegram 1000 раз и почему камеры, которые умеют снимать RAW, стоят дорого.

Что такое RAW и что такое съёмка со сжатием

Формат RAW у видео и фотографий — это файл с набором чистых сигналов, которые были получены с матрицы камеры. Ещё его называют «цифровой» негатив, потому что RAW-файл не может быть так легко опубликован куда-то в ваш любимый Instagram или YouTube. Перед этим фото или видео необходимо обработать, прогнать через алгоритм, чтобы сжать в привычный JPEG, PNG или TIFF (в случае видео — в mp4, AVI, WMV).

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

В случае RAW-формата данные с матрицы не поддаются компрессии. Поток света, который уловил сенсор, напрямую идёт на внешний накопитель. Соответственно RAW-файл состоит из двух элементов: карты света (эдакого чёрно-белого изображения) и карты цветности в трёх каналах — красном, зелёном и синем. Короче говоря — в RGB. Причём цвета у RAW-фото или видео идут в качестве отдельных метаданных, которые не зависят от светлости. Поэтому при работе с RAW-файлами получается проще и эффективнее работать с экспозицией и цветокорекцией. А вы, кстати, знаете, как вообще камера захватывает изображение?

Как камера делает фотографии и как получается RAW

Матрица камеры или смартфона состоит из отдельных светочувствительных фотодиодов (пикселей). Сама матрица накрывается тончайшим цветным фильтром, который делит сенсор на субпиксели, каждому из которых присваивается свой цвет — красный, зелёный и синий. 

Именуется такая составляющая матрица «мозаичным фильтром». Их есть несколько, но самым распространённым является фильтр Байера. Его в 1976 году придумал американский инженер Брайс Байер (1929-2012 гг.), тогда он работал в Kodak.

Брайс Байер 

На изображении вы можете обратить внимание, как будто зелёных субпикселей больше — и это так. Фильтр Байера состоит на 25% из красного, на 25% из синего и на 50% из зелёного спектра. Сделано это не случайно, просто наши глаза более восприимчивы к зелёному цвету, а подстраивание матрицы к стандартам нашего зрения позволяет запечатлеть изображения максимально близко к тому, что видим мы. (Потом всё это упорядочивается в RGB-пространство для просмотра на мониторах).

Когда свет попадает на матрицу, он создаёт на ней электрический заряд. Чем освещение более интенсивно, тем больше будет накоплено заряда на сенсоре и тем сильнее будет засвечена область на фотографии. Регулировать это можно выдержкой (длительностью открытия затвора). После центральный процессор преобразует поток света с матрицы в цифровой файл — изображение.

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

На картинке выше вы можете увидеть, насколько отличается один и тот же снимок, сделанный на iPhone в разных форматах. Однако если мы возьмём и откроем обе фотографии, приблизим, то, на первый взгляд, фотография в RAW выглядит хуже — больше шумов, хуже резкость, мало деталей. При этом JPEG, весящий практически в 20 раз меньше выглядит лучше. Как так?

Как сжимаются изображения

Здесь давайте поговорим на примере JPEG, так как он является самым распространённым. После того как вы делаете снимок, неважно на камеру или телефон, в «бой» идёт математика и алгоритмы. Сначала изображение переводится в цветовое пространство YCbCr. Оно состоит из одного яркостного компонента и двух цветовых. Цветовые компоненты будем называть цветовыми масками.

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

Следующим делом идёт процесс, в котором изображение разделяется на блоки 8×8 пикселей (затрагиваются все три компонента). В этот момент алгоритм дискретного косинусного преобразования определяет области, у которых меньше всего деталей и кодирует их меньшим количеством бит — проще говоря, заливает одним цветом. Такой областью на фотографиях, как правило, является небо.

Можете сами сравнить два снимка — слева без сжатия, справа со сжатием.

А более детализированные области 8×8 пикселей раскладываются на 64 пространственные волны. Каждый блок картинки создаётся благодаря наложению этих компонентов с разными коэффициентами. В процессе наложения, алгоритм округляет некоторые коэффициенты наложения до нуля. В этот момент теряется чёткость у мелких деталей, однако общая информация сохраняется. Потом у JPEG следуют ещё несколько этапов математического преобразования, однако основное сжатие происходит на описанных выше этапах, поэтому мы их упустим. Ну и в конце изображение после всех преобразований переводится из пространства YCbCr в RGB. Аналогичным образом работает также и сжатие видео.

После сжатия, для компенсации пониженного качества, производители смартфонов прогоняют свои фотографии через алгоритмы, которые компенсируют потери, пускай и искусственно. У изображений повышается насыщенность, резкость (sharping), применяется умная настройка экспозиции (Smart HDR) и ещё много чего другого. Это же основные моменты. Финальное изображение действительно после съёмки выглядит лучше, однако обработке оно поддаётся хуже. 

Сравним, наложенную обработку на одну и ту же фотографий в RAW и JPEG и поймём разницу.

Так что кадр, сделанный в RAW сначала может выглядеть менее колоритно, зато он более податлив устранению всяких «шероховатостей». Те же шумы, как по мне, лучше убрать с той интенсивностью, которая вам больше нравится.

Кстати, чтобы определить, как сильно выбранный вами кодек сжимает данные, обращайте внимание на соотношение цифр в структуре дискретизации сигнала. Она обозначается тремя цифрами, например, 4:2:2. Первая цифра — дискретизация яркостного компонента, а две других — дискретизация цветовых масок. Максимумом здесь является значение 4, так что если у формата соотношение цифр 4:4:4, то файл будет почти без потерь. Иногда бывает и четыре цифры (4:4:4:4), но только в том случае, если у изображения или видео имеется альфа-канал.

1000 фотографий в Instagram? Зачем и какой итог?

Я провёл эксперимент этот эксперимент сугубо из интереса, чтобы наглядно узнать, как работают алгоритмы сжатия при загрузке в тройку самых популярных интернет-сервисов в нашей стране. Каждую фотографию после загрузки в сервис я скачивал и загружал обратно.

1 загрузка
10 загрузка
50 загрузка
100 загрузка
500 загрузка
1000 загрузка

Загрузив в Instagram 1000 фотографий стало очевидно, что компания серьёзно снижает качество и компенсирует это агрессивным повышением резкости. На пятисотой и тысячной загрузке даже малейшая исходная информация с фотографии просто-напросто пропала. Лично ознакомиться с экспериментом вы можете по ссылке.

К сожалению Instagram своими алгоритмами удалил с аккаунта практически 400 фотографий, однако заключительные снимки остались нетронуты и в целом это не влияет на общее представление картины.

У ВК и Telegram используются немного иные алгоритмы. Картинка осталась по-прежнему читаемой даже на тысячную загрузку. Но без артефактов не обошлось. 

1000 загрузка в ВК
1 загрузка

У ВК какое-то смещение на правой стороне. Посмотреть можете в отдельном альбоме.

У Telegram хаотичные цветные блоки по всей площади изображения. К сожалению аккаунт Telegram удалился, спустя несколько месяцев неиспользования, поэтому приложить оригиналы мы не можем. Однако вот пример 538 загрузки. 

Instagram можно понять — их сервисом пользуется 700 млн человек и тут сжатие, пускай даже такое агрессивное, необходимо для экономии места на серверах. Само собой, мой эксперимент — это исключение из правил и эдакий «стресс-тест» алгоритмов сжатия.

Выводы

Обычно в таких материалах говорят, что RAW — это игрушка для профессионалов, но даже будучи любителем, делающим фотки во время семейных праздников вы всё равно оцените возможности этого формата.

У меня бывало, что получалась хорошая фотография, но с засветом или недостаточной освещённостью. Если это снимок в RAW — парой ползунков я могу исправить эти недочёты. Так что снимая в RAW вам реже нужно думать о том, как видни те или иные объекты на фотографии. После съёмки вы всегда сможете поправить соотношение тёмных областей к светлым.

Владельцам iPhone 12 Pro и Pro Max с появлением ProRAW вообще не вижу причин не попробовать нововведение. Главное учтите, что снимки в RAW занимают в 10 раз больше места. Комфортным минимумом, как по мне, является объём 128 гигабайт встроенной памяти. А владельцы старых iPhone и других смартфонов могут найти в App Store или Google Play уйму софта, предоставляющую возможность съёмки в несжатом формате.