darktable 0.5

Выпущена новая версия неразрушающего фоторедактора darktable, за развитием которого вы, скорее всего, привыкли судить по PPA Паскаля де Бруйна.

Представленная в январе широкой общественности предыдущая версия darktable успела обзавестись своими преданными пользователями. Как и предсказывалось, новая версия потребовала отдельной статьи.

Для тех, кто о существовании darktable до сих пор не подозревал, вкратце о главном:

  • вся обработка с точностью 32 разряда с плавающей точкой на канал в пространстве CIE LAB;
  • полностью модульная архитектура;
  • сквозное управление цветом (LittleCMS);
  • чтение Raw с помощью libraw, Exif — с помощью exiv2;
  • масштабируемый световой стол с базовыми средствами редактирования съёмки;
  • режим проявки Raw с дюжиной модулей обработки;
  • быстрая обработка за счёт многопоточности и использования мипмапов;
  • оригинальные разработки вместо унылого копирования лайтрумов с апертурами.

Общий вид текущей версии в режиме проявки:

dt-th.jpg

На самом деле, я вынужден извиниться перед читателями, которые купились на хвалу 0.4. С переходом на 0.5 вас ждёт жестокое разочарование в виде обнуления всех сделанных вами изменений. Дело в том, что в процессе подготовки новой версии немного поменялся и формат, и принцип нумерации версий модулей. Это, в общем-то, единственная крупная неприятность новой версии. Дальше будут только хорошие новости. Преимущественно :)

Состав команды

До сих пор darktable был работой всего лишь одного человека и парохода Йоханнеса Ханики. Но в начале февраля Паскаль де Бруйн, известный как упаковщик фотософта для убунты, создатель собственной калибровочной мишени и проч. встретился на FOSSDEM с автором GNOME Color Manager Ричардом Хьюсом (Richard Hughes) и показал ему волшебное: текущую на тот момент сборку darktable. Ричард был приятно удивлён и немедленно написал несколько патчей, «выпрямляющих» систему сборки.

Затем появившийся на горизонте незадолго до выпуска 0.4 шведский локализатор программы Хенрик Андерсон (Henrik Andersson) обнаружил в себе талант программиста, попрактиковался на создании собственной программы для удалённого щёлкания затвором камеры, а затем начал пачками присылать патчи в darktable. Патчей оказалось действительно много, упоминание Хенрика придётся дальше размазать по тексту.

Ну а теперь об изменениях в самой программе.

Интерфейс

В интерфейсе программы есть несколько общих изменений, которые безусловно будут оценены по достоинству.

Примерно в конце февраля — начале марта настойчивое зудение одного очень вредного бета-тестера на тему «а давайте сделаем нормальные виджеты как в Blender или возьмём готовый phat» настолько остопротивело Йоханнесу, что он взял да и портировал на пробу один из модулей режима проявки на phat.

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

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

Поэтому наш новый герой Хенрик Андерсон не дожидаясь полного выноса мозга сел и за несколько дней написал собственный переработанный набор виджетов. Выглядят они ровно так:

dtgtk-sample.png

Простое перетаскивание из стороны в сторону быстро меняет значение. Клавиша Ctrl работает модификатором, включающим более плавную смену значения. Щелчок правой клавишей мыши активирует ручной ввод значения. Боковые кнопки, как несложно догадаться, плавно меняют значения в меньшую-большую сторону.

Волшебство собственного решения состоит в том, что его, как вы понимаете, легче поддерживать и дорабатывать. А так, конечно, было бы неплохо выпустить виджеты как отдельный проект. Заинтересованные найдут исходный код в src/dtgtk/.

Кроме того, Хенрик отличился переработкой заголовка модулей:

  • для маркировки включенности/отключенности используется миниатюрный значок
  • вместо безымянной кнопки для сброса параметров справа, которую фиг заметишь, появилась кнопка с миниатюрным значком и всплывающей подсказкой:

