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

Изобретение относится к вычислительной технике. Технический результат заключается в согласованности порядка сканирования как для кодирования отображения значимости коэффициентов преобразования, так и для кодирования уровней коэффициентов преобразования. Способ кодирования коэффициентов преобразования, ассоциированных с остаточными данными видео, в процессе кодирования видео, содержащий компоновку блока коэффициентов преобразования в один или более поднаборов коэффициентов преобразования на основании порядка сканирования; кодирование первой части уровней коэффициентов преобразования в каждом поднаборе, причем первая часть уровней включает в себя по меньшей мере значимость коэффициентов преобразования в каждом поднаборе; и кодирование второй части уровней коэффициентов преобразования в каждом поднаборе, причем кодирование первой части уровней коэффициентов преобразования содержит кодирование значимости коэффициентов преобразования в каждом поднаборе в соответствии с порядком сканирования, и в котором кодирование второй части уровней из уровней коэффициентов преобразования содержит кодирование уровней коэффициентов преобразования в каждом поднаборе в соответствии с порядком сканирования, при этом порядок сканирования включает в себя как шаблон сканирования, так и направление сканирования. 4 н. и 36 з.п. ф-лы, 30 ил., 5 табл.

 

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/450,555, поданной 8 марта 2011, предварительной заявки на патент США № 61/451,485, поданной 10 марта 2011, предварительной заявки на патент США № 61/451,496, поданной 10 марта 2011, предварительной заявки на патент США № 61/452,384, поданной 14 марта 2011, предварительной заявки на патент США № 61/494,855, поданной 8 июня 2011, и предварительной заявки на патент США № 61/497,345, поданной 15 июня 2011, каждая из которых полностью включена в настоящее описание посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0002] Настоящее описание относится к кодированию видео и, более конкретно, к способам для сканирования и кодирования коэффициентов преобразования, сгенерированных процессами кодирования видео.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающих в себя цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиа плееры, игровые видео устройства, игровые видео приставки, сотовые или спутниковые радиотелефоны, устройства видео телеконференций и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как способы, описанные в стандартах, определенных в MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, расширенное кодирование видео (AVC), в настоящее время разрабатываемый стандарт высокоэффективного кодирования видео (HEVC), и расширения таких стандартов для передачи, приема и хранения цифровой видео информации более эффективно.

[0004] Способы сжатия видео включают в себя пространственное предсказание и/или временное предсказание для уменьшения или удаления избыточности, свойственной видео последовательностям. Для кодирования видео, основанного на блоке, видео кадр или вырезка могут быть фрагментированы на блоки. Каждый блок может быть дополнительно фрагментирован. Блоки в интра- (внутренне) кодированных (I) кадре или вырезке кодируются, используя пространственное предсказание относительно опорных выборок в соседних блоках в том же кадре или вырезке. Блоки в интер- (внешне) кодированном (P или B) кадре или вырезке могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в том же кадре или вырезке или временное предсказание относительно опорных выборок в других опорных кадрах. Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между оригинальным блоком, который должен быть закодирован, и предсказывающим блоком.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0006] В целом, настоящее раскрытие описывает устройства и способы для кодирования коэффициентов преобразования, ассоциированных с блоком остаточных видео данных, в процессе кодирования видео. Способы, структуры и методы, описанные в настоящем раскрытии, применимы для процессов кодирования видео, которые используют статистическое кодирование (например, контекстное адаптивное двоичное арифметическое кодирование (CABAC)) для кодирования коэффициентов преобразования. Аспекты настоящего раскрытия включают в себя выбор порядка сканирования как для кодирования отображения значимости, так и для кодирования уровня и знака, а также выбор контекстов для статистического кодирования, совместимого с выбранным порядком сканирования. Способы, структуры и методы настоящего раскрытия применимы для использования как в кодере видео, так и в декодере видео.

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

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

[0009] Дополнительно, настоящее раскрытие предлагает, чтобы в некоторых примерах сканирование отображения значимости и сканирование уровня коэффициентов были выполнены в последовательных сканированиях и в соответствии с одним и тем же порядком сканирования. В одном аспекте порядком сканирования является обратный порядок сканирования. Последовательные сканирования могут состоять из нескольких проходов сканирования. Каждый проход сканирования может состоять из прохода сканирования элементов синтаксиса. Например, первым сканированием является сканирование отображения значимости (также называемое контейнером (накопителем) 0 уровня коэффициентов преобразования), второе сканирование имеет контейнер один уровней коэффициентов преобразования в каждом поднаборе, третье сканирование может иметь контейнер два уровней коэффициентов преобразования в каждом поднаборе, четвертое сканирование имеет оставшиеся контейнеры уровней коэффициентов преобразования, и пятое сканирование выполняется для знака уровней коэффициентов преобразования. Проход для знака может иметь место в любой момент после прохода отображения значимости. Дополнительно, количество проходов сканирования может быть уменьшено посредством кодирования более чем одного элемента синтаксиса для каждого прохода. Например, один проход сканирования для элементов синтаксиса использует закодированные контейнеры, и второй проход сканирования для элементов синтаксиса использует контейнеры обхода (например, оставшиеся уровни и знак). В этом контексте контейнером является часть строки контейнеров, которая статистически кодируется. Заданный элемент синтаксиса с недвоичным значением отображается в двоичную последовательность (так называемую строку контейнеров).

[0010] Настоящее раскрытие также предлагает, чтобы в некоторых примерах коэффициенты преобразования были закодированы, используя CABAC, в двух различных областях контекста. Выведение контекста для первой области контекста зависит от позиции коэффициентов преобразования, в то время как выведение контекста для второй области зависит от казуальных (случайных) соседних коэффициентов преобразования. В другом примере вторая область контекста может использовать две различные модели контекста в зависимости от местоположения коэффициентов преобразования.

