Эффективное кодирование и декодирование блоков преобразования

Иллюстрации

Показать все

Изобретение относится к методам кодирования/декодирования цифрового мультимедиа, в частности к основанному на блочном преобразовании цифровому мультимедийному кодеку. Техническим результатом является повышение эффективности сжатия коэффициентов преобразования и скорости кодирования/декодирования. Указанный технический результат достигается тем, что кодек кодирует коэффициенты преобразования посредством совместного кодирования ненулевых коэффициентов с последующими сериями коэффициентов с нулевыми значениями. Когда ненулевые коэффициенты являются последними в своем блоке, последний индикатор заменяется для значения серии в символе этого коэффициента (1435). Начальные ненулевые коэффициенты указываются в специальном символе, который совместно кодирует ненулевой коэффициент вместе с начальными и последующими сериями нулей (1440). Кодек предоставляет возможность нескольких контекстов кодирования посредством обнаружения разрывов в сериях ненулевых коэффициентов и кодирования ненулевых коэффициентов на какой-либо стороне этого разрыва отдельно (1460). Кодек также уменьшает размер кодовой таблицы посредством указания в каждом символе того, имеет ли ненулевой коэффициент абсолютное значение больше 1, и имеют ли серии нулей положительные значения (1475), и отдельно кодирует уровень коэффициентов и длину серий вне символов (1490). 4 н. и 21 з.п. ф-лы, 22 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

Блочное основанное на преобразовании кодирование

Кодирование на основе преобразования - это методика сжатия, используемая во многих системах сжатия звука, изображений и видео. Несжатое цифровое изображение и видео типично представляется или захватывается в виде дискретных выборок элементов или цветов картинки на позициях в кадре изображения или видео, скомпонованном в двумерной (2D) сетке. Это называется представлением изображения или видео в пространственной области. Например, типичный формат для изображений состоит из потока 24-битных дискретных выборок элементов цветной картинки, скомпонованных в виде сетки. Каждая дискретная выборка, среди прочего, является числом, представляющим цветовые компоненты на позиции пикселя в сетке в пределах цветового пространства, такого как RGB или YIQ. Различные системы изображения и видео могут использовать различные цветовые, пространственные и временные разрешения дискретизации. Так же цифровое аудио типично представляется как выбираемый по времени поток звуковых сигналов. Например, типичный звуковой формат состоит из потока 16-битных амплитудных дискретных выборок звукового сигнала, взятых с постоянными временными интервалами.

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

Более конкретно, типичный блочный, основанный на преобразовании, кодек 100, показанный на фиг.1, делит пиксели несжатого цифрового изображения на двумерные блоки фиксированного размера (X1,…, Xn), каждый блок, возможно, перекрывается с другими блоками. Линейное преобразование 120-121, которое производит анализ пространственных частот, применяется к каждому блоку, который конвертирует разнесенные дискретные выборки в пределах блока в набор коэффициентов частот (или преобразования), обычно представляющих мощность цифрового сигнала в соответствующих полосах частот по блочному интервалу. Для сжатия коэффициенты преобразования могут быть избирательно квантованы 130 (т.е. уменьшены в разрешении, например, отбрасыванием младших значащих битов значений коэффициентов или, в ином случае, преобразованием значений в числовом множестве с более высоким разрешением в более низкое разрешение), а также статистически закодированы 130 или с переменной длиной в сжатый поток данных. При декодировании коэффициенты преобразования обратно преобразуются 170-171, чтобы приблизительно восстановить исходный, выбираемый по цвету/пространству, сигнал изображения/видео (восстановленные блоки ).

Блочное преобразование 120-121 может быть задано как математическая операция над вектором x размера N. Более часто операцией является линейное умножение, генерирующее выходной результат y=Mx, области преобразования M, являющийся матрицей преобразования. Когда входные данные имеют произвольную длину, они сегментируются на N-мерные векторы, а блочное преобразование применяется к каждому сегменту. В целях сжатия данных выбраны обратимые блочные преобразования. Другими словами, матрица M является обратимой. В многочисленных измерениях (например, для изображения и видео) блочные преобразования типично реализованы как раздельные операции. Матричное умножение раздельно применяется вдоль каждого измерения данных (т.е. как строк, так и столбцов).

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

