Обмен технологиями

Систематическое изучение процесса сжатия данных видеокодирования H264 (03) и связанных с ним концепций.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Примечание. Мы ссылаемся на метод обучения золотого круга (Что такое правило золотого круга? -> Модель правила золотого круга, в этой статье используется: почему-что) для изучения кодирования аудио-видео H264. Эта серия статей посвящена пониманию системы знаний и практических методов кодирования видео. Теоретический аспект расскажет больше о происхождении концепций аудио и видео и связях между различными концепциями. Знайте, как это бывает, знайте, почему это так. В то же время больше внимания уделяется созданию систем знаний.

В этой статье мы в основном говорим о процессе сжатия данных H.264 и связанных с ним концепциях. Сжатие данных H.264 имеет только одну цель: сжимать, сжимать и затем сжимать, чтобы уменьшить размер видеоданных, обеспечивая при этом максимально возможное качество изображения. Поэтому, прежде чем изучать сжатие данных H.264, мы должны сначала понять: хотя в этом процессе задействовано множество концепций и методов, все методы и процессы предназначены для этой цели: сжатия.

1 Интерпретация процесса сжатия данных H.264

Процесс сжатия данных H.264 в основном сводится к следующим ключевым этапам: деление макроблоков и деление на подблоки -> группировка кадров -> прогнозирование кадров -> целочисленное дискретное косинусное преобразование (DCT) -> сжатие CABAC. Конкретные инструкции по расширению следующие.

1.1 Разделение макроблоков и разделение на подблоки

