Tar*_*nko 5 image-processing ios gpuimage
我正在尝试在我的 iOS 应用程序中重现 Adobe Lightroom 效果。目前我正在使用GPUImage所有效果,但发现很难重现高光和阴影效果。我也已经尝试使用CIHighlightShadowAdjustCIFilter 但它给了我错误的结果。
所以我正在寻找至少 Lightroom 用于此效果的算法。它们都与亮度更改非常相似,但似乎它们仅用于更改图片的亮/暗部分,具体取决于是否使用高光或阴影。
谁能指出我需要寻找的正确方向才能产生相同的效果?如何仅更改图片的暗/亮部分的亮度?
示例如下 1. 左为原始图像,右为经过 +100 高光调整的图像(可能范围 -100;100,默认为 0)。
你可以看到天空(图像较亮的部分)有不同的亮度,但雕像几乎没有改变。
在这里你可以看到雕像(图片较暗的部分)的亮度变化很大,但天空几乎没有变化。
看起来像是应用了非线性亮度变换。例如,突出显示效果可能意味着只有图像的较亮部分的亮度增加更多,而阴影调整可能意味着图像的较暗部分的亮度增加。
一般方法是
亮度变换函数的一个特点是它通常仅拉伸或压缩特定的亮度范围(您在示例图像中很好地展示了这一点)。这通常需要多个参数(您需要定义受影响的直方图的范围以及强度)。看起来 Adobe 有一些启发式方法,将其视为阴影的内容和将其视为高光的内容(可能是亮度直方图的平均值)作为截止值,并且仅提供强度作为参数。
变换的具体形状也取决于您自己的喜好。我玩了一下
突出显示看起来与您的突出显示相似,我可以使用分段线性函数(转换为 CIELAB 和亮度 L 从 0-100)得到:
a = 1.5
b = 50
L(L>b)=a*L(L>b)-(a-1)*b
Run Code Online (Sandbox Code Playgroud)
阴影增强看起来类似于我可以通过指数衰减增强获得的阴影增强。
a = 4;
b = 20;
L = ((a-1)*exp(-L/b)+1) * L;
Run Code Online (Sandbox Code Playgroud)
你看,我总是需要至少两个参数,并且我相信可以找到更好的转换函数,但结果强烈表明,本质上它只不过是一种亮度转换,可以在 iOS 应用程序中重现。使用不同的转换函数可能会让您更好地了解什么是好的,什么是不好的。
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |