13 апреля, 2024

Сепия в Cinelerra | Sepia with Cinelerra

Как создать эффект сепии | sepia (старой выцветшей фотографии) в Cinelerra ? Специализированного эффекта в программе нет. Потому соберём его из подручных средств.

Оригинал:

Например так (в Cinelerra-GG):


Настройки (Color Model = RGBA-8bit, Overlay mode: Logical -> OR, Font: Murometz (TGR) ):


Т.е. в примере выше на верхней дорожке создаётся градиент, на нижней дорожке исходное изображение в Cinelerra превращается в чёрно-белое эффектом 'Hue Saturation' + лёгкое размытие, а потом содержимое дорожек смешивается в режиме 'OR' (группа 'Logical').

А теперь вариант с текстурой:


Настройки (RGBA-8bit, Overlay mode: Graphic Art -> Overlay):


Ниже представлена конструкция без текстуры (Cinelerra-CV):


Настройки (RGBA-8bit, Overlay mode = Add;   Font:  Balkara Free Condensed):



P.S.

В этом скринкасте я использовал эффект 'AgingTV' в комбинации с 'SwapChannel' и 'Brightness/Contrast' с целью создать эффект старой, поцарапаной плёнки.

06 апреля, 2024

Chroma Key HSV в Cinelerra.

Cinelerra имеет два базовых хромакея (во всех форках): "ChromaKey' (в коде HV Адам называет его 'ChromaKey RGB') и 'ChromaKey HSV', а также имеется 'Difference Key'. Кроме того, Cinelerra-GG имеет очень интересный 'CriKey' (a regionally based chroma key with interpolation) и ffmpeg-плагины: F_backgroundkey, F_chromakey, F_chromakey_cuda, F_colorkey, F_hsvkey, F_lumakey.

В статье пойдёт речь о 'Chroma Key HSV'. Этот плагин для Cinelerra-CV был написан Jerome Cornet (France) в феврале 2006 г.
AVID незадолго до этого выпустил тогда в свет свой the SpectraMatte TM chroma key effect; Jerome вдохновился его возможностями: "I told myself that it would be cool to have a similar plugin for Cinelerra. So I completely modified the chromakey plugin to be much more finegrained", взял имевшийся на то время штатный Chroma Key :

и модифицировал его (изменился также диалог выбора цвета): 


В таком виде, как на скриншоте выше, плагин Ch.Key-HSV представлен в настоящее время в Cin-CV/E/GG (по поводу cin-gg смотрите постскриптум), а также в сборках HV до февраля 2024. О версии от Jerome и пойдёт речь в 1 части статьи. 
Текст 1 части я добавил в руководство по Cinelerra-CV (на англ.). Доступ пользователям из РФ, РБ только через VPN/proxy. Заходите через Opera - там встроенный VPN. Кроме того я сделал скринкаст, наглядно демонстрирующий как работают нижеописанные параметры (версия Jerome).

Модифицированный плагин был хорошо принят в сообществе, ибо выводил работу на качественно новый уровень. По заявкам пользователей Jerome внёс ещё ряд изменений, в частности, внедрив миним. и максим. уровень яркости и написал краткое руководство

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

А может быть вы хорошо знакомы с ним и даже разобрались с 1 раза ? Крепко "рукопожимаю" вас - это круто. Вы пробовали, но ничего не поняли ? И вас "рукопожимаю". Авансом. Но довольно болтовни - к делу.

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

Цвет можно выбрать либо захватив пипеткой "Get color" в окне Compositor (пипетка - на панели слева), а после щелкнув в окне эффекта кнопку "Use color picker | Использовать пипетку", либо щелкнув в окне эффекта кнопку "Color | Цвет" и перейдя в окно выбора цвета. Здесь вы можете использовать Hue и/или R, G, B параметры. 'Saturation' и 'Value' не играют роли, однако рекомендуется установить их на максимум для большей точности. 

Далее, в разделе "Key parameters | Параметры ключа" слайдером параметра 'Hue Tolerance' расширяем или сужаем диапазон оттенков, который будет вырезан из видео. Фон далеко не всегда однороден. Увеличивая значение параметра, мы расширяем диапазон и включаем него оттенки/тона, значительно отклоняющиеся от ключевого цвета. И наоборот.

 Min Brightness, Max Brightness - задаёт минимальные и максимальные пороговые значения диапазона яркости, по которому будет вырезан выбранный диапазон оттенков. Значения выше максим. и ниже миним. значений станут полностью непрозрачными. Т.о. вы можете включить или исключить из диапазона удаления более светлые или более тёмные участки изображения. Увеличьте значение Min Brightness, чтобы удалялся только фон, а не передний план. Уменьшите значение Max Brightness, если вместе с фоном удалились очень яркие участки (полезно при работе с очень тёмным фоном). 

 Saturation Offset, Min Saturation.
