gpt4 book ai didi

opencv - 如何加快openCV中的颜色聚类?

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:19 27 4
gpt4 key购买 nike

对于一个项目,我想实现一种颜色聚类算法,该算法将相似的颜色替换为聚类的平均颜色。

目前,我使用 kmeans 算法对整个图像进行聚类。但这需要很长时间。有人知道如何使用 kmeans 对颜色直方图进行聚类,以便我可以执行该算法吗?

最佳答案

首先对图像进行下采样,然后运行 ​​k-means。

如果您将图像在 x 和 y 方向的大小都调整为 1/2,它应该不会对颜色产生太大影响,但 k-means 应该最多花费 1/4 的时间。如果您重新采样到宽度和高度的 1/10,k-means 的运行速度应该快 100 倍。

https://en.wikipedia.org/wiki/Color_quantization

通过对图像进行下采样,您可以在聚类过程中处理更少的“像素”。但最终,它应该会产生大致相同的配色方案。

k 的小总结-means:

  1. 它将每个对象(=像素)映射到最近的聚类中心(=调色板条目)
  2. 它重新计算每个调色板条目以最好地表示分配的点(= 像素)
  3. 重复直到不再有任何变化。

所以真实输出不是图像或图像区域。这是调色板

然后您可以映射任意图像(包括全分辨率版本)到这个调色板,只需用最接近的颜色替换每个像素!

复杂性和性能:

k-means 的复杂度是 O(n*k*i),其中 n 是你拥有的像素的数量, k 所需的输出颜色数和 i 收敛所需的迭代次数。

n:通过下采样,您可以轻松减少最大的因素n。在许多情况下,您可以在看到性能下降之前显着减少它。

k:这是您想要的输出颜色数。是否可以减少它取决于您的实际用例。

i:各种因素都会对收敛产生影响(包括其他两个因素!),但最强的可能是具有良好的起始值。因此,如果您有非常快但质量较低的方法来选择调色板,请先运行它,然后使用 k-means 优化此调色板。也许 OpenCV 已经为此包含了适当的启发式算法!

你可以看到,最简单的方法是减少n。您可以显着减少n,为缩略图生成优化的调色板,然后重新运行 k-means 在整个图像上精炼 这个调色板。因为 - 希望 - 这会显着减少迭代次数,所以有时会表现得很好。

关于opencv - 如何加快openCV中的颜色聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13613573/

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