RU2812275C2 - Устройство декодирования видеосигналов - Google Patents

Устройство декодирования видеосигналов Download PDF

Info

Publication number
RU2812275C2
RU2812275C2 RU2021128439A RU2021128439A RU2812275C2 RU 2812275 C2 RU2812275 C2 RU 2812275C2 RU 2021128439 A RU2021128439 A RU 2021128439A RU 2021128439 A RU2021128439 A RU 2021128439A RU 2812275 C2 RU2812275 C2 RU 2812275C2
Authority
RU
Russia
Prior art keywords
prediction
flag
true
weight
block
Prior art date
Application number
RU2021128439A
Other languages
English (en)
Other versions
RU2021128439A (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 RU2021128439A publication Critical patent/RU2021128439A/ru
Application granted granted Critical
Publication of RU2812275C2 publication Critical patent/RU2812275C2/ru

Links

Images

Abstract

Изобретение относится к средствам для кодирования видеосигналов. Технический результат заключается в повышении эффективности кодирования видеосигналов. Задают dmvrFlag равным значению «ИСТИНА» в случае, когда по меньшей мере следующие условия являются истинными: (1) флаг, который является флагом SPS и является флагом, указывающим на то, что обработка DMVR возможна, в состоянии «Вкл»; (2) gbiIdx равен 0; и (3) оба luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1] имеют значение «ЛОЖЬ». Выполняют обработку DMVR в случае, когда dmvrFlag имеет значение «ИСТИНА». При этом gbiIdx представляет собой индекс, который указывает весовой коэффициент, используемый в целевом блоке, из множества вариантов весовых коэффициентов, включенных в таблицу gbiWLut. luma_weight_l0_flag[refIdxL0] устанавливает, присутствуют или нет весовой коэффициент w0 и смещение o0 для освещенности для эталонного изображения L0, указанного индексом refIdxL0 эталонного изображения. luma_weight_l1_flag[refIdxL1] устанавливает, присутствуют или нет весовой коэффициент w1 и смещение o1 для освещенности для эталонного изображения L1, указанного индексом refIdxL1 эталонного изображения. 3 н. и 4 з.п. ф-лы, 20 ил.

Description

