gpt4 book ai didi

image-processing - 如何将 RGB 或 HEX 颜色代码分组为更大的颜色组?

转载 作者:行者123 更新时间:2023-12-05 01:34:11 25 4
gpt4 key购买 nike

我正在分析大量图像并提取主要颜色代码。

我想将它们分组为通用颜色名称的范围,例如绿色、深绿色、浅绿色、蓝色、深蓝色、浅蓝色等。

我正在寻找一种与语言无关的方式来自己实现一些东西,如果有我可以研究的例子来实现这一点,我将不胜感激。

最佳答案

在机器学习领域,你想做的事情叫做classification ,其中的目标是将其中一个类别(颜色)的标签分配给每个观察结果(图像)。为此,必须预先定义类。假设这些是我们要分配给图像的颜色:

enter image description here

要确定图像的主色,必须计算每个像素与表格中所有颜色之间的距离。请注意,此距离是在 RGB 颜色空间中计算的。要计算图像的第 ij 个像素与表格的第 k 个颜色之间的距离,可以使用以下等式:

d_ijk = sqrt((r_ij-r_k)^2+(g_ij-g_k)^2+(b_ij-b_k)^2)

在下一步中,对于每个像素,选择表中最接近的颜色。这是用于使用 indexed colors 压缩图像的概念。 (除了这里的调色板对于所有图像都是相同的,并且不会为每个图像计算以最小化原始图像和索引图像之间的差异)。现在,正如@jairoar 指出的那样,我们可以获得图像的直方图(不要与 RGB 直方图或强度直方图混淆),并确定重复次数最多的颜色。
为了展示这些步骤的结果,我使用了这件艺术品的随机裁剪!我的:

enter image description here
这是图像在索引之前和之后的样子(左:原始,右:索引): enter image description here这些是最重复的颜色(左:索引,右:主色): enter image description here

但是既然你说图片数量多,你应该知道这些计算是比较耗时的。但好消息是,有一些方法可以提高性能。例如,而不是使用 Euclidean distance (上面的公式),您可以使用 City BlockChebyshev距离。您还可以只计算一小部分像素的距离,而不是计算图像中所有像素的距离。为此,您可以先将图像缩放到更小的尺寸(例如,32 x 32),然后对缩小后的图像的像素进行计算。如果您决定调整图像大小,请不要费心使用双线性或双三次插值,它不值得进行额外的计算。相反,去寻找 nearest neighbor ,它实际上执行了一个 rectangular lattice在原始图像上采样。 enter image description here

虽然上述更改会大大提高计算速度,但没有免费的东西。这是性能与准确性的权衡。例如,在前面两张图片中,我们看到最初识别为橙色(代码 20)的图像在调整大小后已被识别为粉红色(代码 26)。
要确定算法的参数(距离测量、缩小图像尺寸和缩放算法),您必须首先以尽可能高的精度对大量图像进行分类操作,并将结果作为 ground truth。然后,通过多次实验,得到不使分类误差超过最大可容忍值的参数组合。

关于image-processing - 如何将 RGB 或 HEX 颜色代码分组为更大的颜色组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63994269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com