RU2574831C2 - Унифицированный выбор кандидатов для режима слияния и адаптивного режима предсказания вектора движения - Google Patents
Унифицированный выбор кандидатов для режима слияния и адаптивного режима предсказания вектора движения Download PDFInfo
- Publication number
- RU2574831C2 RU2574831C2 RU2014101483/08A RU2014101483A RU2574831C2 RU 2574831 C2 RU2574831 C2 RU 2574831C2 RU 2014101483/08 A RU2014101483/08 A RU 2014101483/08A RU 2014101483 A RU2014101483 A RU 2014101483A RU 2574831 C2 RU2574831 C2 RU 2574831C2
- Authority
- RU
- Russia
- Prior art keywords
- candidate
- block
- motion vector
- candidate block
- blocks
- Prior art date
Links
- 230000003044 adaptive Effects 0.000 title claims description 15
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000005192 partition Methods 0.000 claims description 23
- 230000001364 causal effect Effects 0.000 claims description 12
- 230000004927 fusion Effects 0.000 claims 2
- 230000002123 temporal effect Effects 0.000 abstract description 8
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 230000011664 signaling Effects 0.000 description 22
- 238000004891 communication Methods 0.000 description 14
- 230000000875 corresponding Effects 0.000 description 14
- 238000010200 validation analysis Methods 0.000 description 14
- 238000007906 compression Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 239000000203 mixture Substances 0.000 description 13
- 241001442055 Vipera berus Species 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 230000001131 transforming Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000003287 optical Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000000051 modifying Effects 0.000 description 3
- 230000001702 transmitter Effects 0.000 description 3
- 230000000903 blocking Effects 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002457 bidirectional Effects 0.000 description 1
- 230000001413 cellular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000000153 supplemental Effects 0.000 description 1
Images
Abstract
Изобретение относится к видеокодированию. Технический результат - эффективное кодирование информации цифрового видео для снижения или устранения избыточности, присущей видеопоследовательностям. Способ кодирования вектора движения в процессе видеокодирования, в котором определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; определяют набор блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и осуществляют процесс предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен. 6 н. и 35 з.п. ф-лы, 18 ил.
Description
[0001] Данная заявка испрашивает приоритет предварительной патентной заявки США № 61/506,558, поданной 11 июля 2011 г., предварительной патентной заявки США № 61/499,114, поданной 20 июня 2011 г., и предварительной патентной заявки США № 61/509,007, поданной 18 июля 2011 г., которые настоящим включены посредством ссылки в полном объеме.
ОБЛАСТЬ ТЕХНИКИ
[0002] Это раскрытие относится к видеокодированию и, в частности, к методам для выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
[0003] Возможности цифрового видео можно внедрять в широкий диапазон устройств, включающий в себя цифровые телевизоры, системы прямого цифрового вещания, системы беспроводного вещания, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеотелеконференцсвязи и пр. Устройства цифрового видео реализуют методы сжатия видео, например, описанные в стандартах, заданных посредством MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Advanced Video Coding (Усовершенствованное видеокодирование) (AVC), стандарт High Efficiency Video Coding (Высокоэффективное видеокодирование) (HEVC), в настоящее время находящийся в разработке, и расширения таких стандартов, для более эффективного осуществления передачи, приема и сохранения информации цифрового видео.
[0004] Методы сжатия видео включают в себя пространственное предсказание и/или временное предсказание для снижения или устранения избыточности, присущей видеопоследовательностям. Для видеокодирования на блочной основе, кадр видео или срез можно разбивать на блоки. Каждый блок также можно подвергать разбиению. Блоки во внутренне (интра-) кодированном (I) кадре или срезе кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в одном и том же кадре или срезе. Блоки во внешне (интер-) кодированном (P или B) кадре или срезе могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в одном и том же кадре или срезе или временное предсказание по отношению к опорным выборкам в других опорных кадрах. Пространственное или временное предсказание дает блок предсказания для блока, подлежащего кодированию. Остаточные данные представляет различия в пикселях между исходным блоком, подлежащим кодированию, и блоком предсказания.
[0005] Интер-кодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующих блок предсказания, и остаточные данные, указывающие различие между кодированным блоком и блоком предсказания. Интра-кодированный блок кодируется согласно режиму интра-кодирования и остаточным данным. Для дальнейшего сжатия, остаточные данные можно преобразовывать из пиксельной области в область преобразования, получая остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двухмерном массиве, можно сканировать в определенном порядке для генерации одномерного вектора коэффициентов преобразования для энтропийного кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В общем случае, в этом раскрытии описаны методы кодирования видеоданных. В этом раскрытии описаны методы выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения.
[0007] В одном примере раскрытия, способ кодирования вектора движения в процессе видеокодирования содержит определение одного из множества режимов для процесса предсказания вектора движения и осуществление процесса предсказания вектора движения для текущего блока видеоданных с использованием определенного режима и набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов.
[0008] В другом примере раскрытия, способ декодирования вектора движения в процессе видеокодирования содержит определение одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных и определение блока-кандидата из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
[0009] В другом примере раскрытия, способ кодирования вектора движения в процессе видеокодирования содержит определение одного из множества режимов для процесса предсказания вектора движения и осуществление процесса предсказания вектора движения для текущего блока видеоданных с использованием определенного режима и набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.
[0010] В другом примере раскрытия, способ декодирования вектора движения в процессе видеокодирования содержит прием элемента синтаксиса, указывающего один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, и прием индекса, указывающего блок-кандидат из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
[0011] Детали одного или более примеров изложены в прилагаемых чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1A - принципиальная схема, демонстрирующая блоки-кандидаты для предсказания вектора движения согласно режиму адаптивного предсказания вектора движения (AMVP).
[0013] Фиг. 1B - принципиальная схема, демонстрирующая блоки-кандидаты для предсказания вектора движения согласно режиму слияния.
[0014] Фиг. 2 - блок-схема, демонстрирующая пример системы видеокодирования и декодирования.
[0015] Фиг. 3 - блок-схема, демонстрирующая пример видеокодера.
[0016] Фиг. 4A - принципиальная схема информации сигнализации для режима слияния.
[0017] Фиг. 4B - принципиальная схема информации сигнализации для режима AMVP.
[0018] Фиг. 5A - принципиальная схема, демонстрирующая блоки-кандидаты для режима AMVP и режима слияния в соответствии с одним примером раскрытия.
[0019] Фиг. 5B - принципиальная схема, демонстрирующая блоки-кандидаты для режима AMVP и режима слияния в соответствии с другим примером раскрытия.
[0020] Фиг. 6 - принципиальная схема, демонстрирующая блоки-кандидаты для режима AMVP и режима слияния в соответствии с другим примером раскрытия.
[0021] Фиг. 7 - принципиальная схема, демонстрирующая блоки-кандидаты и шаблон проверки для режима AMVP и режима слияния в соответствии с другим примером раскрытия.
[0022] Фиг. 8 - блок-схема, демонстрирующая пример видеодекодер.
[0023] Фиг. 9 - блок-схема операций, демонстрирующая пример способа видеокодирования.
[0024] Фиг. 10 - блок-схема операций, демонстрирующая пример способа видеокодирования в режиме слияния.
[0025] Фиг. 11 - блок-схема операций, демонстрирующая пример способа видеокодирования в режиме AMVP.
[0026] Фиг. 12 - блок-схема операций, демонстрирующая пример способа видеодекодирования.
[0027] Фиг. 13 - блок-схема операций, демонстрирующая пример способа видеодекодирования в режиме слияния.
[0028] Фиг. 14 - блок-схема операций, демонстрирующая пример способа видеодекодирования в режиме AMVP.
[0029] Фиг. 15 - блок-схема операций, демонстрирующая другой пример способа видеокодирования.
[0030] Фиг. 16 - блок-схема операций, демонстрирующая другой пример способа видеодекодирования.
[0031] Фиг. 17 - блок-схема операций, демонстрирующая другой пример способа видеодекодирования в режиме слияния.
[0032] Фиг. 18 - блок-схема операций, демонстрирующая другой пример способа видеодекодирования в режиме AMVP.
ПОДРОБНОЕ ОПИСАНИЕ
[0033] В общем случае, в этом раскрытии описаны методы кодирования видеоданных. В этом раскрытии описаны методы выбора блоков-кандидатов предсказания вектора движения в процессе предсказания вектора движения. В одном примере, это раскрытие предусматривает, что каждый из множества режимов предсказания вектора движения использует один и тот же набор блоков-кандидатов для предсказания вектора движения для текущего блока. В другом примере, это раскрытие предусматривает, что один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат. Дополнительный блок-кандидат используется, если другой из блоков в наборе недоступен.
[0034] Устройства цифрового видео реализуют методы сжатия видео для более эффективного кодирования и декодирования информации цифрового видео. Сжатие видео может применять методы пространственного (внутрикадрового) предсказания и/или временного (межкадрового) предсказания для снижения или устранения избыточности, присущей видеопоследовательностям.
[0035] Для видеокодирования согласно стандарту высокоэффективного видеокодирования (HEVC), в настоящее время разрабатываемому организацией Joint Cooperative Team for Video Coding (JCT-VC), кадр видео можно разбивать на единицы кодирования. Единица кодирования (CU), в общем случае, означает участок изображения, который выступает в качестве основной единицы, к которым применяются различные инструменты кодирования для сжатия видео. CU обычно имеет компоненту яркости, обозначенную Y, и две компоненты цветности, обозначенные U и V. В зависимости от формата дискретизации видео, размер компонент U и V, в отношении количества выборок, может совпадать или отличаться от размера компоненты Y. CU обычно является квадратной и может рассматриваться по аналогии с так называемым макроблоком, например, согласно другим стандартам видеокодирования, например ITU-T H.264.
[0036] Для достижения повышенной эффективности кодирования, единица кодирования может иметь переменные размеры в зависимости от видеоконтента. Кроме того, единицу кодирования можно разбивать на блоки меньшего размера для предсказания или преобразования. В частности, каждую единицу кодирования можно дополнительно разбивать на единицы предсказания (PU) и единицы преобразования (TU). Единицы предсказания можно рассматривать по аналогии с так называемыми разделами согласно другим стандартам видеокодирования, например H.264. Единицы преобразования (TU) означают блоки остаточных данных, к которым применяется преобразование для генерации коэффициентов преобразования.
[0037] Кодирование согласно некоторым из предложенных в настоящее время аспектов разрабатываемого стандарта HEVC будет описано в данной заявке в целях иллюстрации. Однако методы, описанные в этом раскрытии, могут быть полезны для других процессов видеокодирования, например, заданных согласно H.264 или другому стандарту, или собственных процессов видеокодирования.
[0038] Работы по стандартизации HEVC основаны на модели устройства видеокодирования, именуемой HEVC Test Model (HM). HM предусматривает несколько возможностей устройств видеокодирования по сравнению с устройствами согласно, например, ITU-T H.264/AVC. Например, в то время как H.264 обеспечивает девять режимов кодирования с интра-предсказанием, HM обеспечивает целых тридцать четыре режима кодирования с интра-предсказанием.
[0039] Согласно HM, CU может включать в себя одну или более единиц предсказания (PU) и/или одну или более единиц преобразования (TU). Данные синтаксиса в битовом потоке могут задавать наибольшую единицу кодирования (LCU), которая является наибольшей CU в отношении количества пикселей. В общем случае, CU имеет функцию, аналогичную макроблоку в H.264, за исключением того, что CU не имеет различия в размере. Таким образом, CU можно разбивать на под-CU. В общем случае, ссылки в этом раскрытии на CU могут указывать на наибольшую единицу кодирования изображения или под-CU из LCU. LCU можно разбивать на под-CU, и каждую под-CU можно дополнительно разбивать на под-CU. Данные синтаксиса для битового потока могут задавать, сколько максимально раз можно разбивать LCU, что называется глубиной CU. Соответственно, битовый поток также может задавать наименьшую единицу кодирования (SCU). Это раскрытие также использует термин “блок” или “участок” для обозначения любой из CU, PU или TU. В общем случае, “участок” может указывать на любой поднабор кадра видео.
[0040] LCU может быть связана со структурой данных квадродерева. В общем случае, структура данных квадродерева включает в себя по одному узлу на CU, где корневой узел соответствует LCU. Если CU разбивается на четыре под-CU, узел, соответствующий CU, включает в себя четыре краевых узла, каждый из которых соответствует одной из под-CU. Каждый узел структуры данных квадродерева может обеспечивать данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разбиения, указывающий, разбивается ли CU, соответствующая узлу, на под-CU. Элементы синтаксиса для CU могут задаваться рекурсивно и могут зависеть от того, разбивается ли CU на под-CU. Если CU не подлежит дальнейшему разбиению, она именуется краевой CU.
[0041] Кроме того, TU краевых CU также могут быть связаны с соответствующими структурами данных квадродерева. Таким образом, краевая CU может включать в себя квадродерево, указывающее, как краевая CU делится на TU. Это раскрытие относится к квадродереву, указывающему, как LCU делится как квадродерево CU, и квадродерево, указывающее, как краевая CU делится на TU как квадродерево TU. Корневой узел квадродерева TU, в общем случае, соответствует краевой CU, а корневой узел квадродерева CU, в общем случае, соответствует LCU. TU квадродерева TU, которые не делятся, именуются краевыми TU.
[0042] Краевая CU может включать в себя одну или более единиц предсказания (PU). В общем случае, PU представляет всю соответствующую CU или ее участок и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU кодируется в режиме интер-предсказания, PU может включать в себя данные, задающие вектор движения для PU. Данные, задающие вектор движения, могут описывать, например, горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например, с точностью в четверть пикселя или с точностью в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0 или список 1) для вектора движения. Данные для краевой CU, задающие PU, также могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут различаться в зависимости от того, кодируется ли CU без предсказания, в режиме интра-предсказания или в режиме интер-предсказания. Для интра-кодирования PU можно обрабатывать так же, как краевую единицу преобразования, описанную ниже.
[0043] Для кодирования блока (например, единицы предсказания (PU) видеоданных) сначала выводится предсказатель для блока. Предсказатель можно вывести либо посредством интра- (I) предсказания (т.е. пространственного предсказания), либо интер- (P или B) предсказания (т.е. временного предсказания). Поэтому некоторые единицы предсказания могут быть интра-кодированы (I) с использованием пространственного предсказания по отношению к соседним опорным блокам в одном и том же кадре, а другие единицы предсказания могут быть интер-кодированы (P или B) по отношению к опорным блокам в других кадрах.
[0044] После идентификации предсказателя вычисляется разность между блоком исходных видеоданных и его предсказателем. Эта разность также называется остатком предсказания и представляет различия в пиксельных значениях между пикселями блока, подлежащего кодированию, и соответствующими пикселями опорного блока, т.е. предсказателем. Для достижения лучшего сжатия остаток предсказания (т.е. массив разностных значений пикселей), в общем случае, преобразуется, например, с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лева (K-L) или другого преобразования.
[0045] Кодирование PU с использованием интер-предсказания предусматривает вычисление вектора движения между текущим блоком и блоком в опорном кадре. Векторы движения вычисляются посредством процесса, именуемого оцениванием движения (или поиском движения). Вектор движения, например, может указывать перемещение единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Опорной выборкой может быть блок, в отношении которого установлено, что он хорошо согласуется с участком CU, включающим в себя PU, кодируемую по пиксельной разности, которую можно определить через сумму абсолютных значений разности (SAD), сумму квадратов разностей (SSD) или другие разностные метрики. Опорная выборка может возникать где угодно в опорном кадре или опорном срезе. В некоторых примерах, опорная выборка может возникать в дробной позиции пикселя. Найдя участок опорного кадра, наилучшим образом, согласующийся с текущим участком, кодер определяет текущий вектор движения для текущего участка как разность в местоположении от текущего участка до совпадающего участка в опорном кадре (т.е. от центра текущего участка до центра совпадающего участка).
[0046] В некоторых примерах, кодер может сигнализировать вектор движения для каждого участка в битовом потоке кодированного видео. Сигнализируемый вектор движения используется декодером для осуществления компенсация движения для декодирования видео. Однако сигнализация непосредственно исходного вектора движения может приводить к менее эффективному кодированию, поскольку для передачи информации обычно требуется большое количество битов.
[0047] В ряде случаев, вместо непосредственной сигнализации исходного вектора движения, кодер может предсказывать вектор движения для каждого раздела, т.е. для каждого PU. При осуществлении этого предсказания вектора движения, кодер может выбирать набор векторов движения-кандидатов, определенный из пространственно соседствующих блоков в одном и том же кадре, как текущий участок, или вектор движения-кандидат, определенный из совместно размещенного блока в опорном кадре. Кодер может осуществлять предсказание вектора движения и, при необходимости, сигнализировать различие в предсказании вместо исходного вектора движения для снижения битовой скорости в сигнализации. Векторы вектора движения-кандидата из пространственно соседствующих блоков могут именоваться кандидатами пространственного MVP, тогда как вектор движения-кандидат из совместно размещенного блока в другом опорном кадре может именоваться кандидатом временного MVP.
[0048] В современном рабочем проекте стандарта HEVC предложены два разных режима или типа предсказания вектора движения. Один режим именуется режимом “слияния”. Другой режим именуется адаптивным предсказанием вектора движения (AMVP). В режиме слияния кодер предписывает декодеру, посредством сигнализации битового потока синтаксиса предсказания, копировать вектор движения, опорный индекс (идентифицирующий опорный кадр, в данном списке опорного изображения, на который указывает вектор движения) и направление предсказания движения (которое идентифицирует список опорного изображения (список 0 или список 1), т.е. предшествует ли во времени опорный кадр текущему кадру или следует за ним) из выбранного вектора движения-кандидата для текущего участка кадра. Это осуществляется посредством сигнализации в битовом потоке индекса в список векторов движения-кандидатов, идентифицирующий выбранный вектор движения-кандидат (т.е. конкретный кандидат пространственного MVP или кандидат временного MVP). Таким образом, для режима слияния, синтаксис предсказания может включать в себя флаг, идентифицирующий режим (в данном случае режим “слияния”), и индекс, идентифицирующий выбранный вектор движения-кандидат. В ряде случаев, вектор движения-кандидат будет находиться в причинном участке в отношении текущего участка. Таким образом, вектор движения-кандидат будет уже декодирован декодером. В этом случае, декодер уже принял и/или определил вектор движения, опорный индекс и направление предсказания движения для причинного участка. Таким образом, декодер может просто извлекать вектор движения, опорный индекс и направление предсказания движения, связанные с причинным участком, из памяти и копировать эти значения как информацию движения для текущего участка. Для реконструкции блока в режиме слияния, декодер получает блок предсказания с использованием выведенной информации движения для текущего участка и добавляет остаточные данные в блок предсказания для реконструкции кодированного блока.
[0049] В AMVP, кодер предписывает декодеру, посредством сигнализации битового потока, копировать только вектор движения из участка-кандидата и использовать скопированный вектор как предсказатель для вектора движения текущего участка, и сигнализирует разность векторов движения (MVD). Опорный кадр и направление предсказания, связанные с вектором движения текущего участка, сигнализируются по отдельности. MVD является разностью между текущим вектором движения для текущего участка и предсказателем вектора движения, выведенным из участка-кандидата. В этом случае, кодер, с использованием оценивания движения, определяет фактический вектор движения для блока, подлежащего кодированию, и затем определяет разность между фактическим вектором движения и предсказателем вектора движения как значение MVD. Таким образом, декодер не использует точную копию вектора движения-кандидата в качестве текущего вектора движения, как в режиме слияния, но может вместо этого использовать вектор движения-кандидат, который может быть “близок” по значению к текущему вектору движения, определенному из оценивания движения, и добавлять MVD для воспроизведения текущего вектора движения. Для реконструкции блока в режиме AMVP, декодер добавляет соответствующие остаточные данные для реконструкции кодированного блока.
[0050] В большинстве случаев MVD требует меньше битов для сигнализации, чем текущий вектор движения целиком. Таким образом, AMVP позволяет более точно сигнализировать текущий вектор движения, в то же время сохраняя такую же эффективность кодирования, как при отправке вектора движения целиком. Напротив, режим слияния не допускает спецификации MVD, и таким образом, режим слияния жертвует точностью сигнализации вектора движения для повышения эффективности сигнализации (т.е. меньше битов). Синтаксис предсказания для AMVP может включать в себя флаг для режима (в данном случае, флаг AMVP), индекс для участка-кандидата, MVD между текущим вектором движения и предсказанным вектором движения из участка-кандидата, опорный индекс и направление предсказания движения.
[0051] После осуществления оценивания движения для определения вектора движения для текущего участка, кодер сравнивает совпадающий участок в опорном кадре с текущим участком. Это сравнение обычно предусматривает вычитание участка (который обычно именуется “опорной выборкой”) в опорном кадре из текущего участка и позволяет получить так называемые остаточные данные, упомянутые выше. Остаточные данные указывают разностные значения пикселей между текущим участком и опорной выборкой. Затем кодер преобразует эти остаточные данные из пространственной области в область преобразования, например частотную область. Обычно кодер применяет дискретное косинусное преобразование (DCT) к остаточным данным для осуществления этого преобразования. Кодер осуществляет это преобразование для облегчения сжатия остаточных данных, поскольку результирующие коэффициенты преобразования представляют разные частоты, причем большая часть энергии обычно концентрируется на нескольких низкочастотных коэффициентах.
[0052] Обычно результирующие коэффициенты преобразования группируются друг с другом таким образом, чтобы обеспечивать кодирование с переменной длиной строки, особенно, если коэффициенты преобразования предварительно квантуются (округляются). Кодер осуществляет это кодирование с переменной длиной строки квантованных коэффициентов преобразования и затем осуществляет статистическое без потерь (или так называемое “энтропийное”) кодирование для дополнительного сжатия квантованных коэффициентов преобразования, кодированных с переменной длиной строки.
[0053] После осуществления энтропийного кодирования без потерь кодер генерирует битовый поток, который включает в себя кодированные видеоданные. Этот битовый поток, в некоторых случаях, также включает в себя ряд элементов синтаксиса предсказания, которые указывают, осуществлялось ли, например, предсказание вектора движения, режим вектора движения и индекс предсказателя вектора движения (MVP) (т.е. индекс участка-кандидата с выбранным вектором движения). Индекс MVP также может именоваться своим именем переменной элемента синтаксиса “mvp_idx”.
[0054] В современной версии, которую предлагает принять ITU-T/ISO/IEC Joint Collaborative Team при видеокодировании (JCT-VC), именуемой высокоэффективным видеокодированием (HEVC), кодер осуществляет ряд режимов предсказания вектора движения для предсказания вектора движения для текущего участка, включающих в себя 1) AMVP и 2) режим слияния, описанные выше. Эти два режима аналогичны, хотя AMVP обеспечивает повышенную гибкость в отношении способности задавать MVD, направления предсказания движения и опорные индексы, тогда как режим слияния всего лишь копирует эту информацию вектора движения (т.е. вектор движения, направление предсказания движения и опорный индекс) и не позволяет повысить точность MVD.
[0055] На фиг. 1A показан набор блоков-кандидатов 100 (или участков/блоков PU), предложенный в настоящее время в стандарте HEVC для использования в режиме AMVP, тогда как на фиг. 1B показан набор блоков-кандидатов 110, предложенный в настоящее время в стандарте HEVC для использования в режиме слияния. Режим AMVP использует шесть блоков-кандидатов: нижний левый (BL) блок 101, левый (L) блок 102, правый верхний (RA) блок 103, верхний (A) блок 104, левый верхний (LA) блок 105 и временной блок (T) 106. Заметим, что, помимо набора блоков-кандидатов, режим AMVP также указывает порядок проверки блоков-кандидатов. В примере, показанном на фиг. 1A, шаблон проверки выполняется следующим образом: BL-L-RA-A-LA-T. Как показано на фиг. 1B, режим слияния использует пять блоков-кандидатов: нижний левый (BL) блок 111, левый (L) блок 112, правый верхний (RA) блок 113, верхний (A) блок 114 и временной (T) блок 115. Векторы движения, связанные с этими блоками-кандидатами, используются для определения предсказателя вектора движения в режиме слияния и в режиме AMVP. Режим слияния может использовать шаблон проверки, аналогичный AMVP, или может использовать другой шаблон проверки.
[0056] Как рассмотрено выше, режим AMVP использует шесть блоков-кандидатов, тогда как режим слияния использует пять блоков-кандидатов. Также, отличные от правого верхнего (RA), нижнего левого (BL) и временного (T) блоков, блоки-кандидаты для режима AMVP и режима слияния находятся в разных положениях. Таким образом, большое количество блоков-кандидатов нужно сохранять и учитывать в ходе обоих процессов кодирования и декодирования. Также, шаблон проверки для AMVP может не быть оптимальным, поскольку нижний левый блок может не быть доступен во всех обстоятельствах. Такие обстоятельства включают в себя случай, когда нижний левый блок еще не кодирован (например, располагается поперек среза или границы CU), или когда данные для нижнего левого блока повреждены.
[0057] В этом раскрытии предложен унифицированный набор блоков-кандидатов как для режима AMVP, так и режима слияния. В общем случае, один и тот же набор блоков-кандидатов используется независимо от используемого режима предсказания вектора движения (например, режима слияния или режима AMVP). Таким образом, меньше памяти требуется для сохранения векторов движения и другой информации, связанной с интер-предсказанием (например, опорного кадра, направления предсказания и т.д.). В других примерах этого раскрытия, предложены методы использования набора блоков-кандидатов, который включает в себя дополнительный блок-кандидат. Также раскрыты методы для более оптимального шаблона проверки.
[0058] На фиг. 2 показана блок-схема, демонстрирующая пример системы 10 видеокодирования и декодирования, которая может быть выполнена с возможностью использования методов предсказания вектора движения в соответствии с примерами этого раскрытия. Как показано на фиг. 2, система 10 включает в себя устройство-источник 12, которое передает кодированное видео на устройство 14 назначения через канал 16 связи. Кодированные видеоданные также могут сохраняться на носителе 34 данных или файловом сервере 36, и, при желании, устройство 14 назначения может к ним обращаться. При сохранении на носителе данных или файловом сервере, видеокодер 20 может выдавать кодированные видеоданные на другое устройство, например сетевой интерфейс, устройство записи компакт-диска (CD), Blu-ray, или цифрового видеодиска (DVD) или устройство штамповочной установки, или другие устройства, для сохранения кодированных видеоданных на носителе данных. Аналогично, устройство, отдельное от видеодекодера 30, например, сетевой интерфейс, устройство чтения CD или DVD и т.п. может извлекать кодированные видеоданные с носителя данных и подавать извлеченные данные на видеодекодер 30.
[0059] Устройство-источник 12 и устройство 14 назначения могут содержать любое из разнообразных устройств, включая настольные компьютеры, ноутбуки (т.е. портативные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, например, так называемые смартфоны, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, консоли для видеоигр и т.п. Во многих случаях, такие устройства могут быть оборудованы средством беспроводной связи. Поэтому канал 16 связи может содержать беспроводной канал, проводной канал, или комбинацию беспроводного и проводного каналов, пригодных для передачи кодированных видеоданных. Аналогично, устройство 14 назначения может обращаться к файловому серверу 36 посредством любого стандартного соединения для передачи данных, включая интернет-соединение. Это может быть беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или их комбинация, пригодные для доступа к кодированным видеоданным, хранящимся на файловом сервере.
[0060] Методы предсказания вектора движения, в соответствии с примерами этого раскрытия, можно применять к видеокодированию при поддержке любого из различных мультимедийных приложений, например эфирных телевизионных программ, кабельных телевизионных передач, спутниковых телевизионных передач, передач потокового видео, например через интернет, кодирования цифрового видео для сохранения на носителе данных, декодирования цифрового видео, хранящегося на носителе данных, или других приложений. В некоторых примерах, система 10 может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, вещание видео, и/или видеотелефония.
[0061] В примере, показанном на фиг. 2, устройство-источник 12 включает в себя источник 18 видео, видеокодер 20, модулятор/демодулятор 22 и передатчик 24. В устройстве-источнике 12, источник 18 видео может включать в себя такой источник, как устройство захвата видео, например видеокамеру, архив видео, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от поставщика видеоконтента и/или систему компьютерной графики для генерации данных компьютерной графики в качестве источника видео, или комбинации таких источников. В порядке одного примера, если источником 18 видео является видеокамера, устройство-источник 12 и устройство 14 назначения могут формировать так называемые камерофоны или видеофоны. Однако методы, описанные в этом раскрытии, в общем случае, можно применять к видеокодированию и можно применять к беспроводным и/или проводным приложениям или приложению, в котором кодированные видеоданные хранятся на локальном диске.
[0062] Захваченное, предзахваченное или компьютерно-сгенерированное видео может кодироваться видеокодером 20. Кодированная видеоинформация может модулироваться модемом 22 согласно стандарту связи, например, протоколу беспроводной связи, и передаваться на устройство 14 назначения через передатчик 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0063] Захваченное, предзахваченное или компьютерно-сгенерированное видео, которое кодируется видеокодером 20, также может сохраняться на носителе 34 данных или файловом сервере 36 для дальнейшего потребления. Носитель 34 данных может включать в себя Blu-ray диски, DVD, CD-ROM, флэш-память или любые другие пригодные цифровые носители данных для хранения кодированного видео. Кодированное видео, хранящееся на носителе 34 данных, может затем поступать на устройство 14 назначения для декодирования и воспроизведения.
[0064] Файловый сервер 36 может представлять собой сервер любого типа, способный хранить кодированное видео и передавать это кодированное видео на устройство 14 назначения. Примеры файловых серверов включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, устройства хранения, подключаемые к сети (NAS), локальный дисковод, или устройство любого другого типа, способное хранить кодированные видеоданные и передавать их на устройство назначения. Передача кодированных видеоданных с файлового сервера 36 может осуществляться посредством потока, загрузки или их комбинации. Устройство 14 назначения может обращаться к файловому серверу 36 посредством любого стандартного соединения для передачи данных, включая интернет-соединение. Это может быть беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, Ethernet, USB и т.д.) или их комбинация, пригодный для доступа к кодированным видеоданным, хранящимся на файловом сервере.
[0065] Устройство 14 назначения, в примере, показанном на фиг. 2, включает в себя приемник 26, модем 28, видеодекодер 30, и устройство 32 отображения. Приемник 26 устройства 14 назначения принимает информацию по каналу 16, и модем 28 демодулирует информацию для генерации демодулированного битового потока для видеодекодера 30. Информация, передаваемая по каналу 16, может включать в себя различную синтаксическую информацию, генерируемую видеокодером 20, для использования видеодекодером 30 при декодировании видеоданных. Такой синтаксис также может быть включен с кодированными видеоданными, хранящимися на носителе 34 данных или файловом сервере 36. Каждый из видеокодера 20 и видеодекодера 30 могут формировать часть соответствующего кодера-декодера (кодека), который способен кодировать или декодировать видеоданные.
[0066] Устройство 32 отображения может быть объединено с устройством 14 назначения или быть внешним по отношению к нему. В некоторых примерах, устройство 14 назначения может включать в себя интегрированное устройство отображения и также может быть выполнено с возможностью сопрягаться с внешним устройством отображения. В других примерах, устройством 14 назначения может быть устройство отображения. В общем случае, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из различных устройств отображения, например, жидкокристаллический дисплей (ЖКД), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.
[0067] В примере, показанном на фиг. 2, канал 16 связи может содержать любую среду беспроводной или проводной связи, например, радиочастотный (РЧ) спектр или одну или более физических линий передачи, или любую комбинацию беспроводных и проводных среды передачи данных. Канал 16 связи может формировать часть сети с коммутацией пакетов, например локальной сети, глобальной сети или глобальной сети, например интернета. Канал 16 связи, в общем случае, представляет любую пригодную среду связи, или совокупность разных сред связи, для передачи видеоданных от устройства-источника 12 на устройство 14 назначения, включающих в себя любую пригодную комбинацию проводных или беспроводных сред передачи данных. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения передачи от устройства-источника 12 на устройство 14 назначения.
[0068] Видеокодер 20 и видеодекодер 30 могут действовать согласно стандарту сжатия видео, например стандарту высокоэффективного видеокодирования (HEVC), в настоящее время находящемуся в разработке, и может согласовываться с HEVC Test Model (HM). Альтернативно, видеокодер 20 и видеодекодер 30 могут действовать согласно другим собственным или промышленным стандартам, например стандарту ITU-T H.264, альтернативно именуемому MPEG 4, часть 10, Advanced Video Coding (AVC), или расширениям таких стандартов. Методы этого раскрытия, однако, не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
[0069] Хотя это не показано на фиг. 2, в некоторых аспектах, каждый из видеокодера 20 и видеодекодера 30 может быть объединен с кодером и декодером аудиосигнала и может включать в себя надлежащие блоки мультиплексирования-демультиплексирования, или другое оборудование и программное обеспечение для обработки аудио- и видеокодирования в общем потоке данных или раздельных потоках данных. Если применимо, в некоторых примерах, блоки мультиплексирования-демультиплексирования могут согласовываться с протоколом мультиплексора ITU H.223 или другими протоколами, например, протоколом пользовательских дейтаграмм (UDP).
[0070] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из различных пригодных схем кодера, например, одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программного обеспечения, оборудования, программно-аппаратного обеспечения или любых их комбинаций. Когда методы реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения на пригодном, энергонезависимом машиночитаемом носителе и выполнять инструкции на оборудовании с использованием одного или более процессоров для осуществления методов этого раскрытия. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0071] Видеокодер 20 может реализовывать любой или все из методов этого раскрытия для предсказания вектора движения в процессе видеокодирования. Аналогично, видеодекодер 30 может реализовывать любой или все из этих методов предсказания вектора движения в процессе видеокодирования. Видеокодер, как описано в этом раскрытии, может указывать на видеокодер или видеодекодер. Аналогично, блок видеокодирования может указывать на видеокодер или видеодекодер. Аналогично, видеокодирование может указывать на видеокодирование или видеодекодирование.
[0072] В одном примере раскрытия, видеокодер 20 устройства-источника 12 может быть выполнен с возможностью определения одного из множества режимов для процесса предсказания вектора движения и осуществления процесса предсказания вектора движения для текущего блока видеоданных с использованием определенного режима и набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов.
[0073] В другом примере раскрытия, видеокодер 20 устройства-источника 12 может быть выполнен с возможностью определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных и осуществления процесса предсказания вектора движения для текущего блока с использованием определенного режима и набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен.
[0074] В другом примере раскрытия, видеодекодер 30 устройства 14 назначения может быть выполнен с возможностью приема элемента синтаксиса, указывающего один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, и приема индекса, указывающего блок-кандидат из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
[0075] В другом примере раскрытия, видеодекодер 30 устройства 14 назначения может быть выполнен с возможностью приема элемента синтаксиса, указывающего один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, и приема индекса, указывающего блок-кандидат из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
[0076] На фиг. 3 показана блок-схема, демонстрирующая пример видеокодера 20, который может использовать методы предсказания вектора движения, описанные в этом раскрытии. Видеокодер 20 будет описан в контексте кодирования HEVC в целях иллюстрации, но, без ограничения этого раскрытия, применительно к стандартам или способам кодирования, которые могут требовать сканирования коэффициентов преобразования. Видеокодер 20 может осуществлять интра- и интер-кодирование CU в кадрах видео. Интра-кодирование опирается на пространственное предсказание для снижения или устранения пространственной избыточности в видеоданных в данном кадре видео. Интер-кодирование опирается на временное предсказание для снижения или устранения временной избыточности между текущим кадром и ранее кодированными кадрами видеопоследовательности. Интра-режим (I-режим) может указывать на любой из нескольких режимов пространственного сжатия видео. Интер-режимы, например, однонаправленного предсказания (P-режим) или двунаправленное предсказание (B-режим) могут указывать на любой из нескольких режимов временного сжатия видео.
[0077] Как показано на фиг. 3, видеокодер 20 принимает текущий видеоблок в кадре видео, подлежащем кодированию. В примере, показанном на фиг. 3, видеокодер 20 включает в себя блок 44 компенсации движения, блок 42 оценивания движения, блок 46 интра-предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Модуль 52 преобразования, представленный на фиг. 3, - это структура или устройство, которое применяет фактическое преобразование или комбинации преобразования к блоку остаточных данных, и не должен ограничиваться блоком коэффициентов преобразования, который может именоваться единицей преобразования (TU) CU. Для реконструкции видеоблока, видеокодер 20 также включает в себя блок 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Деблокирующий фильтр (не показан на фиг. 3) также может быть включен для фильтрации границ блоков для устранения артефактов блочности из реконструированного видео. При желании, деблокирующий фильтр обычно будет фильтровать выходной сигнал сумматора 62.
[0078] В ходе процесса кодирования видеокодер 20 принимает кадр видео или срез, подлежащий кодированию. Кадр или срез может делиться на множественные видеоблоки, например наибольшие единицы кодирования (LCU). Блок 42 оценивания движения и блок 44 компенсации движения осуществляют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадров для обеспечения временного сжатия. Блок 46 интра-предсказания может осуществлять кодирование с интра-предсказанием принятого видеоблока относительно одного или более соседних блоков в одном и том же кадре или срезе в качестве блока, подлежащего кодированию, для обеспечения пространственного сжатия.
[0079] Блок 40 выбора режима может выбирать один из режимов кодирования, интра- или интер-режим, например, на основании результатов ошибки (т.е. искажения) для каждого режима, и выдает результирующий интра- или интер-прогнозируемый блок (например, единицу предсказания (PU)) на сумматор 50 для генерации данных остаточного блока и на сумматор 62 для реконструкции кодированного блока для использования в опорном кадре. Сумматор 62 объединяет прогнозируемый блок и обратно квантованные, обратно преобразованные данные из модуля 60 обратного преобразования для блока для реконструкции кодированного блока, как более подробно описано ниже. Некоторые кадры видео могут обозначаться как I-кадры, где все блоки в I-кадре кодируются в режиме интра-предсказания. В ряде случаев, блок 46 интра-предсказания может осуществлять кодирование с интра-предсказанием блока в P- или B-кадре, например, когда поиск движения, осуществляемый блоком 42 оценивания движения, не приводит к достаточному предсказанию блока.
[0080] Блок 42 оценивания движения и блок 44 компенсации движения могут быть сильно интегрированы, но проиллюстрированы по отдельности в принципиальных целях. Оценивание движения (или поиск движения) - это процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать перемещение единицы предсказания в текущем кадре относительно опорной выборки опорного кадра. Блок 42 оценивания движения вычисляет вектор движения для единицы предсказания интер-кодированного кадра, сравнивая единицу предсказания с опорными выборками опорного кадра, хранящимися в буфере 64 опорных кадров. Опорной выборкой может быть блок, в отношении которого установлено, что он хорошо согласуется с участком CU, включающим в себя PU, кодируемую по пиксельной разности, которую можно определить через сумму абсолютных значений разности (SAD), сумму квадратов разностей (SSD) или другие разностные метрики. Опорная выборка может происходить где угодно в опорном кадре или опорном срезе. В некоторых примерах, опорная выборка может происходить в дробной позиции пикселя.
[0081] Участок опорного кадра, идентифицированный вектором движения, может именоваться опорной выборкой. Блок 44 компенсации движения может вычислять значение предсказания для единицы предсказания текущей CU, например, извлекая опорную выборку, идентифицированную вектором движения для PU. В некоторых методах видеокодирования, блок 42 оценивания движения отправляет вычисленный вектор движения, опорный кадр и направление предсказания (т.е. направление, указывающее, предшествует ли во времени опорный кадр текущему кадру или следует за ним) на блок 56 энтропийного кодирования и блок 44 компенсации движения. Другие методы видеокодирования используют процесс предсказания вектора движения для кодирования вектора движения. Процесс предсказания вектора движения можно выбирать среди множества режимов, включающего в себя режим слияния и режим AMVP.
[0082] В режиме слияния, кодер рассматривает набор блоков-кандидатов и выбирает блок, имеющий такие же (или наиболее близкие) вектор движения, опорный кадр и направление предсказания, что и текущий блок. Это осуществляется путем проверки каждого блока-кандидата по очереди и выбора того, который дает наилучший показатель скорость-искажение после копирования его вектора движения, опорного кадра и направления предсказания в текущий блок. Затем, вместо того, чтобы сигнализировать эту информацию вектора движения (т.е. вектор движения, опорный кадр и направление предсказания) в битовом потоке видеокодированного, кодер сигнализирует номер индекса для выбранного блока-кандидата. Декодер может копировать информацию вектора движения из блока-кандидата, указанного сигнализируемым номером индекса, и использовать скопированную информацию вектора движения для текущего блока. Фиг. 4A демонстрирует пример сигнализации режима слияния. Флаг 201 слияния указывает, что используется режим слияния. Индекс блока-кандидата 202 указывает, какой из блоков-кандидатов из набора блоков-кандидатов, заданных для режима слияния, подлежит использованию для извлечения информации вектора движения для текущего блока.
[0083] Следует отметить, что в определенных случаях для согласования указанного количества кандидатов для набора кандидатов режима слияния, можно генерировать некоторую “искусственную” информацию вектора движения для заполнения набора кандидатов. “Искусственную” информацию вектора движения можно генерировать в виде частичных комбинаций информации вектора движения из разных блоков-кандидатов. Например, список 0 вектор движения из блока-кандидата 1 можно комбинировать с вектором движения списка 1 из кандидата 2, совместно с индексом опорного кадра и направлением предсказания, для формирования новой информации вектора движения в наборе кандидатов. В некоторых других примерах, также можно добавлять нулевые векторы движения в качестве дополнительной информации вектора движения для заполнения набора кандидатов. Однако, независимо от того, как формируется набор кандидатов, в режиме слияния, только индекс набора кандидатов требуется сигнализировать на декодер для указания, какой кандидат выбран для обеспечения информации вектора движения для текущего блока. На стороне декодера, формируется такой же набор кандидатов, и информация вектора движения может идентифицироваться посредством сигнализируемого индекса набора кандидатов.
[0084] В режиме AMVP, кодер рассматривает набор блоков-кандидатов и выбирает блок, который создает разность векторов движения (т.е. разность между вектором движения соответствующего блока-кандидата и фактическим вектором движения текущего блока), которая дает наилучший показатель скорость-искажение или отвечает некоторому заранее определенному порогу (например, порогу скорости-искажения). Режим AMVP может рассматривать блоки-кандидаты в шаблоне проверки, пока не будет найден и выбран удовлетворительный кандидат. Альтернативно, в некоторых примерах, можно проверять все блоки-кандидаты, и блок-кандидат, дающий наилучший результат, выбирается в качестве MVP для блока, подлежащего кодированию. Затем кодер может сигнализировать индекс для блока-кандидата, используемого для генерации разности векторов движения совместно с разностью векторов движения. Затем декодер может воссоздавать вектор движения для текущего блока путем прибавления принятой разности векторов движения к вектору движения, извлеченному из блока-кандидата, указанного сигнализируемым индексом. Фиг. 4B демонстрирует пример сигнализации режима AMVP. Флаг 205 режима AMVP указывает, что используется режим AMVP. Индекс 206 блока-кандидата указывает, какой из блоков-кандидатов из набора блоков-кандидатов, заданных для режима AMVP, подлежит использованию для извлечения вектора движения. Режим AMVP также сигнализирует разность векторов движения 207, опорный кадр 208 и направление предсказания 209. В некоторых примерах, вместо сигнализации в явном виде опорного кадра и направления предсказания, опорный кадр и направление предсказания извлекаются из информации вектора движения, связанной с блоком-кандидатом.
[0085] В вышеописанных примерах, сигнализация информации вектора движения в кодированном битовом потоке не требует передачи в реальном времени таких элементов с кодера на декодер, но означает, что такая информация кодируется в битовый поток и делается доступной декодеру каким-либо образом. Это может включать в себя передачу в реальном времени (например, в режиме видеоконференции), а также сохранение кодированного битового потока на машиночитаемом носителе для использования в будущем декодером (например, при потоковой передаче, загрузке, доступе к диску, доступе к карте, DVD, Blu-ray и т.д.).
[0086] В соответствии с примерами этого раскрытия, режим слияния и режим AMVP используют один и тот же набор блоков-кандидатов (т.е. в отношении количества и местоположения блоков). Таким образом, кодер и декодер могут снижать объем памяти, необходимый для сохранения информации вектора движения для блоков-кандидатов. Это также может снижать требование к пропускной способности памяти при извлечении этих векторов движения в ходе процесса кодирования текущего блока.
[0087] В первом примере раскрытия, режим слияния и режим AMVP используют один и тот же набор блоков-кандидатов 120, показанных на фиг. 5A. В этом примере, режим слияния теперь будет использовать шесть блоков-кандидатов вместо пяти. Однако суммарное количество блоков-кандидатов для режима слияния и режима AMVP снижается, поскольку оба режима используют блоки-кандидаты в одних и тех же положениях. В этом примере, блоки-кандидаты находятся в нижней левой (BL) 121, левой (L) 122, левой верхней (LA) 125, верхней (A) 124, правой верхней (RA) 123 и временной (T) 126 позициях, как показано на фиг. 5A. В этом примере, левый блок-кандидат 122 соседствует с левым краем текущего блока 127. Нижний край левого блока 122 выровнен с нижним краем текущего блока 127. Верхний блок 124 соседствует с верхним краем текущего блока 127. Правый край верхнего блока 124 выровнен с правым краем текущего блока 127.
[0088] Во втором примере раскрытия, режим AMVP и режим слияния используют набор блоков-кандидатов 130, показанный на фиг. 5B. В этом примере, количество блоков-кандидатов для режима AMVP снижается до 5. Дальнейшее сокращение количества блоков-кандидатов достигается за счет того, что режим слияния и режим AMVP теперь используют блоки-кандидаты в одних и тех же положениях. В этом примере, блоки-кандидаты находятся в нижнем левом (BL) 131, левом (L) 132, верхнем (A) 134, правом верхнем (RA) 133 и временном (T) 135 положениях. Заметим, что положения верхнего блока 134 и левого блока 132 отличаются от положений верхнего блока 124 и левого блока 122 в примере, показанном на фиг. 5A. В этом примере, левый блок-кандидат 132 соседствует с левым краем текущего блока 137. Верхний край левого блока 132 выровнен с верхним краем текущего блока 137. Верхний блок 134 соседствует с верхним краем текущего блока 137. Левый край верхнего блока 134 выровнен с левым краем текущего блока 137. В одном примере, шаблон проверки для режима AMVP выполняется следующим образом: BL-L-RA-A-T.
[0089] В третьем примере раскрытия, режим слияния и режим AMVP используют набор блоков-кандидатов 140, показанный на фиг. 6. В этом примере, количество блоков-кандидатов снижается как за счет сокращения суммарного количества для каждого режима до 5, а также за счет унификации положений блоков-кандидатов для обоих режимов. В этом примере, блоки-кандидаты находятся в нижнем левом (BL) 141, левом (L) 142, верхнем (A) 143, правом верхнем (RA) 144 и временном (T) 145 положениях. В этом примере, левый блок-кандидат 142 соседствует с левым краем текущего блока 147. Нижний край левого блока 142 выровнен с нижним краем текущего блока 147. Верхний блок 143 соседствует с верхним краем текущего блока 147. Правый край верхнего блока 143 выровнен с правым краем текущего блока 147.
[0090] В другом примере, раскрытие описывает улучшенный шаблон проверки для режима AMVP. Как показано на фиг. 7, например, шаблон проверки выполняется следующим образом: L-BL-A-RA-LA-T. Вместо того, чтобы начинаться на блоке-кандидате BL, как показано на фиг. 1A, пример, показанный на фиг. 7, начинается на блоке-кандидате L. Левосторонние блоки, в общем случае, лучше коррелируют с текущим блоком, поскольку видеоконтент обычно перемещается в горизонтальном направлении. Блок-кандидат L проверяется в первую очередь, поскольку блок-кандидат BL может не быть доступен (т.е. может еще не быть кодированным) во всех ситуациях. Кроме того, блок-кандидат A проверяется перед блоком-кандидатом RA, поскольку было показано, что вектор движения блока-кандидата A имеет более высокую статистическую корреляцию с вектором движения текущего блока, чем вектор движения блока-кандидата RA.
[0091] Режим слияния может использовать тот же шаблон проверки, показанный на фиг. 7, или может использовать другой шаблон проверки. В порядке одного примера, шаблон проверки для режима слияния может выполняться следующим образом: L-A-RA-BL-(LA)-T. В этом примере, включение блока LA является необязательным или адаптивным в зависимости от того, является ли один из первых четырех блоков-кандидатов недоступным.
[0092] Пример на фиг. 7 показан со ссылкой на набор блоков-кандидатов, представленный на фиг. 5A. Однако этот шаблон проверки можно применять с любым набором кандидатов. В общем случае, левый блок-кандидат следует проверять до нижнего левого блока-кандидата. Затем верхний блок-кандидат следует проверять перед правым верхним блоком-кандидатом. Затем все остальные блоки-кандидаты можно проверять в любом порядке. В некоторых примерах, временной блок-кандидат можно проверять в последнюю очередь.
[0093] В другом примере раскрытия раскрыты гибкие дополнительные кандидаты для обоих режимов слияния и AMVP. Как показано в примере, показанном на фиг. 5A, существует пять пространственных блоков-кандидатов (т.е. L, BL, A, RA и LA) и один временной блок-кандидат (т.е., T), всего шесть блоков-кандидатов. В предыдущем предложении в отношении стандарта HEVC, максимальное количество блоков-кандидатов для режима слияния равно пяти. Таким образом, один из блоков-кандидатов, показанных на фиг. 5A, можно исключить для режима слияния. В одном примере, блок-кандидат LA можно задавать в качестве дополнительного блока-кандидата (т.е. он первоначально не считается частью набора блоков-кандидатов для режима слияния).
[0094] Однако, как упомянуто выше, не все блоки-кандидаты доступны во всех ситуациях. Например, блок-кандидат BL может еще не быть кодированным во время кодирования текущего блока. Кроме того, данные для некоторых блоков-кандидатов могут повреждаться или могут вовсе не приниматься (например, при декодировании в реальном времени). Таким образом, это раскрытие предусматривает использование дополнительных блоков-кандидатов в случаях, когда блок-кандидат в наборе оказывается недоступным. Таким образом, суммарное количество кандидатов остается на максимальном пределе без ненужной проверки недоступного кандидата.
[0095] В одном примере, кандидаты L и BL сначала проверяются кодером или декодером, если применимо. Если один из этих блоков-кандидатов недействителен (например, поврежден) или недоступен, вместо него можно использовать дополнительный блок-кандидат (например, LA). Если оба блока-кандидата L и BL пригодны, проверяются блоки-кандидаты A и RA. Если один из этих блоков-кандидатов недействителен или недоступен, вместо него можно использовать блок-кандидат LA. Если оба блока-кандидата A и RA пригодны, блок-кандидат LA не будет использоваться. В этом примере, блок-кандидат LA используется в качестве дополнительного блока-кандидата. Однако можно использовать любой дополнительный блок-кандидат в любой причинной позиции (т.е. в позиции относительно текущего блока, где блок-кандидат уже закодирован) относительно текущего блока.
[0096] В другом примере, будут использоваться все блоки-кандидаты, показанные на фиг. 5A. Для режима слияния, где максимальное количество блоков-кандидатов равно N (где N меньше 6), первые N доступных блоков-кандидатов в шаблоне проверки будут использоваться в качестве блоков-кандидатов для режима слияния. В примере, показанном на фиг. 5A, существует шесть блоков-кандидатов с шаблоном проверки L-A-RA-BL-LA-T. Первые N доступных блоков-кандидатов в шаблоне проверки будут формировать окончательный набор блоков-кандидатов для режима слияния. В этом примере, шаблон проверки является фиксированным. В другом примере, шаблон проверки можно выбирать на основании размера блока, размера раздела и/или индекса раздела. В другом примере, шаблон проверки может обновляться адаптивно в ходе кодирования и декодирования. Обновление может зависеть от индекса слияния, режима предсказания вектора движения, размера раздела, индекса раздела и/или информации вектора движения (например, опорного индекса, разности векторов движения, предсказателя вектора движения) ранее кодированных/декодированных блоков.
[0097] Согласно другому примеру, методы использования дополнительного блока-кандидата также можно применять к режиму AMVP. Режим AMVP в современном рабочем проекте стандарта HEVC уже позволяет проверять все шесть блоков-кандидатов, показанных на фиг. 5A. Однако, как упомянуто выше, некоторые из этих блоков-кандидатов может быть недоступным или непригодным. В таком случае, можно задавать дополнительный кандидат слияния. Такой кандидат слияния может находиться в любой позиции, которая является причинной для текущей PU.
[0098] Возвращаясь к фиг. 3, блок 46 интра-предсказания может осуществлять интра-предсказание на принятом блоке, в порядке альтернативы интер-предсказанию, осуществляемому блоком 42 оценивания движения и блоком 44 компенсации движения. Блок 46 интра-предсказания может предсказывать принятый блок относительно соседних, ранее кодированных блоков, например блоков, расположенных выше, выше правее, выше и левее или слева текущего блока, предполагая порядок кодирования слева направо, сверху вниз для блоков. Блок 46 интра-предсказания может быть сконфигурирован с различными режимами интра-предсказания. Например, блок 46 интра-предсказания может быть сконфигурирован с определенным количеством режимов направленного предсказания, например, тридцатью четырьмя режимами направленного предсказания, на основании размера кодируемой CU.
[0099] Блок 46 интра-предсказания может выбирать режим интра-предсказания, например, вычисляя значения ошибки предсказания для различных режимов интра-предсказания и выбирая режим, который дает наименьшее значение ошибки. Режимы направленного предсказания могут включать в себя функции для комбинирования значений пространственно соседствующих пикселей и применения комбинированных значений к одной или более позициям пикселя в PU. После вычисления значений для всех позиций пикселя в PU, блок 46 интра-предсказания может вычислять значение ошибки для режима предсказания на основании различия в пикселях между вычисленными или прогнозируемыми значениями PU и принятым исходным блоком, подлежащим кодированию. Блок 46 интра-предсказания может продолжать тестирование режимов интра-предсказания, пока не будет обнаружен режим интра-предсказания, который дает приемлемое значение ошибки. Затем блок 46 интра-предсказания может отправлять PU на сумматор 50.
[0100] Видеокодер 20 формирует остаточный блок вычитанием данных предсказания, вычисленных блоком 44 компенсации движения или блоком 46 интра-предсказания, из кодируемого исходного видеоблока. Сумматор 50 представляет компонент или компоненты, которые осуществляют эту операцию вычитания. Остаточный блок может соответствовать двухмерной матрице разностных значений пикселей, где количество значений в остаточном блоке совпадает с количеством пикселей в PU, соответствующей остаточному блоку. Значения в остаточном блоке могут соответствовать разностям, т.е. ошибке, между значениями совместно размещенных пикселей в PU и в исходном блоке, подлежащем кодированию. Такая операция применяется к обеим компонентам яркости и цветности, так что разности могут быть разностями цветности или яркости в зависимости от типа кодируемого блока.
[0101] Модуль 52 преобразования может формировать одну или более единиц преобразования (TU) из остаточного блока. Модуль 52 преобразования выбирает преобразование из множества преобразований. Преобразование можно выбирать на основании одной или более характеристик кодирования, например размера блока, режима кодирования и т.п. Затем модуль 52 преобразования применяет выбранное преобразование к TU, генерируя видеоблок, содержащий двухмерный массив коэффициентов преобразования.
[0102] Модуль 52 преобразования может отправлять результирующие коэффициенты преобразования на блок 54 квантования. Затем блок 54 квантования может квантовать коэффициенты преобразования. Затем блок 56 энтропийного кодирования может осуществлять сканирование квантованных коэффициентов преобразования в матрице согласно режиму сканирования. Это раскрытие описывает блок 56 энтропийного кодирования как осуществляющий сканирование. Однако следует понимать, что в других примерах другие блоки обработки, например, блок 54 квантования, может осуществлять сканирование.
[0103] После сканирования коэффициентов преобразования в одномерный массив, блок 56 энтропийного кодирования может применять к коэффициентам энтропийное кодирование, например контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), или другую методологию энтропийного кодирования. Энтропийное кодирование также можно применять к элементам синтаксиса, например элементам синтаксиса, используемым в режиме слияния и в режиме AMVP.
[0104] Для осуществления CAVLC, блок 56 энтропийного кодирования может выбирать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC можно построить так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может обеспечивать экономию битов, например, над использованием кодовых слов равной длины для каждого символа, подлежащего передаче.
[0105] Для осуществления CABAC, блок 56 энтропийного кодирования может выбирать контекстную модель для применения к определенному контексту для кодирования символов, подлежащих передаче. В случае коэффициентов преобразования, контекст может указывать, например, являются ли соседние значения ненулевыми. Блок 56 энтропийного кодирования также может энтропийно кодировать элементы синтаксиса, например сигнал, представляющий выбранное преобразование. В соответствии с методами этого раскрытия, блок 56 энтропийного кодирования может выбирать контекстную модель, используемую для кодирования этих элементов синтаксиса на основании, например, направления интра-предсказания для режимов интра-предсказания, позиции сканирования коэффициента, соответствующего элементам синтаксиса, типа блока и/или типа преобразования, помимо других факторов, используемых для выбора контекстной модели.
[0106] После энтропийного кодирования блоком 56 энтропийного кодирования, результирующее кодированное видео может передаваться на другое устройство, например, видеодекодер 30, или архивироваться для передачи или извлечения в будущем.
[0107] В ряде случаев, блок 56 энтропийного кодирования или другой блок видеокодера 20 может быть выполнен с возможностью осуществления других функций кодирования, помимо энтропийного кодирования. Например, блок 56 энтропийного кодирования может быть выполнен с возможностью определения значений шаблона кодированных блоков (CBP) для CU и PU. Также, в ряде случаев, блок 56 энтропийного кодирования может осуществлять кодирование с переменной длиной серии коэффициентов.
[0108] Блок 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для реконструкции остаточного блока в пиксельной области, например, для последующего использования при реконструкции опорного блока. Блок 44 компенсации движения может вычислять опорный блок путем прибавления остаточного блока к блоку предсказания, сформированному из одного из кадров буфера 64 опорных кадров. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к реконструированному опорному блоку для вычисления значений субцелых пикселей для использования при оценивании движения. Сумматор 62 суммирует реконструированный остаточный блок с блоком предсказания, подвергнутым компенсации движения, сформированным блоком 44 компенсации движения, для генерации реконструированного видеоблока для сохранения в буфере 64 опорных кадров. Реконструированный видеоблок может использоваться блоком 42 оценивания движения и блоком 44 компенсации движения в качестве опорного блока для интер-кодирования блока в следующем кадре видео.
[0109] На фиг. 8 показана блок-схема, демонстрирующая пример видеодекодера 30, который декодирует кодированную видеопоследовательность. В примере, показанном на фиг. 8, видеодекодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 интра-предсказания, блок 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видеодекодер 30 может, в некоторых примерах, осуществлять проход декодирования, в общем случае, обратный проходу кодирования, описанному по отношению к видеокодеру 20 (см. фиг. 3).
[0110] Блок 70 энтропийного декодирования осуществляет процесс энтропийного декодирования на кодированном битовом потоке для извлечения одномерного массива коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видеокодером 20 (например, CABAC, CAVLC, и т.д.). Процесс энтропийного кодирования, используемый кодером, может сигнализироваться в кодированном битовом потоке или может быть заранее определенным процессом.
[0111] В некоторых примерах, блок 70 энтропийного декодирования (или блок 76 обратного квантования) может сканировать принятые значения с использованием сканирования, зеркально копирующего режим сканирования, используемый блоком 56 энтропийного кодирования (или блоком 54 квантования) видеокодера 20. Хотя сканирование коэффициентов может осуществляться в блоке 76 обратного квантования, сканирование будет описано в целях иллюстрации как осуществляемое блоком 70 энтропийного декодирования. Кроме того, хотя для простоты иллюстрации показаны отдельные функциональные блоки, структура и функциональные возможности блока 70 энтропийного декодирования, блока 76 обратного квантования и других блоков видеодекодера 30 могут быть сильно интегрированы друг с другом.
[0112] Блок 76 обратного квантования осуществляет обратное квантование, т.е. деквантование, квантованных коэффициентов преобразования, обеспеченных в битовом потоке и декодированных блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, аналогичный процессам, предложенным для HEVC или заданным согласно стандарту декодирования H.264. Процесс обратного квантования может включать в себя использование параметра квантования QP, вычисленного видеокодером 20 для CU, для определения степени квантования и, аналогично, степени обратного квантования, которую следует применять. Блок 76 обратного квантования может осуществлять обратное квантование коэффициентов преобразования до или после преобразования коэффициентов из одномерного массива в двухмерный массив.
[0113] Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах, модуль 78 обратного преобразования может определять обратное преобразование на основании сигнализации от видеокодера 20 или путем вывода преобразования из одной или более характеристик кодирования, например, размера блока, режима кодирования и т.п. В некоторых примерах, модуль 78 обратного преобразования может определять преобразование для применения к текущему блоку на основании сигнализируемого преобразования на корневом узле квадродерева для LCU, включающей в себя текущий блок. Альтернативно, преобразование может сигнализироваться в корне квадродерева TU для краевой CU в квадродереве LCU. В некоторых примерах, модуль 78 обратного преобразования может применять каскадное обратное преобразование, в котором модуль 78 обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования декодируемого текущего блока.
[0114] Блок 74 интра-предсказания может генерировать данные предсказания для текущего блока текущего кадра на основании сигнализируемого режима интра-предсказания и данных из ранее декодированных блоков текущего кадра.
[0115] Согласно примерам этого раскрытия, видеодекодер 30 может принимать, из кодированного битового потока, синтаксис предсказания, который идентифицирует режим предсказания вектора движения и соответствующую информацию вектора движения (например, см. фиг. 4A и 4B и соответствующее рассмотрение). В частности, видеодекодер 30 может принимать индекс, указывающий блок-кандидат из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока. Набор блоков-кандидатов может представлять собой наборы, показанные на фиг. 5A, фиг. 5B или фиг. 6, или любой другой набор блоков-кандидатов, причинных для текущего блока.
[0116] В случае, когда элемент синтаксиса указывает режим слияния, видеодекодер дополнительно выполнен с возможностью извлечения вектора движения, опорного кадра и направления предсказания, связанного с блоком-кандидатом, имеющим принятый индекс, и осуществления процесса интер-предсказания для текущего блока с использованием извлеченных вектора движения, опорного кадра и направления предсказания.
[0117] В случае, когда элемент синтаксиса указывает режим адаптивного предсказания вектора движения (AMVP), видеодекодер дополнительно выполнен с возможностью приема индекса опорного кадра, разности векторов движения и элемента синтаксиса, указывающего направление предсказания, извлечения вектора движения-кандидата, связанного с блоком-кандидатом, имеющим принятый индекс, вычисления вектора движения для текущего блока с использованием вектора движения-кандидата и разности векторов движения, и осуществления процесса интер-предсказания с использованием вычисленного вектора движения, принятого индекса опорного кадра и принятого направления предсказания.
[0118] Независимо от режима предсказания, после определения направления предсказания, индекса опорного кадра и вектора движения для текущего блока, блок компенсации движения создает блок, подвергнутый компенсации движения, для текущего блока. Эти блоки, подвергнутые компенсации движения, по существу, воссоздают блок предсказания, используемый для генерации остаточных данных.
[0119] Блок 72 компенсации движения может создавать блоки, подвергнутые компенсации движения, возможно, осуществляя интерполяцию с помощью интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, подлежащих использованию для оценивания движения с подпиксельной точностью, могут быть включены в элементы синтаксиса. Блок 72 компенсации движения может использовать интерполяционные фильтры, которые используются видеокодером 20 в ходе кодирования видеоблока, для вычисления интерполированных значений для субцелых пикселей опорного блока. Блок 72 компенсации движения может определять интерполяционные фильтры, используемые видеокодером 20, согласно принятой синтаксической информации, и использовать интерполяционные фильтры для генерации блоков предсказания.
[0120] Дополнительно, блок 72 компенсации движения и блок 74 интра-предсказания, в примере HEVC, может использовать ту или иную синтаксическую информацию (например, предоставленную квадродеревом) для определения размеров LCU, используемых для кодирования кадра(ов) кодированной видеопоследовательности. Блок 72 компенсации движения и блок 74 интра-предсказания также могут использовать синтаксическую информацию для определения информации разбиения, которая описывает, как осуществляется разбиение каждой CU кадра кодированной видеопоследовательности (и, аналогично, как осуществляется разбиение под-CU). Синтаксическая информация также может включать в себя режимы, указывающие как кодируется каждая CU (например, интра- или интер-предсказание, и, для интра-предсказания, режим кодирования с интра-предсказанием), один или более опорных кадров (и/или опорные списки, содержащие идентификаторы для опорных кадров) для каждой интра-кодированной PU, и другую информацию для декодирования кодированной видеопоследовательности.
[0121] Сумматор 80 объединяет остаточные блоки с соответствующими блоками предсказания, генерируемыми блоком 72 компенсации движения или блоком 74 интра-предсказания, для формирования декодированных блоков. Декодированные блоки, в сущности, реконструируют первоначально кодированные блоки, испытавшие потерю вследствие квантования или других аспектов кодирования. При желании, деблокирующий фильтр также можно применять для фильтрации декодированных блоков для устранения артефактов блочности. Затем декодированные видеоблоки сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также создает декодированное видео для представления на устройстве отображения (например, устройстве 32 отображения фиг. 2).
[0122] Как упомянуто выше, методы этого раскрытия применимы как для кодера, так и для декодера. В общем случае, и в соответствии с вышеприведенным описанием, кодер использует один и тот же набор блоков-кандидатов для осуществления процесса предсказания вектора движения (например, в режиме слияния и в режиме AMVP). Затем декодер может декодировать вектор движения на основании элементов синтаксиса, принятых с использованием того же набора блоков-кандидатов, который использовал кодер. За счет унификации блоков-кандидатов для всех режимов предсказания вектора движения, снижается объем памяти, необходимый для сохранения информации вектора движения (например, вектора движения, направления предсказания, индексов опорных кадров и т.д.). Также может снижаться требование к пропускной способности памяти при извлечении информации вектора движения из этих блоков-кандидатов.
[0123] На фиг. 9 показана блок-схема операций, демонстрирующая пример способа видеокодирования, который может осуществляться видеокодером, например, видеокодером 20, показанным на фиг. 3. Видеокодер 20 может быть выполнен с возможностью определения вектора движения относительно опорного кадра для текущего блока видеоданных (900). Видеокодер 20 также может определять один из множества режимов (например, режим слияния или AMVP) для процесса предсказания вектора движения (901), и осуществлять процесс предсказания вектора движения для текущего блока видеоданных с использованием определенного режима и набора блоков-кандидатов. Набор блоков-кандидатов одинаков для каждого из множества режимов.
[0124] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Фиг. 10 иллюстрирует примерный способ видеокодирования, когда процесс предсказания вектора движения осуществляется в режиме слияния. В этом случае, видеокодер дополнительно выполнен с возможностью определения вектора движения-кандидата из набора блоков-кандидатов, который дает удовлетворительный показатель скорость-искажение после копирования его вектора движения, опорного кадра и направления предсказания в текущий блок (1001), и сигнализации индекса, идентифицирующего вектор движения-кандидат (1002).
[0125] В одном примере, набор блоков-кандидатов может включать в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат соседствует с левым краем текущего блока, и верхний край левого блока-кандидата выровнен с верхним краем текущего блока. Верхний блок-кандидат соседствует с верхним краем текущего блока, и левый край верхнего блока-кандидата выровнен с левым краем текущего блока.
[0126] В другом примере, левый блок-кандидат соседствует с левым краем текущего блока, и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Верхний блок-кандидат соседствует с верхним краем текущего блока, и правый край верхнего блока-кандидата выровнен с правым краем текущего блока.
[0127] В другом примере, набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
[0128] Фиг. 11 иллюстрирует примерный способ видеокодирования, когда процесс предсказания вектора движения осуществляется в режиме AMVP. В этом случае, видеокодер выполнен с возможностью определения вектора движения-кандидата из каждого блока-кандидата в наборе блоков-кандидатов (1101) и вычисления разности векторов движения между вектором движения для текущего блока и вектором движения-кандидатом из каждого из блоков-кандидатов согласно шаблону проверки (1102). Видеокодер также выполнен с возможностью выбора одного из векторов движения-кандидатов на основании вычисленных разностей векторов движения (1103), и сигнализации индекса, идентифицирующего блок-кандидат, имеющий выбранный один из векторов движения-кандидатов, для сигнализации разности векторов движения, вычисленных по отношению к выбранному одному из векторов движения-кандидатов, для сигнализации опорного кадра и для сигнализации направления предсказания (1104).
[0129] В одном примере, набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. В этом примере, шаблон проверки выполняется в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.
[0130] В другом примере, набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Шаблон проверки выполняется в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.
[0131] На фиг. 12 показана блок-схема операций, демонстрирующая пример способа видеодекодирования, который может осуществляться видеодекодером, например видеодекодером 30, показанным на фиг. 3. Видеодекодер 30 может быть выполнен с возможностью приема элемента синтаксиса, указывающего один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных (1201), и приема индекса, указывающего блок-кандидат из набора блоков-кандидатов (1202), причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока. Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения.
[0132] На фиг. 13 показана блок-схема операций, демонстрирующая пример способа видеодекодирования в случае, когда процесс предсказания вектора движения осуществляется в режиме слияния. В этом случае, видеодекодер дополнительно выполнен с возможностью извлечения вектора движения, опорного кадра и направления предсказания, связанного с блоком-кандидатом, имеющим принятый индекс (1301), и осуществления процесса интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания (1302).
[0133] В одном примере, набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат. Левый блок-кандидат соседствует с левым краем текущего блока, и верхний край левого блока-кандидата выровнен с верхним краем текущего блока. Верхний блок-кандидат соседствует с верхним краем текущего блока, и левый край верхнего блока-кандидата выровнен с левым краем текущего блока.
[0134] В другом примере, левый блок-кандидат соседствует с левым краем текущего блока, и нижний край левого блока-кандидата выровнен с нижним краем текущего блока. Верхний блок-кандидат соседствует с верхним краем текущего блока, и правый край верхнего блока-кандидата выровнен с правым краем текущего блока.
[0135] В другом примере, набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат.
[0136] На фиг. 14 показана блок-схема операций, демонстрирующая пример способа видеодекодирования в случае, когда процесс предсказания вектора движения осуществляется в режиме AMVP. В этом случае, видеодекодер выполнен с возможностью приема индекса опорного кадра, разности векторов движения и элемента синтаксиса, указывающего направление предсказания (1401), и извлечения вектора движения-кандидата, связанного с блоком-кандидатом, имеющим принятый индекс (1402). Видеодекодер дополнительно выполнен с возможностью вычисления вектора движения для текущего блока с использованием вектора движения-кандидата и разности векторов движения (1403), и осуществления процесса интер-предсказания с использованием вычисленного вектора движения, принятого индекса опорного кадра и принятого направления предсказания (1404).
[0137] В одном примере, набор блоков-кандидатов включает в себя верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов выполняется в следующем порядке: нижний левый блок-кандидат, левый блок-кандидат, правый верхний блок-кандидат, верхний блок-кандидат, временной блок-кандидат.
[0138] В другом примере, набор блоков-кандидатов включает в себя левый верхний блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый блок-кандидат, нижний левый блок-кандидат и временной блок-кандидат, и шаблон проверки для набора блоков-кандидатов выполняется в следующем порядке: левый блок-кандидат, нижний левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат, временной блок-кандидат.
[0139] На фиг. 15 показана блок-схема операций, демонстрирующая другой пример способа видеокодирования, который может осуществляться видеокодером, например, видеокодером 20, показанным на фиг. 3. Видеокодер 20 может быть выполнен с возможностью определения вектора движения относительно опорного кадра для текущего блока видеоданных (1501), определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных (1502), и осуществления процесса предсказания вектора движения для текущего блока с использованием определенного режима и набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, и при этом один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат (1503). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Видеокодер 20 может быть дополнительно выполнен с возможностью обновления шаблона проверки на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения (1504).
[0140] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. Режим слияния может иметь максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения. В этом случае, процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки. Шаблон проверки может базироваться на одном или более из размера блока, размера раздела и индекса раздела. В частности, например, шаблон проверки для каждого отдельного размера блока, размера раздела или индекса раздела может обновляться или изменяться на основании статистики выбора кандидата в нескольких предыдущих кодированных блоках, имеющих одинаковые размер блока, размер раздела или индекс раздела и т.д.
[0141] В другом примере, набор блоков-кандидатов включает в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. В этом примере, дополнительным блоком-кандидатом является левый верхний блок-кандидат. Однако дополнительным блоком-кандидатом может быть любой блок-кандидат, находящийся в причинной связи с текущим блоком.
[0142] На фиг. 16 показана блок-схема операций, демонстрирующая другой пример способа видеодекодирования, который может осуществляться видеодекодером, например, видеодекодером 30, показанным на фиг. 3. Видеодекодер 30 может быть выполнен с возможностью приема элемента синтаксиса, указывающего один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных (1601), и приема индекса, указывающего блок-кандидат из набора блоков-кандидатов, причем набор блоков-кандидатов одинаков для каждого из множества режимов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат (1602). Дополнительный блок-кандидат используется, если другой из блоков-кандидатов набора блоков-кандидатов недоступен. Информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
[0143] Множество режимов может включать в себя режим слияния и адаптивный режим предсказания вектора движения. На Фиг. 17 показан способ декодирования в случае, когда принятый элемент синтаксиса указывает, что используется режим слияния. В этом случае, видеодекодер дополнительно выполнен с возможностью извлечения вектора движения, опорного кадра и направления предсказания, связанного с блоком-кандидатом, имеющим принятый индекс (1701), и осуществления процесса интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания (1702).
[0144] Режим слияния можно задавать как имеющий максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения. В этом случае, процесс предсказания вектора движения может осуществляться согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов. Набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки. Шаблон проверки базируется на одном или более из размера блока, размера раздела и индекса раздела.
[0145] В другом примере, для обоих режима слияния и AMVP, набор блоков-кандидатов может включать в себя нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат. Дополнительным блоком-кандидатом является левый верхний блок-кандидат. Однако дополнительным блоком-кандидатом может быть любой блок-кандидат, находящийся в причинной связи с текущим блоком.
[0146] На фиг. 18 показан способ декодирования в случае, когда принятый элемент синтаксиса указывает, что используется режим AMVP. В этом случае, видеодекодер дополнительно выполнен с возможностью приема индекса опорного кадра, разности векторов движения и элемента синтаксиса, указывающего направление предсказания (1801), и извлечения вектора движения-кандидата, связанного с блоком-кандидатом, имеющим принятый индекс (1802). Видеодекодер дополнительно выполнен с возможностью вычисления вектора движения для текущего блока с использованием вектора движения-кандидата и разности векторов движения (1803) и осуществления процесса интер-предсказания с использованием вычисленного вектора движения, принятого индекса опорного кадра и принятого направления предсказания (1804).
[0147] В одном или более примеров, описанные функции могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Будучи реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода, на машиночитаемом носителе и выполняться аппаратным блоком обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствует вещественному носителю, например, носителям данных, или средам связи, включающим в себя любую среду, которая облегчает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем случае, могут соответствовать (1) вещественным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) среде связи, например сигналу или несущей волне. Носителями данных могут быть любые доступные носители, к которым могут обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0148] В порядке примера, но не ограничения, такие машиночитаемые носители данных могут содержать ОЗУ, ПЗУ, ЭСППЗУ, CD-ROM или другое хранилище на основе оптического диска хранилище на основе магнитного диска, или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель, который можно использовать для сохранения нужного программного кода в форме инструкций или структур данных и к которым компьютер может осуществлять доступ. Также любое соединение уместно именовать машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или из другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL), или беспроводных технологий, например, инфракрасной, радио и микроволновой, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например, инфракрасная, радио и микроволновая, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие среды переноса информации, но, напротив, относятся к вещественным носителям данных без возможности переноса информации. Магнитный диск (disk) и оптический диск (disc), как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и диск Blu-ray, где магнитные диски (disks) обычно воспроизводят данные магнитными средствами, тогда как оптические диски (discs) воспроизводят данные оптическими средствами с помощью лазеров. Комбинации вышеописанных устройств также подлежат включению в объем определения машиночитаемых носителей.
[0149] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), логических матриц, программируемых пользователем (FPGA), или других эквивалентных интегральных или дискретных логических схем. Соответственно, используемый здесь термин “процессор” может указывать на любую из вышеупомянутой структуры или любой другой структуры, пригодной для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функциональные возможности могут обеспечиваться в специализированном оборудовании и/или программных модулях, выполненных с возможностью кодирования и декодирования, или включенных в объединенный кодек. Также методы можно полностью реализовать в одной или более схемах или логических элементах.
[0150] Методы этого раскрытия могут быть реализованы в разнообразных устройствах или приспособлениях, включающих в себя беспроводной телефон, интегральную схему (ИС) или набор ИС (например, чипсет). Различные компоненты, модули или блоки описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществления раскрытых методов, но не обязательно требуют реализации разными аппаратными блоками. Напротив, как описано выше, различные блоки могут объединяться в аппаратном блоке кодека или обеспечиваться совокупностью взаимодействующих между собой аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с пригодным программным обеспечением и/или программно-аппаратным обеспечением.
[0151] Выше описаны различные примеры. Эти и другие примеры отвечают объему нижеследующей формулы изобретения.
Claims (41)
1. Способ кодирования вектора движения в процессе видеокодирования, причем способ содержит этапы, на которых:
определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определяют набор блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществляют процесс предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определяют набор блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществляют процесс предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
2. Способ по п. 1, в котором множество режимов включают в себя режим слияния и адаптивный режим предсказания вектора движения.
3. Способ по п. 2, дополнительно содержащий этапы, на которых:
определяют вектор движения относительно опорного кадра для текущего блока видеоданных, причем местоположение опорного кадра базируется на направлении предсказания.
определяют вектор движения относительно опорного кадра для текущего блока видеоданных, причем местоположение опорного кадра базируется на направлении предсказания.
4. Способ по п. 3,
в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
5. Способ по п. 4, в котором шаблон проверки базируется на одном или более из размера блока, размера раздела и индекса раздела.
6. Способ по п. 4, дополнительно содержащий этапы, на которых:
обновляют шаблон проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
обновляют шаблон проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
7. Способ по п. 1, в котором дополнительным блоком-кандидатом является левый верхний блок-кандидат.
8. Способ по п. 1, в котором дополнительным блоком-кандидатом является блок-кандидат, который находится в причинной связи с текущим блоком.
9. Способ по п. 1, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
10. Устройство, выполненное с возможностью кодирования вектора движения в процессе видеокодирования, содержащее:
память, выполненную с возможностью хранения информации о векторе движения для набора блоков-кандидатов; и видеокодер, выполненный с возможностью:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определения набора блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществления процесса предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
память, выполненную с возможностью хранения информации о векторе движения для набора блоков-кандидатов; и видеокодер, выполненный с возможностью:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определения набора блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществления процесса предсказания вектора движения для текущего блока с использованием указанного определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
11. Устройство по п. 10, в котором множество режимов включают в себя режим слияния и адаптивный режим предсказания вектора движения.
12. Устройство по п. 11, в котором видеокодер дополнительно выполнен с возможностью:
определения вектора движения относительно опорного кадра для текущего блока видеоданных, причем местоположение опорного кадра базируется на направлении предсказания.
определения вектора движения относительно опорного кадра для текущего блока видеоданных, причем местоположение опорного кадра базируется на направлении предсказания.
13. Устройство по п. 12,
в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
14. Устройство по п. 13, в котором шаблон проверки базируется на одном или более из размера блока, размера раздела и индекса раздела.
15. Устройство по п. 13, в котором видеокодер дополнительно выполнен с возможностью:
обновления шаблона проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
обновления шаблона проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
16. Устройство по п. 10, в котором дополнительным блоком-кандидатом является левый верхний блок-кандидат.
17. Устройство по п. 10, в котором дополнительным блоком-кандидатом является блок-кандидат, который находится в причинной связи с текущим блоком.
18. Устройство по п. 10, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
19. Машиночитаемый носитель данных, имеющий хранящиеся на нем инструкции, которые, при выполнении, предписывают процессорам устройства кодировать видеоданные для:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определения набора блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществления процесса предсказания вектора движения для текущего блока с использованием определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния;
определения набора блоков-кандидатов, при этом определенный набор содержит нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат; и
осуществления процесса предсказания вектора движения для текущего блока с использованием определенного режима и набора блоков-кандидатов, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, и при этом дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен.
20. Машиночитаемый носитель данных по п. 19, в котором множество режимов включают в себя режим слияния и адаптивный режим предсказания вектора движения.
21. Машиночитаемый носитель данных по п. 19, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
22. Способ декодирования вектора движения в процессе видеокодирования, содержащий этапы, на которых:
определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определяют блок-кандидат из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат,
причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
определяют один из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определяют блок-кандидат из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат,
причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
23. Способ по п. 22, в котором режим для процесса предсказания вектора движения определяется из принятого элемента синтаксиса, и при этом блок-кандидат определяется из принятого элемента синтаксиса.
24. Способ по п. 22, дополнительно содержащий этапы, на которых:
принимают индекс, указывающий блок-кандидат из набора блоков-кандидатов;
извлекают вектор движения, опорный кадр и направление предсказания, связанные с блоком-кандидатом, имеющим принятый индекс; и
осуществляют процесс интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания.
принимают индекс, указывающий блок-кандидат из набора блоков-кандидатов;
извлекают вектор движения, опорный кадр и направление предсказания, связанные с блоком-кандидатом, имеющим принятый индекс; и
осуществляют процесс интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания.
25. Способ по п. 22, в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
26. Способ по п. 25, в котором шаблон проверки базируется на одном или более из размера блока, размера раздела и индекса раздела.
27. Способ по п. 25, дополнительно содержащий этапы, на которых:
обновляют шаблон порядка проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
обновляют шаблон порядка проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
28. Способ по п. 22, в котором дополнительным блоком-кандидатом является левый верхний блок-кандидат.
29. Способ по п. 22, в котором дополнительным блоком-кандидатом является блок-кандидат, который находится в причинной связи с текущим блоком.
30. Способ по п. 22, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
31. Устройство, выполненное с возможностью декодирования вектора движения в процессе видеокодирования, причем устройство содержит:
память, выполненную с возможностью хранения информации о векторе движения для набора блоков-кандидатов; и
видеодекодер, выполненный с возможностью:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определения блока-кандидата из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат,
причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
память, выполненную с возможностью хранения информации о векторе движения для набора блоков-кандидатов; и
видеодекодер, выполненный с возможностью:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определения блока-кандидата из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат,
причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
32. Устройство по п. 31, в котором режим для процесса предсказания вектора движения определяется из принятого элемента синтаксиса, и при этом блок-кандидат определяется из принятого элемента синтаксиса.
33. Устройство по п. 31, в котором видеокодер дополнительно выполнен с возможностью:
приема индекса, указывающего блок-кандидат из набора блоков-кандидатов;
извлечения вектора движения, опорного кадра и направления предсказания, связанных с блоком-кандидатом, имеющим принятый индекс; и
осуществления процесса интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания.
приема индекса, указывающего блок-кандидат из набора блоков-кандидатов;
извлечения вектора движения, опорного кадра и направления предсказания, связанных с блоком-кандидатом, имеющим принятый индекс; и
осуществления процесса интер-предсказания на текущем блоке с использованием извлеченных вектора движения, опорного кадра и направления предсказания.
34. Устройство по п. 31, в котором режим слияния использует максимальное количество N блоков-кандидатов для использования при осуществлении процесса предсказания вектора движения,
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
причем процесс предсказания вектора движения осуществляется согласно шаблону проверки, причем шаблон проверки задает порядок проверки каждого из блоков-кандидатов в наборе блоков-кандидатов, и
при этом набор блоков-кандидатов определяется как первые N доступных блоков-кандидатов в наборе блоков-кандидатов согласно шаблону проверки.
35. Устройство по п. 34, в котором шаблон проверки базируется на одном или более из размера блока, размера раздела и индекса раздела.
36. Устройство по п. 34, в котором видеодекодер дополнительно выполнен с возможностью:
обновления шаблона порядка проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
обновления шаблона порядка проверки для последовательно кодированных блоков на основании одного или более из индекса слияния, определенного режима, размера раздела, индекса раздела, индекса опорного кадра, разности векторов движения и предсказания вектора движения.
37. Устройство по п. 31, в котором дополнительным блоком-кандидатом является левый верхний блок-кандидат.
38. Устройство по п. 31, в котором дополнительным блоком-кандидатом является блок-кандидат, который находится в причинной связи с текущим блоком.
39. Устройство по п. 31, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
40. Машиночитаемый носитель данных, имеющий хранящиеся на нем инструкции, которые, при выполнении, предписывают процессорам устройства декодировать видеоданные для:
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определения блока-кандидата из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
определения одного из множества режимов для процесса предсказания вектора движения для текущего блока видеоданных, при этом определенный режим является режимом слияния; и
определения блока-кандидата из набора блоков-кандидатов, содержащего нижний левый блок-кандидат, левый блок-кандидат, верхний блок-кандидат, правый верхний блок-кандидат, левый верхний блок-кандидат и временной блок-кандидат, причем один блок-кандидат в наборе блоков-кандидатов обозначается как дополнительный блок-кандидат, причем дополнительный блок-кандидат используется в режиме слияния, если другой из блоков-кандидатов набора блоков-кандидатов недоступен или недействителен, и при этом информация, связанная с блоком-кандидатом, используется для декодирования вектора движения для текущего блока.
41. Машиночитаемый носитель данных по п. 40, в котором набор блоков-кандидатов одинаков для каждого из множества режимов.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161499114P | 2011-06-20 | 2011-06-20 | |
US61/499,114 | 2011-06-20 | ||
US201161506558P | 2011-07-11 | 2011-07-11 | |
US61/506,558 | 2011-07-11 | ||
US201161509007P | 2011-07-18 | 2011-07-18 | |
US61/509,007 | 2011-07-18 | ||
US13/487,996 US9282338B2 (en) | 2011-06-20 | 2012-06-04 | Unified merge mode and adaptive motion vector prediction mode candidates selection |
US13/487,996 | 2012-06-04 | ||
PCT/US2012/040928 WO2012177388A1 (en) | 2011-06-20 | 2012-06-05 | Unified merge mode and adaptive motion vector prediction mode candidates selection |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2014101483A RU2014101483A (ru) | 2015-07-27 |
RU2574831C2 true RU2574831C2 (ru) | 2016-02-10 |
Family
ID=
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2768377C1 (ru) * | 2018-11-16 | 2022-03-24 | МедиаТек Инк. | Способ и устройство для видеокодирования c использованием улучшенного режима слияния с разностью векторов движения |
US11477478B2 (en) | 2018-12-12 | 2022-10-18 | Lg Electronics Inc. | Method and apparatus for processing video signal based on history based motion vector prediction |
RU2795830C2 (ru) * | 2018-11-16 | 2023-05-12 | ЭйджЭфАй Инновейшн Инк. | Способ и устройство для видеокодирования c использованием улучшенного режима слияния с разностью векторов движения |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2338332C2 (ru) * | 2002-11-21 | 2008-11-10 | Эл Джи Электроникс Инк. | Способ предсказания блока изображения с использованием усовершенствованного режима прямого предсказания |
RU2391794C2 (ru) * | 2005-07-05 | 2010-06-10 | Нтт Докомо, Инк. | Устройство видеокодирования, способ видеокодирования, программа видеокодирования, устройство видеодекодирования, способ видеодекодирования и программа видеодекодирования |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2338332C2 (ru) * | 2002-11-21 | 2008-11-10 | Эл Джи Электроникс Инк. | Способ предсказания блока изображения с использованием усовершенствованного режима прямого предсказания |
RU2391794C2 (ru) * | 2005-07-05 | 2010-06-10 | Нтт Докомо, Инк. | Устройство видеокодирования, способ видеокодирования, программа видеокодирования, устройство видеодекодирования, способ видеодекодирования и программа видеодекодирования |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2768377C1 (ru) * | 2018-11-16 | 2022-03-24 | МедиаТек Инк. | Способ и устройство для видеокодирования c использованием улучшенного режима слияния с разностью векторов движения |
RU2795830C2 (ru) * | 2018-11-16 | 2023-05-12 | ЭйджЭфАй Инновейшн Инк. | Способ и устройство для видеокодирования c использованием улучшенного режима слияния с разностью векторов движения |
US11477478B2 (en) | 2018-12-12 | 2022-10-18 | Lg Electronics Inc. | Method and apparatus for processing video signal based on history based motion vector prediction |
US11653022B2 (en) | 2018-12-12 | 2023-05-16 | Lg Electronics Inc. | Method and apparatus for processing video signal based on history based motion vector prediction |
US11849075B2 (en) | 2018-12-12 | 2023-12-19 | Lg Electronics Inc. | Method and apparatus for processing video signal based on history based motion vector prediction |
RU2815925C2 (ru) * | 2018-12-29 | 2024-03-25 | Вид Скейл, Инк. | Прогнозирование вектора движения на основании предыстории |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240129531A1 (en) | Video coding using mapped transforms and scanning modes | |
US9282338B2 (en) | Unified merge mode and adaptive motion vector prediction mode candidates selection | |
RU2580102C2 (ru) | Способ сигнализации типа смещения и коэффициентов для адаптивного смещения выборок | |
US9532066B2 (en) | Motion vector prediction | |
RU2645291C2 (ru) | Кодирование параметра квантования (qp) при кодировании видео | |
US9313494B2 (en) | Parallelization friendly merge candidates for video coding | |
US9247254B2 (en) | Non-square transforms in intra-prediction video coding | |
RU2550554C2 (ru) | Выполнение предсказания вектора движения для видеокодирования | |
JP5937205B2 (ja) | ビデオコーディングのためのランモードベース係数コーディング | |
RU2574831C2 (ru) | Унифицированный выбор кандидатов для режима слияния и адаптивного режима предсказания вектора движения | |
RU2574280C2 (ru) | Выбор единых кандидатов режима слияния и адаптивного режима предсказания вектора движения |