Look-Up Table (LUT)

GrossGrade

Topic:  GrossGrade as Expert see it > Technologies >

Look-Up Table (LUT)

Previous page Parent topic

 

Многие из вас хорошо знакомы с технологией 3D LUT, с ее вездесущностью, гибкостью, широкими возможностями и часто применяют ее в технических нуждах или даже в творчестве. Но тем из вас, для кого эта вещь остается "магическим черным ящиком" настоятельно рекомендуется, скрепя сердце, дочитать этот раздел до конца.

Разберем все по порядку от простого к сложному.

 

Что такое LUT?

 

look-up-tables_1d_lutРасшифровывается как Look-Up Table (таблица поиска / преобразования). В общем случае это массив соответствий между входными и выходными значениями какой-либо переменной (или нескольких переменных). Применяется обычно с целью заменить сложные вычисления на простую операцию поиска. При этом те значения переменной, которые отсутствуют в массиве, вычисляются с помощью интерполяции на основе имеющихся значений.

 

Что такое Color LUT (CLUT)?

 

look-up-tables_1d_clutЭто таблица поиска / преобразования цветов, применяемая обычно для калибровки устройств ввода / вывода, технических манипуляций, таких как преобразование цветовых пространств, а также творческих обработок фото / видео (последний вид иногда называют Look LUTs, или попросту "looks" - "луки", т.к. они определяют, как будет "выглядеть" изображение, представляют собой некий своеобразный "облик изображения").

 

В чем разница между 1D и 3D Color LUT?

 

look-up-tables_1d_3x1d_3d_clut

Одномерная (1D) таблица поиска содержит преобразование одной независимой переменной, она содержит массив из N значений и может описывать, к примеру, кривую изменения одной из цветовых координат.

 

Существует разновидность одномерной таблицы, содержащая преобразования 3 независимых цветовых координат (описывающая три отдельные кривые), и при этом она не считается полноценной трехмерной таблицей, т.к. координаты никак не связаны друг с другом. Такую таблицу называют 3x 1D LUT (трижды одномерная таблица), ее размер равен N*3.

 

Трехмерная (3D) таблица поиска содержит преобразование трех связанных друг с другом координат, описывая перемещения точек цветового пространства. Такая таблица имеет размер N*N*N (N в степени 3) и является самым гибким вариантом LUT с наиболее широкими возможностями. Величина N обычно выбирается нечетной, чтобы на оси нейтралей (оттенков серого) всегда находились элементы.

 

Элементы трехмерной таблицы называются воксели – трехмерный эквивалент пикселей. Существуют также таблицы других размерностей, например 4D, но здесь мы будем рассматривать в основном только трехмерные таблицы поиска цветов – 3D Color LUTs.

 

Что хорошего дает нам 3D Color LUT?

 

Это отличное решение для обработки видеоряда или групп фото, которое также часто находит применение и для обработки одиночных изображений. Быстрота использования, а также простота совместного доступа, передачи "облика" цветокоррекции между различными приложениями – все это с каждым днем увеличивает популярность 3D LUT как в профессиональной индустрии, так и в сфере любительской обработки. В сети появляются тысячи готовых "луков", как платных, так и бесплатных, распространяемых различными производителями.

 

Возможность полностью поменять цветовое настроение фото или видео одним кликом мыши привлекает многих пользователей. Есть также много ситуаций, когда использование LUT является единственным решением какой-либо технической задачи, к примеру, реализация какого-то преобразования, которое не может быть выражено математическими формулами.

 

Аппаратная поддержка данной технологии растет с каждым днем, появляется оборудование, так или иначе поддерживающее загрузку LUT, например конвертеры преобразующие видеосигнал в реальном времени на основе загруженных в них таблиц, профессиональные мониторы с встроенными LUT. Для ПК увеличивается эффективность расчета больших таблиц с помощью мощных вычислительных ресурсов видеокарт, в том числе с использованием нелинейной интерполяции.

 

О преимуществах прямого расчета (рендеринга) перед 3D LUT

 

Но сколько бы хвалебных песен не было воспето в честь всемогущей технологии 3D LUT, а все-таки отчасти это грубый суррогат. Одним из недостатков таблиц является ограничение разрешения. Довольно часто используются такие разрешения как 17*17*17, 33*33*33, что гораздо меньше разрешения цветового охвата для изображений глубиной 24 бита, которое составляет 256*256*256 вокселей. Понятно, что информации о цвете такая таблица может сохранить значительно меньше, чем это теоретически возможно.

 

Для хранения 3D LUT разрешения 256*256*256 понадобится примерно 50 мегабайт памяти, да и обрабатываться это все будет довольно долго. А вот для глубины цвета 48 бит разрешение цветового охвата становится просто неподъемным – 65536*65536*65536. Таблица такого разрешения заняла бы в памяти компьютера примерно 1,5 петабайта (около 1,5 миллиона гигабайт)! С ростом размерности 3D таблицы, объем занимаемой ей памяти растет с ускорением.

 

Однако все не так страшно. Существуют форматы LUT, имеющие нерегулярную дискретную сетку, что способствует уменьшению видимости сегментации, а также позволяет рационально использовать разрешение таблицы. И даже регулярная 3D LUT-таблица с разрешением 33*33*33 способна сохранить нужную нам цветокоррекцию с достаточной для этого точностью. Дело в том, что обычно цветовой грейдинг не подразумевает резких изменений между очень близкими цветами. Т.е. это обычно вещь плавная, затрагивающая одни цвета в одной степени, другие цвета – в несколько иной степени, делая изменение "затухающим".

 