В идеале, фон должен быть высоко и равномерно насыщен. Если же фон далёк от идеала, эти настройки могут помочь. 
Оба параметра задают минимальный уровень насыщенности с которого начинается кеинг. 

Ниже этого уровня цвет будет непрозрачным, а выше - вырезан. Перемещение слайдера вправо задаёт более узкий диапазон значений насыщенности согласно которому будет удаляться цвет. Перемещение слайдера влево расширяет диапазон значений насыщенности. 'Saturation Offset' действует, только если 'Min Saturation' > 0. Ниже я ещё вернусь к 'Saturation Offset'.

Show Mask | Показать маску
Черным цветом отображаются прозрачные области, белым - непрозрачный передний план. 

Jerome пишет: "At any time, you can check what the Mask looks like by clicking on Show Mask. This will output a black and white image of the mask." Однако фактически, включив маску, мы получаем отображение непрозрач. участков белым, а вот прозрачные участки не отображ. чёрным, так и оставаясь прозрачными.
Поэтому в HV можно дополнительно применить к нижней дорожке плагин 'Background', чтобы вместо шахматного фона по умолчанию (в Cin-HV), фон был чёрного цвета. В прочих форках можно применить эффект "Gradient" и настроить там чёрный или достаточно заглушить нижележ. дорожку. Я уже предложил Адаму сделать возможность отключения прозрачности и включения чёрного фона непосредственно в плагине и он внёс предложение в список TODO
Далее, говоря о чёрном цвете маски, я подразумеваю, что пользователь воспользовался этим советом.

 
In Slope | Out Slope


После вышеприведённых операций, маска может иметь резкие, несглаженные ("жёсткие") края. Эти параметры могут помочь смягчить края, создав полупрозрачную зону. 'In Slope' создаёт и расширяет её от края непрозрачной части маски в сторону зоны кеинга, создавая таким образом полупрозрачный переход, а 'Out Slope', наоборот, создаёт и расширяет полупрозрачную зону от края прозрачной части маски в сторону непрозрачной части маски, удаляя по мере расширения из последней цвет.


 Alpha Offset | Сдвиг прозрачности

Производится смещение альфа-канала на определённую величину. По сути - это 'Fade', но Jerome назвал его по-другому. При значении = –100  всё изображение исчезает, при значении = 100  всё изображение становится полностью непрозрачным. При помощи ключ. кадров вы можете создать анимированный переход от –100 до 100 объекта переднего плана на фоне остальной композиции.

Spill light control (Spill Threshold, Spill Compensation)

Контроль за пропуском (отражением цвета) или подавление рассеивания.
Удаляет с объекта паразитные подсветки, отражающиеся от фона, а также окантовку и цветовую кайму вокруг объекта. Удаление производится путём десатурации пикселей, имеющих тон, сходный с ключевым цветом.
'Spill Threshold' - это порог оттенка. Десатурация происходит в зависимости от того, насколько близко расположены цвета к основному удаляемому тону.


'Spill Compensation' - задаёт величину десатурации. Чем выше значение, тем больше десатурация.


Spill Compensation действует, только если Spill Threshold > 0.
Вы можете попробовать стартовать с Spill Compensation = 100%, Spill Threshold = Min, а после постепенно увеличивать Spill Threshold.

 Если края маски остаются резкими, изрезанными примените эффект 'Blur | Размытие'. Включите размытие только для альфа-канала, задав Radius = 2 или 3. 

А сейчас вторая часть статьи.

Если сравнить плагин от Jerome c вышеупомянутым SpectraMatte, то становится ясно, что SM и мощнее, и богаче в настройках. Jerome не удалось тогда сделать полный аналог SM - оригинальный алгоритм сложнее и работает несколько по-другому. Цитирую комментарий Адама в коде: "He was trying to replicate the Avid SpectraMatte but the problem seems to be harder than he thought."

На новый уровень плагин был выведен Adam Williams в Cinelerra-HV в феврале 2024. С моей подачи. Дело было так. Если вникнуть в работу параметра 'Saturation Offset', то возникает вопрос: "А в чём разница между ним и 'Min Saturation' ?"

Если вы смотрели скринкаст, то видели, что 'Saturation Offset' действует, только если значение 'Min Saturation' > 0. Оба задают миним. уровень насыщенности, но S.O. не может задать уровень меньший, чем заданный при помощи M.S.  Т.е. в связке S.O.-M.S.  M.S. может действовать как ограничитель. Бред какой-то.

