【问题标题】:Formatting data for CoreImage CIColorCubeCoreImage CIColorCube 的格式化数据
【发布时间】:2012-06-24 19:44:01
【问题描述】:

我正在尝试将任意 3D Luts 应用到 iOS 上的图像,但我卡住了。

我这辈子都不知道如何正确格式化 CIColorCube 的立方体数据。

根据我从 WWDC 视频中截取的简短屏幕截图,我已尽我所能,但我真正需要的是某种工作模板。 是否有任何文档包含硬编码多维数据集的示例,而不是 ImageApp 示例代码中显示的程序 ICC 生成的示例?

现在,我的多维数据集数据看起来像您在下面看到的(为简洁起见,中间被切掉了)。 它抛出错误:

"Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<CIColorCube 0xb46a850> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputCubedata.'"

任何帮助都将不胜感激,我正在为此而努力。我找不到任何 CIColorCube 所期望的已售示例(作为一个工作示例,而不仅仅是解释)。

uint8_t color_cube_data[4096*4] = {
    0, 0, 0, 1,
    17, 0, 0, 1,
    33, 0, 0, 1,
    51, 0, 0, 1,
    68, 0, 0, 1,
    84, 0, 0, 1,
    102, 0, 0, 1,
    119, 0, 0, 1,
-----etc etc etc
    153, 255, 255, 1,
    170, 255, 255, 1,
    186, 255, 255, 1,
    204, 255, 255, 1,
    221, 255, 255, 1,
    237, 255, 255, 1,
    255, 255, 255, 1
};

【问题讨论】:

  • color_cube_data 有效吗?如果是这样,您介意分享完整的查找表吗?

标签: iphone core-image


【解决方案1】:

如果没有更多信息,我无法帮助您解决所有问题,但我认为您当前的错误可能是由此造成的。确保设置多维数据集数据的代码行如下所示...

[_colorCube setValue:color_cube_data forKey:@"inputCubeData"];

不是这个……

[_colorCube setValue:color_cube_data forKey:@"inputCubedata"];

【讨论】:

    【解决方案2】:

    3D LUT 在作为参数传递给 CIFilter 之前必须包装到 NSData 中。立方体值在 [0.0 : 1.0] 范围内

    NSData * cube_data = [NSData dataWithBytes:color_cube_data length:4096*sizeof(float)*4];
    
    [filter setValue:input_image forKey:@"inputImage"];
    [filter setValue:cube_data forKey:@"inputCubeData"];
    [filter setValue:[NSNumber numberWithFloat:16] forKey:@"inputCubeDimension"];
    

    inputCubeDimension 的值是严格的 2 次方。

    【讨论】:

    • 如果您的 CIColorCube 出现奇怪的颜色,很可能是您的尺寸不是 2 的幂。我的所有蓝色组件都设置为零。
    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 2015-12-18
    • 2016-05-31
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多