RU2809558C2 - Способ и устройство для кодирования и декодирования изображения - Google Patents

Способ и устройство для кодирования и декодирования изображения Download PDF

Info

Publication number
RU2809558C2
RU2809558C2 RU2021127013A RU2021127013A RU2809558C2 RU 2809558 C2 RU2809558 C2 RU 2809558C2 RU 2021127013 A RU2021127013 A RU 2021127013A RU 2021127013 A RU2021127013 A RU 2021127013A RU 2809558 C2 RU2809558 C2 RU 2809558C2
Authority
RU
Russia
Prior art keywords
motion vector
current block
obtaining
reference image
block
Prior art date
Application number
RU2021127013A
Other languages
English (en)
Other versions
RU2021127013A (ru
Inventor
Франк ГАЛПИН
Фабрис ЛЕЛЕАННЕК
Эдуард ФРАНСУА
Original Assignee
Интердиджитал Вс Холдингз, Инк.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интердиджитал Вс Холдингз, Инк. filed Critical Интердиджитал Вс Холдингз, Инк.
Publication of RU2021127013A publication Critical patent/RU2021127013A/ru
Application granted granted Critical
Publication of RU2809558C2 publication Critical patent/RU2809558C2/ru

Links

Abstract

Изобретение относится к средствам для кодирования изображений. Технический результат заключается в повышении эффективности кодирования изображений. Идентифицируют регион, называемый сопряженным регионом, в первом эталонном изображении с текущим блоком для кодирования текущего изображения. Получают первый вектор движения, указывающий на эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона. Получают положение, называемое смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе первого вектора движения. Определяют, имеется ли второй вектор движения в смещенном положении, и при его наличии получают третий вектор движения на основе второго вектора движения, предназначенный для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока. 6 н. и 15 з.п. ф-лы, 16 ил.

Description

Область техники, к которой относится настоящее изобретение
По меньшей мере, один из вариантов осуществления настоящего изобретения в целом связан со способом и устройством для кодирования и декодирования изображения, а более конкретно, со способом и устройством для кодирования и декодирования информации, представленной в изображениях в движении.
Предшествующий уровень техники настоящего изобретения
Для достижения высокого коэффициента сжатия схемы кодирования видео применяют предсказание и преобразование для использования пространственных и временных избыточностей в видеоконтенте. Во время кодирования изображения из видеоконтента разделяются на блоки пикселей, эти блоки затем разбиваются в один или несколько субблоков, называемых оригинальными субблоками в дальнейшем описании. Затем к каждому субблоку применяется интра или интер прогнозирование для использования корреляций внутри изображения или между ними. Независимо от используемого метода прогнозирования (интра или интер) для каждого субблока определяется прогнозный субблок. Затем субблок, представляющий разность между оригинальным субблоком и прогнозным субблоком, часто называемый как субблок ошибки прогнозирования, субблок разницы прогнозирования или просто остаточный блок, преобразуется, подвергается квантованию и энтропийно кодируется для создания закодированного видеопотока. Для реконструирования видео сжатые данные декодируются процессами, обратными по отношению к процессам преобразования, квантования и энтропийного кодирования.
Как правило, для кодирования субблока используются интер прогнозирование, т.е. блок кодируется в режиме интер, он представляется остаточным блоком и информацией о движении, указывающей, где находится прогнозный субблок. В последних поколениях стандартов сжатия видео данных (например, в международном стандарте под названием Универсальное кодирование видео (Versatile Video Coding - VVC), разрабатываемом совместной группы разработчиков из экспертов ITU-T и ISO/IEC, известной как Объединенной команда видеоэкспертов (JVET) или в стандарте HEVC (High Efficiency Video Coding) (ISO/IEC 23008-2 - MPEG-H часть 2, высокоэффективное видеокодирование / ITU-T Н.265)) высокие коэффициенты сжатия были получены посредством прогнозирования не только текстуры субблоков, но также информации о движении.
Прогнозирование информации о движении в основном базируется на предположении, что движение субблока обычно скоррелировано с движением других субблоков, расположенных в его окрестности. Определение окрестности субблока является, следовательно, ключевым моментом в прогнозировании информации о движении. Действительно, такая окрестность должна быть достаточно большой, чтобы гарантировать, что наилучший возможный предиктор информации о движении находится в этой окрестности, но при этом не чрезмерно большой, чтобы ограничить затраты на передачу вышеупомянутого предиктора информации о движении.
Желательно предложить решения, позволяющие улучшить прогнозирование информации о движении, т.е. гарантирующие, что использованная окрестность содержит лучших кандидатов для прогнозирования информации о движении.
Краткое раскрытие настоящего изобретения
Согласно первому аспекту, один или несколько вариантов осуществления настоящего изобретения предлагают способ для декодирования, причем этот способ предусматривает стадии: идентификации региона, называемого сопряженным регионом, в первом эталонном изображении, сопрягаемого с текущим блоком для декодирования текущего изображения; получения первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности; получения положения, называемого смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе первого вектора движения; определения, имеется ли второй вектор движения в смещенном положении, и при его наличии получение третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
Согласно второму аспекту, один или несколько вариантов осуществления настоящего изобретения предлагают способ для кодирования, причем этот способ предусматривает стадии: идентификации региона, называемого сопряженным регионом, первого эталонного изображения, сопряженного с текущим блоком для декодирования текущего изображения; получения первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности; получения положения, называемого смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе первого вектора движения; определения, имеется ли второй вектор движения в смещенном положении, и при его наличии получения третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
В варианте осуществления способа согласно первому или второму аспекту первый вектор движения заново масштабируется перед использованием для получения смещенного положения для обеспечения того, что первый вектор движения указывает на второе эталонное изображение.
В варианте осуществления способа согласно первому или второму аспекту, если смещенное положение выходит из ограниченного участка, смещенное положение обрезается, чтобы находиться в смещенном участке.
В варианте осуществления способа согласно первому или второму аспекту, если смещенное положение выходит из ограниченного участка, третий вектор движения получается на основе первого вектора движения.
В варианте осуществления способа согласно первому или второму аспекту, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности, то способ предусматривает стадию определения, имеется ли вектор пространственного движения в списке кандидатов предиктора вектора движения, используемого для декодирования вектора движения текущего блока, и если вектор пространственного движения имеется, то выполняется фиксация первого вектора движения в значение, зависящее от имеющегося вектора пространственного движения.
В варианте осуществления способа согласно первому или второму аспекту, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности, то способ предусматривает фиксацию первого вектора движения в вектор пространственного движения.
В варианте осуществления способа согласно первому или второму аспекту первый вектор движения получается из положения в вышеупомянутом сопряженном регионе или в его окрестности, способ дополнительно предусматривает стадии: получения четвертого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе; получения положения, называемого вторым смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе четвертого вектора движения; определения, имеется ли пятый вектор движения во втором смещенном положении, и при его наличии получение шестого вектора движения на основе пятого вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока; и выбора первого имеющегося вектора движения из упорядоченного набора векторов движения, подлежащих вставлению в список, упомянутый упорядоченный набор содержит, по меньшей мере, третий вектор движения, шестой вектор движения, первый вектор движения и четвертый вектор движения, если эти векторы движения имеются.
В варианте осуществления способа согласно первому или второму аспекту, упорядоченный набор дополнительно содержит, в случае наличия, вектор движения, полученный из положения в вышеупомянутом сопряженном регионе.
В варианте осуществления способа согласно первому или второму аспекту, текущий блок разделяется на субблоки; получение смещенного положения предусматривает получение смещенного положения для каждого субблока посредством применения перемещения к положению в текущем блоке на основе первого вектора движения; третий вектор движения получается для каждого субблока, если второй вектор движения имеется в смещенном положении, соответствующем вышеупомянутому субблоку.
Согласно третьему аспекту, один или несколько вариантов осуществления настоящего изобретения предлагают устройство для декодирования, причем это устройство содержит электронную схему, приспособленную для: идентификации региона, называемого сопряженным регионом, в первом эталонном изображении, сопрягаемого с текущим блоком для декодирования текущего изображения; получения первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности; получения положения, называемого смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе первого вектора движения; определения, имеется ли второй вектор движения в смещенном положении, и при его наличии получение третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
Согласно четвертому аспекту, один или несколько вариантов осуществления настоящего изобретения предлагают устройство для кодирования, причем это устройство содержит электронную схему, приспособленную для: идентификации региона, называемого сопряженным регионом, первого эталонного изображения, сопряженного с текущим блоком для декодирования текущего изображения; получения первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности; получения положения, называемого смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе первого вектора движения; определения, имеется ли второй вектор движения в смещенном положении, и при его наличии получения третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
В варианте осуществления устройства согласно третьему или четвертому аспекту первый вектор движения заново масштабируется перед использованием для получения смещенного положения для обеспечения того, что первый вектор движения указывает на второе эталонное изображение.
В варианте осуществления устройства согласно третьему или четвертому аспекту, если смещенное положение выходит из ограниченного участка, смещенное положение обрезается, чтобы находиться в смещенном участке.
В варианте осуществления устройства согласно третьему или четвертому аспекту, если смещенное положение выходит из ограниченного участка, третий вектор движения получается на основе первого вектора движения.
В варианте осуществления устройства согласно третьему или четвертому аспекту, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности, то устройство содержит электронную схему, приспособленную для: определения, имеется ли вектор пространственного движения в списке кандидатов предиктора вектора движения, используемого для декодирования вектора движения текущего блока, и если вектор пространственного движения имеется, то выполняется фиксация первого вектора движения в значение, зависящее от имеющегося вектора пространственного движения.
В варианте осуществления устройства согласно третьему или четвертому аспекту, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе или в его окрестности, то устройство содержит электронную схему, приспособленную для фиксации первого вектора движения в вектор пространственного движения.
В варианте осуществления устройства согласно третьему или четвертому аспекту, первый вектор движения получается из положения в вышеупомянутом сопряженном регионе или в его окрестности, и устройство дополнительно содержит электронную схему, приспособленную для: получения четвертого вектора движения, указывающего на второе эталонное изображение из положения в вышеупомянутом сопряженном регионе; получения положения, называемого вторым смещенным положением, во втором эталонном изображение, посредством применения перемещения к положению в текущем блоке на основе четвертого вектора движения; определения, имеется ли пятый вектор движения во втором смещенном положении, и при его наличии получение шестого вектора движения на основе пятого вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока; и выбора первого имеющегося вектора движения из упорядоченного набора векторов движения, упомянутый упорядоченный набор содержит, по меньшей мере, третий вектор движения, шестой вектор движения, первый вектор движения и четвертый вектор движения, если эти векторы движения имеются.
В варианте осуществления устройства согласно третьему или четвертому аспекту, упорядоченный набор дополнительно содержит, в случае наличия, вектор движения, полученный из положения в вышеупомянутом сопряженном регионе.
В варианте осуществления устройства согласно третьему или четвертому аспекту, текущий блок разделен на субблоки; получение смещенного положения предусматривает получение смещенного положения для каждого субблока посредством применения перемещения к положению в субблоке на основе первого вектора движения; третий вектор движения получается для каждого субблока, если второй вектор движения имеется в смещенном положении, соответствующем вышеупомянутому субблоку.
Согласно пятому аспекту один или несколько вариантов осуществления настоящего изобретения предлагают сигнал, содержащий данные, создаваемые согласно способу кодирования согласно второму аспекту, или с помощью устройства для кодирования согласно четвертому аспекту.
Согласно шестому аспекту один или несколько вариантов осуществления настоящего изобретения предлагают компьютерную программу, содержащую команды программного кода для реализации способа согласно первому или второму аспекту.
Согласно седьмому аспекту один или несколько вариантов осуществления настоящего изобретения предлагают средства хранения информации, в которых хранятся команды программного кода для реализации способа согласно первому или второму аспекту.
Краткое описание фигур
На фиг. 1 показан пример разделения, выполняемого над изображением из пикселей оригинального видео;
На фиг. 2 в виде блок-схемы показан способ кодирования видеопотока, выполняемый кодирующим модулем;
На фиг. 3 в виде блок-схемы показан способ декодирования кодированного видеопотока (т.е. потока битов);
На фиг. 4А в виде блок-схемы показан пример архитектуры аппаратных средств модуля обработки данных, способного реализовать модуль кодирования или модуль декодирования, в котором реализованы различные аспекты и варианты осуществления;
На фиг. 4В в виде блок-схемы показан пример системы, в которой реализованы различные аспекты и варианты осуществления;
На фиг. 5 показано положение предиктора вектора темпорального движения в списке кандидатов режима регулярного объединения;
На фиг. 6 показано масштабирование вектора движения предиктора вектора темпорального движения в списке кандидатов режима регулярного объединения;
На фиг. 7 показаны блоки пространственной окрестности, учитываемые в процессе прогнозирования вектора темпорального движения субблока;
На фиг. 8 показан пример процесса, позволяющего получать предиктор вектора темпорального движения субблока;
На фиг. 9 в виде блок-схемы показан общий улучшенный процесс получения TMVP;
На фиг. 10 в виде блок-схемы показан первый вариант общего улучшенного процесса получения TMVP;
На фиг. 11 в виде блок-схемы показан второй вариант общего улучшенного процесса получения TMVP;
На фиг. 12 схематически показать пример процесса обрезания;
На фиг. 13 в виде блок-схемы показан третий вариант общего улучшенного процесса получения TMVP;
На фиг. 14 в виде блок-схемы показан четвертый вариант общего улучшенного процесса получения TMVP;
На фиг. 15 в виде блок-схемы показан пятый вариант общего улучшенного процесса получения TMVP;
Подробное раскрытие настоящего изобретения
В следующем описании в некоторых вариантах осуществления используются средства, разработанные в контексте VVC или в контексте HEVC. Однако такие варианты осуществления не ограничены способом кодирования/декодирования видео, соответствующим VVC или HEVC, и применяются к другим способам кодирования/декодирования видео, а также к любому способу, в котором изображение прогнозируется из другого изображения.
На фиг. 1 показан пример разделения, выполняемого над изображением 11 из пикселей оригинального видео 10. Считается, что здесь пиксель составлен из трех компонентов компоненты яркости и двух компонентов цветности. Однако следующие варианты осуществлений приспособлены для изображений, составленных из пикселей, содержащих другое количество компонентов, например, полутоновых серых изображений, в которых пиксели содержат один компонент, или изображений, составленных из пикселей, содержащих три компонента цвета и компонент прозрачности и/или компонент глубины.
Изображение разделено на множество кодируемых объектов. Во-первых, как представлено позицией 13 на фиг. 1, изображение разделено на сетку блоков, называемых единицами дерева кодирования (CTU). Единица CTU состоит из блока N×N отсчетов яркости вместе с двумя соответствующими блоками отсчетов цветности. N обычно является степенью двойки и имеет, например, максимальное значение «128». Во-вторых, изображение делиться на одну или несколько групп CTU. Например, его можно разделить на одну или несколько строк плиток и столбцов плиток, при этом плитка является последовательностью CTU, покрывающих прямоугольную область изображения. В некоторых случаях плитка может быть разделена на один или несколько кирпичей, каждый из которых состоит из, по меньшей мере, одной строки CTU внутри плитки. На более высоком уровне, чем концепция плиток и кирпичей, существует другой объект кодирования, называемый секцией, которая может содержать, по меньшей мере, одну плитку изображения, или, по меньшей мере, один кирпич плитки.
В показанном на фиг. 1 примере, как представлено позицией 12, изображение 11 разделено на три секции S1, S2 и S3, причем каждая из них содержит множество плиток (не показано).
Как представлено позицией 14 на фиг. 1, CTU может быть разделена в виде иерархического дерева из одного или нескольких субблоков, называемых единицами кодирования (CU). CTU является корнем (т.е. родительским узлом) иерархического дерева и может быть разделена на множество CU (т.е. дочерних узлов). Каждая CU становится листом иерархического дерева, если она не разделяется дальше на меньшие CU, или становится родительским узлом меньших CU (т.е. дочерних узлов), если она разделяется дальше. Можно применять различные типы иерархических деревьев, содержащие, например, квадродерево, двоичное дерево и троичное дерево. В квадродереве CTU (и соответственно CU) может быть разделена на (т.е. может быть родительским узлом для) «4» квадратных CU равных размеров. В квадродереве CTU (и соответственно CU) может быть разделена на (т.е. может быть родительским узлом для) «2» квадратных CU равных размеров. В троичном дереве CTU (и соответственно CU) может быть разделена по горизонтали или по вертикали на «3» прямоугольных CU. Например, CU с высотой N и шириной М по вертикали (и соответственно по горизонтали) разделена на первую CU с высотой N (соответственно N/4) и шириной М/4 (соответственно М), вторую CU с высотой N (соответственно N/2) и шириной М/2 (соответственно М) и третью CU с высотой N (соответственно W4) и шириной М/4 (соответственно М).
В показанном на фиг. 1 примере CTU 14 сначала разделена на «4» квадратных CU с использованием разделения типа квадродерева. Верхняя левая CU является листом иерархического дерева, так как она разделяется дальше, т.е. она не является родительским узлом любой другой CU. Верхняя правая CU разделяется дальше на «4» меньших квадратных CU с использованием снова разделения типа квадродерева. Нижняя правая CU разделяется по вертикали на «2» прямоугольных CU с использованием разделения типа двоичного дерева. Нижняя правая CU разделяется по вертикали на «3» прямоугольных CU с использованием разделения типа троичного дерева.
Во время кодирования изображения разделение является адаптивным, каждая CTU разделяется так, чтобы оптимизировать коэффициент сжатия CTU.
В одном способе сжатия появляются концепции единицы прогнозирования (PU) и единицы преобразования (TU). В этом случае кодируемый объект, который используется для прогнозирования (т.е. PU) и преобразования (т.е. TU), может быть подразделом CU. Например, как показано на фиг. 1, CU с размером 2N×2N может быть разделена на PU 1411 с размером N×2N или с размером 2N×N. Кроме того, вышеуказанная CU может быть разделена на «4» TU 1412 с размером N×N или на «16» TU с размером (N/2)×(N/2).
В настоящем документе термин «блок» или «блок изображения» или «субблок» может быть использован для указания любого CTU, CU, PU и TU. Кроме того, термин «блок» или «блок изображения» может быть использован для указания макроблока, раздела и субблока, как указано в H.264/AVC или в других стандартах видеокодирования, и в более общем случае для указания массива отчетов произвольного размера.
В настоящем документе термины «реконструирован» и «декодирован» могут использоваться взаимозаменяемо, термины «пиксель» и «отсчет» могут использоваться взаимозаменяемо, термины «изображение», «картинка», «подкартинка», «секция» и «кадр» могут использоваться взаимозаменяемо.
На фиг. 2 в виде блок-схемы показан способ кодирования видеопотока, выполняемый кодирующим модулем. Рассматриваются варианты этого способа кодирования, но показанный на фиг. 2 способ для кодирования описан ниже в целях наглядности без описания всех ожидаемых вариантов.
Кодирование текущего оригинального изображения 201 начинается с разделения текущего оригинального изображения 201 на стадии 202, как описано со ссылками на фиг. 1. Текущее изображение 201, таким образом, разделяется на CTU, CU, PU, TU и т.д. Для каждого блока кодирующий модуль определяет один режим кодирования из режимов интра прогнозирования и интер прогнозирования.
Интра прогнозирование, показанное как стадия 203, заключается в прогнозировании, согласно способу интра прогнозирования, пикселей текущего блока из блока прогнозирования, полученного из пикселей реконструированных блоков, расположенных в причинно-следственной близости от текущего кодируемого блока. Результатом интра прогнозирования является предсказанное направление, указывающее, какие пиксели блоков поблизости следует использовать, и остаточный блок, получающийся посредством вычисления разности между текущим блоком и блоком прогнозирования.
Интер прогнозирование заключается в прогнозировании пикселей текущего блока из блока пикселей, называемого эталонным блоком, из изображения, предшествующего или последующего за текущим изображением, такое изображение называется эталонным изображением. Во время кодирования текущего блока согласно способу интер прогнозирования, блок эталонного изображения, ближайший к текущему блоку согласно критерию подобия, определяется посредством стадии 204 оценки движения. Во время стадии 204 определяется вектор движения, указывающий положение эталонного блока в эталонном изображении. Вышеупомянутый вектор движения используется во время стадии 205 компенсации движения, во время которой остаточный блок вычисляется в виде разности между текущим блоком и эталонным блоком.
В первых стандартах сжатия видео описанный выше режим интер прогнозирования с одним направлением был единственным имеющимся режимом интер. По мере развития стандартов сжатия видео семейство режимов интер выросло и теперь содержит много различных режимов интер.
Во время стадии 206 выбора кодирующий модуль выбирает режим прогнозирования, оптимизирующий характеристики сжатия согласно критерию скорость/искажения (т.е. критерию RDO), среди проверяемых режимов прогнозирования (режимы интра прогнозирования, режимы интер прогнозирования).
Когда режим прогнозирования выбран, остаточный блок преобразуется во время стадии 207 и подвергается квантованию во время стадии 209. Обратите внимание, что кодирующий модуль может пропустить преобразование и применить квантование непосредственно к непреобразованному остаточному сигналу.
Когда текущий блок закодирован согласно режиму интра прогнозирования, прогнозируемое направление и преобразованный и квантованный остаточный блок кодируются энтропийным кодировщиком во время стадии 210.
Если текущий блок закодирован согласно режиму интер прогнозирования, данные движения, ассоциированные с этим режимом интер прогнозирования, кодируются на стадии 208.
В общем случае для кодирования данных движения можно использовать два режима, которые соответственно называются AMVP (адаптивное прогнозирование вектора движения) и объединение.
Режим AM VP в основном состоит из передачи эталонного изображени(я/й), используемого для прогнозирования текущего блока, индекса предиктора вектора движения и разница вектора движения (также называемого остаточном вектором движения).
Режим объединения состоит из передачи индекса некоторых данных движение, собранных в списке предикторов данных движения. Список составлен из «5» или «7» кандидатов и создается одинаковым образом на сторонах декодера и кодировщика. Следовательно, режим объединения нацелен на получение некоторых данных движения, взятых из списка объединения. Список объединения типично содержит данные движения, ассоциированные с некоторыми блоками, смежными по пространству и времени, имеющимися в их реконструированном состоянии во время обработки текущего блока. Режим объединение может принять несколько форм, содержащих режим регулярного объединения и режим объединения субблоков. Список кандидатов для каждого из этих двух режимов объединения содержит предиктор вектора темпорального движения (TMVP).
В следующем описании мы равноправно используем термины «данные движения», «информация о движении» или «вектор движения». Следовательно, термин «вектор движения» либо охватывает всю информацию, относящуюся к движению блока, содержащую, по меньшей мере, один индекс, представляющий одно эталонное изображение, и вектор движения, представленный индексом, представляющим предиктор вектора движения и разность между предиктором вектора движения и спрогнозированным вектором движения, либо охватывает только вектор движения.
На фиг. 5 показано положение предиктора вектора движения по шкале времени, называемого в дальнейшем описании регулярным предиктором вектора темпорального движения (RTMVP), из списка кандидатов режима регулярного объединения. Предиктор RTMVP создается из вектора движения, соответствующего положению Н, расположенному в нижнем правом углу блока 51, сопряженного с текущим блоком 50. Если в положении Н нет никаких имеющихся данных движения, предиктор RTMVP создается из данных движение в положении центра С сопряженного блока 51. Блок 51 принадлежит к конкретному эталонному изображению, передаваемому в заголовке секции, называемом сопряженным изображением. Предиктор RTMVP затем получается новым масштабированием полученного вектора движения так, что перемасштабированный вектор движения указывает на эталонное изображение в первом положении в буфере эталонных изображений (также называемом буфером декодированных картинок в следующем описании с номером позиции 219).
На фиг. 6 показано масштабирование вектора движения предиктора вектора темпорального движения в списке кандидатов режима регулярного объединения;
На фиг. 6 текущее изображение 62 содержит текущий блок 64, подлежащий кодированию. Данные движения текущего блока 64 кодируются в режиме регулярного объединения с использованием данных движения сопряженного блока 65 в сопряженном изображении 63. Данные движения сопряженного блока 65 содержат вектор движения 650, указывающий участок в эталонном изображении 60. Предиктор RTMVP, соответствующий вектору движения 640, получается посредством перемасштабирования вектора движения 650. Можно отметить, что предиктор RTMVP 640 имеет то же самое направление, как и вектор движения 650, но указывает на эталонный участок в изображении 61. Изображение 61 является первым изображением в буфере 219 декодированных картинок.
Режим объединения субблока использует вектор прогнозирования темпорального движения субблока для создания предиктора темпорального движения субблока (SbTMVP). Предиктор SbTMVP отличается от предиктора RTMVP в следующих двух основных аспектах:
• RTMVP предсказывает движение на уровне блока, в то время как SbTMVP предсказывает движение на уровне субблока;
• в то время как RTMVP получается из сопряженного блока в сопряженном изображении, положение текущего блока сначала смещается перед получением SbTMVP из блока, сопряженного со смещенным положением текущего блока сопряженного изображения. Сдвиг, называемый далее движением сдвига, получается из вектора движения блока, пространственно соседнего к текущему блоку.
На фиг. 8 показан пример процесса, позволяющего получать предиктор вектора темпорального движения субблока.
Вектор прогнозирования движения субблока предсказывает вектора движения субблоков внутри текущего блока 810 текущего изображения 81 в две стадии:
• На первой стадии изучаются блоки, пространственно соседние к текущему блоку 810. На фиг. 7 показаны блоки пространственной окрестности, учитываемые в процессе прогнозирования вектора темпорального движения субблока. Как можно видеть на фиг. 7, рассматриваются четыре блока, два блока А1 и А0 расположены в нижнем левом углу блока 810, и два блока В1, В0 расположены в верхнем правом углу блока 810. Пространственно соседние блоки изучаются в порядке A1, В1, В0 и А0. В таком порядке, как только будет идентифицирован пространственно соседний блок, который имеет вектор движения, указывающий на сопряженное изображение 80, этот вектор движения выбирается в качестве применяемого движения сдвига. Если такой вектор движения не идентифицирован в пространственно соседних блоках А1, В1, В0 и А0, то движение сдвига настраивается в (0, 0), т.е. нет движения.
• На второй стадии идентифицированное на первой стадии движение сдвига применяется к положению текущего блока 810 (т.е. добавляется к координатам 810' текущего блока). Затем данные движения на уровне субблока (вектора движения и эталонные индексы) получаются из блока 800 сопряженного изображения 80, которое сопряжено со сдвинутым положением текущего блока 810. В показанном на фиг. 8 примере предполагается, что движение сдвига настроено на движение блока А1. Для каждого субблока текущего блока 810 данные движения его соответствующего субблока (наименьшее движение сетки, которая покрывает центральный отсчет) в блоке 800 используется для получения данных движения для вышеупомянутого субблока в текущем блоке 810. Получение предиктора SbTMVP затем завершается применением масштабирования вектора темпорального движения к векторам движения, полученным для каждого субблока для выравнивания эталонных изображений таких полученных векторов движения с векторами текущего блока 810.
Размер субблока, используемый в предикторе SbTMVP, обычно составляет 8x8. В таком случае режим SbTMVP применяется к блоку только тогда, когда как ширина, так и высота вышеупомянутого блока не меньше «8».
Как можно увидеть из изложенного выше, когда режим регулярного объединения применяется к текущему блоку текущего изображения, предиктор RTMVP является перемасштабированным вектором движения блока сопряженного изображения, который сопряжен с текущим блоком. Таким образом, при получении RTMVP не учитывается перемещение блоков между текущим изображением и сопряженным изображением.
С другой стороны, SbTMVP получается из блока сопряженного изображения, который сопряжен со смещенным блоком, полученным при сдвиге текущего блока. Сдвиг текущего блока определяется по блокам, пространственно соседними к текущему блоку. Недостатком какого подхода является то, что блоки, пространственно соседние к текущему блоку, могут не содержать данных движения (например, потому что они закодированы в режиме интра) или могут отсутствовать (например, когда текущий блок расположен у края текущего изображения).
Описанные ниже варианты осуществления направлены на устранение указанных выше недостатков.
В частности, по меньшей мере, один описанный ниже вариант осуществления направлен на создание нового предиктора вектора темпорального движения.
Кроме того, по меньшей мере, один описанный ниже вариант осуществления использует преимущества функций как TMVP, так и SbTMVP.
В, по меньшей мере, одном варианте осуществления используется перемещенный предиктор вектор движения, с помощью процесса, подобного режиму объединения субблока в режиме регулярного объединения, но с использованием прогнозируемого вектора темпорального движения для перемещения вектора движения.
В, по меньшей мере, одном варианте осуществления резервное решение используется как TMVP по умолчанию, когда вышеупомянутый вектор движения не удается получить.
В, по меньшей мере, одном варианте осуществления используется получение вектора движения без субблока в режиме объединения субблока для ограничения сложности процесса получения вектора движения.
В, по меньшей мере, одном варианте осуществления изменено условие ограничений на получение вектора движения для использования резервного решения.
В, по меньшей мере, одном варианте осуществления используется больше начальных векторов для перемещения центра текущего блока, при этом используется кандидат пространственного объединения в дополнение к кандидату темпорального объединения.
В, по меньшей мере, одном варианте осуществления используется кандидат темпорального объединения в качестве альтернативного начального вектора для стандартного процесса SbTMVP по субблоку.
После прогнозирования информация о движении кодируется в энтропийном кодировщике во время стадии 210, вместе с преобразованным и квантованным остаточным блоком. Обратите внимание, что кодировщик может обойти оба процесса преобразования и квантования, т.е. энтропийное кодирование применяется к остатку без применения процессов преобразования и квантования. Результат энтропийного кодирования вставляется в закодированный видеопоток (т.е. поток битов) 211.
Обратите внимание, что энтропийный кодировщик может быть реализован в виде контекстно-адаптивного двоичного арифметического кодировщика (САВАС). САВАС кодирует двоичные символы, что поддерживает сложность на низком уровне и позволяет выполнять моделирование вероятности для более часто используемых битов любого символа.
После стадии 209 квантования текущий блок реконструирован, так что соответствующие этому блоку пиксели можно использовать для будущего прогнозирования. Этот этап реконструкции также называется циклом прогноза. Таким образом, обратное квантование применяется к преобразованному и квантованному остаточному блоку во время стадии 212, а обратное преобразования применяется во время стадии 213. Согласно режиму прогнозирования, использовавшемуся для текущего блока, полученного на стадии 214, реконструируется прогнозируемый блок текущего блока. Если текущий блок закодирован согласно режиму интер прогнозирования, модуль кодировщика применяет, когда положено, во время стадии 216 компенсацию движения к эталонному блоку, используя информацию о движении текущего блока. Если текущий блок закодирован согласно режиму интра прогнозирования, во время стадии 215 направление прогнозирования, соответствующее текущему блоку, используется для реконструкции эталонного блока текущего блока. Эталонный блок и реконструированный остаточный блок складываются, чтобы получить реконструированный текущий блок.
После реконструкции к реконструированному блоку во время стадии 217 применяется постфильтрация в цикле, предназначенная для снижения артефактов кодирования. Это постфильтрация называется постфильтрацией в цикле, так как это фильтрация выполняется в цикле прогнозирования для получения на кодировщике тех же самых эталонных изображений, как на декодере, и таким образом устранения дрейфа между процессами кодирования и декодирования. Например, постфильтрация в цикле содержит деблок фильтрацию и фильтрацию SAO (адаптивное смещение отсчета). Параметры, описывающие активацию или деактивацию деблок фильтра в цикле, а когда он активирован, характеристики вышеуказанного деблок фильтра, вводятся в кодированный видеопоток 211 во время стадии 210 энтропийного кодирования.
Когда блок реконструирован, он вставляется во время стадии 218 в реконструированное изображение, хранящееся в буфере декорированных картинок (DPB) 219. Хранящиеся таким образом реконструированные изображения могут затем использоваться как эталонные изображения для других подлежащих кодированию изображений.
На фиг. 3 в виде блок-схемы показан способ декодирования кодированного видеопотока (т.е. потока битов) 211, закодированного согласно способу, описанному со ссылками на фиг. 2. Вышеуказанный способ для декодирования выполняется декодирующим модулем. Рассматриваются варианты этого способа декодирования, но показанный на фиг. 3 способ для декодирования описан ниже в целях наглядности без описания всех ожидаемых вариантов.
Декодирование выполняется поблочно. Для текущего блока оно начинается с энтропийного декодирования текущего блока во время стадии 310. Энтропийное декодирование позволяет получить режим прогнозирования текущего блока.
Если текущий блок был закодирован согласно режиму интра кодирования, энтропийное декодирование позволяет получить информацию, описывающую направления прогнозирования интра и остаточный блок.
Если текущий блок был закодирован согласно режиму интер кодирования, энтропийное декодирование позволяет получить информацию, описывающую данные движения и остаточный блок. Когда положено, во время стадии 308 данные движения реконструируются для текущего блока согласно режиму AMVP или объединения. В режиме объединения данные движения, полученные при энтропийном декодировании, содержит индекс в списке кандидатов предиктора вектора движения. Декодирующий модуль применяет тот же самый процесс, как и кодирующий модуль, для создания списка кандидатов для регулярного режима объединения и для режима объединения субблока. С помощью реконструированного списка и индекса декодирующий модуль способен извлечь вектор движения, используемый для прогнозирования вектора движения блока.
Способ декодирования предусматривает стадии 312, 313, 315, 316 и 317, которые во всех отношениях идентичны соответственно стадиям 212, 213, 215, 216 и 217 способа кодирования. Поскольку на уровне модуля кодирования стадия 214 предусматривает процесс выбора режима, оценивающий каждый режим согласно критерию скорости и искажений, и выбирающий лучший режим, стадия 314 заключается лишь в чтении информации, относящейся к выбранному режиму в потоке 214 битов. Декодированные блоки сохраняются в декодированных изображениях, а декодированные изображения сохраняются в DPB 319 на стадии 318. Когда декодирующий модуль декодирует данное изображение, изображения, хранящиеся в DPB 319, идентичны изображениям, хранящимся в DPB 219 модулем кодирования во время кодирования вышеуказанного данного изображения. Декодированное изображение также может быть выведено декодирующим модулем, например, для отображения.
На фиг. 4А в виде блок-схемы показан пример архитектуры аппаратных средств обрабатывающего модуля 40, способного реализовать модуль кодирования или модуль декодирования, реализующий соответственно показанный на фиг. 2 способ кодирования и показанный на фиг. 1 способ декодирования, модифицированный согласно различным аспектам и вариантам осуществления. Обрабатывающий модуль 40, подключенный шиной 405 передачи данных, содержит: процессор или ЦП (центральный процессор) 400, охватывающий в качестве не имеющих ограничительного характера примеров один или несколько микропроцессоров, компьютеры общего назначения, компьютеры специального назначения и процессоры, основанные на многоядерной архитектуре; оперативное запоминающее устройство (ОЗУ) 401; постоянное запоминающее устройство (ПЗУ) 402; устройство хранения данных 403, которое может включать в себя энергонезависимую память и/или энергозависимую память, включая, помимо прочего, электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ), постоянное запоминающее устройство (ПЗУ), программируемое постоянное запоминающее устройство (ППЗУ), оперативное запоминающее устройство (ОЗУ), динамическое оперативное запоминающее устройство (ДОЗУ), статическое оперативное запоминающее устройство (СОЗУ), флеш-память, накопитель на магнитном диске и/или накопитель на оптическом диске, или устройство считывания носителя данных, например, устройство считывания SD (secure digital) карт и/или накопитель на жестком магнитном диске (НЖМД) и/или доступное сетевое устройство хранения данных; по меньшей мере, один интерфейс 404 связи для обмена данными с другими модулями, устройствами или оборудованием. Интерфейс 404 связи может включать в себя, помимо прочего, приемопередатчик, выполненный с возможностью передавать и принимать данные по каналу связи. Интерфейс 404 связи может включать в себя, помимо прочего, модем или сетевую плату.
Если обрабатывающий модуль 40 реализует декодирующий модуль, интерфейс 404 связи позволяет, например, обрабатывающему модулю 40 принимать закодированные видеопотоки и выдавать декодированный видеопоток. Если обрабатывающий модуль 40 реализует кодирующий модуль, интерфейс 404 связи позволяет, например, обрабатывающему модулю 40 принимать данные оригинального изображения для кодирования и выдавать закодированный видеопоток.
Процессор 400 способен выполнять команды, загруженные в ОЗУ 401 из ПЗУ 402, из внешней памяти (не показана), из носителя данных или из сети передачи данных. Когда на обрабатывающий модуль 40 подано электрическое питание, процессор 400 способен считывать команды из ОЗУ 401 и выполнять их. Эти команды образуют компьютерную программу, вызывающую, например, реализацию процессором 400 способа декодирования, описанного со ссылками на фиг. 3, или способа кодирования, описанного со ссылками на фиг. 2, при этом способы кодирования и декодирования предусматривает различные аспекты и варианты осуществления, описанные ниже в настоящем документе.
Все или некоторые из алгоритмов и стадий вышеуказанных способов кодирования или декодирования могут быть реализованы в виде программного обеспечения посредством выполнения набора команд программируемой машиной, например, ЦСП (цифровым сигнальным процессором) или микроконтроллером, или могут быть реализованы в виде аппаратного обеспечения как машина или специализированный компонент, например, программируемая пользователем вентильная матрица (FPGA) или интегральная схема специального назначения (ASIC).
На фиг. 4В в виде блок-схемы показан пример системы 4, в которой реализованы различные аспекты и варианты осуществления. Система 4 может быть воплощена как устройство, включающее в себя описанные ниже различные компоненты, и оно выполняется с возможностью осуществлять один или несколько аспектов и вариантов осуществления, описанных в настоящем документе. Примеры таких устройств включают, помимо прочего, различные электронные устройства, например, персональные компьютеры, ноутбуки, смартфоны, планшеты, телевизионные приставки для цифровой мультимедиа, цифровые телевизионные приемники, системы видеозаписи для личного пользования, подключенные домашние электроприборы и серверы. Элементы системы 4, по отдельности или в комбинации, могут быть воплощены в виде единственной интегральной схемы (ИС), нескольких ИС и/или дискретных компонентов. Например, согласно, по меньшей мере, одному варианту осуществления система 4 содержит один обрабатывающий модуль 40, который реализует декодирующий модуль или кодирующий модуль. Но согласно другому варианту осуществления система 4 может содержать первый обрабатывающий модуль 40, реализующий декодирующий модуль, и второй обрабатывающий модуль 40, реализующий кодирующий модуль, или один обрабатывающий модуль 40, реализующий декодирующий модуль и кодирующий модуль. Согласно различным вариантам осуществления система 40 каналами передачи данных связана с одной или несколькими другими системами или другими электронными устройствами, с помощью, например, шины передачи данных или через специальные порты ввода и/или вывода. Согласно различным вариантам осуществления система 4 выполнена с возможностью осуществлять один или несколько аспектов, описанных в настоящем документе.
Система 4 содержит, по меньшей мере, один обрабатывающий модуль 40, способный реализовать один из модулей, декодирующий модуль или кодирующий модуль, или оба модуля.
Вход к обрабатывающему модулю 40 может быть обеспечен с помощью различных входных модулей, которые показаны как блок 42. Такие входные модули включают в себя, помимо прочего, (i) радиочастотный (РЧ) модуль, который принимает РЧ сигнал, переданный, например, в эфир радиовещательной компанией, (ii) компонентный (СОМР) входной модуль (или набор входных модулей СОМР), (iii) входной модуль универсальной последовательной шины (USB), и/или (iv) входной модуль мультимедийного интерфейса высокой четкости (HDMI). Другие примеры, не показанные на фиг 4 В, включают в себя композитное видео.
Согласно различным вариантам осуществления, входные модули блока 42 имеет ассоциированные соответствующие входные обрабатывающие элементы, как известно в этой области техники. Например, РЧ модуль может быть ассоциирован с элементами, пригодными для (i) выбора нужной частоты (также называется выбор сигнала или ограничение диапазона сигнала до полосы частот), (ii) преобразование выбранного сигнала с понижением частоты, (iii) снова ограничение диапазона сигнала до более узкой полосы частот для выбора (к примеру) полосы частот сигнала, которую в некоторых вариантах осуществления можно называть каналом, (iv) демодулирование пониженного по частоте и ограниченного по полосе сигнала, (v) выполнение коррекции ошибок, и (vi) демультиплексирование для выбора нужного потока пакетов данных. РЧ модуль согласно различным вариантам осуществления содержит один или несколько элементов для выполнения этих функций, например, селекторы частоты, селекторы сигнала, ограничители полосы, селекторы канала, фильтры, понижающие преобразователи частоты, демодуляторы, корректоры ошибок и демультиплексоры. РЧ часть может содержать тюнер, который выполняет различные из этих функций, включая, например, преобразование принятого сигнала с понижением частоты до более низкой частоты (например, до промежуточный частоты или почти до базовых частот) или до базовых частот. Согласно одному варианту осуществления с телевизионной приставкой модуль РЧ и его ассоциированный входной обрабатывающий элемент принимает РЧ сигнал, передаваемый по проводной (например, по кабелю) среде, и выполняет выбор частоты посредством фильтрации, преобразования с понижением частоты и новой фильтрации до желаемой полосы частот. В различных вариантах осуществления изменен порядок описанных выше (и других) элементов, удалены некоторые из этих элементов, и/или добавлены другие элементы, выполняющий подобные или другие функции. Добавление элементов может включать вставление элементов между существующими элементами, например, вставления усилителей и аналого-цифрового преобразователя. Согласно различным вариантам осуществления РЧ модуль содержит антенну.
Дополнительно, модули USB и/или HDMI могут включать соответствующие процессоры интерфейса для подключения системы 4 к другим электронным устройствам по соединениям USB и/или HDMI. Следует понимать, что можно реализовать различные аспекты обработки входного сигнала, например, коррекцию ошибок по коду Рида-Соломона, например, внутри отдельной входной обрабатывающей ИС или внутри обрабатывающего модуля 40 по мере необходимости. Аналогичным образом, аспекты обработки интерфейса USB или HDMI можно реализовать внутри отдельных интерфейсных ИС или внутри обрабатывающего модуля 40 по мере необходимости. Демодулированный, исправленный от ошибок и демультиплексированный поток подается на обрабатывающий модуль 40.
Различные элементы системы 4 могут быть размещены внутри общего корпуса. Внутри общего корпуса различные элементы могут быть соединены вместе и передавать данные между собой с помощью подходящих конфигураций соединений, например, через внутреннюю шину, как известно в этой области техники, включая шину связи между ИС (I2C), электропроводку и печатные платы. Например, в системе 4 обрабатывающий модуль 40 подсоединен к другим элементом указанной системы 4 с помощью шины 405.
Интерфейс 404 связи обрабатывающего модуля 40 позволяет системе 4 обмениваться данными по каналу 41 связи. Канал 41 связи можно реализовать, например, на базе проводной и/или беспроводной среды.
Данные поступают в потоковой передаче, или предоставляются другим способом, в систему 4 в различных вариантах осуществления, используя беспроводную сеть, к примеру, сеть Wi-Fi, например, по стандарту IEEE 802.11 (IEEE означает Институт инженеров по электротехнике и электронике). Сигнал Wi-Fi в таких вариантах осуществления принимается по каналу 41 связи и по интерфейсу 404 связи, который адаптирован для Wi-Fi связи. Канал 41 связи в таких вариантах осуществления типично подсоединен к точке доступа или к маршрутизатору, который предоставляет доступ к внешним сетям, включая Интернет, для разрешения работы потоковых приложений и других протоколов связи по технологии ОТТ. Согласно другим вариантом осуществления потоковые данные предоставляются системе 4 с помощью телевизионной приставки, которая доставляет данные по соединению HDMI входного блока 42. Согласно еще другим вариантом осуществления потоковые данные предоставляются системе 4 с помощью РЧ соединения входного блока 42. Как указано выше, в различных вариантах осуществления данные предоставляются в непотоковом формате. Кроме того, согласно различным вариантам осуществления используются беспроводные сети, отличные от сети Wi-Fi, например, сотовая сеть или сеть Bluetooth.
Система 4 может выдать выходной сигнал на различные выходные устройства, включая дисплей 46, громкоговорители 47 и другие периферийные устройства 48. Согласно различным вариантам осуществления дисплей 46 содержит один или несколько из следующих элементов, например, сенсорный дисплей, дисплей на органических светодиодах (OLED-дисплей), изогнутый дисплей и/или складной дисплей. Дисплей 46 может быть для телевизора, планшета, ноутбука, мобильного телефона (сотового телефона) или других устройств. Дисплей 46 может также быть интегрирован с другими компонентами (например, как в смартфоне), или может быть отдельным (например, как внешний монитор для ноутбука). Согласно различным вариантам осуществления другие периферийные устройства 46 включают в себя одно или несколько из следующих устройств: автономный цифровой видеодиск (или универсальный цифровой диск) (сокращение DVR для обоих терминов), проигрыватель дисков, стереосистему и/или систему освещения. Согласно различным вариантам осуществления используется одно или несколько периферийных устройств 48, которые предоставляют функции, основанные на выходном сигнале системы 4. Например, проигрыватель дисков выполняет функцию воспроизведения выходного сигнала системы 4.
Согласно различным вариантам осуществления сигналы управления передаются между системой 4 и дисплеем 46, громкоговорителями 47 или другими периферийными устройствами 48 с помощью протоколов, например, AV.Link, Consumer Electronics Control (CEC - управление бытовой электроникой) или других протоколов связи, которые позволяют осуществлять управление устройством с устройства с вмешательством пользователя или без него. Выходные устройства могут быть подключены к системе 4 с возможностью обмена данными с помощью специализированных соединений через соответствующие интерфейсы 43, 44 и 45. Альтернативно, выходные устройства можно подсоединить к системе 4 с помощью канала 41 связи через интерфейс 404 связи. Дисплей 46 и громкоговорители 47 могут быть объединены в единый блок вместе с другими компонентами системы 4 в электронном устройстве, например, в телевизоре. Согласно различным вариантам осуществления интерфейс 43 дисплея содержит драйвер дисплея, например, микросхему контроллера синхронизации (Т Con).
Альтернативно, дисплей 46 и громкоговорители 47 могут быть отдельными от одной или нескольких других компонентов, например, если РЧ модуль входа 42 является частью отдельной телевизионной приставки. Согласно различным вариантам осуществления, в которых дисплей 46 и громкоговорители 47 являются внешними компонентами, выходные сигналы могут подаваться по специальным выходным соединениям, включая, например, порты HDMI, порты USB или выходы СОМР.
Различные варианты осуществления включают в себя декодирование. «Декодирование», как используется в настоящем документе, может включать в себя все или часть процессов, выполняемых, например, с принятым закодированным видеопотоком с целью создания окончательного выходного сигнала, пригодного для просмотра. Согласно различным вариантам осуществления такие процессы включают в себя один или несколько из процессов, обычно выполняемых декодером, например, энтропийное декодирование, обратное квантование, обратное преобразование и прогнозирование. Согласно различным вариантам осуществления такие процессы также или альтернативно включают в себя процессы, выполняемые согласно различным вариантам реализации или осуществления декодера, описанным в настоящем документе, например, для определения предиктора вектора темпорального движения для кодирующего блока, выполняющего кодирование согласно режиму объединения.
В качестве дальнейших примеров, в одном варианте осуществления «декодирование» означает только энтропийное декодирование (стадия 310 на фиг. 3). Указывает ли фраза «процесс декодирования» конкретно на подмножество операций или на общий более широкий процесс декодирования, будет понятно на основе контекста конкретных описаний и считается, что это будет хорошо понятно специалистам в этой области техники.
Различные варианты осуществления включают в себя кодирование. Аналогичным образом к приведенному выше обсуждению понятия «декодирование», понятие «кодирование», как оно используется в настоящем документе, может включать в себя все или часть процессов, выполняемых, например, с входной видеопоследовательностью с целью создания закодированного видеопотока. Согласно различным вариантам осуществления такие процессы включают в себя один или несколько из процессов, обычно выполняемых кодировщиком, например, разделение, прогнозирование, преобразование, квантование и энтропийное кодирование. Согласно различным вариантам осуществления такие процессы также или альтернативно включают в себя процессы, выполняемые согласно различным вариантам реализации или осуществления кодировщика, описанным в настоящем документе, например, для определения предиктора вектора темпорального движения для кодирующего блока, выполняющего кодирование согласно режиму объединения.
В качестве дальнейших примеров, в одном варианте осуществления «кодирование» означает выбор режима кодирования (стадия 206 на фиг. 2) и энтропийное кодирование (стадия 210 на фиг. 2). Указывает ли фраза «процесс кодирования» конкретно на поднабор операций или на общий более широкий процесс кодирования, будет понятно на основе контекста конкретных описаний и считается, что это будет хорошо понятно специалистам в этой области техники.
Обратите внимание, что используемые в настоящем документе имена элементов синтаксиса, имена режимов прогнозирования, имена средств являются описательными терминами. В силу этого они не исключают использование других имен элемента синтаксиса, режима прогнозирования или средства.
Если на рисунке показана схема алгоритма, то следует понимать, что он также представляет блок-схему соответствующей аппаратуры. Аналогичным образом, если на рисунке показана блок-схема, то следует понимать, что он также представляет схему алгоритма соответствующего способа/процесса.
В различных вариантах осуществления упоминается оптимизация по скорости и искажениям. В частности, во время кодирования обычно учитывается баланс или компромисс между скоростью и искажениями. Оптимизация скорости и искажений обычно формулируется как минимизация функции зависимости уровня искажений от скорости передачи, которая является взвешенной суммой скорости и искажений. Имеются различные подходы для решения задачи оптимизации скорости и искажений. Например, подходы могут быть основаны на всестороннем тестировании всех вариантов кодирования, включая все учитываемые режимы или значения параметров кодирования, с полной оценкой стоимости их кодирования и соответствующих искажений в реконструированном сигнале после кодирования и декодирования. Можно также использовать более быстрые подходы, чтобы сэкономить на сложности кодирования, в частности с вычислением приблизительного уровня искажений на основе прогнозирования или по остаточному сигналу прогнозирования, а не по реконструированному сигналу. Можно также использовать комбинацию этих двух подходов, например, использовать приблизительный уровень искажений только для некоторых из всех возможных вариантов кодирования, и полный уровень искажений для других вариантов кодирования. В других подходах оценивается только подмножество возможных вариантов кодирования. В более общем случае многие подходы используют любую из ряда технологий для выполнения оптимизации, но оптимизация не обязательно является полной оценкой, как стоимости кодирования, так и соответствующих искажений.
Описанные в настоящем документе реализации и аспекты можно реализовать, например, как способ или процесс, аппаратуру, программное обеспечение, поток данных или сигнал. Даже если обсуждение ведется только в контексте единственной формы реализации (например, обсуждается только как способ), реализация обсуждаемых функций также может быть выполнена в различных формах (например, как аппаратура или программа). Аппаратуру можно реализовать, например, в виде соответствующих аппаратных средств, программного обеспечения, и встроенного программного обеспечения. Способы можно реализовать, например, в виде процессора, что обозначает в общем случае обрабатывающее устройство, включая, например, компьютер, микропроцессор, интегральную схему или программируемое логическое устройство. Процессоры также включают в себя устройства связи, например, компьютеры, сотовые телефоны, портативный/персональный цифровой помощник (PDA или карманный персональный компьютер (КПК)) и другие устройства, которые упрощают передачу информации между конечными пользователями.
Ссылка на «один вариант осуществления» или «вариант осуществления» или «одну реализацию» или «реализацию», а также их различные варианты, означает, что конкретная функция, структура, характеристика и так далее, описанная в связи с вариантом осуществления, включена в, по меньшей мере, один вариант осуществления. Таким образом, фразы «согласно одному варианту осуществления» или «согласно варианту осуществления» или «в одной реализации» или «в реализации», а также их любые другие варианты, появляющийся в различных местах всего настоящего документа, не обязательно все указывают на тот же самый вариант осуществления.
Кроме того, в настоящем документе может упоминаться «определение» различных частей информации. Определение информации может включать в себя одно или несколько из, например, следующих действий: оценивание информации, вычисление информации, прогнозирование информации, выведение информации из другой информации, извлечение информации из памяти или получение информации, например, из другого устройства, модуля или от пользователя.
Более того, в настоящем документе может упоминаться «обращение» к различным частям информации. Обращение к информации может включать в себя одно или несколько из, например, следующих действий: извлечение информации (например, из памяти), сохранение информации, перемещение информации, копирование информации, вычисление информации, определение информации, прогнозирование информации, выведение информации или оценивание информации.
Кроме того, в настоящем документе может упоминаться «получение» различных частей информации. Термин «получение», как и «обращение», подразумевает широкую трактовку. Получение информации может включать в себя одно или несколько из, например, следующих действий: обращение к информации или извлечение информации (например, из памяти). Более того, «получение» обычно происходит, тем или иным способом, во время таких операций как, например, сохранение информации, обработка информации, передача информации, перемещение информации, копирование информации, удаление информации, вычисление информации, определение информации, прогнозирование информации, выведение информации или оценивание информации.
Следует понимать, что использование любой из следующих конструкций «/», «и/или» и «по меньшей мере, один из», «один или несколько из», например, в случаях «А/В», «А и/или В» и «по меньшей мере, один из А и В», «один или несколько из А и В» предназначены для описания выбора только первого из перечисленных вариантов (А), или выбора только второго из перечисленных вариантов (В), или выбор обоих вариантов (А и В). В качестве следующего примера, в случаях «А, В и/или С» и «по меньшей мере, один из А, В и С», «один или несколько из А, В и С» эти формулировки предназначены для описания выбора только первого из перечисленных вариантов (А), или выбора только второго из перечисленных вариантов (В), или выбора только третьего из перечисленных вариантов (С), или выбор только первого и второго из перечисленных вариантов (А и В), или выбор только первого и третьего из перечисленных вариантов (А и С), или выбор только второго и третьего из перечисленных вариантов (В и С), или выбор всех трех вариантов (А и В и С). Это может быть расширено на любое количество перечисленных вариантов, и это очевидно специалисту обычной квалификации в этой и связанных областях техники.
Также, как используется в настоящем документе, слово «сигнал» предназначено для, помимо других вещей, указания чего-то в соответствующем декодере. Например, в определенных вариантах осуществления элементы синтаксиса или параметры сигналов кодировщика связаны с предиктором вектора движения, выбранном в списке векторов движения для кодирующего блока, закодированных в режиме объединения. Таким образом, согласно варианту осуществления те же самые параметры используются как на стороне кодировщика, так и на стороне декодера. Следовательно, например, кодировщик может передавать (с явным протоколом) конкретный параметр декодеру, так что декодер может использовать тот же самый конкретный параметр. И наоборот, если у декодера уже есть конкретный параметр, а также другие, то протокол можно использовать без передачи (с явным протоколом), чтобы просто позволить декодеру узнать и выбрать конкретный параметр. За счет исключения передачи любых фактических функций в различных вариантах осуществления достигается экономия битов. Следует понимать, что передача сигналов протоколом может быть выполнена различными способами. Например, один или несколько элементов синтаксиса, флагов и так далее используются для передачи информации соответствующему декодеру согласно различным вариантом осуществления. Хотя в предыдущем примере используется глагольная форма от слова «сигнал», слово «сигнал» может также использоваться в настоящем документе в качестве имени существительного.
Как будет очевидно специалисту обычной квалификации в этой области техники, в реализациях может использоваться множество сигналов разного формата для пересылки информации, которую можно, например, сохранить или передать. Информация может включать в себя, например, инструкции для осуществления способа, или данные, созданные согласно одному из описанных вариантов реализации. Например, сигнал может быть отформатирован для пересылки закодированного видеопотока описываемого варианта осуществления. Такой сигнал может быть отформатирован, например, как электромагнитная волна (например, используя радиочастотную часть спектра) или как сигнал базовых частот. Форматирование может включать в себя, например, кодирование в закодированный видео поток и модулирование несущей с помощью закодированного видеопотока. Информация, которую переносит сигнал, может быть, например, аналоговой или цифровой информацией. Сигнал, как это известно, можно передавать по ряду различных проводных и беспроводных каналов. Сигнал можно сохранить на носителе данных для процессора.
На фиг. 9 в виде блок-схемы показан общий улучшенный процесс получения TMVP. Показанный на фиг. 9 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, процесс получения TMVP выполняется во время стадий 208 и 308. Новый TMVP, полученный согласно показанному на фиг. 9 процессу, можно использовать, например, в качестве TMVP для режима регулярного объединения.
Перед запуском процесса получения TMVP обрабатывающий модуль 40 идентифицирует блок в сопряженном изображении, сопряженный с текущим блоком.
На стадии 300 обрабатывающий модуль 40 определяет, можно ли получить вектор движения mv из положения Н блока, сопряженного с текущим блоком в сопряженном изображении, как определено на фиг. 5. Если вектор движения mv можно вывести из положения Н, такой вектор движения mv сохраняется как вектор темпорального движения обрабатывающим модулем 40, и за стадией 300 следует стадия 302.
В противном случае за стадией 300 следует стадия 301, во время которой обрабатывающий модуль 40 определяет, можно ли получить вектор движения mv из положения центра С блока, сопряженного с текущим блоком в сопряженном изображении, как определено на фиг. 5. Если вектор движения mv можно вывести из положения центра С, такой вектор движения mv сохраняется как вектор темпорального движения обрабатывающим модулем 40, и за стадией 301 следует стадия 302. Стадии 300 и 301 позволяет получить вектор темпорального движение из положения в блоке, сопряженном с текущим блоком в сопряженном изображении, или в окрестности этого блока.
Если на стадиях 300 или 301 нельзя определить никакого вектора темпорального движения, обрабатывающий модуль 40 останавливает процесс получения TMVP на стадии 311. В этом случае никакого TMVP нельзя получить с помощью процесса получение TMVP.
На стадии 302, так как вектор темпорального движения mv может указывать на любое изображение в буфере эталонных изображений, выведенный вектор темпорального движения mv заново масштабируется обрабатывающим модулем 40, чтобы гарантировать, что этот вектор темпорального движения mv указывает на текущее эталонное изображение (т.е. на эталонное изображение в первом положении в буфере эталонных изображений).
На стадии 302 перемасштабированный вектор темпорального движения mv используется обрабатывающим модулем 40 для перемещения центра текущего блока (показан положением С) в положение Р=mv+С.
На стадии 304 обрабатывающий модуль 40 применяет обрезание к положению Р, чтобы избежать указания за пределы заранее определенного участка (т.е., например, чтобы избежать указания за пределы единицы CTU, содержащей положение С). Стадии 303 и 304 позволяют получить положение Р в текущем эталонном изображении посредством применения перемещения положения центра С текущего блока на вектор темпорального движения mv.
На стадии 305 обрабатывающий модуль 40 определяет, имеется ли вектор движения в положении Р. Этот вектор движения называется «mv'».
Если вектор движения mv' имеется, за стадией 305 следует стадия 307. Во время стадии 307 вектор движения mv' заново масштабируется для получения вектора движения mv'', который указывает на текущее эталонное изображение, и он хранится как окончательный вектор движения (т.е. TMVP) для процесса получения TMVP.
Если нет никакого вектора движения mv', то вектор движения mv хранится как окончательный вектор движения (т.е. TMVP) на стадии 306.
За стадиями 306 и 308 следует стадия 311. На стадии 311 TMVP, полученный в ходе процесса выведения TMVP, вставляется в список кандидатов предиктора вектора движения, используемый для кодирования или декодирования (т.е. для реконструкции) вектора движения текущего блока.
Как можно видеть, при условии наличия векторов, либо mv, либо mv'' используется как TMVP.
Обратите внимание, что процесс нового масштабирования точно такой же, как в стандарте HEVC, как описано выше.
Согласно варианту осуществления, наличие вектора движения в положении Н (проверяется на стадии 300) зависит от пределов (границ) единицы CTU, содержащей текущий блок. Если нижний правый субблок, соответствующий положению Н, лежит за пределами текущей единицы CTU, то считается, что вектор движения отсутствует, и вектор движения в положении С берется в сопряженном изображении.
В качестве варианта можно использовать субблок текущей единицы CTU, расположенный в нижнем правом углу текущей единицы CTU, избегая, таким образом, проверки ненужных ограничений на пределы CTU.
В другом варианте сначала изучается положение С.
Во всех случаях, если вектор движения не существует в сопряженном изображении (например, соответствующий субблок находится в режиме интра), изучается следующий кандидат (например, в положении С, если Н является первым проверенным положением).
Процесс обрезания, применяемый, например, на стадии 304, заключается в обрезании положения Р в заданный ограниченный участок. Согласно варианту осуществления, ограниченный участок соответствует единице CTU, содержащей текущий блок, к которой добавляется столбец субблоков с правой стороны этой CTU (см. фиг. 12). Смещенный центр С в положении Р обрезается, чтобы остаться внутри ограниченного участка, что дает положение Р'. Окончательный вектор движения (т.е. TMVP) затем извлекается из субблока в положении Р' в сопряженном изображении.
На фиг. 10 в виде блок-схемы показан первый вариант общего улучшенного процесса получения TMVP. Показанный на фиг. 10 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, процесс получения TMVP выполняется во время стадий 208 и 308.
Показанный на фиг. 10 вариант модифицирует показанный на фиг. 9 процесс, когда никакого темпорального движения нельзя найти на стадиях 300 и 301. В сравнении с показанной на фиг. 8 блок-схемой, между стадиями 301 и 307 добавлены две дополнительные стадии 309 и 310. И опять новый TMVP, полученный согласно показанному на фиг. 10 процессу, можно использовать, например, в качестве TMVP для режима регулярного объединения.
На стадии 309 обрабатывающий модуль 40 берет положение центра С в качестве положения Р.
На стадии 310 обрабатывающий модуль 40 проверяет наличие вектора движения mv' в положении Р в сопряженном изображении.
Если он имеется, то вектор движения mv масштабируется до вектора движения mv'' на стадии 307. В противном случае никакой вектор движения не получается в процессе получения TMVP, и процесс заканчивается на стадии 311.
На фиг. 11 в виде блок-схемы показан второй вариант общего улучшенного процесса получения TMVP. Показанный на фиг. 11 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, показанный на фиг. 11 процесс получения TMVP выполняется во время стадий 208 и 308.
Показанный на фиг. 11 вариант снова модифицирует показанный на фиг. 9 процесс, когда никакого темпорального движения нельзя найти на стадиях 300 и 301. В этом случае в этом варианте первый имеющийся вектор пространственного движения (или первый кандидат процесса объединения, если он существует) используется для перемещения центра текущего блока. Если в конце нельзя найти никакого вектора движения, никакой темпоральный вектор движения не получается в процессе получения TMVP. И опять новый TMVP, полученный согласно показанному на фиг. 11 процессу, можно использовать, например, в качестве TMVP для режима регулярного объединения.
Показанный на фиг. 11 процесс отличается от показанного на фиг. 9 процесса, как объясняется ниже.
Если никакого вектора темпорального движения не найдено на стадиях 300 и 301, за стадией 301 следует стадия 4000.
На стадии 4000 обрабатывающий модуль 40 определяет, имеется ли первый кандидат вектора движения режима объединения в списке кандидатов вектора движения режима регулярного объединения. Первый вектор движения режима объединение в списке кандидатов режима регулярного объединения является вектором пространственного движения. Согласно варианту осуществления, вместо определения, имеется ли первый кандидат вектора движения режима объединения, обрабатывающий модуль 40 определяет, имеется ли, по меньшей мере, один пространственный кандидат в списке регулярного объединения, и если имеется, по меньшей мере, один кандидат вектора движения, обрабатывающий модуль 40 выбирает кандидата вектора движения в первом положении в вышеуказанном списке.
Если первого вектора движения в режиме объединения не существует, на стадии 4005 обрабатывающий модуль 40 используют центр С текущего блока для положения Р.
На стадии 4006 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv' в положении Р.
Если вектор mv' существует, обрабатывающий модуль 40 перемещает центр текущего блока, используя mv' на стадии 4007.
Затем обрабатывающий модуль 40 заново масштабирует вектор движения mv' для получения вектора движения mv'' на стадии 307.
Если mv' отсутствует во время стадии 4006, никакой вектор движения не получается в процессе получения TMVP, и процесс заканчивается на стадии 311.
Если первый вектор движения в режиме объединения существует на стадии 4000, обрабатывающий модуль 40 заново масштабирует этот вектор движения на стадии 4001.
На стадии 4002 обрабатывающий модуль 40 перемещает положение центра текущего блока в положении Р, используя перемасштабированный вектор движения.
На стадии 4003 обрабатывающий модуль 40 обрезает перемещенное положение Р.
Во время стадии 4004 обрабатывающий модуль 40 проверяет наличие вектора движения mv' в положении Р в сопряженном изображении. Если вектор движения mv' имеется, то он заново масштабируется до вектора движения mv'' на стадии 307. Если вектора движения mv' не существует, никакой вектор движения не получается в процессе получения TMVP, и процесс заканчивается на стадии 311.
На фиг. 13 в виде блок-схемы показан третий вариант общего улучшенного процесса получения TMVP. Показанный на фиг. 13 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, показанный на фиг. 13 процесс получения TMVP выполняется во время стадий 208 и 308.
И опять новый TMVP, полученный согласно показанному на фиг. 13 процессу, можно использовать, например, в качестве TMVP для режима регулярного объединения.
Альтернативный процесс к процессу обрезания заключается в использовании резервного предиктора вектора движения, если перемещенный субблок лежит за пределами ограниченного участка.
На фиг. 13 показан вариант процесса получения TMVP, в котором отсутствует процесс обрезания. В показанном на фиг. 13 процессе используется резерв к оригинальному вектору движения mv (когда он был выбран), если перемещенный центр лежит за пределами ограниченного участка. В сравнении с фиг. 11 здесь вставлены две стадии (500 и 501), заключающиеся в проверке, лежит ли положение Р внутри ограниченного участка. Стадия 500 вставляется между стадиями 303 и 305/306. Если положение Р лежит внутри ограниченного участка на стадии 500, обрабатывающий модуль выполняет стадию 305. В противном случае обрабатывающий модуль выполняет стадию 306.
Стадия 501 вставляется между стадиями 4002 и 4004. Если положение Р лежит внутри ограниченного участка на стадии 501, обрабатывающий модуль выполняет стадию 4004. В противном случае за стадией 501 следует стадия 311, и никакой вектор движения не получается в процессе получения TMVP.
На фиг. 14 в виде блок-схемы показан четвертый вариант общего улучшенного процесса получения TMVP. Показанный на фиг. 14 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, показанный на фиг. 14 процесс получения TMVP выполняется во время стадий 208 и 308.
И опять новый TMVP, полученный согласно показанному на фиг. 14 процессу, можно использовать, например, в качестве TMVP для режима регулярного объединения.
На стадии 1401 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv0 в положении Н в сопряженном изображении.
Если вектор движения mv0 имеется в положении Н, обрабатывающий модуль 40 выполняет новое масштабирование вектора движения mv0 на стадии 1403 так, чтобы перемасштабированный вектор движения mv0 указывал на текущее эталонное изображение (т.е. на эталонное изображение в первом положении в буфере эталонных изображений).
На стадии 1404 обрабатывающий модуль 40 перемещает центр текущего блока в положение Р=C+mv0.
На стадии 1405 обрабатывающий модуль 40 обрезает положение Р, если положение Р находится за пределами ограниченного участка.
На стадии 1406 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv0' в положении Р в сопряженном изображении.
Если вектор движения mv0 имеется в положении Р, обрабатывающий модуль 40 выполняет новое масштабирование вектора движения mv0', чтобы получить вектор движения mv0'' на стадии 1408. За стадией 1408 следует стадия 1421.
Если на стадии 1401 никакого вектора движения нет в положении Н, то обрабатывающий модуль 40 определяет, что никакого вектора движения mv0 и mv0'' нет в наличии во время стадии 1402. За стадией 1402 следует стадия 1421.
Если на стадии 1406 никакого вектора движения mv0' нет в положении Р, то обрабатывающий модуль 40 определяет, что никакого вектора движения mv0'' нет в наличии во время стадии 1407. За стадией 1407 следует стадия 1421.
Одновременно или после стадий от 1401 до 1408 обрабатывающий модуль выполняет стадии от 1409 до 1416.
На стадии 1409 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv1 в положении С в сопряженном изображении.
Если вектор движения mv1 имеется в положении С, обрабатывающий модуль 40 выполняет новое масштабирование вектора движения mv1 на стадии 1411 так, чтобы перемасштабированный вектор движения mv1 указывал на текущее эталонное изображение (т.е. на эталонное изображение в первом положении в буфере эталонных изображений).
На стадии 1412 обрабатывающий модуль 40 перемещает центр текущего блока в положение Р=C+mv1.
На стадии 1413 обрабатывающий модуль 40 обрезает положение Р, если положение Р находится за пределами ограниченного участка.
На стадии 1414 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv1' в положении Р в сопряженном изображении.
Если вектор движения mv1' имеется в положении Р, обрабатывающий модуль 40 выполняет новое масштабирование вектора движения mv1', чтобы получить вектор движения mv1'' на стадии 1416. За стадией 1416 следует стадия 1421.
Если на стадии 1409 никакого вектора движения нет в положении С, то обрабатывающий модуль 40 определяет, что никакого вектора движения mv1 и mv1'' нет в наличии во время стадии 1410. За стадией 1410 следует стадия 1421.
Если на стадии 1414 никакого вектора движения mv1' нет в положении Р, то обрабатывающий модуль 40 определяет, что никакого вектора движения mv1'' нет в наличии во время стадии 1415. За стадией 1415 следует стадия 1421.
Одновременно или после стадий от 1401 до 1408 и/или стадий от 1409 до 1416 обрабатывающий модуль выполняет стадии от 1417 до 1420.
На стадии 1417 обрабатывающий модуль 40 определяет положение Р в центре текущего блока (Р=С).
На стадии 1418 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv3'' в положении Р в сопряженном изображении. Если вектор движения имеется в положении Р, обрабатывающий модуль 40 выполняет новое масштабирование вектора движения mv3'' на стадии 1420.
В противном случае обрабатывающий модуль 40 определяет, что никакого вектора движения mv3'' нет в наличии во время стадии 1419. За стадиями 1419 и 1420 следует стадия 1421.
Во время стадии 1421 обрабатывающий модуль 40 выбирает первый имеющийся вектор движения в упорядоченном наборе {mv0'', mv1'', mv3'', mv0, mv1, нет} в качестве TMVP. Если имеется mv0'', обрабатывающий модуль 40 выбирает mv0'' в качестве TMVP. В противном случае, если имеется mv1'', обрабатывающий модуль 40 выбирает mv1'' в качестве TMVP. В противном случае, если имеется mv3'', обрабатывающий модуль 40 выбирает mv3'' в качестве TMVP. В противном случае, если имеется mv0, обрабатывающий модуль 40 выбирает mv0 в качестве TMVP. В противном случае, если имеется mv1, обрабатывающий модуль 40 выбирает mv1 в качестве TMVP. В противном случае нет выбора никакого TMVP, т.е. никакой вектор движения не получается в процессе получения TMVP.
Тот же самый процесс можно применить, когда первый имеющийся вектор пространственного движения (или первый кандидат процесса объединения, если он существует) используется в качестве начального вектора движения, как описано выше в связи с фиг. 11 (стадия 4000).
На фиг. 15 в виде блок-схемы показан пятый вариант общего улучшенного процесса получения TMVP. Показанный на фиг. 15 процесс выполняется на текущем блоке обрабатывающим модулем 40, когда обрабатывающий модуль 40 реализует кодировщик или декодер. В частности, показанный на фиг. 15 процесс получения TMVP выполняется во время стадий 208 и 308.
Новый TMVP, полученный согласно показанному на фиг. 15 процессу, специально приспособлен для режима объединения субблоков.
На стадии 1501 обрабатывающий модуль 40 определяет, имеется ли вектор движения mv в положении Н в сопряженном изображении. Если вектор движения mv имеется, за стадией 1501 следует стадия 1503. В противном случае обрабатывающий модуль 40 выполняет стадию 1502, в это время обрабатывающий модуль 40 определяет, имеется ли вектор движения mv в положении С в сопряженном изображении. Если вектор движения mv имеется, за стадией 1502 следует стадия 1503.
Если на стадии 1502 нет никакого вектора движения mv, за стадией 1502 следует стадия 1508.
На стадии 1503 обрабатывающий модуль 40 заново масштабирует вектор движения mv. Стадия 1503 идентична стадии 302.
На стадии 1504 обрабатывающий модуль 40 вычисляет для каждого субблока / текущего блока положение Pi=Ci+mv, где Ci является положением центра i-го субблока текущего блока.
На стадии 1505 обрабатывающий модуль 40 обрезает каждое положение Pi, чтобы оно находилась внутри ограниченного участка, например, внутри единицы CTU, содержащей текущий блок.
На стадии 1506 обрабатывающий модуль 40 определяет для каждого субблока i, имеется ли вектор движения mv'i в положении Pi;.
Каждый имеющийся вектор движения mv'i заново масштабируется на стадии 1507, чтобы получить вектор движения mv''i. Если для субблока i не существует никакого вектора движения, субблоку i на стадии 1517 назначается вектор движения по умолчанию, например, mv''i=(0,0).
На стадии 1508, которая идентична стадии 4000, обрабатывающий модуль 40 определяет, имеется ли первый вектор движения mv режима объединения. Если первый вектор движения в режиме объединения mv существует, обрабатывающий модуль 40 заново масштабирует этот первый вектор движения mv режима объединения на стадии 1509.
На стадии 1510 обрабатывающий модуль 40 вычисляет для каждого субблока i текущего блока положение Pi=Ci+mv.
На стадии 1511 обрабатывающий модуль 40 обрезает каждое положение Pi, чтобы оно находилась внутри ограниченного участка.
На стадии 1512 обрабатывающий модуль 40 определяет для каждого субблока i, имеется ли вектор движения mv'i в положении Pi.
Каждый имеющийся вектор движения mv'i заново масштабируется на стадии 1513, чтобы получить вектор движения mv'i. Если для субблока i не существует никакого вектора движения mv'i, субблоку i на стадии 1517 назначается вектор движения по умолчанию.
Если на стадии 1508 обрабатывающий модуль 40 определяет, что нет никакого первого вектор движения mv режима объединения, то за стадией 1508 следует стадия 1514.
На стадии 1514 обрабатывающий модуль 40 вычисляет для каждого субблока i текущего блока положение Pi=Ci.
На стадии 1515 обрабатывающий модуль 40 определяет для каждого субблока i, имеется ли вектор движения mv'i в положении Pi. Каждый имеющийся вектор движения mv'i заново масштабируется на стадии 1516, чтобы получить вектор движения mv'i. Если для субблока i не существует никакого вектора движения mv'i, субблоку i на стадии 1517 назначается вектор движения по умолчанию.
В настоящем документе описан ряд аспектов, включая средства, функции, варианты осуществления, модели, подходы и т.п. Многие из этих аспектов описаны конкретно и, по меньшей мере, для демонстрации отдельных характеристик, они часто описываются таким образом, который может казаться ограничивающим. Однако это выполнено с целью наглядности описания и не ограничивает изобретение или объем таких аспектов. Фактически все различные аспекты можно комбинировать и взаимно заменять, чтобы создать дальнейшие аспекты. Более того, аспекты также можно комбинировать и взаимно заменять с аспектами, описанными в ранее поданных заявках.
Аспекты, описанные и рассмотренные в настоящем документе, можно реализовать во многих различных формах. На фиг. 2, 3, 4А и 4В приведены некоторые варианты осуществления, но предложены и другие варианты осуществления и обсуждение фиг. 2, 3, 4А и 4В не ограничивает охват вариантов осуществления. По меньшей мере, один из аспектов обычно связан с кодированием и декодированием видео, и, по меньшей мере, один другой аспект обычно связан с передачей потока битов, созданных или закодированных. Эти и другие аспекты могут быть реализованы как способ, аппаратура, носитель данных для компьютера, на котором хранятся инструкции для кодирования или декодирования видеоданных согласно любому из описанных способов, и/или носитель данных для компьютера, на котором хранится поток битов, созданный согласно любому из описанных способов.
В настоящем документе описаны различные способы, и каждый из способов предусматривает одну или несколько стадий или действий для осуществления описанного способа. Кроме случаев, когда конкретный порядок стадий или действий требуется для надлежащей реализации способа, порядок и/или использование конкретных стадий и/или действий можно модифицировать или комбинировать.
Различные способы и другие аспекты, описанные в настоящем документе, можно использовать для модифицирования модулей, например, стадия 208 кодирования вектора движения в кодировщике видео и/или стадия 308 декодирования вектора движения в декодере. Более того, представленные аспекты не ограничены стандартами VVC или HEVC, и могут применяться, например, для других стандартов и рекомендаций, как уже существующих, так и разрабатываемых для будущего, и для расширений любых таких стандартов и рекомендации (включая VVC и HEVC). Если не оговорено иное, или это технически не исключено, описанные в настоящем документе аспекты можно использовать по отдельности или в комбинации.
В настоящем документе используются различные численные значения, различные положения и/или различные ограниченные участки. Конкретные значения, положения, ограниченные участки приведены в качестве примеров и описанные аспекты не ограничивается этими конкретными значениям, положениями и ограниченными участками.
Более того, варианты осуществления могут включать одну или несколько из следующих функций, устройств или аспектов, по отдельности или в любой комбинации, для всех различных категории и типов пунктов формулы изобретения:
• Создание нового предиктора вектора темпорального движения;
• Получение нового предиктора вектора темпорального движения с помощью использования вектора движения блока в сопряженном изображении, причем блок смещен (по отношению к пространственному положению текущего блока) на вектор движения MV0, получающийся в оригинальном процессе TMVP;
• Новый предиктор вектора темпорального движения, возможно, подвергается некоторому изменению темпорального масштаба;
• Обрезание перемещения блока, чтобы он находился внутри ограниченного участка;
• Применение оригинального процесса TMVP в случае, когда предиктор вектора темпорального движения не соблюдает некоторых ограничений, например, указывает за пределы ограниченного участка;
• Получение нового предиктора вектора темпорального движения субблока с помощью использования вектора движения блока в сопряженном изображении в качестве начального вектора движения вместо вектора движения пространственно соседнего блока;
• Получение нового предиктора вектора темпорального движения субблока посредством применения начального вектора движения к каждому субблоку;
• Вставка элементов синтаксиса протокола, что позволяет декодеру идентифицировать, какой метод прогнозирования вектора движения следует использовать;
• Поток битов или сигнал, который содержит синтаксис, переносящий информацию, созданную согласно любому из описанных вариантов осуществления;
• Вставка элементов синтаксиса протокола, что позволяет декодеру адаптировать прогнозирование вектора движения таким образом, чтобы оно соответствовало использовавшемуся кодировщиком;
• Создание и/или передача и/или прием и/или декодирование потока битов или сигнала, который содержит один или несколько из описанных элементов синтаксиса или их варианты;
• Создание и/или передача и/или прием и/или декодирование согласно любому из описанных вариантов осуществления;
• Способ, процесс, аппаратура, носитель данных с хранящимися инструкциями, носитель данных с хранящимися данными или сигнал согласно любому из описанных вариантов осуществления;
• Телевизор, телевизионная приставка, сотовый телефон, планшет или другое электронное устройство, которое выполняет адаптацию прогнозирования вектора движения согласно любому из описанных вариантов осуществления;
• Телевизор, телевизионная приставка, сотовый телефон, планшет или другое электронное устройство, которое выполняет адаптацию прогнозирования вектора движения согласно любому из описанных вариантов осуществления, и которое отображает (например, используя монитор, экран или другой тип дисплея) получающееся изображение;
• Телевизор, телевизионная приставка, сотовый телефон, планшет или другое электронное устройство, которое выбирает (например, используя тюнер) канал для приема сигнала, содержащего закодированное изображение, и выполняет адаптацию прогнозирования вектора движения согласно любому из описанных вариантов осуществления;
• Телевизор, телевизионная приставка, сотовый телефон, планшет или другое электронное устройство, которое принимает (например, используя антенну) передаваемый по эфиру сигнал, который содержит закодированное изображение, и выполняет адаптацию прогнозирования вектора движения согласно любому из описанных вариантов осуществления;

Claims (51)

1. Способ декодирования, причем способ предусматривает стадии:
идентификации региона, называемого сопряженным регионом, в первом эталонном изображении с текущим блоком для декодирования текущего изображения;
получения (300, 301) первого вектора движения, указывающего на эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона;
получения (303, 304) положения, называемого смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе первого вектора движения;
определения (305), имеется ли второй вектор движения в смещенном положении, и при его наличии получения (307, 308) третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
2. Способ по п. 1, в котором первый вектор движения заново масштабируется перед использованием для получения смещенного положения для обеспечения того, что первый вектор движения указывает на второе эталонное изображение.
3. Способ по п. 1, в котором, если смещенное положение выходит из ограниченного участка, смещенное положение обрезается, чтобы находиться в ограниченном участке.
4. Способ по п. 1, в котором, если смещенное положение выходит из ограниченного участка, третий вектор движения получается на основе первого вектора движения.
5. Способ по п. 1, в котором, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, то способ предусматривает стадию определения, имеется ли вектор пространственного движения в списке кандидатов предиктора вектора движения, используемого для декодирования вектора движения текущего блока, и если вектор пространственного движения имеется, то выполняется фиксация (4001) первого вектора движения в значение, зависящее от имеющегося вектора пространственного движения.
6. Способ по п. 1, в котором, если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, то способ предусматривает фиксацию (309) первого вектора движения в вектор пространственного движения.
7. Способ по п. 1, в котором, если первый вектор движения получается из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, то способ дополнительно предусматривает стадии:
получения (1409, 1411) четвертого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе;
получения (1412, 1413) положения, называемого вторым смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе четвертого вектора движения;
определения (305), имеется ли пятый вектор движения во втором смещенном положении, и при его наличии получения (307, 308) шестого вектора движения на основе пятого вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока; и
выбора первого имеющегося вектора движения в упорядоченном наборе векторов движения, подлежащих вставлению в список, причем упорядоченный набор содержит, по меньшей мере, третий вектор движения, шестой вектор движения, первый вектор движения и четвертый вектор движения, если эти вектора движения имеются.
8. Способ по п. 7, в котором упорядоченный набор дополнительно содержит, в случае наличия, вектор движения, полученный из положения в сопряженном регионе.
9. Способ по п. 1, в котором:
текущий блок разделен на субблоки;
получение смещенного положения предусматривает получение смещенного положения для каждого субблока посредством применения перемещения к положению в субблоке на основе первого вектора движения;
третий вектор движения получается для каждого субблока, если второй вектор движения имеется в смещенном положении, соответствующем субблоку.
10. Способ кодирования, причем способ предусматривает стадии:
идентификации региона, называемого сопряженным регионом, в первом эталонном изображении с текущим блоком для кодирования текущего изображения;
получения (300, 301) первого вектора движения, указывающего на эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона;
получения (303, 304) положения, называемого смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе первого вектора движения;
определения (305), имеется ли второй вектор движения в смещенном положении, и при его наличии получения (307, 308) третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
11. Устройство для декодирования, причем устройство содержит электронную схему, адаптированную для:
идентификации региона, называемого сопряженным регионом, в первом эталонном изображении с текущим блоком для декодирования текущего изображения;
получения (300, 301) первого вектора движения, указывающего на эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона;
получения (303, 304) положения, называемого смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе первого вектора движения;
определения (305), имеется ли второй вектор движения в смещенном положении, и при его наличии получения (307, 308) третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
12. Устройство по п. 11, в котором первый вектор движения заново масштабируется перед использованием для получения смещенного положения для обеспечения того, что первый вектор движения указывает на второе эталонное изображение.
13. Устройство по п. 11, в котором если смещенное положение выходит из ограниченного участка, смещенное положение обрезается, чтобы находиться в ограниченном участке.
14. Устройство по п. 11, в котором если смещенное положение выходит из ограниченного участка, третий вектор движения получается на основе первого вектора движения.
15. Устройство по п. 11, в котором если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, то устройство содержит электронную схему, приспособленную для определения, имеется ли вектор пространственного движения в списке кандидатов предиктора вектора движения, используемого для декодирования вектора движения текущего блока, и если вектор пространственного движения имеется, то выполняется фиксация (4001) первого вектора движения в значение, зависящее от имеющегося вектора пространственного движения.
16. Устройство по п. 11, в котором если нельзя получить ни одного первого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, то устройство содержит электронную схему, приспособленную для фиксации (309) первого вектора движения в вектор пространственного движения.
17. Устройство по п. 11, в котором если первый вектор движения получается из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона, и устройство содержит электронную схему, приспособленную для:
получения (1409, 1411) четвертого вектора движения, указывающего на второе эталонное изображение из положения в сопряженном регионе;
получения (1412, 1413) положения, называемого вторым смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе четвертого вектора движения;
определения (305), имеется ли пятый вектор движения во втором смещенном положении, и при его наличии получения (307, 308) шестого вектора движения на основе пятого вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока; и
выбора первого имеющегося вектора движения в упорядоченном наборе векторов движения, подлежащих вставлению в список, причем упорядоченный набор содержит, по меньшей мере, третий вектор движения, шестой вектор движения, первый вектор движения и четвертый вектор движения, если эти вектора движения имеются.
18. Устройство согласно п. 11, причем
текущий блок разделен на субблоки;
получение смещенного положения предусматривает получение смещенного положения для каждого субблока посредством применения перемещения к положению в субблоке на основе первого вектора движения;
третий вектор движения получается для каждого субблока, если второй вектор движения имеется в смещенном положении, соответствующем субблоку.
19. Устройство для кодирования, причем устройство содержит электронную схему, адаптированную для:
идентификации региона, называемого сопряженным регионом, в первом эталонном изображении с текущим блоком для кодирования текущего изображения;
получения (300, 301) первого вектора движения, указывающего на эталонное изображение из положения в сопряженном регионе или положения, соседнего относительно сопряженного региона;
получения (303, 304) положения, называемого смещенным положением, во втором эталонном изображении посредством применения перемещения к положению в текущем блоке на основе первого вектора движения;
определения (305), имеется ли второй вектор движения в смещенном положении, и при его наличии получения (307, 308) третьего вектора движения на основе второго вектора движения, предназначенного для вставления в список кандидатов предиктора вектора движения, используемого для реконструкции вектора движения текущего блока.
20. Средства хранения информации, в которых хранятся команды программного кода, которые при выполнении их процессором обеспечивают реализацию способа по любому из пп. 1-9.
21. Средства хранения информации, в которых хранятся команды программного кода, которые при выполнении их процессором обеспечивают реализацию способа по п. 10.
RU2021127013A 2019-03-15 2020-03-12 Способ и устройство для кодирования и декодирования изображения RU2809558C2 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP19305318.8 2019-03-15

Publications (2)

Publication Number Publication Date
RU2021127013A RU2021127013A (ru) 2023-06-28
RU2809558C2 true RU2809558C2 (ru) 2023-12-12

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2516220C2 (ru) * 2008-12-31 2014-05-20 Интел Корпорейшн Технологии оценки движения
US20150085929A1 (en) * 2013-09-26 2015-03-26 Qualcomm Incorporated Sub-prediction unit (pu) based temporal motion vector prediction in hevc and sub-pu design in 3d-hevc
EP2903282A1 (en) * 2012-09-28 2015-08-05 Samsung Electronics Co., Ltd. Method for sao compensation for encoding inter-layer prediction error and apparatus therefor
WO2017087751A1 (en) * 2015-11-20 2017-05-26 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
WO2017131904A1 (en) * 2016-01-29 2017-08-03 Google Inc. Last frame motion vector partitioning

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2516220C2 (ru) * 2008-12-31 2014-05-20 Интел Корпорейшн Технологии оценки движения
EP2903282A1 (en) * 2012-09-28 2015-08-05 Samsung Electronics Co., Ltd. Method for sao compensation for encoding inter-layer prediction error and apparatus therefor
US20150085929A1 (en) * 2013-09-26 2015-03-26 Qualcomm Incorporated Sub-prediction unit (pu) based temporal motion vector prediction in hevc and sub-pu design in 3d-hevc
WO2017087751A1 (en) * 2015-11-20 2017-05-26 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
WO2017131904A1 (en) * 2016-01-29 2017-08-03 Google Inc. Last frame motion vector partitioning

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHEN J et al. Algorithm description for Versatile Video Coding and Test Model 3 (VTM 3), MACAO, 2018, MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11, JVET-L1002. JANG (LGE) H et al. Non-CE2 : Simplified subblock motion derivation for SbTMVP, MARRAKECH, January 2019, THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16, JVET-M0343. *

Similar Documents

Publication Publication Date Title
US20230396805A1 (en) Template matching prediction for versatile video coding
US20230254507A1 (en) Deep intra predictor generating side information
JP2024059909A (ja) 画像エンコーディングおよびデコーディングのための方法およびデバイス
KR20210069715A (ko) 비디오 인코딩 및 디코딩의 아핀 모드 시그널링
EP3706421A1 (en) Method and apparatus for video encoding and decoding based on affine motion compensation
EP3627835A1 (en) Wide angle intra prediction and position dependent intra prediction combination
KR20230145097A (ko) 공간 국소 조명 보상
US20230164360A1 (en) Method and device for image encoding and decoding
US12022079B2 (en) Wide angle intra prediction and position dependent intra prediction combination
US20240205386A1 (en) Intra block copy with template matching for video encoding and decoding
RU2809558C2 (ru) Способ и устройство для кодирования и декодирования изображения
EP4078953A1 (en) Subblock merge candidates in triangle merge mode
US20210352294A1 (en) Translational and affine candidates in a unified list
US12041241B2 (en) Method and device for image encoding and decoding with a shifted position
RU2820339C2 (ru) Hmvc для аффинного режима и режима предсказания вектора движения sbtmvp
RU2797393C2 (ru) Позиционно-зависимая комбинация intra-предсказания для широкоугольного intra-предсказания
US20220264147A1 (en) Hmvc for affine and sbtmvp motion vector prediction modes
CN118339830A (zh) 用于图片编码和解码的方法与设备
KR20240113906A (ko) 픽처 인코딩 및 디코딩 방법 및 디바이스
WO2024078896A1 (en) Template type selection for video coding and decoding
WO2024068298A1 (en) Mixing analog and digital neural networks implementations in video coding processes
WO2023213506A1 (en) Method for sharing neural network inference information in video compression
WO2024002675A1 (en) Simplification for cross-component intra prediction