我试图找出调色板中最接近的颜色,基于像素。调色板减少了(可能有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));
}我的问题是,用绿色,darkRed和蓝色调色板运行它,就像绣球花一样,从窗户的图片样本中,我得到了深红的叶子,而不是绿色。根据原始的图像颜色,从调色板中选择的颜色可能与我们用眼睛感知的颜色不同。
我想改进这个算法..。但是一个不会太慢的发现颜色。
我发现实现CIELab算法是可能的.但我找不到任何细节,只字不提。
我也认为加权距离可能是有益的.但是如何设置权重呢?
我在寻找一个更好的算法来找到最好的颜色..。但这不会对业绩造成太大影响。我希望有人能帮忙?
发布于 2014-08-22 15:30:23
这是所有的转换算法。我想您必须将RGB转换为绝对颜色空间XYZ,然后-转换为CIE La*b*。
下面是的文章解释了色差,以及如何用La*b*值测量色差。
发布于 2022-06-03 19:19:02
我已经编写了一个基于CIEDE2000的命令行工具,它将给出两个24位十六进制值的CIEDE2000距离。它是用C++编写的,代码应该很容易适应。
看一看这里
https://stackoverflow.com/questions/25450115
复制相似问题