[0011] В одном примере раскрытия предложен способ кодирования коэффициентов преобразования, ассоциированных с остаточными данными видео, в процессе кодирования видео. Способ содержит компоновку блока коэффициентов преобразования в один или более поднаборов коэффициентов преобразования на основании порядка сканирования, кодирование первой части уровней коэффициентов преобразования в каждом поднаборе, причем первая часть уровней включает в себя по меньшей мере значимость коэффициентов преобразования в каждом поднаборе, и кодирование второй части уровней коэффициентов преобразования в каждом поднаборе.

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

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

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

[0015] Подробности одного или более примеров приводятся в сопроводительных чертежах и описании, представленных ниже. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей и из формулы изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0016] Фиг. 1 является концептуальной диаграммой, иллюстрирующей процесс кодирования отображения значимости.

[0017] Фиг. 2 является концептуальной диаграммой, иллюстрирующей шаблоны и направления сканирования для кодирования отображения значимости.

[0018] Фиг. 3 является концептуальной диаграммой, иллюстрирующей способ сканирования для кодирования уровня блока преобразования.

[0019] Фиг. 4 является блок-схемой, иллюстрирующей примерную систему кодирования видео.

[0020] Фиг. 5 является блок-схемой, иллюстрирующей примерный кодер видео.

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

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

[0023] Фиг. 8 является концептуальной диаграммой, иллюстрирующей первый поднабор коэффициентов преобразования в соответствии с обратным порядком горизонтального сканирования.

[0024] Фиг. 9 является концептуальной диаграммой, иллюстрирующей первый поднабор коэффициентов преобразования в соответствии с обратным порядком вертикального сканирования.

[0025] Фиг. 10 является концептуальной диаграммой, иллюстрирующей области контекста для кодирования отображения значимости.

[0026] Фиг. 11 является концептуальной диаграммой, иллюстрирующей примерные области контекста для кодирования отображения значимости, использующего обратный порядок сканирования.

[0027] Фиг. 12 является концептуальной диаграммой, иллюстрирующей примерных казуальных соседей для статистического кодирования, использующего прямой порядок сканирования.

[0028] Фиг. 13 является концептуальной диаграммой, иллюстрирующей примерных казуальных соседей для статистического кодирования, использующего обратный порядок сканирования.

[0029] Фиг. 14 является концептуальной диаграммой, иллюстрирующей примерные области контекста для статистического кодирования, использующего обратный порядок сканирования.

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

[0031] Фиг. 16 является концептуальной диаграммой, иллюстрирующей другой пример областей контекста для CABAC, использующего обратный порядок сканирования.

[0032] Фиг. 17 является концептуальной диаграммой, иллюстрирующей другой пример областей контекста для CABAC, использующего обратный порядок сканирования.

[0033] Фиг. 18 является концептуальной диаграммой, иллюстрирующей другой пример областей контекста для CABAC, использующего обратный порядок сканирования.

[0034] Фиг. 19 является блок-схемой, иллюстрирующей примерный блок статистического кодирования.

[0035] Фиг. 20 является блок-схемой, иллюстрирующей примерный декодер видео.

[0036] Фиг. 21 является блок-схемой, иллюстрирующей примерный блок статистического декодирования.

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

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

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

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

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

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

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ

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

[0047] Для кодирования видео в соответствии со стандартом высокоэффективного кодирования видео (HEVC), в настоящее время разрабатываемым совместной объединенной командой для кодирования видео (JCT-VC), в качестве одного примера, видео кадр может быть фрагментирован на блоки кодирования. Блок кодирования в целом относится к области изображения, которая служит базовым блоком, к которому применяются различные инструменты кодирования для сжатия видео. Блок кодирования обычно является квадратным (хотя не обязательно), и может быть рассмотрен как аналогичный так называемому макроблоку, например, в соответствии с другими стандартами кодирования видео, такими как ITU-T H.264. Кодирование, в соответствии с некоторыми из в настоящее время предложенных аспектов развития стандарта HEVC, описано ниже в настоящей заявке в целях иллюстрации. Однако способы, описанные в настоящем раскрытии, могут быть полезны для других процессов кодирования видео, таких как процессы, определенные в соответствии с H.264 или другим стандартом, или составляющие собственность процессы кодирования видео.

[0048] Чтобы достигнуть желаемой эффективности кодирования, блок кодирования (CU) может иметь переменные размеры в зависимости от видеоконтента. В дополнение, блок кодирования может быть разбит на меньшие блоки для предсказания или преобразования. В частности, каждый блок кодирования может быть дополнительно фрагментирован на блоки предсказания (блоки PU) и блоки преобразования (блоки TU). Блоки предсказания могут быть рассмотрены как аналогичные так называемым фрагментам (разделениям) в соответствии с другими стандартами кодирования видео, такими как стандарт H.264. Блок преобразования (TU) в целом относится к блоку остаточных данных, к которым применяется преобразование, чтобы сформировать коэффициенты преобразования.

[0049] Блок кодирования обычно имеет компоненту яркости, обозначенную как Y, и две компоненты цветности, обозначенные как U и V. В зависимости от формата дискретизации видео, размер компонент U и V, в терминах количества выборок, может быть одинаковым или отличаться от размера компоненты Y.

[0050] Чтобы закодировать блок (например, блок предсказания данных видео), сначала выводится предсказатель для блока. Предсказатель, также называемый предсказывающим блоком, может быть выведен или с помощью интра-предсказания (I) (то есть, пространственного предсказания) или интер-предсказания (P или B) (то есть, временного предсказания). Следовательно, некоторые блоки предсказания могут быть интра-кодированы (I), используя пространственное предсказание относительно опорных выборок в соседних опорных блоках в одном и том же кадре (или вырезке), и другие блоки предсказания могут быть однонаправлено внешне кодированы (P) или двунаправлено внешне кодированы (B) относительно блоков опорных выборок в других ранее закодированных кадрах (или вырезках). В каждом случае опорные выборки могут быть использованы для формирования предсказывающего блока для блока, который должен быть закодирован.

