LibRaw: библиотека и инструменты для чтения

LibRaw — это не фоторедактор в привычном смысле и не программа с панелью Экспозиция, Контраст, Кисть, Кадрирование и кнопкой Экспорт. Это конкретный программный пакет для работы с RAW-файлами цифровых камер: библиотека для встраивания в другие приложения и набор консольных утилит, через которые можно проверить RAW, извлечь метаданные, получить встроенную миниатюру, распаковать данные сенсора и сконвертировать файл в PPM или TIFF.

Содержание

Скачать LibRaw

Бесплатно
В реестре программного обеспечения РФ
Чистая установка

Новейшая версия для Windows и macOS. Удобный редактор с ИИ и профессиональными функциями.

⬇ Скачать ФотоМАСТЕР бесплатно

⬇ Скачать LibRaw (Windows)

Главная задача LibRaw — корректно прочитать RAW-файл и достать из него данные, которые затем можно использовать для проявки, анализа, пакетной обработки, просмотра, научной обработки изображений или интеграции в собственный RAW-конвертер. Программа работает с форматами CRW/CR2, NEF, RAF, DNG, MOS, KDC, DCR и большим количеством других RAW-форматов цифровых камер.

LibRaw стоит воспринимать как низкоуровневый RAW image decoder. Он не пытается заменить Adobe Lightroom Classic, Capture One или RawTherapee по удобству ручной проявки, но даёт точный доступ к данным RAW, балансу белого, цветовым матрицам, миниатюрам, размерам кадра, параметрам сенсора, демозаике и базовой конвертации. Именно поэтому LibRaw часто интересен не только фотографам, но и разработчикам, инженерам, специалистам по компьютерному зрению, авторам DAM-систем, просмотрщиков, конвертеров, анализаторов RAW-данных и серверных обработчиков изображений.

LibRaw

Что представляет собой программа

LibRaw состоит из двух крупных частей:

  • библиотека C/C++, которую разработчик подключает к своему приложению;

  • готовые консольные примеры, которые можно запускать как самостоятельные утилиты.

Внутри пакета используются исполняемые файлы и примеры вроде raw-identify, simple_dcraw, dcraw_emu, dcraw_half, half_mt, mem_image, 4channels, rawtextdump, unprocessed_raw, postprocessing_benchmark. Эти утилиты показывают, как библиотека открывает RAW-файл, читит структуру imgdata, извлекает миниатюру, делает демозаику, пишет результат в TIFF/PPM и измеряет время обработки. Набор примеров находится в папке samples, а после сборки — в папке bin.

Для обычного пользователя это означает следующее: у LibRaw нет привычного окна редактора, но есть команды, параметры и выходные файлы. Вместо кнопки Open используется команда с именем файла. Вместо кнопки Export используется ключ -T для записи TIFF или стандартный вывод PPM. Вместо выпадающего списка цветовых пространств используется параметр -o. Вместо ползунка баланса белого используются ключи -w, -a, -A и -r.

Такой подход кажется сухим, но именно он делает LibRaw удобным для автоматизации. Команду можно встроить в bat-файл, shell-скрипт, серверную очередь, обработчик загруженных RAW-файлов, тестовый пайплайн или программу, где RAW-файл является не финальной фотографией, а исходным массивом данных.

Основная идея LibRaw

RAW-файл — это не обычная картинка. Внутри него лежит информация с матрицы камеры, служебные поля, данные о балансе белого, цветовые матрицы, информация о чёрном уровне, насыщении, ориентации, иногда несколько изображений, embedded thumbnail, JPEG-превью, дополнительные области сенсора, данные Pixel Shift или нестандартные блоки производителя.

LibRaw берёт на себя этап чтения и первичного преобразования такого файла. Программа решает несколько задач:

  1. Определяет формат и модель камеры.

  2. Читает размеры RAW-данных и видимого изображения.

  3. Извлекает технические поля из файла.

  4. Распаковывает данные сенсора.

  5. Рассчитывает или применяет чёрный уровень.

  6. Работает с балансом белого.

  7. Выполняет демозаику Bayer/X-Trans-подобных данных.

  8. Применяет базовую цветовую обработку.

  9. Пишет результат в PPM или TIFF.

  10. Даёт разработчику доступ к структурам данных через API.

Это не магический улучшатель фото. LibRaw не подбирает стиль, не делает ретушь кожи, не строит каталог, не синхронизирует пресеты, не рисует маски по небу и не управляет коллекцией фотографий. Его задача ниже по уровню: открыть RAW и сделать так, чтобы другие программы могли с ним работать.

Для чего нужна LibRaw

LibRaw полезна там, где требуется не ручная художественная обработка одного кадра, а технически управляемое чтение RAW.

Конвертация RAW в TIFF или PPM

Через dcraw_emu можно быстро получить TIFF из CR2, NEF, RAF, DNG, ARW и других RAW-файлов. Типичный сценарий выглядит так:

dcraw_emu -T -w photo.CR2

Здесь -T задаёт TIFF вместо PPM, а -w использует баланс белого камеры. Такой файл затем можно открыть в графическом редакторе, передать в программу анализа, применить к нему ImageMagick, OpenCV, собственную систему сравнения изображений или любой другой инструмент.

Проверка RAW-файла

Утилита raw-identify нужна для технической проверки файла. Она открывает RAW через open_file() и печатает поля структуры imgdata. Ключ -v даёт расширенный вывод метаданных, -u показывает имя функции распаковки, -u -f добавляет сведения о masked areas, а -w выводит таблицы баланса белого, сохранённые в RAW.

Примеры:

raw-identify photo.NEFraw-identify -v photo.DNGraw-identify -u -f photo.RAFraw-identify -w photo.CR2

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

Извлечение встроенной миниатюры

Многие RAW-файлы содержат JPEG-превью. LibRaw умеет читать такие миниатюры без полной проявки RAW. Это важный сценарий для каталогизаторов, просмотрщиков и DAM-систем: показать быстрый preview можно намного быстрее, чем выполнять полноценную демозаику и цветовую обработку.

В C++ API за чтение миниатюры отвечают unpack_thumb() и unpack_thumb_ex(int i). JPEG-превью помещается в буфер без изменения, а не-JPEG-превью раскладывается в bitmap-представление.

Получение данных сенсора для анализа

В научных, инженерных и ML-задачах RAW часто нужен не как красивая фотография, а как массив исходных значений. Для этого LibRaw позволяет распаковать файл и работать с данными до финального рендера. Можно получить значения пикселей, оценить шум, проверить black level, сравнить поведение камер, построить собственный pipeline обработки.

Встраивание RAW-поддержки в приложение

