Как эффективно конвертировать sRGB в CIELAb и CIELab в sRGB?
Я не понимаю, как конвертировать sRGB в CIELab и обратно. Помоги мне, пожалуйста. желательно в коде с++
2 ответа
Преобразование из sRGB в RGB с применением обратной гаммы, преобразование RGB в XYZ с использованием матрицы 3x3, преобразование XYZ в Lab с использованием стандартной формулы и белой точки D6500
Рекомендации:
- Лаборатория http://en.wikipedia.org/wiki/Lab_color_space
- sRBG http://en.wikipedia.org/wiki/SRGB_color_space
Остальное... вы можете сделать самостоятельно:-)
В этом случае я подготовил список ссылок (на разных языках программирования), которые могут быть полезны для процесса преобразования (sRGB в LAB и обратно), а также для преобразования sRGB в линейный RGB. Линейный RGB может в дальнейшем использоваться для баланса белого и цветовой калибровки изображения (при условии цветовой метки, такой как цветовая диаграмма Макбета).
Интересные ссылки:
(i) Понимание sRGB и линейного пространства RGB: http://filmicgames.com/archives/299; http://www.cambridgeincolour.com/tutorials/gamma-correction.htm
(ii) Учебное пособие по MATLAB: https://de.mathworks.com/help/vision/ref/colorspaceconversion.html
(iii) Пакет Python: http://pydoc.net/Python/pwkit/0.2.1/pwkit.colormaps/
(iv) код C: http://svn.int64.org/viewvc/int64/colors/color.c?view=markup
(v) OpenCV не обеспечивает преобразование sRGB в линейное RGB, но выполняет преобразование в коде color.cpp (OpenCV_DIR \ modules \ imgproc \ src \ color.cpp). Проверьте метод с именем initLabTabs (), там есть гамма-кодирование и декодирование. API преобразования цветов OpenCV: http://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html