LibRaw 0.16 получила статус "Альфа"
- Поддержка новых камер
- Baumer TXG14
- Blackmagic Cinema
- Canon EOS 70D, C500
- Fujifilm X-M1
- Nikon D5200
- Olympus E-P5,E-M1
- OmniVision OV5647 (Raspberry Pi)
- Panasonic LF1, GX7, GF6
- Richon GR
- Samsung NX300, NX1100, NX2000
- Sony RX100II, RX1R, NEX-3N
- Новый код для поддержки Foveon, основанный на библиотеке x3f
(by Roland Karlsson)
BSD-лицензия, поэтому включен в основное дерево исходных текстов LibRaw Отсутствует интерполяция цвета (необходимая для старых камер), поэтому получить приемлемый цвет для старых камер (Sigma SD9 и SD14, Polaroid x530) скорее всего не получится. Для современных Foveon-камер можно пытаться обойтись ICC-профилем (пока его нет).
TODO: извлечение thumbnails, быстрое завершение декодера, переход на LibRaw_memmgr для аллокаций.
При сборке с LIBRAW_DEMOSAIC_PACK_GPL2 будет работать старый Foveon-код (из dcraw) - Изменения в API:
- Новые параметры процессинга (в imgdata.params)
- imgdata.params.no_interpolation - выключает этап интерполяции (дебайера) в вызове LibRaw::dcraw_process().
- imgdata.params.no_auto_scale - выключает этап масштабирования данных (scale_colors() в вызове LibRaw::dcraw_process()
- imgdata.params.sraw_ycc - запрещает преобразование YCbCr-данных файлов Canon sRAW/mRAW в RGB-формат при распаковке (LibRaw::unpack())
- Новый код обработки Fuji X-Trans привносит следующие изменения:
- Для файлов X-Trans значение поля imgdata.iparams.filters теперь равно 9 (было 2).
- В массиве imgdata.iparams.xtrans[6][6] содержится цвет пикселя в блоке 6x6.
- Новый вызов: LibRaw::setCancelFlag() - быстрая остановка декодера (LibRaw::unpack() если он работает. Для использования в многопоточных программах.
- В интерфейсе абстрактного класса LibRaw_abstract_datastream заведующего чтением данных удален вызов make_byte_buffer(), он более не нужен.
- Новый метод демозаики: DHT Demosaic by Anton Petrusevich Использование: imgdata.params.user_qual=11
- Новый метод демозаики: Modified AHD Demosaic by Anton Petrusevich Использование: imgdata.params.user_qual=12
- Новый вызов C-API: libraw_COLOR(libraw_data_t *t, int row,int col) (это LibRaw::COLOR(row,col) для пользователей C-API)
- Новые параметры процессинга (в imgdata.params)
- Удален (более) быстрый декодер LJPEG, идея которого была позаимствованна в свое время в библиотеке RawSpeed. Для быстрого декодирования используйте интеграцию RawSpeed и LibRaw
- Исправлена ошибка декодирования некоторых файлов Canon sRAW.
- Выключена обработка bad pixels встроенная в RawSpeed, при необходимости используется обработка, встроенная в LibRaw.
- Имена камер Canon выдаются по таблице unique ID (т.е. 700D всегда будет 700D, даже если в EXIF написано Rebel T5i)
- Импортированы дополнительные проверки данных из LibRaw 0.15.4
- Поддержка сборки CMake
- Обновлен встроенный cameras.xml (RawSpeed)
Comments
Перешел с 14.7 на новую
Вдруг перешел с 14.7 на новую версию (не меняя код). Изображения стали с пурпурным оттеком и с довольно высокими тенями. Подскажите, куда копать?
П.С.Воркфлоу: open/unpack/raw2image/subtract_black)
"Пурпурный оттенок-высокие
"Пурпурный оттенок-высокие тени" - это признак того, что черный не вычелся
1) Что за камера?
2) уровень черного сами ставите или LibRaw сама считает?
Если можно показать минимальный фрагмент кода, который работал и перестал - было бы вообще клево. Может быть в текущем мастере ошибка, ваш процессинг (unpack-raw2image-subtract_black) нигде у меня не используется.
Камера - 5d mk ii. Собственно
Камера - 5d mk ii. Собственно показать-то и нечего:
if (m_libraw.unpack() == LIBRAW_SUCCESS)
{
m_libraw.raw2image();
if (subtractBlack)
{
m_libraw.subtract_black();
}
...
Далее - нормализация
const unsigned short raw = m_libraw.imgdata.image[i]
Ага, похоже в 0.15 и в 0.16 в
Ага, похоже в 0.15 и в 0.16 в этом месте случился разрыв в логике (т.к. subtract_black() может использоваться и изнутри dcraw_process() - он ожидает что в color.cblack[] не 0, а color.black - не использует вовсе).
Я тогда завтра это место починю.
BTW, есть вызов (как бы внутренний, потому недокументированный) LibRaw::raw2image_ex(int do_subtract_black) который объединяет в одно raw2image, subtract_black и кроппинг. С ним нужно осторожнее т.к. если вы потом, к примеру, будете dark frame вычитать, то вам нужно разделить этапы raw2image и subtract_black. Но если вы ничего такого не делаете, то raw2image_ex() будет банально быстрее чем в два приема.
Спасибо, Алексей. Попробую
Спасибо, Алексей. Попробую raw2image_ex - мне впринципе большего не нужно пока.
Меж тем, раз уж вы дальше
Меж тем, раз уж вы дальше работаете в плавучке, то имеет смысл вычитать уровень черного для кэнонов в плавучке же. Не хотите попробовать?
Ну то есть для целых значений black/cblack это смысла не имеет, но я могу вытащить в структуру LibRaw статистику по маске (сумму черных пикселов по каналам и количество посчитанных), дальше их надо в плавучке поделить и полученное уже вычитать.
Это должно дать чуть лучшие самые глубокие тени (значения 0..3 или даже 0..7)
Могу попробовать, раз я уже
Могу попробовать, раз я уже там
Значит вот:
Значит вот:
1) Вот этот вот патч правит то, что subtract_black не работает: https://github.com/LibRaw/LibRaw/commit/e8c6a3a992b0e0d48834a4a838814622...
2) А вот этот - в imgdata.color.black_stat[8] добавляет статистику по черной маске (актуально для всех Canon и небольшого числа других камер): https://github.com/LibRaw/LibRaw/commit/1bb29f2e67ed8e174232d817585700cc...
Ну и естественно если просто с github сделать git pull, то получите оба патча сразу.
Как работать с black_stat:
вычитание сделал, но, кроме
вычитание сделал, но, кроме небольшого изменения в экспозиции, пока не могу на глаз определить изменение в качестве теней
Ну там максимальная разница с
А еще вопрос по сборке Cmake:
А еще вопрос по сборке Cmake: собирается только shared library. Есть объективные причины против static? :)
Я в CMake вообще ничего не
Если можете сказать что там надо поменять (а еще лучше - фиганете pull request через Github) - буду благодарен.
А почему такое негативное
А почему такое негативное отношение к CMake?
Нет любви.
Пытался использовать (как генератор проектов для Visual Studio/XCode) - резко не понравилось. Много лишнего.
Использую Qmake. Тоже не подарок, но результат устраивает (тем более, софт весь на Qt)
Вот еще вопрос: subtract
Ммм... Я у себя оставил
Ммм... Я у себя оставил raw2image_ex + версию с ручным вычитанием. Попробовал старый вариант - работает тоже
Еще есть ошибочка компиляции
Еще есть ошибочка компиляции под MSVS2010:
dht_demosaic.cpp(350): error C3005: 'collapse' : unexpected token encountered on OpenMP 'parallel for' directive
Поправим. Пока сделайте как
https://github.com/LibRaw