По идее, назначение параметра - смещать сектор кеинга вдоль линии повышения насыщенности. Однако похоже, что либо Jerome не доработал его, либо параметр поломан. Можно "выжать" с него следующее: установим 'In Slope' и 'Out Slope', затем выкрутим 'Saturation Min' на максимум. И немного увеличим 'Sat.Offset' как на скриншоте ниже. Т.е. его текущие возможности позволяют сделать что-то похожее на смещение. Но всё это выглядит неубедительно. Он просто поломан.

Я посмотрел как параметр работает в прочих форках - везде была/есть одна и та же картина. Вдобавок я столкнулся с тем, что Spill Threshold не работал должным образом в Cin-HV и <Cin-GG>.
'Ch.Key HSV' в Cin-GG по-прежнему сыпет <артефактами(смотрите в постскриптуме о 'Ch.Key (Avid)' в Cin-GG); кроме того, если нижняя дорожка отсутствует, то кеинг в cin-gg вообще <не происходит>. Кстати, если создать проект всего с 1 дорожкой, загрузить футаж и нарисовать обычную векторную маску, то прозрачность вы получите, только если создадите нижележащий трек. Эта же проблема проявится, если создать векторную маску в Compositor. Что-то поломано в работе альфа-канала в Cin-GG.
Версия от Jerome должна работать <так (это cin-cv)>. Мной был записан скринкаст и отправлен Адаму (автору оригинальной HV). К письму я приложил собранную информацию по плагину (кто его сделал, когда, цели) и ссылки на офиц. документацию по SpectraMatte. Через несколько дней Адам сделал ряд багфиксов и нововведений, написав для плагина алгоритм -  реплику алгоритма SM. Цитирую комментарий Адама в коде: "The current implementation is most of the SpectraMatte algorithm.". 'Saturation Offset' был сначала удалён (с вердиктом 'confused' и прозрачным намёком поинтересоваться у Jerome что он хотел сказать миру этим параметром), а позже снова воскрес, но уже в новом качестве (этот скринкастик я сделал в ходе тестирования). Теперь это действительно saturation offset. 
В постскриптуме к статье я ещё раз вернусь к поломанному в CV/CVE/GG параметру 'Saturation Offset'. Почему в конце статьи ? Чтобы вы сначала разобрались как это должно работать правильно на примерах в Cin-HV.

 Однако прежде чем приступить к рассмотрению нового алгоритма, рассмотрим плагин 'Color Swatch', который был одновременно  написан Адамом как аналог the SpectraGraph display in the SpectraMatte. 

Сначала применяется ColorSwatch, а после Ch.Key-HSV.
Для сворачивания/разворачивания дорожки в Cin-HV, помимо кнопки на панели управления, используются пункты контекстного меню дорожки: Collapse track / Expand track. В примерах ниже я использовал 
"конструкцию" как на скриншоте выше (дорожки пустые). Все примеры ниже сделаны в плагине 'Color Swatch' (плагин генерирует цветовой круг). Если вы решите добавить изображение на дорожку с уже применёнными к ней эффектами, то в меню 'Settings' следует предварительно снять галочку c пункта  'Edit effects', иначе все эффекты сдвинутся в сторону.

 'Color Swatch'

 'Color Swatch' содержит цветовой круг, представляющий цветовую модель HSV, в которой работает плагин, и позволяет наглядно видеть как работает 'ChromaKey HSV' и какие дальнейшие настройки необходимы с целью достичь желаемого результата. Цвет представлен аналогично цветовому кругу в HSV. Оттенок изменяется вдоль окружности. Однако есть специфика. 'Color Swatch' в Cinelerra-HV имеет два режима. 
В режиме 'Constant Brightness' цвета имеют фиксированную яркость (устанавливается слайдером) в любой точке Color Swatch, а вдоль радиуса изменяется насыщенность от 0 (в центре) до 100 на периферии. Режим используется для настройки насыщенности.
В режиме 'Constant Saturation' цвета имеют фиксированную насыщенность (устанавливается слайдером) в любой точке Color Swatch, а вдоль радиуса изменяется яркость от 0 (в центре) до 100 на периферии. Режим используется для настройки миним. и максим. яркости.
Оба режима могут использоваться для настройки прочих параметров.

 На скриншоте: слева 'C. Br.', справа 'C. Sat.'.



