Сжатие
В этом курсе тема про сжатие -- одна из многих. На самом деле это мог бы быть отдельный курс, про это написаны книги, это богатая тема для изучения и исследований.
Поскольку курс видеотехнологий по сути является продолжением курса компьютерной графики, где уже работали со сжатием и изображений, и видео, здесь мы долго задерживаться не будем, лишь освежим в памяти то, что пригодится непосредственно в работе.
Если вы не изучали предыдущий курс компьютерной графики, пожалуйста, пройдите его, хотя бы третий модуль, посвященный сжатию графики и видео.
Повторение основ
- В природе все сигналы -- аналоговые, то есть, непрерывные во времени и по уровню. Цифровыми их ещё предстоит сделать, а работать нам предстоит с оцифрованным сигналом.
- Непрерывный сигнал - значит бесконечно подробный. Хранить бесконечно много информации мы не можем, поэтому ещё на этапе оцифровки аналогового сигнала нужно определиться с тем, насколько подробно мы готовы описывать его в цифровом виде.
Для наглядности возьмём три источника: изображение, кино и звук.
-
Изображением в аналоговом мире будем считать плоский прямоугольный объект, например, фотографию.
-
Кино -- это последовательность изображений на пленке. Я намеренно не привожу в пример видео, потому что там возникает много вариантов, а в кино каждый кадр -- статическое изображение, проецируемое лучом света через плёнку на экран.
-
Звук -- изменяющаяся во времени по амплитуде и частоте механическая волна. Частоты -- в диапазоне звуковых волн (16 - 20 000 Гц).

В чем выражается подробность каждого из этих источников?
- Для изображения: пространственное разрешение и глубина цвета. То есть, цветовое и яркостное разрешение. Еще на аппаратном уровне можно добавить соответственно динамический диапазон и охват -- в нашем случае это длины шкал яркости и цветового пространства.
- Для кино актуально всё сказанное про изображение, к этому добавляется шкала времени, а во времени подробность описывается частотой кадров.
Помните из истории: сначала снимали 18 кадров в секунду и вроде бы хватало, но стали записывать звук на кинопленку и оказалось, что надо увеличить частоту кадров? Это уже про информационную ёмкость носителя. - Для звука актуальна шкала времени, как и в кино, а значит -- подробность описания изменений амплитуды звуковой волны (частота дискретизации). Не менее важна подробность описания каждого отсчета -- количество уровней квантования. Динамический диапазон как размер шкалы, разумеется, тоже актуален, это также относится к аппаратной реализации системы, на этот раз -- звуковой.
По сути, при оцифровке мы выполняем два процесса, просто с разным количеством величин:
- Дискретизация. Разделение непрерывной величины в пространстве и времени. Вместо одного непрерывного потока получается множество замеров.
- Квантование. Разделение уровня дискретной величины в каждом замере. Момент времени или точку в пространстве выбрали на предыдущем шаге, теперь надо определиться, с какой точностью измеряем величину. Это может быть значение амплитуды звукового сигнала или яркость в определенной точке. Или напряжение, как в примере с вольтметром. Выделите 2 бита, будет 4 градации, например, яркости, выделите 8 -- будет 256. И так далее.
Сигнал, который прошел дискретизацию, но его значения остались не квантованными, называется дискретным.
Если вернуться к вольтметру: стрелочный показывает аналоговые значения, а цифровой – не только дискретные, но и квантованные, то есть, с заданным шагом, поэтому он и называется цифровым.

