【问题标题】:iPhone colour Image analysisiPhone彩色图像分析
【发布时间】:2011-11-07 01:16:15
【问题描述】:

我正在寻找一些关于一种方法的想法,该方法可以让我分析图像,并确定它是绿色、棕色或白色的……我在这里强调 ISH,因为我有兴趣捕捉这些图像的所有阴影颜色。到目前为止,我做了以下工作:

我有我的 UIImage,我有 CGImageRef,我实际上有像素本身的颜色(它是 RGB 和 Alpha),我不知道如何量化它,并确定所有绿色阴影、蓝色、棕色,黄色,紫色等...所以,我可以处理每个像素,确定它是基本的 RGB,但我需要一些帮助来量化它在整个图像上的颜色。

感谢您的想法... 亚历克斯。

【问题讨论】:

    标签: iphone ios image colors


    【解决方案1】:

    一个相当好的解决方案是从 RGB 颜色空间切换到 Y 颜色空间之一,例如 YUV、YCrCb 或其中任何一种。在所有情况下,Y 通道代表亮度,其他两个通道一起代表相对于亮度的颜色。您可能想要排除亮度因素,可能需要注意的是,低于特定暗度的所有颜色都将被排除在外,因此单独获取 Y 本身就是一个有用的第一步。

    通过简单的线性组合实现从 RGB 到 YUV 的转换。直接来自维基百科和其他一千个来源:

    y = 0.299*r + 0.587*g + 0.114*b;
    u = -0.14713*r - 0.28886*g + 0.436*b;
    v = 0.615*r - 0.51499*g - 0.10001*b;
    

    假设您将 r、g 和 b 保持在 [0, 1] 范围内,您的第一个测试可能是:

    if(y < 0.05)
    {
        // this colour is very dark, so it's considered to be as
        // far as we allow from any colour we're interested in
    }
    

    要确定您的颜色与绿色的接近程度,请计算出您感兴趣的绿色的 u 和 v 分量,作为 y 的比例:

    r = b = 0;
    g = 0;
    
    y = 0.299*r + 0.587*g + 0.114*b = 0.587;
    
    u = -0.14713*r - 0.28886*g + 0.436*b = -0.28886;
    v = 0.615*r - 0.51499*g - 0.10001*b  = -0.51499;
    
    proportionOfU = u / y = -2.0479;
    proportionOfV = v / y = -0.8773;
    

    随后,计算并比较输入颜色的 U 和 V 比例,并与您为要比较的颜色计算的那些进行比较(例如,使用 2d 平面距离)。越接近的值越相似。您如何扩展和使用该指标取决于您的应用程序。

    请注意,当 y 趋向于 0 时,由于输入数据的范围有限,计算的比例会变得越来越不精确,并且当 y 为 0 时是未定义的。从概念上讲,这是因为在没有灯光时所有颜色看起来完全相同他们。检查 y 是否至少高于某个最小值是解决此问题的实用方法。这也意味着如果你试图说“这张照片有多黑?”,你将不会得到合理的结果,尽管这又是因为不反射任何光的表面和不反射任何光的表面之间的歧义。没有任何光照在上面。

    【讨论】:

      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 2021-04-18
      • 2012-01-05
      • 1970-01-01
      相关资源
      最近更新 更多