.NET中的彩色图像量化

我想减少c#中位图的唯一颜色数量。

我想这样做的原因是,最初使用三种颜色但由于许多因素(包括压缩)而创建的图像现在具有三种以上的颜色(即相邻像素相互影响)

知道如何做到这一点?

解决方案可能是将整个位图从RGB转换为索引颜色系统或某些可应用于单个像素的函数。

任何GDI +或Emgu(opencv)解决方案对我都有好处。

在http://nquant.codeplex.com上查看nQuant。 这比Magnus引用的MSDN文章中的代码质量高得多。 它还需要考虑Alpha层,而msdn文章仅评估RGB。 源代码可用,并附有一篇博文 ,详细讨论了代码和算法。

有一篇关于msdn的文章称为优化ASP.NET图像的颜色量化可能对你有帮助,它有很好的示例代码 。