[0051] После идентификации предсказывающего блока, определяется разность между оригинальным блоком данных видео и его предсказывающим блоком. Эта разность может называться остаточными данными предсказания, и указывает пиксельные разности между пиксельными значениями в блоке, который должен быть закодирован, и пиксельными значениями в предсказывающем блоке, выбранном для представления закодированного блока. Чтобы достигнуть лучшего сжатия, остаточные данные предсказания могут быть преобразованы, например, используя дискретное косинусное преобразование (DCT), целочисленное преобразование, преобразование Карунена-Лева (Karhunen-Loeve) (K-L) или другое преобразование.

[0052] Остаточные данные в блоке преобразования, таком как TU, могут быть скомпонованы в двумерном (2D) массиве значений пиксельной разности, находящихся в пространственной, пиксельной области. Преобразование преобразовывает остаточные пиксельные значения в двумерный массив коэффициентов преобразования в области преобразования, такой как частотная область. Для дополнительного сжатия коэффициенты преобразования могут быть квантованы прежде статистического кодирования. Статистический кодер затем применяет статистическое кодирование, такое как контекстное адаптивное кодирование с переменной длиной кода (CAVLC), контекстное адаптивное двоичное арифметическое кодирование (CABAC), статистическое кодирование с фрагментированием интервала вероятности (PIPE) и т.п., к квантованным коэффициентам преобразования.

[0053] Для выполнения статистического кодирования блока квантованных коэффициентов преобразования обычно выполняется процесс сканирования таким образом, чтобы двумерный (2D) массив квантованных коэффициентов преобразования в блоке был обработан в соответствии с конкретным порядком сканирования в упорядоченный одномерный (1D) массив, то есть, вектор, коэффициентов преобразования. Статистическое кодирование применяется в одномерном (1-D) порядке коэффициентов преобразования. Сканирование квантованных коэффициентов преобразования в блоке преобразования преобразует в последовательную форму 2D массив коэффициентов преобразования для статистического кодера. Отображение значимости может быть сгенерировано для указания позиций значимых (то есть, ненулевых) коэффициентов. Сканирование может быть применено для сканирования уровней значимых (то есть, ненулевых) коэффициентов и/или для кодирования знаков значимых коэффициентов.

[0054] Для DCT, в качестве примера, часто имеется более высокая вероятность ненулевых коэффициентов по направлению к левому верхнему углу (то есть, низкочастотной области) 2D блока преобразования. Может быть желательно сканировать коэффициенты способом, который увеличивает вероятность группирования ненулевых коэффициентов вместе в одном конце преобразованной в последовательную форму серии коэффициентов, разрешая нулевым коэффициентам группироваться вместе по направлению к другому концу преобразованного в последовательную форму вектора и более эффективно кодироваться как серии нулей. Поэтому порядок сканирования может быть важен для эффективного статистического кодирования.

[0055] В качестве одного примера, так называемый диагональный (или волнового фронта) порядок сканирования был принят для использования при сканировании квантованных коэффициентов преобразования в стандарте HEVC. Альтернативно, могут быть использованы зигзагообразный, горизонтальный, вертикальный или другие порядки сканирования. Посредством преобразования и квантования, как упомянуто выше, ненулевые коэффициенты преобразования в целом располагаются в низкочастотной области по направлению к верхней левой области блока, например, где преобразованием является DCT. В результате после процесса диагонального сканирования, который может сначала пересечь верхнюю левую область, ненулевые коэффициенты преобразования обычно более вероятно должны быть расположены во фронтальной части сканирования. Для процесса диагонального сканирования, который сначала пересекает из более нижней правой области, ненулевые коэффициенты преобразования обычно, более вероятно, должны быть расположены в задней части сканирования.

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

[0057] Чтобы достигнуть этой задачи размещения большего количества ненулевых коэффициентов в одном конце 1D массива, различные порядки сканирования могут быть использованы в видео кодере-декодере (кодеке), чтобы закодировать коэффициенты преобразования. В некоторых случаях диагональное сканирование может быть эффективным. В других случаях различные типы сканирования, такие как зигзагообразное, вертикальное или горизонтальное сканирование может быть более эффективным.

[0058] Различные порядки сканирования могут быть произведены разными способами. Один пример заключается в том, что для каждого блока коэффициентов преобразования "наилучший" порядок сканирования может быть выбран из ряда доступных порядков сканирования. Устройство кодирования видео затем может обеспечить декодеру индикацию, для каждого блока, индекса наилучшего порядка сканирования среди набора порядков сканирования, обозначенных соответствующими индексами. Выбор наилучшего порядка сканирования может быть определен посредством применения нескольких порядков сканирования и выбора одного, который является наиболее эффективным при размещении ненулевых коэффициентов около начала или конца 1D вектора, таким образом способствуя эффективному статистическому кодированию.

[0059] В другом примере порядок сканирования для текущего блока может быть определен на основании различных факторов, относящихся к кодированию подходящего блока предсказания, таких как режим предсказания (I, B, P), размер блока, преобразование или других факторов. В некоторых случаях, так как одна и та же информация, например, режим предсказания, может быть выведена как на стороне кодера, так и на стороне декодера, может не быть необходимости обеспечивать индикацию индекса порядка сканирования декодеру. Вместо этого декодер видео может сохранить данные конфигурации, которые указывают заданное знание подходящего порядка сканирования режима предсказания для блока и один или более критериев, которые отображают режим предсказания в конкретный порядок сканирования.