При декодировании в декодере 150 инверсия этих операций (декодирование 160 по деквантованию/статистическое и обратное блочное преобразование 170-171) применяется на стороне декодера 150, как показано на фиг.1. При восстановлении данных обратная матрица M-1 (обратное преобразование 170-171) применяется в качестве множителя к данным области преобразования. Когда применено к данным области преобразования, обратное преобразование приближенно восстанавливает исходные цифровые аудиовизуальные данные временной области или пространственной области.

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

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

Статистическое кодирование коэффициентов преобразования с большим диапазоном

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

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

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

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

Следовательно, традиционное кодирование с преобразованием не имеет гибкости, работая хорошо для входных данных с распределением с небольшим динамическим диапазоном, но не оптимально для распределения с большим динамическим диапазоном.

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

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

Сущность изобретения

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

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

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

Различные методики и средства могут быть использованы в комбинации или независимо.

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

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

Краткое описание чертежей

Фиг.1 - это блок-схема традиционного, основанного на блочном преобразовании, кодека в предшествующем уровне техники.

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

Фиг.3 - это гистограмма, показывающая распределение коэффициентов преобразования с небольшим диапазоном.

Фиг.4 - это блок-схема типичного кодера, содержащего адаптивное кодирование коэффициентов с большим диапазоном.

Фиг.5 - это блок-схема типичного декодера, содержащего декодирование адаптивно кодированных коэффициентов с большим диапазоном.

Фиг.6 - это блок-схема, иллюстрирующая группировку и разбиение на уровни коэффициента преобразования при адаптивном кодировании коэффициентов с большим диапазоном, как, например, в кодере согласно фиг.4.

Фиг.7 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством кодера, согласно фиг.4, для того, чтобы кодировать коэффициент преобразования для выбранной группировки коэффициентов преобразования в контейнерах.

Фиг.8 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством кодера, согласно фиг.5, для того, чтобы восстановить коэффициент преобразования, закодированный посредством процесса согласно фиг.7.

Фиг.9 - это блок-схема последовательности операций способа, иллюстрирующая процесс адаптации для адаптивного варьирования группировки, согласно фиг.6, чтобы сформировать более оптимальное распределение для статистического кодирования коэффициентов.

Фиг.10 и 11 - это распечатка псевдокода процесса адаптации по фиг.9.

Фиг.12 иллюстрирует примеры кодированных коэффициентов преобразования в предшествующем уровне техники.

Фиг.13 иллюстрирует один пример коэффициентов преобразования, кодированных согласно методикам кодирования, описанным в данном документе.

Фиг.14 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством кодера, согласно фиг.4, чтобы кодировать коэффициенты преобразования.

Фиг.15 иллюстрирует примеры различных контекстов кодовых таблиц, используемых для того, чтобы кодировать коэффициенты преобразования согласно методикам, описанным в данном документе.

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

Фиг.17 иллюстрирует пример сокращенных коэффициентов преобразования, кодированных согласно методикам кодирования, описанным в данном документе.

Фиг.18 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством кодера, согласно фиг.4, чтобы кодировать и отправлять начальные коэффициенты преобразования в сокращенной форме.

Фиг.19 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством кодера, согласно фиг.4, чтобы кодировать и отправлять последующие коэффициенты в сокращенной форме.

Фиг.20 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством декодера, согласно фиг.5, чтобы декодировать кодированные коэффициенты преобразования.

Фиг.21 - это блок-схема последовательности операций способа, иллюстрирующая процесс посредством декодера, согласно фиг.5, чтобы декодировать кодированные коэффициенты преобразования.

Фиг.22 - это блок-схема подходящего вычислительного окружения для реализации адаптивного кодирования коэффициентов с большим диапазоном согласно фиг.6.

Подробное описание изобретения

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

1. Кодер/декодер

