Сжимает по нужной кривой - хоть фотошоп. Формат файлов кривой - известен. Там 8-битная точность (256 точек), но интерполяция вполне разумная. Можно еще - текстовый редактор в руки и приделать нужную функциональность к ImageMagick, но надо программировать.
1) Баланс белого делается до интерполяции
2) В "великом dcraw" алгоритмы открытые (в исходных текстах) можно менять на свои
3) Если описанные выше пути не подходят, собственно пересчет - очень простая задача. Визуализация, интерфейс - гораздо больше возни.
таблицы в dcraw - там внутри все линейное, пересчет по таблицам делается при 8-битном выводе. Генерирует гамма-таблицы функция gamma_lut(), ее можно заменить на свою (например, грузящую из файла).
В LibRaw это место уже 16-битное, можно мучать ее исходники (вместо dcraw будет dcraw_emu -1 -4 для получения 'gamma-corrected' 16-битной картинки)
Сжимает по нужной кривой - хоть фотошоп. Формат файлов кривой - известен. Там 8-битная точность (256 точек), но интерполяция вполне разумная. Можно еще - текстовый редактор в руки и приделать нужную функциональность к ImageMagick, но надо программировать.
1) Баланс белого делается до интерполяции
2) В "великом dcraw" алгоритмы открытые (в исходных текстах) можно менять на свои
3) Если описанные выше пути не подходят, собственно пересчет - очень простая задача. Визуализация, интерфейс - гораздо больше возни.
таблицы в dcraw - там внутри все линейное, пересчет по таблицам делается при 8-битном выводе. Генерирует гамма-таблицы функция gamma_lut(), ее можно заменить на свою (например, грузящую из файла).
В LibRaw это место уже 16-битное, можно мучать ее исходники (вместо dcraw будет dcraw_emu -1 -4 для получения 'gamma-corrected' 16-битной картинки)