plugin-caption.png

Кроме того, в обоих режимах появилось невероятно позитивная моргающая надпись «минуточку…» («working…»)

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

Световой стол

Управление каталогом

Главным изменением этой версии стала обещанная ранее функция добавления произвольного количества съёмок в каталог и удаление их из каталога.

catalog.png

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

Как видно на снимке экрана выше, полный путь к каталогу с каждой съёмкой теперь не указывается, поскольку многие любят давать каталогам длинные описательные имена, которые в итоге не помещаются в список. Зато он показывается во всплывающей подсказке.

Кроме того, в первом приближении реализована функция слежения за изменениями в каталоге извне при помощи inotify. Если во время работы программы файл импортированной в каталог фотографии удаляется вне программы, при попытке доступа к нему программа предупреждает об этом и убирает ссылку на изображение из каталога. Обновление каталога фотографий выполняется при каждом запуске программы.

Альтернативное представление съёмки

Первое по важности место у функции управления каталогом оспаривает «альтернативное», а на деле — более привычное пользователям представление съёмки в виде миниатюр, всегда вписывающихся в область просмотра. Переключатель находится внизу. Там же указывается количество снимков в ряду.

normal-light-table-mode-th.jpg

К сожалению, зудящему бета-тестеру пока не удалось убедить Йоханнеса в том, что полоса прокрутки должна быть рядом с областью просмотра, а не на краю окна, где её практически не видно. Присоединяйтесь — позудим вместе.

Управление с клавиатуры

Редактирование съёмки стало заметно проще благодаря тому, что в режиме «вижу только одну картинку» теперь можно переходить со снимка на снимок нажатием клавиш со стрелками влево и вправо, а также ставить оценку клавишами Alt+[1..4]. Согласитесь — куда удобнее чем тыкать мышкой в звёздочки и мышкой же перемещаться по световому столу к следующему снимку.

rating_th.jpg

Собственно режим «вижу только одну картинку» активируется нажатием клавиши 1. Клавиша 4 переключается обратно на просмотр большого числа снимков (13 в ряд), а 2 и 3 последовательно меняют количество снимков в ряду в меньшую и большую стороны соответственно.

История изменений

В версии 0.4, если вы помните, модуль управления историей изменения был совсем простеньким и вообще был написан за полчаса в последний момент перед выпуском этой версии.

history.png

В новой версии вы можете отбрасывать изменения, а вставляемые добавлять поверх существующих, или же заменять ими существующую историю. К копированию и вставке привязаны клавиатурные комбинации Ctrl+C и Ctrl+V соответственно.

Выделение

Этот новый модуль светового стола позволяет быстро управлять выделением.

selection.png

Связанные с действиями комбинации клавиш, взятые из GIMP, показываются во всплывающих подсказках, вот они:

  • Ctrl+A — выделить всё
  • Ctrl+Shift+A — снять выделение
  • Ctrl+I — инвертировать выделение

Кстати, благодаря этому в модулях теперь в принципе можно использовать комбинации клавиш. Пока что на уровне программирования.

Метки

Это третье по важности нововведение в режиме светового стола. Интерфейс совсем простенький, зато работающий:

tags.png

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

Подборка снимков

Раз уж каталогом теперь можно хоть как-то управлять, Йоханнес написал новый модуль, работающий со всей базой данных и позволяющий собирать в область просмотра по заданным критериям известные программе снимки. Критерии: название съёмки, камера, дата и время, метка, наличие истории изменений. Это тоже очень простой, но в то же время полезный модуль. Как и многое в программе, в дальнейшем он будет улучшаться.

collect.png

При выходе из программы состояние этого модуля запоминается, поэтому при запуске созданная подборка восстанавливается. Происходит это буквально за секунду.

Экспорт

Особых изменений этот модуль не претерпел, если не считать такой «мелочи» как добавленный экспорт в 8/16-разрядные TIFF с сохранением Exif и внедрением профилей. Пользователей GIMP 16-разрядные TIFF пока не спасут, а вот для создания точных цветовых профилей это совершенно необходимая штука.

