颜色量化算法

时间:2011-08-26 10:34:34

标签: algorithm colors quantization

我正在研究一种颜色量化算法。

这是基本过程:

  • 将图像转换为一组三维向量(例如RGB空间)。
  • 将该集合放入集合列表中。
  • 虽然列表中的集数小于您想要的颜色数:
    • 从列表中删除最差的一组。
    • 将其分成两部分。
    • 在列表中添加两个新集。
  • 完成。

我所说的“最差集合”是指每个向量与平均向量之间的累积距离越大的集合。

这就是我“分裂一套”的方式:

  • 通过添加所有向量并除以向量计数来计算平均向量。
  • 计算由每个向量和平均向量之间的绝对差异组成的向量。归一化它,我们得到了一个平面的法线,它将我们的向量集分成两个相等的一半。
  • 使用此普通法将两组分组,具体取决于向量所属平面的哪一侧。

这基本上可行,但是图像调色板看起来很奇怪,就像从线性渐变中挑选出来一样......

我的算法是否错误?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

问题是你的算法在初始集上依赖很多。因为您只拆分集,如果两个彼此非常接近的点恰好在开头处于不同的集合中,则它们将始终处于不同的集合中。这不好。

所以是的 - 这比k-means算法更糟糕。

答案 1 :(得分:1)

我没有看到这比k-means算法更好。也许你应该只做普通的k-means。

答案 2 :(得分:1)

颜色量化的第一步是从N种颜色中选择代表性的K颜色 然而,对于具有如此多颜色的图像,一些渐变/条带问题是不可避免的 然后误差扩散和抖动通过使用可用颜色近似不可用的颜色,通过混合和匹配可用颜色以模仿不可用的颜色来实现。

Top 6 color quantization algorithms

这里有一些输出示例:

原始图片:
Original image
NeuQuant神经网络量化算法减少到256色:
Reduced to 256 colors by NeuQuant Neural-Net Quantization Algorithm
Xialoin Wu的快速最佳色彩量化算法降低到256色:
Reduced to 256 colors by Xialoin Wu's fast optimal color Quantization Algorithm

原始照片:
Original photo
NeuQuant神经网络量化算法减少到256色: Reduced to 256 colors by NeuQuant Neural-Net Quantization Algorithm
通过成对最近邻量化算法减少到256色: Reduced to 256 colors by Pairwise Nearest Neighbor Quantization Algorithm

读者可以看到误差扩散的编码和抖动在前5种颜色量化算法中非常相似。
每种算法都有自己的优点。我分享了颜色量化的来源,以便进一步讨论和改进 这些源代码是用C ++编写的,以获得最佳性能。 它也是学习机器学习的开端。