Я не понимаю, как преобразовать sRGB в CIELab и обратно. Помоги мне, пожалуйста. желательно в коде С++
Как эффективно конвертировать sRGB в CIELAB и CIELab в sRGB?
Ответы (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 можно дополнительно использовать для баланса белого и калибровки цвета изображения (предоставляется цветовая палитра, например цветовая диаграмма Macbeth).
Интересные ссылки:
(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