Parse LUT image to data fits CIColorCube with Accerelation

Updated
Mar 24, 2021 4:05 PM
Created
Mar 23, 2021 4:55 PM
Tags
CoreImage
Keywords

ios - CIPhotoEffect CIFilter在颜色管理方面是不变的。是什么赋予CIPhotoEffect过滤器此属性?

给这个问题一些背景(呵呵): 我在iOS下将CIFilter子类化,目的是创建一些自定义照片效果滤镜。根据 documentation,这意味着创建一个"复合"过滤器,该过滤器将一个或多个预先存在的CIFilter封装在我的自定义CIFilter子类的保护范围内。 一切都很好。那里没有问题。举个例子,假设我封装了一个CIColorMatrix过滤器,该过滤器已预先设置了某些rgba输入向量。 当应用我的自定义滤镜(或者实际上是单独的CIColorMatrix)时,在使用CIContext启用或禁用颜色管理的情况下,我看到的结果截然不同。我正在创建我的上下文,如下所示: 色彩管理: CIContext * context = [CIContext contextWithOptions:nil]; NSDictionary *options = @{kCIContextWorkingColorSpace:[NSNull null], kCIContextOutputColorSpace:[NSNull null]}; CIContext * context = [CIContext contextWithOptions:options]; 现在,这不足为奇。但是,我注意到所有预先构建的CIPhotoEffect CIFilters,例如在相同的两种颜色管理条件下,CIPhotoEffectInstant本质上是不变的。 任何人都可以对什么赋予他们这种 property 提供任何见解?例如,它们本身是否封装了可能以相似不变性应用的特定CIFilter? 我的目标是创建一些具有相同属性的自定义滤镜,而不仅限于仅链接CIPhotoEffect滤镜。 - 编辑:感谢YuAo,我整理了一些工作代码示例,在此发布以帮助其他人: 以编程方式生成的CIColorCubeWithColorSpace CIFilter,在不同的颜色管理方案/工作颜色空间下不变: self.filter = [CIFilter filterWithName:@"CIColorCubeWithColorSpace"]; [self.filter setDefaults]; int cubeDimension = 2; // Must be power of