Как выглядит необработанный файл RAW?

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

Матрица. Похоже на матрицу.
Связанный; Файлы RAW хранят 3 цвета на пиксель или только один? и Почему красный, зеленый и синий цвета являются основными цветами света? что объясняет, как датчики цифровых камер преобразовывают то, как глаза/мозг воспринимают цвет, который в некотором смысле на самом деле не существует, как мы часто предполагаем.
@Hueco, возможно, матрица Байера.
Я перенес дискуссию о том, как лучше поступить с этим, как канонический вопрос в чат . Давайте, пожалуйста, продолжим это там, чтобы у нас не было шума в комментариях, каким бы ни было решение.
1000011110011100001111110101010111110000111111000101010110000001100000111111101111100001010101111110000001010101010100000000
На что это не похоже, так это на «необработанное изображение прямо из камеры» , которое многие люди, кажется, думают, что имеют, когда открывают файл необработанного изображения в приложении для обработки необработанного изображения. Это основа для этого вопроса.

Ответы (4)

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

У меня есть файл RAW с моей камеры, и я использовал dcraw в режиме, который говорит ему создать изображение, используя буквальные немасштабированные 16-битные значения из файла. Я преобразовал это в 8-битный JPEG для совместного использования, используя перцептивную гамму (и уменьшил масштаб для загрузки). Это выглядит так:

dcraw -E -4

Очевидно, что результат очень темный, хотя, если вы нажмете, чтобы увеличить, и если ваш монитор приличный, вы можете увидеть какой-то намек на что-то .

Вот цветной JPEG вне камеры, полученный из того же файла RAW:

внекамерный JPEG

(Фото предоставлено: моя дочь, кстати, использует мою камеру.)

В конце концов, не совсем темно. Детали того, где именно прячутся все данные, лучше всего раскрываются в подробном вопросе , но вкратце нам нужна кривая, которая расширяет данные по диапазону темных и светлых тонов, доступных в 8-битном JPEG на обычном экране. .

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

Между фотосайтами на датчике и пикселями на выходе по-прежнему существует взаимно однозначное соответствие (хотя, опять же, я уменьшил это для загрузки). Это выглядит так:

dcraw -d -r 1 1 1 1

Теперь это, очевидно, более узнаваемо как изображение, но если мы увеличим масштаб (здесь каждый пиксель на самом деле увеличен в 10 раз), мы увидим, что все это... точечно:

10-кратный зум и обрезка

Это потому, что датчик покрыт массивом цветных фильтров — крошечных цветных фильтров размером с каждый фотосайт. Поскольку моя камера — это камера Fujifilm, в ней используется шаблон, который Fujifilm называет «X-Trans», который выглядит следующим образом:

10× хтранс

Есть некоторые детали о конкретном паттерне, которые довольно интересны, но в целом это не суперважно. Большинство камер сегодня используют шаблон Байера (который повторяется каждые 2×2, а не 6×6). Оба шаблона имеют больше сайтов с зеленым фильтром, чем с красным или синим. Человеческий глаз более чувствителен к свету в этом диапазоне, поэтому использование большего количества пикселей позволяет получить больше деталей с меньшим шумом.

В приведенном выше примере центральная часть представляет собой участок неба, который имеет оттенок голубого — в RGB это много синего и зеленого без особого красного. Таким образом, темные точки — это участки красного фильтра — они темные, потому что в этой области не так много света на длинах волн, которые проходят через этот фильтр. Диагональная полоса в верхнем правом углу представляет собой темно-зеленый лист, поэтому, хотя все немного затемнено, вы можете видеть зеленый цвет — большие блоки 2 × 2 с этим шаблоном датчика — относительно самые яркие в этой области.

Так или иначе, вот 1:1 (когда вы нажмете, чтобы получить полную версию, один пиксель изображения будет одним пикселем на экране) раздел JPEG вне камеры:

1:1 кадрирование изображения вне камеры

... а вот та же область из приведенного выше быстрого преобразования в оттенки серого. Вы можете увидеть штриховку из шаблона X-Trans:

1:1 кроп версии dcraw -d -r 1 1 1 1

На самом деле мы можем взять это и раскрасить пиксели так, чтобы те, которые соответствуют зеленому в массиве, отображались на уровни зеленого, а не серого, красного на красный и синего на синий. Это дает нам:

1:1 с раскраской xtrans

... или, для полного изображения:

полное изображение из dcraw -d -r 1 1 1 1 с раскраской xtrans