Фиг.4 и 5 - это обобщенные схемы процессов, используемых в типичном двумерном (2D) кодере 400 и декодере 500 данных. Схемы представляют обобщенную или упрощенную иллюстрацию системы сжатия, включающей кодер и декодер двумерных данных, которые реализуют адаптивное кодирование на основе коэффициентов с большим диапазоном. В альтернативных системах сжатия, использующих адаптивное кодирование на основе коэффициентов с большим диапазоном, дополнительное или меньшее число процессов, чем проиллюстрировано в типичном кодере и декодере, может быть использовано для сжатия двумерных данных. Например, некоторые кодировщики/декодеры также могут включать в себя цветовое преобразование, цветовые форматирования, масштабируемое кодирование, кодирование без потерь, режимы макроблока и т.д. Система сжатия (кодировщик и декодер) может обеспечивать кодирование без потерь и/или с потерями 2D-данных, в зависимости от квантования, которое может быть основано на параметре квантования, изменяющемся от «без потерь» до «с потерями».

Кодер 400 2D-данных вырабатывает сжатый битовый поток 420, который является более компактным представлением (для типичного ввода) 2D-данных 410, представленных в качестве входных данных кодировщику. Например, входным сигналом 2D-данных может быть изображение, кадр видеопоследовательности или другие данные, имеющие два измерения. Кодировщик 2D-данных фрагментирует 430 входные данные на макроблоки, которые имеют размер 16×16 пикселей в этом иллюстративном кодировщике. Кодер 2D-данных дополнительно фрагментирует макроблок на блоки 4×4. Оператор 440 "прямого перекрытия" применяется к каждому краю между блоками, после чего каждый блок 4×4 преобразуется с помощью блочного преобразования 450. Этим блочным преобразованием 450 может быть обратимое безразмерное двумерное преобразование, описанное в Патентной заявке номер 11/015707 (США) Srinivasan, озаглавленной "Reversible Transform For Lossy And Lossless 2-D Data Compression", зарегистрированной 17 декабря 2004 года. Оператор перекрытия 440 может быть оператором обратимого перекрытия, который подробно описан Tu et al. Патентная заявка (США) номер 11/015148, озаглавленная "Reversible Overlap Operator for Efficient Lossless Data Compression", зарегистрированная 17 декабря 2004 года; и Tu et al., Патентная заявка (США) номер 11/035991, озаглавленная "Reversible 2-Dimensional Pre-/Post-Filtering For Lapped Biorthogonal Transform", зарегистрированная 14 января 2005 года. В качестве альтернативы, могут быть использованы дискретное косинусное преобразование или другие блочные преобразования и операторы перекрытия. Вслед за преобразованием, DC-коэффициент 460 каждого блока 4×4 преобразования подвергается аналогичной цепочке обработки (разбиению, прямому перекрытию, сопровождаемому блочным преобразованием 4×4). Результирующие DC-коэффициенты преобразования и AC-коэффициенты квантуются 470, статистически кодируются 480 и пакетируются 490.

Декодер выполняет обратную последовательность операций. На стороне декодера биты коэффициентов преобразования извлекаются 510 из их соответствующих пакетов, из которых декодируются 520 и деквантуются 530 сами коэффициенты. DC-коэффициенты 540 регенерируются посредством применения обратного преобразования, и плоскость DC-коэффициентов «инверсно перекрывается» с использованием подходящего сглаживающего оператора, применяемого по границам DC-блоков. В дальнейшем все данные регенерируются посредством применения обратного преобразования 550 4×4 к DC-коэффициентам, и AC-коэффициенты 542 декодируются из потока битов. В заключение, границы блока в плоскостях результирующего изображения фильтруются 560 с обратным перекрытием. Это вырабатывает выходной сигнал восстановленных 2D-данных.

В примерной реализации кодер 400 (фиг.4) сжимает входное изображение в сжатый поток 420 битов (к примеру, файл), а декодер 500 (фиг.5) восстанавливает исходные входные данные или их приближение на основе того, какое кодирование (с потерями или без потерь) используется. Процесс кодирования влечет за собой применение прямого перекрывающегося преобразования (LT), описанного ниже, которое реализовано с помощью обратимой двумерной предварительной/пост-фильтрации, также более подробно описанной ниже. Процесс декодирования влечет за собой применение обратного перекрывающегося преобразования (ILT) с использованием обратимой двумерной предварительной/пост-фильтрации.

