LibRaw

Открытий чудных....

Пару недель назад я уже писал о чУдном EXIF в RAW у Sony A900: в 12-битном линейном режиме в EXIF остается тоновая кривая (которая в этом режиме не нужна/не используется) и уровень черного от cRAW (вчетверо выше правильного).

То есть, если вы хотите брать черный из EXIF (что идеологически правильно: выйдет Sony A901 или там поменяют в firmware что-то - а ваш софт уже готов и работает), то нужно проверить на каком мы свете формат и поделить на 4, если 12-битный линейный.

Вчера выяснилось, что аналогично отличилась и компания Nikon: у D5300 в 12-битном режиме совершенно все так же: уровень черного записан для 14-битного режима, а если файл 12-битный, то надо поделить этот черный на 4.

Но и это не все: у D3300, у которого 14-битного режима вовсе нет, в уровень черного в EXIF опять записан учетверенный вариант. Там написано 600 (для тех файлов, что имею на руках), а правильный - 150.

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

P.S. невольно начинаешь любить DNG.

P.P.S. Вполне возможно, что Nikon, на самом деле, так заботится о нас. Ну то есть D3300 сохраняет совместимость с D5300 в этом месте. Убилбынах.

RawDigger 1.0.1

Вышел RawDigger 1.0.1:
  • Export to TIFF, опция 'Copy EXIF tags from RAW file':
    • При экспорте RGB-рендеринга ставится цветовое пространство sRGB
    • При других типах экспорта данные о цветовом пространстве не копируются.
  • Диалог Selection by numbers:
    • добавлен чекбокс "Center selection on image", если он отмечен, то selection ставится в центре изображения.
    • Mac: исправлена проблема: надпись не помещалась в диалоге.
  • Улучшена обработка регистрационной информации:
    • при вводе лицензионного ключа отбрасываются лишние символы (пробелы, табуляции и т.п.), маленькие буквы меняются на большие.
    • Введенный ключ проверяется на корректность при вводе, в случае некорректного ввода выдается предупреждение.
  • Поддержка камер:
    • уточнены размеры видимой области Nikon Df
    • корректный RGB-рендеринг для Fujifilm X-E2 и XQ1
    • исправлены параметры Bayer Pattern для Canon A3300 (CHDK)
  • Exiftool: обновление до версии 9.43

RawDigger 0.9.20 RC4

Господа фотографы, прежде всего фовеонщики!

Выпущен очередной релиз кандидат RawDigger 0.9.20:

Основное изменение: поддержаны (в LibRaw) уменьшенные варианты RAW камер Sigma DPx Merrill и SD1. Для "среднего" размера, который с точки зрения Сигмы ~3300x2200 показывается его истинный размер (4800x1600), при этом, как и для других форматов с "неквадратными пикселями", RGB-рендеринг выключен.

Помимо этого, исправлена ошибка в разборе выдачи exiftool.

Прочие изменения - это на самом деле изменения в LibRaw:

  • Поддержаны DNG без тега Compression (считаются uncompressed)
  • Поддержаны новые камеры: Panasonic GM1, Sony A7 и A7R (хотя в списке About - Supported Cameras их пока нет, но к релизу будут)

LibRaw 0.16 Alpha2

Тем временем, зарелизилась LibRaw 0.16 Alpha2.

Основные изменения касаются Фовеонов:

  • LibRaw теперь знает размер черной рамки на всех фовеоновских камерах.
  • Для SD1 и всех Merrill-ов есть приемлемый цветовой профиль.
  • Для DPxx (pre-Merrill) цветовой профиль весьма приблизительный.
  • Исправлен memory leak в используемой библиотеке x3f-tools.
Но и для остальных камер произошли заметные изменения:

RawDigger 0.9.20 (RC3)

Граждане фотографы-сигмоводы,

пришло время потестировать очередную вариацию на тему работы с Foveon (других изменений нет):

