Почему программное обеспечение может корректировать баланс белого более точно для файлов RAW, чем для файлов JPEG?

Почему коррекция баланса белого при постобработке JPEG не так точна, как баланс белого в Raw?

Насколько я понимаю, при съемке в формате jpeg камера выполняет следующие действия:

  1. Преобразуйте необработанные данные датчика с помощью алгоритма (демозаики/дебайеризации).
  2. Преобразовать в линейное пространство

    а. Использование справочной таблицы сопоставляет необработанное значение с линейным пространством

    б. Затем вычисляется и вычитается уровень черного для каждого пикселя.

    в. Затем значение для каждого пикселя масштабируется от 0,0 до 1,0 с использованием уровня белого.

    д. Значение масштабируется и обрезается до логического диапазона от 0,0 до 1,0.

  3. Сопоставление цветового пространства камеры с пространством CIE XYZ с настройкой баланса белого

    а. Преобразование в XYZ (D50) с использованием CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Преобразование CIE XYZ в sRGB

    а. Вычислите линейный RGB, используя матрицу CIE XYZ to Linear RGB

    б. Вычислите Rec709 sRGB, используя преобразование гамма-кривой на линейном RGB

  5. Преобразование sRGB в 8 бит и сжатие с использованием JPEG

Если это правильно, я не понимаю, почему в Jpeg нельзя было исправить баланс белого так же, как в Raw!

Это просто из-за сжатия с потерями JPEG и 32-битного TIFF-файла, не будет этой проблемы?

введите описание изображения здесь

Что заставляет вас думать, что JPEG WB не так точен, как raw? Что вы подразумеваете под точным ? Вы имеете в виду, что камера обычно не угадывает так хорошо, как это может сделать опытный человек, использующий приложение для преобразования необработанных данных? Или что-то другое?
Я имею в виду, что если я скажу своей камере сохранить необработанную и jpeg-копию одного и того же изображения, а затем открыть их обе в лайтруме и попытаться исправить баланс белого с помощью палитры цветов, щелкнув точно такое же место на изображении, получится необработанное изображение. идеально, в то время как jpeg все еще имеет странный цвет.
Это совсем другой вопрос. Я собираюсь отредактировать заголовок, чтобы отразить то, что, как я думаю, вы на самом деле спрашиваете...
Первое изображение НЕ является «исходным необработанным файлом». Это одна из бесконечно возможных интерпретаций необработанных данных, которые ваше приложение для преобразования необработанных данных произвело и отобразило на экране в 8-битном формате.
Вероятно, это не самый важный момент, но ваш шаг 2 на самом деле представляет собой два отдельных шага, и они могут выполняться не в том порядке, в котором вы их представляете (что было бы дополнительным способом, которым ББ «запекается» в окончательный JPEG). цвет).
Ваш отредактированный список процесса значительно отличается от оригинала, что может сделать многие ответы недействительными. Может быть, лучше задать новый вопрос, основанный на вашем обновленном понимании?
mattdm: я уже принял ответ, я только что отредактировал вопрос, включив в него правильные детали того, как Raw преобразуется в JPEG, чтобы будущие читатели могли лучше понять, где баланс белого вычисляется программным обеспечением для обработки Raw.

Ответы (3)

Почему программное обеспечение может корректировать баланс белого более точно для файлов RAW, чем для файлов JPEG?

Существует фундаментальная разница между работой с фактическими необработанными данными для получения иной интерпретации необработанных данных, отличной от исходной 8-битной интерпретации необработанного файла, которую вы видите на экране, и работой с 8-битным jpeg, где вся информация находится в файл — это то, что вы видите на экране.

Когда вы используете белый кликер для «сырого» файла, вы не корректируете изображение, отображаемое на вашем экране (которое представляет собой 8-битный рендеринг, подобный jpeg, который является одной из многих возможных интерпретаций данных в файле необработанного изображения). ). Вы говорите приложению преобразования необработанных данных вернуться и повторно преобразовать данные в необработанном файле в отображаемое изображение, используя другой набор множителей цветовых каналов.

