Развитие технологий с каждым годом приближает нас к ещё недавно невообразимой реалистичности картинки и звука. Но такое качество телевизионного сигнала неизбежно влечёт увеличение размера данных. К сожалению, для таких объёмов возможностей средств передачи информации не хватает.
Как же решается эта проблема?Основными способами уменьшения размера данных являются сжатие перед передачей (или записью) и восстановление, когда это необходимо. Для этого используют специальные устройства и/или программы — кодеки. Само название кодек (codec) образовано от сокращённого английского названия устройств, функции которых он выполняет, coder - decoder илиcompressor - decompressor (шифратор — дешифратор, компрессор — декомпрессор).Кодеки могут быть программными или аппаратными. Аппаратный кодек — это специальная микросхема или блок, который преобразует сигнал по заданному алгоритму и в основном использует собственные ресурсы. Программные кодеки — компьютерные программы, использующие ресурсы процессоров основного устройства.Сжатие возможно благодаря определённым свойствам информации и особенностям восприятия её человеком.Поскольку видеозапись — это набор последовательных кадров, его можно рассматривать как набор изображений, выводимых на экран в определённый момент времени. Очень часто соседние кадры имеют схожие, неизменные области. Например, при съёмке персонажа в интерьере неподвижной камерой, без изменения интенсивности и рисунка освещения, задний план практически не меняется. Области со сходными характеристиками называют предсказуемой частью, или избыточностью.
1800.jpg
Части изображения, которые претерпевают изменения, называют непредсказуемой частью, или энтропией.Выявляя избыточность, отпадает необходимость передавать ее в каждом кадре. Это позволяет проводить кодирование только изменившихся пикселей, удаляя из кадра ненужную, повторяющуюся информацию. Такой способ кодирования называется кодированием по отличиям.Если в кадре есть движение, количество энтропии резко увеличивается, что неизбежно ведет к увеличению объема разностного сигнала. Для решения этой проблемы используют еще один инструмент кодирования — компенсацию движения (англ. motion compensation).Метод компенсации движения базируется на том, что соседние кадры видео имеют общие элементы, которые при передаче движения смещаются относительно друг друга. Это смещение можно задать как векторы движения отдельных групп элементов изображения. Чтобы вычислить векторы движения, каждый кадр запоминается, разбивается на блоки. В зависимости от применяемого кодека блоки будут иметь разный размер (от 64×64 до 4×4 пикселей). Потом текущий кадр сравнивают с предыдущим и находят совпадения блоков.
1799.jpg
Полученный вектор движения кодируется, а при декодировании элементы смещаются в соответствии с этими векторами. Разностные данные получаются значительно меньше кодирования целого кадра. Кодирование с использованием компенсации движения еще называют Inter-кодированием.Для успешной реализации кодирования-декодирования очень важно межкадровое предсказание, где все кадры делятся на типы.Опорные — это тип кадров, которые несут максимум информации об изображении, декодируются без привязки к другим кадрам и служат основой для их построения. Именно поэтому первым кадром в последовательности всегда является опорный кадр. Опорные кадры еще называют І-кадрами (от англ. Intra frame — внутренний кадр) и размещают через равные интервалы или по требованию.Между I-кадрами вставляют дополнительные кадры, которые несут информацию об изменениях и содержат ссылки на другие кадры.Одни из них называют P-кадрами (от англ. Predicted frame – прогнозируемый кадр). P-кадры содержат ссылки только на предыдущие кадры.
1801.jpg
В отличие от Р-кадров В-кадры (от англ. Bidirectional frame – двунаправленный) имеют ссылки как на предыдущие, так и на последующие кадры. Они позволяют сократить потери данных между I- и P-кадрами.С использованием Р- и В-кадров растет вероятность ошибок, потому возникла необходимость в дополнительных кадрах, дающих такой же результат, как и основные кадры в потоке. Они получили название SP (switching P) и SI (switching I). Использование SP- и SI-кадров снижает количество ошибок, и также они нужны для переключения между потоками данных.
1798.jpg
Все кадры между двумя I-кадрами образуют «группу кадров» (англ. Group Of Pictures или GOP) и немного похожи на слои в видеоредакторах. Отсюда и другое название І, Р, В, SP и SI-кадров — слайсы (от англ. slice — тонкий слой, часть).Кроме удаления одинаковой информации из соседних кадров (временной избыточности), оптимизируют ее и внутри каждого отдельного кадра (пространственной избыточности). Так, информацию о цвете объекта не обязательно указывать для каждого пикселя, достаточно указать граничные точки и градиент заливки.Удивительно, но еще одну возможность уменьшить размер информации ученые нашли, обратив внимание на физиологию.Как известно, глаз человека воспринимает изображение в виде потока света, который, пройдя через оптическую систему, попадает на светочувствительные клетки — фоторецепторы. Эти клетки неоднородны и распределены неравномерно. Одни из них (колбочки) обеспечивают восприятие цвета и формы объекта, другие (палочки) — очень чувствительны к свету, но цвет не различают. В глазу человека находится около 7 млн колбочек и 130 млн палочек, поэтому мы более чувствительны к перепадам яркости и меньше замечаем изменение цвета. Это свойство позволяет при кодировании уменьшить разрешение компонентов цветности изображения (субдискретизация) без заметных потерь в визуальном восприятии.Способы сжатия, которые базируются на физиологических особенностях зрения человека, называются устранением психовизуальной избыточности, или избыточности по восприятию. А удаление из кадра информации, наличие или отсутствие которой незаметно человеку, получило название внутрикадрового кодирования. Кроме этого, в процессе кодирования-декодирования данные подвергаются преобразованиям, масштабируются, квантуются, применяются фильтры и другие способы обработки в соответствии с алгоритмами.В зависимости от конкретного кодека может применяться какой-то один способ кодирования преобразования или несколько. Сжатие может проводиться с потерей данных или без такового. И здесь часто дело не в том, что какой-то из кодеков лучше, а какой-то хуже. Выбор кодека диктуется конкретными требованиями, зависит от вычислительных возможностей устройства, желаемого качества изображения и звука, способа и скорости передачи данных.