Проиллюстрированные LT и ILT являются инверсиями друг друга, в точном смысле, и поэтому вместе могут быть названы как обратимое перекрывающееся преобразование. В качестве обратимого преобразования пара LT/ILT может быть использована для сжатия изображений без потерь.

Входными данными 410, сжатыми проиллюстрированным кодером 400/декодером 500, могут быть изображения различных форматов цветов (к примеру, форматы цветных изображений RGB/YUV4:4:4, YUV4:2:2 или YUV4:2:0). Типично, входное изображение всегда имеет компонент яркости (Y). Если оно является изображением RGB/YUV4:4:4, YUV4:2:2 или YUV4:2:0, изображение также имеет компоненты цветности, такие как компонент U и компонент V. Отдельные цветовые плоскости или компоненты изображения могут иметь различные пространственные разрешения. В случае входного изображения, например, в формате цвета YUV 4:2:0, компоненты U и V имеют половину ширины и высоты компонента Y.

Как описано выше, кодер 400 разбивает входное изображение или рисунок на макроблоки. В примерной реализации кодер 400 разбивает входное изображение на макроблоки 16×16 в канале Y (которыми могут быть области 16×16, 16×8 или 8×8 в каналах U и V, в зависимости от формата цвета). Цветовая плоскость каждого макроблока разбита на зоны или блоки 4×4. Поэтому макроблок составляется для различных форматов цвета следующим образом для этой примерной реализации кодера:

1. Для изображения по шкале серого каждый макроблок содержит 16 блоков яркости (Y) 4×4.

2. Для изображения формата цвета YUV4:2:0 каждый макроблок содержит 16 блоков Y 4×4 и по 4 блока цветности (U и V) 4×4.

3. Для изображения формата цвета YUV4:2:2 каждый макроблок содержит 16 блоков Y 4×4 и по 8 блоков цветности (U и V) 4×4.

4. Для цветного изображения RGB или YUV4:4 каждый макроблок содержит 16 блоков каждого из каналов Y, U и V.

2. Адаптивное кодирование коэффициентов с большим диапазоном

В случае данных с большим динамическим диапазоном, в частности, декоррелированных данных преобразования (таких как коэффициенты 460, 462 в кодере по фиг.4) значительное количество битов младшего порядка являются непрогнозируемыми и "шумовыми". Другими словами, есть немного корреляции в битах младшего порядка, которые могут быть использованы для эффективного статистического кодирования. Эти биты имеют высокую энтропию, достигающую 1 бита для каждого кодированного бита.

2.1. Группировка

Дополнительно, функция Лапласа распределения вероятностей коэффициентов преобразования с большим диапазоном, показанных на фиг.3, задается посредством:

(для удобства произвольная переменная, соответствующая коэффициентам преобразования, трактуется как непрерывное значение). Для данных с большим динамическим диапазоном λ является небольшим, а абсолютное среднее 1/λ является большим. Кривая этого распределения ограничена рамками ±Ѕ(λ2), что является очень небольшим. Это означает, что вероятность равенства коэффициента преобразования x очень близка к вероятности x+ξ для небольшого сдвига ξ. В дискретной области значений это преобразуется в утверждение "вероятность принятия коэффициентами преобразования соседних значений j и (j+1) является практически идентичной".

Со ссылкой теперь на фиг.6, адаптивное кодирование коэффициентов с большим диапазоном осуществляет группировку 610 последовательных символов алфавита в "контейнеры" по N символов. Числом символов на контейнер может быть любое число N. Тем не менее, для практичности число N желательно является степенью 2 (т.е. N=2k), так чтобы индекс или адрес коэффициента в контейнере могли быть закодированы эффективно как код фиксированной длины. Например, символы могут быть сгруппированы в пары, так чтобы символ мог быть идентифицирован как индекс пары, наряду с индексом символа в паре.

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

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

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

