Кодирование коэффициентов преобразования для кодирования видео
Иллюстрации
Показать всеИзобретение относится к вычислительной технике. Технический результат заключается в согласованности порядка сканирования как для кодирования отображения значимости коэффициентов преобразования, так и для кодирования уровней коэффициентов преобразования. Способ кодирования коэффициентов преобразования, ассоциированных с остаточными данными видео, в процессе кодирования видео, содержащий компоновку блока коэффициентов преобразования в один или более поднаборов коэффициентов преобразования на основании порядка сканирования; кодирование первой части уровней коэффициентов преобразования в каждом поднаборе, причем первая часть уровней включает в себя по меньшей мере значимость коэффициентов преобразования в каждом поднаборе; и кодирование второй части уровней коэффициентов преобразования в каждом поднаборе, причем кодирование первой части уровней коэффициентов преобразования содержит кодирование значимости коэффициентов преобразования в каждом поднаборе в соответствии с порядком сканирования, и в котором кодирование второй части уровней из уровней коэффициентов преобразования содержит кодирование уровней коэффициентов преобразования в каждом поднаборе в соответствии с порядком сканирования, при этом порядок сканирования включает в себя как шаблон сканирования, так и направление сканирования. 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 модели (оставшиеся контейнеры) | ||
01234 | Закодированный коэффициент больший чем 1Первоначальный - нет хвостовых единиц в суб-блоке1 хвостовая единица в суб-блоке2 хвостовые единицы в суб-блоке3 или более хвостовых единиц в суб-блоке | 01234 | Первоначальные или 0 коэффициентов больших чем единица1 коэффициент больший чем единица2 коэффициента больших чем единица3 коэффициента больших чем еди |