Зеленый оттенок очень заметен, что неудивительно, поскольку зеленых пикселей в 2,5 раза больше, чем красных или синих. Каждый блок 3×3 имеет два красных пикселя, два синих пикселя и пять зеленых пикселей. Чтобы противодействовать этому, я сделал очень простую программу масштабирования, которая превращает каждый из этих блоков 3×3 в один пиксель . В этом пикселе зеленый канал представляет собой среднее значение пяти зеленых пикселей, а красный и синий каналы — среднее значение соответствующих двух красных и синих пикселей. Это дает нам:

xtrans раскрашенный, наивный блочный демозаик

... что на самом деле не так уж и плохо. Баланс белого отключен, но поскольку я намеренно решил не настраивать его, это неудивительно. Нажатие «автоматический баланс белого» в программе обработки изображений компенсирует это (как если бы dcraw установил это в первую очередь):

xtrans раскрашенный, наивный блочный демозаик + автоуровни

Детализация невелика по сравнению с более сложными алгоритмами, используемыми в камерах и программах обработки RAW, но основы явно присутствуют. Лучшие подходы создают полноцветные изображения, взвешивая различные значения вокруг каждого пикселя, а не используя большие блоки. Поскольку цвет на фотографиях обычно меняется постепенно, это работает довольно хорошо и позволяет получать полноцветные изображения без уменьшения размера в пикселях. Существуют также хитрые приемы для уменьшения краевых артефактов, шума и других проблем. Этот процесс называется «демозаикой», потому что узор из цветных фильтров выглядит как плиточная мозаика.

Я полагаю, что этот вид (где я на самом деле не принимал никаких решений, а программа не делала ничего умного автоматически) можно было определить как «стандартный вид по умолчанию» файла RAW, что положило конец многим интернет-спорам. Но нет такого стандарта — нет такого правила, что именно эта «наивная» интерпретация особенная.

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

Красивая картина. И отличный ответ.
Разница между 9-м и 10-м изображениями заключается в разнице между «красным» фильтром (вероятно, на самом деле желто-оранжевым, который наиболее эффективно пропускает ≈600 нм) и «красным» в системах RGB (при ≈640 нм), «зеленым» фильтром (≈540 нм). ) и «Зеленый» в RGB (≈525 нм), а также «синий» фильтр (≈460 нм) и «Синий» в RGB (≈480 нм).
"если вы нажмете, чтобы развернуть, и если ваш монитор приличный, вы можете увидеть какой-то намек на что-то" Я вижу много пыли на экране моего монитора.
Ничего себе, я думаю, что мне никогда не объясняли такую ​​сложную тему так ясно и лаконично. Спасибо, Мэтт!
«Баланс белого отключен, но поскольку я намеренно решил не настраивать его, это неудивительно». Дело не столько в том, что ББ выключен, сколько в том, что цвет «красных» фильтров в CFA датчика на самом деле желто-оранжевый («зеленый» и «синий» фильтры ближе, но тоже не совсем), но тогда непереведенные результаты от сенсоров, отфильтрованных желто-оранжевым цветом, отображаются как фактические красные.Если вы были на улице в солнечный день, КТ света в сцене (6000K?), вероятно, не так уж далек от того, что у вас, вероятно, есть на вашем мониторе и GPU установлен на (6500K?).

Это действительно очень большая сетка чисел. Все остальное в обработке.

Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .

Я знаю, что mattdm уже достаточно хорошо ответил на этот вопрос, но я просто подумал, что эта статья может быть вам интересна.

Если ссылка не работает, вот краткое изложение:

Человеческий глаз наиболее чувствителен к цветам в зеленой области длин волн (это совпадает с тем фактом, что наше Солнце наиболее интенсивно излучает в зеленой области).

Глаз камеры (устройство с зарядовой связью (ПЗС) или дополнительный металл-оксид-полупроводник (КМОП)) чувствителен только к интенсивности света, а не к цвету.

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

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

Возвращаясь к вашему первоначальному вопросу: как выглядит необработанный файл RAW?

Это похоже на черно-белую клетчатую решетку исходного изображения.

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

Существует множество методов сглаживания RAW-файла с цветовой кодировкой. Сглаживание пикселей похоже на размытие, поэтому слишком сильное сглаживание может навредить.

Некоторые из методов демозаики кратко описаны здесь:

Ближайший сосед: значение пикселя (один цвет) применяется к его другим цветным соседям, и цвета объединяются. В этом процессе не создаются «новые» цвета, а только цвета, которые изначально были восприняты сенсором камеры.

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

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

Сплайны Catmull-Rom: похожи на кубические, но учитывают градиент каждой точки для создания промежуточного цвета.

Половина косинуса: используется в качестве примера метода интерполяции, он создает половинные косинусы между каждой парой одинаковых цветов и имеет плавную изогнутую кривую между ними. Однако, как отмечается в статье, это не дает никаких преимуществ массивам Байера из-за расположения цветов. Это эквивалентно линейной интерполяции, но с более высокими вычислительными затратами.

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