Вы создаете другое изображение из тех же необработанных данных, которые использовались для создания первой версии, которую вы видите на экране. Но приложение возвращается к самому началу и использует все данные в необработанном файле для создания второй, другой интерпретации необработанных данных, основанной на ваших других инструкциях относительно того, как эти данные должны обрабатываться. Это не запуск с ограниченной информацией, отображаемой на вашем экране, и ее исправление. Если бы это было так, вы бы получили тот же результат, что и при работе с jpeg. ¹

Необработанный файл содержит гораздо больше информации, чем отображается на вашем мониторе, когда вы «открываете» необработанный файл. Файлы необработанных изображений содержат достаточно данных, чтобы создать почти бесконечное количество различных интерпретаций этих данных, которые поместятся в 8-битный файл JPEG².

Каждый раз, когда вы открываете необработанный файл и просматриваете его на своем экране, вы не просматриваете «НЕОБРАБОТАННЫЙ файл». ³ Вы просматриваете одну из почти бесчисленного множества возможных интерпретаций данных в необработанном файле. Сами необработанные данные содержат одно (монохромное) значение яркости, измеренное каждой лункой пикселя. В сенсорах камеры с маской Байера (подавляющее большинство цветных цифровых камер используют фильтры Байера) каждый пиксель имеет перед собой цветной фильтр , который может быть «красным», «зеленым» или «синим» (фактические «цвета» изображения). фильтры в большинстве масок Байера варьируются от слегка желтовато-зеленого до оранжево-желтого для «красного», слегка голубовато-зеленого для «зеленого» и слегка голубовато-фиолетового для «синего».эти цвета более или менее соответствуют центру чувствительности трех типов колбочек в нашей сетчатке ). Для более полного обсуждения того, как мы получаем информацию о цвете из отдельных значений яркости, измеренных в каждом пикселе, см. Файлы RAW хранят 3 цвета на пиксель или только один?

Когда вы меняете баланс белого необработанного файла, вы не вносите изменения в 8-битную интерпретацию необработанного файла, который вы видите на экране, вы вносите изменения в способ интерпретации линейных 14-битных монохроматических необработанных данных и затем отображается на экране с обновленным балансом белого.То есть вы используете все преимущества тех 16 384 дискретных монохроматических линейных шагов, которые содержит необработанный файл для каждого пикселя, а не 256 дискретных шагов с гамма-коррекцией в трех цветовых каналах для каждого пикселя, которые вы видите на своем 8-битном экране как представление этого необработанного файла. Вы также используете всю другую информацию, содержащуюся в необработанных данных изображения, включая такие вещи, как замаскированные пиксели и другую информацию, которая отбрасывается при преобразовании файла в 8-битный формат для отображения на экране.

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

Каждое приложение имеет собственный набор параметров по умолчанию, которые определяют, как обрабатываются необработанные данные. Одним из наиболее важных параметров является то, как выбирается баланс белого , который используется для преобразования необработанных данных. Большинство приложений имеют множество различных наборов параметров, которые может выбирать пользователь, который затем может свободно изменять отдельные настройки в наборе инструкций, используемых для первоначальной интерпретации данных в необработанном файле. Многие приложения будут использовать множители баланса белого/цветового канала, оцененные камерой (при использовании AWB в камере) или введенные пользователем (при использовании коррекции CT + WB в камере) во время съемки фотографии. Но это не единственный допустимый баланс белого, который можно использовать для интерпретации необработанных данных.

В 14-битном необработанном файле имеется 16 384 дискретных значения от 0 (чисто черный) до 1 (чисто белый). Это позволяет очень маленькие шаги между каждым значением. Но это монохромные значения яркости. Когда данные подвергаются демозаике, применяются гамма-кривые и выполняется преобразование в определенное цветовое пространство, к этим 14-битным значениям обычно применяются множители преобразования WB. Последним шагом в этом процессе является переназначение полученных значений до 8 бит перед сжатием файлов с потерями. 8-битные позволяют только 256 дискретных значений от 0 (чисто черный) до 1 (чисто белый). Таким образом, каждый шаг между значениями в 64 раза больше, чем с 14-битными.