LibRaw подходит для программ, которым нужно открыть RAW-файл, но невыгодно писать собственные декодеры для десятков производителей. Через API разработчик получает единый способ чтения CR2, NEF, RAF, DNG и других форматов. Библиотека предназначена для RAW-конвертеров, анализаторов данных и других программ, где RAW используется как исходный материал.

Поддерживаемые RAW-форматы и камеры

LibRaw работает с широким набором RAW-форматов: Canon CRW/CR2/CR3, Nikon NEF, Fujifilm RAF, Adobe DNG, Kodak DCR/KDC, Leaf MOS, Sony ARW, Panasonic RW2, Olympus/OM System ORF, Pentax PEF, Hasselblad, Phase One, Leica, DJI и другими форматами. Важная особенность — поддержка не сводится только к расширению файла. RAW-формат у разных камер может отличаться даже внутри одного бренда, поэтому библиотека учитывает конкретные модели и варианты сжатия.

Список поддерживаемых камер включает не только классические DSLR и беззеркальные камеры, но и смартфоны, дроны, цифровые задники, старые модели, промышленные камеры и DNG-устройства. В перечне встречаются Apple iPhone, Canon, Nikon, Fujifilm, Sony, Leica, Hasselblad, Panasonic, Olympus/OM System, Pentax, DJI, Skydio и другие производители.

Поддержка RAW в LibRaw важна по двум причинам.

Первая — производители камер часто используют собственные варианты контейнеров, компрессии, цветовых таблиц, обрезок, masked pixels и служебных блоков. Простого чтения как файла с пикселями недостаточно.

Вторая — RAW-файлы постоянно меняются. Новая камера может записывать старое расширение, но с новым расположением данных, другой компрессией или нестандартными метаданными. Поэтому RAW decoder должен регулярно получать поддержку новых моделей и исправления для нестандартных файлов.

Интерфейс LibRaw: вместо кнопок — команды, ключи и API

У LibRaw нет графического интерфейса с меню File, Edit, View, Develop, Export. Это важно зафиксировать сразу, потому что ожидание программы для обработки фото здесь приведёт к ошибочной оценке. Интерфейс LibRaw — это:

  • имена исполняемых файлов;

  • ключи командной строки;

  • входные RAW-файлы;

  • выходные TIFF/PPM/служебные данные;

  • C/C++ классы и функции;

  • структура imgdata;

  • параметры imgdata.params.

Для пользователя консольной версии основные элементы управления выглядят так:

ЭлементРоль
raw-identifyПроверка RAW-файла, вывод метаданных и служебных полей
dcraw_emuОсновная утилита конвертации RAW по логике dcraw
simple_dcrawУпрощённый пример конвертации и извлечения миниатюр
dcraw_halfПример half-size обработки через C API
half_mtПакетная half-size обработка с параллельными потоками
mem_imageПример работы с изображением и миниатюрой в памяти
4channelsПример работы с четырёхканальными RAW-данными
-TЗапись TIFF вместо PPM
-wБаланс белого камеры
-aАвто-баланс по всему изображению
-rРучные коэффициенты white balance
-qВыбор качества интерполяции
-oЦветовое пространство вывода
-WОтключение автоосветления
-HРежим обработки пересветов
-BКадрирование выходного изображения
-timingОтчёт о времени обработки

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

Развёртывание и первый запуск

После распаковки пакета пользователь работает с папкой, где находятся исполняемые файлы примеров. Обычно интерес представляет каталог bin: именно там находятся raw-identify, dcraw_emu, simple_dcraw и другие инструменты после сборки. Исходные файлы лежат в samples, а после сборки соответствующие программы появляются в bin.

Базовая проверка начинается не с конвертации, а с идентификации RAW:

raw-identify test.CR2

Если файл читается, можно вывести больше данных:

raw-identify -v test.CR2

После этого выполняется простая конвертация:

dcraw_emu -T -w test.CR2

В этом примере программа создаёт TIFF-файл, используя баланс белого камеры. Если нужен 16-битный результат:

dcraw_emu -T -6 -w test.CR2

Если нужен линейный 16-битный TIFF без автояркости и гамма-кривой:

dcraw_emu -T -4 test.CR2

Ключ -4 в dcraw_emu соответствует режиму линейного 16-битного вывода и связан с комбинацией -6 -W -g 1 1: 16 бит, отключение автоматического осветления, линейная гамма.

LibRaw

Работа с raw-identify

raw-identify — первая утилита, к которой стоит обращаться при проверке RAW-файла. Она не выполняет полноценную проявку, а открывает файл и показывает техническую информацию, доступную после чтения заголовков и метаданных. Это полезно в нескольких ситуациях:

  • нужно проверить, распознаётся ли файл;

  • нужно узнать модель камеры;

  • нужно посмотреть размеры изображения;

  • нужно получить служебные поля;

  • нужно проверить таблицы баланса белого;

  • нужно понять, какая функция распаковки будет использоваться;

  • нужно диагностировать странный RAW перед дальнейшей обработкой.

Простая команда:

raw-identify IMG_0001.CR2

Расширенный вывод:

raw-identify -v IMG_0001.CR2

Проверка white balance tables:

raw-identify -w IMG_0001.CR2

Проверка функции распаковки:

raw-identify -u IMG_0001.CR2

Функция распаковки и masked areas:

raw-identify -u -f IMG_0001.CR2

С практической точки зрения raw-identify выполняет роль технического инспектора. Если фоторедактор просто пишет файл не поддерживается или молча показывает некорректный цвет, raw-identify помогает понять, что именно библиотека увидела в RAW.

Работа с dcraw_emu

dcraw_emu — главная консольная утилита для конвертации RAW в стиле dcraw. Она почти полностью эмулирует поведение dcraw, но при этом использует LibRaw и поддерживает дополнительные параметры, которых нет в оригинальном dcraw.

Базовая команда:

dcraw_emu photo.NEF

По умолчанию результатом обычно становится PPM. Для практической работы чаще используют TIFF:

dcraw_emu -T photo.NEF

Добавление баланса белого камеры:

dcraw_emu -T -w photo.NEF

16-битный TIFF:

dcraw_emu -T -6 -w photo.NEF

Линейный TIFF:

dcraw_emu -T -4 photo.NEF

Выбор качества интерполяции:

dcraw_emu -T -q 3 -w photo.NEF

Вывод в sRGB:

dcraw_emu -T -o 1 -w photo.NEF

Вывод в ProPhoto:

dcraw_emu -T -o 4 -w photo.NEF

Отключение автояркости:

dcraw_emu -T -6 -W -w photo.NEF

Отчёт о времени обработки:

dcraw_emu -T -6 -w -timing photo.NEF