Область техники
[0001]
Варианты осуществления настоящего изобретения относятся к устройству декодирования видеосигналов.
Предпосылки создания изобретения
[0002]
Устройство кодирования видеосигналов, которое генерирует кодированные данные путем кодирования видеосигналов, и устройство декодирования видеосигналов, которое генерирует декодированные изображения путем декодирования кодированных данных, используют для эффективной передачи или записи видео.
[0003]
Конкретные схемы кодирования видеосигналов включают, например, схемы H.264/AVC и высокоэффективного кодирования видеосигналов (HEVC) и т. п.
[0004]
При указанной схеме кодирования видеосигналов составляющие видео изображения (картинки) организованы в иерархическую структуру, включающую в себя срезы, полученные путем разделения изображения, элементы кодового дерева (CTU), полученные путем разделения среза, блоки кодирования (будут упоминаться как CU), полученные путем разделения элемента кодового дерева, и блоки преобразования (TU), полученные путем разделения блока кодирования, и кодируются/декодируются на уровне каждого CU.
[0005]
При указанной схеме кодирования видеосигналов прогнозируемое изображение обычно генерируется на основе локального декодированного изображения, полученного путем кодирования/декодирования входного изображения (исходного изображения), и осуществляется кодирование ошибок прогнозирования (они также могут упоминаться как «разностные изображения» или «остаточные изображения»), полученных путем вычитания прогнозируемого изображения из входного изображения. Способы генерации прогнозируемых изображений включают межкадровое прогнозирование (внешнее прогнозирование) и внутрикадровое прогнозирование (внутреннее прогнозирование).
[0006]
Кроме того, в NPL 1 приведен используемый в последние годы метод кодирования и декодирования видеосигналов.
Список библиографических ссылок
Непатентная литература
[0007]
NPL 1: “Versatile Video Coding (Draft 4)”, JVET-M1001, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 2019
Изложение сущности изобретения
Техническая задача
[0008]
В случае получения изображения двунаправленного прогнозирования, указанного в NPL 1, прогнозирование (прогнозирование BDOF) с использованием обработки DMVR для коррекции векторов движения с помощью двух прогнозируемых изображений для достижения высокого качества изображения прогнозируемых изображений и обработки BDOF для достижения высокого качества прогнозируемых изображений с помощью градиентного изображения является очень сложным для обработки, что представляет собой проблему.
[0009]
Целью вариантов осуществления настоящего изобретения является реализация устройства декодирования изображений и устройства кодирования изображений, которые снижают сложность обработок с сохранением высокого качества изображений, как описано выше.
Решение проблемы
[0010]
Для решения вышеописанной проблемы
устройство декодирования изображений в соответствии с аспектом настоящего изобретения включает в себя:
декодер параметров внешнего прогнозирования, включающий обработку двух векторов движения, корректирующую эти два вектора движения, исходя из ошибки двух прогнозируемых изображений, причем
обработку, корректирующую два вектора движения, выполняют в том случае, когда ни одно из двух прогнозируемых изображений не относится к взвешенному прогнозированию.
[0011]
Устройство кодирования изображения в соответствии с аспектом настоящего изобретения включает в себя:
кодер параметров внешнего прогнозирования, включающий обработку двух векторов движения, корректирующую эти два вектора движения, исходя из ошибки двух прогнозируемых изображений, причем
обработку, корректирующую два вектора движения, выполняют в том случае, когда ни одно из двух прогнозируемых изображений не относится к взвешенному прогнозированию.
[0012]
При использовании конфигураций, которые описаны выше, в случае взвешенного прогнозирования невозможно правильно выполнить оценку ошибки, и поэтому невозможно добиться эффекта и, следовательно, уменьшить весь объем обработки можно за счет ограничения условия применения.
[0013]
Устройство декодирования изображений в соответствии с аспектом настоящего изобретения включает в себя:
декодер параметров внешнего прогнозирования, включающий обработку двух векторов движения, корректирующую эти два вектора движения, исходя из значения ошибки двух прогнозируемых изображений, и
блок обработки прогнозирования образца двунаправленного оптического потока, выполненный с возможностью генерирования прогнозируемого изображения с использованием градиентного изображения, полученного из двух сгенерированных интерполяционных изображений при помощи параметра, декодированного декодером параметров внешнего прогнозирования, причем
определение того, применять или не применять обработку блока обработки прогнозирования образца двунаправленного оптического потока, выполняют путем использования значения ошибки двух прогнозируемых изображений.
[0014]
Устройство кодирования изображения в соответствии с аспектом настоящего изобретения включает в себя:
кодер параметров внешнего прогнозирования, включающий обработку двух векторов движения, корректирующую эти два вектора движения, исходя из значения ошибки двух прогнозируемых изображений, и
блок обработки прогнозирования образца двунаправленного оптического потока, выполненный с возможностью генерирования прогнозируемого изображения с использованием градиентного изображения, полученного из двух сгенерированных интерполяционных изображений при помощи параметра, декодированного декодером параметров внешнего прогнозирования, причем
определение того, применять или не применять обработку блока обработки прогнозирования образца двунаправленного оптического потока, выполняют путем использования значения ошибки двух прогнозируемых изображений.
[0015]
При использовании вышеописанных конфигураций для коррекции векторов движения необходимо вычислять значение ошибки, в то время как в блоке обработки прогнозирования образца двунаправленного оптического потока это не дает эффекта в случае, когда ошибка мала, и, следовательно, добавление обработки, как описано выше, делает возможным определение того, применять ли обработку блока обработки прогнозирования образца двунаправленного оптического потока без прибавления дополнительного значения ошибки. В результате общий объем обработки может быть уменьшен.
Преимущества изобретения
[0016]
В соответствии с конфигурациями, описанными выше, можно реализовать устройство декодирования изображений и устройство кодирования изображений, которые снижают сложность обработки с сохранением высокого качества изображений.
Краткое описание графических материалов
[0017]
На ФИГ. 1 представлена принципиальная схема, иллюстрирующая конфигурацию системы передачи изображений согласно настоящему варианту осуществления.
На ФИГ. 2 представлена схема, иллюстрирующая конфигурации передающего устройства, оснащенного устройством кодирования видеосигналов, и приемного устройства, оснащенного устройством декодирования видеосигналов, в соответствии с настоящим вариантом осуществления. В варианте (a) показано передающее устройство, оснащенное устройством кодирования видеосигналов, а в варианте (b) показано приемное устройство, оснащенное устройством декодирования видеосигналов.
На ФИГ. 3 представлена схема, иллюстрирующая конфигурации записывающего устройства, оснащенного устройством кодирования видеосигналов, и устройства восстановления, оснащенного устройством декодирования видеосигналов, в соответствии с настоящим вариантом осуществления. В варианте (a) показано записывающее устройство, оснащенное устройством кодирования видеосигналов, а в варианте (b) показано устройство восстановления, оснащенное устройством декодирования видеосигналов.
На ФИГ. 4 представлена схема, иллюстрирующая иерархическую структуру данных потока кодирования.
На ФИГ. 5 представлена схема, иллюстрирующая пример разделения CTU.
На ФИГ. 6 представлена концептуальная схема, иллюстрирующая пример эталонных изображений и список эталонных изображений.
На ФИГ. 7 представлена принципиальная схема, иллюстрирующая конфигурацию устройства декодирования видеосигналов.
На ФИГ. 8 представлена принципиальная схема, иллюстрирующая конфигурацию устройства декодирования параметров внешнего прогнозирования.
На ФИГ. 9 представлена принципиальная схема, иллюстрирующая конфигурации блока выведения параметров прогнозирования объединения и блока выведения параметров прогнозирования AMVP.
На ФИГ. 10 представлена принципиальная схема, иллюстрирующая конфигурацию блока DMVR.
На ФИГ. 11 представлена блок-схема, иллюстрирующая поток обработки в блоке DMVR.
На ФИГ. 12 представлена блок-схема, иллюстрирующая обработку выполнения определения BDOF посредством обработки порога ошибки в DMVR.
На ФИГ. 13 представлена принципиальная схема, иллюстрирующая конфигурацию блока генерирования изображений внешнего прогнозирования, включенного в блок генерирования прогнозируемых изображений.
На ФИГ. 14 представлена блок-схема, иллюстрирующая пример потока обработки выбора режима прогнозирования в устройстве декодирования видеосигналов.
На ФИГ. 15 представлена блок-схема, иллюстрирующая поток обработки выведения прогнозируемого изображения.
На ФИГ. 16 представлена принципиальная схема, иллюстрирующая конфигурацию блока BDOF.
На ФИГ. 17 представлена схема, иллюстрирующая пример области, в которой блок BDOF выполняет заполнение.
На ФИГ. 18 представлена принципиальная схема, иллюстрирующая конфигурацию устройства кодирования видеосигналов.
На ФИГ. 19 представлена принципиальная схема, иллюстрирующая конфигурацию кодера параметров.
На ФИГ. 20 представлена схема, иллюстрирующая пример количества потенциальных вариантов для расстояния поиска и количества потенциальных вариантов для направления выведения в устройстве кодирования видеосигналов.
Описание вариантов осуществления
[0018]
Первый вариант осуществления
Далее будет описан вариант осуществления настоящего изобретения со ссылкой на графические материалы.
[0019]
На ФИГ. 1 представлена принципиальная схема, иллюстрирующая конфигурацию системы 1 передачи изображений в соответствии с настоящим вариантом осуществления.
[0020]
Система 1 передачи изображений представляет собой систему, в которой передается поток кодирования, полученный путем кодирования целевого кодируемого изображения, передаваемый поток кодирования декодируется и, таким образом, изображение отображается. Система 1 передачи изображений включает в себя устройство 11 кодирования видеосигналов (устройство кодирования изображений), сеть 21, устройство 31 декодирования видеосигналов (устройство декодирования изображений) и устройство 41 отображения видео (устройство отображения изображений).
[0021]
Изображение T вводят в устройство кодирования видеосигналов 11.
[0022]
Сеть 21 передает поток кодирования Te, сгенерированный устройством 11 кодирования видеосигналов, в устройство 31 декодирования видеосигналов. Сеть 21 представляет собой сеть Интернет, глобальную сеть (WAN), локальную сеть (LAN) или их комбинацию. Сеть 21 не обязательно ограничена двунаправленной сетью связи и может представлять собой однонаправленную сеть связи, выполненную с возможностью передачи радиовещательных волн цифрового наземного телевещания, спутникового вещания и т. п. Кроме того, сеть 21 может быть замещена носителем данных, на который записывают поток кодирования Te, например универсальный цифровой диск (DVD: торговое название) или диск Blue-ray (BD: торговое название).
[0023]
Устройство 31 декодирования видеосигналов декодирует каждый из потоков кодирования Te, передаваемых из сети 21, и генерирует одно или множество декодированных изображений Td.
[0024]
Устройство 41 отображения видео отображает все или часть одного или множества декодированных изображений Td, сгенерированных устройством 31 декодирования видеосигналов. Например, устройство 41 отображения видео включает в себя устройство отображения, например жидкокристаллический дисплей и органический электролюминисцентный (ЭЛ) дисплей. В число видов дисплея входят дисплеи стационарного типа, мобильного типа, типа наголовного шлема (HMD) и т. п. Кроме того, в случае когда устройство 31 декодирования видеосигналов имеет высокие возможности обработки, устройство 41 отображения видео отображает изображение, имеющее высокое качество изображения, а в случае когда устройство 31 декодирования видеосигналов имеет более низкие возможности обработки, устройство 41 отображения видео отображает изображение, которое не требует высоких возможностей обработки и возможностей отображения.
[0025]
Оператор
Ниже описаны операторы, используемые в настоящем описании.
[0026]
>> - это битовый сдвиг вправо, << - это битовый сдвиг влево, & - оператор побитовое И, | - оператор побитовое ИЛИ, |= - оператор присваивания ИЛИ, а || указывает на логическую сумму.
[0027]
x ? y : z представляет собой тернарный оператор, который принимает значение y, если x имеет значение «истина» (кроме 0), и принимает значение z, если x имеет значение «ложь» (0).
[0028]
Clip3 (a, b, c) представляет собой функцию, ограничивающую значение c величиной, большей или равной a и меньшей или равной b, и функцию, возвращающую a в случае, если c меньше a (c < a), возвращающую b в случае, если c больше b (c > b), и возвращающую c в других случаях (при условии, что a меньше или равно b (a <= b)).
[0029]
abs (a) представляет собой функцию, которая возвращает абсолютное значение a.
[0030]
Int (a) представляет собой функцию, которая возвращает целое значение a.
[0031]
floor (a) представляет собой функцию, которая возвращает максимальное целое число, которое меньше или равно a.
[0032]
ceil (a) представляет собой функцию, которая возвращает минимальное целое число, которое больше или равно a.
[0033]
a/d представляет собой результат деления a на d (с округлением до десятичных знаков).
[0034]
знак (a) представляет собой функцию, которая возвращает знак a.
[0035]
a^b представляет собой a в степени b.
[0036]
Структура потока кодирования Te
Перед подробным описанием устройства 11 кодирования видеосигналов и устройства 31 декодирования видеосигналов в соответствии с настоящим вариантом осуществления будет описана структура данных потока кодирования Te, генерируемого устройством 11 кодирования видеосигналов и декодированного устройством 31 декодирования видеосигналов.
[0037]
На ФИГ. 4 представлена схема, иллюстрирующая иерархическую структуру данных потока кодирования Te. Поток кодирования Te содержит последовательность и множество кадров, которые составляют последовательность, приведенную в качестве примера. В вариантах (a)-(f) на ФИГ. 4 представлены схемы, иллюстрирующие закодированную видеопоследовательность, определяющую последовательность SEQ, кодированное изображение, которое задано как изображение PICT, срез кодирования, который задан как срез S, данные среза кодирования, которые заданы как данные среза, элемент кодового дерева, который включен в данные кодирующего среза, и блок кодирования, который включен в элемент кодового дерева, соответственно.
[0038]
Закодированная видеопоследовательность
В закодированной видеопоследовательности определен набор данных, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемую последовательность SEQ. Как показано на ФИГ. 4(a), последовательность SEQ включает в себя набор параметров видеосигнала, набор параметров последовательности SPS, набор параметров изображения PPS, изображение PICT и дополнительную информацию для оптимизации SEI.
[0039]
При наборе параметров видеосигнала VPS в видео, включающем в себя множество слоев, определен набор параметров кодирования, общих для множества видео, и набор параметров кодирования, связанных с множеством слоев и каждым отдельным слоем, включенным в видео.
[0040]
В наборе параметров последовательности SPS определен набор параметров кодирования, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать целевую последовательность. Например, определена ширина и высота изображения. Следует отметить, что может существовать множество наборов SPS. В этом случае из PPS выбирают любой из множества SPS.
[0041]
В наборе параметров изображения PPS определен набор параметров кодирования, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать каждое изображение в целевой последовательности. Например, включено опорное значение (pic_init_qp_minus26) размера шага квантования, используемого для декодирования изображения, и флаг (weighted_pred_flag), указывающий на применение взвешенного прогнозирования. Следует отметить, что может существовать множество наборов PPS. В этом случае из каждого изображения в целевой последовательности выбирают любой из множества PPS.
[0042]
Кодированное изображение
В кодированном изображении определен набор данных, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемое изображение PICT. Как показано на ФИГ. 4(b), изображение PICT включает в себя срезы от 0 до NS - 1 (NS представляет собой общее количество срезов, включенных в изображение PICT).
[0043]
Следует отметить, что в случае, когда нет необходимости выделять каждый из срезов ниже от 0 до NS - 1, подстрочные индексы справочных знаков могут быть опущены. Кроме того, то же самое относится и к другим данным с подстрочными индексами, включенными в поток кодирования Te, которые будут описаны ниже.
[0044]
Срез кодирования
В срезе кодирования определен набор данных, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемый срез S. Как показано на ФИГ. 4(c), срез включает в себя заголовок среза и данные среза.
[0045]
Заголовок среза включает в себя группу параметров кодирования, на которую ссылается устройство 31 декодирования видеосигналов для определения способа декодирования для целевого среза. Информация о типе среза (slice_type), указывающая тип среза, представляет собой один пример параметра кодирования, включенного в заголовок среза.
[0046]
Примеры типов срезов, которые могут быть указаны в информации о типе среза, включают (1) срез I, использующий только внутреннее прогнозирование при кодировании, (2) срез P, использующий однонаправленное прогнозирование или внутреннее прогнозирование при кодировании, и (3) срез B, использующий однонаправленное прогнозирование, двунаправленное прогнозирование или внутреннее прогнозирование при кодировании, и т. п. Следует отметить, что внешнее прогнозирование не ограничивается однонаправленным прогнозированием и двунаправленным прогнозированием и прогнозируемое изображение может генерироваться с использованием большего количества эталонных изображений. Далее в случае упоминания среза P или B указывается срез, который включает в себя блок, в котором может использоваться внешнее прогнозирование.
[0047]
Следует отметить, что заголовок среза может включать в себя ссылку на набор параметров изображения PPS (pic_parameter_set_id).
[0048]
Данные среза кодирования
В данных среза кодирования определен набор данных, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемые данные среза. Данные среза включают в себя CTU, как показано на ФИГ. 4(d). CTU представляет собой блок фиксированного размера (например, 64×64), представляющий собой срез, и может упоминаться как «самый большой блок кодирования (LCU)».
[0049]
Элемент кодового дерева
На ФИГ. 4(e) определен набор данных, на которые ссылается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемый CTU. CTU разделен на блоки кодирования CU, каждый из которых представляет собой базовый блок кодирования, с помощью рекурсивного разделения четвертичного дерева (разделение QT), разделения двоичного дерева (разделение BT) или тернарного дерева (разделение TT). Разделение BT и разделение TT в совокупности называют разделением мультидерева (разделение MT). Узлы структуры дерева, полученные методом рекурсивного разделения четвертичного дерева, называют узлами кодирования. Промежуточные узлы четвертичного дерева, двоичного дерева и тернарного дерева представляют собой узлы кодирования, а сам CTU также определен как наивысший узел кодирования.
[0050]
CT включает в себя в качестве информации о CT флаг разделения QT (qt_split_cu_flag), указывающий на то, выполнять ли разделение QT, флаг разделения MT (mtt_split_cu_flag), указывающий на наличие или отсутствие разделения MT, направление разделения MT (mtt_split_cu_vertical_flag), указывающее направление разделения MT, и тип разделения MT (mtt_split_cu_binary_flag), указывающий тип разделения для разделения MT. qt_split_cu_flag, mtt_split_cu_flag, mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag передают для каждого узла кодирования.
[0051]
На ФИГ. 5 представлена схема, иллюстрирующая пример разделения CTU. В случае, когда qt_split_cu_flag равен 1, узел кодирования разделен на четыре узла кодирования (ФИГ. 5(b)).
[0052]
В случае, когда qt_split_cu_flag равен 0, узел кодирования не разделяется и имеет один CU в качестве узла в случае, когда mtt_split_cu_flag равен 0 (ФИГ. 5(a)). CU представляет собой концевой узел среди узлов кодирования и больше не разделяется. CU представляет собой основной блок обработки кодирования.
[0053]
В случае, когда mtt_split_cu_flag равен 1, узел кодирования подвергается разделению MT, как описано ниже. В случае, когда mtt_split_cu_vertical_flag равен 0, а mtt_split_cu_binary_flag равен 1, узел кодирования горизонтально разделен на два узла кодирования (ФИГ. 5(d)). В случае, когда mtt_split_cu_vertical_flag равен 1, а mtt_split_cu_binary_flag равен 1, узел кодирования вертикально разделен на два узла кодирования (ФИГ. 5(c)). Кроме того, в случае, когда mtt_split_cu_vertical_flag равен 0, а mtt_split_cu_binary_flag равен 0, узел кодирования горизонтально разделен на три узла кодирования (ФИГ. 5(f)). В случае, когда mtt_split_cu_vertical_flag равен 1, а mtt_split_cu_binary_flag равен 0, узел кодирования вертикально разделен на три узла кодирования (ФИГ. 5(e)). Они показаны на ФИГ. 5(g).
[0054]
Кроме того, в случае, когда размер CTU составляет 64×64 пикселей, размер CU может быть любым из 64×64 пикселей, 64×32 пикселей, 32×64 пикселей, 32×32 пикселей, 64×16 пикселей, 16×64 пикселей, 32×16 пикселей, 16×32 пикселей, 16×16 пикселей, 64×8 пикселей, 8×64 пикселей, 32×8 пикселей, 8×32 пикселей, 16×8 пикселей, 8×16 пикселей, 8×8 пикселей, 64×4 пикселей, 4×64 пикселей, 32×4 пикселей, 4×32 пикселей, 16×4 пикселей, 4×16 пикселей, 8×4 пикселей, 4×8 пикселей и 4×4 пикселей.
[0055]
Блок кодирования
Как показано на ФИГ. 4(f), в CU определен набор данных, к которым обращается устройство 31 декодирования видеосигналов, чтобы декодировать обрабатываемый блок кодирования. В частности, CU включает в себя заголовок блока кодирования (CUH), параметр прогнозирования, параметр преобразования, коэффициент преобразования квантования и т. п. В заголовке CU определен режим прогнозирования и т. п.
[0056]
Существуют случаи, когда обработку прогнозирования выполняют в единицах CU или в единицах подблоков CU, на которые затем разделяют CU. В случае, когда размеры CU и подблоков CU равны друг другу, количество подблоков CU в CU равно единице. В случае, когда по размеру CU больше, чем подблок CU, CU разделяют на подблоки CU. Например, в случае, когда CU имеет размер 8×8, а подблок CU имеет размер 4×4, CU разделяют на четыре подблока CU, которые включают в себя два горизонтальных разделения и два вертикальных разделения.
[0057]
Существуют два типа прогнозов (режимы прогнозирования): внутреннее прогнозирование и внешнее прогнозирование. Внутреннее прогнозирование относится к прогнозированию на идентичном изображении, а внешнее прогнозирование относится к обработке прогнозирования, выполняемой между различными изображениями (например, между изображениями с различным временем отображения).
[0058]
Обработку преобразования и квантования выполняют в единицах CU, но коэффициент преобразования квантования может подвергаться энтропийному кодированию в единицах подблоков, например 4×4.
[0059]
Параметр прогнозирования
Прогнозируемое изображение получают с помощью параметра прогнозирования, сопровождающего блок. Параметр прогнозирования включает в себя параметры внутреннего прогнозирования и внешнего прогнозирования.
[0060]
Параметр внешнего прогнозирования будет описан ниже. Параметр внешнего прогнозирования включает в себя флаги использования списка прогнозирования predFlagL0 и predFlagL1, индексы эталонных изображений refIdxL0 и refIdxL1 и векторы движения mvL0 и mvL1. Флаги использования списка прогнозирования predFlagL0 и predFlagL1 представляют собой флаги, указывающие на то, используют или не используют для внешнего прогнозирования списки эталонных изображений, называемые списком L0 и списком L1, соответственно, причем соответствующий список эталонных изображений используют для внешнего прогнозирования в том случае, если значение равно 1. Следует отметить, что в случае, если в настоящем описании упоминается «флаг, указывающий на наличие или отсутствие XX», флаг, отличный от 0 (например, 1), предполагает случай наличия XX, а флаг, имеющий значение 0, предполагает случай отсутствия XX, при этом 1 рассматривается как «истина», а 0 рассматривается как «ложь» при логическом отрицании, логическом произведении и т. п. (далее применяется то же самое). Однако в реальных устройствах и способах могут использоваться другие значения в качестве истинных и ложных значений.
[0061]
Например, элементы синтаксиса для выведения параметров внешнего прогнозирования включают в себя аффинный флаг affine_flag, флаг объединения merge_flag, индекс объединения merge_idx, индикатор внешнего прогнозирования inter_pred_idc, индекс эталонного изображения refIdxLX, индекс прогнозного вектора mvp_LX_idx, разностный вектор mvdLX и режим адаптивного разрешения векторов движения amvr_mode.
[0062]
Список эталонных изображений
Список эталонных изображений представляет собой список эталонных изображений, хранящихся в памяти 306 эталонных изображений. На ФИГ. 6 представлена концептуальная схема, иллюстрирующая пример эталонных изображений и список эталонных изображений. На ФИГ. 6(a) прямоугольник указывает изображение, стрелка указывает отношение ссылки изображения, горизонтальная ось указывает время, каждое из значений I, P и B в прямоугольнике указывает изображение внутреннего прогнозирования, изображение однонаправленного прогнозирования, изображение двунаправленного прогнозирования, а число в прямоугольнике указывает порядок декодирования. Как показано, порядок декодирования изображений составляет I0, P1, B2, B3 и B4, а порядок отображения составляет I0, B3, B2, B4 и P1. На ФИГ. 6(b) приведен пример списков эталонных изображений для изображения В3 (целевое изображение). Список эталонных изображений представляет собой список, который содержит потенциальное эталонное изображение, а одно изображение (срез) может включать один или более списков эталонных изображений. В приведенном примере целевое изображение В3 включает в себя два списка эталонных изображений, т. е. список L0 RefPicList0 и список L1 RefPicList1. Отдельный CU, на изображение которого в списке эталонных изображений RefPicListX (X=0 или 1) фактически приведена ссылка, установлен с помощью индекса эталонного изображения refIdxLX. На схеме показан пример refIdxL0=2, refIdxL1=0. Следует отметить, что LX представляет собой способ описания, используемый в случае отсутствия необходимости различать прогнозирование L0 и прогнозирование L1, а в последующем описании различают параметры для списка L0 и параметры для списка L1 путем замены LX на L0 и L1.
[0063]
Прогнозирование объединения и прогнозирование AMVP
Способ декодирования (кодирования) параметров прогнозирования включает в себя режим прогнозирования объединения (объединения) и режим усовершенствованного прогнозирования вектора движения (AMVP), а флаг объединения merge_flag представляет собой флаг для определения режимов. Режим прогнозирования объединения представляет собой режим для выведения из параметров прогнозирования соседних блоков, уже обработанных без включения флага использования списка прогнозирования predFlagLX (или индикатора внешнего прогнозирования inter_ pred_idc), индекса эталонного изображения refIdxLX и вектора движения mvLX в кодированные данные. Режим AMVP представляет собой режим, в котором индикатор внешнего прогнозирования inter_ pred_idc, индекс эталонного изображения refIdxLX и вектор движения mvLX включены в кодированные данные. Следует отметить, что вектор движения mvLX кодируют как индекс вектора прогнозирования mvp_LX_idx, определяющий вектор прогнозирования mvpLX, разностный вектор mvdLX и режим адаптивного разрешения векторов движения amvr_mode. Режим прогнозирования объединения представляет собой режим, в котором для получения вектора движения mvLX (информации о векторе движения) выбирают потенциальный вариант объединения, выведенный из информации о движении и т. п. соседнего блока. Кроме того, в дополнение к режиму прогнозирования объединения может быть предусмотрен режим аффинного прогнозирования, определенный с помощью аффинного флага affine_flag. В качестве одной формы режима прогнозирования объединения может быть предусмотрен режим пропуска, определяемый флагом пропуска skip_flag. Следует отметить, что режим пропуска представляет собой режим для получения и использования параметра прогнозирования, как и в случае с режимом объединения, и в котором ошибку прогнозирования (остаточное изображение, остаточную информацию) не включают в кодированные данные. Иными словами, если для целевого CU флаг пропуска skip_flag равен 1, то кодированные данные содержат только синтаксис, связанный с режимом объединения, такой как флаг пропуска skip_flag и индекс объединения merge_idx, и не содержат векторов движения, остаточной информации и т. п.
[0064]
Вектор движения
Вектор движения mvLX указывает величину смещения между блоками на двух разных изображениях. Вектор прогнозирования и разностный вектор, связанные с вектором движения mvLX, называют вектором прогнозирования mvpLX и разностным вектором mvdLX соответственно.
[0065]
Индикатор внешнего прогнозирования inter_pred_idc и флаг использования списка прогнозирования predFlagLX
Индикатор внешнего прогнозирования inter_pred_idc представляет собой значение, указывающее типы и количество эталонных изображений, и принимает любое значение из PRED_L0, PRED_L1 и PRED_BI. PRED_L0 и PRED_L1 указывают на однонаправленные прогнозы, в которых используется одно эталонное изображение, расположенное в списке L0, и одно эталонное изображение, расположенное в списке L1, соответственно. PRED_BI указывает на двунаправленное прогнозирование BiPred, в котором используются два эталонных изображения, расположенных в списке L0 и списке L1.
[0066]
Индекс объединения merge_idx представляет собой индекс, указывающий на то, какой параметр прогнозирования используют в качестве параметра прогнозирования целевого блока из числа потенциальных параметров прогнозирования (вариантов объединения), выведенных из блоков, обработка которых проведена.
[0067]
Взаимосвязь между индикатором внешнего прогнозирования inter_pred_idc и флагами использования списка прогнозирования predFlagL0 и predFlagL1 выглядит следующим образом, и они могут быть преобразованы друг в друга.
[0068]
inter_pred_idc = (predFlagL1 << 1) + predFlagL0
predFlagL0=inter_pred_idc & 1
predFlagL1=inter_pred_idc >> 1
Определение двунаправленного прогнозирования biPred
Флаг biPred определяет, будет ли проводиться двунаправленное прогнозирование; BiPred можно вывести исходя из того, равны ли оба флага использования списка прогнозирования 1. Например, его можно вывести с помощью следующего уравнения.
[0069]
biPred = (predFlagL0 == 1 && predFlagL1 == 1)
В альтернативном варианте осуществления флаг biPred можно также вывести, исходя из того, является ли индикатор внешнего прогнозирования значением, указывающим на использование двух списков прогнозирования (эталонных изображений). Например, его можно вывести с помощью следующего уравнения.
[0070]
biPred = (inter_pred_idc == PRED_BI) ? 1 : 0
Конфигурация устройства декодирования видеосигналов
Далее будет описана конфигурация устройства 31 декодирования видеосигналов (ФИГ. 7) согласно настоящему варианту осуществления.
[0071]
Устройство 31 декодирования видеосигналов содержит энтропийный декодер 301, декодер 302 параметров, контурный фильтр 305, память 306 эталонных изображений, память 307 параметров прогнозирования, блок 308 генерирования прогнозируемых изображений (устройство генерирования прогнозируемых изображений), устройство 311 обратного квантования и обратного преобразования и блок 312 сложения. Следует отметить, что конфигурация, в которой контурный фильтр 305 не включен в устройство 31 декодирования видеосигналов, может быть использована в соответствии с описанным ниже устройством 11 кодирования видеосигналов.
[0072]
Декодер 302 параметров дополнительно включает в себя декодер 3020 заголовков, декодер 3021 информации CT и декодер 3022 CU (декодер режима прогнозирования), которые не показаны, а декодер 3022 CU дополнительно включает в себя декодер 3024 TU. В совокупности они могут называться модулем декодирования. Декодер 3020 заголовков декодирует из кодированных данных информацию о наборе параметров, например VPS, SPS и PPS, а также заголовок среза (информация о срезе). Декодер 3021 информации CT декодирует CT из кодированных данных. Декодер 3022 CU декодирует CU из кодированных данных. В случае, когда TU включает в себя ошибку прогнозирования, декодер 3024 TU декодирует информацию об обновлении QP (значение коррекции квантования) и ошибку прогнозирования квантования (residual_coding) из кодированных данных.
[0073]
В режиме, отличном от режима пропуска (skip_mode == 0), декодер 3024 TU декодирует информацию об обновлении QP (значение коррекции квантования) и ошибку прогнозирования квантования (residual_coding) из кодированных данных. Более конкретно в случае skip_mode == 0 декодер 3024 TU декодирует флаг cu_cbp, указывающий на то, декодировать ли включенную в целевой блок ошибку прогнозирования квантования из кодированных данных, и декодирует ошибку прогнозирования квантования в случае, когда cu_cbp равен 1. В случае, когда cu_cbp не присутствует в кодированных данных, декодер 3024 TU получает cu_cbp, равный 0.
[0074]
Декодер 302 параметров содержит декодер 303 параметров внешнего прогнозирования и декодер 304 параметров внутреннего прогнозирования (не показаны). Блок 308 генерирования прогнозируемых изображений включает в себя блок 309 генерирования изображений внешнего прогнозирования и блок 310 генерирования изображений внутреннего прогнозирования.
[0075]
Более того, ниже описан пример, в котором CTU и CU используются как единицы обработки, но обработка не ограничивается этим примером и может выполняться в единицах подблоков CU. В альтернативном варианте осуществления CTU и CU могут быть заменены блоком, подблок CU может быть заменен подблоком, и обработка может быть выполнена в единицах блоков или подблоков.
[0076]
Энтропийный декодер 301 выполняет энтропийное декодирование поступающего снаружи потока кодирования Te и разделяет и декодирует отдельные знаки (элементы синтаксиса). Декодированные знаки содержат информацию о прогнозировании для генерирования прогнозируемого изображения, ошибку прогнозирования для генерирования разностного изображения и т. п.
[0077]
Энтропийный декодер 301 выводит декодированные знаки в декодер 302 параметров. Декодированные знаки представляют собой, например, predMode, merge_flag, merge_idx, inter_pred_idc, refIdxLX, mVP_Lx_idx, mvdLX, amvr_mode и т. п. Знак, который необходимо декодировать, определяется на основании показаний декодера 302 параметров.
[0078]
Конфигурация декодера параметров внешнего прогнозирования
Декодер 303 параметров внешнего прогнозирования декодирует параметр внешнего прогнозирования относительно параметра прогнозирования, хранящегося в памяти 307 параметров прогнозирования, на основе знака, поступающего от энтропийного декодера 301. Кроме того, декодер 303 параметров внешнего прогнозирования выводит декодированный параметр внешнего прогнозирования в блок 308 генерирования прогнозируемых изображений и сохраняет декодированный параметр внешнего прогнозирования в памяти 307 параметров прогнозирования.
[0079]
На ФИГ. 8 представлена принципиальная схема, иллюстрирующая конфигурацию декодера 303 параметров внешнего прогнозирования согласно настоящему варианту осуществления. Декодер 303 параметров внешнего прогнозирования включает в себя устройство 30374 прогнозирования объединения, блок 30375 DMVR, устройство 30372 прогнозирования подблоков (устройство прогнозирования аффинности), устройство 30376 прогнозирования MMVD, устройство 30377 прогнозирования треугольников, блок 3032 выведения параметров прогнозирования AMVP и блок 3038 сложения. Устройство 30374 прогнозирования объединения включает в себя блок 3036 выведения параметров прогнозирования объединения. Блок 3032 выведения параметров прогнозирования AMVP, блок 3036 выведения параметров прогнозирования объединения и устройство 30372 прогнозирования аффинности являются средствами, которые совместно используются устройством кодирования видеосигналов и устройством декодирования видеосигналов, и, таким образом, они могут в совокупности упоминаться как «блок выведения вектора движения» (устройство выведения вектора движения).
[0080]
Устройство прогнозирования аффинности
Устройство 30372 прогнозирования аффинности выводит параметр аффинного прогнозирования целевого блока. В настоящем варианте осуществления в качестве параметра аффинного прогнозирования выводятся векторы движения (mv0_x, mv0_y) и (mv1_x, mv1_y) двух контрольных точек (V0, V1) целевого блока. В частности, вектор движения каждой контрольной точки может быть выведен посредством прогнозирования из вектора движения соседнего с целевым блока, или вектор движения каждой контрольной точки может быть выведен как сумма вектора прогнозирования, выведенного в виде вектора движения контрольной точки, и разностного вектора, выведенного из кодированных данных.
[0081]
Прогнозирование объединения
На ФИГ. 9(a) представлена принципиальная схема, иллюстрирующая конфигурацию блока 3036 выведения параметров прогнозирования объединения, включенного в устройство 30374 прогнозирования объединения. Блок 3036 выведения параметров прогнозирования объединения включает в себя блок 30361 выведения вариантов объединения и блок 30362 выбора вариантов объединения. Следует отметить, что варианты объединения включают в себя флаг использования списка прогнозирования predFlagLX, вектор движения mvLX и индекс эталонного изображения refIdxLX и сохраняются в списке вариантов объединения. Для варианта объединения, который хранится в списке вариантов объединения, назначают индекс в соответствии с заданным правилом.
[0082]
Блок 30361 выведения вариантов объединения выводит вариант объединения с помощью вектора движения декодированного соседнего блока и индекса эталонного изображения refIdxLX в том виде, в котором они присутствуют.
[0083]
Порядок сохранения в списке вариантов объединения mergeCandList[], например, следующий: варианты A1, B1, B0, A0, B2 пространственного объединения, вариант Col временного объединения, вариант avgK попарного объединения и вариант ZK нулевого объединения. Следует отметить, что эталонный блок, который недоступен (блок внутреннего прогнозирования и т. п.), не хранится в списке вариантов объединения.
[0084]
Блок 30362 выбора вариантов объединения выбирает вариант объединения N, указанный индексом объединения merge_idx, из вариантов объединения, включенных в список вариантов объединения, в соответствии с приведенной ниже формулой.
[0085]
N=mergeCandList[merge_idx]
В данном случае N представляет собой метку, указывающую вариант объединения, и принимает вариант A1, B1, B0, A0, B2, Col, avgK, ZK и т. п. Информация о перемещении варианта объединения, указанная меткой N, указана как (mvLXN [0], mvLXN [1]), predFlagLXN, refIdxLXN.
[0086]
Блок 30362 выбора вариантов объединения выбирает информацию о перемещении (mvLXN[0], mvLXN[1]), predFlagLXN и refIdxLXN выбранного варианта объединения в качестве параметров внешнего прогнозирования целевого блока. Блок 30362 выбора вариантов объединения сохраняет выбранные параметры внешнего прогнозирования для выбранного варианта объединения в памяти 307 параметров прогнозирования и выводит параметры внешнего прогнозирования в блок 308 генерирования прогнозируемых изображений.
[0087]
Прогнозирование AMVP
На ФИГ. 9(b) представлена принципиальная схема, иллюстрирующая конфигурацию блока 3032 выведения параметров прогнозирования AMVP в соответствии с настоящим вариантом осуществления. Блок выведения параметров прогнозирования AMVP 3032 включает в себя блок 3033 выведения вариантов векторов и блок 3034 выбора вариантов векторов. Блок 3033 выведения вариантов векторов выводит вариант вектора прогнозирования из вектора движения mvLX декодированного соседнего блока, хранящегося в памяти 307 параметров прогнозирования, на основании индекса эталонного изображения refIdxLX и сохраняет результат в списке вариантов векторов прогнозирования mvpListLX[].
[0088]
Блок 3034 выбора вариантов векторов выбирает среди вариантов векторов прогнозирования из списка вариантов векторов прогнозирования mvpListLX[] вектор движения mvpListLX[mvp_LX_idx], указанный индексом вектора прогнозирования mvp_LX_idx, в качестве вектора прогнозирования mvpLX. Блок 3034 выбора вариантов векторов выводит выбранный вектор прогнозирования mvpLX в блок 3038 сложения.
[0089]
Следует отметить, что вариант вектора прогнозирования выводят путем масштабирования вектора движения декодированного соседнего блока в заданном диапазоне от целевого блока. Следует отметить, что в число соседних блоков входят блоки, которые являются пространственно смежными с целевым блоком, такие как, например, левый блок и верхний блок, а также области, временно смежные с целевым блоком, например области, полученные из параметров прогнозирования для блоков, имеющих то же самое местоположение, что и местоположение целевого блока, но другие времена отображения.
[0090]
Блок 3038 сложения складывает вектор прогнозирования mvpLX, вводимый из блока 3032 выведения параметров прогнозирования AMVP, и декодированный разностный вектор mvdLX и вычисляет вектор движения mvLX. Блок 3038 сложения выводит расчетный вектор движения mvLX в блок 308 генерирования прогнозируемых изображений и память 307 параметров прогнозирования.
[0091]
mvLX[0] = mvpLX[0] + mvdLX[0]
mvLX[1] = mvpLX[1] + mvdLX[1]
Режим адаптивного разрешения вектора движения amvr_mode представляет собой синтаксис, который переключает точность вектора движения, выведенного в режиме AMVP. Например, при amvr_mode=0, 1, 2 происходит переключение между точностью 1/4 пикселя, 1 пиксель и 4 пикселя.
[0092]
В случае, когда точность векторов движения равна 1/16 (MVPREC=16), декодер 302 параметров может выполнять обратное квантование путем использования MvShift (= 1 << amvr_mode), выведенного из amvr_mode, как описано ниже, чтобы заменить разность векторов движения с точностью 1/4, 1 или 4 пикселя разностью векторов движения с точностью 1/16 пикселя.
[0093]
mvdLX [0] = mvdLX [0] << (MvShift+2)
mvdLX[1] = mvdLX[1] << (MvShift+2)
Кроме того, декодер 302 параметров может декодировать и выводить mvdLX[], еще не подвергнутый вышеописанному сдвигу на MvShift, путем декодирования синтаксиса, приведенного ниже.
- abs_mvd_greater0_flag
- abs_mvd_minus2
- mvd_sign_flag
Затем декодер 302 параметров декодирует разностный вектор lMvd[] из синтаксиса, используя следующее уравнение.
[0094]
lMvd[compIdx] = abs_mvd_greater0_flag[compIdx] * (abs_mvd_minus2[compIdx] + 2) * (1-2 * mvd_sign_flag[compIdx]
Кроме того, декодер 302 параметров конфигурирует декодированный разностный вектор lMvd[] в MvdLX в случае поступательного движения MVD (MotionModelIdc[x][y] == 0) и конфигурирует декодированный вектор разности lMvd[] в MvdCpLX в случае контрольной точки MVD (MotionModelIdc[x][y] != 0).
[0095]
if (MotionModelIdc[x][y] == 0)
mvdLX[x0][y0][compIdx] = lMvd[compIdx]
else
mvdCpLX[x0][y0][compIdx] = lMvd[compIdx] << 2
Масштабирование вектора движения
Далее будет описан способ получения масштабирования вектора движения. Пусть Mv (эталонный вектор движения) - вектор движения, PicMv - изображение, содержащее Mv, PicMvRef - эталонное изображение для Mv, sMv - вектор движения, подвергнутый масштабированию, CurPic - изображение, содержащее блок с sMv, CurPicRef - эталонное изображение, на которое опирается sMv, тогда функция MvScale (Mv, PicMv, PicMvRef, CurPic, CurPicRef) для выведения sMv представляется следующим уравнением.
[0096]
sMv=MvScale (Mv, PicMv, PicMvRef, CurPic, CurPicRef)
= Clip3 (-R1, R1-1, sign (distScaleFactor * Mv) * ((abs (distScaleFactor * Mv) + round1-1) >> shift1))
distScaleFactor=Clip3 (-R2, R2-1, (tb * tx+round2) >> shift2)
tx = (16384+abs (td) >> 1)/td
td=DiffPicOrderCnt (PicMv, PicMvRef)
tb=DiffPicOrderCnt (CurPic, CurPicRef)
Здесь round1, round2, shift1 и shift2 - округленные значения и значения сдвига для деления с использованием обратной величины, такими как, например, round1=1 << (shift1-1), round2=1 << (shift2-1), shift1=8, shift2=6 и т. п. DiffPicOrderCnt (Pic1, Pic2) - функция, которая возвращает разность информации о времени (например, POC) между Pic1 и Pic2. Например, R1 и R2 используют для ограничения диапазона значений для выполнения обработки с ограниченной точностью, и, например, R1=32768, R2=4096 и т. п.
[0097]
Кроме того, функция масштабирования MvScale (Mv, PicMv, PicMvRef, CurPic, CurPicRef) может быть выражена следующим уравнением.
[0098]
MvScale (Mv, PicMv, PicMvRef, CurPic, CurPicRef) =
MV * DiffPicOrderCnt (CurPic, CurPicRef)/DiffPicOrderCnt (PicMv, PicMvRef)
Т. е. Mv может быть масштабирован в соответствии с отношением между разностью информации о времени между CurPic и CurPicRef и разностью информации о времени между PicMv и PicMvRef.
[0099]
Блок 30375 DMVR
Далее будет описано уточнение вектора движения на стороне декодера (DMVR) с помощью блока 30375 DMVR. Обработка DMVR представляет собой обработку, в которой векторы mvL0 и mvL1 корректируют с использованием двух эталонных изображений.
[0100]
На ФИГ. 10 представлена принципиальная схема, иллюстрирующая конфигурацию блока 30375 DMVR. Обработка, выполняемая блоком 30375 DMVR, будет подробно описана со ссылкой на ФИГ. 10. Блок 30375 DMVR содержит блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения, блок 303752 первоначального генерирования ошибки, блок 303753 поиска вектора движения и блок 303754 выведения корректирующего вектора.
[0101]
Блок 30375 DMVR обращается к следующим данным из устройства 30374 прогнозирования объединения:
- левое верхнее положение (xCb, yCb) целевого блока;
- ширина bW целевого блока;
- высота bH целевого блока;
- векторы движения mvL0 и mvL1 с точностью 1/16 пикселя;
- эталонные изображения refPicL0L и refPicL1L.
Затем блок 30375 DMVR выводит величины изменения dmvL0 и dmvL1 векторов движения для коррекции mvL0 и mvL1 и выводит величины изменения dmvL0 и dmvL1 в блок 309 генерирования изображений внешнего прогнозирования.
[0102]
Сначала блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения обращается к следующим данным:
- левое верхнее положение (xSb, ySb) целевого подблока;
- ширина sbW целевого подблока освещенности;
- высота sbH целевого подблока освещенности;
- вектор движения mvLX (X=0, 1);
- эталонное изображение refPicLXL (X=0, 1).
Затем блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводит прогнозируемое изображение predSamplesLXL, имеющее размер (sbW) * (sbH).
[0103]
В блоке 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводят вектор движения MvLsX (X=0, 1) с использованием следующего уравнения.
[0104]
MvLsX[0] = MvLX[0] - 32
MvLsX[1] = MvLX[1] - 32
Далее блок 30375 DMVR конфигурирует каждое из значений переменных srRange, offsetH[0], offsetV[0], offsetH[1] и offsetV[1] равными 2.
[0105]
Выраженные в единицах целочисленных пикселей эталонного блока положения пикселей в блоке, соответствующие положениям пикселей (xL, yL) в целевом блоке, представлены координатами (xIntL, yIntL). Кроме того, выраженное в единицах 1/16 пикселя смещение относительно (xIntL, yIntL) представлено координатами (xFracL, yFracL). Эти координаты получают из целочисленного компонента (mvLX[0] >> 4, mvLX[1] >> 4) и десятичного компонента mvLX[0] & 15, mvLX[1] & 15) вектора движения (mvLX[0], mvLX[1]), причем они указывают положение пикселя с точностью до знака после запятой на эталонном изображении refPicLXL. Что касается пикселей, положение которых на predSamplesLXL равно (xL, yL) (xL=0, ..., sbW - 1, yL=0, ..., sbH - 1), блок 30375 DMVR выводит xIntL, yIntL, xFracL и yFracL, используя следующие уравнения.
[0106]
xIntL=xSb + (mvLX[0] >> 4) + xL
yIntL=ySb + (mvLX[1] >> 4) + yL
xFracL=mvLX[0] & 15
yFracL=mvLX[1] & 15
После этого блок 30375 DMVR обращается к следующим данным:
- (xIntL, yIntL)
- (xFracL, yFracL)
- refPicLXL
Затем блок 30375 DMVR выводит predSamplesLXL.
[0107]
Сначала блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводит переменные shift1, shift2, shift3 и shift4, используя следующие уравнения.
[0108]
shift1=BitDepthY - 6
offset1=1 << (shift1-1)
shift2=4
offset2=8
shift3=10 - BitDepthY
offset3=1 << (shift3-1)
shift4=BitDepthY - 10
Следует отметить, что в вышеприведенных уравнениях BitDepthY является количеством битов пикселя.
[0109]
Далее блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения конфигурирует picW так, чтобы она была равна значению ширины pic_width_in_luma_samples изображения. Кроме того, блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения конфигурирует picH так, чтобы она была равна значению высоты pic_height_in_luma_samples изображения.
[0110]
Затем в блоке 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводят predSamplesLXL следующим образом. В последующем описании fbL[p] указывает коэффициент фильтра для получения значения пикселя с точностью 1/16 пикселя. Значение fbL[p] зависит от положения p (p=1, 2, ..., 15) с точностью 1/16 пикселя. Положение p равно xFracL или yFracL. С увеличением значения p fbL[p][0] монотонно убывает, а значение fbL[p][1] монотонно возрастает.
[0111]
Сначала в блоке 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения определяют, равно ли каждое из xFracL и yFracL 0 или нет. В случае, когда каждое из xFracL и yFracL равно 0, блок 30375 DMVR выводит predSamplesLXL при помощи любого из следующих уравнений в соответствии со значением BitDepthY.
[0112]
predSamplesLXL = (BitDepthY <= 10) ? (refPicLXL[xIntL][yIntL] << shift3) : ((refPicLXL[xIntL][yIntL] + offset3) >> shift4)
В случае, когда xFracL не равно 0, а yFracL равно 0, блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводит predSamplesLXL, используя следующее уравнение.
[0113]
predSamplesLXL = (fbL[xFracL][0] * refPicLXL[Clip3(0, picW - 1, xIntL)][yIntL] + fbL[xFracL][1] * refPicLXL[Clip3(0, picW - 1, xIntL+1)][yIntL] + offset1) >> shift1
В случае, когда xFracL равно 0, а yFracL не равно 0, блок 30375 DMVR выводит predSamplesLXL, используя следующее уравнение.
[0114]
predSamplesLXL = (fbL[yFracL][0] * refPicLXL[xIntL][Clip3(0, picH - 1, yIntL)] + fbL[yFracL][1] * refPicLXL[xIntL][Clip3(0, picH - 1, yIntL+1)] + offset1) >> shift1
В случае, когда ни xFracL, ни yFracL не равно 0, блок 303751 генерирования прогнозируемых изображений для поиска корректирующего вектора движения выводит predSamplesLXL следующим образом. Сначала блок 30375 DMVR выводит temp[n], используя следующее уравнение. Обработку выведения temp[] выполняют n раз, изменяя при этом опорные положения. n=0 представляет первую обработку выведения, а n=1 представляет вторую обработку выведения.
[0115]
yPosL=Clip3(0, PicH - 1, yIntL+n - 3)
temp[n] = (fbL[xFracL][0] * refPicLXL[Clip3(0, picW - 1, xIntL)][yPosL] + fbL[xFracL][1] * refPicLXL[Clip3(0, picW - 1, xIntL+1)][yPosL] + offset1) >> shift1
Затем блок 30375 DMVR выводит predSamplesLXL, используя следующее уравнение.
[0116]
predSamplesLXL = (fbL[yFracL][0] * temp[0] + fbL[yFracL][1] * temp[1]) >> shift2
Далее блок 303752 первоначального генерирования ошибки обращается к следующим данным:
- ширина nCbW целевого блока;
- высота nCbH целевого блока;
- два прогнозируемых изображения predSampleL1 и predSampleL2, имеющие размер (nCbW+4) x (nCbH+4);
- переменные offsetH[0], offsetH[1], offsetV[0] и offsetV[1].
Затем блок 303752 первоначального генерирования ошибки выводит список Sad1 сумм абсолютных разностей значений пикселей, включенных в predSampleL1 и predSampleL2, и переменную centerSad.
[0117]
Блок 30375 DMVR конфигурирует значение каждого элемента из массивов bC размера 2 × 9 в соответствии со следующими уравнениями.
[0118]
bC[0][0] = -1 bC[1][0] = -1
bC[0][1] = -1 bC[1][1] = 0
bC[0][2] = -1 bC[1][2] = 1
bC[0][3] = 0 bC[1][3] = -1
bC[0][4] = 0 bC[1][4] = 0
bC[0][5] = 0 bC[1][5] = 1
bC[0][6] = 1 bC[1][6] = -1
bC[0][7] = 1 bC[1][7] = 0
bC[0][8] = 1 bC[1][8] = 1
Блок 303752 первоначального генерирования ошибки выводит элементы sadList[i] (i=0, ..., 8) списка Sad1, используя следующее уравнение.
[0119]
[Math. 1]
[0120]
Кроме того, блок 303752 первоначального генерирования ошибки выводит centerSad, используя следующее уравнение.
[0121]
[Math. 2]
[0122]
Блок 303752 первоначального генерирования ошибки определяет, будет ли centerSad больше или равно (bH >> 1) * (bW) * 4 или нет. dmvrFlag представляет собой флаг, значение «ИСТИНА» которого указывает на то, что обработку DMVR выполняют, а значение «ЛОЖЬ» указывает на то, что обработку DMVR не выполняют. В случае, когда centerSad меньше или равно (bH >> 1) * (bW) * 4, ошибка мала, и поэтому блок 303752 первоначального генерирования ошибки определяет, что обработку DMVR не нужно выполнять, присваивает dmvrFlag значение «ЛОЖЬ», не корректирует вектор движения, и процесс переходит к блоку 309 генерирования изображений внешнего прогнозирования.
[0123]
В случае, когда centerSad больше или равно (bH >> 1) * (bW) * 4, блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ИСТИНА». Блок 303753 поиска вектора движения обращается к следующим данным:
- количество n точек поиска;
- элементы sadList списка Sad1 сумм абсолютных разностей точек поиска.
Затем блок 303753 поиска вектора движения выводит индекс bestIdx. n - положительное целое число.
[0124]
Далее будет описан случай для n=9. Следует отметить, что значение количества n точек поиска может отличаться от 9. Например, в отличие от способа, описанного в настоящем варианте осуществления, минимальное значение sadList может быть выбрано просто при n=25.
[0125]
Блок 303753 поиска вектора движения определяет, справедливо или нет утверждение sadList[1] < sadList[7] и справедливо или нет утверждение sadList[3] < sadList[5].
[0126]
В случае, когда утверждение sadList[1] < sadList[7] справедливо и утверждение sadList[3] < sadList[5] справедливо, блок 30375 DMVR конфигурирует значение idx равным 0. После этого блок 303753 поиска вектора движения определяет, справедливо или нет утверждение sadList[1] < sadList[3]. Блок 303753 поиска вектора движения конфигурирует значение bestIdx равным 1 в случае, когда утверждение sadList[1] < sadList[3] справедливо, и конфигурирует это значение равным 3 когда утверждение sadList[1] < sadList[3] несправедливо.
[0127]
В противном случае, когда утверждение sadList[1] >= sadList[7] справедливо и утверждение sadList[3] < sadList[5] справедливо, блок 303753 поиска вектора движения конфигурирует значение idx равным 6. После этого блок 30375 DMVR определяет, справедливо или нет утверждение sadList[7] < sadList[3]. Блок 303753 поиска вектора движения конфигурирует значение bestIdx равным 7 в случае, когда утверждение sadList[7] < sadList[3] справедливо, и конфигурирует это значение равным 3 когда утверждение sadList[7] < sadList[3] несправедливо.
[0128]
В противном случае, когда sadList[1] < sadList[7] справедливо и sadList[3] >= sadList[5] справедливо, блок 303753 поиска вектора движения конфигурирует значение idx равным 2. После этого блок 30375 DMVR определяет, справедливо или нет утверждение sadList[1] < sadList[5]. Блок 30375 DMVR конфигурирует значение bestIdx равным 1 в случае, когда sadList[1] < sadList[5] справедливо, и конфигурирует это значение равным 5, когда sadList[1] < sadList[5] несправедливо.
[0129]
В противном случае, когда sadList[1] >= sadList[7] справедливо и sadList[3] >= sadList[5] справедливо, блок 303753 поиска вектора движения конфигурирует значение idx равным 8. После этого блок 30375 DMVR определяет, справедливо или нет утверждение sadList[7] < sadList[5]. Блок 30375 DMVR конфигурирует значение bestIdx равным 7 в случае, когда sadList[7] < sadList[5] справедливо, и конфигурирует это значение равным 5, когда sadList[7] < sadList[5] несправедливо.
[0130]
Кроме того, блок 303753 поиска вектора движения определяет, справедливо или нет утверждение sadList[4] <= sadList[bestIdx]. В случае, когда утверждение sadList[4] <= sadList[bestIdx] справедливо, блок 30375 DMVR обновляет значение bestIdx до 4. Напротив, когда утверждение sadList[4] <= sadList[bestIdx] несправедливо, блок 30375 DMVR не обновляет значение bestIdx.
[0131]
Кроме того, блок 303753 поиска вектора движения определяет, справедливо или нет утверждение sadList[idx] < sadList[bestIdx]. В случае, когда утверждение sadList[idx] < sadList[bestIdx] справедливо, блок 30375 DMVR устанавливает bestIdx равным idx. Напротив, когда утверждение sadList[idx] < sadList[bestIdx] несправедливо, блок 303753 поиска вектора движения не обновляет значение bestIdx.
[0132]
Блок 303753 поиска вектора движения определяет, равно ли значение bestIdx 4 или нет. В случае, когда значение bestIdx равно 4, блок 303753 поиска вектора движения конфигурирует halfPelAppliedflag равным значению «истина».
[0133]
В случае, когда значение bestIdx не равно 4, блок 303753 поиска вектора движения вычисляет значения переменных dmvx и dmvy, используя следующие уравнения.
[0134]
dmvx = (bestIdx/3-1)
dmvy = (bestIdx%3-1)
Кроме того, блок 303753 поиска вектора движения обновляет offsetH и offsetV, используя следующие уравнения.
[0135]
offsetH[0] = offsetH[0] + dmvx, offsetV[0] = offsetV[0] + dmvy
offsetH[1] = offsetH[1] - dmvx, offsetV[1] = offsetV[1] - dmvy
Используя обновленные offsetH и offsetV, блок 303753 поиска вектора движения получает Sad2 посредством обработки, аналогичной обработке выведения Sad1, описанной выше. Кроме того, блок 303753 поиска вектора движения повторно выводит bestIdx, используя Sad2 вместо Sad1.
[0136]
Блок 303753 поиска вектора движения определяет, равно ли повторно выведенное значение bestIdx 4 или нет. В случае, когда значение bestIdx равно 4, блок 303753 поиска вектора движения конфигурирует halfPelAppliedflag равным значению «истина».
[0137]
В случае, когда значение bestIdx не равно 4, блок 303753 поиска вектора движения вычисляет dmvx и dmvy, используя следующие уравнения.
[0138]
dmvx = (bestIdx/3-1), dmvy = (bestIdx%3-1)
Кроме того, блок 30375 DMVR вычисляет dmvL0 и dmvL1, используя следующее уравнение.
[0139]
dmvL0[0] = 16 * dmvx, dmvL0[1] = 16 * dmvy
dmvL1[0] = -16 * dmvx, dmvL1[1] = -16 * dmvy
В случае, когда halfPelAppliedflag имеет значение «истина», блок 303753 поиска вектора движения выводит скорректированные значения dmvL0 и dmvL1 следующим образом. Следует отметить, что показанный ниже sadList является элементом Sad2 при наличии Sad2 и элементом Sad1 в отсутствии Sad2.
[0140]
Сначала блок 303753 поиска вектора движения определяет, справедливо или нет утверждение sadList[1] + sadList[7] == sadList[4]. В случае, когда утверждение sadList[1] + sadList[7] == sadList[4] справедливо и утверждение mrSadT+mrSadB - (mrSadC << 1) == 0 справедливо, блок 303753 поиска вектора движения конфигурирует dmv[0] = 0. В случае, когда утверждение sadList[1] + sadList[7] == sadList[4] несправедливо, блок 303753 поиска вектора движения вычисляет dmv[0], используя следующее уравнение.
[0141]
dmv[0] = ((sadList[1] - sadList[7]) << 3)/(sadList[1] + sadList[7] - (sadList[4] << 1))
Далее блок 303754 выведения корректирующего вектора определяет, справедливо или нет утверждение sadList[3] + sadList[5] == sadList[4]. В случае, когда утверждение sadList[3] + sadList[5] == sadList[4] справедливо и утверждение mrSadL+mrSadR - (mrSadC << 1) == 0 справедливо, блок 303754 выведения корректирующего вектора конфигурирует dmv[1] = 0. В случае, когда утверждение sadList[3] + sadList[5] == sadList[4] несправедливо, блок 303754 выведения корректирующего вектора вычисляет dmv[1], используя следующее уравнение.
[0142]
dmv[1] = ((sadList[3] - sadList[5]) << 3)/(sadList[3] + sadList[5] - (sadList[4] << 1))
Кроме того, блок 303754 выведения корректирующего вектора корректирует векторы движения mvL0 и mvL1, используя следующие уравнения.
[0143]
dmvL0[0] = dmvL0[0] + dmv[0]
dmvL0[1] = dmvL0[1] + dmv[1]
dmvL1[0] = dmvL1[0] - dmv[0]
dmvL1[1] = dmvL1[1] - dmv[1]
Блок 30375 DMVR складывает полученный разностный вектор dmvLX с вектором прогнозирования mvpLX, вводимым из устройства 30374 прогнозирования объединения, и тем самым вычисляет вектор движения mvLX. Блок 30375 DMVR выводит mvLX в блок генерирования 309 изображений внешнего прогнозирования.
[0144]
mvLX[0] = mvpLX[0] + dmvLX[0]
mvLX[1] = mvpLX[1] + dmvLX[1]
Следует отметить, что значения dmvLX[0] и dmvLX[1] ограничены диапазоном от -8 до 8 вне зависимости от количества битов sadList.
[0145]
Критерий определения DMVR
dmvrFlag представляет собой флаг, значение «ИСТИНА» которого указывает на то, что обработку DMVR выполняют, а значение «ЛОЖЬ» указывает на то, что обработку DMVR не выполняют.
[0146]
В случае, когда флаг, который является флагом SPS и является флагом, указывающим на то, что обработка DMVR возможна, находится в состоянии «Вкл», блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ИСТИНА». В противном случае блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ».
[0147]
Кроме того, в случае, когда merge_flag блока имеет значение «ИСТИНА», блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА». В противном случае блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ».
[0148]
В случае, когда оба predFlagL0 и predFlagL1 имеют значение «ИСТИНА», т. е. в случае двунаправленного прогнозирования, блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА». В противном случае блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ».
[0149]
В случае, когда mmvd_flag блока имеет значение «ЛОЖЬ», т. е. не в режиме MMVD, блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА». Иначе в случае режима MMVD блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ».
[0150]
В случае, когда DiffPicOrderCnt(currPic, RefPicList[0][refIdxL0]) равен DiffPicOrderCnt(RefPicList[1][refIdxL1], currPic), т. е. в случае когда эталонное изображение RefPicList[0][refIdxL0] списка L0 и эталонное изображение RefPicList[1][refIdxL1] списка L1 таковы, что их взаимное расположение интерполируется при равных расстояниях относительно текущего изображения currPic, блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА». В противном случае блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ». В данном случае DiffPicOrderCnt() представляет собой функцию, которая выводит разницу между счетчиком порядковых номеров изображений (POC: порядок отображения изображений) между двумя изображениями следующим образом.
[0151]
DiffPicOrderCnt(picA, picB) = PicOrderCnt(picA) - PicOrderCnt(picB)
Следует отметить, что если утверждение DiffPicOrderCnt(currPic, RefPicList[0][refIdxL0]) * DiffPicOrderCnt(currPic, RefPicList[1][refIdxL1]) < 0 справедливо, в случае наличия просто интерполированного взаимного расположения блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА»; в противном случае блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ЛОЖЬ».
[0152]
Кроме того, в случае когда размер блока обработки меньше или равен конкретному размеру, блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ЛОЖЬ». Кроме того, в случае когда bH больше или равно 8, а bH * bW равно 64, блок 303752 первоначального генерирования ошибки может присвоить dmvrFlag значение «ИСТИНА». В противном случае блок 303752 первоначального генерирования ошибки присваивает dmvrFlag значение «ЛОЖЬ».
[0153]
На ФИГ. 11 представлена блок-схема, иллюстрирующая поток обработки в блоке 30375 DMVR. В настоящем изобретении в дополнение к критерию определения, описанному выше, как показано на ФИГ. 11, добавлено условие, что обработку DMVR применяют только в том случае, когда не применяют обработку GBI, которая будет описана позже.
[0154]
В частности, сначала блок 30375 DMVR выполняет (S1101) обработку определения dmvrFlag, описанную выше. Далее блок 30375 DMVR выполняет определение (S1102) того, равен ли gbiIdx 0 или нет. Как будет описано позже, в случае ненулевого значения gbiIdex выполняет неравновзвешенное прогнозирование на основании таблицы gbiWLut. В случае, когда gbiIdx равен 0, в дополнение к условию присвоения dmvrFlag значения «ИСТИНА», если gbiIdx не равен нулю, dmvrFlag присваивают (S1103) значение «ЛОЖЬ».
[0155]
Кроме того, блок 30375 DMVR определяет (S1104), имеет или нет dmvrFlag значение «ИСТИНА», и если dmvrFlag имеет значение «ИСТИНА», блок 30375 DMVR выполняет (S1105) обработку DMVR, а если dmvrFlag имеет значение «ЛОЖЬ», блок 30375 DMVR не выполняет обработку DMVR.
[0156]
В случае применения прогнозирования GBI применяют взвешенное прогнозирование, и, таким образом, за счет ограничения условия применения с учетом неправильной оценки ошибок можно уменьшить общий объем обработки.
[0157]
Аналогичным образом во взвешенном прогнозировании, которое будет описано позже, в том случае, когда при любом одном из прогнозирования L0 и прогнозирования L1 применения обработки DMVR выполняют взвешенное прогнозирование, dmvrFlag присваивают значение «ЛОЖЬ». В частности, в случае когда оба из luma_weight_l0_flag[refIdxL0], указывающего на то, присутствуют ли весовой коэффициент w0 и смещение o0 освещенности на прогнозируемом изображении L0, и luma_weight_l1_flag[refIdxL1], указывающего на то, присутствуют ли весовой коэффициент w1 и смещение o1 освещенности на прогнозируемом изображении L1, имеют значение «ЛОЖЬ», в условие добавляют присвоение dmvrFlag значения «ИСТИНА»; в противном случае dmvrFlag присваивают значение «ЛОЖЬ».
[0158]
Определение BDOF посредством обработки порога ошибки в DMVR
В DMVR выполняют обработку ошибок вычисления прогнозируемого изображения L0 и прогнозируемого изображения L1. На основании значений ошибок в этом случае заранее определяют, выполняется или нет обработка BDOF (описанная позже), которую выполняют на более позднем этапе.
[0159]
На ФИГ. 12 представлена блок-схема, иллюстрирующая обработку выполнения определения BDOF посредством обработки порога ошибки в DMVR.
[0160]
Сначала блок 303752 первоначального генерирования ошибки заранее устанавливает (S1201) bdofFlag в значение «ИСТИНА». Далее блок 303752 первоначального генерирования ошибки выводит (S1202) centerSad и определяет (S1203), является или нет значение centerSad равным или большим, чем значение порога (bH >> 1) * bW * 4. В случае, когда значение centerSad меньше порога, блок 303752 первоначального генерирования ошибки определяет, что ошибка мала, устанавливает (S1204) bdofFlag, указывающий на то, выполняется ли обработка BDOF, в значение «ЛОЖЬ» и принимает меры, чтобы не выполнять обработку BDOF заранее. Это определение аналогично вышеописанному определению блока 30752 первоначального генерирования ошибки, и, таким образом, блок 303753 поиска вектора движения и блок 303754 выведения корректирующего вектора пропускаются, и обработка DMVR также не выполняется. В случае, когда значение centerSad равно или больше порога, блок 303753 поиска вектора движения выполняет (S1205) поиск корректирующего вектора движения, а блок 303754 выведения корректирующего вектора определяет (S1206), является или нет значение sadList[bestIdx], представляющее собой минимальное значение SAD индекса bestIdx в результате поиска корректирующего вектора движения, меньшим значения порога (bH >> 1) * bW * 8. В случае, когда значение sadList[bestIdx] меньше порога, блок 303754 выведения корректирующего вектора определяет, что ошибка мала, устанавливает (S1207) bdofFlag, указывающий на то, выполняется ли обработка BDOF, в значение «ЛОЖЬ» и принимает меры, чтобы не выполнять обработку BDOF заранее.
[0161]
Следует отметить, что порог этапа (S1206) является значением, которое больше или равно порогу на этапе (S1203).
[0162]
В обработке DMVR обработка вычисления ошибок прогнозируемого изображения L0 и прогнозируемого изображения L1 необходима для поиска корректирующего вектора движения, в то время как в обработке BDOF это не дает эффекта в том случае, когда ошибки очень малы, и, следовательно, добавление этой обработки, как описано выше, позволяет определять, выполняется или нет BDOF, без добавления дополнительного вычисления ошибки.
[0163]
В блоке BDOF, который будет описан позже, определяют (S1208), имеет ли bdofFlag значение «ИСТИНА» или нет, и если ответ «Да», то в декодере 303 параметров внешнего прогнозирования обработку BDOF выполняют (S1209). Если в этом блоке ответ «Нет», определяют, что обработку BDOF не выполняют.
[0164]
Прогнозирование треугольников
Ниже приведено описание прогнозирования треугольников. При прогнозировании треугольников целевой CU разделяется на два треугольных блока прогнозирования с использованием диагональной линии или противоположной диагональной линии в качестве границы раздела. Прогнозируемое изображение в каждом треугольном блоке прогнозирования выводят путем выполнения обработки весовой маски на каждом пикселе прогнозируемого изображения целевого CU (прямоугольный блок, включающий в себя треугольный блок прогнозирования) в зависимости от положения пикселя. Например, треугольное изображение может быть получено из прямоугольного изображения посредством мультипликации посредством маскирования, при котором значения пикселей треугольной области, включенной в прямоугольную область, равны 1, тогда как значения пикселей участков прямоугольной области, кроме участка, соответствующего треугольной области, равны 0. Адаптивную взвешенную обработку прогнозируемого изображения применяют к областям по обе стороны от диагональной линии и посредством адаптивной взвешенной обработки с использованием двух прогнозируемых изображений получают одно прогнозируемое изображение целевого CU (прямоугольный блок). Такую обработку называют «обработка объединения треугольников». Ко всему целевому CU применяют обработку преобразования (обратное преобразование) и квантования (обратное квантование). Следует отметить, что прогнозирование треугольников применяется только в режиме прогнозирования объединения или режиме пропуска.
[0165]
Блок 30377 прогнозирования треугольников выводит параметры прогнозирования, соответствующие двум треугольным областям, используемым для прогнозирования треугольников, и выдает выведенные параметры прогнозирования в блок 309 генерирования изображений внешнего прогнозирования. Прогнозирование треугольников может быть сконфигурировано с возможностью выполнения без применения двунаправленного прогнозирования для упрощения обработки. В этом случае параметр внешнего прогнозирования для однонаправленного прогнозирования выводят на одной треугольной области. Следует отметить, что блок 3091 компенсации движения и блок 30952 объединения треугольников выводят два прогнозируемых изображения и выполняют объединение с использованием прогнозируемых изображений.
[0166]
Устройство 30376 прогнозирования MMVD
Устройство 30376 прогнозирования MMVD выполняет обработку в режиме слияния с разностью векторов движения (MMVD). Режим MMVD представляет собой режим, в котором вектор движения получают сложением разностного вектора на заданном расстоянии и в заданном направлении с вектором движения, полученным из варианта объединения (с вектором движения, полученным из вектора движения соседнего блока и т. п.). В режиме MMVD устройство 30376 прогнозирования MMVD эффективно выводит вектор движения, используя вариант объединения и ограничивая диапазон значений разностного вектора заданными расстояниями (например, восемью расстояниями) и заданными направлениями (например, четырьмя направлениями, восемью направлениями и т. п.).
[0167]
Контурный фильтр 305 представляет собой фильтр, предусмотренный в цикле кодирования, и представляет собой фильтр, который устраняет блочное и кольцевое искажение, а также повышает качество изображения. Контурный фильтр 305 применяет фильтр, такой как антиблочный фильтр, адаптивное смещение выборки (SAO) и адаптивный контурный фильтр (ALF) к декодированному изображению CU, генерируемому блоком 312 сложения.
[0168]
В памяти 306 эталонных изображений хранится декодированное изображение CU, сгенерированное блоком 312 сложения, в предварительно заданной позиции для каждого целевого изображения и целевого CU.
[0169]
В памяти 307 параметров прогнозирования хранится параметр прогнозирования в положении, предварительно заданном для каждого декодируемого CTU или CU. В частности, в памяти 307 параметров прогнозирования хранится параметр, декодированный декодером 302 параметров, режим прогнозирования predMode, декодированный энтропийным декодером 301 и т. п.
[0170]
В блок 308 генерирования прогнозируемых изображений вводят режим прогнозирования predMode, параметр прогнозирования и т. п. Кроме того, блок 308 генерирования прогнозируемых изображений считывает эталонное изображение из памяти 306 эталонных изображений. Блок 308 генерирования прогнозируемых изображений генерирует прогнозируемое изображение блока или подблока с использованием параметра прогнозирования и считанного эталонного изображения (блока эталонного изображения) в режиме прогнозирования, указанном режимом прогнозирования predMode. В данном случае блок эталонного изображения относится к набору пикселей (их называют блоком, поскольку обычно они имеют прямоугольную форму) на эталонном изображении и представляет собой область, которая упоминается для генерирования прогнозируемого изображения.
[0171]
Блок 309 генерирования изображений внешнего прогнозирования
В случае, когда режим прогнозирования predMode указывает режим внешнего прогнозирования, блок 309 генерирования изображений внешнего прогнозирования генерирует прогнозируемое изображение блока или подблока с использованием внешнего прогнозирования посредством использования параметра внешнего прогнозирования, поступающего от декодера 303 параметров внешнего прогнозирования и считанного эталонного изображения.
[0172]
На ФИГ. 13 представлена принципиальная схема, иллюстрирующая конфигурацию блока 309 генерирования изображений внешнего прогнозирования, включенного в блок 308 генерирования прогнозируемых изображений, согласно настоящему варианту осуществления. Блок 309 генерирования изображений внешнего прогнозирования включает в себя блок 3091 компенсации движения (устройство генерирования прогнозируемых изображений) и блок 3095 объединения.
[0173]
Компенсация движения
Блок 3091 компенсации движения (блок генерирования интерполяционных изображений) считывает из памяти 306 эталонных изображений блок, находящийся в положении, сдвинутом вектором движения mvLX из положения целевого блока на эталонном изображении RefPicLX, указанном индексом эталонного изображения refIdxLX, на основании параметров внешнего прогнозирования (флаг использования списка прогнозирования predFlagLX, индекс эталонного изображения refIdxLX, вектор движения mvLX), которые вводятся из декодера 303 параметров внешнего прогнозирования, и тем самым генерирует интерполяционное изображение (изображение компенсации движения). В данном случае, если точность вектора движения mvLX не является целым числом, за счет применения фильтра для генерирования пикселя в выраженном в долях положении, называемого «фильтром компенсации движения», генерируют интерполяционное изображение.
[0174]
Блок 3091 компенсации движения сначала выводит положение целого числа (xInt, yInt) и фазу (xFrac, yFrac), соответствующие координатам блока внутреннего прогнозирования (x, y), с помощью следующего уравнения.
[0175]
xInt=xPb + (mvLX[0] >> (log2 (MVPREC))) + x
xFrac=mvLX[0]&(MVPREC - 1)
yInt=yPb + (mvLX[1] >> (log2(MVPREC))) + y
yFrac=mvLX[1]&(MVPREC - 1)
В данном случае (xPb, yPb) указывает верхние левые координаты блока с размером bW * bH, то есть x=0 ... bW - 1, y=0 ... bH - 1, и MVPREC указывает на точность вектора движения mvLX (точность пикселя 1/MVPREC). Таким образом, MVPREC может составлять 16.
[0176]
Блок 3091 компенсации движения выводит временное изображение temp[][] посредством выполнения обработки горизонтальной интерполяции эталонного изображения с использованием интерполяционного фильтра. В следующем уравнении Σ представляет собой сумму, относящуюся к k=0, ..., NTAP - 1, shift1 представляет собой параметр нормализации для корректировки диапазона значений и offset1=1 << (shift1-1).
[0177]
temp[x][y] = (ΣmcFilter[xFrac][k] * refImg[xInt+k - NTAP/2+1][yInt] + offset1) >> shift1
Затем блок 3091 компенсации движения выводит интерполяционное изображение Pred[][] посредством выполнения обработки вертикальной интерполяции временного изображения temp[][]. В следующем уравнении Σ представляет собой сумму, относящуюся к k=0, ..., NTAP - 1, shift2 представляет собой параметр нормализации для корректировки диапазона значений и offset2=1 << (shift2-1).
[0178]
Pred[x][y] = (ΣmcFilter[yFrac][k] * temp[x][y+k-NTAP/2+1] + offset2) >> shift2
Блок объединения
Блок 3095 объединения обращается к интерполяционному изображению, вводимому блоком 3091 компенсации движения, параметру внешнего прогнозирования, вводимому декодером 303 параметров внешнего прогнозирования, и внутреннему изображению, вводимому блоком 310 генерирования изображений внутреннего прогнозирования, чтобы сгенерировать прогнозируемое изображение, и выводит сгенерированное прогнозируемое изображение в блок 312 сложения.
[0179]
Блок 3095 объединения включает в себя блок смешанного внутреннего/внешнего объединения 30951, блок 30952 объединения треугольников, блок 30953 OBMC и блок 30956 BDOF.
[0180]
Обработка смешанного внутреннего/внешнего объединения
Блок 30951 смешанного внутреннего/внешнего объединения генерирует прогнозируемое изображение посредством использования в качестве компонентов однонаправленного прогнозирования, режима пропуска, режима объединения и внутреннего прогнозирования в AMVP.
[0181]
Обработка объединения треугольников
Блок 30952 объединения треугольников генерирует прогнозируемое изображение с использованием описанного выше прогнозирования треугольника.
[0182]
Обработка OBMC
Блок 30953 OBMC генерирует прогнозируемое изображение с использованием обработки компенсации движения при наложении блоков (OBMC). Обработка OBMC включает в себя следующую обработку.
- Генерируют интерполяционное изображение (изображение компенсации движения) целевого подблока посредством использования интерполяционного изображения (интерполяционного изображения PU), которое сгенерировано с использованием параметра внешнего прогнозирования для целевого подблока, и интерполяционного изображения (интерполяционного изображения OBMC), которое сгенерировано с использование параметра движения соседнего подблока целевого подблока.
- Генерируют прогнозируемое изображение посредством взвешенного усреднения интерполяционного изображения OBMC и интерполяционного изображения PU.
[0183]
Устройство 30954 взвешенного прогнозирования
Устройство 309454 взвешенного прогнозирования генерирует прогнозируемое изображение блока путем умножения изображений компенсации движения PredL0 и PredL1 на весовой коэффициент. В случае, когда один из флагов использования списка прогнозирования (predFlagL0 или predFlagL1) равен 1 (однонаправленное прогнозирование), а взвешенное прогнозирование не используется, выполняется обработка в соответствии со следующим уравнением, в котором изображение компенсации движения PredLX (LX равно L0 или L1) адаптировано к числу бит на пиксель bitDepth.
[0184]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, (PredLX[x][y] + offset1) >> shift1)
Здесь установлены shift1=Max(2, 14 - bitDepth) и offset1=1 << (shift1-1).
[0185]
Обработка двунаправленного прогнозирования
Более того, в случае когда оба флага использования списка прогнозирования (predFlagL0 и predFlagL1) равны 1 (двунаправленное прогнозирование BiPred), и не используется взвешенное прогнозирование, выполняется обработка в соответствии со следующим уравнением, в котором изображения компенсации движения PredL0 и PredL1 усредняются и адаптируются к числу бит на пиксель.
[0186]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, (PredL0[x][y] + PredL1[x][y] + offset2) >> shift2)
Здесь установлены shift2=Max(3, 15 - bitDepth) и offset2=1 << (shift2-1). Далее в настоящем документе эта обработка также именуется стандартным двунаправленным прогнозированием.
[0187]
Кроме того, если используют однонаправленное прогнозирование и флаг (в случае освещенности luma_weight_l0_flag, а в случае цветности chroma_weight_l0_flag), указывающий на то, присутствуют ли коэффициент w0 и смещение o0 взвешенного прогнозирования на эталонном изображении L0, включен, в случае прогнозирования L0 устройство 30954 взвешенного прогнозирования выводит коэффициент w0 и смещение o0 взвешенного прогнозирования из кодированных данных и выполняет обработку следующего уравнения.
[0188]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, ((PredL0[x][y] * w0 + (1 << (log2WD - 1))) >> log2WD) + o0)
В случае прогнозирования L1, когда флаг, указывающий на то, присутствуют ли коэффициент w1 взвешенного прогнозирования и смещение o1 на эталонном изображении L1 (luma_weight_l1_flag в случае освещенности и chroma_weight_l1_flag в случае цветности), включен, устройство 30954 взвешенного прогнозирования выводит коэффициент w1 и смещение o1 взвешенного прогнозирования из кодированных данных и выполняет обработку следующего уравнения.
[0189]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, ((PredL1[x][y] * w1 + (1 << (log2WD - 1))) >> log2WD) + o1)
В данном случае log2WD, очевидно, представляет собой переменную, полученную посредством сложения значений Log2WeightDenom+shift1, которые передаются в заголовке среза по отдельности для яркости и цветности.
[0190]
Взвешенная обработка двунаправленного прогнозирования
Кроме того, если используют двунаправленное BiPred и флаг (в случае освещенности luma_weight_l0_flag, luma_weight_l1_flag, а в случае цветности chroma_weight_l0_flag, chroma_weight_l1_flag), указывающий на то, присутствуют ли коэффициент взвешенного прогнозирования и смещение, указывает на выполнение взвешенного прогнозирования, устройство 30954 взвешенного прогнозирования выводит коэффициенты w0, w1, o0 и o1 взвешенного прогнозирования из кодированных данных и выполняет обработку следующего уравнения.
[0191]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, (PredL0[x][y] * w0+PredL1[x][y] * w1 + ((o0+o1+1) << log2WD)) >> (log2WD+1))
Блок 30955 GBI
Вышеприведенное взвешенное прогнозирование описывает пример, в котором прогнозируемое изображение генерируют путем умножения интерполяционного изображения на весовой коэффициент. Теперь будет описан еще один пример, в котором прогнозируемое изображение генерируют путем умножения интерполяционного изображения на весовой коэффициент. В частности, будет описана обработка генерирования прогнозируемого изображения путем использования обобщенного двунаправленного прогнозирования (обобщенного двойного прогнозирования, в дальнейшем именуемого «прогнозированием GBI»). При прогнозировании GBI прогнозируемое изображение Pred генерируют путем умножения прогнозируемого изображения L0 PredL0 и прогнозируемого изображения L1 PredL1 при двунаправленном прогнозировании на весовые коэффициенты (w0, w1).
[0192]
Кроме того, в случае когда прогнозируемое изображение формируют с использованием прогнозирования GBI, блок 30955 GBI переключает весовые коэффициенты (w0, w1) на единицы блока кодирования. В частности, блок GBI 30954 блока 309 генерирования изображений внешнего прогнозирования обеспечивает конфигурирование весового коэффициента для каждого блока кодирования. При прогнозировании GBI заранее определяют множество вариантов весовых коэффициентов, а gbiIdx представляет собой индекс, который указывает весовой коэффициент, используемый в целевом блоке, из множества вариантов весовых коэффициентов, включенных в таблицу gbiWLut.
[0193]
Блок 30955 GBI проверяет флаг gbiAppliedFlag, указывающий на то, используется ли прогнозирование GBI, и в случае, когда флаг указывает «ЛОЖЬ», блок 3091 компенсации движения генерирует прогнозируемое изображение, используя следующее уравнение.
[0194]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1,
(PredL0[x][y] + PredL1[x][y] + offset2) >> shift2)
Здесь gbiAppliedFlag в своем исходном состоянии имеет значение «ЛОЖЬ». В случае, когда флаг, который является флагом SPS и является флагом, указывающим на то, что обработка GBI возможна, находится в состоянии «Вкл», блок 30955 GBI конфигурирует gbiAppliedFlag со значением «ИСТИНА». Кроме того, в качестве дополнительного условия («И») в случае когда gbiIdx, являющийся индексом таблицы gbiWLut весовых коэффициентов прогнозирования GBI, не равен 0 (значение индекса в случае, когда веса прогнозируемого изображения L0 и прогнозируемого изображения L1 равны), gbiAppliedFlag может быть присвоено значение «ИСТИНА». Кроме того, в качестве дополнительного условия («И») в случае когда размер блока CU больше или равен определенному размеру, gbiAppliedFlag может быть присвоено значение «ИСТИНА».
[0195]
В случае, когда gbiAppliedFlag имеет значение «ИСТИНА», блок 30955 GBI выводит прогнозируемое изображение Pred, исходя из весовых коэффициентов w0 и w1, а также PredL0 и PredL1, используя следующее уравнение.
[0196]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1,
(w0 * PredL0[x][y] + w1 * PredL1[x][y] + offset3) >> (shift2+3))
Здесь весовой коэффициент w1 является коэффициентом, полученным с использованием явно указанного с помощью синтаксиса индекса gbiIdx из таблицы iWLut[] = {4, 5, 3, 10, -2}. Предполагается, что весовой коэффициент w0 равен (8 - w1). Следует отметить, что если gbiIdx=0, то w0=w1=4, что эквивалентно стандартному двунаправленному прогнозированию.
[0197]
shift1, shift2, offset1 и offset2 выводят, используя следующие уравнения.
[0198]
shift1=Max(2, 14 - bitDepth)
shift2=Max(3, 15 - bitDepth) = shift1+1
offset1=1 << (shift1-1)
offset2=1 << (shift2-1)
offset3=1 << (shift2+2)
Следует отметить, что существует множество таблиц gbiWLut, имеющих различные комбинации весовых коэффициентов, и что блок 30955 GBI может переключать таблицы, используемые для выбора весового коэффициента, в зависимости от конфигурации изображения LowDelay (LB).
[0199]
В случае использования прогнозирования GBI в режиме прогнозирования AMVP декодер 303 параметров внешнего прогнозирования декодирует gbiIdx и передает декодированный gbiIdx в блок 30955 GBI. Дополнительно в случае использования прогнозирования GBI в режиме прогнозирования объединения декодер 303 параметров внешнего прогнозирования декодирует индекс объединения merge_idx, и блок выведения вариантов объединения 30361 выводит gbiIdx каждого варианта объединения. В частности, блок 30361 выведения вариантов объединения использует весовой коэффициент соседнего блока, используемого для выведения варианта объединения, в качестве весового коэффициента варианта объединения, используемого для целевого блока. Другими словами, в режиме объединения в качестве весового коэффициента целевого блока принимают ранее используемый весовой коэффициент.
[0200]
Выбор режима прогнозирования с использованием прогнозирования GBI
Далее со ссылкой на ФИГ. 14 будет описана обработка выбора режима прогнозирования, использующего прогнозирование GBI, в устройстве 31 декодирования видеосигналов. На ФИГ. 14 представлена блок-схема, иллюстрирующая пример потока обработки выбора режима прогнозирования в устройстве 31 декодирования видеосигналов.
[0201]
Как показано на ФИГ. 14, декодер 303 параметров внешнего прогнозирования сначала декодирует флаг пропуска (S1401). В случае, когда флаг пропуска указывает на то, что режим пропуска активен (ДА на этапе S1402), режим прогнозирования становится (S1403) режимом объединения и декодер 303 параметров внешнего прогнозирования объединяет (S14031) индекс, а в случае использования прогнозирования GBI блок 30955 GBI выводит весовой коэффициент, выведенный с помощью варианта объединения, в качестве весового коэффициента прогнозирования GBI.
[0202]
В случае, когда флаг пропуска не указывает на то, что режим пропуска активен (НЕТ в S1402), декодер 303 параметров внешнего прогнозирования декодирует флаг объединения (S1407). В случае, когда флаг объединения указывает на то, что режим объединения активен (ДА на этапе S1408), режим прогнозирования становится (S1403) режимом объединения и декодер 303 параметров внешнего прогнозирования декодирует (S14031) индекс объединения. В случае использования прогнозирования GBI блок 30955 GBI выводит весовой коэффициент, выведенный с помощью варианта объединения, в качестве весового коэффициента прогнозирования GBI.
[0203]
В случае, когда флаг объединения не указывает на то, что режим объединения активен (НЕТ в S1408), в качестве режима прогнозирования устанавливается режим AMVP (S1409).
[0204]
В режиме AMVP декодер 303 параметров внешнего прогнозирования декодирует индикатор внешнего прогнозирования inter_pred_idc (S14090). Затем декодер 303 параметров внешнего прогнозирования декодирует (S14091) разностный вектор mvdLX. После этого декодер 303 параметров внешнего прогнозирования декодирует (S14092) gbiIdx и в случае использования прогнозирования GBI блок 30955 GBI выбирает весовой коэффициент w1 прогнозирования GBI из вариантов весовых коэффициентов таблицы gbiWLut.
[0205]
Прогнозирование BDOF
Далее будет подробно описано прогнозирование (прогнозирование BDOF) с использованием обработки BDOF, выполняемой блоком 30956 BDOF. В режиме двунаправленного прогнозирования блок 30956 BDOF обращается к двум прогнозируемым изображениям (первое прогнозируемое изображение и второе прогнозируемое изображение) и градиентному поправочному члену и, таким образом, генерирует прогнозируемое изображение.
[0206]
На ФИГ. 15 представлена блок-схема, иллюстрирующая поток обработки выведения прогнозируемого изображения.
[0207]
В случае, когда декодер 303 параметров внешнего прогнозирования определяет режим однонаправленного прогнозирования L0 (на этапе S1501 inter_pred_idc равен 0), блок 3091 компенсации движения генерирует (S1502) прогнозируемое изображение L0 PredL0[x][y]. В случае, когда декодер 303 параметров внешнего прогнозирования определяет режим однонаправленного прогнозирования L1 (на этапе S1501 inter_pred_idc равен 1), блок 3091 компенсации движения генерирует (S1503) прогнозируемое изображение L1 PredL1[x][y]. Напротив, в случае когда декодер 303 параметров внешнего прогнозирования определяет режим двунаправленного прогнозирования (на этапе S1501 inter_ pred_idc равен 2), обработка переходит к обработке этапа S1504, описанной ниже. На этапе S1504 блок 3095 объединения обращается к bioAvailableFlag, указывающему на то, выполняется ли обработка BDOF, и определяет, необходима ли обработка BDOF. В случае, когда bioAvailableFlag имеет значение «ИСТИНА», блок 30956 BDOF выполняет обработку BDOF и генерирует (S1506) изображение двунаправленного прогнозирования. В случае, когда bioAvailableFlag имеет значение «ЛОЖЬ», блок 3095 объединения генерирует (S1505) прогнозируемое изображение посредством генерирования стандартного двунаправленного прогнозируемого изображения.
[0208]
В случае, когда эталонное изображение refImgL0 для L0 и эталонное изображение refImgL1 для L1 являются разными эталонными изображениями и эти два изображения противоположно направлены относительно целевого изображения, декодер 303 параметров внешнего прогнозирования может вывести значение «ИСТИНА» для bioAvailableFlag. В частности, предполагается, что целевым изображением является currPic и в том случае, когда условие DiffPicOrderCnt(currPic, refImgL0) * DiffPicOrderCnt(currPic, refImgL1) < 0, bioAvailableFlag указывает «ИСТИНА».
В данном случае DiffPicOrderCnt() представляет собой функцию, которая выводит разницу между счетчиком порядковых номеров изображений (POC: порядок отображения изображений) между двумя изображениями следующим образом.
[0209]
DiffPicOrderCnt(picA, picB) = PicOrderCnt(picA) - PicOrderCnt(picB)
В качестве условия, при котором bioAvailableFlag указывает «ИСТИНА», может быть добавлено условие, что вектор движения целевого блока не является вектором движения в единицах подблоков.
[0210]
Кроме того, в качестве условия, при котором bioAvailableFlag указывает «ИСТИНА», может быть добавлено условие, что вектор движения целевого изображения не является вектором движения в единицах подблоков.
[0211]
Кроме того, в качестве условия, при котором bioAvailableFlag указывает «ИСТИНА», может быть добавлено условие, что сумма абсолютных разностей прогнозируемого изображения L0 и прогнозируемого изображения L1 двух блоков прогнозирования больше или равна заданному значению.
[0212]
Кроме того, в качестве условия, при котором bioAvailableFlag указывает «ИСТИНА», может быть добавлено условие, что режим создания прогнозируемого изображения является режимом создания прогнозируемого изображения в единицах блоков.
[0213]
Кроме того, в качестве условия, при котором bioAvailableFlag указывает «ИСТИНА», может быть добавлено условие, что ни в прогнозировании L0, ни в прогнозировании L1 не выполняют взвешенное прогнозирование. В частности, в случае, когда оба luma_weight_l0_flag[refIdxL0], указывающий на то, присутствуют ли весовой коэффициент w0 и смещение o0 освещенности на прогнозируемом изображении L0, и luma_weight_l1_flag[refIdxL1], указывающий на то, присутствуют ли весовой коэффициент w1 и смещение o1 освещенности на прогнозируемом изображении L1, имеют значение «ЛОЖЬ», используют условие, что bioAvailableFlag указывает «ИСТИНА».
[0214]
На ФИГ. 16 представлена принципиальная схема, иллюстрирующая конфигурацию блока 30956 BDOF. Обработка, выполняемая блоком 30956 BDOF, будет подробно описана со ссылкой на ФИГ. 16. Блок 30956 обработки BDOF содержит блок 309561 генерирования прогнозируемых изображений L0 и L1, блок 309562 генерирования градиентных изображений, блок 309563 вычисления коэффициента корреляции, блок 309564 выведения корректирующего значения компенсации движения и блок 309565 генерирования изображений прогнозирования BDOF. Блок 30956 BDOF генерирует прогнозируемое изображение из интерполяционного изображения, принятого от блока 3091 компенсации движения, и параметр внешнего прогнозирования, принятый от декодера 303 параметров внешнего прогнозирования, и выводит сгенерированное прогнозируемое изображение в блок сложения 312. Следует отметить, что обработку для выведения корректирующего значения компенсации движения modBIO (изображение коррекции компенсации движения) из градиентного изображения, а также корректирование и выведение прогнозируемых изображений PredL0 и PredL1 называют обработкой прогнозирования образца двунаправленного оптического потока.
[0215]
На ФИГ. 17 представлена схема, иллюстрирующая пример области, в которой выполняют заполнение. Сначала в блоке 309561 генерирования прогнозируемых изображений L0, L1 генерируют прогнозируемое изображение L0, L1, которое используют для обработки BDOF. В блоке 30956 BDOF выполняют обработку BDOF на основе прогнозируемого изображения L0, L1 в каждой единице CU, показанного на ФИГ. 17, или единице подблока CU; однако для вычисления градиента требуется дополнительная информация интерполяционного изображения для двух пикселей вокруг CU или подблока CU, являющегося целевым. Информацию интерполяционного изображения в этой части генерируют с использованием соседних целочисленных пикселей, а не обычного интерполяционного фильтра для генерирования градиентного изображения, как будет описано позже. В другом случае в этой части окружающие пиксели копируют и используют в качестве области заполнения аналогично внешней части изображения. Кроме того, единицей обработки BDOF являются N x N пикселей CU единиц подблока CU или меньше, а что касается самой обработки, ее выполняют с использованием (N+2) x (N+2) пикселей путем прибавления одного окружающего пикселя.
[0216]
В блоке 309562 генерирования градиентных изображений генерируют градиентное изображение. Предполагается, что при изменении градиента (оптического потока) значение пикселя каждой точки не изменяется, а меняется только его положение. Это можно выразить следующим образом, используя изменение (значение lx горизонтального градиента) значения I пикселя в горизонтальном направлении и изменение Vx его положения, изменение (значение ly вертикального градиента) значения I пикселя в вертикальном направлении и изменение Vy его положения, а также зависящего от времени изменения lt значения I пикселя.
[0217]
lx * Vx+ly * Vy+lt=0
Далее в настоящем документе изменения (Vx, Vy) положений называют корректирующими весовыми векторами (u, v).
[0218]
В частности, блок 309562 генерирования градиентных изображений выводит градиентные изображения lx0, ly0, lx1 и ly1 из следующих уравнений. Каждое из lx0 и lx1 представляет градиент в горизонтальном направлении, а каждое из ly0 и ly1 представляет градиент в вертикальном направлении.
[0219]
lx0[x][y] = (PredL0[x+1][y] - PredL0[x - 1][y]) >> shift1
ly0[x][y] = (PredL0[x][y+1] - PredL0[x][y - 1]) >> shift1
lx1[x][y] = (PredL1[x+1][y] - PredL1[x - 1][y]) >> shift1
ly1[x][y] = (PredL1[x][y+1] - PredL1[x][y - 1]) >> shift1
Здесь установлен shift1=Max(2, 14 - bitDepth).
[0220]
Далее блок 309563 вычисления параметров корреляции выводит суммы произведений градиентов s1, s2, s3, s5 и s6 для (N+2) x (N+2) пикселей с использованием одного окружающего пикселя каждого блока из N x N пикселей в каждом CU.
[0221]
s1=sum(phiX[x][y] * phiX[x][y])
s2=sum(phiX[x][y] * phiY[x][y])
s3=sum(-theta[x][y] * phiX[x][y])
s5=sum(phiY[x][y] * phiY[x][y])
s6=sum(-theta[x][y] * phiY[x][y])
Здесь sum(a) представляет сумму a для координат (x, y) в блоке из (N+2) x (N+2) пикселей. Кроме того, установлено следующее.
theta[x][y] = -(PredL1[x][y] >> shift4) + (PredL0[x][y] >> shift4)
phiX[x][y] = (lx1[x][y] + lx0[x][y]) >> shift5
phiY[x][y] = (ly1[x][y] + ly0[x][y]) >> shift5
Здесь установлено следующее.
shift4=Min(8, bitDepth - 4)
shift5=Min(5, bitDepth - 7)
[0222]
Далее блок 309564 выведения корректирующего значения компенсации движения выводит корректирующие весовые векторы (u, v) в блоке из N x N пикселей путем использования полученных сумм произведений s1, s2, s3, s5 и s6.
[0223]
u = (s3 << 3) >> log2 (s1)
v = ((s6 << 3) - ((((u * s2m) << 12) + u * s2s) >> 1)) >> log2 (s5)
Здесь установлено s2 m=s2 >> 12 и s2s=s2 & ((1 << 12) - 1).
[0224]
Следует отметить, что диапазоны u и v могут быть дополнительно ограничены использованием вырезания следующим образом.
[0225]
u=s1 > 0 ? Clip3(-th, th, -(s3 << 3) >> floor(log2 (s1))) : 0
v=s5 > 0 ? Clip3(-th, th, ((s6 << 3) - ((((u * s2m) << 12) + u * s2s) >> 1)) >> floor(log2 (s5))) : 0
Здесь установлено th=Max(2, 1 << (13 - bitDepth)). Значение th необходимо рассчитывать согласованно со сдвигом shift1 и, таким образом, учитывается случай, в котором битовая глубина bitDepth пикселя больше 12 битов.
[0226]
Блок 309564 выведения корректирующего значения компенсации движения выводит modBIO[x][y] корректирующего значения компенсации движения N x N пикселей, используя корректирующие весовые векторы (u, v) в блоке из N x N пикселей и градиентные изображения lx0, ly0, lx1 и ly1.
[0227]
modBIO можно вывести следующим образом, используя modBIO[x][y] = ((lx1[x][y] - lx0[x][y]) * u + (ly1[x][y] - ly0[x][y]) * v+1) >> 1 (уравнение A3) или функцию округления.
[0228]
modBIO[x][y] = Round(((lx1[x][y] - lx0[x][y]) * u) >> 1) + Round(((ly1[x][y] - ly0[x][y]) * v) >> 1)
Блок 309565 генерирования изображений прогнозирования BDOF выводит значение пикселя Pred прогнозируемого изображения размером N x N пикселей с помощью следующего уравнения с использованием вышеописанных параметров.
[0229]
В этом случае блок 309565 генерирования изображений прогнозирования BDOF выводит значение пикселя Pred прогнозируемого изображения размером N x N пикселей с помощью следующего уравнения с использованием вышеописанных параметров.
[0230]
Pred[x][y] = Clip3(0, (1 << bitDepth) - 1, (PredL0[x][y] + PredL1[x][y] + modBIO[x][y] + offset2) >> shift2)
Здесь установлены shift2=Max(3, 15 - bitDepth) и offset2=1 << (shift2-1).
[0231]
Затем блок 309565 генерирования изображений прогнозирования BDOF выводит сгенерированное прогнозируемое изображение блока в блок 312 сложения.
[0232]
Устройство 311 обратного квантования и обратного преобразования выполняет обратное квантование коэффициента преобразования квантования, введенного из энтропийного декодера 301, чтобы вычислить коэффициент преобразования. Этот коэффициент преобразования квантования представляет собой коэффициент, полученный путем выполнения при обработке кодирования частотного преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST), в отношении ошибок прогнозирования при квантовании. Устройство 311 обратного квантования и обратного преобразования выполняет обратное частотное преобразование, такое как обратное DCT или обратное DST, на вычисленном коэффициенте преобразования, чтобы вычислить ошибку прогнозирования. Устройство 311 обратного квантования и обратного преобразования выводит вычисленную ошибку прогнозирования в блок 312 сложения. Устройство 311 обратного квантования и обратного преобразования конфигурирует все ошибки прогнозирования равными нулю в случае когда skip_flag равен 1, или в случае когда cu_cbp равен 0.
[0233]
Блок 312 сложения складывает друг с другом прогнозируемое изображение блока, введенное из блока 308 генерирования прогнозируемых изображений, и ошибку прогнозирования, введенную из устройства 311 обратного квантования и обратного преобразования, для каждого пикселя и генерирует декодированное изображение блока. Блок 312 сложения сохраняет декодированное изображение блока в памяти 306 эталонных изображений, а также выводит его на контурный фильтр 305.
[0234]
Конфигурация устройства кодирования видеосигналов
Далее будет описана конфигурация устройства 11 кодирования видеосигналов согласно настоящему варианту осуществления. На ФИГ. 18 представлена принципиальная блок-схема, иллюстрирующая конфигурацию устройства 11 кодирования видеосигналов согласно настоящему варианту осуществления. Устройство 11 кодирования видеосигналов содержит блок 101 генерирования прогнозируемых изображений, блок 102 вычитания, блок 103 преобразования и квантования, устройство 105 обратного квантования и обратного преобразования, блок 106 сложения, контурный фильтр 107, память 108 параметров прогнозирования (блок хранения параметров прогнозирования, память кадров), память 109 эталонных изображений (блок хранения эталонных изображений, память кадров), блок 110 определения параметров кодирования, кодер 111 параметров и энтропийный кодер 104.
[0235]
Блок 101 генерирования прогнозируемых изображений генерирует прогнозируемое изображение для каждого CU, который является областью, полученной путем разделения каждого кадра изображения T. Блок 101 генерирования прогнозируемых изображений работает точно так же, как уже описанный блок 308 генерирования прогнозируемых изображений, и его описание будет опущено.
[0236]
Блок 102 вычитания вычитает значение пикселя прогнозируемого изображения блока, поступающего из блока 101 генерирования прогнозируемых изображений, из значения пикселя изображения T для генерирования ошибки прогнозирования. Блок 102 вычитания выводит ошибку прогнозирования в блок 103 преобразования и квантования.
[0237]
Блок 103 преобразования и квантования выполняет частотное преобразование ошибки прогнозирования, поступающей от блока 102 вычитания, для вычисления коэффициента преобразования и выводит коэффициент преобразования квантования посредством квантования. Блок 103 преобразования и квантования выводит коэффициент преобразования квантования в энтропийный кодер 104 и устройство 105 обратного квантования и обратного преобразования.
[0238]
Устройство 105 обратного квантования и обратного преобразования такое же, как и устройство 311 обратного квантования и обратного преобразования (ФИГ. 7) в устройстве 31 декодирования видеосигналов, и его описания опущены. Рассчитанная ошибка прогнозирования выводится в блок 106 сложения.
[0239]
В энтропийный кодер 104 коэффициент преобразования квантования поступает из блока 103 преобразования и квантования, а параметры кодирования поступают из кодера 111 параметров. В число параметров кодирования входят, например, коды, такие как индекс эталонного изображения refIdxLX, индекс вектора прогнозирования mvp_LX_idx, разностный вектор mvdLX, режим адаптивного разрешения векторов движения amvr_mode, режим прогнозирования predMode и индекс объединения merge_idx.
[0240]
Энтропийный кодер 104 выполняет энтропийное кодирование информации о разделении, параметров прогнозирования, коэффициента преобразования квантования и т. п. и генерирует и выводит поток кодирования Te.
[0241]
Кодер 111 параметров содержит кодер 1110 заголовков, кодер 1111 информации CT, кодер 1112 CU (кодер режима прогнозирования) и кодер 112 параметров (не показан). Кодер 1112 CU дополнительно включает в себя кодер 1114 TU.
[0242]
Ниже будет описан общий принцип работы каждого модуля. Кодер 111 параметров выполняет обработку кодирования параметров, таких как информация заголовков, информация о разделении, информация о прогнозировании и коэффициенты преобразования и квантования.
[0243]
Кодер 1111 информации CT кодирует информацию о разделении QT и MT (BT, TT) и т. п. из кодированных данных.
[0244]
Кодер 1112 CU кодирует информацию CU, информацию о прогнозировании, флаг разделения TU split_transform_flag, остаточные флаги CU cbf_cb, cbf_cr, cbf_luma и т. п.
[0245]
В случае, когда ошибку прогнозирования включают в TU, кодер 1114 TU кодирует информацию об обновлении QP (значение коррекции квантования) и ошибку прогнозирования квантования (residual_coding).
[0246]
Кодер 1111 информации CT и кодер 1112 CU выводят в энтропийный кодер 104 элементы синтаксиса, такие как параметр внешнего прогнозирования (режим прогнозирования predMode, флаг объединения merge_flag, индекс объединения merge_idx, индикатор внешнего прогнозирования inter_pred_idc, индекс эталонного изображения refIdxLX, индекс вектора прогнозирования mvp_LX_idx, разностный вектор mvdLX), параметр внутреннего прогнозирования (prev_intra_luma_pred_flag, mpm_idx, rem_selected_mode_flag, rem_selected_mode и rem_non_selected_mode) и коэффициент преобразования квантования.
[0247]
Конфигурация кодера параметров
Кодер 112 параметров выводит параметры внешнего прогнозирования на основании параметров прогнозирования, поступающих из блока 110 определения параметров кодирования. Кодер 112 параметров включает в себя конфигурацию, частично идентичную конфигурации, в которой декодер 303 параметров внешнего прогнозирования выводит параметры внешнего прогнозирования.
[0248]
На ФИГ. 19 представлена принципиальная схема, иллюстрирующая конфигурацию кодера 112 параметров. Далее будет описана конфигурация кодера 112 параметров. Как показано на ФИГ. 19, кодер 112 параметров включает в себя контроллер 1121 кодирования параметров, устройство 30374 прогнозирования объединения, устройство 30372 прогнозирования подблоков (устройство прогнозирования аффинности), блок 30375 DMVR, устройство 30376 прогнозирования MMVD, устройство 30377 прогнозирования треугольников, блок 3032 выведения параметров прогнозирования AMVP и блок 1123 вычитания. Устройство 30374 прогнозирования объединения включает в себя блок 3036 выведения параметров прогнозирования объединения. Контроллер 1121 кодирования параметров включает в себя блок 11211 выведения индекса объединения и блок 11212 выведения индекса вариантов вектора. Контроллер 1121 кодирования параметров выводит merge_idx, affine_flag, base_candidate_idx, distance_idx, direction_idx и т. п. в блок 11211 выведения индекса объединения и выводит mvpLX и т. п. из блока 11212 выведения индекса вариантов вектора. Блок 3036 выведения параметров прогнозирования объединения, блок 3032 выведения параметров прогнозирования AMVP, устройство 30372 прогнозирования аффинности, устройство 30376 прогнозирования MMVD и устройство 30377 прогнозирования треугольников могут в совокупности называться «блок выведения вектора движения» (устройство выведения вектора движения). Кодер 112 параметров выводит вектор движения mvLX, индекс эталонного изображения refIdxLX, индикатор внешнего прогнозирования inter_pred_idc или указывающую их информацию в блок 101 генерирования прогнозируемых изображений. Кроме того, кодер 112 параметров выводит merge_flag, skip_flag, merge_idx, inter_pred_idc, refIdxLX, mvp_lX_idx, mvdLX, amvr_mode и affine_flag в энтропийный кодер 104.
[0249]
На ФИГ. 20 представлена схема, иллюстрирующая пример количества потенциальных вариантов для расстояния поиска и количества потенциальных вариантов для направления выведения в устройстве 11 кодирования видеосигналов. Контроллер 1121 параметров кодирования выводит параметры (base_candidate_idx, distance_idx, direction_idx и т. п.), которые представляют разностный вектор, и выдает эти параметры в устройство 30376 прогнозирования MMVD. Выведение разностного вектора в контроллере 1121 параметров кодирования будет описано со ссылкой на ФИГ. 20. Центральный сплошной круг на фигуре представляет собой местоположение, указанное вектором прогнозирования mvpLX, и вокруг этого местоположения осуществляют поиск на восьми расстояниях поиска в четырех направлениях (вверх, вниз, влево, вправо), mvpLX является вектором движения первого и второго по порядку вариантов в списке вариантов объединения, при этом осуществляется поиск каждого вектора движения. В списке вариантов объединения представлены два вектора прогнозирования (первый и второй векторы прогнозирования в списке), также имеются восемь расстояний поиска и четыре направления поиска, поэтому mvdLX включает 64 варианта. Один из искомых вариантов mvdLX, который предполагает самую низкую стоимость, представлен параметрами base_candidate_idx, distance_idx и direction_idx.
[0250]
Таким образом, режим MMVD является режимом, в котором для выведения надлежащего вектора движения осуществляют поиск ограниченного количества вариантов точек вокруг вектора прогнозирования.
[0251]
Блок 11211 выведения индекса объединения выводит индекс объединения merge_idx и выводит его в блок 3036 выведения параметров прогнозирования объединения (устройство прогнозирования объединения). В режиме MMVD блок 11211 выведения индекса объединения конфигурирует значение индекса объединения merge_idx равным значению base_candidate_idx. Блок 11212 выведения индекса вариантов вектора выводит индекс вектора прогнозирования mvp_lX_idx.
[0252]
Блок 3036 выведения параметров прогнозирования объединения выводит параметр внешнего прогнозирования на основании индекса объединения merge_idx.
[0253]
Блок 3032 выведения параметров прогнозирования AMVP выводит вектор прогнозирования mvpLX на основании вектора движения mvLX. Блок 3032 выведения параметров прогнозирования AMVP выводит вектор прогнозирования mvpLX в блок 1123 вычитания. Следует отметить, что индекс эталонного изображения refIdxLX и индекс вектора прогнозирования mvp_lX_idx выводятся в энтропийный кодер 104.
[0254]
Устройство 30372 прогнозирования аффинности выводит параметр внешнего прогнозирования (параметр аффинного прогнозирования) подблока.
[0255]
Блок 1123 вычитания вычитает вектор прогнозирования mvpLX, который представляет собой выходные данные блока 3032 выведения параметров прогнозирования AMVP, из вектора движения mvLX, введенного из блока 110 определения параметров кодирования, и генерирует разностный вектор mvdLX. Разностный вектор mvdLX выводят в энтропийный кодер 104.
[0256]
Блок 106 сложения складывает друг с другом пиксельное значение прогнозируемого изображения блока, введенного из блока 101 генерирования прогнозируемых изображений, и ошибку прогнозирования, введенную из устройства 105 обратного квантования и обратного преобразования, для каждого пикселя и генерирует декодированное изображение. Блок 106 сложения сохраняет сгенерированное декодированное изображение в памяти 109 эталонных изображений.
[0257]
Контурный фильтр 107 применяет антиблочный фильтр, SAO и ALF к декодированному изображению, сгенерированному блоком 106 сложения. Следует отметить, что контурный фильтр 107 необязательно должен включать в себя вышеописанные три типа фильтров и может иметь, например, конфигурацию только антиблочного фильтра.
[0258]
В памяти 108 параметров прогнозирования хранятся параметры прогнозирования, сгенерированные блоком 110 определения параметров кодирования для каждого целевого изображения и CU в предварительно заданном положении.
[0259]
В памяти 109 эталонных изображений хранится декодированное изображение, сгенерированное контурным фильтром 107 для каждого целевого изображения и CU в предварительно заданном положении.
[0260]
Блок 110 определения параметров кодирования выбирает один набор из множества наборов параметров кодирования. Параметры кодирования включают в себя описанную выше информацию о разделении QT, BT или TT, параметр прогнозирования или кодируемый параметр, сгенерированный в этой связи. Блок 101 генерирования прогнозируемых изображений генерирует прогнозируемое изображение с использованием этих параметров кодирования.
[0261]
Блок 110 определения параметров кодирования вычисляет для каждого из множества наборов значение стоимости RD, указывающее величину количества информации и ошибку кодирования. Блок 110 определения параметров кодирования выбирает набор параметров кодирования, в котором рассчитанное значение стоимости представляет собой минимальное значение. Таким образом, энтропийный кодер 104 выводит набор выбранных параметров кодирования в виде потока кодирования Te. Блок 110 определения параметров кодирования сохраняет определенные параметры кодирования в памяти 108 параметров прогнозирования.
[0262]
Следует отметить, что некоторая часть из устройства 11 кодирования видеосигналов и устройства 31 декодирования видеосигналов в вышеописанных вариантах осуществления, например энтропийного кодера 301, декодера 302 параметров, контурного фильтра 305, блока 308 генерирования прогнозируемых изображений, устройства 311 обратного квантования и обратного преобразования, блока 312 сложения, блока 101 генерирования прогнозируемых изображений, блока 102 вычитания, блока 103 преобразования и квантования, энтропийного кодера 104, устройства 105 обратного квантования и обратного преобразования, контурного фильтра 107, блока 110 определения параметров кодирования и кодера 111 параметров, могут быть реализованы с помощью компьютера. В этом случае данная конфигурация может быть реализована путем записи программы для реализации таких функций управления на машиночитаемый носитель информации и осуществления считывания компьютерной системой программы, записанной на носитель информации, для ее исполнения. Следует отметить, что «компьютерная система», упомянутая здесь, относится к компьютерной системе, встроенной в устройство 11 кодирования видеосигналов или устройство 31 декодирования видеосигналов, и предположительно включает в себя ОС и аппаратные компоненты, такие как периферийное устройство. Кроме того, термин «машиночитаемый носитель информации» относится к переносному носителю (гибкий диск, магнитооптический диск, ПЗУ, CD-ROM и т. п.) и к запоминающему устройству, такому как жесткий диск, встроенный в компьютерную систему. Более того, «машиночитаемый носитель информации» может включать в себя носитель, который динамически сохраняет программу на короткий промежуток времени, например линию связи, которую используют для передачи программы по сети, такой как Интернет, или по линии связи, такой как телефонная линия, а также носитель, который хранит программу в течение фиксированного периода времени, например энергозависимое запоминающее устройство в компьютерной системе, которая функционирует в этом случае в качестве сервера или клиента. Кроме того, вышеупомянутая программа может представлять собой программу для реализации вышеупомянутых функций, а также может быть выполнена с возможностью реализации вышеупомянутых функций в сочетании с программой, которая уже была записана в компьютерной системе.
[0263]
Кроме того, устройство 11 кодирования видеосигналов и устройство 31 декодирования видеосигналов в описанном выше варианте осуществления могут быть полностью или частично реализованы в виде интегральной схемы, такой как большая интегральная схема (LSI). Каждый функциональный блок устройства 11 кодирования видеосигналов и устройства 31 декодирования видеосигналов может быть отдельно реализован в виде процессоров или же может быть полностью или частично интегрирован в процессоры. Метод интеграции на уровне схем не ограничивается LSI, и интегральные схемы для функциональных блоков могут быть реализованы в виде выделенных схем или многоцелевого процессора. В случае, если благодаря развитию полупроводниковой технологии появится технология интеграции на уровне схем, которая заменит LSI, может быть применена интегральная схема, основанная на этой технологии.
[0264]
Вариант осуществления настоящего изобретения был подробно описан выше со ссылкой на чертежи, но конкретная конфигурация не ограничена этим вариантом осуществления и в конструкцию могут вноситься различные изменения, которые входят в объем настоящего изобретения без отступления от его сущности.
[0265]
Примеры применения
Вышеупомянутое устройство 11 кодирования видеосигналов и устройство 31 декодирования видеосигналов могут использоваться в различных устройствах, выполняющих передачу, прием, запись и восстановление видео. Следует отметить, что видео может представлять собой естественное видео, создаваемое с помощью камеры и т. п., или может представлять собой искусственное видео (включая CG и GUI), генерируемое компьютером или т. п.
[0266]
Сначала, ссылаясь на ФИГ. 2, будет описано, что вышеупомянутое устройство 11 кодирования видеосигналов и устройство 31 декодирования видеосигналов могут быть использованы для передачи и приема видео.
[0267]
На ФИГ. 2(а) представлена блок-схема, иллюстрирующая конфигурацию передающего устройства PROD_A, установленного с устройством 11 кодирования видеосигналов. Как показано на ФИГ. 2(a), передающее устройство PROD_A включает в себя кодер PROD_A1, который получает кодированные данные посредством кодирования видеозаписей, блок модуляции PROD_A2, который получает сигналы модуляции путем модуляции несущих волн с помощью кодированных данных, полученных кодером PROD_A1, и передатчик PROD_A3, который передает модулированные сигналы, полученные блоком модуляции PROD_A2. Вышеупомянутое устройство 11 кодирования видеосигналов используется в качестве кодера PROD_A1.
[0268]
Передающее устройство PROD_A может дополнительно содержать камеру PROD_A4, которая снимает видеозаписи, носитель информации PROD_A5, записывающий видео, терминал ввода данных PROD_A6 для ввода видеозаписей извне и блок A7 обработки изображений, который генерирует или обрабатывает изображения, в качестве источников ввода видеозаписей, подлежащих вводу в кодер PROD_A1. Хотя на схеме показан пример конфигурации, в которой передающее устройство PROD_A включает в себя все компоненты, некоторые из компонентов могут быть опущены.
[0269]
Следует отметить, что носитель информации PROD_A5 может записывать только некодированные видеозаписи или может записывать видео, закодированные по схеме кодирования для записи, которая отличается от схемы кодирования для передачи. В последнем случае декодер (не показан) для декодирования кодированных данных, считанных с носителя информации PROD_A5, в соответствии со схемой кодирования для записи может присутствовать между носителем информации PROD_A5 и кодером PROD_A1.
[0270]
На ФИГ. 2(b) представлена блок-схема, иллюстрирующая конфигурацию принимающего устройства PROD_B, установленного с устройством 31 кодирования видеосигналов. Как показано на схеме, приемное устройство PROD_B включает в себя приемник PROD_B1, который принимает сигналы модуляции, блок демодуляции PROD_B2, который получает кодированные данные путем демодуляции сигналов модуляции, полученных приемником PROD_B1, и декодер PROD_B3, который получает видеозаписи путем декодирования кодированных данных, полученных блоком демодуляции PROD_B2. Вышеупомянутое устройство декодирования видеосигналов 31 используется в качестве декодера PROD_B3.
[0271]
Приемное устройство PROD_B может дополнительно содержать дисплей PROD_B4, на котором отображаются видеозаписи, носитель информации PROD_B5 для записи видео и выходной терминал PROD_B6 для вывода видеозаписей из устройства, в качестве адресатов для вывода видеозаписей, которые выводятся декодером PROD_B3. Хотя на схеме показан пример конфигурации, в которой принимающее устройство PROD_B включает в себя все компоненты, некоторые из компонентов могут быть опущены.
[0272]
Следует отметить, что носитель информации PROD_B5 может записывать видео, которые не закодированы, или может записывать видео, которые закодированы по схеме кодирования для записи, которая отличается от схемы кодирования для передачи. В последнем случае кодер (не показан), который кодирует видеозаписи, полученные от декодера PROD_B3 в соответствии со схемой кодирования для записи, может присутствовать между декодером PROD_B3 и носителем информации PROD_B5.
[0273]
Следует отметить, что среда передачи для передачи сигналов модуляции может представлять собой беспроводную среду или проводную среду. Кроме того, режим передачи, в котором передаются сигналы модуляции, может представлять собой широковещательную передачу (в данном случае это указывает режим передачи, в котором адресат передачи не указан заранее) или может представлять собой связь (в данном случае это указывает режим передачи, в котором адресат передачи указан заранее). То есть передача сигналов модуляции может быть реализована любым способом из следующих: беспроводная широковещательная передача, проводная широковещательная передача, беспроводная связь и проводная связь.
[0274]
Например, широковещательная станция (напр., широковещательное оборудование)/принимающая станция (напр., телевизионный приемник) для цифровой наземной широковещательной передачи является примером передающего устройства PROD_A/принимающего устройства PROD_B для передачи и/или приема сигналов модуляции при беспроводной широковещательной передаче. Дополнительно широковещательная станция (напр., широковещательное оборудование)/принимающая станция (напр., телевизионный приемник) для кабельного телевещания является примером передающего устройства PROD_A/принимающего устройства PROD_B для передачи и/или приема сигналов модуляции при проводной широковещательной передаче.
[0275]
Кроме того, сервер (напр., рабочая станция)/клиент (напр., телевизионный приемник, персональный компьютер, смартфон) для услуг видео по требованию (VOD), услуг видеохостинга и т. п., использующий Интернет, является примером передающего устройства PROD_A/принимающего устройства PROD_B для передачи и/или приема модулированных сигналов при соединении (как правило, любая из беспроводной среды или проводной среды используется в качестве среды передачи в LAN, а проводная среда используется в качестве среды передачи в WAN). В данном случае к персональным компьютерам относятся настольный компьютер, ноутбук и планшетный компьютер. Кроме того, к смартфонам также относится многофункциональное телефонное мобильное оконечное устройство.
[0276]
Клиент службы видеохостинга имеет функцию кодирования видео с камеры и загрузки видео на сервер в дополнение к функции декодирования кодированных данных, загруженных с сервера, и их отображения на дисплее. Таким образом, клиент службы видеохостинга выполняет функцию как передающего устройства PROD_A, так и приемного устройства PROD_B.
[0277]
Далее, ссылаясь на ФИГ. 3, будет описано, что вышеупомянутое устройство 11 кодирования видеосигналов и устройство 31 декодирования видеосигналов могут быть использованы для записи и восстановления видео.
[0278]
На ФИГ. 3(а) представлена блок-схема, иллюстрирующая конфигурацию устройства записи PROD_C, установленного с вышеупомянутым устройством 11 кодирования видеосигналов. Как показано на ФИГ. 3(a), записывающее устройство PROD_C включает в себя кодер PROD_C1, который получает кодированные данные путем кодирования видеосигнала, и блок записи PROD_C2, который записывает кодированные данные, полученные кодером PROD_C1, на носитель информации PROD_M. Вышеупомянутое устройство 11 кодирования видеосигналов используется в качестве кодера PROD_C1.
[0279]
Следует отметить, что носитель информации PROD_M может представлять собой (1) тип носителя информации, встроенного в записывающее устройство PROD_C, такой как жесткий диск (HDD) или твердотельный накопитель (SSD), (2) тип носителя информации, подсоединяемого к записывающему устройству PROD_C, такой как карта памяти SD или универсальная последовательная шина (USB), и (3) тип носителя информации, вставляемого в устройство привода (не показано), встроенного в устройство записи PROD_C, например, универсальный цифровой диск (DVD: торговая марка) или диск Blu-ray (BD: торговая марка).
[0280]
Кроме того, устройство записи PROD_C может дополнительно содержать камеру PROD_C3, которая снимает видео, терминал ввода данных PROD_C4 для ввода видео извне, приемник PROD_C5 для приема видео и блок обработки изображений PROD_C6, который генерирует или обрабатывает изображения, в качестве источников ввода видео в кодер PROD_C1. Хотя на схеме показан пример конфигурации, в которой устройство записи PROD_C включает в себя все компоненты, некоторые из компонентов могут быть опущены.
[0281]
Следует отметить, что приемник PROD_C5 может принимать только некодированные видеозаписи или может принимать кодированные данные, закодированные по схеме кодирования для передачи, которая отличается от схемы кодирования для записи. В последнем случае между приемником PROD_C5 и кодером PROD_C1 может присутствовать декодер для передачи (не показан), который декодирует кодированные данные, закодированные по схеме кодирования для передачи.
[0282]
К примерам таких записывающих устройств PROD_C относятся, например, записывающее устройство DVD, записывающее устройство BD, устройство записи на жесткий диск (HDD) и т. п. (в данном случае основным источником ввода видеозаписей является терминал ввода данных PROD_C4 или приемник PROD_C5). Кроме того, к примерам записывающего устройства PROD_C также относятся записывающая видеокамера (в данном случае основным источником ввода видеозаписей является камера PROD_C3), персональный компьютер (в данном случае основным источником ввода видеозаписей является приемник PROD_C5 или блок обработки изображений C6), смартфон (в данном случае основным источником ввода видеозаписей является камера PROD_C3 или приемник PROD_C5) и т. п.
[0283]
На ФИГ. 3(b) представлен блок, иллюстрирующий конфигурацию устройства восстановления PROD_D, установленного с вышеупомянутым устройством 31 декодирования видеосигналов. Как показано на схеме, устройство восстановления PROD_D включает в себя блок считывания PROD_D1, который считывает кодированные данные, записанные на носитель информации PROD_M, и декодер PROD_D2, который получает видео путем декодирования кодированных данных, считанных блоком считывания PROD_D1. Вышеупомянутое устройство 31 декодирования видеосигналов используется в качестве декодера PROD_D2.
[0284]
Следует отметить, что носитель информации PROD_M может представлять собой (1) тип носителя информации, встроенного в устройство восстановления PROD_D, такой как HDD или SSD, (2) тип носителя информации, подсоединяемого к устройству восстановления PROD_D, такой как карта памяти SD или флэш-память USB, и (3) тип носителя информации, вставляемого в устройство привода (не показан), встроенного в устройство восстановления PROD_D, например DVD или BD.
[0285]
Кроме того, устройство восстановления PROD_D может дополнительно включать в себя дисплей PROD_D3, на котором отображается видео, выходной терминал PROD_D4 для вывода видео на внешнее устройство и передатчик PROD_D5, который передает видео в качестве адресатов для вывода видеозаписей, которые выводятся декодером PROD_D2. Хотя на схеме показан пример конфигурации, в которой устройство восстановления PROD_D включает в себя все компоненты, некоторые из компонентов могут быть опущены.
[0286]
Следует отметить, что передатчик PROD_D5 может принимать только некодированные видеозаписи или может принимать кодированные данные, закодированные по схеме кодирования для передачи, которая отличается от схемы кодирования для записи. В последнем случае между декодером PROD_D2 и передатчиком PROD_D5 может присутствовать кодер (не показан), который кодирует видео по схеме для передачи.
[0287]
К примерам устройства восстановления PROD_D относятся, например, проигрыватель DVD, проигрыватель BD, проигрыватель HDD и т. п. (в данном случае выходной терминал PROD_D4, к которому подключены телевизионный приемник и т. п., является основным адресатом для вывода видеозаписей). Кроме того, примерами устройства восстановления PROD_D являются телевизионный приемник (в данном случае основным адресатом для вывода видеозаписей является дисплей PROD_D3), цифровые сигнализационные панели (их также называют «электронные указатели» или «электронные информационные табло» и т. п., основным адресатом для вывода видеозаписей является дисплей PROD_D3 или передатчик PROD_D5), настольный ПК (в данном случае основным адресатом для вывода видеозаписей является выходной терминал PROD_D4 или передатчик PROD_D5), ноутбук или планшетный ПК (в данном случае основным адресатом для вывода видеозаписей является дисплей PROD_D3 или передатчик PROD_D5), смартфон (в данном случае основным адресатом для вывода видеозаписей является дисплей PROD_D3 или передатчик PROD_D5) и т. п.
[0288]
Реализация аппаратными средствами и реализация программными средствами
Каждый блок вышеупомянутого устройства 31 декодирования видеосигналов и устройства 11 кодирования видеосигналов может быть реализован в виде аппаратного обеспечения посредством логической схемы, образованной на интегральной схеме (кристалле ИС), или может быть реализован в виде программного обеспечения с использованием центрального процессора (ЦП).
[0289]
В последнем случае каждое устройство включает в себя ЦП, выполняющий команду программы для реализации каждой функции, постоянное запоминающее устройство (ПЗУ), хранящее программу, оперативное запоминающее устройство (ОЗУ), посредством которого осуществляется реализация программы, и устройство хранения данных (носитель информации), такое как запоминающее устройство, на котором хранится программа и различные данные, и т. п. Кроме того, цель варианта осуществления настоящего изобретения может быть достигнута путем передачи на каждое из устройств носителя информации, который в машиночитаемой форме регистрирует программные коды программы управления (исполняемая программа, промежуточная программа, исходная программа) каждого из устройств, которые представляют собой программное обеспечение для реализации вышеописанных функций, и путем считывания и выполнения компьютером (или ЦП, или микропроцессором) программных кодов, записанных на носителе информации.
[0290]
В качестве носителя информации могут применяться, например, ленты, в том числе магнитная лента, кассета и т. п., диски, в том числе магнитный диск, такой как гибкий диск (торговая марка)/жесткий диск, и оптический диск, такой как постоянная память на компакт-диске (CD-ROM)/магнитооптический диск (MO диск)/мини-диск (MD)/универсальный цифровой диск (DVD: торговая марка)/перезаписываемый компакт-диск (CD-R)/диск Blu-ray (торговая марка), карты, такие как карта с интегральной микросхемой (в том числе карта памяти)/оптическая карта, полупроводниковые запоминающие устройства, такие как ПЗУ с масочным программированием/стираемая программируемая постоянная память (СППЗУ)/электрически стираемое и программируемое постоянное запоминающее устройство (ЭСППЗУ: торговая марка)/флэш-ПЗУ, логические схемы, такие как программируемое логическое устройство (ПЛУ) и программируемая пользователем интегральная схема (FPGA), или т. п.
[0291]
Кроме того, каждое из устройств выполнено с возможностью соединения с сетью связи, а программные коды могут быть переданы через сеть связи. Сеть связи должна быть способна передавать программные коды без ограничений конкретной сетью связи. Например, доступны сеть Интернет, интранет, экстранет, локальная сеть (LAN), цифровая сеть с интеграцией услуг (ISDN), сеть с дополнительными услугами (VAN), кабельное телевидение с коллективным приемом/абонентское кабельное телевидение (CATV), виртуальная частная сеть, телефонная сеть, сеть мобильной связи, сеть спутниковой связи и т. п. Кроме того, среда передачи, образующая такую сеть связи, также должна представлять собой среду, которая может передавать программный код, без ограничений конкретной конфигурацией или типом среды передачи. Например, доступны среда проводной передачи данных, например в соответствии со стандартами Института инженеров по электротехнике и электронике (IEEE) 1394, USB, высоковольтная линия, линия кабельного телевидения, линия телефонной связи, асимметричная цифровая абонентская линия (ADSL) и среда беспроводной передачи, такая как инфракрасный луч согласно требованиям Ассоциации передачи данных в инфракрасном диапазоне (IrDA), или среда удаленного управления, BlueTooth (торговая марка), беспроводная связь IEEE 802.11, высокая скорость передачи данных (HDR), связь ближнего поля (NFC), альянс цифровых сетей для дома (DLNA: торговая марка), сеть сотовой связи, спутниковый канал, наземная цифровая широковещательная сеть. Следует отметить, что вариант осуществления настоящего изобретения также может быть реализован в виде сигналов компьютерных данных, встроенных в носитель таким образом, что передача программных кодов осуществляется в виде электронной передачи.
[0292]
Вариант осуществления настоящего изобретения не ограничен вышеописанным вариантом осуществления, и возможны различные модификации в пределах объема формулы изобретения. Таким образом, вариант осуществления, полученный путем объединения технических средств, соответствующим образом модифицированных в пределах объема, определенного формулой изобретения, также включен в технический объем настоящего изобретения.
Перекрестные ссылки на родственные заявки
Настоящая заявка испрашивает преимущество приоритета по заявке на патент Японии № JP 2019-043097, поданной 8 марта 2018 г., которая полностью включена в настоящее описание путем ссылки.
Промышленное применение
[0293]
Варианты осуществления настоящего изобретения предпочтительно могут быть применены к устройству декодирования видеосигналов, которое декодирует кодированные данные, в которых кодируются данные изображений, и устройству кодирования видеосигналов, которое генерирует кодированные данные, в которых кодируются данные изображений. Вариант осуществления настоящего изобретения предпочтительно может быть применен к структуре кодированных данных, которые сгенерированы устройством кодирования видеосигналов и на которые ссылается устройство декодирования видеосигналов.
Перечень условных обозначений
[0294]
31 - устройство декодирования изображений
301 - энтропийный декодер
302 - декодер параметров
3020 - декодер заголовков
303 - декодер параметров внешнего прогнозирования
304 - декодер параметров внутреннего прогнозирования
308 - блок генерирования прогнозируемых изображений
309 - блок генерирования изображений внешнего прогнозирования
310 - блок генерирования изображений внутреннего прогнозирования
311 - устройство обратного квантования и обратного преобразования
312 - блок сложения
11 - устройство кодирования изображений
101 - блок генерирования прогнозируемых изображений
102 - блок вычитания
103 - блок преобразования и квантования
104 - энтропийный кодер
105 - устройство обратного квантования и обратного преобразования
107 - контурный фильтр
110 - блок определения параметров кодирования
111 - кодер параметров
112 - кодер параметров
1110 - кодер заголовков
1111 - кодер информации CT
1112 - кодер CU (кодер режима прогнозирования)
1114 - кодер TU
3091 - блок компенсации движения
3095 - блок объединения
30951 - блок смешанного внутреннего/внешнего объединения
30952 - блок объединения треугольников
30953 - блок OBMC
30954 - устройство взвешенного прогнозирования
30955 - блок GBI
30956 - блок BIO
309561 - блок генерирования прогнозируемых изображений L0, L1
309562 - блок генерирования градиентных изображений
309563 - блок вычисления параметров корреляции
309564 - блок выведения корректирующего значения компенсации движения
309565 - блок генерирования изображений прогнозирования BDOF

