1

我正在寻找一种算法来产生图片的日晒效果。有人有链接或算法吗?我也对其他过滤器感兴趣,例如棕褐色或卡通。对于棕褐色,我在这里找到了一些代码。在网上我发现关于这些过滤器的实现的信息不多。

问候

4

1 回答 1

3

日晒意味着响应曲线不是单调的(“输出”不是简单地增加亮度,而是开始变亮,变暗,然后随着“输入”变亮而再次增加)。实现它的最简单方法(对于一些简单的值)是作为转换像素值的更一般过程的特例。

这是主例程的一些python-ish伪代码:

def transform(image, f):
    for pixel in image:
        pixel = f(pixel)

如果我们选择像素为 0 和 1 之间的值(标准化您拥有的任何值,并且如果您有颜色对待 R、G 和 B 相同),那么您可以通过使用修改 gamma(更改对比度)

transform(image, f(x): x^gamma)

对于日晒,您需要一个减少然后再次增加的功能。所以像 1-4x+4x^2:

transform(image, f(x): 1-4x+4x^2)

如果这有点不透明,这里有一些数字可以让事情更清楚:

  • 如果输入图像为 0(黑色),则输出为 1-4*0+4*0^2 = 1(白色)
  • 如果输入图像为 0.5(灰色),则输出为 1-4*0.5+4*0.5^​​2 = 1-2+1 = 0(黑色)
  • 如果输入图像为 1(白色),则输出为 1-4*1+4*1^2 = 1(白色)

然后您可以通过向曲线添加一些用户可以更改的参数(例如 a + bx + cx^2)来进一步了解它。

(实际上,它可以更通用 - 它可以有多个峰值或在亮点处变黑 - 例如,有一个带有黑色太阳的 ansel adams 图像。想法是一样的,只需使用更高阶多项式,或更改符号上面的参数中-a -ve c 将使明亮的区域变暗。您可以使用样条曲线而不是多项式。基本上,它是从输入到输出的映射,“上下”,其中有很大的灵活性.. .)。

于 2012-07-24T20:39:31.370 回答