Фоточувствительность ПЗС- и КМОП-сенсоров нелинейна по всему спектру. В современных ПЗС- и КМОП-датчиках это часто корректируется с помощью справочной таблицы (LUT) в электронике датчика для нормализации изменений квантовой эффективности датчика как с точки зрения спектрального смещения, так и с точки зрения линейности. Кроме того, цветовые маски играют роль и могут быть скорректированы для компенсации изменчивости спектральной квантовой эффективности. В датчиках более высокого класса для получения оптимизированных результатов используется комбинация выбора красителя, маскирующего цвет, и LUT.
Человеческие колбочки также «монохроматичны» в том смысле, что они просто посылают в мозг значение интенсивности. Мозг создает восприятие цвета, которого нет в длинах волн света или любой другой части электромагнитного спектра. Другие виды не видят цвета для тех же длин волн, которые мы воспринимаем как цвета, и мы не воспринимаем некоторые длины волн, которые другие животные воспринимают как цвета. Цвет не является неотъемлемым свойством той части электромагнитного спектра, которую мы называем «светом», это свойство восприятия частей электромагнитного спектра людьми или другими существами.
Ни колбочки в сетчатке человека, ни цветные фильтры в камерах с масками Байера на самом деле не являются наиболее чувствительными / пропускающими к «красному», «зеленому» и «синему». Длинноволновые, средневолновые и коротковолновые колбочки были обозначены буквами R, G и B за несколько десятилетий до того, как мы смогли точно измерить пиковую чувствительность трех типов колбочек сетчатки. Существует очень небольшая разница между «зеленым с оттенком желтого», на который наши М-колбочки имеют пиковую реакцию, и желтым «с оттенком зеленого», на который наиболее реагируют наши L-колбочки. Это разница, которую наш мозг использует для создания цветов.
Точно так же, хотя точные цвета могут варьироваться от камеры к камере, «синий» и «зеленый» фильтры имеют скорее фиолетовый оттенок синего (455 нм, а не 480 нм) и слегка желтый оттенок зеленого (540 нм, а не 525 нм). «Красные» фильтры, как правило, имеют оранжево-желтый цвет с пиковым коэффициентом пропускания около 590-600 нм, а не настоящий красный цвет около 640 нм. Это подробно описано в этом ответе

Я думаю, что многие люди думают, что необработанные файлы — это просто массив значений пикселей прямо с сенсора камеры. Есть случаи, когда это действительно так, и вы должны предоставить некоторую информацию о датчике, чтобы программное обеспечение могло интерпретировать изображение. Но многие потребительские камеры обычно выдают «сырые файлы», которые на самом деле более или менее соответствуют спецификации файлов TIFF (в некоторых случаях цвета могут быть отключены). Можно попробовать просто изменить расширение файла на «.tif» и посмотреть, что произойдет при открытии файла. Я думаю, что некоторые из вас увидят хорошую картинку, но не все, потому что есть различия в том, как разные марки камер решают эту проблему.

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

Эд: Интересно, почему за этот ответ проголосовали против. Ответ по сути правильный (с оговоркой на то, что производители камер не обязаны использовать TIFF-структуры, но многие из них используют).

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

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

