В этой публикации речь пойдёт об эффекте 'Edge | Край'.
Эффект выявляет границы цветовых переходов в изображении и выделяет края или контуры, преобразовывая их либо в темные линии на белом фоне, либо в светлые | цветные линии на черном фоне. Результат выглядит как набросок карандашом, эскиз, рисунок углём, контурный рисунок... , состоящий из множества линий.
В Cinelerra 'Edge' впервые появился в Cin-HV, а позже был портирован в Cin-GG. Выдавал в Cin-HV/GG результаты, аналогичные эффекту 'Charcoal' в Kdenlive. В конце апреле 2024 в эфф. 'Edge' в Cin-HV был исправлен параметр 'Amount', эффект был переработан и ныне выдаёт результаты аналогичные 'Edge' в GIMP (Aдам подтвердил это). В Cin-GG эффект остался прежним (≈ 'Charcoal' in Kdenlive).
Возьмём картинку:
После применения к ней эффекта: слева - Cin-HV, справа - Cin-GG:
Чтобы отобразить картинку на белом фоне, следует добавить эфф. 'Invert Video' (rgb=on) (слева - Cin-HV, справа - Cin-GG):
Познакомимся с эффектом поближе. Случалось ли вам рисовать авторучкой на салфетке в кафе, ожидая друзей ? Давно? Тогда давайте порисуем. В качестве салфетки - холст в Cinelerra, в качестве ручки - эффекты 'Edge' & Co.
Следующие примеры сделаны в Cinelerra HV 9 . 'Edge' в HV мне представляется гораздо интересней.
На скриншоте ниже: слева - оригинал, справа -- он же после применения 'Edge', затем 'Blur', который убирает излишнюю детализацию, после тюнингуем результат эффектом 'Histogram' и инвертируем RGB-каналы эффектом 'Invert Video'.
#1
#1.1
Если добавить размытие канала 'Blue', то крен в сторону синего сменится на черный.
А теперь телепортируем корабль во мрак ночного океана, отключив эфф. 'Invert Video':
#2
*** ***
На скриншоте ниже комбинация эффектов: 'Blur' (rgb=3.0) и 'Edge' (Amount=6). Порядок применения эффектов изменён: 'Blur' применён первым, затем 'Edge' (значение увеличено). ColorModel = RGBA-8bit
#3
***
На скриншоте ниже та же комбинация, только увеличено значение параметра Amount=10
#4
***
Та же комбинация (Amount=10)
#5:
***
На скриншоте ниже комбинация эффектов: 'Blur' (RGB=8.0), 'Edge' (Amount=10), + добавлен 'Invert Video' (RGB=On, A=off). 'Blur' применён первым (степень размытия увеличена), затем 'Edge', затем 'Invert Video' (RGB=On, A=off). ColorModel = RGBA-8bit
#6
А если отключить 'Invert Video', то будет так: #7
*** ***
Возьмём Cinelerra-GG и загрузим в неё эту картинку: #8
Применим к ней комбинацию эффектов:
#8.1 (Color Model = RGBA-8bit)
Если отключить нижн. дорожку, хороша видна область действия градиента: #8.2
Blur убирает чрезмерную детализацию Edge.
В результате получим: Слева: 'Invert Video'=On , Справа: 'Invert Video'=Off (отключен)
#8.3
*** ***
Усложним комбинацию эффектов. Возьмём пару картинок:

