2012-06-22 33 views
0

我試圖將任意3D Luts應用於iOS上的圖像,但我卡住了。CoreImage的格式化數據CIColorCube

我不能爲我的生活弄清楚如何正確格式化CIColorCube的立方體數據。

我已經完成了基於我從WWDC視頻中獲取的簡短屏幕抓取的內容,但我真正需要的是某種工作模板。 是否有任何文檔中的硬編碼多維數據集的示例,而不是程序化ICC生成的ImageApp示例代碼中顯示的文檔?

現在我的立方體數據看起來像你在下面看到的(爲了簡潔起見中間切掉了)。 它引發錯誤:

"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 
}; 
+1

這個color_cube_data是否工作?如果是這樣,你會介意分享完整的查找表嗎? –

回答

2

我無法幫助你所有的問題沒有更多的信息,但我認爲你目前的錯誤可能是由此導致的。確保設置立方體數據的代碼行像這樣讀取...

[_colorCube setValue:color_cube_data forKey:@「inputCubeData」];

不是這個......

[_colorCube的setValue:color_cube_data forKey:@ 「inputCubedata」];

1

在將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的冪。

+0

如果您從CIColorCube中獲取奇怪的顏色,很可能您的尺寸不是兩個冪。我的所有藍色部件都設置爲零。 – bitmusher