Claims (24)

1. Устройство декодирования видеосигнала для выполнения обработки посредством уточнения вектора движения на стороне декодера (DMVR), путем использования векторов движения mvL0 и mvL1 и двух эталонных изображений, причем устройство декодирования видеосигнала содержит:
схему DMVR, выполненную с возможностью определения того, имеет ли dmvrFlag значение «ИСТИНА», и выполнения обработки DMVR в случае, когда dmvrFlag имеет значение «ИСТИНА»,
при этом схема DMVR
задает dmvrFlag равным значению «ИСТИНА» в случае, когда по меньшей мере следующие условия являются истинными: (1) флаг, который является флагом SPS и является флагом, указывающим на то, что обработка DMVR возможна, в состоянии «Вкл»; (2) gbiIdx равен 0; и (3) оба luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1] имеют значение «ЛОЖЬ»,
при этом gbiIdx представляет собой индекс, который указывает весовой коэффициент, используемый в целевом блоке, из множества вариантов весовых коэффициентов, включенных в таблицу gbiWLut,
luma_weight_l0_flag[refIdxL0] устанавливает, присутствуют или нет весовой коэффициент w0 и смещение o0 для освещенности для эталонного изображения L0, указанного индексом refIdxL0 эталонного изображения; и
luma_weight_l1_flag[refIdxL1] устанавливает, присутствуют или нет весовой коэффициент w1 и смещение o1 для освещенности для эталонного изображения L1, указанного индексом refIdxL1 эталонного изображения.
2. Устройство декодирования видеосигналов по п. 1, в котором схема DMVR задает dmvrFlag равным значению «ИСТИНА» в случае, когда все условия с (1) по (3) и дополнительное условие (4), заключающееся в том, что флаг объединения имеет значение «ИСТИНА», являются истинными, при этом флаг объединения является флагом для определения того, выведены или нет параметры прогнозирования из соседних блоков.
3. Устройство декодирования видеосигналов по п. 1, в котором схема DMVR задает dmvrFlag равным значению «ИСТИНА» в случае, когда все условия с (1) по (3) и дополнительное условие (5), заключающееся в том, что выполняется двунаправленное прогнозирование, являются истинными.
4. Устройство декодирования видеосигналов по п. 1, в котором схема DMVR задает dmvrFlag равным значению «ИСТИНА» в случае, когда все условия с (1) по (3) и дополнительное условие (6), заключающееся в том, что mmvd_flag имеет значение «ЛОЖЬ», являются истинными, при этом mmvd_flag является флагом, указывающим, используется или нет режим MMVD (слияния с разностью векторов движения, MMVD).
5. Устройство декодирования видеосигналов по п. 1, в котором схема DMVR задает dmvrFlag равным значению «ИСТИНА» в случае, когда все условия с (1) по (3) и дополнительное условие (7), заключающееся в том, что эталонное изображение L0 и эталонное изображение L1 таковы, что их взаимное расположение интерполируется при равных расстояниях относительно текущего изображения, являются истинными.
6. Устройство кодирования видеосигнала для выполнения обработки посредством уточнения вектора движения на стороне декодера (DMVR), путем использования векторов движения mvL0 и mvL1 и двух эталонных изображений, причем устройство кодирования видеосигнала содержит:
схему DMVR, выполненную с возможностью определения того, имеет ли dmvrFlag значение «ИСТИНА», и выполнения обработки DMVR в случае, когда dmvrFlag имеет значение «ИСТИНА»,
при этом схема DMVR
задает dmvrFlag равным значению «ИСТИНА» в случае, когда по меньшей мере следующие условия являются истинными: (1) флаг, который является флагом SPS и является флагом, указывающим на то, что обработка DMVR возможна, в состоянии «Вкл»; (2) gbiIdx равен 0; и (3) оба luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1] имеют значение «ЛОЖЬ»,
при этом gbiIdx представляет собой индекс, который указывает весовой коэффициент, используемый в целевом блоке, из множества вариантов весовых коэффициентов, включенных в таблицу gbiWLut,
при этом luma_weight_l0_flag[refIdxL0] устанавливает, присутствуют или нет весовой коэффициент w0 и смещение o0 для освещенности для эталонного изображения L0, указанного индексом refIdxL0 эталонного изображения, и
luma_weight_l1_flag[refIdxL1] устанавливает, присутствуют или нет весовой коэффициент w1 и смещение o1 для освещенности для эталонного изображения L1, указанного индексом refIdxL1 эталонного изображения.
7. Способ декодирования видеосигнала для выполнения обработки посредством уточнения вектора движения на стороне декодера (DMVR), путем использования векторов движения mvL0 и mvL1 и двух эталонных изображений, причем способ декодирования видеосигнала содержит этапы:
задания dmvrFlag, равным значению «ИСТИНА» в случае, когда по меньшей мере следующие условия являются истинными: (1) флаг, который является флагом SPS и является флагом, указывающим на то, что обработка DMVR возможна, в состоянии «Вкл»; (2) gbiIdx равен 0; и (3) оба luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1] имеют значение «ЛОЖЬ»;
выполнения обработки DMVR в случае, когда dmvrFlag имеет значение «ИСТИНА»,
при этом gbiIdx представляет собой индекс, который указывает весовой коэффициент, используемый в целевом блоке, из множества вариантов весовых коэффициентов, включенных в таблицу gbiWLut,
luma_weight_l0_flag[refIdxL0] устанавливает, присутствуют или нет весовой коэффициент w0 и смещение o0 для освещенности для эталонного изображения L0, указанного индексом refIdxL0 эталонного изображения, и
luma_weight_l1_flag[refIdxL1] устанавливает, присутствуют или нет весовой коэффициент w1 и смещение o1 для освещенности для эталонного изображения L1, указанного индексом refIdxL1 эталонного изображения.
RU2021128439A 2019-03-08 2020-03-06 Устройство декодирования видеосигналов RU2812275C2 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019-043097 2019-03-08

