Показаны сообщения с ярлыком titles. Показать все сообщения
Показаны сообщения с ярлыком titles. Показать все сообщения

25 марта, 2025

Cinelerra — how to create "fake" 3d text effect.

 Эта публикация представляет способ создания псевдо-3D титров в Cinelerra HV/CV. Ранее я уже обращался к этой теме и предлагал в < этой статье > варианты для Cin-CV/GG . 

Но Cin-CV нынче пользуются только те, кто хорошо понимают, что они хотят получить и где разложены < грабли >. 
В Cin-GG создание объёмных титров ограничено рядом проблем (описаны в той же статье). 
А вот в Cinelerra HV 9, после того, как был модифицирован эффект 'Swap Channels', создание таких титров проходит на ура. Проект на #2 был предложен Адамом в ходе обсуждения вышеупомянутой статьи. Проект отличается от представленных в статье по ссылке выше. 
Поехали.
#1

Результат выше получен при помощи такой конструкции:
#2   

В 'Title' параметры 'Drop shadow'=0 , 'Outline' = 0.
#3

Что здесь происходит ? V5 и V4 создают маску. Вы увидите её, если отключите (зелёная кнопка на панели управления) V3, V2 и V1(фон):
#4

Такую же маску можно воспроизвести при помощи эффекта 'Reroute' (см. по тегу) в CV/GG:
#5

То есть в обоих примерах на верхней дорожки создаются непрозрачные титры, а вокруг них - прозрачность. С нижележащей дорожки V2 при помощи 'Swap Channels' или 'Reroute' портируются RGB-компоненты на V3, которыми "раскрашиваются" титры. Альфа-канал не меняется. Т.о. создаётся альфа-маска. И 'Swap Channels', и 'Reroute' задействованы в режиме 'shared effect'. Как это работает я подробно рассказывал в предыдущих публикациях.

Зачем в примере #5 глушится изображение на V2, надеюсь, понятно. А зачем глушится в примере #2 со 'Swap Channels',  смотрите в публикации "Edge+Swap Channels".

'Blur' на V5 сглаживает резкие, неровные края титров. 'Blur' на V4 размывает содержимое этой дорожки и, следовательно, внутри титров, что на V5 (ведь мы портируем с V4 RGB-компоненты).
Размытие будет значительно лучше видно, если на V5 и на V1 будет разный футаж.

На дорожке V5 вы видите два экземпляра титров.  Тот, что выше - центр. надпись, тот, что ниже - название блога. Титры на V3 и V2 - это "расшаренные"копии титров с V5. Зачем их так много ? Затем, что они нужны для создания объёмности. Ибо и на V3, и на V2   'Projector' смещает содержимое этих дорожек. Уловили суть фокуса ?
#6
Слева - настройки для V3,  Справа - для V2:

Значительную роль играют режимы наложения. 'Subtract' на V3, собирает воедино титры с трех дорожек и даёт оконтуренность и тень. 'Blur' на V3 сглаживает и убирает чрезмерную тень. 'Addition' на V2 даёт белую подсветку краям титров. 'Blur' на V2 тюнингует эту подсветку.

Разумеется, эти настройки не высечены на камне. На скриншоте ниже я изменил (установил) в 'Title' на V5 параметры:  'Drop shadow'=1, 'Outline' = 1. Они автоматически применились ко всем "расшаренным" копиям.
                                                                                       #7

Вы можете снять глушение с V4, но заглушить V5 и сравнить результат. Или вовсе снять глушение. Можете включить инвертирование RGB на V3.
В целях увеличения иллюзии объёмности можно увеличить смещение проектора на V3. Или сбросить его на V2. Для переключения следует навести указатель мыши на красную кнопку 'Arm track' и щёлкнуть ЛКМ, зажав при этом Shift.  Есть и другие хоткеи для этого - смотрите в руководстве.

Имеет также смысл вместо "расшаривания" титров, применить к каждой дорожке собственный эффект. Это может дать большую гибкость в настраивании результата. 
Или наоборот, создать отдельный проект, в котором настроить титры, а потом загрузить его на соответствующие дорожки в режиме "Вложенная последовательность | Nest sequence" (кнопка в окне 'Load'). Более того, все вот эти пять дорожек с футажом и эффектами можно загрузить в режиме "Nest sequence" в другой проект, и они будут представлены на дорожке всего лишь как один видеофайл. Очень удобно.

В примере выше с дорожки на дорожку перенаправляются RGB-компоненты. Но можно сделать всё и через замену альфа-канала.
#8 
(щёлкните ЛКМ для увеличения)
Я меняю местами дорожки V5 и V4, затем основной 'Swap Channels' перемещаю на V4, а его "расшар." копию -- на V5. И меняю его настройки: альфа-канал берется с V5, RGB-компоненты на V4 не меняются. Все остальные настройки прежние.

#9
-------------------------------
Точно такой же проект как на #2 в HV, можно собрать и в Cin-CV (в обеих цвет. моделях) при помощи 'Reroute':
'Reroute' "расшарен" c V4 на V5 в режиме 'Components only'. Остальные настройки те же, что и в HV.
(щёлкните ЛКМ для увеличения)
#10

#11

***

И только в Cinelerra-GG традиционно получится чёрти-что (точнее, ничего не получится). Даже с учётом специфики режима Subtract. Впрочем, там нынче принято называть проблемы спецификой, прописывать их как "фичи" в руководстве и строить на этом какой-то код, перекладывая таким образом проблемы на плечи доверчивых пользователей. 
Впрочем, пробуйте. Может у вас получится. Или ставьте Cin-HV и не морочьте себе голову.

