Существует инструмент под названием dcraw , который считывает файлы различных типов RAW и извлекает из них данные пикселей - это фактически исходный код в самом низу многих открытых и даже коммерческих программ преобразования RAW.
У меня есть файл RAW с моей камеры, и я использовал dcraw в режиме, который говорит ему, чтобы создать изображение, используя буквальные немасштабированные 16-битные значения из файла. Я преобразовал это в 8-битный JPEG для обмена, используя воспринимаемую гамму (и уменьшил для загрузки). Это выглядит так:
![dcraw -E -4](https://i.stack.imgur.com/WGQJz.jpg)
Очевидно, что результат очень темный, хотя если щелкнуть, чтобы развернуть, и если ваш монитор приличный, вы можете увидеть какой-то намек на что-то .
Вот цвет JPEG вне камеры, отображаемый из того же файла RAW:
![out-of-camera JPEG](https://i.stack.imgur.com/w9jma.jpg)
(Фото: моя дочь, кстати, пользуется моей камерой.)
В конце концов, не совсем темно. Детали того, где именно скрываются все данные, лучше всего охватить подробным вопросом , но вкратце, нам нужна кривая, которая расширяет данные в диапазоне темных и световых сигналов, доступных в 8- бит JPEG на типичном экране.
К счастью, программа dcraw имеет другой режим, который преобразует в более «полезное», но все еще едва обработанное изображение. Это регулирует уровень самого темного черного и самого яркого белого и соответственно изменяет размеры данных. Он также может установить баланс белого автоматически или из настроек камеры, записанных в файле RAW, но в этом случае я сказал , а не , поскольку мы хотим изучить наименьшую обработку возможно.
Между фотографиями на сенсоре и пикселями на выходе все еще есть взаимно-однозначное соответствие (хотя я снова уменьшил масштаб для загрузки). Это выглядит так:
![dcraw -d -r 1 1 1 1](https://i.stack.imgur.com/Z8KgE.jpg)
Теперь, это, очевидно, более узнаваемо как изображение - но если мы увеличим его (здесь, так что каждый пиксель фактически увеличен в 10 раз), мы увидим, что это все ... dotty:
![10× zoom and crop](https://i.stack.imgur.com/Hi9l4.png)
Это потому, что датчик покрыт массивом цветных фильтров - крошечными маленькими цветными фильтрами размером каждого фотосайта. Поскольку моя камера - камера Fujifilm, она использует шаблон, который Fujifilm называет «X-Trans», который выглядит следующим образом:
![10× xtrans](https://i.stack.imgur.com/azkFx.png)
Есть некоторые подробности о конкретном паттерне, которые довольно интересны, но в целом это не супер важно. Большинство камер сегодня используют так называемый шаблон Байера (который повторяется каждые 2 × 2, а не 6 × 6). Оба шаблона имеют больше зеленых фильтров, чем красные или синие. Человеческий глаз более чувствителен к свету в этом диапазоне, поэтому использование большего количества пикселей позволяет получить больше деталей с меньшим шумом.
Так что, в любом случае, вот здесь 1: 1 (когда вы нажмете, чтобы получить полную версию, один пиксель в изображении будет одним пикселем на экране) JPEG вне камеры:
![1:1 view crop of out-of-camera image](https://i.stack.imgur.com/qkpxy.png)
... и здесь та же самая область из быстрого преобразования в оттенках серого выше. Вы можете увидеть зернистость из шаблона X-Trans:
![1:1 crop of the dcraw -d -r 1 1 1 1 version](https://i.stack.imgur.com/NsiIH.png)
Мы можем фактически взять это и раскрасить пиксели так, чтобы те, которые соответствуют зеленому в массиве, отображались на уровни зеленого вместо серого, красного на красный и синего на синий. Это дает нам:
![1:1 with xtrans colorization](https://i.stack.imgur.com/BNMKy.png)
... или, для полного изображения:
![full image from dcraw -d -r 1 1 1 1 with xtrans colorization](https://i.stack.imgur.com/DEbik.jpg)
Зеленый оттенок очень очевиден, что неудивительно, потому что в два с половиной раза больше зеленых пикселей, чем красного или синего). Каждый блок 3 × 3 имеет два красных пикселя, два синих пикселя и пять зеленых пикселей. Чтобы противодействовать этому, я сделал очень простую программу масштабирования, которая превращает каждый из этих блоков 3 × 3 в один пиксель. В этом пикселе зеленый канал является средним из пяти зеленых пикселей, а красный и синий каналы - средним из соответствующих двух красных и синих пикселей. Это дает нам:
![xtrans colorized, naïve block demosaicking](https://i.stack.imgur.com/O27L9.jpg)
... что на самом деле не так уж и плохо. Баланс белого отключен, но, поскольку я намеренно решил не приспосабливаться к этому, это не удивительно. Нажатие на «автоматический баланс белого» в программе обработки изображений компенсирует это (как если бы dcraw установил это в первую очередь):
![xtrans colorized, naïve block demosaicking + auto-levels](https://i.stack.imgur.com/Xt4Vq.jpg)
Детализация невелика по сравнению с более сложными алгоритмами, используемыми в камерах и программах обработки RAW, но очевидно, что здесь есть основы. Лучшие подходы создают полноцветные изображения, взвешивая различные значения вокруг каждого пикселя, а не проходя большими блоками. Так как цвет обычно постепенно изменяется на фотографиях, это работает довольно хорошо и создает изображения с полноцветным изображением без уменьшения размеров в пикселях. Есть также хитрые приемы для уменьшения краевых артефактов, шума и других проблем. Этот процесс называется «демозапись», потому что рисунок цветных фильтров выглядит как мозаичная плитка.
Полагаю, это представление (где я действительно не принимал никаких решений, а программа не делала ничего умного автоматически) могло бы быть определено как "стандартный внешний вид" файла RAW, таким образом заканчивая много интернет-аргументов. Но нет такого стандарта - нет такого правила, что это особое «наивное» толкование является особенным.
И это не единственная возможная отправная точка. Все реальные программы обработки RAW имеют свои собственные представления об основном состоянии по умолчанию, которые применяются к свежему файлу RAW при загрузке. Они должны сделать что-то (иначе у нас будет эта темная, бесполезная вещь в начале этого поста), и обычно они делают что-то умнее, чем мое простое ручное преобразование, что имеет смысл, потому что это в любом случае дает вам лучшие результаты.