Это один из самых первых плагинов Cinelerra. Он появился ещё в Broadcast2000, затем перекочевал в 2002 году в HV и ныне присутствует во всех версиях Cinelerra. Кроме того, в Cin-GG имеется несколько плагинов группы FFMPEG, выполняющих те же задачи.
Рассмотрим стартовые настройки эффекта:
В вертикальной колонке справа представлены выходные R, G, B, A каналы. В выпадающем меню, отдельном для каждого выходного канала, вы можете выбрать какой из R, G, B, A каналов исходного изображения станет источником для R, G, B, A выходного канала.
Математически, настройки по умолчанию выглядят так:
0, 255, 0 -> G
0, 0, 255 -> B
Alpha -> A
Green - значение зелёного канала исход. изобр., которое будет в выход. канале.
Blue - значение синего канала исход. изобр., которое будет в выход. канале.
Alpha - альфа-канал исход. изображения. Если эта настройка применена к цветовому каналу, то цвет будет отображаться в соответствии с картой прозрачности изображения. В полностью прозрачных участках цвет будет полностью прозрачным, в полностью непрозрачных участках цвет будет полностью непрозрачным. Промежуточные значения прозрачности также учитываются. В этих участках цвет пикселей будет смешиваться с цветом пикселей нижележащего изображения в соответствии с установленным режимом наложения. Однако это не всё ! Значение интенсивности цветового канала будет изменяться в диапазоне 0 - 255: от 0 в участках с нулевой прозрачностью до 255 - в полностью непрозрачных участках. И на основании этих изменений будет рассчитываться выходной цвет для всего изображения.
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) и, исходя из этого значения, рассчитывает выходной цвет.
Эффект Swap Channels позволяет перемешивать, дублировать каналы, конвертировать в Cinelerra цветное изображение в изображение в градациях серого (чёрно-белое). Как известно, это такое изображение, в котором значения каналов равны друг другу. Для этого следует установить для R, G, B каналов один и тот же исходный канал. В примере ниже в качестве источника взят канал Red:255, 0, 0 -> R 255, 0, 0 -> R => R
0, 255, 0 -> G 255, 0, 0 -> G => R
0, 0, 255 -> B 255, 0, 0 -> B => R
В исходном изображении в красной полосе значение цвета (R255, G0, B0). Меняем значение R255 и B0 на значение зеленого в красной полосе 0 - получаем чёрный цвет (R0, G0, B0). В зелёной полосе (R0, G255, B0) - аналогично меняем значения красного и синего каналов на значение зелёного 255 - получаем (R255, G255, B255), то-бишь белый цвет. Ну и в синей полосе (R0, G0, B255) меняем на 0 - получаем чёрный цвет (R0, G0, B0).
Здесь всё выглядит просто. В настройках красный меняем на синий, синий на красный и на выходе соответственно:
исходный синий становится красным, зеленый остаётся зелёным, исходный красный становится синим:
Давайте посмотрим на математич. формулу:
255 0 0 0 255 0 R0 255 0 255 0 0 G
0 0 255 0 255 0 B
Сверху вниз значения R, G, B для каждой вертик. цветной полосы до и после применения эффекта. Результирующий цвет тоже удобно считать сверху вниз: Green, Magenta, Black.
Технику обмена значениями красного и синего каналов можно использовать при работе с инфракрасными изображениями и для создания эффекта инфракрасного изображения в 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 цветных полосы) и прозрачной рамки вокруг центр. части:
Так как 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 = пурпурный цвет.
В данном примере, прозрачные участки становятся непрозрачными чёрными согласно настройке Alpha=100%, далее плагин рассматривает их как R0,G0,B0 и исходя из этого значения, рассчитывает выходной цвет, применяя к ним настройки цвет. каналов => R255 (то-есть R=100%), а G, B = 0. Тот же самый результат можно получить, если переключиться в цветовую модель без альфа-канала RGB-8 bit.
Обратите внимание ! Размер оригинального изображения = 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. Если установить и для зелёного выходного канала источником альфа-канал, то рамка будет синего цвета.
А как работает плагин, если изображение имеет промежуточные значения прозрачности ?
А вот так:
Здесь я использую предварительно модифицированную в GIMP картинку - добавлен градиент прозрачности. Сверху вниз прозрачность убывает.
В Cinelerra в настройках эффекта для выходного изображ. установлено A=100. Для Red задано 'Alpha'. G, B = исходным значениям. И дальше как уже описано выше.
В верхней части красной, зеленой и синей полос значение R=0 так как значение альфа-канала там = 0 и следовательно выходной цвет в красн. полосе R0,G0,B0 , а в зеленой и синей полосах цвет сохраняет свои исходные значения R0,G255,B0 , R0,G0,B255.
Математика понятна ? Значение красного в каждой полосе исходного изобр. постепенно изменяется в соответствии со значением 'Alpha' (градиентом прозрачности) от 0 до 1, т.е. от 0 до 255. И результирующий цвет в выходном изображении пересчитывается соответственно.
Для наглядности (примерная схема):
сер. (A≈50): ≈ R130, G0, B0 | R130, G255, B0 | R130, G0, B255
низ (A=100): R255, G0, B0 | R255, G255, B0 | R255, G0, B255
И вот ещё парочка контрольных тестов на понимание происходящего:
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.
Давайте что-нибудь сделаем. На нижней дорожке - чёрно-белая картинка без альфа-канала
В следующих примерах задействован уже знакомый читателям по предыдущим публикациям эффект 'Reroute |Перенаправление':
Это не всё, что можно сделать с этим плагином. Возможно позже добавлю ещё что-нибудь.
Но этот экспериментальный форк по-прежнему находится в "экспериментальном состоянии" и для работы не пригоден (в том числе и потому, что многие необходимых для работы опции и настройки были удалены или урезаны). А вот для портирования ряда нововведений фундаментального плана его можно и нужно рассматривать. Но заниматься этим должны специалисты, понимающие что они делают - код сложный.
С этой модификацией эффект в Cinelerra HV работает аналогично the 'Set channels' effect in Adobe After Effects и позволяет брать информацию (значение) для определённого канала из другого канала другого изображения, находящегося на другой дорожке. Модификацию следует применять в соответствии с техникой 'Shared effects'. Дорожка, к которой эффект применён как основной, рассматривается как основная (воспринимающая) (0), а дорожка, к которой он применён как "shared effect" - это Source track (источник).
Чтобы получить интересующие меня участки изображения внутри букв, я перевернул картинку на дорожке 'Video 3' эффектом 'Flip' и отрегулировал её положение инструментом 'Camera' дорожки 'Video 3'. Эффект 'Scale' дорожки 'Video 2' масштабировал картинку, убрав ненужные части за пределы холста. Шрифт: 'Glamoure'/'Liberation Serif'. Cin-HV не видит OTF-fonts, поэтому самое простое решение - при помощи онлайн-конвертера конвертировать шрифт в TTF, а затем разместить его в каталоге /home/user/.fonts .
Коротенький < ролик >. И ещё раз: пример на картинке выше сделан в Cin-HV. В прочих форках используйте для таких целей эффект 'Reroute'. Схема будет такая: