我正在尝试在我的iOS应用程序中重现Adobe Lightroom效果。目前我正在使用GPUImage
进行所有效果,但发现难以重现高光和暗影效果。此外,我已经尝试使用CIFilter的CIHighlightShadowAdjust
,但它给了我错误的结果。
所以我至少在寻找Lightroom用于此效果的算法。它们都与亮度变化非常相似,但似乎它们仅用于改变图像的亮/暗部分,取决于是否使用了高光或阴影。
任何人都可以指出正确的方向我需要看到什么来产生相同的效果?如何仅为图片的暗/亮部分改变亮度?
以下是示例1.左边是原始图像,右边是具有+100高光调整的图像(可能范围-100; 100默认为0)。
你可以看到天空(图像的较亮部分)有不同的亮度,但雕像几乎没有改变。
在这里你可以看到雕像(图片的较暗部分)的亮度发生了很大的变化,但是天空几乎没有变化。
它看起来像是应用了非线性亮度变换。例如,突出显示效果可能意味着只有图像的较亮部分具有更高的亮度,并且阴影调整可能意味着图像的较暗部分具有增加的亮度。
一般方法是
亮度变换功能的一个特点是它通常只会拉伸或压缩某个亮度范围(您可以在示例图像中很好地显示)。这通常需要的不仅仅是一个参数(您需要定义受影响的直方图的范围以及强度)。它看起来像Adobe有一些启发式方法它被视为阴影,它作为高光(可能是亮度直方图的平均值)视为截止,它只提供强度作为参数。
转型的确切形状也符合您的口味。我玩了一下
突出显示类似于我可以使用的突出显示(转换为CIELAB和Lightness L从0到100)的分段线性函数:
a = 1.5
b = 50
L(L>b)=a*L(L>b)-(a-1)*b
阴影增强看起来类似于你的阴影增强,我可以通过指数衰减的增强来获得。
a = 4;
b = 20;
L = ((a-1)*exp(-L/b)+1) * L;
你看,我总是需要至少两个参数,我相信一个人可以找到更好的转换函数,但结果强烈暗示,实质上它只不过是一个亮度转换,可以在iOS应用程序中重现。使用不同的转换函数可能会更好地理解什么是好的,什么不是。