Кроме того, экспорт теперь сопровождается уведомлением примерно такого вида:

exporting.jpg

Чтобы избавиться от него, по нему нужно просто щёлкнуть. Хотя через некоторое время сообщение пропадёт само. Дискуссии на тему оптимального интерфейса пока ещё не завершены.

Поддержка всех новых форматов была реализована Хенриком (я же предупреждал: это наш новый герой).

Проявка

Общим нововведением для модулей проявки является появление следующего контекстного меню:

defaults-management.png

По всей видимости это временное решение. Но определённая польза от него уже есть.

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

Новая версия недосчиталась сугубо технического и неинтересного модуля «Гамма», в котором регулировалась гамма и линейность. Зато появилась три новых модуля, плюс улучшены существующие. Сами значки стали немного цветастее:

plug-in-manager.png

Ну да не в значках счастье. Начнём сверху вниз.

Трансформации

В предыдущей версии модуль назывался «Кадрирование и вращение», что точно отражало набор функции. После добавления в модуль зеркалирования по горизонтали и вертикали обойтись без переименования было уже невозможно.

transforms.png

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

Кстати, если вы не в курсе, вращение можно выполнять прямо на холсте щелчком и перетаскиванием указателя мыши вверх или вниз.

Цветовые зоны

Этот новый модуль, проинспирированный новым узлом встроенного в Blender компоузера, позволяет выборочно корректировать яркость, цветность и тон изображения в пространстве LCh (CIELAB в полярных координатах).

Все шесть вариантов диаграммы я опущу, достаточно посмотреть диаграмму цветности (насыщенности) при выборе цвета по тону:

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

В комплекте есть три профиля: «Ч/б и красный цвет», «Ч/б и телесные тона» и «Поляризационный фильтр». Хорошо работают они далеко не с каждым изображением, но позволяют изучить принцип работы модуля, чем и ценны.

Раз уж речь зашла о Blender, проиллюстрирую использование модуля на примере фото Бассама с прошлогодней конференции Libre Graphics Meeting в Монреале. Смотрим на оригинал:

Условия съёмки не самые лучшие: сверху светят более-менее сносные лампочки, но сзади проекционный экран, который всё портит: при подкручивании баланса белого телесные тона становятся нормальными телесными, а вот фончик — отвлекающе синеватым.

Переключаем снимаемый канал в положение «Тон», а влияемого канала — в «цветность», рисуем пипеткой прямоугольник прямо позади Бассама, пододвигаем треугольник под вертикальную линию маркера, прокруткой колеса мыши меняем радиус инструмента в меньшую сторону и тащим этот участок кривой вниз:

Результат:

Намного лучше, правда? Как видно на диаграмме вверху, при утаскивании этого участка вниз автоматически задралась цветность в области зелёных тонов. В конкретно этом случае ничего страшного тут нет, и на фотографии лишь немного повысилась насыщенность рукавов. Если же это побочное изменение хочется нивелировать, просто перетащите треугольник слева от области зелёных тонов вправо до упора:

Конечно, эту кривую можно улучшать сколько угодно (например, приподнять цветность телесных тонов). Тем не менее, на получение минимально пригодного к публикации результата уходит всего полминуты. В Photoshop (при условии, что у вас нет Raw и вы не можете выборочно изменить тона в ACR) или GIMP вам пришлось бы ковыряться либо с выделением по цвету, либо с рисованием сложной маски. Так что инструмент даже в такой простой реализации очень мощный и заслуживает отдельного подробного рассмотрения.

Единственное, что немного напрягает — это мелковатость виджета. В идеале было бы неплохо реализовать его масштабируемым и работающим прямо на холсте.

Кривая тонкоррекции

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

Базовая кривая

