RU2803063C2 - Кодер, декодер и соответствующие способы, которые используются для процесса преобразования - Google Patents

Кодер, декодер и соответствующие способы, которые используются для процесса преобразования Download PDF

Info

Publication number
RU2803063C2
RU2803063C2 RU2021128574A RU2021128574A RU2803063C2 RU 2803063 C2 RU2803063 C2 RU 2803063C2 RU 2021128574 A RU2021128574 A RU 2021128574A RU 2021128574 A RU2021128574 A RU 2021128574A RU 2803063 C2 RU2803063 C2 RU 2803063C2
Authority
RU
Russia
Prior art keywords
block
current
threshold value
conversion
equal
Prior art date
Application number
RU2021128574A
Other languages
English (en)
Other versions
RU2021128574A (ru
Inventor
Хань ГАО
Семих ЕСЕНЛИК
Бяо ВАН
Ананд Мехер КОТРА
Цзяньлэ Чэнь
Original Assignee
Хуавей Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавей Текнолоджиз Ко., Лтд. filed Critical Хуавей Текнолоджиз Ко., Лтд.
Publication of RU2021128574A publication Critical patent/RU2021128574A/ru
Application granted granted Critical
Publication of RU2803063C2 publication Critical patent/RU2803063C2/ru

Links

Images

Abstract

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

Description

Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки (раскрытия) относятся, в общем, к области обработки изображений или видео и, в частности, к процессу преобразования.
Уровень техники
Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в режиме реального времени, таких как видеоразговор, видеоконференц-связь, DVD. и диски Blu-ray, системы сбора и редактирования содержания видео и записывающие видеокамеры приложений безопасности.
Объем видеоданных, необходимых для изображения даже относительно короткого видео, может быть значительным, что может привести к затруднениям в тех случаях, когда данные должны передаваться в потоковом режиме или иным образом по сети связи с ограниченной пропускной способностью. Таким образом, перед передачей по современным телекоммуникационным сетям видеоданные, как правило, сжимаются. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, так как ресурсы памяти могут быть ограничены. В источнике устройства сжатия видео часто используют программное обеспечение и/или аппаратные средства для кодирования видеоданных перед передачей или хранением, тем самым уменьшая объем данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в месте назначения устройством распаковки видео, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущих требованиях к более высокому качеству видео желательно использовать улучшенные технологии сжатия и распаковки, которые позволили бы повысить степень сжатия с минимальными потерями без какой-либо потери качества изображения или вообще без них.
Сущность изобретения
Варианты осуществления настоящей заявки предоставляют устройства и способы кодирования и декодирования согласно независимым пунктам формулы изобретения.
Предмет изобретения, изложенный в независимых пунктах формулы изобретения, обеспечивает решение вышеупомянутых и других задач. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Первый аспект изобретения раскрывает способ кодирования, реализуемый устройством декодирования, содержащий: когда режимом предсказания текущего блока кодирования является внутрикадровое предсказание, и текущий блок кодирования обрабатывается с использованием режима кодирования подраздела внутрикадрового предсказания (ISP), определение того, больше или равна ширина текущего блока преобразования первому пороговому значению, и меньше или равна ширина текущего блока преобразования второму пороговому значению, где текущий блок преобразования соответствует текущему блоку кодирования; когда ширина текущего блока преобразования больше или равна первому пороговому значению, и ширина текущего блока преобразования меньше или равна второму пороговому значению,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DST 7 преобразования используется для преобразования в горизонтальном направлении.
В одной возможной реализации способ дополнительно содержит:
когда ширина текущего блока преобразования меньше, чем первое пороговое значение, или когда ширина текущего блока преобразования больше, чем второе пороговое значение,
выполнение процесса преобразования в текущем блоке преобразования, причем процесс преобразования ядра DCT 2 преобразования используется для горизонтального преобразования.
В одной возможной реализации способ дополнительно содержит:
получение значения синтаксиса для текущего блока кодирования, причем значение синтаксиса для текущего блока кодирования используется для того, чтобы указать, что режимом предсказания текущего блока кодирования является внутрикадровое предсказание.
В одной возможной реализации, в которой значение синтаксиса для текущего блока кодирования не указывает конкретный режим предсказания текущего блока кодирования:
Второй аспект изобретения раскрывает способ кодирования, реализуемый устройством декодирования, содержащий: когда режимом предсказания текущего блока кодирования является внутрикадровое предсказание, и текущий блок кодирования обрабатывается с использованием режима кодирования подраздела внутрикадрового предсказания (ISP), определение того, больше или равна высота текущего блока преобразования третьему пороговому значению, и меньше или равна высота текущего блока преобразования четвертому пороговому значению, где текущий блок преобразования соответствует текущему блоку кодирования; когда высота текущего блока преобразования больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению, выполнение процесса преобразования для текущего блока преобразования, где ядро DST 7 преобразования используется для преобразования в вертикальном направлении.
В одной возможной реализации, в которой способ дополнительно содержит: когда высота текущего блока преобразования меньше третьего порогового значения, или когда высота текущего блока преобразования больше четвертого порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DCT 2 преобразования используется для преобразования в вертикальном направлении.
В одной возможной реализации способ дополнительно содержит:
получение значения синтаксиса для текущего блока кодирования, где значение синтаксиса для текущего блока кодирования используется для того, чтобы указать, что режимом предсказания текущего блока кодирования является внутрикадровое предсказание.
В одной возможной реализации, в которой значение синтаксиса для текущего блока кодирования не указывает конкретный режим предсказания текущего блока кодирования:
Третий аспект изобретения раскрывает способ кодирования, реализованный устройством декодирования, содержащий: когда схема выбора множественного преобразования (MTS) недоступна для текущего блока кодирования, определение того, больше или равна ширина текущего блока преобразования первому пороговому значению, и независимо от того, меньше или равна ширина текущего блока преобразования второму пороговому значению, где текущий блок преобразования соответствует текущему блоку кодирования; когда ширина текущего блока преобразования больше или равна первому пороговому значению и меньше или равна второму пороговому значению, выполнение процесса преобразования для текущего блока преобразования, где ядро DST 7 преобразования используется для преобразования в горизонтальном направлении.
В одной возможной реализации, в которой способ дополнительно содержит: когда ширина текущего блока преобразования меньше первого порогового значения, или когда ширина текущего блока преобразования больше второго порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DCT 2 преобразования используется для преобразования в горизонтальном направлении.
Четвертый аспект изобретения раскрывает способ кодирования, реализуемый устройством декодирования, содержащий: когда схема выбора множественного преобразования (MTS) недоступна для текущего блока кодирования, определение того, больше или равна высота текущего блока преобразования третьему пороговому значению, и независимо от того, меньше или равна высота текущего блока преобразования четвертому пороговому значению, где текущий блок преобразования соответствует текущему блоку кодирования; когда высота текущего блока преобразования больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению, выполнение процесса преобразования для текущего блока преобразования, где ядро DST 7 преобразования используется для преобразования в вертикальном направлении.
В одной возможной реализации способ дополнительно содержит:
когда высота текущего блока преобразования меньше третьего порогового значения, или когда высота текущего блока преобразования больше четвертого порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DCT 2 преобразования используется для преобразования в вертикальном направлении.
Пятый аспект изобретения раскрывает способ кодирования, реализуемый устройством декодирования, содержащий:
когда схема выбора множественного преобразования (MTS) недоступна для текущего блока кодирования, ширина текущего блока преобразования больше или равна первому пороговому значению и меньше или равна второму пороговому значению,
и высота текущего блока преобразования больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению, где текущий блок преобразования соответствует текущему блоку кодирования,
определение того, больше или нет значение отношения ширины к высоте блока, которые соответствуют текущему блоку преобразования, чем пятое пороговое значение,
когда значение отношения ширины к высоте блока меньше или равно пятому пороговому значению,
ядро DST 7 преобразования используется для горизонтального и вертикального преобразования текущего блока преобразования.
В одной возможной реализации способ дополнительно содержит:
когда значение отношения ширины к высоте блока больше, чем пятый порог, и ширина текущего блока преобразования меньше, чем высота текущего блока преобразования,
ядро DST 7 преобразования используется для горизонтального преобразования текущего блока преобразования, и ядро DCT 2 преобразования используется для вертикального преобразования текущего блока преобразования.
В одной возможной реализации способ дополнительно содержит:
когда значение отношения ширины блока к высоте больше пятого порогового значения, и ширина текущего блока преобразования больше высоты текущего блока преобразования,
ядро DCT 2 преобразования используется для горизонтального преобразования текущего блока преобразования, и ядро DST 7 преобразования используется для вертикального преобразования текущего блока преобразования.
Шестой аспект изобретения раскрывает декодер (30), содержащий схему обработки для выполнения любого из вышеупомянутых вариантов осуществления способа.
Седьмой аспект изобретения раскрывает компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из вышеупомянутых вариантов осуществления способа.
Восьмой аспект изобретения раскрывает декодер, содержащий:
один или более процессоров; и невременный машиночитаемый носитель информации, связанный с процессорами и хранящий программы для исполнения процессорами, причем программа при ее исполнении процессорами конфигурирует декодер для выполнения способа согласно любому из вышеупомянутых вариантов осуществления способа.
Подробности одного или нескольких вариантов осуществления изложены на сопроводительных чертежах и в описании, представленном ниже. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
Ниже приведено более подробное описание вариантов осуществления изобретения со ссылкой на сопроводительные фигуры и чертежи, на которых:
фиг.1A – блок-схема, показывающая пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг.1B – блок-схема, показывающая другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг.2 – блок-схема, показывающая пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг.3 – блок-схема, показывающая примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг.4 – блок-схема, иллюстрирующая пример устройства кодирования или устройства декодирования;
фиг.5 – блок-схема, иллюстрирующая другой пример устройства кодирования или устройства декодирования;
фиг.6 – пример разделения блоков 4×8 и 8×4.
фиг.7 – пример разделения блоков, за исключением блоков 4×8, 8×4 и 4×4.
фиг.8 – блок-схема, показывающая примерную структуру системы 3100 доставки содержания, которая реализует услугу доставки содержания.
фиг.9 – блок-схема, показывающая структуру примера терминального устройства.
Приведенные ниже идентичные ссылочные позиции относятся к идентичным или по меньшей мере функционально эквивалентным признакам, если явно не указано иное.
Подробное описание изобретения
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть раскрытия и которые показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Понятно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется сопроводительной формулой изобретения.
Например, понятно, что раскрытие в связи с описанным способом также справедливо для соответствующего устройства или системы, которые выполнены с возможностью выполнения способа, и наоборот. Например, если описан один этап или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например, функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или более блоков явно не описаны или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функции одного или множества блоков, или множество этапов, каждый из которых выполняет функции одного или нескольких из множества блоков), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео, как правило, относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина "изображение" можно использовать термин "кадр" или "картинка" как синонимы в области кодирования видео. Кодирование видео (или кодирование в целом) содержит две части: кодирование видео и декодирование видео. Кодирование видео выполняется на стороне источника, как правило, содержащего обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и, как правило, содержит обратную обработку по отношению к кодеру для восстановления видеоизображений. Варианты осуществления, относящиеся к "кодированию" видеоизображений (или изображений в целом), следует понимать как относящиеся к "кодированию" или "декодированию" видеоизображений или соответствующих видеопоследовательностей. Комбинация части кодирования и части декодирования также упоминается как CODEC (кодирование и декодирование).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, путем квантования, чтобы уменьшить объем данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео принадлежат к группе "гибридных видеокодеков с потерями" (то есть объединяют пространственное и временное предсказание в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности, как правило, разделяется на набор неперекрывающихся блоков, и кодирование, как правило, выполняется на уровне блоков. Другими словами, в кодере видео, как правило, обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (изображения с внутрикадровым предсказанием) предсказания и/или временного (изображения с межкадровым предсказанием) предсказания для выработки блока предсказания, вычитания блока предсказания из текущего блока (блока, который обрабатывается на данный момент времени или который должен быть обработан) для получения остаточного блока, преобразовывая остаточного блока и квантования остаточного блока в области преобразования для уменьшения объема данных, подлежащих передаче (сжатию), тогда как в декодере обратная обработка по сравнению с кодером применяется к закодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует контур обработки декодера, так что оба будут вырабатывать идентичные предсказания (например, внутрикадровое предсказание и межкадровое предсказание) и/или восстановления для обработки, то есть кодирования, последующих блоков.
В следующих вариантах осуществления системы 10 кодирования видео, видеокодер 20 и видеодекодер 30 описываются на основе фиг.1-3.
На фиг.1A показана схематичная блок-схема, иллюстрирующая примерную систему 10 кодирования, например, систему 10 кодирования видео (или систему 10 короткого кодирования), которая может использовать технологии этой настоящей заявки. Видеокодер 20 (или короткий кодер 20) и видеодекодер 30 (или короткий декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения технологий в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на фиг.1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления данных 21 кодированного изображения, например, в устройство-адресат 14 для декодирования данных 13 кодированного изображения.
Устройство-источник 12 содержит кодер 20 и может дополнительно, то есть необязательно, содержать источник 16 изображения, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображения, и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть устройством захвата изображения любого типа, например, камерой для захвата реального изображения, и/или устройства выработки изображения любого типа, например, процессором компьютерной графики для выработки компьютерного анимационное изображение или любое другое устройство для получения и/или предоставления реального изображения, компьютерного изображения (например, содержания экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображение дополненной реальности (AR)). Источником изображения может быть память или хранилище любого типа, в котором хранятся любые из вышеупомянутых изображений.
В отличие от препроцессора 18 и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения также могут называться необработанным изображением или данными 17 необработанного изображения.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать отсечение, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или устранение шумов. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, со ссылкой на фиг.2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема данных 21 кодированного изображения и передачи данных 21 кодированного изображения (или любой их дальнейшей обработанной версии) по каналу связи 13 в другое устройство, например, в устройство-адресат 14 или любое другое устройство для хранения или прямого восстановления.
Устройство-адресат 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, то есть необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 последующей обработки) и устройство 34 отображения.
Интерфейс 28 связи устройства-адресата 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например, непосредственно из устройства-источника 12 или из любого другого источника, например, запоминающего устройства, например, устройства хранения кодированных данных изображения, и предоставления данных 21 кодированного изображения в декодер 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-адресатом 14, например, прямое проводное или беспроводное соединение, или через любой вид сети, например, проводную или беспроводную сеть или любую их комбинацию, или любой вид частной и публичной сети, или любую их комбинацию.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки данных 21 кодированного изображения в соответствующий формат, например, в пакеты, и/или обработки данных кодированного изображения с использованием любого типа кодирования передачи или обработки для передачи по каналу связи или сети связи.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки переданных данных с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 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) или как кодер 20, так и декодер 30 могут быть реализованы с помощью схемы обработки, показанной на фиг.1B, такой как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретных логических схем, аппаратных средств, специализированных схем кодирования видео или любых их комбинаций. Кодер 20 может быть реализован с помощью схемы 46 обработки для осуществления различных блоков, как обсуждалось в отношении кодера 20, показанного на фиг.2, и/или любой другой системы или подсистемы кодера, описанной в данном документе. Декодер 30 может быть реализован с помощью схемы 46 обработки для осуществления различных блоков, как обсуждалось в отношении декодера 30, показанного на фиг.3, и/или любой другой системы или подсистемы декодера, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, как описано ниже. Как показано на фиг.5, если технологии реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем невременном машиночитаемом носителе информации и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения технологий настоящего раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на фиг.1B.
Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого разнообразия устройств, включая любые виды портативных или стационарных устройств, например, портативные или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потокового видео (например, серверы предоставления услуг по передаче содержания или серверы доставки содержания), устройство широковещательного приемника, устройство широковещательного передатчика или тому подобное, и могут использовать или не использовать операционную систему любого типа. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть выполнены с возможностью поддержания беспроводной связи. Таким образом, устройство-источник 12 и устройство-адресат 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг.1A, является просто примером, и технологии настоящей заявки могут применяться к настройкам кодирования видео (например, кодированию видео или декодированию видео), которые необязательно включают в себя какой-либо обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются потоком по сети или т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания в данном документе описаны варианты осуществления изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарт кодирования видео следующего поколения, разработанный объединенной группой сотрудничества по кодированию видео (JCT-VC) группы экспертов по кодированию видео ITU-T (VCEG) и группы экспертов по движущимся изображениям (MPEG) ISO/IEC. Обычный специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На фиг.2 показана схематичная блок-схема примерного видеокодера 20, который выполнен с возможностью реализации технологий настоящей заявки. В примере, показанном на фиг.2, видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 декодированных изображений (DPB), блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 разделения. Блок 244 межкадрового предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, может также упоминаться как гибридный видеокодер или видеокодер, соответствующий гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие прямой путь сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратнго преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут упоминаться как формирующие обратный путь прохождения сигнала видеокодера 20, где обратный путь прохождения сигнала видеокодера 20 соответствует пути сигнала декодера (смотри видеодекодер 30 на фиг.3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию "встроенного декодера" видеокодера 20.
Изображения и разделение изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, изображения, состоящего из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения могут быть также предварительно обработанным изображением 19 (или предварительно обработанными данными 19 изображения). Для упрощения изложения нижеследующее описание относится к изображению 17. Изображение 17 также может называться текущим изображением или изображением, которое должно быть кодировано (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений одной и той же видеопоследовательности, то есть видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение представляют собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве может также называться пикселем (сокращенная форма английского словосочетания "picture element" (элемент изображения)) или пэлом. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета, как правило, используются три цветовых компонента, то есть изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель, как правило, представлен в формате яркости и цветности или в цветовом пространстве, например, YCbCr, которое содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть обращены или преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета или конверсия. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовой формат 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на фиг.2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут упоминаться как корневые блоки, макроблоки (H.264/AVC) или блоки дерева кодирования (CTB) или блоки дерева кодирования (CTU) (H.265/HEVC и VVC). Единица разделения изображения может быть выполнена с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями, или поднаборами или группами изображений, и разделения каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например, одного, нескольких или всех блоков, образующих изображение 17. Блок 203 изображения может также называться текущим блоком изображения или блоком изображения, подлежащим кодированию.
Подобно изображению 17, блок 203 изображения снова представляют собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 17) или любое другое количество и/или любой вид массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или по горизонтальной и вертикальной осям) блока 203 определяют размер блока 203. Соответственно, блок может быть, например, массивом выборок размером MxN (размером M столбцов на N строк) или массивом коэффициентов преобразования размером MxN.
Варианты осуществления видеокодера 20, как показано на фиг.2, могут быть выполнены с возможностью кодирования изображения 17 поблочно, например, кодирование и предсказание выполняются для каждого блока 203.
Варианты осуществления видеокодера 20, показанного на фиг.2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием слайсов (также называемых видеослайсами), причем изображение может быть разделено на или закодировано с использованием одного или несколько слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанного на фиг.2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп тайлов (также называемых группами тайлов) и/или тайлов (также называемых видеотайлами), в котором изображение может быть разделено на или закодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например, один или более блоков (например, CTU) или один или несколько тайлов, где каждый тайл, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например, полные или дробные блоки.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания будут предоставлены позже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборки за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.
Преобразование
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусоидального преобразования (DST), к значениям выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования также могут называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации, как правило, масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования, как правило, выбираются на основе определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, с помощью блока 212 обработки обратного преобразования (и соответствующего обратного преобразования, например, с помощью блока 312 обработки обратного преобразования в видеодекодере 30), и, соответственно, могут быть указаны соответствующие коэффициенты масштабирования для прямого преобразования, например, с помощью блока 206 обработки преобразования, в кодере 20.
Варианты осуществления видеокодера 20 (соответственно, блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, напрямую или в закодированом или сжатом виде через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-разрядный коэффициент преобразования может быть округлен до m--разрядного коэффициента преобразования во время квантования, где n больше, чем m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малым размерам шагов квантования), и большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее и/или обратное деквантование, например, с помощью блока 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. В общем, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться таблицы квантования, выполненные с учетом потребностей заказчика, и кодер может передавать их в декодер, например, в битовом потоке. Квантование представляет собой операцию с потерями, в которой потери возрастают с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или в закодированном виде через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размер шага квантования, что и у блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать (хотя, как правило, они не идентичны коэффициентам преобразования из-за потери при квантовании) коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразований, чтобы получить восстановленный остаточный блок 213 (или соответствующие деквантованные коэффициенты 213) в области выборки. Восстановленный остаточный блок 213 может также называться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, суммирующее устройство или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (то есть восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем сложения (выборки за выборкой) значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или сокращенно "контурный фильтр" 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра выполнен, например, с возможностью сглаживания пиксельных переходов или иного повышения качества видео. Блок 220 контурного фильтра может содержать один или несколько контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного к выборке смещение (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), повышение резкости, сглаживающие фильтры или объединённые фильтры или любые их комбинации. Хотя блок 220 контурного фильтра показан на фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 может также называться фильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно, блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, напрямую или в закодированном виде через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированного изображения
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных видеокодером 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическое оперативное запоминающее устройство (DRAM), в том числе синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Буфер 230 декодированных изображений (DPB) может быть выполнен с возможностью хранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221 одного и того же текущего изображения или различных изображений, например, ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, то есть декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер декодированных изображений (DPB) 230 также может быть выполнен с возможностью хранения одного или нескольких нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурной фильтрации, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разделение и предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, исходного блока 203 (текущего блока 203 текущего изображения 17), и данных восстановленного изображения, например, отфильтрованных и/или нефильтрованных восстановленных выборок или блоков одного и того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строкового буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутрикадровего или межкадрового предсказания) и выработки соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальное количество служебных данных сигнализации (минимальное количество служебных данных сигнализации означает лучшее сжатие для передачи или хранения), или которое учитывает или уравновешивает и то, и другое. Блок 260 выбора режима может быть выполнен с возможностью определения разделения и режима предсказания на основе оптимизации отношения "скорость-искажение" (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как "лучший", "минимальный", "оптимальный" и т.д. в данном контексте необязательно относятся, в общем, к "лучшему", "минимальному", "оптимальному" и т.д., но также могут относиться к выполнению критерия завершения или выбора, такому как значение, которое превышает или находится ниже порогового значения, или к другим ограничениям, потенциально ведущим к "неоптимальному выбору", но уменьшающим сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более маленькие разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT) или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блоков или подблоков, причем выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов блока или подблоков.
Далее будут объяснены более подробно разделение (например, с помощью блока 260 разделения) и обработка предсказания (с помощью блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на меньшие разделы, например, на меньшие блоки квадратной или прямоугольной формы. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще более меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень 0 иерархии, глубина 0), может быть рекурсивно разделен, например, разделен на два или более блоков следующего более низкого уровня дерева, например, на узлы на уровне дерева 1 (уровень 1 иерархии, глубина 1), причем эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т.д. До тех пор, пока разделение не будет завершено, например, так как критерий завершения выполнен, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), и дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Как упоминалось ранее, используемый в данном документе термин "блок", может быть частью, в частности, квадратной или прямоугольной частью изображения. Со ссылкой, например, на HEVC и VVC, блок может представлять собой или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например, блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодирования (CTU) может представлять собой или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком размером NxN выборок для некоторого значения N, так что разделение компонента на CTB является разделением. Единица кодирования (CU) может представлять собой или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть блоком MxN выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является разделением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры квадродерева, обозначенной как дерево кодирования. Решение о том, кодировать ли область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, дву или четыре PU в соответствии с типом разделения PU. Внутри одной PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения PU, CU может быть разделена на единицы преобразования (TU) в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.
В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который называется универсальным кодированием видео (VVC), объединенный способ разделения квадродерева и двоичного дерева (QTBT) используется, например, для разделения блока кодирования. В блочной структуре QTBT CU может иметь квадратную или прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется структурой квадродерева. Листовые узлы квадродерева дополнительно разделяются с помощью структуры двоичного дерева или третичного (или тройного) дерева. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для предсказания и процесса преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно с блочной структурой QTBT можно использовать многочисленные разделы, например, троичное дерево.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любой комбинации технологий разделения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего значения) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего значения) и планарный режим, или направленные режимы, например, как определено для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для выработки блока 265 внутрикадрового предсказания согласно режиму внутрикадрового предсказания набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в виде синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор (или возможных) режимов межкадрового предсказания зависит от доступных опорных изображений (то есть предыдущих по меньшей мере частично декодированных изображений, например, сохраненных в DBP 230) и других параметров межкадрового предсказания, например, от того, все ли опорное изображение или только часть его, например, область окна поиска вокруг области текущего блока, опорного изображения используется для поиска наиболее подходящего опорного блока, и/или, например, применяется или нет интерполяция пикселей, например, половинная пиксельная/полупиксельная и/или четвертьпиксельная интерполяция.
Дополнительно к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 межкадрового предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на фиг.2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блока 203 текущего изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231, или, другими словами, текущее изображение и ранее декодированные изображения 231 могут представлять собой или могут формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (координаты x, y) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания для блока оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например, приема, параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя выборку или выработку блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, и, возможно, выполнение интерполяции с точностью до подпикселя. Интерполяционная фильтрация может вырабатывать дополнительные выборки пикселей из известных выборок пикселей, таким образом потенциально увеличивая количество блоков предсказания кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок компенсации движения может также вырабатывать синтаксические элементы, ассоциированные с блоками, и видеослайсы для использования видеодекодером 30 при декодировании блоков изображения видеослайса. В качестве альтернативы или в дополнение к слайсам и соответствующим синтаксическим элементам могут быть выработаны или использованы группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с интервалом вероятности (PIPE) или другой методология или технологии энтропийного кодирования) или обхода (без сжатия) квантованных коэффициентов 209, параметров межкадрового предсказания, параметров внутрикадрового предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения данных 21 кодированного изображения, которые могут выводиться через выход 272, например, в виде кодированного битового потока 21, так что, например, видео декодер 30 может принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан в видеодекодер 30 или сохранен в памяти для последующей передачи или поиска видеодекодером 30.
Другие структурные вариации видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На фиг.3 показан пример видеодекодера 30, который выполнен с возможностью реализации технологий этой настоящей заявки. Видеодекодер 30 выполнен с возможностью приема данных 21 кодированного изображения (например, кодированного битового потока 21), например, закодированного кодером 20, для получения декодированного изображения 331. Данные кодированного изображения или битовый поток содержат информацию для декодирования данных кодированного изображения, например, данных, которые представляют блоки изображения кодированного видеослайса (и/или группы тайлов или тайлы) и ассоциированные с ними синтаксические элементы.
В примере на фиг.3 декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер декодированных изображений (DBP) 330, блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может представлять собой или включать в себя блок компенсации движения. В некоторых примерах видеодекодер 30 может выполнять этап декодирования, в целом обратный этапу кодирования, описанному применительно к видеокодеру 100, показанному на фиг.2.
Как объяснялось в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурного фильтра 220, буфер декодированных изображений (DPB) 230, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как формирующие "встроенный декодер" видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по своим по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по своим по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по своим по функциям блоку 214 восстановления, контурный фильтр 320 может быть идентичен по своим по функциям контурному фильтру 220, и буфер 330 декодированных изображений может быть идентичен по своим по функциям буферу 230 декодированных изображений. Таким образом, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются, соответственно, к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 кодированного изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.3), например, любых или всех параметров межкадрового предсказания (например, индекса опорного изображения и вектора движения), параметра внутрикадрового предсказания (например, режима или индекса внутрикадрового предсказания), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других синтаксических элементов. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, которые описаны в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других синтаксических элементов для блока 360 применения режима и других параметров для других блоков декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока. В качестве альтернативы или в дополнение к слайсам и соответствующим синтаксическим элементам, могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, с помощью блока 304 энтропийного декодирования) и применения на основе параметров квантования обратного квантования к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами преобразования 311. Процесс обратного квантования может включать в себя использование параметра квантования, определенного с помощью видеокодера 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов) для того, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое будет применяться.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборки. Восстановленные остаточные блоки 213 также могут называться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, с помощью блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, суммирующее устройство или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурной фильтрации (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания пиксельных переходов или иного повышения качества видео. Блок 320 контурного фильтра может содержать один или несколько контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного к выборке смещение (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), повышение резкости, сглаживающие фильтры или объединённые фильтры или любые их комбинации. Хотя блок 320 контурного фильтра показан на фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированного изображения
Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который хранит декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312, для представления или просмотра пользователю.
Предсказание
Блок 344 межкадрового предсказания может быть идентичен модулю 244 межкадрового предсказания (в частности, модулю компенсации движения), и блок 354 внутрикадрового предсказания может быть идентичен модулю 254 межкадрового предсказания по своим функциям и выполняет решения относительно разделения или разбиения и предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принятой из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, с помощью блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью выполнения предсказания (внутрикадрового предсказания или межкадрового предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеослайс кодируется как слайс (I) с внутрикадровым предсказанием, блок 354 внутрикадрового предсказания блока 360 применения режима конфигурируется для выработки блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутрикадрового предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как слайс с межкадровым предсказанием (то есть B или P), блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принятых из блока 304 энтропийного декодирования. Для межкадрового предсказания блоки предсказания могут быть созданы из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя технологии построения по умолчанию на основе опорных изображений, хранящихся в DPB 330. То же самое или аналогичное может применяться для вариантов осуществления с использованием групп тайлов (например, групп видетайлов) или тайлов (например, видеотайлов) альтернативно или в дополнение к слайсам (например, видеослайсам), например, видео может быть закодировано с использованием групп тайлов I, P или B и/или тайлов.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем анализа векторов движения или ассоциированной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего видеоблока, который будет декодирован. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутрикадрового предсказания или межкадрового предсказания), используемого для кодирования видеоблоков видеослайса, тип слайса межкадрового предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию создания одного или нескольких списков опорных изображений для слайса, векторы движения для каждого межкадрового кодированного видеоблока слайса, статус межкадрового предсказания для каждого межкадрового кодированного видеоблока слайса и другую информацию для декодирования видеоблоков в текущем видеослайсе. То же самое или аналогичное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в качестве или в дополнение к слайсам (например, видеослайсам), например, видео может быть закодировано с использованием группы тайлов I, P или B и/или тайлов.
Варианты осуществления видеодекодера 30, как показано на фиг.3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также называемых видеослайсами), где изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеодекодера 30, который показан на фиг.3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп тайлов (также называемых группами тайлов) и/или тайлов (также называемых видеотайлами), где изображение может быть разделено на или декодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например, один или более блоков (например, CTU) или один или более тайлов, причем каждый тайл, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например, полные или дробные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 кодированного изображения. Например, декодер 30 может вырабатывать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, которые объединены в единый блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки текущего этапа может быть дополнительно обработан и затем передан на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации может выполняться дополнительная операция, такая как отсечение (Clip) или сдвиг, над результатом обработки интерполяционной фильтрации, получение вектора движения или контурная фильтрация.
Следует отметить, что дополнительные операции могут применяться к производным векторам движения текущего блока (включая, но не ограничиваясь ими, векторы движения контрольной точки аффинного режима, векторы движения подблока в аффинном режиме, планарном, и режиме ATMVP, временное движение векторы и т.д.). Например, значение вектора движения ограничено заданным диапазоном в соответствии с представляющим его битом. Если представляющим битом вектора движения является bitDepth, то диапазон равен -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где "^" означает возведение в степень. Например, если bitDepth установлен равным 16, диапазон составляет -32768 ~ 32767; если bitDepth установлен равным 18, диапазон составляет -131072 ~ 131071. Например, значение производного вектора движения (например, MV четырех подблоков 4x4 в одном блоке 8x8) ограничено таким образом, чтобы максимальная разность между целыми частями четырех MV подблока 4x4 не превышала N пикселей, например, не более 1 пикселя. В данном документе представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удалить старший бит переполнения (старший значащий бит) с помощью потоковых операций.
ux= (mvx+2bitDepth) % 2bitDepth, (1)
mvx = (ux >= 2bitDepth-1) ? (ux − 2bitDepth) : ux, (2)
uy= (mvy+2bitDepth) % 2bitDepth, (3)
mvy = (uy >= 2bitDepth-1) ? (uy − 2bitDepth) : uy, (4)
где mvx – горизонтальный компонент вектора движения блока или подблока изображения, mvy – вертикальный компонент вектора движения блока или подблока изображения, и ux и uy указывают промежуточное значение.
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение будет равно 32767. В компьютерной системе десятичные числа хранятся в виде дополнения до двух. Дополнение до двух -32769 равно 1,0111,1111,1111,1111 (17 разрядов), затем старший бит отбрасывается, поэтому полученное дополнение до двух равно 0111,1111,1111,1111 (десятичное число 32767), что совпадает с результатом при применении формулы (1) и (2).
ux= (mvpx + mvdx +2bitDepth) % 2bitDepth, (5)
mvx = (ux >= 2bitDepth-1) ? (ux − 2bitDepth) : ux, (6)
uy= (mvpy + mvdy +2bitDepth) % 2bitDepth, (7)
mvy = (uy >= 2bitDepth-1) ? (uy − 2bitDepth) : uy. (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5)-(8).
Способ 2. Удалить старший бит переполнения путем отсечения значения
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx – горизонтальный компонент вектора движения блока изображения или подблока, vy – вертикальный компонент вектора движения блока изображения или подблока; x, y и z, соответственно, соответствуют трем входным значениям процесса отсечения MV, и определение функции Clip3 выглядит следующим образом:
Clip3( x, y, z ) =
На фиг.4 показано схематичное представление устройства 400 кодирования видео согласно варианту осуществления раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 (фиг.1A) или кодер, такой как видеокодер 20 (фиг.1А).
Устройство 400 кодирования видео содержит входные порты 410 (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и выходные порты 450 (или порты 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, которое может использоваться как одно или оба из устройства-источника 12 и устройства-адресата 14 (фиг.1) согласно примерному варианту осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с помощью одного процессора, как показано, например, с помощью процессора 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
В одной реализации память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или оперативным запоминающим устройством (RAM). В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения 1-N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные в данном документе способы.
Устройство 500 может также включать в себя одно или несколько устройств вывода, таких как дисплей 518. В одном примере дисплей 518 может быть сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать ввод касанием. Дисплей 518 может быть подключен к процессору 502 через шину 512.
Хотя в данном документе показана одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500, или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или несколько блоков, например, несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.
В VVC Draft 4.0 (JVET-M1001) раскрыты ядра преобразования DST-VII (DST 7), DCT-VIII (DCT 8) и DCT-II (DCT 2) для процесса преобразования.
В дополнение к DCT-II, который использовался в HEVC, схема выбора множественного преобразования (MTS) используется для остаточного кодирования как для кодированных блоков межкадрового предсказания, так и для кодированных блоков внутрикадрового предсказания. В схеме MTS используется несколько выбранных преобразований DCT8 или DST7. По сравнению с HEVC, DST-VII и DCT-VIII представляют собой новые ядра преобразования. В таблице 1 показаны основные функции выбранного ядра преобразования, как правило, ядро преобразования содержит набор коэффициентов, которые используются для процесса преобразования. Ядро преобразования может быть указано с помощью формулировкой, или ядро преобразования может быть указано с помощью таблицы или матрицы, которая содержит математические округленные коэффициенты из математически определенной функции. Округление направлено на упрощение конфигурации аппаратных средств (например, после округления ядро преобразования меньшего размера (например, 4x4) может непосредственно уменьшить выборку из ядра преобразования большего размера (например, 16x16)). После округления коэффициенты по-прежнему подчиняются математическому представлению преобразования.
Таблица 1. Базовые функции преобразования DCT-II/VIII и DST-VII для N-точечного ввода
Ядро преобразования Базисная функция Ti(j), i, j = 0, 1,…, N−1
DCT-II
where,
DCT-VIII
DST-VII
В другом примере это ядро преобразования указано с помощью матрицы преобразования. В этих примерах переменная nTbS определяет размер блока преобразования или размер горизонтальной выборки масштабированных коэффициентов преобразования.
DST-VII:
- если nTbs равно 4, применяется следующее выражение:
transMatrix[ m ][ n ] =(1206)
{
{ 29 55 74 84 }
{ 74 74 0 −74 }
{ 84 −29 −74 55 }
{ 55 −84 74 −29 }
},
- В противном случае, если nTbs равно 8, применяется следующее выражение:
[ 00200 ] transMatrix [m] [n] =
transMatrix[ m ][ n ] = (1207)
{
{ 17 32 46 60 71 78 85 86 }
{ 46 78 86 71 32 −17 −60 −85 }
{ 71 85 32 −46 −86 −60 17 78 }
{ 85 46 −60 −78 17 86 32 −71 }
{ 86 −17 −85 32 78 −46 −71 60 }
{ 78 −71 −17 85 −60 −32 86 −46 }
{ 60 −86 71 −17 −46 85 −78 32 }
{ 32 −60 78 −86 85 −71 46 −17 }
},
- В противном случае, если nTbs равно 16, применяется следующее выражение:
transMatrix[ m ][ n ] = (1208)
{
{ 8 17 25 33 40 48 55 62 68 73 77 81 85 87 88 88 }
{ 25 48 68 81 88 88 81 68 48 25 0 −25 −48 −68 −81 −88 }
{ 40 73 88 85 62 25 −17 −55 −81 −88 −77 −48 −8 33 68 87 }
{ 55 87 81 40 −17 −68 −88 −73 −25 33 77 88 62 8 −48 −85 }
{ 68 88 48 −25 −81 −81 −25 48 88 68 0 −68 −88 −48 25 81 }
{ 77 77 0 −77 −77 0 77 77 0 −77 −77 0 77 77 0 −77 }
{ 85 55 −48 −87 −8 81 62 −40 −88 −17 77 68 −33 −88 −25 73 }
{ 88 25 −81 −48 68 68 −48 −81 25 88 0 −88 −25 81 48 −68 }
{ 88 −8 −88 17 87 −25 −85 33 81 −40 −77 48 73 −55 −68 62 }
{ 87 −40 −68 73 33 −88 8 85 −48 −62 77 25 −88 17 81 −55 }
{ 81 −68 −25 88 −48 −48 88 −25 −68 81 0 −81 68 25 −88 48 }
{ 73 −85 25 55 −88 48 33 −87 68 8 −77 81 −17 −62 88 −40 }
{ 62 −88 68 −8 −55 88 −73 17 48 −87 77 −25 −40 85 −81 33 }
{ 48 −81 88 −68 25 25 −68 88 −81 48 0 −48 81 −88 68 −25 }
{ 33 −62 81 −88 85 −68 40 −8 −25 55 −77 88 −87 73 −48 17 }
{ 17 −33 48 −62 73 −81 87 −88 88 −85 77 −68 55 −40 25 −8 }
},
В противном случае, если nTbs равно 32, применяется следующее выражение:
transMatrix[ m ][ n ] = transMatrixCol0to15[ m ][ n ] при m = 0..15, n = 0..15 (1209)
transMatrixCol0to15 = (1210)
{
{ 4 9 13 17 21 26 30 34 38 42 46 50 53 56 60 63 }
{ 13 26 38 50 60 68 77 82 86 89 90 88 85 80 74 66 }
{ 21 42 60 74 84 89 89 84 74 60 42 21 0 −21 −42 −60 }
{ 30 56 77 87 89 80 63 38 9 −21 −50 −72 −85 −90 −84 −68 }
{ 38 68 86 88 74 46 9 −30 −63 −84 −90 −78 −53 −17 21 56 }
{ 46 78 90 77 42 −4 −50 −80 −90 −74 −38 9 53 82 89 72 }
{ 53 85 85 53 0 −53 −85 −85 −53 0 53 85 85 53 0 −53 }
{ 60 89 74 21 −42 −84 −84 −42 21 74 89 60 0 −60 −89 −74 }
{ 66 90 56 −13 −74 −87 −46 26 80 84 34 −38 −85 −78 −21 50 }
{ 72 86 34 −46 −89 −63 13 78 82 21 −56 −90 −53 26 84 77 }
{ 77 80 9 −72 −84 −17 66 86 26 −60 −88 −34 53 90 42 −46 }
{ 80 72 −17 −86 −60 34 90 46 −50 −89 −30 63 85 13 −74 −78 }
{ 84 60 −42 −89 −21 74 74 −21 −89 −42 60 84 0 −84 −60 42 }
{ 86 46 −63 −78 21 90 26 −77 −66 42 87 4 −85 −50 60 80 }
{ 88 30 −78 −56 60 77 −34 −87 4 89 26 −80 −53 63 74 −38 }
{ 90 13 −87 −26 84 38 −78 −50 72 60 −63 −68 53 77 −42 −82 }
},
transMatrix[ m ][ n ] = transMatrixCol16to31[ m − 16 ][ n ] при m = 16..31, n = 0..15 (1211)
transMatrixCol16to31 = (1212)
{
{ 66 68 72 74 77 78 80 82 84 85 86 87 88 89 90 90 }
{ 56 46 34 21 9 −4 −17 −30 −42 −53 −63 −72 −78 −84 −87 −90 }
{ −74 −84 −89 −89 −84 −74 −60 −42 −21 0 21 42 60 74 84 89 }
{ −46 −17 13 42 66 82 90 86 74 53 26 −4 −34 −60 −78 −88 }
{ 80 90 82 60 26 −13 −50 −77 −89 −85 −66 −34 4 42 72 87 }
{ 34 −13 −56 −84 −88 −68 −30 17 60 85 87 66 26 −21 −63 −86 }
{ −85 −85 −53 0 53 85 85 53 0 −53 −85 −85 −53 0 53 85 }
{ −21 42 84 84 42 −21 −74 −89 −60 0 60 89 74 21 −42 −84 }
{ 88 72 9 −60 −90 −63 4 68 89 53 −17 −77 −86 −42 30 82 }
{ 9 −66 −88 −42 38 87 68 −4 −74 −85 −30 50 90 60 −17 −80 }
{ −90 −50 38 89 56 −30 −87 −63 21 85 68 −13 −82 −74 4 78 }
{ 4 82 68 −21 −87 −56 38 90 42 −53 −88 −26 66 84 9 −77 }
{ 89 21 −74 −74 21 89 42 −60 −84 0 84 60 −42 −89 −21 74 }
{ −17 −90 −30 74 68 −38 −88 −9 84 53 −56 −82 13 89 34 −72 }
{ −86 9 90 21 −82 −50 66 72 −42 −85 13 90 17 −84 −46 68 }
{ 30 86 −17 −89 4 90 9 −88 −21 85 34 −80 −46 74 56 −66 }
},
transMatrix [m] [n] = transMatrixCol16to31 [m - 16] [n] с m = 16..31, n = 0..15 (1211)
transMatrixCol16to31 =
где nTbs – размер блока преобразования. Так как VVC поддерживает максимум только 32 точки DST-VII, максимальная необходимая матрица имеет размер 32x32
DCT-II:
transMatrix[ m ][ n ] = transMatrixCol0to15[ m ][ n ] при m = 0..15, n= 0..63 (1200) transMatrixCol0to15 = (1201)
{
{ 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 }
{ 91 90 90 90 88 87 86 84 83 81 79 77 73 71 69 65 }
{ 90 90 88 85 82 78 73 67 61 54 46 38 31 22 13 4 }
{ 90 88 84 79 71 62 52 41 28 15 2 −11 −24 −37 −48 −59 }
{ 90 87 80 70 57 43 25 9 −9 −25 −43 −57 −70 −80 −87 −90 }
{ 90 84 73 59 41 20 −2 −24 −44 −62 −77 −86 −90 −90 −83 −71 }
{ 90 82 67 46 22 −4 −31 −54 −73 −85 −90 −88 −78 −61 −38 −13 }
{ 90 79 59 33 2 −28 −56 −77 −88 −90 −81 −62 −37 −7 24 52 }
{ 89 75 50 18 −18 −50 −75 −89 −89 −75 −50 −18 18 50 75 89 }
{ 88 71 41 2 −37 −69 −87 −90 −73 −44 −7 33 65 86 90 77 }
{ 88 67 31 −13 −54 −82 −90 −78 −46 −4 38 73 90 85 61 22 }
{ 87 62 20 −28 −69 −90 −84 −56 −11 37 73 90 81 48 2 −44 }
{ 87 57 9 −43 −80 −90 −70 −25 25 70 90 80 43 −9 −57 −87 }
{ 86 52 −2 −56 −87 −84 −48 7 59 88 83 44 −11 −62 −90 −81 }
{ 85 46 −13 −67 −90 −73 −22 38 82 88 54 −4 −61 −90 −78 −31 }
{ 84 41 −24 −77 −90 −56 7 65 91 69 11 −52 −88 −79 −28 37 }
{ 83 36 −36 −83 −83 −36 36 83 83 36 −36 −83 −83 −36 36 83 }
{ 83 28 −44 −88 −73 −11 59 91 62 −7 −71 −90 −48 24 81 84 }
{ 82 22 −54 −90 −61 13 78 85 31 −46 −90 −67 4 73 88 38 }
{ 81 15 −62 −90 −44 37 88 69 −7 −77 −84 −24 56 91 52 −28 }
{ 80 9 −70 −87 −25 57 90 43 −43 −90 −57 25 87 70 −9 −80 }
{ 79 2 −77 −81 −7 73 83 11 −71 −84 −15 69 86 20 −65 −87 }
{ 78 −4 −82 −73 13 85 67 −22 −88 −61 31 90 54 −38 −90 −46 }
{ 77 −11 −86 −62 33 90 44 −52 −90 −24 69 83 2 −81 −71 20 }
{ 75 −18 −89 −50 50 89 18 −75 −75 18 89 50 −50 −89 −18 75 }
{ 73 −24 −90 −37 65 81 −11 −88 −48 56 86 2 −84 −59 44 90 }
{ 73 −31 −90 −22 78 67 −38 −90 −13 82 61 −46 −88 −4 85 54 }
{ 71 −37 −90 −7 86 48 −62 −79 24 91 20 −81 −59 52 84 −11 }
{ 70 −43 −87 9 90 25 −80 −57 57 80 −25 −90 −9 87 43 −70 }
{ 69 −48 −83 24 90 2 −90 −28 81 52 −65 −71 44 84 −20 −90 }
{ 67 −54 −78 38 85 −22 −90 4 90 13 −88 −31 82 46 −73 −61 }
{ 65 −59 −71 52 77 −44 −81 37 84 −28 −87 20 90 −11 −90 2 }
{ 64 −64 −64 64 64 −64 −64 64 64 −64 −64 64 64 −64 −64 64 }
{ 62 −69 −56 73 48 −79 −41 83 33 −86 −24 88 15 −90 −7 91 }
{ 61 −73 −46 82 31 −88 −13 90 −4 −90 22 85 −38 −78 54 67 }
{ 59 −77 −37 87 11 −91 15 86 −41 −73 62 56 −79 −33 88 7 }
{ 57 −80 −25 90 −9 −87 43 70 −70 −43 87 9 −90 25 80 −57 }
{ 56 −83 −15 90 −28 −77 65 44 −87 −2 88 −41 −69 73 33 −90 }
{ 54 −85 −4 88 −46 −61 82 13 −90 38 67 −78 −22 90 −31 −73 }
{ 52 −87 7 83 −62 −41 90 −20 −77 71 28 −91 33 69 −79 −15 }
{ 50 −89 18 75 −75 −18 89 −50 −50 89 −18 −75 75 18 −89 50 }
{ 48 −90 28 65 −84 7 79 −73 −15 87 −59 −37 91 −41 −56 88 }
{ 46 −90 38 54 −90 31 61 −88 22 67 −85 13 73 −82 4 78 }
{ 44 −91 48 41 −90 52 37 −90 56 33 −90 59 28 −88 62 24 }
{ 43 −90 57 25 −87 70 9 −80 80 −9 −70 87 −25 −57 90 −43 }
{ 41 −90 65 11 −79 83 −20 −59 90 −48 −33 87 −71 −2 73 −86 }
{ 38 −88 73 −4 −67 90 −46 −31 85 −78 13 61 −90 54 22 −82 }
{ 37 −86 79 −20 −52 90 −69 2 65 −90 56 15 −77 87 −41 −33 }
{ 36 −83 83 −36 −36 83 −83 36 36 −83 83 −36 −36 83 −83 36 }
{ 33 −81 87 −48 −15 71 −90 62 −2 −59 90 −73 20 44 −86 83 }
{ 31 −78 90 −61 4 54 −88 82 −38 −22 73 −90 67 −13 −46 85 }
{ 28 −73 91 −71 24 33 −77 90 −69 20 37 −79 90 −65 15 41 }
{ 25 −70 90 −80 43 9 −57 87 −87 57 −9 −43 80 −90 70 −25 }
{ 24 −65 88 −86 59 −15 −33 71 −90 83 −52 7 41 −77 91 −79 }
{ 22 −61 85 −90 73 −38 −4 46 −78 90 −82 54 −13 −31 67 −88 }
{ 20 −56 81 −91 83 −59 24 15 −52 79 −90 84 −62 28 11 −48 }
{ 18 −50 75 −89 89 −75 50 −18 −18 50 −75 89 −89 75 −50 18 }
{ 15 −44 69 −84 91 −86 71 −48 20 11 −41 65 −83 90 −87 73 }
{ 13 −38 61 −78 88 −90 85 −73 54 −31 4 22 −46 67 −82 90 }
{ 11 −33 52 −69 81 −88 91 −87 79 −65 48 −28 7 15 −37 56 }
{ 9 −25 43 −57 70 −80 87 −90 90 −87 80 −70 57 −43 25 −9 }
{ 7 −20 33 −44 56 −65 73 −81 86 −90 91 −90 87 −83 77 −69 }
{ 4 −13 22 −31 38 −46 54 −61 67 −73 78 −82 85 −88 90 −90 }
{ 2 −7 11 −15 20 −24 28 −33 37 −41 44 −48 52 −56 59 −62 }
},
transMatrix[ m ][ n ] = transMatrixCol16to31[ m − 16 ][ n ] при m = 16..31, n = 0..63 (1202)
transMatrixCol16to31 = (1203)
{
{ 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 }
{ 62 59 56 52 48 44 41 37 33 28 24 20 15 11 7 2 }
{ −4 −13 −22 −31 −38 −46 −54 −61 −67 −73 −78 −82 −85 −88 −90 −90 }
{ −69 −77 −83 −87 −90 −91 −90 −86 −81 −73 −65 −56 −44 −33 −20 −7 }
{ −90 −87 −80 −70 −57 −43 −25 −9 9 25 43 57 70 80 87 90 }
{ −56 −37 −15 7 28 48 65 79 87 91 88 81 69 52 33 11 }
{ 13 38 61 78 88 90 85 73 54 31 4 −22 −46 −67 −82 −90 }
{ 73 87 90 83 65 41 11 −20 −48 −71 −86 −91 −84 −69 −44 −15 }
{ 89 75 50 18 −18 −50 −75 −89 −89 −75 −50 −18 18 50 75 89 }
{ 48 11 −28 −62 −84 −90 −79 −52 −15 24 59 83 91 81 56 20 }
{ −22 −61 −85 −90 −73 −38 4 46 78 90 82 54 13 −31 −67 −88 }
{ −79 −91 −77 −41 7 52 83 90 71 33 −15 −59 −86 −88 −65 −24 }
{ −87 −57 −9 43 80 90 70 25 −25 −70 −90 −80 −43 9 57 87 }
{ −41 15 65 90 79 37 −20 −69 −90 −77 −33 24 71 91 73 28 }
{ 31 78 90 61 4 −54 −88 −82 −38 22 73 90 67 13 −46 −85 }
{ 83 86 44 −20 −73 −90 −59 2 62 90 71 15 −48 −87 −81 −33 }
{ 83 36 −36 −83 −83 −36 36 83 83 36 −36 −83 −83 −36 36 83 }
{ 33 −41 −87 −77 −15 56 90 65 −2 −69 −90 −52 20 79 86 37 }
{ −38 −88 −73 −4 67 90 46 −31 −85 −78 −13 61 90 54 −22 −82 }
{ −86 −73 −2 71 87 33 −48 −90 −59 20 83 79 11 −65 −90 −41 }
{ −80 −9 70 87 25 −57 −90 −43 43 90 57 −25 −87 −70 9 80 }
{ −24 62 88 28 −59 −90 −33 56 90 37 −52 −90 −41 48 91 44 }
{ 46 90 38 −54 −90 −31 61 88 22 −67 −85 −13 73 82 4 −78 }
{ 88 56 −41 −91 −37 59 87 15 −73 −79 7 84 65 −28 −90 −48 }
{ 75 −18 −89 −50 50 89 18 −75 −75 18 89 50 −50 −89 −18 75 }
{ 15 −79 −69 33 91 28 −71 −77 20 90 41 −62 −83 7 87 52 }
{ −54 −85 4 88 46 −61 −82 13 90 38 −67 −78 22 90 31 −73 }
{ −90 −33 73 69 −41 −88 −2 87 44 −65 −77 28 90 15 −83 −56 }
{ −70 43 87 −9 −90 −25 80 57 −57 −80 25 90 9 −87 −43 70 }
{ −7 88 33 −79 −56 62 73 −41 −86 15 91 11 −87 −37 77 59 }
{ 61 73 −46 −82 31 88 −13 −90 −4 90 22 −85 −38 78 54 −67 }
{ 91 7 −90 −15 88 24 −86 −33 83 41 −79 −48 73 56 −69 −62 }
{ 64 −64 −64 64 64 −64 −64 64 64 −64 −64 64 64 −64 −64 64 }
{ −2 −90 11 90 −20 −87 28 84 −37 −81 44 77 −52 −71 59 65 }
{ −67 −54 78 38 −85 −22 90 4 −90 13 88 −31 −82 46 73 −61 }
{ −90 20 84 −44 −71 65 52 −81 −28 90 2 −90 24 83 −48 −69 }
{ −57 80 25 −90 9 87 −43 −70 70 43 −87 −9 90 −25 −80 57 }
{ 11 84 −52 −59 81 20 −91 24 79 −62 −48 86 7 −90 37 71 }
{ 73 31 −90 22 78 −67 −38 90 −13 −82 61 46 −88 4 85 −54 }
{ 90 −44 −59 84 2 −86 56 48 −88 11 81 −65 −37 90 −24 −73 }
{ 50 −89 18 75 −75 −18 89 −50 −50 89 −18 −75 75 18 −89 50 }
{ −20 −71 81 2 −83 69 24 −90 52 44 −90 33 62 −86 11 77 }
{ −78 −4 82 −73 −13 85 −67 −22 88 −61 −31 90 −54 −38 90 −46 }
{ −87 65 20 −86 69 15 −84 71 11 −83 73 7 −81 77 2 −79 }
{ −43 90 −57 −25 87 −70 −9 80 −80 9 70 −87 25 57 −90 43 }
{ 28 52 −91 56 24 −84 77 −7 −69 88 −37 −44 90 −62 −15 81 }
{ 82 −22 −54 90 −61 −13 78 −85 31 46 −90 67 4 −73 88 −38 }
{ 84 −81 24 48 −90 71 −7 −62 91 −59 −11 73 −88 44 28 −83 }
{ 36 −83 83 −36 −36 83 −83 36 36 −83 83 −36 −36 83 −83 36 }
{ −37 −28 79 −88 52 11 −69 91 −65 7 56 −90 77 −24 −41 84 }
{ −85 46 13 −67 90 −73 22 38 −82 88 −54 −4 61 −90 78 −31 }
{ −81 90 −62 11 44 −83 88 −59 7 48 −84 87 −56 2 52 −86 }
{ −25 70 −90 80 −43 −9 57 −87 87 −57 9 43 −80 90 −70 25 }
{ 44 2 −48 81 −90 73 −37 −11 56 −84 90 −69 28 20 −62 87 }
{ 88 −67 31 13 −54 82 −90 78 −46 4 38 −73 90 −85 61 −22 }
{ 77 −90 86 −65 33 7 −44 73 −90 87 −69 37 2 −41 71 −88 }
{ 18 −50 75 −89 89 −75 50 −18 −18 50 −75 89 −89 75 −50 18 }
{ −52 24 7 −37 62 −81 90 −88 77 −56 28 2 −33 59 −79 90 }
{ −90 82 −67 46 −22 −4 31 −54 73 −85 90 −88 78 −61 38 −13 }
{ −71 83 −90 90 −86 77 −62 44 −24 2 20 −41 59 −73 84 −90 }
{ −9 25 −43 57 −70 80 −87 90 −90 87 −80 70 −57 43 −25 9 }
{ 59 −48 37 −24 11 2 −15 28 −41 52 −62 71 −79 84 −88 90 }
{ 90 −90 88 −85 82 −78 73 −67 61 −54 46 −38 31 −22 13 −4 }
{ 65 −69 71 −73 77 −79 81 −83 84 −86 87 −88 90 −90 90 −91 }
},
transMatrix[ m ][ n ] = ( n & 1 ? −1 : 1 ) * transMatrixCol16to31[47 −m ][ n ] (1204)
при m =32..47, n = 0..63
transMatrix[ m ][ n ] = ( n & 1 ? −1 : 1 ) * transMatrixCol0to15[63 −m ][ n ] (1205)
при m =48..63, n = 0..63.
Чтобы сохранить ортогональность матрицы преобразования, эти матрицы преобразования квантуются более точно, чем матрицы преобразования в HEVC. В некоторых примерах для сохранения промежуточных значений преобразованных коэффициентов в пределах 16-разрядного диапазона после горизонтального преобразования и после вертикального преобразования все коэффициенты должны иметь 10-разрядные значения.
Для сигнализации схемы MTS отдельные разрешающие флаги указываются на уровне SPS для внутрикадрового предсказания или межкадрового предсказания, соответственно. Когда схема MTS разрешена на уровне SPS, флаг уровня CU сигнализируется в битовом потоке, значение флага уровня CU используется для того, чтобы указать, применяется или нет MTS к текущей CU. В примере MTS применяется только для выборки яркости. В примере флаг уровня CU сигнализируется тогда, когда выполняются следующие условия:
ширина текущей CU и высота текущей CU меньше или равны 32,
и значение флага CBF кодированного блока текущей CU равно единице.
Если значение флага уровня CU равно нулю, то DCT 2 применяется в горизонтальном направлении текущей CU и вертикальном направлении текущей CU. Если значение флага уровня CU равно единице, то сигнализируются два дополнительных флага, чтобы указать тип преобразования для горизонтального направления и вертикального направления, соответственно. Отношение сопоставления для типа преобразования и значения флага, которое показано в приведенной ниже таблице 2, относится к точности матрицы преобразования, и используются 8-разрядные ядра первичного преобразования. В примере ядра преобразования являются такими же, как и ядра преобразования, используемые в HEVC. В одном примере эти ядра преобразования содержат 4-точечное DCT-2 и DST-7, 8-точечное, 16-точечное и 32-точечное DCT-2. Кроме того, другие ядра преобразования содержат 64-точечное DCT-2, 4-точечное DCT-8, 8-точечное, 16-точечное, 32-точечное DST-7 и DCT-8, используют ядра 8-разрядного первичного преобразования.
Таблица 2. Таблица преобразования и отображения сигнализации
MTS_CU_flag MTS_Hor_flag MTS_Ver_flag Межкадровое/внутрикадровое предсказание
Горизонтальное Вертикальное
0 DCT 2
1 0 0 DST7 DST7
0 1 DCT8 DST7
1 0 DST7 DCT8
1 1 DCT8 DCT8
Как и в HEVC, остаток блока может быть закодирован в режиме пропуска преобразования. Чтобы избежать избыточности синтаксического кодирования, флаг пропуска преобразования не сигнализируется, когда значение флага уровня CU MTS_CU_flag не равно нулю. Режим пропуска преобразования разрешен тогда, когда ширина и высота блока равны или меньше 4.
Режим кодирования подраздела (ISP) внутрикадрового предсказания представляет собой инструмент, принятый в VVC Draft 4.0 (JVET-M1001). Когда применяется режим кодирования ISP, блок яркости с внутрикадровым предсказанием делится по вертикали или горизонтали на 2 или 4 части, в зависимости от размеров блока, как показано в таблице 3. На фиг.6 и 7 показаны примеры двух возможных вариантов. Каждый подраздел содержит не менее 16 выборок.
Таблица 3. Количество подразделов в зависимости от размера блока
Размер блока Количество подразделов
Без разделения
and 2
другие случаи 4
Когда режим кодирования подразделов внутрикадрового предсказания включен для текущего блока (независимо от того, включен или отключен MTS для текущего блока), ядро преобразования не выбирается в соответствии с индексом MTS, но ядро преобразования выбирается на основе режима внутрикадрового предсказания текущего блока. В примере, который показан в следующей таблице 4, trTypeHor указывает ядро преобразования для горизонтального направления текущего блока в режиме ISP, и trTypeVer указывает ядро преобразования для вертикального направления текущего блока в режиме ISP.
Согласно таблице 4, когда значение trTypeVer равно 0, или значение trTypeHor равно 0, ядро DCT 2 преобразования выбирается для текущего блока; когда значение trTypeVer равно 1, или значение trTypeHor равно 1, для текущего блока выбирается ядро DST7 преобразования.
Таблица 4. Спецификация trTypeHor и trTypeVer в зависимости от predModeIntra
predModeIntra (режим внутрикадрового предсказания для блока) trTypeHor trTypeVer
INTRA_PLANAR,
INTRA_ANGULAR31,
INTRA_ANGULAR32,
INTRA_ANGULAR34,
INTRA_ANGULAR36,
INTRA_ANGULAR37
(nTbW (ширина блока преобразования) >= 4 &&
nTbW <= 16) ? 1 : 0
(nTbH (высота блока преобразования)>= 4 &&
nTbH <= 16) ? 1 : 0
INTRA_ANGULAR33,
INTRA_ANGULAR35
0 0
INTRA_ANGULAR2,
INTRA_ANGULAR4,…,INTRA_ANGULAR28,
INTRA_ANGULAR30,
INTRA_ANGULAR39,
INTRA_ANGULAR41,…,INTRA_ANGULAR63,
INTRA_ANGULAR65
(nTbW >= 4 &&
nTbW <= 16) ? 1 : 0
0
INTRA_ANGULAR3,
INTRA_ANGULAR5,…, INTRA_ANGULAR27,
INTRA_ANGULAR29,
INTRA_ANGULAR38,
INTRA_ANGULAR40,…,INTRA_ANGULAR64,
INTRA_ANGULAR66
0 (nTbH >= 4 &&
nTbH <= 16) ? 1 : 0
Выбор ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания, раскрыт в JVET-M0303.
В способе выбора ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания, предложено использовать DST7 для более короткой стороны блока преобразования и DCT 2 для более длинной стороны блока преобразования. Для квадратных блоков предлагается использовать DST7 в том случае, если MTS отключена для последовательности. Адаптивная форма используется для внутренних блоков, которые предсказываются в режимах пространственного предсказания (и отключены для кросс-компонентныых предсказанных блоков).
В примере выбор ядра внутрикадрового преобразования блока выполняется на основе приведенных ниже уравнений, когда MTS отключена. trTypeHor указывает ядро преобразования для горизонтального направления текущего блока в режиме ISP, и trTypeVer указывает ядро преобразования для вертикального направления текущего блока в режиме ISP, nTbW – ширина блока преобразования, и nTbH – высота блока преобразования.
Следует отметить, что блок сначала кодируется с использованием определенного режима кодирования, блок называется блоком кодирования, блок кодирования может быть предсказан с использованием определенного способа предсказания, разность между исходными выборками и предсказанными выборками называется остаточными сигналами, и остаточные сигналы дополнительно преобразуются. Преобразованные блоки определяются как блок преобразования. В обычных случаях размеры блока кодирования (то есть ширина блока кодирования и высота блока кодирования) равны размерам блока преобразования (то есть ширине блока преобразования и высоте блока преобразования). Представлены следующие примеры случаев, когда размеры блока кодирования не равны размерам блока преобразования.
1. Размер блока кодирования имеет размер 128x128, он неявно разделен на 4 блока преобразования размером 64x64.
2. Если блок кодирования кодируется в режиме ISP, несколько блоков преобразования отделяются от соответствующего блока кодирования.
3. Если блок кодирования кодируется в режиме SBT, преобразуется только часть блока кодирования, поэтому размер блока преобразования меньше размера блока кодирования.
Согласно уравнениям, когда значение trTypeVer равно 0, или значение trTypeHor равно 0, для текущего блока выбирается ядро DCT2 преобразования; когда значение trTypeVer равно 1, или значение trTypeHor равно 1, для текущего блока выбирается ядро DST7 преобразования.
trTypeHor = (nTbW >= 4 && nTbW <= 16 && nTbW <= nTbH) ? 1 : 0 EQ-1
trTypeVer = (nTbH >= 4 && nTbH <= 16 && nTbH <= nTbW) ? 1 : 0 EQ-2
В EQ-1 и EQ-2 nTbW указывает ширину текущего блока преобразования TU, nTbH указывает высоту текущей TU, nSbTbW указывает ширину под-TU, полученного в результате разделения ISP, и nSbTbH указывает высоту под-TU в результате разделения ISP.
В данном документе ограничение размера (4 и 16) используется для выборок яркости, блок может иметь компонент яркости и компонент цветности. Если видеопоследовательность не подвергается поддискретизации сигнала цветности, то размер выборок яркости и размер выборок цветности равны. Если видеопоследовательность является поддискретизированной по цветности (например, видео 4: 2: 0), то размер выборок цветности равен размеру выборок яркости, деленному на два. Как правило, указанное пороговое значение всегда имеет размер выборки яркости.
В некоторых примерах выбор ядра неявного преобразования ISP основан на режиме внутрикадрового предсказания с довольно сложной таблицей. В таблице также представлена зависимость между выбором ядра преобразования и режимом внутрикадрового предсказания. Кроме того, выбор ядра неявного преобразования ISP и способа адаптивного к форме внутрикадрового предсказания не согласован.
Следующие предложенные решения обращены к проблемам сложности выбора ядра неявного преобразования ISP, зависимости выбора ядра преобразования ISP с режимом внутрикадрового предсказания, гармонизации выбора ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания и ISP. В некоторых вариантах осуществления эти решения основаны DST7, и ядра преобразования DCT8 активируются случаем флага высокого уровня (значение sps_mts_enabled_flag равно 1).
В варианте осуществления,
Решение 1:
Согласно решению 1, выбор ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания, применяется в зависимости от блока межкадрового предсказания, обрабатываемого с использованием режима ISP, с ограничением ширины и высоты блока.
Если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-1 и EQ-2 используются для определения выбранного ядра преобразования текущего блока. Использование EQ-1 и EQ-2 в данном документе не зависит от того, включен или отключен режим MTS.
Для текущего блока межкадрового предсказания, который не обрабатывается с использованием режима ISP, если MTS включен на уровне последовательности, то ядро преобразования выбирается на основе индекса MTS. В противном случае (если MTS отключена на уровне последовательности), ядро преобразования выбирается на основе EQ-1 и EQ-2.
Это предложенное решение гармонизирует выбор ядра ISP и выбор ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания. Кроме того, предложенное решение позволяет уменьшить сложность выбора ядра неявного преобразования в режиме ISP и устранить зависимость режима внутрикадрового предсказания без изменения наихудшего случая.
В примере, так как вычисление DST 7 является более сложным, чем вычисление DCT 2, поэтому худшим случаем является тот, в котором весь блок ISP используется DST7 как для ядра горизонтального преобразования, так и для ядра вертикального преобразования. Предложенный способ не изменяет наихудший случай выбора ядра неявного преобразования ISP.
В другом варианте осуществления,
Решение 2:
Согласно решению 2 применяется выбор ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания, в зависимости от блока межкадрового предсказания, обрабатываемого с использованием режима ISP с ограничением ширины и высоты подблока, и подблок является результатом разделения ISP.
Если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-3 и EQ-4 используются для определения ядра преобразования для текущего блока. Использование EQ-3 и EQ-4 в данном документе не зависит от того, включен или отключен режим MTS. В EQ-3 и EQ-4 nTbW указывает ширину текущей TU, nTbH указывает высоту текущей TU, nSbTbW указывает ширину вспомогательной TU, полученной в результате разбиения ISP, и nSbTbH указывает высоту вспомогательной TU в результате разбиения ISP.
trTypeHor = (nTbW >= 4 && nTbW <= 16 && nSbTbW <= nSbTbH) ? 1 : 0 EQ-3
trTypeVer = (nTbH >= 4 && nTbH <= 16 && nSbTbH <= nSbTbW) ? 1 : 0 EQ-4
Для текущего блока межкадрового предсказания, который не обрабатывается с использованием режима ISP, если MTS включен на уровне последовательности, ядро преобразования выбирается на основе индекса MTS. Если MTS отключена на уровне последовательности, ядро преобразования выбирается на основе EQ-1 и EQ-2.
Это предложенное решение гармонизирует выбор ядра ISP и неявного преобразования, адаптивного к форме внутрикадрового предсказания. Кроме того, предложенное решение позволяет уменьшить сложность выбора ядра неявного преобразования режима ISP и устранить внутреннюю зависимость без изменения наихудшего случая.
В одном примере, так как вычисление DST7 является более сложным, чем вычисление DCT 2, худшим случаем является то, что весь блок ISP используется DST7 как для ядра горизонтального преобразования, так и для ядра вертикального преобразования. Предложенный способ не изменяет наихудший случай выбора ядра неявного преобразования ISP.
В другом варианте осуществления,
Решение 3
Согласно решению 3, предложено использовать ядро преобразования DST7 для блока межкадрового предсказания, который обрабатывается с использованием режима ISP с ограничением размера.
Если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-5 и EQ-6 используются для определения ядра преобразования текущего блока. Использование EQ-5 и EQ-6 в данном документе не зависит от того, включен или отключен режим MTS.
trTypeHor = (nTbW >= 4 && nTbW <= 16) ? 1 : 0 EQ-5
trTypeVer = (nTbH >= 4 && nTbH <= 16) ? 1 : 0 EQ-6
Другими словами, если текущий блок обрабатывается с использованием режима ISP,
В примере, если ширина TU больше или равна 4 в выборках яркости, и ширина TU меньше или равна 16 выборкам, то DST7 используется для горизонтального направления. В противном случае DCT 2 используется для горизонтального направления. В примере изображение видео имеет компонент яркости (Y) и компоненты цветности (Cb, Cr). Если цветность поддискретизирована (например, видео 4:2:0), 4 отсчета яркости соответствуют 2 выборкам цветности.
В примере, если высота TU больше или равна 4 в выборках яркости, и высота TU меньше или равна 16 в выборках яркости, то DST7 используется для вертикального направления. В противном случае DCT 2 используется для вертикального направления.
Для текущего блока межкадрового предсказания, который не обрабатывается с использованием режима ISP, если MTS включен на уровне последовательности, ядро преобразования выбирается на основе индекса MTS. Если MTS отключена на уровне последовательности, ядро преобразования выбирается на основе EQ-1 и EQ-2.
Это предложенное решение позволяет уменьшить сложность выбора ядра неявного преобразования в режиме ISP и устранить зависимость режима внутрикадрового предсказания без изменения наихудшего случая.
В одном примере, так как вычисление DST7 является более сложным, чем вычисление DCT 2, поэтому худшим случаем является тот, в котором весь блок ISP используется DST7 как для ядра горизонтального преобразования, так и для ядра вертикального преобразования. Предложенный способ не изменяет наихудший случай выбора ядра неявного преобразования ISP.
В другом варианте осуществления,
Решение 4:
Согласно решению 4, выбор ядра неявного преобразования, адаптивного к форме внутрикадрового предсказания, применяется в зависимости от ширины и высоты TU для блока межкадрового предсказания, обрабатываемого с использованием режима ISP, когда внутрикадровое предсказание блока не использует планарный режим. Если блок предсказывается с использованием режима планарного внутрикадрового предсказания, то ядра как горизонтального, так и вертикального преобразования используют DST 7 с ограничением размера.
В примере, если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-1 и EQ-2 используются для определения ядра преобразования текущего блока, когда режим внутрикадрового предсказания текущего блока межкадрового предсказания не является планарным режимом. Использование EQ-1 и EQ-2 не зависит от того, включен или отключен режим MTS.
В примере, если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-5 и EQ-6 используются для определения ядра преобразования текущего блока, когда режим внутрикадрового предсказания текущего блока межкадрового предсказания является планарным режимом. Использование EQ-5 и EQ-6 в данном документе не зависит от того, включен или отключен режим MTS.
Для текущего блока межкадрового предсказания, который не обрабатывается с использованием режима ISP, если MTS включен на уровне последовательности, ядро преобразования выбирается на основе индекса MTS. Если MTS отключена на уровне последовательности, ядро преобразования выбирается на основе EQ-1 и EQ-2.
Это предложенное решение гармонизирует выбор ядра ISP и неявного преобразования, адаптивного к форме внутрикадрового предсказания. Кроме того, решение позволяет уменьшить сложность выбора ядра неявного преобразования режима ISP без изменения наихудшего случая.
В примере, так как вычисление DST7 является более сложным, чем вычисление DCT 2, поэтому худшим случаем является тот, в котором весь блок ISP используется DST7 как для ядра горизонтального преобразования, так и для ядра вертикального преобразования. Предложенный способ не изменяет наихудший случай выбора ядра неявного преобразования ISP.
В другом варианте осуществления,
Решение 5:
Согласно решению 5 предложено выбирать ядро преобразования на основе направления разделения ISP.
В примере, если текущий блок внутрикадрового предсказания обрабатывается с использованием режима ISP, уравнения EQ-7 и EQ-8 используются для определения ядра преобразования текущего блока, когда режим внутрикадрового предсказания текущего блока межкадрового предсказания не является планарным режимом. Использование EQ-7 и EQ-8 в данном документе не зависит от того, включен или отключен режим MTS.
trTypeHor = (nTbW >= 4 && nTbW <= 16 && IntraSubPartitionsSplitType = = ISP_VER_SPLIT) ? 1 : 0 EQ-7
trTypeVer = (nTbH >= 4 && nTbH <= 16 && IntraSubPartitionsSplitType = = ISP_HOR_SPLIT) ? 1 : 0 EQ-8
IntraSubPartitionsSplitType используется для указания типа режима ISP. В некоторых примерах режим ISP может содержать: разбиение на 4 subTU, разбиение на 2 subTU или типы горизонтального разбиения, вертикального разбиения или без разбиение.
ISP_VER_SPLIT используется для указания режима вертикального разделения ISP; ISP_HOR_SPLIT используется для указания режима горизонтального разделения ISP.
Когда текущий блок внутрикадрового предсказания использует вертикальное разделение ISP, ширина блока больше или равна 4 в выборках яркости, и высота блока меньше или равна 16 в выборках яркости, то DST7 выбирается для ядра горизонтального преобразования (ядра преобразования, используемого для горизонтального направления). В противном случае для ядра горизонтального преобразования выбирается DCT 2.
В примере, если текущий блок внутрикадрового предсказания использует горизонтальное разделение ISP, высота блока больше или равна 4 в выборках яркости, и высота блока меньше или равна 16 в выборках яркости, то DST7 выбирается для ядра вертикального преобразования (ядра преобразования, используемого для вертикального направления). В противном случае для ядра вертикального преобразования выбирается DCT 2.
Для текущего блока межкадрового предсказания, который не обрабатывается с использованием режима ISP, если MTS включен на уровне последовательности, ядро преобразования выбирается на основе индекса MTS. Если MTS отключена на уровне последовательности, ядро преобразования выбирается на основе EQ-1 и EQ-2.
Это предложенное решение позволяет уменьшить сложность выбора ядра неявного преобразования режима ISP и устранить зависимость режима внутрикадрового предсказания без изменения наихудшего случая.
В примере, так как вычисление DST7 является более сложным, чем вычисление DCT 2, поэтому худшим случаем известного уровня техники является тот, в котором весь блок ISP используется DST7 как для ядра горизонтального преобразования, так и для ядра вертикального преобразования. Предложенный способ не изменяет наихудший случай выбора ядра неявного преобразования ISP.
В другом варианте осуществления,
Решение 6
Согласно решению 6 предложено использовать только ядра DST7 для блока межкадрового предсказания, когда MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания.
В примере, если MTS отключена на уровне последовательности как для ядра горизонтального преобразования, так и для ядра вертикального преобразования, DST7 используется для горизонтального направления, когда ширина текущего блока межкадрового предсказания больше или равна 4 выборкам и меньше или равна 16 выборкам, в противном случае выбирается DCT 2, как описано в EQ-9.
В примере, если MTS отключена на уровне последовательности как для межсекционного, так и для слайса внутрикадрового предсказания, DST7 используется для вертикального направления, когда высота текущего блока межкадрового предсказания больше или равна 4 выборкам и меньше или равна 16 выборкам, в противном случае выбирается DCT 2, как описано в EQ-10.
trTypeHor = (nTbW >= 4 && nTbW <= 16) ? 1 : 0 EQ-9
trTypeVer = (nTbH >= 4 && nTbH <= 16) ? 1 : 0 EQ-10
В одном варианте осуществления предложенное решение 6 гармонизировано с решением 3, и дополнительное решение 6 обеспечивает дополнительный выигрыш от кодирования без дополнительного усложнения.
В другом варианте осуществления,
Решение 7
Согласно решению 7 предложено использовать способ адаптации формы и соотношения для выбора ядра преобразования для блока межкадрового предсказания, когда MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания.
В примере, если MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания, блока межкадрового предсказания имеет высоту и ширину, которые больше или равны 4 в выборках яркости и меньше или равны 16 в выборках яркости (например, nTbW <=16 && nTbW >=4 && nTbH <=16 && nTbH >=4),
если значение отношения ширины к высоте блока (вычисленное в EQ-11) текущего блока меньше или равно 2, то DST7 используется как для горизонтального, так и для вертикального направления;
в противном случае (значение отношения больше 2) ядро преобразования DST7 используется для более короткого края, ядро DCT 2 преобразования используется для более длинного края. Например, если блок имеет ширину 16 и высоту 4, то более короткий край равен 4, и более длинный край равен 16. В этом примере ядро преобразования DST7 используется для более короткого края с высотой 4 (вертикальное направление), ядро DCT 2 преобразования используется для более длинного края шириной 16 (горизонтальное направление).
Способ описан в соответствии с EQ-11 и EQ-12, и отношение вычисляется в соответствии с EQ-13, где log2() – логарифм масштабирования с основанием 2, и abs() – оператор абсолютного значения.
trTypeHor = (nTbW >= 4 && nTbW <= 16 && (nTbW < nTbH || Ratio <=2)) ? 1 : 0
EQ-11
trTypeVer = (nTbH >= 4 && nTbH <= 16 && (nTbH < nTbW|| Ratio <=2)) ? 1 : 0
EQ-12
Ratio = log2 (abs(width –height)) EQ-13.
В одном варианте осуществления предложенное решение 6 обеспечивает дополнительный выигрыш от кодирования без дополнительного усложнения.
В другом варианте осуществления,
Решение 8
Согласно решению 8 отношение ширины к высоте блока в решении 7 может быть вычислено на основе EQ-14.
Ratio = 1<< abs(log2 (width) – log2 (height)) EQ-14.
Где "<<" – операция сдвига левого бита, log2() – логарифм масштабирования с основанием 2, abs() – операция получения абсолютного значения.
Другими словами, отношением является отношение ширины к высоте в том случае, если ширина больше высоты; в противном случае (ширина меньше или равна высоте) отношением является отношение высоты к ширине.
Решение 9
Согласно решению 9, решение 7 или решение 8 можно объединить с решениями 1, 2 и 4, чтобы заменить часть, адаптивную к форме, на решение 7 или решение 8, предложенные способом отношения, адаптивного к форме.
Пример 1. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
когда режимом предсказания текущего блока является внутрикадровое предсказание, и текущий блок обрабатывается с использованием режима кодирования подраздела внутрикадрового предсказания (ISP),
определение того, больше или равна ширина текущего блока первому пороговому значению (в примере первое пороговое значение равно 4, и единицей для первого порогового значения являются выборки яркости), и меньше или равна ширина текущего блока второму пороговому значению (в примере второе пороговое значение равно 16, и единицей для второго порогового значения являются выборки яркости);
Когда ширина текущего блока больше или равна первому пороговому значению и меньше или равна второму пороговому значению, ядро DST 7 преобразования используется для горизонтального преобразования текущего блока.
Пример 2. Способ согласно примеру 1, в котором, когда ширина текущего блока меньше первого порогового значения, или когда ширина текущего блока больше второго порогового значения,
ядро преобразования DCT 2 используется для горизонтального преобразования текущего блока.
Пример 3. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
когда режимом предсказания текущего блока является внутрикадровое предсказание, и текущий блок обрабатывается с использованием режима кодирования подраздела внутрикадрового предсказания (ISP),
определение того, больше или равна высота текущего блока третьему пороговому значению (в примере третье пороговое значение равно 4, и единицей для третьего порогового значения являются выборки яркости), и меньше или равна высота текущего блока четвертому пороговому значению (в примере четвертое пороговое значение равно 16, и единицей для четвертого порогового значения являются выборки яркости);
Когда высота текущего блока больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению, ядро DST 7 преобразования используется для вертикального преобразования текущего блока.
Пример 4. Способ примера 3, в котором, когда высота текущего блока меньше третьего порогового значения, или когда высота текущего блока больше четвертого порогового значения,
Ядро преобразования DCT 2 используется для вертикального преобразования текущего блока.
Пример 5. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
когда схема выбора множественного преобразования (MTS) недоступна для текущего блока (например, MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания),
определение того, больше или равна ширина текущего блока первому пороговому значению (в примере первое пороговое значение равно 4, и единицей для первого порогового значения являются выборки яркости), и меньше или равна ширина текущего блока второму пороговому значению (в примере второе пороговое значение равно 16, и единицей для второго порогового значения являются выборки яркости);
Когда ширина текущего блока больше или равна первому пороговому значению и меньше или равна второму пороговому значению, ядро DST 7 преобразования используется для горизонтального преобразования текущего блока.
Пример 6. Способ согласно примеру 5, в котором, когда ширина текущего блока меньше первого порогового значения, или когда ширина текущего блока больше второго порогового значения,
ядро преобразования DCT 2 используется для горизонтального преобразования текущего блока.
Пример 7. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
когда схема выбора множественного преобразования (MTS) недоступна для текущего блока (например, MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания),
определение того, больше или равна высота текущего блока третьему пороговому значению (в примере третье пороговое значение равно 4, и единицей для третьего порогового значения являются выборки яркости), и меньше или равна высота текущего блока четвертому пороговому значению (в примере четвертое пороговое значение равно 16, и единицей для четвертого порогового значения являются выборки яркости);
Когда высота текущего блока больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению, ядро DST 7 преобразования используется для вертикального преобразования текущего блока.
Пример 8.
Способ согласно примеру 7, в котором, когда высота текущего блока меньше третьего порогового значения, или когда высота текущего блока больше четвертого порогового значения,
ядро преобразования DCT 2 используется для вертикального преобразования текущего блока.
Пример 9. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
когда схема выбора множественного преобразования (MTS) недоступна для текущего блока (например, MTS отключена на уровне последовательности как для слайса межкадрового предсказания, так и для слайса внутрикадрового предсказания), ширина текущего блока больше или равна первому пороговому значению (в примере первое пороговое значение равно 4, и единицей для первого порогового значения являются выборки яркости) и меньше или равна второму пороговому значению (в примере второе пороговое значение равно 16, и единица для второго порогового значения являются выборки яркости),
и высота текущего блока больше или равна третьему пороговому значению (в примере третье пороговое значение равно 4, и единицей для третьего порогового значения являются выборки яркости) и меньше или равна четвертому пороговому значению (в примере четвертое пороговое значение равно 16, и единицей измерения четвертого порогового значения являются выборки яркости),
определение того, превышает или нет значение отношения ширины к высоте блока, соответствующее текущему блоку, пятое пороговое значение (в примере пятое пороговое значение равно 2),
когда значение отношения ширины к высоте блока меньше или равно пятому пороговому значению,
ядро преобразования DST 7 используется для горизонтального и вертикального преобразования текущего блока.
Пример 10. Способ согласно примеру 9, в котором, когда значение отношения ширины блока к высоте больше пятого порогового значения, и ширина блока меньше высоты блока,
ядро преобразования DST 7 используется для горизонтального преобразования текущего блока, и базовое преобразование DCT 2 используется для вертикального преобразования текущего блока.
Пример 11. Способ согласно примеру 9 или 10, в котором, когда значение отношения ширины к высоте блока больше, чем пятое пороговое значение, и ширина блока больше, чем высота блока,
ядро DCT 2 преобразования используется для горизонтального преобразования текущего блока, и ядро DST 7 преобразования используется для вертикального преобразования текущего блока.
Пример 12. Кодер (20), содержащий схему обработки для выполнения способа согласно любому из примеров 1-11.
Пример 13. Декодер (30), содержащий схему обработки для выполнения способа согласно любому из примеров 1-11.
Пример 14. Компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из примеров 1-11.
Пример 15. Декодер или кодер, содержащий:
один или более процессоров; и
невременный машиночитаемый носитель информации, связанный с процессорами и хранящий программы для исполнения процессорами, причем программы при их исполнении процессорами, конфигурирует декодер для выполнения способа согласно любому из примеров 1-11.
Ниже приводится пояснение приложений способа кодирования, а также способа декодирования, который показан в вышеупомянутых вариантах осуществления, и системы, использующей их.
На фиг.8 показана блок-схема, показывающая систему 3100 доставки содержания для реализации услуги распространения содержания. Эта система 3100 доставки содержания включает в себя устройство 3102 захвата, терминальное устройство 3106 и дополнительно включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB, любую их комбинацию или т.п.
Устройство 3102 захвата вырабатывает данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы, устройство 3102 захвата может передавать данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает закодированные данные в терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения, камеру, смартфон или планшетный компьютер, компьютер или ноутбук, систему видеоконференцсвязи, PDA, устройство, установленное на транспортном средстве, любую их комбинацию или т.п. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет закодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распределяет по отдельности кодированные аудиоданные и кодированные видеоданные для терминального устройства 3106.
В системе 3100 доставки содержания терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеомагнитофон (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, устройство 3124, установленное на транспортном средстве, любая их комбинация или т.п, которые способны декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-адресат 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.
Для терминального устройства с собственным дисплеем, например, смартфона или планшетного компьютера 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или устройства 3124, установленного на транспортном средстве, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, например, STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
На фиг.9 показана схема, иллюстрирующая структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 примет поток из устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, но без ограничения, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), любую их комбинацию или тому подобное.
После того, как блок 3202 обработки протокола обработает поток, вырабатывается потоковый файл. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются в видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.
С использованием процесса демультиплексирования вырабатываются элементарный видеопоток (ES), аудио ES и при необходимости субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для выработки видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для выработки аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может храниться в буфере (не показан на фиг.9) перед подачей его в блок 3212 синхронизации. Аналогичным образом, аудиокадр может храниться в буфере (не показан на фиг.9) перед подачей его в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и звуковой кадр и подает видео/аудио в блок 3214 отображения видео/аудио. Например, блок 3212 синхронизации синхронизирует представление информации видео и аудио. Информация может быть закодирована в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки непосредственно потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры в блок 3216 отображения видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления могут быть включено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определены более точно, и определены дополнительные операции, такие как возведение в степень и деление действительных чисел. Правила нумерации и подсчета, как правило, начинаются с 0, например, "первый" эквивалентен 0-му, "второй" эквивалентен 1-му и т.д.
Арифметические операторы
Приведенные ниже арифметические операторы определены следующим образом:
+ Сложение
Вычитание (как оператор с двумя аргументами) или отрицание (как унарный оператор префикса)
* Умножение, включая умножение матриц
xy Возведение в степень. Указывает x в степени y. В других контекстах такое обозначение используется для надстрочного индекса, не предназначенного для интерпретации возведения в степень.
/ Целочисленное деление с усечением результата до нуля. Например, 7/4 и -7/-4 усекаются до 1, и -7/4 и 7/-4 усекаются до -1.
÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.
Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление.
Суммирование f(i), где i принимает все целые значения от x до y включительно.
x % y Модуль. Остаток от деления x на y, определен только для целых чисел x и y при x >= 0 и y > 0.
Логические операторы
Приведенные ниже логические операторы определены следующим образом:
x && y булево логическое "И" для x и y
x | | y булево логическое "ИЛИ" x и y
! булево логическое "НЕ"
x ? y : z если x равен значению "ИСТИНА" (TRUE) или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.
– Операторы отношения
Приведенные ниже операторы отношения определены следующим образом:
> больше
>= больше или равно
< меньше
<= меньше или равно
= = равно
!= не равно
Когда оператор отношения применяется к синтаксическому элементу или переменной, которой было присвоено значение "na" (не применимо), значение "na" обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение "na" не считается равным любому другому значению.
Поразрядные операторы
Приведенные ниже поразрядные операторы определены следующим образом:
& Поразрядное "И". При выполнении операций с целочисленными аргументами производится действие над представлением целочисленного значения с дополнением до двух. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
| Поразрядное "ИЛИ". При выполнении операций с целочисленными аргументами производится действие над представлением с дополнением до двух целочисленного значения. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
^ Поразрядное "ИСКЛЮЧАЮЩЕЕ ИЛИ". При выполнении операций с целочисленными аргументами производится действие над представлением с дополнением до двух целочисленного значения. При выполнении операций с двоичным аргументом, который содержит меньше разрядов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых разрядов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Разряды, сдвинутые в старшие значащие разряды (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.
x << y Арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Разряды, сдвинутые в младшие значащие разряды (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Приведенные ниже арифметические операторы определены следующим образом:
= Оператор присваивания
+ + Приращение, то есть x + + эквивалентно x = x + 1, при его использовании в индексе массива, оценивает значение переменной до операции приращения.
− − Уменьшение, то есть x− - эквивалентно x = x – 1, при его использовании в индексе массива, оценивает значение переменной до операции уменьшения.
+= Увеличение на указанную величину, то есть X + = 3 эквивалентно x = x + 3, и x + = (−3) эквивалентно x = x + (−3).
−= Уменьшение на указанную величину, то есть X - = 3 эквивалентно x = x - 3, и x - = (−3) эквивалентно x = x - (−3).
Обозначение диапазона
Для указания диапазона значений используются следующие обозначения:
x = y..z x принимает целые значения, начиная с y до z, включительно, где x, y и z являются целыми числами, и z больше y.
Математические функции
Приведенные ниже математические функции определены следующим образом:
Abs(x) =
Asin(x) тригонометрическая обратная функция синуса, которая производит действие над аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне - от π ÷ 2 до π ÷ 2 включительно в радианах.
Atan(x) the тригонометрическая функция арктангенса, которая производит действие над аргументом x при выходном значении в диапазоне от - π ÷ 2 до π ÷ 2 включительно в радианах.
Atan2( y, x ) =
Ceil(x) наименьшее целое число, большее или равное х.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) − 1, x)
Clip1C(x) = Clip3(0, (1 << BitDepthC) − 1, x)
Clip3(x, y, z) =
Cos(x) тригонометрическая косинусная функция, работающая с аргументом x в радианах.
Floor(x) наибольшее целое число, меньшее или равное x.
GetCurrMsb( a, b, c, d ) =
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,718 281 828 ...).
Log2(x) логарифм по основанию 2 числа x.
Log10(x) десятичный логарифм x.
Min(x, y) =
Max(x, y) =
Round(x) = Sign(x) * Floor(Abs(x) + 0.5)
Sign(x) =
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в радианах
Sqrt(x) =
Swap(x, y) = (y, x)
Tan(x) тригонометрическая тангенциальная функция, которая производит действие над аргументом x в радианах.
Порядок приоритета операций
Когда порядок приоритета в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.
- Операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице ниже указан приоритет операций от высшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритета, используемый в данном описании, является таким, который используется в языке программирования C.
Таблица: Приоритет операций от самого высокого (вверху таблицы) до самого низкого (внизу таблицы)
операции (с операндами x, y и z)
"x++", "x− −"
"!x", "−x" (как унарный префиксный оператор)
xy
"x * y", "x / y", "x ÷ y", "", "x % y"
"x + y", "x − y" (как оператор с двумя аргументами), ""
"x  <<  y", "x  >>  y"
"x < y", "x  <=  y", "x > y", "x  >=  y"
"x  = =  y", "x  !=  y"
"x & y"
"x | y"
"x  &&  y"
"x  | |  y"
"x ? y : z"
"x..y"
"x = y", "x  +=  y", "x  −=  y"
Текстовое описание логических операций
В тексте представлено изложение логических операций, которые могут быть описаны математически в следующей форме:
if(условие 0)
утверждение 0
else if(условие 1)
утверждение 1
...
else /* информативное замечание по оставшемуся условию */
утверждение n
можно описать следующим образом:
... следующим образом / ... применяется следующее:
– If условие 0, утверждение 0
– В противном случае, if условие 1, утверждение 1
– ...
– В противном случае (информативное замечание по оставшемуся условию), утверждение n
Каждое утверждение "Если ... В противном случае, если ... В противном случае, ..." в тексте вводится с фразой "... следующим образом" или "... применяется следующее" за которой сразу следует "Если ... ". Последнее условие "Если ... В противном случае, если ... В противном случае, ..." представляет собой всегда "В противном случае, ...". Чередующиеся утверждения "Если ... В противном случае, если ... В противном случае, ..." могут быть идентифицированы путем сопоставления "... следующим образом " или "... применяется следующее" с окончанием "В противном случае, ...".
В тексте утверждение логических операций будет математически описано в следующем виде:
if(условие 0a && условие 0b)
утверждение 0
else if(условие 1a | | условие 1b)
утверждение 1
...
else
утверждение n
можно описать следующим образом:
... следующим образом / ... применяется следующее:
– Если все следующие условия верны, утверждение 0:
– условие 0a
– условие 0b
– В противном случае, если выполняется одно или несколько из следующих условий, утверждение 1:
– условие 1a
– условие 1b
– ...
– В противном случае, утверждение n
В тексте утверждение логических операций, как было бы математически описано в следующей форме:
if (условие 0)
утверждение 0
if (условие 1)
утверждение 1
можно описать следующим образом:
Когда условие 0, утверждение 0
Когда условие 1, утверждение 1.
Хотя варианты осуществления настоящего изобретения были в основном описаны на основе кодирования видео, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10) и другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, то есть обработки или кодирования отдельного изображения независимо от любого предшествующего или последовательного изображения, как при кодировании видео. В общем, блоки 244 (кодер) и 344 (декодер) межкадрового предсказания могут быть недоступны только в случае, если кодирование обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (которые упоминаются также как инструментальные средства или технологии) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например, вычисления остатка 204/304, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутрикадрового предсказания 254/354, и/или контурной фильтрации 220, 320, энтропийного кодирования 270 и энтропийного декодирования 304.
Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные в данном документе, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы в аппаратных средствах, программном обеспечении, программно-аппаратных средствах или любой их комбинации. В случае реализации в программном обеспечении, функции могут храниться на машиночитаемом носителе информации или передаваться через среду связи в виде одной или нескольких инструкций или кода и исполняться аппаратным процессором. Машиночитаемые носители информации могут включать в себя машиночитаемый носитель информации, который соответствует материальному носителю информации, например, носителю информации, или носителю связи, в том числе любой носитель информации, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители информации, как правило, могут соответствовать (1) материальным машиночитаемым носителям информации, которые являются невременными, или (2) среде передачи данных, такой как сигнал или несущая волна. Носители информации могут быть любыми доступными носителями информации, к которым может обращаться один или несколько компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель информации.
В качестве примера, но не ограничения, такие машиночитаемые носители информации могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель информации, который может быть использован для хранения желаемого программного кода в виде инструкций или структур данных, и к которым может обращаться компьютер. Кроме того, любое соединение называется соответствующим образом машиночитаемым носителем информации. Например, если инструкции передаются из веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио- и микроволновые, включены в определение носителя информации. Однако следует понимать, что машиночитаемые носители информации и носители для хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, и вместо этого направлены на невременные, материальные носители информации. Используемые в данном документе термины "магнитный диск" и "оптический диск" включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий магнитный диск и Blu-ray диск, где магнитные диски, как правило, воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров, Комбинации вышеупомянутых носителей информации также должны быть включены в объем охраны машиночитаемых носителей информации.
Команды могут исполняться одним или несколькими процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, используемый в данном документе термин "процессор" может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных в данном документе технологий. Кроме того, в некоторых аспектах описанные в данном документе функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, технологии могут быть также полностью реализованы в одной или нескольких схемах или логических элементах.
Технологии настоящего раскрытия могут быть реализованы в большом количестве устройств или устройств, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящем раскрытии описаны различные компоненты, модули или блоки для того, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но необязательно требующих реализации с помощью различных аппаратных блоков. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или программно-аппаратными средствами.

