Инициализация контекста при энтропийном кодировании
Иллюстрации
Показать всеИзобретение относится к технологиям энтропийного декодирования/кодирования видеоданных. Техническим результатом является улучшение эффективности декодирования/кодирования видеоданных за счет оптимизации инициализированного состояния вероятности для каждого контекста. Предложен декодер для декодирования видео из потока данных, в которой элементы синтаксиса кодируются с использованием бинаризаций элементов синтаксиса. Декодер включает в себя энтропийный декодер, сконфигурированный с возможностью извлекать число бинов бинаризаций из потока данных с использованием двоичного энтропийного декодирования, посредством выбора контекста из числа различных контекстов и обновления состояний вероятности, ассоциированных с различными контекстами, в зависимости от ранее декодированных частей потока данных. Декодер также содержит модуль преобразования из символьной формы, сконфигурированный с возможностью осуществлять дебинаризацию элементов синтаксиса, чтобы получать целочисленные значения элементов синтаксиса. 6 н. и 28 з.п. ф-лы, 18 ил., 12 табл.
Реферат
Настоящее изобретение относится к принципу энтропийного кодирования для кодирования видеоданных.
В данной области техники известно множество видеокодеков. В общем, эти кодеки уменьшают объем данных, необходимый для того, чтобы представлять видеоконтент, т.е. они сжимают данные. При энтропийном кодировании важно кодировать символы с использованием оценки вероятности, которая максимально близко соответствует фактической статистике по символам. Оценка вероятности ассоциирует значение вероятности с каждым возможным значением, которое могут допускать символы, чтобы кодировать. В случае двоичного энтропийного кодирования, например, символы имеют двоичную природу, и существуют всего два таких возможных значения. В случае кодирования видео символы, которые должны быть кодированы, принадлежат различным элементам синтаксиса, которые удовлетворяют различным задачам, чтобы описывать видеоконтент: предусмотрены разности векторов движения, режимы кодирования, уровни коэффициентов преобразования, представляющие остаток прогнозирования, и т.д. Прежде всего, все эти элементы синтаксиса имеют различную область возможных значений, и даже те, которые задаются в идентичной области возможных значений, с наибольшей вероятностью демонстрируют различную частотную гистограмму в этой области возможных значений. Соответственно, символы/бины из строк символов/строк бинов для преобразования в символьную форму/бинаризации этих элементов синтаксиса также демонстрируют различную статистику относительно распределения вероятностей в символьном алфавите. Соответственно, используется контекстно-адаптивное энтропийное кодирование: сначала предоставляются различные контексты, причем каждый контекст ассоциирован с различной оценкой вероятности. Соответственно, целесообразно, например, назначать бины различных элементов синтаксиса с различными контекстами. Даже пространственные взаимосвязи между бинами/символами элементов синтаксиса относительно соседних частей изображения видео могут быть использованы для того, чтобы выбирать между различными предоставленными контекстами. Посредством этого показателя можно классифицировать бины/символы на группы, статистика по символам которых изменяется аналогично для различного видеоконтента. Помимо этого, тем не менее, оценки вероятности, ассоциированные с этими контекстами, непрерывно адаптируются к фактической статистике по символам в ходе кодирования.
Из вышеприведенного описания напрямую следует то, что важно тщательно разрабатывать контексты и инициализировать оценки вероятности контекстов надлежащим образом. Например, если число контекстов является слишком высоким, адаптация оценок вероятности завершается неудачно вследствие слишком низкой частоты символов в отдельном контексте. С другой стороны, если число контекстов является слишком низким, символы, собранные в отдельных контекстах, фактически имеют различную статистику, и оценка вероятности не может близко аппроксимировать фактическую статистику по символам всех этих символов в соответствующем контексте. Что касается инициализации оценки вероятности, преимущество для нее может быть получено из выполнения некоторой фазы обучения, в которой репрезентативное смешение видеоконтента подвергается кодированию, чтобы изучать статистику по выборкам (элементам дискретизации) элементов синтаксиса. В этом случае в H.264 используется, например, то, что статистика по символам символов различных контекстов H.264 частично показывает зависимость от параметра QP квантования, который кодер выбирает для отдельных слайсов видео. Соответственно, в H.264 использована зависимая от параметров квантования инициализация оценки вероятности. В частности, кодек H.264 задает пару значений для каждого контекста, а именно, зависимый от параметров линейного квантования фактор, т.е. наклон, а также значение смещения, т.е. значение независимой от параметров квантования инициализации. Оба значения заданы в 8 битах.
Имеется постоянная потребность дополнительно повышать эффективность кодирования при кодировании видео, и, соответственно, должно быть предпочтительным, если вышеуказанное контекстно-адаптивное двоичное энтропийное кодирование может быть дополнительно улучшено с точки зрения эффективности, т.е. с точки зрения компромисса между коэффициентом сжатия, с одной стороны, и сложностью реализации, с другой стороны.
Соответственно, цель настоящего изобретения заключается в том, чтобы предоставлять такой принцип кодирования.
Это цель достигается посредством предмета изобретения в независимых пунктах формулы изобретения, прилагаемой к данному документу.
Базовые новшества настоящего изобретения вытекают из обнаружения авторов изобретения того, что точность, при которой вышеобозначенный наклон и смещение при контекстно-адаптивном двоичном энтропийном кодировании не должны быть слишком высокими, с тем, чтобы не допускать, что любая фаза обучения, в которой анализируется репрезентативное смешение видеоконтента для того, чтобы извлекать пары значений наклона и смещения для отдельного контекста, останавливается на оптимизированных значениях, которые фактически более близко представляют смешение фактически проанализированного видеоконтента, чем репрезентативные значения статистической совокупности видео. Соответственно, авторы настоящего изобретения выявили, что предпочтительно снижать точность для предоставления значений наклона и смещения для инициализации оценки вероятности контекстов. Авторы изобретения выяснили, например, что это уменьшение не только приводит к уменьшению требований к запоминающему устройству, налагаемых на видеокодеры и декодеры для сохранения пар наклона и смещения для каждого контекста, но также и к небольшому повышению эффективности кодирования при тестировании эффективности кодирования в рабочих условиях.
Предпочтительные варианты осуществления настоящей заявки описываются ниже со ссылкой на чертежи, на которых:
фиг.1 показывает блок-схему кодера согласно варианту осуществления;
фиг.2a-2c схематично показывают различные подразделения массива выборок (элементов дискретизации), такого как изображение, на блоки;
фиг.3 показывает блок-схему декодера согласно варианту осуществления;
фиг.4 подробнее показывает блок-схему кодера согласно варианту осуществления;
фиг.5 подробнее показывает блок-схему декодера согласно варианту осуществления;
фиг.6 схематично иллюстрирует преобразование блока из пространственной области в спектральную область, результирующий блок преобразования и его повторное преобразование;
фиг.7 показывает блок-схему кодера согласно варианту осуществления;
фиг.8 показывает блок-схему декодера, подходящего для декодирования потока битов, сформированного посредством кодера по фиг.8, согласно варианту осуществления;
фиг.9 показывает принципиальную схему, иллюстрирующую пакет данных с мультиплексированными частичными потоками битов согласно варианту осуществления;
фиг.10 показывает принципиальную схему, иллюстрирующую пакет данных с альтернативной сегментацией с использованием сегментов фиксированного размера согласно дополнительному варианту осуществления;
фиг.11 показывает декодер, поддерживающий переключение режимов согласно варианту осуществления;
фиг.12 показывает декодер, поддерживающий переключение режимов согласно дополнительному варианту осуществления;
фиг.13 показывает кодер, соответствующий декодеру по фиг.11 согласно варианту осуществления;
фиг.14 показывает кодер, соответствующий декодеру по фиг.12 согласно варианту осуществления;
фиг.15 показывает преобразование pStateCtx и fullCtxState/256;
фиг.16 показывает декодер согласно варианту осуществления настоящего изобретения; и
фиг.17 показывает кодер согласно варианту осуществления настоящего изобретения.
Следует отметить, что в ходе описания чертежей элементы, имеющиеся на нескольких из этих чертежей, указываются с помощью идентичной ссылки с номером на каждом из этих чертежей, и повторное описание этих элементов в отношении функциональности исключается во избежание необязательных повторений. Тем не менее, функциональности и описания, предоставленные в отношении одного чертежа, также должны применяться к другим чертежам, если иное не указано явно.
Далее, сначала описываются варианты осуществления общего принципа кодирования видео относительно фиг.1-17. Фиг.1-6 относятся к части видеокодека, работающей на уровне синтаксиса. Следующие фиг.8-17 относятся к вариантам осуществления для части кода, связанной с преобразованием потока элементов синтаксиса в поток данных, и наоборот. Затем, конкретные аспекты и варианты осуществления настоящего изобретения описываются в форме возможных реализаций общего принципа, приведенных относительно фиг.1-17.
Фиг.1 показывает пример для кодера 10, в котором могут быть реализованы аспекты настоящей заявки.
Кодер кодирует массив информационных выборок 20 в поток данных. Массив информационных выборок может представлять информационные выборки, соответствующие, например, значениям яркости, значениям цвета, значениям яркости, значениям цветности и т.п. Тем не менее, информационные выборки также могут быть значениями глубины в случае, если массив 20 выборок представляет собой карту глубины, сформированную, например, посредством времени светочувствительного датчика и т.п.
Кодер 10 является кодером на основе блоков. Иными словами, кодер 10 кодирует массив 20 выборок в поток 30 данных в единицах блоков 40. Кодирование в единицах блоков 40 не обязательно означает, что кодер 10 кодирует эти блоки 40 полностью независимо друг от друга. Наоборот, кодер 10 может использовать восстановление ранее кодированных блоков, чтобы экстраполировать или внутренне прогнозировать оставшиеся блоки, и может использовать степень разбиения блоков для задания параметров кодирования, т.е. для задания способа, которым кодируется каждая область массива выборок, соответствующая надлежащему блоку.
Дополнительно, кодер 10 является кодером с преобразованием. Иными словами, кодер 10 кодирует блоки 40 посредством использования преобразования, чтобы переводить информационные выборки в каждом блоке 40 из пространственной области в спектральную область. Может использоваться двумерное преобразование, к примеру, DCT FFT и т.п. Предпочтительно, блоки 40 имеют квадратную форму или прямоугольную форму.
Подразделение массива 20 выборок на блоки 40, показанные на фиг.1, служит просто в качестве иллюстрации. Фиг.1 показывает массив 20 выборок как подразделенный на регулярную двумерную компоновку квадратных или прямоугольных блоков 40, которые примыкают друг к другу неперекрывающимся способом. Размер блоков 40 может быть предварительно определен. Иными словами, кодер 10 может не передавать информацию относительно размера блока блоков 40 в потоке 30 данных стороне декодирования. Например, декодер может ожидать предварительно определенный размер блока.
Тем не менее, возможно несколько альтернатив. Например, блоки могут перекрывать друг друга. Тем не менее, перекрытие может ограничиваться до такой степени, что каждый блок имеет часть, не перекрывающуюся посредством соседних блоков, или до такой степени, что каждая выборка блоков перекрывается максимум посредством одного блока из соседних блоков, размещаемых рядом с текущим блоком вдоль предварительно определенного направления. Второе означает, что левый и правый соседние блоки могут перекрывать текущий блок таким образом, что они полностью охватывают текущий блок, но они могут не перекрывать друг друга, и то же применимо к соседним узлам в вертикальном и диагональном направлении.
В качестве дополнительной альтернативы, подразделение массива 20 выборок на блоки 40 может быть адаптировано к контенту массива 20 выборок посредством кодера 10, при этом информация подразделения относительно используемого подразделения передается стороне декодера через поток 30 битов.
Фиг.2a-2c показывают различные примеры для подразделения массива 20 выборок на блоки 40. Фиг.2a показывает подразделение на основе дерева квадрантов массива 20 выборок на блоки 40 различных размеров, при этом репрезентативные блоки указываются в 40a, 40b, 40c и 40d с увеличивающимся размером. В соответствии с подразделением по фиг.2a массив 20 выборок сначала разделяется на регулярную двумерную компоновку древовидных блоков 40d, которые, в свою очередь, имеют ассоциированную отдельную информацию подразделения, согласно которой определенный древовидный блок 40d дополнительно может подразделяться согласно структуре в виде дерева квадрантов или нет. Древовидный блок слева от блока 40d, в качестве примера, подразделяется на меньшие блоки в соответствии со структурой в виде дерева квадрантов. Кодер 10 может выполнять одно двумерное преобразование в отношении каждого из блоков, показанных с помощью сплошных и пунктирных линий на фиг.2a. Другими словами, кодер 10 может преобразовывать массив 20 в единицах подразделения на блоки.
Вместо подразделения на основе дерева квадрантов может быть использовано более общее подразделение на основе множественного дерева, и число дочерних узлов в расчете на уровень иерархии может отличаться между различными уровнями иерархии.
Фиг.2b показывает другой пример для подразделения. В соответствии с фиг.2b массив 20 выборок сначала разделяется на макроблоки 40b, размещаемые в регулярной двумерной компоновке неперекрывающимся взаимно примыкающим способом, при этом каждый макроблок 40b имеет ассоциированную информацию подразделения, согласно которой макроблок не подразделяется, либо если подразделяется, подразделяется регулярным двумерным способом на субблоки одинакового размера таким образом, чтобы достигать различных степеней разбиения подразделения для различных макроблоков. Результатом является подразделение массива 20 выборок на блоки 40 различного размера, при этом репрезентативные элементы различных размеров указываются как 40a, 40b и 40a′. Как показано на фиг.2a, кодер 10 выполняет двумерное преобразование в отношении каждого из блоков, показанных на фиг.2b с помощью сплошных и пунктирных линий. Фиг.2c поясняется ниже.
Фиг.3 показывает возможность декодера 50 декодировать поток 30 данных, сформированный посредством кодера 10, чтобы восстанавливать восстановленную версию 60 массива 20 выборок. Декодер 50 извлекает из потока 30 данных блок коэффициентов преобразования для каждого из блоков 40 и восстанавливает восстановленную версию 60 посредством выполнения обратного преобразования в отношении каждого из блоков коэффициентов преобразования.
Кодер 10 и декодер 50 могут быть сконфигурированы с возможностью осуществлять энтропийное кодирование/декодирование, чтобы вставлять информацию относительно блоков коэффициентов преобразования и извлекать эту информацию из потока данных, соответственно. Ниже описываются подробности в этом отношении в соответствии с различными вариантами осуществления. Следует отметить, что поток 30 данных не обязательно содержит информацию относительно блоков коэффициентов преобразования для всех блоков 40 массива 20 выборок. Наоборот, поднабор блоков 40 может быть кодирован в поток 30 битов другим способом. Например, кодер 10 может решать отказываться от вставки блока коэффициентов преобразования для определенного блока блоков 40 со вставкой, вместо этого, в поток 30 битов альтернативных параметров кодирования, которые позволяют декодеру 50 прогнозировать или иным образом заполнять соответствующий блок в восстановленной версии 60. Например, кодер 10 может выполнять анализ текстуры, чтобы находить блоки в массиве 20 выборок, которые могут быть заполнены на стороне декодера посредством декодера посредством синтеза текстуры, и указывать это в потоке битов, соответственно.
Как пояснено относительно следующих чертежей, блоки коэффициентов преобразования не обязательно представляют представление в спектральной области исходных информационных выборок соответствующего блока 40 массива 20 выборок. Наоборот, такой блок коэффициентов преобразования может представлять представление в спектральной области остатка прогнозирования соответствующего блока 40. Фиг.4 показывает вариант осуществления для такого кодера. Кодер по фиг.4 содержит каскад 100 преобразования, энтропийный кодер 102, каскад 104 обратного преобразования, модуль 106 прогнозирования и модуль 108 вычитания, а также сумматор 110. Модуль 108 вычитания, каскад 100 преобразования и энтропийный кодер 102 последовательно соединяются в упомянутом порядке между входом 112 и выходом 114 кодера по фиг.4. Каскад 104 обратного преобразования, сумматор 110 и модуль 106 прогнозирования соединяются в упомянутом порядке между выходом каскада 100 преобразования и инвертирующим входом модуля 108 вычитания, при этом выход модуля 106 прогнозирования также соединяется с дополнительным входом сумматора 110.
Кодер по фиг.4 представляет собой прогнозирующий блочный кодер на основе преобразования. Иными словами, блоки массива 20 выборок, поступающие на вход 112, прогнозируются из ранее кодированных и восстановленных частей идентичного массива 20 выборок или ранее кодированных и восстановленных других массивов выборок, которые могут предшествовать или следовать после текущего массива 20 выборок во времени представления. Прогнозирование выполняется посредством модуля 106 прогнозирования. Модуль 108 вычитания вычитает прогнозирование из такого исходного блока, и каскад 100 преобразования выполняет двумерное преобразование для остатков прогнозирования. Непосредственно двумерное преобразование или последующий показатель в каскаде 100 преобразования может приводить к квантованию коэффициентов преобразования в блоках коэффициентов преобразования. Блоки квантованных коэффициентов преобразования кодируются без потерь, например, посредством энтропийного кодирования в энтропийном кодере 102, при этом результирующий поток данных выводится на выходе 114. Каскад 104 обратного преобразования восстанавливает квантованный остаток, и сумматор 110, в свою очередь, комбинирует восстановленный остаток с соответствующим прогнозированием, чтобы получать восстановленные информационные выборки, на основе которых модуль 106 прогнозирования может прогнозировать вышеуказанные текущие кодированные прогнозные блоки. Модуль 106 прогнозирования может использовать различные режимы прогнозирования, к примеру, режимы внутреннего прогнозирования и режимы взаимного прогнозирования, чтобы прогнозировать блоки, и параметры прогнозирования перенаправляются в энтропийный кодер 102 для вставки в поток данных. Для каждого взаимно прогнозированного прогнозного блока соответствующие данные движения вставляются в поток битов через энтропийный кодер 114, чтобы позволять стороне декодирования восстанавливать прогнозирование. Данные движения для прогнозного блока изображения могут заключать в себе часть синтаксиса, включающую в себя элемент синтаксиса, представляющий разность векторов движения, дифференциально кодирующую вектор движения для текущего прогнозного блока относительно извлекаемого предиктора вектора движения, например, посредством предписанного способа из векторов движения соседних уже кодированных прогнозных блоков.
Иными словами, в соответствии с вариантом осуществления по фиг.4 блоки коэффициентов преобразования представляют спектральное представление остатка массива выборок, а не его фактические информационные выборки. Иными словами, в соответствии с вариантом осуществления по фиг.4 последовательность элементов синтаксиса может поступать в энтропийный кодер 102 для энтропийного кодирования в поток 114 данных. Последовательность элементов синтаксиса может содержать элементы синтаксиса разности векторов движения для блоков взаимного прогнозирования и элементы синтаксиса относительно карты значимости, указывающей позиции значимых уровней коэффициентов преобразования, а также элементы синтаксиса, задающие сами значимые уровни коэффициентов преобразования для блоков преобразования.
Следует отметить, что предусмотрено несколько альтернатив для варианта осуществления по фиг.4, при этом некоторые из них описаны во вводной части подробного описания, причем данное описание включается в описание фиг.4.
Фиг.5 показывает декодер, который в состоянии декодировать поток данных, сформированный посредством кодера по фиг.4. Декодер по фиг.5 содержит энтропийный декодер 150, каскад 152 обратного преобразования, сумматор 154 и модуль 156 прогнозирования. Энтропийный декодер 150, каскад 152 обратного преобразования и сумматор 154 последовательно соединяются между входом 158 и выходом 160 декодера по фиг.5 в упомянутом порядке. Дополнительный выход энтропийного декодера 150 соединяется с модулем 156 прогнозирования, который, в свою очередь, соединяется между выходом сумматора 154 и его дополнительным входом. Энтропийный декодер 150 извлекает из потока данных, поступающего в декодер по фиг.5 на входе 158, блоки коэффициентов преобразования, при этом обратное преобразование применяется к блокам коэффициентов преобразования в каскаде 152 с тем, чтобы получать остаточный сигнал. Остаточный сигнал комбинируется с прогнозированием из модуля 156 прогнозирования в сумматоре 154 таким образом, чтобы получать восстановленный блок восстановленной версии массива выборок на выходе 160. На основе восстановленных версий модуль 156 прогнозирования формирует прогнозирования, тем самым перекомпоновывая прогнозирования, выполняемые посредством модуля 106 прогнозирования на стороне кодера. Чтобы получать прогнозирования, идентичные прогнозированиям, используемым на стороне кодера, модуль 156 прогнозирования использует параметры прогнозирования, которые энтропийный декодер 150 также получает из потока данных на входе 158.
Следует отметить, что в вышеописанных вариантах осуществления пространственная степень разбиения, с которой выполняются прогнозирование и преобразование остатка, не должна быть равной друг другу. Это показано на фиг.2C. Этот чертеж показывает подразделение для прогнозных блоков степени разбиения прогнозирования с помощью сплошных линий и степени разбиения остатков с помощью пунктирных линий. Как можно видеть, подразделения могут быть выбраны посредством кодера независимо друг от друга. Если точнее, синтаксис потоков данных может обеспечивать возможность задания подразделения остатков независимо от подразделения прогнозирования. Альтернативно, подразделение остатков может быть расширением подразделения прогнозирования таким образом, что каждый остаточный блок либо равен, либо является надлежащим поднабором прогнозного блока. Это показывается на фиг.2a и фиг.2b, например, на которых также степень разбиения прогнозирования показывается с помощью сплошных линий, а степень разбиения остатков - с помощью пунктирных линий. Иными словами, на фиг.2a-2c все блоки, имеющие ассоциированную ссылку с номером, являются остаточными блоками, для которых выполняется одно двумерное преобразование, в то время как большие блоки со сплошными линиями, охватывающие блоки 40a с пунктирными линиями, например, являются прогнозными блоками, для которых задание параметров прогнозирования выполняется по отдельности.
Вышеописанные варианты осуществления имеют общее то, что блок (остаточных или исходных) выборок должен быть преобразован на стороне кодера в блок коэффициентов преобразования, который, в свою очередь, должен быть обратно преобразован в восстановленный блок выборок на стороне декодера. Это проиллюстрировано на фиг.6. Фиг.6 показывает блок выборок 200. В случае фиг.6 этот блок 200 в качестве примера является квадратным и имеет размер в 4×4 выборки 202. Выборки 202 регулярно упорядочены вдоль горизонтального направления x и вертикального направления y. Посредством вышеуказанного двумерного преобразования T блок 200 преобразуется в спектральную область, а именно, в блок 204 коэффициентов 206 преобразования, причем блок 204 преобразования имеет размер, идентичный размеру блока 200. Иными словами, блок 204 преобразования имеет столько коэффициентов 206 преобразования, сколько блок 200 имеет выборок, как в горизонтальном направлении, так и в вертикальном направлении. Тем не менее, поскольку преобразование T является спектральным преобразованием, позиции коэффициентов 206 преобразования в блоке 204 преобразования соответствуют не пространственным позициям, а вместо этого спектральным компонентам контента блока 200. В частности, горизонтальная ось блока 204 преобразования соответствует оси, вдоль которой монотонно увеличивается спектральная частота в горизонтальном направлении, в то время как вертикальная ось соответствует оси, вдоль которой монотонно увеличивается пространственная частота в вертикальном направлении, при этом коэффициент преобразования DC-компоненты размещается в углу (здесь в качестве примера верхнем левом углу) блока 204, так что в нижнем правом углу размещается коэффициент 206 преобразования, соответствующий наибольшей частоте как в горизонтальном, так и в вертикальном направлении. При пренебрежении пространственным направлением пространственная частота, которой принадлежит определенный коэффициент 206 преобразования, в общем, увеличивается от верхнего левого угла к нижнему правому углу. Посредством обратного преобразования T-1 блок 204 преобразования заново переводится из спектральной области в пространственную область с тем, чтобы повторно получать копию 208 блока 200. В случае если квантование/потери не введены во время преобразования, восстановление является идеальным.
Как уже указано выше, на фиг.6 можно отметить, что большие размеры блоков блока 200 увеличивают спектральное разрешение результирующего спектрального представления 204. С другой стороны, шум квантования имеет тенденцию распространяться по всему блоку 208, и в силу этого резкие и очень локализованные объекты в блоках 200 имеют тенденцию приводить к отклонениям повторно преобразованного блока относительно исходного блока 200 вследствие шума квантования. Тем не менее, основное преимущество использования больших блоков заключается в том, что отношение между числом значимых, т.е. ненулевых (квантованных) коэффициентов преобразования, т.е. уровней, с одной стороны, и числом незначимых коэффициентов преобразования, с другой стороны, может быть снижено в больших блоках по сравнению с меньшими блоками, за счет этого обеспечивая более высокую эффективность кодирования. Другими словами, часто, значимые уровни коэффициентов преобразования, т.е. коэффициенты преобразования, не квантованные до нуля, разреженно распределяются по блоку 204 преобразования. Вследствие этого, в соответствии с вариантами осуществления, описанными подробнее ниже, позиции значимых уровней коэффициентов преобразования передаются в служебных сигналах в потоке данных посредством карты значимости. Отдельно от этого, значения значимого коэффициента преобразования, т.е. уровни коэффициентов преобразования в случае квантования коэффициентов преобразования, передаются в потоке данных.
Все кодеры и декодеры, описанные выше, в силу этого сконфигурированы с возможностью рассматривать определенный синтаксис элементов синтаксиса. Иными словами, вышеуказанные элементы синтаксиса, к примеру, уровни коэффициентов преобразования, элементы синтаксиса относительно карты значимости блоков преобразования, элементы синтаксиса данных движения относительно блоков взаимного прогнозирования и т.д., предположительно последовательно размещаются в потоке данных предписанным способом. Такой предписанный способ может быть представлен в форме псевдокода, как это предусмотрено, например, в стандарте H.264 или в других видеокодеках.
Иными словами, вышеприведенное описание главным образом направлено на преобразование мультимедийных данных, здесь в качестве примера видеоданных, в последовательность элементов синтаксиса в соответствии с предварительно заданной синтаксической структурой, предписывающей определенные типы элементов синтаксиса, их семантику и порядок для них. Энтропийный кодер и энтропийный декодер по фиг.4 и 5 могут быть сконфигурированы с возможностью работать и иметь такую структуру, как указано ниже. Они отвечают за выполнение преобразования между последовательностью элементов синтаксиса и потоком данных, т.е. потоком символов или битов.
Энтропийный кодер согласно варианту осуществления проиллюстрирован на фиг.7. Кодер преобразует без потерь поток элементов 301 синтаксиса в набор из двух или более частичных потоков 312 битов.
В предпочтительном варианте осуществления изобретения каждый элемент 301 синтаксиса ассоциирован с категорией набора из одной или более категорий, т.е. с типом элемента синтаксиса. В качестве примера, категории могут указывать тип элемента синтаксиса. В контексте гибридного кодирования видео отдельная категория может быть ассоциирована с режимами макроблочного кодирования, режимами блочного кодирования, индексами опорных изображений, разностями векторов движения, флагами подразделения, флагами кодированных блоков, параметрами квантования, уровнями коэффициентов преобразования и т.д. В других областях применения, таких как кодирование аудио, речи, текста, документов или общих данных, возможны различные классификации элементов синтаксиса.
В общем, каждый элемент синтаксиса может принимать значение из конечного или исчисляемого бесконечного набора значений, причем набор возможных значений элементов синтаксиса может отличаться для различных категорий элементов синтаксиса. Например, предусмотрены двоичные элементы синтаксиса, а также целочисленные элементы синтаксиса.
Для снижения сложности алгоритма кодирования и декодирования и для обеспечения общей схемы кодирования и декодирования для различных элементов синтаксиса и категорий элементов синтаксиса элементы 301 синтаксиса преобразуются в упорядоченные наборы двоичных решений, и эти двоичные решения затем обрабатываются посредством простых алгоритмов двоичного кодирования. Следовательно, модуль 302 бинаризации биективно отображает значение каждого элемента 301 синтаксиса в последовательность (строку или слово) элементов 303 выборки. Последовательность элементов 303 выборки представляет набор упорядоченных двоичных решений. Каждый элемент 303 выборки или двоичное решение может принимать одно значение из набора двух значений, например, одно из значений 0 и 1. Схема бинаризации может отличаться для различных категорий элементов синтаксиса. Схема бинаризации для конкретной категории элементов синтаксиса может зависеть от набора возможных значений элементов синтаксиса и/или других свойств элемента синтаксиса для конкретной категории.
Таблица 1 иллюстрирует три примерных схемы бинаризации для исчисляемых бесконечных наборов. Схемы бинаризации для исчисляемых бесконечных наборов также могут применяться для конечных наборов значений элементов синтаксиса. В частности, для больших конечных наборов значений элементов синтаксиса неэффективность (возникающая в результате неиспользуемых последовательностей бинов) может быть пренебрежимо малой, но универсальность таких схем бинаризации предоставляет преимущество с точки зрения сложности и требований к запоминающему устройству. Для небольших конечных наборов значений элементов синтаксиса зачастую предпочтительно (с точки зрения эффективности кодирования) адаптировать схему бинаризации к числу возможных значений символов.
Таблица 2 иллюстрирует три примерных схемы бинаризации для конечных наборов из 8 значений. Схемы бинаризации для конечных наборов могут извлекаться из универсальных схем бинаризации для исчисляемых бесконечных наборов посредством модификации некоторых последовательностей бинов таким образом, что конечные наборы последовательностей бинов представляют код без избыточности (и потенциально переупорядочение последовательностей бинов). В качестве примера, схема усеченной унарной бинаризации в таблице 2 создана посредством модификации последовательности бинов для элемента 7 синтаксиса универсальной унарной бинаризации (см. таблицу 1). Усеченная и переупорядоченная экспоненциальная бинаризация Голомба порядка 0 в таблице 2 создана посредством модификации последовательности бинов для элемента 7 синтаксиса универсальной экспоненциальной бинаризации Голомба порядка 0 (см. таблицу 1) и посредством переупорядочения последовательностей бинов (усеченная последовательность бинов для символа 7 назначена символу 1). Для конечных наборов элементов синтаксиса также можно использовать схемы несистематической/неуниверсальной бинаризации, как проиллюстрировано в последнем столбце таблицы 2.
Таблица 1Примеры бинаризации для исчисляемых бесконечных наборов (или крупных конечных наборов) | |||
Значение символа | Унарная бинаризация | Экспоненциальная бинаризация Голомба порядка 0 | Экспоненциальная бинаризация Голомба порядка 1 |
0 | 1 | 1 | 10 |
1 | 01 | 010 | 11 |
2 | 001 | 011 | 0100 |
3 | 0001 | 0010 0 | 0101 |
4 | 0000 1 | 0010 1 | 0110 |
5 | 0000 01 | 0011 0 | 0111 |
6 | 0000 001 | 0011 1 | 0010 00 |
7 | 0000 0001 | 0001 000 | 0010 01 |
... | ... | ... | ... |
Таблица 2Примеры бинаризации для конечных наборов | |||
Значение символа | Усеченная унарная бинаризация | Усеченная и переупорядоченная экспоненциальная бинаризация Голомба порядка 0 | Несистематическая бинаризация |
0 | 1 | 1 | 000 |
1 | 01 | 000 | 001 |
2 | 001 | 010 | 01 |
3 | 0001 | 011 | 1000 |
4 | 0000 1 | 0010 0 | 1001 |
5 | 0000 01 | 0010 1 | 1010 |
6 | 0000 001 | 0011 0 | 1011 0 |
7 | 0000 000 | 0011 1 | 1011 1 |
Каждый элемент 303 выборки последовательности бинов, созданных посредством модуля 302 бинаризации, подается в модуль 304 назначения параметров в последовательном порядке. Модуль назначения параметров назначает набор из одного или более параметров для каждого элемента 303 выборки и выводит бин с ассоциированным набором параметров 305. Набор параметров определяется совершенно идентично в кодере и декодере. Набор параметров может состоять из одного или более следующих параметров.
В частности, модуль 304 назначения параметров может быть сконфигурирован с возможностью назначать текущему элементу 303 выборки контекстную модель. Например, модуль 304 назначения параметров может выбирать одни из доступных индексов контекстов для текущего элемента 303 выборки. Доступный набор контекстов для текущего элемента 303 выборки может зависеть от типа бина, который, в свою очередь, может быть задан посредством типа/категории элемента 301 синтаксиса, частью бинаризации которого является текущий элемент 303 выборки, и позиции текущего элемента 303 выборки в более поздней бинаризации. Выбор контекста в доступном контекстном наборе может зависеть от предыдущих бинов и элементов синтаксиса, ассоциированных с ними. Каждый из этих контекстов имеет ассоциированную вероятностную модель, т.е. показатель для оценки вероятности для одного из двух возможных значений бинов для текущего бина. Вероятностная модель может, в частности, быть показателем для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина, при этом вероятностная модель дополнительно задается посредством идентификатора, указывающего оценку того, какое из двух возможных значений бинов представляет менее вероятное или более вероятное значение бина для текущего элемента 303 выборки. В случае доступности только одного контекста для текущего бина выбор контекста может не применяться. Как подробнее указано ниже, модуль 304 назначения параметров также может выполнять адаптацию вероятностных моделей для того, чтобы адаптировать вероятностные модели, ассоциированные с различными контекстами, к фактической статистике по бинам соответствую