[0060] Чтобы дополнительно повысить эффективность кодирования, доступные порядки сканирования могут не быть постоянными все время. Вместо этого некоторая адаптация может быть разрешена таким образом, чтобы порядок сканирования адаптивно регулировался, например, на основании коэффициентов, которые уже закодированы. Обычно адаптация порядка сканирования может быть сделана таким образом, чтобы в соответствии с выбранным порядком сканирования более вероятно были сгруппированы нулевые и ненулевые коэффициенты.

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

[0062] Если порядок сканирования выведен (получен) из процесса обучения, или если множество различных порядков сканирования может быть выбрано, может быть выгодно сохранить конкретные порядки сканирования как на стороне кодера, так и на стороне декодера. Объем данных, задающих такие порядки сканирования, может быть существенным. Например, для блока преобразования 32x32 один порядок сканирования может содержать 1024 позиций коэффициентов преобразования. Так как могут существовать блоки разных размеров, и для каждого размера блока преобразования может существовать ряд различных порядков сканирования, общий объем данных, которые должны быть сохранены, не является пренебрежимым. Обычные порядки сканирования, такие как диагональный, горизонтальный, вертикальный или зигзагообразный порядок, могут не требовать области хранения или могут требовать минимальной области хранения. Однако диагональный, горизонтальный, вертикальный или зигзагообразный порядки могут не обеспечить достаточного разнообразия, чтобы обеспечить производительность кодирования, которая находится наравне с обученными порядками сканирования.

[0063] В одном обычном примере для стандарта H.264 и HEVC, в настоящее время разрабатываемого, когда используется статистический кодер CABAC, позиции значимых коэффициентов (то есть, ненулевых коэффициентов преобразования) в блоке преобразования (то есть, блоке преобразования в HEVC) являются кодированными прежде уровней коэффициентов. Процесс кодирования местоположений значимых коэффициентов называется кодированием отображения значимости. Значимость коэффициента является такой же, что и контейнер нуль уровня коэффициентов. Как показано на ФИГ. 1, кодирование отображения значимости квантованных коэффициентов 11 преобразования производит отображение 13 значимости. Отображение 13 значимости является отображением (картой) единиц и нулей, где единицы указывают местоположения значимых коэффициентов. Отображение значимости обычно требует высокого процентного содержания скорости передачи видео. Способы настоящего раскрытия могут также применяться для использования с другими статистическими кодерами (например, PIPE).

[0064] Примерный процесс для кодирования отображения значимости описан в D. Marpe, H. Schwarz, и T. Wiegand "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", IEEE Trans. Circuits and Systems for Video Technology, Vol. 13, № 7, July 2003. В этом процессе кодируется отображение значимости, если есть по меньшей мере один значимый коэффициент в блоке, как указано флагом закодированного блока (CBF), который определен как:

Флаг закодированного блока: coded_block_flag является однобитным символом, который указывает, есть ли значимые, то есть, ненулевые, коэффициенты в единственном блоке коэффициентов преобразования, для которого шаблон закодированного блока указывает ненулевые записи. Если coded_block_flag является нулем, никакая дополнительная информация не передается для связанного блока.

[0065] Если есть значимые коэффициенты в блоке, отображение значимости кодируется следующим порядком сканирования коэффициентов преобразования в блоке следующим образом:

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

[0066] При заданном шаблоне сканирования отображение значимости сканируется следующим образом:

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

[0067] Последние предложения для HEVC удалили last_significant_coeff_flag. В этих предложениях перед посылкой отображения значимости посылается индикация позиции X и Y последнего значимого коэффициента.

[0068] В настоящее время в HEVC предложено, чтобы три шаблона сканирования использовались для отображения значимости: диагональный, вертикальный и горизонтальный. ФИГ. 2 показывает пример зигзагообразного сканирования 17, вертикального сканирования 19, горизонтального сканирования 21 и диагонального сканирования 15. Как показано на ФИГ. 2, каждое из этих сканирований осуществляется в прямом направлении, то есть, от коэффициентов преобразования более низкой частоты в верхнем левом углу блока преобразования к коэффициентам преобразования более высокой частоты в правом нижнем углу блока преобразования. После кодирования отображения значимости кодируется оставшаяся информация об уровне (контейнеры 1-N, где N является общим количеством контейнеров) для каждого значимого коэффициента преобразования (то есть, значения коэффициента).

[0069] В процессе CABAC, ранее определенном в стандарте H.264, после обработки суб-блоков 4x4 каждый из уровней коэффициентов преобразования преобразовывается в двоичную форму, например, в соответствии с унарным кодом, чтобы сформировать последовательность контейнеров. В H.264 модель контекста CABAC, установленная для каждого суб-блока, состоит из моделей контекста два на пять с пятью моделями как для первого контейнера, так и для всех оставшихся контейнеров (вплоть до и включая 14-ый контейнер) элемента синтаксиса coeff_abs_level_minus_one, который кодирует абсолютное значение коэффициента преобразования. В частности, в одной предложенной версии HEVC оставшиеся контейнеры включают в себя только контейнер 1 и контейнер 2. Остаток от уровней коэффициентов кодируется кодированием Голомба-Райса и экспоненциальными кодами Голомба.

[0070] В HEVC выбор моделей контекста может быть выполнен так, как в оригинальном процессе CABAC, предложенном для стандарта H.264. Однако различные наборы моделей контекста могут быть выбраны для различных суб-блоков. В частности, выбор модели контекста, установленной для данного суб-блока, зависит от некоторой статистической информации о ранее закодированных суб-блоках.