Claims (31)

1. Способ кодирования, реализуемый устройством декодирования, содержащий:
когда режимом предсказания текущего блока кодирования является внутрикадровое предсказание, и текущий блок кодирования обрабатывается с использованием режима кодирования подраздела внутрикадрового предсказания (ISP),
определение того, больше или равна ширина текущего блока преобразования первому пороговому значению, и меньше или равна ширина текущего блока преобразования второму пороговому значению, где текущий блок преобразования отделен от текущего блока кодирования, в котором первое пороговое значение равно 4, второе пороговое значение равно 16;
определение того, больше или равна высота текущего блока преобразования третьему пороговому значению, и меньше или равна высота текущего блока преобразования четвертому пороговому значению, в котором третье пороговое значение равно 4, четвертое пороговое значение равно 16;
когда ширина текущего блока преобразования больше или равна первому пороговому значению, и ширина текущего блока преобразования меньше или равна второму пороговому значению,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DST 7 преобразования используется для преобразования в горизонтальном направлении;
когда высота текущего блока преобразования больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DST 7 преобразования используется для преобразования в вертикальном направлении.
2. Способ по п.1, в котором способ дополнительно содержит:
когда ширина текущего блока преобразования меньше первого порогового значения, или когда ширина текущего блока преобразования больше второго порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, причем в процессе преобразования ядро DCT 2 преобразования используется для горизонтального преобразования.
3. Способ по п.1 или 2, в котором способ дополнительно содержит:
получение значения синтаксиса для текущего блока кодирования, причем значение синтаксиса для текущего блока кодирования используется для указания того, что режим предсказания текущего блока кодирования является внутрикадровым предсказанием.
4. Способ по п.1, в котором способ дополнительно содержит: когда высота текущего блока преобразования меньше третьего порогового значения, или когда высота текущего блока преобразования больше четвертого порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, причем ядро DCT 2 преобразования используется для преобразования в вертикальном направлении.
5. Способ кодирования, реализуемый устройством декодирования, содержащий:
когда схема выбора множественного преобразования (MTS) недоступна для текущего блока кодирования,
определение того, больше или равна ширина текущего блока преобразования первому пороговому значению, и меньше или равна ширина текущего блока преобразования второму пороговому значению, где текущий блок преобразования отделен от текущего блока кодирования, в котором первое пороговое значение равно 4, второе пороговое значение равно 16;
определение того, больше или равна высота текущего блока преобразования третьему пороговому значению, и меньше или равна высота текущего блока преобразования четвертому пороговому значению, в котором третье пороговое значение равно 4, четвертое пороговое значение равно 16;
когда ширина текущего блока преобразования больше или равна первому пороговому значению и ширина текущего блока преобразования меньше или равна второму пороговому значению, выполнение процесса преобразования для текущего блока преобразования, где ядро DST 7 преобразования используется для преобразования в горизонтальном направлении;
когда высота текущего блока преобразования больше или равна третьему пороговому значению и меньше или равна четвертому пороговому значению,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DST 7 преобразования используется для преобразования в вертикальном направлении.
6. Способ по п.5, в котором способ дополнительно содержит: когда ширина текущего блока преобразования меньше первого порогового значения или когда ширина текущего блока преобразования больше второго порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, причем ядро DCT 2 преобразования используется для преобразования в горизонтальном направлении.
7. Способ по п.5, в котором способ дополнительно содержит:
когда высота текущего блока преобразования меньше третьего порогового значения, или когда высота текущего блока преобразования больше четвертого порогового значения,
выполнение процесса преобразования в текущем блоке преобразования, где ядро DCT 2 преобразования используется для преобразования в вертикальном направлении.
8. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп.1-7.
9. Декодер, содержащий:
один или более процессоров; и
невременный машиночитаемый носитель информации, соединенный с процессорами и хранящий программу для исполнения процессорами, причем программа при ее исполнении процессорами конфигурирует декодер для выполнения способа по любому из пп.1-7.
RU2021128574A 2019-03-03 2020-02-12 Кодер, декодер и соответствующие способы, которые используются для процесса преобразования RU2803063C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/813,136 2019-03-03
US62/815,293 2019-03-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2023122907A Division RU2023122907A (ru) 2019-03-03 2020-02-12 Кодер, декодер и соответствующие способы, которые используются для процесса преобразования