04 января, 2025

Time displacement in Cinelerra: Time Front effect | Смещение во времени

 В 2006 году один из разработчиков Cinelerra CV Andraž Tori (Slovenija) написал для программы самый загадочный и малоизвестный в сообществе видеоэффект — "великий и ужасный" 'Time Front | Смещение во времени'.
Написал, < спросил > заинтересован ли кто-нибудь в документации к нему.. Энтузиазма в должной мере никто не проявил и остался плагин недокументированным.
Ныне эффект присутствует во всех версиях программы. При этом полное отсутствие инфoрмации по нему. Считанные единицы заграничных пользователей (2-3) в прошлом ещё < понимали > что это и как с ним работать. Связи с ними нет, их знания были утеряны. Немногие артефакты этой исчезнувшей цивилизации можно посмотреть в < этом > плейлисте на моём YT-канале (внизу плейлиста теперь есть и мои видеоролики). За 18 лет — ни одного видеоучебника или how-to. Из ныне активных пользователей никто про эффект ничего не знает. Из старой гвардии, с кем можно войти в контакт по e-mail — тоже никто. Даже сам Andraž, давно отошедший от дел, напрочь забыл как работать c эффектом.

В ходе выяснения как работает этот плагин и сбора информации для написания этой статьи и < статьи на англ. > для руководства CV мне нередко приходилось действовать надёжным, проверенным методом .
Написав документацию к плагину, я отправил её Адаму Вильямсу и спросил возможно ли ускорить работу плагина. Адам произвёл оптимизацию работы эффекта и в настоящее время TimeFront в Cinelerra HV быстрее, чем во всех остальных форках. Готовые бинарные сборки HV - здесь. Подробнее о репозитории - здесь.
UPD.: Адам сделал краткое < описание > плагина.

Заинтриговал ? Тогда поехали. 
Вдохновлялся Andraž идеями из < этой > статьи о варпинге (на англ.). Вы тоже сходите почитать — там познавательно и интересно. Главная идея состоит в возможности манипулирования временным потоком видеоряда, в результате разные участки видео перемещаются во времени с разной скоростью, и эти скорости также можно изменять. Плагин заставляет время по-разному протекать в разных участках видеопоследовательности, создавая в результате новую реальность.
 Спешу "разинтриговать" вас — всё сложное в Cinelerra на самом деле просто.

Плагин является аналогом Time Displacement effect in Adobe After Effects. Это временно́й варпинг.
Аналогично TD in AAE, Time Front эффект использует карту смещения, значения яркости/прозрачности пикселей карты и на основании этих значений производит расчёт смещения пикселей во времени, искажая тем самым изображение.

Смещение пикселей производится путём замены пикселей в текущем кадре пикселями в той же самой позиции, но из предшествующих кадров (пикселями на заданное число кадров назад на шкале времени). Таким образом плагин позволяет манипулировать положением пикселей изображения, исходя из значений пикселей в карте смещения. Карта смещения может генерироваться на основной дорожке, к которой применён эффект, а в режиме 'Other track as timefront' может быть сторонним изображением (изображение в оттенках серого или альфа-градиент), размещённым на отдельной дорожке. В последнем случае необходимо использовать технику 'Shared effect | Общий эффект'.

В основном эффект применяется при работе с кадрами, снятыми статичной камерой (при двигающейся камере сложнее обеспечить плавность движения), когда хотят придать постепенное ускорение или замедление отдельным частям изображения.  То есть возможно замедлить течение времени в определенной пространственно-временной области и ускорить его в другой области.

 Эффект позволяет реализовать интересный способ создания титров, когда текст встраивается поверх динамической текстуры (клубящегося дыма, горящего пламени, текущей воды, морских волн, облаков...). Таким образом, вы можете анимировать титры, логотипы.. Плагин позволяет смоделировать Slit-Scan эффект — традиционную технику щелевого сканирования, которая захватывает различные этапы движущегося изображения во времени.

Некоторые более сложные вещи (не все из них можно сделать с помощью этого плагина) представлены <здесь> .

"Time Front" - это мультитрековый, работающий в режиме реального времени видеоэффект. Эффект работает как с видео, так и со статич. изображениями.
В настройках программы должна быть выбрана цветовая модель с альфа-каналом. Иначе "кина не будет".

Пройдёмся подробнее по режимам (их всего три).


 Linear & Radial 
В этом режиме плагин не расшаривается на другую дорожку. Временна́я карта смещения генерируется на треке, к которому плагин применён как основной (не расшаренный). Генерируемая карта смещения представляет собой изображение в градациях серого. Это ступенчатый градиент, имеющий дискретные переходы от одного тона к другому.
В Linear режиме создаётся линейный, в Radial - радиальный градиент.

Как работает карта ?

Карта смещения накладывается на изображение. Диапазон значений интенсивности от 0 до 255.
На основании значений уровней интенсивности пикселей (ступенчатых уровней яркости (градаций серого)) производится искажение изображения путём смещения пикселей.
Участки изображения в текущем кадре заменяются пикселями из кадров, предшествующих текущему кадру, в той же позиции в том же самом изображении или предшеств. изображении (в зависимости от величины TimeRange).

