В цифровой постобработке добиться исторически точной имитации старого телевизионного изображения – сложная, но выполнимая задача. Требуется учесть физику отображения, оптику кинескопов/дисков, особенности аналогового сигнала и множественные визуальные искажения каждой технологии. В отличие от простого “ретро-фильтра”, наш подход нацелен на полную реконструкцию структуры изображения разных эпох телевидения – вплоть до мельчайших артефактов: неравномерной яркости, мерцания, дефокусировки, шумов, геометрических искажений и т.д. Ниже мы рассмотрим ключевые телевизионные эпохи – от механического телевидения 1920-х до поздней аналоговой эры VHS – опишем характерные черты изображения каждой и подробно разберём, как реализовать их в DaVinci Resolve Fusion вручную, используя узлы, генераторы шума и выражения (без готовых LUT’ов и пресетов).
1925–1935 – Механическое телевидение (диск Нипкова)
Разрешение и кадры: раннее телевидение Бэрда имело всего ~30 строк по вертикали при кадровой частоте 5–12,5 fps. Стандарт Бэрда закрепил 30 линий и 12,5 кадров/с к 1926 году. Разрешение настолько мало, что еле угадываются лица; картинка формата “портрет” (высота больше ширины). Диск Нипкова сканировал изображение спирально: отверстия на вращающемся диске последовательно проецировали строку за строкой на экран. В итоге кадр имел крошечный размер (несколько сантиметров). Низкая частота развёртки вызывала сильное мерцание – фактически видео напоминало быструю последовательность тусклых слайдов.
Цвет и яркость: использовался неоновый источник света позади диска, поэтому изображение было монохромным с оранжево-красным оттенком (характерное свечение неоновой лампы). Яркость крайне низкая – “экраны” тех лет светились очень слабо. Люминофор как таковой отсутствовал (изображение возникало напрямую от модулированной лампы), потому послесвечения почти не было – точки затухали мгновенно, что усиливало мерцание. Динамический диапазон ничтожен: детали в тенях/светах терялись.
Сканирование и мерцание: механическая развёртка – прогрессивная (кадр сканировался целиком построчно), но развернуть 30 строк на 12 кадрах/с – значит, каждая строка обновлялась медленно. Отверстия диска часто имели нелинейное расположение, из-за чего строки получались слегка изогнутыми. Синхронизация приёмника с передатчиком была непростой: диски могли вращаться несинхронно, вызывая “плавающие” кадры и разрывы (изображение иногда дергалось, “плавало” вверх-вниз до захвата синхросигнала). Вдобавок, механический привод давал вибрации от электродвигателя: в изображении появлялась рябь, неравномерность движения строк. Низкая частота кадров приводила к стробированию движущихся объектов – движение выглядело рывками.
Оптические артефакты: отверстия на диске создавали чёткую грид-структуру: изображение состояло из видимых точек/штрихов. Фокусировка условная – фактически маленькое отверстие интегрировало свет от участка сцены, давая довольно размытое пятно. Контраст изображения очень низкий, поэтому края объектов нечеткие. Часто применяли высококонтрастный грим на лицах актёров, чтобы хоть как-то проявить черты. Возможны артефакты прерывистости: при сбое синхронизации изображение могло наполовину сдвинуться. Также отмечались неоднородности яркости по кадру – центр мог быть чуть ярче, края темнее, в силу неравномерности освещения диска.
Геометрия и экран: экраны механических телевизоров представляли собой небольшой окошко (около 3×3 см) с увеличительным стеклом перед ним. Часто это было вертикальное отверстие или объектив, формирующий портретно ориентированное изображение. Геометрические искажения были существенны: проекция через диск могла давать искривление строк по краям (эффект “бочкообразности” из-за углов падения света). Просмотр требовал сидеть прямо перед экраном, иначе изображение почти не было видно.
Как воссоздать в DaVinci Resolve (Fusion): Для имитации механического ТВ нужно радикально ухудшить качество изображения и добавить специфические артефакты:
- Разрешение и кадровость: смоделируйте 30-строчный низкочастотный сигнал. Проще всего – понизить реальное видео до экстремально малого разрешения и обратно. Например, добавить узел Resize (или Vector Resize) и выставить ~30 px по высоте, затем вернуть исходное разрешение. Это размоет детали и сделает строки очевидными. Для явного разделения строк можно создать маску: например, Grid с чередующимися чёрными линиями шириной 1 пиксель через каждые ~1–2 пикселя (имитируя отсутствие каждой 2-й строки). Эта маска, наложенная на изображение в режиме Multiply, “выбросит” половину строк, как будто между ними тёмные промежутки. Кадровую частоту имитируем добавлением мерцания: добавьте узел Brightness/Contrast и привяжите его параметр Gain к выражению oscillate() или анимируйте вручную нелинейным колебанием ~5–8 Гц, чтобы яркость быстро пульсировала (симулируя 12 fps кадры). Также, для большей рваности движения, можно применить Time Stretcher или Time Speed с понижением реальной частоты кадров (например, замораживать каждый 2-й кадр и вставлять чёрный кадр имитируя низкое fps).
- Цветовой тон и яркость: добавьте узел цветокоррекции (Color Corrector). Установите монохромный оранжево-красный тон: например, в тенях/средних тонах добавить оттенок 20–30° Hue (оранжевый), снизить Saturation почти до монохрома. Яркость сильно уменьшите (Gain ~0.5 или ниже) – финальное изображение должно быть очень тёмным, едва различимым. Можно добавить лёгкий Glow с оранжевым оттенком, радиусом ~1–2 px и низкой силой – это даст эффект размытых светящихся участков как от неоновой лампы.
- Сканирование и искажения: для изогнутых строк и дрожания синхронизации воспользуйтесь узлом Displace (доступен в Fusion как инструмент для смещения координат). Создайте текстуру для смещения: можно взять Fast Noise с высоким Detail, но особой формы – например, установите Noise Type = Linear, Scale по X побольше (чтобы паттерн менялся плавно вдоль строк), а по Y – поменьше (чтобы каждая строка имела слегка разный сдвиг). Получившуюся карту подключите в Displace (канал Luma -> смещение по X) с небольшим амплитудным коэффициентом (несколько пикселей). Это вызовет легкую волнистость строк – как если бы диск немного бил по фазе. Дополнительно, добавьте Transform перед Displace и анимируйте параметр Center Y (вертикальное положение) случайными скачками (например, экспрессией random() для каждого кадра в небольшом диапазоне ~±0.02) – так вы получите вертикальные срывы синхронизации: кадр будет прыгать вверх-вниз время от времени, имитируя нестабильность механической синхронизации.
- Шумы и рябь: механическое ТВ страдало от помех радиоканала. Добавьте узел Fast Noise в качестве слоя шума: Grain Type = Monochrome, Detail = 0 (чтобы зерно было мягким), Contrast = ~0.5, Scale = небольшое (чтобы шумовые пятна были размером ~несколько строк). Анимируйте эволюцию шума (параметр Seed или Random каждый кадр) – получится хаотическое мерцание/рябь по изображению. В Merge установите низкий прозрачность (Blend ~0.2), чтобы шум едва проступал как эфирные помехи. Также можно имитировать пульсации питания: добавить очень низкочастотный колебательный модуль к яркости или положению кадра (напр., лёгкое покачивание Transform.Center с периодом ~1 сек), так что всё изображение чуть дрожит, как от вибрации диска.
- Геометрия и оптика: чтобы симулировать маленький выпуклый экран, можно воспользоваться Lens Distortion или Mesh Warp. Сделайте лёгкую бочкообразную дисторсию (Barrel Distortion) – по краям кадр чуть сожмётся. Например, Lens Distortion с параметром Barrel Distortion = +0.1…0.2. Далее, примените виньетирование: маска Ellipse (растушевка ~0.2 ширины кадра) инвертированная – и затемнить края (узел Color Corrector или Brightness внутри маски: Gain ~0.8). Одновременно в этой же маске снизьте Saturation почти до нуля – имитация обесцвечивания по углам (так как через увеличительное стекло и под углом яркость/цвет падали).
Все эти эффекты следует собрать в цепочку Fusion. Пример порядка узлов для механического ТВ: MediaIn -> Resize (30 строк) -> ColorCorrector (монохромный оранжевый) -> Brightness (мерцание) -> Displace (искажение строк) -> Transform (случ. сдвиги) -> LensDistortion (выпуклость экрана) -> Merge(шум) -> MediaOut. Параметры подбираются экспериментально, пока результат не станет похож на приведённый эталон – тёмное, мерцающее, грубо построчное изображение начала 1930-х.
1935–1945 – Ранняя электронная ЭЛТ-телевизия (иконоскоп, катодные трубки)
Разрешение и развёртка: с середины 1930-х механические системы вытеснены электронными. Разрешение скачкообразно выросло: от ~240 линий (СССР, Германия) до 405 строк (Великобритания) и 441 строки (Германия, США). Эти системы считались “высоким разрешением” своего времени. Впервые применена чересстрочная развёртка (interlace): 2 полукадра по 50/60 полей/с, что даёт ~25–30 кадров/с без заметного мерцания. Например, британский стандарт 405 использовал 2 поля по 50 Гц (376 видимых строк на кадр). Визуально это означало гораздо плавнейшее движение и меньшее мерцание, чем у 12 fps механики. Однако строки всё ещё заметны при внимательном взгляде, особенно на диагональных границах (эффект гребёнки от полей).
Цветовая палитра: изображение по-прежнему чёрно-белое. Однако ранние ЭЛТ имели особенности люминофора: часто применялся люминофор P1 (как в осциллографах) с зеленоватым оттенком и длительным послесвечением. Это придавало картинке серо-зелёный тон и инерционность – яркие области оставляли шлейф. Позже, особенно к 1940-м, стали использовать люминофор P4 с более нейтральным “белым” свечением, поэтому оттенок мог быть ближе к серовато-белому. В любом случае, контрастность была низкой, гамма криволинейная (примерно экв. γ≈2.2), из-за чего средние тона воспроизводились темнее – изображение казалось немного более тёмным по краям градиентов (нелинейность яркости).
Сканирование и синхронизация: межстрочная развёртка дала более стабильную картинку, но сами телевизоры требовали настроек. Пользователю приходилось регулировать “vertical hold” (вертикальную синхронизацию) и “horizontal hold” вручную. При рассинхронизации кадр начинал дёргаться вертикально или “бежать” горизонтально – появлялся эффект «плывущего» изображения. Часто можно было увидеть как кадр медленно прокручивается по вертикали при потере захвата (пока пользователь не покрутит ручку). Строчная развертка (15,625 кГц в Европе, ~15,750 кГц в США) вызывала высокочастотный писк – звучание трансформатора (около 10–16 кГц) слышалось из телевизора. На изображении могли проявляться помехи синхроимпульсов – в виде дергания верхней части кадра при нестабильном питании или эфирных наводках.
Оптические и электронные артефакты: в этой эпохе главные искажения шли от несовершенства электронных ламп. Иконоскопические камеры страдали малой чувствительностью и высоким уровнем шумов, что в картинке выражалось в зернистости и мраморности градиентов. Лаг (инерционность мишени) приводил к эффекту “призрачных обводок”: движущийся яркий объект оставлял за собой бледное послесвечение – как двойное изображение или шлейф (кометный хвост). Особенно это заметно в передаче ярких светлых объектов на тёмном фоне: за ними тянется белёсый шлейф, постепенно исчезающий. Также встречался эффект “halo” – вокруг перенасыщенно ярких деталей (например, лампа или бликующая поверхность) возникал ореол: это из-за перегрузки камеры или насыщения люминофора в центре экрана. На ЭЛТ-дисплеях сильная яркость вызывала blooming (размывание): белые участки слегка распухали, теряя фокус. Таким образом, центр изображения мог казаться более размытым при ярком объекте (перегрузка по центру кадра). Рябь (noise) тоже присутствовала – как результат электронных шумов тракта, она выглядела как мелкое случайное мерцание пикселей (правда, термин «пиксель» неприменим, но зрительно похоже на шум плёнки).
Геометрия изображения: Ранние ЭЛТ-трубки были круглые или слегка овальные, с небольшим размером экрана (5–12 дюймов диагональ). Поэтому перед картинкой часто ставили увеличительное стекло, иногда заполненное маслом для устранения аберраций. Формат кадра – близкий к 4:3, но сами трубки могли быть круглыми, и прямоугольное изображение вписывалось внутрь круга. Это давало скруглённые углы и немного неравномерную фокусировку: центр экрана обычно был наиболее резким, а по краям наблюдался дефокус и падение яркости. Объективно, геометрическая линейность тоже страдала – были бочко- и подушкообразные искажения из-за несовершенства магнитной развёртки (вертикальные линии могли искривляться к краям, масштаб по краям отличаться). Но зритель того времени, не имея эталона, воспринимал это как норму.
Поведение яркости: катодные трубки имели нелинейную характеристику – тёмные участки могли проваливаться в чёрный, а светлые часто выбивались в сплошной белый (диапазон контраста ограничен). При увеличении контраста на приборе, яркие объекты “сбивали” – центр экрана мог засветиться чуть больше (поскольку электронный луч в центре был сильнее сфокусирован). Кроме того, неравномерность развёртки вызывала слегка различную яркость сверху и снизу экрана (кадровая яркость могла плавать). Тем не менее, благодаря послесвечению люминофора P1/P4, мерцание поля сглаживалось – изображение уже не мигало так явно, как механическое.
Как реализовать в DaVinci Resolve (Fusion):
Для эпохи раннего электронного ТВ потребуется повысить резкость (по сравнению с 30 строк), но ввести новые типичные искажения: полутона зелени, межстрочные артефакты, шлейфы и дефокус краёв.
- Разрешение и поля: смоделируйте ~300–400 строк. Практически можно взять хорошее качество исходника и имитировать интерлейс. Например, добавить Interlace (есть OpenFX Analog Damage с опцией чересстрочности или вручную): разделите изображение на чётные и нечётные строки. Один способ – использовать TV Node Fusion: параметр Scan Lines = 1 по умолчанию отбрасывает каждую вторую линию, давая видимый чересстрочный растр. Если не использовать готовый узел, сделайте маску-полосы как ранее, но не полностью чёрные: а полупрозрачные – это создаст чуть более тёмные пропуски между строками, имитируя развертку. Затем добавьте эффект лёгкого чересстрочного смещения: сдвиньте чётные строки на полкадра вперёд во времени. Реализовать можно дупликацией слоя: один TimeOffset на +1 кадр для копии изображения, затем маской через Keyer или Custom Tool пропустить на оригинал только чётные строки копии, а нечётные – с оригинального кадра. Так получится эффект combing (гребёнки) при движении – правда, на статичном кадре это не заметно, но при движении появятся характерные “зубцы” по краям объектов. Если такой точности не нужно, оставьте просто ритмическое мерцание строк (что даёт TV Node). Полезно также сымитировать вертикальный ролл: например, каждые несколько секунд дергать изображение вниз/вверх. В Fusion можно анимировать ключевой кадр позиционирования по Y или использовать выражение типа: yOffset = (floor(time/50)%2==0 ? 0 : 0.02) – это заставит каждые 50 кадров чуть смещать картинку (условно, эффект “поймавшего” или сорвавшегося синхроимпульса).
- Цветовой тон: добавьте Color Corrector и установите баланс в зелёно-серые тона. Например, снизить Saturation до 0 (чистое ЧБ), затем чуть вернуть 5–10% цвета и сдвинуть оттенок midtones в зелёную область (около 100–120°). Это даст едва уловимый зелёный оттенок в сером. Контраст можно слегка поднять (Gamma ~0.9) – ранние CRT имели повышенную гамму, изображение было контрастным по центру. Одновременно стоит выполнить тональное “сжатие”: яркие участки слегка приглушить (Gain <1), тени чуть приподнять (Lift >0) – чтобы смоделировать ограниченный динамический диапазон тех трубок.
- Шум и помехи: используйте комбинацию: Grain (или Fast Noise) для мелкого фонового шума плюс дополнительный эффект “рябь кадра”. Шум лучше сделать монохромным, мелким (Detail высок, Scale очень малый ~1–2), низкой амплитуды (Opacity ~0.1). Это симулирует электронный шум цепей. Отдельно реализуйте “призрачные обводки” и шлейф: самый эффективный метод – создать копию изображения, чуть размыть ее (Blur ~2) и сдвинуть на несколько пикселей вправо (или по движению объекта, если известен). Затем эту копию наложить на исходное с очень малой непрозрачностью (~0.1–0.2) и Blend Mode = Add или Screen. В итоге от ярких контрастных границ появится бледный дубль смещённый – как раз ghost image (эхо). Можно усложнить: сделать две копии – одна белёсая, другая возможно тёмная (иногда иконоскоп давал тёмный ореол вокруг яркого объекта). Для тёмного ореола – копию инвертировать, сильно размыть и сложить Subtract на исходник очень слегка. Таким образом, вокруг очень яркого пятна будет еле заметный тёмный кант (эффект перенапряжения мишени, когда выбитый заряд давал инверсию). Не забудьте также вертикальное мелкое дрожжание: анимируйте Transform.Center Y с шумом амплитуды ~0.002 (чуть-чуть) на высоких частотах (быстрая мелкая тряска) – это придаст “нервность” изображению, будто у ТВ чуть плавает регулятор вертикальной синхронизации.
- Размытость и оптика: центр изображения можно оставить относительно резким, а края искусственно размыть. Простейший способ: применить Vignette Blur – например, узлом Ellipse Mask очертить центр (70% ширины), инвертировать ее и внутри неё Blur с радиусом 2–3px. Так по периметру кадра будет мягкий дефокус. Плюс, добавьте Glow для ярких объектов: небольшого радиуса (~5) и низкой интенсивности, только на самые светлые пиксели (Threshold ~0.8). Glow слижет резкие границы яркого объекта, передавая эффект blooming’а. Геометрически можно чуть скруглить уголки: маской или Corner Pin поджать самые края картинки. Либо нарисовать чёрные овалы по углам (как бы рамка трубки). В Fusion это можно сделать маской Rectangle с большим радиусом скругления (Corner Radius ~0.1), так чтобы края занавешивались. Ещё вариант – Edge Mask или Custom с формулой скругления. И, как раньше, LensDistortion: чуть-чуть Barrel (раз экраны тогда выпуклые), но можно и оставить почти ровно – ранние ЭЛТ при небольшом размере не слишком страдали геометрией.
- Вертикальный и горизонтальный hold: чтобы передать дух “старого ТВ с подстройкой”, можно нарочно вставить эпизодический срыв: например, через каждые ~10 секунд выполнить анимацию: сдвиг кадра по вертикали на четверть экрана вниз и возвращение (эмулируя проскок вертикальной синхронизации). Делается анимацией параметра Center Y или Y Position в течение 1–2 кадров. Аналогично, один-два кадра срезать строк ~10 сверху и приклеить их снизу (можно Duplicate с offset). Это даст впечатление, будто картинка “прокрутилась”. С горизонтальной нестабильностью сложнее – можно имитировать двойное изображение (эхо): вместо детального моделирования многолучевого приёма, просто используйте уже сделанную копию-смещение (ghost), только сместите её не на 2px, а на ~5–10px и прозрачность совсем малую ~0.05 – будет легкий ghost/echo как от отражения сигнала (например, аналог эфирного “призрака” от отражения сигнала от здания). В те годы такое могло быть, хотя большая часть “призраков” появилась позже в городах, но добавит атмосферы.
Цепочка узлов может быть: MediaIn -> Deinterlace/Reinterlace simulation (или TV Node) -> ColorCorrector (зеленоватый баланс) -> Glow (на яркие) -> Ghosting (Merge с размытым сдвигом) -> Blur (виньеточный) -> LensDistort (бочка) -> Transform (дрожание) -> Merge (шум зерно) -> MediaOut. Параметры: Interlace drop ~1 строка из 2, Glow threshold ~0.8, Ghost offset ~5px, Blur edges ~2px, зеленый tint ~10%. На выходе получим изображение, напоминающее довоенный электронный телевизор: более чёткое чем 30-линейное, но с легкой зеленью, мягким фокусом и характерными шлейфами от ярких объектов.
1950–1970 – Массовое чёрно-белое аналоговое ТВ (NTSC/PAL/SECAM в моно)
Разрешение и стандарты: в послевоенные десятилетия телевидение стало массовым. Базовые стандарты развертки стабилизировались: 525 строк 60 полей/с (NTSC) в США, 625 строк 50 полей/с (PAL/SECAM) в Европе. Однако это – теоретические строки; реально видимых ~480 и ~576 соответственно (остальное – строчки гасящего импульса). Частота кадров ~25–30 fps (чересстрочно). Впервые изображение достигло относительной резкости: по меркам того времени “чёткая картинка”. Но фактическая детальность CRT-телевизора ограничивалась полосой вещания и экраном: телевизор мог воспроизвести порядка 300–400 тв-линий по горизонтали. Например, для системы NTSC эффективное горизонтальное разрешение ~ 340 точек (240 ТВ-линий). Центр экрана обычно давал максимальную резкость, а по краям резкость падала (проблемы фокусировки и отклонения).
Цветовая палитра: телевизоры ещё чёрно-белые, но сигнал мог быть с разными стандартами аналоговой модуляции. В NTSC моно, PAL-B/G моно или SECAM моно цветовые поднесущие отсутствуют – так что здесь цвет не играет роли (изображение градации серого). Однако сама передача ч/б сигнала имела спектральные нюансы: в США предписан гамма-корректор 2.2, в Европе ~2.8 для камеры – это делало картинку контрастной. На бытовом уровне зрители воспринимали богатый диапазон серого, но все же в зависимости от установки яркости/контраста ТВ часто либо “выбеливали” светлые области, либо «зажимали» тени. Многие БТ (ч/б телевизоры) имели потенциометры контрастности, яркости, иногда “тон” (но тон уже не в смысле цветового тона, а баланса белого – например, теплый/холодный). И ещё: люминофор P4 давал слегка холодноватый белый – лёгкий сине-голубой оттенок, особенно заметный при уменьшенной яркости экрана (тени могли казаться синеватыми). Это потому что P4 люминофор имел пик излучения в сине-зелёной части спектра. Таким образом, центр экрана под прямым взглядом – белый, а под углом мог чуть синить или зеленить.
Развёртка и синхронизация: к 50–60-м годам схемы синхронизации улучшились, но расстройка вертикальной синхронизации всё ещё случалась (кадр мог “прокручивать” при проблемах сигнала или когда пользователь только включил ТВ и он ещё “прогревался”). Вертикальный держатель (vertical hold) имелся почти на всех моделях вплоть до 70-х. Картинка могла дергаться, если частота полей слегка уплывала – тогда в кадре наблюдалось периодическое подёргивание по вертикали. Горизонтальная синхронизация уже обычно автоматическая, но при очень плохом сигнале могла появляться разрывающаяся горизонтально картина (эффект “бегущего горизонтально изображения”, который пользователь правил ручкой line-hold). Ещё распространённый артефакт – дрожание по кадрам: едва заметное периодическое подёргивание (связанное с полукадровым несовпадением или нестабильностью частоты питающей сети, 50 Гц на вертикале давало легкий flicker). В частности, при съёмке кинескопа кинокамерой виден бегущий тёмный бар – это разность кадровой частоты камеры и ТВ. Глаз человека тоже мог уловить микрофликер на больших светлых площадях из-за того, что поле обновляется 25/сек – небольшое мерцание на ярком фоне. Но в целом изображение воспринималось стабильным.
Артефакты камеры и сигнала: в 50-е телевидение шагнуло далеко вперёд в качестве изображения, но камеры того периода (имидж ортокон, видиконы) имели свои изъяны. Например, “кометный хвост” – яркие объекты (свечи, лампы, блеск) на передаче оставляли вертикальный шлейф вниз по экрану. Это был эффект насыщения передающих трубок: из-за инерции и вытеснения заряда яркие точки “тянулись” по направлению развёртки. В живом эфире 60-х такие хвосты от прожекторов или бликов – обычное дело. Кроме того, инерционность всё ещё проявлялась: быстрый взмах мог чуть размазываться. Шумы: аналоговый эфир приводил к временному “снежению” – особенно при дальнем приёме или помехах. На экране это были хаотические белые точки и точки (noise), вспыхивающие случайно. При сильных помехах картинка могла быть буквально покрыта “снегом”. Также, при проблемах с антенной появлялись “призраки” – копия изображения смещённая, накладывающаяся на основное (эхо от отражения сигнала). В городе это было заметно: напр. контуры объектов двоились слабой тенью справа.
Оптические особенности CRT: массовые CRT тех лет имели выпуклый экран из толстого стекла. Смотреть приходилось прямо – под углом увеличивались дисторсии и падала яркость. Фокусировка неидеальна: часто центр экрана настраивался резким, за счёт чего по краям наблюдался софт-фокус (размытие). Термин “сводящий фокус” применялся – нужны схемы динамической фокусировки, которые тогда были примитивными, поэтому на 21″ экране края заметно мягче центра. Overscan – кадр специально увеличивали, чтобы границы кадров не были видны, вследствие чего часть изображения уходила за пределы видимой области. Поэтому надписи по краям могли обрезаться. Линейность изображения обычно неидеальна: верх/низ могли быть чуть растянуты. Но главное – экраны были сферическими, что давало легкое искажение: прямые линии на краях экрана искривлялись. Зрительно – изображение выглядит слегка выпуклым.
Поведение яркости: черно-белые кинескопы середины века имели довольно равномерный свет, но углы экрана часто темнее (виньетирование). Кроме того, статическое электричество могло притягивать пыль на стекло, что тоже затемняло углы. При переключении каналов/сигнала част случался “white flash” – кадр вспыхивал от отсутствия сигнала (трубка получала полный луч на мгновение). На статичных контрастных изображениях могло наблюдаться выгорание люминофора – если долго была таблица настроек, потом на сменившейся картинке можно призрачно видеть её след. Но в динамике это не видно. Яркие объекты при превышении определённого порога вызывали расфокус (blooming): например, очень яркий логотип может немного расширяться, теряя чёткость. Телезрители видели это как “сияние” вокруг белых пятен.
Как реализовать в DaVinci Resolve (Fusion):
На данном этапе нам нужно добиться наиболее чистой ЧБ-картинки с характером CRT-дисплея – хорошей чёткости в центре, смягчения по краям, лёгкого шума и иногда артефактов синхронизации.
- Резкость и детализация: исходное видео (если цветное) переводим в чёрно-белое: Color Corrector Saturation = 0. Далее добавляем чуть искусственной резкости в центре. Можно применить Sharpen (радиус 1, gain 0.5) в комбинации с маской-эллипсом по центру (Feather ~0.3). Центр станет чётче, края не затронутся. На самые края наоборот – Blur (радиус ~1–2) с инвертированной той же маской. Это эмулирует оптический фокус старых ТВ – центр резкий, края мягкие. В целом разрешение пусть будет полное (SD 525/625).
- Геометрия и overscan: сделайте небольшое увеличение картинки (~5%) узлом Transform – так, чтобы кадр выглядел немного “увеличенным” (часть изображения спрятана за границами кадра). Это смоделирует overscan. Затем Lens Distortion (или Cubic Lens Distort) для бочкообразности: значение ~+0.03 (небольшое). Углы кадра можно затемнить: Vignette – классическим способом (Mask Ellipse, Invert, кормим в ColorCorrector с Lift +0.1 вниз). Также стоит немного скруглить границы кадра: если хотим аутентично – можно просто обрезать углы чёрной маской (как описывалось, прямоугольник со скруглением). Но поскольку overscan, углы и так не видны зрителю, можно опустить.
- Гамма и яркость: установите характерную контрастность CRT. В Color Corrector выставьте Gamma ~0.8 (чуть завышенный контраст в средних тонах), Lift чуть поднять (0.05) чтобы тени не проваливались полностью (старые CRT редко давали идеальный черный, скорее тёмно-серый фон). Gain немного ограничить (0.9) – чтобы белый не вышел за предел (эмуляция ограниченного динамического диапазона). Если нужен оттенок люминофора – можно едва-едва сделать теплее или холоднее. Например, добавить Tint синий 5% на тени и зелёный 5% на midtones. Это практически не будет различимо, но подсознательно холодные тени и слегка тёплые средние создадут эффект P4 люминофора (который светил сочетанием разных длин волн).
- Шумы эфира: добавим “снег”. Fast Noise, Detail 0, Contrast ~1, Brightness 0, Scale такой, чтобы размер зерна был очень мелким (подберите ~ Scale 50). Затем через Brightness/Contrast ограничьте его: повысить Brightness, снизить Contrast чтобы получить почти двоичный чёрно-белый шум (так легче потом смешивать). Наложите этот шум через Merge (Screen) на изображение, но регулируйте Blend на низкое значение (0.1 или анимируйте от 0 до 0.2 в разных сценах). Это даст еле заметную “живость”. Для имитации сильных помех, можно временно (на несколько кадров) повысить Blend (имитируя прохождение машины или грозу). Кроме того, реализуйте мелкие горизонтальные полоски-дропауты – в аналоговом эфире их не было (это скорее VHS), так что пропустим dropouts, но можно сделать вертикальное моргание: Displace с шумовой картой (Fast Noise, Stretch X сильно чтобы были вертикальные полосы случайные) – если эту карту чуть-чуть (1–2px) двигать горизонтально, получатся тонкие вертикальные искажения. Однако такой эффект больше к цветному композиту относится (при помехах цвета). В ЧБ эпоху лучше имитировать призрак: как ранее, Merge с копией сдвинутой вправо на ~5 px, прозрачность 0.1. Это даст ghost image справа. Можно сделать ghost чуть размытым, чтобы выглядело как слабое эхо. Не применять постоянно – возможно, как опцию или легкий постоянный (в городах часто был небольшой ghost практически всегда).
- Кометные хвосты: этот эффект проявляется только на движущихся очень ярких точках. Его можно симулировать так: с исходным кадром делаем следующее – если есть яркий объект, на следующем кадре добавить за ним полупрозрачный шлейф. Автоматизировать в Fusion: Trailing Effect – можно попробовать Motion Blur (но это не то), либо скриптом: сравнить текущий кадр и предыдущий, выделить яркие пиксели, нанести их слабой копией позади. Проще: TimeMachine (самописный) или просто Merge текущего кадра с предыдущим, сдвинутым вниз на пару строк и прозрачностью 0.5, но через маску ярких областей. Это сложновато. В практической задаче проще нарисовать кометный хвост, если известно где. Но можно и упростить: Glow вертикальный – использовать Directional Blur (направление 90° вниз) на ярких объектах. Например, дубликат слоя, на нём Threshold (чтобы взять только очень светлые пиксели), далее Directional Blur (angle 90, length 10–20), Blend Screen 0.2. Это создаст вертикальные свечения от ярких участков, напоминающие кометные хвосты. Не переусердствуйте, чтобы весь кадр не потек вниз. Достаточно чуть уловимого эффекта на самых ярких контрастах.
- Синхросбои: для правдоподобности стоит добавить едва заметное дрожание кадров. Например, Transform с выражением для Center: Center.X = 0.5 + 0.002*sin(time*2*pi*0.5) – медленное дыхание по горизонтали (пол кадра вправо-влево на 0.2% с периодом 2 сек). Это симулирует несовершенную фильтрацию сети (50 Гц на вертикалке давало горизонтальные микроколебания). Вертикально тоже можно: очень слабый random jitter: каждые ~100 кадров добавить скачок в ±1 пиксель по Y (симулируя срыв кадра раз в несколько секунд). Expressions: if(mod(time,100)<1, random(-0.002,0.002), prev) – как-то так. Также можно на пару кадров чуть исказить геометрию: Skew или Shear узлом Transform (покрутить image за эти кадры) – как будто ручку горизонтальной подстройки тронули. Но такие эффекты лучше применять осторожно, чтобы не отвлекать зрителя.
После всех правок, чёрно-белое изображение получится довольно чистым, но с тонкой “пленочной” зернистостью, мягкими краями и характерным телевизионным вайбом. По сути, мы эмулировали вид хорошо настроенного лампового ЧБ-телевизора: резкий центр, мягкие углы, небольшое мерцание и шум, стабильная но «живая» картинка. Узлы: MediaIn -> Sharpen(center masked) -> Blur(edges) -> ColorCorrect (γ, gain) -> Transform (overscan+geom jitter) -> LensDistort -> Merge(ghost echo) -> Merge(static noise) -> Merge(vertical glow tail) -> MediaOut.
1970–1990 – Цветное аналоговое телевидение (композитный сигнал NTSC/PAL/SECAM)
Разрешение и цветовой сигнал: С приходом цветных стандартов NTSC (1954), PAL/SECAM (1967) разрешение яркостного канала (Y) сохранилось как в ЧБ (525/625 строк, ~30/25 fps чересстрочно). Цвет передавался в ограниченной полосе: цветоразностные сигналы мультиплексировались с яркостью. Фактически эффективная цветовая детализация была гораздо ниже яркостной – порядка 40 горизонтальных линий (NTSC) до ~100 (PAL/SECAM) на высоту кадра. Это означало, что цветные мелкие детали “мазались” и окрашивались неверно. Например, красные тонкие линии могли выглядеть размытым пятном. NTSC имел худшую цветодетальность (около 0.5 МГц ширины полосы на цвет, ~20–30 тв-линий разрешения), PAL/SECAM примерно вдвое лучше (до 100 тв-линий). Визуально цветное изображение 70-х было менее резким, чем предыдущее ЧБ: яркость чёткая, цвет слегка размытый. Частота кадров: NTSC 29.97 fps, PAL/SECAM 25 fps, чересстрочно – отличия здесь влияли на восприятие мерцания (PAL чуть сильнее мерцал из-за 50 Гц полей, NTSC более плавный при 60 полях). Но главное – цвет дал новые виды искажений.
Цветопередача и ограничения: NTSC печально известен как “Never Twice Same Color“: при передаче цвета фаза поднесущей очень чувствительна к помехам, что приводило к сдвигу оттенка. Если телевизор неправильно настроен или сигнал слабый – лица могли позеленеть или покраснеть. Пользователю приходилось регулировать ручку “Tint”. PAL решил эту проблему, чередуя фазу поднесущей по строкам и усредняя ошибки – цвет стал стабильней. SECAM пошёл иным путём: передавал два цветоразностных сигнала по очереди (строка U, следующая V, и т.д.) в частотной модуляции. Это устранило фазовые ошибки совсем, но ввело эффект: при переходах цвета заметны цветовые гребёнки/полосы – т.к. цвет дискретен по строкам, на мелких деталях могли появляться чересстрочные цветные муары. В общем: NTSC – насыщенные цвета текут, контуры цвета неточны; PAL – цвет чётче, но при крупной помехе возможны разноцветные полосы (“Hanover bars”); SECAM – цвет без муара, но при мелких деталях возможна “расцветка” по строчкам (например, узор мелкой клеточки мерцает цветными полосками). Спектрально: NTSC использовал поднесущую ~3.58 МГц, PAL ~4.43 МГц – поэтому на NTSC цветовой шум попадал ближе к середине диапазона яркости, сильнее мешал; SECAM имел 2 поднесущие (4.25 и 4.41 МГц), но из-за FM-модуляции его шум проявлялся полосами.
Эффекты композитного сигнала: объединение яркости и цвета вызвало характерные артефакты: Cross-color и cross-luma. 1) Dot crawl (ползущие точки) – на резкой границе цвет/без цвета декодер путал высокочастотную яркость с цветовым сигналом, появлялся узор в виде ползущей шахматки по границе. Например, титры с мелким текстом давали муар цветных точек. Особенно знаменит радужный моар на твёрдых узорах (галстук в мелкую полоску мог переливаться цветными волнами). 2) Hanging dots (висячие точки) – наоборот, участки цвета порой проявлялись как всполохи яркостного шума. В PAL эти эффекты меньше, но всё же есть. Цветовой шум: кроме обычного шума, добавился шум поднесущей – в тёмных областях можно было заметить слабое цветное рябление, особенно в красных (красный сигнал слабее SNR). Помехи эфира в цвете приводили к временному потере цветности (картинка может прыгнуть в ЧБ при плохом приёме) или к мажущимся цветовым полосам. При очень плохом сигнале цвета в SECAM могли раскладываться полосами (т.к. декодер не ловил правильно чередование).
Хроматические аберрации CRT: цветные кинескопы (теневая маска, три луча RGB) страдали проблемой сведения: если электронные пушки не идеально калиброваны, каналы R, G, B немного не сходились по краям экрана. Это давало цветные ореолы: например, белый объект на краю мог иметь красноватый контур с одной стороны и голубой – с другой (ошибка сведения). Даже при заводской настройке, по углам небольшая хроматическая аберрация была заметна. Также объективные линзовые аберрации существовали: в больших экранах использовались дополнительные фильтры, которые могли слегка размывать цвета по краям.
Геометрия и яркость: появились большие диагонали (25–30 дюймов к 80-м), и там краевые искажения усилились. В телевизорах 70-х нередко по краям кадра видна была слегка изогнутая вертикаль (коррекция неидеальна). Яркость цветных CRT обычно ниже, чем у ЧБ (из-за теневой маски часть света теряется). Поэтому изображение немного темнее, а при повышенной контрастности сильнее проявлялся blooming на ярких объектах. Цветной люминофор имел меньше послесвечения (особенно голубой) – зато при переключении каналов цветные точки могли инерционно вспыхивать разноцветными.
Как реализовать в DaVinci Resolve (Fusion):
Это, пожалуй, самый сложный случай, т.к. нужно учесть массу мелких эффектов. План таков: разделить видео на яркость и цвет, ухудшить цветовое разрешение, внести “композитные” дефекты, а потом собрать и наложить артефакты CRT.
- Разделение на YUV: используйте ChannelBooleans (или в Color табе ноды) чтобы выделить яркость и цвет. Например, сконвертировать в YUV: Y = 0.299R+0.587G+0.114B, U = B-Y, V = R-Y. В Fusion можно взять Color Space Transform -> Rec.601 YUV. Затем к каналам U и V применяем Blur с радиусом ~2–3 (или Resize уменьшая и возвращая обратно) – таким образом мы размоем цветовые детали до уровня аналогового NTSC/PAL. Например, уменьшить горизонтальное разрешение цветоразностных в 4 раза. После этого собрать обратно в цветное RGB (обратным Color Space Transform). Это сразу даст ощущение: мелкие цветные детали исчезнут, картинка чуть “замылится” в цвете.
- Dot Crawl и перекрёстные артефакты: это тонкий эффект, трудно моделируемый точно. Можно пойти искусственным путём: сгенерировать текстуру “шахматки” и наложить на границы. Один из приемов – взять яркостный канал (Y), пропустить через высокочастотный фильтр (Edge Detect или High Pass), затем пороговый фильтр чтобы выделить резкие границы. Там, где такие границы есть, мы накладываем полупрозрачный узор: CheckerBoard мелкий (2×2 пикселя) с 50% прозрачности, движущийся вправо на 1 px каждый кадр (со скоростью ~15 Hz – половина поднесущей). Это симулирует ползущую муарную сетку. Конкретно: создайте Fast Noise с sRGBNoise = Off, Detail 0, и Scale очень малый по X (например 2), побольше по Y (например 50), получите вертикальные полосы. Потом инвертируйте через один – будет пунктирный узор. Анимируйте Offset X этого шума синусоидально. Наложите через маску границ. Это крайне сложный трюк, можно упростить: просто взять видео Composite artifacts sample – но нельзя, нужно самим. Если задача – не кодировать реальный сигнал, а визуально передать ощущения, допустимо смоделировать “ненастроенность”: например, на стыке контрастных цветов добавить дрожащую цветную окантовку. Можно реально попытаться: возьмите исходное RGB, примените TV Node и включите Amplitude/Frequency – он как раз генерирует синусоиду искривления по краям. Слегка видно ползущую волну. Но, учитывая условие “без пресетов”, можно пропустить детальный dot crawl. Скромно упомянем: мы немного размыли цвет, а dot crawl проявится в мелком шуме цвета, который добавим.
- Цветовой шум и помехи: добавьте Fast Noise для цветового шума. Сделайте его цветным: в узле Fast Noise поставьте Colorful Noise = On. Установите Scale средний (~10), Detail 2–3, Contrast ~0.5. Получится разноцветный зернистый фон. Очень сильно уменьшите его Blend (<0.1), едва заметно. Этот шум даст ощущение “шевеления цвета” на однородных поверхностях. Особенно важно для красных: можно усилить компонент U/V шума именно в красных областях – но это тонко. Вообще, можно отделить U и V каналы (как выше) и добавить к ним разные Fast Noise. Например, для V (отвечает за красно-зелёный баланс) добавить шум посильнее, а для U (сине-желтый) – слабее. Тогда красный действительно будет более шумный.
- Сдвиги цвета (Hue errors): если эмулируем NTSC вариант: можно добавить периодический сдвиг оттенка. Самый простой способ: каждые N кадров чуть крутнуть Hue. В Fusion: анимировать ColorCorrector.HueShift, скажем, +5° на пару секунд, потом обратно. Или плавно колебать ±2° постоянно (имитируя подстройку цвета). Для PAL – можно поиграться построчным сдвигом фазы: например, чередовать слегка то в плюс, то в минус оттенок по строкам. Невозможно явно сделать, но можно попробовать эффект: ScanLine Jitter – если был. Или сгенерировать поле: маска-чересстрочный гребень, и под неё два ColorCorrector – один Hue +δ, второй -δ, применить соответственно к чет/нечет линиям. PAL декодер сам бы усреднил, но если имитируем неисправность, могут появиться слабые черезстрочные полосы цвета. SECAM можно намекнуть: добавить очень тонкие горизонтальные полоски и слегка разное цветовое насыщение на них. Проще: наложить Noise с размером в 1 строку высотой, проходящий медленно сверху вниз. Это избыточно, к тому же SECAM артефакты редки без крайне плохого сигнала. Вероятно, достаточно показать общее: NTSC – цвета чуть плавают, PAL – стабильны. Для этого: если NTSC – пусть HueShift expression: 0.02*sin(2*pi*time*0.2) (медленно колеблется ±0.02 рад ~ ±1°).
- Misconvergence (цветовые ореолы): теперь про хроматическую аберрацию CRT. Это можно реализовать, разложив изображение на R,G,B, слегка сдвинув каналы по краям. Удобно использовать Chromatic Aberration OpenFX, но “ручная сборка”: дубликаты изображения: 1) только красный канал (RGB->R00), 2) только синий (00B). Каждую слегка трансформировать: красный – сместить вправо и вверх на 1px, синий – влево и вниз на 1px (для примера). Затем снова объединить: R, G (ориг), B. Это даст красно-синий кант на контрастных границах. Интенсивность – малую, можно в Transform fractional offsets 0.002. И ограничьте эффект краями: с помощью маски (Invert Ellipse, Feather), чтобы в центре сходилось идеально, а к углам расходилось. Тогда центр – белый, края – с цветными ореолами.
- Блик и glow: Цветные CRT имели стекло с покрытием антиблик, но всё равно яркие пятна светились. Добавьте Glow, но теперь цветной ореол: Glow возьмет исходный цвет яркого объекта. Порог ~0.7, размер ~3, Gain 0.2. Тогда, скажем, белая вспышка даст белый ореол, а красная рубашка под ярким светом – красноватый ореол (это приближенно имитирует цветное blooming).
- Сканирование дефекты: Кроме dot crawl, есть ещё “rolling distortion” при плохом сигнале: кадр может наплывать волной, строки неровно горизонтальные. Смоделировать можно Displace с синусоидальной картой по вертикали. Fast Noise с Noise Type = Gradient или просто Sine текстура: по Y – одна-две волны, по X – значение, анимировать очень медленно прокрутку по Y. Наложив через Displace (X displacement) – получим ползущие горизонтальные полосы (картинка как бы изгибается плавно в полосе). Ещё вариант – TV node Roll Bar, но можно самим: взять прямоугольник 1/5 высоты, прокатить его сверху вниз прозрачностью 0.2 – будет напоминает бегущий темный бар (это наоборот, световая полоса).
- Другие помехи: в цветную эпоху иногда встречалось выпадение цвета: изображение вдруг на секунду становилось ЧБ. Можно симулировать: анимировать Saturation на 0 и обратно в случайный момент. Модуляционные шумы – иногда тонкие цветные полоски, особенно в SECAM при многоканальном приёме. Это глубокое радио, мы можем не заходить.
Сводя всё вместе, получаем очень сложную композицию. Возможная цепочка:
MediaIn -> Colorspace(YUV) -> Blur (U,V channels) -> Colorspace(RGB) -> ColorCorrector (Hue jitter, Sat adjust) -> ChannelBoolean/Combine (misconvergence RGB offsets) -> Glow -> Aberration Mask edges (to not affect center) -> Transform (geom distortion or roll) -> Merge (fast noise color speckles) -> Merge (ghost bar or dotcrawl pattern if any) -> MediaOut.
Параметры нужно подбирать на глаз. Хорошей проверкой будет взять, например, кадр с мелким текстом или шахматным узором и убедиться, что на нём появились ползущие цветные точки и размывание – признак dot crawl. На границах белого/чёрного должен быть заметен цветной шумок (например, фиолетово-зелёные пиксели мерцают). Общее изображение – слегка мягче, чем у ЧБ ТВ, цвета немного “плавают”, но в целом насыщенные и яркие как на открытках того времени.
1990–2005 – Поздняя аналоговая эра (VHS, бытовые CRT, Video8)
Разрешение и формат: в 90-е эфирное вещание всё ещё аналоговое, но повсеместно используются видеомагнитофоны VHS, видеокамеры Video8/Hi8, игровые приставки – все эти устройства вносят дополнительные артефакты. Эффективное разрешение VHS значительно ниже эфирного: ~240 горизонтальных линий (NTSC) или ~290 (PAL), то есть по сути ~0.3 мегапикселя эквивалент. Картинка VHS заметно мягче, чем прямая трансляция. Частота – та же (интерлейс 50/60 полей). Video8 аналогично – порядка 240–250 линий. Hi8/SVHS улучшили до ~400, но они появились ближе к концу 90-х. Мы берем среднее: низкая четкость, интерлейс, артефакты ленты.
Цвет и сигнал: VHS записывает композитный сигнал на магнитную ленту с ограничением по полосе: цветовая поднесущая перенесена на ~0.63 МГц (для NTSC) или ~0.75 МГц (PAL) – очень низко. Поэтому цвета на VHS ещё более размазаны. Иногда на VHS цвет даже слегка дрожит, “плавает” (особенно SECAM VHS – цвет полосит). К тому же, каждое копирование VHS ухудшает цвет – многократно перезаписанные кассеты имеют блеклые, рваные цвета. Часто встречалось несовпадение цветности. На бытовых ТВ того времени уже почти не было ручки оттенка (NTSC-телевизоры 90-х автонастраивали цвет), но проблема решалась схемами автокоррекции не всегда идеально.
Артефакты ленты: вот здесь богатый набор характерных проблем:
- Dropouts (выпадения сигнала): это, пожалуй, визитная карточка VHS. Проявляется как бегущие горизонтальные белые черточки/полоски на 1–2 строки, случайно возникающие. Причина – отслоение ферромагнитного слоя или пыль на ленте, головка теряет контакт на доли секунды. На экране это выглядит как “царапины” или “снежинки”. Могут быть одиночные точки, а могут целые белые полосы через весь кадр. При сильном износе создаётся эффект “дождя” из таких линий.
- Шумы и помехи: помимо dropouts, VHS страдает шумом картинки: общий низкочастотный шум (зерно) и тихий “плывущий” шум – например, темные участки могут слегка переливаться. Это от низкого SNR записи и FM-шумов. Особенно заметно в тенях и насыщенных цветах (красный шумит). Также блокинг – при паузе/слоу мо картинка дрожит и распадается на полосы, но в нормальном воспроизведении не видно.
- Искажение по краям (skew error): в верхних или нижних строчках кадра часто видно изгиб – линия горизонтальная может быть смещена. Особенно верхняя часть кадра на VHS иногда “закручена” вправо или влево (зависит от трекинга). Это проявление неправильного считывания управляющей дорожки – она задаёт синхронизацию по кадрам, и когда она сбита, верх кадра отображается не на своем месте, создавая заворот. Часто заметно как “пилочка” или кривой край сверху. Снизу кадра тоже бывает полоса со смещением, это место переключения головок (head switching) – обычно последние ~5 строк могут иметь помехи или прыжок.
- Вибрация (jitter): VHS без Time Base Corrector даёт дрожание картинки в вертикальном положении (особенно заметно на статических титрах – они подрагивают). Это связано с микроскопическими разноскоростями ленты. Глаз порой неявно замечает, но если приглядеться – весь кадр чуть-чуть дёргается вверх-вниз на пиксель раз за разом. TBC устранял это, но на бытовых VCR без TBC такой jitter – норма.
- Склейки/перемотка: при физических монтажных склейках (кто монтировал ленту или при отрывании и ремонте) – кадр мог потеряться, изображение прыгало. А при стоп-кадре или замедлении на VHS – очень нестабильно: кадры трясутся, полосы шума пляшут. При нормальной же эксплуатации это нечасто, но в местах пауз или сразу после “Play” – обычно бросается рябь, скачок яркости.
- Цветовой blooming и bleed: VHS имел тенденцию перенасыщенные цвета распространять: напр., красная надпись на синем фоне – красный “разливается” за границы букв. Это комбинация слабой цветодетальности и перезаписи. Белые объекты часто давали цветные ореолы – например, белый текст на черном мог иметь цветную кайму из-за несовершенства декодера. Так же, общая размытость: яркость и цвет не совпадали точно во времени, немного разъезжались, давая “двойной силуэт” цветной относительно яркостного.
- Общее ухудшение: на VHS контраст обычно ниже (копия теряет яркость), чёрный уровень часто приподнят (из серого), белый может быть скучным. Также многим знаком эффект: “съехавшие цвета” – при большом нарушении трекинга цвет может рваться (видны полосы цвета, оторванные от объектов). Это особенно с SECAM/MESECAM видами бывало.
Как реализовать в DaVinci Resolve (Fusion):
Разделим на: смягчение резкости, добавление типичных шумов, геометрические искажения по строкам, искажение цвета, выпадения.
- Понижение резкости и цветоразрешения: проделаем то же, что для композитного сигнала: разделим YUV, размоем цветовые каналы еще сильнее (радиус blur 2-4) – цвета должны стать совсем расплывчатыми. Яркость тоже можно слегка Blur (по горизонтали на 0.5–1 px) – имитируя ограниченную ЧБ четкость VHS (~240 линий = ~320 пикселей горизонтально). Либо прямо отмасштабировать изображение до 320×480 (NTSC) или 400×576 (PAL) и обратно, чтобы получить «видеолук». Также добавить очень слабый Gaussian Blur общекадровый (радиус ~0.5) – VHS никогда не бывает абсолютно резким, всегда легкая мыльность.
- Цветовые сдвиги и блеклость: добавить Color Corrector: снизить контраст (Gamma 1.1), немного поднять Lift (чёрный становится серым – типично VHS-чёрный ≈10 IRE). Saturation можно даже чуть повысить (~110%), чтобы эмулировать “насыщенность” телевизоров тех лет (многие телевизоры 90-х имели перенасыщенные цвета). Но при этом цвета должны быть слегка грязными: можно добавить лёгкий общий сдвиг оттенка, например, +5° (часто бытовые записи имеют теплый или зеленоватый уклон). Если хотим показать многократную копию – можно Saturation снизить, и добавить в тени синий оттенок (выцветание).
- Dropouts: для дропаутов лучше всего нарисовать белые (или ярко-светлые) узкие линии на 1–2 пикселя высотой, длиной случайной, появляющиеся на 1 кадр. Это можно сделать генеративно. В Fusion – используем Fast Noise: поставим высокий Scale по X (чтобы были широкие полосы), очень маленький по Y (порядка 0.1) – получится текстура вытянутых горизонтальных сегментов. Затем применим Threshold, чтобы получить чёрно-белую карту: белые мазки – это наши dropout-линии. Анимируем Seed каждый кадр, чтобы полоски каждый раз в разных местах. Полученную маску используем для Paint или Merge: заливаем белым цветом те пиксели исходного изображения. И добавим немного blur 0.5px, чтобы полоска не была идеально резкой (на VHS она слегка размазана). Интенсивность: dropouts – обычно очень яркие (белые). Но если oversaturation, могут быть цветные. На VHS часто dropout виден как чисто белый/голубоватый штрих. Так что оставим белым. Настроим количество: можно контролировать Threshold – чем ниже порог, тем больше белого => много шумов. Оптимально 2–5 полосок на кадр. Чтобы не в каждом кадре, можно seed менять не каждый кадр, а раз в N кадров: например, expression: Seed = floor(time)%2 – тогда через кадр. Или проще – проредить: после генерации можно умножить маску на анимируемый Pattern, или в Merge Blend анимировать 0/1 по случаю. Но для «правды» dropouts рандомны: могут неск. подряд кадров сыпать, а могут и тишина. Это сложно сделать без скрипта. Может, напишем Expression: Blend = (random() > 0.9 ? 1 : 0) на каждый кадр – слишком хаотично. Ладно, допустим у нас dropouts идут постоянно. Это придаст “старое видео” сразу.
- Верхний изгиб (skew): смоделировать искривление верхней части можно Displace или Grid Warp. Более прямолинейно: взять верхние ~5% строк изображения (Mask Rectangle), и применить Transform с небольшим сдвигом по X. Скажем, на 5 пикселей вправо. И можно чуть наклон (Rotate пару градусов). И плавно сходиться к норме на ~10% от верхнего края. Проще – Grid Warp: поставьте несколько точек вдоль верхнего края и сдвиньте их. Или LensDistortion/Pincushion по вертикали? Но специфичнее – GridWarp. И анимировать плавно болтанку: качать эти точки на 1-2 px. Если сложно – хотя бы статично согнуть. Это даст видимый “загиб” верха. Нижний можно также, но обычно на экране нижний искажен менее (там обычно просто помехи полосой). Можно добавить в самом низу кадра тонкую полосу шума: Rectangle mask bottom 5px, Fill с каким-то pattern.
- Jitter (вертикальная дрожь): воспользуйтесь Transform с Expression: Center.Y = 0.5 + random(-0.002, 0.002) каждый кадр. Это даст случайный субпиксельный сдвиг – возможно слишком дергано. Лучше чуть сгладить: random можно заменить на Perlin noise по кадрам. Может, проще: CameraShake OpenFX – но без него, делаем вручную: Animate Y position Up/Down +-1 px с frequency ~4 Hz (быстрая мелкая тряска). Подойдет Shake модификатор (в Fusion модификатор Shake: амплитуда 0.002, smoothing 0.8). Это приблизит тот самый field jitter, особенно заметный на твердых горизонталях (они будут дрожать).
- Color Bleed/Bloom: если в видео есть ярко-красные области, VHS часто дает “ползущий” цвет вокруг. Обобщим: можно применить Glow но не добавляющий свет, а размывающий цветную составляющую. Например, дублируем цветовой слой (UV), Blur сильнее (5–8px), Blend его в оригинал (Add) но только в цветовые каналы. Альтернативно, ChannelBoolean лишь на цвет: взять U,V, сделать Glow. Это сделает цвета расползающимися. Сложно персонифицировать… Может, сделаем проще: Saturation эффекта: слегка размазать насыщенность: Blur на насыщенность. Но конкретнее: яркие цвета должны как бы “течь”. Например, ярко-красный объект на темном – на VHS имеет красный ореол. Для конкретности: сделаем Glow (Threshold 0.5, Gain 0.5, Size 5) но на красный канал только. Как? Взять только R component, Glow к нему, собрать обратно. Это даст красноватую размазню. Можно и для синего чуть.
- Static/Tracking lines: Иногда при потере трекинга идёт плывущий горизонтальный разрыв: кадр делится по горизонтали, часть смещена. Это похоже на верхний skew, но может быть и в середине кадра на мгновение. Для имитации – можно на пару кадров взять центр изображения и сдвинуть на несколько пикселей. То есть, создать эффект “картинка съехала”. Вероятно, слишком мелочь. Но можно: TimeSpeed модификация – slowdown/ speedup? VHS при перемотке – но это уже за рамками.
- Общая неравномерность ленты: Добавим легкое колебание яркости: период 1–2 секунды, ±5% яркости (Gain). Expression: Gain = 1 + 0.05*sin(2*pi*time*0.5). Это симулирует то, что лента может чуть колебать уровень.
После этих манипуляций, изображение приобретёт характерный “VHS-вид”: слегка смазанное, чуть дрожащее, с периодическими белыми штрихами и кривым верхом. Проверка – можно взять тестовый образ (цветные полосы) и убедиться, что на контрастных местах цвета смешались, появились шумные линии, а белая надпись, например, чуть двоится цветом.
Пример цепочки узлов VHS: MediaIn -> Resize/Blur (низкое резол) -> ColorCorrector (контраст, sat) -> YUV Split -> Blur UV (сильн) -> Merge UV back -> ChannelBoolean (RGB misalign optional) -> Transform (jitter + skew mask top) -> Merge (dropout lines) -> Merge (noise grain) -> MediaOut. Dropout lines – отдельно: FastNoise -> Threshold -> white color -> Merge (screen).
Если всё сделано, перед нами будет картинка, которую сразу узнаешь: будто смотришь старую видеокассету – небольшое размытие, нестабильность, цветовые “течи” и шумы, царапки. Осталось только, возможно, добавить надпись “PLAY” для антуража 😉 (это уже вне технической части, но иногда делают для стиля).
Рецепты настройки эффектов для каждой эпохи
Подводя итог, приведём краткие “рецепты” – набор узлов и параметров – которые можно использовать в DaVinci Resolve Fusion для симуляции каждой эпохи телевидения:
- 1925–1935 (Механическое ТВ):
- Разрешение: Resize до ~30–60 строк. Кадровая частота 5–12 fps – имитировать пропуском кадров и добавлением мерцания (Brightness oscillation ~5–8 Hz).
- Цвет: Чёрно-оранжевый монохром (неоновый). ColorCorrector: Saturation 0%, Tint оранж ~20°, Gain низкий (~0.5).
- Сканирование: Добавить чёрные линии между строк (маска-гребёнка, отбрасывать каждую 2-ю строку). Ввести случайные вертикальные сдвиги (Transform Y anim.). Лёгкая волнистость строк – Displace с шумовой картой (frequency ~1–2 per frame, amp 1–2 px).
- Шумы: FastNoise: крупнозернистый, моно, анимированный каждый кадр, Blend ~0.2.
- Геометрия: LensDistortion: Barrel +0.1 (экран выпуклый). Виньетирование: -20% яркости по краям. Скругление: маской обрезать углы.
- Дополнительно: Ghost эффект при рассинхронизации (слипшиеся кадры) – опционально добавить пару кадров задержки в Feedback.
- Разрешение: Resize до ~30–60 строк. Кадровая частота 5–12 fps – имитировать пропуском кадров и добавлением мерцания (Brightness oscillation ~5–8 Hz).
- 1935–1945 (Ранний ЭЛТ):
- Разрешение: ~240–405 строк, межстрочная развёртка. TV Node: ScanLines=1 (каждая 2-я строка пустая), можно добавить анимацию Roll Bar (лёгкое вертикальное подёргивание).
- Цвет/яркость: Монохром с зеленовато-серым подтоном. ColorCorrector: Sat 0%, Gain 0.8, Gamma 0.9, подмешать зелёный 5% в midtones.
- Фокус: Центр резкий, края Blur (Mask ellipse invert, Blur 1–2px). Glow слабый на белые (радиус 2, gain 0.1) для blooming.
- Шлейфы: Создать копию изображения с Blur 2px, сдвиг вправо 3px, Merge(Screen,0.2) – призрачный контур.
- Шум: Monochrome grain 0.2 scale, 0.1 blend (электронный шум). Вертикальная нестабильность: Transform Y jitter ±1px (раз в ~1–2 сек).
- Геометрия: LensDistortion Barrel +0.05. Добавить Line Oscillation: Displace края синусом (амплитуда 1px, частота 1–2 по высоте) – симулирует линийность неидеальную.
- Ghost/echo: Merge копии кадра с Offset X +5px, opacity 0.1 (эхо сигнала).
- Разрешение: ~240–405 строк, межстрочная развёртка. TV Node: ScanLines=1 (каждая 2-я строка пустая), можно добавить анимацию Roll Bar (лёгкое вертикальное подёргивание).
- 1950–1970 (Ч/Б аналоговое ТВ):
- Разрешение: Полный SD (525/625). Интерлейс-эффект: можно оставить легкий, или эмулировать combing на движении.
- Цвет: Чёрно-белое. ColorCorrector: Sat 0%. Gamma 0.8 (контраст), Lift +0.05 (серый чёрный). Возможно, tiny blue tint в тени (имитация фосфора P4).
- Резкость: Sharpen center (mask ellipse 0.7, gain 0.5). Blur edges (1px).
- Стабильность: Небольшое flicker на очень светлых (Glow flicker ~0.5Hz, gain 0.05). Vertical hold jitter редкий: Transform Y shift 1–2px на 1 кадр каждые ~8 сек.
- Шум: Static Noise (FastNoise threshold) 5% blend – мелкий “снег”. Ghost-эхо для многолучья: dubl image X+3px, opacity 0.05.
- Геометрия: Overscan: Zoom 1.05 (обрезать края). LensDistortion Barrel +0.02 (выпуклость). Vignette -15% brightness. Скруглённые углы (mask).
- “Кометный хвост”: Vertical DirectionalBlur 5px на ярких (Mask by Luma>0.9, Blur node) – очень слабый (alpha 0.1) – даст намёк на шлейфы от сильно яркого.
- Регулировки: Можно добавить HorizontalHold glitch: 1 кадр Transform X +10px, затем норм – эффект строчного срыва.
- Разрешение: Полный SD (525/625). Интерлейс-эффект: можно оставить легкий, или эмулировать combing на движении.
- 1970–1990 (Цветное композитное ТВ):
- Разрешение: SD. Разделить Y/C. Blur Chrominance сильно (UV channels radius ~2 px NTSC, ~1 px PAL). Собрать обратно.
- Цвет: ColorCorrector: Saturation ~120% (эпоха цветного – насыщенно), но добавить Hue jitter ±1° (NTSC нестабильность). Для PAL – можно не делать jitter. Gamma 1.0 (контраст стандартный), Gain 1.0 (яркость нормальная), Lift 0 (черный нормальный).
- Dot crawl: Simulate by Merge a fine checker pattern on edges. E.g., create 2×2 dot texture moving 60Hz, mask by edges (HighPass on Y). Blend low (~0.2). (Альтернатива: small FastNoise colored pattern on edges).
- Chroma noise: FastNoise colorful, scale ~5, detail 2, blend 0.1 – мелкое цветное “искрение” на однотонных областях.
- Misconvergence: Channel Boolean: Shift R channel +1px X, Shift B -1px X (and slight Y) – adds RGB fringe on edges. Mask it to edges.
- Glow/halo: Glow (Thresh ~0.7, size 3, gain 0.2) – цветные ореолы вокруг ярких.
- Geometry: Same CRT as B/W: Barrel distort +0.03, overscan zoom 1.05, vignette -10% brightness, soft edges.
- Artifacts: Occasional color phase loss: animate Saturation to 0 for 5–10 frames randomly (picture turns B/W momentarily – NTSC over-air artifact). For SECAM stripes: perhaps skip, or simulate by slight line flicker in color difference (subtle).
- Sync noise: Displace lines horizontally with vertical noise: use FastNoise (lines pattern vertical), displace X ±2px – yields slight line wiggle on poor signal.
- Audio hum bar: If keen, add a dark band scrolling: e.g., Rectangle mask 0.1 height, move down slowly, apply -20% gain in that band (simulating mains hum bar).
- Разрешение: SD. Разделить Y/C. Blur Chrominance сильно (UV channels radius ~2 px NTSC, ~1 px PAL). Собрать обратно.
- 1990–2005 (VHS/Analog tape):
- Resolution: Downscale to VHS quality. E.g., NTSC: ~333×480 px, PAL: ~400×576 px, then upscale (Bilinear). Or apply Blur: H radius ~1.5 px, V radius 0 (horizontal detail loss).
- Color: Slight color bleeding. ColorCorrector: Lower contrast (gamma 1.1), lift blacks (Lift +0.05), maybe slight hue shift (e.g., +3° greenish) to mimic aging tape. If simulating generation loss – reduce Sat to 80%. Otherwise keep Sat ~100% (VHS often had decent sat).
- Color blur: Further blur UV channels (even more than broadcast) – radius ~3–4 px.
- Dropouts: FastNoise (H Scale large, V scale tiny) -> Threshold -> result = random horizontal white lines. Merge(Add) these lines at opacity ~0.8 (almost white). Animate noise seed per frame.
- Tracking skew: Top 5% image – use GridWarp or Transform to skew left/right randomly by ~5–10px. Animate slowly (drift back/forth). Add small vertical jitter in that region (so it wobbles).
- Jitter: Transform Y random each field: amplitude ~1px. Use an expression or Noise modulator at ~25–30 Hz (field-rate jitter) – ensures overall frame jiggle.
- Noise/grain: Composite a bit of gaussian noise (like static) at very low opacity (0.05) – VHS has noise but more in color (we added chroma noise already). Optionally, add 1px horizontal lines of noise at bottom (head switching region) – a thin band of distorted noise at bottom 5-10 pixels high.
- Color bleed: Glow on chroma: duplicate image, apply heavy Blur (5px) to only chroma part, blend 0.5 – spreads colors. Also, ChannelBoolean: mix a bit of chroma into luma or vice versa to simulate luminance noise in color.
- Tape damage events: For authenticity, simulate momentary tracking loss: 1) a few frames of full image skew (like vertical hold off) – e.g., shift entire image down 50% and back. 2) color phase flip: one frame with wildly wrong colors (simulate a known VHS artifact when tracking very off – rainbow bars).
- Misc: Maybe overlay faint timecode or “Play” OSD for style (optional stylistically).
- Resolution: Downscale to VHS quality. E.g., NTSC: ~333×480 px, PAL: ~400×576 px, then upscale (Bilinear). Or apply Blur: H radius ~1.5 px, V radius 0 (horizontal detail loss).
Каждый из этих “рецептов” можно тонко настраивать под конкретный материал. Важно: итоговая реализация требует баланса – не перегружать изображение артефактами, а добиться правдоподобного вида. Используя описанные узлы Fusion и параметры, можно добиться того, что современное цифровое видео превратится в кадры, неотличимые от архивных телепередач соответствующей эпохи – с учётом всех особенностей физики и технологии того времени. Каждый артефакт, от мерцания диска Нипкова до шумовых полос VHS, добавит достоверности и погрузит зрителя в эпоху прошлого телевидения.