Publications (2)

Publication Number Publication Date
RU2021128574A RU2021128574A (ru) 2023-04-04
RU2803063C2 true RU2803063C2 (ru) 2023-09-06

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2627101C2 (ru) * 2010-04-09 2017-08-03 Мицубиси Электрик Корпорейшн Устройство кодирования движущихся изображений и устройство декодирования движущихся изображений
US10142657B2 (en) * 2012-04-12 2018-11-27 Goldpeak Innovations Inc Transform method based on block information, and apparatus using said method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2627101C2 (ru) * 2010-04-09 2017-08-03 Мицубиси Электрик Корпорейшн Устройство кодирования движущихся изображений и устройство декодирования движущихся изображений
US10142657B2 (en) * 2012-04-12 2018-11-27 Goldpeak Innovations Inc Transform method based on block information, and apparatus using said method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MEHDI SALEHIFAR et al., CE 6-1.11: AMT replacement and restriction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0096, 11th Meeting: Ljubljana, 10-18 July 2018. *
US 2018332289 A1 - 2018.11.15. JANI LAINEMA, CE6-related: 2-mode MTS with shape adaptive transform selection, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-M0304-v2, 13th Meeting: Marrakech, 9-18 Jan. 2019. JIANLE CHEN et al., Algorithm description for Versatile Video Coding and Test Model 4 (VTM 4), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-M1002-v1, 13th Meeting: Marrakech, 9-18 Jan. 2019. XIN ZHAO еt al., CE6 related: Unification of Transform Skip mode and MTS, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-M0501-v2, 13th Meeting: Marrakech, 9-18 Jan. 2019. *

