如何将颜色减少到指定的调色板

时间:2013-01-31 03:34:34

标签: c++ image-processing opencv colors cluster-analysis

我需要解决以下问题:

INPUT:图像IM,调色板PA

输出:IM仅使用PA的颜色

输入图像是RGB格式,但我可以将其转换为HSV。我指定的颜色目标调色板包含:黑色,白色,浅灰色,灰色,深灰色,蓝色,粉红色,红色,紫色,绿色,黄色,棕色,橙色。

我搜索了很多,但我只能找到将图像缩小为最常见的颜色或将其缩小为固定的调色板,如16色EGA图形。

我找到了最好的答案: How do I convert any image to a 4-color paletted image using the Python Imaging Library?

它有一个输入调色板并将图像缩小到该值。在使用C ++的OpenCV中是否有相同的方法?

2 个答案:

答案 0 :(得分:1)

由于您的调色板已修复,因此您需要使用抖动方法(例如Floyd Steinberg dithering)以及适当的颜色相似性度量,例如Lab color space

答案 1 :(得分:1)

假设rgb颜色空间是3D立方体

rgb color space

Palette PA是这个多维数据集中的几个点。因此,我们的问题减少为在3D空间中找到任意给定Palette PA点的rgb点。

我认为更好的解决方案是k-d tree

enter image description here

wiki page结束时,您可以找到几个用于c ++实现的链接