Изменения:

  • Появился RGB-рендеринг. Достаточно приличный для камер SD1 и DP (и Merrill и нет) и весьма условный для старых камер (SD9-SD15 и Polaroid x530). Для старых камер, собственно, используется профиль от DP-не-Merrill, потому что никаких других данных нету.

    Результаты RGB-рендеринга можно экспортировать, естественно.

  • Появилось знание о координатах черной рамки у всех камер.
  • Для камер на "Merrill-сенсоре" (SD1, DPn-Merrill) уровень черного считается автоматически.

RawDigger 0.9.20 (Release Candidate)

Граждане фотографы,

особенно снабженные камерой с сенсором Foveon (или интересом к таковой камере),

потестируйте пожалуйста RawDigger 0.9.20:

Изменения в этой версии таковы (пишу чуть подробнее, чем в Changelog):

  1. Поддержка Foveon:
    • Поддержан как старый формат файлов (Sigma SD9-SD15, Polaroid x530), так и новый (SD1, DPxx).
    • Файлы с Foveon показываются только в режиме RAW-display (composite и поканально), RGB-рендеринга нет.
    • Все прочие действия с RAW доступны: можно смотреть гистограмму, можно экспортировать CGATS, можно экспортировать сами RAW-данные как TIFF.
  2. Вычитание уровня черного работает и для полноцветных форматов (Foveon, sRAW, Kodak YCC и проч). Для sRAW/Kodak оно было не нужным (оттого и не работало), а вот у Foveon есть желание покрутить черный для проверки качества линеаризации.
  3. Увеличена точность вывода значений с плавающей точкой (и на экран, при показе среднего/сигмы, и в CGATS/CSV файлы). Интересуюсь: не нужно ли эту точность регулировать, вдруг кому надо 10 значащих цифр (float их все едино не даст, но вот вдруг кому надо 7-8).
  4. Из соображений совместимости, работа с RawSpeed отключена на Mac OS X 10.5
  5. Исправлена ошибка: при копировании в clipboard строчки из таблицы Samples программа не падает если цветовых каналов в файле менее 4.

Про Foveon

Привинтив к LibRaw не-GPL-ную поддержку Foveon, я, естественно, тут же собрал RawDigger с ней (публичной версии пока нет, идет внутреннее тестирование) и накормил его самплами с разных камер.

Я никоим образом не претендую на какую-то полноту (за этим, к примеру, вот сюда), мне хотелось составить личное впечатление, насколько это возможно сделать по доступным самплам. Качественно я фовеону уже удивлялся, теперь захотелось удивиться количественно (понятно, я мог поудивляться и пораньше, использовав dcraw -D, но при наличии собственного инструмента лепить что-то из палок и веревок откровенно лень).

В качестве предмета для изучения была взята Sigma SD1 Merill (снимки колорчекера брались с imaging-resource.com), впрочем DP1 Merill выглядит примерно так же.

Перейдем теперь к собственно разжиганию содержательной части.

LibRaw 0.16 (Alpha1)

Мастер-версия LibRaw получила официальный номер 0.16-Alpha1 и доступна для скачивания.

Это означает, что все глобальные идеи по развитию закончились (на ближайшее время) и нестабильности API - не ожидается. Сама по себе 0.16 достаточно стабильна, в RawDigger используется именно эта версия (и всегда используется "девелоперская", а не "стабильная"), проблем не было.

С полным списком изменений относительно версии 0.15 можно ознакомиться в changelog, ниже откомментированы основные места:

RawDigger 0.9.19 RC1

Граждане фотографы!