dcraw_emu хорошо подходит для сценариев, где нужно быстро получить технически предсказуемый TIFF. Это может быть тест камеры, массовое сравнение RAW-файлов, подготовка материала для анализа, проверка цветовых матриц или пакетная конвертация архива.

Основные ключи dcraw_emu

Справка dcraw_emu содержит большой набор параметров. Ниже — те, которые чаще всего влияют на результат.

КлючНазначение
-vПодробный вывод хода обработки
-wИспользовать баланс белого камеры
-aУсреднить всё изображение для баланса белого
-A <x y w h>Взять серую область для расчёта баланса белого
-r <r g b g>Задать собственные коэффициенты white balance
+M / -MИспользовать или не использовать встроенную цветовую матрицу
-C <r b>Коррекция хроматической аберрации
-P <file>Исправление битых пикселей по файлу
-K <file>Вычитание dark frame
-k <num>Уровень чёрного
-S <num>Уровень насыщения
-n <num>Порог wavelet denoising
-H [0-9]Режим обработки светов
-t [0-7]Поворот/отражение
-o [0-8]Цветовое пространство вывода
-p fileВходной ICC-профиль камеры
-WНе осветлять изображение автоматически
-b <num>Яркость
-q NКачество интерполяции
-hHalf-size изображение
-m <num>Median filter по R-G и B-G
-s [0..N-1]Выбор одного RAW-изображения из файла
-4Линейный 16-битный вывод
-616-битный вывод
-g pow tsГамма-кривая
-TЗапись TIFF вместо PPM
-B <x y w h>Cropbox
-Z <suf>Правила формирования имени выходного файла
-timingПодробный отчёт по времени
-fbdd NFBDD-шумоподавление
-dcbi NДополнительные DCB-итерации
-dcbeDCB color enhance
-aexpo <e p>Коррекция экспозиции
-apentax4shotОбъединение 4-shot RAW Pentax
-mmapИспользование memory-mapped buffer
-memИспользование буфера в памяти
-disinterpНе выполнять интерполяцию

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

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

Баланс белого — один из ключевых этапов RAW-конвертации. В JPEG камера уже применяет свои настройки, а в RAW данные сенсора требуют пересчёта каналов. LibRaw через dcraw_emu даёт несколько вариантов управления white balance.

Баланс белого камеры

dcraw_emu -T -w photo.ARW

Ключ -w использует баланс белого, записанный камерой. Это удобный режим для быстрой технической конвертации: результат обычно ближе к тому, что фотограф видел на экране камеры.

Автоматический баланс по всему кадру

dcraw_emu -T -a photo.ARW

Ключ -a усредняет всё изображение. Такой способ может дать приемлемый результат на нейтральных сценах, но плохо работает, если кадр целиком тёплый, холодный, снят в театральном свете, на закате или при цветной подсветке.

Баланс по серой области

dcraw_emu -T -A 1200 800 300 300 photo.ARW

Ключ -A <x y w h> говорит программе взять прямоугольную область кадра и рассчитать white balance по ней. Это полезно, если в кадре есть серая карта или нейтральный участок.

Ручные коэффициенты

dcraw_emu -T -r 2.05 1.00 1.48 1.00 photo.ARW

Ключ -r <r g b g> задаёт коэффициенты для красного, зелёного, синего и второго зелёного каналов. Такой режим нужен в технических задачах, где требуется повторяемость: один и тот же набор коэффициентов применяется к серии кадров, чтобы исключить автоматические колебания.

Цветовые пространства

Ключ -o управляет выходным цветовым пространством. В dcraw_emu используются значения от 0 до 8:

ЗначениеЦветовое пространство
0raw
1sRGB
2Adobe RGB
3Wide Gamut RGB
4ProPhoto RGB
5XYZ
6ACES
7DCI-P3
8Rec.2020

Для обычного просмотра чаще выбирают sRGB:

dcraw_emu -T -o 1 -w photo.DNG

Для дальнейшей цветокоррекции может быть полезен ProPhoto RGB:

dcraw_emu -T -o 4 -w photo.DNG

Для технического анализа иногда нужен raw-вывод:

dcraw_emu -T -o 0 photo.DNG

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

Демозаика и интерполяция

Большинство RAW-файлов с Bayer-сенсоров хранят не готовые RGB-пиксели, а мозаичный массив, где каждый элемент фиксирует только один цветовой компонент. Чтобы получить обычное изображение, нужна демозаика — восстановление RGB-значений для каждого пикселя.

В dcraw_emu за выбор метода отвечает ключ -q N:

КлючМетод
-q 0linear
-q 1VNG
-q 2PPG
-q 3AHD
-q 4DCB
-q 11DHT
-q 12AAHD

Когда выбирать -q 0

dcraw_emu -T -q 0 photo.CR2

Линейная интерполяция подходит для быстрых тестов, превью, диагностики и задач, где качество краёв не критично. Она проще и быстрее, но может давать больше артефактов.

Когда выбирать -q 3

dcraw_emu -T -q 3 -w photo.CR2

AHD — популярный компромисс между качеством и предсказуемостью. Для обычной конвертации RAW в TIFF этот режим часто выглядит разумнее, чем самые простые варианты.

Когда выбирать -q 4

dcraw_emu -T -q 4 -dcbi 2 -dcbe -w photo.CR2

DCB можно использовать, когда требуется более аккуратная демозаика. Для него доступны дополнительные параметры -dcbi N и -dcbe: первый задаёт число дополнительных DCB-итераций, второй включает DCB color enhance.

Half-size режим

dcraw_emu -T -h photo.CR2

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

Света, экспозиция и яркость

RAW-файл содержит больший запас данных, чем готовый JPEG, но это не значит, что программа автоматически спасёт любые пересветы. LibRaw даёт инструменты для управления светами, яркостью и линейностью вывода.

Отключение автоматического осветления

dcraw_emu -T -6 -W -w photo.NEF

Ключ -W отключает автоматическое осветление. Без него результат может выглядеть темнее, зато становится более предсказуемым для технического анализа. Это особенно важно, если TIFF используется не для просмотра, а для измерений, сшивки, HDR, сравнения экспозиций или машинной обработки.

Линейный 16-битный режим

dcraw_emu -T -4 photo.NEF

Ключ -4 удобен как короткая команда для линейного 16-битного результата. Такой TIFF может выглядеть плоским и тёмным при обычном просмотре, но именно это поведение полезно в техническом workflow: программа не улучшает картинку на своё усмотрение.

Режимы пересветов

dcraw_emu -T -H 0 photo.NEFdcraw_emu -T -H 1 photo.NEFdcraw_emu -T -H 2 photo.NEFdcraw_emu -T -H 5 photo.NEF

