我的情况是我收到了上传的图片,将其调整为小于100乘100,并提取每个像素的颜色。因此,关于压缩图像的所有数据都可以存储在四个变量中:
width
- ( int )图像的整体宽度
height
- ( int )图像的整体高度
colors
- ( Array )具有唯一RGB值的对象数组
pixels
- ( Array )二维数组,索引引用colors
对于我的实现,我想将色彩空间压缩到20种以下的独特颜色。我应该使用什么样的算法来融合并减少像素表达的独特颜色的数量?
我没有这个伪代码,但我认为必须有一些方法来找出二十种最不同的颜色(使用平均值中R,G和B值的最高方差)。然后,我可以将其他颜色分组下的其他颜色分组,并将每组接收的值平均。但是,我不知道如何实现这一点,并对这种方法的有效性持怀疑态度。
想法?
答案 0 :(得分:2)
我同意Jim Mischel的观点。您需要JavaScript库进行颜色量化。
色彩量化是减少数千个图像的过程 或数百万种颜色与较少的颜色(通常为256种)。
您可以使用RgbQuant.js,然后您可以在选项中设置所需的颜色编号。
// options
var opts = {
colors: 256, // desired palette size
//...
};
在实施之前,您可以看到此demo。
答案 1 :(得分:0)
在输入颜色和输出颜色之间的L2范数最小化意义上,K-NN聚类到20个聚类将是最佳的