А потестируйте, кому не лень, RawDigger 0.9.19 уже не надо, вышел релиз.

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

  • Экспорт всех цветовых байеровских RAW-данных в одноканальный (grayscale) TIFF.
    В первую очередь этот режим предназначен для использования с черно-белыми камерами, изготовленными путем смытия светофильтров (maxmax.com и другие).
  • Параметры Selection Grid запоминаются между перезапусками программы.
  • Можно выбрать набор фолдеров, показываемых в левой колонке в диалогах сохранения файлов (экспорт RAW-данных, сохранение таблицы замеров).
    Регулируется через Preferences - Misc Options - Sidebar folders in Save dialogs
    Данная регулировка появилась в связи с жалобами: если запоминать список использованного и в нем окажется медленный или отключенный диск (неработающие сетевые диски и т.п.), то диалог сохранения открывается черезвычайно медленно.
  • Поля CGATS-файлов в которых могут быть пробелы (имя файла, Maker/Model камеры) выводятся в одинарных кавычках
  • Возможен экспорт RAW/RGB данных в Uncompressed TIFF. Для сжатого TIFF улучшено сжатие.
  • При выводе чисел с плавающей точкой везде выводится не менее 4 значащих цифр (исключение: процент пере/недоэкспонированных пикселов, там 3 цифры)
  • Появилась настройка Preferences - Misc Options - Disable check for updates at startup
    Если она включена, RawDigger не обращается к сайту с апдейтами на старте. скрипт noCheckUpdates.reg (.sh в Mac-версии) удален из дистрибутива.
  • Обновлена LibRaw, добавлена поддержка новых камер: Panasonic LF1,GX7, Fujifilm X-M1, Canon EOS 70D, Sony RX100II и RX1R, Olympus E-P5

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

LibRaw 0.15.4

Майская история с уязвимостями в LibRaw получила очень приятное развитие: у меня в почте нарисовался человек из Debian, который не поленился
  • почитать код
  • увидеть там проблемные места
  • сделать "reproducers" т.е. специальным образом поврежденные RAW-файлы (непростое упражнение, заметим)
  • ну и выдать это мне.
В результате, стремные места числом примерно 7, которые проявлялись бы только на поломанных RAW (и не просто поломанных, а должны звезды сойтись) - залечены. Ну и выпущена LibRaw 0.15.4.

Кроме этих проблемных мест, там добавлена поддержка 7 камер (в Changelog они указаны).

Для тех, кому интересно: проблемные места будут полечены и в 0.14, но отдельной версии выпускаться не будет, кто использует 0.14 - берите из гитхабовского репозитория.

Девелоперская версия (master branch) будет полечена тоже, хотя там проблемных мест не 7, а всего 4.

Ожидаемое время лечения 0.14 и master - завтра.

RawDigger 0.9.18 RC1

Граждане фотографы!

А потестируйте пожалуйста Release Candidate следующей версии RawDigger:

Всем спасибо, вышла 0.9.18 без лишних букв.

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

  1. 9 новых камер (см. Changelog)
  2. В CGATS-файлы пишется дополнительная информация (об использованных коэффициентах ББ, о множителе масштабирования, о максимумах данных), сами CGATS-файлы еще более приближены к стандарту.
  3. Можно делать RGB Rendering "как видит камера" (т.е. без наложения камерного профиля, конвертирующего в sRGB)

    Настройка Preferences - Display Options - Display RGB Render in RAW colors

    Если брать какой-то стандартный объект, скажем Color Checker, то чем менее насыщенными будут цвета в этом режиме, тем "шире фильтры". Вероятно, можно придумать какую-то метрику, которая будет это описывать.

    Если вы включите эту галку для 4-канальных не-RGBG RAW, то у вас пропадет RGB-rendering на экране (потому что как на RGB-экране посмотреть CMYG или там RGBE), но результат рендеринга можно будет экспортировать в 4-канальный TIFF и затем рассмотреть его в Фотошопе (который, правда, воспримет этот TIFF как CMYK :).

  4. Canon sRAW-файлы можно рассматривать "как они на самом деле устроены":

    В sRAW записаны данные в формате YCbCr, стандартная процедура декодирования (в LibRaw/RawSpeed) сразу конвертирует их в RGB и всего безумия, которое там творится, не видно.

    В новой версии RawDigger это преобразование можно отключить настройкой:

    Preferences - Data Processing - Show YCbCr data for Canon sRAW files

    И рассмотреть YCbCr данные как они есть.

    Очень поучительное зрелище, отвращает от этого формата надолго.

  5. Экспорт RAW/RGB-render данных в TIFF-файл.

    Menu - File - Export TIFF

    Несмотря на то, что эта штука во многом дублирует имеющиеся в LibRaw утилиты командной строки (dcraw_emu, 4channels, unprocessed_raw), пользоваться ею через GUI оказалось удобно.

На последней штуке остановлюсь подробнее:

Про LibRaw C API

