0

我有这个 LUT png 并且在我的图像上应用这个 LUT 时没有给出正确的结果。是我的 LUT 格式不同还是我没有正确应用过滤器。 在此处输入图像描述

UIImage *lutimage = [UIImage imageNamed:@"lut.png"];
    GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:lutimage];
    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:imported_image];
    GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init];
    lookupFilter.intensity = 1.0;
    [lookupFilter setInputRotation:kGPUImageRotateRight atIndex:1];
    [stillImageSource addTarget:lookupFilter];
    [lookupImageSource addTarget:lookupFilter];
    [lookupFilter useNextFrameForImageCapture];
    [stillImageSource processImage];
    [lookupImageSource processImage];
    imgview_main.image = [lookupFilter imageFromCurrentFramebuffer];
    [[GPUImageContext sharedFramebufferCache] purgeAllUnassignedFramebuffers];

结果是:在此处输入图像描述

但结果应该是这样的:在此处输入图像描述

4

1 回答 1

0

HALD 查找表是一种将一种输入颜色转换为一种输出颜色的方法。HALD 图像中的位置与像素颜色有关,而不是它在图像上的位置。

您所做的是在颜色查找表中添加一个晕影,例如,在 LUT 的右下角,您将其设置为更暗。当您将此 LUT 应用于图像时,图像中的明亮像素会变得更暗 - 正如您告诉它的那样。LUT 中的位置与图像像素位置无关,仅与 RGB 强度有关。

您需要某种覆盖过滤器(可能使用乘法),其在覆盖中的位置确实对应于您要更改的图片中的位置。

TL;DR:当您应该使用一些代码来添加图像覆盖/遮罩时,您正在使用一些颜色查找翻译代码。

于 2019-04-12T11:14:05.270 回答