Быстрая цветокоррекция при помощи CLUT
Как легко повторить любой цветовой фильтр
Мне очень нравятся некоторые ломографические фильтры в штатном фоторедакторе MIUI 12 (смартфоны Xiaomi) – Rhodium, Sangria, Black Ice и др. Но очень неудобно каждый раз загружать снимки в телефон, чтобы применить один из таких фильтров – особенно если на самом телефоне они мне не нужны. Что же делать – сымитировать фильтр графическим редактором? Но это будет лишь подобие, к тому же придется каждый раз совершать много действий. И тут я вспомнил о технике, которая иногда используется для цветокоррекции в видеомонтаже и 3D-графике – color lookup table, или сокращенно CLUT.
Чаще всего CLUT используется для имитации характерной «пленочной» цветовой гаммы на цифровых снимках, но ее возможности гораздо шире. Суть этой техники в том, что вместо оригинальных цветов пикселей подставляются значения, прочитанные из 3D-таблицы. Принцип примерно тот же, что использовался в индексированных цветовых режимах, только в данном случае таблица охватывает более широкий диапазон RGB. В таблице цвета могут быть абсолютно любые – с математической точки зрения, она является функцией, которая переносит цвет из одного пространства в другое. Чем больше таблица, тем точнее ее охват.
Photoshop поддерживает работу с CLUT в форматах 3DL и CUBE, которые привычны в видеомонтаже, но для данной задачи непригодны, поэтому мы будем использовать таблицу стандарта Hald CLUT, которая основана на обычном изображении PNG. Скачать полноцветный вариант этой таблицы можно, например, с нашего сайта – таблица размером 4096x4096 охватывает 16777216 цветов и при этом очень эффективно сжимается в PNG. Есть также вариант меньшего размера, который охватывает около 3 миллионов цветов.
Если отредактировать ее в графическом редакторе – например, изменить яркость, контраст, насыщенность и т. д. – результат будет хранить информацию, необходимую для того, чтобы повторить эти же операции на другом изображении. Единственное условие – цветокоррекция должна выполняться для каждого пикселя параллельно и независимо от остальных. Если фильтр использует оконную свертку и другие алгоритмы, работающие с несколькими пикселями одновременно, то метод с использованием CLUT не будет с ним работать.
Для хранения таблицы важно использовать именно lossless-формат, такой как PNG, так как сжатие JPEG вносит мелкие искажения в цвета, а нам важно сохранить точность информации.
Таблицу нужно скопировать на телефон, открыть в фоторедакторе и применить к ней какой-нибудь фильтр. Например, вот как она выглядит с фильтром Rhodium:
Применить ее к произвольному изображению очень просто, если у вас есть графический редактор с поддержкой CLUT – например, через популярный плагин G'MIC (который, кстати, встроен в Krita). Выберите в меню Фильтры – Запустить G'MIC-Qt. Найдите фильтр Apply External CLUT. В поле Specify HaldCLUT as выберите Filename и загрузите вашу таблицу нажатием на кнопку. У вас должно получиться ровным счетом то же самое, что и на телефоне.
Таким образом, нам даже не нужно знать, какую математику использовали разработчики из Xiaomi, чтобы повторить их фирменную ломографию – важен ведь лишь результат. Вы можете создать и свои собственные таблицы для ускорения каких-то наиболее часто выполняемых действий, например, для применения одной и той же последовательности операций для серии снимков. Для этого нужно создать комбинированное изображение, содержащее и фотографию, и CLUT, а после цветокоррекции просто вырезать таблицу и сохранить ее (либо, в случае использования Photoshop, просто перенести ваши корректирующие слои с фотографии на таблицу). Вы также можете смешать две разные таблицы, чтобы получить среднее между двумя фильтрами, а также применить таблицу к другой таблице, чтобы последовательно скомбинировать два фильтра – возможностей, как уже было сказано, очень много.