[0071] ФИГ. 3 показывает порядок сканирования, следующий одной предложенной версии процесса HEVC, чтобы закодировать уровни коэффициентов преобразования (абсолютное значение уровня и знак уровня) в блоке 25 преобразования. Должно быть отмечено, что имеется прямой зигзагообразный шаблон 27 для сканирования суб-блоков 4x4 большего блока и обратный зигзагообразный шаблон 23 для сканирования уровней коэффициентов преобразования в каждом суб-блоке. Другими словами, последовательность из суб-блоков 4x4 сканируется в прямом зигзагообразном шаблоне таким образом, чтобы суб-блоки сканировались в последовательности. Затем в каждом суб-блоке обратное зигзагообразное сканирование выполняется для сканирования уровней коэффициентов преобразования в суб-блоке. Следовательно, коэффициенты преобразования в двумерном массиве, сформированном блоком преобразования, преобразуются в последовательную форму в одномерный массив таким образом, чтобы за коэффициентами, которые обратно сканируются в данном суб-блоке, затем следовали коэффициенты, которые обратно сканируются в последующем суб-блоке.

[0072] В одном примере CABAC-кодирование коэффициентов, сканированных в соответствии с подходом сканирования суб-блока, показанном на ФИГ. 3, может использовать 60 контекстов, то есть, 6 наборов из 10 контекстов, распределенных, как описано ниже. Для блока 4x4 может быть использовано 10 моделей контекста (5 моделей для контейнера 1 и 5 моделей для контейнеров 2-14), как показано в Таблице 1:

Таблица 1
Контексты для контейнера 1 и контейнеров 2-14 уровней коэффициентов суб-блока
Контейнер 1 модели Контейнер 2-14 модели (оставшиеся контейнеры)
0
1
2
3
4
Закодированный коэффициент больший чем 1
Первоначальный - нет хвостовых единиц в суб-блоке
1 хвостовая единица в суб-блоке
2 хвостовые единицы в суб-блоке
3 или более хвостовых единиц в суб-блоке
0
1
2
3
4
Первоначальные или 0 коэффициентов больших чем единица
1 коэффициент больший чем единица
2 коэффициента больших чем единица
3 коэффициента больших чем единица
4 или более коэффициентов больших чем единица

[0073] Для Таблицы 1 одна из моделей 0-4 контекста в наборе контекстов используется для контейнера 1, если, соответственно, в настоящее время закодированный коэффициент, который сканируется в суб-блоке, закодирован после того, как коэффициент больше, чем 1, был закодирован в суб-блоке, этот в настоящее время закодированный коэффициент является первоначальным коэффициентом, сканированным в суб-блоке, или нет никаких хвостовых единиц (никаких ранее закодированных коэффициентов) в суб-блоке, есть одна хвостовая единица в суб-блоке (то есть, единица была закодирована, но никакие коэффициенты большие, чем единица, не были закодированы), есть две хвостовых единицы в суб-блоке, или в суб-блоке есть три или более хвостовых единиц. Для каждого из контейнеров 2-14 (хотя в настоящее время предложенная версия HEVC кодирует только контейнер 2, используя CABAC, с последующими контейнерами уровня коэффициентов, кодируемых экспоненциальным кодом Голомба), одна из моделей 0-4 контекста может быть использована, соответственно, если коэффициент является первоначальным коэффициентом, сканированным в суб-блоке, или имеются нулевые ранее закодированные коэффициенты, большие, чем единица, имеется один ранее закодированный коэффициент больший, чем единица, имеются два ранее закодированных коэффициента большие, чем единица, имеются три ранее закодированных коэффициента большие, чем единица, или имеются четыре ранее закодированных коэффициента большие, чем единица.

[0074] Существуют 6 различных наборов этих 10 моделей, в зависимости от количества коэффициентов, больших, чем 1, в ранее закодированном суб-блоке 4x4 в прямом сканировании суб-блоков:

Таблица 2
Контексты для контейнера 1 и контейнеров 2-14
Набор контекстов
0 Только для размера блока 4х4
1
2
3
4
0-3 коэффициентов больших чем 1, в предыдущем суб-блоке
4-7 больших чем 1, в предыдущем суб-блоке
8-11 больших чем 1, в предыдущем суб-блоке
12-15 больших чем 1, в предыдущем суб-блоке
5 Первый суб-блок 4х4
16 больших чем 1, в предыдущем суб-блоке

[0075] Для Таблицы 2 наборы 0-5 моделей контекста используются для заданного суб-блока, если, соответственно, размер суб-блока составляет 4x4, имеются 0-3 коэффициентов больших чем 1, в ранее закодированном суб-блоке, имеются 4-7 коэффициентов больших чем 1, в ранее закодированном суб-блоке, имеются 8-11 коэффициентов больших чем 1, в ранее закодированном суб-блоке, имеются 12-15 коэффициентов больших чем 1, в ранее закодированном суб-блоке, или данный суб-блок является первым суб-блоком 4x4 (верхний левый суб-блок), или имеются 16 коэффициентов больших чем 1, в ранее закодированном суб-блоке.

[0076] Вышеописанный процесс кодирования для H.264 и процесс, в настоящее время предложенный для HEVC, имеют несколько недостатков. Как показано на ФИГ. 3, один недостаток состоит в том, что сканирование уровней коэффициентов осуществляется вперед для сканирования суб-блоков (то есть, начиная с верхнего левого суб-блока), а затем обратно для сканирования уровней коэффициентов в каждом суб-блоке (то есть, начиная с нижнего правого коэффициента в каждом суб-блоке). Этот подход подразумевает движение назад и вперед в пределах блока, что может сделать выборку данных более сложным.

