压缩像素集的图像颜色空间

时间:2018-04-11 04:10:13

标签: javascript image algorithm colors compression

我的情况是我收到了上传的图片,将其调整为小于100乘100,并提取每个像素的颜色。因此,关于压缩图像的所有数据都可以存储在四个变量中:

width - ( int )图像的整体宽度

height - ( int )图像的整体高度

colors - ( Array )具有唯一RGB值的对象数组

pixels - ( Array )二维数组,索引引用colors

对于我的实现,我想将色彩空间压缩到20种以下的独特颜色。我应该使用什么样的算法来融合并减少像素表达的独特颜色的数量?

我没有这个伪代码,但我认为必须有一些方法来找出二十种最不同的颜色(使用平均值中R,G和B值的最高方差)。然后,我可以将其他颜色分组下的其他颜色分组,并将每组接收的值平均。但是,我不知道如何实现这一点,并对这种方法的有效性持怀疑态度。

想法?

2 个答案:

答案 0 :(得分:2)

我同意Jim Mischel的观点。您需要JavaScript库进行颜色量化。

  

色彩量化是减少数千个图像的过程   或数百万种颜色与较少的颜色(通常为256种)。

您可以使用RgbQuant.js,然后您可以在选项中设置所需的颜色编号。

// options
var opts = {
    colors: 256, // desired palette size
    //...
};

在实施之前,您可以看到此demo

答案 1 :(得分:0)

在输入颜色和输出颜色之间的L2范数最小化意义上,K-NN聚类到20个聚类将是最佳的