Если затем мы попытаемся изменить WB с помощью этих гораздо более точных градаций, области, которые мы пытаемся расширить, продвинут каждый из шагов в данных, которые мы используем, дальше, чем один шаг в результирующем файле. Таким образом, градации в этих областях становятся еще более грубыми. Области, которые мы сжимаем, помещают каждый из этих шагов в меньшее пространство, чем один шаг в результирующем файле. Но затем все эти шаги перестраиваются, чтобы соответствовать градации из 256 шагов между «0» и «1». Это часто приводит к полосатости или постеризации вместо плавных переходов.

¹ Чтобы работать быстрее и менее требовательно к ресурсам, некоторые приложения для необработанной обработки будут иметь «быстрый» режим, который фактически изменяет существующее 8-битное представление на вашем экране при перемещении ползунка настройки. Это часто приводит к полосам или другим нежелательным артефактам, таким как фиолетовый оттенок, который вы видите в jpeg со смещенным цветом в вопросе. Однако это применяется только к предварительному просмотру, который вы просматриваете. Когда файл конвертируется и сохраняется (экспортируется), к необработанным данным фактически применяются те же инструкции, что и при повторной обработке, и полосатость или другие артефакты не видны (или не так заметны).

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

³ См.: Почему мои изображения RAW уже цветные, если дебайеризация еще не выполнена?

Это могло бы объяснить появление полос или постеризацию на изображении, вызванное снижением точности, но все же должна быть возможность переместить белую точку в правильное положение no ?

Вы можете изменить цвет JPEG в определенной степени, но большей части информации, необходимой для получения всех цветов, которые вы можете получить с помощью необработанных данных, больше нет. Он был отброшен при преобразовании в RGB и уменьшении до 8 бит перед сжатием. Единственное, с чем вам осталось работать, — это значения каждого пикселя в этих трех цветовых каналах. Кривые отклика для каждого из этих каналов могут быть перерисованы, но все, что нужно сделать, это повысить или понизить значение для этого цветового канала в каждом из пикселей изображения. Он не возвращается и не повторяет демозаику на основе новых множителей каналов, потому что эта информация не сохраняется в формате JPEG.

Очень важно понимать, что в примере изображения, добавленного к вопросу, второе изображение не является производным от первого изображения. И первое, и второе изображения представляют собой две разные интерпретации одних и тех же необработанных данных.Ни один из них не является более оригинальным, чем другой. Ни один из них не является более «правильным», чем другой, с точки зрения того, что он является допустимым представлением данных, содержащихся в необработанном файле. Оба они являются совершенно законными способами использования данных в необработанном файле для создания 8-битного изображения. Во-первых, это то, как ваше приложение для преобразования необработанных данных и/или предварительный просмотр в формате jpeg, сгенерированный вашей камерой, выбрали для интерпретации данных. Во-вторых, это то, как ваше приложение для необработанного преобразования интерпретировало данные после того, как вы сообщили ему, какие необработанные значения датчика вы хотите преобразовать в серый/белый. Когда вы нажимали на ту же часть изображения в формате jpeg, большая часть информации о цвете, необходимой для исправления изображения, чтобы оно выглядело как вторая версия необработанного файла, больше не существовала и, следовательно, не могла использоваться.

Это просто из-за сжатия с потерями JPEG и 32-битного TIFF-файла, не будет этой проблемы?

Нет, хотя сжатие с потерями составляет большую часть этого. Так же как и сокращение до 8 бит, которое делает каждый шаг между «0» (чистый черный) и «1» (полная насыщенность) в 64 раза больше, чем в 14-битном необработанном файле. Но это выходит за рамки сжатия JPEG.

Пара абзацев из этого ответа на RAW в TIFF или PSD 16bit теряет глубину цвета :

Как только данные в необработанном файле были преобразованы в файл TIFF с демозаикой и гамма-коррекцией, этот процесс становится необратимым.