Чем больше значение интенсивности, тем больше смещение.
Максимальная величина смещения (в кадрах, в форке Cin-CVE в секундах) задаётся параметром 'Time Range | Максим. диапазон смещения'.
Участки изображения, соответствующие пикселям карты со значением интенсивности 0 (чёрный), не получают никакого смещения. Участки изображения, соответствующие пикселям карты со значением интенсивности 255 (белый), получают максимальное смещение: такие участки заменяются пикселями из кадра, заданного параметром TimeRange. Участки изображения, соответствующие пикселям карты с промежут. значениями интенсивности (оттенки серого) также получают соответствующее смещение, но меньшее, чем максимальное. Более светлые пиксели карты вызывают большее смещение, более тёмные - меньшее. Т.е. замена производится из кадров, входящих в диапазон Time Range.


Для создания и настройки карты предлагается несколько параметров.

Для отображения и настройки карты смещения поставьте галочку в чекбоксе 'Show grayscale for tuning'.
С помощью параметров Inner/Outer Radius настраивается ширина и позиция сегментов градиента карты смещения. Таким образом, вы можете установить участки кадра, подлежащие замене.

По умолчанию линейный градиент идёт сверху вниз.
Параметр Angle изменяет угол поворота сегментов (по часовой и против часовой стрелки) путём задания направления.
Параметр X:Y позволяет позиционировать центр радиального градиента по осям X, Y.
Параметр Rate задаёт скорость периода между сегментами: Linear, Logarithmic, Squared.

Как я уже говорил выше, Time range определяет величину максимального смещения (диапазона), в котором будет происходить замена содержимого кадров. Однако этот параметр определяет лишь максим. границу. Величина смещения конкретного пикселя зависит от значения интенсивности соответствующего ему пикселя карты смещения. При помощи этого параметра вы можете задать число ступеней (сегментов) в карте смещения, и т.о. непрямым способом влиять на ширину и позицию сегментов. То есть речь идёт о выборе временно́го диапазона.

Параметр Inversion: инвертирует значения интенсивности пикселей карты. Черный становится белым, белый - чёрным. Промежуточные значения также учитываются.

Независимо от выбранного режима, для замены пикселей текущего кадра плагин использует пиксели из кадров, расположенных слева от курсора (предшествующие текущему кадру). Пиксели в слое, соответствующие более ярким областям карты смещения, заменяются пикселями в тех же областях, но на указанное количество кадров (секунд в cin-cve) назад во времени. Аналогично, пиксели в слое, соответствующие более темным областям карты смещения, заменяются пикселями в тех же областях, но на указанное количество кадров (секунд в cin-cve) вперед по времени.
Но в любом случае, области для текущего кадра берутся из другого кадра (времени) до курсора воспроизведения (до текущего кадра). Плагин никогда не использует пиксели из кадров, расположенных справа от курсора (текущего кадра), в отличие от Time Displacement effect in After Effects, где текущий кадр может заменяться пикселями как из предшествующих ему, так и из последующих кадров.

Рассмотрим следующий режим.

Alpha as timefront - Прозрачность как карта смещения.
Особо тут рассматривать нечего, ибо всё работает аналогично вышеописанному.
Плагин не расшаривается на другую дорожку. Временна́я карта смещения генерируется на треке, к которому плагин применён как основной (не расшаренный).
Генерируемая в этом режиме карта смещения тоже представляет собой изображение в градациях серого.
Разница с предыдущим режимом в том, что карта смещения строится на основании значений прозрачности изображения к которому применён эффект.
При этом пиксели карты с максим. значением интенсивности (255) (белый) соответствуют полностью непрозрачным пикселям оригинального изображения, а пиксели карты со значением интенсивности = 0 соответствуют полностью прозрачным пикселям оригинального изображения.
То есть полностью прозрачные участки ориг. изображения отображаются в карте чёрным, а полностью непрозрачные -- белым. Промежуточные значения прозрачности отображаются градациями серого.



Смещение рассчитывается аналогично вышеописанному. Более светлые пиксели карты (т.е. менее прозрачные пиксели ориг. изобр.) вызывают большее смещение, более тёмные - меньшее.

 В этом режиме параметры для настройки карты отсутствуют.

 И последний режим:

