изображение,
научное,
обзор,
обработка
14 коммент.
Предисловие
RAW-формат это оцифрованные данные прямо с матрицы фотоприёмника, ещё не прошедшие через многочисленные (и часто нежелательные) фильтры улучшения изображений. Эта чрезвычайно полезная возможность будет оценена по достоинству продвинутыми фотографами и другими специалистами: можно компенсировать пересветы или недоэкспонированные участки фотографии, менять баланс белого и цветовую температуру. Более того, RAW-файл содержит ещё не интерполированные данные - то есть просто полутоновую матрицу отсчётов на каждый пиксель - и вы можете использовать эти данные для точных экспериментов. Например, можно записать на матрицу фотоприёмника цифровую голограмму и потом математически восстановить её.
Возможности dcraw
Описание соответствует dcraw версии 8.64 (последняя версия утилиты тут) и выше (пост будет периодически обновляться), в значительной степени основанное на руководстве (русская версия и оригинал на английском). Скажу сразу: программа консольная и не предназначена для интерактивного использования, для этого есть несколько графических обёрток, например UFRaw. Параметры программы сгруппированы по типу операций, для наглядности будут приведены рисунки.
Вызов программы стандартный:
dcraw [ПАРАМЕТРЫ]... [ИМЯ_ФАЙЛА]Если параметров несколько, они разделяются пробелами.
Диагностика и вспомогательные операции
Параметр
Описание
-v
Заставляет программу выводить больше диагностических сообщений в процессе конвертирования. По умолчанию программа будет "молча" конвертировать файлы (и это правильно, и это unix way).
Пример:
dcraw -4 -v img_1981.cr2Loading Canon EOS 400D DIGITAL image from img_1981.cr2 ...
Scaling with black 256, multipliers 2.630775 1.000000 1.249379 1.000000
AHD interpolation...
Converting to sRGB colorspace...
Writing data to img_1981.ppm ...
-e
Позволяет выделить из RAW-файла миниатюру для предварительного просмотра. Полученное изображение будет иметь прибавку к имени вида .thumb.jpg
Пример:
dcraw -4 -v -e img_1981.cr2Writing data to img_1981.thumb.jpg ...
-i
Получить информацию о RAW-файле без конвертирования.
-i -v
Получить не только информацию о файле, но и показать метаданные, записанные при съёмке.
Пример:
dcraw -v -i img_1981.cr2Filename: img_1981.cr2
Timestamp: Sun Mar 18 22:27:38 2007
Camera: Canon EOS 400D DIGITAL
ISO speed: 100
Shutter: 30.0 sec
Aperture: f/5.6
Focal length: 55.0 mm
Secondary pixels: yes
Embedded ICC profile: no
Decodable with dcraw: yes
Thumb size: 1936 x 1288
Full size: 3948 x 2622
Image size: 3906 x 2602
Output size: 3906 x 2602
Raw colors: 3
Filter pattern: RGGBRGGBRGGBRGGB
Daylight multipliers: 2.423860 0.921348 1.151113
Camera multipliers: 1813.000000 1133.000000 2229.000000 1133.000000
-z
Изменить время доступа и модификации на AVI, JPG или RAW файлах на время, когда фотографии были сняты. Предполагается, что формат времени установлен по Гринвичу (UTC).
Пример:
До применения команды
$ ls -lh | grep cr2
-rwxr-xr-x 1 penta4 penta4 8,0M 2007-03-18 22:28 img_1981.cr2
После применения команды$ dcraw -z img_1981.cr2 $ ls -lh | grep cr2-rwxr-xr-x 1 penta4 penta4 8,0M 2007-03-19 01:27 img_1981.cr2
Шумоподавление
Параметр
Описание
-n
Установить порог для вейвлет-метода подавления шумов. Лучшие результаты при n=100...1000.
С версии 8.60 до 8.63 в dcraw использовался метод шумоподавления Daubechies 9/7 из стандарта сжатия изображений JPEG2000. С версии 8.64 используется алгоритм "A trous" с вейвлетом типа "Мексиканская шляпа" (Mexican Hat) с параметрами (-0.25 0.5 -.025). Из частных сообщений с автором программы, Дэйвом Коффином.
-K темновой_кадр.pgm
Вычитание темнового кадра из изображения для уменьшения влияния шумов фотоприёмника. Чтобы получить такой кадр, следует сделать снимок в RAW при закрытой крышке объектива и дать команду dcraw -D -4 -j -t 0 имятемногокадра
Дополнительные параметры изображения
Параметр
Описание
-s [0-99]
Выбрать другое изображение из RAW-файла, если их там несколько. Число указывает номер изображения внутри файла. Например, камера Fuji Super CCD SR генерирует второе недоэкспонированное изображение для того, чтобы показать тонкие детали в светлых областях.
-j
Показывает изображение, повёрнутое на 45 градусов для камер Fuji Super CCD. Относится к камерам Fuji Super CCD и другим с пикселями не квадратной формы. Опция гарантирует, что каждый выходной пиксель соответствует одному RAW-пикселю. Если к вашей камере это не относится, опция будет проигнорирована.
-t [0-7]
Повернуть изображение (по умолчанию поворота нет, t 0). Поворот на 90, 180 и 270 градусов по часовой стрелке это t 1 2 и 3 соответственно; против часовой стрелки t 4 5 и 6 на те же углы.
Работа с цветом
Параметр
Описание
-b
Позволяет настроить яркость изображения. По умолчанию запись в 8-битный формат идёт в соответствии с телевизионным стандартом ITU-R BT.709. Это означает, в частности, что цветовая температура устанавливается как 6702К. Если результат слишком светлый или тёмный, следует воспользоваться ключом -b для корректировки. Как выяснилось из частного общения с автором программы, указание параметра приводит к простому умножению данных на значение параметра, до применения гамма-коррекции. По умолчанию -b 1.0
-a
Использовать автоматический баланс белого: по умолчанию это фиксированный баланс белого, основанный на фотографии белого листа бумаги в солнечном свете.
- -A отступ_слева отступ_сверху ширина высота
- Рассчитывает баланс белого, используя прямоугольную область изображения. Вначале выполните dcraw -j -t 0 и выберите область с нейтрально-серым цветом.
- -C множ_увеличения_красного множ_увеличения_синего
- Эта опция позволяет компенсировать хроматические аберрации изображения, увеличивая красный и синий цветовые слои в заданное множителями количество раз (обычно от 0.999 до 1.001) для устранения хроматической аберрации.
-w
Использовать баланс белого, определённый настройками камеры. Если сведений о балансе белого нет, будет использовано умолчание (солнечный свет).
-r множR множG множB множG
Коэффициенты цветового масштабирования, colour scaling. Они применяются к изображению потому, что на матрице камеры стоят светофильтры и специальный IR-блокирующий фильтр. Чтобы вернуть правильное соотношение интенсивностей цветовых каналов, электроника камеры рассчитывает цветовые множители для данного снимка - это четыре числа, соответствующие пикселям под светофильтрами R G B G. Важно отметить, что эти множители от кадра к кадру меняются. Для зелёного коэффициентов два, и чаще всего они совпадают - но не всегда. Очень важно для получения цветных линейных изображений из RAW-файла.
-k число
Установить уровень чёрного - это значит, что все отсчёты по уровню ниже, чем число, будут объявлены нулём, то есть чёрным (потому что ниже этого уровня, как правило, шумы). Эта опция очень важна для профессионального применения: дело в том, что установив параметр "-k 0" можно получить реальный уровень шумов фотокамеры. По умолчанию зависит от уровня постоянного шума камеры, который умеет свойство увеличиваться с возрастанием экспозиции.
-H [0-9]
Обработка светлых областей.
-H 0 - срезать пересвеченные области до сплошного белого цвета, режим по умолчанию.Пример на рисунке ниже, -H 0 (слева) -H 1, -H 2, -H 5 -H 9 (справа)
-H 1 - не срезать пересвеченные пиксели, отображать оттенками розового (позволяет сохранить детали изображения).
-H 2-9 - восстанавливать пересветы. Меньшие цифры лучше подходят для белых областей, высокие - для цветных областей.
-H 5 приводится Дэйвом Коффином как компромиссный вариант.
-o [0-5]
Цветовое пространство выходного изображения:
0 Собственное цветовое пространство камеры;
1 sRGB D65 (по умолчанию);
2 Adobe RGB (1998) D65;
3 Wide Gamut RGB D65;
4 Kodak ProPhoto RGB D65;
5 XYZ;
Пример на рисунке ниже, от -o 0 (слева) до -о 5 (справа)
-p camera.icm [ -o output.icm ]
Возможность использования специфических цветовых профилей. По умолчанию используется sRGB.
-p embed
Использование цветового профиля, указанного в RAW-файле.
Интерполяция баеровского массива
Параметр
Описание
-q [0-3]
Управление качеством интерполяции, применение методов:
-q 0 билинейная интерполяция (высокая скорость, но плохое качество).
При визуальном наблюдении заметны артефакты на контрастных участках.
-q 1 алгоритм по Переменному Числу Градиентов (Variable Number of Gradients, VNG)
Артефактов, по сравнению с билинейной интерполяцией, заметно меньше.
-q 2 алгоритм по Группировка Пикселей по Шаблону (Patterned Pixel Grouping, PPG)
-q 3 (по умолчанию) алгоритм использования Адаптивной Гомогенно-Ориентированной интерполяции (Adaptive Homogeneity-Directed, AHD)
Артефакты визуально не заметны, мелкие детали отрисованы хорошо.
-d
Документальный режим - без цветов, без интерполяции. На выходе - полутоновое изображение, к которому применены коэффициенты цветового масштабирования и срезание постоянной составляющей шума. Изображение не интерполировано, однако разогнано на весь диапазон значений 8 или 16 бит.
-D
Документальный режим, то же, что -d, но без применения цветового масштабирования (то есть применения множителей пикселов). Полностью "сырое" изображение, соответствующее буквально тому, что видела матрица фотоприёмника, с реальными шумами матрицы и её возможными дефектами. Очень полезная опция для научных применений.
Пример: отличие -d (слева) и -D (справа)
При этом в консоли даётся пояснение - никаких множителей цветов не применяется:
$ dcraw -v -d IMG_0065.CR2-hLoading Canon EOS 400D DIGITAL image from IMG_0065.CR2 ...
Scaling with black 256, multipliers 2.630775 1.000000 1.249379 1.000000
Building histograms...
Writing data to IMG_0065.pgm ...
$ dcraw -v -D IMG_0065.CR2Loading Canon EOS 400D DIGITAL image from IMG_0065.CR2 ...
Building histograms...
Writing data to IMG_0065.pgm ...
Параметр позволяет получить изображение половинного размера очень быстро (вдвое быстрее, чем -q 0)
Пример: изображение по умолчанию (слева) и с ключом -h (справа)
-f
Интерполировать баеровский массив RGGB как четыре цвета.Эта опция полезна, когда выходное изображение содержит артефакты при интерполяции 2х2 как VNG алгоритмом, так и AHD.
Запись полученных изображений
Параметр
Описание
-4
Запись в 16-битный формат PPM с линейной гаммой. По умолчанию пишется в 8-битный формат с гаммой 0.45
-T
Запись в формат TIFF вместо PPM.
-c
Выдача результата в стандартных выход (в консоль) вместо записи в файл.
Заключение
Этот замечательный конвертор даёт очень много интересных возможностей для обработки изображений с фотоприёмников. Важно, что dcraw, в отличие от разного рода проприетарных поделий, гарантирует, что на выходе будет ровно то, что вы ожидаете, а не то, чем вводят в заблуждение изготовители цифровых камер.
Более того, у dcraw есть просто уникальные возможности по вытаскиванию чистых RAW-снимков - то есть буквально того, что видела матрица. Это критично для научных приложений: ни о каком применении гаммы, а тем более всяких повышающих резкость фильтров, не может быть и речи.
Таким образом, в наших руках, благодаря Дейву Коффину, есть замечательный, открытый и свободный конвертор, позволяющий использовать возможности цифровых камер на полную мощность.