找到两个像素颜色之间的“距离”

时间:2010-04-14 03:40:11

标签: c++

更多的事情相对简单,但对于他们想要的东西感到困惑。

在笛卡尔坐标系上求距离的方法是 距离= sqrt [(x2-x1)^ 2 +(y2-y1)^ 2]

但我如何在这里申请?

    //Requires: testColor to be a valid Color
    //Effects: returns the "distance" between the current Pixel's color and  
    //         the passed color
    //         uses the standard method to calculate "distance"
    //         uses the same formula as finding distance on a
    //         Cartesian coordinate system
    double colorDistance(Color testColor) const;

颜色类定义了颜色: int红色,绿色,蓝色

我是否定义了类似'oldGreen''oldRed''oldblue'的东西,并获得那种距离?通过的颜色是红色,绿色,蓝色?

http://pastebin.com/v9K30dc7

2 个答案:

答案 0 :(得分:6)

我猜他们希望你使用:

distance = sqrt[(r2-r1)^2 + (g2-g1)^2 + (b2-b1)^2]

答案 1 :(得分:2)

将颜色分解为红绿蓝组件,并使用相同的方法,即sqrt(sqr(delta red)+ sqr(delta blue)+ sqr(delta green))

请注意,这不是一个非常好的方法,因为它不允许伽玛甚至更复杂的人类感知情况。阅读http://en.wikipedia.org/wiki/Color_difference了解更多奇特的方法。