作者:xiaolizi | 来源:互联网 | 2023-05-16 18:41
有三种颜色,color定义(r,g,b)这里r.g,b的范围为0~0xff,#definecolor1(0x60,0x95,0x25)#definecolor2(0x80,
有三种颜色,color定义(r,g,b)这里r.g,b的范围为0~0xff,
#define color1 (0x60,0x95,0x25)
#define color2 (0x80,0x50,0x60)
#define color2 (0x90,0xA0,0x10)
如何判断那两种颜色更加接近呢??
6 个解决方案
用三个分量的差值的平均值
你还可以给这个差值加上权,
R*0.299 + G*0.587 + B*0.114
shunruo大侠的算法是基于亮度的接近程度。你首先要判断你的颜色要基于哪些因素进行判断,你的颜色代表的实际含义的接近是如何表示的?
如果是用的自定义的256调色板,其中两个颜色的基于亮度的话可能很接近,但是实际代表的索引却可能差很多。你需要分析......
回楼上的大哥,,那我想问photoshop或者小画家在把一个256色的位图转换成16色,,他是基于那种参考点,以及实现的思路????
因为我要做个类似的动作,就是把16色转换4色,,需要直观上看上去差不多,,我也是觉得楼兄的比较适当,
shunruo
凤矶
等 级:
发表于:2007-10-31 17:51:131楼 得分:0
用三个分量的差值的平均值
你还可以给这个差值加上权,
R*0.299 + G*0.587 + B*0.114
颜色分量的方差和越小可以简单的认为是越接近。
color 1 r1, g1, b1
color 2 r2, g2, b2
abs( r1 * r1 - r2 * r2 ) * 0.299 + abs( g1 * g1 - g2 * g2 ) + 0.587 + abs( b1 * b1 - b2 * b2 ) + 0.114
如果是基于视觉的话,采用亮度比较接近方法就可以。
jennyvenus大侠的算法更精确,是基于RGB三色坐标系颜色点的接进程度,佩服!
不过,请教下,您的颜色量的方差计算公式,G分量和B分量的系数应该是乘不是加吧?还是我的理解有问题?
应该是乘,那根本不是什么算法,只不过是一种常用的比较方法。