Если включить чекбокс 'Draw source', то на цветовой круг накладывается изображение в стиле вектороскопа, которое показывает распределение цветовых значений (включая яркость и насыщенность) в исходном изображении. Обычно показывается концентрация цвет. значений либо зеленого, либо синего, представляющих цвет удаляемого фона, а также распределение других цветовых значений объекта переднего плана, которые вы намерены сохранить.
Слайдеры 'Brightness', 'Saturation' устанавливают яркость и насыщенность с которой в 'Color Swatch' будет отображаться модель и накладываемое исходное изображение. Диапазон значений от 0 до 100. Назначение параметров - облегчить ориентирование и контроль над цветовыми данными в разных условиях. Т.е. эти параметры не влияют на конечный результат, который будет рендериться в файл.




Изменяя параметр 'Angle', мы можем вращать круг, что позволяет разместить в Compositor интересующий нас диапазон цвета полностью в пределах видимости, а также совместить его с футажом.

Сектор, представляющий выбранный цветовой диапазон, имеет форму клина и расширяется от центра к периферии. Диапазон оттенков, удаляемых кеером, также удаляется из ColorSwatch. Цвета, удалённые кеером, отображаются прозрачной "шахматкой" или чёрным (см. выше 'Show Mask'). Цвета, сохраняющиеся в изображении, отображаются полностью непрозрачными. Диапазон цвета, который эффект смешивает между фоном и передним планом, отображается как частично прозрачный. Результат изменения параметров хромакея немедленно отображается в ColorSwatch, что позволяет оценивать взаимосвязи между текущим результатом кеинга и цветовыми значениями исходного изображения.

Рассмотрим новый алгоритм. 

Hue Tolerance 

 Здесь всё как и в предыдущей версии: параметр задаёт диапазон оттенков ключевого цвета. Диапазон значений от 0 до 100. В Color Swatch - это ширина (или угол) между краями сектора кеинга (не путать со слайдером 'Angle' в Color Swatch !). Чем больше ширина (угол), тем больший диапазон оттенков включается в сектор кеинга. 

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

На скриншоте ниже Color Swatch в режиме 'Constant Brightness':


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

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

Min. Brightness, Max. Brightness

Работают как и в предыдущей версии. Параметры воздействуют только на пиксели, которые уже подверглись действию 'Hue Tolerance'. Диапазон значений 0 - 100. 

На скриншоте ниже ColorSwatch переключён в режим 'Constant Saturation':


Saturation Start, Saturation Line

В прошлой жизни 'Saturation Start' назывался 'Saturation Offset' (я говорил о нём выше), а 'Saturation Line' - 'Min. Saturation'. Теперь оба работают аналогично 'Key Saturation' и 'Key Sat Line' (соответственно) в SM. 

При помощи этих параметров устанавливают уровень насыщенности с которого начинается кеинг (это их основное назначение, но не единственное - см. ниже).
Увеличение значения этих параметров ведёт к сохранению в композиции цвета низкой насыщенности, который исключается из диапазона кеинга. И наоборот, с понижением параметра всё больше низконасыщенного цвета удаляется.
Возникает вопрос: а в чём разница между 'Saturation Start' и 'Saturation Line' ? Сравним их работу при помощи 'Color Swatch' (режим 'Constant Brightness'). 

Диапазон значений параметра 'Saturation Start' (Key Saturation in SM) от 0 до 100. При этом '0' - это нулевая насыщенность (центр Color Swatch). Значение насыщенности, установленное параметром 'Saturation Start', определяет местоположение вершины сектора кеинга. Параметр позволяет смещать весь сектор кеинга в направлении от центра / к центру Color Swatch вдоль линии изменения насыщенности. С увеличением параметра 'Sat. Start' ширина сектора кеинга (фактический диапазон 'Hue Tolerance', а не значение его ('H.T.') параметра) сужается. Это видно в Compositor. 

Диапазон значений параметра 'Saturation Line' (Key Sat Line in SM) от 0 до 100.
При этом '0' для 'Saturation Line' - это текущее значение параметра 'Saturation Start' (Key Saturation in SM). При увеличении значения параметра 'Sat. Line' изменяется форма сектора кеинга: вершина треугольника срезается и он превращается в трапецию. По мере увеличения значения параметра уменьшается высота трапеции, при этом ширина сектора кеинга не изменяется. 

С увеличением значения всё большее количество низконасыщенных оттенков исключаются из диапазона кеинга и остаются в изображении. Используйте этот параметр для тонкой настройки порога с которого начинается удаление низконасыщенных частей изображения. 

На скриншоте ниже (и далее) Color Swatch в режиме 'Constant Brightness':


На скриншоте ниже то же самое, но 'Desaturate only' = Off :


