1.计算两个颜色相似度的公式如下:
颜色QColor1(R1, G1, B1)转成h1,s1,v1
颜色QColor2(R2, G2, B2)转成h2,s2,v2
detah=h1-h2
detas=s1-s2
detav=v1-v2
len = qsrt(detah * detah + detas * detas + detav * detav)
if (len > 1) len = 1.0
similarity = (1.0 - len) / 1.0
注:以上公式的h,s,v已经归一化
2.颜色相似度原理。
把RGB颜色空间转为归一化的hsv颜色空间, 转化hsv颜色空间的三维坐标点,
计算两个颜色的三维空间坐标点的距离,当两个颜色越相近,则两个颜色的
坐标距离越接近于0, 反之,当两个颜色相差越远,则坐标距离越接近于1。
注:此处两个颜色相差最大的距离默认为1,理论上最大的距离是会超过1的, 从
hsv颜色空间模型可以看出, 此算法默认大于1的颜色取为1。
3.计算QColor1和QColor2颜色相似度的算法步骤如下:
3.1、把QColor1转为归一化的h1、s1、v1,把QColor2转为归一化的h2、s2、v2。
3.2、h在hsv颜色空间中是角度, 把hsv转为三维空间坐标点(x, y, z)
x1 = cos(h1) * s1
y1 = sin(h1) * s1