Как описано ниже, значение k может варьироваться адаптивно (обратно адаптивным способом) в кодере и декодере. Более конкретно, значение k в кодере и декодере варьируется только на основе ранее кодированных/декодированных данных.

В одном конкретном примере данного кодирования, показанном на фиг.7, кодер кодирует коэффициент преобразования X следующим образом. На начальном этапе 710 кодер вычисляет нормализованный коэффициент Y для коэффициента преобразования. В этой примерной реализации нормализованный коэффициент Y задается как Y=sign(X)*floor(abs(X)/N) для некоторого варианта размера контейнера N=2k. Кодер кодирует символ Y с помощью статистического кода (этап 720) либо отдельно, либо вместе с другими символами. Далее на этапе 730 кодер определяет адрес контейнера (Z) коэффициента преобразования X. В этой примерной реализации адрес контейнера является остатком от деления нацело abs(X) на размер N, или Z=abs(X)%N. Кодер кодирует это значение как код фиксированной длины из k на этапе 740. Дополнительно, в случае ненулевого коэффициента преобразования кодер также кодирует знак. Более конкретно, как указано на этапах 750-760, кодер кодирует знак нормализованного коэффициента (Y), когда нормализованный коэффициент является ненулевым. Дополнительно, в случае если нормализованный коэффициент является нулевым, а коэффициент преобразования является нулевым, кодер кодирует знак коэффициента преобразования (X). Поскольку нормализованный коэффициент кодируется с помощью статистического кода переменной длины, он также упоминается в данном документе как часть переменной длины, а адрес контейнера (Z) также упоминается в данном документе как часть фиксированной длины. В других альтернативных реализациях математические определения нормализованного коэффициента, адреса контейнера и знака коэффициента преобразования могут варьироваться.

Продолжая этот пример, фиг.8 иллюстрирует примерный процесс 800 посредством декодера 500 (фиг.5), чтобы восстановить коэффициент преобразования, который кодирован посредством процесса 700 (фиг.7). На этапе 810 декодер декодирует нормализованный коэффициент (Y) из сжатого потока 420 битов 420 (фиг.5) либо отдельно, либо вместе с другими символами, как задано в процессе блочного кодирования. Декодер дополнительно считывает k-битовое кодовое слово для адреса контейнера и знак (когда кодирован) из сжатого потока битов на этапе 820. На этапах 830-872 декодер после этого восстанавливает коэффициент преобразования следующим образом:

1. Когда Y>0 (этап 830), то коэффициент преобразования восстанавливается как X=Y*N+Z (этап 831).

2. Когда Y<0 (этап 840), то коэффициент преобразования восстанавливается как X=Y*N-Z (этап 841).

3. Когда Y=0 и Z=0 (этап 850), то коэффициент преобразования восстанавливается как X=0 (этап 851).

4. Когда Y=0 и Z≠0, декодер дополнительно считывает кодированный знак (S) из сжатого потока битов (этап 860). Если знак положительный (S=0) (этап 870), то коэффициент преобразования восстанавливается как X=Z (этап 871). Иначе, если знак отрицательный (S=1), коэффициент преобразования восстанавливается как X=-Z (этап 872).

2.2. Разбиение на уровни

Со ссылкой снова на фиг.6, кодер и декодер желательно абстрагируют адреса 625 контейнеров с кодированием с фиксированной длиной и знак в отдельный кодированный уровень (называемый в данном документе как уровень 645 Flexbits) в сжатый поток битов 420 (фиг.4). Нормализованные коэффициенты 620 кодируются на уровне базового потока 640 битов. Это предоставляет кодеру и/или декодеру возможность понижать уровень или полностью отбрасывать эту часть Flexbits кодирования, как требуется, чтобы удовлетворить скорости передачи битов или другим ограничениям. Даже при полном отбрасывании кодером уровня Flexbits сжатый поток битов по-прежнему должен декодироваться, хотя и при сниженном качестве. Декодер по-прежнему может восстановить сигнал только из части нормализованных коэффициентов. Это фактически аналогично применению большей степени квантования 470 (фиг.4) в кодере. Кодирование адресов контейнеров и знака как отдельного уровня Flexbits также имеет потенциальное преимущество в том, что в некоторых реализациях кодера/декодера дополнительное кодирование с переменной длиной (к примеру, арифметическое кодирование, Lempel-Ziv, Burrows-Wheeler и т.д.) может быть применено к данным на этом уровне для дополнительного улучшенного сжатия.

