Способ обработки видео, устройство обработки видео, кодер, декодер, носитель и компьютерная программа
Изобретение относится к области кодирования видео. Техническим результатом является повышение эффективности кодирования/декодирования. Предложен способ обработки видео, содержащий: инициализацию списка предсказания вектора движения (HMVP) списка для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и обработку текущей строки CTU на основании HMVP списка. 7 н. и 16 з.п. ф-лы, 12 ил.
Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки (раскрытия) в целом относятся к области кодирования видео и, в частности, к способу обработки видео, устройству обработки видео, кодеру, декодеру, носителю и компьютерной программе.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и диски Blu-ray, системы получения и редактирования видеоконтента и видеокамеры приложений безопасности.
С момента разработки блочного гибридного подхода к кодированию видео в стандарте H.261 в 1990 году были разработаны новые технологии и инструменты кодирования видео, которые легли в основу новых стандартов кодирования видео. Дополнительные стандарты кодирования видео содержат MPEG-1 видео, MPEG-2 видео, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), ITU-T H.265/высокоэффективное кодирование видео (HEVC), ITU-T H.266/универсальное кодирование видео (VVC) и расширения, например, масштабируемость и/или трехмерные (3D) расширения этих стандартов. Поскольку генерирование и использование видео становится все более и более повсеместным, трафик видео является самой большой нагрузкой на сети связи и хранилище данных, соответственно, одной из задач большинства стандартов кодирования видео было достижение снижения битовой скорости по сравнению с его предшественником без снижения качества изображения. Даже новейшее высокоэффективное кодирование видео (HEVC) может сжимать видео примерно в два раза больше, чем AVC, без ущерба для качества, и есть необходимость в дополнительном сжатии видео по сравнению с HEVC.
Раскрытие сущности изобретения
Варианты осуществления настоящего раскрытия предоставляют способ обработки видео и соответствующее устройство для повышения эффективности кодирования.
Решение вышеупомянутых и других технических задач представлено независимыми пунктами формулы изобретения. Дополнительные формы реализации описаны в зависимых пунктах формулы изобретения, описании и на чертежах.
Первый аспект настоящего раскрытия обеспечивает способ обработки видео, содержащий: инициализацию списка предсказания вектора движения (HMVP) на основании исторических данных для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и обработка текущей строки CTU на основании HMVP списка. Начальный CTU может также упоминаться как начальный CTU и является первым CTU из CTUs той же строки CTU, которая обрабатывается.
Очевидно, что HMVP список для текущей строки CTU в начале инициализируется для обработки текущей строки CTU, процесс текущей строки CTU не должен основываться на HMVP списке предшествующей строки CTU и, таким образом, может повысить эффективность кодирования и эффективность декодирования.
Со ссылкой на первый аспект, в первом возможном способе реализации первого аспекта количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, во второй возможной реализации первого аспекта текущая строка CTU принадлежит области изображения, которая состоит из множества строк CTU, текущая строка CTU является любой из множества строк CTU, например, первая (например, верхняя) строка CTU, вторая строка CTU, … и последняя (например, нижняя) строка CTU области изображения ...
Со ссылкой на первый аспект или любую вышеупомянутую реализацию первого аспекта, в третьей возможной реализации первого аспекта, способ дополнительно содержит: инициализацию HMVP списка для каждой из множества строк CTU, за исключением текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны. Другими словами, варианты осуществления могут дополнительно инициализировать HMVP списки для всех других строк CTU области изображения, то есть, могут инициализировать HMVP списки для всех строк CTU области изображения.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в четвертой возможной реализации первого аспекта обработка текущей строки CTU на основании HMVP списка содержит: обработку текущего CTU текущей строки CTU; обновление инициализированного HMVP списка на основании обработанного текущего CTU; и обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в пятой возможной реализации первого аспекта HMVP список обновляется в соответствии с обработанным CTU текущей строки CTU.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в шестой возможной реализации первого аспекта HMVP список для текущей строки CTU инициализируется следующим образом: опустошение HMVP списка для текущей строки CTU.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в седьмой возможной реализации первого аспекта обработка текущей строки CTU на основании HMVP списка содержит: обработку текущей строки CTU на основании HMVP списка из второго CTU текущей строки CTU, в котором второй CTU находится рядом с начальным CTU.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в восьмой возможной реализации первого аспекта множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).
Очевидно, что, поскольку HMVP список для текущей строки CTU инициализируется в начале для обработки текущей строки CTU, при объединении с режимом WPP можно обрабатывать строки CTU кадра изображения или области изображения параллельно и, таким образом, можно дополнительно повысить эффективность кодирования и декодирования.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в девятой возможной реализации первого аспекта начинается обработка текущей строки CTU (или обработка текущей строки CTU начинается), когда обрабатывается конкретный CTU предшествующей строки CTU.
Со ссылкой на первый аспект или любую из вышеупомянутых реализаций первого аспекта, в десятой возможной реализации первого аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и поверх или над текущей строкой CTU.
Со ссылкой на девятую реализацию первого аспекта или десятой реализации первого аспекта, в одиннадцатой возможной реализации первого аспекта, конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
Второй аспект настоящего раскрытия обеспечивает устройство для обработки видео, содержащее: блок инициализации, выполненный с возможностью инициализировать список предсказания вектора движения на основании исторических данных (HMVP) для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и блок обработки, выполненный с возможностью обрабатывать текущую строку CTU на основании HMVP списка.
Со ссылкой на второй аспект, в первой возможной реализации второго аспекта, количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, во второй возможной реализации второго аспекта текущая строка CTU принадлежит области изображения, которая состоит из множества строк CTU и текущая строка CTU является любой из множества строк CTU.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в третьей возможной реализации второго аспекта блок инициализации дополнительно выполнен с возможностью инициализировать HMVP список для каждой из множества строк CTU, за исключением текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в четвертой возможной реализации второго аспекта блок обработки дополнительно выполнен с возможностью: обрабатывать текущий CTU текущей строки CTU; обновить инициализированный HMVP список на основании обработанного текущего CTU; и обработать второй CTU текущей строки CTU на основании обновленного HMVP списка.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в пятой возможной реализации второго аспекта HMVP список обновляется в соответствии с обработанным CTU текущей строки CTU.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в шестой возможной реализации второго аспекта блок инициализации дополнительно выполнен с возможностью инициализировать HMVP список для текущей строки CTU следующим образом: очистить HMVP список для текущей строки CTU.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в седьмой возможной реализации второго аспекта блок обработки дополнительно выполнен с возможностью обрабатывать текущую строку CTU на основании HMVP списка следующим образом: обработать текущую строку CTU на основании HMVP списка из второго CTU текущей строки CTU, в котором второй CTU находится рядом с начальным CTU.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в восьмой возможной реализации второго аспекта множество строк CTU обрабатываются в режиме параллельной обработки волнового фронта (WPP).
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в девятой возможной реализации второго аспекта текущая строка CTU начинается обрабатываться (или начинается обработка текущей строки CTU), когда обрабатывается конкретный CTU предшествующей строки CTU.
Со ссылкой на второй аспект или любую из вышеупомянутых реализаций второго аспекта, в десятой возможной реализации второго аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и на верху текущей строки CTU.
Со ссылкой на девятую реализацию второго аспекта или десятую реализацию второго аспекта, в одиннадцатой возможной реализации второго аспекта конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
Третий аспект настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством декодирования, содержащий: составление/инициализацию HMVP списка для текущей строки CTU; и обработку CTU текущей строки CTU на основании составленного/инициализированного HMVP списка.
Со ссылкой на третий аспект, в первой возможной реализации третьего аспекта HMVP список для текущей строки CTU составляется/инициализируется следующим образом: очищение HMVP списка для текущей строки CTU; и/или установка значений по умолчанию для HMVP списка для текущей строки CTU; и/или составление/инициализация HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU.
Со ссылкой на первую возможную реализацию третьего аспекта, во второй возможной реализации третьего аспекта установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: заполнение MV HMVP списка как МV унифицированного способа предсказания, в котором МV унифицированного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в списке L0; и/или заполнение MV HMVP списка как МV двунаправленного способа предсказания, в котором МV двунаправленного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображениях содержат первое опорное изображение в L0 списке и первое опорное изображение в списке L1.
Со ссылкой на первую возможную реализацию третьего аспекта, в третьей возможной реализации третьего аспекта каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, в котором установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: инициализацию/составление HMVP списка для текущей строки CTU на основании временного HMVP списка.
Со ссылкой на первую возможную реализацию третьего аспекта, в четвертой возможной реализации третьего аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и наверху текущей строки CTU.
Со ссылкой на четвертую возможную реализацию третьего аспекта, в пятой возможной реализации третьего аспекта, CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU.
Со ссылкой на четвертую возможную реализацию третьего аспекта, в пятой возможной реализации третьего аспекта, CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
Четвертый аспект настоящего раскрытия обеспечивает способ кодирования, реализуемый устройством кодирования, содержащий: составление/инициализацию HMVP списка для текущей строки CTU; обработку CTU текущей строки CTU на основании составленного/инициализированного HMVP списка.
Со ссылкой на четвертый аспект, в первой возможной реализации четвертого аспекта HMVP список для текущей строки CTU составляется/инициализируется следующим образом: очищение HMVP списка для текущей строки CTU; и/или установка значений по умолчанию для HMVP списка для текущей строки CTU; и/или составление/инициализацию HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU.
Со ссылкой на первую реализацию четвертого аспекта, во второй возможной реализации четвертого аспекта установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: заполнение MV HMVP списка как MV унифицированного способа предсказания, в котором MV унифицированного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в списке L0; и/или заполнение MV HMVP списка как МV двунаправленного способа предсказания, в котором МV двунаправленного способа предсказания является либо нулевым вектором движения, либо ненулевым вектором движения, в котором опорные изображения содержат первое опорное изображение в L0 списке и первое опорное изображение в списке L1.
Со ссылкой на первую возможную реализацию четвертого аспекта, в третьей возможной реализации четвертого аспекта каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, в котором установка значений по умолчанию для HMVP списка для текущей строки CTU содержит: инициализацию/составление HMVP списка для текущей строки CTU на основании временного HMVP списка.
Со ссылкой на первую возможную реализацию четвертого аспекта, в четвертой возможной реализации четвертого аспекта предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и над или выше текущей строки CTU.
Со ссылкой на четвертую возможную реализацию четвертого аспекта, в пятой возможной реализации четвертого аспекта, CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU.
Со ссылкой на четвертую возможную реализацию четвертого аспекта, в шестой возможной реализации четвертого аспекта, CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
Пятый аспект настоящего раскрытия обеспечивает кодер, содержащий схему обработки для выполнения способа согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой одной реализации третьего аспекта, или согласно четвертому аспекту, или любой из реализации четвертого аспекта. Например, кодер может включать в себя схему инициализации, выполненную с возможностью инициализировать список предсказания вектора движения (HMVP) на основании исторических данных для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и схему обработки, выполненную с возможностью обрабатывать текущую строку CTU на основании HMVP списка.
Шестой аспект настоящего раскрытия обеспечивает декодер, содержащий схему обработки для выполнения способа согласно первому аспекту или любому из способов реализации первого аспекта, или согласно третьему аспекту или любому одному из вариантов реализации третьего аспекта, или согласно четвертому аспекту, или любой одной реализации четвертого аспекта. Например, декодер может включать в себя схему инициализации, выполненную с возможностью инициализировать список предсказания вектора движения на основании исторических данных (HMVP) для текущей строки блока дерева кодирования (CTU), когда текущий CTU является начальным CTU текущей строки CTU; и схему обработки, выполненную с возможностью обрабатывать текущую строку CTU на основании HMVP списка.
Седьмой аспект настоящего раскрытия обеспечивает компьютерный программный продукт, содержащий программный код для выполнения способа согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту, или любой из реализаций четвертого аспекта.
Восьмой аспект настоящего раскрытия обеспечивает машиночитаемый носитель данных, на котором хранятся компьютерные инструкции, которые при выполнении одним или более процессорами, побуждают один или более процессоров выполнять способ согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любой из реализаций четвертого аспекта.
Девятый аспект настоящего раскрытия обеспечивает декодер, содержащий: один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором, когда программы выполняется процессорами, декодер выполнен с возможностью выполнять способ согласно первому аспекту или любой реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любому из реализаций четвертого аспекта.
Десятый аспект настоящего раскрытия обеспечивает кодер, содержащий: один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором когда программы выполняется процессорами, кодер выполнен с возможностью выполнять способ согласно первому аспекту или любой из реализаций первого аспекта, или согласно третьему аспекту или любой из реализаций третьего аспекта, или согласно четвертому аспекту или любой из реализаций четвертого аспекта.
Краткое описание чертежей
Далее приведено подробное описание вариантов осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг.1A является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг.1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг.2 является блок-схемой, показывающей пример видеокодера, выполненный с возможностью реализации вариантов осуществления изобретения;
Фиг.3 является блок-схемой, показывающей примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг.4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
Фиг.5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;
Фиг.6 показывает позиции пространственных соседних блоков, используемых при слиянии и составлении списка AMVP кандидатов;
Фиг.7 является блок-схемой алгоритма HMVP способа декодирования;
Фиг.8 является блок-схемой, иллюстрирующей порядок обработки WPP;
Фиг.9 является блок-схемой алгоритма, иллюстрирующей пример процесса функционирования видеодекодера согласно варианту осуществления;
Фиг.10 является блок-схемой алгоритма, иллюстрирующей пример процесса функционирования согласно варианту осуществления;
Фиг.11 является блок-схемой, иллюстрирующей пример устройства для обработки видео.
В приведенном ниже описании идентичные ссылочные позиции обозначают идентичные или, по меньшей мере, функционально эквивалентные признаки, при отсутствии специального примечания относительно различия этих идентичных ссылочных позиций.
Осуществление изобретения
В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть настоящего раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего раскрытия могут использоваться. Понятно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует рассматривать в ограничительном смысле, и объем настоящего раскрытия определяется прилагаемой формулой изобретения.
Например, очевидно, что настоящее изобретение описывает способ, который выполняется соответствующий устройством или системой, выполненной с возможностью выполнять способ и наоборот. Например, если описан один или более этапов конкретного способа, соответствующее устройство может включать в себя один или более блоков, например, функциональных блоков для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов) даже, если такой один или более блоков явно не описаны и не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков) даже, если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, следует понимать, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает либо кодирование видео, либо декодирование видео. Кодирование видео выполняется на стороне источника, как правило, включающую в себя обработку (например, путем сжатия) исходных видеоизображений, чтобы уменьшить объем данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеопоследовательности. Комбинация части кодирования и части декодирования также называется CODEC (кодирование и декодирование).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть, восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования для уменьшения количества данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео, начиная с H.261, принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть, кодируется, на уровне блока (блока видео), например, используя пространственное (внутреннее изображение) предсказание и временное (внутреннее изображение) предсказание для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан), чтобы получить остаточный блок, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты), тогда как в декодере выполняется обратная обработка по сравнению с кодером, которая частично применяется к закодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или восстановления для обработки, то есть, кодирования, последующих блоков.
Используемый в настоящем описании термин «блок» может быть частью изображения или кадра. Для удобства описания варианты осуществления изобретения описаны здесь со ссылкой на высокоэффективное кодирование видео (HEVC) или опорное программное обеспечение универсального кодирования видео (VVC), разработанное объединенной группой сотрудничества по кодированию видео (JCT-VC) группы экспертов ITU-T по кодированию видео (VCEG) и группы экспертов ISO/IEC по движущимся изображениям (MPEG). Специалисту в данной области очевидно, что варианты осуществления изобретения не ограничиваются HEVC или VVC. Настоящее изобретение может относиться к CU, PU и TU. В HEVC CTU разделяется на CUs с использованием структуры дерева квадратов, обозначаемой как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне CU. Каждый CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU. В новейших разработках технологии сжатия видео для разделения блока кодирования используется кадр разделения дерева квадрантов и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, блок дерева кодирования (CTU) сначала разделяется структурой дерева квадрантов. Листовые узлы дерева квадрантов дополнительно разделяются структурой двоичного дерева. Листовые узлы двоичного дерева называются блоками кодирования (CUs), и эта сегментация используется для предсказания и обработки преобразования без какого-либо дополнительно разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно с блочной структурой QTBT было предложено также использовать множественное разделение, например, разделение на тройное дерево.
В следующих вариантах осуществления со ссылкой на фиг.1-3 приведено описание кодера 20, декодера 30 и системы 10 кодирования.
Фиг.1A является концептуальной или схематической блок-схемой, иллюстрирующей пример системы 10 кодирования, например, система 10 кодирования видео, которая может использовать способы настоящего раскрытия (настоящее раскрытие). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнять способы в соответствии с различными примерами, описанными в настоящем изобретении. Как показано на фиг.1A, система 10 кодирования содержит устройство 12 источник, выполненное с возможностью предоставлять кодированные данные 13, например, закодированное изображение 13, например, в устройство 14 назначения для декодирования закодированных данных 13.
Устройство 12 источник содержит кодер 20 и может дополнительно, т.е. возможно, содержать источник 16 изображения, блок 18 предварительной обработки, например, блок 18 предварительной обработки изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть устройством захвата изображения любого типа, например, для захвата реального изображения и/или любого вида изображения или комментария (для кодирования содержимого экрана некоторые тексты на экране также считается частью изображения или изображения, которое должно быть закодировано), устройство для генерирования, например, процессор компьютерной графики для создания компьютерного анимированного изображения, или любое устройство для получения и/или предоставления реального изображения, компьютерного анимированного изображения (например, содержимое экрана, изображение виртуальной реальности (VR)) и/или любой их комбинации (например, изображение дополненной реальности (AR)).
(Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть, изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или сокращенно luma) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты информации цветности или цвета. Соответственно, изображение в формате YCbCr содержит массив выборок яркости из значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета. Если изображение является монохромным, оно может содержать только массив выборок яркости.
В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.
При дискретизации 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости.
При дискретизации 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости.
При дискретизации 4:4:4, в зависимости от значения separate_colour_plane_flag, применяется следующее:
- если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости;
- в противном случае (separate_colour_plane_flag равен 1) три цветные плоскости обрабатываются отдельно как монохромные изображения с выборкой.
Источник 16 изображения (например, источник 16 видео) может представлять собой, например, камеру для захвата изображения, память, например, память изображения, содержащую или хранящую ранее захваченное или сгенерированное изображение, и/или интерфейс любого типа (внутренний или внешний) для получения или приема изображения. Камера может быть, например, локальной или интегрированной камерой, интегрированной в исходное устройство, память может быть локальной или интегрированной памятью, например, интегрировано в исходное устройство. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео, например, внешнего устройства захвата изображения, такого как камера, внешней памяти или внешнего устройства формирования изображения, например, внешнего компьютерного графического процессора, компьютера или сервера. Интерфейс может быть любым, например, проводным или беспроводным интерфейсом, оптическим интерфейсом в соответствии с любым проприетарным или стандартизованным протоколом интерфейса. Интерфейс для получения данных 17 изображения может быть тем же интерфейсом, что и интерфейс 22 связи, или его частью.
В отличие от блока 18 предварительной обработки и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения (например, видеоданные 16) также могут называться необработанным изображением или данными 17 исходного изображения.
Блок 18 предварительной обработки выполнен с возможностью принимать (необработанные) данные 17 изображения и выполнять предварительную обработку данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Выполненная предварительная обработка блоком 18 предварительной обработки может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.
Кодер 20 (например, видеокодер 20) выполнен с возможностью принимать предварительно обработанные данные 19 изображения и предоставлять данные 21 закодированного изображения (дополнительные подробности будут описаны ниже, например, на основании фиг.2 или фиг.4).
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью принимать данные 21 закодированного изображения и передавать их другому устройству, например, в устройство 14 назначения или любое другое устройство для хранения или прямого восстановления или для обработки данных 21 закодированного изображения соответственно перед сохранением кодированных данных 13 и/или передачей кодированных данных 13 на другое устройство, например, устройство 14 назначения или любое другое устройство для декодирования или сохранения.
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. возможно, содержать интерфейс связи или блок 28 связи, блок 32 постобработки и устройство 34 отображения.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 кодированного изображения или кодированные данные 13, например, непосредственно из устройства 12 источника или из любого другого источника, например, запоминающее устройство, например, устройство хранения данных закодированного изображения.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передавать или принимать кодированные данные 21 изображения или закодированные данные 13 через прямую линию связи между устройством 12 источника и устройством 14 назначения, например, прямое проводное или беспроводное соединение, или через любую сеть, например, проводную или беспроводную сеть или любую их комбинацию, или любую частную и общественную сеть, или любую их комбинацию.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковывать данные 21 закодированного изображения в соответствующий формат, например, пакеты для передачи по каналу связи или сети связи.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью распаковывать закодированные данные 13 для получения данных 21 закодированного изображения.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены с возможностью представлять однонаправленные интерфейсы связи, как показано стрелкой для данных 13 кодированного изображения на фиг.1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или двунаправленные интерфейсы связи, и может быть выполнен с возможностью, например, отправлять и получать сообщения, например, для установки соединения, подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, передаче данных закодированного изображения.
Декодер 30 выполнен с возможностью принимать данные 21 кодированного изображения и предоставлять данные 31 декодированного изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основании фиг. 3 или фиг. 5).
Постпроцессор 32 устройства 14 назначения выполнен с возможностью пост-обработки данных 31 декодированного изображения (также называемых данными восстановленного изображения), например, декодированное изображение 31, для получения данных 33 изображения после обработки, например, пост обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может включать, в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки данных 31 декодированного изображения для отображения, например, с помощью устройства 34 отображения.
Устройство 34 отображения устройства 14 назначения выполнено с возможностью принимать данные 33 изображения с постобработкой для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например встроенный или внешний дисплей или монитор. Дисплеи могут, например, состоят из жидкокристаллических дисплеев (LCD), дисплей на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифрового светового процессора (DLP) или любой другой тип дисплея.
Хотя фиг.1A изображает устройство 12 источника и устройство 14 назначения как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, либо с помощью отдельных аппаратных средств и/или программного обеспечения, либо любой их комбинации.
Как будет очевидно для специалиста в данной области техники из описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве 12 источника и/или устройстве 14 назначения, как показано на фиг.1A, может отличаться в зависимости от фактического устройства и приложения.
Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30), каждый может быть реализован в виде любой из множества подходящих схем, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, аппаратное обеспечение или любые их комбинации. Если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем постоянным машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения способов настоящего раскрытия. Любое из вышеперечисленного (включающее в себя оборудование, программное обеспечение, комбинацию оборудования и программного обеспечения и т.д.) может рассматриваться как один или более процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть использован в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве.
Устройство 12 источника может называться устройством кодирования видео или оборудованием кодирования видео. Устройство 14 назначения может называться устройством декодирования видео или оборудованием декодирования видео. Устройство 12 источника и устройство 14 назначения могут быть примерами устройств кодирования видео или оборудования кодирования видео.
Устройство 12 источника и устройство 14 назначения могут включать в себя любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства последовательной передачи видео (например, серверы служб контента или контент серверы доставки), широковещательное приемное устройство, широковещательное передающее устройство и т.п., и могут использовать операционную систему любого типа или не использовать ее.
В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, показанная на фиг.1A, является просто примером, и способы настоящего раскрытия могут применяться к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть выполнен с возможностью выполнения обратного процесса. Что касается элементов синтаксиса сигнализации, видеодекодер 30 может быть выполнен с возможностью принимать и анализировать такой элемент синтаксиса и декодировать, ассоциированные видеоданные, соответственно. В некоторых примерах видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса в кодированный битовый последовательность видео. В таких примерах видеодекодер 30 может анализировать такой элемент синтаксиса и соответственно декодировать ассоциированные видеоданные.
Фиг. 1B является иллюстративной схемой другого примера системы 40 кодирования видео, включающей в себя кодер 20 по фиг.2 и/или декодер 30 по фиг.3 согласно примерному варианту осуществления. Система 40 может реализовывать способы в соответствии с различными примерами, описанными в настоящем изобретении. В проиллюстрированной реализации система 40 кодирования видео может включать в себя устройство (устройства) 41 формирования изображения, видеокодер 100, видеодекодер 30 (и/или видеокодер, реализованный через логическую схему 47 блока (блоков) 46 обработки), антенну 42, один или более процессоров 43, одно или более хранилищ 44 памяти и/или устройство 45 отображения.
Как показано, устройство (устройства) 41 формирования изображения, антенна 42, блок (блоки) обработки 46, логическая схема 47, видеокодер 20, видеодекодер 30, процессор (процессоры) 43, хранилище (хранилища) 44 памяти и/или устройство 45 отображения может быть способно обмениваться данными друг с другом. Как обсуждалось, хотя это проиллюстрировано как с видеокодером 20, так и с видеодекодером 30, в различных примерах система 40 кодирования видео может включать в себя только видеокодер 20 или только видеодекодер 30.
Как показано, в некоторых примерах система 40 кодирования видео может включать в себя антенну 42. Антенна 42 может быть выполнена с возможностью, например, передавать или принимать закодированный битовый последовательность видеоданных. Кроме того, в некоторых примерах система 40 кодирования видео может включать в себя устройство 45 отображения. Устройство 45 отображения может быть выполнено с возможностью представлять видеоданные. Как показано, в некоторых примерах, логическая схема 47 может быть реализована через блок (блоки) 46 обработки. Блок (блоки) 46 обработки может включать в себя логику специализированной интегральной схемы (ASIC), графический процессор (процессоры), процессор (процессоры) общего назначения, или тому подобное. Система 40 кодирования видео также может включать в себя дополнительный процессор (процессоры) 43, который аналогичным образом может включать в себя логику специализированной интегральной схемы (ASIC), графический процессор (процессоры), процессор (процессоры) общего назначения и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратного обеспечения, специализированного оборудования для кодирования видео и т.п., и процессор (процессоры) 43 может реализовывать программное обеспечение общего назначения, операционные системы и т.п. Кроме того, хранилище (хранилища) 44 памяти может быть любым типом памяти, например энергозависимой памятью (например, статической оперативной памятью (SRAM), динамической памятью с произвольным доступом (DRAM) и т.д.) или энергонезависимой памятью (например, флэш-памятью и т. д.) и т. д. В неограничивающем примере хранилище (хранилища) 44 памяти может быть реализовано с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к хранилищу (хранилищам) 44 памяти (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок (блоки) 46 обработки могут включать в себя хранилища памяти (например, кэш и т.п.) для реализации буфера изображений и т.п.
В некоторых примерах видеокодер 100, реализованный с помощью логической схемы, может включать в себя буфер изображения (например, с помощью блока (блоков) 46 обработки или хранилища (хранилищ) 44 памяти) и графического процессора (например, через блок (блоки) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя видеокодер 100, реализованный посредством логической схемы 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг. 2 и/или любую другую систему или подсистему кодирования, описанную в настоящем документе. Логическая схема может быть выполнена с возможностью выполнять различные операции, как описано в настоящем изобретении.
Видеодекодер 30 может быть реализован аналогично тому, как реализован через логическую схему 47, для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в настоящем документе. В некоторых примерах видеодекодер 30 может быть реализован с помощью логической схемы, может включать в себя буфер изображения (например, посредством блока (блоков) 420 обработки или хранилища (хранилищ) 44 памяти)) и блока обработки графики (например, через блок (блоки) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя видеодекодер 30, реализованный через логическую схему 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг.3 и/или любую другую систему или подсистему декодера, описанную в настоящем изобретении.
В некоторых примерах антенна 42 системы 40 кодирования видео может быть выполнена с возможностью принимать закодированный битовый последовательность видеоданных. Как обсуждалось, кодированный последовательность битов может включать в себя данные, индикаторы, значения индексов, данные выбора режима и т.п., связанные с кодированием видеокадра, как обсуждалось в данном документе, например, данные, ассоциированные с разделом кодирования (например, коэффициенты преобразования или квантованные коэффициенты преобразования, возможные индикаторы (как обсуждалось) и/или данные, определяющие раздел кодирования). Система 40 кодирования видео может также включать в себя видеодекодер 30, подключенный к антенне 42 и выполненный с возможностью декодировать кодированный битовый последовательность. Устройство 45 отображения выполнено с возможностью представлять видеокадры.
КОДЕР И СПОСОБ КОДИРОВАНИЯ
Фиг.2 показывает схематическую/концептуальную блок-схему примерного видеокодера 20, который выполнен с возможностью реализации способов настоящего раскрытия. В примере на фиг.2, видеокодер 20 содержит блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой тракт сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания образуют обратный тракт прохождения сигнала кодера, в котором обратный тракт сигнала кодера соответствует тракту сигнала декодера (см. декодер 30 на фиг.3).
Кодер 20 выполнен с возможностью принимать, например, посредством ввода 202 изображение 201 или блок 203 изображения 201, например, изображение последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения также может называться блоком текущего изображения или блоком изображения, подлежащим кодированию, и изображение 201 является текущим изображением или изображением, которое должно быть кодировано (в частности, при кодировании видео для различия текущего изображения от других изображений, например, ранее закодированных и/или декодированные изображения одной и той же видеопоследовательности, т.е. видеопоследовательности, которая также включает в себя текущее изображение).
РАЗДЕЛЕНИЕ
Варианты осуществления кодера 20 могут содержать блок разделения (не показан на фиг. 2), выполненный с возможностью разделять изображение 201 на множество блоков, например блоки, подобные блоку 203, обычно на множество неперекрывающихся блоков. Блок разделения может быть выполнен с возможностью использовать один и тот же размер блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между изображениями или подмножествами, или группами изображений, и для разделения каждого изображения на соответствующие блоки.
В одном примере блок 260 обработки предсказания видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных выше.
Подобно изображению 201, блок 203 снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 201. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 201) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 201) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203.
Кодер 20, показанный на фиг.2, выполнен с возможностью кодирования изображения 201 блок за блоком, например, кодирование и предсказание выполняется для каждого блока 203.
ВЫЧИСЛЕНИЕ ОСТАТОЧНОЙ ВЕЛИЧИНЫ
Блок 204 вычисления остатка выполнен с возможностью вычисления остаточного блока 205 на основании блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.
ПРЕОБРАЗОВАНИЕ
Блок 206 обработки преобразования выполнен с возможностью применять преобразование, например, дискретное косинусное преобразование (DCT) или дискретное синусоидальное преобразование (DST) на выборочных значениях остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, таких как преобразования, указанные для HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, применяются дополнительные коэффициенты масштабирования как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования в декодере 30 (и соответствующий обратному преобразованию, например, блоком 212 обработки обратного преобразования в кодере 20) и соответствующими коэффициентами масштабирования для прямого преобразования, например, блоком 206 обработки преобразования может быть определен кодер 20, соответственно.
КВАНТОВАНИЕ
Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования также могут называться квантованными остаточными коэффициентами 209. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры этапов квантования соответствуют более точному квантованию, тогда как большие размеры этапов квантования соответствуют более грубому квантованию. Применимый размер этапа квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заданного набора применимых размеров этапа квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры этапов квантования) и большие параметры квантования могут соответствовать грубому квантованию (большие размеры этапов квантования) или наоборот. Квантование может включать в себя деление по размеру этапа квантования и соответствующее или обратное деквантование, например, посредством обратного квантования 210, может включать в себя умножение на размер этапа квантования. Варианты осуществления согласно некоторым стандартам, например, HEVC может быть выполнен с возможностью использовать параметр квантования для определения размера этапа квантования. Как правило, размер этапа квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении фиксированной точки уравнения для размера этапа квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, в котором потери возрастают с увеличением размеров этапов квантования.
Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения схемы, обратной схемы квантования, применяемой блоком 208 квантования на основании или с использованием того же размера этапа квантования, как блок 208 квантования. Деквантованные коэффициенты 211 также могут называться деквантованными остаточными коэффициентами 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потерь при квантовании, коэффициентам 207 преобразования.
Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 213 обратного преобразования в области выборки. Блок 213 обратного преобразования может также называться блоком 213 деквантования обратного преобразования или остаточным блоком 213 обратного преобразования.
Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавлять блок 213 обратного преобразования (т.е. восстановленный остаточный блок 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Возможно, блок 216 буфера (или коротко «буфер» 216), например, строковый буфер 216 выполнен с возможностью буферизации или хранения восстановленного блока 215 и соответствующих значений выборок, например, для внутреннего предсказания. В дополнительных вариантах осуществления кодер может быть выполнен с возможностью использовать нефильтрованные восстановленные блоки и/или соответствующие значения выборок, хранящиеся в блоке 216 буфера, для любого вида оценки и/или предсказания, например, для внутреннего предсказания.
Варианты осуществления кодера 20 могут быть выполнены с возможностью, например, использовать блок 216 буфера не только для хранения восстановленных блоков 215 для внутреннего предсказания 254, но также для блока 220 контурного фильтра (не показан на фиг.2) и/или, например, блок 216 буфера и блок 230 буфера декодированных изображений образуют один буфер. Дополнительные варианты осуществления могут быть выполнены с возможностью использовать отфильтрованные блоки 221 и/или блоки или выборки из буфера 230 декодированных изображений (оба не показаны на фиг.2) в качестве входных данных или для основы для внутреннего предсказания 254.
Блок 220 контурного фильтра (или коротко «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или более контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением (SAO) или другие фильтры, например, двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 220 контурного фильтра показан на фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221. Буфер 230 декодированных изображений может хранить восстановленные блоки кодирования после того, как блок 220 контурного фильтра выполняет операции фильтрации на восстановленных блоках кодирования.
Варианты осуществления кодера 20 (соответственно блок 220 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра (таких как информация об адаптивном смещении выборки), например, напрямую или энтропийно кодируемые блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра для декодирования.
Буфер 230 декодированных изображений (DPB) может быть памятью опорных изображений, в котором хранятся данные опорных изображений для использования при кодировании видеоданных с помощью видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, например, динамическая память с произвольным доступом (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В некотором примере буфер 230 декодированного изображения (DPB) выполнен с возможностью хранить фильтрованный блок 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, например, ранее восстановленного изображения и могут предоставлять полные ранее восстановленные, то есть, декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. В некотором примере, если восстановленный блок 215 восстанавливается, но без внутриконтурной фильтрации, буфер 230 декодированных изображений (DPB) выполнен с возможностью хранить восстановленный блок 215.
Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью принимать или получать блок 203 (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорных выборок одного и того же (текущего) изображения из буфера 216 и/или данные 231 опорного изображения из одного или множества ранее декодированных изображений из буфера 230 декодированного изображения, и обрабатывать эти данные для предсказания, то есть, чтобы обеспечить блок 265 предсказания, который может быть блоком 245 внешнего предсказания или блоком 255 внутреннего предсказания.
Блок 262 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, режим внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 262 выбора режима могут быть выполнены с возможностью выбирать режим предсказания (например, из тех, которые поддерживаются блоком 260 обработки предсказания), который обеспечивает наилучшее соотношение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальный объем служебной сигнализации (минимальные служебные данные сигнализации означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 262 выбора режима может быть выполнен с возможностью определять режим предсказания на основании оптимизации искажения скорости (RDO), то есть, выбирать режим предсказания, который обеспечивает оптимизацию искажения с минимальной скоростью, или который ассоциирован с искажением скорости, по меньшей мере, для удовлетворения критерия выбора режима предсказания.
Далее будет приведено подробное описание процесса обработки предсказания (например, блок 260 обработки предсказания и выбор режима (например, блоком 262 выбора режима)), выполняемый примерным кодером 20.
Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший или оптимальный режим предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.265, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или средний) и планарный режим, или направленные режимы, например, как определено в H.266 на стадии разработки.
Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных изображений (т.е. предшествующих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например, будь то все опорное изображение или только его часть, например, область окна поиска вокруг области текущего блока, опорного изображения используется для поиска наилучшего соответствия опорного блока и/или, например, применяется ли интерполяция пикселей, например половина/полу-пиксельная и/или четверть-пиксельная интерполяция или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 260 обработки предсказания может быть дополнительно выполнен с возможностью разделять блок 203 на более мелкие части или подблоки, например, итеративно с использованием четырехъядерного разделения (QT), двоичного разделения (BT) или тройного разделения дерева (TT) или любой их комбинации, и для выполнения, например, предсказания для каждого из разделов или подблоков блока, в котором выбор режима включает в себя выбор древовидной структуры разделенного блока 203 и режимов предсказания, применяемых к каждому из разделов или подблоков блока.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) (не показан на фиг.2) и блок компенсации движения (MC) (не показан на фиг.2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (блок 203 текущего изображения текущего изображения 201) и декодированного изображения 231 или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например. видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и обеспечивать опорное изображение (или индекс опорного кадра, ...) и/или смещение (пространственное смещение) между позицией (X, Y координаты) опорного блока и позицией текущего блока в качестве взаимосвязанных параметров предсказания в блок оценки движения (не показан на фиг.2). Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения (не показанным на фиг.2), может включать в себя выборку или генерацию блока предсказания на основании вектора движения/блока, определенного посредством оценки движения, возможно, выполнять интерполяцию до суб-пиксельной точности. Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, таким образом, потенциально увеличивая количество кандидатов блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и сегментом видео, для использования видеодекодером 30 при декодировании блоков изображения сегмента видео.
Блок 254 внутреннего предсказания выполнен с возможностью получать, например, принимать, блок 203 изображения (текущий блок изображения) и один или множество ранее восстановленных блоков, например, восстановленные соседние блоки одного и того же изображения для внутренней оценки. Кодер 20 может, например, быть выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.
Варианты осуществления кодера 20 могут быть выполнены с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, минимальный остаток (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, наиболее похожий на текущий блок 203 изображения) или минимальное отношение искажение-скорость.
Блок 254 внутреннего предсказания дополнительно выполнен с возможностью определять на основании параметра внутреннего предсказания, например, выбранный режим внутреннего предсказания, блок 255 внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания также выполнен с возможностью предоставлять параметр внутреннего предсказания, то есть, информацию, указывающую выбранный режим внутреннего предсказания для блока в блок 270 энтропийного кодирования. В одном примере блок 254 внутреннего предсказания может быть выполнен с возможностью выполнять любую комбинацию способов внутреннего предсказания, описанных ниже.
Блок 270 энтропийного кодирования выполнен с возможностью применять алгоритм или схему энтропийного кодирования (например, схема кодирования с переменной длиной (VLC), контекстно-адаптивная схема VLC (CALVC), схема арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанное на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийное кодирование с вероятностным интервалом разделения (PIPE) или другой способ или способ энтропийного кодирования) к квантованным остаточным коэффициентам 209, параметры внешнего предсказания, параметр внутреннего предсказания и/или параметры контурного фильтра, по отдельности или вместе (или не полностью) для получения данных 21 закодированного изображения, которые могут быть выведены выходом 272, например, в форме закодированного битового потока 21. Закодированный битовый поток 21 может быть передан в видеодекодер 30 или заархивирован для последующей передачи или поиска видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования других элементов синтаксиса для кодируемого текущего сегмента видео.
Другие структурные варианты видеокодера 20 могут использоваться для кодирования потока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в один блок.
Фиг.3 показывает примерный видеодекодер 30, который выполнен с возможностью реализации способов настоящего раскрытия. Видеодекодер 30, выполненный с возможностью принимать кодированные данные 21 изображения (например, кодированный битовый последовательность), например, кодируется кодером 100, чтобы получить декодированное изображение 131. Во время процесса декодирования видеодекодер 30 принимает видеоданные, например, закодированный битовый последовательность видео, который представляет блоки изображения кодированного сегмента видео и ассоциированные элементы синтаксиса, из видеокодера 100.
В примере на фиг.3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированных изображений и блок 360 обработки предсказания. Блок 360 обработки предсказания может включать в себя блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в целом, обратный к этапу кодирования, описанный применительно к видеокодеру 100 на фиг.2.
Блок 304 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.3), например, (декодированный) любой или все параметры внешнего предсказания, параметр внутреннего предсказания, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылать параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блок 360 обработки предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне блока видео.
Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 112 обработки обратного преобразования, блок 314 восстановления может быть идентичным по функциям блоку 114 восстановления, буфер 316 может быть идентичен по функциям буферу 116, контурный фильтр 320 может быть идентичен по функции контурному фильтру 120 и буфер 330 декодированного изображения может быть идентичен по функции буферу 130 декодированного изображения.
Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания, в котором блок 344 внешнего предсказания может быть аналогичен по функционалу блоку 144 внешнего предсказания, блок 354 внутреннего предсказания может быть аналогичен по функционалу блоку 154 внутреннего предсказания. Блок 360 обработки предсказания обычно выполнен с возможностью выполнять предсказание блока и/или получения блока 365 предсказания из закодированных данных 21, и принимать или получать (явно или неявно) ассоциированные с предсказанием параметры и/или информацию о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
Когда сегмент видео кодируется как внутренне кодированный (I) сегмент, блок 354 внутреннего предсказания блока 360 обработки предсказания выполнен с возможностью генерировать блок 365 предсказания для блока изображения текущего сегмента видео на основании сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется как внешне кодированный (то есть, B или P) сегмент, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 обработки предсказания выполнен с возможностью генерировать блоки 365 предсказания для блока видео текущего сегмента видео на основании векторов движения и других элементов синтаксиса, принятых из блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть сгенерированы из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может формировать списки опорных кадров, список 0 и список 1, используя способы составления по умолчанию на основании опорных изображений, хранящихся в DPB 330.
Блок 360 обработки предсказания выполнен с возможностью определять информацию предсказания для блока видео текущего сегмента видео путем анализа векторов движения и других элементов синтаксиса и использовать информацию предсказания для генерирования блоков предсказания для текущего декодируемого блока видео. Например, блок 360 обработки предсказания использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования блоков видео сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информацию составления одного или более списков опорных изображений для сегмента, векторы движения для каждого внешне кодированного блока видео сегмента, статус внешнего предсказания для каждого внешне кодированного блока видео сегмента и другую информацию для декодирования блоков видео в текущем сегмента видео.
Блок 310 обратного квантования выполнен с возможностью выполнять обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных блоком 304 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 100 для каждого блока видео в сегменте видео для определения степени квантования и, аналогично, степени обратного квантования, которое должно применяться.
Блок 312 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для генерирования остаточных блоков в области пикселей.
Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (т.е. восстановленный остаточный блок 313) к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например для сглаживания переходов пикселей или иного улучшения качества видео. В одном примере блок 320 контурного фильтра может быть выполнен с возможностью выполнять любую комбинацию способов фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или более контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением (SAO) или другие фильтры, например, двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 320 контурного фильтра показан на фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Декодированные блоки 321 видео в данном кадре или изображении затем сохраняются в буфере 330 декодированных изображений, в котором хранятся опорные изображения, используемые для последующей компенсации движения.
Декодер 30 выполнен с возможностью выводить декодированное изображение 311, например, через выход 312 для представления или просмотра пользователю.
Другие варианты видеодекодера 30 могут использоваться для декодирования сжатого битового потока. Например, декодер 30 может формировать выходной видеопоследовательность без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Фиг.4 является схемой устройства 400 кодирования видео согласно варианту осуществления настоящего раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг.1A или кодер, такой как видеокодер 20 по фиг.1А. В варианте осуществления устройство 400 кодирования видео может быть одним или более компонентами видеодекодера 30 по фиг.1A или видеокодера 20 по фиг. 1A, как описано выше.
Устройство 400 кодирования видео содержит входные порты 410 и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и выходные порты 450 для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для вывода или ввода оптических или электрических сигналов.
Процессор 430 реализован аппаратным и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 соединен с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные операции кодирования. Таким образом, использование модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве запоминающего устройства для переполнения данных, для хранения программ, когда такие программы выбраны для выполнения, а также для хранения инструкций и данных, которые читаются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM).
Фиг.5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства 310 источника и устройство 320 назначения по фиг.1 согласно примерному варианту осуществления. Устройство 500 может реализовывать описанные выше технологии настоящего раскрытия. Устройство 500 может быть в форме вычислительной системы, включающей в себя несколько вычислительных устройств, или в форме одного вычислительного устройства, например, мобильного телефона, планшетного компьютера, портативного компьютера, портативного компьютера, настольного компьютера и тому подобное.
Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например, с процессором 502, с использованием более чем одного процессора могут быть достигнуты преимущества в скорости и эффективности.
Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя, по меньшей мере, одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы. Устройство 500 также может включать в себя дополнительную память в виде вторичного хранилища 514, которым может быть, например, карта памяти, используемая с мобильным вычислительным устройством. Поскольку сеансы видеосвязи могут содержать значительный объем информации, они могут быть сохранены полностью или частично во вторичном хранилище 514 и загружены в память 504 по мере необходимости для обработки.
Устройство 500 также может включать в себя одно или более устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который сочетает в себе дисплей с сенсорным элементом, способным распознавать прикосновения. Дисплей 518 может быть подключен к процессору 502 через шину 512. Другие устройства вывода, которые позволяют пользователю программировать или иным образом использовать устройство 500, могут быть предоставлены в дополнение к дисплею 518 или в качестве альтернативы ему. Когда устройство вывода работает или включает в себя дисплей, дисплей может быть реализован различными способами, в том числе с помощью жидкокристаллического дисплея (LCD), дисплея с электронно-лучевой трубкой (CRT), плазменного дисплея или дисплея на светоизлучающих диодах (LED), например, органический светодиодный дисплей (OLED).
Устройство 500 также может включать в себя устройство 520 формирования изображений, например, камеру, или любое другое устройство 520 формирования изображений, существующее в настоящее время или разработанное в будущем, которое может воспринимать изображение, такое как изображение пользователя устройства 500. Устройство 520 формирования изображений может быть расположено так, чтобы оно было направлено на пользователя, работающего с устройством 500. В примере положение и оптическая ось устройства 520 формирования изображений могут быть сконфигурированы таким образом, что поле зрения включает в себя область, которая непосредственно примыкает к дисплею 518 и из которой виден дисплей 518.
Устройство 500 может также включать в себя устройство 522 обнаружения звука, например, микрофон, или любое другое устройство обнаружения звука, существующее в настоящее время или разработанное в дальнейшем, которое может воспринимать звуки вблизи устройства 500. Устройство 522 обнаружения звука может быть расположено таким образом, чтобы оно было направлено на пользователя, управляющего устройством 500, и может быть выполнено с возможностью принимать звуки, например, речь или другие звуки, издаваемые пользователем, когда пользователь управляет устройством 500.
Хотя фиг.5 изображает процессор 502 и память 504 устройства 500 как интегрированные в единый блок, можно использовать другие конфигурации. Операции процессора 502 могут быть распределены между несколькими машинами (каждая машина имеет один или более процессоров), которые могут быть соединены напрямую или через локальную область или другую сеть. Память 504 может быть распределена между несколькими машинами, такими как сетевая память или память на нескольких машинах, выполняющих операции устройства 500. Хотя здесь изображена одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или более блоков, таких как несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.
В VVC векторы движения внешне кодированных блоков могут передаваться двумя способами: в усовершенствованном режиме предсказания вектора движения (AMVP) или в режиме слияния. В режиме AVMP сигнализируют разницу между реальным вектором движения и вектором движения предсказания (MVP), опорный индекс и индекс MVP, относящийся к списку кандидатов AVMP, где опорный индекс указывает опорное изображение, где опорный блок скопирован для компенсации движения. Для режима слияния указывается индекс слияния, относящийся к списку кандидатов на слияние, и используется вся информация движения, ассоциированная с кандидатом на слияние.
Как список кандидатов AMVP, так и список кандидатов на слияние получены из временных или пространственных соседних кодированных блоков. В частности, список кандидатов на слияние составлен путем проверки следующих четырех типов MVP кандидатов слияния в следующем порядке:
1. Пространственные кандидаты слияния, которые могут быть определены из пяти пространственных соседних блоков, как показано на фиг.6, то есть, блоки A0 и A1, расположенные в левом нижнем углу, блоки B0 и B1, расположенные в правом верхнем углу, и блок B2, расположенный в левом верхнем углу.
2. Временной MVP (TMVP) кандидат слияния.
3. Комбинированные кандидаты слияния с двунаправленным предсказанием.
4. Кандидаты слияния с нулевым вектором движения.
Как только количество доступных кандидатов слияния достигает сигнализируемые максимально разрешенные кандидаты слияния (например, 5 в обычных условиях тестирования), процесс составления списка кандидатов слияния заканчивается. Следует отметить, что максимально допустимые кандидаты слияния могут быть разными в разных условиях.
Аналогичным образом, для списка кандидатов AMVP проверяются три типа кандидатов MVP в следующем порядке:
1. До двух пространственных кандидатов MVP, где один из двух определяется из блоков B0, B1 и B2, как показано на фиг.6, и другой из двух определяется из блоков A0 и A1, как показано на фиг.6.
2. Временные MVP (TMVP) кандидаты.
3. Нулевые MVP кандидаты.
В JVET-K0104 представлен способ предсказания вектора движения на основании исторических данных (HMVP), который является входным документом для Объединенной группы экспертов по видео (JVET) ITU-T SG 16 WP 3 ISO/IEC JTC 1/SC 29/WG 11 (доступно на http://phenix.it-sudparis.eu/jvet/), где кандидат HMVP определяется как информация движения ранее закодированного блока. В процессе кодирования/декодирования поддерживается таблица с несколькими кандидатами HMVP. При обнаружении нового сегмента таблица очищается. Всякий раз, при наличии блока внешнего кодирования, добавляется ассоциированная информация движения к последней записи таблицы в качестве нового кандидата HMVP. Общий последовательность кодирования изображен на фиг.7, который включает в себя:
Этап 701-загрузить таблицу с кандидатами HMVP;
Этап 702-декодировать блок с кандидатами HMVP в загруженной таблице;
Этап 703-обновить таблицу с помощью декодированной информации движения при декодировании блока.
Этапы 701-703 могут выполняться циклически.
Кандидаты HMVP могут использоваться в процессе составления списка кандидатов слияния. Все кандидаты HMVP от последней записи до первой записи в таблице вставляются после кандидата TMVP. К кандидатам HMVP может применяться обрезка. Когда общее количество доступных кандидатов слияния достигает сигнализированного максимально разрешенного количества кандидатов слияния, процесс составления списка кандидатов слияния завершается.
Операция сокращения предназначена для идентификации идентичных кандидатов предиктора движения в списке и удаления одного из идентичных кандидатов из списка.
Аналогичным образом, кандидаты HMVP также могут использоваться в процессе составления списка кандидатов AMVP. Векторы движения последних K кандидатов HMVP в таблице вставляются после кандидата TMVP. В некоторых реализациях только HMVP кандидаты с одним и тем же опорным изображении в качестве AMVP целевого опорного изображения используются для составления списка кандидатов AMVP. К кандидатам HMVP может применяться обрезка.
Для повышения эффективности обработки введена обработка, называемая параллельной обработкой волнового фронта (WPP), где режим WPP позволяет обрабатывать строки CTUs параллельно. В режиме WPP каждая строка CTU обрабатывается относительно своей предшествующей (непосредственно смежной) строки CTU с использованием задержки двух последовательных CTUs. Например, как показано на фиг.8, кадр изображения или область изображения состоит из множества строк CTU, каждая последовательность (строка) включает в себя 11 CTUs, т.е. последовательность 1 включает в себя CTU0 - CTU10, последовательность 2 включает в себя CTU11 - CTU 21, последовательность 3 включает в себя CTU22 - CTU32, последовательность 4 включает в себя CTU33 TO 43… Следовательно, в режиме WPP при завершении процесса кодирования/декодирования CTU1 в последовательности 1, процесс кодирования/ декодирования CTU11 в последовательности 2 может начаться аналогично, когда процесс кодирования/декодирования CTU12 в последовательности 2 завершен, процесс кодирования/декодирования CTU22 в последовательности 3 может начаться, когда процесс кодирования/декодирования CTU23 в последовательности 3 завершен, может начаться процесс кодирования/декодирования CTU33 в последовательности 4, когда процесс кодирования/декодирования CTU34 в последовательности 4 завершен, может начаться процесс кодирования/декодирования CTU44 в последовательности 5.
Однако при объединении WPP с HMVP, как указано выше, HMVP список поддерживается и обновляется после обработки каждого блока кодирования, таким образом, поддерживается один HMVP список, который продолжает обновляться до последнего CTU строки CTU, поэтому параллельная обработка волнового фронта не может быть выполнена, так как N-й последовательность должен дождаться завершения обработки последнего CTU в указанной выше строке CTU.
Фиг. 9 является блок-схемой алгоритма, иллюстрирующей примерную работу видеодекодера, такого как видеодекодер 30 по фиг.3 в соответствии с вариантом осуществления настоящего раскрытия. Один или более структурных элементов видеодекодера 30, включающий в себя блок 344 внешнего предсказания, могут быть выполнены с возможностью выполнять способы, показанные на фиг.9. В примере на фиг.9, видеодекодер 30 может выполнять следующие этапы:
901. В начале обработки строки CTU выполняется составление/инициализация HMVP списка для строки CTU.
Когда обрабатываемый CTU является первым CTU (начальным CTU) строки CTU, составляется или инициализируется HMVP список для строки CTU, таким образом, первый CTU строки CTU может обрабатываться на основании HMVP списка для строки CTU.
HMVP список для строки CTU может быть составлен или инициализирован блоком 344 внешнего предсказания по фиг.3, когда способ является способом кодирования. Альтернативно, HMVP список для строки CTU может быть составлен или инициализирован блоком 244 внешнего предсказания по фиг.2, когда способ является способом декодирования.
В реализации для кадра изображения каждая строка CTU может поддерживаться с другим списком HMVP. В другой реализации для области изображения каждая строка CTU может поддерживаться с другим списком HMVP, где область изображения состоит из множества строк CTU, где изображение может быть сегментом, плиткой или блоком VVC.
Если блок представляет собой прямоугольную область строк CTU в пределах конкретной плитки на изображении, плитка может быть разделена на несколько блоков, каждый из которых состоит из одной или более строк CTU внутри плитки. Плитка, не разделенная на несколько блоков, также называется блоком. Однако блок, который является истинным подмножеством плитки, не называется плиткой.
Следует отметить, что поддержание другого HMVP списка для каждой строки CTU означает только то, что конкретный HMVP список может поддерживаться для строки CTU, но кандидаты в разных списках HMVP могут быть одинаковыми, например, все кандидаты в одном HMVP списке совпадают с кандидатами в другом HMVP списке, следует отметить, что кандидаты в одном HMVP списке могут не иметь избыточности; или кандидаты в разных списках HMVP могут перекрываться, например, некоторые из кандидатов в одном HMVP списке совпадают с некоторыми кандидатами в другом HMVP списке, и некоторые из кандидатов в одном HMVP списке не идентичны в другом HMVP списке; или кандидаты в разных списках HMVP могут быть совершенно разными, например, ни один из кандидатов в одном HMVP списке не имеет идентичного в другом HMVP списке. Следует отметить, что, когда все CTUs в строке CTU были обработаны, поддерживаемый HMVP список для строки CTU может быть освобожден, что может снизить требования к хранилищу.
Настоящее изобретение обеспечивает следующие способы построения/инициализации HMVP списка:
Способ 1: в начале обработки строки CTU соответствующий HMVP список очищается или устанавливается в значения по умолчанию. Значения по умолчанию является заданным кандидатом, известным как кодеру, так и декодеру.
Например, соответствующий HMVP список заполняется MVs по умолчанию, например:
а) MVs согласно унифицированному предсказанию, где MV может быть нулевым вектором движения и опорные изображения могут включать в себя первое опорное изображение в списке L0; и/или
b) MVs согласно двунаправленного предсказания, где MV может быть нулевым вектором движения и опорные изображения могут включать в себя первое опорное изображение в списке L0 и первое опорное изображение в списке L1; и/или
c) MVs ранее обработанного изображения в соответствии с порядком обработки изображений. Более конкретно, MVs, которые принадлежат ранее обработанному изображению и которые находятся в пространственной близости от текущего блока, когда позиция текущего блока накладывается на предшествующее изображение; и/или
d) MVs временного HMVP списка, где каждое совместно размещенное изображение может хранить временной HMVP список для каждой строки CTU или для всего изображения, таким образом, временной HMVP список может использоваться для построения/инициализации HMVP списка для текущей строки CTU.
Способ 2: в начале обработки текущей строки CTU, соответствующий HMVP список составляется/инициализируется на основании HMVP списка второго CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной со текущей строкой CTU и в верхней части текущей строки CTU.
Как показано на фиг.8 в качестве примера, где, когда текущая строка CTU является строкой CTU последовательности 2, предшествующая строка CTU является строкой CTU последовательности 1, второй CTU предшествующей строки является CTU1; когда текущая строка CTU является строкой CTU последовательности 3, предшествующая строка CTU является строкой CTU последовательности 2, второй CTU предшествующей строки является CTU12; когда текущая строка CTU является строкой CTU последовательности 4, предшествующая строка CTU является строкой CTU последовательности 3, второй CTU предшествующей строки является CTU23; когда текущая строка CTU является строкой CTU последовательности 5, предшествующая строка CTU является строкой CTU последовательности 4, и второй CTU предшествующей строки является CTU34; когда текущая строка CTU является строкой CTU последовательности 6, предшествующая строка CTU является строкой CTU последовательности 5 и второй CTU предшествующей строки является CTU45.
Способ 3: в начале обработки текущей строки CTU, соответствующий HMVP список составляется/инициализируется на основании HMVP списка первого CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и в верхней части текущей строки CTU.
Как показано на фиг.8 в качестве примера, где, когда текущая строка CTU является строкой CTU последовательности 2, предшествующая строка CTU является строкой CTU последовательности 1 и первый CTU предшествующей строки является CTU0; когда текущая строка CTU является строкой CTU последовательности 3, предшествующая строка CTU является строкой CTU последовательности 2, и первая строка CTU предшествующей строки является CTU11; когда текущая строка CTU является строкой CTU последовательности 4, предшествующая строка CTU является строкой CTU последовательности 3, и первый CTU строки предшествующей строки является CTU22; когда текущая строка CTU является строкой CTU последовательности 5, предшествующая строка CTU является строкой CTU последовательности 4 и первый CTU строки предшествующей строки является CTU33; когда текущая строка CTU является строкой CTU последовательности 6, предшествующая строка CTU является строкой CTU последовательности 5 и первый CTU строки предшествующей строки является CTU44.
Согласно способам с 1 по 3, обработка текущей строки CTU не требует ожидания завершения обработки предшествующей строки CTU текущей строки CTU, что позволяет повысить эффективность обработки кадра текущего изображения.
902. Обработка CTU в строке CTU на основании составленного/инициализированного HMVP списка.
Обработка CTU может быть обработкой внешнего предсказания, которая выполняется во время процесса декодирования, то есть, обработка CTU может быть реализована блоком 344 внешнего предсказания по фиг.3. В качестве альтернативы обработка CTU может быть обработкой внешнего предсказания, которая выполняется во время процесса кодирования, то есть, обработка CTU может быть реализована блоком 244 внешнего предсказания по фиг. 2.
Следует отметить, что вышеупомянутые способы построения/инициализации HMVP списка также могут использоваться для нормальной обработки HMVP без волновых фронтов, например, обработки HMVP без WPP. В результате обработка HMVP идентична независимо от применения WPP, что снижает необходимость в дополнительной логической реализации.
Следует отметить, что обработка по фиг.9 также может быть процессом кодирования, реализованным кодером, таким как видеокодер 20 по фиг. 2 в соответствии с вариантом осуществления настоящего раскрытия.
Кроме того, следует отметить, что вышеупомянутые способы, касающиеся комбинации волновых фронтов и предсказания на основании HMVP, также могут использоваться для внутреннего предсказания. То есть, можно использовать ранее используемые внутренние режимы и ранее использованная таблица для каждой строки CTU инициализируется значениями по умолчанию.
Например, инициализация HMVP списка для каждой строки CTU при внутреннем предсказании может быть выполнена с внутренними режимами по умолчанию, такими как планарный, DC, вертикальный, горизонтальный, режим 2, VDIA и DIA режимы.
Фиг.10 является блок-схемой алгоритма, иллюстрирующей примерную работу видеодекодера или видеокодера, такого как видеодекодер 30 по фиг. 3 в соответствии с вариантом осуществления настоящего раскрытия и видеокодера 20 по фиг.2 в соответствии с вариантом осуществления настоящего раскрытия. Один или более структурных элементов видеодекодера 30/кодера 20, включающие в себя блок 344 внешнего предсказания/блок 244 внешнего предсказания, могут быть выполнены с возможностью выполнять способы, показанные на фиг.10. В примере на фиг.10, видеодекодер 30/видеокодер 20 может выполнять следующие этапы:
Этап 1010-инициализация HMVP списка для текущей строки CTU, когда текущий CTU является начальным CTU текущей строки CTU.
Следует отметить, что текущая строка CTU может быть любой строкой CTU кадра изображения, состоящей из множества строк CTU, или областью изображения (может быть частью кадра изображения), состоящей из множества строк CTU. И текущая строка CTU может быть любой из множества строк CTU.
Является ли текущий CTU начальным CTU (или первым CTU) текущей строки CTU, может быть определено на основании индекса текущего CTU. Например, как показано на фиг.8, каждый CTU имеет уникальный индекс, таким образом, можно определить, является ли текущий CTU первым CTU текущей строки CTU на основании индекса текущего CTU. Например, CTUs с индексом 0, 11, 22, 33, 44 или 55… являются первым CTU строк CTU, соответственно. В качестве альтернативы возьмем фиг.8 в качестве примера, каждая строка CTU включает в себя 11 CTUs, то есть, ширина каждой строки CTU равна 11, таким образом, можно использовать ширину строки CTU, чтобы разделить индекс CTU для определения, равен ли остаток 0 или нет, если остаток равен 0, соответствующий CTU является первым CTU строки CTU; в противном случае, если остаток не равен 0, соответствующий CTU не является первым CTU строки CTU. То есть, если индекс CTU% ширины строки CTU = 0, CTU является первым CTU строки CTU; в противном случае, если индекс CTU% ширины строки CTU ≠ 0, CTU не является первым CTU строки CTU. Следует отметить, что, когда обработка строки CTU выполняется справа налево, то аналогичным образом может быть определено, является ли CTU начальным CTU строки CTU.
После инициализации HMVP списка количество кандидатов вектора движения в инициализированном HMVP списке равно нулю.
Инициализация может быть выполнена как очистка HMVP списка для текущей строки CTU, то есть, сделать HMVP список для текущей строки CTU пустым, другими словами, количество кандидатов в HMVP списке для текущей строки CTU равно нулю.
В другом варианте реализации, способ может дополнительно включать в себя следующий этап: инициализация HMVP списка для каждой из множества строк CTU, кроме текущей строки CTU, в котором HMVP списки для множества строк CTU идентичны или различны.
Инициализация может быть выполнена как установка значений по умолчанию для HMVP списка для текущей строки CTU или инициализация HMVP списка для текущей строки CTU на основании HMVP списка для CTU предшествующей строки CTU, как описано выше.
Этап 1020, обработать текущую строку CTU на основании HMVP списка.
Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания, чтобы получить восстановленный блок, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.
Как показано на фиг.8 текущий кадр изображения содержит множество строк CTU, для повышения эффективности кодирования/декодирования множество строк CTU может обрабатываться в режиме параллельной обработки волнового фронта (WPP). То есть, текущая строка CTU начинает обрабатываться (или начинается обработка текущей строки CTU), когда обрабатывается конкретный CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и наверху текущей строки CTU, где конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU. Возьмем фиг.8 для примера, когда текущая строка CTU является последовательностью 3, предшествующая строка CTU является последовательностью 2, конкретный CTU предшествующей строки CTU может быть CTU 12, то есть, когда CTU 12 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 3, то есть, декодер/кодер начинает обрабатывать CTU 22. Возьмем фиг.8 для другого примера, когда текущая строка CTU является последовательности 4, предшествующая строка CTU является последовательностью 3, конкретный CTU предшествующей строки CTU может быть CTU 23, то есть, когда CTU 23 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 4, то есть, декодер/кодер начинает обрабатывать CTU 33.
В одной реализации обработка текущей строки CTU на основании HMVP списка может включать в себя: обработку текущего CTU текущей строки CTU; обновление инициализированного HMVP списка на основании обработанного текущего CTU; и обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.
Фиг.11 является блок-схемой, показывающей пример устройства 1100 для обработки видео, выполненное с возможностью реализации вариантов осуществления изобретения, устройство 1100 для обработки видео может быть кодером 20 или декодером 30, как показано на фиг.11, устройство включает в себя:
Блок 1110 инициализации, выполненный с возможностью инициализации HMVP списка для текущей строки CTU, когда текущий CTU является начальным CTU (первым CTU) текущей строки CTU.
Детали инициализации, выполняемой блоком 1110 инициализации, могут относиться к этапу 1010.
Блок 1120 обработки, выполненный с возможностью обрабатывать текущую строку CTU на основании HMVP списка.
Подробная информация обработки, выполняемой блоком 1120 обработки, может относиться к этапу 1020.
Обработка может быть процессом внешнего предсказания, таким образом, может быть получен блок предсказания. Операция восстановления может выполняться на основании блока предсказания для получения восстановленного блока, наконец, декодированное изображение может быть получено на основании восстановленного блока. Подробности этих процессов описаны выше.
Как показано на фиг.8, текущий кадр изображения содержит множество строк CTU, чтобы повысить эффективность кодирования/декодирования множество строк CTU может обрабатываться в режиме WPP. То есть, текущая строка CTU начинает обрабатываться, когда обрабатывается конкретный CTU предшествующей строки CTU, где предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и наверху текущей строки CTU, где конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU. Возьмем фиг.8 для примера, когда текущая строка CTU является последовательностью 3, предшествующая строка CTU является последовательностью 2, конкретным CTU предшествующей строки CTU может быть CTU 12, то есть, когда CTU 12 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 3, то есть, декодер/кодер начинает обрабатывать CTU 22. Рассмотрим фиг.8 для другого примера, когда текущая строка CTU является последовательностью 4, предшествующая строка CTU является последовательностью 3, конкретным CTU предшествующей строки CTU может быть CTU 23, то есть, когда CTU 23 обрабатывается, декодер/кодер начинает обработку строки CTU последовательности 4, то есть, декодер/кодер начинает обрабатывать CTU 33.
Настоящее изобретение дополнительно раскрывает кодер, который включает в себя схему обработки для выполнения способа обработки видео или способа кодирования настоящего раскрытия.
Настоящее изобретение дополнительно раскрывает декодер, который включает в себя схему обработки для выполнения способа обработки видео или способа кодирования настоящего раскрытия.
Настоящее изобретение дополнительно раскрывает компьютерный программный продукт, который содержит программный код для выполнения способа обработки видео или способа кодирования настоящего раскрытия.
Настоящее изобретение дополнительно раскрывает машиночитаемый носитель данных, хранящий компьютерные инструкции, которые при исполнении одним или более процессорами побуждают один или более процессоров выполнять способ обработки видео или способ кодирования настоящего раскрытия. Машиночитаемый носитель информации является энергонезависимым или энергозависимым.
Настоящее изобретение дополнительно раскрывает декодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа обработки видео или способа кодирования настоящего раскрытия.
Настоящее изобретение дополнительно раскрывает кодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа обработки видео или способа кодирования настоящего раскрытия.
Процесс инициализации для HMVP списка описан в общем синтаксисе данных сегмента VVC (Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29 / WG 11, универсальное кодирование видео (проект 6)), раздел 7.3.8.1 VVC описывает:
slice_data( ) { | Descriptor |
for( i = 0; i < NumBricksInCurrSlice; i++ ) { | |
CtbAddrInBs = FirstCtbAddrBs[ SliceBrickIdx[ i ] ] | |
for( j = 0; j < NumCtusInBrick[ SliceBrickIdx[ i ] ]; j++, CtbAddrInBs++ ) { | |
if( ( j % BrickWidth[ SliceBrickIdx[ i ] ] ) = = 0 ) { | |
NumHmvpCand = 0 | |
NumHmvpIbcCand = 0 | |
ResetIbcBuf = 1 | |
} | |
CtbAddrInRs = CtbAddrBsToRs[ CtbAddrInBs ] | |
coding_tree_unit( ) | |
if( entropy_coding_sync_enabled_flag && ( j < NumCtusInBrick[ SliceBrickIdx[ i ] ] – 1 ) && ( ( j + 1 ) % BrickWidth[ SliceBrickIdx[ i ] ] = = 0 ) ) { |
|
end_of_subset_one_bit /* equal to 1 */ | ae(v) |
byte_alignment( ) | |
} | |
} | |
end_of_brick_one_bit /* equal to 1 */ | ae(v) |
if( i < NumBricksInCurrSlice − 1 ) | |
byte_alignment( ) | |
} | |
} |
Где j% BrickWidth [SliceBrickIdx [i]]) = = 0 означает, что CTU с индексом j является начальным CTU строки CTU, и NumHmvpCand = 0 означает, что количество кандидатов в HMVP списке установлено на 0, другими словами, HMVP список очищается.
Процесс обновления для HMVP списка описан в разделе 8.5.2.16 VVC (Объединенная группа экспертов по видео (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29 / WG 11, универсальное кодирование видео (проект 6)), раздел 7.3.8.1 VVC описывает:
Входными данными процесса являются:
векторы движения яркости с точностью 1/16 дробной выборки mvL0 и mvL1,
опорные индексы refIdxL0 и refIdxL1,
флаги использования списка предсказаний predFlagL0 и predFlagL1,
индекс веса двунаправленного предсказания равен bcwIdx.
MVP кандидат hMvpCand состоит из векторов mvL0 и mvL1 движения яркости, опорных индексов refIdxL0 и refIdxL1, флагов predFlagL0 и predFlagL1 использования списка предсказаний и индекса bcwIdx веса двойного предсказания.
Список HmvpCandList кандидатов модифицируется с помощью кандидата hMvpCand следующими упорядоченными этапами:
переменная identityCandExist устанавливается равной FALSE и переменная removeIdx устанавливается равной 0.
Когда NumHmvpCand больше 0, для каждого индекса hMvpIdx с hMvpIdx = 0..NumHmvpCand - 1 выполняются следующие этапы до тех пор, пока identityCandExist не станет равным TRUE:
Когда hMvpCand равен HmvpCandList [hMvpIdx], identityCandExist устанавливается равным TRUE и removeIdx устанавливается равным hMvpIdx.
Список HmvpCandList кандидатов обновляется следующим образом:
если identityCandExist равно TRUE или NumHmvpCand равно 5, применяется следующее:
для каждого индекса i с i = (removeIdx + 1) .. (NumHmvpCand - 1) HmvpCandList [i - 1] устанавливается равным HmvpCandList [i].
HmvpCandList [NumHmvpCand - 1] устанавливается равным mvCand.
В противном случае (connectedCandExist равен FALSE, а NumHmvpCand меньше 5) применяется следующее:
HmvpCandList [NumHmvpCand ++] устанавливается равным mvCand.
В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода на машиночитаемом носителе и выполняться аппаратным блоком обработки. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных, или носителю связи, включающий в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) средам связи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или более компьютеров, или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации описанных в настоящем изобретении способов. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
В качестве примера, но не ограничения, такие машиночитаемые носители данных могут включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, накопители на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любые другие устройства. другой носитель, который можно использовать для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновый сигнал, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый сигнал используются в таковой среде. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск и диск, используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом и диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.
Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые логические матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных в настоящем документе способов. Дополнительно, в некоторых аспектах описанные функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или содержащиеся в комбинированном кодеке. Дополнительно, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
Способы настоящего раскрытия могут быть реализованы в большом количестве устройств или устройств, включающие в себя беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнять раскрытые технологии, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены набором взаимодействующих аппаратных блоков, включающие в себя один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или встроенным программным обеспечением.
1. Способ обработки видео, содержащий этапы, на которых:
инициализируют, в начале обработки каждой строки блока дерева кодирования (CTU) области изображения, содержащей множество строк CTU, список предсказания вектора движения (HMVP) на основании исторических данных для каждой из множества строк CTU, причем количество кандидатов векторов движения в инициализированном списке HMVP равно нулю; и
выполняют обработку множества строк CTU на основании инициализированных HMVP списков.
2. Способ по п.1, в котором этап выполнения обработки множества строк CTU на основании инициализированных HMVP списков содержит подэтапы, на которых:
выполняют обработку текущего CTU текущей строки CTU;
выполняют обновление соответствующего HMVP списка на основании обработанного текущего CTU; и
выполняют обработку второго CTU текущей строки CTU на основании обновленного HMVP списка.
3. Способ по п.1, в котором HMVP список текущей строки CTU из множества строк CTU обновляется в соответствии с обработанным CTU текущей строки CTU.
4. Способ по п.1, в котором HMVP список для текущей строки CTU из множества строк CTU инициализируется посредством:
очистки HMVP списка для текущей строки CTU.
5. Способ по п.1, в котором этап выполнения обработки множества строк CTU на основании инициализированных HMVP списков содержит подэтап, на котором:
выполняют обработку текущей строки CTU на основании соответствующего HMVP списка из второго CTU текущей строки CTU, причем второй CTU является смежным с начальным CTU.
6. Способ по п.1, в котором множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).
7. Способ по п.2, в котором этап обработки текущего CTU текущей строки CTU начинается, когда обрабатывается конкретный CTU предшествующей строки CTU.
8. Способ по п.7, в котором предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и над текущей строкой CTU.
9. Способ по п.7, в котором конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
10. Устройство обработки видео, содержащее:
блок инициализации, выполненный с возможностью инициализации, в начале обработки каждой строки блока дерева кодирования (CTU) области изображения, содержащей множество строк CTU, списка предсказания вектора движения (HMVP), на основании исторических данных для каждой из множества строк CTU, причем количество кандидатов векторов движения в инициализированном списке HMVP равно нулю; и
блок обработки, выполненный с возможностью обработки множества строк CTU на основании инициализированных HMVP списков.
11. Устройство по п.10, в котором блок обработки выполнен с возможностью обработки текущей строки CTU на основании HMVP списка посредством:
обработки текущего CTU, текущей строки CTU;
обновления соответствующего HMVP списка, на основании обработанного текущего CTU; и
обработки второго CTU текущей строки CTU на основании обновленного HMVP списка.
12. Устройство по п.10, в котором HMVP список текущей строки CTU из множества строк CTU обновляется в соответствии с обработанным CTU текущей строки CTU.
13. Устройство по п.10, в котором блок инициализации дополнительно выполнен с возможностью инициализации HMVP списка для текущей строки CTU из множества строк CTU посредством:
очистки HMVP списка для текущей строки CTU.
14. Устройство по п.10, в котором блок обработки дополнительно выполнен с возможностью обработки множества строк CTU на основании инициализированных HMVP списков посредством:
обработки текущей строки CTU на основании соответствующего HMVP списка из второго CTU текущей строки CTU, причем второй CTU является смежным с начальным CTU.
15. Устройство по п.10, в котором множество строк CTU обрабатывается в режиме параллельной обработки волнового фронта (WPP).
16. Устройство по п.11, в котором обработка текущего CTU текущей строк CTU начинается, когда обрабатывается конкретный CTU предшествующей строки CTU.
17. Устройство по п.16, в котором предшествующая строка CTU является строкой CTU, непосредственно смежной с текущей строкой CTU и над текущей строкой CTU.
18. Устройство по п.16, в котором конкретный CTU предшествующей строки CTU является вторым CTU предшествующей строки CTU; или конкретный CTU предшествующей строки CTU является первым CTU предшествующей строки CTU.
19. Кодер, содержащий схему обработки для выполнения способа по любому из пп.1-9.
20. Декодер, содержащий схему обработки для выполнения способа по любому из пп.1-9.
21. Машиночитаемый носитель данных, хранящий программу, вызывающую, при исполнении компьютером, выполнение способа по любому из пп.1-9.
22. Декодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, причем программы, при выполнении процессорами, вызывают выполнение, декодером, способа по любому из пп.1-9.
23. Кодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, причем программы, при выполнении процессорами, вызывают выполнение, кодером, способа по любому из пп.1-9.