АДАПТИВНОЕ КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ КОЭФФИЦИЕНТОВ С ШИРОКИМ ДИАПАЗОНОМ
ADAPTIVE CODING AND DECODING WIDE-RANGE COEFFICIENTS

Заявление об авторских правах
Часть раскрытия этого патентного документа содержит материал, подлежащий защите авторских прав. Владелец авторских прав не возражает против факсимильного воспроизведения патентного документа или раскрытия патента в том виде, в каком они представлены в файле или записях патента, хранящихся в ведомстве по патентам и торговым маркам, но в остальном сохраняет за собой все авторские права.
Предпосылки изобретения
Кодирование на основе блочного преобразования
Кодирование с преобразованием - это метод сжатия, используемый во многих системах сжатия аудиосигнала, изображений и видеосигнала. Несжатое цифровое изображение и видео обычно представляют или захватывают в виде выборок элементов изображения или цветов в местах изображения или кадра видео, которые образуют двухмерную (2D) сетку. Это называют пространственным представлением изображения или видео. Например, типичный формат изображений состоит из потока выборок элементов изображения с 24-битовым цветом, размещенных в виде сетки. Каждая выборка является числом, представляющим цветовые компоненты в месте расположения пикселя в сетке в цветовом пространстве, например RGB или YIQ, помимо прочих. Различные системы изображений и видео могут использовать различные другие цветовые, пространственные и временные разрешения дискретизации. Аналогично, цифровой аудиосигнал обычно представляют в виде потока аудиосигнала, дискретизированного по времени. Например, типичный формат аудио состоит из потока выборок с 16-битовой амплитудой аудиосигнала, взятых с регулярными временными интервалами.
Несжатые цифровые аудиосигналы, сигналы изображения и видеосигналы могут потреблять значительный объем памяти и пропускной способности. Кодирование с преобразованием уменьшает размер цифровых аудиосигналов, сигналов изображения и видеосигналов за счет преобразования пространственного представления сигнала к частотному представлению (или какой-либо другой области представления преобразования) и последующего снижения разрешения некоторых, обычно менее важных для восприятия, частотных компонентов преобразованного представления. Это в общем случае приводит к значительно меньшему воспринимаемому ухудшению цифрового сигнала по сравнению со снижением цветового или пространственного разрешения изображений или видео в пространственной области определения или аудио во временной области определения.
1
n
В частности, типичный кодек на основе блочного преобразования 100, показанный на фиг.1, делит пиксели несжатого цифрового изображения на двухмерные блоки фиксированного размера (X,..., X), причем каждый блок может перекрываться с другими блоками. Линейное преобразование 120-121, осуществляющее пространственно-частотный анализ, применяется к каждому блоку, который преобразует разнесенные выборки в блоке в набор частотных коэффициентов (или коэффициентов преобразования), в общем случае выражающих интенсивность цифрового сигнала в соответствующих полосах частот по интервалу блока. Для сжатия коэффициенты преобразования можно избирательно квантовать 130 (т.е. понижать разрешение, например путем отбрасывания младших битов в значениях коэффициентов или иного отображения (преобразования) значений в наборе чисел с более высоким разрешением в более низкое разрешение), а также подвергать статистическому кодированию или кодированию с переменной длиной 130 в поток сжатых данных. При декодировании коэффициенты преобразования подвергаются обратному преобразованию 170-171 для приближенной реконструкции исходного сигнала изображения/видео, дискретизированного по цвету/пространственным координатам (реконструированные блоки ).
Блочное преобразование 120-121 можно задать в виде математической операции над вектором x размера N. Чаще всего операция является линейным умножением, порождающим выходной результат y=Mx в области преобразования, где M - матрица преобразования. Когда входные данные имеют произвольную длину, они сегментируются на векторы размера N, и блочное преобразование применяется к каждому сегменту. В целях сжатия данных выбирают обратимые блочные преобразования. Иными словами, матрица M является обратимой. В многомерных пространствах (например, для изображений и видео) блочные преобразования обычно реализуют в виде раздельных операций. Матричное умножение применяется раздельно в каждом измерении данных (т.е. по строкам и столбцам).
Для сжатия коэффициенты преобразования (компоненты вектора y) можно избирательно квантовать (т.е. понижать разрешение, например путем отбрасывания младших битов в значениях коэффициентов или иного преобразования значений в наборе чисел с более высоким разрешением в более низкое разрешение), а также подвергать статистическому кодированию или кодированию с переменной длиной в поток сжатых данных.
-1
При декодировании на декодере 150 на стороне декодера 150 применяются обратные операции (деквантование/статистическое декодирование 160 и обратное блочное преобразование 170-171), что показано на фиг.1. При реконструкции данных обратная матрица M (обратное преобразование 170-171) применяется в качестве множителя к данным области преобразования. При применении к данным области преобразования обратное преобразование примерно реконструирует исходный цифровой медиасигнал во временной области или пространственной области.
Во многих приложениях кодирования на основе блочного преобразования желательно, чтобы преобразование было обратимым, для обеспечения поддержки сжатия с потерями и без потерь в зависимости от коэффициента квантования. Например, в отсутствие квантования (что обычно выражается коэффициентом квантования 1) кодек, использующий обратимое преобразование, может точно воспроизводить входные данные при декодировании. Однако требование обратимости в этих приложениях ограничивает выбор преобразований, лежащих в основе кодека.
Многие системы сжатия изображения и видео, например MPEG и Windows Media, помимо прочих, используют преобразования на основе дискретного косинусного преобразования (ДКП). ДКП, как известно, имеет хорошие характеристики сжатия энергетического спектра, что обеспечивает сжатие данных, близкое к оптимальному. В этих системах сжатия обратное ДКП (ОДКП) применяется в циклах реконструкции на кодере и декодере системы сжатия для реконструкции отдельных блоков изображения.
Статистическое кодирование коэффициентов преобразования с широким диапазоном
Широкий динамический диапазон входных данных приводит к расширению динамического диапазона коэффициентов преобразования, генерируемых в процессе кодирования изображения. Например, коэффициенты преобразования, генерируемые операцией ДКП N×N, имеют динамический диапазон, более чем в N раз превышающий динамический диапазон исходных данных. При малом или единичном факторе квантования (используемом для реализации сжатия с малыми потерями или без потерь) диапазон квантованных коэффициентов преобразования также велик. Статистически эти коэффициенты имеют распределение Лапласа, что показано на фиг.2 и 3. На фиг.2 показано распределение Лапласа для коэффициентов с широким динамическим диапазоном. На фиг.3 показано распределение Лапласа для обычных коэффициентов с узким динамическим диапазоном.
Традиционное кодирование с преобразованием настроено на малый динамический диапазон входных данных (обычно 8 битов) и относительно большие факторы квантования (например, численные значения от 4 и выше). На фиг.3 представлено распределение коэффициентов преобразования в таком традиционном преобразовательном кодировании. Кроме того, статистическое кодирование, применяемое с таким традиционным преобразовательным кодированием, может быть разновидностью кодирования «последовательность-уровень», где последовательность нулей кодируется в ненулевой символ. Это может быть эффективным средством представления серий нулей (которые появляются с высокой вероятностью), а также захвата межсимвольных корреляций.
С другой стороны, традиционное кодирование с преобразованием менее пригодно для сжатия распределений в широком динамическом диапазоне, например, показанного на фиг.2. Хотя символы равны нулю с более высокой вероятностью, чем какому-либо другому значению (т.е. распределение имеет пик в нуле), вероятность того, что коэффициент в точности равен нулю, очень мала для распределения в широком динамическом диапазоне. Поэтому нули не появляются часто, и методы статистического кодирования по длине серии, основанные на количестве нулей между последовательными ненулевыми коэффициентами, весьма неэффективны для входных данных с широким динамическим диапазоном.
Распределение в широком динамическом диапазоне также имеет расширенный алфавит символов по сравнению с распределением в узком диапазоне. Из-за этого расширенного алфавита символов для кодирования символов приходится использовать большую(ие) статистическую(ие) таблицу(ы). В противном случае многие символы будут отбрасываться, избегая кодирования, что неэффективно. Большие таблицы требуют больше памяти, а также могут приводить к усложнению.
Таким образом, традиционному кодированию с преобразованием недостает универсальности - оно хорошо работает на входных данных с распределением в узком динамическом диапазоне, но не с распределением в широком динамическом диапазоне.
Сущность изобретения
Описанные здесь способы кодирования и декодирования цифрового медиасигнала и цифровой медиакодек, реализующий эти способы, позволяют добиться более эффективного сжатия коэффициентов преобразования с широким динамическим диапазоном. Например, один иллюстративный цифровой медиакодек на основе блочного преобразования представляет коэффициенты преобразования с широким динамическим диапазоном в двух частях: нормализованный коэффициент и адрес контейнера. Нормализованный коэффициент относится к группированию значений коэффициентов с широким динамическим диапазоном в контейнеры, тогда как адрес контейнера - это индекс значения коэффициента в контейнере. При тщательном выборе размера контейнера часть нормализованного коэффициента для коэффициентов преобразования имеет примерно такое же распределение вероятностей, как и для коэффициентов преобразования с узким диапазоном, которое лучше поддается статистическому кодированию с переменной длиной.
Иллюстративный кодек использует статистическое кодирование с переменной длиной для кодирования нормализованных коэффициентов в "базе" сжатого битового потока и кодирование с фиксированной длиной для кодирования адреса контейнера в качестве отдельного дополнительного уровня, которое можно не выполнять. Даже в отсутствие уровня адреса контейнера кодек может декодировать битовый поток и приближенно реконструировать входные цифровые медиаданные. Группирование коэффициентов преобразования в контейнеры примерно такой же эффект, как квантование коэффициентов преобразования в более узкий динамический диапазон.
Кроме того, кодек адаптивно изменяет размер контейнера группирования на основании процесса обратной адаптации для подгонки нормализованных коэффициентов к распределению вероятностей, допускающему эффективное статистическое кодирование с переменной длиной. В иллюстративном кодеке адаптация опирается на счетчик ненулевых нормализованных коэффициентов в предыдущих блоках. Таким образом, адаптация зависит только от информации в базовом битовом потоке, что не противоречит ограничению, согласно которому уровень, содержащий адрес контейнера, можно избирательно игнорировать.
Эта сущность изобретения приведена здесь для ознакомления с рядом концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Эта сущность изобретения не призвана выявлять ключевые признаки или существенные признаки заявленного изобретения, а также не призвана помогать в определении объема заявленного изобретения.
Краткое описание чертежей
Фиг.1 - блок-схема традиционного кодека на основе блочного преобразования согласно уровню техники.
Фиг.2 - гистограмма, демонстрирующая распределение коэффициентов преобразования, имеющих широкий динамический диапазон.
Фиг.3 - гистограмма, демонстрирующая распределение коэффициентов с узким диапазоном.
Фиг.4 - схема операций иллюстративного кодера, обеспечивающего адаптивное кодирование коэффициентов с широким диапазоном.
Фиг.5 - схема операций декодера, обеспечивающего декодирование адаптивно кодированных коэффициентов с широким диапазоном.
Фиг.6 - схема операций, демонстрирующая группирование и «расслоение» коэффициента преобразования при адаптивном кодировании коэффициентов с широким диапазоном, например в кодере, показанном на фиг.4.
Фиг.7 - блок-схема операций процесса, выполняемого кодером, показанным на фиг.4, для кодирования коэффициента преобразования при выбранном группировании коэффициентов преобразования в контейнеры.
Фиг.8 - блок-схема этапов процесса, выполняемого декодером, показанным на фиг.5, для реконструкции коэффициента преобразования, закодированного в процессе, показанном на фиг.7.
Фиг.9 - блок-схема этапов процесса адаптации для адаптивного изменения группирования, показанного на фиг.6, для создания более оптимального распределения для статистического кодирования коэффициентов.
Фиг.10 и 11 - листинг псевдокода процесса адаптации, показанного на фиг.9.
Фиг.12 - блок-схема вычислительной среды, пригодной для реализации адаптивного кодирования коэффициентов с широким диапазоном, показанного на фиг.6.
Подробное описание
Нижеследующее описание посвящено способам кодирования и декодирования, которые адаптивно регулируются для более эффективного статистического кодирования коэффициентов преобразования с широким диапазоном. В нижеследующем описании раскрыта иллюстративная реализация способа применительно к системе сжатия цифрового медиасигнала или кодеку. Цифровая медиасистема кодирует цифровые медиаданные в сжатом виде для передачи или хранения и декодирует данные для воспроизведения или иной обработки. В целях иллюстрации эта иллюстративная система сжатия, предусматривающая это адаптивное кодирование коэффициентов с широким диапазоном, представляет собой систему сжатия изображения или видео. Альтернативно способ также можно использовать в системах сжатия или кодеках для других 2D-данных. Способ адаптивного кодирования коэффициентов с широким диапазоном не требует, чтобы система сжатия цифрового медиасигнала кодировала сжатые цифровые медиаданные в конкретном формате кодирования.
1. Кодер/декодер
На фиг.4 и 5 показаны общие схемы процессов, осуществляемых в иллюстративных кодере 400 и декодере 500 2-мерных (2D) данных. Схемы представляют обобщенную или упрощенную иллюстрацию системы сжатия, включающей в себя кодер и декодер 2D-данных, которые осуществляют адаптивное кодирование коэффициентов с широким диапазоном. В альтернативных системах сжатия с использованием адаптивного кодирования коэффициентов с широким диапазоном для сжатия 2D-данных можно использовать больше или меньше процессов, чем показано в этих иллюстративных кодере и декодере. Например, некоторые кодеры/декодеры также могут включать в себя преобразование цветов, цветовые форматы, масштабируемое кодирование, кодирование без потерь, режимы макроблоков и т.д. Система сжатия (кодер и декодер) могут обеспечивать сжатие без потерь и/или с потерями 2D-данных, в зависимости от квантования, т.е. на основании параметра квантование, изменяющегося от значения «без потерь» к значению «с потерями».
Кодер 2D-данных 400 создает сжатый битовый поток 420, который является более компактным представлением (для обычного ввода) 2D-данных 410, поданных в качестве ввода в кодер. Например, входные 2D-данные могут представлять собой изображение, кадр видеопоследовательности или другие данные, имеющие два измерения. Кодер 2D-данных разбивает 430 входные данные на макроблоки, каждый из которых имеет размер 16×16 пикселей в этом иллюстративном кодере. Кодер 2D-данных дополнительно разбивает каждый макроблок на блоки 4×4. Оператор 440 "прямого перекрытия" применяется к каждой границе между блоками, после чего каждый блок 4×4 преобразуется с использованием блочного преобразования 450. Это блочное преобразование 450 может быть обратимым, немасштабируемым 2D преобразованием, описанным Шринивасаном (Srinivasan) в патентной заявке США №11/015707 под названием "Reversible Transform For Lossy And Lossless 2-D Data Compression", поданной 17 декабря 2004 года. Оператор перекрытия 440 может представлять собой обратимый оператор перекрытия, описанный Ту (Tu) и др. в патентной заявке США №11/015148 под названием "Reversible Overlap Operator for Efficient Lossless Data Compression", поданной 17 декабря 2004 года; и Ту (Tu) и др. в патентной заявке США №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 блоков. Затем все данные регенерируются с применением обратного 4×4 преобразования 550 к DC коэффициентам и AC коэффициентам 542, декодированным из битового потока. Наконец, края блоков в результирующих плоскостях изображения подвергаются фильтрации с обратным перекрытием 560. В результате на выходе получаются реконструированные 2D-данные.
В иллюстративной реализации кодер 400 (фиг.2) сжимает входное изображение в сжатый битовый поток 420 (например, файл) и декодер 500 (фиг.5) реконструирует исходный входной сигнал или его приближение на основании того, применяется ли кодирование без потерь или с потерями. Процесс кодирования предусматривает применение прямого преобразования с перекрытием (LT), рассмотренного ниже, которое реализуется путем обратимой 2-мерной пре-/пост-фильтрации, которая также описана более подробно ниже. Процесс декодирования предусматривает применение обратного преобразования с перекрытием (ILT) с использованием обратимой 2-мерной пре-/пост-фильтрации.
Проиллюстрированные LT и ILT обратны друг другу в прямом смысле, и потому их можно в совокупности называть обратимым преобразованием с перекрытием. В качестве обратимого преобразования пару LT/ILT можно использовать для сжатия изображения без потерь.
Входные данные 410, сжимаемые иллюстрируемым кодером 400/декодером 500, могут представлять собой изображения в различных цветовых форматах (например, форматах цветного изображения RGB/YUV 4:4:4 или YUV 4:2:0). Обычно входное изображение всегда имеет компонент яркости (Y). Если это изображение RGB/YUV 4:4:4 или YUV 4:2:0, то изображение также имеет компоненты цветности, например компонент U и компонент V. Отдельные цветовые плоскости или компоненты изображения могут иметь разные пространственные разрешения. В случае входного изображения в цветовом формате YUV 4:2:0, например, компоненты U и V имеют половину ширины и высоты компонента Y.
Как рассмотрено выше, кодер 400 разбивает входное изображение на макроблоки. В иллюстративной реализации кодер 400 разбивает входное изображение на макроблоки 16×16 в канале Y (которые могут представлять собой области 16×16 или 8×8 в каналах U и V в зависимости от цветового формата). Цветовая плоскость каждого макроблока разбивается на участки или блоки 4×4. Поэтому макроблок для этой иллюстративной реализации кодера формируется для различных цветовых форматов следующим образом:
1. Для серого изображения каждый макроблок содержит 16 блоков яркости (Y) 4×4.
2. Для цветного изображения в формате YUV 4:2:0 каждый макроблок содержит 16 блоков Y 4×4, и 4 блока цветности (U и V) каждый размером 4×4.
3. Для цветного изображения RGB или YUV 4:4:4 каждый макроблок содержит 16 блоков каждого из каналов Y, U и V.
2. Адаптивное кодирование коэффициентов с широким диапазоном
В случае данных с широким динамическим диапазоном, особенно декоррелированных данных преобразования (например, коэффициентов 460, 462 в кодере, показанном на фиг.4), значительное количество младших битов непредсказуемы и создают "шум". Иными словами, в младших битах нет достаточной корреляции, которую можно использовать для эффективного статистического кодирования. Биты имеют высокую энтропию, достигающую 1 бита для каждого кодированного бита.
2.1 Группирование
Кроме того, функция лапласова распределения вероятностей коэффициентов преобразования с широким диапазоном, показанная на фиг.3, выражается как
2
(для удобства случайная переменная, соответствующая коэффициентам преобразования, рассматривается как непрерывная величина). Для данных с широким динамическим диапазоном λ мала и абсолютное значение 1/λ велико. Наклон этого распределения заключен в пределах ±1/2(λ), т.е. очень мал. Это значит, что вероятность того, что коэффициент преобразования равен x, очень близка к вероятности для x+ξ, для малого сдвига ξ. В дискретной области определения это сводится к утверждению: "вероятность того, что коэффициент преобразования принимает соседние значения j и (j+1), почти одинакова".
k
Согласно фиг.6 при адаптивном кодировании коэффициентов с широким диапазоном осуществляется группирование 610 последовательных символов алфавита в "контейнеры" из N символов. Количество символов на контейнер может быть любым числом N. Однако для практического использования желательно, чтобы количество N было степенью 2 (т.е. N=2), с тем чтобы индекс или адрес коэффициента в контейнере можно было эффективно кодировать в виде кода с фиксированной длиной. Например, символы можно группировать в пары, с тем чтобы символ можно было идентифицировать по индексу пары, совместно с индексом символа в паре.
Это группирование имеет преимущество в том, что при надлежащем выборе N распределение вероятностей индекса контейнера для коэффициентов с широким диапазоном больше напоминает распределение вероятностей для данных с узким диапазоном, например, показанное на фиг.3. Группирование математически сходно операции квантования. Это значит, что индекс контейнера можно эффективно кодировать с использованием методов статистического кодирования с переменной длиной, которое наиболее применимо к данным, имеющим распределение вероятностей в узком диапазоне.
На основании группирования коэффициентов в контейнеры кодер может затем кодировать коэффициент преобразования 615 с использованием индекса этого контейнера (также именуемого здесь нормализованным коэффициентом 620) и его адреса в контейнере (именуемого здесь адресом 625 контейнера). Нормализованный коэффициент кодируется с использованием статистического кодирования с переменной длиной, а адрес контейнера кодируется посредством кода с фиксированной длиной.
Выбор N (или, что одно и то же, количества битов k для кодирования адреса контейнера с фиксированной длиной) определяет степень детализации группирования. В общем случае чем шире диапазон коэффициентов преобразования, тем большее значение k следует выбирать. При надлежащем выборе k нормализованный коэффициент Y равен нулю с высокой вероятностью, что отвечает схеме статистического кодирования для Y.
Как описано ниже, значение k может адаптивно изменяться (в режиме обратной адаптации) в кодере и декодере. В частности, значение k на кодере и декодере изменяется только на основании ранее кодированных/декодированных данных.
k
В одном конкретном примере этого кодирования, показанном на фиг.7, кодер кодирует коэффициент преобразования X следующим образом. На начальном этапе 710 кодер вычисляет нормализованный коэффициент Y для коэффициента преобразования. В этой иллюстративной реализации нормализованный коэффициент Y задается как Y=sign(X)*floor(abs(X)/N) для некоторого выбора размера контейнера N=2. Кодер кодирует символ 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 (фиг.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 «флексбитов») в сжатом битовом потоке 420 (фиг.4). Нормализованные коэффициенты 620 кодируются в слое базового битового потока 640. Это дает кодеру и/или декодеру возможность при желании понижать или полностью отбрасывать эту флексбитовую часть кодирования, чтобы соответствовать ограничениям битовой скорости и пр. Даже когда кодер полностью отбрасывает слой флексбитов, сжатый битовый поток все же можно декодировать, хотя и с пониженным качеством. Декодер все же может реконструировать сигнал из одной лишь части нормализованных коэффициентов. Это, в сущности, аналогично применению более высокой степени квантования 470 (фиг.4) в кодере. Кодирование адресов контейнеров и знака в качестве отдельного слоя флексбитов также имеет потенциальное преимущество в том, что в ряде реализаций кодера/декодера для дополнительного улучшения сжатия к данным в этом слое (уровне) можно применять дополнительное статистическое кодирование с переменной длиной (например, арифметическое кодирование, кодирование Лемпела-Цива, Барроуза-Уилера и т.д.).
Для расслоения (разбиения на уровни) участки сжатого битового потока, содержащие флексбитовую часть, помечаются отдельным заголовком слоя (уровня) или другой индикацией в битовом потоке, чтобы декодер мог идентифицировать и отделять (т.е. анализировать) слой флексбитов 645 (когда он не отброшен) от базового битового потока 640.
k
Расслоение создает дополнительную трудность в построении группирования с обратной адаптацией (описанного в нижеследующем разделе). Поскольку слой (уровень) флексбитов может присутствовать или отсутствовать в данном битовом потоке, модель группирования с обратной адаптацией не может просто обращаться к любой информации в слое флексбитов. Вся информация, необходимая для определения количества k битов кода с фиксированной длиной (соответствующего размеру контейнера N=2), должна находиться в каузальном, базовом битовом потоке.
2.3 Адаптация
Кодер и декодер дополнительно обеспечивают процесс обратной адаптации для адаптивной коррекции выбора вышеописанного количества k битов кода с фиксированной длиной и, соответственно, размера контейнера N для группирования в ходе кодирования и декодирования. В одной реализации процесс адаптации может основываться на моделировании коэффициентов преобразования в соответствии с распределением Лапласа, что позволяет выводить значение k из параметра λ распределения Лапласа. Однако такая изощренная модель требует, чтобы декодер осуществлял операцию, обратную группированию 610 (реконструировал коэффициенты преобразования из нормализованных коэффициентов в базовом битовом потоке 640 и адреса контейнера/знака в слое флексбитов 645), показанному на фиг.6, до моделирования распределения для будущих блоков. Это требование нарушает ограничение по расслоению, состоящее в том, что декодер должен разрешать выбрасывать слой флексбитов из сжатого битового потока 420.
В иллюстративной реализации, показанной на фиг.9, процесс адаптации 900, напротив, основан на том наблюдении, что более оптимальное кодирование по длине серии коэффициентов преобразования достигается, когда примерно четверть коэффициентов не равна нулю. Таким образом, параметр адаптации, который можно использовать для настройки группирования на случай "зоны наилучшего восприятия", где примерно три четверти нормализованных коэффициентов равны нулю, будет обеспечивать хорошую эффективность статистического кодирования. Соответственно, количество ненулевых нормализованных коэффициентов в блоке используется в качестве параметра адаптации в иллюстративной реализации. Этот параметр адаптации имеет преимущество в том, что он зависит только от информации, содержащейся в базовом битовом потоке, что отвечает ограничению по расслоению, согласно которому коэффициенты преобразования все же можно декодировать без использования слоя флексбитов. Процесс является обратной адаптацией в том смысле, что модель адаптации, применяемая при кодировании/декодировании текущего блока, основана на информации из предыдущего(их) блока(ов).
В этом процессе адаптации иллюстративные кодер и декодер осуществляют адаптацию по принципу обратной адаптации. Иными словами, текущая итерация адаптации опирается на информацию, известную ранее в процессе кодирования или декодирования, например, в предыдущем блоке или макроблоке. В иллюстративных кодере и декодере обновление адаптации происходит один раз для каждого макроблока для данной полосы преобразования, что призвано минимизировать латентность и взаимозависимость. Альтернативные реализации кодека могут осуществлять адаптацию с другими интервалами, например после преобразования каждого блока.
В иллюстративных кодере и декодере процесс адаптации 900 обновляет значение k. Если количество ненулевых нормализованных коэффициентов слишком велико, то k повышается, в результате чего это число имеет тенденцию к снижению в будущих блоках. Если количество ненулевых нормализованных коэффициентов слишком мало, то k понижается в ожидании, что будущие блоки создадут больше ненулевых нормализованных коэффициентов, поскольку размер контейнера N меньше. Иллюстративный процесс адаптации ограничивает значение k в пределах множества чисел {0, 1,..., 16}, но альтернативные реализации могут использовать другие диапазоны значений k. При каждом обновлении адаптации кодер и декодер увеличивают, уменьшают или оставляют значение k неизменным. Иллюстративные кодер и декодер увеличивают или уменьшают k на единицу, но альтернативные реализации могут использовать другие размеры шага.
Процесс адаптации 900 в иллюстративных кодере и декодере дополнительно использует внутренний параметр модели или переменную состояния (M) для управления обновлением параметра группирования k с эффектом гистерезиса. Этот параметр модели обеспечивает запаздывание перед обновлением параметра группирования k во избежание быстрых флуктуаций параметра группирования. Параметр модели в иллюстративном процессе адаптации имеет 16 фиксированных целочисленных значений от -8 до +8.
На фиг.9 показан иллюстративный процесс адаптации 900. Этот иллюстративный процесс адаптации дополнительно детализирован в псевдокоде, представленном на фиг.10 и 11. Как указано на этапах 910, 990, процесс адаптации в иллюстративных кодере и декодере осуществляется отдельно в отношении каждой полосы преобразования, представленной в сжатом битовом потоке, включая полосу яркости и полосы цветности, AC и DC коэффициенты и т.д. Альтернативные кодеки могут отличаться количеством полос преобразования и дополнительно могут применять адаптацию к полосам преобразования по отдельности или совместно.
На этапе 920 процесс адаптации подсчитывает количество ненулевых нормализованных коэффициентов полосы преобразования в непосредственно предшествующем кодированном/декодированном макроблоке. На этапе 930 этот необработанный счетчик нормализуется так, чтобы он отражал количество ненулевых коэффициентов, приведенное к целочисленному виду, в области заданного размера. Затем процесс адаптации вычисляет (этап 940) отклонение счетчика от нужной модели (т.е. "зоны наилучшего восприятия", где четверть коэффициентов не равна нулю). Например, макроблок AC коэффициентов в иллюстративном кодере, показанном на фиг.4, имеет 240 коэффициентов. Согласно нужной модели, 70 из 240 коэффициентов не равно нулю. Отклонение дополнительно масштабируется, сравнивается с порогом и используется для обновления внутреннего параметра модели.
На следующих этапах 960, 965, 970, 975 процесс адаптации адаптирует значение k согласно любому изменению внутреннего параметра модели. Если параметр модели меньше отрицательного порога, значение k уменьшается (в допустимых пределах). Эта адаптация порождает больше ненулевых коэффициентов. С другой стороны, если параметр модели превышает положительный порог, значение k увеличивается (в допустимых пределах). Такая адаптация порождает меньше ненулевых коэффициентов. В противном случае значение k остается неизменным.
Опять же, как указано на этапах 910, 980, процесс адаптации повторяется отдельно для каждого канала и поддиапазона данных, например отдельно для каналов цветности и яркости.
Иллюстративный процесс адаптации 900 дополнительно детализирован в псевдокоде 1000, показанном на фиг.10 и 11.
3. Вычислительная среда
Вышеописанные кодер 400 (фиг.4) и декодер 500 (фиг.5) и методы адаптивного кодирования/декодирования коэффициентов с широким диапазоном можно осуществлять на самых разнообразных устройствах, в которых осуществляется обработка цифрового медиасигнала, включая, помимо прочего, компьютеры; оборудование для записи, передачи и приема изображений и видео; портативные видеопроигрыватели; оборудование для видеоконференций; и т.д. Методы кодирования цифрового медиасигнала можно реализовать в электронном оборудовании, а также в программном обеспечении обработки цифрового медиасигнала, выполняющемся на компьютере или в другой вычислительной среде, например, показанной на фиг.12.
На фиг.12 показан обобщенный пример подходящей вычислительной среды (1200), в которой можно реализовать описанные варианты осуществления. Вычислительная среда (1200) не призвана налагать каких-либо ограничений на сферу применимости или функциональные возможности изобретения, так как настоящее изобретение можно реализовать в различных вычислительных средах общего или специального назначения.
Согласно фиг.12 вычислительная среда (1200) включает в себя, по меньшей мере, один процессор (1210) и память (1220). На фиг.12 эта наиболее базовая конфигурация (1230) ограничена пунктирной линией. Процессор (1210) выполняет компьютерно-выполняемые команды и может представлять собой реальный или виртуальный процессор. В многопроцессорной системе несколько процессоров выполняют компьютерно-выполняемые команды для повышения вычислительной мощности. Память (1220) может представлять собой энергозависимую память (например, регистры, кэш, ОЗУ), энергонезависимую память (например, ПЗУ, ЭСППЗУ, флэш-память и т.д.) или какую-либо их комбинацию. В памяти (1220) хранится программное обеспечение (1280), реализующее описанные кодер/декодер и способы кодирования/декодирования коэффициентов с широким диапазоном.
Вычислительная среда может иметь дополнительные особенности. Например, вычислительная среда (1200) включает в себя память (1240), одно или несколько устройств ввода (1250), одно или несколько устройств вывода (1260) и одно или несколько коммуникационных соединений (1270). Механизм внутреннего соединения (не показан), например шина, контроллер или сеть, соединяет между собой компоненты вычислительной среды (1200). Обычно программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, выполняющегося в вычислительной среде (1200), и координирует действия компонентов вычислительной среды (1200).
Память (1240) может быть сменной или стационарной и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, CD-RW, DVD или любой другой носитель, который можно использовать для хранения информации и к которому можно осуществлять доступ в вычислительной среде (1200). В памяти (1240) хранятся команды программного обеспечения (1280), реализующие описанные кодер/декодер и методы кодирования/декодирования коэффициентов с широким диапазоном.
Устройство(а) ввода (1250) может/могут представлять собой устройства ручного ввода, например клавиатуру, мышь, перо или шаровой манипулятор, устройство речевого ввода, сканирующее устройство или другое устройство, которое обеспечивает ввод в вычислительную среду (1200). Для аудиосигнала устройство(а) ввода (1250) может/могут представлять собой звуковую карту или аналогичное устройство, которое принимает аудиоввод в аналоговой или цифровой форме, или устройство чтения CD-ROM, которое выдает дискретизированный аудиосигнал в вычислительную среду. Устройство(а) вывода (1260) может/могут представлять собой дисплей, принтер, громкоговоритель, устройство записи CD или другое устройство, которое обеспечивает вывод из вычислительной среды (1200).
Коммуникационное(ые) соединение(я) (1270) обеспечивают связь по среде связи с другой вычислительной сущностью. Среда связи переносит информацию, например компьютерно-выполняемые команды, сжатую аудио или видео информацию или другие данные в сигнале, модулированном данными. Сигнал, модулированный данными, - это сигнал, одна или несколько характеристик которого изменяются таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные или беспроводные методы, реализуемые посредством электрического, оптического, РЧ, инфракрасного, акустического или иного носителя.
Способы обработки цифрового медиасигнала можно описывать в общем контексте компьютерно-считываемых носителей. Компьютерно-считываемые носители представляют собой любые доступные носители, к которым можно осуществлять доступ в вычислительной среде. В порядке примера, но не ограничения, в вычислительной среде (1200) компьютерно-считываемые носители включают в себя запоминающее устройство (1220), память (1240), среды связи и комбинации вышеперечисленных примеров.
Способы обработки цифрового медиасигнала можно описывать в общем контексте компьютерно-выполняемых команд, например, входящих в состав программных модулей, выполняемых в вычислительной среде на реальном или виртуальном процессоре. В общем случае программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Функциональные возможности программных модулей могут объединяться или разделяться между программными модулями, что описано в различных вариантах осуществления. Компьютерно-выполняемые команды для программных модулей могут выполняться в локальной или распределенной вычислительной среде.
В целях представления в подробном описании используются такие термины, как “определяет”, “генерирует”, “регулирует” и “применяет”, для описания компьютерных операций в вычислительной среде. Эти термины являются абстракциями высокого уровня для операций, осуществляемых компьютером, и их не следует путать с действиями, производимыми человеком. Фактические компьютерные операции, соответствующие этим терминам, варьируются в зависимости от реализации.
В виду большого количества возможных вариаций описанного здесь изобретения в качестве изобретения заявлены все подобные варианты осуществления в той мере, в какой они отвечают объему нижеследующей формулы изобретения и ее эквивалентов.