【问题标题】:OpenCV Brightness & Contrast like in GimpOpenCV 亮度和对比度,如 Gimp
【发布时间】:2015-11-21 22:19:43
【问题描述】:

我想像在 Gimp 中一样调整 Python 的 OpenCV 中的对比度。我想这样做:

在 Gimp 中很简单。我只使用Colors->Brightness & Contrast,并将对比度设置为127。 但我不知道如何在 Python 中执行此操作,也找不到任何解决此问题的方法。

【问题讨论】:

    标签: python-2.7 opencv gimp


    【解决方案1】:

    检查here。公式为:

    new_value = (old_value - 0.5) × contrast + 0.5 + brightness
    

    在 python 中,您可以轻松地将它们应用为矩阵运算。请注意这里的像素值在[0,1]范围内,所以当范围在[0,255]范围内时,0.5相当于127。

    在同一个链接中还报告了代码,具有像素级操作(我复制只是为了完整性):

    function transform(value, brightness, contrast)
      return (value-0.5)*contrast+0.5+brightness
    end
    
    function transform_rgb(r,g,b, brightness, contrast)
      return transform(r, brightness, contrast), transform(g, brightness, contrast), transform(b, brightness, contrast)
    end
    
    function bcontrast_get_rgb(x,y,brightness, contrast)
       r,g,b=get_rgb(x,y)
       return transform_rgb(r,g,b, brightness, contrast)
    end
    
    function bcontrast(brightness, contrast)
        for y=0, height-1 do
          for x=0, width-1 do
            set_rgb(x,y, bcontrast_get_rgb(x,y,brightness,contrast))
          end
        end
        flush ()
    end
    
    bcontrast(0.25, 2.0)
    

    【讨论】:

    • 亮度和对比度值的范围是多少?在 Gimp 中,这些值的范围是 -127 到 127。但是使用 bcontrast(0.25,2.0) 它似乎不在这个领域。有什么建议吗?
    • 我不知道。您应该检查 gimp 源代码。在 (0,10) 中设置对比度和在 (-1, 1) 中设置亮度可能是有意义的。您还应该注意钳制到 0 个负像素值和 1 个更大的值。 @ChristianGold
    【解决方案2】:

    GIMP 使用的对比度和亮度公式在此文件中定义:https://github.com/GNOME/gimp/blob/GIMP_2_10_10/app/operations/gimpoperationbrightnesscontrast.c

      if (brightness < 0.0)
        value = value * (1.0 + brightness);
      else
        value = value + ((1.0 - value) * brightness);
    
      value = (value - 0.5) * slant + 0.5;
    

    在哪里

      brightness = config->brightness / 2.0;
      slant = tan ((config->contrast + 1) * G_PI_4);
    

    假设图像事先被标准化为 [0, 1] 范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2012-12-03
      相关资源
      最近更新 更多