gpt4 book ai didi

ios - 如何在 iOS 应用程序中重现 Adob​​e Lightroom 的高光和阴影效果

转载 作者:行者123 更新时间:2023-11-29 11:29:28 25 4
gpt4 key购买 nike

我正在尝试在我的 iOS 应用程序中重现 Adob​​e Lightroom 效果。目前我对所有效果都使用 GPUImage,但发现很难重现高光和阴影效果。此外,我已经尝试使用 CIFilter 中的 CIHighlightShadowAdjust,但它给了我错误的结果。

所以我至少在寻找 Lightroom 用于此效果的算法。它们都与亮度变化非常相似,但似乎它们只用于改变图片的亮/暗部分,这取决于是否使用了高光或阴影。

任何人都可以指出正确的方向,我需要看什么才能产生相同的效果吗?如何只改变图片的暗/亮部分的亮度?

这里是例子1. 左边是原图,右边是+100高光调整后的图片(可能范围-100;100,默认为0)。

Highlights +100

你可以看到天空(图像较亮的部分)有不同的亮度,但雕像几乎没有变化。

  1. 左边是原始图像,右边是 +100 阴影调整的图像(可能范围 -100;100,默认为 0)。

Shadows + 100

在这里你可以看到雕像(图片较暗的部分)亮度变化很大,但天空几乎没有变化。

最佳答案

看起来应用了非线性亮度变换。例如,高亮效果可能意味着只有图像的较亮部分的亮度增加更多,而阴影调整可能意味着图像的较暗部分的亮度增加。

一般的做法是

  • 将 RGB 图像数据转换为以亮度作为单独维度的颜色空间,例如 HSL 或 CIELAB。
  • 使用连续且单调递增但限制在允许值范围内的单个变换函数逐像素变换亮度/亮度/亮度。这类似于非线性拉伸(stretch)或压缩亮度直方图。
  • 用转换后的亮度替换原始亮度。
  • 转换回 RGB 颜色空间。

亮度变换函数的一个特点是它通常只拉伸(stretch)或压缩特定的亮度范围(您在示例图像中很好地展示了这一点)。这通常需要的不仅仅是一个参数(您需要定义受影响的直方图的范围以及强度)。看起来 Adob​​e 有一些启发式算法,它认为什么是阴影,什么是高光(可能是亮度直方图的平均值)作为截止值,并且只提供强度作为参数。

转换的确切形状也取决于您自己的口味。我玩了一下

突出显示与您的突出显示类似,我可以使用(转换为 CIELAB 并且 Ligthness L 从 0-100 变为)分段线性函数:

a = 1.5
b = 50
L(L>b)=a*L(L>b)-(a-1)*b

enter image description here

阴影增强看起来类似于我可以通过指数衰减增强获得的阴影增强。

a = 4;
b = 20;
L = ((a-1)*exp(-L/b)+1) * L;

enter image description here

你看,我总是至少需要两个参数,我相信可以找到更好的转换函数,但结果强烈表明,本质上它只不过是一个亮度转换,可以在 iOS 中重现应用程序。尝试使用不同的转换函数可能会更好地了解什么是好的,什么不是。

关于ios - 如何在 iOS 应用程序中重现 Adob​​e Lightroom 的高光和阴影效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com