Проблема состоит в том, что любые высокоточные коррекции цвета, делающие резкие изменения между очень близкими цветами (например, изменение насыщенности цветов, оттенок которых принадлежит очень малому диапазону от 2 до 3 градусов), будут потеряны или образуют побочные эффекты при сохранении всей коррекции в 3D LUT недостаточно высокого разрешения с регулярной сеткой. Те, кто знаком с математикой и ЦОС, могут провести аналогию с частотой Найквиста и потерями высоких частот при дискретизации, если рассматривать нашу цветокорректирующую функцию как сигнал со спектром частот.

 

На иллюстрациях ниже приведено сравнение результатов прямой цветокоррекции с результатами той же цветокоррекции посредством 3D LUT размерностью 65*65*65 и 33*33*33 с регулярной дискретностью и линейной интерполяцией:

 

opt_loluthsl_1_original_zoom45opt_loluthsl_2_render_zoom45opt_loluthsl_3_lut65_zoom45opt_loluthsl_4_lut33_zoom45

 

В данном эксперименте специально выбраны такие условия, при которых разница двух методов явно бросается в глаза, в повседневной работе с естественными изображениями вы редко заметите подобные дефекты. Однако неправильно применяя таблицы LUT, можно было бы и не догадываться, что в результатах коррекции присутствуют какие-то потери / искажения. Хотя понятно, что потери будут присутствовать практически всегда, визуально оценить их общее количество вряд ли возможно. Для применения в сфере чисто творческих обработок эти проблемы не столь критичны, поскольку автор сам оценивает результат и соглашается с ним.

 

Ниже приведены графики, иллюстрирующие количество ошибок на простом примере одномерных LUT, аппроксимирующих некоторую случайную кривую:

 

opt_lut_1_x6_zoom45opt_lut_2_x7_zoom45opt_lut_3_x8_zoom45opt_lut_4_x8a_zoom45

 

Обратите внимание, на последнем графике приведена нерегулярная адаптивная LUT-таблица, дающая гораздо меньше ошибок, чем регулярная таблица той же размерности. Однако построение нерегулярной таблицы LUT – задача более сложная и долгая, алгоритм расчета результата на основе такой таблицы тоже более медлителен, кроме того, потребуется больше места в памяти из-за необходимости хранения дополнительной информации о нерегулярности шага / сетки.

 

В интересах быстродействия в большинстве случаев для расчета цветов на основе 3D LUT в приложениях используется линейная интерполяция, как наиболее простой метод, но, результаты такого метода могут выглядеть не совсем естественно. Но на этом погоня за скоростью не ограничивается. Трехмерная линейная интерполяция имеет несколько разновидностей (в порядке упрощения расчетов): полная трилинейная (trilinear), призматическая (prism), пирамидальная (pyramidal) и тетраэдральная (tetrahedral). Последний метод является наиболее быстрым, наиболее грубым, и, как вы могли догадаться, довольно распространенным в приложениях, работающих с 3D LUT.

 

Тетраэдральная интерполяция в силу своей природы подходит не для любых цветовых пространств. Она хорошо работает только для пространств, в которых ось нейтралей параллельна одной из диагоналей куба (аддитивные / субстантивные цветовые модели, наподобие RGB). Для пространств, в которых ось нейтралей параллельна одной из осей координат (перцепционные цветовые модели, наподобие LAB), такой метод работает хуже. [link]

 

С применением кубической или сплайновой интерполяции результаты в общем случае будут выглядеть более естественно, чем с применением линейной интерполяции, однако, следует понимать, что обычно это не влияет на количество ошибок, по крайней мере в случае таблиц с регулярным шагом. Сравните два графика:

 

opt_lut_3_x8_zoom45opt_lut_5_x8c_zoom45

 

Конечно, это имеет смысл только в случае недостаточного разрешения таблиц. По этой же причине, например, при апсемплинге изображений невозможно получить какие-либо правдивые суб-пиксельные детали, какой бы алгоритм интерполяции не применялся. Зато можно получить более гладкую и приятную картинку, не смотря на то, что она может совершенно не соответствовать действительности.

 

Недостатком LUT таблиц также является неотъемлемое ограничение диапазона входных значений. Обычно в какой-то степени это является проблемой при работе с HDR (High Dynamic Range) изображениями, где цвета, представлены числами с плавающей точкой. В этом случае LUT таблицы оказываются неприменимы к значениям, выходящим за рамки некоторого заранее определенного диапазона (обычно 0.0 – 1.0). Немного сгладить ситуацию может экстраполяция за пределы диапазона, но, как и в случае с интерполяцией, она создает только некую видимую естественность.

 

В целом все вышесказанное в значительной мере относится как к 1D, так и к 3D LUT.

 

Ну и к чему все это?

 

К тому, что любой инструмент следует применять по его назначению, и неплохо бы знать инструкцию по эксплуатации. Если ваша LUT-таблица дает неудовлетворительный результат, то вы либо неправильно ее используете, либо применяете не по своему назначению.

 

Цветокоррекция в GrossGrade в первую очередь направлена на финальный рендеринг внутри GrossGrade, а функция экспорта в 3D LUT – всего лишь вариант использования коррекции в других программах, имеющий как свои преимущества, так и недостатки. Хотя возможно, этот вариант подойдет вам в ста процентах случаев. Просто следует учитывать, что все вышеизложенное справедливо для любых форматов LUT и работающих с ними приложений. А, следовательно, некоторые виды цветокоррекции, рассчитываемые внутри GrossGrade функцией "Render", могут выглядеть лучше (или просто немного иначе), чем те же коррекции внутри GrossGrade во время работы (когда для предпросмотра используются LUT) или при экспорте LUT в сторонние приложения.

 

Зная природу 3D LUT, вы можете использовать все преимущества этой технологии, и при этом будете контролировать возможные ошибки.

 


See also

Technologies