Граждане разработчики!

Кто-то, не помню когда, не помню где (в почте - не нашел!) просил у меня сделать аналог LibRaw::COLOR(row,col) (т.е. номер канала байера у конкретного пиксела) в C-API

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

Я его вам сделал. libraw_COLOR(...). Есть в master (девелоперском) бранче на GitHub.

LibRaw 0.15.1

Вот кто видел версию .0, чтобы сразу работала? Правильно, никто!

LibRaw 0.15.1:

  • Исправлен неверный расчет максимума данных для файлов Panasonic
  • Проверка на выход за пределы буфера в коде коррекции экспозиции

Берут где всегда

LibRaw 0.15.0 Release

LibRaw 0.15 уже давно используется в боевых проектах (скажем, в RawDigger), собственно я ее ради RawDigger и правил на ходу и она всегда была "релизного качества".

Пришла пора эту релизность формально закрепить, а версию 0.14 начать предавать забвению.

Вот наиболее важные изменения, суммированные по всем бетам:

Поддержка новых камер

  • Adobe DNG: поддержка Fast Load DNG (LightRoom 4.x), поддержка lossy-compressed DNG (LR 4.x, необходима сборка с libjpeg 6+)
  • Canon: G1 X, SX220 HS, EOS 5D Mark III, EOS 650D, EOS 1D-X, 100D (Rebel SL1), 700D (Rebel T5i),6D,EOS M,G15, S110, SX50
  • Casio: EX-ZR100,EX-Z8
  • Fujifilm: X-E1,X20, X100S,SL1000, HS50EXR,F800EXR, XF1, X-S1, HS30EXR, X1-Pro
  • Imacon Ixpress 39Mpix: Multishot-файлы
  • Leica: D-LUX6 и V-LUX4
  • Nikon: D4, D3200, D800, D800E,1 J2, 1 V2, D600,1 J3, 1 S1, Coolpix A, Coolpix P330, Coolpix P7700, D7100
  • Olympus: E-M5, XZ-2, XZ-10, E-PL5, E-PM2
  • Panasonic: G5, G6, DMC-GF5, FZ200, GH3, LX7
  • Pentax: MX-1, K-5 II, K-5 IIs, K-30, Q10
  • Samsung: EX2F, NX20, NX210, поддержка нового firmware NX100
  • Sigma: SD15,SD1, SD1 Merill, DP1, DP1S, DP1X, DP2, DP2S, DP2X (только в Demosaic-pack-GPL2)
  • Sony: SLT-A58, RX-1, SLT-A99, NEX-5R, NEX-6, NEX-F3, SLT-A37, SLT-A57

Изменения в API

LibRaw 0.15.0-Beta4

Тем временем вышла LibRaw 0.15 Beta4.

Изменения:

  • Исправлено возможнле переполнение буфера, возникавший при использовании библиотеки RawSpeed для распаковки некоторых форматов файлов (проявилось на Samsung NX-100, но вообще подвержены очень многие некомпрессированные форматы)
  • Добавлены новые методы
    C++ API: LibRaw::recycle_datastream(),
    C API: libraw_recycle_datastream()
    и новый код ошибки LIBRAW_INPUT_CLOSED для вызовов unpack/unpack_thumb()

    Эти методы/вызовы позволяют освободить file handle (и ассоциированные буферы), если ваше приложение больше не собирается вызывать unpack() или unpack_thumb() и, сдедовательно, может разблокировать файл и освободить память, которая использовалась для чтения RAW-файла.

  • Поддержаны Multishot-файлы Imacon Ixpress 39Mpix
Первое изменение - это замазывание ошибки в RawSpeed, за буфер вылазит именно она (а значит надо дать буфер побольше). Это - цена оптимизации, выбирать по k бит и каждый раз проверять не вылезли ли - очень дорого.

Про отладку в Win32/Visual Studio 2010

Вот есть программа, один и тот же бинарник, релизная сборка. У пользователя - падает при некоторых входных данных. Проверяю у себя:

  • Запускаю просто бинарь, подаю проблемные данные - падает.
  • Запускаю тот же самый бинарь (релизный, без пересборки) из Visual Studio (2010) - работает.

