[0001] Настоящая заявка притязает на приоритет предварительной заявки США № 61/019830, поданной 8 января 2008 г., и предварительной заявки США № 61/030454, поданной 21 февраля 2008г, включенных в настоящий документ во всей своей полноте в качестве ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Настоящая заявка относится к цифровому видеокодированию и более точно к способам квантования для процессов видеокодирования, которые поддерживают контекстно-зависимое адаптивное двоичное арифметическое кодирование (CABAC).
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть предусмотрены в широком круге устройств, включая цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют способы сжатия видеоданных, такие как MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, часть 10, усовершенствованное видеокодирование (AVC), для более эффективной передачи и приема информации цифровых видеоданных. Способы сжатия видеоданных выполняют пространственное предсказание и временное предсказание для уменьшения или удаления присущей видеопоследовательностям избыточности.
[0004] Интра-кодирование относится к пространственному предсказанию для уменьшения или удаления пространственной избыточности между видеоблоками внутри данной кодируемой единицы, которая может содержать видеокадр, сектор видеокадра, группу картинок или другие определенные единицы видеоблоков. Напротив, интер-кодирование относится к временному предсказанию для уменьшения или удаления временной избыточности между видеоблоками последовательно кодируемых единиц видеопоследовательности. Для интра-кодирования видеокодер выполняет пространственное предсказание для сжатия данных, основываясь на других данных в той же самой кодируемой единице. Для интер-кодирования видеокодер выполняет оценку перемещения и компенсацию перемещения с тем, чтобы отследить движение соответствующих видеоблоков двух или нескольких смежных кодируемых единиц.
[0005] Кодируемый видеоблок может быть представлен информацией предсказания, которая может использоваться для создания или идентификации предсказательного блока, и остаточным блоком данных, указывающим на различия между кодируемым блоком и предсказательным блоком. В случае интер-кодирования для идентификации предсказательного блока данных используется один или несколько векторов перемещения, в то время как для случая интра-кодирования для генерации предсказательного блока может использоваться режим предсказания. И интра-кодирование и интер-кодирование могут определять несколько различных режимов предсказания, которые могут определять различные размеры блоков и/или способы предсказания, используемые при кодировании. Также могут быть включены дополнительные типы синтаксических элементов в виде части кодируемых видеоданных для управления или определения используемых в процессе кодирования способов или параметров кодирования.
[0006] После кодирования предсказания на основе блоков видеокодер может применить преобразование, квантование и энтропийное кодирование для дополнительного уменьшения скорости передачи в битах, связанной с коммуникацией остаточного блока. Методы преобразования могут содержать дискретные косинусные преобразования или концептуально аналогичные процессы. В качестве альтернативы могут быть использованы вейвлет-преобразования, целочисленные преобразования или другие типы преобразований. В процессе дискретного косинусного преобразования (DCT), в качестве примера набор значений пикселей преобразуется в коэффициенты преобразования, которые могут представлять энергию значений пикселей в частотном домене. Квантование применяется к коэффициентам преобразования и, как правило, включает процесс, который ограничивает количество битов, связанных с любым заданным коэффициентом преобразования. Энтропийное кодирование содержит один или несколько процессов, которые в совокупности сжимают последовательность, квантованных коэффициентов преобразования.
[0007] Контекстно-зависимое адаптивное бинарное арифметическое кодирование (CABAC) представляет собой один из типов способа энтропийного кодирования, который в настоящее время поддерживается несколькими стандартами кодирования, такими как ITU-T H.264/MPEG4, стандарт AVC. CABAC может содержать несколько стадий, включая бинаризацию, контекстный выбор модели и бинарное арифметическое кодирование. При бинаризации любые небинарные символы отображаются в бинарную последовательность (иногда называемую бинарной строкой). При контекстном моделировании для предназначенных для кодирования элементов (например, символов) назначается модельное распределение вероятностей. Затем на следующей стадии бинарного арифметического кодирования назначенное распределение вероятностей используется для выполнения кодирования с целью генерации последовательности битов, которые формируют кодированное представление кодируемых элементов согласно назначенному модельному распределению вероятностей.
[0008] Процесс CABAC может выполнять сжатие без потерь элементов, которые определяют поток видеоданных путем знания вероятностей наличия элементов в данном контексте. CABAC обычно сжимает данные более эффективно по сравнению с другими способами энтропийного кодирования, такими как способ контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (CAVLC), но может требовать значительно более сложную обработку со стороны декодера. CABAC с установками ITU H.264/AVC более полно описан в публикации Detlev Marpe, Heiko Schwarz и Thomas Wiegand: "Context-based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", опубликованной в IEEE Translations on Circuits and Systems for Video Technology, том 13, № 7, июль 2003.
Сущность изобретения
[0009] В общем случае, настоящее раскрытие описывает способы квантования, которые могут быть использованы для квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное бинарное арифметическое кодирование (CABAC). Описанные способы могут быть частью CABAC во время процесса квантования путем выполнения и/или оценки некоторых этапов CABAC во время процесса квантования. Данные способы могут быть использованы для достижения желаемого баланса между скоростью кодирования и искажением на этапе квантования видеокодирования. Согласно данным способам можно выполнять двухпроходной процесс. При первом проходе оценивается последний ненулевой коэффициент видеоблока, например, при следующем проходе различные коэффициенты видеоблока рассматриваются как являющиеся ненулевым коэффициентом. Затем при втором проходе все коэффициенты генерируются, исходя из предположения, что оцененный последний ненулевой коэффициент фактически является последним ненулевым коэффициентом.
[0010] В одном из примеров настоящее раскрытие предоставляет способ квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает CABAC. Способ содержит оценку последнего ненулевого коэффициента видеоблока, генерацию набора квантованных коэффициентов для данного видеоблока, исходя из предположения, что данный оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом данного видеоблока.
[0011] В другом примере настоящее раскрытие предоставляет устройство, выполненное с возможностью квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает CABAC. Устройство содержит модуль квантования, который оценивает последний ненулевой коэффициент видеоблока и генерирует набор квантованных коэффициентов для данного видеоблока, исходя из предположения, что данный оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом данного видеоблока.
[0012] В другом примере настоящее раскрытие предоставляет устройство, которое выполняет квантование коэффициентов видеоблока для процесса видеокодирования, поддерживающего CABAC. Устройство содержит средство для оценки последнего ненулевого коэффициента видеоблока и средство для генерации набора квантованных коэффициентов для данного видеоблока, исходя из предположения, что данный оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом данного видеоблока.
[0013] В другом примере настоящее раскрытие предоставляет устройство, выполненное с возможностью квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает CABAC, при этом устройство содержит модуль кодирования и передатчик, модуль кодирования включает в себя модуль квантования и модуль CABAC. Модуль квантования оценивает последний ненулевой коэффициент видеоблока, генерирует набор квантованных коэффициентов для данного видеоблока, исходя из предположения, что данный оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом данного видеоблока, и осуществляет вывод набора сгенерированных квантованных коэффициентов. Модуль CABAC принимает сгенерированный набор квантованных коэффициентов, выполняет CABAC на сгенерированном наборе квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток и осуществляет вывод данного битового потока. Передатчик передает данный битовый поток.
[0014] Описанные в настоящем раскрытии способы могут быть реализованы в аппаратных средствах с помощью программного обеспечения, встроенного программного обеспечения или любой их комбинацией. При реализации с помощью программного обеспечения программное обеспечение может выполняться в одном или нескольких процессорах, таких как микропроцессор, специализированная интегральная микросхема (ASIC), программируемая вентильная матрица (FPGA), цифровой процессор сигналов (DSP). Программное обеспечение, которое выполняет данные способы, изначально может быть сохранено в читаемой компьютером среде и загружаться и выполняться в процессоре.
[0015] Следовательно, в настоящем раскрытии также рассматривается читаемая компьютером среда, содержащая инструкции, при выполнении которых устройство выполняет квантование коэффициентов видеоблока в процессе видеокодирования, который поддерживает CABAC, причем согласно инструкциям устройство оценивает последний ненулевой коэффициент видеоблока и генерирует набор квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом данного видеоблока.
[0016] Детали одного или нескольких аспектов раскрытия представлены в прилагаемых чертежах и приведенном ниже описании. Другие описанные в раскрытии особенности, задачи и преимущества данных способов станут очевидными из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0017] Фиг.1 представляет собой приведенную в качестве примера блок-схему, иллюстрирующую систему видеокодирования и видеодекодирования.
[0018] Фиг.2 представляет собой блок-схему примера видеокодера согласно настоящему раскрытию.
[0019] Фиг.3 представляет собой концептуальную блок-схему, иллюстрирующую зигзагообразное сканирование видеоблока из 4-на-4 элементов.
[0020] Фиг.4 представляет собой блок-схему, иллюстрирующую пример видеодекодера согласно настоящему раскрытию.
[0021] Фиг.5-10 представляют собой блок-схемы последовательности операций, иллюстрирующие способы согласно настоящему раскрытию.
Подробное описание изобретения
[0022] Фиг.1 представляет собой блок-схему, иллюстрирующую приведенную в качестве примера систему 10 видеокодирования и видеодекодирования, которая может реализовать способы по настоящему раскрытию. Как показано на фиг.1, система 10 включает в себя устройство-источник 12, которое передает кодированные видеоданные в целевое устройство 16 по каналу 15 связи. Устройство-источник 12 и целевое устройство 16 содержат любое из широкого круга устройств. В некоторых случаях устройство-источник 12 и целевое устройство 16 содержат устройства беспроводной связи, такие как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любые беспроводные устройства, которые могут осуществлять обмен видеоинформацией по каналу 15 связи, в данном случае канал 15 связи является беспроводным. Однако способы по настоящему раскрытию, которые относятся к квантованию, не обязательно ограничены беспроводными применениями или установками.
[0023] В примере по фиг.1 устройство-источник 12 может включать в себя источник 20 видеоданных, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Целевое устройство 16 может включать в себя приемник 26, модем 27, видеодекодер 28 и устройство 30 отображения. Согласно настоящему раскрытию видеокодер 22 устройства-источника 12 может быть выполнен с возможностью применения способов квантования, которые, как предполагается, осуществляют контекстно-зависимое адаптивное бинарное арифметическое кодирование (CABAC). В данном случае, используя устройство-источник 12, можно достичь желаемых уровней квантования и таким образом улучшить процесс кодирования.
[0024] Показанная на фиг.1 система 10 приведена только в качестве примера. Способы квантования данного раскрытия могут выполняться любым кодирующим устройством, которое поддерживает CABAC. Устройство-источник 12 является только одним из примеров такого кодирующего устройства. Способы квантования по настоящему раскрытию могут включать в себя коэффициенты квантования видеоблока для процесса видеокодирования, который поддерживает CABAC для энтропийного кодирования. В этом случае видеокодер 22 может генерировать множество наборов квантованных коэффициентов для видеоблока, причем каждый из наборов квантованных коэффициентов определяют, исходя из предположения, что один из коэффициентов видеоблока соответствует последнему ненулевому коэффициенту данного видеоблока. Последний ненулевой коэффициент может зависеть от используемого порядка сканирования, такого как зигзагообразное сканирование. Видеокодер 22 может оценивать множество затрат, связанных с кодированием видеоблока через CABAC, где оцененные затраты основаны соответственно на различных наборах квантованных коэффициентов, и может выбирать заданный один набор из наборов квантованных коэффициентов, связанных с наименьшей величиной затрат. Такой подход можно назвать однопроходным подходом постольку, поскольку оцениваемые затраты генерируются для каждого из различных наборов квантованных коэффициентов за один проход, в котором различные коэффициенты рассматриваются как являющиеся последним ненулевым коэффициентом видеоблока.
[0025] В качестве альтернативы способы квантования по настоящему раскрытию могут поддерживать двухпроходной подход. В этом случае способы могут включать оценку последнего ненулевого коэффициента видеоблока при первом проходе и затем генерацию набора квантованных коэффициентов для видеоблока во втором проходе, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока. Настоящее раскрытие предполагает оба подхода однопроходной и двухпроходной подходы. В комбинированном однопроходном подходе каждый возможный коэффициент может рассматриваться как являющийся последним ненулевым коэффициентом, и многие возможные наборы квантованных коэффициентов могут генерироваться для различных коэффициентов, являющихся последним ненулевым коэффициентом. Однако в двухпроходном подходе для оценки последнего ненулевого коэффициента используются способы оценки, и наборы квантованных коэффициентов могут генерироваться и учитываться только для одного случая, в котором оцененный последний ненулевой коэффициент фиксируется в качестве последнего ненулевого коэффициента. Комбинированный однопроходной подход может иметь больший объем вычислений, чем однопроходной подход, но в некоторых случаях может давать более точные результаты. Для уменьшения вычислительной сложности однопроходного подхода можно использовать различные дополнительные способы. Двухпроходной подход может значительно уменьшить сложность по сравнению с однопроходным подходом и во многих случаях уменьшение качества кодирования в двухпроходном подходе может быть незначительным относительно однопроходного подхода.
[0026] В общем случае, устройство-источник 12 генерирует кодированные видеоданные для передачи в целевое устройство 16. Однако в некоторых случаях устройства 12 и 16 могут включать видеокодирование и видеодекодирование компонентов. В данном случае система 10 может поддерживать однонаправленную или двунаправленную передачу видеоданных между видеоустройствами 12 и 16, например, для потоковой передачи видеоданных, воспроизведения видеоданных, широковещания видеоданных или видеотелефонии.
[0027] Источник 20 видеоданных устройства-источника 12 может включать устройство захвата видеоданных, такое как видеокамера, архив видеоданных, содержащий предварительно захваченные видеоданные, или механизм вывода видеоданных от провайдера видеоконтента. В качестве дополнительной альтернативы источник 20 видеоданных может генерировать данные на основе компьютерной графики в виде источника видеоданных или комбинацию видеоданных в реальном масштабе времени, архивированные видеоданные и генерируемые компьютером видеоданные. В некоторых случаях, если источник 20 видеоданных представляет собой видеокамеру, устройство-источник 12 и целевое устройство 16 могут формировать так называемые камерафоны или видеотелефоны. В каждом случае захваченные, предварительно захваченные или сгенерированные компьютером видеоданные могут кодироваться видеокодером 22. Затем закодированная видеоинформация может модулироваться модемом 23 согласно стандарту связи, например, такому как множественный доступ с кодовым разделением каналов (CDMA), или другому стандарту связи и передаваться в целевое устройство 16 посредством передатчика 24. Модем 23 может включать различные смесители, фильтры, амплификаторы или другие компоненты, разработанные для модуляции сигналов. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая амплификаторы, фильтры и одну или несколько антенн.
[0028] Приемник 26 целевого устройства 16 принимает информацию по каналу 15, а модем 27 демодулирует информационные сигналы. Снова процесс видеокодирования может реализовать описанные в настоящем документе способы для улучшения процессов квантования. Процесс видеодекодирования, выполняемый видеодекодером 28, может выполнять обратное квантование при восстановлении видеопоследовательности. Устройство 28 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, такое как электронно-лучевая трубка, жидкокристаллический дисплей (ЖКД, LCD), плазменный дисплей, органические светодиодный (OLED) дисплей или другой тип устройства отображения.
[0029] В примере по фиг.1 канал 15 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (РЧ, RF) спектр, или одну или несколько физических линий передач, или любую комбинацию беспроводной и проводной сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как интернет. Канал 15 связи обычно представляет любую подходящую среду связи или совокупность различных сред связи для передачи видеоданных из устройства-источника 12 в целевое устройство 16.
[0030] Видеокодер 22 и видеодекодер 28 могут работать согласно стандарту сжатия видеоданных, который поддерживает САВАС, такой как стандарт ITU-T H.264, альтернативно описываемый как MPEG-4, часть 10, усовершенствованное видеокодирование (AVC). Хотя не показано на фиг.1, в некоторых аспектах и видеокодер 22 и видеодекодер 28 могут быть объединены с аудиокодером и аудиодекодером и могут включать подходящий MUX-DEMUX модули или другие аппаратные или программные средства для управления как аудиокодированием, так и видеокодированием в общем потоке данных или для разделения потоков данных. По возможности модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU-T H.264 или другим протоколам, таким как пользовательский протокол данных (UDP).
[0031] Стандарт ITU-T H.264/MPEG-4 (AVC) был разработан экспертной группой по видеокодированию (VCEG) вместе с экспертной группой по кинематографии (MPEG) в виде продукта коллективного альянса, известного как Joint Video Team (JVT). В некоторых случаях описанные в настоящем раскрытии способы могут применяться для устройств, которые, как правило, соответствуют стандарту ITU-T H.264. Стандарт ITU-T H.264 описан в ITU-T рекомендации H.264, усовершенствованном видеокодировании для родовых аудиовизуальных служб группой изучения ITU-T и датирован мартом 2005, который в данном документе может называться стандартом Н.264 или спецификацией Н.264, или стандартом или спецификацией H.264/AVC. Joint Video Team (JVT) продолжает работу по расширению в H.264/MPEG-4 AVC.
[0032] И видеокодер 22 и видеодекодер 28 могут быть реализованы в виде одного или нескольких микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных микросхем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного средства, встроенного программного обеспечения или любой их комбинации. И видеокодер 22 и видеодекодер 28 могут быть включены в один или несколько кодеров или декодеров, или каждый из них может быть встроен в виде части комбинированного кодера/декодера (CODEC) в соответствующее мобильное устройство, устройство подписчика, широковещательного устройства, сервера или т.п.
[0033] Видеопоследовательность обычно включает серию видеокадров. Видеокодер 22 работает с видеоблоками в отдельных видеокадрах для кодирования видеоданных. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут различаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр включает серию секторов. Каждый сектор может включать серию макроблоков, которые могут быть организованы в субблоки. В качестве примера стандарт ITU-T H.264 поддерживает интрапредсказание в различных размерах блоков, таких как 16 на 16, 8 на 8 или 4 на 4 для люма компонентов и 8х8 для хрома компонентов, а также интерпредсказание в различных размерах блоков, таких как 16 на 16, 16 на 8, 8 на 16, 8 на 8, 8 на 4, 4 на 8 и 4 на 4 для люма компонентов и размеры, масштабированные соответствующим образом, для хрома компонентов. Видеоблоки могут содержать блоки данных в пикселях или блоки коэффициентов преобразования, например, после процесса преобразования, такого как дискретное косинусное преобразование или концептуально аналогичного процесса преобразования. Способы квантования по настоящему раскрытию обычно применяют для коэффициентов преобразования преобразованных видеоблоков.
[0034] Более мелкие видеоблоки могут обеспечивать лучшее разрешение и могут быть использованы для положений видеокадра, которые включают высокие уровни детализации. Обычно макроблоки (МВ) и различные субблоки можно рассматривать в качестве видеоблоков. Кроме того, сектор можно рассматривать в качестве серий видеоблоков, таких как МВ и/или субблоки. Каждый сектор может представлять собой независимо декодируемую единицу видеокадра. После предсказания преобразование может выполняться на 8х8 остаточном блоке или 4х4 остаточном блоке и дополнительное преобразование может применяться к DC коэффициентам 4х4 блоков для хрома компонентов или люма компонента, если используется режим интра_16х16 предсказания. Снова после преобразования данные все еще могут называться видеоблоками, т.е. блоками коэффициентов преобразования. Термин “коэффициент” обычно относится к коэффициентам преобразования, но в качестве альтернативы может относиться к другим типам коэффициентов или значений, таким как значения в пикселях, или другому типу коэффициентов.
[0035] После способов интра- или интер-предсказательного кодирования и преобразования (таких как 4×4 или 8×8 целочисленные преобразования, используемые в H.264/AVC или DCT дискретное косинусное преобразование) может выполняться квантование. Более подробно квантование обсуждается ниже, но обычно относится к процессу, при котором коэффициенты квантуют для возможного уменьшения количества данных, используемых для представления коэффициентов. Процесс квантования может уменьшить глубину бита, связанную с несколькими или со всеми коэффициентами. Например, во время квантования 8-битное значение может быть округлено до 7-битного значения. Способы квантования настоящего раскрытия учитывают факт выполнения САВАС.
[0036] В частности, после квантования, может выполняться энтропийное кодирование согласно методу САВАС. Настоящее раскрытие обеспечивает способы квантования коэффициентов в виде блоков способом, при котором достигается желаемый баланс между скоростью и искажением. Описанные способы реализуют оценку САВАС для улучшения квантования и достижения, например, желаемого уровня качества в заданном битовом балансе для скорости обмена данными.
[0037] Согласно способам по настоящему раскрытию видеокодер 22 может генерировать множество наборов квантованных коэффициентов для видеоблока, где каждый из наборов квантованных коэффициентов определяется, исходя из предположения, что один из коэффициентов видеоблока соответствует последнему ненулевому коэффициенту видеоблока. Видеокодер 22 может оценивать множество затрат, связанных с кодированием видеоблока через САВАС, где оцененные затраты основаны соответственно на различных наборах квантованных коэффициентов, и выбирать заданный из наборов квантованных коэффициентов, связанных с наименьшей величиной затрат. Видеокодер 22 может использовать набор квантованных коэффициентов для квантования видеоблока. Такой подход называется однопроходным подходом.
[0038] В качестве альтернативы способы квантования по настоящему раскрытию могут поддерживать двухпроходной подход. В этом случае видеокодер 22 может оценивать последний ненулевой коэффициент видеоблока при первом проходе и затем генерировать набор квантованных коэффициентов для видеоблока во втором проходе, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока. При двухпроходном подходе способы оценки используются для оценки последнего ненулевого коэффициента, и наборы квантованных коэффициентов могут рассматриваться только для случая, в котором оцененный последний ненулевой коэффициент действительно является ненулевым коэффициентом. Проход оценки разделения может исключить необходимость выполнения вычислений, связанных с наборами квантованных коэффициентов, которые не имеют корректного коэффициента в качестве последнего ненулевого коэффициента.
[0039] Фиг.2 представляет собой блок-схему, иллюстрирующую пример видеокодера 50, который содержит модуль 40 квантования со случайным искажением (RD), который выполняет квантование остаточных коэффициентов согласно настоящему раскрытию. Видеокодер 50 может соответствовать видеокодеру 22 устройства 20 или видеокодеру отличающегося устройства. Видеокодер 50 может выполнять интра- и интер-кодирование блоков внутри видеокадров. Интра-кодирование зависит от пространственного предсказания для уменьшения или удаления пространственной избыточности в видео внутри заданного видеокадра. Интер-кодирование зависит от временного предсказания для уменьшения или удаления избыточности в видео внутри смежных кадров видеопоследовательности. Для интер-кодирования видеокодер 50 выполняет оценку перемещения с тем, чтобы отслеживать движение совпадающих видеоблоков между двумя или несколькими смежными кадрами. Интра-режим (I-режим) может относиться к режиму сжатия в пространстве, а интер-режимы, такие как предсказание (Р-режим) или двунаправленный (В-режим) режим, может относиться к режимам сжатия во времени.
[0040] Как показано на Фиг.2, видеокодер 50 принимает текущий видеоблок внутри предназначенного для кодирования видеокадра. В примере на фиг.2 видеокодер 50 включает в себя модуль 32 предсказания, устройство 34 хранения референсных кадров, модуль 38 преобразования блоков, модуль 40 RD квантования, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 САВАС кодирования. Фильтр распаковки (не показан) также может быть включен в границы блокирования фильтров для удаления артефактов блочности. Видеокодер 50 также включает сумматор 48 и сумматор 51. Модуль 32 предсказания обычно представляет модуль интра-предсказания и/или модуль интер-предсказания.
[0041] Во время процесса кодирования видеокодер 50 принимает предназначенный для кодирования видеоблока, а модуль 32 предсказания выполняет способы предсказательного кодирования. Во время интер-кодирования модуль 32 предсказания сравнивает предназначенный для кодирования видеоблок с различными блоками в одном или нескольких референсных кадрах или секторах для определения предсказательного блока. Во время интра-кодирования модуль 32 предсказания генерирует предсказательный блок на основе смежных данных внутри той же самой кодируемой единицы. Модуль 32 предсказания выводит блок предсказания, а сумматор вычитает блок предсказания из предназначенного для кодирования видеоблока для генерации остаточного блока.
[0042] Для интер-кодирования модуль 32 предсказания может содержать модули оценки перемещения и компенсации перемещения, которые идентифицируют вектор перемещения, указывающий на блок предсказания, и генерируют блок предсказания на основе вектора перемещения. Обычно оценка перемещения учитывается процессом генерации вектора перемещения, который оценивает перемещение. Например, вектор перемещения может указывать на смещение предсказательного блока в предсказательном кадре относительно текущего кодируемого блока внутри текущего кадра. Компенсация перемещения обычно учитывается процессом захвата или генерации предсказательного блока на основе вектора перемещения, определенного оценкой перемещения. Как отмечалось, во время интра-кодирования модуль 32 предсказания генерирует предсказательный блок на основе смежных данных внутри той же самой кодируемой единицы. Один или несколько режимов интра-предсказания могут определять, каким образом может быть определен блок интра-предсказания.
[0043] Видеокодер 50 формирует остаточный видеоблок путем вычитания видеоблока предсказания, созданного модулем 32 предсказания из исходного кодируемого видеоблока. Сумматор 48 выполняет эту операцию вычитания. Модуль 38 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий коэффициенты остаточного блока преобразования. Модуль 38 преобразования, например, может выполнять другие преобразования, определенные стандартом Н.264, который концептуально аналогичен DCT. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазона или другие типы преобразований. В любом случае модуль 38 преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из пиксельного домена в частотный домен.
[0044] Модуль 40 RD квантования (также называемый в настоящем описании модулем 40 квантования) квантует остаточные коэффициенты квантования, чтобы дополнительно уменьшить скорость передачи битов. В частности, модуль 40 квантования выполняет один или несколько способов квантования, описанных более подробно ниже с учетом САВАС кодирования, выполняемого модулем 46 САВАС. В этом случае модуль 40 квантования может реализовывать модель случайного искажения и достигать желаемого уровня квантования, который, например, достигает желаемого количества битов для заданной скорости или баланса битов.
[0045] После квантования модуль 46 САВАС энтропийно кодирует квантованные коэффициенты преобразования согласно методу САВАС для дополнительного сжатия данных. После энтропийного кодирования модулем 46 САВАС кодированные видеоданные могут быть преобразованы в другом устройстве или преобразованы позже или удалены. Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно для восстановления остаточного блока в пиксельном домене для использования в качестве референсного блока. Сумматор 51 прибавляет восстановленный остаточный блок к блоку предсказания компенсированного перемещения, созданного модулем 36 компенсации перемещения, для создания восстановленного видеоблока для сохранения в устройстве 34 хранения референсных кадров. Восстановленный видеоблок может быть использован модулем 32 предсказания в качестве референсного блока для интер-кодирования блока в последующем видеокадре.
[0046] Ошибка предсказания E(x, y), т.е. разница между кодируемым блоком I(x, y) и блоком предсказания P(x, y) может быть представлена в виде взвешенной суммы базисных функций преобразования fy(x, y):
где x и у определяют положение заданного коэффициента в видеоблоке, а cij определяет взвешенные коэффициенты, иногда называемые коэффициентами ошибки предсказания. Преобразование обычно выполняют на основе 8x8 (N=8) или 4x4 (N=4) блоков. Веса cij, могут быть квантованы последовательно следующим образом:
Iij=Q(cij,QP)
где Iij называется квантованными коэффициентами или уровнями, QP является параметром квантования, а Q представляет собой матрицу квантования, которая определяет размер шага квантования. Операция квантования приводит к потере информации. Однако квантованный коэффициент может быть представлен небольшим количеством битов, таким образом преобразуя ширину полосы передачи, объем памяти и ресурсы для обработки. Уровень сжатия (потеря информации) обычно управляется подбором значения QP.
[0047] Квантованные коэффициенты преобразования вместе с векторами перемещения и некоторой управляющей информацией могут формировать полную кодированную последовательность элементов. Перед передачей из кодирующего устройства в декодирующее устройство все эти элементы обычно подвергают энтропийному кодированию с тем, чтобы дополнительно уменьшить количество битов, необходимое для их представления.
[0048] Со стороны декодера блок в текущем кадре получают путем сначала формирования его предсказания таким же способом, что и в кодере, и путем прибавления к предсказанию ошибки предсказания при сжатии. Ошибку предсказания при сжатии находят путем применения обратного преобразования к де-квантованным коэффициентам следующим образом:
где rij предсталяет собой деквантованные (также называемые восстановленными) коэффициенты. Коэффициенты rij могут быть вычислены путем обратного квантования:
rij=Q1(lij, QP)
Разница между восстановленным кадром R(x,y) и исходным кадром I(x,y) может быть названа ошибкой восстановления.
[0049] Традиционно квантование коэффициентов преобразования в видеокодеках, как правило, основано на квантователях с однородным восстановлением (uniform-reconstruction quantizers (URQ)). Правило классификации для квантования данных определяется кодером. Одним из примеров квантования является так называемым подходом квантования с однородным пороговым уровнем плюс мертвая зона (dead-zone plus uniform threshold quantization (DZ-UTQ)). Нижеприведенное уравнение определяет такой квантователь мертвой зоны, где f0 определяет параметр мертвой зоны с 0≤f0≤0,5:
где Iij соответствует уровню, связанному с заданным QP.
[0050] Концептуально значение восстановления rij, которое соответствует уровню Iij, может быть получено путем умножения Iij на соответствующий QP:
rij=Iij·QP
Уравнения и rij=Iij·QP представляют математически упрощенную версию того, что действительно определено для MPEG-4 AVC, поскольку с целью упрощения не учитываются различные коэффициенты масштабирования для нормализации соответствующих базисных функций.
[0051] В H.264 и MPEG-4 AVC квантование можно выполнять согласно следующему уравнению:
где Q представляет матрицу квантования, % представляет деление по модулю, и f равно 215+QP/6/3 для интра-кадров и 215+ QP/6/6 для интер-кадров. Деквантование коэффициентов может быть выполнено согласно следующему уравнению:
rij=Iij·R(QP%6,I,j), I,j=0,…,3
где R представляет матрицу декодирования. Значения, связанные с Q и R для QP%6=0,1,...,5 и могут быть вычислены заранее и сохранены.
[0052] Коэффициенты в данном блоке могут быть упорядочены (просканированы) с помощью зигзагообразного сканирования или другой последовательностью сканирования, приводящей к одномерному вектору упорядоченных коэффициентов. Сканирование, такое как зигзагообразное сканирование, также может называться преобразованием в последовательность, при которой создают одномерную последовательность коэффициентов, в отличие от двухмерного паттерна, определяемого блоком. Пример преобразования в последовательность для 4×4 блока показан на Фиг.3. Зигзагообразное сканирование обычно предполагает, что после применения двумерного (2D) преобразования, коэффициенты преобразования, обладающие наибольшей энергией (т.е. коэффициенты с более высокими значениями), соответствуют функциям низкочастотного преобразования и расположены в верхней левой части блока, как это показано на фиг.3. В данном случае в векторе коэффициентов, полученном зигзагообразным сканированием, коэффициенты с большими величинами с более высокой вероятностью будут находиться в начале одномерного вектора упорядоченных коэффициентов. После квантования большинство коэффициентов с низкой энергией может быть равно 0.
[0053] CABAC является одним из способов кодирования коэффициентов преобразования, используемых в H.264/AVC. Модуль 46 CABAC кодирования на фиг.2 может выполнять такое кодирование. В общем случае, кодирование любого символа данных, используя CABAC, может включать следующие этапы: бинаризацию, контекстный выбор модели, арифметическое кодирование и вероятностное обновление данных. При бинаризации модуль 46 CABAC преобразует любой небинарный символ в бинарный код до арифметического кодирования. При контекстном выборе модели модуль 46 CABAC выбирает контекстную модель выбора из доступных моделей, например, в зависимости от статистики, имеющей отношение к недавно кодированным символам данных. "Контекстная модель" является вероятностной моделью для одного или нескольких бинов бинаризованного символа. Такая модель может быть выбрана из выбора доступных моделей в зависимости от статистки недавно кодированных символов данных. Контекстная модель хранит вероятность каждого бина, представленного "1" или "0."
[0054] Для арифметического кодирования модуль 46 CABAC кодирует каждый бин согласно выбранной вероятностной модели (также называемой контекстной моделью). Выбранная вероятностная модель обновляется (вероятностное обновление), основываясь на реальном кодированном значении (например, если значение бина было "1", подсчет частот "1" увеличивается). Вероятностная оценка в CABAC может основываться на табличной оценке, использующей конечный автомат (FSM). В этом случае каждая вероятностная модель в CABAC может иметь одно из 128 различных состояний с ассоциированными вероятностными значениями p. Вероятностное обновление может происходить в результате процесса перехода между 64-мя отдельными вероятностными состояниями для "наименее вероятного символа", который имеет наименьшую вероятность из двух бинарных решений "0" или "1." Контекстный выбор модели, арифметическое кодирование и вероятностное обновление могут повторяться для каждого бита (или "бина") бинаризованного символа.
[0055] CABAC, использующий коэффициент преобразования модулем 46 CABAC, включает кодирование так называемой карты значимости и кодирование ненулевых коэффициентов. Если блок имеет ненулевые коэффициенты, кодируется карта бинарно-выраженной значимости. Для каждого коэффициента в последовательности сканирования передается однобитовый символ significant_coeff_flag. Если символ significant_coeff_flag один, т.е. если существует ненулевой коэффициент в соответствующей позиции сканирования, посылается дополнительный однобитовый символ last_significant_coeff_flag. Этот символ last_significant_coeff_flag указывает на случаи, когда текущий ненулевой коэффициент является последним ненулевым коэффициентом внутри блока (last_significant_coeff_flag=1) или когда следуют дополнительные ненулевые коэффициенты (last_significant_coeff_flag=0).
[0056] Для кодирования карты значимости может использоваться до пятнадцати различных вероятностных моделей как для significant_coeff_flag, так и для last_significant_coeff_flag. Выбор моделей и, следовательно, соответствующего индекса контекста, может зависеть от позиции сканирования. Для кодирования ненулевых уровней coeff_abs_level_minus 1 = |lij| - 1 могут использоваться десять контекстов, причем первые пять контекстов предназначены для кодирования первого бита двоичного представления, а другие пять предназначены для кодирования битов со второй по четырнадцатый. Контексты могут выбираться модулем 46 CABAC следующим образом:
1. Параметры NumLg1 и NumEq1 устанавливаются равными, соответственно, количеству уже закодированных в блоке коэффициентов, которые больше единицы и равны единице. Кодируются ненулевые уровни и таким образом обновляются параметры NumLg1 и NumEq1 в порядке, обратном сканированию, т.е. коэффициенты, соответствующие высокочастотным функциям преобразования, кодируются первыми.
2. Контекст для первого бита бинаризированного символа может быть определен следующим образом:
3. Контекст для битов со второй по четырнадцатый бинаризированного символа может быть выбран следующим образом:
Ctx2 = min(4, NumLg1).
Модуль 46 CABAC может также поддерживать режим обхода с фиксированным распределением. Другие биты в двоичном представлении coeff_abs_level_minus 1 могут проходить через режим обхода. Наконец, знаки ненулевых коэффициентов могут быть посланы с использованием одного бита для каждого ненулевого коэффициента, например, когда 1 указывает на положительное значение, а 0 указывает на отрицательное значение (либо наоборот).
[0057] Для каждого NxN видеоблока желательно найти с учетом коэффициентов cij преобразования соответствующие квантованные коэффициенты lij (которые определяют реконструированные коэффициенты rij) такие, что среднеквадратичное (MSE) искажение D ошибки E(x,y) предсказания и реконструированной версии ошибки предсказания является минимизированным при условии наложения ограничения на скорость R кодирования коэффициентов. Другими словами, целью является минимизирование следующего выражения:
[0058] Вместо MSE может использоваться другая метрика для искажения, например MSE с активным взвешиванием. Проблема, с ограничением по скорости, минимизации приведенного выше уравнения может быть решена путем преобразования в проблему без ограничения путем “слияния” скорости и искажения с помощью использования множителя λ Лагранжа. В этом случае неограниченная проблема превращается в определение (для фиксированного λ) уровней коэффициентов, которые дают минимальную величину общих лагранжевых затрат, определенных следующим образом:
В случае H.264 квадрат ошибки реконструкции
для данного блока является пропорциональным квадрату ошибки квантования:
Скорость R представляет собой количество битов, требуемых для кодирования квантованных коэффициентов lij.
[0059] Предложенные алгоритмы, обсуждаемые ниже, находят значения lij квантованных коэффициентов, для которых значение полной функции J(λ) лагранжевых затрат находится близко к минимальной величине.
[0060] Поскольку используемое в MPEG-4 AVC преобразование является ортогональным, лагранжевые затраты J(λ) могут быть вычислены следующим образом:
В этом случае представляет собой лагранжевые затраты для коэффициента cij при их квантовании до уровня lij. Другими словами:
Как и прежде, представляет параметр квантования, а % представляет деление по модулю. представляет матрицу нормализации. Качество кодирования обычно возрастает при уменьшении Другими словами, меньшие значения обычно соответствуют кодированию с меньшим квантованием и, следовательно, более высокого качества. Альтернативно, качество кодирования может уменьшаться при уменьшении в случае, если было определено соответствующим образом.
[0061] В случае матриц Q и R квантования и обратного квантования значения матрицы нормализации могут зависеть только от положения блока, определяемого i и j, и от значения =0,1,…5. Количество битов ("bits(lij)"), требуемое для кодирования значения lij, может быть вычислено путем кодирования lij с использованием части CABAC, например, как определено для ITU H.264. Однако для осуществления квантования модуль 40 RD квантования может выполнить только первые два этапа CABAC, а не все этапы CABAC. Эти первые два этапа включают в себя бинаризацию и выбор модели контекста. Затем вместо вызова арифметического кодера для выполнения двоичного арифметического кодирования модуль 40 RD квантования может оценить количество битов, требуемое для кодирования каждого бина. Допуская, что контекст, выбранный для данного бина, соответствует состоянию m в конечном автомате, оцененное количество битов, требуемое для кодирования данного бина, может быть представлено как энтропия вероятности р, назначенной состоянию m. Для модуля 40 RD квантования может оказаться достаточным определять контексты для каждого бина один раз для каждого макроблока.
[0062] Для каждого коэффициента cij можно протестировать самое большее 3 возможных значения уровня : 0, и . Как и в примере с одним проходом, в настоящем двухпроходном подходе 4×4 блок значений может быть вычислен следующим образом:
[0063] Можно допустить, что коэффициенты данного блока упорядочены (сканированы) с помощью загзагообразного сканирования, которое дает в результате одномерный вектор упорядоченных коэффициентов. Упорядоченные коэффициенты могут быть обозначены как ci, где i = 0,..., M, и, например, М равно 15 для 4×4 блоков и 63 для 8×8 блоков.
[0064] Согласно настоящему раскрытию, модуль 40 RD квантования может генерировать квантованные коэффициенты/уровни li, следующим образом:
1. Вычисление лагранжевых затрат Jk(λ) и генерация вектора квантованных коэффициентов lk, исходя из предположения, что коэффициент ck, k=M, M-1, …, 0, является последним ненулевым коэффициентом в блоке, т.е. last_significant_coef_fflag для положения k сканирования равен 1.
1а. Для каждого коэффициента ci, i=k-1,...,0, вычисляют лагранжевые затраты J(λ,ci,li) и когда квантованное значение li равно предварительно выбранному набору значений, например 0, lfloor и lceil.
2. Выбирают значение li, для которого J(λ,ci,li) минимизовано и обновляют лагранжевые затраты Jk(λ), используя J(λ,ci,li), соответствующий выбранному значению li.
[0065] Скорость способов квантования, выполняемых модулем 40 RD квантования, может быть увеличена следующим образом.
1. Если коэффициент ci ближе (как измерено, например, с помощью абсолютного расстояния между lfloat и lfloor или lceil) к lfloor, чем к lceil, то на этапе 1a выше может быть вычислено только значение lfloor.
2. Если коэффициент ck ближе к lfloor, чем к lceil, и lfloor равен 0, то коэффициент ck может не быть последним ненулевым коэффициентом. Следовательно, в данном случае для этого значения k может быть пропущено вычисление лагранжевых затрат Jk(λ).
3. Вычисление Jk(λ) может быть завершено, когда с увеличением k Jk(λ) начинает увеличиваться.
[0066] Обобщая вышесказанное, модуль 40 RD квантования может выполнять квантование коэффициентов видеоблока для процесса видеокодирования, который поддерживает CABAC. Модуль 40 RD квантования может генерировать множество наборов квантованных коэффициентов для видеоблока, причем каждый из наборов квантованных коэффициентов определяется, исходя из предположения, что конкретный один из коэффициентов видеоблока соответствует последнему ненулевому коэффициенту видеоблока, выполнять оценку множества затрат, связанных с кодированием видеоблока посредством CABAC, причем оцененные затраты основаны соответственно на разных наборах из наборов квантованных коэффициентов, выбирать данный один набор из наборов квантованных коэффициентов, связанных с наименьшей величиной затрат, и выводить данный набор из наборов квантованных коэффициентов в модуль 46 CABAC кодирования. Модуль 46 CABAC кодирования может затем выполнять процесс CABAC на данном наборе из наборов квантованных коэффициентов для энтропийного кодирования данного набора из наборов квантованных коэффициентов в битовом потоке и осуществлять вывод битового потока.
[0067] Модуль 40 квантования может выполнять оценку затрат путем вычисления функций лагранжевых затрат, связанных с моделью случайного искажения. Конкретные затраты, связанные с выбранным набором из наборов квантованных коэффициентов, определяют наименьшее количество битов, связанных с множеством затрат. Модуль 40 квантования может сохранять значение, указывающее на наименьшее количество битов, которое связано с конкретными затратами.
[0068] Функции лагранжевых затрат могут определять наборы лагранжевых затрат для отдельных коэффициентов, связанных с каждым из квантованных коэффициентов в наборах квантованных коэффициентов. Модуль 40 квантования вычисляет наборы лагранжевых затрат для отдельных коэффициентов, связанных с квантованными коэффициентами в наборах квантованных коэффициентов, для значений квантованных коэффициентов, равных нулю, значение floor и значение ceiling. Примеры этих значений показаны ниже. В общем случае, значение floor основано на абсолютном значении отдельного коэффициента из коэффициентов видеоблока, параметра квантования и матрицы квантования, а значение ceiling содержит значение floor плюс 1.
[0069] Для ускорения процесса квантования модуль 40 квантования может применять способы ускорения, аналогичные описанным выше способам. Например, для отдельного коэффициента из квантованных коэффициентов, если отдельный коэффициент из квантованных коэффициентов ближе к значению floor, чем значению ceiling, модуль 40 квантования может пропустить вычисление лагранжевых затрат для отдельного коэффициента, связанных с этим отдельным коэффициентом из квантованных коэффициентов для значений, равных значению ceiling.
[0070] Также если конкретный коэффициент из коэффициентов видеоблока соответствующий последнему ненулевому коэффициенту видеоблока, то для одного из наборов квантованных коэффициентов определяет, что значение ближе к значению floor, чем значению ceiling, и если значение floor равно нулю, модуль 40 RD квантования может пропустить оценку конкретных затрат, связанных с кодированием видеоблока для такого набора из наборов квантованных коэффициентов. Кроме того, модуль 40 RD квантования может завершить оценку множества затрат, связанных с конкретным из наборов, когда суммирование для определения конкретных лагранжевых затрат, связанных с конкретным из наборов, начинает увеличиваться с увеличением значений коэффициентов видеоблока. Эти или другие способы могут быть использованы для ускорения процесса квантования без ухудшения качества кодированных видеоданных.
[0071] Фиг.4 представляет собой блок-схему, иллюстрирующую пример видеодекодера 60, который декодирует видеопоследовательность, кодируемую описанным здесь способом. Видеодекодер 60 содержит модуль 52 CABAC декодирования, который выполняет функцию обратного декодирования кодирования, выполненного модулем 46 CABAC на фиг.3.
[0072] Видеодекодер 60 может выполнять интра- и интер-декодирование блоков внутри видеокадров. В приведенном на Фиг.4 примере видеодекодер 60 включает модуль 52 CABAC декодирования (упомянутый выше), модуль 54 компенсации перемещения, модуль 56 обратного квантования, модуль 58 обратного преобразования и устройство 62 хранения референсных кадров. Видеодекодер 60 также содержит сумматор 64. При необходимости, видеодекодер 60 также может содержать фильтр распаковки (не показан), который фильтрует выходные данные сумматора 64. На фиг.4 показаны компоненты временного предсказания видеодекодера 60 интер-декодирования видеоблоков. Хотя на фиг.4 не показано, видеодекодер 60 также может содержать компоненты пространственного предсказания для интра-декодирования тех же самых видеоблоков.
[0073] После CABAC декодирования, выполняемого модулем 52 CABAC декодирования, модуль 54 компенсации перемещения принимает вектор перемещения и один или несколько восстановленных референсных кадров из устройства 62 хранения референсных кадров. Модуль 56 обратного квантования выполняет обратное квантование, т.е. де-квантует, квантованные блочные коэффициенты. Процесс обратного квантования может быть обычным процессом, как определено H.264 декодированием. Модуль 58 обратного преобразования применяет обратное преобразование, например обратное DCT или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования для получения остаточных блоков в пиксельном домене. Модуль 54 компенсации перемещения создает блоки компенсированного перемещения, которые суммируются сумматором 64 с остаточными блоками для формирования декодированных блоков. При необходимости, фильтр распаковки также может быть применен для фильтрования декодированных блоков для удаления артефактов блочности. Затем отфильтрованные блоки помещают в устройство 62 хранения референсных кадров, которое обеспечивает референсные блоки из компенсации перемещения и также формирует декодированные видеоданные в drive устройстве отображения (таком, как устройство 28 на фиг.1)
[0074] Фиг.5 представляет собой блок-схему последовательности операций, иллюстрирующую однопроходной способ, выполняемый видеокодером 50. Как показано, модуль 40 квантования со случайным смещением (RD) генерирует наборы квантованных коэффициентов, исходя из предположений о наличии ненулевого коэффициента (101). В частности, модуль 40 RD квантования предполагает, что данный коэффициент является последним ненулевым коэффициентом, и на основе такого предположения вычисляет наборы коэффициентов для видеоблока. Затем модуль 40 RD квантования предполагает, что другой коэффициент является последним ненулевым коэффициентом, и на основе такого предположения генерирует другой набор коэффициентов видеоблока, и так далее.
[0075] Для каждого из наборов квантованных коэффициентов модуль квантования оценивает затраты, основываясь на функциях лагранжевых затрат (102). В частности, для каждого набора модуль 40 RD квантования определяет функции лагранжевых затрат для каждого коэффициента на множестве возможных значений, например, нуля, значении floor и значении ceiling. Значение floor может быть основано на абсолютном значении одного из коэффициентов видеоблока, параметра квантования и матрицы квантования (или ее параметров), а значение ceiling может содержать значение floor плюс 1.
[0076] Модуль 40 RD квантования выбирает набор квантованных коэффициентов, который имеет наименьшую величину общих лагранжевых затрат (103). В частности, модуль 40 RD квантования суммирует наименьшие величины отдельных лагранжевых затрат для каждого коэффициента набора и повторяет этот процесс для каждого возможного набора. Снова лагранжевые затраты уравновешивают затраты по скорости и искажению. Модуль 40 RD квантования выбирает набор, имеющий общий наименьший лагранжиан (103), и модуль 40 RD квантования выводит выбранный набор квантованных коэффициентов в модуль 46 CABAC кодирования (104). Модуль 46 CABAC кодирования выполняет CABAC на основе выбранного набора квантованных коэффициентов и любых других параметров синтаксиса для генерации кодированного битового потока (105) и осуществляет вывод кодированного битового потока (106).
[0077] Фиг.6 представляет собой другую блок-схему последовательности операций, иллюстрирующую более подробно процесс оценки затрат, приведенный в качестве примера. В частности, модуль 40 квантования вычисляет отдельные функции лагранжевых затрат для каждого коэффициента для нулевых значений, значения floor значения ceiling. Снова значение floor может быть основано на абсолютном значении одного из коэффициентов видеоблока, параметре квантования, матрице квантования (или параметре, отображенном от матрицы), а значение ceiling может содержать значение floor плюс 1.
[0078] Как указывалось выше, один из примеров вычисления значения floor (lfloor) и значения ceiling (lceil) для коэффициента cij для 4×4 модулем 40 RD квантования выглядит следующим образом:
,
,
.
Снова операция floor(lfloat) представляет наименьшее значение, связанное с lfloat, QP представляет параметр квантования, fQ представляет матрицу квантования, такую как матрица квантования, определенная для H.264/AVC. Значения QP%6, i и j могут использоваться для определения параметра из матрицы Q. Функция % представляет деление по модулю.
[0079] Модуль 40 RD квантования выбирает для каждого коэффициента функции лагранжевых затрат для отдельных коэффициентов с наименьшей величиной затрат (111) и определяет величину общих лагранжевых затрат для набора (112), например, суммируя выбранные лагранжевы затраты для отдельных коэффициентов. Модуль 40 RD квантования повторяет этот процесс на этапах (110-112), если имеется другой набор квантованных коэффициентов, который следует рассмотреть (ответвление “да” 113). В частности, для каждого набора коэффициентов, определенных исходя из предположения, что данный коэффициент является последним ненулевым коэффициентом, модуль 40 квантования повторяет этот процесс на этапах (110-112). После определения величины общих лагранжевых затрат для каждого возможного набора квантованных коэффициентов (определенных путем предположений наличия последнего ненулевого коэффициента) модуль 40 RD квантования выбирает набор квантованных коэффициентов, который имеет наименьшую величину общих лагранжевых затрат (114).
[0080] На фиг.7-9 показаны необязательные способы, которые могут быть использованы для ускорения процесса квантования без существенного ухудшения качества в квантованных коэффициентах. Способы, показанные на фиг.7-9, можно использовать по отдельности или в комбинации. Способы, показанные на фиг.7-9, являются наиболее используемыми способами в процессе однопроходного квантования, но некоторые из этих способов (в частности, способы, показанные на фиг.7) также могут использоваться при двухпроходном квантовании, более подробно описанном ниже. Как показано на фиг.7, если отдельный квантованный коэффициент ближе к floor, чем к ceiling (ответвление “да”, 121), модуль 40 RD квантования может пропустить вычисление лагранжевых затрат по отдельному коэффициенту, связанных с отдельным квантованным коэффициентом для значения ceiling (122). В этом случае модуль 40 RD квантования может сделать предположение, что лагранжевые затраты по отдельному коэффициенту, связанные с отдельным квантованным коэффициентом, будут минимизированы либо до нулевого значения либо до значения floor. Следовательно, в этом случае модуль 40 RD квантования может избежать ненужных вычислений, связанных с вычислениями лагранжевых затрат, связанных с отдельным квантованным коэффициентом для значения ceiling. Однако вычисление не пропускается (123), если отдельный квантованный коэффициент не находится ближе к значению floor, чем значению ceiling (нет ответвления на этапе 121).
[0081] В способе на фиг.8 модуль 40 RD квантования определяет, является ли значение floor нулевым (131) и находится ли конкретный коэффициент, соответствующий последнему ненулевому коэффициенту, ближе к значению floor, чем значению ceiling (132). Если оба эти предположения верны (ответвление “да” на 131 и ответвление “да” на 132), то модуль 40 RD квантования может пропустить оценку конкретных затрат, связанных с кодированием видеоблока для конкретного набора квантованных коэффициентов, связанных с таким конкретным ненулевым коэффициентом (133). В этом случае модуль 40 RD квантования может предположить, что общие лагранжевые затраты для такого конкретного набора квантованных коэффициентов не будут включать минимальную величину и не будут выбраны даже при полном вычислении значения. Следовательно, в этом случае вычисления конкретных затрат могут быть опущены. Однако если любое из этих предположений неверно (нет ответвления на 131 или на 132), то модуль 40 RD квантования не пропускает оценку конкретных затрат. Способ на Фиг.8 представляет собой другой способ избегания ненужных вычислений для модуля 40 RD квантования.
[0082] В способе, показанном на фиг.9, модуль 40 RD квантования управляет суммированием, которое определяет конкретные затраты, т.е. управляет суммированием отдельных лагранжевых затрат для каждого из квантованных коэффициентов для определения общих лагранжевых затрат, связанных с данным набором коэффициентов. Если суммирование для определения одних из конкретных затрат начинает увеличиваться с уменьшением значений коэффициентов видеоблока (ответвление “да” на 141), то модуль 40 RD квантования завершает оценку множества затрат для этого набора (142). В этом случае модуль 40 RD квантования может предположить, что величина общих лагранжевых затрат, связанных с таким данным набором коэффициентов, не может принимать общее минимальное значение. Следовательно, можно избежать вычислений в случае неопределенной вероятности на этапе 141 (ответвление “да” на 141). Вычисления не завершаются (143), если суммирование не увеличивается с уменьшением значений коэффициентов видеоблока (ответвление “нет” на 141).
[0083] Как упоминалось выше, в настоящем описании также рассматривается двухпроходной подход. При двухпроходном проходе способы, приведенные в настоящем описании, могут включать оценку последнего ненулевого коэффициента видеоблока на первом проходе, а затем генерацию набора квантованных коэффициентов для видеоблока во втором проходе, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока. Отдельный проход с оценкой может исключить необходимость выполнения вычислений, связанных с наборами квантованных коэффициентов, которые не имеют корректных коэффициентов в качестве последнего ненулевого коэффициента. Согласно настоящему описанию, модуль 40 RD может генерировать квантованные коэффициенты согласно такому двухпроходному подходу, описанному ниже более подробно.
[0084] Аналогично однопроходному подходу предложенный двухпроходной алгоритм, описанный ниже, определяет значения lij квантованных коэффициентов, для которых значение функции общих лагранжевых затрат J(λ) ближе к своему минимуму. Двухпроходной проход может быть охарактеризован тем, что он является менее сложным, чем способы минимизации функции общих лагранжевых затрат J(λ), основанные на полном обследовании.
[0085] Каждый коэффициент cij может быть протестирован по наибольшим 3 возможным значениям уровня : 0, и . Как и в примере однопроходного подхода, при двухпроходном подходе могут быть вычислены значения и 4×4 блока следующим образом:
.
[0086] Кроме того, для упрощения, если коэффициент cij находится ближе к , чем к (например, как измерено по абсолютному расстоянию между и или ), рассматривается только значение . Если cij находится ближе к нулевому уровню, чем к 1, ему может быть назначен нулевой уровень без дополнительного анализа. Иначе говоря, способы, приведенные на Фиг.7, могут применяться на втором проходе двухпроходного подхода.
[0087] Можно предположить, что коэффициенты в данном блоке упорядочены (сканированы) с использованием зигзагообразного сканирования (например, как показано на фиг.3), давая одномерный вектор упорядоченных коэффициентов. Упорядоченные коэффициенты могут быть обозначены как cij, где i=0, …, M, и, например, M is равно 15 для 4×4 блоков и 63 для 8×8 блоков.
[0088] Модуль 40 RD квантования может использовать следующие символы для вычисления битов, необходимых для кодирования значения li, дополнительно к биту знака:
Significant_coeff_flag, который указывает, является ли коэффициент ненулевым;
last_significant_coeff_flag, который указывает на последний ненулевой коэффициент, и coeff_abs_level_minus1, который представляет абсолютное значение минус 1 коэффициента. В случае significant_coeff_flag и last_significant_coeff_flag, контекст и, следовательно, биты, необходимые для кодирования символов, могут зависеть от положения сканирования i. Однако контекст для бинов coeff_abs_level_minus1 (например, включая первый бин - символ greater_than1) может зависеть от значений других ненулевых уровней. сканированных в обратном порядке. Другими словами, контексты для li зависят от значений квантованных коэффициентов с индексами j, где j>i.
[0089] Следовательно, модуль 40 RD квантования может получать квантованные коэффициенты/уровни li на двух отдельных проходах. На первом проходе модуль 40 RD квантования может оценивать, какой коэффициент может быть последним ненулевым коэффициентом. Этот оцененный последний ненулевой коэффициент может быть обозначен как ck. На втором проходе модуль 40 RD квантования может определить и сгенерировать конечные значения квантованных коэффициентов, предполагая, что коэффициент ck действительно является последним ненулевым коэффициентом в блоке.
[0090] При применении только коэффициенты , …, ci могут рассматриваться на первом проходе модулем 40 RD квантования, где:
i1 является самым большим значением i, для которого , и
i0 является самым большим значением i, для которого , или если такой индекс не существует i0=0.
Кроме того, для упрощения значение Jsum может быть предварительно вычислено в виде суммы ошибок квантования err(ci, li), если коэффициенты ci, i= i0, …, i1, квантованы для i0 следующим образом:
[0091] Модуль 40 RD квантования может выполнять некоторые или все нижеследующие этапы на первом проходе, который используется для оценки последнего ненулевого коэффициента видеоблока.
1) Если для коэффициента , :
a) Обновляет значение Jsum:
.
b) Вычисляет аппроксимацию лагранжевых затрат блока, когда является последним ненулевым коэффициентом, как:
.
В этом случае bitslast=1 является аппроксимацией количества битов, необходимых для указания, что является последним ненулевым коэффициентом (т.е. количества битов для кодирования last_significant_coeff_flag, равного 1). Кроме того, bitslast=0 является аппроксимацией количества битов, необходимых для указания, что не является последним ненулевым коэффициентом (т.е. количества битов для кодирования last_significant_coeffflag, равного 0).
c) Обновляет начальный индекс i0 в i0=i0+1.
2) Для коэффициентов ci, где i=i0, …,i1:
a) Обновляет значение Jsum:
b) Определяет лагранжевые затраты J(λ,ci,0), где ci квантован в 0.
c) Если коэффициент ci находится ближе к 0, чем к 1, вычисляет обновленное значение Jsum следующим образом:
d) Если коэффициент ci находится ближе к 1, чем к 0, вычисляет два дополнительных значения лагранжевых затрат:
i) - ci квантуется в 1 и не является последним ненулевым коэффициентом,
ii) - ci квантуется в 1 и является последним ненулевым коэффициентом.
Обновляет значение Jsum:
Аппроксимация лагранжевых зтрат Ji(λ), когда ci является последним ненулевым коэффициентом, выражается как:
.
Когда вычисление битов, необходимое для кодирования квантованного коэффициента, равно 1, модуль 40 RD квантования фиксирует контекст для символа greater_than_1 symbol, чтобы он был одним из 5 возможных значений.
Предполагается, что коэффициент ck с наименьшим соответствующим значением Jk(λ) является последним ненулевым коэффициентом в блоке.
[0092] На вышеприведенных этапах модуль 40 RD квантования оценивает последний ненулевой коэффициент видеоблока без подробного рассмотрения каждого возможного сценария для каждого возможного последнего ненулевого коэффициента. В этом случае модуль 40 оценивает последний ненулевой коэффициент путем аппроксимации затрат, связанных с кодированием видеоблока посредством CABAC. Разные затраты из аппроксимированных затрат соответствуют разным коэффициентам, которые являются последними ненулевыми коэффициентами. Финальный оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат. Этап 1 может рассматриваться как специальный случай, в то время как этап 2 может выполняться в отношении большинства коэффициентов.
[0093] На вышеприведенных этапах модуль 40 RD квантования определяет разные затраты из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока, как являющегося последним ненулевым коэффициентом. Осуществляя это, модуль 40 RD квантования последовательно повышает или понижает суммарные затраты при рассмотрении каждого из коэффициентов видеоблока, как являющегося последним ненулевым коэффициентом. В частности, этап 2(a) выше, где Jsum обновляется как , может привести к уменьшению суммарных затрат. В этом случае этап 2(a) может привести к уменьшению Jsum. С другой стороны, этапы 2(c) и 2(d), где значение Jsum обновляется как или как , могут привести к увеличению суммарных затрат. Таким образом, модуль 40 RD квантования определяет разные затраты из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока, как являющегося последним ненулевым коэффициентом, и, выполняя это таким образом, суммирует общие затраты с их повышением и понижением. Таким образом, модуль 40 RD квантования оценивает последний ненулевой коэффициент видеоблока без подробного рассмотрения каждого возможного сценария для каждого возможного ненулевого коэффициента.
[0094] После оценки последнего ненулевого коэффициента модулем 40 RD квантования модуль 40 RD квантования может выполнить второй проход, который генерирует набор квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока. В частности, на втором проходе модуль 40 RD квантования определяет конечные значения для каждого квантованного коэффициента, предполагая, что коэффициент ck, выбранный на первом проходе действительно является последним ненулевым коэффициентом видеоблока. В этом случае для каждого коэффициента ci, i=k, …,0, модуль 40 RD определяет значение уровня //, для которого минимизированы лагранжевые затраты J(λ,ci,li,). Как описано выше, может быть рассмотрено три различных уровня li, например 0, Для вычисления контекста, когда может быть использовано кодирование значения уровня li, уже выбранных значений для уровней lj, j=k, …,i+1.
[0095] Другими словами, генерация набора квантованных коэффициентов может содержать вычисление лагранжевых затрат, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, значению floor и значению ceiling. И в этом случае значение floor может быть основано на абсолютном значении одного из коэффициентов видеоблока, параметре квантования и матрице квантования, а значение ceiling может содержать значение floor плюс 1.
[0096] Фиг.10 представляет собой блок-схему последовательности операций, иллюстрирующую способ кодирования, который может использовать двухпроходной подход, описанный выше. В этом случае модуль 40 RD оценивает последний ненулевой коэффициент видеоблока (151). Как описывалось выше, этот этап оценки (151) может включать аппроксимацию затрат, связанных с кодированием видеоблока посредством CABAC, и разные затраты из аппроксимированных затрат могут соответствовать разным коэффициентам, являющимся последним ненулевым коэффициентом. В этом случае конечный оцененный ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат.
[0097] Кроме того, во время этапа оценки (151) модуль 40 RD квантования может определять разные затраты из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока, как являющихся последним ненулевым коэффициентом. Осуществляя это, модуль 40 RD квантования последовательно повышает или понижает суммарные затраты при рассмотрении каждого из коэффициентов видеоблока, как являющегося последним ненулевым коэффициентом.
[0098] Затем модуль 40 RD квантования генерирует набор квантованных коэффициентов, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом (152). Генерация набора (152) может включать вычисление лагранжевых затрат, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, значению floor и значению ceiling. После генерации модуль 40 RD квантования может выводить набор квантованных коэффициентов в модуль 46 CABAC, который выполняет CABAC на сгенерированном наборе квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовом потоке (153). Затем битовый поток может быть выведен и, возможно, модулирован и передан в другое устройство.
[0099] Приемы, изложенные в настоящем описании, могут быть реализованы с помощью множества устройств, включая беспроводные устройства, и интегральные схемы или наборы интегральных схем. Любой из описанных модулей или блоков предназначены для иллюстрации функциональных аспектов и не должны с необходимостью обеспечивать возможность их реализации с помощью других аппаратных блоков и т.п.
[0100] Соответственно, описанные в настоящем документе методики могут быть реализованы в виде аппаратных средств, программного обеспечения, встроенного программного обеспечения или их комбинации. При реализации в виде программного обеспечения упомянутые методики могут быть реализованы, по меньшей мере, частично, в виде машиночитаемого носителя, содержащего инструкции, которые при их исполнении приводят к осуществлению одного или более описанных выше способов. Машиночитаемый носитель может входить в состав компьютерного программного продукта, который также может содержать упаковку. Машиночитаемый носитель может включать в себя память с произвольным доступом (RAM), такую как синхронную динамическую память с произвольным доступом (SDRAM), постоянную память (ROM), энергонезависимую память с произвольным доступом (NVRAM), программируемую электрически стираемую постоянную память (EEPROM), FLASH память, магнитные или оптические носители, и т.п. Упомянутые методики, дополнительно или в качестве альтернативы, упомянутые методики могут быть реализованы, по меньшей мере, частично, в виде машиночитаемого носителя, переносящего коды в форме инструкций или структур данных, и которые являются доступными для компьютера и/или могут быть считаны и/или выполнены компьютером.
[0101] Коды могут выполняться одним или более процессорами, такими как один или более сигнальных процессоров, микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем логических матриц (FPGA), или других эквивалентных или интегрированных или дискретных логических схем. Соответственно, термин “процессор”, как он используется в настоящем документе, может обозначать любую из вышеперечисленных структур или любую другую структуру, подходящую для осуществления изложенный в настоящем документе методик. Помимо этого, в некоторых аспектах функциональные особенности, описанные в настоящем документе, могут быть обеспечены специализированными программными модулями или аппаратными блоками, выполненными с возможностью кодирования и декодирования, или встроенными в комбинированный видеокодер-декодер (КОДЕК). Упомянутые методики также могут быть полностью реализованы в виде одной или нескольких схем или логических элементов.
[0102] Описаны различные аспекты настоящего раскрытия. Эти и другие аспекты находятся в рамках объема нижеследующей формулы изобретения.
Изобретение относится к видеокодированию и, в частности, к способам квантования для процессов видеокодирования, которые поддерживают контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС). Техническим результатом является повышение эффективности квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает САВАС при обеспечении требуемого баланса между скоростью кодирования и искажением на этапе квантования видеокодирования. Указанный технический результат достигается тем, что оценивают последний ненулевой коэффициент видеоблока, при этом оценка последнего ненулевого коэффициента включает в себя аппроксимацию затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам, являющимся последним ненулевым коэффициентом, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и генерируют набор квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока. 5 н. и 28 з.п. ф-лы, 10 ил.
1. Способ квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС), при этом способ содержит этапы, на которых
оценивают последний ненулевой коэффициент видеоблока, при этом оценка последнего ненулевого коэффициента включает в себя аппроксимацию затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам, являющимся последним ненулевым коэффициентом, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и
генерируют набор квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока.
2. Способ по п.1, дополнительно содержащий вывод сгенерированного набора квантованных коэффициентов.
3. Способ по п.2, дополнительно содержащий прием сгенерированного набора квантованных коэффициентов; выполнение САВАС над сгенерированным набором квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток; вывод битового потока.
4. Способ по п.1, дополнительно содержащий определение упомянутых различных одних из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
5. Способ по п.4, дополнительно содержащий определение упомянутых различных одних из аппроксимированных затрат путем последовательной регулировки для повышения и понижения накопленных затрат при рассмотрении каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
6. Способ по п.1, в котором генерирование набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока, содержащий вычисление стоимостей по Лагранжу, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, наибольшему целому числу, не превосходящему указанное значение (floor), и наименьшему целому числу, превосходящему указанное значение (ceiling).
7. Способ по п.6, в котором наибольшее целое число, не превосходящее указанное значение, основано на абсолютном значении отдельного одного из коэффициентов видеоблока, параметре квантования и матрице квантования, причем наименьшее целое число, превосходящее указанное значение, содержит наибольшее целое число, не превосходящее указанное значение, плюс единица.
8. Машиночитаемый носитель, содержащий инструкции, которые при исполнении вычислительным устройством приводят к исполнению упомянутым устройством способа квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС), при этом упомянутые инструкции приводят к исполнению упомянутым устройством этапов, на которых
оценивают последний ненулевой коэффициент видеоблока посредством аппроксимации затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам, являющимся последним ненулевым коэффициентом, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и
генерируют набор квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока.
9. Машиночитаемый носитель по п.8, дополнительно содержащий инструкции, которые приводят к исполнению упомянутым устройством вывода сгенерированного набора квантованных коэффициентов.
10. Машиночитаемый носитель по п.8, дополнительно содержащий инструкции, которые приводят к исполнению упомянутым устройством
приема сгенерированного набора квантованных коэффициентов; выполнения САВАС над сгенерированным набором квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток; вывода битового потока.
11. Машиночитаемый носитель по п.8, дополнительно содержащий инструкции, которые приводят к исполнению упомянутым устройством определения упомянутых различных одних из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
12. Машиночитаемый носитель по п.11, дополнительно содержащий инструкции, которые приводят к исполнению упомянутым устройством определения упомянутых различных одних из аппроксимированных затрат путем последовательной регулировки для повышения и понижения накопленных затрат при рассмотрении каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
13. Машиночитаемый носитель по п.8, в котором инструкции приводят к исполнению упомянутым устройством генерирования набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока, путем вычисления стоимостей по Лагранжу, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, наибольшему целому числу, не превосходящему указанное значение (floor), и наименьшему целому числу, превосходящему указанное значение (ceiling).
14. Машиночитаемый носитель по п.13, в котором наибольшее целое число, не превосходящее указанного значения, основано на абсолютном значении отдельного одного из коэффициентов видеоблока, параметре квантования и матрице квантования, причем наименьшее целое число, превосходящее указанное значение, содержит наибольшее целое число, не превосходящее указанное значение, плюс единица.
15. Устройство, выполненное с возможностью квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС), при этом устройство содержит
блок квантования, который выполнен с возможностью оценки последнего ненулевого коэффициента видеоблока посредством аппроксимации затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам, являющимся последним ненулевым коэффициентом, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и
генерации набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока.
16. Устройство по п.15, в котором блок квантования выполнен с возможностью вывода сгенерированного набора квантованных коэффициентов.
17. Устройство по п.16, дополнительно содержащее блок САВАС, выполненный с возможностью приема сгенерированного набора квантованных коэффициентов; выполнения САВАС над сгенерированным набором квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток; вывода битового потока.
18. Устройство по п.15, в котором блок квантования выполнен с возможностью определения упомянутых различных одних из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
19. Устройство по п.18, в котором блок квантования выполнен с возможностью определения упомянутых различных одних из аппроксимированных затрат путем последовательной регулировки для повышения и понижения накопленных затрат при рассмотрении каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
20. Устройство по п.15, в котором блок квантования выполнен с возможностью генерирования набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока, посредством вычисления стоимостей по Лагранжу, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, наибольшему целому числу, не превосходящему указанное значение (floor), и наименьшему целому числу, превосходящему указанное значение (ceiling).
21. Устройство по п.20, в котором наибольшее целое число, не превосходящее указанное значение, основано на абсолютном значении отдельного одного из коэффициентов видеоблока, параметре квантования и матрице квантования, причем наименьшее целое число, превосходящее указанное значение, содержит наибольшее целое число, не превосходящее указанное значение, плюс единица.
22. Устройство по п.15, причем упомянутое устройство содержит интегральную схему, причем интегральная схема, по меньшей мере частично, реализует функциональные возможности устройства.
23. Устройство по п.15, причем упомянутое устройство содержит микропроцессор, причем микропроцессор, по меньшей мере частично, реализует функциональные возможности устройства.
24. Устройство для квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС), при этом устройство содержит
средство для оценки последнего ненулевого коэффициента видеоблока, при этом средство для оценки последнего ненулевого коэффициента включает в себя средство аппроксимации затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам, являющимися последними ненулевыми коэффициентами, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и
средство генерации набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока.
25. Устройство по п.24, дополнительно содержащее средство вывода сгенерированного набора квантованных коэффициентов.
26. Устройство по п.25, дополнительно содержащее средство приема сгенерированного набора квантованных коэффициентов; средство выполнения САВАС над сгенерированным набором квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток; средство вывода битового потока.
27. Устройство по п.24, дополнительно содержащее средство определения упомянутых различных одних из аппроксимированных затрат последовательным образом путем последовательного рассмотрения каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
28. Устройство по п.27, дополнительно содержащее средство определения упомянутых различных одних из аппроксимированных затрат путем последовательной регулировки для повышения и понижения накопленных затрат при рассмотрении каждого из коэффициентов видеоблока в качестве последнего ненулевого коэффициента.
29. Устройство по п.24, в котором средство генерирования набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент действительно является последним ненулевым коэффициентом видеоблока, содержит средство вычисления стоимостей по Лагранжу, связанных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для видеоблока, как имеющих значения, равные нулю, наибольшему целому числу, не превосходящему указанное значение (floor), и наименьшему целому числу, превосходящему указанное значение (ceiling).
30. Устройство по п.29, в котором наибольшее целое число, не превосходящее указанное значение, основано на абсолютном значении отдельного одного из коэффициентов видеоблока, параметре квантования и матрице квантования, причем наименьшее целое число, превосходящее указанное значение, содержит наибольшее целое число, не превосходящее указанное значение, плюс единица.
31. Устройство, выполненное с возможностью квантования коэффициентов видеоблока для процесса видеокодирования, который поддерживает контекстно-зависимое адаптивное двоичное арифметическое кодирование (САВАС), при этом устройство содержит блок кодирования и передатчик, при этом блок кодирования включает в себя блок квантования и блок САВАС, причем блок квантования выполнен с возможностью
оценки последнего ненулевого коэффициента видеоблока посредством аппроксимации затрат, связанных с кодированием видеоблока с помощью САВАС, причем различные одни из аппроксимированных затрат соответствуют различным коэффициентам,
являющимися последними ненулевыми коэффициентами, причем упомянутый оцененный последний ненулевой коэффициент определяет наименьшую величину аппроксимированных затрат; и
генерации набора квантованных коэффициентов для видеоблока, исходя из предположения, что оцененный последний ненулевой коэффициент является действительно последним ненулевым коэффициентом видеоблока; и
вывода сгенерированного набора квантованных коэффициентов;
причем блок САВАС выполнен с возможностью
приема сгенерированного набора квантованных коэффициентов;
выполнения САВАС над сгенерированным набором квантованных коэффициентов для энтропийного кодирования сгенерированного набора квантованных коэффициентов в битовый поток;
вывода битового потока;
причем передатчик выполнен с возможностью передачи битового потока.
32. Устройство по п.31, причем упомянутое устройство содержит беспроводное устройство связи, причем беспроводное устройство связи, по меньшей мере частично, реализует функциональные возможности устройства.
33. Устройство по п.32, причем упомянутое устройство включает в себя модулятор, выполненный с возможностью модуляции битового потока перед передачей битового потока передатчиком.
WO 2006005182 A1, 2006-01-19 | |||
US 5734755 A, 1998-03-31 | |||
US 2006098733 A1, 2006-05-11 | |||
EP 1619901 A2, 2006-01-25 | |||
WO 9634495 А2, 1996-10-31 | |||
RU 2006113092 A, 2007-11-20 | |||
KARCZEWICZ M | |||
et al | |||
Rate distortion optimized quantization, ITU - Telecommunications Standartization Sector STUDY GROUP 16 Question 6 Video Coding Experts Group (VCEG), no. |
Авторы
Даты
2013-05-27—Публикация
2009-02-20—Подача