Оба параметра также используются (путём повышения значения параметров) для восстановления участков переднего плана, содержащих ключевой цвет, но низкого уровня насыщенности, которые были непреднамеренно удалены параметром 'Hue Tolerance'. Обычно такие участки - это результат отражения фонового цвета на передний план.

 Если включить отображение маски, то белый представляет участки переднего плана, а чёрный - фон, вырезанный кеером. Увеличение значения параметров 'Saturation Start' и 'Saturation Line' добавляет белого в маску (очищает белый в маске). Если в чёрных участках появляется серый, уменьшите значение параметра.
 Если удалились участки переднего плана, которые планируется оставить в композиции (такое происходит при заданных низких значениях параметра), увеличьте значение, чтобы восстановить их, но чрезмерное увеличение зачастую приводит к увеличению отражённого фонового цвета (ниже мы ещё вернёмся к этом моменту).
Кроме того, чрезмерное увеличение параметров 'Saturation Start' и 'Saturation Line' может привести к отмене результатов действия 'Hue Tolerance', а также снижает эффективность 'In Slope' и 'Out Slope'.

 Как я уже говорил выше, при повышении значения 'Saturation Start' (Key Saturation in SM) возможно ещё большее увеличение отражённого на передний план цвета (рассеивания на передний план). Поэтому 'Saturation Start', как правило, применяется в связке с 'Spill Saturation', который мы рассмотрим в следующем разделе.

 Spill Supression

Раздел 'Spill Supression' включает в себя параметры 'Spill Saturation' и 'Spill Angle' ('Spill Angle Offset' in SM), а также чекбокс 'Desaturate only' задача которых - подавление цвета, который отражается от фона на объект. Также применяются для удаления каймы, окантовки фонового цвета по краям объекта переднего плана.

При помощи комбинации этих двух параметров по обеим сторонам сектора кеинга создаётся охватывающая его дополнительная зона (the spill correction zone), в которой и происходит подавление отражённого цвета.

'Spill Saturation' задаёт уровень насыщенности, с которого начинается подавление рассеивания цвета. Значение параметра 'Spill Saturation' - это значение в точке на острие дополнительной зоны (the spill correction zone), охватывающей зону кеинга. Т.е. параметр определяет положение the spill correction zone. Данный параметр применяется в связке 'Saturation Start' и действует, только если 'Saturation Start' ('Key Saturation' in SM) > 0. Диапазон значений от 0 до 100, при этом за 0 этот параметр принимает текущее значение 'Saturation Start', а 100 - это нулевая насыщенность (центр Color Swatch).

 Если вы увеличили значение 'Saturation Start', то вероятно увеличилось и количество отражённого на объект фонового цвета, так как низконасыщенные оттенки были исключены из диапазона кеинга (потому что сектор кеинга сместился, а вместе с ним и зона подавления).
Поэтому одновременно увеличению 'Saturation Start', следует увеличивать значение 'Spill Saturation' на величину, эквивалентную увеличению значения 'Saturation Start'. Tаким образом, в данном случае, 'Spill Saturation' действует в противоположную сторону от 'Saturation Start' и возвращает низконасыщенные оттенки в диапазон подавления, удаляя тем самым нежелательный отраженный цвет, появившийся после задействования 'Saturation Start'.

Чем больше значение 'Spill Saturation', тем больше ключевого цвета меньшей насыщенности включается в диапазон подавления (или другими словами, с увеличением параметра в диапазон подавления попадают оттенки меньшей насыщенности). 
Чем меньше значение параметра, тем ближе 'Spill Saturation' к значению 'Saturation Start'. То есть, тем больше ключевого цвета меньшей насыщенности исключается из диапазона подавления. Если значение 'Saturation Start' = 0, 'Spill Saturation' параметр оказывает очень незначительное влияние.

Этот шаг необходим, только если вы изменяли параметр 'Saturation Start'; в остальных случаях параметр 'Spill Saturation' не играет роли.

 'Spill Saturation' применяется в комбинации с 'Spill Angle' ('Spill Angle Offset' in SM).

'Spill Angle' - это основной параметр для контроля пропуска цвета (подавления рассеивания). Он задаёт диапазон оттенков, подвергаемых коррекции (подавлению рассеивания цвета).
Диапазон задаётся путём увеличения или уменьшения угла сектора подавления рассеивания. По умолчанию угол сектора подавления рассеивания такой же как и сектора ключевого цвета (Hue Tolerance). 
Значение параметра 'Spill Angle' - это дополнительный угол, на который расширяется с обеих сторон сектор, заданный 'Hue Tolerance'. Диапазон значений от 0 до 100. Расширение добавляется по обе стороны сектора.
В большинстве случаев следует придерживаться низких значений 'Spill Angle', чтобы не затронуть цветовые значения, не требующие коррекции. Высокие значения параметра могут привести к нежелательной цветокоррекции переднего плана.