Файлы TIFF имеют все эти этапы обработки, «запеченные» в информации, которую они содержат. Несмотря на то, что несжатый 16-битный файл TIFF намного больше, чем типичный необработанный файл, из которого он получен, из-за способа хранения данных в каждом из них, он не содержит всей информации, необходимой для обратного преобразования и воспроизведения точно таких же данных. содержится в необработанном файле. Существует почти бесконечное количество различных значений в данных уровня пикселей необработанного файла, которые можно было бы использовать для создания определенного TIFF. Точно так же существует почти бесконечное количество файлов TIFF, которые могут быть созданы из данных в файле необработанного изображения, в зависимости от принятых решений о том, как необработанные данные обрабатываются для создания TIFF.

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

Но только потому, что 16-битный TIFF имеет больше шагов между «0» и «65 535», чем 12-битный (0-4095) или 14-битный (0-16383) необработанный файл, это не означает, что файл TIFF показывает тот же или больший диапазон яркости. Когда данные в 14-битном необработанном файле были преобразованы в файл TIFF, черная точка могла быть выбрана со значением, например, 2048. Любому пикселю в необработанном файле со значением ниже 2048 будет присвоено значение 0. в ТИФФ. Точно так же, если точка белого была установлена, скажем, на 8191, то любое значение в файле необработанных данных выше 8191 было бы установлено на 65535, и самая яркая точка света в файле необработанных данных была бы безвозвратно потеряна. Все, что в необработанном файле ярче, чем выбранная белая точка, имеет такое же значение в TIFF, поэтому никакие детали не сохраняются.

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

Файлы RAW хранят 3 цвета на пиксель или только один?
RAW в TIFF или PSD 16 бит теряет глубину цвета
Как начать с настроек JPEG в камере в Lightroom?
Почему внешний вид файлов RAW меняется при переключении с «lighttable» на «darkroom» в Darktable?
nikon d810 manual Баланс белого — это не то же самое, что «As Shot» в Lightroom
Почему изображения RAW выглядят хуже, чем JPEG в программах редактирования?
Сопоставьте цвета в Lightroom с другими инструментами редактирования
При съемке в формате RAW вам нужно выполнить постобработку, чтобы изображение выглядело хорошо?

Почему происходит потеря качества при переходе с камеры на экран компьютера
Почему мои фотографии выглядят по-разному в Photoshop/Lightroom и утилите Canon EOS/в камере?
Почему мои изображения на камере выглядят иначе, чем при импорте на мой ноутбук?
Как эмулировать обработку в камере в Lightroom?
Преобразование jpg в Nikon в сравнении с Lightroom
Почему превью моего Lightroom/Photoshop меняется после загрузки?

Это могло бы объяснить появление полос или постеризацию на изображении, вызванное снижением точности, но все же должна быть возможность переместить белую точку в правильное положение no ?
Так вы говорите, что это только из-за ограниченной точности цвета jpeg и что с 32-битным файлом tiff или openEXR мы могли бы правильно исправить баланс белого?
@skyde Этот ответ касается того, что вы спрашиваете?
Да, это имеет смысл, это говорит о том, что цвет из необработанного изображения может быть обрезан при преобразовании в цветовую гамму TIFF. И из-за этого мы все равно потеряли информацию, которая может понадобиться для коррекции цветового баланса.
Я включил больше информации, большую часть из этого другого ответа, в этот ответ.
Я со скайдом: Просто там меньше дискретных шагов в цветовом разрешении не означает, что результат баланса белого хорошо виден, разные результаты. Особенно, если версия jpeg имеет насыщенный фиолетовый оттенок. Более подходящей теорией было бы то, что возможные значения внутренней коррекции ограничены более узким диапазоном в jpeg, чем в необработанном виде, что дополняется тем фактом, что необработанные данные интерпретируются на основе необработанных данных датчика, а jpeg — это дискретные значения цвета.
@ Horitsu Вот что касается последней части ответа. Когда «исходный необработанный» редактируется, весь объем необработанных данных интерпретируется заново. Когда jpeg редактируется, изменяется только ограниченная информация, содержащаяся в jpeg, а не пересчитывается из необработанных данных.
Я тоже присоединяюсь к Skyde. Это просто длинная, не относящаяся к делу история о различиях между форматами raw и jpeg. Здесь нет ничего, что на самом деле отвечает на исходный вопрос.
Да, глупый я. Отвечая на вопрос о различиях между raw и jpeg с информацией о различиях между raw и jpeg.
@MichaelClark Да, глупый ты. Возникает вопрос: «Почему программное обеспечение может корректировать баланс белого более точно для файлов RAW, чем для файлов JPEG?» и как минимум 95% это очень длинные и для обывателя наверно запутанные и очень трудные для понимания ответы совершенно неактуальны.
@jarnbjo Большая часть ответа посвящена объяснению разницы между фактическими необработанными данными в файле изображения и тем, что вы видите на своем экране, когда «просматриваете» одну из многих возможных интерпретаций необработанных данных. По моему опыту, большинство таких вопросов возникает из-за фундаментального непонимания того, что то, что человек видит на своем экране, никогда не является «НЕОБЫЧНЫМ» необработанным файлом. Кроме того, по моему опыту, утверждение несколькими разными способами увеличивает шансы на то, что лампочка наконец зажжется для спрашивающего. YMMV.
@jarnbjo Объяснение, которое, кстати, Skyde выбрал в качестве принятого ответа и прокомментировал, что дополнительная информация, включенная в ответ после первых комментариев выше, помогла понять ответ. Таким образом, хотя ответ может быть бесполезен для вас, он, по-видимому, был полезен в более длинной исправленной форме для скайда.

