Как эффективно конвертировать sRGB в CIELAb и CIELab в sRGB?

Я не понимаю, как конвертировать sRGB в CIELab и обратно. Помоги мне, пожалуйста. желательно в коде с++

2 ответа

Решение

Преобразование из sRGB в RGB с применением обратной гаммы, преобразование RGB в XYZ с использованием матрицы 3x3, преобразование XYZ в Lab с использованием стандартной формулы и белой точки D6500

Рекомендации:

Остальное... вы можете сделать самостоятельно:-)

В этом случае я подготовил список ссылок (на разных языках программирования), которые могут быть полезны для процесса преобразования (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

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