Publications (2)

Publication Number Publication Date
RU2021128439A RU2021128439A (ru) 2023-04-10
RU2812275C2 true RU2812275C2 (ru) 2024-01-29

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2519525C2 (ru) * 2010-02-09 2014-06-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ кодирования с предсказанием вектора движения, способ декодирования с предсказанием вектора движения, устройство кодирования фильма, устройство декодирования фильма и их программы
US9497473B2 (en) * 2013-10-03 2016-11-15 Qualcomm Incorporated High precision explicit weighted prediction for video coding
US20180184117A1 (en) * 2016-12-22 2018-06-28 Mediatek Inc. Method and Apparatus of Adaptive Bi-Prediction for Video Coding
WO2018130206A1 (en) * 2017-01-12 2018-07-19 Mediatek Inc. Method and apparatus of candidate skipping for predictor refinement in video coding
RU2679195C1 (ru) * 2015-02-16 2019-02-06 Хуавэй Текнолоджиз Ко., Лтд. Способ кодирования видеоизображения, способ декодирования видеоизображения, устройство кодирования и устройство декодирования

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2519525C2 (ru) * 2010-02-09 2014-06-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ кодирования с предсказанием вектора движения, способ декодирования с предсказанием вектора движения, устройство кодирования фильма, устройство декодирования фильма и их программы
US9497473B2 (en) * 2013-10-03 2016-11-15 Qualcomm Incorporated High precision explicit weighted prediction for video coding
RU2679195C1 (ru) * 2015-02-16 2019-02-06 Хуавэй Текнолоджиз Ко., Лтд. Способ кодирования видеоизображения, способ декодирования видеоизображения, устройство кодирования и устройство декодирования
US20180184117A1 (en) * 2016-12-22 2018-06-28 Mediatek Inc. Method and Apparatus of Adaptive Bi-Prediction for Video Coding
WO2018130206A1 (en) * 2017-01-12 2018-07-19 Mediatek Inc. Method and apparatus of candidate skipping for predictor refinement in video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BROSS B et al. "Versatile Video Coding (Draft 4)", JOINT VIDEO EXPERTS TEAM OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, no. JVET-M1001, Jan. 2019. YU-CHI SU et al. "CE4.4.1: Generalized bi-prediction for inter coding", JOINT VIDEO EXPERTS TEAM OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, no. JVET-K0248, July 2018. *

