使用阈值查找相似的十六进制颜色

6

我有一组RGB十六进制颜色数组。

我想快速且简易地通过颜色相似度和阈值将它们分组。

规范: enter image description here


请访问以下链接以获取有关颜色量化的信息:http://en.wikipedia.org/wiki/Color_quantization。或者您可以尝试使用http://www.php.net/manual/en/function.imagetruecolortopalette.php 进行操作。 - biziclop
我建议您使用HSV模型,这样您就可以比较多种颜色的色调、饱和度和亮度。 - TheZ
2个回答

3

简单粗暴:

$dr = $red1   - $red2;
$dg = $green1 - $green2;
$db = $blue1  - $blue2;
$fr = 2; // may be adjusted
$fg = 4; // "
$fb = 1; // "
$distance_squared = $fr * $dr * $dr + $fg * $dg * $dg + $fb * $db * $db;

您可以比较$distance_squared和阈值的平方。这些因素可以调整(尤其是蓝色可能会得到更高的因素),以及它们的总和(为了与阈值相匹配)。
对于“慢而干净”的解决方案,我建议从这里开始(以及这里,以获得更实用的方法)。

1
选择一个颜色空间,并将“相似性”定义为两种颜色坐标之间的欧几里得距离。例如,HSL/HSV可能比RGB更好。

是的,我也想到了这一点。只是在找一个公式,如果有人手头方便的话;-) - Arturino
@Artur:公式是用来做什么的?例如,HSV 的转换公式已在维基百科文章中给出。欧几里得距离简单地为sqrt((a1-a2)^2 + (b1-b2)^2 + (c1-c2)^2)。 - Oliver Charlesworth
1
谢谢 - 我也发现这个链接有帮助:https://dev59.com/THI-5IYBdhLWcg3w3crS#1634206 - Arturino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接