现在我进行中的程度就是利用R,G,B这三种颜色来判断,如果在某个值的范围内可以视为相近,但是匹配度不是很高,搜了两天论坛上的讨论,也提取了他们的一些方法但都不是很理想,有人说把RGB转换成HSL来计算能简单点,所以想问问各位有没有利用HSL来计算相近颜色的算法呢?(RGB转HSL已经搞定了)。谢谢了^_^

解决方案 »

  1.   

    如果对比两张不相同环境光下拍摄的图片,只比较色调(Hue)和饱和度(Saturation)比较有意义,因为亮度可能不一致。
    但在大部分情况下比较RGB已经很好用了。
      

  2.   

    gomoku的说法不是我的本意,我的意思是指用一个已知的颜色 来判断,比如红色,比如HEX码为:#FF0000那么我想#FF0011这样的颜色也能被识别为红色!
      

  3.   

    你有什么特殊原因要从RGB转到HSI空间吗?
        Color a = ...
        Color b = ...    int diff = Math.Abs(a.R - b.R) + Math.Abs(a.G - b.G) + Math.Abs(a.B - a.B);
        if (diff < 30)        // 自己定的一个门槛值
        {
            //...
        }
      

  4.   

    gomoku谢谢你的回复,你的取差值的方法就是我现在在用的方法,就是感觉匹配度不是很高,我在PS中弄了几个颜色的渐变,HSL的两个相近的颜色的值也很相近不像RGB相差那么远,所以想知道利用HSL有没有什么好的算法来判断!
      

  5.   

    颜色,本来就有人的主观感觉的因素在内。
    颜色匹配度,从不同的应用出发可以有不同的判定。我在2楼讲在一些特定情况下HSI可以更有效的例子。
    如果是通用的比较,RGB空间能差到哪去呢?
      

  6.   

    还是按老办法吧,谢谢gomoku的热情!