Подавление отражённого цвета происходит путём замены значений цвета, которые подверглись рассеиванию, цветами, которые не затронуты отражением.
Цветовые значения внутри зоны подавления отражённого цвета  заменяются значениями с участков за пределами зоны подавления отражённого цвета. 
Например, если ключевой цвет - зелёный, то значения зеленовато-синих оттенков заменяются значениями синего цвета, а зелёно-оранжевые пиксели заменяются значениями оранжевого.
Другой пример: частич. прозрачн. красный объект на синем фоне может содержать смесь синего и красного. Повышение значение параметра 'Spill Angle' удалит синий из сине-красных участков и заменит его чистым красным. Чем больше значение параметра, тем больше оттенков подвергнется коррекции. В большинстве случаев устанавливается относительно небольшое значение для этих параметров.
Имейте в виду, что высокие значения параметра, применённые к многоцветному изображению, могут затронуть насыщенность и цветовой баланс в участках где коррекция не требуется. Увеличивайте значение параметра, пока не начнёте видеть изменение цвета; затем отступите немного назад. Возможно, вам придётся снова откорректировать 'Spill Saturation' и найти оптимальное соотношение между этими 2-я параметрами.
Воспроизведите видео полностью, чтобы убедиться, что отражённый цвет удалён на всём протяжении.  

 Если включить параметр 'Desaturate only', то вместо замены цвет. значений будет происходить десатурация цвета. Это поведение исходного варианта от Jerome.

Ниже на составном скриншоте верхняя часть - 'Sat. Line' = 0, нижн. часть - 'Sat. Line' = 20 :

Ниже на составном скриншоте верхняя часть - 'Sat. Line' = 0, нижн. часть - 'Sat. Line' = 20 :


На следующих двух скриншотах Saturation Line = 0 :




 'In Slope' ('Inner Softness' в SM) и 'Out Slope' ('Outer Softness' в SM)

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

 'In Slope' устанавливает спад (переход) от опакового до прозрачного в секторе кеинга (градиент расширяется от границ сектора кеинга в направлении значения ключевого цвета (от краёв внутрь сектора) ). В Color Swatch это отображается как участок плавного (градуированного) перехода между границами сектора и сплошным чёрным региона кеинга.

 Изменяя параметр, вы можете задать ширину спада (перехода). Диапазон значений от 0 до 100.
С увеличением значения параметра, цвета на границе сектора кеинга плавно переходят в фон, а не полностью удаляются. Когда 'In Slope' = 100, градиент расширяется внутрь от краёв сектора кеинга в направлении значения ключевого цвета на весь диапазон сектора кеинга. Чем меньше значение, тем уже градуированный переход и больше цветовых значений вблизи границ сектора кеинга будет полностью прокеено (удалено), а не смешено между перед. планом и фоном. Когда 'In Slope' = 0, градиент вообще не расширяется и = 0. 

Параметр также используется для восстановления или удаления частично прозрачных участков, пограничных с краями сектора кеинга. Увеличение параметра увеличивает опаковость частично прозрач. участков в секторе кеинга. Уменьшение параметра увеличивает прозрачность частично прозрач. участков в секторе кеинга и передний план может начать терять детали. Включите отображение маски и уменьшайте параметр до тех пор пока чёрный не станет полностью чёрным, а после немного откатитесь назад, чтобы точно настроить результат.

 'Out Slope' действует аналогично предыдущему, разница в том, что он устанавливает спад (полупрозрачный градуированный переход) для пикселей с внешней стороны сектора кеинга. От внешней границы сектора кеинга в сторону непрозрач. участков переднего плана создаётся полупрозрачный переход, который с увеличением параметра расширяется, превращая захватываемые им непрозрачные участки переднего плана в полупрозрачные.
В Color Swatch это отображается как участок за пределами сектора кеинга, где сплошной полностью непрозрачный цвет переднего плана заканчивается и начинается плавный (градуированный) переход к границе сектора.
Можно описать его работу и по-другому: от полностью непрозрачных участков переднего плана (за пределами сектора кеинга) создаётся полупрозрачный градуированный переход в направлении к границе сектора кеинга. С увеличением параметра место (полностью непрозрачное), где начинается переход, отодвигается в сторону переднего плана. 

 Изменяя параметр, вы можете задать ширину спада. Диапазон значений от 0 до 100. Чем меньше значение, тем уже градуированный переход и больше цветовых значений переднего плана полностью непрозрачны. Когда 'Out Slope' = 0, градиент вообще не расширяется и = 0. И наоборот, увеличение значения параметра уменьшает диапазон полностью непрозрачных цвет. значений переднего плана и расширяет полупрозрачный градуированный переход. 