Ключ -H [0-9] управляет highlight mode: 0 — clip, 1 — unclip, 2 — blend, 3+ — rebuild. Чем выше режим восстановления, тем сильнее программа пытается реконструировать света, но тем осторожнее нужно оценивать результат: восстановление пересветов не возвращает реально отсутствующие данные.

Коррекция экспозиции

dcraw_emu -T -aexpo 1.5 0.7 photo.NEF

Ключ -aexpo <e p> включает exposure correction. Параметр e задаёт сдвиг экспозиции в линейной шкале, а p управляет сохранением светов. Диапазон e позволяет затемнять и осветлять изображение, а p управляет переходом от клиппинга к более мягкому сохранению светлых областей.

Шум, дефектные пиксели и dark frame

LibRaw не является полноценным шумодавом уровня современных коммерческих RAW-конвертеров, но в dcraw_emu есть несколько технических средств.

Wavelet denoising

dcraw_emu -T -n 100 photo.CR2

Ключ -n <num> задаёт порог wavelet denoising. Это базовый инструмент подавления шума, который может быть полезен при технической конвертации, но не заменяет продвинутые профили шума, AI-denoise и камерно-зависимые алгоритмы.

FBDD

dcraw_emu -T -fbdd 1 photo.CR2dcraw_emu -T -fbdd 2 photo.CR2

Ключ -fbdd N управляет FBDD noise reduction: 0 — отключено, 1 — light FBDD, 2 — full.

Исправление битых пикселей

dcraw_emu -T -P badpixels.txt photo.CR2

Ключ -P <file> применяет список dead pixels из файла. Это полезно, если известны координаты дефектных пикселей конкретной камеры.

Вычитание dark frame

dcraw_emu -T -K darkframe.pgm photo.CR2

Ключ -K <file> вычитает dark frame в формате 16-bit raw PGM. Такой подход применим в астрофотографии, научной съёмке и других сценариях, где шум матрицы нужно компенсировать технически, а не визуально.

Кадрирование, ориентация и выходные имена

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

Поворот и отражение

dcraw_emu -T -t 0 photo.RAFdcraw_emu -T -t 3 photo.RAFdcraw_emu -T -t 5 photo.RAFdcraw_emu -T -t 6 photo.RAF

Ключ -t [0-7] задаёт flip/rotate: 0 — без поворота, 3 — 180°, 5 — 90° против часовой стрелки, 6 — 90° по часовой стрелке.

Без растяжения и поворота RAW-пикселей

dcraw_emu -T -j photo.RAF

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

Cropbox

dcraw_emu -T -B 100 100 2000 1500 photo.RAF

Ключ -B <x y w h> обрезает результат по прямоугольнику. Координаты применяются до поворота изображения.

Правила имени выходного файла

dcraw_emu -T -Z .converted.tif photo.RAFdcraw_emu -T -Z tif photo.RAFdcraw_emu -T -Z result.tif photo.RAF

Ключ -Z <suf> управляет формированием имени выходного файла. Можно добавить суффикс к имени, заменить последнее расширение, вывести в stdout через -, либо записать результат в конкретное имя.

simple_dcraw: упрощённая конвертация

simple_dcraw — простой пример, который воспроизводит базовое поведение dcraw [-e] [-v] [-T]. Он полезен как учебный образец: показывает, как открыть RAW, обработать его и записать результат без всей сложности dcraw_emu.

Типичный смысл simple_dcraw — не заменить dcraw_emu, а показать минимальный путь:

  1. открыть файл;

  2. распаковать данные;

  3. выполнить базовую обработку;

  4. записать PPM или TIFF;

  5. при необходимости извлечь embedded thumbnail.

Для разработчика это удобная отправная точка. Если нужно понять, как LibRaw работает на уровне API, проще изучить simple_dcraw, чем сразу разбирать полный dcraw_emu.

mem_image: изображение и миниатюра в памяти

mem_image показывает сценарий, где результат обработки нужен не как файл на диске, а как объект в памяти. Это важно для приложений, где изображение передаётся дальше внутри программы: в GUI, в сеть, в обработчик, в Python/C++ слой, в ML-модель, в систему анализа.

В LibRaw для этого используются функции семейства dcraw_make_mem_image и dcraw_make_mem_thumb. Пример mem_image применяет эти функции и затем записывает данные в PPM.

Практическая ценность такого подхода:

  • не нужно создавать временные TIFF-файлы;

  • можно отдавать результат в интерфейс приложения;

  • можно передавать изображение в другой модуль;

  • можно уменьшить количество операций ввода-вывода;

  • можно строить серверный pipeline обработки RAW.

half_mt: массовая обработка и потоки

half_mt демонстрирует half-size обработку с параллельным выполнением. Это не универсальный RAW-конвертер, а пример того, как LibRaw можно использовать в многопоточном сценарии. В half_mt используется ключ -J n, задающий количество параллельных потоков; на многоядерных системах выигрыш проявляется при массовой обработке.

Пример логики:

half_mt -J 4 *.CR2

Такой сценарий нужен, когда важна скорость отбора или генерации превью. Если нужно обработать сотни RAW-файлов в half-size режиме, многопоточность даёт практический выигрыш.

4channels: четырёхканальные RAW-данные

Утилита 4channels относится к более техническим примерам. Она работает с четырёхканальным представлением и демонстрирует дополнительные варианты обработки: выбор N-го изображения, gamma correction, autoscaling, отключение black subtraction. Это не инструмент для бытовой проявки, а пример доступа к каналам и технической структуре данных.

LibRaw

C++ API: как LibRaw используется в программах

В C++ API основной объект — экземпляр класса LibRaw. Он создаётся без параметров или с флагами, которые определяют поведение объекта. Результаты обработки помещаются в поле imgdata типа libraw_data_t; это же поле содержит параметры постобработки и вывода.

Базовая логика выглядит так:

#include "libraw/libraw.h"int main(){    LibRaw processor;    int ret = processor.open_file("photo.CR2");    if (ret != LIBRAW_SUCCESS)        return ret;    ret = processor.unpack();    if (ret != LIBRAW_SUCCESS)        return ret;    ret = processor.raw2image();    if (ret != LIBRAW_SUCCESS)        return ret;    processor.recycle();    return 0;}

На практике программа обычно делает больше: проверяет код ошибки, читает размеры, извлекает модель камеры, применяет параметры imgdata.params, вызывает dcraw_process(), сохраняет результат или получает его в памяти.

open_file()

open_file() открывает RAW-файл, читает метаданные и заполняет структуры внутри imgdata: idata, sizes, color, other, thumbnail. Через эти поля приложение получает модель камеры, размеры изображения, цветовые данные, служебную информацию и сведения о миниатюре.

