Libraw делает мои изображения слишком яркими по сравнению с собственным конвертером nikons

Кажется, что собственный инструмент nikons и фотошоп имеют возможность открыть изображение, как оно было снято.

но с использованием процессора libraws dcraw я не могу понять это.

вот моя реализация.

CV_EXPORTS_W int load_image(const char * path, cv::Mat & output)
{


    LibRaw RawProcessor;

    int ret;

#define imgD RawProcessor.imgdata

    imgD.params.use_camera_wb = 1;
    imgD.params.use_auto_wb = 0;

    if ((ret = RawProcessor.open_file(path)) != LIBRAW_SUCCESS)
    {
        fprintf(stderr, path, libraw_strerror(ret));
        return -1;
    }
    if ((ret = RawProcessor.unpack()) != LIBRAW_SUCCESS)
    {

        return -1;
    }

    int check = RawProcessor.dcraw_process();
    libraw_processed_image_t *image_ptr = RawProcessor.dcraw_make_mem_image(&check);

    output = cv::Mat(cv::Size(image_ptr->width, image_ptr->height), CV_8UC3, image_ptr->data, cv::Mat::AUTO_STEP);
    cv::cvtColor(output, output, 4);
}

Обновлен с изображением, чтобы показать, о чем я говорю: изображения как-то нормализуются. Если исходное изображение содержит большую область светлого матриала, общее изображение становится более темным. Я хочу иметь возможность просто читать необработанные данные изображений и нормализовать или обрабатывать их по-своему в opencv.

Обновить

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

Изображение слева - результат libraw, а справа - viewnx. Кажется, что в изображении libraw есть некоторые цвета шума.

1 ответ

Решение

Необработанные данные хранятся в массиве LibRaw::rawdata.raw_image[]. Эти значения "максимально возможны" без чёрного вычитания и / или де-байеровской (демозаики).

Для доступа к этим данным вам нужно вызвать LibRaw::open_file() и LibRaw::unpack.

Также вы можете исключить некоторые шаги из обработки данных в LibRaw::dcraw_process():

 imgdata.params.no_interpolation=1 disables demosaic
 imgdata.params.no_auto_scale=1 disables scaling from camera maximum to 64k
 imgdata.params.no_auto_bright=1 disables auto brighten
Другие вопросы по тегам