Я немного читал о том, как это сделать в Photoshop, и в основном он увеличивает контраст в красном и зеленом каналах и уменьшает его в синих каналах. (По крайней мере, для базового эффекта - если вы действительно делаете это с пленкой, вы также можете получить действительно странные цветовые сдвиги!)
Вы можете выполнить контрастную настройку, используя ряд узлов CIColorMatrix. Контрастность в основном ((значение - 0,5) * контрастность) + 0,5. Таким образом, цветовая матрица, скажем, для контраста 1,5 красного и зеленого и 0,66 синего будет выглядеть примерно так:
| 1 0 0 -0.5 | | 1.5 0.0 0 0 | | 1 0 0 0.5 |
| 0 1 0 -0.5 | + | 0 1.5 0 0 | + | 0 1 0 0.5 |
| 0 0 1 -0.5 | | 0 0.0 0.66 0 | | 0 0 1 0.5 |
| 0 0 0 1.0 | | 0 0.0 0.0 1.0| | 0 0 0 1.0 |
CIColorCube, вероятно, может воспроизводить более сложные преобразования, но формат его данных сложен. Вам необходимо создать таблицу соответствия 3D.
CIToneCurve может сделать это, если вы сделали 3 отдельных прохода (или, может быть, только 2 - один для красного и зеленого и 2-й только для синего), а затем объединили результаты. Вы установили бы 2-ю точку ниже 0,25 и 4-ю точку выше 0,75 красным и зеленым, а противоположную синим.