Этот новый модуль является прямой копией базовой кривой из UFRaw и выполняет ровно ту же функцию: корректирует каждый цветовой канал в RGB.

base-curve.png

В комплекте есть несколько кривых, одна из которых перенесена из модуля «Кривая тонкоррекции» из предыдущей версии программы.

Эквалайзер

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

Восстановление пересветов

Модуль восстановления челубеевпересветов был включён в состав 0.5 практически в последний момент перед заморозкой функциональности новой версии, а написан был буквально за пару часов. Чтобы понять, как он работает, придётся немного помучить вас техническими подробностями.

Каждый из пикселов типичной цифровой фотокамеры регистрирует свет одного из цветов (каналов): красного (R), синего (B) и зеленого (G). При этом максимальное значение, которое может зарегистрировать каждый из пикселов, ограничено уровнем насыщения его сенсора. После перевода в цифровой вид эта величина для каждого из пикселов R, G, B принимает значение от нуля до максимума, то есть до единицы в линейном цветовом пространстве RGB.

Для получения нейтральных цветов к значениям освещенности пикселов нужно применить баланс белого. Для этого значения пикселей каждого канала умножаются на соответствующий так называемый цветовой множитель. Типичный пример для дневного света: 2.6 —для красного канала, 1.0 — для зеленого, 1.5  — для синего. В результате максимальное значение, принимаемое каналами, становится равным соответственно 2.6, 1.0 и 1.5. Как видите, доля красного канала получается выше, что и даёт те самые розовые области в пересвеченных участках, знакомые любому, у кого камера ошибалась экпозицией, по ошибке оказывалась в режиме M, или кто хоть раз пытался недостаточно совершенными средствами понизить экспозицию при наличии пересветов в кадре:

pink-cast.jpg

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

clipped-highlights.jpg

Есть и второе решение — обрезать значение цвета и преобразовать его в LCh, а затем линейно смешать с необрезанным значением, также преобразованным в LCh.

highlights.png

Нулевое значение в ползунках соответствует обрезанному значению, единица — максимальному значению. Так что повышая его в канале L (светлота, яркость) при обработке несущественно пересвеченного изображения, вы можете вернуть часть детализации, которая в противном случае теряется.

restored-highlights.jpg

Пытаться восстановить детализацию в сильно пересвеченных областях бесполезно. Их нужно просто безжалостно отправлять в мусор. Смешивание в каналах C (цветность, насыщенность) и h (тон) особого смысла не имеет. Эти значения можно оставлять равными нулю.

Баланс белого

По предложению Александра Рабцевича (ответственного за появление цветовых зон, кстати) в darktable из UFraw перенесены предустановки баланса белого для разных камер, и в качестве дополнения добавлена крутящаяся кнопка с коррекцией этих предустановок.

Что немаловажно, изменился принцип коррекции баланса белого. Теперь ползунок «Конечная температура» трогать вообще не надо. Он нужен только в том случае, если вы точно знаете исходную температуру цвета и хотите пересчитать её в точную другую. В общих же случаях достаточно менять ползунок «Исходная температура». Он же меняется при снятии образца пипеткой, которая теперь доступна через раскрывающийся список с предустановками.

Экспозиция

Работа этого модуля изменилась достаточно ощутимо. Во-первых, ползунок «тёмные области» начал работать в немного других координатах, а благодаря новому набору виджетов менять значения крохотными шагами стало проще. Во-вторых, появилась функция автоматического подбора экспозиции.

exposure.png

В лучших традициях darktable вместо простой кнопки «Авто» сюда запихали практически урезанный вариант классического инструмента цветокоррекции «Уровни». При активации флажка «Авто» в центре снимка пипеткой автоматически рисуется прямоугольник, который включённые в него усреднённые значения принимает за белую точку и на основе этого высчитывает экспозицию. Само собой можно нарисовать свой собственный прямоугольник. Кроме того, можно указать какая часть самого яркого значения будет вырезана. Рекомендуемым диапазоном является 0.001-0.00003.

