Как создать синтетические мозаичные изображения для тестирования алгоритма демозаики
Я хочу выполнить калибровку цвета моей камеры. Вот почему я ищу алгоритм демозаики, который может обеспечить цвет, наиболее близкий к цвету реального объекта. Вот почему я хочу:
- создавать синтетические изображения в 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