10/26/2006

Обработка изображений: конвертация из RAW-формата

Задача: требуется конвертировать снимки в RAW формате в Linux.
Решение: в Debian GNU/Linux есть несколько утилит, способных нам помочь - их можно просто поставить и сразу с ними работать.

Зачем и кому оно надо?
Многие цифровые камеры позволяют сохранять данные в RAW-формате - данные прямо с матрицы фотоприёмника, повторяющие структуру массива фотосенсоров (RGRGRG..., GBGBGB...). Для того, чтобы изображение можно было редактировать, его необходимо конвертировать из RAW-формата, использовав информацию о балансе белого, контрастности и интерполировав чёрно-белые значения баеровской матрицы в цветные пиксели. Некоторые конверторы, способны выдавать именно чёрно-белый массив точек, без цветовой интерполяции.
RAW-конвертор выполняет следующие преобразования:
  • Интерполяция баеровского массива точек в цветное изображение: наиболее важная функция. Почти все фотосенсоры (за исключением матриц Foveon) используют баеровский примитив RGGB. В процессе интерполяции из этих пикселей восстанавливаются цвета итеративными методами, что обеспечивает минимальное количество артефактов;
  • Баланс белого: съёмка часто производится при различных источниках света, каждый из которых имеет свою цветовую температуру. Она указывается при конвертации из RAW-формата.

Какие средства есть в Дебиане?
Простой поиск в репозитории
# apt-cache search RAW | grep image
выдаёт немало интересного, среди чего выделяются:
dcraw - decode raw digital camera images
gimp-ufraw - Gimp importer for raw images
mrwtoppm - tool to convert Minolta DiMAGE 5/7/7i RAW images to PPM
mrwtoppm-gimp - GIMP-plugin to support Minolta DiMAGE 5/7/7i RAW images
Всего этого должно хватить, чтобы более или менее комфортно работать с RAW-форматом в Linux.

Ставим и смотрим
Замечание по ходу: я прекрасно знаю, что этими несколькими программами средства по работе с RAW в Линукс не исчерпываются, однако пока я расскажу о том, что есть под руками, а потом, если будет желание, время и возможности, и о других программах. А пока о том, что есть непосредственно в Дебиан, во всяком случае в Debian v3.1 Sarge.

1. gimp-ufraw

Итак, первой программой, которой я воспользовался для работы с RAW-файлами, была gimp-ufraw - плагин для GiMP, дающий возможность конвертировать RAW. После установки этого плагина и перезапуска GiMP в меню появилась строчка, свидетельствующая о поддержке "чистого" формата. При попытке открыть RAW-файл, полученный с камеры, появляется диалог конвертора:

Скажу прямо, для бесплатной программы очень и очень неплохо. Можно поменять экспокоррекцию, баланс белого, цветовую температуру. Далее имеются настройки для цветовых профилей - по умолчанию sRGB, но скачиваением и установкой плагинов можно добавить огня в эти настройки. Самое интересное - управление кривыми: можно выставить линейные кривые, гамма-кривые и логарифмические. Внизу имеется гистограмма и проценты пере- и недоэкспонированных пикселей. Что ж, для GiMPовского плагина это, наверное, пять с плюсом.
Кроме RAW-файла Casio QV4000 были так же успешно открыты файлы с камер Canon EOS300D и FujiFilm S2 Pro. Тут надо отметить один забавный момент: в навороченном Adobe Photoshop CS2 тоже есть RAW-конвертор, но помимо перегруженности его совершенно бесполезными ползунками (и отсутствием нужных), был удивлён, что он не смог открыть RAW с моей камеры Casio. Вот так проприетарный продукт! А такой простой камеры не знает... Так что ufraw в этом плане обгоняет в том числе и проприетарные конверторы.
В общем, gimp-ufraw очень понравился, и он стал основным инструментом по работе с RAW-форматом.

