среда, 16 апреля 2014 г.

Как проявить в DarkTable raw (RAF) файлы от беззеркалок Fujufilm с помощью dcraw. Временное, надеюсь, решение

Радость от покупки беззеркалки Fujufilm X-M1 была несколько омрачена тем, что DarkTable, к которому я уже начал было привыкать, отказывается обрабатывать raw файлы от фуджиковских беззеркалок с матрицей X-Trans. В этот список входят камеры Fujufilm X-Pro1 Fujufilm X-E1, Fujufilm X-M1, Fujufilm X-T1. Этой участи, скорее всего избежала камера Fujufilm X-А1, у которой обычная матрица. На мой запрос о поддержке файлов от фуджика в DarkTable разработчик ответил, что поддержка raw с  X-Trans не реализована и не планируется, так как это приведёт к переписыванию всех модулей. И что это очень большая работа. Правда, через некоторое время появилась информация, что есть человек, который взялся за эту работу. Не знаю, как на текущий момент с этим обстоят  дела, но будем надеяться, что не мне одному это надо, и всё получится.
Пока суть да дело, я искал альтернативы DarkTable в Linux, но полноценной замены, так, чтобы всё устраивало, к сожалению нет. В процессе поисков нашёл консольный перекодировщик dcraw, который обладает довольно неплохим функционалом. И что самое главное, в последних версиях он неплохо переваривает равы от фуджиков. Мне же от него требовалось конвертировать RAF в 16-битный tiff, который уже можно спокойно обрабатывать в DarkTable. И dcraw с этим вполне справляется.

Поначалу, порядок действий был такой: файлы складываются в какую-то папку. Там же в ней из консоли запускается команда:
 dcraw -v -w -6 -T *.RAF
Она перекодирует  все RAF файлы в этой папке в формат tiff. Потом полученые tiff-ы перемещались в другую папку, с которой работаю в DarkTable.

Рассмотрим некоторые параметры программы dcraw:
-v - отображение действий программы в консоли. Если вам не интересно, что делает программа, его можно не включать в команду.

-w - Использовать баланс белого, определённый настройками камеры. Если сведений о балансе белого нет, будет использовано умолчание (солнечный свет).

-4 - Запись в 16-битный формат PPM с линейной гаммой. По умолчанию (без параметра) пишется в 8-битный формат с гаммой 0.45. Следует заметить, что изображение в raw формате обычно записано с некоторой недодержкой.
На приведённом выше снимке в правой колонке конвертированы с параметром -6, а в левой - с параметром -4.

-6 (вместо -4) - Запись в 16-битный формат PPM, как 8-битный, с автоматической коррекцией экспозиции. Программа пытается растянуть гистограмму по всей линейке. Как, например, действует команда "Автоуровни" в GIMP-е. На выходе получается файл, готовый к дальнейшему использованию в любой, поддерживающий данный формат, программе. В большинстве случаев это хорошо, но есть ситуации, когда это не нужно. Например, ночные пейзажи, или съемка тёмных сюжетов. Тогда вместо -6 следует ставить -4:
dcraw -v -w -4 -T *.RAF
 Здесь как раз ситуация с тёмным сюжетом. Dcraw  с параметром -6 вытянул всё возможное, сделав из ночи день и из Луны - белый круг (в правой колонке). Обратно загонять в темноту это уже проблематично. А с параметром -4 (в левой колонке) - проявил как есть.  И вот с этим уже можно работать в DarkTable.


Вообще, как показывает практика, для DarkTable лучше всё же конвертировать с параметром -4.

-T - запись файла в формате tiff, вместо PPM.

У dcraw ещё есть много разных полезных параметров, про которые можно почитать, набрав в консоли:
man dcraw
Также, русская man страница по dcraw есть здесь. Английская, с примерами и слайдами - здесь. Ну и много чего можно ещё нагуглить.

Установка dcraw 9.19 в Ubuntu версии от 13.10 и выше выполняется штатно.
Установка dcraw 9.19 в Ubuntu версии меньше чем 13.10 выполняется с добавлением PPA командами в консоли:

$ sudo add-apt-repository ppa:dhor/myway
$ sudo apt-get update
$ sudo apt-get install dcraw




Для большего удобства работы, я сваял шелловский скрипт, перекодирующий raw файлы в формат tiff:

#! /bin/sh
tdate=`date "+%Y-%m-%d"`
tifdir="${tdate}_tiff"
rafdir="${tdate}_raf"
if [ ! -d $tifdir ] ; then
mkdir $tifdir
fi

if [ ! -d $rafdir ] ; then
mkdir $rafdir
fi

for i in `ls *.[Rr][Aa][Ff]` ; do
dcraw -v -w -4 -T $i
done

mv *.tiff $tifdir
mv *.[Rr][Aa][Ff] $rafdir



Этот скрипт также создает папки по текущей дате и раскладывает полученные tiff файлы в папку для tiff-ов, а raw - в папку для raw файлов. Дальше, с этими папками можно что-то делать, а можно сразу работать в DarkTable.

з.ы. Можете отомстить мне за этот пост, щелкнув по квадрату внизу или справа :)