FUSION · СПРАВОЧНИК НОД
CustomFilter
CustomFilter — собственная матрица свёртки
CustomFilter применяет к изображению собственное convolution-ядро 3×3, 5×5 или 7×7: можно собрать blur, sharpen, emboss, relief, edge detection и другие локальные фильтры с отдельным выбором RGBA-каналов.
CustomFilter
Обзор
Что делает CustomFilter
CustomFilter — классический 2D convolution processor Fusion. Нода не содержит набора готовых художественных пресетов как Filter: она отдаёт пользователю саму матрицу весов и позволяет построить нужный neighborhood filter вручную.
Вход Input — обычный orange 2D RGBA image. Выход Output остаётся обычным 2D image. Второй blue Effect Mask опционален и ограничивает вклад уже рассчитанного фильтра; он не является вторым source image и не участвует в вычислении соседних пикселей.
Convolution можно представлять как окно, которое скользит по изображению. Центральная ячейка Filter Matrix соответствует текущему пикселю, соседние ячейки — ближайшим samples вокруг него, а записанные коэффициенты определяют вклад каждого sample в результат.
Matrix Size выбирает рабочее ядро 3×3, 5×5 или 7×7. Inspector при этом постоянно показывает grid 7×7, но при меньшем размере активна только центральная область соответствующего размера.
3×3 использует текущий пиксель и восемь ближайших соседей. 5×5 и 7×7 захватывают более широкий radius, поэтому способны формировать более протяжённый blur/edge response, но требуют больше вычислений и легче создают halo/ringing на резких границах.
Коэффициент 1 означает полный вклад sample, 0 исключает его, значение больше 1 усиливает вклад, а отрицательное значение вычитает sample из суммы. В актуальном руководстве Blackmagic для Custom Filter отдельно отмечено, что matrix cells принимают целые значения; дробь вроде 0.x не является корректным kernel entry.
Identity kernel 3×3 выглядит как нули вокруг центральной единицы. При таком ядре соседние пиксели не влияют на output, поэтому результат служит удобной baseline-проверкой всей цепочки и Effect Mask.
Все единицы в 3×3 при нормализованном результате дают простой averaging blur: девять samples участвуют равноправно. Это хороший учебный пример, потому что сразу показывает смысл Matrix Size и Normalize без сложной математики.
Направленные положительные и отрицательные веса позволяют выделять локальную разницу яркости/цвета и получать edge/emboss/relief response. Поэтому один и тот же CustomFilter может быть blur, sharpen или edge detector — смысл задаётся именно kernel coefficients.
Controls > Red/Green/Blue/Alpha — pre-processing channel switches конкретно CustomFilter. Blackmagic подчёркивает, что это не те же RGBA switches, что Common Controls в Settings: здесь выключенный канал вообще пропускает convolution stage, что также может экономить render time.
Channel switches не означают, что у каждого канала автоматически хранится отдельная видимая матрица на странице статьи. Практически сначала выберите нужный channel state, затем задавайте kernel и проверяйте RGB/Alpha по отдельности во Viewer.
Особенно внимательно обращайтесь с Alpha. Фильтрация alpha может размыть, заострить или создать отрицательные/выходящие за диапазон coverage values. Иногда это нужно, но для обычного sharpen RGB разумно сначала сравнить вариант с Alpha выключенной.
Update Lock — не freeze кадра и не cache. Пока control включён, Fusion не рендерит CustomFilter, что позволяет заполнить множество ячеек kernel без пересчёта после каждого изменения. После завершения матрицы Update Lock нужно выключить, чтобы увидеть реальный результат.
Update Lock особенно полезен на 5×5/7×7 и тяжёлом source. Если забыть его включённым, Viewer может продолжать показывать предыдущий результат и создать впечатление, что новые коэффициенты не работают.
Normalize в CustomFilter — slider, а не простой checkbox. В документированном поведении значение 0 даёт нормализованный результат; положительные значения поднимают/осветляют уровень filtered image, отрицательные — опускают/затемняют.
Поэтому фраза 'Normalize предотвращает пересвет' слишком груба. Параметр сам способен сознательно поднять или опустить output level, а clipping и float range нужно проверять отдельно через Viewer/scopes и downstream pipeline.
Floor Level добавляет или вычитает базовый уровень из filtered result. При 0 ничего дополнительно не добавляется; положительные значения поднимают результат, отрицательные вычитают уровень.
Floor Level особенно полезен с kernels, содержащими положительные и отрицательные коэффициенты: edge/relief response может быть сосредоточен около нуля и плохо читаться на обычном display, а floor offset переводит его в удобный для просмотра диапазон.
Normalize и Floor Level решают разные задачи. Normalize меняет степень normalization/общий уровень результата свёртки, Floor Level добавляет offset после неё. Не настраивайте оба одновременно, если хотите понять, почему изменилась яркость.
Нельзя оценивать custom convolution только по красивому still. Sharpen и edge kernels легко усиливают sensor noise, compression blocks, ringing и мелкую texture; проверяйте 100% Viewer и playback, особенно на движении и тонких линиях.
Чем больше Matrix Size, тем больше spatial neighborhood и потенциальная стоимость. 7×7 не является 'качественнее' 3×3 автоматически: для точного local sharpen маленькое ядро часто логичнее и стабильнее.
Симметричное ядро обычно даёт ненаправленный response; асимметрия создаёт направленность. Если emboss или edge реагирует не с той стороны, сначала проверьте расположение коэффициентов относительно центральной ячейки, а не вращайте весь кадр downstream.
Kernel с суммой коэффициентов около нуля типичен для edge/high-pass задач и может давать тёмные/отрицательные области. Это не обязательно ошибка — важно понимать, куда дальше идёт результат: как beauty, technical pass, matte-source или промежуточный signal.
Kernel с большой положительной суммой может резко поднять level. Перед художественной компенсацией сначала проверьте Normalize и исходную сумму coefficients; иначе Brightness/ColorCorrector downstream будет скрывать проблему матрицы.
Эффект можно локализовать синей Effect Mask. Согласно общему Filter-node contract, mask применяется после обработки: CustomFilter всё равно вычисляет фильтр, а mask определяет spatial contribution результата.
Effect Mask не является kernel map. Белые/серые значения не меняют отдельные matrix cells и не управляют radius; для spatially-variable convolution потребовался бы другой инструмент/выражение/многоступенчатая схема.
Для local sharpen через Effect Mask обязательно проверяйте границу mask. Жёсткая mask может создать заметный переход между filtered и unfiltered area; feather обычно должен соответствовать характеру детали и движению.
Поскольку convolution использует соседние pixels, поведение у frame boundaries может отличаться от центра. Не делайте вывод о качестве kernel только по центральному объекту — проверьте рамку кадра и элементы, касающиеся edge.
Если нужно быстро начать с готовой custom filter setting, Blackmagic отмечает supplied filters в Filters directory, доступные через Settings > Load из contextual menu. Но загруженный setting всё равно следует разобрать как конкретную matrix/controls configuration, а не считать магическим отдельным алгоритмом.
CustomFilter и CustomTool не взаимозаменяемы. CustomFilter быстрее и проще для фиксированной локальной convolution matrix; CustomTool намного гибче для выражений, нескольких image inputs и произвольной per-pixel логики, но сложнее и обычно дороже в поддержке.
Для production полезно хранить удачные kernels как подписанные настройки и документировать Matrix Size, RGBA state, Normalize и Floor Level вместе. Одна строка коэффициентов без этих control states не полностью описывает фильтр.
При работе с premultiplied RGBA контролируйте Alpha отдельно. Агрессивный RGB filter рядом с полупрозрачными краями может потребовать осознанного pre-divide/post-multiply workflow в другой части графа; CustomFilter сам не решает все premultiplication edge cases.
Точная serialized naming matrix cells для scripting может отличаться от их визуального grid-положения. Перед автоматизацией экспортируйте .setting/.comp на целевой Resolve build и сверьте internal IDs вместо угадывания по координатам Inspector.
Bundled screenshots этой страницы фиксируют текущий Controls UI: RGBA switches, Matrix Size 3×3/5×5/7×7, Update Lock, 7×7 grid, Normalize и Floor level. Settings/Common Controls остаются общими для Filter nodes и не должны выдаваться за уникальные параметры CustomFilter.
Правильный порядок диагностики: сначала нейтральный identity kernel, затем выбор RGBA, затем Matrix Size и coefficients, после этого Normalize, затем Floor Level и только в конце Effect Mask/downstream blend. Такой порядок сохраняет причинно-следственную связь.
Когда применять
Собственный 3×3 sharpen вместо фиксированного пресета.
Averaging blur через равные положительные coefficients.
Направленный edge detector или emboss/relief.
Технический high-pass/edge pass для дальнейшей обработки.
Раздельная фильтрация RGB без изменения Alpha.
Локальный custom filter через Effect Mask.
Эксперименты с 5×5/7×7 neighborhood kernels.
Воспроизводимые production kernels, сохранённые как Settings.
CustomFilter в контексте
Скриншоты из статьи. Откройте изображение, чтобы рассмотреть его крупнее.
Пример для CustomFilter.
Оригинальное изображениеПример для CustomFilter.
Оригинальное изображение