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


86

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


21
Матрица. Похоже на матрицу.
Hueco

2
Связанный; RAW файлы хранят 3 цвета на пиксель или только один? и почему красный, зеленый и синий являются основными цветами света? Это объясняет, как сенсоры цифровых камер отражают то, как глаза или мозг воспринимают цвет, который в некотором смысле не существует так, как мы часто предполагаем.
Майкл C

3
@ Hueco, матрица Байера, возможно.
Mark

Я перенес дискуссию о том, как лучше всего справиться с этим, как о каноническом вопросе в чате . Давайте продолжим, чтобы у нас не было шума в комментариях, каким бы ни было решение.
AJ Henderson

1
То, на что это не похоже, является "сырым изображением прямо из камеры", которое многие люди, кажется, думают, что они имеют, когда они открывают файл необработанного изображения в приложении необработанной обработки. Это основа для этого вопроса.
Майкл C

Ответы:


185

Существует инструмент под названием 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 раз), мы увидим, что это все ... dotty:

10-кратное увеличение и обрезка

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

10 × xtrans

Есть некоторые подробности о конкретной модели, которые довольно интересны, но в целом это не супер важно. Большинство камер сегодня используют так называемый шаблон Байера (который повторяется каждые 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

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

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

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

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

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

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

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


4
Красивая картина. И отличный ответ.
23 марта


7

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

Генетика данных: как работают цифровые камеры

В случае, если ссылка не работает, вот сводка:

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

Глаз камеры (прибор с зарядовой связью (CCD) или дополнительный металлооксидный полупроводник (CMOS)) чувствителен только к интенсивности света, а не к цвету.

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

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

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

Похоже на чёрную белую клетчатую решетку оригинального изображения.

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

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

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

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

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

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

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

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

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


-6

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

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

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

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

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


2
У меня были приложения для восстановления файлов, которые "восстанавливали" файлы .cr2 как файлы TIFF. Эти файлы не будут открываться с помощью любого приложения, которое может работать с TIFF. Изменение расширений файлов обратно на .cr2 сделало их совершенно пригодными для использования .cr2 файлами.
Майкл C

5
Это не значит, что файлы RAW не часто используют контейнеры формата TIFF - это абсолютно правильно. Просто то, что вы видите, вероятно, не «RAW» данные в том смысле, который я ищу.
Матдм

2
Хорошо, чтобы уточнить, файл использует структуры из формата файла TIFF. Но поскольку это не совсем так, как указано в спецификации TIFF, это не строгий файл TIFF. Но дело в том, что для чтения файла можно использовать библиотеку TIFF. Не нужно делать все с нуля, чтобы прочитать этот файл.
Ульф Теннфорс

5
Никто не имеет смысла ожидать, что файл RAW будет представлять собой данные, поступающие непосредственно с датчика, без каких-либо метаданных, таких как время, информация о камере и т. Д. Тот факт, что TIFF-подобные форматы полезны для структурирования данных, на самом деле не важен, и при этом это не уменьшает концептуальный принцип, что эти данные "прямо" от датчика без постобработки.
whatsisname

3
TIFF - это контейнер, а не формат изображения. Вы можете хранить данные в формате TIFF, и при этом они могут быть необработанными данными датчика, а не изображением, которое может использовать любой, кто не обладает специальными знаниями камеры
тыс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.