КВАНТОВАНИЕ, ОСНОВАННОЕ НА МОДЕЛИРОВАНИИ ИСКАЖЕНИЯ СКОРОСТИ ПЕРЕДАЧИ, ДЛЯ КОДЕРОВ CABAC
QUANTISATION BASED ON MODELLING OF TRANSFER SPEED DISTORTION, FOR CABAC CODERS

[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 более полно описывается в следующей публикации: «Context-based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard» Detlev Marpe, Heiko Schwarz и Thomas Wiegand, публикуемой в IEEE Transactions on Circuits and Systems for Video Technology, volume 13, Номер 7, июль 2003 г.
Сущность изобретения
[0009] В целом, настоящее описание описывает способы квантования, которые могут быть использованы для квантования коэффициентов блока видеосигнала для процесса кодирования видеосигнала, который поддерживает адаптивное двоичное арифметическое кодирование, основанное на контексте (CABAC). Описанные способы могут составлять CABAC во время процесса квантования посредством выполнения и/или оценки некоторых этапов CABAC во время процесса квантования. Способы могут быть использованы для достижения желаемого баланса между скоростью кодирования и искажением на этапе квантования кодирования видеосигнала. Согласно этим способам множество затрат, ассоциированных с кодированием блока видеосигнала с помощью CABAC, может быть оценено для различных наборов квантуемых коэффициентов. Затем наборы квантуемых коэффициентов, ассоциированных с самой низкой стоимостью, могут быть выбраны для определения квантуемых коэффициентов.
[0010] В одном примере настоящее описание обеспечивает способ квантования коэффициентов блока видеосигнала для процесса кодирования видеосигнала, который поддерживает CABAC. Способ содержит генерирование множества наборов квантованных коэффициентов для блока видео, причем определяется каждый из наборов квантуемых коэффициентов на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, оценку множества стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, причем оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и выбор заданного одного из наборов квантованных коэффициентов, ассоциированных с самой низкой одной из стоимостей.
[0011] В другом примере настоящее описание обеспечивает устройство, сконфигурированное для квантования коэффициентов блока видео для процесса кодирования видео, который поддерживает CABAC. Устройство содержит модуль квантования, который генерирует множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, оценивает множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, в котором оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и выбирает заданный один из наборов квантованных коэффициентов, ассоциированных с самой низкой затратой.
[0012] В другом примере настоящее описание обеспечивает устройство, которое квантует коэффициенты блока видео для процесса кодирования видео, который поддерживает CABAC, причем устройство содержит средство для генерирования множества наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, средство для оценки множества стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, в котором оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и средство для выбора заданного одного из наборов квантованных коэффициентов, ассоциированных с самой низкой стоимостью.
[0013] В другом примере настоящее описание обеспечивает устройство, сконфигурированное для квантования коэффициентов блока видео для процесса кодирования видео, которое поддерживает адаптивное двоичное арифметическое кодирование, основанное на контексте (CABAC), причем устройство содержит модуль кодирования и передатчик, причем модуль кодирования включает в себя модуль квантования и модуль CABAC. Модуль квантования вычисляет множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположений, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, оценивает множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, причем оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, выбирает заданный один из наборов квантованных коэффициентов, ассоциированных с самой низкой стоимостью, и выводит этот заданный один из наборов квантованных коэффициентов. Модуль CABAC принимает заданный один из наборов квантованных коэффициентов, выполняет CABAC в отношении заданного одного из наборов квантованных коэффициентов для статистического кодирования данного одного из наборов квантованных коэффициентов в битовый поток и выводит битовый поток, и передатчик передает битовый поток.
[0014] Способы, описанные в этом раскрытии, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Если реализовано в программном обеспечении, программное обеспечение может быть выполнено в одном или более процессорах, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или цифровой сигнальный процессор (DSP). Программное обеспечение, которое выполняет эти способы, может быть первоначально сохранено на считываемом компьютером носителе и загружено, и выполнено в процессоре.
[0015] Соответственно, настоящее описание также рассматривает считываемый компьютером носитель, содержащий команды, которые при выполнении вынуждают устройство квантовать коэффициенты блока видео в процессе кодирования видео, который поддерживает CABAC, при этом команды вынуждают устройство генерировать множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, оценивать множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, в котором оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и выбирать заданный один из наборов квантованных коэффициентов, ассоциированных с самой низкой стоимостью.
[0016] Подробности одного или более аспектов раскрытия сформулированы в сопроводительных чертежах и описании ниже. Другие признаки, объекты и преимущества способов, описанных в настоящем описании, будут очевидны из описания и чертежей, и из формулы изобретения.
Краткое описание чертежей
[0017] Фиг.1 является примерной блок-схемой, иллюстрирующей систему кодирования и декодирования видео.
[0018] Фиг.2 является блок-схемой, иллюстрирующей пример кодера видео, совместимого с настоящим описанием.
[0019] Фиг.3 является концептуальной диаграммой, иллюстрирующей зигзагообразное сканирование блока видео элемента четыре на четыре.
[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] Иллюстрированная система 10 согласно фиг.1 является только примерной. Способы квантования настоящего изобретения могут быть выполнены любым устройством кодирования, которое поддерживает CABAC. Исходное устройство 12 является только одним примером такого устройства кодирования. Способы квантования настоящего изобретения могут включать в себя коэффициенты квантования блока видео для процесса кодирования видео, который поддерживает CABAC для статистического кодирования. В этом случае кодер 22 видео может генерировать множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео. Последний ненулевой коэффициент может зависеть от используемого порядка сканирования, такого как зигзагообразное сканирование. Кодер 22 видео может оценивать множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, где оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и выбирать данный один из наборов квантованных коэффициентов, ассоциированный с самой низкой стоимостью. Этот подход может называться подходом с одним проходом, поскольку оцененные стоимости генерируются для каждого из различных наборов квантованных коэффициентов в единственном проходе, который рассматривает различные коэффициенты как последний ненулевой коэффициент блока видео.
[0025] Альтернативно, способы квантования настоящего изобретения могут следовать подходу с двумя проходами. В этом случае способы могут включать в себя оценку последнего ненулевого коэффициента блока видео в первом проходе и затем генерирование набора квантованных коэффициентов для блока видео во втором проходе на основании предположения, что оцененный последний ненулевой коэффициент на самом деле является последним ненулевым коэффициентом блока видео. Настоящее описание предлагает как объединенный подход с одним проходом, так и подход с двумя проходами. В объединенном подходе с одним проходом каждый возможный коэффициент может быть рассмотрен как последний ненулевой коэффициент, и может быть сгенерировано много возможных наборов квантованных коэффициентов для различных коэффициентов, являющихся последним ненулевым коэффициентом. Однако в подходе с двумя проходами используются способы оценки, чтобы оценить последний ненулевой коэффициент, и могут быть сгенерированы и рассмотрены только наборы квантованных коэффициентов для единственного случая, когда оцененный последний ненулевой коэффициент фиксируется как последний ненулевой коэффициент. Объединенный подход с одним проходом может в большей мере требовать большого объема вычислений, чем подход с одним проходом, но в некоторых случаях он может приводить к более точным результатам. Могут быть использованы различные дополнительные способы для уменьшения сложности вычислений подхода с одним проходом. Подход с двумя проходами может значительно уменьшать сложность относительно подхода с одним проходом, и во многих случаях уменьшения в качестве кодирования в подходе с двумя проходами могут быть незначительными относительно подхода с одним проходом.
[0026] В целом, исходное устройство 12 генерирует закодированные видеоданные для передачи на приемное устройство 16. Однако в некоторых случаях устройства 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 видео, может выполнять обратное квантование при восстановлении видеопоследовательности. Устройство 30 отображения отображает декодированные видеоданные пользователю и может содержать любое множество устройств отображения, таких как электронно-лучевая трубка, жидкокристаллический дисплей (LCD), плазменная панель, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0029] В примере на фиг.1 канал 15 передачи данных может содержать любую беспроводную или проводную среду передачи данных, такую как радиочастотный (РЧ) спектр, или одну или более физических линий передачи, или любую комбинацию беспроводных и проводных сред. Канал 15 передачи данных может формировать часть сети, основанной на пакетной передаче, такую как локальная сеть, глобальная сеть или глобальная сеть, такая как Интернет. В общем, канал 15 передачи данных представляет любую подходящую среду передачи данных или совокупность различных сред передачи данных для передачи видеоданных от исходного устройства 12 на приемное устройство 16.
[0030] Кодер 22 видео и декодер 28 видео могут работать согласно стандарту сжатия видео, который поддерживает CABAC, такому как стандарт ITU-T H.264, альтернативно описанный как MPEG-4, Часть 10, усовершенствованное кодирование видео (AVC). Хотя не показано на фиг.1, в некоторых аспектах кодер 22 видео и декодер 28 видео могут быть объединены с кодером и декодером аудиосигнала и могут включать в себя соответствующие блоки MUX-DEMUX или другое аппаратное обеспечение и программное обеспечение, обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут согласовываться с протоколом мультиплексора ITU H.223 или другими протоколами, такими как протокол пользовательских дейтаграмм (UDP).
[0031] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован посредством экспертной группы по вопросам кодирования видео (VCEG) ITU-T вместе с экспертной группой по вопросам движущихся изображений (MPEG) ISO/IEC как продукт коллективного партнерства, известного как Объединенная Видео Команда (JVT). В некоторых аспектах способы, описанные в настоящем описании, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендации H.264 ITU-T, усовершенствованном кодировании видео для основных аудиовизуальных услуг, посредством Группы по изучению ITU-T, и датирован мартом 2005 г., который может быть упомянут в настоящем описании как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC. Объединенная Видео Команда (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] Меньшие блоки видео могут обеспечивать лучшее решение, и они могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детализации. В целом, макроблоки (макроблоки MB) и различные подблоки могут быть рассмотрены как блоки видео. В дополнение, часть может рассматриваться как ряд блоков видео, таких как MB и/или подблоки. Каждая часть может быть независимо декодируемым модулем видеокадра. После предсказания может быть выполнено преобразование в отношении остаточного блока 8×8 или остаточного блока 4×4, и дополнительное преобразование может быть применено к коэффициентам DC блоков 4×4 для компонентов насыщенности цвета или компонента яркости, если используется режим предсказания intra_16×16. Снова, после преобразования данные могут все еще называться блоками видео, то есть блоками коэффициентов преобразования. В общем, термин «коэффициенты» относится к коэффициентам преобразования, но может альтернативно относиться к другим типам коэффициентов или значениям, таким как пиксельные значения или другой тип коэффициентов.
[0035] После кодирования, основанного на внутреннем или внешнем предсказании, и способов преобразования (таких как целочисленное преобразование 4×4 или 8×8, используемое в H.264/AVC, или дискретное косинусное преобразование DCT) может быть выполнено квантование. Квантование рассматривается более подробно ниже, но, в общем, оно относится к процессу, в котором квантуются коэффициенты, чтобы по возможности уменьшить количество данных, используемых для представления коэффициентов. Процесс квантования может уменьшать разрядность цвета, ассоциированную с некоторыми или всеми коэффициентами. Например, во время квантования 8-битовое значение может быть округлено в меньшую сторону до 7-битового значения. Способы квантования настоящего изобретения составляют факт, что CABAC будет выполнен.
[0036] В частности, после квантования может быть выполнено статистическое кодирование согласно методологии CABAC. Настоящее описание обеспечивает способы для квантования коэффициентов блоков видео способом, который может достигнуть желаемого баланса скорости передачи и искажений. Описанные способы реализовывают оценки CABAC, чтобы улучшить квантование и достигнуть, например, желаемого уровня качества при заданном битовом запасе для скорости передачи данных.
[0037] Согласно методикам настоящего изобретения кодер 22 видео может генерировать множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположения, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео. Кодер 22 видео может оценивать множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, в котором оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, и выбирать заданный один из наборов квантованных коэффициентов, ассоциированных с самой низкой стоимостью. Кодер 22 видео может использовать выбранный набор квантованных коэффициентов для квантования блока видео. Этот подход называется подходом с одним проходом.
[0038] Альтернативно, способы квантования настоящего изобретения могут следовать подходу с двумя проходами. В этом случае кодер 22 видео может оценивать последний ненулевой коэффициент блока видео в первом проходе и затем генерировать набор квантованных коэффициентов для блока видео во втором проходе на основании предположения, что оцененный последний ненулевой коэффициент на самом деле является последним ненулевым коэффициентом блока видео. В подходе с двумя проходами используются способы оценки, чтобы оценить последний ненулевой коэффициент, и могут быть рассмотрены только наборы квантованных коэффициентов для случая, где оцененный последний ненулевой коэффициент на самом деле является последним ненулевым коэффициентом. Отдельный проход оценки может устранять необходимость выполнять вычисления, ассоциированные с наборами квантованных коэффициентов, которые не имеют корректного коэффициента как последнего ненулевого коэффициента.
[0039] Фиг.2 является блок-схемой, иллюстрирующей пример кодера 50 видео, который включает в себя модуль 40 квантования искажения скорости передачи (RD), который выполняет квантование остаточных коэффициентов, совместимых с настоящим описанием. Кодер 50 видео может соответствовать кодеру 22 видео устройства 12 или кодеру видео другого устройства. Кодер 50 видео может выполнять внутреннее и внешнее кодирование блоков в пределах видеокадров. Внутреннее кодирование основывается на пространственном предсказании, чтобы уменьшить или удалить пространственную избыточность в видеосигнале в пределах заданного видеокадра. Внешнее кодирование основывается на временном предсказании, чтобы уменьшить или удалить временную избыточность в видеосигнале в пределах смежных кадров видеопоследовательности. Для внешнего кодирования кодер 50 видео выполняет оценку движения, чтобы отследить движение соответствующих блоков видео между двумя или более смежными кадрами. Внутренний режим (I-режим) может относиться к режиму сжатия, основанному на пространстве, и внешние режимы, такие как предсказание (Р-режим) или двунаправленный режим (B-режим), могут относиться к режимам сжатия, основанным на времени.
[0040] Как показано на фиг.2, кодер 50 видео принимает текущий блок видео в пределах видеокадра, который должен быть закодирован. В примере на фиг.2, кодер 50 видео включает в себя модуль 32 предсказания, хранилище 34 опорных кадров, модуль 38 преобразования блока, модуль 40 квантования RD, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 кодирования CABAC. Фильтр удаления блочности (не показан) может также быть включен в границы блока фильтра, чтобы удалять артефакты блочности. Кодер 50 видео также включает в себя сумматор 48 и сумматор 51. В общем, модуль 32 предсказания представляет модуль внутреннего предсказания и/или модуль внешнего предсказания.
[0041] Во время процесса кодирования кодер 50 видео принимает блок видео, который должен быть закодирован, и модуль 32 предсказания выполняет способы кодирования с предсказанием. Для внешнего кодирования модуль 32 предсказания сравнивает блок видео, который должен быть закодирован, с различными блоками в одном или более опорных видеокадрах или частях для определения предсказывающего блока. Для внутреннего кодирования модуль 32 предсказания генерирует предсказывающий блок на основании соседних данных в пределах одного и того же закодированного модуля. Модуль 32 предсказания выводит блок предсказания, и сумматор 48 вычитает блок предсказания из закодированного блока видео для генерирования остаточного блока.
[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 предсказания как опорный блок, чтобы внешне закодировать блок в последующем видеокадре.
ij
[0046] Ошибка предсказания E(x,y), то есть разница между кодированным блоком I(x,y) и предсказанным блоком P(x,y), может быть представлена как взвешенная сумма базисных функций f(x,y) преобразования:
ij
ij
где x и y определяют местоположение заданного коэффициента в пределах блока видео, и c являются весовыми коэффициентами, иногда называемыми коэффициентами ошибки предсказания. Преобразование обычно выполняется в отношении блока 8×8 (N=8) или 4×4 (N=4). Затем веса c могут квантоваться следующим образом:
ij
ij
l=Q(c,QP),
ij
где l называется квантованными коэффициентами или уровнями, QP является параметром квантования, и Q является матрицей квантования, которая определяет размер шага квантования. Операция квантования вводит потери информации. Однако квантованный коэффициент может быть представлен меньшим количеством битов, таким образом экономя полосу пропускания передачи, объем памяти и ресурсы обработки. Уровень сжатия (потери информации) традиционно управляется посредством регулирования значения QP.
[0047] Квантованные коэффициенты преобразования вместе с векторами движения и некоторым количеством информации управления могут формировать полную закодированную последовательность элементов. Перед передачей от устройства кодирования на устройство декодирования все эти элементы обычно статистически кодируются таким образом, чтобы дополнительно уменьшать количество битов, необходимых для их представления.
[0048] На стороне декодера блок в текущем кадре получается посредством первого конструирования своего предсказания тем же самым способом, что и в кодере, и посредством суммирования с предсказанием сжатой ошибки предсказания. Сжатая ошибка предсказания находится посредством применения обратного преобразования к деквантованным коэффициентам следующим образом:
ij
ij
где r являются деквантованными (также называемыми восстановленными) коэффициентами. Коэффициенты r могут быть вычислены посредством обратного квантования:
ij_
ij
-1
rQ(l,QP).
Разница между восстановленным кадром R(x,y) и первоначальным кадром I(x,y) может называться ошибкой восстановления.
0
0
[0049] Традиционно, квантование коэффициентов преобразования в кодерах-декодерах видео обычно основывается на квантизаторах однородного восстановления (URQ). Правило классификации для квантования данных определяется кодером. Одним примером квантования является так называемая мертвая зона плюс подход однородного порогового квантования (DZ-UTQ). Уравнение ниже определяет такой квантизатор мертвой зоны, где f обозначает параметр мертвой зоны с 0≤f≤0,5:
ij
где l соответствует уровню, ассоциированному с данным QP.
ij
ij
ij
[0050] Концептуально, значение r восстановления, которое соответствует уровню l, может быть получено посредством умножения l на соответствующий QP:
ij
ij
r=l·QP.
ij
ij
Уравнения  и r=l·QP представляют математически упрощенную версию того, что фактически задано для MPEG-4 AVC, поскольку различные коэффициенты масштабирования для соответствующих основных функций пренебрегаются в целях простоты.
[0051] В H.264 и MPEG-4 AVC квантование может быть выполнено согласно следующему уравнению:
где Q представляет матрицу квантования, % представляет модульное деление, и f равен  для внутренних кадров и для внешних кадров. Деквантование коэффициентов может быть выполнено согласно следующему уравнению:
ij
ij
r=l·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 вероятности. Обновление вероятности может быть выполнено процессом перехода между шестьюдесятью четырьмя отдельными состояниями вероятности для «наименее вероятного символа», который наименее вероятен из этих двух выборов двух альтернатив «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).
ij
[0056] Для кодирования отображения значимости могут быть использованы до пятнадцати различных моделей вероятности как для significant_coeff_flag, так и для last_significant_coeff_flag. Выбор моделей и, таким образом, соответствующий индекс контекста могут зависеть от позиции сканирования. Для кодирования ненулевых уровней coeff_abs_level_minus1=│l│-1 могут быть использованы десять контекстов с пятью из этих контекстов, предназначенных для кодирования первого бита двоичного представления, и с другими пятью, выделенными для кодирования 2-14-го битов. Контексты могут быть выбраны модулем 46 CABAC следующим образом:
NumLgl
NumEql
NumLgl
NumEql
1. Параметры  и  устанавливаются равными, соответственно, количеству коэффициентов, закодированных таким образом в блоке, которые больше, чем один и равны одному. Ненулевые уровни кодируются, и, следовательно, параметры  и  обновляются в обратном порядке сканирования, то есть коэффициенты, соответствующие высокочастотным функциям преобразования, кодируются первыми.
2. Контекст для первого бита бинаризованного символа может быть определен посредством:
.
3. Контекст для 2-14-го битов бинаризованного символа может быть выбран посредством:
2
NumLgl
Ctx=min(4, ).
Модуль 46 CABAC может также поддерживать режим обхода с фиксированным распределением. Другие биты в двоичном представлении coeff_abs_level_minus1 могут проходить через режим обхода. Наконец, знаки ненулевых коэффициентов могут быть посланы, используя один бит для каждого ненулевого коэффициента, например где 1 указывает положительный, и 0 указывает отрицательный (или наоборот).
ij
ij
ij
[0057] Желательно найти для каждого блока видео NxN, при заданных его коэффициентах преобразования c, соответствующие квантованные коэффициенты l (которые определяют восстановленные коэффициенты r), таким образом, что среднеквадратическая ошибка (MSE) искажения D между ошибкой предсказания E(x,y) и восстановленной версией ошибки предсказания Ẽ(x,y) минимально подвергается ограничению в скорости передачи R для кодирования коэффициентов. Другими словами, цель состоит в минимизации следующего выражения:
запаса
min[D(E(x,y)-Ẽ(x,y))] при условии R<R.
[0058] Могут быть использованы другие аддитивные метрики искажения вместо MSE, например, интенсивно взвешенная MSE. Проблема ограниченной скорости передачи при минимизации уравнения выше может быть решена, будучи преобразованной к эквивалентной проблеме без ограничений посредством «объединения» (слияния) скорости передачи и искажения посредством использования множителя Лагранжа λ. В этом случае проблема без ограничений становится определением (для фиксированной () уровней коэффициента, которые приводят к минимальной глобальной стоимости по Лагранжу, определенной как:
.
В случае H.264 квадратичная ошибка восстановления
для заданного блока является пропорциональной квадратичной ошибке квантования:
.
ij
Скорость передачи R является количеством битов, требуемых для кодирования квантованных коэффициентов l.
ij
[0059] Предложенные алгоритмы, рассмотренные ниже, находят значения l квантованных коэффициентов, для которых значение глобальной функции стоимости по Лагранжу J(λ) близко к ее минимуму.
[0060] Поскольку преобразование, используемое в MPEG-4 AVC, является ортогональным, стоимость по Лагранжу J(λ) может быть вычислена как:
.
ij
ij
ij
ij
В этом случае j(λ,c,l) является стоимостью по Лагранжу для коэффициента c, когда он квантуется для уровня l. Другими словами,
.
ij
ij
ij
ij
2
Ошибка квантования err(c,l) является пропорциональной (r-c):
.
Снова, QP представляет параметр квантования, и % представляет модульное деление. N(QP%6,i,j) представляет матрицу нормализации. Качество кодирования обычно увеличивается, когда QP становится меньше. Таким образом, меньшие значения QP обычно соответствуют меньшему квантованию и, таким образом, более высокому качеству кодирования. Альтернативно, качество кодирования может уменьшиться, когда QP становится меньше, если QP были определены таким способом.
bits
m
p,
m
ij
ij
ij
[0061] В случае метрик Q и R квантования и деквантования, значения матрицы нормализации N(QP%6,i,j)) могут зависеть только от местоположения в блоке, определенного посредством значения i и j и QP%6=0,1,..., 5. Количество битов («(l)»), требуемых для кодирования значения l, может быть вычислено посредством кодирования l, используя часть CABAC, например, как определено для ITU H.264. Однако, вместо того, чтобы выполнять все этапы CABAC, модуль 40 квантования RD может только выполнять первые два этапа CABAC в целях квантования. Эти первые два этапа включают в себя преобразование в двоичную форму и выбор контекстной модели. Затем вместо того, чтобы воспользоваться арифметическим кодером, чтобы выполнить двоичное арифметическое кодирование, модуль 40 квантования RD может оценивать количество битов, требуемых для кодирования каждого приемника. Предполагая, что контекст, выбранный для данного приемника, соответствует состоянию  в конечном автомате, оцененное количество битов, требуемых для кодирования данного приемника, может быть представлено как энтропия вероятности  назначенная на состояние . Это может быть достаточно для модуля 40 квантования RD, чтобы определить контексты для каждого приемника для каждого макроблока.
ij
ij
[0062] Для каждого коэффициента cсамое большее 3 возможных значения уровня │l│ могут быть проверены: 0,  и . Как в примере с одним проходом, в этом подходе с двумя проходами значения блока 4×4  и  могу быть вычислены следующим образом:
i
[0063] Можно предположить, что коэффициенты в данном блоке упорядочиваются (сканируются), используя зигзагообразное сканирование, которое приводит к одномерному упорядоченному вектору коэффициентов. Упорядоченные коэффициенты могут быть обозначены как c, где i=0,..., М., и, например, М равен 15 для блоков 4×4 и 63 для блоков 8×8.
i
[0064] В соответствии с настоящим описанием модуль 40 квантования RD может генерировать квантованные коэффициенты/уровни l следующим образом:
k
k
k
1. Вычислять стоимость по Лагранжу J (λ) и генерировать вектор квантованных коэффициентов l, предполагая, что коэффициент c, k=M, M-1,..., 0, является последним ненулевым коэффициентом в блоке, то есть last_significant_coeff_flag для сканирования позиции k равен 1.
i
i,
i
i
floor
ceil
a. Для каждого коэффициента c, i=k-1,..., 0, вычислять свою стоимость по Лагранжу J(λ,cl), когда квантованное значение l равно предварительно выбранному набору значений, например, 0,lи l.
i
i,
i
k
i,
i
i
2. Отобрать значение l, для которого J(λ,cl) минимизируется, и обновить стоимость по Лангранжу J(λ), используя J(λ,cl), соответствующее выбранному значению l.
[0065] Скорость способов квантования, выполняемых модулем 40 квантования RD, может быть увеличена следующим образом.
i
float
floor
ceil
floor
ceil
floor
1. Если коэффициент c ближе (как измерено, например, абсолютным расстоянием между l и I или I) к I, чем к I, то может быть рассмотрено только значение I на этапе 1.a выше.
k
floor
ceil
floor
k
k
2. Если коэффициент c ближе к I, чем к I и I равен нулю, то коэффициент c не может быть последним ненулевым коэффициентом. Следовательно, в этом случае вычисление стоимости по Лагранжу J(λ) может быть пропущено для этого значения k.
k
k
3. Вычисление J(λ) может быть закончено, когда J(λ) начинает увеличиваться с уменьшением k.
[0066] По существу, модуль 40 квантования RD может квантовать коэффициенты блока видео для процесса кодирования видео, который поддерживает CABAC. Модуль 40 квантования RD может генерировать множество наборов квантованных коэффициентов для блока видео, в котором каждый из наборов квантованных коэффициентов определяется на основании предположений, что конкретный один из коэффициентов блока видео соответствует последнему ненулевому коэффициенту блока видео, оценивать множество стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, в котором оцененные стоимости соответственно основываются на различных одних из наборов квантованных коэффициентов, выбирать заданный один из наборов квантованных коэффициентов, ассоциированных с самой низкой стоимостью, и выводить заданный один из наборов квантованных коэффициентов на модуль 46 кодирования CABAC. Затем модуль 46 кодирования CABAC может выполнять процесс CABAC в отношении заданного одного из наборов квантованных коэффициентов для статистического кодирования данного одного из наборов квантованных коэффициентов в битовый поток и выводить битовый поток.
[0067] Модуль 40 квантования может оценивать стоимости посредством вычисления функций стоимости по Лагранжу, ассоциированных с моделью «скорость передачи - искажение». Конкретная затрата, ассоциированная с выбранным одним из наборов квантованных коэффициентов, определяет самое низкое количество битов, ассоциированных со множеством стоимостей. Модуль 40 квантования может сохранять значение, указывающее самое низкое количество битов, которое ассоциируется с конкретной стоимостью.
[0068] Функции стоимости по Лагранжу могут определять наборы стоимостей по Лагранжу индивидуального коэффициента, ассоциированных с каждым одним из квантованных коэффициентов в наборах квантованных коэффициентов. Модуль 40 квантования вычисляет наборы стоимостей по Лагранжу индивидуального коэффициента, ассоциированных с квантованными коэффициентами в наборах квантованных коэффициентов для значений квантованных коэффициентов, равных нулю, минимальному значению и максимальному значению. Примеры этих значений описаны выше. В целом, минимальное значение основано на абсолютном значении индивидуального одного из коэффициентов блока видео, параметра квантования и матрицы квантования, и минимальное значение содержит максимальное значение плюс один.
[0069] Чтобы ускорить этот процесс квантования, модуль 40 квантования может реализовывать способы ускорения, которые упомянуты выше. Например, для индивидуального одного из квантованных коэффициентов, если индивидуальный один из квантованных коэффициентов является близким к минимальному значению, чем к максимальному значению, модуль 40 квантования может пропустить вычисление стоимости по Лагранжу индивидуального коэффициента, ассоциированной с индивидуальным одним из квантованных коэффициентов, для значений, равных максимальному значению.
[0070] Кроме того, если конкретный один из коэффициентов блока видео, соответствующего последнему ненулевому коэффициенту блока видео для одного из наборов квантованных коэффициентов, определяет значение, более близкое к минимальному значению, чем к максимальному значению, и если минимальное значение равно нулю, модуль 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 опорного кадра, которое обеспечивает опорные блоки из компенсации движения и также формирует декодированное видео для приводного устройства отображения (такого как устройство 28 на фиг.1).
[0074] Фиг.5 является блок-схемой, иллюстрирующей методику с одним проходом, выполняемую кодером 50 видео. Как показано, модуль 40 квантования искажения скорости передачи (RD) генерирует наборы квантованных коэффициентов на основании предположений о ненулевых коэффициентов (101). В частности, модуль 40 квантования RD предполагает, что данный коэффициент является последним ненулевым коэффициентом, и на основании этого предположения вычисляет наборы коэффициентов для блока видео. Затем модуль 40 квантования RD предполагает, что другой коэффициент является последним ненулевым коэффициентом, и на основании этого предположения генерирует другой набор коэффициентов для блока видео и т.д.
[0075] Для каждого из наборов квантованных коэффициентов блок квантования оценивает стоимости на основании функций стоимости по Лагранжу (102). В частности, для каждого набора модуль 40 квантования RD определяет индивидуальные функции стоимости по Лагранжу для каждого коэффициента во множестве возможных значений, например ноль, минимальное значение и максимальное значения. Минимальное значение может быть основано на абсолютном значении индивидуального одного из коэффициентов блока видео, параметре квантования и матрице квантования (или их параметра), и максимальное значение может содержать максимальное значение плюс один.
[0076] Модуль 40 квантования RD выбирает набор квантованных коэффициентов, которые имеют самую низкую глобальную стоимость по Лагранжу (103). В частности, модуль 40 квантования RD суммирует самые низкие индивидуальные стоимости по Лагранжу для каждого коэффициента для набора и повторяет этот процесс для каждого возможного набора. Снова стоимости по Лагранжу осуществляют балансировку стоимости скорости передачи и искажения. Модуль 40 квантования RD выбирает набор, имеющий глобальную самую низкую стоимость по Лагранжу (103), и модуль 40 квантования RD выводит выбранный набор квантованных коэффициентов на модуль 46 кодирования CABAC (104). Модуль 46 кодирования CABAC выполняет CABAC на основании выбранного набора квантованных коэффициентов и любых других параметров синтаксической структуры для генерирования закодированного битового потока (105) и выводит закодированный битовый поток (106).
[0077] Фиг.6 является другой более подробной блок-схемой, примерным процессом оценки стоимостей. В частности, модуль 40 квантования RD вычисляет индивидуальные функции стоимости по Лагранжу для каждого коэффициента для значения нуля, минимального значения и максимального значения. Снова, минимальное значение может быть основано на абсолютном значении индивидуального одного из коэффициентов блока видео, параметре квантования и матрице квантования (или параметре, отображенном от матрицы), и максимальное значение может содержать минимальное значение плюс один.
floor
ceil
ij
[0078] Как отмечено выше, один пример того, как модуль 40 квантования RD может вычислять минимальное значение (I) и максимальное значение (I) для коэффициента c для блоков 4×4 является следующим:
float
float
Снова, операция floor(I) представляет самое низкое значение, ассоциированное с I, QP представляет параметр квантования, и Q представляет матрицу квантования, такую как матрица квантования, определенная для 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, если индивидуальный квантованный коэффициент ближе к минимуму, чем к максимуму (ветка «да» 121), модуль 40 квантования RD может пропустить вычисление стоимости по Лагранжу индивидуального коэффициента, ассоциированной с индивидуальным квантованным коэффициентом для максимального значения (122). В этом случае модуль 40 квантования RD может предположить, что стоимость по Лагранжу индивидуального коэффициента, ассоциированная с индивидуальным квантованным коэффициентом, будет минимизирована или при нуле, или минимальном значении. Соответственно, в этом случае модуль 40 квантования RD может избежать ненужных вычислений, ассоциированных с вычислением стоимости по Лагранжу, ассоциированной с индивидуальным квантованным коэффициентом для максимального значения. Однако вычисление не пропускается (123), если индивидуальный квантованный коэффициент не является более близким к минимуму, чем к максимуму (ветка «нет» 121).
[0081] В способе согласно фиг.8 модуль 40 квантования RD определяет, является ли минимальное значение равным нулю (131), и является ли конкретный коэффициент, соответствующий последнему ненулевому коэффициенту, более близким к минимуму, чем к максимуму (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 может генерировать квантованные коэффициенты согласно этому подходу с двумя проходами, как описано более подробно ниже.
ij
[0084] Подобно подходу с единственным проходом предложенный алгоритм с двумя проходами, рассмотренный ниже, находит значения квантованных коэффициентов l, для которых значение глобальной функции стоимости по Лагранжу J(λ) является близким к ее минимуму. Подход с двумя проходами может быть характеризован более низкой сложностью, чем способы уменьшения глобальной функции стоимости по Лагранжу J(λ) на основании исчерпывающего поиска.
ij
ij
[0085] Для каждого коэффициента c самое большее 3 возможных значениях уровня │l│ могут быть проверены: 0,  и  Подобно примеру с единственным проходом, в этом подходе с двумя проходами, значения  и  блока 4×4 могут быть вычислены следующим образом:
ij
ij
[0086] Кроме того, чтобы уменьшить сложность, если коэффициент c является более близким к , чем к  (например, как измерено абсолютным расстоянием между  и  или ), рассматривается только значение . Если c является более близким к уровню 0, чем 1, ему может быть назначен 0 без дополнительного анализа. Другими словами, способы согласно фиг.7 могут быть применены во время второго прохода подхода с двумя проходами.
i
[0087] Можно предположить, что коэффициенты в данном блоке упорядочены (сканированы), используя зигзагообразное сканирование (например, как показано на фиг.3), приводящее к одномерному упорядоченному вектору коэффициентов. Упорядоченные коэффициенты могут быть обозначены как c, где i=0,..., М, и, например, М равен 15 для блоков 4×4 и 63 для блоков 8×8.
i
[0088] Модуль 40 квантования RD может использовать следующие символы, чтобы вычислять биты, необходимые для кодирования значения l, в дополнение к знаковому биту:
significant_coeff_flag, который указывает, является ли коэффициент ненулевым,
last_significant_coeff_flag, который идентифицирует последний ненулевой коэффициент, и
coeff_abs_level_minus1, который представляет абсолютное значение минус 1 коэффициента.
i
В случае significant_coeff_flag и last_significant_coeff_flag контекст и, следовательно, биты, требуемые для кодирования символов, могут зависеть только от позиции i сканирования. Однако контексты для приемников (контейнеров) coeff_abs_level_minus1 (например, включая первый приемник - greater_than_1 symbol) могут зависеть от значений других ненулевых уровней, сканированных в обратном порядке. Другими словами, контексты для l зависят от значений квантованных коэффициентов с индексами j, где j>i.
i
k
k
[0089] Следовательно, модуль 40 квантования RD может получать квантованные коэффициенты/уровни l в двух отдельных проходах. В первом проходе модуль 40 квантования RD может оценивать, какой коэффициент должен быть последним ненулевым коэффициентом. Этот оцененный последний ненулевой коэффициент может быть обозначен как c. Во втором проходе модуль 40 квантования RD может определять и генерировать заключительные значения квантованных коэффициентов, предполагая, что коэффициент c на самом деле является последним ненулевым коэффициентом в блоке.
[0090] При реализации могут быть рассмотрены только коэффициенты  в первом проходе посредством модуля 40 квантования RD, где
1
i является наибольшим значением i, для которого , и
0
0
i является наибольшим значением i, для которого , или если такой индекс не существует i=0.
sum
i
i
i
0
1
i
Кроме того, чтобы уменьшить сложность, значение J может быть предварительно вычислено в качестве суммы ошибок квантования err(c,I), когда коэффициенты c, i=i,..., i, квантуются для I=0 следующим образом:
[0091] Модуль 40 квантования RD может выполнять некоторые или все из следующих этапов в первом проходе, который используется для оценки последнего ненулевого коэффициента блока видео.
1) Если для коэффициента , :
sum
a) Обновление значения J:
b) Вычисление приближенного значения стоимости по Лагранжу  блока, когда  является последним ненулевым коэффициентом, как:
last=1
last=0
В этом случае bits является приближенным значением количества битов, требуемых для указания, что  является последним ненулевым коэффициентом (то есть количество битов для кодирования last_significant_coeff_flag, равного 1). Кроме того, bits является приближенным значением количества битов, требуемых для указания, что  не является последним ненулевым коэффициентом (то есть количество битов для кодирования last_significant_coeff_flag, равного 0).
0
0
0
c) Обновление начального индекса i до i=i+1.
i
0
1
2) Для коэффициентов c, где i=i, …, i:
sum
a) Обновление значения J:
i
i
b) Нахождение стоимости по Лагранжу J(λ,c,1), когда c квантуется в 0.
i
sum
c) Если коэффициенты cявляются более близкими к 0, чем к 1, вычисляется значение обновления J следующим образом:
i
d) Если коэффициенты c являются более близкими к 1, чем к 0, вычисляются два дополнительных значения стоимости по Лагранжу:
i)  квантуется в 1 и не является последним ненулевым коэффициентом,
ii)  квантуется в 1 и является последним ненулевым коэффициентом.
sum
Обновление значения J:
.
i
i
Приближенное значение стоимости по Лагранжу J(λ), когда c является последним ненулевым коэффициентом:
При вычислении битов, необходимых для кодирования значения квантуемого коэффициента, равного 1, модуль 40 квантования RD фиксирует контекст для символа greater_than_1, который должен быть одним из 5 возможных значений.
k
k
Коэффициент c с наименьшим соответствующим значением J(λ) предполагается последним ненулевым коэффициентом в блоке.
[0092] На этапах, рассмотренных выше, модуль 40 квантования RD оценивает последний ненулевой коэффициент блока видео, без явного рассмотрения каждого возможного сценария для каждого возможного последнего ненулевого коэффициента. В этом случае модуль 40 квантования RD оценивает последний ненулевой коэффициент посредством аппроксимации стоимостей, ассоциированных с кодированием блока видео с помощью CABAC. Различные одни из аппроксимированных стоимостей соответствуют различным коэффициентам, являющимся последним ненулевым коэффициентом. Конечный оцененный последний ненулевой коэффициент определяет самую низкую аппроксимированную стоимость. Этап 1 можно считать особым случаем, в то время как этап 2 может быть выполнен относительно большинства коэффициентов.
sum
sum
sum
i
sum
sum
sum
sum
i
[0093] На этапах, рассмотренных выше, модуль 40 квантования RD определяет различные одни из аппроксимированных стоимостей последовательным способом, последовательно рассматривая каждый из коэффициентов блока видео, являющийся последним ненулевым коэффициентом. При этом модуль 40 квантования RD последовательно регулирует суммарную стоимость вверх и вниз, рассматривая каждый из коэффициентов блока видео, как являющийся последним ненулевым коэффициентом. В частности этап 2 (a), рассмотренный выше, где J обновляется как J=J-err(c,0), может заставлять накопленную стоимость уменьшаться. В этом случае этап 2 (a) может заставлять J становиться меньше. С другой стороны, этапы 2 (c) и 2 (d), где значение J обновляется как J=J+J(λ,c,0) или как , могут заставлять накопленную стоимость становиться больше. Таким образом, модуль 40 квантования RD определяет различные одни из аппроксимированных стоимостей последовательным способом, последовательно рассматривая каждый из коэффициентов блока видео, являющийся последним ненулевым коэффициентом, и при этом суммирует полную стоимость с регулированиями вверх и вниз. Таким образом, модуль 40 квантования RD оценивает последний ненулевой коэффициент блока видео, без явного рассмотрения каждого возможного сценария для каждого возможного последнего ненулевого коэффициента.
k
i
i
i
i
j
[0094] После того как модуль 40 квантования RD оценил последний ненулевой коэффициент, модуль 40 квантования RD может выполнять второй проход, который генерирует набор квантованных коэффициентов для блока видео на основании предположения, что оцененный последний ненулевой коэффициент на самом деле является последним ненулевым коэффициентом блока видео. В частности, во втором проходе модуль 40 квантования RD определяет окончательные значения для каждого квантуемого коэффициента, предполагая, что коэффициент c, выбранный в первом проходе, на самом деле является последним ненулевым коэффициентом в блоке видео. В этом случае для каждого коэффициента c, i=k,..., 0 модуль 40 квантования RD находит значение уровня I, для которого стоимость по Лагранжу J минимизируется. Как описано выше, могут быть рассмотрены три различных значения уровня I, например, 0,  и . Чтобы вычислить контекст при кодировании значения уровня I, могут быть использованы уже выбранные значения для уровней I, j=k, …, i+1.
[0095] Другими словами, генерирование набора квантованных коэффициентов может содержать вычисление стоимостей по Лагранжу, ассоциированных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для блока видео как имеющего значения, равные нулю, минимальному значению и максимальному значению. Снова, минимальное значение может быть основано на абсолютном значении индивидуального одного из коэффициентов блока видео, параметра квантования и матрицы квантования, и максимальное значение может содержать минимальное значение плюс один.
[0096] Фиг.10 является блок-схемой, иллюстрирующей способ кодирования, которая может использовать подход с двумя проходами, рассмотренный более подробно выше. В этом случае модуль 40 квантования RD оценивает последний ненулевой коэффициент блока видео (151). Как рассмотрено выше, этот этап оценки (151) может включать в себя аппроксимацию стоимостей, ассоциированных с кодированием блока видео с помощью CABAC, и различные одни из аппроксимированных стоимостей могут соответствовать различным коэффициентам, являющимся последним ненулевым коэффициентом. В этом случае конечный оцененный последний ненулевой коэффициент определяет самую низкую аппроксимированную стоимость.
[0097] Кроме того, во время этапа оценки (151) модуль 40 квантования RD может определять различные одни из аппроксимированных стоимостей последовательным способом, последовательно рассматривая каждый из коэффициентов блока видео, являющийся последним ненулевым коэффициентом. При этом модуль 40 квантования RD последовательно регулирует суммированную стоимость вверх и вниз, рассматривая каждый из коэффициентов блока видео, являющийся последним ненулевым коэффициентом.
[0098] Затем модуль 40 квантования RD генерирует набор квантованных коэффициентов на основании предположения, что оцененный последний ненулевой коэффициент на самом деле является последним ненулевым коэффициентом (152). Этап генерирования (152) может включать в себя вычисление стоимостей по Лагранжу, ассоциированных с каждым возможным ненулевым квантованным коэффициентом в наборе квантованных коэффициентов для блока видео как имеющих значения, равные нулю, минимальное значение и максимальное значение. После генерирования модуль 40 квантования RD может выводить набор квантованных коэффициентов на модуль 46 CABAC, который выполняет CABAC в отношении сгенерированного набора квантованных коэффициентов, для статистического кодирования генерированного набора квантованных коэффициентов в битовый поток (153). Затем может быть выведен закодированный битовый поток и, возможно, модулирован и передан на другое устройство.
[0099] Способы настоящего изобретения могут быть воплощены в широком разнообразии устройств или приборов, включающих в себя беспроводный телефон и интегральную схему (IC) или набор схем IC (то есть комплект микросхем). Любые компоненты, модули или блоки были описаны и обеспечены, чтобы подчеркнуть функциональные аспекты, и они не обязательно требуют реализации посредством различных модулей аппаратного обеспечения и т.д.
[00100] Соответственно, способы, описанные в настоящем описании, могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в интегральном логическом устройстве или отдельно как дискретные, но интероперабельные логические устройства. Если реализовано в программном обеспечении, способы могут быть реализованы, по меньшей мере частично, считываемым компьютером носителем, содержащим команды, которые когда выполняются, реализуют один или более способов, описанных выше. Считываемое компьютером запоминающее устройство может формировать часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Считываемый компьютером носитель может содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флеш-память, запоминающие устройства на магнитных или оптических дисках и т.п. Способы дополнительно или альтернативно могут быть реализованы, по меньшей мере частично, считываемым компьютером коммуникационным носителем, который переносит или передает код в форме команды или структур данных и который может быть доступен, считан и/или выполнен компьютером.
[00101] Код может быть выполнен одним или более процессорами, такими как один или более цифровых сигнальных процессоров (процессоров DSP), микропроцессоров общего назначения, специализированных интегральных схем (схем ASIC), программируемых пользователем вентильных матриц (матриц FPGA) или других эквивалентных интегрированных или дискретных логических схем. Соответственно, используемый в настоящем описании термин «процессор» может относиться к любой предшествующей структуре или любой другой структуре, подходящей для выполнения способов, описанных в настоящем описании. В дополнение, в некоторых аспектах функциональные возможности, описанные в настоящем описании, могут быть обеспечены в выделенных модулях программного обеспечения или модулях аппаратного обеспечения, сконфигурированных для кодирования и декодирования, или включенных в объединенный кодер-декодер (CODEC) видео. Кроме того, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
[00102] Были описаны различные аспекты настоящего изобретения. Эти и другие аспекты находятся в пределах следующей формулы изобретения.