[0077] Другой недостаток обусловлен тем фактом, что порядок сканирования уровня коэффициентов отличается от порядка сканирования отображения значимости. В HEVC имеются три разных предложенных порядка сканирования для отображения значимости: прямой диагональный, прямой горизонтальный и прямой вертикальный, как показано на ФИГ. 2. Все сканирования значимых коэффициентов отличаются от сканирования уровней коэффициентов, в настоящее время предложенных для HEVC, так как сканирования уровня осуществляются в обратном направлении. Так как направление и шаблон сканирования уровня коэффициентов не совпадают с направлением и шаблоном сканирования значимости, должно быть проверено больше уровней коэффициентов. Например, предположим, что горизонтальное сканирование используется для отображения значимости, и последний коэффициент значимости найден в конце первой строки коэффициентов. Сканирование уровня коэффициентов в HEVC будет требовать диагонального сканирования через множественные строки для сканирования уровня, когда только первая строка фактически содержит уровни коэффициентов, отличные от 0. Такой процесс сканирования может ввести нежелательную неэффективность.

[0078] В текущем предложении по HEVC сканирование отображения значимости осуществляется вперед в блоке от коэффициента DC, найденного в левом верхнем углу блока, к коэффициенту самой высокой частоты, обычно найденному в правом нижнем углу блока, в то время как сканирование уровней коэффициентов является в обратном направлении в каждом суб-блоке 4x4. Это также может привести к более сложной и более неэффективной выборке данных.

[0079] Другой недостаток для текущих предложений HEVC обусловлен наборами контекстов. Набор контекстов (см. Таблицу 2 выше) для CABAC отличается для размера блока 4x4, чем для других размеров блока. В соответствии с этим раскрытием, было бы желательно согласовать (гармонизировать) контексты для всех размеров блока таким образом, чтобы меньше памяти было выделено на хранение различных наборов контекстов.

[0080] Кроме того, как описано более подробно ниже, в настоящее время предложенные контексты CABAC для отображения значимости для HEVC действительны только, если порядок сканирования является прямым (вперед). Также, это может не учитывать обратные сканирования отображения значимости.

[0081] Кроме того, контексты, описанные выше для кодирования уровня квантованного коэффициента, пытаются использовать локальную корреляцию уровней коэффициентов. Эти контексты зависят от корреляции среди суб-блоков 4x4 (см. набор контекстов в Таблице 2) и корреляции в каждом суб-блоке (см. модели контекста в Таблице 1). Недостаток этих контекстов состоит в том, что зависимость может быть слишком отдаленной (то есть, имеется низкая зависимость между коэффициентами, которые отделены друг от друга несколькими другими коэффициентами, от одного суб-блока до другого). Кроме того, в каждом суб-блоке зависимость может быть слабой.

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

[0083] ФИГ. 4 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может быть сконфигурирована для использования способов для кодирования коэффициентов преобразования в соответствии с примерами настоящего раскрытия. Как показано на ФИГ. 4, система 10 включает в себя устройство-источник 12, которое передает закодированное видео на устройство 14 назначения с помощью канала 16 связи. Закодированное видео может быть также сохранено на запоминающем носителе 34 или файловом сервере 36 и может быть доступно посредством устройства 14 назначения, если необходимо. Устройство-источник 12 и устройство 14 назначения могут содержать любое большое разнообразие устройств, включающих в себя настольные компьютеры, портативные компьютеры (то есть, ноутбук), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, консоли для видео игр и т.п. Во многих случаях такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводных и проводных каналов, подходящих для передачи закодированных видео данных. Аналогично, файловый сервер 36 может быть доступен посредством устройства 14 назначения через любое стандартное соединение передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или их комбинацию, которая подходит для того, чтобы получить доступ к закодированным видео данным, сохраненным на файловом сервере.

[0084] Способы для кодирования коэффициентов преобразования в соответствии с примерами настоящего раскрытия могут применяться к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как телевизионные вещания по воздуху, передачи кабельного телевидения, передачи спутникового телевидения, текущие видео передачи, например, с помощью Интернета, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных или других приложений. В некоторых примерах система 10 может быть сконфигурирована для поддержания односторонней или двухсторонней передачи видео, чтобы поддержать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео и/или видео телефония.

[0085] В примере согласно ФИГ. 4 устройство-источник 12 включает в себя источник 18 видео, кодер 20 видео, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12 источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видеокамеру, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от поставщика видео контента, и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если источником 18 видео является видеокамера, устройство-источник 12 и устройство 14 назначения могут формировать так называемые камерофоны или видеотелефоны. Однако способы, описанные в настоящем раскрытии, могут применяться к кодированию видео в целом и могут применяться к беспроводным и/или проводным приложениям.

[0086] Захваченное, предварительно захваченное или сгенерированное компьютером видео может быть закодировано кодером 20 видео. Закодированная информация видео может быть модулирована модемом 22 в соответствии со стандартом связи, таким как протокол беспроводной связи, и передаваться на устройство 14 назначения с помощью передатчика 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, сконструированные для модуляции сигнала. Передатчик 24 может включать в себя схемы, сконструированные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн.

[0087] Захваченное, предварительно захваченное или сгенерированное компьютером видео, которое кодируется кодером 20 видео, может также быть сохранено на запоминающем носителе 34 или файловом сервере 36 для более позднего использования. Запоминающий носитель 34 может включать в себя диски Blu-ray, диски DVD, диски CD-ROM, флэш-память или любые другие подходящие цифровые запоминающие носители для хранения закодированного видео. Закодированное видео, сохраненное на запоминающем носителе 34, затем может быть доступно посредством устройства 14 назначения для декодирования и воспроизведения.