То же самое, но с увеличением параметра 'Saturation Line':


Параметр также используется для настройки пикселей, лежащих сразу за границами (пределами) сектора кеинга. Увеличение параметра увеличивает прозрачность частично прозрач. участков с внешней стороны сектора кеинга. Уменьшение параметра увеличивает опаковость частично прозрач. участков с внешней стороны сектора кеинга.

 Если включить отображение маски, то видно, что с увеличением 'Out Slope', в белых участках переднего плана появляется серый. Настраивайте этот параметр в связке с 'In Slope', пока не найдёте баланс между тонкой детализацией и однородностью чёрного и белого в альфа-канале. 

То есть речь идёт о том, что, как и в предыдущей версии, после этапа восстановления низконасыщенных участков, маска обычно имеет резкие, жёсткие края. Поэтому вы увеличиваете значение 'Saturation Line' до тех пор, пока не восстановите низконасыщенные участки, а затем переходите на использование 'In Slope' и 'Out Slope', чтобы "смягчить" края, то-бишь создать градиентный полупрозрачный переход, а также задать частичную прозрачность участкам, которые по плану должны быть прокеены частично. Большая часть таких участков на данном этапе обычно полностью непрозрачны, поэтому увеличивайте 'Out Slope' и уменьшайте 'In Slope' до тех пор, пока альфа-канал (маска) корректно их не отобразит. Если участки переднего плана, которые должны быть полностью непрозрачны, стали вместо этого частично прозрачными, уменьшите значение 'Out Slope' и увеличьте значение 'In Slope'.
Если передний план не содержит частично прозрачных участков, требуется лишь минимальная регулировка этих параметров. 

Alpha Offset

 Alpha Offset в Cinelerra-HV - это аналог параметра 'Opacity' в SM.
Работает аналогично предыдущей версии от Jerome (как описано в 1-й части статьи). 


Плагину нужен 'Matte Blur' (Blur, Erode, Dilate как в SM). Адам внёс предложение в TODO. Пока же для сглаживания резких краёв можно применять эффект 'Blur', установив 'Blur Alpha' = 2 - 3 и отключив размытие R, G, B.


От теории к практике (в Cinelerra-HV):


Cолнце и его лучи (справа на картинке с верхней дорожки) я убрал маской (такая техника называется 'Garbage mask'), создав её на верхней дорожке:


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

Настройки:



Post Scriptum:
Процитирую себя (речь о Cin-CV/E/GG):
'Saturation Offset' действует, только если значение 'Min Saturation' > 0. Оба задают миним. уровень насыщенности, но S.O. не может задать уровень меньший, чем заданный при помощи M.S.  Т.е. в связке S.O.-M.S.  M.S. может действовать как ограничитель.
То есть значение '0' для 'Saturation Offset' в версии Jerome  - это текущее значение 'Min Saturation' > 0.
Тут возникает вопрос: а не является ли параметр 'Min Saturation' на самом деле параметром 'Saturation Offset', а 'Saturation Offset' - параметром 'Min Saturation' ? Т.е. не перепутаны ли тут просто названия в коде ?  На первый взгляд это кажется решением, ведь в алгоритме spectramatte  'Saturation Start' является ограничителем для параметра 'Saturation Line'  и значение '0' для 'Saturation Line'  - это текущее значение параметра  'Saturation Start'.
Однако ответ'Нет'. Потому что если установить 'Min Saturation' = 0', 'Saturation Offset' вообще не реагирует на изменение слайдера. А в алгоритме spectramatte 'Saturation Line' (то-бишь 'Min Sat.') ожидаемо работает и при  'Saturation Start'  = 0 .

На основании этой статьи составители руководства по Cin-GG сделали дополнения к описанию плагина и предоставили картинку со схемой его работы.
Цитата:
Min Saturation is the distance from the center, along the Hue radius, from which we want to impose saturation with the value 0. It will be the value from which keying starts.
Saturation Offset is an additional cut we make to the inner part of the wedge from the Min Saturation value.