и соберём конструкцию снова в Cinelerra-HV 9: #8.4
Здесь 'Swap channels' переводит изображение в grayscale, а затем значение Blue channel перенаправляется в Alpha channel дорожки (то есть канал синего используется как Alpha Matte). Прозрачность создаётся по каналу синего. Имейте в виду, что оригин. изображение ship.jpg не имеет альфа-канала, так как формат JPEG не поддерживает альфа. Есть принципиальная разница между внутренним форматом программы и форматом JPEG. Например, на скриншотах ниже вы видите полупрозрачный ship.jpg на дорожках, но вывести из программы такую полупрозрачность в отдельный ship.jpg, разумеется, не получится.
Кстати, вот цитата от разработчика: "Loading a media converts it to unpacked internal format what isspecified in settings/format. Everything happens on internal format. Then the result is rendered to output. The editing process does not depend on input or output format.".
Получим:
#8.5
*** ***
Усложним комбинацию. Возьмём пару картинок:
и соберём конструкцию тоже в Cinelerra-HV 9: #8.6

Получим: #8.7

На скриншоте выше:
'Blur' на V.2 (blue=2.0) слегка размывает содержимое 'Blue' канала, в результате чего 'Edge' выдаёт меньшую детализацию. 'Swap Channels', "расшаренный" с V.3 на V.2, заменяет альфа-канал дорожки V.3 каналом 'Blue' дорожки V.2. Т.е. канал синего дорожки V.2 используется как Alpha Track Matte. Таким образом прозрачные и непрозрачные участки содержимого дорожки V.3 определяются каналом 'Blue' содержимого дорожки V.2. Так как в Cin-HV фон представлен шахматкой, к V.1 применён эфф. 'Background' и установлен черный цвет фона.
Давайте детально разберём как это работает.
Отключим дорожки V.3 и V.1 , нажав зелёную кнопку 'Play track' на панели управления слева; отключим 'Blur', 'Edge' на дорожке V.2 => ну вот, собственно, на скриншоте ниже (#8.8) маска по 'Blue' каналу:
Участки, где значение синего равно 0, становятся полностью прозрачными, с повышением значения канала синего нарастает непрозрачность:
Включим 'Play track' для V.3. Эффекты 'Blur', 'Edge' дорожки V.2 оставим отключенными => на скриншоте ниже - Alpha Track Matte по 'Blue' channel с V.2 , применённое к V.3:
#8.9
Однако на этом чудеса не заканчиваются.
Цитата из описания эффекта 'Swap Channels' в руководстве по Cin-HV 'Secrets of Cinelerra':
"If swap channels is shared between multiple tracks, the source track is selected by the source buffer. Source buffer 0 is the top track. Higher numbered source buffers are the lower tracks in the timeline.
The same output is copied to all the shared tracks so some projects can perform different processing on each output track. The alpha in 2 overlapping tracks will accumulate, so you must mute the lower tracks to avoid this.".
Зажав клавишу Shift, щёлкнем ЛКМ по красной кнопке 'Arm track' дорожки V.2. В результате для V.3 и V.1 будет заблокирована правка. Теперь включим инструмент 'Projector' в 'Compositor' (одноим. кнопка на вертик. панели в Compos.). Сместим проектором содержимое дорожки V.2 вправо. Надеюсь, что вы всё-таки сможете разглядеть на скриншоте ниже, что в 'Compositor' справа появилась ещё одна "маска-кораблик":
#8.10
На скриншоте ниже я заглушил выход дорожки V.3, нажав на кнопку Mute track (Don't send to output) ->
#8.11 (так лучше видно):
Откуда взялся этот "Летучий Голландец" ? А это вот как раз то, что подчёркнуто в цитате из руководства. В исходном примере я не глушу вывод с V.2 так как в этом случае изображение становится слишком тёмным, а вообще, нередко имеет смысл заглушить дубликат.
Включим наконец 'Edge' на V.2: #8.12
Включим теперь 'Backround' на V.1 ->
#8.13 (много ненужных мелких штрихов, так как Blur ещё отключен):
Понятно ? Вот потому и глушится обычно.
----------------------------------------------------------
А теперь тоже самое в Cinelerra-GG.
Color Model: RGBA-8bit; Overlay mode: Normal; Font: URW Chancery L (Italic), (sz.=50)
#9
Результат: #9.1
На скриншоте выше:
'Blur' слегка размывает картинку, в результате чего 'Edge' выдаёт меньшую детализацию, 'Swap Channels' в Cin-GG, в отличие от Cin-HV, не умеет брать информацию с содержимого другой дорожки. Поэтому сначала создаётся альфа-маска по цвет. каналу 'Red' на V1, а затем 'Reroute' перенаправляет её на верхнюю дорожку. Выход изображения с нижней дорожки заглушён, чтобы оно не отправлялось в вывод и не смешивалось с альфа-маской в 'Compositor'. Однако это не мешает работе 'Reroute', так как сам трек не выключен (кнопка 'Play track' на панели управления).
А если вывод не заглушить, то будет так: #9.2
***
Ну и ещё порисуем в Cinelerra-GG:
#10
#10.1
#10.2
В примере выше связка 'Swap Channels' и 'Reroute' работает в CinGG аналогично 'Swap Channels' в Cin-HV. Разберём пример на детали.
Отключим 'Edge', 'Invert Video' на V.1 . Сместим проектором изображ. на V.1 .
На скриншоте #10.3 (ниже): в выводе смешиваются альфа-маска по красному каналу с V.1 (справа) и альфа-маска с V.3 (слева) (перенаправленная с V.1). Если добавить сейчас ещё одну дорожку под V.1 и применить к ней градиент, он будет просвечивать через прозрачные участки картинок слева и справа.
#10.3
На скриншоте #10.4 ниже - совмещенные изображения ("Projector" сброшен):
На скриншоте #10.5 ниже -- включен 'Edge':
На скриншоте #10.6 ниже -- включен 'Invert Video'.
Ну, вы уже знаете, что тут надо глушить вывод с V.1
Заглушён ниже на #10.7:
Зачем инвертировать ? Ну, если не инвертировать, то будет вот такое: #10.8
*** ***
А можно ли тот же результат получить в Cin-GG более простым образом ? Да не вопрос, сделаем. Следите за руками скринами.
Собираем конструкцию: #10.9
Получаем уже знакомый вам светящийся кораблик: #10.10
***
Ну а чтобы получить более простым образом ещё одного знакомого из примеров выше #10.11:
надо в настройках на #10.9 отключить 'Invert Video' и уменьшить в 'Edge' параметр 'Amount' до 3.
Ключевую роль здесь играет 'Overlay Mode' = DstOut (PorterDuff). С тем же результатом можно использовать Logical->XOR. Если выбрать OR, то цветом карандаша станет белый.
------------
Ну что, всё ? Или ещё что-нибудь показать ? Хотите, покажу как собрать результат, аналогичный 'Edge' эффекту, но не применяя последний ? Прогуляемся в репозиторий исходного кода Cinelerra HV на GitHub. В директории <root>/cinelerra/tests находятся разного рода проекты, использовавшиеся Адамом для тестирования функционала программы. Нам нужен overlay2.xml . Воспроизведём его (разумеется, со свои футажом). #10.12
'Overlay mode' = Subtract дорожки V.3 используется здесь только для наложения титров. Он не играет никакой роли в создании штрихового рисунка. Эффект 'Overlay' "расшарен" с V.2 на V.1 .
К оригинальному проекту Адама я добавил 'Invert Video' и 'Blur' на верхнюю дорожку. И отключил размытие 'Green', 'Blue' каналов в 'Blur' на обеих дорожках. Это позволило перевело рисунок в однотонный
#10.13
Слева: 'Invert Video' = On. Cправа: 'Invert Video' = Off, 'Overlay mode' for V.3 = Addition , иначе титры не будут видны.
Настройки:
#10.14
А если включить размытие , то будет так:
#10.14.1
***И ещё картинка (комбинация эффектов и настройки те же, что на #10.14):#10.15
Ну вот и всё. Пока.
P.S.
Эх, люблю кораблики ! Детство... , книжки про пиратов... 😇