[0088] Файловый сервер 36 может быть любым типом сервера, способного хранить закодированное видео и передавать это закодированное видео на устройство 14 назначения. Примерные файловые серверы включают в себя web-сервер (например, для web-сайта), сервер FTP, сетевые устройства хранения данных (NAS), локальный дисковой накопитель или любой другой тип устройства, способного хранить закодированные видео данные и передавать их на приемное устройство. Передача закодированных видео данных от файлового сервера 36 может быть потоковой передачей, передачей загрузки или их комбинацией. Файловый сервер 36 может быть доступен посредством устройства 14 назначения через любое стандартное соединение передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.д.) или их комбинацию, которая подходит для того, чтобы получить доступ к закодированным видео данным, сохраненным на файловом сервере.

[0089] Устройство 14 назначения в примере на ФИГ. 4 включает в себя приемник 26, модем 28, декодер 30 видео и устройство 32 отображения. Приемник 26 устройства 14 назначения принимает информацию по каналу 16, и модем 28 демодулирует информацию, чтобы сформировать демодулированный битовый поток для декодера 30 видео. Информация, переданная по каналу 16, может включать в себя разную информацию синтаксиса, сгенерированную кодером 20 видео, для использования посредством декодера 30 видео при декодировании видео данных. Такой синтаксис может быть также включен с закодированными видео данными, сохраненными на запоминающем носителе 34 или файловом сервере 36. Каждый из кодера 20 видео и декодера 30 видео могут быть частью соответствующего кодека (CODEC), который способен кодировать или декодировать видео данные.

[0090] Устройство 32 отображения может быть объединено с, или быть внешним по отношению к, устройством 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также быть сконфигурировано для того, чтобы взаимодействовать с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. В целом, устройство 32 отображения отображает декодированные видео данные пользователю и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.

[0091] В примере на ФИГ. 4 канал 16 связи может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотный (RF) (РЧ) спектр или одна или более физических линий передачи, или любую комбинацию беспроводных и проводных носителей. Канал 16 связи может быть частью основанной на пакетной передаче сети, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Канал 16 связи в целом представляет любой подходящий коммуникационный носитель или коллекцию различных коммуникационных носителей для передачи данных видео от устройства-источника 12 на устройство 14 назначения, включая любую подходящую комбинацию проводных или беспроводных носителей. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным, чтобы облегчить передачу данных от устройства-источника 12 на устройство 14 назначения.

[0092] Кодер 20 видео и декодер 30 видео могут работать в соответствии со стандартом сжатия видео, таким как в настоящее время разрабатываемый стандарт высокоэффективного кодирования видео (HEVC), и могут соответствовать тестовой модели HEVC (HM). Альтернативно, кодер 20 видео и декодер 30 видео могут работать в соответствии с другими составляющими собственность или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно называемый MPEG-4, Часть 10, усовершенствованное кодирование видео (AVC), или расширениями таких стандартов. Способы настоящего раскрытия, однако, не ограничиваются никаким особым стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.

[0093] Хотя не показано на ФИГ. 4, в некоторых аспектах кодер 20 видео и декодер 30 видео могут быть объединены с кодером и декодером аудио, и могут включать в себя соответствующие блоки MUX-DEMUX или другое аппаратное и программное обеспечение, чтобы выполнять кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).

[0094] Кодер 20 видео и декодер 30 видео могут быть реализованы как любая из множества подходящих схем кодера, например, один или более микропроцессоров, цифровые сигнальные процессоры (процессоры DSP), специализированные интегральные схемы (схемы ASIC), программируемые пользователем вентильные матрицы (матрицы FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратное обеспечение или любые их комбинации. Когда способы реализованы частично в программном обеспечении, устройство может сохранить команды для программного обеспечения в подходящем невременном считываемом компьютере носителе и выполнять команды в аппаратном обеспечении, используя один или более процессоров для выполнения способов настоящего раскрытия. Каждый из кодера 20 видео и декодера 30 видео могут быть включены в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве.

[0095] Кодер 20 видео может реализовать любые или все из способов настоящего раскрытия, чтобы улучшить кодирование коэффициентов преобразования в процессе кодирования видео. Аналогично, декодер 30 видео может реализовать любые или все из этих способов, чтобы улучшить декодирование коэффициентов преобразования в процессе кодирования видео. Видео кодер, как описано в настоящем раскрытии, может относиться к кодеру видео или декодеру видео. Аналогично, блок кодирования видео может относиться к кодеру видео или декодеру видео. Аналогично, кодирование видео может относиться к кодированию видео или декодированию видео.

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

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

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

[0099] В другом примере раскрытия кодер видео (такой, как кодер 20 видео или декодер 30 видео) может быть сконфигурирован для кодирования информации, указывающей значимые коэффициенты для множества коэффициентов преобразования в соответствии с порядком сканирования, разделения закодированной информации на по меньшей мере первую область и вторую область, статистического кодирования закодированной информации в первой области в соответствии с первым набором контекстов, используя критерии выведения контекста, и статистического кодирования закодированной информации во второй области в соответствии со вторым набором контекстов, используя те же критерии выведения контекста, что и в первой области.

[0100] ФИГ. 5 является блок-схемой, иллюстрирующей пример кодера 20 видео, который может использовать способы для кодирования коэффициентов преобразования, как описано в настоящем раскрытии. Кодер 20 видео будет описан в контексте кодирования HEVC в целях иллюстрации, а не ограничения, настоящего раскрытия относительно других стандартов или способов кодирования, которые могут требовать сканирования коэффициентов преобразования. Кодер 20 видео может выполнять внутреннее (интра-) и внешнее (интер-) кодирование блоков CU в видео кадрах. Внутреннее кодирование основано на пространственном предсказании, чтобы уменьшить или удалить пространственную избыточность в видео в заданном кадре видео. Внешнее кодирование основано на временном предсказании, чтобы уменьшить или удалить временную избыточность между текущим кадром и ранее закодированными кадрами видео последовательности. Внутренний режим (I- режим) может относиться к любому из нескольких режимов, основанных на пространственном сжатии видео. Внешние режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов, основанных на временном сжатии видео.

[0101] Как показано на ФИГ. 5, кодер 20 видео принимает текущий блок видео в кадре видео, который должен быть закодирован. В примере согласно ФИГ. 5 кодер 20 видео включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 статистического кодирования. Модуль 52 преобразования, иллюстрированный на ФИГ. 5, является модулем, который применяет фактическое преобразование к блоку остаточных данных, и не должен быть перепутан с блоком коэффициентов преобразования, который также может называться блоком преобразования (TU) CU. Для восстановления блока видео кодер 20 видео также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на ФИГ. 5) также может быть включен, чтобы фильтровать границы блока для удаления артефактов блочности из восстановленного видео. При желании фильтр удаления блочности обычно будет фильтровать выходной сигнал сумматора 62.