Ну и в-третьих, ползунок «Усиление» был убран, поскольку в результате ряда внутренних изменений начал смещать цвета.

Импорт цифрового негатива

По случаю описанных выше улучшений из этого модуля выкинули пару регуляторов.

import-raw.png

Мгновенные снимки

Это предельно простая, но уже полезная реализация функции создания и сравнивания версий. Чтобы было понятно, почему функция так работает, снова придётся влезть в технические подробности.

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

snapshots-th.jpg

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

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

Глобальная пипетка

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

global-picker.png

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

Управление цветом

Реализованное в предыдущей версии простое управление цветом было доработано до уровня готовности к серьёзной работе.

Во-первых, если раньше происходила только разметка файла как использующего тот или иной профиль, то сейчас выполняется встраивание выбранного цветового профиля в JPEG и TIFF. Это более безопасный вариант, хоть и немного увеличивающий размер файла. Так что теперь при открытии фотографии в GIMP вы увидите следующее:

adobergb-gimp.png

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

Несвершившееся и ожидаемое

Из планов на 0.5 была выкинута долгожданная фотолента для обоих режимов, которая упростила бы собственно проявку, поскольку сейчас для перехода к обработке следующего снимка приходится возвращаться в режим светового стола. Кроме того, ввиду недостаточной оттестированности в 0.5 не вошёл уже готовый патч экспорта в OpenEXR.

Что касается планов на 0.6, тут всё очень забавно. Процесс выпуска версии 0.5 немного затянулся из-за постоянно обнаруживавшихся мелких недочётов, и разработчикам было некуда девать высвободившуюся энергию. Поэтому уже написаны два новых модуля обработки — velvia (подобие vibrance в Rawshooter/Lightroom) и «vignetting», плюс добавлена функция загрузки файла .dt (история изменения) в выделенные снимки. Кроме того, реализована базовая поддержка цветовых меток. Это меньше чем за неделю. Ещё Хенрик грозится написать модуль управления локальным контрастом; поживём-увидим.

Об остальном сказать что-либо наверняка сложно. Судя по выкинутому из планов на 0.5 стоит ждать как минимум той самой фотоленты и режима удалённой съёмки. И ещё мы, кажется, таки забодали Йоханнеса на тему кадрирования прямо на холсте. Наверняка будет много сюрпризов. Сейчас, когда у программы два полноценных разработчика вместо одного, чудеса вполне возможны.

Ну и о сроках. Разрыв между последними тремя версиями стабильно составляет два с небольшим месяца. Так что новую версию можно ждать в мае-июне. Опять придётся писать подробный обзор :)

Выводы

Не могу не отметить более чем адекватный подход к разработке у понемногу складывающейся команды: вместо длительного до зубовного скрежета планирования и последующей не менее мучительной реализации (привет, Lumiera) Йоханнес сотоварищи сначала реализуют нужный функционал в простом, но уже работающем варианте, выпускают готовое, а затем дорабатывают его, попутно добавляя новые функции.

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

Для того, чтобы программа окончательно превратилась в инструмент, готовый для серьёзной работы, нужно следующее:

  • упрощённое и улучшенное управление расходом памяти;
  • более серьёзные инструменты поиска по каталогу;
  • управление профилями/предустановками на уровне модулей и глобально;
  • массовое тестирование поддержки камер (перед выпуском 0.5 были проблемы с балансом белого);
  • доработка всего, что начато;
  • стабилизация модулей проявки.

Если первые четыре пункта вполне осиливаемы за одну версию, то последний пункт — не самая простая задачка, потому что остановить поток креатива нереально :)

В остальном, с выходом версии 0.5 причин продолжать пользоваться иными свободными инструментами для работы с Raw я лично не наблюдаю. В лице darktable, PhotoPrint и GNOME Color Manager мы получаем практически готовое решение для фотографа. Остаётся «подтянуть» GIMP.

Скачать

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*