Мне еще предстоит найти необработанный конвертер, который может даже открыть и отобразить файл .cr2 с измененным расширением на .TIFF, не говоря уже о том, чтобы он выглядел иначе, чем темно-серая капля небытия. Тот факт, что необработанный формат использует стандарт TIFF, не означает, что значения, выраженные для каждого фотосайта, представлены в пригодном для использования формате RGB, ожидаемом нашими устройствами отображения. Это по-прежнему монохромные значения линейной яркости, а не трехцветные значения RGB для каждого фотосайта.
У меня были приложения для восстановления файлов, которые «восстанавливали» файлы .cr2 как TIFF. Эти файлы не будут открываться с помощью любого приложения, которое может работать с TIFF. Изменение расширений файлов обратно на .cr2 сделало их вполне пригодными для использования файлами .cr2.
Я попробовал прямо сейчас с файлом .cr2 из моей камеры EOS M. Фотошоп сразу открыл. Программа libtiff "tiffinfo" пожаловалась на отсутствие фотометрической интерпретации, которая важна для чтения изображения. Тем не менее, tiffinfo прочитал много правильной информации о файле. Это подтверждает, что изображение соответствует спецификации TIFF, по крайней мере, в той степени, в которой информация хранится в тегах TIFF. Но файл, безусловно, может отличаться по некоторым другим параметрам, поскольку Canon никогда не обещала, что это должен быть действительный TIFF.
Попробуйте сделать это с установленной более старой версией ACR, в которой нет необходимых профилей для EOS-M. По-видимому, Photoshop (используя ACR) может распознать «неправильное» расширение файла и обработать его как .cr2 (применив демозаику, гамма-коррекцию и т. д.). Если бы он давал вам «прямую» визуализацию информации об уровне пикселей, все это были бы тона черного ←→ серого ←→ белого.
Что ж, cr2 следует спецификации TIFF в том, что касается использования тегов TIFF, как они описаны в спецификации, но cr2 использует не все теги, которые требуются. Если вы загружаете libtiff, вы можете указать необходимые теги с помощью «tiffcp». Это непросто, но вполне выполнимо.
Я думаю, что Майкл прав в том, что Photoshop распознает файл, несмотря на его расширение. Я загрузил образец необработанного файла EOS M из фотоблога и переименовал его в .tif. Geeqie показывает встроенный предварительный просмотр JPEG (так же, как и при имени .crw. Когда я открываю в GIMP, он определяет, что это файл RAW, и запускает Darktable для импорта.
Это не означает, что файлы RAW редко используют контейнеры формата TIFF — это абсолютно правильно. Просто то, что вы видите, вероятно, не является данными «RAW» в том смысле, который я ищу.
Просто для протокола, я не против. Но я думаю, что понимаю, почему кто-то так поступил.
Хорошо, чтобы уточнить, файл использует структуры из формата файла TIFF. Но поскольку он не работает точно так, как говорит спецификация TIFF, это не строгий файл TIFF. Но дело в том, что для чтения файла можно использовать библиотеку TIFF. Не нужно делать все с нуля, чтобы прочитать этот файл.
Тем не менее , одному из них нужно что-то сделать с нуля, чтобы сделать с файлом что-то полезное . В противном случае вы получите почти полностью темное пятнистое изображение в градациях серого, с которым я начинаю свой ответ.
Никто в здравом уме не будет ожидать, что файл RAW будет представлять собой данные прямо с датчика без каких-либо метаданных любого рода, таких как время, информация о камере и т. д. Тот факт, что форматы, подобные TIFF, полезны для структурирования данных, на самом деле не важен, это также не снижает концептуального принципа, согласно которому эти данные получают «прямо» с датчика без последующей обработки.
Если вы посмотрите за пределы потребительских камер, вы обнаружите, что необработанные файлы не обязательно должны быть каждый раз такими же структурированными: desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/… Файлы описанные там, на самом деле не что иное, как пиксели. Вы должны предоставить информацию обо всем. Но, конечно, это не обычное дело для обычных камер.
TIFF — это контейнер, а не формат изображения. вы можете хранить данные в формате TIFF и по-прежнему использовать необработанные данные датчика, а не изображение, которое мог бы использовать любой человек, не имеющий специальных знаний о камере.
О редактировании: я не минусовал, но я думаю, что комментарии выше довольно ясно объясняют, почему люди это сделали. В частности, я совершенно уверен, что предложение переименовать файлы RAW .tifи открыть их в программе обработки изображений не является полезным или правильным. Программы, для которых это работает, либо показывают предварительный просмотр JPEG, созданный камерой, либо используют специальные знания об этом фактическом формате RAW (не общий TIFF), который они распознают по данным в самом файле, а не по имени файла.
Кроме того, мне интересно, что файл TIFF вместо «настоящего необработанного файла» является хорошим решением — хорошее решение для чего ?
Это было бы хорошим решением проблемы подачи информации о датчике. Файл TIFF может использовать 16 бит на цвет, поэтому в нем можно хранить всю информацию. Было бы так же хорошо, как в сыром виде.
@UlfTennfors Не могли бы вы демозаизировать изображение перед его сохранением? Почему или почему нет?
Вероятно, было бы намного проще использовать изображение, если бы оно было демозаично в формате TIFF. Что касается качества изображения, типичный датчик часто способен обрабатывать более 8 бит на цвет. Но очень редко до 16 бит на цвет. Таким образом, если вы используете 16 бит на цвет, у вас все равно должно быть такое же качество.
@UlfTennfors Существует фундаментальная разница между 14-битными монохроматическими значениями яркости (по одному на пиксель) и 16-битными (на цветовой канал) трехцветными значениями на пиксель (48 бит на пиксель). Преобразование из необработанного в RGB TIFF необратимо. Несмотря на то, что TIFF имеет большую разрядность и является гораздо большим файлом, он не содержит всей информации, которую содержит необработанный файл. Черная точка, белая точка, множители цветовых каналов и т. д. были «запечены». Хотя 16-битный TIFF обеспечивает гораздо большую гибкость, чем 8-битный JPEG, ни один из них не обладает такой гибкостью, как 14-битный необработанный файл.