Макроблок: можно понять, что когда видеокадр отправляется в буфер кодера H264, кодер делит макроблоки на каждое изображение. По умолчанию кодирование H264 использует в качестве макроблока область 16X16 пикселей (H265 использует область 64X64 пикселей. Эффект от разделения кадра видео на макроблоки следующий:

Общий эффект после разделения макроблока

При этом на картинке выше мы фактически можем разделить макроблок размером 16х16 пикселей на более мелкие подблоки. Размер субблока может составлять 8X16、16X8、8X8、4X8、8X4、4X4. Это очень гибкий вариант. Целью повторного разделения на подблоки является запись этих данных очень небольшими данными. После разделения макроблоков все изображения в кэше кодера H264 можно сгруппировать.

Разделение макроблоков и субблоков позволяет при кодировании видео более точно анализировать и обрабатывать видеоконтент и достигать более эффективного сжатия данных. Видеокадры делятся на макроблоки размером 16x16 пикселей, которые можно дополнительно разделить на более мелкие блоки, такие как 8x8, 8x4, 4x8 и т. д., чтобы учесть сложность содержимого изображения.

1.2 Группировка кадров

Группировка кадров (структура GOP) определяется перед внутренним предсказанием и внешним предсказанием. В процессе кодирования видео настройка группировки кадров является одним из начальных шагов, который определяет организацию и порядок кодирования видеокадров. Основная цель группировки кадров — уменьшить избыточность данных. Избыточность видеоданных в основном делится на две категории:

  • Временная избыточность данных, которая требует использования сжатия межкадрового предсказания, составляет большую долю(Потому что даже если камера снимает 30 кадров в секунду, эти 30 кадров данных в большинстве случаев связаны между собой. Может быть более 30 кадров данных, а может быть, десятки кадров данных особенно тесно связаны между собой. И поскольку корреляция в частности, «Закрыть кадры», нам нужно сохранить только ключевой кадр.(я кадрирую)данные, другие кадры(кадр B и кадр P)Все можно предсказать посредством этого кадра по определенным правилам, поэтому видеоданные имеют наибольшую временную избыточность).
  • Пространственная избыточность данных, которая требует использования сжатия внутрикадрового предсказания, составляет относительно небольшую долю.

Этапы выполнения группировки кадров H264:

  1. Каждый раз для сравнения макроблоков извлекаются два соседних кадра и вычисляется сходство между двумя кадрами.
  2. Сходство достигается после количественной оценки: если пиксели с различиями находятся всего в пределах 10% точек, разница яркости изменяется не более чем на 2%, а разница цветности изменяется только в пределах 1%, мы считаем, что такие изображения можно сгруппировать. в одну группу.

Когда группировка завершена, проблема сжатия предсказания кадров начинает решаться.

1.3 Сжатие прогнозирования кадров

Эта часть в основном включает в себя внутрикадровое предсказание и межкадровое предсказание. Внутрикадровое предсказание заключается в сжатии статических кадров изображения, прогнозировании значения пикселя каждого макроблока с помощью 9 различных режимов, а затем вычислении остаточного значения с исходным изображением. Межкадровое прогнозирование (оценка движения и компенсация движения): для кадров P и B найдите вектор движения между предыдущим кадром или двумя кадрами с помощью оценки движения, затем выполните прогнозирование компенсации движения, сгенерируйте предсказанное изображение и вычислите невязку из текущий кадр.

Примечание. Порядок внутреннего и внешнего предсказания зависит от типа кодированного кадра и стратегии кодирования. В реальной реализации видеокодера эти шаги являются частью процесса кодирования и обрабатываются кодером автоматически. Не обязательно, кто справится с этим первым.

1.3.1 внутрипредсказание

Сжатие внутрикадрового прогнозирования: решает проблему избыточности пространственных данных. К избыточным данным воздушного пространства относятся цвет, яркость и т. д., которые в основном предназначены для информации, нечувствительной для человеческого глаза. Кодировка сжимается путем ее удаления.Принцип, используемый при внутрикадровом прогнозировании, заключается в том, что человеческий глаз в определенной степени распознает изображения. Он очень чувствителен к низкочастотной яркости и менее чувствителен к высокочастотной яркости.(Это можно понимать как размер макроблока 16X16. В H264 другие данные прогнозируются через верхние 16 пикселей и самые левые 16 пикселей, так что информация о представлении пикселей, которая изначально требует 16*16=256, может быть преобразована в 16+ 16-1 =31 пиксель для представления информации)

1.3.2 Межкадровое прогнозирование (оценка движения и компенсация движения)

Сжатие межкадрового прогнозирования (оценка и компенсация движения): решает проблему избыточности данных во временной области. В видео есть несколько кадров, расположенных линейно в хронологическом порядке. Корреляция между кадрами очень сильная, поэтому между кадрами можно удалить много данных.После сжатия он будет разделен на три типа: кадр I, кадр P и кадр B.(Пояснение: Принцип оценки и компенсации движения: Кодер H264 сначала последовательно извлекает два кадра видеоданных из заголовка буфера, а затем выполняет сканирование макроблоков. Когда обнаруживается, что на одном из изображений есть объект, он Выполнит поиск ближайшей позиции (в окне поиска). Если в это время объект найден на другом изображении, можно вычислить вектор движения объекта. На рисунке ниже показано положение бильярдного шара после поиска.

Для кадров P и B оценка движения используется для нахождения вектора движения между предыдущим кадром или двумя кадрами, а затем выполняется прогнозирование компенсации движения для создания прогнозируемого изображения и вычисляется остаток с текущим кадром.

1.4 Целочисленное дискретное косинусное преобразование (DCT,Дискретное косинусное преобразование

На этом этапе в основном выполняется DCT-преобразование остатка прогноза, преобразует пространственную корреляцию в нерелевантные данные в частотной области, а затем квантует их. DCT в основном используется для сжатия данных или изображений, преобразования пространственной корреляции в нерелевантные данные в частотной области и последующего их квантования.(Пояснение: преобразование DCT может собрать вместе более важную информацию об изображении, а неважные области частотной области и коэффициенты могут быть напрямую обрезаны)

Краткое описание: Последовательность сжатия данных кадра заключается в том, чтобы сначала выполнить межкадровое и внутрикадровое сжатие, а затем выполнить преобразование DCT остаточных данных, чтобы удалить корреляцию данных и дополнительно сжать данные. Следующее:

1.5 CABAC-сжатие

CABAC-сжатие — это технология сжатия без потерь и метод энтропийного кодирования. Когда CABAC сжимается и кодируется, высокочастотные данные определяются как короткие коды, а низкочастотные данные определяются как длинные коды. Этот метод более эффективен, чем метод VLC. Метод энтропийного кодирования CABAC (контекстно-адаптивное двоичное арифметическое кодирование) используется для дальнейшего сжатия квантованных коэффициентов для повышения эффективности сжатия. Здесь данные, обработанные на предыдущих четырех шагах, кодируются в окончательный поток кода с использованием алгоритма кодирования. Окончательно сжатые кадры делятся на I-кадры, P-кадры и B-кадры. После выполнения метода сжатия без потерь CABAC получается поток видеокода.

2 Связанные понятия в процессе сжатия данных

2.1 Избыточность данных во времени и пространстве

Пространственная избыточность данных и временная избыточность данных являются двумя основными концепциями сжатия видео. Они описывают повторяющуюся информацию внутри и между видеокадрами соответственно.

Интерпретация пространственной избыточности

  • Это относится к сходству или корреляции между соседними пикселями в одном видеокадре, что приводит к дублированию данных. Из-за непрерывности естественных изображений соседние пиксели обычно имеют одинаковые значения яркости или цвета.
  • Типичные примеры пространственной избыточности включают большие монохромные области, градиенты или медленно меняющиеся текстуры.
  • Алгоритмы сжатия видео уменьшают пространственную избыточность за счет пространственного прогнозирования, кодирования преобразования (например, DCT) и других технологий, преобразуют изображение из пространственной области в частотную область и концентрируют энергию на нескольких коэффициентах для достижения цели сжатия.

Интерпретация временной избыточности

  • Относится к сходству, существующему между последовательными кадрами видеопоследовательности, то есть один и тот же объект или сцена в последовательных кадрах визуально существенно не изменяются.
  • Временная избыточность обычно возникает, когда камера неподвижна или когда объекты в сцене движутся медленно, при этом в последующих кадрах меняется лишь небольшая область по сравнению с предыдущим кадром.
  • Алгоритмы сжатия видео уменьшают временную избыточность с помощью таких методов, как межкадровое предсказание, оценка движения и компенсация движения, используя корреляцию между предыдущими и последующими кадрами для прогнозирования и кодирования межкадровых различий вместо полного кодирования каждого кадра.

2.2 Интерпретация остаточных данных и связанных с ними концепций

При сжатии видео H.264 остаточные данные относятся к разнице между исходным видеокадром и прогнозируемым кадром. В то же время, если вы хотите иметь более глубокое понимание остаточных данных, вам необходимо понимать следующие концепции, как показано ниже:

  1. предсказанный кадр : Во время процесса кодирования видео для генерации прогнозируемых кадров будет использоваться внутреннее предсказание (Intra Prediction) или внешнее предсказание (Inter Prediction). Внутреннее предсказание основано на информации о пикселях текущего кадра, тогда как внешнее предсказание основано на информации о компенсации движения предыдущих или последующих кадров.

  2. оригинальная рамка: относится к исходным кадрам изображения, фактически захваченным в видеопоследовательности.

  3. Остаточный расчет : Остаточные данные рассчитываются путем вычитания прогнозируемого кадра из исходного кадра. Остаточные данные представляют собой разницу между прогнозируемым кадром и исходным кадром.

Опираясь на вышеизложенные концепции, мы можем лучше понять характеристики остаточных данных:

  • Остаточные данные обычно имеют высокую пространственную случайность, поскольку кадр прогнозирования удалил большую часть избыточной информации. Эта случайность делает остаточные данные пригодными для дальнейшего сжатия посредством преобразования и квантования.

  • После обработки остаточных данных с помощью целочисленного дискретного косинусного преобразования (IDCT) и квантования объем данных может быть значительно уменьшен. Преобразование преобразует двумерную пространственную информацию остатка в частотную информацию, тогда как квантование снижает точность этих коэффициентов и удаляет детали, незаметные для человеческого глаза.

Целью кодирования остаточных данных является дальнейшее снижение битрейта видеоданных при максимально возможном сохранении качества изображения. В то же время эффективное сжатие остаточных данных имеет решающее значение для эффективности кодирования H.264, поскольку оно напрямую влияет на качество кодируемого видео и требуемую полосу пропускания для хранения или передачи.

2.3 Концепции, связанные с энтропийным кодированием, и расширенная интерпретация

Энтропийное кодирование — это метод сжатия данных без потерь, основанный на концепции энтропии информации и направленный на представление данных с как можно меньшим количеством битов. Основная идея энтропийного кодирования состоит в том, чтобы выделить меньше битов для символов, которые встречаются с большей вероятностью, и выделить больше битов для символов, которые появляются реже. Таким образом, желаемое пространство для хранения или полоса пропускания передачи уменьшается, поскольку снижается средний битрейт всего набора данных.

Энтропийное кодирование часто используется для сжатия текста и некоторых конкретных типов данных и может значительно повысить эффективность сжатия, особенно когда данные имеют существенно неравномерное распределение вероятностей. При кодировании сжатия видео методы энтропийного кодирования, наиболее тесно связанные со сжатием видео, в основном включают следующее:

  • Кодирование Хаффмана : Кодирование Хаффмана — это базовая технология энтропийного кодирования, используемая во многих стандартах сжатия видео (таких как JPEG, серии MPEG). Он присваивает код переменной длины каждому символу с помощью дерева Хаффмана, построенного на основе частоты появления символа.
  • Арифметическое кодирование : Арифметическое кодирование принято в некоторых стандартах сжатия видео (например, JPEG-LS, JPEG 2000). Он использует дробный интервал для представления распределения вероятностей входных данных и обычно обеспечивает более высокую эффективность сжатия, чем кодирование Хаффмана.
  • Контекстно-ориентированное адаптивное двоичное арифметическое кодирование (CABAC) : CABAC — это метод энтропийного кодирования, используемый в стандартах сжатия видео H.264/AVC и H.265/HEVC. Он сочетает в себе концепции арифметического кодирования и адаптации контекста и может динамически корректировать вероятностную модель кодирования на основе контекстной информации, тем самым обеспечивая более эффективное кодирование.
  • Кодирование переменной длины (VLC) : VLC — это общий термин, используемый для описания методов кодирования, включая кодирование Хаффмана, которые присваивают символам коды переменной длины. При сжатии видео VLC обычно относится к методу кодирования, используемому для представления коэффициентов преобразования и т. д.

При сжатии видео энтропийное кодирование — это последний этап кодирования, используемый для кодирования остаточных данных после внутреннего и взаимного прогнозирования. Остаточные данные представляют собой разницу между исходными данными и прогнозируемыми данными и обычно имеют меньшую энергию и более неравномерное распределение вероятностей. Посредством энтропийного кодирования битовая скорость этих остаточных данных может быть дополнительно уменьшена, тем самым достигая цели сжатия видеоданных.