Для разбиения на уровни секции сжатого потока битов, содержащие часть Flexbits, передаются посредством отдельного заголовка уровня или другого индикатора в потоке битов, с тем чтобы декодер мог идентифицировать и отделить (т.е. проанализировать) уровень 645 Flexbits (когда не опущен) от базового потока битов 640.

Разбиение на уровни представляет дополнительную сложную задачу при проектировании обратно совместимой группировки (описанной в следующем разделе). Поскольку уровень Flexbits может присутствовать или отсутствовать в данном потоке битов, модель обратно адаптивной группировки не может надежно ссылаться на какую-либо информацию в уровне Flexbits. Вся информация, требуемая для того, чтобы определять число битов кода фиксированной длины k (соответствующих размеру контейнера N=2k), должна размещаться в причинном базовом потоке битов.

2.3. Адаптация

Кодер и декодер дополнительно предоставляют процесс обратной адаптации, чтобы адаптивно регулировать выбор числа k битов кода фиксированной длины, и соответственно, размер контейнера N группировки, описанной выше, в ходе кодирования и декодирования. В одной реализации процесс адаптации может быть основан на моделировании коэффициентов преобразования как распределения Лапласа, с тем чтобы значение k извлекалось из параметра λ Лапласиана. Тем не менее, такая усложненная модель должна потребовать, чтобы декодер выполнил инверсию группировки 610 (восстановление коэффициентов преобразования из нормализованных коэффициентов в базовом потоке 640 битов и адреса контейнера/знака в уровне 645 Flexbits) по фиг.6 для моделирования распределения для будущих блоков. Это требование должно нарушить ограничение разбиения на уровни в том, что декодер должен разрешить отбрасывание уровня Flexbits из сжатого потока 420 битов.

В примерной реализации, показанной на фиг.9, процесс 900 адаптации вместо этого базируется на наблюдении того, что более оптимальное кодирование длин серий коэффициентов преобразования достигается, когда примерно одна четверть коэффициентов являются ненулевыми. Таким образом, параметр адаптации, который может быть использован для того, чтобы подстроить группировку под ситуацию "зоны наилучшего восприятия", где примерно три четвери нормализованных коэффициентов равны нулю, предоставляет оптимальную производительность статистического кодирования. Соответственно, число ненулевых нормализованных коэффициентов в блоке используется в качестве параметра адаптации в примерной реализации. Данный параметр адаптации имеет преимущество в том, что он зависит только от информации, содержащейся в базовом потоке битов, который удовлетворяет ограничению разбиения на уровни в том, что коэффициенты преобразования по-прежнему могут быть декодированы с пропущенным уровнем Flexbits. Данный процесс является обратной адаптацией в том смысле, что модель адаптации, применяемая при кодировании/декодировании текущего блока, основана на информации из предыдущего блока(ов).

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

В примерном кодере и декодере процесс 900 адаптации обновляет значение k. Если число ненулевого нормализованного коэффициента слишком большое, то k повышается так, что это число зачастую отбрасывается в будущих блоках. Если число ненулевых нормализованных коэффициентов слишком мало, то k снижается с ожиданием того, что будущие блоки затем сформируют больше ненулевых нормализованных коэффициентов, поскольку размер контейнера N меньше. Примерный процесс адаптации ограничивает значение k так, чтобы быть в наборе чисел (0, 1,…, 16), но альтернативные реализации могут использовать другие диапазоны значений k. При каждом обновлении адаптации кодер и декодер увеличивает, уменьшает или оставляет неизменным k. Примерный кодер и декодер увеличивает или уменьшает k на единицу, но альтернативные реализации могут использовать другие размеры шагов.

Процесс 900 адаптации в примерном кодере и декодере дополнительно использует внутренний параметр моде