尝试使用两个颜色查找表来过滤图像

时间:2014-05-21 03:58:53

标签: ios colors filtering

我与设计团队合作,他们希望我在iOS应用中实现照片过滤器。他们为我提供了两个看起来非常像这个图像的文件,每个文件都有不同的颜色。

我被告知显然我应该能够在Photoshop中打开它们,比较颜色的差异,然后应用这些差异来过滤应用程序中的图像。老实说,我甚至不知道从哪里开始。我已经在photoshop中打开了它们,但我不确定要寻找什么。我知道如何应用CIFilter过滤器,我只是不知道要应用哪种过滤方式。

那里的任何人至少能够指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

他们给你的是3D查询表或LUT。除了检查LUT之外,你不需要在这个过程中完全涉及Photoshop。

看起来你的LUT是25x25x40。每个方格为25x25,图片中有8x5 = 40个方格。 (实际上有8x4 = 32个正方形和偏高于和低于它的部分正方形。这有点怪异。)每个25x25的正方形有一个恒定的蓝色值,红色值随x坐标而变化,绿色随着y坐标。

要使用LUT,您可以获取输入图像中每个像素的(r,g,b)值,并在LUT中查找新值。

所以,如果你有一个(R,G,B)值,比方说,(128,52,215)(假设每通道8位,所以值在0-255之间),那你就需要了缩放那些在你的LUT范围内。

为此,请计算:

Red: 128 / 255 = x / 25
Green: 52 / 255 = x / 25
Blue: 215 / 255 = x / 40

所以你得到:

Red = 13
Green = 5
Blue = 34

现在您将它们用作LUT中的坐标。你需要蓝色是34 / 40th的正方形。这在你的设置中很棘手,因为它不是一个长排。通常情况下,您只需将平铺宽度乘以您想要获得起始像素的平铺数量,但我们无法在此处执行此操作。我建议您重新格式化LUT以便以这种方式工作。如果你这样做,你可以乘以34 * 25 * sizeof(RGB)。在那里,您可以将该图块视为图像本身,并查找(x,y)=(13,5)。 (你可以使用5 * bytesPerRow + 13 * bytesPerPixel来做。)

您现在拥有LUT的颜色。

有一个名为CIColorCube的CoreImage过滤器允许您执行类似的操作,但我自己并没有使用它。