[0102] Во время процесса кодирования кодер 20 видео принимает кадр или вырезку видео, которые должны быть закодированы. Кадр или вырезка могут быть разделены на множественные блоки видео, например, наибольшие блоки кодирования (блоки LCU). Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого блока видео относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнить кодирование с внутреннем предсказанием принятого блока видео относительно одного или более соседних блоков в одних и тех же кадре или вырезке в качестве блока, который должен быть закодирован, чтобы обеспечить пространственное сжатие.

[0103] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибки (то есть, искажения) для каждого режима, и выдать получившийся в результате внутренне - или внешне кодированный блок к сумматору 50 для генерирования остаточных данных блока и сумматору 62 для восстановления закодированного блока, чтобы использовать в опорном кадре. Некоторые кадры видео могут быть обозначены как I-кадры, где все блоки в I-кадре закодированы в режиме внутреннего предсказания. В некоторых случаях модуль 46 внутреннего предсказания может выполнять кодирование с внутренним предсказанием блока в P- или B-кадре, например, когда поиск движения, выполненный модулем 42 оценки движения, не приводит к достаточному предсказанию блока.

[0104] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированы, но иллюстрируются отдельно в концептуальных целях. Оценка движения является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указать смещение блока предсказания в текущем кадре относительно опорной выборки опорного кадра. Опорная выборка может быть блоком, который, как считается, точно соответствует части CU, включающего в себя PU, кодируемого в терминах пиксельной разности, которая может быть определена суммой абсолютной разности (SAD), суммой квадратичной разности (SSD) или другими метриками разности. Компенсация движения, выполненная модулем 44 компенсации движения, может включать выборку или генерирование значений для блока предсказания на основании вектора движения, определенного посредством оценки движения. Снова, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально объединены в некоторых примерах.

[0105] Модуль 42 оценки движения вычисляет вектор движения для блока предсказания внешне кодированного кадра посредством сравнения блока предсказания с опорными выборками опорного кадра, сохраненного в буфере 64 опорных кадров. В некоторых примерах кодер 20 видео может вычислять значения для суб-целочисленных пиксельных позиций опорных кадров, сохраненных в буфере 64 опорных кадров. Например, кодер 20 видео может вычислять значения одночетвертных пиксельных позиций, одной восьмой от пиксельных позиций или других фракционных пиксельных позиций опорного кадра. Поэтому, модуль 42 оценки движения может выполнять поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и сформировать вектор движения с фракционной пиксельной точностью. Модуль 42 оценки движения посылает вычисленный вектор движения на модуль 56 статистического кодирования и модуль 44 компенсации движения. Часть опорного кадра, идентифицированная вектором движения, может называться опорной выборкой. Модуль 44 компенсации движения может вычислять значение предсказания для блока предсказания текущего CU, например, посредством извлечения опорной выборки, идентифицированной вектором движения для PU.

[0106] Модуль 46 внутреннего предсказания может кодировать с внутренним предсказанием принятый блок, в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения. Модуль 46 внутреннего предсказания может кодировать принятый блок относительно соседних ранее закодированных блоков, например, блоков выше, выше и справа, выше и слева или слева от текущего блока, принимая порядок кодирования слева направо, снизу вверх для блоков. Модуль 46 внутреннего предсказания может быть сконфигурирован со множеством различных режимов внутреннего предсказания. Например, модуль 46 внутреннего предсказания может быть сконфигурирован с некоторым количеством направленных режимов предсказания, например, 33 направленными режимами предсказания, на основании размера кодируемого CU.

[0107] Модуль 46 внутреннего предсказания может выбрать режим внутреннего предсказания, например, посредством вычисления значения ошибки для различных режимов внутреннего предсказания и выбора режима, который обеспечивает самое низкое значение ошибки. Направленные режимы предсказания могут включать в себя функции для комбинирования значений пространственно соседних пикселей и применения комбинированных значений к одной или более пиксельным позициям в PU. Как только значения для всех пиксельных позиций в PU будут вычислены, модуль 46 внутреннего предсказания может вычислять значение ошибки для режима предсказания на основании пиксельных разностей между PU и принятым блоком, который должен быть закодирован. Модуль 46 внутреннего предсказания может продолжить проверять режимы внутреннего предсказания до тех пор, пока не будет обнаружен режим внутреннего предсказания, который обеспечивает приемлемое значение ошибки. Модуль 46 внутреннего предсказания может затем послать PU в сумматор 50.

[0108] Кодер 20 видео формирует остаточный блок посредством вычитания данных предсказания, вычисленных модулем 44 компенсации движения или модулем 46 внутреннего предсказания, из закодированного оригинального блока видео. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Остаточный блок может соответствовать двумерной матрице значений