一、前言
最近业务需要,要将一个 RGB 色彩空间的颜色,转化到 LCH 色彩空间,生成渐变色,再转回 RGB 色彩空间。查遍网上,只有 Matlab 写的转换代码。没有 RGB 与 LCH 互转的 PYTHON 代码,所以自己手撸了一个放上来。需要用 PYTHON 实现转换的同学可以自取。
二、原理公式
RGB 到 LCH 的转换过程,首先需要将 RGB 转换到 XYZ 空间,再将 XYZ 转换到 LAB 空间,最后再将 LAB 转换为 LCH 空间 。LCH 转回 RGB 的过程也一样,需要从 LCH 到 LAB 到 XYZ 到 RGB。
具体的转换原理及公式都在 这里,就不一一介绍了,其中 RGB 与 LAB 互转的部分是翻译这一篇博客的cpp代码,LAB 与 LCH 互转的代码是翻译这里的 js 代码。好了直接来看代码吧。
三、代码
import math
def rgb2xyz(color):
r, g, b = color
x = 0.412453 * r + 0.357580 * g + 0.180423 * b
y = 0.212671 * r