Ios 尝试使用两个颜色查找表筛选图像

Ios 尝试使用两个颜色查找表筛选图像,ios,colors,filtering,Ios,Colors,Filtering,我与一个设计团队合作,他们希望我在我们的iOS应用程序中实现一个照片过滤器。他们给我提供了两个文件,看起来很像这张图片,每个文件都有不同的颜色 我被告知,显然我应该能够在Photoshop中打开它们,比较颜色的差异,然后将这些差异应用于应用程序中的图像过滤。老实说,我甚至都不知道从哪里开始。我已经在photoshop中打开了它们,但不确定要查找什么。我知道如何使用CIFilter应用过滤器,只是不知道应用哪种过滤 至少有人能给我指出正确的方向吗?他们给你的是一个3D查找表或LUT。除了检查LU

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

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


至少有人能给我指出正确的方向吗?

他们给你的是一个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/40的正方形。这在您的设置中很棘手,因为它不是一个长行。通常情况下,您只需将“平铺宽度”乘以要获得起始像素的平铺数量,但我们不能在这里这样做。我建议以这种方式重新格式化LUT。如果你这样做了,你可以把34*25*sizeof(RGB)乘以。一旦到了那里,您就可以将该平铺本身视为一个图像,并查找(x,y)=(13,5)。(您可以使用5*bytesPerRow+13*bytesPerPixel进行此操作。)

您现在拥有LUT中的颜色


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

感谢您的详细回复。我发布的图片实际上不是我正在使用的图片,只是我在网上找到的一个例子。我正在处理的图像正好是8x8网格,因此我应该能够理解您在上一段中提到的内容。我想这会改变你第一次计算的分母?是的,会的。在这种情况下,除以8,而不是25或40。祝你好运此外,如果此问题解决了您的问题,请单击左侧的绿色复选框。