GPUImageLookupFilter没有为以下LUT图像提供所需的结果

时间:2018-07-29 17:54:52

标签: ios objective-c gpuimage lookup-tables gpuimagestillcamera

我有这个LUT png,然后在我的图像上应用这个LUT时却没有给出正确的结果。我的LUT格式是否不同,或者我没有正确应用过滤器? enter image description here

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];

结果是:enter image description here

应该像这样:enter image description here

1 个答案:

答案 0 :(得分:0)

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

您要做的是在颜色查询表中添加一个小插图,因此在LUT的右下角,您将其变暗了。当您将此LUT应用于图像时,图像中的明亮像素变暗-就像您告诉过的那样。 LUT中的位置与图像像素位置无关,仅与RGB强度无关。

您需要某种覆盖滤镜(也许使用乘法),其覆盖图的位置确实要更改图片中的位置。

TL; DR:当您应该使用一些颜色查找转换代码来添加图像叠加层/蒙版时,您正在使用这些代码。