Вопрос на понимание: есть кино, есть аналоговое телевидение. Как работает то и другое, мы уже разобрали. Какой из способов демонстрации движущегося изображения по сути аналоговый, а какой дискретный?
Теорема Найквиста - Шеннона - Котельникова
Есть теорема, которая обосновывает значения частоты дискретизации -- теорема Котельникова. Там же фигурируют фамилии Найквеста и Шеннона. Во вкладе каждого из этих ученых мы здесь разбираться не будем, а суть теоремы, если упрощенно, такая:
::: info Для сигнала, представленного последовательностью дискретных отсчетов, точное восстановление возможно, только если частота дискретизации более чем в 2 раза превышает максимальную частоту в спектре сигнала.
:::
Отсюда следует, что восстановить без искажений можно только сигнал, спектр которого ограничен по частоте. Эту частоту называют частотой Найквиста, Fmax.
Теоретически все реальные сигналы имеют бесконечные спектры. Например, в акустике есть понятия обертонов -- они имеют кратно более высокую частоту относительно основного тона. Конечно, это не бесконечно большая частота, но спектр естественного сигнала обычно весьма широкий. Для того чтобы при дискретизации избежать искажений из-за потери высокочастотной части спектра, сигнал перед оцифровкой пропускают через фильтр, подавляющий в нем частоты выше значения Fmax.
Из этой теоремы должно стать понятно, почему при спектре слышимого звука с верхней границей 20 кГц звук обычно записывают с дискретизацией 44 кГц, а то и 48, а в студиях даже 96.
44 кГц вдвое перекрывает слышимый звук, а 96 -- еще и ближайшие гармоники.
Можно в прямом смысле увидеть, как несоблюдение условий этой теоремы влияет на изображение и на движение.
Вы же видели в кино, когда едет машина или телега или паровоз, а колеса у него крутятся в сторону, обратную движению? Или пропеллер самолета или вертолета в воздухе то крутится еле-еле, то вообще останавливается? Как они не падают?

С колесами и пропеллерами на самом деле всё в порядке, они крутятся как надо. Но при съемке угловая скорость этих крутящихся предметов такая, что при повороте лопасти или спицы колеса на угол, где находится соседняя лопасть или спица, проходит слишком мало времени, чтобы киноаппарат или видеокамера зафиксировали промежуточные положения. Если лопасти вертолета в полете стоят на месте, значит скорость вращения винта такая, что угол поворота до положения любой другой лопасти винт проходит за один кадр. Если же скорость чуть ниже, то в записи будет иллюзия обратного хода винта, если чуть больше -- медленное движение вперед. То же самое с колесами телег, паровозов и автомобилей.
Другой пример -- обычные изображения. Возьмите штрих-код, сфотографируйте на телефон. Телефон же у вас современный? Значит вас есть фотография на много мегапикселей. Получается совершенно не содержательная картинка, давайте ее уменьшим.
До какого размера можно уменьшить штрих-код, чтобы он сохранил читаемость?
Чтобы не усложнять объяснение, просто возьмем две картинки размером 320х240 пикселей с полосами по 2 и по 3 пикселя шириной. Уменьшим ее до 256x192.

