Opus от начального до профессионального уровня (8) Кодирование со сжатием основы кодирования Opus

глубокое обучение

Стандарт может применяться только при условии сохранения качества сигнала и попытки снизить скорость передачи данных и объем данных. И этот процесс уменьшения скорости передачи называется кодированием со сжатием или кодированием нового источника. В этом разделе представлены некоторые основные идеи и методы кодирования со сжатием для подготовки к более позднему кодированию речи Opus. Кодирование сжатия можно разделить на сжатие без потерь, потерю давления с потерями, гибридное сжатие. Кодировки сжатия без потерь:

  1. Морзе
  2. Хаффман
  3. RLC с кодированием длин серий
  4. Арифметическое кодирование
  5. Кодирование Шеннона-Фино
  6. Кодирование Лемпеля-Зира

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

1. Азбука Морзе

Азбука Морзе — телеграфный код, с которым все знакомы. Его изобретение внесло большой вклад в развитие человечества. Код использует «.» и «-» для представления 26 английских букв, что по сути является двоичным кодом (точка — «» 0 ", а полоса - "1"), но он не использует метод кодирования с фиксированной длиной слова, а использует обычные буквы для представления коротких кодов (например, E представлено ".", T представлено "-") , нет Метод кодирования с переменной длиной, при котором обычные буквы представляются длинными кодами (например, Z представляется как "--..", а j представляется как "-..-"). Через большое количество статистики по английским словам, находится вероятность каждой буквы и, наконец, определяется, что существует 12 букв с наименьшей вероятностью появления, которые представлены 4-битными числами, 8 букв с низкой вероятностью появления, которые представлены 3-битными числами; 4 буквы с высокой вероятностью появления, которые представлены 2-битными числами; две буквы с наибольшей вероятностью появления, представлены 1 битом, всего 26 букв.

  • 12 букв с наименьшей вероятностью появления требуют всего 12*4 бит = 48 бит.
  • 8 букв с более низкой вероятностью появления требуют в общей сложности 8 * 3 бита = 24 бита.
  • Среди них 4 буквы с более высокой вероятностью появления требуют в общей сложности 4 * 2 бита = 8 бит.
  • Две буквы с наибольшей вероятностью появления требуют всего 2*1 бит = 2 бита.

Это вычисляет среднюю длину кода для каждой из 26 букв как: (48+24+8+2)/26 = 3,15 цифры/буква

Чтобы использовать метод фиксированной длины кода, для представления требуется пятая степень числа 2 = 32, то есть 5 бит. Очевидно, что средняя длина кода уменьшается почти на 2/5, что позволяет достичь цели сжатия, и это сжатие не Не повредите информацию.Это относится к сжатию без потерь.

Похоже, что закон изменения таков: сначала узнайте статистический закон, а затем используйте короткий код для вероятности возникновения, а длинный код используйте наоборот, чтобы уменьшить кодовую скорость. Фактически, наши более поздние стандарты кодирования текста также используют эту идею. Например, в UTF-8 числа занимают 1 байт, английские буквы занимают 1 байт, а широко используемые китайские символы занимают 3 байта (около 20 000 слов). символы в сверхбольшом наборе символов занимают 4 байта (в системе кодировки Юникод более 50 000 китайских символов в начале U+20000).

Прикрепите еще одну таблицу азбуки Морзе!

莫尔斯编码表

2. Прогнозирующее кодирование

2.1 Различное кодирование

В соответствии с двумя важными принципами кодирования кода Морзе проводится статистический анализ пространственной корреляции (внутрикадровой корреляции) сигнала видеоизображения. Исходные данные изображения имеют большую избыточность в пространстве, и много избыточной информации передается без частоты, то есть пространственная корреляция очень сильная, и кадр изображения можно рассматривать как состоящий из трех частей: блок изображения , контур и деталь. Блок изображения относится к блоку, состоящему из одинаковых пикселей изображения. Частота этого сигнала меньше 2 МГц, а его пространственная корреляция является самой сильной. Контур относится к границе между блоками изображения. Частота этого сигнала составляет около 2 МГц ~ около 3,5 МГц, его корреляция плохая, а детали — это детали с наименьшей корреляцией и наиболее частыми изменениями изображения, а его частота сигнала составляет около 3,5 МГц или более. большим количеством статистических данных показано, что блок изображения не занимает абсолютно никакой части изображения, большинство из них составляет более 90%, а на контур и детали приходится лишь малая часть, менее 10%. видеосигнал Китай, низкочастотная часть составляет подавляющее большинство, а высокочастотная часть составляет небольшую долю.

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

Согласно вышеприведенному анализу можно представить, что в процессе оцифровки видеосигнала передающая сторона сама обрабатывает значение текущей выборки в различных передаваемых изображениях, но разница между значением выборки и значением предыдущей (соседней) выборки, то эти значения большинства различий очень малы или равны нулю, что может быть представлено короткими кодами.Для тех больших различий с низкой вероятностью возникновения они представлены длинными кодами, но общий кодовый номер уменьшается.Разница между соседние образцы подвергаются кодированию переменной длины, чтобы статьразностное кодирование,Также известен какДифференциальная импульсная модуляция (DPCM).На принимающей стороне добавьте полученное значение предыдущей выборки и только что полученное значение разности, чтобы восстановить желаемое значение текущей выборки.

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

差值编码原理图
Как видно из рисунка, на передающем конце сигнала текущее значение отсчета Vi(n) в одну сторону напрямую отправляется в вычитатель, а в другую — на линию задержки TS (предиктор), а время задержки установлено как один период выборки, в это время разница между двумя выборками, выводимыми из TS (ошибка предсказания), ошибка предсказания должна быть: ΔVi(n)=Vi(n)-Vi(n-1) После квантования с помощью квантователя Q ΔVi'(n) представляет собой ΔVi(n)+ε(n), среди которых ε(n) представляет собой ошибку квантования или шум квантования. На стороне приема сигнала после того, как разностный сигнал (ошибка предсказания) ΔVi(n)+ε(n) подвергается цифро-аналоговому преобразованию обратным квантователем Q(-1), сигнал (включая ε(n)) посылают на сложение и добавляют к предыдущей выходной выборке (прогнозируемое значение) Vo(n-1) с задержкой на один период выборки через линию задержки TS, получая тем самым текущую выборку Vo(n). Из приведенного выше процесса видно, что вывод отправителя представляет собой разницу между текущей выборкой и предыдущей выборкой, в то время как получатель добавляет ошибку предсказания к предыдущей выходной выборке и восстанавливает ее до текущей выборки, поэтому разница равна Кодирование может реализовать сжатие, передачу и восстановление сигналов изображения.

2.2 Прогнозирующее кодирование

Кодирование с предсказанием является одним из основных способов кодирования источников цифрового видеосигнала.Его также называют кодовой модуляцией с разделенным импульсом (DPCM).Введенное ранее разностное кодирование представляет собой только одномерное предсказание в кодировании с предсказанием, то есть только текущее. значение выборки используется в качестве прогнозируемого значения текущей выборки. Такой предиктор может давать очень хорошие результаты для горизонтали и поверхности, но эффект не идеален для вертикального направления. Поэтому люди используют двумерные или трехмерные метод размерного предсказания.

3. Кодирование Хаффмана

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

Энтропийное кодирование - это тип кодирования без потерь. Названо оно потому, что средняя длина кода после кодирования близка к энтропии источника. При энтропийном кодировании обычно используется кодирование с переменной длиной слова. Объекты с высокой вероятностью представляются короткими кодами, в то время как объекты с низкой вероятностью появления представлены длинными кодами, чтобы статистически получить более короткую среднюю длину кода.Упомянутый объект не указывается как какая-то аналоговая или цифровая информация, это просто объект или символ для Энтропийное кодирование требует, чтобы закодированный код был декодируемым в реальном времени, заголовок кода короткого кода не должен повторяться с длинным кодом, и коды могли быть разделены естественным образом без дополнительной информации.

Подобно азбуке Морзе, код Хаффмана также относится к энтропийному кодированию.Это тип кодирования переменной длины, применяемый в цифровом видео.Конкретный метод кодирования:

  1. Во-первых, исходные объекты, подлежащие кодированию (в предиктивном кодировании должны быть квантованы ошибки предсказания), располагаются в столбце в соответствии с вероятностью появления от большой к меньшей.
  2. Найдите две наименьшие точки вероятности, большие представлены символом «1», а маленькие представлены символом «0» (если вероятности равны, вы можете подтвердить метод распределения «0» и « 1" самостоятельно
  3. Затем сложите вероятности этих двух точек вероятности, чтобы создать новую точку вероятности, а затем выберите две наименьшие точки вероятности из новой точки вероятности и оставшиеся точки вероятности для сравнения, большая из которых равна «1», а меньшая — "0".
  4. Затем добавьте вероятности этих двух точек вероятности, чтобы создать новую точку вероятности,
  5. И так далее, пока вероятность новой точки вероятности не станет равной 1.
  6. Наконец, на пути от символа объекта до вероятности 1 записываются «1» и «0» на пути и получается код Хаффмана каждого исходного объекта.

На следующем рисунке показана диаграмма кодирования Хаффмана для 7 исходных объектов x1~x7:

霍夫曼编码
На приведенном выше рисунке показан процесс кодирования Хаффмана.Если используется метод кодирования с фиксированной длиной кода, для 7 объектов в этом примере требуется 3-битная длина кода, а после использования кодирования Хаффмана средняя длина кода составляет:

L = \sum_{N=1}^7 P(X_N)L(X_N) = 2.57(bit/pel)

В приведенной выше формуле вероятность появления P(XN)wei XN, L(XN) представляет собой длину кода XN. Видно, что она короче 3 бит при кодировании с фиксированной длиной кода, а биты кода равны сжатый

В практических приложениях кодирование Хаффмана часто используется в виде справочной таблицы, а объекты и значения кода заранее сохраняются в постоянном запоминающем устройстве (ПЗУ) во взаимно-однозначном соответствии. кодирование; при декодировании соответствующий объект считывается с адресом Хаффмана, что соответствует требованиям компиляции в реальном времени.

Кодирование Хаффмана на самом деле представляет собой код отображения, который не имеет ничего общего с физическими параметрами кодируемого объекта и компилируется в соответствии с вероятностью появления «объекта». -одна корреспонденция , независимо от вероятности.

4. Преобразование кода

В мультимедийном цифровом кодировании видеоисточника кодирование с преобразованием является одним из основных средств для реализации сжатия данных изображения Значение кодирования с преобразованием представляет собой кодирование с ортогональным преобразованием, которое преобразует сигнал видеоизображения в пространственной области в область преобразования, определяемую ортогональным вектором. , Чтобы удалить его пространственную корреляцию и использовать соответствующие методы квантования и кодирования для коэффициентов в области преобразования, цель сжатия данных была достигнута.Дискретное косинусное преобразование (DCT) является одним из ортогональных преобразований.Форма преобразования изображения из пространственной области в частотную область.Его цель состоит в том, чтобы выяснить правила корреляции и характеристики изображения в частотной области, чтобы удалить корреляцию изображения с точки зрения частотной области и достичь Цель сжатия изображения.

4.1 Дискретное косинусное преобразование

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

DCT - это аббревиатура Discrete Consine Transform на английском языке, что означает дискретное изменение косинуса. Это разновидность преобразования Фурье. Любая непрерывная вещественная симметричная функция после использования преобразования Фурье содержит только косинусные члены. Мы не будем обсуждать этот фильм. Обсудить математическое доказательство преобразования Фурье и т. д. (подробнее см.:Фурье-анализ учебника по удушению (полная версия) обновлено 6 июня 2014 г., заключается в описании шагов дискретного косинусного преобразования при кодировании со сжатием.

DCT-преобразование видеоизображения осуществляется для каждой отдельной компоненты цветового изображения, а все компонентное изображение сначала разбивается на множество 88 = блок из 64 семплов.Сэмплируйте его, а затем сэмплируйте 88 = 64 выборки по очереди подвергаются преобразованию FDCT (прямое DCT), а сигнал видеоизображения преобразуется из пространственной области в частотную область, как показано на рисунке ниже.

8*8像素空间域

8*8 DCT系数频率域

На рисунке f(x,y) представляет выборочную функцию (x,y=0,1,2....7) точки пространственного положения (x,y), а F(u,v) соответствует частотная область, соответствующая коэффициентам DCT (u,v=0,1,2...7) в частотной позиции (u,v), частота увеличивается вдоль направления u,v В пространственной области 8Образцовая матрица из 8 после преобразования FDCT становится равной 8 в частотной области.Матрица коэффициентов 8FDCT Правый нижний угол диаграммы частотной области F(u, v) на рисунке соответствует высокочастотной части, а верхний левый угол соответствует низкочастотной части, где F(0, 0) соответствует к компоненту постоянного тока, который становится коэффициентом постоянного тока Другое 63 Коэффициенты, соответствующие компонентам переменного тока, становятся коэффициентами переменного тока.

Поскольку при оцифровке видео используется 8-битное квантование, то есть максимальная амплитуда соответствует 256 уровням (уровням квантования), поэтому диапазон изменения F(0,0) составляет 64/8 от 256, то есть возможное значение находится между 0 и 2047. Диапазон изменения коэффициентов должен быть от -1024 до 1023. В матрице коэффициентов F(u,v) значение низкочастотного коэффициента велико, а значение высокочастотного коэффициента мало. В следующей таблице показан набор фактических, 8 * 8 до и после преобразования.Матрица образца и матрица коэффициентов DCT.

0 1 2 3 4 5 6 7
150 170 132 185 147 190 215 220
165 185 130 190 175 195 223 199
155 163 180 220 202 173 197 170
143 154 160 170 211 185 190 166
130 140 172 190 193 150 180 140
135 164 198 180 177 141 172 135
170 190 163 140 165 132 160 140
160 200 145 135 170 199 190 129
0 1 2 3 4 5 6 7
136.2340 -48.8294 -39.2458 9.8608 -22.6310 11.6491 -63.7071 -5.3816
62.2669 -77.2554 16.1615 -12.8225 35.0540 23.9713 -5.6764 -41.6991
7.5839 -7.4069 75.5760 26.7426 -26.4953 -12.8395 -10.5650 -43.5935
18.6219 18.1673 23.2682 -26.0828 17.7958 21.6025 10.0939 6.4744
-9.2768 10.0678 12.2530 -9.9202 10.1096 -12.9974 10.0253 10.5422
10.7947 2.3326 -29.5610 -20.2712 -7.3535 12.1952 9.6559 0.2945
10.7947 2.3326 -29.5610 -29.2712 -7.3535 12.1952 9.6559 0.2945
-8.3913 12.2379 -8.4750 -6.5153 15.8826 13.3316 -2.1819 2.2038

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

4.2 Квантование коэффициента DTC

Из приведенной таблицы видно, что корреляция значений в матрице f плохая, а корреляция между коэффициентами ДКП в матрице F после преобразования ДКП выявлена, то есть значение коэффициента в верхнем левый угол большой, в то время как нижний правый угол имеет большое значение коэффициента. Значение коэффициента коэффициента мало, что создает необходимые условия для сжатия данных. Однако эта корреляция не очень очевидна. Чтобы добиться сжатия данных, наконец, это необходимо дополнительно уменьшить амплитуду коэффициентов, отличных от «0», и увеличить коэффициенты со значением «0». Для дальнейшего улучшения корреляции матрицы F. С этой целью преобразованные коэффициенты DCT должны быть проквантованы, то есть значения коэффициентов в матрице F уменьшаются в разной пропорции в соответствии с определенными требованиями.Очевидно, что квантование является деградацией качества картинки.Главной причиной.

Квантование коэффициентов DCT основано на теории кодирования с конечным искажением (Finite Distortion) и позволяет квантовать коэффициенты DCT, вызывая определенные искажения изображения, но это искажение должно быть в пределах допуска, воспринимаемого человеческим зрением.

Метод квантования, заключающийся в назначении различных размеров шага квантования в соответствии с различными областями матрицы коэффициентов FDCT, называетсяфильтр области.

4.3 Зигзагообразное сканирование

Квантованный коэффициент DCT по-прежнему представляет собой двумерную матрицу коэффициентов, и его необходимо преобразовать в одномерную последовательность данных для передачи данных.Зигзагообразное сканирование использует метод зигзагообразного сканирования.Это в основном потому, что квантованный ДКП в коэффициенте матрица, ненулевые данные в основном сосредоточены в верхнем левом углу матрицы.Начиная с DC составляющей DC, зигзагообразное сканирование может увеличить количество последовательных нулевых коэффициентов, то есть увеличить длину прогона 0. Это сжимает данные в передаче Очень полезно.

4.4 Кодирование длин серий (RLC)

Квантованная матрица коэффициентов DCT преобразуется в последовательность массива после сканирования Zig-Zag, а затем хвост этой последовательности массива представляет собой непрерывные данные 0, и количество этих непрерывных данных 0 называется запуском. Во избежание передачи данных Чтобы передавать 0-е данные один за другим, чтобы дополнительно реализовать сжатие данных, необходимо выполнить кодирование длин серий для этого массива измерений. Метод последовательного кодирования заключается в преобразовании последовательности одномерного массива, полученной путем сканирования, в последовательность массивов, состоящую из двоичных массивов (число, уровень), где число представляет собой длину последовательных нулей, а уровень представляет собой нелинейную последовательность. который появляется после последовательности последовательных 0. Нулевое значение, за которым следуют все остальные последовательные нули, представлено символом EOB.

4.5 Энтропийное кодирование

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

При кодировании с преобразованием последовательность массива пар символов после кодирования длин серий не используется непосредственно в качестве данных для передачи, но также выполняется кодирование Хаффмана для дальнейшего улучшения степени сжатия данных.Вероятность появления символов кодируется Хаффманом, и кодовая таблица (кодовая таблица Хаффмана) формируется и хранится в ПЗУ энкодера.При передаче данных каждый символ будет преобразован в код Хаффмана в строгом соответствии с кодовой таблицей.На стороне приема данных тот самый Хаффман кодовая таблица должна использоваться для декодирования.