【问题标题】:Changing non-commutative image properties(like brightness and contrast) using sliders, adobe lightroom way使用滑块、adobe lightroom 方式更改非交换图像属性(如亮度和对比度)
【发布时间】:2014-06-19 19:48:57
【问题描述】:

我正在开发一个应用程序,我想使用滑块更改图像的多个属性,例如亮度、对比度、饱和度、色调等(用例类似于 lightroom 工作流程,用户可以通过移动滑块来更改这些属性)。

问题:

我的问题是,这些属性不可交换。

例子

  1. 我在图像 I 即 B(I) 上将亮度值更改为 +30,然后在结果图像上将对比度更改为 -60 即 C(B(I)),结果与 B(C(I)) 不同.
  2. 经过上述操作C(B(I))后,如果我尝试将亮度恢复-30来否定亮度效果,即B(C(B(I))),结果与C(一)。

我尝试过的方法:

我尝试了两种不同的方法,但都失败了。

  1. 继续将结果应用于最新图像,即如果我想再次更改亮度,我将其应用于 C(B(I)) 的结果。这显然会给出错误的结果,并且不会否定早期应用亮度的效果。
  2. 每当重新应用效果时,移除第一个效果。示例:如果我应用了 C(B(I)),并且再次想要更改亮度,我将删除第一个亮度效果,因此将具有 C(I),然后将结果应用于这个新结果。所以新效果看起来像 B(C(I))。这种方法的问题是,它很慢,因为一旦您更改滑块,就需要重新应用效果(因为移除了先前的效果)。如果我将滑块改回亮度(因为结果没有从 C(B(I)) 更改为 B(C(I))),也会导致图像突然变化(非常直观)。

Lightroom 和许多其他图像处理软件实现了这一点,但我不知道如何实现,它们完美地否定了用户移动滑块时的更改,而不管应用属性的顺序如何。我不知道他们是怎么做到的,因此需要帮助。

注意:最近我想知道这是否可以通过混合(不知道哪种类型的混合)应用到原始图像上的每个效果的结果来实现,而不是将它们应用到结果上上一个。

【问题讨论】:

    标签: image image-processing graphics brightness contrast


    【解决方案1】:

    其工作方式是创建您要对图像执行的操作的图表,并在任何参数更改时重新执行整个图表。因此,如果您想要亮度后跟对比度,您将创建一个亮度节点和一个对比度节点,然后将它们连接在一起,如下所示:

    图像 -> 亮度 -> 对比度 -> 输出图像

    当用户更改亮度或对比度滑块时,您将使用新参数执行整个图表。如果您已经明智地编写了图像处理节点,那么对于诸如亮度和对比度调整之类的事情来说,这应该不会太慢。

    如果您的图表非常大且复杂,缓存一些中间图像并仅重新计算中间图像之后的部分可能是有意义的。但老实说,对于你图片中显示的那种类型的东西,这不应该是必要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多