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

Ken*_*but 5 c++ opencv cluster-analysis colors image-processing

我需要解决以下问题:

输入:图像 IM,调色板 PA

OUTPUT: IM 只有 PA 的颜色

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

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

我找到了最好的答案: 如何使用 Python 成像库将任何图像转换为 4 色调色板图像?

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

Ano*_*sse 1

由于您的调色板是固定的,因此您需要使用抖动方法(例如Floyd Steinberg 抖动)以及适当的颜色相似性度量(例如在Lab 颜色空间中)。