unpack()

unpack() распаковывает RAW-данные и рассчитывает black level не для всех, но для многих форматов. Результаты помещаются в imgdata.image.

raw2image()

raw2image() переводит распакованные RAW-данные в представление, удобное для дальнейшей работы в библиотеке или приложении. Этот этап особенно важен, когда разработчик хочет сам контролировать постобработку, а не просто вызвать готовый dcraw_process().

dcraw_process()

dcraw_process() выполняет постобработку в стиле dcraw: демозаика, баланс белого, цветовое преобразование, гамма и другие этапы. Это удобный путь, если разработчик хочет получить готовое RGB-изображение без написания собственного RAW pipeline.

dcraw_make_mem_image()

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

dcraw_make_mem_thumb()

Функция возвращает встроенную миниатюру в памяти. Это правильный путь для быстрого просмотра RAW, когда полная проявка не нужна.

Структура imgdata

imgdata — центральная структура данных LibRaw. Именно через неё программа получает всё, что LibRaw извлекла из RAW-файла. В неё входят блоки с данными о формате, размерах, цвете, миниатюрах, параметрах обработки и других полях.

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

ГруппаЧто содержит
imgdata.idataИдентификационные данные: производитель, модель, программные поля
imgdata.sizesРазмеры RAW, видимого изображения, поля обрезки
imgdata.colorЦветовые данные, white balance, black level, maximum
imgdata.otherДополнительные EXIF-подобные сведения
imgdata.thumbnailДанные встроенной миниатюры
imgdata.paramsПараметры постобработки и вывода
imgdata.imageРаспакованное/подготовленное изображение

Методы API разделяются на загрузку данных из RAW-файла, функции постобработки в стиле dcraw и функции файлового вывода.

Обработка ошибок и callbacks

LibRaw рассчитана на встраивание в реальные приложения, поэтому в API предусмотрены коды возврата и обработчики. Все функции API возвращают integer-код: положительное значение связано с системной ошибкой, отрицательное — с ошибочной ситуацией внутри LibRaw.

Для приложения это важно: RAW-файл может быть повреждён, урезан, создан нестандартной камерой, неправильно скопирован или специально подготовлен для проверки устойчивости. Правильный код не должен считать, что open_file() и unpack() всегда завершаются успешно.

LibRaw также поддерживает progress callback. Его можно использовать для отображения прогресса, кнопки отмены обработки и остановки текущей операции. Callback может прервать обработку, вернув ненулевое значение; в таком случае ресурсы освобождаются через recycle(), а вызов возвращает код отмены.

Для графической программы это означает возможность сделать нормальный интерфейс:

  • открыть RAW;

  • показать индикатор обработки;

  • дать кнопку Cancel;

  • не блокировать приложение на больших файлах;

  • корректно отменить операцию;

  • освободить память.

Практический сценарий для фотографа

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

Шаг 1. Проверить файл

raw-identify -v DSC_1001.NEF

На этом этапе видно, распознаётся ли файл, какие размеры и служебные поля прочитаны.

Шаг 2. Получить быстрый TIFF с балансом камеры

dcraw_emu -T -w DSC_1001.NEF

Это простой вариант, когда нужно быстро получить просматриваемый файл.

Шаг 3. Получить 16-битный TIFF

dcraw_emu -T -6 -w DSC_1001.NEF

16-битный результат лучше подходит для дальнейшей обработки, чем 8-битный.

Шаг 4. Получить линейный TIFF

dcraw_emu -T -4 DSC_1001.NEF

Такой файл может выглядеть темнее, но он полезен для технической обработки, HDR, сравнения экспозиций и дальнейшего pipeline без автоосветления.

Шаг 5. Сравнить интерполяцию

dcraw_emu -T -q 0 -w DSC_1001.NEFdcraw_emu -T -q 3 -w DSC_1001.NEFdcraw_emu -T -q 4 -dcbi 2 -dcbe -w DSC_1001.NEF

Так можно увидеть разницу между linear, AHD и DCB.

Шаг 6. Проверить цветовое пространство

dcraw_emu -T -o 1 -w DSC_1001.NEFdcraw_emu -T -o 4 -w DSC_1001.NEF

Первый вариант даёт sRGB, второй — ProPhoto RGB.

Практический сценарий для разработчика

Для разработчика LibRaw ценна как готовый RAW backend. Типичный workflow приложения:

  1. Пользователь выбирает RAW-файл.

  2. Приложение создаёт объект LibRaw.

  3. Вызывает open_file().

  4. Читает imgdata.sizes, imgdata.idata, imgdata.color.

  5. Для быстрого preview вызывает unpack_thumb().

  6. Для полной обработки вызывает unpack() и dcraw_process().

  7. Получает изображение через dcraw_make_mem_image().

  8. Показывает результат в интерфейсе или передаёт дальше.

  9. Освобождает ресурсы через recycle().

Пример с чтением размеров:

