13.01.2024

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

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

Это один из самых первых плагинов Cinelerra. Он появился ещё в Broadcast2000, затем перекочевал в 2002 году в HV и ныне присутствует во всех версиях Cinelerra.
 
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) и, исходя из этого значения, рассчитывает выходной цвет.

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

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

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

В исходном изображении в красной полосе значение цвета (R255, G0, B0). Меняем значение 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.
Технику обмена значениями красного и синего каналов можно использовать при работе с инфракрасными изображениями и для создания эффекта инфракрасного изображения в 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. Тот же самый результат можно получить, если переключиться в цветовую модель без альфа-канала 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. И результирующий цвет в выходном изображении пересчитывается соответственно.
Для наглядности (примерная схема):
верх (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 нет этого эффекта.
C Cinelerra-GG примеры технически совместимы, но с рядом оговорок. 
Во-первых, некоторые режимы работают наоборот.
Например:
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, и с переворотом  -> или вообще чёрти-что, или только часть требуемого результата.

"Опустим же завесу милосердия над концом этой сцены" и не будем приводить скриншоты. Даже если на стартовой картинке программы написано 'professional video editing'.

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

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


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


Модификацию следует применять в соответствии с техникой 'Shared track'. С этой модификацией эффект в Cinelerra HV  работает аналогично the 'Set channels' effect in Adobe After Effects.




09.01.2024

CD Ripper in Cinelerra

Знаете ли вы, что в Cinelerra есть эффект CD-Ripper ? Где ? Ну, где-где.. В главном окне. 😁
В меню "Аudio" выбираем пункт "Render effect ...". Требуется предварительно добавить аудиодорожку (Audio -> Add track), иначе в этом меню фейсконтроль мы не пройдём - программа выдаст сообщение "No recordable tracks specified" и дальше не пустит. Если аудиодорожка присутствует, тогда откроется окно "Render effect .." и там вы увидите его первым в списке эффектов. 

cinelerra - render effect

Далее следует задать выходной файл. Если вы предварительно не задали участок на аудиодорожке, получите сообщение "No selected range to process". Участок можно задать выделением или точками входа/выхода. После этого вы наконец попадёте в окно плагина:
cd-ripper cinelerra

Как работает эффект ? Как видите, он прост как двери, проще некуда. Я добавил в руководство краткое описание, а больше тут и описывать нечего. Если вы намерены извлечь содержимое диска полностью, то следует в поле "Track" справа задать значение 100. Если только часть, тогда задайте задайте конкретный диапазон с какого по какой трек вы желаете произвести извлечение. Помните, что плагин извлекает все дорожки в один (единый) файл.


23.08.2023

Canvas (холст) и W Scale (Ratio), H Scale (Ratio) в Cinelerra

В Cinelerra (во всех версиях) в окне 'Формат проекта' (Set Format) имеются параметры W и H, определяющие Canvas Size (Размер холста). Присутствуют там также W Ratio и H Ratio | Ширина (Соотношение) и Высота (Соотношение). 
UPD.: В форке Cin-CVE эти параметры давно были переименованы в W Scale и H Scale, а в янв. 2024 - и в Cin-HV, и Cin-CV (мной).
Что это такое ?
По умолчанию, Canvas Size (Размер холста), то-бишь размер проекта, он же размер вывода (Output size) при первом старте программы равен 720х576, а в полях W Ratio и H Ratio стоит 1.0000. Например, вы решили увеличить размер холста в 2 раза. Вам не нужно пересчитывать цифры - просто введите в эти поля значение '2'. Значения в полях W и H автоматически будут пересчитаны как 1440 и 1152 и вы увидите как изменится размер холста в Составителе (Compositor). 
Таким образом: в полях W Scale (Ratio), H Scale (Ratio) стоят значения, определяющие соотношение размеров нового холста к старому (в рассматриваемом примере 1440х1152 к 720х576). При этом какие бы значения ни стояли в полях W и H, в W Ratio и H Ratio будут значения, определяющие соотношение к 720х576. Например, установим размер холста 1280х720. W Ratio и H Ratio станут 1.7778 и 1.2500 соответственно, ибо 1280 / 720 = 1.7778 ...

А теперь загрузим медиаресурс (картинку или видео) в окно Ресурсы (Resources), щёлкнем там правой кнопкой по иконке м.ресурса (например, размером 1280х720), перейдём в Match...-> щёлкнем Match project size (Согласовать размер проекта). В окне Set Format размер холста автоматически примет значение 1280x720, а в полях W Ratio, H Ratio значения будут 1.0000. При последующих изменениях размера холста, коэффициенты будут пересчитываться к холсту размера 1280x720.
Выберем из предустановок размер холста 1920x1080. W Ratio, H Ratio примет значение 1.5000 (так как 1920 / 1280 = 1.5 ...). А теперь установим значения W Ratio, H Ratio = 1.0000.  Canvas Size автоматически примет размер 1280x720.
Вот и всё - так это работает.

Когда ещё это может быть полезно ?
Например вот. Здесь, в целях стабилизации видео, сначала увеличили Track Size (Размер трека) (правой кнопкой по треку), введя значение 1.2 в поле Scale и увеличив тем самым ширину и высоту на 20%, а затем коэффициент '1.2' ввели в поля W Ratio и H Ratio, масштабировав тем самым холст соответственно размеру трека. В результате эффект Motion (Движение) получил больше рабочего пространства для стабилизации.

Также этот калькулятор будет полезен при работе с эффектом Translate (Координатное преобразование).

И ещё: эта настройка не определяет Sample (pixel) Aspect Ratio.

Кстати, а что такое холст в Cinelerra (вероятно с этого надо было начинать) ? 
Как указано в глоссарии к букварю синелерриста, который хоть местами и устарел, но по-прежнему рекомендуется к прочтению всем новичкам в Cinelerra, ибо писали его пользователи и разработчики первой и второй волн, действительно понимающие как работает программа:
CANVAS
the space of the compositor where the final video is displayed. It can be imagined as the canvas of a painter or as the screen of a theatre. The standard canvas sizes are 720x576 (PAL) and 720x480 (NTSC).
TIMELINE
the part of the program window that contains video and audio tracks and displays the edits as they occur in time.

То-есть, холст -  это пространство в Compositor (в Составителе или Компоновщике, если хотите, но только ж не в "Композиторе", ёпрст.. !!), где отображается финальное видео, то-бишь результат вывода проектора.
То, что мы видим в Составителе - это, по сути, как модульная картина, обычно состоящая из нескольких фрагментов, которые вместе составляют единое изображение.

А вот определение холста, недавно зашедшее в руководство по Cin-GG  -  грубая ошибка, свидетельствующая о непонимании фундаментальных основ программы:
The entire space comprised by the timebar (horizontal extent) and the stack of the tracks, whether empty or occupied, (vertical extent) is called the canvas, in analogy of the workspace of raster graphics programs or the painter's canvas. It is usual to interchange the terms timeline and canvas. In the canvas, Audio tracks are different from Video tracks so a media including both audio and video will be split into 2 or more indipendent tracks. There is no like function present in other programs, although there are workarounds.

Оказывается временная линейка и монтажный стол с треками, по мнению cin-gg community - это холст.
Ну и дальше там ещё отжигают: 
"..media loaded in the timeline (canvas).. This leads to some advantages (e.g. putting an effect only in a part of the edit) but one must always keep in mind that the edit remains dependent on the track and the entire canvas."

Эх, community ... Много героев - мало понимания.
P.S.
Очень подробно о холсте (размере проекта), размере трека, камере и проекторе я рассказывал в этом блоге в начале статьи о использовании в Cinelerra маски в качестве кадрирующей рамки. Ну и ещё одна полезная ссылка из архива рассылки cinelerra-cv.
P.P.S.
Автор изменений прочитал эту статью, дебаты в комментариях, перечитал руководство и принял решение отменить нововведение.
Ну и в качестве развлечения можно прочитать истерику Andrew-R, отметившегося ниже в комментариях. Детский сад и сбоку бантик. 😁

21.09.2022

Прозрачные рельефные титры в Cinelerra (ч.2) | Transparent relief text effect with Cinelerra (p.2)

Эта публикация является продолжением серии статей о прозрачных титрах в Cinelerra, начатого здесь. Как и в предыдущих публикациях при помощи эффектов Reroute, Blur, Invert Video и Title создаётся 'Alpha Matte Text effect'. Однако, в отличие от ранее представленных примеров, здесь применён двойной 'Reroute', что позволяет улучшить сглаживание краёв букв в Cinelerra, создать рельефный контур и отдалённо намекнуть на объёмность. О том как работать с эффектом 'Reroute' я подробно рассказывал в статье 'Reroute | Перенаправление' и Alpha Matte в Cinelerra (p. 1). Дополнительно смотрите по тегу.
                                                              #1
Cinelerra: transparent titles with alpha matte

          #2:
Transparent titles in Cinelerra (alpha matte)

Как это сделано
(стартовые настройки):

Color Model = YUVA-8bit
На дорожке 'Video 3' -- два видеофайла формата h264.mp4 (avc1), yuv420p(tv, bt709), 1280x720.
Те же два видеофайла -- на дорожке 'Video 2'.
#3
Cinelerra: set transparent titles with alpha-matte (multiply-max)
#4:
Cinelerrra: set transparent titles

Если увеличить радиус размытия с 3 до 6 и выше в 'Blur', который применён сразу после 'Title' (окно слева), то рельефность букв несколько увеличится. Однако мне не очень нравится этот способ, так как края букв выглядят "мыльными", а после 7-8 и вовсе получается размазня. Ниже я ещё вернусь к этому вопросу.
#5:

-------------------------------------------------------

Вернём радиус к 3, затем изменим 'Overlay mode | Режим наложения' и порядок расположения эффектов на дорожке 'Video 2'. Здесь же включим размытие альфа-канала в 'Blur | Размытие'. Остальные стартовые настройки без изменений:

#6:

Cinelerra: transparent titles. Settings.

Получим: 
#7:
Cinelerra: transparent titles with alpha matte

----------------------------------------------------------------------------

Теперь вернёмся к стартовым настройкам, затем установим 'Режим наложения | Overlay mode' для дорожки 'Video 3' = 'Normal', а для дорожки 'Video 2' = 'Замена | Replace'. Эффект 'Blur' дорожки 'Video 2' отключим, чтобы содержимое букв было абсолютно прозрачным.

В результате получим в Cinelerra контурные титры, нарисованные карандашом:

#8:

Cinelerra: how to create transparent titles with alpha matte

-----------------------------------------------------------------------------

В принципе, схема размещения основного эффекта ('Reroute') и его распределённой копии может быть и как на скриншоте ниже (я подробно рассказывал об этом в постскриптуме к статье по ссылке выше):
#9:

Cinelerra: Reroute effect


--------------------------------------------------------------

Так а можно ли увеличить рельефность букв, сохранив чёткими края ? Можно.
Вернёмся к стартовым настройкам (вернём режимы наложения и включим Blur на дорожке 'Video 2'). Далее в этих старт. настройках внесём изменения в Blur-эффекты дорожки 'Video 1': в том, что применяется сразу после 'Title' (окно слева), oтключим размытие альфа-канала и увеличим радиус размытия до 12, а в том, что перед 'Invert Video' (окно справа), уменьшим радиус размытия до 3. В эффекте 'Title' уменьшим значение 'Shadow' с 2 до 1 (края букв станут аккуратнее). Остальные настройки -- без изменений.
 #10:
                                                                              #11:
Cinelerra: pseudo 3D titles


В результате рельефность, объёмность букв несколько возросла (видеоролик). Однако с увеличением радиуса достигнутая рельефность начинает теряться, ухудшается сглаженность краёв букв. Кроме того, этот способ капризен касательно футажа. Ищите баланс.

---------------------------------------------------------------------------------------------------

Все представленные выше примеры могут быть воспроизведены в полном объёме только в Cinelerra CV.

В Cin-HV эффект 'Reroute' отсутствует (портирован не был). В Cin-GG поломаны режимы наложения (Overlay modes). В Cin-CVE функционал техники  'Shared effects | Shared Track'  модифицирован значительно урезан её разработчиком Einar Rünkaru и, в частности, не позволяет применить более одного мультиканального эффекта (Reroute). Он в Cin-CVE ещё много чего не позволяет -- подробнее смотрите в посткриптуме к статье Reroute и Alpha Matte в Cinelerra (p. 1) (я внёс дополнения в ранее написанный постскриптум).

Post scriptum.
Я намерен сделать здесь разбор полётов (со скриншотами) попыток активистов the Cin-GG Community разобраться в ситуации, которые больше похожи на отчаянное стремление замести проблемы Cin-GG под ковёр. А также покажу что же всё-таки можно сделать в Cin-GG, чтобы достичь более-менее приемлемого результата, потому что то, что предложил IgorBeghetto, очень от него далеко. 

UPD.: 07.2023
Ну, поехали (лучше ведь позже, чем никогда, не так ли ?).
Вот такой <результат> выдаёт Cinelerra-GG, если воспроизвести в ней вышеприведённый проект. Как видите - ни тебе прозрачности, ни рельефности, вообще ничего. Туши свет, кидай гранату. 
В рядах the CinGG-Community эта публикация вызвала лёгкое брожение. Пользователь Andrea paz (Италия) <попробовал> повторить:
I open a new post to better recall the subject; the discussion in the post "CinGG's Youtube channel" is off topic. I tried to repeat Igor Valdimirsky's tutorial; maybe I did something wrong but my result is not good. Already with the default overlay (Normal) the result is not exactly the same as in the tutorial. For example, the outline of the letters is all white while in the tutorial there are plays of light and shadows that make it three-dimensional. But the worst comes when I set the center track to "Multiply": a completely wrong color comes out! 

Пользователи вяло и без особого энтузиазма принялись обсуждать ситуацию; ситуация, разумеется, требовала скомпилировать CinCV, но компилировать какую-то там древнюю CV им не хотелось. Только Andrew-R, собрав программу, безуспешно пытался расшевелить апатичных сонных зазнаек. Пошли разговоры про особый путь, некую специфику: IgorBeghetto: "It may be (surely) that Cin-CV and Cin-GG work slightly differently. I remember that, when you are using the Title effect, the black colour is meant to be the alpha channel (more or less). It may be that not everything Cin-CV is able to do can be reproduced in Cin-GG,... and vice versa."  Phyllis Smith: ".. thanks for reaffirming that not everything will be the same."
Phyllis Smith: "You can perform this convoluted method OR "just use a simple Outline font" which can be freely downloaded." Кстати, вот я бы очень хотел посмотреть как она добьётся рельефности и объёмности при помощи Outline font (контурного шрифта). Я говорю про рельефность и объёмность, а не про то, чтобы размазать контур вокруг границ шрифта. Andrea ведь уже сказал до неё: ".. For example, the outline of the letters is all white while in the tutorial there are plays of light and shadows that make it three-dimensional"

Спустя некоторое время тамошнему народу снова явился Igor Beghetto (Италия) и выдал <вот такое> (изображение по ссылке кликабельно - щелкните ЛКМ для увеличения). Его проект можете скачать <здесь> (скачиваете attachment-0001.bin и для распаковки переименуйте в test_alpha-channel-overlay_5a.tar.gz). Пользователь, в попытках  справиться с поломанной цветопередачей, включил инвертирование G и B каналов, размытие ряда каналов и добавил эффект 'YUV'. Режимы наложения остались те же. Гм, ну, вы сами видите.. Кроме того он добавил (как вариант), сделанную вне проекта картинку с текстом, причём рисуя текст, включил отображение тени. Но и это не помогло. Тем не менее, кричали дамочки "Ура !" и в воздух монитор бросали. Phyllis Smith на радостях: "IgorBeghetto -- that is a wonderful demonstration that it can be done in CinGG! I will have to really study how you did it by analyzing your jpg. It does look quite complicated but I want to see if I can successfully reproduce it myself." И даже <воспроизвела>. 

Мне сложно сказать что ей там так понравилось. Похоже, что она либо так хотела увидеть желаемое, что усмотрела его там где его нет, либо вообще не поняла о чём речь состроила хорошую мину при плохой игре. Для полноты сравнения обеих форков, я добавил в его проект футажи из своего проекта и открыл его в Cin-GG. Настройки его проекта я не менял. Установил только шрифт Century Schoolbook L (как и в моём проекте).  Результат выглядит <вот так>, т.е. всё так же уныло и плохо. 

Поймите меня правильно --  я ни в коей мере не строю из себя какого-то там синелерра-гуру. Я за девиз "Делай с нами, делай как мы, делай лучше нас". Только так возможно развитие и движение вперёд. Но я за то, чтобы признавать проблемы, а не стыдливо заметать их под ковёр, вводя в заблуждение доверчивых пользователей, плохо знакомых с состоянием дел "под капотом". 
Понимаете, их маркетологи, провозгласив cinelerra-gg профессиональным редактором и надеясь на мощь ныне покойного разработчика программы, надели штаны на вырост и выписали себе некий "кредит доверия". И теперь, попав в ловушку этого подхода, не в состоянии признать, что "проф." редактор имеет фундаментальные проблемы с базовым функционалом. Думаю, что здесь комплексная проблема с цветопередачей, режимами наложения, цветоконверсией между цвет. моделями и, вероятно, проблема также и в эффекте 'Blur'. 

В YUV,YUVA в Cin-GG проблемы в режимах наложения: Multiply, Divide, Overlay, Burn, Dodge, Difference, Hardlight, Softlight, Min, Darken, And. 
Режим Divide в Cin-GG имеет проблемы в обеих цветовых моделях. Здесь я сравнил режим Divide (RGBA) в разных форках (с учётом его "перевернутого" поведения в cin-gg: в СinGG (Sc / Dc), а в других форках и HV (dst_color.rgb / src_color.rgb) ). Здесь - Divide (RGBA - YUVA):  HV vs Cin-GG.
Очевидно имеется  серьёзная проблема конверсии цвета между RGB(A) <->YUV(A) в Cin-GG. Просто загрузите в Cin-GG <картинки> и сравните. Например:




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

В принципе, как сказал мне Адам в переписке касательно своей Cin-HV (оттуда для Cin-GG были взяты формулы расчёта некоторых режимов): "YUV never perfectly matched RGB & probably never will. Nowadays, it's easier to do all compositing in RGBA float." Но речь здесь идёт о небольших несоответствиях. А то, что демонстрирует Cin-GG в YUV(A) свидетельствует о фундаментальных проблемах под капотом.
Впрочем, в вышедшем 23 октября 2022г. релизе Cin-HV 8 конверсия цвета между цветовыми моделями значительно ухудшилась, в моделях с альфа-каналом режимы смешивания тоже поломаны. Я уже написал Адаму о проблеме, а пока можно пользоваться HV 7.4. 
UPDATE.: Адам внёс иcправления и обновил 12.11.2022 на sourceforge готовый бинарник для Ubuntu 16.04. Этот же бинарник нормально работает и на 18.04. Пакет с исход. кодом там не обновлялся. Обновлённый код берите с githab -- ссылка в комментариях. UPD. 02.2024: Теперь нет необходимости ждать ежегодных релизов Cinelerra-HV, чтобы ознакомиться с новшествами. По моей просьбе Адам создал на github роллинг-репозиторий, в котором публикует готовые бинарные сборки Cinelerra-HV (подробнее здесь).

Наилучшие результаты в плане цветоконверсии между RGBA <-> YUVA демонстрирует Cinelerra-CVE, но это экспериментальный форк и для работы я рекомендовать его пока не могу.

Ну да ладно, давайте посмотрим, что всё-таки можно сделать в Cinelerra-GG. Например, так:

Color Model = YUVA-8bit
#12:
Cinelerra-GG : relief text effect | рельефные титры
#13:
Cinelerra-GG: relief text effect | рельефные титры

Как это сделано
 (обратите внимание: на дорожке 'Video 1' один из эффектов 'Blur' отключен):
#14:
Cinelerra-GG: relief text effect settings
#15

Если включить на дорожке 'Video 1' отключенный эфф. 'Blur', тогда результат слегка изменится:
#16:
Cinelerra-GG - relief text

А если воспроизвести этот проект с картинкой, предложенной IgorBeg, то получится так:
#17:

Однако если воспроизвести эти настройки в Color Model = RGBA-8 bit, то снова получится <ерунда>. 

Ну что ж, примем меры. Результат см. ниже:

                                                                                    Color Model = RGBA-8bit:
                                                                                               #18:
Cinelerra-GG: relief text effect in RGBA
                                                                                                 Как это сделано:
                                                                                                              #19

На скриншоте ниже результат после дополнительной установки в 'Title' параметров 'Outline'=1, 'Stroker'=1 для основной надписи, для названия блога - 'Shadow', 'Outline', 'Stroker'=0:
#20
cinelerra-gg-relief-text-effect-v1=off-rgba


Поиграемся ещё с настройками. Например, так:
#21
cinelerra-gg-relief-text-effect-darken-yuva=rgba

#22 (Font: Radio stars (misc))

Cinelerra-GG Relief transparent titles (alpha matte))

Настройки для #21, #22(одинаковы для RGBA и YUVA):
#23
settings for relief text effect with cingg yuva=rgba_darken


На скриншоте #24 (см. ниже) результат достигнут при помощи настроек, представленных на скриншоте #14 с той разницей, что для дорожки V.2 установлен режим наложения Softlight (как я уже говорил выше, он проблемный в YUVA (равно как и Darken, применённый выше), но тем не менее с ним можно получать при определенных условиях приемлемые результаты), на дорожке V.3  в 1-м "Blur" Radius = 4, во 2-м "Blur": Radius = 3, R.=ON, G.B.=OFF, A.=ON. Цветовая модель YUVA (в RGBA - сильные артефакты).  
                                                                                      #24

Transparent relief titles in Cinelerra (alpha matte)

Ещё раз хочу заметить, что представленные выше результаты в определённой  степени зависят от футажа. 
Поэкспериментируйте с другими режимами наложения и настройками эффектов - приведёнными выше настройками тема не исчерпывается. В следующей публикации речь пойдёт о "великом и ужасном" <Time Front effect(spatio-temporal video warping).    Вот уж воистину terra incognita. Для пользователей из РФ, РБ сайт по ссылке доступен только через VPN/Proxy.