Простой ответ заключается в том, что ваша камера и процессор RAW (например, LR, Darktable) используют разные алгоритмы для обработки файлов RAW. Причин много, и мы не можем оценить эти алгоритмы, потому что многие из них являются коммерческой тайной. Например, цветовая температура Canon (EOS 700D) Daylight составляет около 5200K, а Lightroom — 5500K. В некоторых ситуациях это имеет значение.

Чтобы быть точным, файлы RAW не имеют предустановленной цветовой температуры. Он включен в качестве метаинформации. Процессоры RAW применяют определенный WB, когда выполняют описанные вами операции.

Редактировать: и на основе вашего комментария: вы не можете сильно изменить цветовую температуру в файле JPEG, потому что он уже «приготовлен». Цветовая температура уже применена, и у вас недостаточно глубины цвета, чтобы «сдвинуть» цвета.

Алгоритмы Darktable не являются коммерческой тайной.
@mattdm, правда. Но процессоры LR, ON1, CaptureOne и других неоткрытых процессоров RAW…
Но имеет ли что-то из этого отношение к вопросу? Основы коррекции баланса белого широко известны и реализованы в открытом программном обеспечении.
Основы да. Но реализация может быть разной. И именно эти детали обычно держатся в секрете (для неоткрытого программного обеспечения).

Можно выполнить балансировку белого в JPEG, но инструменты редактирования, используемые для работы с RAW, по сравнению с другими изображениями, как правило, ведут себя по-разному (разные алгоритмы). В дальнейшем:

  • Инструмент капельницы неточен, что затрудняет воспроизведение результатов.

  • Битовая глубина JPEG ограничивает количество сдвинутых цветов по сравнению с RAW.

  • Гамма-кривая все портит.

  • Расчеты линейных данных и логарифмических данных ведут себя по-разному.

Это не совсем то, как это работает, но для иллюстрации:

  • Предположим, вы хотите умножить некоторые данные (1, 4, 8) на 2. Результатом будет (2, 8, 16). Для линейных данных максимальный результат 16 в четыре раза превышает минимальный результат 2.

  • Но при логарифмическом представлении разрыв между соседними значениями, такими как 2 5 и 2 6 , намного больше, чем разница между линейными значениями 5 и 6. Кроме того, максимальный результат 2 16 не только в 32768 раз больше, чем min результат, 2 2 , также в 256 раз больше исходного значения, 2 8 .

Битовая глубина JPEG ограничивает количество цветов, которые могут быть смещены. В необработанном виде цвета вообще не смещаются. Они пересчитываются из исходных данных.