Other track as timefront -- Карта смещения - другой трек (даже более точнее будет 'Другой трек как временна́я карта смещения' ('Other track as a Temporal Displacement Map').
В этом режиме карта смещения строится либо на основании значений уровней интенсивности пикселей (ступенчатых уровней яркости (градаций серого)), либо на основании значений прозрачности (альфа-маска).
Однако в качестве карты используется стороннее изображение на другой дорожке.
То есть плагин должен быть расшарен на другую дорожку с размещенным на ней изображением, которое будет использовано в качестве карты смещения. Это может быть как статическое изображение (градиент серого, градиент прозрачности), так и видео с альфа-каналом. Вы можете использовать разного рода логотипы, а также титры, созданные на пустой дорожке в Cinelerra.

Расчёт смещения аналогичен вышеописанному. На скриншоте ниже на нижней дорожке расположено изображение с градиентом прозрачности. Time range = 3 .




Как создать 'shared effect' (как "расшарить" эффект) ?

Создаёте две дорожки:  V1 - нижняя дорожка, V2 - верхняя. Располагаете на верхней V2 материал, с которым будете работать. Располагаете на нижней V1 карту смещения. V2 - это основная дорожка (ведущая). V1 - ведомая.  ПКМ по V2 - дорожке и в контекстном меню выбираете "Attach effect | Применить эффект". В открывшемся окне выбираете 'Time Front | Смещение во времени'. ЛКМ по зелёной галочке. Эффект применился.
Теперь убедитесь, что курсор расположен в границах материала на верхней дорожке и сделайте щелчок ПКМ по нижней V1 - дорожке. В открывшемся окне выбираете в средней колонке (Shared effects | Общие эффекты) эффект 'Time Front | Смещение во времени'. ЛКМ по зелёной галочке. Эффект применился к V1 как расшаренный (ведомый).

Можно и по-другому.

Создаёте .., размещаете ... как описано выше. Теперь подымаете глаза к верхнему краю главного окна, щелчок ЛКМ по меню 'Video', в открывшемся меню ЛКМ по пункту 'Attach effect... | Применить эффект', в открывшемся окне выбираете эффект, внизу окна устанавливаете галочку в чекбоксе 'Attach single stanalone and share others | Применить как общий к остальным трекам'. ЛКМ по зелёной галочке. Окно закроется, эффект применится к V1 как расшаренный (ведомый). Если нажмёте кнопку 'Apply', то эффект применится, но окно останется открытым и вы сможете продолжить применять другие эффекты. 

 Карту смещения можно сделать в GIMP или в Cinelerra при помощи плагинов 'Gradient' и 'Histogram'.

Эффект 'Blur' в комбинации с эффектом 'Invert video' можно использовать для создания эффекта стеклянных, объёмных титров.

При помощи ключевых кадров можно изменять параметры эффекта с течением времени (динамическая автоматизация эффекта). Например, может быть интересным анимировать карту смещения, подвергнув динам. автоматизации параметры 'Inner/Outer Radius'

Чем больше частота кадров в видео, тем более плавные сглаженные переходы будут между сегментами.

Однако TimeFront эффект довольно медлен и ресурсоёмок. Используйте прокси. И/или материал, сжатый нормальными монтажными кодеками (mjpeg, dnxhd ... ), обеспечивающими покадровое сжатие. 

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

Примеры ниже сделаны в Cinelerra-HV.  

GIFs получились великоваты, поэтому дайте время им загрузиться, чтобы воспроизведение было плавным и быстрым.

Простой пример работы эффекта в режиме 'Radial'. YT-video на моём канале. Первая часть GIF показывает вариант с отключенным 'эффектом 'Reverse video' (= Off). Вторая часть - 'Reverse video' = On.

***

Ниже используется комбинация эффектов. Эту комбинацию использовал Herman Robak в < этом > YT-video (Demo 1). Я приводил ссылку на проект > в начале статьи.


Time Range = 42. YT-video на моём канале. Чем больше степень размытия, тем "жирнее" буквы. При необходимости можно добавить размытие отдельных каналов.  Robak размывал канал красного.


То же самое, но с другим футажом:


В примере ниже использована та же схема эффектов, но на нижней дорожке добавлен эффект ChromaKey, который удалил белый фон. YT-video на моём канале:




Ниже представлена комбинация эффектов в Cin-CV, воспроизводящая проект #2 от Herman Robak, представленный < этим > YT-видео (Demo 2):



Если воспроизводить его в Cinelerra-HV, то следует вместо 'Reroute' использовать 'Swap Channels':



Надо сказать, что это очень капризный к футажу проект (#2). Далеко не со всяким материалом получается искомый результат, когда буквы появляются при проезде через них автомобиля и после растекаются и исчезают.

13 января, 2024

'Swap channels | Смена каналов' - Cinelerra

'Swap channels | Смена каналов' - это плагин для цветокоррекции в Cinelerra, позволяющий брать информацию (значение) для определённого канала из другого канала в том же самом изображении. Вы можете назначить разные источники для каждого из R, G, B, A каналов в том же самом изображении. Эффект работает как со статичными изображениями, так и с видео. UPD.: модификация плагина, представленная в Cin-HV 9, позволяет брать информацию для канала из другого изображения (см. в конце статьи).

Это один из самых первых плагинов Cinelerra. Он появился ещё в Broadcast2000, затем перекочевал в 2002 году в HV и ныне присутствует во всех версиях Cinelerra. Кроме того, в Cin-GG имеется несколько плагинов группы FFMPEG, выполняющих те же задачи.
 
The Swap channels (Shift Channels) effect  in Cinelerra

Cinelerra: the Swap Channels (Shift Channels) effect.


Рассмотрим стартовые настройки эффекта:

The Swap channels effect's menu - Cinelerra

В вертикальной колонке справа представлены выходные R, G, B, A каналы. В выпадающем меню, отдельном для каждого выходного канала, вы можете выбрать какой из R, G, B, A каналов исходного изображения станет источником для R, G, B, A выходного канала.
Математически, настройки по умолчанию выглядят так:

255, 0, 0 -> R
0, 255, 0 -> G
0, 0, 255 -> B
  Alpha   ->  A
У пользователей, знакомых с Adobe After Effects, глядя на Swap Channels в Cinelerra, может возникнуть состояние Déjà Vu. Да, чувства вас не обманывают - это тот самый 'Shift Channels', но в минималистичном варианте: среди опций здесь нет Luminance, Hue, Lightness, Saturation. А в остальном всё тоже самое и работает точно так же, только некоторые параметры называются по-другому.
Рассмотрим опции подробно, ибо детальное описание этих плагинов в интернете отсутствует. Я встречал лишь объяснения в армейском стиле "делай раз, делай два, повторяй за мной, думать вам не положено - за вас уже подумали":
Red - значение красного канала исход. изображения, которое будет в выходном канале.
Green - значение зелёного канала исход. изобр., которое будет в выход. канале.
Blue - значение синего канала исход. изобр., которое будет в выход. канале.
Alpha - альфа-канал исход. изображения.  Если эта настройка применена к цветовому каналу, то цвет будет отображаться в соответствии с картой прозрачности изображения. В полностью прозрачных участках цвет будет полностью прозрачным, в полностью непрозрачных участках цвет будет полностью непрозрачным. Промежуточные значения прозрачности также учитываются. В этих участках цвет пикселей будет смешиваться с цветом пикселей нижележащего изображения в соответствии с установленным режимом наложения. Однако это не всё ! Значение интенсивности цветового канала будет изменяться в диапазоне 0 - 255: от 0 в участках с нулевой прозрачностью до 255 - в полностью непрозрачных участках. И на основании этих изменений будет рассчитываться выходной цвет для всего изображения.
0 % - отменяет значение исходного канала и вместо него устанавливает для выходного R, G, B канала минимальное значение интенсивности (0). Установив 0 % для всех трёх R, G, B каналов, получим чёрное изображение на выходе (значение альфа-канала должно быть при этом либо 100%, либо Alpha). Для альфа-канала устанавливает полную прозрачность (0), при этом содержимое дорожки становится полностью прозрачным независимо от того какие настройки заданы для R, G, B каналов.

100 % - отменяет значение исходного канала и вместо него устанавливает для выходного R, G, B канала максимальное значение интенсивности (255). Для альфа-канала устанавливает полную непрозрачность (1) (опаковость). Установив 100 % для всех трёх R, G, B каналов, получим белое изображение на выходе (значение альфа-канала должно быть при этом либо 100%, либо Alpha).

Nota bene: Плагин, будучи применённым к временному кадру, сначала применяет установленное значение для альфа-канала, а после применяет цветовые значения согласно настройкам. Если для альфа-канала задано 100 %, то имеющиеся в исходном изображении прозрачные участки отображаются в выходном изображении непрозрачными чёрными (цветовые каналы заполняются zero = black). Если A=100 % и при этом для цветового канала(-ов) задано 100% (255), то такие участки принимают цвет согласно настройкам канала(-ов), для которого(-ых) установлено 100%. Плагин рассматривает исходное значение интенсивности цвета таких участков как (0, 0, 0) и, исходя из этого значения, рассчитывает выходной цвет. См. примеры  #9  #10  #11.

Эффект Swap Channels позволяет перемешивать, дублировать каналы, конвертировать в Cinelerra цветное изображение в изображение в градациях серого (чёрно-белое). Как известно, это такое изображение, в котором значения каналов равны друг другу. Для этого следует установить для R, G, B каналов один и тот же исходный канал. В примере ниже в качестве источника взят канал Red:
#1
Grayscale image in Cinelerra.
#2
Grayscale with cinelerra.

Как работает плагин ? Если в некой XXX-точке исходного изображения значения RGB составляли, например, (R209, G160, B123), то после установки Red для всех выходных каналов, значения R, B каналов в этой XXX-точке примут значение Red в этой точке, которое равно 209 и на выходе мы получим (R209, G209, B209). А если в некой YYY-точке значения в исход. изобр. были (R53, G48, B12), то на выходе они составят (R53, G53, B53). Таким образом, выходные каналы R, B принимают значения красного канала, заданного в настройках. Более светлые участки в изображении означают большее значение интенсивности цвета, более тёмные - меньшее. И вот вам уже градации серого.
Математически (другой пример):
Исходное изображ.:                            После смены:
255, 0, 0 -> R                                        255, 0, 0 -> R => R (White)
0, 255, 0 -> G                                        255, 0, 0 -> G => R (Black)
0, 0, 255 -> B                                        255, 0, 0 -> B => R (Black)

Вы можете проэксперементировать с каждым из каналов и выбрать наилучший вариант.
Давайте возьмём более простой пример:
#3

В исходном изображении в красной полосе значение цвета (R255, G0, B0). Так как в настройках для красного и синего установлен зелёный, а значение зелёного в красной полосе исход. изобр. =0, то меняем значение R255 и B0 на значение зеленого в красной полосе = 0 и в результате на выходе получаем чёрный цвет (R0, G0, B0). В зелёной полосе (R0, G255, B0) - аналогично меняем значения красного и синего каналов на значение зелёного 255 - получаем (R255, G255, B255), то-бишь белый цвет. Ну и в синей полосе (R0, G0, B255) меняем на 0 - получаем чёрный цвет (R0, G0, B0).

В примере ниже на верхней дорожке изображение без альфа-канала (взято отсюда) - обрезано инструментом 'Маска' в режиме 'Multiply' (в Compositor) , переведено в grayscale, а затем значение Red channel (в котором контрастность лучше, чем в остальных каналах) перенаправлено в Alpha channel (то есть красн. канал используется как Alpha Matte):
#4
cinelerra - grayscale, mask, color channel

Как это сделано:
#5
create grayscale and mask in cinelerra
Ещё пример (ниже).
Здесь всё выглядит просто. В настройках красный меняем на синий, синий на красный и на выходе соответственно:
исходный синий становится красным, зеленый остаётся зелёным, исходный красный становится синим:
#6
swap channels in cinelerra

А в следующем примере цветоизменение уже не очевидно и для новичка может быть непонятно:
#7

Давайте посмотрим на математич. формулу:

255 0   0         0  255 0   R
0   255 0        255 0   0   G
0     0  255       0 255 0   B

В левой и правой колонках горизонтальные строки - исходные каналы.
Сверху вниз значения R, G, B для каждой вертик. цветной полосы до (слева) и после (справа) применения эффекта. Результирующий цвет тоже удобно считать сверху вниз: Green, Magenta, Black.

Более детально. В исходном изображении в красной полосе значение цвета (R255, G0, B0). Так как в настройках для красного установлен зелёный, а значение зеленого в красной полосе = 0, то меняем значение R255 в красной полосе на значение зеленого в красной полосе = 0 . Так как в настройках для зелёного установлен красный, а значение красного в красной полосе = 255, то меняем значение G0 на значение красного в красной полосе = 255 . Так как в настройках для синего установлен зелёный, а значение зелёного в красной полосе = 0, то значение B0 не изменяется и остаётся = 0 . В результате красная полоса на выходе превращается в зелёную: (R255, G0, B0) => (R0, G255, B0). Аналогично ведётся расчёт в остальных полосах.

Технику обмена значениями красного и синего каналов можно использовать при работе с инфракрасными изображениями и для создания эффекта инфракрасного изображения в Cinelerra:
#8
How to create an infrared effect with Cinelerra.
Математически:
Исходное изображ.:                                     После смены:
255, 0, 0 -> R                                        0,     0,   255 -> R => Blue
0, 255, 0 -> G                                        0,   255, 0     -> G => Green
0, 0, 255 -> B                                        255, 0,   0     -> B => Red

Углубимся в работу некоторых опций.
На скриншоте ниже я использую Cinelerra-HV - там фон отображается сеточкой.
Изображение 720x576 состоит из центральной части (3 цветных полосы) и прозрачной рамки вокруг центр. части:
#9


R=100%, G=G, B=B, Alpha=100%
Так как Alpha=100%, то выходное изображение будет полностью непрозрачным. R=100% означает, что в любой точке выходного изображения в том числе и бывших прозрачных участках R=255. G=G, B=B означает, что значения зеленого и синего в выход. изобр. = значениям в исходном. В красной полосе в исходном изобр. значения интенсивности цвета равны R255,G0,B0 и значит на выходе будет R255,G0,B0 = красный цвет. В зелёной полосе в исход. изображении R0,G255,B0 и на выходе будет R255,G255,B0 = жёлтый цвет. В синей полосе в исход. изобр. R0,G0,B255 и на выходе будет R255,G0,B255 = пурпурный цвет.
Вопрос: почему прозрач. рамка красного цвета, а не жёлтого или пурпурного ? Как я уже говорил выше, разбирая опции: Если для альфа-канала задано 100 %, то имеющиеся в исходном изображении прозрачные участки отображаются в выходном изображении непрозрачными чёрными. Если A=100 % и при этом для цветового канала(-ов) задано 100% (255), то такие участки принимают цвет согласно настройкам канала(-ов), для которого(-ых) установлено 100%. Плагин рассматривает исходное значение интенсивности цвета таких участков как (0, 0, 0) и, исходя из этого значения, рассчитывает выходной цвет.
В данном примере, прозрачные участки становятся непрозрачными чёрными согласно настройке Alpha=100%, далее плагин рассматривает их как R0,G0,B0 и исходя из этого значения, рассчитывает выходной цвет, применяя к ним настройки цвет. каналов => R255 (то-есть R=100%), а G, B = 0. Если установить 100% и для Blue, то красный везде станет пурпурным. Тот же самый результат можно получить, если переключиться в цветовую модель без альфа-канала RGB-8 bit.

Возьмём другое изображение - здесь будет более наглядно:
#10
cinelerra - color corrections - shift channels

Обратите внимание ! Размер оригинального изображения = 1280x720. Project size (canvas size) = 1980x1080. Temporary size (track size) = 1980x1080. Временный кадр (temporary) состоит из оригин. изображения (1280x720) и прозрачных полос вокруг, добавляемых программой до размеров холста. В Cinelerra эффект применяется ко всему временному кадру (temporary), что мы и видим на холсте в Compositor. Для простоты усвоения материала новичками я везде выше говорил о "исходном изображении". Но, строго говоря, это неверно. Вы теперь понимаете почему ? Почитайте в блоге материалы по тегу "canvas".

Ещё пример: #11


Заданные настройки: R=Alpha, G,B=100%, Alpha=100%
Центр. часть - белая, а рамка вокруг - циановая. Почему ?
Так как задано Alpha=100%, то альфа-канал выходн. изображ. полностью непрозрачный. Прозрачн. участки стали черными и, как я говорил выше, далее плагин рассматривает их как R0,G0,B0. Каналы G, B имеют максимальное значение 255. Красный выходной канал использует значения альфа-канала исход. изобр.: значение альфа-канала в центр. части исход. изображения = 1, а в прозр. рамке вокруг центр. части = 0. Таким образом, в центр. части выходного изображения R=255 и вместе с G255+B255 составляют белый цвет. А в рамке вокруг центр. части значение красного = 0 (так как в исход. изобр. значение альфа-канала там = 0). Поэтому прозрачная рамка вокруг центр. части цианового цвета: Cy = R0+G255+B255. Если установить и для зелёного выходного канала источником альфа-канал, то рамка будет синего цвета.
 
В примере выше альфа-канал имеет два значения.
А как работает плагин, если изображение имеет промежуточные значения прозрачности ?
А вот так:
#12
Alpha channel in cinelerra

Здесь я использую предварительно модифицированную в GIMP картинку - добавлен градиент прозрачности. Сверху вниз прозрачность убывает.
В Cinelerra в настройках эффекта для выходного изображ. установлено A=100. Для Red задано 'Alpha'. G, B = исходным значениям. И дальше как уже описано выше.
В верхней части красной, зеленой и синей полос значение R=0 так как значение альфа-канала там = 0 и следовательно выходной цвет в красн. полосе R0,G0,B0 , а в зеленой и синей полосах цвет сохраняет свои исходные значения R0,G255,B0 , R0,G0,B255. 
В нижней части красн. полосы мы видим R255,G0,B0 , зелёной полосы исход. изображения - жёлтый R255,G255,B0 , синей исходного - пурпурный R255,G0,B255.
Математика понятна ? Значение красного в каждой полосе исходного изобр. постепенно изменяется в соответствии со значением 'Alpha' (градиентом прозрачности) от 0 до 1, т.е. от 0 до 255. И результирующий цвет в выходном изображении пересчитывается соответственно.
Для наглядности примерная схема (3 вертик. цв. полосы):
                    Красн.           Зелён.         Синий
верх (A=0):     R0,     G0, B0 | R0,    G255,  B0 | R0,     G0, B255
сер. (A≈50): ≈ R130, G0, B0 | R130, G255, B0 | R130, G0, B255
низ (A=100):   R255, G0, B0 | R255, G255, B0 | R255, G0, B255

И вот ещё парочка контрольных тестов на понимание происходящего:
#13

Почему в верхнем примере: зелёный квадрат, т.е. чёрные полосы стали зелёными, а ниже - чёрная, зелёная, чёрная полосы ?
0% для красного и синего каналов отменяет их исход. значение и устанавливает 0 - это значит, что в любой точке выходного изображения R=0, B=0. В верх. примере зелёный изменяется в соответствии со значением альфа, аналогично схеме выше. В нижнем всё просто - для выходных каналов берётся фиксированное исходное значение зелёного 255, а для красного и синего задан 0. В красной полосе в исход. изобр. было R255,G0,B0, а так как для выходного изображ. мы задали R=0, то значит на выходе будет R0,G0,B0 - чёрный. В синей аналогично. Ну и в зелёной исходной - для выхода установлено фиксированное исходное значение зелёного 255, а для красного и синего у нас задан 0.
Стремился разложить предельно понятно, на пальцах.

Эффект Swap Channel имеет смысл использовать в комбинации с другими эффектами Cinelerra. В этом случае нам открываются более широкие возможности.
Например, eсли вы решили создать alpha track matte key effect in Cinelerrra, но хотите использовать в качестве alpha track matte (подложки) не альфа-канал, а какой-то другой канал, который определяет требуемую область прозрачности лучше, чем альфа-канал (или в случаях, когда исходное изображение не содержит альфа-канала), примените Swap Channels и перенаправьте с его помощью желаемый канал в альфа-канал, а после примените эффект 'Reroute | Перенаправление' в режиме 'Alpha Replace', перенаправив Alpha Matte с одной дорожки на другую и создав таким образом Alpha Track Matte.


Давайте что-нибудь сделаем. На нижней дорожке - чёрно-белая картинка без альфа-канала 
$ pngcheck OK: ./wmn.png (720x576, 24-bit RGB, non-interlaced, 97.2%).

Обращайте внимание на Overlay modes, значение Fade.
Используемый Font: Dubiel, Font Color: #FF1C56
#14

Color correction effects in Cinelerra: shift (swap) color channels, invert color channels, blur color channels.

Те же самые настройки, но с другой картинкой:
#15
Swap color channels in Cinelerra

В следующих примерах задействован уже знакомый читателям по предыдущим публикациям эффект 'Reroute |Перенаправление':                  

#16
(здесь я откорректировал при помощи инстр. 'Camera' участки изобр. с верх. дорожки, которые попадают в альфа-маску):

Cinelerra - swap color and reroute color channel to alpha channel

То же самое, но с другими настройками:
#17

cinelerra - shift color channels

Усложним немного конструкцию:
#18

Cinelerra: a mask on one colour channel and then to change that into a masking track

Сменим режим наложения:
#19

Cinelerra: a mask, colour channel, a masking track

Сменим настройки: 
#20

Cinelerra - replacing one channel with a different channel from the other layer.

Это не всё, что можно сделать с этим плагином. Возможно позже добавлю ещё что-нибудь.
P.S.
Вышеприведённые примеры сделаны в Cinelerra-CV 2.3 на Lubuntu 18.04 64-bit.
C Cinelerra-HV 8 совместимы примеры, в которых отсутствует эфф. 'Reroute' (в HV нет этого эффекта), но задействовав 'Swap Channels' в технике 'shared effects' вы сможете получить аналогичные результаты. Кроме того, смотрите обновление внизу статьи.
C Cinelerra-GG примеры технически совместимы, но с рядом оговорок. 
Во-первых, некоторые режимы работают наоборот.
Цитата из письма GoodGuy:
"This is the math form Gimp currently uses: STD_BLEND + (Sa == 0.0 || Dc / Sc > Da / Sa ? Sa * Da : Dc * Sa * Sa / Sc)
HV 4.6.1 (and CV) actually uses: (Sc > 0 ? Dc / Sc : 1)
Cin-GG actually uses: (Dc > 0 ? Sc / Dc : 0)
So, none of these look like Gimp. But Divide is a bit squirrelly.
It can fail on a per pixel basis because of divide by zero. I prefer src (top track) / dst (btm track) with divide by zero as black (not white). I think this is the way most would like to see it work, since it is a stack of operations, and it easier to work up from zero, than down from 1.  
... Source is above; Destination is below."

Например:
Subtract overlay mode
- в HV (или здесь), CV (или здесь):
static const char *blend_subtract_frag = 
" result_color.rgb = dst_color.rgb - src_color.rgb;\n";
- в GG  - наоборот:
58 // SUBTRACT     [(Sa - Da), (Sc - Dc)]

Divide overlay mode
- в HV, CV*: dst_color.rgb / src_color.rgb
- в GG - наоборот [Sa + Da - Sa*Da, Sc*(1 - Da) + Dc*(1 - Sa) +  Sc / Dc] и с ним в cin-gg проблемы (даже с учётом переворота).

Поэтому если вы захотите воспроизвести примеры, где задействован Subtract overlay mode, вам потребуется, вероятно, перевернуть всё "вверх ногами".
Во-вторых, в этом форке, похоже, есть ряд проблем как с режимами наложения, так и с альфа-каналом (какие-то невнятные глюки). Я говорил об этом в статье о объёмных титрах в Cinelerra, где привёл ряд скриншотов с описанием проблем GG, а позже добавил ряд вариантов обходных путей (статью читать с конца).

#14, #15 - воспроизводятся.
#16  - воспроизводится, но несколько не то. Addition не выдаёт результат как в CV и его потребуется отключить. Переворот не требуется. А если перевернуть, то получается ерунда.
#17 - ерунда какая-то получается..
#18 - нормально воспроизводится.
#19 и #20 (там Subtract) - я пробовал воспроизвести и как в CV, и с переворотом  -> или вообще чёрти-что, или только часть требуемого результата.

Тем не менее, вы вполне можете использовать этот форк для описываемых в этой статье целей, ибо сам по себе плагин работает в GG нормально - вопросы возникают при комбинировании его с конкретными режимами наложения и др. эффектами. 
Я хотел воспроизвести всё вышеописанное в GG.. Может недостаточно старался. Попробуйте вы.

P.P.S
В Cinelerra-CVE этот плагин получил новую опцию '50%':


Но этот экспериментальный форк по-прежнему находится в "экспериментальном состоянии" и для работы не пригоден (в том числе и потому, что многие необходимых для работы опции и настройки были удалены или урезаны). А вот для портирования ряда нововведений фундаментального плана его можно и нужно рассматривать. Но заниматься этим должны специалисты, понимающие что они делают - код сложный.
P.P.S.
Добавил в руководство по Cinelerra-CV описание плагина на английском. В РФ, РБ сайт доступен через VPN/proxy (заходите через Opera).
UPD.: В февр. 2024 Адам модифицировал эффект в:


С этой модификацией эффект в Cinelerra HV  работает аналогично the 'Set channels' effect in Adobe After Effects и позволяет брать информацию (значение) для определённого канала из другого канала другого изображения, находящегося на другой дорожке. Модификацию следует применять в соответствии с техникой 'Shared effects'. Дорожка, к которой эффект применён как основной,  рассматривается как основная (воспринимающая) (0), а дорожка, к которой он применён как "shared effect" - это Source track (источник). 

В колонке 'Source buffer', то-бишь 'Source track', задаётся дорожка-источник. Если для воспринимающей дорожки выбрать 0, то источником будет канал изображения на этой же дорожке. В данном меню доступны варианты: 1, 2, 3. UPD.: Адам увеличил число возможных источников до 16. Это дорожки-источники, на которые "расшарен" эффект. При этом отсчёт идёт в порядке следования дорожек, содержащих расшарен. эффект, после воспринимающей дорожки. Номер дорожки, представленный на панели управления, не имеет значения. В примере ниже источником альфа-канала задан 1, то-есть дорожка 'Video 1'. Но это потому, что эта дорожка - первая с "расшаренным" эффектом после основной, а не потому, что в поле 'Название трека' написано 'Video 1'. Там могло бы быть и 'Video 111'. 
Здесь при помощи модифицированного 'Swap Channels' создаётся Alpha Track Matte в Cinelerra.  Тоже самое  я показывал в предыдущих публикациях, но используя эффект 'Reroute'.




Чтобы получить интересующие меня участки изображения внутри букв, я перевернул картинку на дорожке 'Video 3' эффектом 'Flip' и отрегулировал её положение инструментом 'Camera' дорожки 'Video 3'. Эффект 'Scale' дорожки 'Video 2' масштабировал картинку, убрав ненужные части за пределы холста. Шрифт: 'Glamoure'/'Liberation Serif'. Cin-HV не видит OTF-fonts, поэтому самое простое решение - при помощи онлайн-конвертера конвертировать шрифт в TTF, а затем разместить его в каталоге /home/user/.fonts .
Коротенький < ролик >. И ещё раз: пример на картинке выше сделан в Cin-HV. В прочих форках используйте для таких целей эффект 'Reroute'. Схема будет такая:


UPD.: 
Адам сделал видео, где показывает пример использования  обновлённого 'Swap Channles' эффекта в Cin-HV 9.
Мой видеоролик, показывающий работу предыдущей версии эффекта.
UPD.03.2025_1: Ещё примеры использования этого эффекта смотрите в статье об эффекте 'Edge'.
UPD.03.2025_2: В статье "Cinelerra — how to create "fake" 3d text effect"  эффект 'Swap Channles' используется для создания иллюзии объёмных титров (для HV/CV).