Здесь и на картинке допущены грубые ошибки. 'Hue' к радиусу не имеет никакого отношения. 'Hue' изменяется по окружности. Но это не главная ошибка.  
Главная состоит в том,  что Andrea Paz, составитель этого описания (мы общались с ним), не внял моим объяснениям что параметр 'Saturation Offset' поломан, не разобрался детально в чём разница между 'Sat. Start' и 'Sat. Line' в алгоритме spectramatte и перепутал работу обеих параметров, приняв 'Min Sat.' за 'Sat. Offset' (и наоборот), в результате чего в описании "смешались в кучу кони, люди" и получилось чёрти-что (то-есть как обычно).
 Торопыга...  Наоборот, это 'Saturation Offset' должен задавать '0' для параметра 'Min Saturation'. Но он поломан и потому не задаёт. А 'Min Saturation' как раз и должен быть "an additional cut". Отчасти воспроизвести это можно. Установим 'Min Saturation на значение = 0. Установим Saturation Offset на значение примерно 40-50. Ничего не происходит. А теперь сместим колесом мыши слайдер 'Min Saturation' на одно деление (0.1). Вы увидите в Compositor как 'Min Saturation' "прыгнет" до значения "Saturation Offset" (40-50). И казалось бы всё работает как надо, однако ж нет. 
Кроме того, когда вы, изменяя параметр 'Sat. Start' в алгоритме spectramatte, смещаете от центра к периферии сектор кеинга (клин) вдоль линии повышения насыщенности, ширина сектора кеинга (фактический диапазон 'Hue Tolerance') равномерно сужается по всему периметру сектора в том числе и на выходе, а когда изменяете параметр 'Sat. Line' - нет. Однако составителям руководства к cin-gg сие очевидно неведомо, потому ничтоже сумняшеся и зафиксировали на картинке своё ошибочное видение, где 'Min Saturation' (который они приняли за 'Sat. Offset') сужая диапазон в начале и ближе к середине, оставляет его нетронутым на выходе. А должно быть < вот так >  здесь смещённый сектор представлен чёрно-белым треугольником (участки сектора, вышедшие за пределы круга, разумеется, обрезаны). 
Указать в руководстве, что параметр 'Sat. Offset' (точнее то, что он за него принял), а также 'Spill Saturation' поломаны, Andrea Paz тоже не посчитал нужным. Зато отметился (вместе с Phyllis) со своей галиматьёй на багтрекере: <1> , <2>.

Напрашивается вопрос: отчего бы мне не зайти в рассылку cin-gg и не растолковать пользователям их ошибки, а не "выпендриваться" в блоге? Так я попробовал сделать шаг навстречу  вышел со статьёй, указал на проблемы. Выяснилось, что отдельные персонажи так обрадовались моему появлению, что установили для моих сообщений персональную модерацию, а немногим позже я и вовсе получил уведомление, что отписан от рассылки (и это была не моя инициатива). 
В общем, не стоит метать бисер ... И да, можно подвести ослов к водопою, но пить их и сам шайтан не заставит. 

UPD.-16.06.2024: Георгий Сальников портировал обновлённый алгоритм из hv в cin-gg, а также внедрил очень удобные кнопки для сброса, сохранения, .. параметров  (такое бы да в каждый плагин!). Плагин называется 'Chroma Key (Avid)'. Алгоритм работает точно также как в hv. Очевидно, появится в релизе cin-gg, который выйдет в конце июня. Посмотрим какое будет принято решение относительно совместимости со старыми проектами и исправят ли мануал.
Проблема с альфа-каналом, похоже, рассматривается как некая специфика. Думаю, что это ошибка, тем более что в сборках начала 2017 это отсутствует. Для начала бы надо выяснить с каким коммитом это зашло в программу.
UPD.-21.06.2024
Пара заметок по итогам.
'ChromaKey HSV' в CinGG оставлен без изменений.  Для обновлённого алгоритма, портированного из HV, в CinGG  создан отдельный плагин 'ChromaKey (Avid)'
Указать Адама как автора обновлённого алгоритма маркетологи cingg не посчитали нужным. Ограничились только "credit to original creator for major upgrade".
Картинку в мануале обновили на правильную, текст в cin-gg мануале так и остался с грубыми ошибками, о которых я говорил выше:
1 - "Min Saturation is the distance from the center, along the Hue radius, from which we want to impose saturation with the value 0. It will be the value from which keying starts. Saturation Offset is an additional cut we make to the inner part of the wedge from the Min Saturation value.2 - "It could be said that Saturation Start concerns only the key color (wedge's vertex), while Saturation Line concerns the range of Hue tolerance."
А проблему с альфа-каналом и вовсе зафиксировали как-будто так и надо: "Any manipulations with alpha masks in CGG require a bottom track with some opaque background, otherwise the transparent holes are displayed as if the same track without transparency is located under it."
Ну, я ж говорил про осла и водопой...