2. dcraw
Далее была опробована программа dcraw, которая конвертирует RAW-файлы в формат ppm и фотошоповский psd. Утилита консольная и очень мощная, с большим количеством параметров. Она, как и gimp-ufraw, без проблем разобралась с raw-файлом моей камеры Casio, и конвертировала его в 16-бит ppm:
$ dcraw -2 kx821000.raw
Это, согласно справке dcraw (вызов без параметров, помимо man dcraw), преобразует в 16-бит ppm мой указанный файл. Отлично, справилось и открылось GiMP.
Среди других интересных и полезных опций программы:
-a Use automatic white balance
-w Use camera white balance, if possible

-m Don't convert camera RGB to sRGB
-d Document Mode (no color, no interpolation)
-f Interpolate RGGB as four colors
-s Use secondary pixels (Fuji Super CCD SR only)
-2 Write 8-bit PPM with 0.45 gamma (default)
-3 Write 16-bit linear PSD (Adobe Photoshop)
-4 Write 16-bit linear PPM
я бы выделил -d, которая позволяет вытащить из файла просто баеровский массив точек, без конвертации в цвета. Почти то, что и упало на матрицу. Для художественной съёмки это в общем особенно не нужно, а для научной - очень пригодится: часто нужен именно массив точек, без интерполяции на цвета. Благодаря dcraw теперь это можно получить.

Заключение
Всё меньше и меньше областей превосходства проприетарных программ над бесплатными - и это не может не радовать. Вот и в обработке RAW-файлов пользователи открытых систем не обделены хорошими и мощными утилитами, такими, как gimp-ufraw и dcraw. Есть и другие программы, но о них в других постах.

9 комментариев:

  1. Я пользую "чистый" UFRaw, т.е. не плагин.

    Но и тот, и другой - это только фронтенд к dcraw. :)

    Но работает отлично, да.

    ОтветитьУдалить
  2. 2 StraNNicK
    Рад видеть вас в числе комментаторов :-)
    Я пользую "чистый" UFRaw, т.е. не плагин.
    Мне надо будет его тоже поставить, хотя в гимпе он очень органично смотрится. Для всего остального есть find и dcraw.

    Но и тот, и другой - это только фронтенд к dcraw. :)
    Они используют код dcraw, но кривые и цвета - это их родное. dcraw такого не умеет.

    ОтветитьУдалить
  3. могу еще посоветовать глянуть на

    digiKam (http://www.digikam.org/)

    Rawstudio (http://www.rawstudio.org/)

    LightZone (http://sonic.net/~rat/lightcrafts/)

    BiblePro (http://www.bibblelabs.com/, shareware)

    ОтветитьУдалить
  4. 2 Paul Philippov
    Спасибо за ссылки, обязательно посмотрю и скорее всего дополню пост.

    ОтветитьУдалить
  5. Rawstudio неплох, недавно научился 16битные TIFF сохранять, но EXIF по-прежнему не пишет, а экспортируемые изображения всё равно размером ровно с вшитый в файлы JPEG preview. Что наводит на мысли... :)

    Ещё есть несвободный RawTherapee (http://www.rawtherapee.com/), написанный на gtkmm. Жутко медленный и не умеет делать изображения в оттенках серого. С другой стороны, есть разные полезные функции вроде подавления шума в L*a*b* или color boost в нём же.

    ОтветитьУдалить
  6. Прикрутил к своему Canon PowerShot A610 неофициальную прошивку, позволяющую выцеплять RAW. Пытаюсь сейчас ней разобраться.
    Выяснилось, что в репозитарии есть только версия 8.39 (7.02 если sarge, но у меня etch): http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&version=all&exact=1&keywords=dcraw
    С моими файлами работать отказывается с симптомами типа "Cannot decode CRW_1011.JPG" (хотя на офсайте поддержка Canon PowerShot A610 заявлена). Разбираюсь, виноват ли тут dcraw или нет, но предполагаю, что дело всё же в версии dcraw.

    Вы dcraw из сырцов брали или где есть пакеты свежие?

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

    ОтветитьУдалить
  8. 2 Анонимный
    Нижайше извиняюсь за предыдущий камент.
    Ничего, всё нормально: если что, другой зашедший будет в курсе, что dcraw довольно легко собирается из сырцов.

    ОтветитьУдалить
  9. мне онлайн конвертер http://ru.toolson.net/RawImage
    приглянулся а то голову сломать можно пока с этими разберёшся

    ОтветитьУдалить