Область техники, к которой относится изобретение
[1] Настоящее раскрытие относится к кодированию и декодированию видео и, в частности, к инструменту кодирования для повышения эффективности сжатия интерпредсказания.
Уровень техники
[2] Поскольку объем видеоданных больше, чем объем речевых данных или данных статического изображения, для хранения или передачи видеоданных без обработки для сжатия требуется много аппаратных ресурсов, включая память. Соответственно, при хранении или передаче видеоданных видеоданные обычно сжимаются с использованием кодировщика для хранения или передачи. Затем декодер принимает сжатые видеоданные, распаковывает и воспроизводит видеоданные. Процедуры сжатия для такого видео включают H.264/AVC и высокоэффективное кодирование видео (HEVC), которое повышает эффективность кодирования по сравнению с H.264/AVC примерно на 40%.
[3] Однако размер изображения, разрешение и частота кадров постепенно увеличиваются, и, соответственно, увеличивается также объем данных, которые необходимо кодировать. Соответственно, требуется новая процедура сжатия, имеющая лучшую эффективность кодирования и более высокое качество изображения, чем существующая процедура сжатия.
[4] В кодировании видео для повышения эффективности сжатия видео в основном используется кодирование с предсказанием. Существуют интра-предсказание для предсказания целевого блока, который должен быть закодирован, на основе предварительно восстановленных отсчетов в текущем изображении, и интер-предсказание для предсказания текущего блока с использованием предварительно восстановленного опорного изображения. В частности, интер-предсказание широко используется для кодирования видео, поскольку оно демонстрирует превосходные характеристики сжатия по сравнению с интра-предсказанием.
[5] Настоящее раскрытие предусматривает инструмент кодирования для повышения эффективности сжатия существующего интер-предсказания.
[6] В частности, настоящее раскрытие относится к инструменту кодирования для повышения эффективности сжатия при интер-предсказании и, в одном аспекте, относится к инструменту кодирования, способному компенсировать различные движения объекта, включая движение поступательного движения.
Раскрытие сущности изобретения
[7] В соответствии с одним аспектом настоящего раскрытия, предоставляется способ декодирования видео для декодирования последовательности кодированных изображений на поблочной основе. Способ включает в себя установление, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока; установление, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или более вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня, причем по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения; когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, определение множество векторов движения контрольных точек целевого блока, кодированных с использованием аффинного предсказание движения, и генерирование отсчетов аффинного предсказания для каждого из субблоков в целевом блоке посредством выполнения аффинного предсказания движения в единице субблоков с использованием векторов движения контрольных точек; и когда идентифицировано на основе установления на уровне изображения, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.
[8] В соответствии с другим аспектом настоящего раскрытия, предоставляется устройство декодирования видео для декодирования последовательности кодированных изображений на поблочной основе. Устройство включает в себя декодер конфигурированный: устанавливать, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока; и устанавливать, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или нескольких вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня. В частности, по меньшей мере один инструмент кодирования включает поотсчетное корректирование отсчетов аффинного предсказания движения.
[9] Устройство также включает в себя предиктор, конфигурированный определять, когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, множество векторов движения контрольных точек целевого блока, кодированных с использованием аффинного предсказания движения, и генерировать отсчеты аффинного предсказания для каждого субблока в целевом блоке путем выполнения аффинного предсказания движения на посубблочной основе с использованием векторов движения контрольных точек. В ответ на идентификацию, основанную на установление на уровне изображения, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, предиктор конфигурирован модифицировать значения отсчетов аффинного предсказания путем компенсации движения в соответствии с положением отсчета в каждом из сублоков на основе векторов движения контрольных точек целевого блока.
[10] В соответствии с другим аспектом настоящего раскрытия, предоставляется способ кодирования последовательности кодированных изображений на поблочной основе. Способ включает в себя кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, при этом по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения; в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении разрешения кодирования каждого из по меньшей мере одного инструмента кодирования; когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение векторов движения контрольных точек для целевого блока, подлежащего кодированию, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек; и когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.
Краткое описание чертежей
[11] Фиг. 1 - примерная блочная схема устройства кодирования видео, выполненного с возможностью осуществления процедур согласно настоящему раскрытию.
[12] Фиг. 2 в качестве примера показывает структуру разделения блоков с использованием структуры QTBTTT.
[13] Фиг. 3 в качестве примера показывает множество режимов интра-предсказания.
[14] Фиг. 4 в качестве примера показывает соседние блоки вокруг текущего блока.
[15] Фиг. 5 - примерная блочная схема устройства декодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию.
[16] Фиг. 6 - примерная схема, иллюстрирующая концепцию оптического потока с двойным предсказанием, предусмотренную настоящим раскрытием.
[17] Фиг. 7 - примерная схема, иллюстрирующая способ получения градиента для отсчета границы блока в двунаправленном оптическом потоке.
[18] Фиг. 8А-8В и 9 - примерные схемы, иллюстрирующие аффинное предсказание движения, предусмотренное настоящим раскрытием.
[19] Фиг. 10 - примерная схема, иллюстрирующая способ получения кандидатов на слияние для аффинного предсказания движения из векторов поступательного движения соседних блоков.
[20] Фиг. 11А-11с - примерные схемы, иллюстрирующие способ получения параметра компенсации освещенности согласно варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.
[21] Фиг. 12А-12В - примерные схемы, иллюстрирующие способ разделения целевого блока на множество областей согласно другому варианту осуществления компенсации освещения, предусмотренному настоящим раскрытием.
[22] Фиг. 13 - примерная схема, иллюстрирующая способ определения опорных отсчетов, которые должны использоваться для получения параметров компенсации, когда целевой блок разделен на четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.
[23] Фиг. 14 и 15 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности с использованием параметров компенсации освещенности для четырех областей, когда целевой блок разделен на четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.
[24] Фиг. 16 и 17 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности для каждой области, когда целевой блок разделен на две области, согласно другому варианту осуществления компенсации освещенности, предусмотренному настоящим раскрытием.
[25] Фиг. 18 - примерные схемы, иллюстрирующие способ осуществления компенсации освещенности для каждой области, когда целевой блок разделен на множество областей, более чем четыре области, согласно другому варианту осуществления компенсации освещенности, предусмотренной настоящим раскрытием.
Подробное описание
[26] Далее вариант осуществления настоящего изобретения будет подробно описан со ссылкой на приложенные чертежи. Следует отметить, что при добавлении цифровых обозначений к составляющим элементам на соответствующих чертежах одинаковые цифровые обозначения обозначают одинаковые элементы, даже если элементы показаны на разных чертежах. Кроме того, в последующем описании настоящего раскрытия подробное описание известных функций и конфигураций, включенных в настоящий документ, будет опущено, чтобы не оттенять предмет настоящего раскрытия.
[27] Фиг. 1 - примерная блочная схема устройства кодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию. Далее устройство кодирования виде и элементы устройства будут описаны со ссылкой на фиг. 1.
[28] Устройство кодирования видео включает в себя разделитель ПО блоков, предиктор 120, вычитатель 130, преобразователь 140, квантователь 145, модуль 150 переупорядочения, энтропийный кодер 155, обратный квантователь 160, обратный преобразователь 165, сумматор 170, модуль 180 петлевого фильтра и память 190.
[29] Каждый элемент устройства кодирования видео может быть реализован в виде аппаратного или программного обеспечения или комбинации аппаратного и программного обеспечения. Функции соответствующих элементов могут быть реализованы в виде программного обеспечения, и микропроцессор может быть реализован для выполнения функций программного обеспечения, соответствующих соответствующим элементам.
[30] Одно видео состоит из одной или нескольких последовательностей, включающих множество изображений. Каждое изображение разбивается на множество областей, и для каждой области выполняется кодирование. Например, одно изображение разбивается на один или более фрагментов и/или секций. В частности, один или более тайлов могут быть определены как группа тайлов. Каждый тайл и/или слайс разделяют на одну или более единиц дерева кодирования (CTU). И каждую CTU разделяют на одну или более единиц кодирования (CU) древовидной структурой. Информация, применяемая к каждой CU, кодируют как синтаксис CU, а информацию, применяемая к CU, включенным в одну общую CTU, кодируют как синтаксис CTU. Кроме того, информация, применяемая ко всем блокам в одном слайсе в целом, кодируется как синтаксис заголовка слайса, а информация, применяемая ко всем блокам, составляющим одно или несколько изображений, кодируется в наборе параметров изображения (PPS) или заголовке изображения.
[31] Кроме того, информация, на которую ссылается последовательность, состоящая из множества изображений в общем, кодируется в наборе параметров последовательности (SPS). Кроме того, информация, применяемая к одному тайлу или группе тайлов в общем мозаичного изображения, может кодироваться как синтаксис заголовка тайла или группы тайлов. Синтаксисы, включенные в SPS, PPS, заголовок слайса и заголовок тайла или группы тайлов, могут называться синтаксисами высокого уровня.
[32] Разделитель 110 блоков выполнен с возможностью определения размера единицы (CTU) дерева кодирования. Информация о размере CTU (размер CTU) кодируется как синтаксис набора SPS или набора PPS и передается в устройство декодирования видео. Кроме того, разделитель ПО блоков конфигурирован разделять каждое изображение, составляющее видео, на множество CTU, имеющих заданный размер, а затем рекурсивно разделять CTU с использованием древовидной структуры. В древовидной структуре листовой узел служит в качестве единицы (CU) кодирования, которая является базовой единицей кодирования.
[33] Древовидная структура может быть деревом квадрантов (QuadTree (QT), в которой узел (или родительский узел) разделен на четыре субузла (или дочерние узлы) одинакового размера, двоичным деревом (BinaryTree (ВТ)), в котором узел разделен на два субузла, троичным деревом (TernaryTree (ТТ)), в котором узел разделен на три подузла в соотношении 1:2:1, или структура, образованная комбинацией двух или более из структуры QT, структуры ВТ, и структуры ТТ. Например, может использоваться структура, включающая дерево квадрантов и двоичное дерево (QTBT), или структура, включающая дерево квадрантов и двоичное дерево троичное дерево (QTBTTT). Здесь ВТТТ может в совокупности называться деревом множественного типа (МТТ).
[34] На фиг. 2 в качестве примера показана древовидная структура разделения QTBTTT. Как показано на фиг. 2, CTU может быть первоначально разделена в структуре QT. Разделение QT может повторяться до тех пор, пока размер блока разделения не достигнет минимального размера блока MinQTSize листового узла, разрешенного в структуре QT. Первый флаг (QT_split_flag), указывающий, разделен ли каждый узел структуры QT на четыре узла нижнего уровня, кодируется энтропийным кодером 155 и сигнализируется в устройство декодирования видео. Если концевой узел структуры QT, равен или меньше, чем максимальный размер блока корневого узла (MaxBTSize), разрешенного в структуре ВТ, он может быть дополнительно разделен на одну или более структуры ВТ или структуры ТТ. Структура ВТ и/или структура ТТ может иметь множество направлений разделения. Например, может быть два направления, а именно направление, в котором блок узла разделяется по горизонтали, и направление, в котором блок разделяется по вертикали.
[35] Как показано на фиг. 2, когда начинается разделение МТТ, второй флаг (mtt_split_flag), указывающий, разделены ли узлы, флаг, указывающий направление разделения (вертикальное или горизонтальное) в случае разделения, и/или флаг, указывающий тип разделения (двоичное или троичное) кодируются энтропийным кодером 155 и сигнализируются в устройство декодирования видео. В качестве альтернативы, перед кодированием первого флага (QT_split_flag), указывающего, разделен ли каждый узел на 4 узла нижнего слоя, может быть закодирован флаг разделения CU (split_cu_flag), указывающий, разделен ли узел. Когда значение флага разделения CU (split_cu_flag) указывает, что разделение не выполняется, блок узла становится конечным узлом в структуре дерева разделения и обслуживает единицу кодирования (CU), которая является базовой единицей кодирования. Когда значение флага разделения CU (split_cu_flag) указывает, что разделение выполнено, устройство кодирования видео начинает кодирование флагов способом, описанным выше, начиная с первого флага.
[36] Когда QTBT используется в качестве другого примера древовидной структуры, может быть два типа разделения, которые представляют собой тип горизонтального разделения блока на два блока одинакового размера (т.е. симметричное горизонтальное разделение) и тип вертикального разделения блока на два блока одинакового размера (т.е. симметричное вертикальное разделение). Флаг разделения (split_flag), указывающий, разделен ли каждый узел структуры ВТ на блок нижнего слоя, и информация о типе разделения, указывающая тип разделения, кодируются энтропийным кодером 155 и сигнализируются в устройство декодирования видео. Возможен дополнительный тип разбиения блока узла на два асимметричных блока. Тип асимметричного разделения может включать в себя тип разделения блока на два прямоугольных блока с соотношением размеров 1:3 или тип диагонального разделения блока узла.
[37] Кроме того, CU могут иметь различные размеры в соответствии с разделением CTU на QTBT или QTBTTT. В дальнейшем блок, соответствующий CU (то есть листовому узлу QTBTTT), который должен быть закодирован или декодирован, называется «текущим блоком». Поскольку используется разделение QTBTTT, форма текущего блока может быть квадратной или прямоугольной. Предиктор 120 предсказывает текущий блок, чтобы сгенерировать блок предсказания. Предиктор 120 включает в себя интра-предиктор 122 и интер-предиктор 124.
[38] Модуль 122 внутреннего предсказания конфигурирован для предсказания отсчетов в текущем блоке с использованием отсчетов (опорных отсчетов), расположенных вокруг текущего блока в текущем изображении, включающем текущий блок. Существует множество режимов интра-предсказания согласно направлениям предсказания. Например, как показано на фиг. 3, множество режимов интра-предсказания может включать в себя два ненаправленных режима, которые включают в себя планарный режим и режим DC, и 65 направленных режимов. Соседние отсчеты и используемое уравнение определяются по-разному для каждого режима предсказания.
[39] Интра-предиктор 122 может быть конфигурирован для определения режима интра-предсказания, который будет использоваться при кодировании текущего блока. В некоторых примерах интра-предиктор 122 может быть конфигурирован кодировать текущий блок с использованием нескольких режимов интра-предсказания и выбирать для использования подходящий режим интра-предсказания из проверенных режимов. Например, интра-предиктор 122 может быть конфигурирован вычислять значения скоростного искажения с использованием анализа скорости-искажения нескольких протестированных режимов интра-предсказания и выбирать режим интра-предсказания, который имеет лучшие характеристики скорости-искажения среди протестированных режимов.
[40] Интра-предиктор 122 конфигурирован для одного режима интра-предсказания из множества режимов интра-предсказания и предсказывает текущий блок, используя соседние пиксели (опорные пиксели) и уравнение, определенное согласно выбранному режиму интра-предсказания. Информация о выбранном режиме интра-предсказания кодируется энтропийным кодером 155 и передается в устройство декодирования видео. Интер-предиктор 124 конфигурирован для предсказания блока предсказания для текущего блока посредством компенсации движения. Кроме того, интер-предиктор 124 конфигурирован искать блок, наиболее похожий на текущий блок в опорном изображении, которое был кодировано и декодировано раньше, чем текущее изображение, и генерирует блок предсказания для текущего блока, используя найденный блок.
[41] Затем интер-предиктор конфигурирован для генерации вектора движения, соответствующего смещению между текущим блоком в текущем изображении и блоком предсказания в опорном изображении. В целом, оценку движения выполняют для компонента яркости, а вектор движения, вычисленный на основе компонента яркости, используется как для компонента яркости, так и для компонента цветности. Информация о движении, включающая в себя информацию об опорном изображении и информацию о векторе движения, используемую для предсказания текущего блока, кодируется энтропийным кодером 155 и передается в устройство декодирования видео.
[42] Интер-предиктор 124 может быть конфигурирован для выполнения интерполяции на основе опорного изображения или опорного блока, чтобы повысить точность предсказания. Другими словами, суботсчеты между двумя последовательными целыми отсчетами интерполируются путем применения коэффициентов фильтра к множеству последовательных целых отсчетов, включая два целых отсчета. Когда операция поиска блока, наиболее похожего на текущий блок, выполняется на интерполированном опорном изображении, вектор движения может быть выражен с уровнем точности дробной единицы отсчета, а не с уровнем точности целой единицы отсчета.
[43] Точность или разрешение вектора движения могут быть установлены по-разному для каждой целевой кодируемой области, например, для каждой единицы, такой как слайс, тайл, CTU или CU. Когда применяется такое адаптивное разрешение вектора движения, информация о разрешении вектора движения, которая должна применяться к каждой целевой области, должна передаваться для каждой целевой области. Например, когда целевая область является CU, передается информация о разрешении вектора движения, применяемом к каждой CU. Информация о разрешении вектора движения может быть информацией, указывающей точность разности векторов движения, которая будет описана далее.
[44] Интер-предиктор 124 может быть конфигурирован для выполнения интерпредсказания с использованием двойного предсказания. При двунаправленном предсказании интер-предиктор 124 использует два опорных изображения и два вектора движения, представляющие положения блоков, наиболее похожих на текущий блок в соответствующих опорных изображениях. Интер-предиктор 124 конфигурирован для выбора первого опорного изображения и второго опорного изображения из списка О опорных изображений (RefPicListO) и списка 1 опорных изображений (RefPicListl), соответственно, для поиска блоков, похожих на текущий блок, в соответствующих опорных изображениях, и генерирования первого опорного блока и второго опорного блока. Затем интер-предиктор 124 конфигурирован для генерации блока предсказания для текущего блока путем усреднения или взвешивания первого опорного блока и второго опорного блока. Затем интер-предиктор 124 конфигурирован для передачи информации о движении, включая информацию о двух опорных изображениях и двух векторах движения, используемых для предсказания текущего блока, в кодер 150.
[45] В частности, RefPicListO может состоять из изображений, предшествующих текущему изображению в порядке отображения среди восстановленных изображений, a RefPicListl может состоять из изображений, следующих за текущим изображением в порядке отображения среди восстановленных изображений. Однако варианты осуществления этим не ограничиваются. Предварительно восстановленные изображения, следующие за текущим изображением в порядке отображения, могут быть дополнительно включены в RefPicListO, и, наоборот, предварительно восстановленные изображения, предшествующие текущему изображению, могут быть дополнительно включены в RefPicListl.
[46] Для минимизации количества битов, необходимых для кодирования информации о движении, могут использоваться различные способы. Например, когда опорное изображение и вектор движения текущего блока такие же, как опорное изображение и вектор движения соседнего блока, информация о движении текущего блока может быть передана в устройство декодирования посредством кодирования информации для идентификации соседнего блока. Этот способ называется «режимом слияния».
[47] В режиме слияния интер-предиктор 124 выбирает предопределенное количество блоков кандидатов на слияние (в дальнейшем именуемых «кандидатами на слияние») из числа соседних блоков текущего блока. Как показано на фиг. 4, все или часть левого блока L, верхнего блока А, верхнего правого блока AR, нижнего левого блока BL и верхнего левого блока AL, которые являются смежными с текущим блоком в текущем изображении, могут использоваться в качестве соседних блоков для получения кандидатов на слияние. Кроме того, блок, расположенный в опорном изображении (который может быть таким же или отличным от опорного изображения, используемого для предсказания текущего блока), кроме текущего изображения, в котором расположен текущий блок, может использоваться в качестве кандидата на слияние. Например, совмещенный блок, который находится в том же положении, что и текущий блок, или блоки, смежные с совмещенным блоком в опорном изображении, могут дополнительно использоваться в качестве кандидатов на слияние.
[48] Интер-предиктор 124 конфигурирует список слияния, включающий в себя заранее определенное количество кандидатов на слияние, используя такие соседние блоки. Интер-предиктор 124 выполнен с возможностью выбора кандидата на слияние для использования в качестве информации о движении для текущего блока из числа кандидатов на слияние, включенных в список слияния, и генерирования информации индекса слияния для идентификации выбранных кандидатов. Сгенерированная информация индекса слияния кодируется кодером 155 и передается в устройство декодирования.
[49] Другой способ кодирования информации о движении - это режим AMVP. В режиме AMVP интер-предиктор 124 конфигурирован для получения предсказанных кандидатов вектора движения для вектора движения текущего блока с использованием соседних блоков текущего блока. Все или часть из левого блока L, верхнего блока А, верхнего правого блока AR, нижнего левого блока BL и верхнего левого блока AL, которые являются смежными с текущим блоком в текущем изображении на фиг. 2, могут использоваться в качестве соседних блоков, используемых для получения предсказанных кандидатов векторов движения. Кроме того, блок, расположенный в опорном изображении (которое может быть таким же или отличным от опорного изображения, используемого для предсказания текущего блока), отличном от текущего изображения, включающего в себя текущий блок, может использоваться в качестве соседних блоков, используемых для получения предсказанных кандидатов векторов движения. Например, могут использоваться совмещенный блок, который находится в том же положении, что и текущий блок, или блоки, смежные с совмещенным блоком в опорном изображении.
[50] Интер-предиктор 124 конфигурирован для получения предсказанных кандидатов векторов движения с использованием векторов движения соседних блоков и определения предсказанного вектора движения для вектора движения текущего блока с использованием предсказанных кандидатов векторов движения. Затем вычисляют разность векторов движения путем вычитания предсказанного вектора движения из вектора движения текущего блока.
[51] Предсказанный вектор движения может быть получен путем применения заранее определенной функции (например, функции для вычисления медианы, среднего значения и т.п.) к предсказанным кандидатам векторов движения. В частности, устройство декодирования видео также "знает" предопределенную функцию. Поскольку соседние блоки, используемые для получения предсказанных кандидатов векторов движения, уже были кодированы и декодированы, устройство декодирования видео также уже "знает" векторы движения соседних блоков. Соответственно, устройству кодирования видео не требуется кодировать информацию для идентификации предсказанных кандидатов векторов движения. Следовательно, в этом случае кодируется информация о разности векторов движения и информация об опорном изображении, используемом для предсказания текущего блока.
[52] Предсказываемый вектор движения может быть определен путем выбора любого одного из предсказанных кандидатов векторов движения. В частности, информация для идентификации выбранного предсказанного кандидата вектора движения дополнительно кодируется вместе с информацией о разности векторов движения и информацией об опорном изображении, которые предназначены для использования для предсказания текущего блока.
[53] Вычитатель 130 конфигурирован для вычитания блока предсказания, сгенерированного интра-предиктором 122 или интер-предиктором 124, из текущего блока для генерирования остаточного блока. Преобразователь 140 может быть конфигурирован для разделения остаточного блока на один или несколько субблоков и применения преобразования к одному или нескольким субблокам, тем самым преобразуя остаточные значения блоков преобразования из области отчетов в область частот. В области частот преобразованные блоки называются блоками коэффициентов или блоками преобразования, содержащими одно или более значений коэффициентов преобразования. Ядро двумерного преобразования может использоваться для преобразования, а ядра одномерного преобразования могут использоваться для горизонтального преобразования и вертикального преобразования соответственно. Ядра преобразования могут быть основаны на дискретном косинусном преобразовании (DCT), дискретном синусоидальном преобразовании (DST) или другом подобном
[54] Преобразователь 140 может быть конфигурирован для преобразования остаточных сигналов в остаточном блоке с использованием всего размера остаточного блока в качестве единицы преобразования. В качестве альтернативы, остаточный блок может быть разделен на множество субблоков, и остаточные сигналы в субблоках могут быть преобразованы с использованием субблока в качестве единицы преобразования.
[55] Преобразователь 140 может быть выполнен с возможностью индивидуального преобразования остаточного блока в горизонтальном направлении и вертикальном направлении. Для преобразования могут использоваться различные типы функций преобразования или матриц преобразования. Например, пары функций преобразования для горизонтального преобразования и вертикального преобразования могут быть определены как набор множественных преобразований (MTS). Преобразователь 140 может быть конфигурирован для выбора одой пары функций преобразования, имеющих наибольшую эффективность преобразования в MTS, и преобразования остаточного блока в горизонтальном и вертикальном направлениях соответственно. Информация (mts_idx) о паре функций преобразования, выбранных в MTS, кодируется энтропийным кодером 155 и передается в устройство декодирования видео.
[56] Квантователь 145 конфигурирован для квантования коэффициентов преобразования, выводимых из преобразователя 140, с использованием параметров квантования, и вывода квантованных коэффициентов преобразования в энтропийный кодер 155. Для некоторых блоков или кадров, квантователь 145 может быть конфигурирован для непосредственного квантования соответствующего остаточного блока без преобразования. Квантователь 145 может быть конфигурирован для применения различных коэффициентов квантования (значений масштабирования) согласно положениям коэффициентов преобразования в блоке преобразования. Матрица квантованных коэффициентов, применяемых к двумерно скомпонованным квантованным коэффициентам преобразования, может быть кодирована и сигнализирована в устройство декодирования видео.
[57] Модуль 150 переупорядочения может быть конфигурирован для пересортировки значений коэффициентов для квантованного остаточного значения. Модуль 150 переупорядочения может быть конфигурирован для преобразования двумерного массива коэффициентов в одномерную последовательность коэффициентов посредством сканирования коэффициентов. Например, модуль 150 переупорядочения может быть конфигурирован для сканирования коэффициентов от коэффициента прямого тока (DC) до коэффициента в высокочастотной области с использованием зигзагообразного сканирования или диагонального сканирования для вывода одномерной последовательности коэффициентов. В зависимости от размера единицы преобразования и режима интра-предсказания, вертикальное сканирование, при котором двумерный массив коэффициентов сканируется в направлении столбцов, или горизонтальное сканирование, в котором двумерные блочные коэффициенты сканирование в направлении сток, может использоваться вместо зигзагообразного сканирования. Другими словами, используемый режим сканирования может быть определен среди зигзагообразного сканирования, диагонального сканирования, вертикального сканирования и горизонтального сканирования в соответствии с размером единицы преобразования и режимом интра-предсказания.
[58] Энтропийный кодер 155 конфигурирован для кодирования одномерных квантованных коэффициентов преобразования, выводимых из модуля 150 переупорядочения, с использованием различных процедур кодирования, таких как контекстно-зависимый адаптивный двоичный арифметический код (САВАС) и экспоненциальный код Голомба, для генерации битового потока. Энтропийный кодер 155 конфигурирован для кодирования информации, такой как размер CTU, флаг разделения CU, флаг разделения QT, тип разделения МТТ и направление разделения МТТ, которые связаны с разделением блоков, так что устройство декодирования видео может разделять блок так же, как в устройстве кодирования видео.
[59] Кроме того, энтропийный кодер 155 конфигурирован для кодирования информации о типе предсказания, указывающей, закодирован ли текущий блок посредством интра-предсказания или интер-предсказания, и кодирует информацию интра-предсказания (т.е. информацию о режиме интра-предсказания) или информация интерпредсказания (индекс слияния для режима слияния, информацию об индексе опорного изображения и разность векторов движения для режима AMVP) согласно типу предсказания. Энтропийный кодер 155 также кодирует информацию, относящуюся к квантованию, то есть информацию о параметрах квантования и информацию о матрице квантования.
[60] Обратный квантователь 160 конфигурирован для обратного квантования квантованных коэффициентов преобразования, выводимых из квантователя 145, для генерации коэффициентов преобразования. Обратный преобразователь 165 конфигурирован для преобразования коэффициентов преобразования, выводимых из обратного квантователя 160, из частотной области в пространственную область, и для восстановления остаточного блока.
[61] Кроме того, сумматор 170 конфигурирован для добавления восстановленного остаточного блока к блоку предсказания, сгенерированному предиктором 120, для восстановления текущего блока. Отсчеты в восстановленном текущем блоке используются в качестве опорных отсчетов при выполнении интра-предсказания следующего блока. Модуль 180 петлевого фильтра конфигурирован для фильтрации восстановленных отсчетов для уменьшения артефактов блочности, артефактов звонка и артефактов размытия, генерируемых из-за поблочного предсказания и преобразования/квантования. Модуль 180 петлевого фильтра может включать в себя по меньшей мере фильтр 182 удаления блочности, фильтр 184 с адаптивным смещением отсчета (SAO) и адаптивный петлевой фильтр (ALF) 186.
[62] Фильтр 182 удаления блочности конфигурирован для фильтрации границы между восстановленными блоками, чтобы удалить артефакт блочности, вызванный поблочным кодированием/декодированием, а фильтр 184 SAO выполняет дополнительную фильтрацию видео, отфильтрованного с удалением блочности. SAO-фильтр 184 представляет собой фильтр, используемый для компенсации разницы между восстановленным отсчетом и исходным отсчетом, вызванной кодированием с потерями, и выполняет фильтрацию таким образом, что добавляет соответствующее смещение к каждому восстановленному отсчету. ALF 186 конфигурирован для выполнения фильтрации целевого отсчета, подлежащего фильтрации, путем применения коэффициентов фильтрации к целевому отсчету и соседним отсчетам целевого отсчета. ALF 186 может быть конфигурирован разделять отсчеты, включенные в изображение, на заранее определенные группы, а затем определять один фильтр, который должен быть применен к соответствующей группе, для дифференциального осуществления фильтрации в каждой группе. Информация о коэффициентах фильтра, которые должны использоваться для ALF, может кодироваться и передаваться в устройство декодирования видео.
[63] Восстановленные блоки, отфильтрованные через модуль 180 петлевого фильтра, сохраняются в памяти 190. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания блоков в изображении, подлежащим последующему кодированию.
[64] Фиг. 5 - примерная функциональная блочная схема устройства декодирования видео, выполненного с возможностью реализации технологии согласно настоящему раскрытию. Далее устройство декодирования виде и элементы устройства будут описаны со ссылкой на фиг. 5. Устройство декодирования видео может включать в себя энтропийный декодер 510, модуль 515 переупорядочения, обратный квантователь 520, обратный преобразователь 530, предиктор 540, сумматор 550, модуль 560 петлевого фильтра и память 570.
[65] Подобно устройству кодирования видео с фиг. 1, каждый элемент устройства декодирования видео может быть реализован в виде аппаратного обеспечения, программного обеспечения или комбинации аппаратного и программного обеспечения. Кроме того, функция каждого элемента может быть реализована в программном обеспечении, а микропроцессор может быть реализован для выполнения функции программного обеспечения, соответствующей каждому элементу.
[66] Энтропийный декодер 510 конфигурирован для определения текущего блока, который должен быть декодирован, путем декодирования битового потока, сгенерированного устройством кодирования видео, и извлечения информации, относящейся к блочному разделению, и извлечения информации предсказания и информации остаточного сигнала и т.п., необходимых для восстановления текущего блока. Кроме того, энтропийный декодер 510 конфигурирован для извлечения информации о размере CTU из набора параметров последовательности (SPS) или набора параметров изображения (PPS), определяет размер CTU и разбивает изображение на единицы CTU определенного размера. Затем декодер конфигурирован определять CTU как самый верхний уровень, то есть корневой узел, древовидной структуры, и извлекать информацию о разделении CTU для разделения CTU с использованием древовидной структуры.
[67] Например, когда CTU разделяется с использованием структуры QTBTTT, первый флаг (QT_split_flag), связанный с разделением QT, извлекается для разделения каждого узла на четыре узла подуровня. Для узла, соответствующего конечному узлу QT, извлекаются второй флаг (MTT_split_flag) и информация о направлении разделения (вертикальное / горизонтальное) и/или о типе разделения (двоичное/троичное), относящиеся к разделению МТТ для разделения соответствующего листового узла в структуре МТТ. Соответственно, каждый узел ниже листового узла QT рекурсивно разделяется в структуре ВТ или ТТ.
[68] В качестве другого примера, когда CTU разделяют с использованием структуры QTBTTT, может быть извлечен флаг разделения CU (split_cu_flag), указывающий, следует ли разделить CU. Когда соответствующий блок разделен, может быть извлечен первый флаг (QT_split_flag). В операции разделения ноль или более рекурсивных МТТ-разделений может происходить для каждого узла после нулевого или более рекурсивных QT-разделений. Например, CTU может быть конфигурирована так, чтобы непосредственно подвергаться МТТ-разделению без QT-разделения или многократно подвергаться только QT-разделению.
[69] В качестве другого примера, когда CTU разделяют с использованием структуры QTBT, извлекают первый флаг (QT_split_flag), связанный с QT-разделением, и каждый узел разделяют на четыре узла нижнего уровня. Затем извлекается флаг разделения (split_flag), указывающий, разделяется ли узел, соответствующий листовому узлу QT, дополнительно в ВТ и информацию о направлении разделения.
[70] Как только текущий блок, подлежащий декодированию, определен посредством разделения в древовидной структуре, энтропийный декодер 510 конфигурирован извлекать информацию о типе предсказания, указывающую, является ли текущий блок интра-предсказанным или интер-предсказанным. Когда информация о типе предсказания указывает на интра-предсказание, энтропийный декодер 510 конфигурирован для извлечения элемента синтаксиса для информации интра-предсказания (режим интра-предсказания) для текущего блока. Когда информация о типе предсказания указывает на интер-предсказание, энтропийный декодер 510 конфигурирован извлекать элемент синтаксиса для информации интер-предсказания, то есть информацию, указывающую вектор движения и опорное изображение, на которое ссылается вектор движения.
[71] Энтропийный декодер 510 также конфигурирован для извлечения информации о квантованных коэффициентах преобразования текущего блока в качестве информации, относящейся к квантованию, и информации об остаточных сигналах. Модуль 515 переупорядочения может быть конфигурирован для изменения последовательности одномерных квантованных коэффициентов преобразования, энтропийно декодированных энтропийным декодером 510, на двумерный массив коэффициентов (то есть блок) в порядке, обратном сканированию коэффициентов, выполняемому устройством кодирования видео.
[72] Обратный квантователь 520 выполнен с возможностью обратного квантования квантованных коэффициентов преобразования с использованием параметра квантования. Обратный квантователь 520 может быть конфигурирован для применения различных коэффициентов квантования (значений масштабирования) к квантованным коэффициентам преобразования, размещенным в двух измерениях. Обратный квантователь 520 может быть конфигурирован для выполнения обратного квантования путем применения матрицы коэффициентов квантования (значений масштабирования) от устройства кодирования видео к двумерному массиву квантованных коэффициентов преобразования.
[73] Обратный преобразователь 530 выполнен с возможностью обратного преобразования обратно квантованных коэффициентов преобразования из частотной области в пространственную для восстановления остаточных сигналов, тем самым генерируя восстановленный остаточный блок для текущего блока. Кроме того, когда применяется MTS, обратный преобразователь 530 конфигурирован для определения функций преобразования или матриц преобразования, которые должны применяться в горизонтальном и вертикальном направлениях, соответственно, с использованием информации MTS (mts_idx), передаваемой из устройства кодирования видео, и использования определенных функций преобразования для обратного преобразования коэффициентов преобразования в блоке преобразования в горизонтальном и вертикальном направлениях.
[74] Предиктор 540 может включать в себя интра-предиктор 542 и интер-предиктор 544. Интра-предиктор 542 активируют, когда тип предсказания текущего блока является интра-предсказанием, а интер-предиктор 544 активируют, когда тип предсказания текущего блока является интер-предсказанием. Интра-предиктор 542 конфигурирован для определения режима интра-предсказания текущего блока среди множества режимов интра- предсказания на основе элемента синтаксиса для режима интра- предсказания, извлеченного из энтропийного декодера 510, и предсказания текущего блока с использованием опорных отсчетов вокруг текущего блока в соответствии с режимом интра-предсказания.
[75] Интер-предиктор 544 конфигурирован для определения вектора движения текущего блока и опорного изображения, на которое ссылается вектор движения, с использованием элемента синтаксиса для режима интра-предсказания, извлеченного из энтропийного декодера 510, и предсказания текущего блока на основе вектора движения и опорного изображения. Сумматор 550 конфигурирован для восстановления текущего блока путем добавления остаточного блока, выводимого из обратного преобразователя, и блока предсказания, выводимого из интер-предиктора или интра-предиктора. Отсчеты в восстановленном текущем блоке используются в качестве опорных отсчетов при интра-предсказании блока, подлежащего декодированию следующим.
[76] Модуль 560 петлевого фильтра может включать в себя по меньшей мере один из фильтра 562 удаления блочности, фильтра 564 SAO и фильтра 566 ALF. Фильтр 562 удаления блочности фильтрует границу между восстановленными блоками для удаления артефактов блочности, вызванных поблочным декодированием. SAO-фильтр 564 конфигурирован для выполнения фильтрации способом добавления восстановленного блока после фильтрации удаления блочности к соответствующим смещениям, чтобы компенсировать разницу между восстановленным отсчетом и исходным отсчетом, вызванную кодированием с потерями. ALF 566 конфигурирован для выполнения фильтрации целевого отсчета, подлежащего фильтрации, путем применения коэффициентов фильтрации к целевому отсчету и соседним отсчетам целевого отсчета. ALF 566 может быть конфигурирован разделять отсчеты в изображении на заранее определенные группы, а затем определять один фильтр, который должен быть применен к соответствующей группе, для дифференциального осуществления фильтрации в каждой группе. Коэффициент фильтрации ALF определяется на основе информации о коэффициенте фильтрации, декодированной из битового потока.
[77] Восстановленный блок, отфильтрованный через модуль 560 петлевого фильтра, сохраняется в памяти 570. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания блоков в подлежащем последующему кодированию изображении.
[78] Следующее раскрытие относится к инструментам кодирования для улучшения характеристик сжатия интер-предсказания, которые могут управляться интерпредиктором 124 устройства кодирования видео и интер-предиктором 544 устройства декодирования видео. Используемый здесь термин «целевой блок» может иметь то же значение, что и термины «текущий блок» или «единица кодирования (CU)», использованные выше, или может означать частичную область CU.
[79] I. Двунаправленный оптический поток
[80] Двунаправленный оптический поток - это метод дополнительной компенсации перемещений отчетов, предсказанных с использованием двунаправленного предсказания движения, при условии, что отсчеты или объекты, составляющие видео, перемещаются с постоянной скоростью и что значения отсчетов мало меняются.
[81] Фиг. 6 представляет собой примерную схему, иллюстрирующую основную концепцию BIO. Предполагается, что двунаправленные векторы движения MV0 и MV1, указывающие на соответствующие области (т.е. опорные блоки), наиболее похожие на подлежащий кодированию целевой блок в текущем изображении, были определены в опорных изображениях Ref0 и Ref1 посредством (нормального) двунаправленного предсказания движения для целевого блока. Два вектора движения имеют значения, представляющие движение всего целевого блока. В примере на фиг. 6, P0 представляет собой отсчет в опорном изображении Ref0, указанный вектором движения MV0 и соответствующий отсчету Р в целевом блоке, a P1 представляет собой отсчет в опорном изображении Ref1, указанный вектором движения MV1 и соответствующий отсчету Р в целевом блоке.
[82] Кроме того, предполагается, что движение для отсчета Р на фиг. 6 немного отличается от общего движения целевого блока. Например, когда объект, расположенный в отсчете А в Ref0 на фиг. 6 перемещается к отсчету В в Ref1 через отсчет Р в целевом блоке текущего изображения, отсчет А и отсчет В могут иметь значения, очень похожие друг на друга. Кроме того, в этом случае точкой в Ref0, наиболее похожей на отсчет Р в целевом блоке, является не Р0, указанный двунаправленным вектором движения MV0, а отсчет А, сдвинутый от P0 на предопределенный вектор смещения (vxt0, vyt1). Точкой в Ref1, наиболее похожей на отсчет Р в целевом блоке, является не P1, указанный двунаправленным вектором движения MV1, а отсчет В, который был сдвинут от P1 на заданный вектор смещения (-vxt0, -vyt1). В частности, t0 и t1 обозначают расстояния Ref0 и Ref1 по оси времени по отношению к текущему изображению, соответственно, и вычисляются на основе счетчика порядка изображений (РОС). Далее (vx, vy) называется «оптическим потоком».
[83] При предсказании значения отсчета Р текущего блока в текущем изображении два опорных отсчета А и В обеспечивают более точное предсказание, чем опорные отсчеты Р0 и P1, указанные двунаправленными векторами движения MV0 и MV1. В частности, I(0) (i,j) обозначает значение отсчета в опорном изображении Ref0, указанного вектором движения MV0 в качестве соответствующего отсчету (i,j) в целевом блоке, и I(1) (i,j) обозначает значение отсчета в опорном изображении Ref1, указанного вектором движения MV1 в качестве соответствующего отсчету (i,j) в целевом блоке.
[84] Значение отсчета А в опорном изображении Ref0, указанное вектором движения BIO (vx, vy) как соответствующее отсчету в целевом блоке, может быть определено как I(0) (i+ vxt0, j+ vyt0), а значение отсчета B в опорном изображении Ref1 может быть определено как I(1)(i -vxt1, j- vyt1). Здесь, когда линейная аппроксимация выполняется с использованием только члена первого порядка ряда Тейлора, А и В могут быть выражены как уравнение 1.
Уравнение 1
[85] где и - значения градиента в горизонтальном и вертикальном направлениях в положении (i, j) в Ref0 и Ref1. Кроме того, t0 и t1 обозначают расстояния по оси времени для Ref0 и Ref1 относительно текущего изображения, соответственно, и рассчитываются на основе РОС: t0 = РОС(текущее) - POC(Ref0) и t1 = POC(Ref1)- РОС (текущий).
[86] Двунаправленный оптический поток (vx, vy) каждого отсчета в блоке определяется как решение, которое минимизирует Δ, которое определяется как разница между отсчетом А и отсчетом В. При этом Δ может быть определена в уравнении 2 с использованием линейного приближения из А и В, полученных из уравнения 1.
Уравнение 2
[87] Для простоты, положение (i, j) отсчета опущено в каждом члене уравнения 2.
[88] Для реализации более надежной оценки оптического потока предполагается, что движение локально согласуется с соседними отсчетами. Для BIO - вектора движения для отсчета (i, j), который в настоящее время должен быть предсказан, учитываются разности Δ в уравнении 2 для всех отсчетов (i', j'), присутствующих в маске Q определенного размера, центрированной по отсчету (i, j). То есть оптический поток для текущего отсчета (i, j) может быть определен как вектор, минимизирующий целевую функцию Ф(vx, vy), представляющую собой сумму квадратов разностей Δ[i', j'] полученных для соответствующих отсчетов в маске Ω, как показано в уравнении 3.
Уравнение 3
[89] Двунаправленный оптический поток согласно настоящему раскрытию может применяться в случае, когда одно из двух опорных изображений, используемых для двунаправленного предсказания, предшествует текущему изображению в порядке отображения, другое следует за текущим изображением, а расстояния от двух опорных изображений до текущего изображения равны друг другу, то есть разницы в счетчике порядка изображений (РОС) между каждым опорным изображением и текущим изображением равны друг другу. Следовательно, t0 и t1 можно игнорировать.
[90] Кроме того, двунаправленный оптический поток согласно настоящему раскрытию может применяться только к компонентам яркости. Двунаправленный оптический поток согласно настоящему раскрытию выполняется на основе субблоков, а не на основе пикселей, для целевого блока, к которому применяется двунаправленное предсказание. В нижеследующем описании для простоты предполагается, что субблок, который может иметь различные размеры 2×2, 4×4 и 8×8, имеет размер 4×4.
[91] Перед выполнением оптического потока интер-предиктор 124 устройства кодирования видео генерирует два опорных блока для целевого блока с использованием вышеупомянутого двунаправленного предсказания. Первый опорный блок из двух опорных блоков представляет собой блок, состоящий из предсказанных отсчетов, сгенерированных из опорного изображения Ref0 с использованием первого вектора MV0 движения целевого блока, а второй опорный блок представляет собой блок, состоящий из предсказанных отсчетов, сгенерированных из опорного изображения Ref1 с использованием вектора MV1 движения.
[92] Интер-предиктор 124 конфигурирован для вычисления (vx, vy), называемого оптическим потоком, для каждого из субблоков 4×4, составляющих целевой блок, с использованием значений горизонтального и вертикального градиента предсказанных отсчетов в первом опорном блоке и во втором опорном блоке. Оптический поток (vx, vy) определяется таким образом, чтобы разница между предсказанными отсчетами из опорного изображения Ref0 и предсказанными отсчетами из опорного изображения Ref1 была минимизирована. Интер-предиктор 124 конфигурирован для получения смещения отсчета для модификации двунаправленных предсказанных отсчетов для субблока 4×4 с использованием (vx, vy), вычисленного для субблока 4×4, и градиентов предсказанных отсчетов в субблоке 4×4.
[93] В частности, интер-предиктор 124 вычисляет горизонтальный и вертикальный градиенты значений отсчетов в положении (i, j) с использованием уравнения 4.
Уравнение 4
[94] где k равно 0 или 1, а и обозначают значения отсчетов в положении (i,j) в первом опорном блоке и во втором опорном блоке, соответственно. Кроме того, Shift1 - это значение, полученное из битовой глубины компонента яркости, например, shift1=max(6, bitDepth-6).
[95] Чтобы получить градиент отсчета, расположенного на границе каждого опорного блока, необходимы отсчеты за пределами границы первого опорного блока и второго опорного блока. Соответственно, как показано на фиг. 7, каждый опорный блок расширен на один столбец влево и вправо и на одну строку вверх и вниз. Чтобы уменьшить объем вычислений, каждый отсчет в расширенной части может быть заполнен отсчетом или целым отсчетом в ближайшем положении в опорном блоке. Кроме того, градиенты в положении отсчета за пределами границы каждого опорного блока могут быть дополнены градиентами, соответствующими отсчетам в ближайшем положении.
[96] Интер-предиктор 124 конфигурирован для вычисления S1, S2, S3, S5 и S6, соответствующих автокорреляции и взаимной корреляции градиентов, с использованием горизонтальных и вертикальных градиентов в окне 6×6, перекрывающем субблок 4×4, как показано на фиг. 7.
Уравнение 5
[97] где Ω обозначает окно, перекрывающее субблок. Кроме того, как показано в уравнении 6 ниже, Ψх(i,j) обозначает сумму значений горизонтального градиента в положении (i,j) в первом опорном блоке и втором опорном блоке, Ψy (i,j) обозначает сумму значений вертикального градиента в положении (i,j) в первом опорном блоке и во втором опорном блоке, a θ(i,j) обозначает разницу между значением отсчета в положении (i,j) во втором опорном блоке и значение отсчета в положении (i,j) в первом опорном блоке.
Уравнение 6
[98] где na и nb являются значениями, полученными из битовой глубины, и имеют значения min(1, bitDepth-11) и min(4, bitDepth-8).
[99] Интер-предиктор 124 конфигурирован для вычисления оптических потоков (vx, vy) для субблока 4×4 с использованием уравнения 7 на основе S1, S2, S3, S5 и S6.
Уравнение 7
является функцией округления, и
[101] Смещение отсчета для модификации предсказываемого отсчета в каждом положении отсчета (х, у) в субблоке 4×4 в целевом блоке может быть вычислено с использованием оптического потока, рассчитанного для субблока 4×4, и значений градиента в положении отсчета (х, у), как показано в уравнении 8. В уравнении 8 rnd() представляет собой операцию округления.
Уравнение 8
[102] Интер-предиктор 124 выполнен с возможностью генерировать окончательный предсказанный отсчет pred(x, у) с использованием смещения отсчета b(х, у) в положении (х, у) и предсказанных отсчетов и в первом опорном блоке и во втором опорном блоке, как в уравнении 9.
Уравнение 9
[103] где сдвиг равен Мах(3, 15-BitDepth), a Ooffset представляет собой значение для операции округления и составляет половину сдвига.
[104] Как описано выше, метод двунаправленного оптического потока использует значения отсчетов, предсказанных с использованием информации о движении (два вектора движения и два опорных изображения), используемых для двунаправленного предсказания. Следовательно, интер-предиктор 544 устройства декодирования видео также может быть конфигурирован для осуществления двунаправленного оптического потока таким же образом, как и устройство кодирования видео, с использованием информации движения (векторов движения, опорных изображений) для двунаправленного предсказания, полученных от устройства кодирования видео. При этом не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса двунаправленного оптического потока устройству декодирования видео.
[105] II. Аффинное предсказание движения
[106] Вышеописанное интер-предсказание представляет собой предсказание движения, отражающее модель поступательного движения. Другими словами, это метод предсказания движения в горизонтальном направлении (направление оси х) и вертикальном направлении (направление оси у). Однако на практике в дополнение к поступательному движению могут быть различные типы движений, такие как вращение, увеличение или уменьшение масштаба. Один аспект настоящего раскрытия предусматривает аффинное предсказание движения, способное охватывать такие различные типы движений.
[107] Фиг. 8А-8В - примерные схемы, иллюстрирующие аффинное предсказание движения. Для аффинного предсказания движения могут быть два типа моделей. Одна из них - это модель, использующая векторы движения двух контрольных точек верхнего левого угла и верхнего правого угла целевого блока, который должен быть кодирован в текущий момент, то есть четырех параметров, как показано на фиг. 8А. Другая модель представляет собой модель, использующую векторы движения трех контрольных точек верхнего левого угла, верхнего правого угла и нижнего левого угла целевого блока, то есть шесть параметров, как показано на фиг. 8В.
[108] Аффинная модель с четырьмя параметрами выражается уравнением 10. Движение в положении (х, у) отсчета в целевом блоке можно рассчитать по уравнению 10. Здесь предполагается, что положение вышеприведенного левого отсчета целевого блока равна (0, 0).
Уравнение 10
[109] Аффинная модель с шестью параметрами выражается уравнением 11. Движение в положении (х, у) отсчета в целевом блоке можно рассчитать по уравнению 11.
Уравнение 11
[110] где (mv0x, mv0y) - вектор движения контрольной точки в левом верхнем углу, (mv1x, mv1y) - вектор движения контрольной точки в правом верхнем углу, a (mv2x, mv2y) - вектор движения контрольной точки в левом нижнем углу. W - константа, определяемая по длине целевого блока по горизонтали, а Н - константа, определяемая по длине целевого блока по вертикали.
[111] Аффинное предсказание движения может выполняться для каждого отсчета в целевом блоке с использованием вектора движения, рассчитанного по уравнению 10 или 11. В качестве альтернативы, чтобы уменьшить вычислительную сложность, предсказание может выполняться для каждого субблока, отделенного от целевого блока, как показано на фиг. 9. Например, размер субблока может быть 4×4, 2×2 или 8×8. В примерном варианте осуществления, приведенном ниже, аффинное предсказание движения для целевого блока выполняется на основе субблока 4×4. Этот пример предназначен только для удобства объяснения, и настоящее раскрытие им не ограничивается.
[112] При аффинном предсказании движения на основе субблоков вектор движения (аффинный вектор движения) каждого субблока вычисляется путем подстановки центрального положения каждого субблока в (х, у) в уравнении 10 или 11. В частности, центральное положение может быть фактической центральной точкой субблока или нижним правым положением отсчета центральной точки. Например, в случае субблока 4×4, в котором координаты нижнего левого отсчета равны (0, 0), положение центра субблока может быть (1,5, 1,5) или (2, 2). Предсказываемый блок для каждого субдблока генерируется с использованием аффинного вектора движения (mvx, mvy) субблока.
[113] Векторы движения (mvx, mvy) могут иметь точность в 1/16 отсчета. В частности, вектор движения (mvx, mvy), вычисленный по уравнению 10 или 11, может быть округлен до 1/16 единиц отсчета. Адаптивное разрешение вектора движения может применяться к аффинному предсказанию движения, как и в обычном интер-предсказании. В частности, информация о разрешении вектора движения целевого блока, то есть о точности вектора движения, передается для каждого целевого блока.
[114] Аффинное предсказание движения может выполняться не только для компонента яркости, но также для компонента цветности. В случае формата видео 4:2:0, когда аффинное предсказание движения для компонента яркости выполняется на основе субблока 4×4, аффинное предсказание движения для компонента цветности может выполняться на основе субблока 2×2. Вектор движения (mvx, mvy) каждого субблока компонента цветности может быть получен из вектора движения соответствующего компонента яркости. В качестве альтернативы, размер субблока для аффинного предсказания движения для компонента цветности может быть таким же, как и для компонента яркости.
[115] Когда аффинное предсказание движения для компонента яркости выполняется на основе субблока 4×4, аффинное предсказание движения для компонента цветности также выполняется на основе субблока 4×4. В этом случае, поскольку субблок 4×4 для компонента цветности соответствует четырем субблокам 4×4 для компонента яркости, вектор движения (mvx, mvy) для субблока компонента цветности может быть рассчитан путем вычисления среднего значения векторов движения для компонента цветности из четырех соответствующих субдблоков компонента яркости.
[116] Устройство кодирования видео выполняет интра-предсказание, интерпредсказание (предсказание поступательного движения), аффинное предсказание движения и т.п. и вычисляет стоимость скорость-искажение (RD), чтобы выбрать оптимальный способ предсказания. Для выполнения аффинного предсказания интер-предиктор 124 устройства кодирования видео определяет, какой из двух типов моделей использовать, и определяет две или три контрольные точки в соответствии с определенным типом. Интер-предиктор 124 вычисляет вектор движения (mvx, mvy) для каждого из субблоков 4×4 в целевом блоке, используя векторы движения контрольных точек. Затем он выполняет компенсацию движения в опорном изображении на посубблочной основе, используя вектор движения (mvx, mvy) каждого субблока, чтобы сгенерировать предсказанный блок для каждого субблока в целевом блоке.
[117] Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования связанных аффинных элементов синтаксиса, включая флаг, указывающий, применяется ли аффинное предсказание движения к целевому блоку, информацию о типе, указывающую тип аффинной модели, и информацию о движении, указывающую вектор движения каждой контрольной точки, и передачи этого на устройство декодирования видео. Информация о типе и информация о движении относительно контрольных точек могут передаваться, когда выполняется аффинное предсказание движения, и может передаваться столько векторов движения контрольных точек, сколько определено в соответствии с информацией о типе. Кроме того, когда применяется адаптивное разрешение вектора движения, передается информация о разрешении вектора движения об аффинном векторе движения целевого блока.
[118] Устройство декодирования видео конфигурировано для определения типа аффинной модели и векторов движения контрольных точек с использованием сигнализированных элементов синтаксиса и вычисления вектора движения (mvx, mvy) для каждого субблока 4×4 в целевом блоке с использованием уравнения 10 или 11. Когда сообщается информация о разрешении вектора движения об аффинном векторе движения целевого блока, вектор движения (mvx, mvy) корректируется до точности, определяемой информацией о разрешении вектора движения, посредством таких операций, как округление.
[119] Устройство декодирования видео выполнено с возможностью генерировать предсказанный блок для каждого субблока путем выполнения компенсации движения в опорном изображении с использованием вектора движения (mvx, mvy) для каждого субблока. Чтобы уменьшить количество битов, требуемых для кодирования векторов движения контрольных точек, может быть применен способ, который используется в вышеописанном обычном интер-предсказании (предсказании поступательного движения).
[120] В качестве примера, в режиме слияния интер-предиктор 124 устройства кодирования видео конфигурирован получать вектор движения каждой контрольной точки из соседних блоков целевого блока. Например, интер-предиктор 124 конфигурирован для генерации списка кандидатов на слияние путем получения заранее определенного количества кандидатов на слияние из соседних отсчетов L, BL, A, AR и AL целевого блока, проиллюстрированного на фиг. 4. Каждый из кандидатов на слияние, включенных в список, соответствует паре векторов движения из двух или трех контрольных точек.
[121] Во-первых, интер-предиктор 124 конфигурирован для получения кандидата на слияние из векторов движения контрольных точек соседних блоков, предсказанных в аффинном режиме, среди соседних блоков. В некоторых вариантах осуществления количество кандидатов на слияние, полученных из соседних блоков, предсказанных в аффинном режиме, может быть ограничено. Например, интер-предиктор 124 может быть конфигурирован для получения двух кандидатов на слияние из соседних блоков, предсказанных в аффинном режиме: один из L и BL и один из A, AR и AL. Приоритет может быть назначен в порядке L и BL и в порядке A, AR и AL. Когда общее количество кандидатов на слияние больше или равно 3, интер-предиктор 124 может быть конфигурирован для получения необходимого количества кандидатов на слияние из векторов поступательного движения соседних блоков.
[122] Фиг. 10 - примерная схема, иллюстрирующая способ получения кандидатов на слияние для аффинного предсказания движения из векторов поступательного движения соседних блоков. Интер-предиктор 124 конфигурирован для получения векторов движения CPMV1, CPMV2, CPMV3 контрольной точки из соседней группы блоков {В2, В3, А2}, соседней группы блоков {В1, В0} и соседней группы блоков {А1, А0}, соответственно. Например, приоритеты в каждой группе соседних блоков могут быть назначены в порядке В2, В3, А2, порядке В1 и В0 и порядке А1 и А0. Кроме того, другой вектор движения CPMV4 контрольной точки получается из совместно расположенного блока Т в опорном изображении. Интер-предиктор 124 выполнен с возможностью генерировать столько кандидатов на слияние, сколько необходимо, посредством комбинаций двух или трех векторов движения контрольных точек среди четырех векторов движения контрольных точек. Приоритеты комбинаций назначаются, как показано ниже. Элементы в каждой группе перечислены в порядке векторов движения контрольных точек верхнего левого угла, верхнего правого угла и нижнего левого угла.
{CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4}, {CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, {CPMV1, CPMV3}
[123] Интер-предиктор 124 конфигурирован выбирать кандидата на слияние в списке кандидатов на слияние и выполнять аффинное предсказание движения для целевого блока. Когда выбранный кандидат состоит из двух векторов движения контрольных точек, аффинное предсказание движения выполняется с использованием модели с четырьмя параметрами. С другой стороны, когда выбранный кандидат состоит из трех векторов движения контрольных точек, аффинное предсказание движения выполняется с использованием модели с шестью параметрами. Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования индексной информации, указывающей на кандидата на слияние, выбранного из кандидатов на слияние в списке кандидатов на слияние, и сигнализирования его устройству декодирования видео.
[124] Энтропийный декодер 510 устройства декодирования видео конфигурирован для декодирования индексной информации, сигнализированный от устройства кодирования видео. Интер-предиктор 544 устройства декодирования видео составляет список кандидатов на слияние таким же образом, что и устройство кодирования видео, и выполняет аффинное предсказание движения с использованием векторов движения контрольных точек, соответствующих кандидату на слияние, указанному индексной информацией.
[125] В качестве другого примера, в режиме AMVP интер-предиктор 124 устройства кодирования видео конфигурирован определять тип аффинной модели и векторов движения контрольных точек для целевого блока. Затем интер-предиктор 124 конфигурирован вычислять разности векторов движения, которые являются разностями между фактическими векторами движения контрольных точек целевого блока и предсказанными векторами движения соответствующих контрольных точек, и передачи разностей векторов движения, которые соответственно соответствуют контрольным точкам.
[126] Соответственно, интер-предиктор 124 устройства кодирования видео конфигурирует список из заранее определенного количества аффинных AMVP. Когда целевой блок относится к типу с 4 параметрами, каждый из кандидатов, включенных в список, состоит из пары векторов движения двух контрольных точек. С другой стороны, когда целевой блок относится к типу с 6 параметрами, каждый кандидат, включенный в список, составлен из пары векторов движения трех контрольных точек. Список аффинных AMVP может быть получен с использованием векторов движения контрольных точек или векторов поступательного движения соседних блоков способом, аналогичным способу создания списка кандидатов на слияние, описанному выше.
[127] Однако для получения кандидатов для включения в список аффинных AMVP может существовать ограничение рассмотрения только соседних блоков, которые опираются на то же опорное изображение, что и целевой блок, среди соседних блоков на фиг. 4.
[128] Кроме того, в режиме AMVP следует учитывать тип аффинной модели целевого блока. Когда тип аффинной модели целевого блока представляет собой тип с 4 параметрами, устройство кодирования видео конфигурируется для получения двух векторов движения контрольных точек (вектора движения контрольной точки верхнего левого угла и вектора движения контрольной точки правого верхнего угла целевого блока) с использованием аффинной модели соседнего блока. Когда тип аффинной модели целевого блока представляет собой тип с 6 параметрами, устройство получает три вектора движения контрольной точки (верхний левый угол, верхний правый угол и нижний левый вектор движения контрольной точки целевого блока) с использованием аффинной модели соседнего блока.
[129] Когда соседний блок относится к типу с 4 параметрами, два или три вектора движения контрольной точки предсказываются в соответствии с типом аффинной модели целевого блока с использованием двух векторов движения контрольных точек соседнего блока. Например, может использоваться аффинная модель соседнего блока, выраженная Уравнением 10. В Уравнении 10 (mv0x, mv0y) и (mv1x, mv1y) заменяются векторами движения контрольной точки в верхнем левом и правом верхнем углу соседнего блока соответственно. В частности, в W подставляется горизонтальная длина соседнего блока. Предсказываемый вектор движения для каждой контрольной точки целевого блока может быть получен путем ввода в (х, у) разницы между положением соответствующей контрольной точки целевого блока и положением верхнего левого угла соседнего блока.
[130] Когда соседний блок относится к типу с 6 параметрами, два или три вектора движения контрольной точки предсказываются в соответствии с типом аффинной модели целевого блока с использованием трех векторов движения контрольных точек соседнего блока. Например, может использоваться аффинная модель соседнего блока, выраженная Уравнением 11. В уравнении 11 (mv0x, mv0y), (mv1x, mv1y) и (mv2x, mv2y) заменяются векторами движения контрольной точки левого верхнего угла, правого верхнего угла и левого нижнего угла соседнего блока, соответственно. В частности, W и Н заменены на длину по горизонтали и длину по вертикали соседнего блока, соответственно. Предсказываемый вектор движения для каждой контрольной точки целевого блока может быть получен путем ввода в (х, у) разницы между положением соответствующей контрольной точки целевого блока и положением верхнего левого угла соседнего блока.
[131] Интер-предиктор 124 устройства кодирования видео конфигурирован выбирать одного кандидата в списке аффинных AMVP и генерировать разность векторов движения между вектором движения каждой фактической контрольной точки и предсказанным вектором движения соответствующей контрольной точки выбранного кандидата. Энтропийный кодер 155 устройства кодирования видео конфигурирован для кодирования информации о типе, указывающей тип аффинной модели целевого блока, индексной информации, указывающей на кандидата, выбранного среди кандидатов в списке аффинных AMVP, и разности векторов движения, соответствующей каждой контрольной точке, и для сигнализирования этого в устройство декодирования видео.
[132] Интер-предиктор 544 устройства декодирования видео конфигурирован для определения типа аффинной модели с использованием информации, сигнализируемой из устройства кодирования видео, и генерирования разности векторов движения для каждой контрольной точки. Затем интер-предиктор конфигурирован генерировать аффинный список AMVP таким же образом, что и устройство кодирования видео, и выбирать кандидата, указанного индексной информацией, переданной в аффинном списке AMVP. Интер-предиктор 544 устройства декодирования видео конфигурирован для вычисления вектора движения каждой контрольной точки путем добавления предсказанного вектора движения каждой контрольной точки выбранного кандидата и соответствующей разности векторов движения.
[133] III. Поблочная корректировка отсчетов аффинного предсказания движения
[134] Выше было описано посубблочное аффинное предсказание движения для целевого блока. Другой аспект настоящего раскрытия относится к корректировке, на поотсчетной основе, значений отсчетов предсказанных отсчетов, сгенерированных посубблочным аффинным предсказанием движения. Движение по положению каждого отсчета дополнительно компенсируется в каждом субблоке, что составляет основу аффинного предсказания движения.
[135] Когда значения отсчетов в любом субблоке, сгенерированном в результате посубблочного аффинного предсказания движения для целевого блока, равны I(х, у), устройство кодирования видео вычисляет горизонтальный и вертикальный градиенты gx (i, j) и gy (i, j) в каждом положении отсчетов. Уравнение 12 можно использовать для расчета градиентов.
Уравнение 12
[136] Смещение отсчета ΔI(i, j) для корректировки отсчета предсказания вычисляется по следующему уравнению.
Уравнение 13
[137] где Δmv(i,j) обозначает смещение движения, то есть разницу между аффинным вектором движения в отсчете (i, j) и аффинным вектором движения в центральном положении субблока, и может быть вычислено посредством Уравнения 10 или 11 в зависимости от типа аффинной модели целевого блока. Другими словами, Δmv(i, j) может быть вычислено из уравнения 10 или 11 путем вычитания вектора движения, заданного, когда положение центра субблока подставляется в (х, у) из вектора движения, заданного, когда (i, j) подставляется в (х, у). Кроме того, Δmv(i, j) можно рассчитать из уравнения, которое получается путем замены (х, у) в уравнениях 11 и 12 смещением по горизонтали и вертикали от положения центра субблока до положения отсчета (i,j) и удаления последнего члена «+mv0x» и «+mv0y». Центральное положение может быть фактической центральной точкой субблока или может быть нижним правым положением отсчета центральной точки.
[138] Вектор движения каждой контрольной точки целевого блока, используемый для расчета Δmv(i, j), и разница между положением отсчета (i, j) и положением центра субблока одинаковы для всех субблоков. Соответственно, значения Δmv(i, j) могут быть рассчитаны только для одного субблока, например, первого субблока, и могут повторно использоваться для других субблоков.
[139] Методика согласно настоящему раскрытию основана на предположении, что объект движется с постоянной скоростью и изменение значений отсчета является плавным. Следовательно, вариации отсчета в горизонтальном направлении и величина изменения отсчета в вертикальном направлении получаются путем умножения компонента x(Δmvx) и компонента у (Δmvy) Δmv(i, j) на значения горизонтального и вертикального градиента отсчета, соответственно. Смещение ΔI(i,j) отсчета вычисляется путем сложения двух вариантов отсчета. Окончательное значение предсказываемого отсчета рассчитывается следующим образом.
Уравнение 14
[140] Когда применяется поотсчетная корректировка для отсчетов аффинного предсказания движения, интер-предиктор 124 устройства кодирования видео и интер-предиктор 544 устройства декодирования видео выполняют вышеописанный процесс для корректирования значений отсчетов предсказанных отсчетов, сгенерированных с помощью аффинного предсказания движения. Значения градиента получаются из предсказанных отсчетов, сгенерированных посредством аффинного предсказания движения, a Δmv(i, j) получается из векторов движения контрольных точек целевого блока. Следовательно, не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса настоящей методики в устройство декодирования видео.
[141] IV. Компенсация локальной освещенности для отсчетов аффинного предсказания движения
[142] Методика компенсации локальной освещенности представляет собой метод кодирования, компенсирующий изменение освещенности между целевым блоком и предсказываемым блоком с помощью линейной модели. Интер-предиктор 124 устройства кодирования видео конфигурирован для определения опорного блока в опорном изображении с использованием вектора движения (вектора поступательного движения) целевого блока и получения параметров линейной модели для компенсации освещенности с использованием предварительно восстановленных отсчетов вокруг (на верхней и левой сторонах) опорного блока и предварительно восстановленных отсчетов вокруг (на верхней и левой сторонах) целевого блока.
[143] Когда предварительно восстановленные отсчеты вокруг опорного блока обозначаются как х, а соответствующие предварительно восстановленные отсчета вокруг целевого блока обозначаются как у, параметры «А» и «b» выводятся, как в уравнении 15, так что сумма квадратов разностей между у и (Ах+b) минимизируется.
Уравнение 15
[144] Окончательные предсказанные отсчеты генерируются путем применения веса А и смещения b к отсчетам в предсказываемом блоке (опорном блоке), сгенерированном вектором движения целевого блока, как показано в уравнении 16. В уравнении 16 pred[x][y] - это предсказанный отсчет в положении (х, у), сгенерированная вектором движения целевого блока, a predLIC[x][y] - это конечный предсказанный отсчет после компенсации освещенности.
Уравнение 16
[145] Другой аспект настоящего раскрытия относится к методике комбинирования метода компенсации освещения с аффинным предсказанием движения.
[146] Как описано выше, когда посубблочное аффинное предсказание движения применяется к целевому блоку, вектор движения генерируется для каждого из субблоков. Параметры компенсации освещенности могут быть получены с использованием соответствующего вектора движения для каждого субблока, а затем компенсация освещенности может выполняться в модуле субблоков с использованием соответствующего вектора движения. Это, однако, не только увеличивает сложность вычислений, но и вызывает проблему с задержкой. Поскольку восстановленные отсчеты в каждом субблоке необходимы для компенсации освещенности следующего субблока, процесс компенсации освещенности для субблока должен быть приостановлен до тех пор, пока не будет восстановлен соседний субблок (то есть до тех пор, пока не будут восстановлены и блок предсказания, и остаточный блок для субблока). Настоящее раскрытие направлено на решение таких проблем.
[147] Фиг. 11А-11С показывают различные примеры определения положения опорного блока для получения параметра компенсации освещения согласно варианту осуществления настоящего раскрытия. В этом варианте осуществления выводится один набор параметров компенсации освещенности (А, b) для целевого блока, и один и тот же параметр применяется ко всем субблокам в целевом блоке. То есть весь целевой блок модифицируется одним набором параметров компенсации освещенности.
[148] Как показано на фиг. 11А интер-предиктор 124 устройства кодирования видео может быть конфигурирован для определения положения опорного блока в опорном изображении с использованием аффинного вектора движения субблока, расположенного в верхнем левом углу целевого блока или вектор движения контрольной точки в верхнем левом углу целевого блока. Предварительно восстановленные отсчета вокруг определенного опорного блока используются для получения параметров. В качестве альтернативы, как показано на фиг. 11В, положение опорного блока может быть определено с использованием аффинного вектора движения центрального субблока в целевом блоке. Как только положение опорного блока определено, параметр компенсации освещенности выводится с использованием предварительно восстановленных отсчетов, примыкающих к верхней и левой сторонам опорного блока, и соответствующих предварительно восстановленных отсчетов, примыкающих к верхней и левой сторонам целевого блока.
[149] В качестве другого примера можно использовать множество субблоков в целевом блоке. Как показано на фиг. 11С интер-предиктор 124 определяет опорный субблок, соответствующий каждому граничному субблоку, используя аффинные векторы движения субблоков (граничных субблоков), расположенных на границе в целевом блоке. Отсчеты для получения параметра компенсации освещенности извлекаются из предварительно восстановленных отсчетов, смежных с граничными субблоками в целевом блоке и соответствующих опорных субблоках, соответственно. Для субблоков, расположенных на верхней границе в целевом блоке, и соответствующих опорных субблоков отсчеты извлекаются из предварительно восстановленных отсчетов, примыкающих к верхней стороне. Для субблоков, расположенных на левой границе в целевом блоке, и соответствующих опорных субблоков отсчеты извлекаются из предварительно восстановленных отсчетов, примыкающих к левой стороне.
[150] В настоящем варианте осуществления, поскольку параметр компенсации освещенности выводится с использованием предварительно построенных отсчетов вокруг целевого блока и предварительно построенных отсчетов вокруг опорного блока, вышеупомянутая проблема задержки может быть решена. Однако применение только одного параметра компенсации освещенности к целевому блоку, к которому применяется посубблочное аффинное предсказание движения, потенциально может привести к более низкой эффективности кодирования.Другой вариант осуществления, описанный ниже, приводит к увеличению эффективности кодирования в обмен на небольшое увеличение сложности.
[151] Согласно другому варианту осуществления настоящего раскрытия, интер-предиктор 124 устройства кодирования видео разделяет целевой блок на множество областей. Каждая область включает в себя по крайней мере один субблок, который является единицей, в которой выполняется аффинное предсказание движения. Интер-предиктор 124 конфигурирован для вычисления параметров компенсации освещенности для множества областей и выполняет компенсацию освещенности в единицах областей или субблоков в целевом блоке на основе вычисленных параметров компенсации освещенности.
1. Разделение целевого блока
[152] Интер-предиктор 124 устройства кодирования видео конфигурирован для разделения целевого блока на множество областей, каждая из которых включает в себя один или более субблоков, которые являются единицами, в которых выполняется аффинное предсказание движения.
[153] Целевой блок может быть разделен с использованием векторов движения контрольных точек целевого блока. Фиг. 12А-12В являются примерами разделения целевого блока с использованием векторов движения контрольных точек. Ссылаясь на фиг. 12А, когда угол между вектором MV0 движения контрольной точки верхнего левого угла и вектором MV1 движения контрольной точки верхнего правого угла целевого блока представляет собой тупой угол (более 90 градусов), целевой блок разделяется по вертикали. Например, целевой блок может быть разделен на две области. В противном случае целевой блок не разделяется по вертикали. Ссылаясь на фиг. 12В, когда угол между вектором MV0 движения контрольной точки верхнего левого угла и вектором MV2 движения контрольной точки нижнего левого угла представляет собой тупой угол, целевой блок разделяется по горизонтали, например, на две половины. В противном случае целевой блок не разделяется по горизонтали. Когда тип аффинной модели целевого блока соответствует 4 параметрам, вектор MV2 движения контрольной точки нижнего левого угла может быть получен путем ввода координат отсчета нижнего левого угла целевого блока в (х, у) в Уравнении 1.
[154] На основе угла, образованного векторами движения контрольной точки, интер-предиктор 124 либо пропускает разделение целевого блока, либо разделяет целевой блок на две области (левую область и правую область в случае вертикального разделения и верхнюю область и нижнюю область в случае горизонтального разделения) или на 4 области. Когда скалярное произведение двух векторов меньше 0, угол является тупым. Соответственно интер-предиктор 124 может определить, является ли угол между векторами движения контрольной точки тупым углом, на основе скалярного произведения двух векторов.
[155] Хотя в приведенном выше примере показано, что целевой блок разделяется, когда угол между векторами движения двух контрольных точек представляет собой тупой угол, блок может быть разделен, когда угол представляет собой острый угол (угол меньше 90 градусов). Кроме того, размер целевого блока может учитываться при разделении целевого блока. Например, когда длина по горизонтали превышает установленное пороговое значение, целевой блок разделяется по вертикали. Когда длина по вертикали превышает предварительно установленноепороговое значение, целевой блок разделяется по горизонтали. Чтобы разделить целевой блок, можно использовать как размер целевого блока, так и угол между векторами движения контрольной точки.
[156] Например, устройство кодирования видео может быть конфигурировано для определения необходимости разделения блока на основе угла между векторами движения контрольных точек только тогда, когда горизонтальная и/или вертикальная длина целевого блока больше предварительно установленного порогового значения. В качестве другого примера, когда длина по горизонтали превышает предварительно установленное пороговое значение, устройство кодирования видео может быть конфигурировано определять необходимость вертикального разделения блока на основе угла между векторами движения контрольной точки левого верхнего угла и правого верхнего угла целевого блока. Кроме того, когда длина по вертикали превышает заданное пороговое значение, устройство может быть конфигурировано определять необходимость разделения блока по вертикали на основе угла между векторами движения контрольной точки левого верхнего угла и левого нижнего угла целевого блока.
[157] Хотя было описано, что целевой блок разделяется на множество областей на основе векторов движения контрольных точек целевого блока, варианты осуществления не ограничиваются этим. Например, аффинные векторы движения верхнего левого субблока, верхнего правого субблока и нижнего левого субблока в целевом блоке могут использоваться вместо вектора MV0 движения контрольной точки левого верхнего угла, вектора MV1 движения контрольной точки верхнего правого угла и вектора MV2 движения контрольной точки нижнего левого угла.
[158] В то время как фиг. 12А-12В показано, что целевой блок разделяется пополам в горизонтальном или вертикальном направлении, варианты осуществления не ограничиваются этим. Например, целевой блок может разделяться на множество блоков в горизонтальном направлении и/или множество блоков в вертикальном направлении. Альтернативно, целевой блок может разделяться на субблоки, в которых было выполнено аффинное предсказание движения. В этом случае один субблок составляет одну область.
[159] Каждая область разделения из целевого блока должна быть больше или равна размеру субблока, в котором было выполнено аффинное предсказание движения. Другими словами, каждая область должна состоять из одного или нескольких субблоков. Например, если размер субблока равен 4×4, размер области равен (где m и n - целые числа, большие или равные 2).
[160] Когда целевой блок не разделяется, параметры компенсации освещенности могут быть получены согласно первому варианту осуществления, описанному выше. Далее, в случае, когда целевой блок разделяется, будет описан способ получения параметров компенсации освещенности.
2. Получение параметров компенсации освещенности и компенсация освещенности
[161] Устройство кодирования видео конфигурировано для вычисления параметров компенсации освещенности, соответственно соответствующих множеству областей. Компенсация освещенности выполняется в единицах областей или субблоков в целевом блоке с использованием множества параметров компенсации освещенности. Устройство кодирования видео конфигурировано для определения для каждой из множества областей предварительно построенных отсчетов (опорных отсчетов) в текущем изображении и опорном изображении, которые должны использоваться для получения параметров компенсации. Опорные отсчеты в текущем изображении выбираются из предварительно построенных отсчетов, смежных с целевым блоком. Для области, отстоящей от левой границы целевого блока, в качестве опорных выбираются предварительно построенные отсчеты, смежные с левой стороной целевого блока. Для области, отстоящей от верхней границы целевого блока, в качестве опорных выбирают предварительно построенные отсчеты, смежные с верхней стороной целевого блока.
[162] Опорные отсчеты в опорном изображении могут быть выбраны с использованием векторов движения контрольных точек целевого блока или одного или более векторов движения, полученных из векторов движения контрольных точек. Далее будет подробно описан способ получения параметров компенсации освещенности и осуществления компенсации освещенности в соответствии с различными типами разделения целевого блока.
[163] 2-1. Когда целевой блок разделяется на 4 области
[164] Во-первых, в качестве примера будет описан случай, когда целевой блок, имеющий длину по горизонтали и длину по вертикали, равные W и Н, разделяется в горизонтальном и вертикальном направлениях и, таким образом, состоит из четырех областей. Устройство кодирования видео конфигурировано для определения предварительно построенных отсчетов (опорных отсчетов) в текущем изображении и опорном изображении, которые должны использоваться для получения параметров компенсации для каждой области.
[165] Фиг. 13 является примерной схемой, иллюстрирующей способ определения опорных отсчетов, которые должны использоваться для получения параметров компенсации. Для верхней левой области в целевом блоке устройство кодирования видео выбирает от Т0 до Tw/2-1 рядом с верхней стороной верхней левой области и от L0 до LH/2-1 рядом с левой стороной верхней левой области в текущем изображении в качестве опорных отсчетов, которые будут использоваться для получения параметров компенсации. Затем опорная область, соответствующая верхней левой области опорного изображения, определяется с использованием репрезентативного вектора движения верхней левой области, а затем в качестве опорных отсчетов выбираются предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области. В частности, репрезентативный вектор движения верхней левой области может быть вектором MV0 движения контрольной точки верхнего левого угла целевого блока.
[166] Для верхней правой области устройство кодирования видео конфигурировано выбирать от Tw/2 до Tw-1 рядом с верхней стороной верхней правой области в качестве по меньшей мере некоторых опорных отсчетов, которые должны использоваться для получения параметров компенсации. В частности, L0-LH/2-1 смежные с левой стороной целевого блока, могут быть дополнительно выбраны в качестве опорных отсчетов. Поскольку нет предварительно построенных отсчетов, смежных с левой стороной верхней правой области, от L0 до LH/2-1 на левой стороне целевого блока можно заполнить в качестве опорных отсчетов с левой стороны верхней правой области.
[167] Затем устройство кодирования видео конфигурировано определять опорную область, соответствующую верхней правой области в опорном изображении, с использованием репрезентативного вектора движения верхней правой области, и выбирает предварительно построенные отсчеты, смежные с верхней стороной опорной области, в качестве опорных отсчетов, используемых для получения параметров компенсации. Когда дополнительно выбираются от L0 до LH/2-1, смежные с левой стороной целевого блока, устройство кодирования видео может дополнительно выбирать предварительно построенные отсчеты, смежные с левой стороной опорной области, в качестве опорных отсчетов. В частности, репрезентативный вектор движения верхней правой области может быть вектором MV1 движения контрольной точки правого верхнего угла целевого блока.
[168] Для нижней левой области устройство кодирования видео выбирает от LH/2 до LH-1 рядом с левой стороной нижней левой области в качестве по меньшей мере некоторых опорных отсчетов. Дополнительно могут быть выбраны от Т0 до Tw/2-1, смежные с верхней стороной целевого блока. Затем устройство кодирования видео конфигурировано определять опорную область, соответствующую нижней левой области в опорном изображении, с использованием репрезентативного вектора движения нижней левой области, и выбирать предварительно построенные отсчеты, смежные с левой стороной опорной области в качестве опорных отсчетов. Когда дополнительно выбирается от Т0 до Tw/2-1, смежные с верхней стороной целевого блока, устройство кодирования видео может быть конфигурировано дополнительно выбирать предварительно построенные отсчеты, смежные с верхней стороной опорной области. Здесь репрезентативный вектор движения верхней левой области может быть вектором MV1 движения контрольной точки нижнего левого угла целевого блока.
[169] Как только опорные отсчеты для каждой из верхней левой, верхней правой и нижней левой областей в целевом блоке определены, устройство кодирования видео конфигурировано получать параметр компенсации освещенности для каждой области путем соответствующего ввода опорных отсчетов, выбранных из опорного изображения, и опорные отсчеты, выбранные из текущего изображения, в х и у Уравнения 15. Параметр компенсации освещенности для нижней правой области может быть получен из параметров компенсации освещенности верхней левой, верхней правой и нижней левой областей. Например, параметр компенсации освещенности нижней правой области может быть установлен равным среднему значению параметров компенсации освещенности верхней правой и нижней левой областей.
[170] Альтернативно, устройство кодирования видео может быть конфигурировано определять репрезентативный вектор движения для нижней правой области и получать параметр компенсации освещенности для нижней правой области с использованием репрезентативного вектора движения. Репрезентативный вектор движения для правой нижней области может быть вектором движения контрольной точки в правом нижнем углу целевого блока. Устройство кодирования видео может быть конфигурировано получать вектор движения контрольной точки нижнего правого угла целевого блока путем замены координаты (W-1, Н-1) отсчета нижнего правого угла (отсчет нижнего правого угла нижней правой области) в целевом блоке для (х, у) в Уравнении 10 или 11.
[171] Нет заранее построенных отсчетов, смежных с правой нижней частью целевого блока. Следовательно, от Tw/2 до Tw-1 и от LH/2 до LH-1, смежные к верхней и левой сторонам целевого блока, используются в качестве опорных отсчетов для получения параметров компенсации. Затем определяется опорная область в опорном изображении на основе вектора движения контрольной точки нижнего правого угла целевого блока, и в качестве опорных отсчетов выбираются предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области. Устройство кодирования видео получает параметр компенсации освещенности для нижней правой области, используя Уравнение 15 с выбранными опорными отсчетами.
[172] В вышеприведенном примере для определения опорных отсчетов в опорном изображении для получения параметра компенсации используется репрезентативный вектор движения каждой области. В качестве примера используются векторы движения контрольной точки (т.е. параметры для аффинного предсказания движения). Однако варианты осуществления не ограничиваются этим. Репрезентативный вектор движения каждой области может быть вектором движения, полученным из векторов движения контрольных точек целевого блока.
[173] В примерном варианте осуществления репрезентативный вектор движения каждой области может быть вектором движения предопределенном положении, полученным из векторов движения контрольных точек целевого блока. Например, аффинные векторы движения 4×4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков в целевом блоке, предварительно сгенерированном при аффинном предсказании движения, могут использоваться как репрезентативные векторы движения верхней левой, верхней правой, нижней левой и нижней правой области соответственно. В качестве другого примера, аффинный вектор движения в центральной точке каждой из верхней левой, верхней правой, нижней левой и нижней правой области может использоваться в качестве репрезентативного вектора движения каждой области. Аффинный вектор движения в центральной точке каждой области может быть сгенерирован путем замены (х, у) положением центра каждой области в Уравнении 10 или 11.
[174] В другом примерном варианте осуществления среднее значение аффинных векторов движения субблоков в каждой области может использоваться в качестве репрезентативного вектора движения соответствующей области. В качестве другого способа определения опорных отсчетов, которые должны использоваться в опорном изображении для получения параметров компенсации, вместо репрезентативного вектора движения каждой области могут использоваться аффинные векторы движения субблоков в каждой области. Другими словами, опорные блоки 4×4 в положениях, указанных аффинными векторами движения субблоков 4×4 в каждой области, могут быть определены в опорном изображении, а предварительно построенные пиксели, смежные с верхней и левой сторонами опорных блоков 4×4, могут быть выбраны в качестве опорных пикселей.
[175] Фиг. 14 является примерной схемой для описания способа выполнения компенсации освещенности с использованием параметров компенсации освещенности для четырех областей целевого блока. Каждая область включает в себя один или несколько субблоков, которые представляют собой единицы, в которых выполняется аффинное преобразование. В примере на фиг. 14, верхняя левая область TL, верхняя правая область TR, нижняя левая область BL и нижняя правая область BR целевого блока включают в себя по четыре субблока (субблок 4×4). Устройство кодирования видео конфигурировано для выполнения компенсации освещенности для предсказываемых отсчетов в соответствующей области (предсказываемые отсчеты, сгенерированные посредством аффинного предсказания движения) с использованием параметра компенсации освещенности каждой области. Каждый субблок может компенсироваться с использованием параметра компенсации освещенности области, которой принадлежит субблок. Например, четыре субблока, включенные в верхнюю левую область, компенсируются с использованием параметров компенсации освещенности (A0, b0) верхней левой области.
[176] В некоторых других вариантах осуществления устройство кодирования видео может быть конфигурировано интерполировать параметры компенсации освещенности, которые соответственно соответствуют субблокам в каждой области, с использованием параметров компенсации освещенности четырех областей TL, TR, BL и BR, а затем выполнять компенсацию освещенности на каждом субблоке с использованием интерполированного параметра компенсации освещенности. Как описано выше, параметр компенсации освещенности каждой области может быть получен из репрезентативного вектора движения области. Однако репрезентативный вектор движения может не отражать движение всех субблоков в соответствующей области.
[177] Например, параметры компенсации освещенности соответствующих областей могут быть получены из векторов движения контрольных точек верхнего левого, верхнего правого, нижнего левого и нижнего правого угла целевого блока или аффинных векторов движения из 4×4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков целевого блока. В частности, движение верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков 4×4 может иметь большее влияние на получение параметров компенсации освещенности. Соответственно, устройство кодирования видео может быть конфигурировано для получения параметров компенсации освещенности соответствующих субблоков посредством интерполяции с использованием параметров компенсации освещенности соответствующих областей.
[178] Фиг. 15 представляет собой примерную схему, иллюстрирующей способ интерполяции параметров компенсации освещенности субблоков с использованием параметров компенсации освещенности соответствующих областей. (А0, b0) - (А3, b3) - параметры компенсации освещенности соответствующих областей, полученные из векторов движения контрольных точек левого верхнего угла, правого верхнего угла, левого нижнего угла и правого нижнего угла целевого блока соответственно, или из аффинных векторов движения 4×4 верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков целевого блока. Кроме того, предполагается, что (А0, b0) является параметром компенсации освещенности верхнего левого субблока 4×4 в верхней левой области целевого блока. Аналогично, предполагается, что от (A1, b1) до (A3, b3) являются параметрами компенсации освещенности верхнего правого субблока 4×4 в верхней правой области, параметром компенсации освещенности нижнего левого субблока 4×4 в нижней левой области и параметром компенсации освещенности нижнего правого субблока 4×4 в нижней правой области. Другими словами, предполагается, что (А0, b0) - (А3, b3) являются параметрами компенсации четырех угловых субблоков целевого блока.
[179] Устройство кодирования видео интерполирует параметры компенсации других субблоков, используя параметры компенсации четырех угловых субблоков. Может быть выполнена билинейная интерполяция с использованием четырех угловых субблоков или линейная интерполяция. Например, субблоки в первой строке целевого блока могут быть интерполированы с использованием (А0, b0) и (А2, b2). Субблоки в первом столбце целевого блока могут быть интерполированы с использованием (А0, b0) и (А2, b2). Таким образом получают параметры компенсации всех субблоков.
[180] В частности, коэффициент фильтрации или весовой коэффициент, используемый для интерполяции, может быть установлен в соответствии с разницей между положениями угловых субблоков и положениями целевого субблока (или расстоянием между угловыми субблоками и целевым субблоком). Меньшей разнице в положении присваивается больший вес.
[181] В качестве альтернативы, коэффициент фильтрации или вес, используемые для интерполяции, могут быть установлены в соответствии с разницей между векторами движения, используемыми для получения параметров компенсации угловых субблоков (векторы движения контрольной точки верхнего левого, верхнего правого, нижнего левого и нижнего правого углов, или аффинные векторы движения верхнего левого, верхнего правого, нижнего левого и нижнего правого субблоков 4×4 целевого блока) и аффинный вектор движения целевого субблока. Меньшей разнице векторов движения присваивается больший вес.
[182] 2.2 Когда целевой блок разделяется на две области
[183] Даже когда целевой блок разделяется на две области, параметр компенсации освещенности каждой области может быть получен таким же образом, как когда целевой блок разделяется на четыре области. Например, ссылаясь на фиг. 16, устройство кодирования видео выбирает в качестве опорных отсчетов в текущем изображении для получения параметра компенсации верхней области предварительно построенные отсчеты от Т0 до Tw-1, смежные с верхней стороной верхней области, и предварительно построенные отсчеты от L0 до LH/2-1, смежные с левой стороной верхней области. Затем устройство кодирования видео конфигурировано определять опорную область в опорном изображении с использованием репрезентативного вектора движения верхней области и выбирать предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области, в качестве опорных отсчетов.
[184] Репрезентативный вектор движения верхней области может быть вектором движения контрольной точки левого верхнего угла целевого блока. В качестве альтернативы, это может быть вектор движения, полученный из векторов движения контрольных точек целевого блока. Например, может использоваться аффинный вектор движения верхнего левого субблока 4×4 в верхней области или может использоваться аффинный вектор движения, соответствующий центральной точке верхней области. В другом примере среднее значение аффинных векторов движения субблоков в каждой области может использоваться в качестве репрезентативного вектора движения соответствующей области.
[185] Устройство кодирования видео конфигурировано для выбора в качестве опорных отсчетов в текущем изображении для получения параметра компенсации нижней области предварительно построенных отсчетов Т0 - Tw-1, смежных с верхней стороной целевого блока, и предварительно построенных отсчетов LH/2 - LH-1, смежных с левой стороной нижней области. Затем устройство кодирования видео конфигурировано определять опорную область в опорном изображении с использованием репрезентативного вектора движения нижней области и выбирать предварительно построенные отсчеты, смежные с верхней и левой сторонами опорной области, в качестве опорных отсчетов.
[186] Репрезентативный вектор движения нижней области может быть вектором движения контрольной точки левого нижнего угла целевого блока. В качестве альтернативы, это может быть вектор движения, полученный из векторов движения контрольных точек целевого блока. Например, может использоваться аффинный вектор движения нижнего левого субблока 4×4 в нижней области или может использоваться аффинный вектор движения, соответствующий центральной точке нижней области. В качестве другого примера, среднее значение аффинных векторов движения субблоков в нижней области может использоваться в качестве репрезентативного вектора движения нижней области.
[187] В вышеприведенном примере в качестве способа определения опорных отсчетов в опорном изображении, используемом для получения параметра компенсации, используется репрезентативный вектор движения каждой области. Однако аффинные векторы движения субблоков в каждой области могут использоваться вместо репрезентативного вектора движения каждой области. То есть для каждой области опорные блоки 4×4 в положениях, указанных аффинными векторами движения субблоков 4×4, могут быть определены в опорном изображении, а предварительно построенные пиксели, смежные с верхней и левой сторонами опорных блоков 4×4, могут быть выбраны в качестве опорных пикселей.
[188] Для каждой области устройство кодирования видео конфигурировано вводить опорные отсчеты, выбранные в опорном изображении, и опорные отсчеты, выбранные в текущем изображении, в х и у в Уравнении 15, соответственно, для получения параметров компенсации для соответствующих областей. Кроме того, устройство кодирования видео выполняет компенсацию освещенности для отсчетов предсказания в соответствующей области (отсчеты предсказания, сгенерированные посредством аффинного предсказания движения), используя параметр компенсации освещенности каждой области. Каждый субблок может компенсироваться с использованием параметра компенсации освещенности области, которой принадлежит субблок.
[189] Альтернативно, устройство кодирования видео может быть конфигурировано для интерполяции параметров компенсации освещенности, которые соответствуют субблокам, с использованием параметров компенсации освещенности соответствующих областей, и для выполнения компенсации освещенности для каждого субблока с использованием интерполированных параметров, как в случае, когда целевой блок разделен на четыре области.
[190] Интерполяция может применяться, когда репрезентативный вектор движения каждой области, используемый для получения параметра компенсации, связан с конкретным положениемв каждой области. Например, векторы движения контрольной точки верхнего левого и нижнего левого углов целевого блока или аффинные векторы движения верхнего левого и нижнего левого субблоков 4×4 целевого блока могут использоваться в качестве репрезентативных векторов движения. В частности, параметры компенсации двух областей рассматриваются как параметры компенсации освещенности верхних левого и нижнего левого угловых субблоков TL и BL в целевом блоке, как показано на фиг. 17.
[191] Устройство кодирования видео может быть конфигурировано для интерполяции параметра компенсации целевого субблока путем применения весового коэффициента к параметрам компенсации (А0, b0) верхней области и параметрам компенсации (А2, b2) нижней области. В частности, вес может быть назначен согласно расстоянию между верхним левым и нижним левым угловыми субблоками в целевом блоке и целевом субблоке. В качестве альтернативы он может быть установлен в соответствии с разницей между векторами движения, используемыми для получения параметров компенсации двух областей (векторы движения контрольной точки левого верхнего и левого нижнего углов целевого блока или аффинные векторы движения верхнего левого и нижнего левого субблока 4×4 целевого блока) и аффинный вектор движения целевого субблока. По мере уменьшения разницы между векторами движения вес увеличивается.
[192] Даже когда целевой блок разделяется по вертикали на две области, может использоваться тот же метод, что и при горизонтальном разделении целевого блока на две области. В частности, репрезентативные векторы движения двух областей (левая область и правая область) могут быть, например, векторами движения контрольной точки левого верхнего угла и верхнего правого угла целевого блока или аффинными векторами движения векторы движения верхнего левого и верхнего правого субблоков 4×4 целевого блока. Альтернативно, аффинный вектор движения центральной точки каждой области или среднее значение аффинных векторов движения субблоков каждой области может использоваться в качестве репрезентативного вектора движения каждой области. Другие операции являются такими же, как и в случае горизонтального разделения, описанного выше, или могут быть явно выведены из него, поэтому их дальнейшее подробное описание опущено.
[193] 2.3 Когда целевой блок разбивается более чем на 4 субблока
[194] Как описано выше, целевой блок может быть разделен на 2m и 2n блоков (где тип являются целыми числами, большими или равными 2) в горизонтальном и вертикальном направлениях. Например, целевой блок может быть разделен на субблоки, которые являются единицами, в которых выполняется аффинное предсказание движения. Этот случай проиллюстрирован на фиг. 18. Ссылаясь на фиг. 18, устройство кодирования видео выводит параметры компенсации освещенности для верхней левой области TL, верхней правой области TR, нижней левой области BL и нижней правой области BR целевого блока, используя способ, описанный в разделе 2.1.
[195] Для остальных областей, отличных от этих четырех областей, параметры компенсации освещенности остальных областей могут быть получены путем применения интерполяции, описанной в разделе 2.1. Альтернативно, для остальных областей параметры компенсации освещенности могут быть получены таким же образом, как и в случае верхней левой области TL, верхней правой области TR, нижней левой области BL и нижней правой области BR. Например, для области А устройство кодирования видео выбирает предварительно построенные отсчеты, расположенные на верхней стороне области А и смежные с целевым блоком, и предварительно построенные отсчеты, расположенные на левой стороне области А и смежные с целевым блоком, в качестве опорных пикселей в текущем изображении. Кроме того, опорные отсчеты в опорном изображении выбираются с использованием вектора движения контрольной точки в верхнем левом углу области А, аффинного вектора движения субблока 4×4, расположенного в верхнем левом углу области А, или аффинного вектора движения центральной точки области А. Параметр компенсации освещенности области А выводится с использованием выбранных опорных отсчетов.
[196] Описанная выше методика компенсации освещенности - это методика, использующая вектор движения, который может быть получен с помощью предварительно построенных отсчетов и аффинного предсказания движения. Соответственно, устройство декодирования видео может быть конфигурировано для выполнения компенсации освещенности таким же образом, как и устройство кодирования видео. Не требуется, чтобы устройство кодирования видео сигнализировало дополнительную информацию для процесса компенсации освещенности устройству декодирования видео.
[197] Описанная выше методика компенсации освещенности может использоваться вместе с другими инструментами кодирования для компенсации движения целевого блока в единицах субблоков в дополнение к аффинному предсказанию движения. Например, это может быть применено к двунаправленному оптическому потоку. Устройство кодирования видео и устройство декодирования видео могут быть конфигурированы для генерирования отсчетов предсказания для каждого субблока путем выполнения двунаправленного оптического потока на посубблочной основе для целевого блока и дополнительно могут быть конфигурированы для выполнения вышеупомянутой компенсации освещения на отсчетах предсказания в целевом блоке. Методика компенсации освещения, применяемая к двунаправленному оптическому потоку, такая же, как методика компенсации освещения, описанная выше, за исключением следующего.
[198] В методике компенсации освещенности, описанном выше, векторы движения контрольной точки целевого блока или аффинные векторы движения субблоков используются для разделения целевого блока и вычисления репрезентативного вектора движения каждой области, отделенной от целевого блока. Однако в случае двунаправленного оптического потока нет ни вектора движения контрольной точки, ни аффинного вектора движения. Соответственно, когда методика компенсации освещенности применяется к двунаправленному оптическому потоку, оптические потоки (vx, vy) субблоков используются вместо векторов движения контрольных точек или аффинных векторов движения субблоков.
[199] V. Сигнализирование синтаксиса
[200] Другой аспект настоящего раскрытия относится к способу сигнализирования синтаксисов высокого уровня для управления включением/выключением различных средств, описанных выше. Вышеописанное аффинное предсказание движения, корректировка на отсчетной основе отсчетов аффинного предсказания движения, адаптивное разрешение вектора движения и компенсация освещенности являются инструментами кодирования, используемыми для повышения эффективности кодирования видео. Однако для конкретного контента, такого как, например, экранный контент, вышеупомянутые различные инструменты кодирования могут не способствовать повышению производительности сжатия. Соответственно, сигнализирование на основе единицы кодирования о том, следует ли применять каждый инструмент кодирования, или решение на основе единицы кодирования о том, следует ли применять каждый инструмент кодирования, может скорее ухудшить эффективность кодирования или увеличить вычислительную сложность. Настоящее раскрытие раскрывает методику сигнализирования для эффективного управления вышеописанными инструментами кодирования.
[201] Для кодирования последовательности изображений устройство кодирования видео конфигурировано кодировать первый элемент синтаксиса уровня высокого уровня последовательности, указывающий, отключено ли множество инструментов кодирования. Первый элемент синтаксиса высокого уровня может быть закодирован в заголовке последовательности, то есть SPS. В частности, множество инструментов кодирования включает в себя аффинное предсказание движения, а также включает в себя, по меньшей мере, одно из следующего: поотсчетную корректировку для отсчетов аффинного предсказания движения, адаптивное разрешение вектора движения и компенсацию освещенности.
[202] Когда первый элемент синтаксиса высокого уровня указывает, что все множество инструментов кодирования отключено, никакие инструменты кодирования не применяются к кодированию последовательности. Другими словами, описанные выше инструменты кодирования не применяются ни к каким изображениям в последовательности. Когда первый элемент синтаксиса высокого уровня указывает, что множество инструментов кодирования не отключено, множество инструментов кодирования может использоваться для кодирования соответствующей последовательности. Например, аффинное предсказание движения может быть применено ко всем изображениям в последовательности. Соответственно, устройство кодирования видео может кодировать флаг единицы кодирования, указывающий, применялось ли кодирование с использованием аффинного предсказания движения к каждой из единиц кодирования, и передавать его в устройство декодирования видео.
[203] Когда флагом единицы кодирования указано, что аффинное предсказание движения было применено к соответствующей единице кодирования, устройство декодирования видео может быть конфигурировано выполнять вышеописанное аффинное предсказание движения на единице кодирования. Когда первый элемент синтаксиса высокого уровня указывает, что множество инструментов кодирования не отключено, устройство кодирования видео может быть конфигурировано кодировать один или более вторых элементов синтаксиса высокого уровня, указывающих, допустим ли каждый инструмент кодирования по меньшей мере в части множества инструментов кодирования на уровне последовательности или на уровне изображения.
[204] В некоторых вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня устройство кодирования видео кодирует для каждого инструмента кодирования флаг уровня последовательности, указывающий, разрешен ли соответствующий инструмент кодирования в SPS. Когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен, соответствующий инструмент кодирования не используется для кодирования изображений, принадлежащих последовательности. Кроме того, устройство кодирования видео конфигурировано для кодирования флага уровня изображения, указывающего, разрешен ли соответствующий инструмент кодирования в заголовке изображения (т.е. PPS) каждого из изображений, принадлежащих последовательности, в зависимости от значения флага уровня последовательности.
[205] Например, когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования разрешен на уровне последовательности, кодируется флаг уровня изображения для указания, разрешен ли соответствующий инструмент кодирования на уровне изображения. Когда первый элемент синтаксиса высокого уровня указывает, что все множество инструментов кодирования отключено, или флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен на уровне последовательности, флаг уровня изображения отдельно не кодируется. В частности, устройство декодирования видео выполнено с возможностью автоматического установления флага уровня изображения на значение, указывающее, что соответствующий инструмент кодирования не разрешен.
[206] Флаги уровня изображения для средств кодирования, отличных от аффинного предсказания движения, могут передаваться в зависимости от флага уровня изображения для аффинного предсказания движения. Когда флаг уровня изображения для аффинного предсказания движения указывает, что аффинное предсказания движения не разрешено на уровне изображения, флаги уровня изображения для других инструментов кодирования не кодируются, и другие инструменты кодирования не разрешены на уровне изображения. Когда флаги уровня изображения для других инструментов кодирования не включены в битовый поток, устройство декодирования видео конфигурировано устанавливать каждый флаг уровня изображения в значение, указывающее, что соответствующие инструменты кодирования не разрешены на уровне изображения.
[207] Устройство декодирования видео может быть конфигурировано устанавливать на уровне изображения, разрешать ли соответствующий инструмент кодирования, из флага уровня изображения, сигнализируемого из устройства кодирования видео, или флага уровня изображения, значение которого устанавливается автоматически. Второй элемент синтаксиса высокого уровня для аффинного предсказания движения может быть опущен. В частности, то, разрешено ли аффинное предсказание движения на уровне последовательности, контролируется первым синтаксисом высокого уровня. Устройство декодирования видео конфигурировано декодировать первый синтаксис высокого уровня от устройства кодирования видео, а затем определять, разрешать ли аффинное предсказание движения на уровне последовательности.
[208] В соответствии с вышеописанной структурой синтаксиса устройство кодирования видео может быть конфигурировано для адаптивного определения того, разрешать ли использование инструментов кодирования на уровне последовательности и уровне изображения. Кроме того, устройство декодирования видео может быть выполнено с возможностью адаптивного определения того, разрешать ли инструменты кодирования на уровне последовательности и уровне изображения путем декодирования синтаксисов, переданных от устройства кодирования видео.
[209] В некоторых других вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня флаг уровня изображения вышеописанного варианта осуществления может быть заменен флагом уровня слайса. Другими словами, когда флаг уровня последовательности указывает, что соответствующий инструмент разрешен на уровне последовательности, устройство кодирования видео кодирует в заголовке слайса флаг уровня слайса для указания, разрешен ли соответствующий инструмент кодирования на уровне слайса. Когда флаг уровня последовательности указывает, что соответствующий инструмент кодирования не разрешен, флаг уровня слайса не кодируется. Устройство кодирования видео может быть выполнено с возможностью адаптивного определения того, разрешать ли использовать инструменты кодирования на уровне последовательности и уровне слайса. Устройство декодирования видео может быть конфигурировано для определения того, разрешить ли использование каждого инструмента на уровне слайса с помощью флага уровня слайса.
[210] В некоторых других вариантах осуществления для кодирования одного или более вторых элементов синтаксиса высокого уровня флаг уровня последовательности может быть опущен. Флаг уровня изображения или флаг уровня слайса сигнализируется в зависимости от первого элемента синтаксиса высокого уровня. Когда первый элемент синтаксиса высокого уровня указывает, что разрешено множество инструментов кодирования, флаг уровня изображения или флаг уровня слайса кодируется в заголовке изображения или заголовке слайса.
[211] Следует понимать, что описанные выше примерные варианты осуществления могут быть реализованы множеством различных способов. Функции, описанные в одном или нескольких примерах, могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Следует понимать, что описанные здесь функциональные компоненты были помечены как «модуль», чтобы еще больше подчеркнуть их независимость от реализации.
[212] Различные способы или функции, приведенные в настоящем описании, могут быть реализованы как инструкции, хранящиеся на энергонезависимом носителе информации, которые могут быть прочитаны и выполнены одним или более процессорами. Невременный носитель записи включает в себя, например, все типы записывающих устройств, в которых данные хранятся в форме, читаемой компьютерной системой. Например, невременные носители записи включают в себя носители, такие как стираемая программируемая постоянная память (EPROM), флэш-накопители, оптические приводы, магнитные жесткие диски и твердотельные накопители (SSD).
[213] Хотя примерные варианты осуществления были описаны в иллюстративных целях, специалисты в данной области техники поймут, что возможны различные модификации и изменения, не выходящие за рамки идеи и объема вариантов осуществления. Примерные варианты осуществления были описаны для краткости и ясности. Соответственно, рядовой специалист поймет, что объем вариантов осуществления не ограничивается вариантами осуществления, явно описанными выше, но включает формулу изобретения и ее эквиваленты.
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУ
В данной заявке испрашивается приоритет корейских патентных заявок №№10-2019-0070633, 10-2019-0082010 и 10-2020-0072332, поданных соответственно 14 июня 2019 г., 8 июля 2019 г. и 15 июня 2020 г., все содержание из которых включены в настоящий документ посредством ссылки.
Изобретение относится к средствам для кодирования и декодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Кодируют в заголовке последовательности первый синтаксический элемент высокого уровня в уровне последовательности для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования. По меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения. В зависимости от первого элемента синтаксиса высокого уровня кодируют один или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении разрешения кодирования каждого из по меньшей мере одного инструмента кодирования. Когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере одно средство кодирования не отключены, определяют два или три вектора движения контрольных точек для целевого блока, подлежащего кодированию, и генерируют отсчеты аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения. 3 н. и 10 з.п. ф-лы, 22 ил.
1. Способ декодирования видео для декодирования последовательности кодированных изображений на поблочной основе, содержащий:
установление, на уровне последовательности, разрешено ли аффинное предсказание движения, посредством декодирования первого элемента синтаксиса высокого уровня из битового потока;
установление, на уровне изображения, разрешен ли каждый из по меньшей мере одного инструмента кодирования, посредством декодирования одного или более вторых элементов синтаксиса высокого уровня для каждого из по меньшей мере одного инструмента кодирования из битового потока в зависимости от первого элемента синтаксиса высокого уровня, причем по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения;
когда установление на уровне последовательности указывает, что аффинное предсказание движения разрешено, определение двух или трех векторов движения контрольных точек целевого блока, кодированных с использованием аффинного предсказания движения, и генерирование отсчетов аффинного предсказания для каждого из субблоков в целевом блоке посредством выполнения аффинного предсказания движения в единице субблоков с использованием векторов движения контрольных точек; и
когда идентифицировано, на основе установления на уровне изображения, что поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.
2. Способ по п. 1, в котором первый элемент синтаксиса высокого уровня декодируется из заголовка последовательности.
3. Способ по п. 2, в котором декодирование одного или более вторых элементов синтаксиса высокого уровня для поотсчетной корректировки отсчетов аффинного предсказания движения включает в себя:
когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения разрешено, декодирование флага уровня последовательности, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, из заголовка последовательности; и
в зависимости от флага уровня последовательности, декодирование флага уровня изображения, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, из заголовка изображения каждого из изображений, принадлежащих последовательности.
4. Способ по п. 3, в котором, когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, или флаг уровня последовательности указывает, что поотсчетная корректировка не разрешена, флаг уровня изображения устанавливается в значение, указывающее, что поотсчетная корректировка не разрешена, без декодирования из заголовка изображения.
5. Способ по п. 1, в котором, когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, любое из аффинного предсказания движения и по меньшей мере одного инструмента кодирования не разрешено для всех изображений в последовательности.
6. Способ по п. 1, в котором модификация значений отсчетов для отсчетов аффинного предсказания включает в себя:
генерирование смещения движения, возникающего в результате разницы между положением отсчета в целевом субблоке, подлежащем модификации, и центром целевого субблока, с использованием векторов движения контрольных точек целевого блока;
генерирование горизонтального и вертикального градиентов относительно положения отсчета в целевом субблоке;
генерирование смещения отсчета для отсчета аффинного предсказания, соответствующего положению отсчета в целевом субблоке, с использованием горизонтального и вертикального градиентов и смещения движения; и
добавление смещения отсчета к значению отсчета аффинного предсказания, соответствующему положению отсчета.
7. Способ по п. 6, в котором смещение движения, сгенерированное для положения отсчета в целевом субблоке, повторно используется в качестве смещения движения для того же положения отсчета в другом субблоке целевого блока.
8. Способ кодирования последовательности кодированных изображений на поблочной основе, включающий:
кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, при этом по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения;
в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении того, разрешен ли каждый из по меньшей мере одного инструмента кодирования;
когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение двух или трех векторов движения контрольных точек для целевого блока, подлежащего кодированию, посредством аффинного предсказания движения, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек; и
когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока.
9. Способ по п. 8, в котором кодирование по меньшей мере одного второго элемента синтаксиса высокого уровня для поотсчетной корректировки отсчетов аффинного предсказания движения включает в себя:
когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения разрешено, кодирование флага уровня последовательности, указывающего, разрешена ли поотсчетная корректировка отсчетов аффинного предсказания движения, в заголовке последовательности; и
в зависимости от флага уровня последовательности, кодирование флага уровня изображения, указывающего, разрешена ли поотсчетная корректировка, в заголовке изображения каждого из изображений, принадлежащих последовательности.
10. Способ по п. 9, отличающийся тем, что, когда первый элемент синтаксиса высокого уровня указывает, что аффинное предсказание движения не разрешено, или флага уровня последовательности указывает на то, что поотсчетная корректировка не разрешена, флаг уровня изображения не кодируют.
11. Способ по п. 8, в котором модификация значений отсчетов для отсчетов аффинного предсказания включает в себя:
генерирование смещения движения, возникающего в результате разницы между положением отсчета в целевом субблоке, подлежащем модификации, и центром целевого субблока, с использованием векторов движения контрольных точек целевого блока;
генерирование горизонтального и вертикального градиентов относительно положения отсчета в целевом субблоке;
генерирование смещения отсчета для отсчета аффинного предсказания, соответствующего положению отсчета в целевом субблоке, с использованием горизонтального и вертикального градиентов и смещения движения; и
добавление смещения отсчета к значению отсчета аффинного предсказания, соответствующему положению отсчета.
12. Способ по п. 11, в котором смещение движения, сгенерированное для положения отсчета в целевом субблоке, повторно используется в качестве смещения движения для того же положения отсчета в другом субблоке целевого блока.
13. Способ передачи битового потока, связанного с видеоданными, включающий:
генерирование битового потока путем кодирования видеоданных для последовательности изображений; и
передачу битового потока устройству декодирования видео,
при этом генерирование битового потока содержит:
кодирование, в заголовке последовательности, первого элемента синтаксиса высокого уровня в уровне последовательности, для указания, отключены ли как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования, причем по меньшей мере один инструмент кодирования включает в себя поотсчетную корректировку отсчетов аффинного предсказания движения;
в зависимости от первого элемента синтаксиса высокого уровня, кодирование одного или более вторых элементов синтаксиса высокого уровня, указывающих на установление уровня последовательности или уровня изображения в отношении того, разрешен ли каждый из по меньшей мере одного инструмента кодирования;
когда первый элемент синтаксиса высокого уровня указывает, что как аффинное предсказание движения, так и по меньшей мере один инструмент кодирования не отключены, определение множества векторов движения контрольных точек для целевого блока, подлежащего кодированию, и генерирование отсчетов аффинного предсказания для каждого из субблоков посредством выполнения посубблочного аффинного предсказания движения с использованием векторов движения контрольных точек; и
когда поотсчетная корректировка отсчетов аффинного предсказания движения разрешена для текущего изображения, содержащего целевой блок, модификацию значений отсчетов в отсчетах аффинного предсказания посредством компенсации движения в соответствии с положением отсчета в каждом из субблоков на основе векторов движения контрольных точек целевого блока; и
генерирование остаточных сигналов для целевого блока на основе модифицированных значений отсчетов и кодирование остаточных сигналов.
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
СПОСОБ ПРЕДСКАЗАНИЯ ИЗОБРАЖЕНИЙ И СВЯЗАННОЕ УСТРОЙСТВО | 2015 |
|
RU2671307C1 |
Авторы
Даты
2023-10-30—Публикация
2020-06-15—Подача