LibRaw processor;if (processor.open_file("photo.RAF") == LIBRAW_SUCCESS){    int width  = processor.imgdata.sizes.width;    int height = processor.imgdata.sizes.height;    // width и height можно использовать в интерфейсе,    // логике preview или проверке входного файла.}processor.recycle();

Пример с миниатюрой:

LibRaw processor;if (processor.open_file("photo.RAF") == LIBRAW_SUCCESS){    if (processor.unpack_thumb() == LIBRAW_SUCCESS)    {        libraw_thumbnail_t &thumb = processor.imgdata.thumbnail;        // thumb.thumb содержит данные миниатюры        // thumb.tformat описывает формат миниатюры    }}processor.recycle();

Такой подход позволяет встроить RAW-поддержку в просмотрщик, каталогизатор, веб-сервис, desktop-приложение или исследовательский инструмент.

Пакетная обработка RAW

Одна из сильных сторон LibRaw — автоматизация. Через shell, PowerShell или batch-файл можно обрабатывать каталоги RAW-файлов.

Пример для Linux/macOS shell

for f in *.CR2; do    dcraw_emu -T -6 -w "$f"done

Пример для Windows PowerShell

Get-ChildItem *.NEF | ForEach-Object {    .dcraw_emu.exe -T -6 -w $_.FullName}

Генерация быстрых TIFF-превью

for f in *.RAF; do    dcraw_emu -T -h -w "$f"done

Техническая проверка RAW-файлов

for f in *.DNG; do    raw-identify -v "$f" >> raw_report.txtdone

Измерение времени обработки

dcraw_emu -T -6 -w -timing photo.ARW

Ключ -timing включает подробный timing report. Это полезно при сравнении методов демозаики, настройке серверной очереди или выборе параметров для массовой обработки.

Что можно делать в LibRaw на практике

LibRaw закрывает не абстрактную задачу работы с фотографиями, а конкретные операции с RAW.

ЗадачаИнструмент
Проверить, читается ли RAWraw-identify
Посмотреть метаданныеraw-identify -v
Посмотреть white balance tablesraw-identify -w
Узнать функцию распаковкиraw-identify -u
Сконвертировать RAW в TIFFdcraw_emu -T
Использовать баланс белого камерыdcraw_emu -w
Задать ручной white balancedcraw_emu -r
Сделать 16-битный TIFFdcraw_emu -6 -T
Сделать линейный TIFFdcraw_emu -4 -T
Выбрать sRGB/Adobe/ProPhotodcraw_emu -o
Выбрать демозаикуdcraw_emu -q
Отключить автояркостьdcraw_emu -W
Исправить dead pixelsdcraw_emu -P
Вычесть dark framedcraw_emu -K
Сделать half-size previewdcraw_emu -h
Извлечь preview в приложенииunpack_thumb()
Получить картинку в памятиdcraw_make_mem_image()
Встроить RAW в C++ программукласс LibRaw

Чего в LibRaw нет

LibRaw не нужно оценивать как Lightroom-подобный редактор. В ней нет:

  • каталога фотографий;

  • истории правок;

  • пресетов;

  • кистей;

  • градиентных масок;

  • AI-выделения объекта;

  • ретуши кожи;

  • healing brush;

  • локальной коррекции;

  • HDR-склейки как пользовательской функции;

  • панорамы как полноценного GUI-мастера;

  • облачной синхронизации;

  • красивого окна предпросмотра;

  • кнопок Import, Develop, Export;

  • визуальных ползунков экспозиции и цвета.

Это не недостаток, а следствие назначения. LibRaw — программный RAW-декодер. Он находится ниже по уровню, чем редакторы. Многие редакторы, просмотрщики и конвертеры нуждаются именно в таком компоненте.

История версий программы

История LibRaw начинается в 2008 году. Проект был запущен на основе dcraw.c Дэйва Коффина. Идея состояла в том, чтобы превратить код dcraw в библиотеку, пригодную для использования другими программами, улучшить структуру, убрать глобальные переменные, сделать работу потокобезопаснее и расширить извлечение метаданных.

Период dcraw-основы

Ранние версии LibRaw опирались на логику dcraw. Это объясняет наличие dcraw_emu: утилита сохраняет знакомую модель ключей и поведения, но работает через LibRaw. Код рендеринга RAW в RGB унаследован от dcraw, при этом в LibRaw были добавлены изменения для ускорения и параллелизации.

Развитие постобработки

В начале и середине 2010-х в LibRaw активно расширялись возможности постобработки: методы debayerization/demosaicing, систематическое шумоподавление, дополнительные варианты рендера. Это важный этап: библиотека перестала быть только обёрткой вокруг dcraw и стала самостоятельным RAW-компонентом, который поддерживает новые камеры и форматы уже силами команды LibRaw.

Переход к самостоятельной поддержке камер

Поддержка dcraw была сведена к минимуму в 2015 году и полностью прекратилась в 2018 году. После этого поддержка новых камер и форматов выполняется командой LibRaw.

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

Линейка 0.20

Ветка 0.20 стала одним из крупных публичных этапов, где библиотека уже воспринималась как зрелый компонент для программ, работающих с RAW. Для многих приложений именно такие стабильные ветки важнее экспериментальных snapshot-сборок: API/ABI должны быть предсказуемыми, а поддержка камер — достаточно проверенной.

Линейка 0.21

Ветка 0.21 принесла серию исправлений, поддержку новых камер, улучшения обработки нестандартных файлов и исправления, связанные с безопасностью и корректностью чтения. В релизах 0.21.3–0.21.5 встречаются исправления для специально подготовленных файлов, DNG, CR3, Fuji, Phase One и других участков кода.

Линейка 0.22

Ветка 0.22 расширила поддержку камер и форматов, включая Canon EOS R1, EOS R5 Mark II, Fujifilm X-T50, GFX 100S II, Hasselblad CFV-100c, Leica Q3 43, Nikon Z6 III, Nikon Z f, Olympus/OM System OM-1 Mark II, Panasonic GH7, Sony A9 III, Sony A7C II, Sony A7CR, Sony ILCE-6700, DJI и Skydio. Также добавлена поддержка JPEG-XL previews в DNG 1.7 и связанные изменения для миниатюр.

Исправления безопасности и устойчивости

В ветке 0.22.1 были исправления, связанные с CR3 parser, DNG loader, integer overflow, проверками размеров, буферами, X3F decoder, Fuji decoder, Sony YCC decoder и чтением EOF.

Для библиотеки, которая читает сложные бинарные файлы, это принципиально. RAW-файл может быть большим, нестандартным, повреждённым или специально сформированным для проверки уязвимостей. Поэтому история версий LibRaw — это не только список новых камер, но и постоянное усиление устойчивости декодеров.

Производительность

Производительность LibRaw зависит от нескольких факторов:

  • формата RAW;

  • типа компрессии;

  • размера файла;

  • метода демозаики;

  • включённого шумоподавления;

  • цветового преобразования;

  • вывода TIFF или PPM;

  • работы с диском или памятью;

  • использования многопоточности;

  • сборочных параметров.

Самый быстрый путь — не выполнять полную демозаику, а использовать embedded thumbnail или half-size режим. Самый тяжёлый путь — полное разрешение, 16 бит, сложная демозаика, шумоподавление, DCB-итерации, коррекция экспозиции и запись большого TIFF.

Ключи, влияющие на скорость:

КлючВлияние
-hУскоряет получение half-size изображения
-q 0Более простая интерполяция
-q 3Баланс качества и скорости
-q 4Более тяжёлая DCB-демозаика
-dcbi NДополнительные итерации увеличивают время
-fbdd 1/2Шумоподавление увеличивает время
-TTIFF-вывод может быть тяжелее простого PPM
-timingПомогает измерить этапы обработки
-mmapМожет ускорить чтение на Unix-системах
-memИспользует буфер в памяти

Для серверной обработки практический подход простой: сначала использовать raw-identify и embedded thumbnail, а полную проявку запускать только тогда, когда она действительно нужна.

Безопасность при обработке неизвестных RAW-файлов

RAW-декодер работает с бинарными файлами сложной структуры. Поэтому LibRaw нельзя бездумно запускать на неизвестных файлах в публичном сервисе без ограничений. Это не особенность только этой программы, а общая проблема всех декодеров изображений, архиваторов, PDF-ридеров и медиабиблиотек.

Для безопасного использования LibRaw в сервисе нужны меры:

  • ограничивать максимальный размер входного файла;

  • проверять расширение и MIME, но не доверять им полностью;

  • запускать обработку в sandbox или контейнере;

  • задавать лимиты памяти и времени;

  • обрабатывать ошибки API;

  • не давать одному файлу повесить очередь;

  • регулярно обновлять используемую ветку;

  • логировать падения и нестандартные RAW;

  • разделять публичную обработку неизвестных файлов и обработку файлов из доверенного источника.

Это важный практический вывод: LibRaw можно использовать в веб-сервисе, но архитектура должна быть рассчитана на небезопасный вход.

Лицензирование

LibRaw распространяется под двумя лицензиями: GNU Lesser General Public License 2.1 и Common Development and Distribution License 1.0. Пользователь библиотеки может выбрать один из этих режимов.

Для разработчика это означает, что библиотеку можно встраивать в разные типы проектов, но юридическую модель нужно оценивать заранее. Особенно это касается коммерческих приложений, закрытого ПО, серверных продуктов и программ, распространяемых вместе с модифицированной версией библиотеки.

Сравнение с аналогами

dcraw

dcraw — исторически важная консольная программа для чтения RAW. Она стала основой для множества инструментов и повлияла на LibRaw напрямую. Главное отличие в том, что dcraw — это прежде всего самостоятельная утилита, а LibRaw — библиотека с API и набором примеров. Для разовой конвертации dcraw может быть понятен, но для встраивания в приложение удобнее библиотечная архитектура.

dcraw хорош как простой инструмент:

dcraw -T -w photo.CR2

Но когда нужно читать метаданные через структуры, получать миниатюры в памяти, управлять обработкой через C++ API и интегрировать RAW-декодирование в собственный продукт, LibRaw намного практичнее.

Adobe DNG Converter

Adobe DNG Converter решает другую задачу: массово переводит RAW-файлы в DNG. Это удобная пользовательская программа для совместимости с редакторами, но она не является библиотекой для прямого доступа к RAW-данным в приложении.

Adobe DNG Converter подходит, если нужно:

  • привести RAW к DNG;

  • обеспечить совместимость со старым редактором;

  • пакетно конвертировать архив;

  • получить стандартный контейнер.

Но он не заменяет LibRaw в задачах, где нужно программно открыть RAW, получить imgdata, извлечь thumbnail, управлять demosaic или встроить декодер в собственный код.

RawTherapee

RawTherapee — полноценный RAW-редактор с графическим интерфейсом. Там есть панели экспозиции, цвета, детализации, шумоподавления, резкости, профилей, кривых, локальных инструментов. Это программа для ручной проявки и художественной обработки.

RawTherapee лучше подходит фотографу, которому нужно:

  • открыть RAW и увидеть картинку;

  • двигать ползунки;

  • настраивать цвет;

  • работать с резкостью;

  • применять шумоподавление;

  • экспортировать JPEG/TIFF;

  • обрабатывать серии кадров через GUI.

LibRaw лучше подходит разработчику или техническому пользователю, которому нужен декодер, API и повторяемая командная обработка.

darktable

darktable — каталогизатор и RAW-проявщик. Он строит workflow вокруг библиотеки фотографий, модулей обработки, истории правок и неразрушающего редактирования. Это не просто декодер, а полноценная среда обработки.

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

LibRaw находится ниже: она открывает RAW и даёт данные. В darktable пользователь принимает художественные решения, а в LibRaw пользователь или программа управляет техническими параметрами декодирования.

ExifTool

ExifTool — мощный инструмент для чтения и редактирования метаданных. Он прекрасно подходит, если нужно извлечь EXIF, IPTC, XMP, дату съёмки, модель камеры, GPS, серийные поля и служебные теги.

Но ExifTool не предназначен для полноценного декодирования RAW в изображение. Он работает с метаданными, а LibRaw — с RAW-данными, пикселями, демозаикой, миниатюрами и базовой конвертацией. Для анализа метаданных ExifTool часто удобнее, для получения изображения из RAW нужен RAW-декодер.

rawpy

rawpy — Python-обёртка над LibRaw. Она удобна, если проект написан на Python и нужно работать с RAW в скриптах, Jupyter, ML-задачах или исследовательских пайплайнах. rawpy использует LibRaw как низкоуровневый движок, но даёт Python-интерфейс.

Типичный сценарий rawpy:

import rawpyimport imageio.v2 as imageiowith rawpy.imread('photo.NEF') as raw:    rgb = raw.postprocess()imageio.imwrite('photo.tiff', rgb)

Для Python-разработчика rawpy часто удобнее прямого C++ API. Но если нужно встроить RAW-декодер в C++ приложение, управлять сборкой, оптимизацией и низкоуровневыми структурами, прямое использование LibRaw остаётся более естественным.

OpenImageIO

OpenImageIO — библиотека более широкого профиля, ориентированная на чтение и запись множества графических форматов в профессиональных пайплайнах. Она используется в VFX, рендеринге, 3D и обработке изображений. RAW может быть частью такого workflow, но OpenImageIO — не специализированный RAW-декодер в том же смысле.

Если проект работает с большим количеством форматов изображений, OpenImageIO может быть удобнее как универсальный слой ввода-вывода. Если задача именно в точном чтении RAW-файлов камер и управлении RAW-параметрами, LibRaw более специализирована.

Таблица сравнения

ИнструментОсновной сценарийСильная сторонаОграничение
dcrawКонсольная RAW-конвертацияПростота и историческая совместимостьНеудобен как современная библиотека
Adobe DNG ConverterПеревод RAW в DNGМассовая совместимость с DNGНет API для детального RAW-доступа
RawTherapeeРучная проявка RAWБогатый GUI и настройки изображенияНе является низкоуровневой библиотекой
darktableКаталог и неразрушающая обработкаПолный фотографический workflowСложнее для простого API-декодирования
ExifToolМетаданныеСильнейшая работа с тегамиНе проявляет RAW в RGB
rawpyRAW в PythonУдобно для скриптов и MLЗависит от LibRaw как движка
OpenImageIOУниверсальный image I/OШирокий форматный слойНе настолько специализирован на RAW камер

Сильные стороны

Широкая поддержка RAW

Главное достоинство LibRaw — охват RAW-форматов и камер. Форматы камер слишком разнообразны, чтобы каждому разработчику писать собственный декодер. LibRaw снимает значительную часть этой сложности.

API для встраивания

Библиотека даёт C/C++ API, а не только готовую консольную команду. Это делает её полезной для приложений, где RAW должен открываться внутри программы.

Консольные инструменты

Наличие raw-identify и dcraw_emu позволяет использовать LibRaw без написания кода. Можно диагностировать файл, конвертировать RAW, проверить параметры, измерить время обработки.

Доступ к техническим данным

Через imgdata можно получить не только итоговую картинку, но и размеры, цветовые поля, миниатюры, служебные значения, white balance и другие данные.

Повторяемость

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

Подходит для автоматизации

LibRaw легко встроить в скрипт, очередь задач, backend, CI-тест, обработчик папки или собственное приложение.

Недостатки и ограничения

Нет графического интерфейса

Для обычного фотографа это главный минус. Нельзя просто открыть RAW, подвигать ползунки и сразу получить красивый JPEG. Нужно понимать команды.

Требует технической грамотности

Ключи -q, -o, -H, -W, -r, -K, -P, -dcbi, -fbdd требуют понимания. Ошибка в параметрах может дать тёмное, плоское, странно окрашенное или технически неподходящее изображение.

Не заменяет художественный RAW-редактор

LibRaw не делает современную цветокоррекцию, локальные маски, ретушь, AI-denoise, профили объективов уровня Lightroom/Capture One и удобную работу с каталогом.

Документация ориентирована на разработчиков

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

Результат часто требует дальнейшей обработки

TIFF, полученный через dcraw_emu, может быть технически правильным, но визуально не финальным. Его часто нужно дорабатывать в редакторе или собственном pipeline.

Типичные ошибки пользователей

Ожидание интерфейса как у редактора

LibRaw не откроется как программа с красивым окном. Если пользователь ищет визуальную проявку, ему нужен RawTherapee, darktable, Lightroom, Capture One или другой RAW-редактор.

Непонимание разницы между RAW и TIFF

RAW — исходные данные камеры. TIFF — уже результат преобразования. LibRaw читает RAW и может записать TIFF, но TIFF не равен исходному RAW.

Использование -W без понимания

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

Неверное цветовое пространство

Файл в ProPhoto или raw-цветовом пространстве может выглядеть неправильно в программе, которая не учитывает профиль или ожидает sRGB.

Выбор слишком тяжёлой демозаики для превью

Для быстрых превью не нужно использовать самые тяжёлые режимы. Half-size или embedded thumbnail часто рациональнее.

Обработка неизвестных файлов без ограничений

Публичный сервис не должен запускать RAW-декодер на любых загруженных файлах без sandbox, лимитов и обработки ошибок.

Примеры команд для разных задач

Быстрый TIFF с балансом камеры

dcraw_emu -T -w photo.CR2

Подходит для быстрого просмотра и базовой конвертации.

16-битный TIFF

dcraw_emu -T -6 -w photo.CR2

Лучше для дальнейшей обработки, чем 8-битный вывод.

Линейный TIFF для технического анализа

dcraw_emu -T -4 photo.CR2

Подходит для анализа, HDR, сравнения экспозиций и pipeline без автояркости.

sRGB TIFF

dcraw_emu -T -o 1 -w photo.CR2

Удобно для обычного просмотра.

ProPhoto TIFF

dcraw_emu -T -o 4 -w photo.CR2

Подходит для дальнейшей обработки в широком цветовом пространстве.

AHD-демозаика

dcraw_emu -T -q 3 -w photo.CR2

Хороший компромисс для обычной конвертации.

DCB-демозаика с усилением цвета

dcraw_emu -T -q 4 -dcbi 2 -dcbe -w photo.CR2

Более тяжёлый режим для случаев, где важнее качество интерполяции.

Быстрое half-size изображение

dcraw_emu -T -h -w photo.CR2

Подходит для превью и отбора.

Вывод метаданных

raw-identify -v photo.CR2

Полезно для диагностики и анализа RAW.

Проверка баланса белого

raw-identify -w photo.CR2

Показывает таблицы white balance, сохранённые в RAW.

Проверка времени обработки

dcraw_emu -T -6 -w -timing photo.CR2

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

Кадрирование

dcraw_emu -T -B 500 400 2500 1800 photo.CR2

Создаёт результат из заданной области кадра.

Вычитание dark frame

dcraw_emu -T -K dark.pgm photo.CR2

Подходит для технических и астрофотографических сценариев.

Исправление dead pixels

dcraw_emu -T -P badpixels.txt photo.CR2

Использует список дефектных пикселей.

Где LibRaw особенно уместна

LibRaw хорошо подходит для разработки:

  • RAW-просмотрщика;

  • конвертера RAW в TIFF;

  • системы пакетной обработки;

  • DAM-каталогизатора;

  • сервера генерации превью;

  • лабораторного инструмента анализа камер;

  • приложения для компьютерного зрения;

  • инструмента сравнения объективов и камер;

  • скрипта сортировки RAW;

  • программы извлечения embedded thumbnail;

  • собственного RAW pipeline.

Она также полезна фотографу, который не боится командной строки и хочет получать предсказуемые TIFF-файлы без ручного интерфейса.

Кому программа не подойдёт

LibRaw не стоит выбирать как основной инструмент, если нужно:

  • вручную обрабатывать фотографии;

  • быстро получать красивый JPEG;

  • работать с пресетами;

  • ретушировать кожу;

  • рисовать маски;

  • править небо;

  • вести каталог съёмок;

  • синхронизировать настройки между кадрами через GUI;

  • работать без командной строки;

  • обучаться RAW-обработке визуально.

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

Итоговая оценка

LibRaw — сильный, зрелый и практически важный RAW-декодер. Его ценность не в красивом интерфейсе, а в том, что он умеет читать большое количество RAW-форматов, извлекать метаданные и миниатюры, распаковывать данные сенсора, выполнять базовую постобработку, конвертировать RAW в TIFF/PPM и встраиваться в C/C++ приложения.

Главное преимущество программы — техническая управляемость. Через raw-identify можно проверить файл, через dcraw_emu — получить результат с нужными параметрами, через C++ API — встроить поддержку RAW в собственное приложение. Ключи -w, -a, -r, -q, -o, -T, -6, -4, -W, -H, -B, -timing дают прямой контроль над этапами обработки.

Главное ограничение — отсутствие привычного пользовательского интерфейса. LibRaw не предназначена для человека, который хочет открыть фотографию и двигать ползунки. Она предназначена для тех, кому нужен RAW decoder: разработчиков, технических специалистов, автоматизации, анализа данных, серверной обработки и повторяемой конвертации.

Если нужна художественная проявка, лучше взять RawTherapee, darktable, Lightroom или Capture One. Если нужен управляемый движок для чтения RAW-файлов, анализа, конвертации и интеграции в программу, LibRaw остаётся одним из самых практичных вариантов.


Ваш адрес email не будет опубликован. Обязательные поля помечены *