Вернуться на домашнюю страницу Дечифра
Расшифровка сырых (RAW) цифровых фотографий в Линуксе
in English
en Esperanto
em Português
auf Deutsch
Добро пожаловать! Если вы спрашиваете себя о том, как подключить
цифровую фотокамеру к компьютеру и загрузить изображения в Линуксе,
переходите на
домашнюю страницу gPhoto.
Моя программа служит для обработки уже загруженных в компьютер изображений.
Если вы загружаете файлы JPEG, то вам не нужна моя программа.
Изображения уже прошли обработку внутри фотокамеры. Почти все цифровые
фотокамеры, выпущенные с 1997 года производят изображения в формате
JPEG, поэтому зачем бы вам захотелось проделать то же самое, но по-другому?
Ну, несмотря на удобство и повсеместность JPEG, у него есть и
недостатки. JPEG является форматом с потерей данных - для того,
чтобы вместить большое изображение в небольшой файл, большое
количество информации просто отбрасывается. Вот почему фотокамеры
среднего и высшего класса предлагают альтернативу - файлы с сырыми,
необработанными данными (RAW) со светочувствительного элемента (CCD),
для расшифровки которых фирма-производитель предоставляет специальное
программное обеспечение.
Конечно же это программное обеспечение рассчитано лишь для Windows
и Макинтош, и поставляется без исходного кода. Поэтому, оно бесполезно для
пользователей других операционных систем, для программистов, желающих
разработать лучшие алгоритмы интерполяции, и историков, еще не
рожденных, той эры, когда Windows машины будут существовать лишь
в музеях.
Поэтому вот моя задача: написание и поддержка программы ANSI C,
которая расшифровывает любые сырые изображения с любой цифровой
фотокамеры на любом компьютере с любой операционной системой.
Эта программа называется dcraw
(произносится "ди-си-роо"), и она стала стандартным инструментом внутри
и вне мира свободного программного обеспечения. Она небольшая (около
7000 строк), переносная (использует лишь стандартные библиотеки языка C),
свободная и бесплатная, и при опытном использовании производит лучший
результат, чем средства, предоставляемые производителем фотокамеры.
Со мною можно связаться по электронной почте по адресу: dechifro улитка
dechifro точка org.
Мои программы
Если не сказано другое в исходном коде, эти программы являются
бесплатными для любого использования, хотя я хотел бы получить
признание за них. Подарки также приветствуются, если вы зарабатываете
деньги, используя мои программы.
Примечание для распространителей Линукса:
Единственными исполнимыми файлами, которые должны быть установлены
пакетом dcraw являются "dcraw", "clean_crw", и, возможно, "fuji_green",
"fujiturn", и "fujiturn16". Мои консольные программы являются опасными
и должны устанавливаться лишь в директорию "doc" без разрешения на запуск.
-
dcraw.c -- расшифровывает сырые фотографии, извлекает
миниатюры и показывает метаданные
Поддерживает 426 фотокамер на последний момент. Компилирование
проводится при помощи "gcc -o dcraw -O4 dcraw.c -lm -ljasper -ljpeg -llcms"
или "gcc -o dcraw -O4 dcraw.c -lm -DNODEPS".
При запуске без аргументов программа выдает справку по использованию.
На жалуйтесь на то, что 16-битный вывод является слишком темным --
читайте ЧаВо!
-
Юниксовая man-страница для dcraw
Это официальная документация для использования dcraw, обновляемая
в соответствии с исходным кодом.
-
rawphoto.c -- базовый модуль для GIMP 1.2 & 2.0
После установки "dcraw",
выполните "gimptool --install rawphoto.c".
Мой модуль предоставляет простое диалоговое окно для загрузки сырых
файлов в Gimp.
Уди Фухс
и
Джозеф Хелед
написали более способные модули, с предварительным просмотром в реальном
времени, гистограммами, и цветовыми кривыми.
-
.badpixels -- "поврежденные пиксели" моей фотокамеры
Этот файл сообщает программе dcraw, какие пиксели повредились и
когда, чтобы она смогла провести интерполяцию вокруг них.
-
dcraw.c,v -- полный несокращенный файл RCS
Этот файл содержит полную историю dcraw.c с момента его зарождения
23 февраля 1997 года. Если у вас нет набора инструментов RCS,
вы можете загрузить его здесь.
-
parse.c -- читает структуры данных изображения
Эта программа отображает структуры данных файлов CIFF и TIFF в
наиболее сыром формате.
-
clean_crw.c -- очищает Canon CRW файлы
Восстановленные после удаления файлы CRW часто содержат мусор,
добавленный к ним, что делает их нечитаемыми. Эта программа безопасно
очищает эти файлы.
-
fujiturn.c -- поворачивает изображения Fuji Super CCD
Альтернатива встроенному в dcraw Fuji-вращению.
-
fuji_green.c -- конвертирует зеленые пиксели Fuji в PGM
Побочной пользой устройства светочувствительного элемента
Fuji Super CCD является то, что его зеленые пиксели производят
хорошие изображения в градациях серого.
Только для экспертов:
Для установки dcraw с поддержкой неанглийских языков, загрузите
последнюю версию tar-архива из этой директории
и запустите программу "install". Текущими поддерживаемыми языками
являются
Эсперанто,
русский,
французский,
итальянский,
немецкий,
португальский,
испанский,
нидерландский,
польский,
венгерский,
чешский,
шведский,
каталанский,
датский,
румынский,
японский,
и китайский
(традиционный
и упрощенный).
Для добавления других языков, пошлите мне перевод
этой man-страницы и
этой таблицы сообщений
в кодировке UTF-8.
Для перевода используйте лишь мои оригинальные тексты на английском
и Эсперанто -- другие языки могут содержать фактические ошибки,
невидимые для меня.
Не переводите фразу "Не может выполнить X" как "Невозможно выполнить X".
Программа dcraw не является совершенной, поэтому, если она не может
выполнить что-либо, это не означает, что это задание невозможно.
Компьютеры никогда не должны использовать местоимение "я", поэтому
пишите: "dcraw не может выполнить X".
Корректным является высказывание, что dcraw расшифровывает "сырые
фотографии". Некоторые из этих фотографий являются сырыми файлами
(сырыми изображениями с отсутствием какой-либо другой информации
любого рода), но большинство содержат структуры данных, полные другой
информации о сыром изображении (называемые "метаданными").
"Raw" (сырой) является английским словом, а не акронимом или форматом
файла. "Raw photo" ("сырая фотография") должно переводится тем же
прилагательным, которое используется в выражениях "crude oil"
("сырая нефть") или "raw materials" ("сырые материалы").
Существуют десятки форматов сырых фотографий: CRW, CR2, MRW, NEF,
RAF и т.д. "Формата RAW" не существует; это лишь иллюзия, созданная
способностью dcraw читать все сырые форматы.
Dcraw намного облегчил программистам поддержку широкого диапазона
цифровых фотокамер в своих приложениях. Они могут вызывать
dcraw из графического интерфейса, включать часть dcraw.c в свою
программу, или просто использовать dcraw.c в качестве документации,
которую производители фотокамер отказываются предоставить.
- У меня нет компилятора языка C. Можете ли вы прислать мне
исполнимый файл?
- Нет, но Франциско Монтия предоставляет исполнимые файлы для
Макинтоша и Windows на своем сайте.
А Бенджамин Лебсанфт вызвался добровольно поддерживать
исполнимые файлы для Windows, оптимизированные для разных видов
процессоров.
Если вы знакомы с Досовской командной строкой, но не владеете языком C,
вы можете установить этот
бесплатный компилятор языка C для Windows и довольно легко
скомпилировать файл dcraw.c.
- Почему dcraw выдает сообщение "Недостаточно памяти" в
Windows Vista?
- Это произвольное ограничение Windows Vista, которое будет
исправлено в первом сервисном пакете.
У Томаса Найсли (известного по обнаружению ошибки FDIV у процессора Pentium)
есть
страница, описывающая данную проблему.
На текущий момент, единственным способом избежать эту проблему
является создание файла dcraw.exe с помощью Microsoft компилятора
вместо компилятора GNU.
- Каким образом я могу читать данные EXIF (выдержка, диафрагма и т.д.)?
-
Программа Фила Харви ExifTool предоставляет унифицированную,
базирующуюся на языке Перл программу чтения (и редактирования!)
EXIF данных для всех фотокамер и всех файловых форматов.
"dcraw -i -v" намного быстрее, но предоставляет меньше информации.
- Как я могу прочитать файлы NEF, производимые сканерами Nikon?
- Dcraw поддерживает только фотокамеры.
Для сканеров попробуйте эту простую программу.
- Как я смогу прочитать пылевые изображения Nikon (файлы NDF)?
- Используйте эту программу.
- Есть ли у вас какая-либо документация, описывающая форматы
сырых фотографий?
- Да, но она склонна опускать важные детали, например, о том, как
распаковать сырое изображение или расшифровать скрытые метаданные.
Смотри официальную документацию по
TIFF,
TIFF/EP,
Adobe DNG,
CIFF (CRW) и
X3F.
- Где я могу взять подборку сырых фотографий для тестирования
своего программного обеспечения?
-
Этот сайт
является хорошим местом для обмена образцами сырых фотографий.
Для полного тестового набора сырых фотографий dcraw (все фотокамеры,
поддерживаемые dcraw), я продаю набор из 3-х DVD за $700 и обновление
по интернету за $300 в год.
- Я разрабатываю цифровую фотокамеру. Каким образом я могу
сконвертировать ее сырые фотографии в нечто, что могут открыть
dcraw и Adobe Photoshop?
-
Загрузите
LibTIFF v3.8.2 и примените эту заплатку.
Затем используйте эту программу на C
в качестве шаблона для конвертирования своих фотографий в действительные
файлы Adobe DNG.
- Почему выдаваемые dcraw изображения больше JPEG-ов, производимых
фотокамерой?
- У любого алгоритма, комбинирующего каждый пиксель с его соседями,
возникают проблемы вблизи границ изображения. Программный код C является
дешевым, поэтому dcraw применяет различные алгоритмы к краевым пикселям.
Аппаратное программное обеспечение дорого, поэтому фотокамеры обрезают
краевые пиксели после обработки изображения.
- Я сделал сырой фотоснимок в полной темноте. Почему он выглядит
полным шума, в то время как он должен быть сплошного черного цвета?
- Не важно, насколько темным является изображение, автоэкспозиция
программы dcraw "растягивает" его так, что один процент его пикселей
выглядит белым. Опция "-b" исправляет такое поведение, в то время как
"-4" (16-битовый вывод) полностью его избегает.
- Я изменяю яркость на плюс/минус два шага диафрагмы, но все пять
снимков выглядят почти одинаковыми в dcraw. Почему?
- Смотри предыдущий вопрос.
- Почему 16-битовый вывод темен/нечитаем?
- Если вы хотите получить красивые фотографии сразу из dcraw,
придерживайтесь 8-битового вывода. 16-битовый линейный вывод
является лучшим сырым материалом для профессиональных редакторов
изображения, таких как
Photoshop и
CinePaint,
но он не подходит для большинства просмотрщиков изображений.
- Как действует опция "-f" (четырехцветный RGB)?
- Если вы видите такие узоры, как этот
или этот на выводимых изображениях, вначале
попробуйте "dcraw -a". Если эти узоры сохраняются, используйте "dcraw -f"
для их удаления.
- Могли бы вы добавить опцию для вывода файлов в формате
TIFF / FITS / PNG / BMP / JPEG?
- В версии 8.25 и позднее, "dcraw -T" производит TIFF вывод с
метаданными. Для получения других форматов:
dcraw -c crw_0001.crw | pnmtofits > crw_0001.fits
dcraw -c crw_0001.crw | pnmtopng > crw_0001.png
dcraw -c crw_0001.crw | ppmtobmp > crw_0001.bmp
dcraw -c crw_0001.crw | cjpeg > crw_0001.jpeg
В этих примерах я использовал
набор инструментов Netpbm.
ImageMagick
также производит конвертирование форматов в режиме командной строки.
Обе программы являются свободными и бесплатными.
- Почему вы не сделаете dcraw в виде библиотеки?
- Я решил, что dcraw должен быть программой, выполняемой в командной
строке, написанной на языке C, и что все дальнейшие абстрактные слои
должны добавляться вокруг этого ядра, а не внутри него.
Программный код библиотеки некрасив, так как в нем нельзя использовать
глобальные переменные. Библиотеки намного труднее изменять, собирать,
устанавливать и тестировать, чем самостоятельные программы, и поэтому
они не подходят для файловых форматов, которые меняются с каждым днем.
Существует более легкий путь сделать dcraw модульным и с безопасными
потоками управления (thread-safe): Запускайте его как отдельный процесс.
Эрик Рэймонд
объясняет эту технику здесь.
- Почему присутствуют ложные цвета по краям внутри изображения?
- Из-за интерполяции. Это сложная проблема, легко определяемая:
- Возьмите трехцветное RGB изображение. У каждого пикселя установите
значения двух цветов на ноль.
- Реконструируйте оригинальное трехцветное изображение как можно
лучше из оставшегося одноцветного пикселя.
Dcraw на настоящий момент предлагает выбор из четырех методов
интерполяции: билинейной, по переменному числу градиентов (VNG),
методом группировки пикселей по шаблону (PPG) и адаптивной
гомогенно-ориентированной (AHD).
Светочувствительный элемент Foveon X3 Capture требует особого
вида интерполяции. В отличие от CCD, он улавливает три цвета на
каждое местоположение пикселя. Но цвета разделяются плохо, поэтому
сырые данные выглядят очень серыми. Необходимо много дополнительной
обработки для усиления цветов и одновременного подавления шума.
- Каким образом заставить мою фотокамеру получать сырые (RAW)
фотографии?
-
Для фотокамер Canon PowerShot A610, A620 и других
идите сюда.
Для некоторых фотокамер Nikon Coolpix вам нужно задействовать
специальный режим "DIAG RAW".
Для фотокамер Casio смотри
сайт Мориса Делени
или читайте
эту дискуссию по dpreview.
Для фотокамер Minolta DiMAGE G400, G500, G530, или G600 идите
сюда (на русском) или
сюда (на английском).
Для фотокамер Minolta DiMAGE Z2 и Nikon Coolpix 2100/3100/3700
идите сюда.
Для фотокамер SMaL смотри
форум camerahacking.
Для других фотокамер читайте руководство пользователя.
- Поддерживает ли dcraw мою фотокамеру?
- Вполне возможно, что да. Если вашей фотокамеры нет
в этом списке, попробуйте dcraw в
любом случае. Если это не работает, опубликуйте сырое изображение
на своем сайте и по электронной почте пришлите мне его URL адрес.
Если у вас нет сайта, используйте
Dropload или
YouSendIt.
В идеале, на вашем образце изображения должна быть показана стандартная
белая карта или таблица цветов, снятая под прямым солнечным светом.