Как создать синтетические мозаичные изображения для тестирования алгоритма демозаики

Я хочу выполнить калибровку цвета моей камеры. Вот почему я ищу алгоритм демозаики, который может обеспечить цвет, наиболее близкий к цвету реального объекта. Вот почему я хочу:

  • создавать синтетические изображения в OpenCV с известными цветами
  • мозаика это
  • передать его в алгоритм оценки эффективности

Я использую libraw для распаковки необработанных изображений и OpenCV для их обработки и хранения.

Итак, вопрос в том, есть ли библиотека, которая может предоставить мне различные алгоритмы демозаики (я готов преобразовать свое синтетическое изображение из Mat в массив в стиле C), где я могу передать свое мозаичное изображение и получить демозаичное изображение. Я думаю, что можно преобразовать мое изображение из tiff в dng и использовать RawTherapee для демозаики, но это выглядит более сложным.

1 ответ

Решение

Я решил эту проблему, используя dng sdk.

Конвейер для использования класса из ссылки в конце ответа находится здесь:

      DngCreator creator;
cv::Mat mosaic = //some method that returns Bayer RGGB mosaic
creator.BuildDngImage(mosaic);
creator.setCameraProfile();
creator.setExifTags();
creator.setXmp();
creator.setMosaicInfo();
creator.WriteDng("output.dng");

Как видно, я использовал opencv для создания мозаичных изображений.

Есть исходный код с классом DngCreator, который пишет простейший dng. Я не создал хороший dng со всеми необходимыми тегами, но RawTherapee успешно удалил мой dng. Ссылка на код: https://pastebin.com/M4GRBfUG

Другие вопросы по тегам