通过算法选择与其背景形成对比的颜色

计算科学 算法 图像处理
2021-12-12 03:37:23

我正在尝试编写颜色量化算法的实现,以便找到图像的主色(比如 5),然后根据图像中找到的颜色找到对比色。

我尝试过实现 k-means 算法,但结果每次都不同。

你有什么建议?我主要需要颜色分割方面的帮助。你建议什么算法/方法?我可以自己挑选对比色。

我能够在每个像素的基础上迭代图像的各个 rgb 值。

旁注:我使用的语言是客观的 C,所以没有库(我知道)可以执行此任务。

我如何使用 K-Means 算法:

  1. 创建具有 R、G、B 值的像素数组。
  2. 选择 5 个随机像素作为簇 (c)
  3. 使用 3d 距离方程将每个像素分配给 3 维空间中最近的 c
  4. 将集群位置 (c) 更改为其分配点的 r、g 和 b 值的平均值
  5. 重复步骤 3&4 一段时间
2个回答

RGB 距离根本不接近色差(但不要被那里的公式推迟)。
基本上你想将你的 RGB 三元组转换为Lab color space,并在那里使用距离:

def rgb_deltae76( rgb, rgb2 ):
    return distance( rgb_lab(rgb), rgb_lab(rgb2) )

rgb_lab是几页Python,有人必须有目标C的代码;
试试https://stackoverflow.com/questions/tagged/colors

补充:这个注释给出了近似值 3(RR)2+4(GG)2+2(BB)2
和另一个更好的。另请
参阅Munsell 颜色系统Triplecode.com/munsell:“Munsell
系统不同,因为它基于人们感知颜色的方式。”

您可以将 RGB 颜色转换为其他颜色符号,例如HSV吗?H是颜色,可以是径向测量值(0 -360 度)或某个值。然后使用使与您拥有的颜色的距离最大化的值。