Падает оно в buffer overrun, в одном и том же месте (внутри ntdll, а туда попадает из malloc, которому дали неверные данные в результате более раннего overrun).

Вопрос: как такое может быть? Visual Studio при отладке релизных бинарников подпихивает другие DLL? Или вообще что?

Update подниму из комментов эту вот ссылку: http://blogs.msdn.com/b/oldnewthing/archive/2013/01/03/10381959.aspx

В моем случае это оказалось ОНО. Т.е. _NO_DEBUG_HEAP - и сразу счастье. В том смысле, что ошибка появилась и под отладчиком.

RawDigger 0.9.14

Вышел RawDigger 0.9.14. От Release Candidate ничем (кроме номера версии) не отличается. Перепост и распространение - приветствуются.

О процессинге RAW: плавучка или целое

Обработка RAW в плавучке позволяет избавиться от артефактов вылета за диапазон, да и вообще получить более качественную картинку.

Тем интереснее обратные случаи.

Возьмем вот такой вот кадр:

Это D800 с его приколами в светах, вот на света и посмотрим.

Если обработать картинку dcraw (или LibRaw, которая дает побитово такой же процессинг, если автоматическое определение максимума отключить), то в светах в "середине верха кадра" мы увидим такое вот:

LibRaw 0.15.0-Beta2

По традиции, анонсирую LibRaw 0.15-Beta2

Полный changelog доступен у библиотеки в гнезде, а тут я остановлюсь только на самом существенном:

  • Поддержано 20 новых камер:
    • Canon: G15, S110, SX50
    • Fujifilm: F800EXR, XF1
    • Nikon: 1 J2, 1 V2, D600
    • Olympus: E-PL5, E-PM2
    • Panasonic: FZ200, GH3, LX7
    • Pentax: K-5 II, K-5 IIs, K-30, Q10
    • Sony: SLT-A99, NEX-5R, NEX-6
  • RawSpeed может использоваться не только для байеровских данных, но и для полноцветных (3-цветные DNG, sRAW).
    Правда если вы захотите использовать эту фишку, то вам придется запатчить RawSpeed. Тот же патч положен в дистрибутив LibRaw (в каталоге RawSpeed).
    Пользы от RawSpeed достаточно много даже для нежатых DNG: к примеру, 60-мегабайтный 3-цветный нежатый DNG распаковывается за 130мс родным кодом LibRaw и за 70мс - при помощи RawSpeed.
  • В API добавились флажки, позволяющие понять - использовалась ли библиотека RawSpeed, а если да, то к чему это привело.
  • В очередной раз перебраны потроха (интересно только тем, кто в них копается, сам LibRaw API не изменился)
    • В 0.15-Alpha-Beta1 в imgdata.rawdata были два указателя: raw_image указывал на буфер с байеровскими данными, а color_image - на буфер с 4-компонентными RGBG. Ну то есть для байеровских RAW первый был не нулевым, а для полноцветных - второй.

      В Beta2 этот самый color_image ращеплен на два: color3_image ненулевой если в буфере (на который он указывает) лежат 3-компонентные данные, а color4_image - если данные надо рассматривать как 4-компонентные.

    • Введенный в Alpha4 параметр imgdata.sizes.raw_pitch (шаг строк в RAW-буфере) теперь в байтах, а не в пикселях. И один и тот же raw_pitch используется для доступа к imgdata.rawdata.raw_image, color3_image, color4_image
    Кому интересно совсем в деталях - читайте исходник LibRaw::raw2image() и понятно будет все.

Индикация пересветов в RawDigger: версия для Mac и обновление виндовой.

Если кто скачал версию "OE1" из предыдущего поста, то самое время ее стереть и взять новую. Если кто хотел маковскую версию, то вот она: Изменения (в виндовой версии) касаются тех режимов, которые я сам не использую, а потому и не тестировал:
  • На "черной рамке" не рисуется область недодержки.
  • При показе RAW в режиме "1 пиксель на пиксель" (а не размазывание пиксела на 2x2) - нет противного серого фона.

Pages

Subscribe to LibRaw