首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何比较两种颜色的相似性/差异性

如何比较两种颜色的相似性/差异性
EN

Stack Overflow用户
提问于 2012-01-26 20:20:01
回答 13查看 148.2K关注 0票数 204

我想设计一个程序,可以帮助我评估5种预定义的颜色中,哪一种更类似于可变颜色,以及百分比。问题是,我不知道如何一步一步地手动完成。所以想出一个程序就更难了。

更多细节:颜色来自不同颜色的管与凝胶的照片。我有5个不同颜色的管子,每个都代表5个级别中的1个。我想拍摄其他样本的照片,并在计算机上通过比较颜色来评估该样本属于哪个级别,我也想知道近似值的百分比。我想要一个这样的程序:http://www.colortools.net/color_matcher.html

如果你能告诉我要采取什么步骤,即使这些是我需要手动思考和做的事情。这将是非常有用的。

EN

回答 13

Stack Overflow用户

发布于 2012-01-26 20:33:02

这只是我第一次想到的一个想法(如果愚蠢的话,很抱歉)。颜色的三个分量可以假设为点的三维坐标,然后您可以计算点之间的距离。

F.E.

代码语言:javascript
复制
Point1 has R1 G1 B1
Point2 has R2 G2 B2

颜色之间的距离是

代码语言:javascript
复制
d=sqrt((r2-r1)^2+(g2-g1)^2+(b2-b1)^2)

百分比为

代码语言:javascript
复制
p=d/sqrt((255)^2+(255)^2+(255)^2)
票数 55
EN

Stack Overflow用户

发布于 2012-02-01 03:19:01

实际上,几个月前我也走过同样的路。这个问题没有完美的答案(被here问了几次),但有一个比sqrt(r-r)等答案更复杂,更容易用RGB直接实现,而不是转移到所有种类的交替色彩空间。我找到了这个公式here,它是相当复杂的真实formula的低成本近似值(通过CIE,这是颜色的W3C,因为这是一个未完成的探索,你可以在那里找到更旧和更简单的色差方程)。祝好运。

编辑:对于后人,以下是相关的C代码:

代码语言:javascript
复制
typedef struct {
     unsigned char r, g, b;
} RGB;

double ColourDistance(RGB e1, RGB e2)
{
    long rmean = ( (long)e1.r + (long)e2.r ) / 2;
    long r = (long)e1.r - (long)e2.r;
    long g = (long)e1.g - (long)e2.g;
    long b = (long)e1.b - (long)e2.b;
    return sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8));
}
票数 35
EN

Stack Overflow用户

发布于 2012-01-26 20:28:57

如果您有两个Color对象c1c2,则可以将c1的每个RGB值与c2的RGB值进行比较。

代码语言:javascript
复制
int diffRed   = Math.abs(c1.getRed()   - c2.getRed());
int diffGreen = Math.abs(c1.getGreen() - c2.getGreen());
int diffBlue  = Math.abs(c1.getBlue()  - c2.getBlue());

这些值可以除以差值饱和度(255),就可以得到两者之间的差值。

代码语言:javascript
复制
float pctDiffRed   = (float)diffRed   / 255;
float pctDiffGreen = (float)diffGreen / 255;
float pctDiffBlue   = (float)diffBlue  / 255;

然后你就可以找到平均色差的百分比了。

代码语言:javascript
复制
(pctDiffRed + pctDiffGreen + pctDiffBlue) / 3 * 100

这会给出c1c2之间的百分比差异。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9018016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档