# теория · шаг 1 из 4
Событие меняет сцену, уточнение меняет базовый слой
Коротко
Объектная сцена восстанавливается из ресурсов, свойств узлов и событий, меняющих состояние. Нужна полная цепочка от события до обновлённой картинки, включая время и правила отрисовки. Масштабируемое видеопредставление решает другую задачу: базовый слой даёт самостоятельное приближение, уточняющий зависит от согласованной базы. Трёхмерная геометрия, параметрическая речь и описание содержания расширяют набор медиаданных, но требуют разных моделей декодера. Название семейства не означает, что любой плеер обязан реализовать все эти возможности одновременно.
Если прослеживаешь состояние сцены после события и восстанавливаешь зависимые слои, переходи к «Теперь сам».
Как думаешь, координата уже является картинкой
В поток пришло число 2 с подписью «новая позиция». Какие пикселы должны измениться? Без объекта, системы координат и правил наложения число не определяет изображение. Если раньше сцена содержала спрайт в позиции 1, обновление может оказаться дешевле нового кадра. Но для этого прежнее состояние и ресурс спрайта должны уже находиться у приёмника.
А если пришла поправка [3,0,1,2], она тоже не определяет готовую строку.
Одна база даст один результат, другая - другой. В объектном обновлении
и уточняющем слое экономия связана с сохранённым контекстом, хотя правила
построения этого контекста различаются. Их полезно проверять отдельными трассами.
На что это похоже
В спектакле можно передать указание актёру «шаг вправо» вместо нового описания всей сцены. Но указание предполагает известного актёра, его прежнее положение и общую систему направлений. В архиве фотографий похожую экономию даёт исправление к уже известной копии, но исправление не заменяет саму копию.
Эти две ситуации помогают отличить объектное управление от улучшения точности готового видео. Событие может убрать объект, изменить поведение или сдвинуть геометрию. Уточняющий слой в рассматриваемой модели меняет реконструированные значения относительно предыдущего приближения. Увеличение разрешения окна проигрывателя не создаёт ни того, ни другого автоматически.
Механизм: событие, состояние, отрисовка
Зададим сцену строкой из пяти серых пикселов. Фон равен 0, спрайт - один пиксел яркости 9. Состояние узла содержит x и видимость. Событие right увеличивает x на 1. Событие hide скрывает объект на текущем такте; на следующем такте он снова видим, если не пришло hide. Это последнее правило специально объявлено: другое поведение потребовало бы другой программы.
Цепочка обработки имеет вид:
время + событие
↓
изменение поля узла
↓
состояние сцены + известный спрайт
↓
отрисовка нового кадра
При x=1 исходная строка [0,9,0,0,0].
После right при t=1 станет x=2 и строка [0,0,9,0,0].
При hide в t=2 координата сохранится 2, но строка будет нулевой.
Следующее right в t=3 даст x=3 и [0,0,0,9,0].
Время, состояние и правила реакции позволяют воспроизвести каждую картинку.
Системные средства MPEG-4 описывают граф сцены, его поля и обновления; BIFS - двоичное представление такой сцены и изменений, а не произвольный исходник C++. В конкретной системе событие может исходить от часов, пользователя или другого узла. Его маршрутизация связывает изменение источника с полем получателя. Наш словарь событий - самостоятельная маленькая модель этого механизма, не нормативная запись BIFS и не обещание поддержки у каждого MP4-плеера.
Правило
Проверяя объектную сцену, выпиши исходные ресурсы, состояние, события, порядок их применения и правило отрисовки. Проверяя зависимые слои, выпиши базовую реконструкцию и допустимые предшествующие слои каждого уточнения. Одинаковое имя объекта или номер слоя не заменяет этих условий.
Если два события имеют одинаковое время и меняют одно поле, нужен согласованный порядок либо явное правило разрешения конфликта. Для сцены с перекрывающимися объектами также требуется порядок композиции, поскольку полупрозрачные слои в общем случае не переставляются. Это продолжает уже разобранный пример, где порядок дал 125 или 100.
Разбор: код, печатающий трассу события
Программа ниже не открывает внешние изображения и не использует лицензированные модели. Все ресурсы определены локально: один серый спрайт и простой фон. Поэтому изменение состояния видно непосредственно в напечатанных строках. Если убрать обработчик right, время продолжит идти, но положение перестанет меняться. Если забыть спрайт, одно значение x не позволит получить ненулевой пиксел.
def render(x):
row = [0]*5
if 0 <= x < 5:
row[x] = 9
return row
position = 1
print("t=0", render(position))
for time, event in [(1,"right"),(2,"hide"),(3,"right")]:
if event == "right":
position += 1
visible = event != "hide"
picture = render(position) if visible else [0]*5
print("t="+str(time), "x="+str(position), picture)
original = [11, 20, 33, 42]
base = [(v//4)*4 for v in original]
enhancement = [v-b for v,b in zip(original,base)]
print("база:", base, "уточнение:", enhancement)
print("оба слоя:", [b+d for b,d in zip(base,enhancement)])
wrong_base = [8, 16, 28, 40]
print("чужая база:", [b+d for b,d in zip(wrong_base,enhancement)])
point = (2., 4., 2.)
print("проекция x/z,y/z:", (point[0]/point[2], point[1]/point[2]))
t=0 [0, 9, 0, 0, 0]
t=1 x=2 [0, 0, 9, 0, 0]
t=2 x=2 [0, 0, 0, 0, 0]
t=3 x=3 [0, 0, 0, 9, 0]
база: [8, 20, 32, 40] уточнение: [3, 0, 1, 2]
оба слоя: [11, 20, 33, 42]
чужая база: [11, 16, 29, 42]
проекция x/z,y/z: (1.0, 2.0)
Наша сцена скрывается только на одном такте. Для постоянного переключателя надо хранить visible как устойчивую часть состояния и менять его отдельным событием show. Эти модели дают разные результаты в t=3, даже если первое скрытие выглядело одинаково. Именно поэтому описания поведения нельзя заменить списком красивых финальных картинок.
Разбор: база и уточнение для одного кадра
Исходная строка [11,20,33,42]. Огрубим вниз до кратных четырём:
база [8,20,32,40]. Она самостоятельно декодируется в приближённое изображение.
Сумма квадратов ошибки базы равна 3²+0²+1²+2²=14.
Уточнение - разность [3,0,1,2]; после сложения вернётся исходная строка.
Если декодеру доступна только база, он всё равно может показать результат.
Если есть и согласованное уточнение, точность возрастает.
Если вместо базы взять [8,16,28,40], та же поправка даст [11,16,29,42].
Поэтому нельзя произвольно переключать базовое представление,
оставляя старые зависимые уточнения. Сначала надо согласовать точку переключения.
Это учебная модель улучшения точности, или SNR-масштабируемости. Пространственное уточнение может сначала построить увеличенную базу, а затем исправить детали на более частой сетке. Временное уточнение может добавлять промежуточные картинки. У каждого вида собственные зависимости. Эти виды не являются «ровно тремя уровнями качества» для любого MPEG-4-файла: реальные инструменты и уровни задаются используемыми частями и профилями.
Если базовый слой сам является межкадровым, он сохраняет свой опорный контур. Уточняющие данные должны ссылаться на определённые восстановленные значения, а не на неизвестный декодеру оригинал. Обрезка потока полезна только в допустимой точке зависимостей. Получить младшую поправку без требуемой базы не равнозначно получить менее красивое, но корректное видео.
Механизм обзора: геометрия, лицо и речь
Трёхмерная модель хранит точки, связи поверхностей и материалы. Чтобы получить пикселы, декодеру нужны положение камеры, проекция, правила видимости и освещения. В простейшей учебной проекции при z>0 точка(x,y,z) даёт экранные координаты(x/z,y/z). Для точки(2,4,2) это(1,2). При изменении камеры одна и та же геометрия даст другую картинку; список координат сам по себе не является видео.
Текстура задаёт цвет поверхности. Ею может быть и видеодорожка: сначала надо декодировать её отсчёты, затем применить их к поверхности и отрисовать сцену. Спрайт - более простой ресурс с готовым изображением. Параметрическая анимация лица хранит базовую форму и управляет её изменением, как уже показанная формула base+weight·delta. Без согласованной базовой модели те же параметры изменят другие точки и не дадут прежнее лицо.
Синтез речи также предполагает модель. Текст, фонемы или параметры голоса надо преобразовать в артикуляцию, интонацию и звуковые отсчёты. Декодеру могут потребоваться словари, голосовые ресурсы и правила произношения. Один синусоидальный генератор из предыдущей главы показывает передачу параметров, но не воспроизводит человеческую речь. В выбранных страницах книги речь и 3D приведены как обзор возможностей, без конструкции полного синтезатора или растеризатора; для понимания обзора нужно знать именно этот контракт ресурсов и модели.
Чем описание содержания отличается от его сжатия
MPEG-7 описывает содержание: например, характер распределения цветов, форму объекта, звуковые признаки или сведения для поиска фрагмента. Дескриптор - значение с согласованным смыслом такого признака; схема описания связывает несколько сведений и их отношения. Он помогает найти или классифицировать видео, но не обязан содержать достаточно данных для восстановления всех исходных пикселов.
Два разных кадра могут иметь одинаковую гистограмму цветов: в одном светлая половина слева, в другом справа. Дескриптор частот при этом совпадёт, хотя изображения различаются. Следовательно, индекс содержания и кодированная видеодорожка выполняют разные задачи. MPEG-7 не надо ставить в ряд видеокодеков как очередной способ восстановить кадр из того же потока коэффициентов. Назначение MPEG-7.
Что ломается без этого
Приложение хранит обновления сцены, но теряет исходные ресурсы: после открытия архива объекты оказываются без текстур и правильных форм. Или сервис обещает адаптацию битрейта, отбрасывая произвольные пакеты уточнений. Если от них зависят сохранённые слои, декодирование нарушается, а не просто становится чуть менее точным.
Профиль ограничивает требуемые средства; уровень дополнительно ограничивает масштаб задачи, например размеры или нагрузку. Даже поддержка подходящего названия требует проверить реальные инструменты, параметры и ресурсы. Исторические заявления книги о кратности выигрыша синтеза не становятся универсальной гарантией для любого содержания и любого современного декодера.
Зачем это в работе
Для интерактивного учебного ролика отдели основное видео, титры и кликабельные объекты. Для каждого укажи источник данных и реакцию на события. Тогда можно проверить, останутся ли титры резкими и будет ли действие воспроизводиться после повторного открытия файла, без случайного состояния программы.
Для адаптивной доставки отдельно опиши допустимые базовые и уточняющие комбинации. Тест должен сравнивать реально восстановленные кадры, а также поведение при неполных данных. Совпадение списка кодеков не проверяет интерактивность, семантический поиск и зависимость слоёв автоматически.
Теперь сам
Сцена начинает с x=0. Два события right дают какое положение?
База [4,8], уточнение [1,2]: что восстановится с обоими слоями?
Можно ли по дескриптору «два светлых, два тёмных пиксела» узнать их порядок?
Ответ. Положение x=2; строка после сложения равна [5,10].
Дескриптор количества не задаёт порядок: [светлый,светлый,тёмный,тёмный]
и чередование имеют одинаковые количества. Для восстановления нужно
другое, достаточно полное представление данных.
Главное
Компактное обновление работает благодаря сохранённому контексту. Проверяй путь от события или слоя до конечной реконструкции; описание содержания, геометрия и параметры синтеза добавляют собственные условия.
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий