我试图根据像素找到调色板中最接近的颜色。调色板减少(可能有3-4种颜色)。我正在使用高斯距离(语言没关系)
double colorRGBEuclideanDistance(const QColor& c1, const QColor& c2)
{
return sqrt(pow(c1.red()-c2.red(), 2) +
pow(c1.green()-c2.green(), 2) +
pow(c1.blue()-c2.blue(), 2));
}
我遇到的问题是,在窗口中的样本图片中,像绣球花这样的图像上运行绿色,深红色和蓝色调色板,我得到深红色的叶子而不是绿色。基于原始图像颜色,从调色板中拾取的颜色通常可能与我们用眼睛看到的颜色不同。
我希望对这种算法有所改进......但是这种算法不会减慢太多的速度。
我看到可以实现一个CIELab算法......但我找不到任何细节,只提一下。
我还认为加权距离可能是有益的......但是如何设置权重?
我正在寻找一种更好的算法来找到最好的颜色......但这些东西不会对性能产生太大影响。我希望有人可以提供帮助吗?
答案 0 :(得分:1)
Here is所有转化算法。我认为你必须将RGB转换为绝对色彩空间XYZ,然后 - 转换为CIE La * b *
And here is文章解释色差以及如何使用La * b *值来衡量它。