nra*_*itz 19 javascript algorithm colors palette
我正在编写一个Web应用程序,它采用用户提交的图像,通过canvas元素获取像素数据,进行一些处理,然后使用矢量形状(使用Protovis)渲染图像.它运行良好,但我最终得到了几千种颜色,我想让用户选择目标调色板大小并将调色板缩小到该大小.
在我想减少色彩空间的地方,我正在使用RGB像素数据数组,如下所示:
[[190,197,190], [202,204,200], [207,214,210], [211,214,211], [205,207,207], ...]
Run Code Online (Sandbox Code Playgroud)
我尝试了从颜色中删除最低有效位的天真选项,但结果非常糟糕.我已经对颜色量化算法做了一些研究,但还没有找到如何实现颜色量化算法的清晰描述.我可能会想出一种方法将它发送到服务器,通过图像处理程序运行它,然后发回生成的调色板,但我更喜欢在客户端使用JavaScript.
有没有人有一个明确解释的算法的例子可以在这里工作?目标是将几千种颜色的调色板减少到针对该特定图像优化的较小调色板.
编辑(7/25/11):我采用了@Pointy的建议并在JavaScript中实现了(大部分)Leptonica的MMCQ(修改后的中值切换量化).如果您有兴趣,可以在这里查看代码.
编辑(11年8月5日):该clusterfck库看起来像这另一个伟大的选项(虽然我认为它比我的执行慢一点).