Считаем, сколько пикселей описывают одну полосу?
Если было два пикселя, то осталось 1,6. Если три, тогда осталось 2,4. В обоих случаях число дробное и в полутоновом изображении будет применяться антиалайзинг, но смотрите: на первой картинке полосы стали сливаться и образовывать какой-то новый рисунок. Это называется муар. Мы потеряли читаемость исходной картинки. А на правой полосы благополучно читаются.
Про это нас и предупреждает теорема Котельникова.
Квантование и динамический диапазон
Эта тема нас отсылает ко второму модулю курса компьютерной графики -- освежите его в памяти, здесь мы не будем углубляться в подробности.
::: info Квантование -- это разбиение непрерывного значения величины значений в отсчётах, полученных при дискретизации на дискретные величины этих отсчётов.
:::
При дискретизации мы выбрали, как часто во времени или пространстве будем измерять, а квантование -- это про то, сколько значений будет на шкале. Заметим, это ничего не говорит о длине шкалы, только о том, на сколько частей ее поделим.
Например, мы записываем звук. Насколько детально будет описана звуковая волна? Сколько вариантов значений мы готовы записать? Выделим 8 бит, будет 256 значений, выделим 16 бит -- будет 65535. Восьмибитный звук для музыки вам не понравится, а в телефоне мы его как-то терпим. Кодек, который используется в телефонной связи, как раз восьмибитный.
В изображениях квантование -- это количество градаций по компонентам цветовой модели. Если это шкала серого, то сколько будет оттенков серого между черным и белым.
При этом, черный и белый на телевизоре, экране проектора, бумаге -- они совсем разные по интенсивности. Мозг для нас их называет черным и белым, но их абсолютная яркость и разница яркости между крайними значениями будут существенно отличаться.
Длина шкалы между максимальным и минимальным значениями -- это динамический диапазон. Это логарифмическая шкала.
Тут важно, что вы можете выделить много памяти, но зафиксировать узкий диапазон. Будет очень подробно, но то, что вышло за пределы этого диапазона, будет потеряно. Например, в фотографии контрастных сцен может получиться черный провал в тени и белый блик вместо солнца и его окрестностей на небе.
Применительно к телевидению полезно знать, что там есть особенности, пришедшие к нам из истории. Зря мы что ли про нее вспоминали?
В совершенно цифровом мире цветоразностной модели YCbCr внезапно оказывается, что уровни яркости считаются не от 0 до 255, а от 16 до 235. Зачем так сделали? “Так принято” -- это пошло от электронно-лучевых трубок, там уровень 0 -- это “гасящий импульс”, то есть, чернее чёрного. Когда луч доходил до низа экрана, ему нужно было перейти вверх, его нужно было погасить совсем и переместить наверх. Количество градаций уровня яркости в телевидении меньше, чем в используемой им же цветовой модели.
Также вспомним, что в графике и видео обычно яркости уделяют больше внимания и памяти, чем цветности. В курсе компьютерной графики разбиралось понятие цветовой субдискретизации и рассказывалось про алгоритм JPEG.
Психофизика сжатия
За счет чего возможно сжатие изображений и видео? Кто помнит курс компьютерной графики, сразу ответят -- мы устраняем избыточность. Какая бывает избыточность?
- Приоритет в восприятии человеком яркости над цветностью. Цветовая субдискретизация -- как раз про это: “разрешение” цветовых каналов делают меньше, чем у канала яркости.
- Схожесть областей изображения. Близкие по цвету и яркости области можно описать не попиксельно, а группой. Совсем одинаковые области сжимаются алгоритмами без потерь, а “похожие” -- алгоритмами с потерями.
- Межкадровая схожесть -- это уже про видео. Записывается не полный кадр, а разница между кадрами. Опять же: в GIF-анимации, которая сжимает условно без потерь, сравнивается точное совпадение цвета, в кодеках с потерями сравнение более гибкое.
Сжатие звука также во многом опирается на особенности восприятия информации человеком.
- Тихие звуки практически не воспринимаются на слух. В интервалах молчания в записи можно задать длительность интервала "тишины" и ничего не передавать;
- Громкие звуки снижают чувствительность уха. Их кодируют с меньшей детализацией и по квантованию, и по дискретизации.
- После громкого звука чувствительность к тихим восстанавливается не сразу. Можно некоторое время экономить на детализации следующих звуков. Это называют "маскированием" звука во времени;
- Мощные частотные составляющие маскируют восприятие своих более слабых соседей по спектру. Эти эффекты локализованы внутри конкретных частотных полос, которые названы критическими (их всего 25). Кроме того от полосы частот зависит чувствительность слуха.
В курсе компьютерной графики мы изучали модель “стандартного наблюдателя” XYZ и соответствующий ей цветовой охват, относительно которого рассчитываются цветовые модели. Для описания акустических особенностей человеческого слуха существует психоакустическая модель, которая активно используется для эффективного сжатия звука.
Материалы по теме
- Теорема Найквиста-Шеннона-Котельникова. Digital Music Academy. \nНа этом сайте много коротких статей по базовым темам курса, относящимся ко звуку, звукотехнике и MIDI.
- Профили и уровни в H.264 В таблицах и цифрах -- что такое baseline, main, high и более редкие профили, а также что за численные обозначения уровней в настройках кодека H.264.