首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript中色彩量化/还原图像调色板的算法?

JavaScript中色彩量化/还原图像调色板的算法?
EN

Stack Overflow用户
提问于 2011-06-02 02:29:06
回答 1查看 11.2K关注 0票数 19

我正在编写一个web应用程序,它接受用户提交的图像,通过canvas元素获取像素数据,进行一些处理,然后使用矢量形状(使用Protovis)呈现图像。它工作得很好,但我最终得到了几千种颜色,我想让用户选择一个目标调色板大小,并将调色板缩小到那个大小。

在我想要减少颜色空间的时候,我正在处理一个RGB像素数据数组,如下所示:

代码语言:javascript
复制
[[190,197,190], [202,204,200], [207,214,210], [211,214,211], [205,207,207], ...]

我尝试了天真的选择,只从颜色中删除最低有效位,但结果相当糟糕。我已经做了一些关于color quantization算法的研究,但是还没有找到一个关于如何实现的明确描述。我可能会想出一种简单的方法将其发送到服务器,通过图像处理程序运行它,然后将生成的调色板发回,但我更喜欢在客户端用JavaScript来做这件事。

有没有人有一个清楚解释的算法的例子可以在这里工作?其目标是将数千种颜色的调色板减少为针对此特定图像优化的较小调色板。

编辑(7/25/11):我采纳了@Pointy的建议,并在JavaScript中实现了(大部分)Leptonica的MMCQ (改进的中值切割量化)。如果你感兴趣,你可以通过see the code here.

编辑(8/5/11): clusterfck library看起来是另一个很好的选择(尽管我认为它比我的实现慢一点)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-02 03:36:30

有一点需要注意的是,我在任何图像处理领域都没有任何专业知识:我仔细阅读了您链接的维基百科文章,从中找到了Dan Bloomberg的Leptonica。在那里,您可以对所讨论和解释的算法的源代码进行download

源代码是用C语言编写的,希望它足够接近JavaScript (至少在核心的“公式”部分),以便理解。"MMCQ“算法背后的基本思想看起来并不太复杂。它实际上只是一些启发式的技巧,根据图像中颜色聚集在一起的方式将三维颜色空间划分为子立方体。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6205955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档