Similar Documents

Publication Publication Date Title
JP7375125B2 (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
JP7401556B2 (ja) イントラ予測のためのエンコーダ、デコーダおよび対応する方法
CA3128919A1 (en) An encoder, a decoder and corresponding methods of intra prediction
JP7366149B2 (ja) 行列ベースのイントラ予測と二次変換コア選択を調和させるエンコーダ、デコーダ、および対応する方法
JP2022522571A (ja) 任意のctuサイズのためのibc検索範囲最適化を用いるエンコーダ、デコーダおよび対応する方法
CN115665408B (zh) 用于跨分量线性模型预测的滤波方法和装置
CN113545063A (zh) 使用线性模型进行帧内预测的方法及装置
JP2024026231A (ja) イントラ予測モードに関連するエンコーダ、デコーダ、および対応する方法
KR20210139446A (ko) 인트라 스무딩을 위한 방법 및 장치
KR20210088688A (ko) Ibc 병합 리스트를 사용하는 인코더, 디코더 및 대응하는 방법들
US20230254485A1 (en) Encoder, a decoder, and corresponding methods for transform process in video coding
JP2023100701A (ja) イントラ予測のためのイントラモードコーディングを使用するエンコーダ、デコーダ、および対応する方法
CN113228632B (zh) 用于局部亮度补偿的编码器、解码器、以及对应方法
WO2021025597A1 (en) Method and apparatus of sample adaptive offset in-loop filter with application region size constraint
RU2803063C2 (ru) Кодер, декодер и соответствующие способы, которые используются для процесса преобразования
CN113330748A (zh) 帧内预测模式信令的方法和装置
RU2809192C2 (ru) Кодер, декодер и соответствующие способы межкадрового предсказания
RU2817389C2 (ru) Кодер, декодер и соответствующие способы получения внутрикадрового режима цветности
RU2809841C2 (ru) Способ и устройство для внутрикадрового предсказания с использованием линейной модели
JP2022531544A (ja) 平面モードのためのイントラ予測における複雑さ減少のエンコーダ、デコーダ、および対応する方法