Similar Documents

Publication Publication Date Title
US11463701B2 (en) Coding device predicting chrominance based on down-sampled luminance
US11184636B2 (en) Video encoding device and video decoding device
CN109792535B (zh) 预测图像生成装置、运动图像解码装置以及运动图像编码装置
WO2020184487A1 (ja) 動画像復号装置
US20220345734A1 (en) Video decoding apparatus
US20200021837A1 (en) Video decoding apparatus and video coding apparatus
US20230300365A1 (en) Video decoding apparatus and video coding apparatus
WO2020137920A1 (ja) 予測画像生成装置、動画像復号装置、動画像符号化装置および予測画像生成方法
CN112740704A (zh) 图像解码装置以及图像编码装置
US20230319305A1 (en) Video decoding apparatus
JP2020145650A (ja) 画像復号装置および画像符号化装置
JP2020096279A (ja) 予測画像生成装置、動画像復号装置および動画像符号化装置
JP2020108012A (ja) 画像復号装置および画像符号化装置
JP2020088660A (ja) 動画像符号化装置、動画像復号装置
RU2812275C2 (ru) Устройство декодирования видеосигналов
US11044490B2 (en) Motion compensation filter apparatus, image decoding apparatus, and video coding apparatus
JP2020170901A (ja) 予測画像生成装置、動画像復号装置および動画像符号化装置
JP7378968B2 (ja) 予測画像生成装置、動画像復号装置および動画像符号化装置
RU2799802C2 (ru) Устройство генерирования прогнозируемых изображений, устройство декодирования видеосигналов, устройство кодирования видеосигналов и способ генерирования прогнозируемых изображений
JP2020096329A (ja) 予測画像生成装置、動画像復号装置および動画像符号化装置
JP2020088577A (ja) 予測画像生成装置、動画像復号装置、および動画像符号化装置
US20230188706A1 (en) Video coding apparatus and video decoding apparatus
WO2020122130A1 (ja) 予測画像生成装置、動画像復号装置、動画像符号化装置および予測画像生成方法
JP2022152121A (ja) 画像復号装置及び画像符号化装置
JP2022087865A (ja) 画像復号装置及び画像符号化装置