Способ, оборудование и устройство для кодирования и декодирования Российский патент 2023 года по МПК H04N19/105 

Описание патента на изобретение RU2809619C1

ОБЛАСТЬ ТЕХНИКИ

[01] Настоящее изобретение относится к технологиям кодирования и декодирования, в частности, к способам и оборудованию для кодирования и декодирования, устройствам на стороне кодера и устройствам на стороне декодера.

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

[02] Для уменьшения занимаемого объема, видео или изображения передают после кодирования. Полный процесс кодирования видео может включать такие процессы, как предсказание, преобразование, квантование, энтропийное кодирование, фильтрация и т.д. Предсказание может включать внутреннее предсказание и внешнее предсказание. Внешнее предсказание относится к операции использования временной корреляции видео для предсказания текущих пикселей с использованием пикселей соседнего кодированного изображения для достижения эффективного уменьшения временной избыточности видео. Внутреннее предсказание относится к операции использования пространственной корреляции видео для предсказания текущих пикселей с использованием пикселей одного или более кодированных блоков текущего изображения для достижения эффективного уменьшения пространственной избыточности видео.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[03] Ввиду вышеизложенного настоящая заявка раскрывает способы и оборудование для кодирования и декодирования, устройства на стороне кодера и устройства на стороне декодера, которые позволяют повысить точность предсказания.

[04] Настоящая заявка раскрывает способ кодирования и декодирования, включающий: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания и параметров весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определение значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[05] Настоящая заявка раскрывает оборудование для кодирования и декодирования, содержащее: модуль получения, выполненный с возможностью получения угла взвешенного предсказания и параметров весовой конфигурации текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока; при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; модуль конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; модуль определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определения первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определения второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определения значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[06] Настоящая заявка раскрывает устройство на стороне декодера, содержащее: процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором, и процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания и параметров весовой конфигурации текущего блока; при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определение значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[07] Настоящая заявка раскрывает устройство на стороне кодера, содержащее: процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором, и процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания и параметров весовой конфигурации текущего блока; при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определение значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[08] Как описано в приведенных выше технических решениях, в вариантах осуществления настоящего изобретения предоставляется эффективный способ конфигурирования весовых значений, в котором подходящее целевое весовое значение конфигурируется для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[09] Фиг. 1 представляет собой схему структуры системы кодирования видео.

[10] Фиг. 2А-2С представляют собой схематические диаграммы взвешенного предсказания.

[11] Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования согласно варианту осуществления настоящего изобретения.

[12] Фиг. 4А представляет собой блок-схему, иллюстрирующую способ кодирования согласно варианту осуществления настоящего изобретения.

[13] Фиг. 4В-4Е представляют собой схематические диаграммы, иллюстрирующие окружающие позиции за пределами текущего блока.

[14] Фиг. 4F представляет собой блок-схему, иллюстрирующую способ декодирования согласно варианту осуществления настоящего изобретения.

[15] Фиг. 5 представляет собой схематическую диаграмму, иллюстрирующую угол взвешенного предсказания согласно варианту осуществления настоящего изобретения.

[16] Фиг. 6 представляет собой схематическую диаграмму опорных весовых значений для четырех коэффициентов преобразования весов согласно варианту осуществления настоящего изобретения.

[17] Фиг. 7А представляет собой блок-схему получения весового массива согласно варианту осуществления настоящего изобретения.

[18] Фиг. 7B-7D представляют собой схематические диаграммы угла и областей взвешенного предсказания согласно варианту осуществления настоящего изобретения.

[19] Фиг. 8А и фиг. 8В представляют собой схематические диаграммы последовательности SCC и натуральной последовательности.

[20] Фиг. 9 представляет собой схематическую диаграмму, иллюстрирующую соседние блоки текущего блока в соответствии с вариантом осуществления настоящего изобретения.

[21] Фиг. 10А представляет собой структурную схему, иллюстрирующую оборудование для кодирования и декодирования согласно варианту осуществления настоящего изобретения.

[22] Фиг. 10В представляет собой схему аппаратной структуры устройства на стороне декодера согласно варианту осуществления настоящего изобретения.

[23] Фиг. 10С представляет собой схему аппаратной структуры устройства на стороне кодера согласно варианту осуществления настоящего изобретения.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

[24] Используемые здесь термины предназначены только для описания конкретного варианта осуществления изобретения, а не для ограничения настоящего изобретения. Формы единственного числа, используемые в настоящем описании и прилагаемой формуле изобретения, также предназначены для включения форм множественного числа, если из контекста явно не следует иное. Также следует понимать, что сочетание «и/или», используемое в данном документе, относится к любой или всем возможным комбинациям, которые включают один или более связанных перечисленных элементов. Следует отметить, что, хотя термины «первый», «второй», «третий» и т.п. могут использоваться в настоящем изобретении для описания различной информации, такая информация не должна ограничиваться этими терминами. Эти термины используются только для того, чтобы отличить одну категорию информации от другой. Например, в пределах сущности настоящего изобретения, первая информация может упоминаться как вторая информация; и, аналогично, вторая информация также может упоминаться как первая информация, в зависимости от контекста. Кроме того, слово «если», используемое здесь, может означать «когда», или «после», или «в ответ на определение».

[25] Настоящее изобретение предлагает способы, оборудование и устройства для кодирования и декодирования, для которых могут использоваться следующие понятия: внутреннее предсказание, внешнее предсказание, предсказание внутриблочного копирования (IBC, Intra Block Сору) и т.д.

[26] Внутреннее предсказание предсказывает пиксель текущего блока с использованием пикселей одного или более кодированных блоков текущего изображения на основе пространственной корреляции видео, чтобы устранить пространственную избыточность видео. Внутреннее предсказание определяет несколько режимов предсказания, каждый из которых соответствует одному направлению текстуры (за исключением режима постоянной составляющей (DC, Direct Current)). Например, если текстура изображения соответствует горизонтальному направлению, использование режима горизонтального предсказания может лучше предсказывать информацию изображения.

[27] Внешнее предсказание использует пиксели соседних кодированных изображений для предсказания пикселей текущего изображения на основе временной корреляции видео из-за сильной временной корреляции, включенной в видеопоследовательность, чтобы эффективно уменьшить временную избыточность видео.

[28] Внутриблочное копирование позволяет ссылаться на один и тот же слайс, если опорные данные текущего блока исходят из того же слайса. В технологии внутриблочного копирования значение предсказания текущего блока может быть получено с использованием вектора блока текущего блока. Например, на основе характеристики, состоящей в том, что имеется большое количество повторяющихся текстур в одном и том же слайсе в экранном контенте, когда значение предсказания текущего блока получают с использованием вектора блока, может быть повышена эффективность сжатия последовательности экранного контента.

[29] Пиксель предсказания относится к значению пикселя, полученному из кодированного/декодированного пикселя, и получают остаток на основе разности между исходным пикселем и пикселем предсказания, а затем выполняют преобразование, квантование, а также кодирование коэффициентов остатков. Пиксель внешнего предсказания для текущего блока относится к значению пикселя, полученному из опорного изображения, и, поскольку позиции пикселей являются дискретными, для получения окончательного пикселя предсказания требуется операция интерполяции. Чем ближе пиксель предсказания к исходному пикселю, тем меньше энергия остатка, полученная при выполнении вычитания для обоих пикселей, и тем выше эффективность сжатия кодирования.

[30] Вектор движения (MB, Motion Vector). При внешнем предсказании вектор движения используется для представления относительного смещения между текущим блоком текущего слайса и опорным блоком опорного слайса. Каждый из разделенных блоков имеет соответствующий вектор движения, который должен быть передан на сторону декодера. Если вектор движения каждого блока кодируется и передается независимо, особенно при наличии большого количества блоков меньшего размера, необходимо использовать больше битов. Чтобы уменьшить количество битов, используемых для кодирования вектора движения, может использоваться пространственная корреляция между соседними блоками для предсказания вектора движения текущего блока на основе вектора(ов) движения соседнего(их) кодированного(ых) блока(ов), а затем кодируется разность предсказания. Таким образом, количество битов, представляющих векторы движения, может быть эффективно уменьшено. В процессе кодирования вектора движения текущего блока сначала используются один или более векторов движения одного или более соседних кодируемых блоков для предсказания вектора движения текущего блока, а затем кодируется разность векторов движения (MVD, Motion Vector Difference) между значением предсказания вектора движения (MVP, Motion Vector Prediction) и реальным значением оценки вектора движения.

[31] Информация о движении. Поскольку вектор движения представляет собой смещение позиции от текущего блока к опорному блоку, для точного получения информации об указанном блоке в дополнение к вектору движения также необходима индексная информация об опорном изображении, чтобы указать, какое опорное изображение используется для текущего блока. В технологии кодирования видео для текущего слайса может быть установлен список опорных изображений, и индексная информация об опорном изображении указывает, какое опорное изображение, указанное в списке опорных изображений, используется для текущего блока. Кроме того, многие технологии кодирования также поддерживают несколько списков опорных изображений, так что индекс может также использоваться для указания того, какой список опорных изображений используется, и этот индекс может упоминаться как опорное направление. Подводя итог, можно сказать, что в технологии кодирования видеоинформация, относящаяся к движению, такая как вектор движения, индексная информация опорного изображения и опорное направление, может совместно называться информацией о движении.

[32] Вектор блока (BV, Block vector) применяется в технологии внутриблочного копирования, которая использует вектор блока для компенсации движения, например, значение предсказания текущего блока получают с использованием вектора блока. Вектор блока представляет собой относительное смещение между текущим блоком и наилучшим соответствующим блоком из кодированных блоков текущего слайса и отличается от вектора движения. На основе характеристики наличия большого количества повторяющихся текстур в одном и том же слайсе, когда значение предсказания текущего блока получают с использованием вектора блока, может быть повышена эффективность сжатия.

[33] Режим внутреннего предсказания. При внутреннем предсказании режим внутреннего предсказания используется для выполнения компенсации движения, например, значение предсказания текущего блока получают с использованием режима внутреннего предсказания. Например, режим внутреннего предсказания может включать, не ограничиваясь этим, планарный режим, режим постоянной составляющей и множество угловых режимов. Планарный режим применим к области, в которой значения пикселей изменяются медленно, и использует два линейных фильтра в горизонтальном и вертикальном направлениях, чтобы получить среднее значение пикселей в двух направлениях в качестве значения предсказания пикселей текущего блока. Режим постоянной составляющей применим к большой плоской поверхности и принимает среднее значение окружающих пикселей текущего блока в качестве значения предсказания текущего блока. Угловые режимы включают 33 угловых режима или 65 угловых режимов.

[34] Режим палитры. В режиме палитры значения пикселей текущего блока представлены небольшим набором значений пикселей, то есть палитрой. Когда значение пикселя позиции пикселя в текущем блоке близко к цвету в палитре, позиция пикселя кодируется значением индекса соответствующего цвета в палитре. Когда значение пикселя позиции пикселя в текущем блоке не похоже на все цвета в палитре, позиция пикселя должна кодироваться с помощью «сбежавшего» пикселя (escape pixel), и «сбежавший» пиксель непосредственно квантуется, а затем кодируется в битовый поток. На стороне декодера сначала получают одну палитру, например, палитру, хранящую {цвет А, цвет В, цвет С}, и затем определяют, кодирована ли каждая позиция пикселя как «сбежавший» пиксель. Если позиция пикселя не является «сбежавшим» пикселем, индекс позиции пикселя получают из битового потока, а затем из палитры получают цвет на основе индекса позиции пикселя и назначают его позиции пикселя; в противном случае анализируют «сбежавший» пиксель.

[35] Оптимизация «скорость-искажение» (RDO, Rate-Distortion Optimization). Есть два показателя для оценки эффективности кодирования: битовая скорость и отношение пикового сигнала к шуму (PSNR, Peak Signal to Noise Ratio). Чем меньше битовый поток, тем выше степень сжатия; и чем выше PSNR, тем лучше качество реконструированного изображения. При выборе режима способ принятия решения фактически представляет собой всестороннюю оценку для обоих режимов. Например, стоимость, соответствующая режиму, может быть рассчитана по следующей формуле: где D представляет искажение, обычно измеряемое суммой квадратов ошибок (SSE, Sum of Squared Errors), a SSE относится к средней сумме квадратов разностей между реконструированным блоком изображения и исходным изображением; X представляет множитель Лагранжа; и R представляет фактическое количество битов, необходимых для кодирования блока изображения в этом режиме, включая общее количество битов, необходимое для информации о режиме кодирования, информации о движении, остатках и т.п. При выборе режима, если RDO используется для принятия сравнительного решения о режимах кодирования, обычно может быть гарантирована наилучшая эффективность кодирования.

[36] Структура системы кодирования видео. Структура системы кодирования видео, показанная на Фиг. 1, может использоваться для выполнения процесса на стороне кодера в вариантах осуществления настоящего изобретения, а структура системы декодирования видео аналогична Фиг. 1 и здесь повторяться не будет. Структура системы декодирования видео может использоваться для выполнения процесса на стороне декодера в вариантах осуществления настоящего изобретения. Например, структура системы кодирования видео и структура системы декодирования видео могут включать, не ограничиваясь этим, модуль внутреннего предсказания или модуль внешнего предсказания, модуль оценки/компенсации движения, буфер опорных изображений, модуль внутриконтурной фильтрации, модуль реконструкции, модуль преобразования, модуль квантования, модуль обратного преобразования, модуль деквантования, энтропийный кодер и т.п. Кодер может выполнять процесс на стороне кодера посредством взаимодействия этих модулей, а декодер может выполнять процесс на стороне декодера посредством взаимодействия этих модулей.

[37] Например, текущий блок может быть прямоугольным, в то время как граница объекта обычно не является прямоугольной в практических ситуациях. Поэтому для границы объекта обычно используются две различные сущности (например, объект, представленный на переднем плане и на заднем плане, и т.д.). Когда движения двух объектов несовместимы, эти два объекта не могут быть хорошо разделены на основе прямоугольного разделения. Следовательно, текущий блок может быть разделен на два непрямоугольных подблока, и для двух непрямоугольных подблоков выполняется взвешенное предсказание. Например, взвешенное предсказание предназначено для выполнения взвешенной операции на основе нескольких значений предсказания для получения одного или более окончательных значений предсказания. Взвешенное предсказание может включать: комбинированное внешнее/внутреннее предсказание, комбинированное внешнее/внутреннее предсказание, комбинированное внутреннее/внутреннее предсказание и т.д. Для весового(ых) значения(й) взвешенного предсказания одно и то же весовое значение или различные весовые значения могут быть установлены для всех позиций пикселей текущего блока.

[38] Фиг. 2А представляет собой схематическую диаграмму, иллюстрирующую режим треугольного разделения (ТРМ, Triangular Partition Mode) внешнего взвешенного предсказания.

[39] Блок предсказания ТРМ получают путем объединения блока 1 внешнего предсказания (например, значение 1 внешнего предсказания для нескольких позиций пикселей получают с использованием режима 1 внешнего предсказания) и блока 2 внешнего предсказания (например, значение 2 внешнего предсказания нескольких позиций пикселей получают с использованием режима 2 внешнего предсказания). Блок предсказания ТРМ может быть разделен на две области/части, одна из которых может быть областью 1 внешнего предсказания, и другая может быть областью 2 внешнего предсказания. Блок предсказания ТРМ может быть прямоугольным, а две области внешнего предсказания блока предсказания ТРМ могут быть непрямоугольными, и линия границы между двумя областями внешнего предсказания (как показано пунктирной линией на фиг. 2А) может быть главной диагональю или субдиагональю блока предсказания ТРМ.

[40] Позиция каждого пикселя в области 1 внешнего предсказания в основном определяется на основе значения 1 внешнего предсказания блока 1 внешнего предсказания. Например, значение 1 внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение 2 внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, причем значение 1 внешнего предсказания имеет большее весовое значение, а значение 2 внешнего предсказания имеет меньшее весовое значение или даже 0. Каждая позиция пикселя области 2 внешнего предсказания в основном определяется на основе значения 2 внешнего предсказания блока 2 внешнего предсказания. Например, значение 1 внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение 2 внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, при этом значение 2 внешнего предсказания имеет большее весовое значение, а значение 1 внешнего предсказания имеет меньшее весовое значение или даже 0. Наконец, комбинированные значения предсказания позиций пикселей объединяют для формирования блока предсказания ТРМ.

[41] Фиг. 2В представляет собой схематическую диаграмму, иллюстрирующую режим геометрического разделения (Geometrical, GEO) для межблочного режима. Режим GEO используется для разделения блока внешнего предсказания на два подблока с использованием одной линии разделения. В режиме GEO может быть больше направлений разделения по сравнению с режимом ТРМ. Режим GEO аналогичен режиму ТРМ в процессе взвешенного предсказания.

[42] Блок предсказания GEO получают путем объединения блока 1 внешнего предсказания (например, значение 1 внешнего предсказания для позиций нескольких пикселей получают с использованием режима 1 внешнего предсказания) и блока 2 внешнего предсказания (например, значение 2 внешнего предсказания для позиций нескольких пикселей получают с использованием режима 2 внешнего предсказания). Блок предсказания GEO может быть разделен на две области/части, одна из которых может быть областью 1 внешнего предсказания, а другая может быть областью 2 внешнего предсказания.

[43] Позиция каждого пикселя в области 1 внешнего предсказания в основном определяется на основе значения 1 внешнего предсказания блока 1 внешнего предсказания. Например, когда значение 1 внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение 2 внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают, значение 1 внешнего предсказания имеет большее весовое значение, а значение 2 внешнего предсказания имеет меньшее весовое значение. Каждая позиция пикселя области 2 внешнего предсказания в основном определяется на основе значения 2 внешнего предсказания блока 2 внешнего предсказания. Например, когда значение 1 внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение 2 внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают, значение 2 внешнего предсказания имеет большее весовое значение, а значение 1 внешнего предсказания имеет меньшее весовое значение.

[44] Например, весовые значения блока предсказания GEO сконфигурированы с учетом расстояния позиции пикселя от линии разделения. Как показано на Фиг. 2С, позиция А пикселя, позиция В пикселя и позиция С пикселя расположены в нижней правой части от линии разделения, а позиция D пикселя, позиция Е пикселя и позиция F пикселя расположены в верхней левой части от линии разделения. Для позиции А пикселя, позиции В пикселя и позиции С пикселя весовые значения блока 2 внешнего предсказания ранжируют как В≥А≥С, а весовые значения блока 1 внешнего предсказания ранжируют как С≥А≥В. Для позиции D пикселя, позиции Е пикселя и позиции F пикселя весовые значения блока 1 внешнего предсказания ранжируют как D≥F≥Е, а весовые значения блока 2 внешнего предсказания ранжируют как Е≥F≥D. Описанный выше способ требует вычисления расстояния между позицией пикселя и линией разделения, а затем определения весового значения позиции пикселя.

[45] В приведенных выше примерах для достижения взвешенного предсказания ожидается, что будут определены одно или более весовых значений блока предсказания, соответствующих каждой позиции пикселя текущего блока, и взвешенное предсказание выполняется на основе одного или более весовых значений, соответствующих позиции пикселя. Но установка одного или более весовых значений зависит от линии разделения, и необоснованная установка одного или более весовых значений может привести к плохому результату предсказания и низкой эффективности кодирования.

[46] Ввиду этого, варианты осуществления настоящего изобретения предлагают способ получения одного или более весовых значений. Таким образом, на основе опорных весовых значений окружающих позиций за пределами текущего блока определяют целевое весовое значение для каждой позиции пикселя текущего блока, таким образом, для каждой позиции пикселя может быть сконфигурировано более подходящее целевое весовое значение. В этом случае значения предсказания могут быть более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.

[47] Способ кодирования и декодирования согласно вариантам осуществления настоящего изобретения будет подробно описан ниже в сочетании с несколькими конкретными вариантами осуществления изобретения.

[48] Вариант 1 осуществления изобретения. Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования. Способ может применяться на стороне декодера (который может также называться видеодекодером) или на стороне кодера (который может также называться видеокодером). Способ включает следующие этапы.

[49] На этапе 301, когда определено, что следует разрешить взвешенное предсказание для текущего блока, получают угол взвешенного предсказания и параметры весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов. Начальная позиция преобразования весов может определяться по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока или размер текущего блока.

[50] Например, когда ожидается, что будет сделано предсказание для текущего блока, сторона декодера или сторона кодера сначала определяют, разрешить ли взвешенное предсказание для текущего блока. Если определено, что следует разрешить взвешенное предсказание для текущего блока, применяют способ кодирования и декодирования вариантов осуществления настоящего изобретения, то есть выполняют этап 301 и последующие этапы. Если определено, что не следует разрешать взвешенное предсказание для текущего блока, никаких ограничений на соответствующие реализации в вариантах осуществления настоящего изобретения не делается.

[51] Например, когда определено, что следует разрешить взвешенное предсказание для текущего блока, могут быть получены угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Затем на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока или размера текущего блока можно определить начальную позицию преобразования весов текущего блока. Таким образом, можно получить угол взвешенного предсказания текущего блока, коэффициент преобразования весов текущего блока и начальную позицию преобразования весов текущего блока.

[52] На этапе 302 конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации текущего блока.

[53] Например, количество окружающих позиций за пределами текущего блока может быть определено на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. Например, если определено, что количество окружающих позиций за пределами текущего блока равно М, на основе размера текущего блока и/или угла взвешенного предсказания текущего блока, конфигурируют опорные весовые значения для М окружающих позиций в соответствии с параметрами весовой конфигурации текущего блока.

[54] Например, опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться; или опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно уменьшаться. Например, опорные весовые значения окружающих позиций за пределами текущего блока могут быть 0 0… 0 0 2 4 6 8 8… 8 8, или опорное весовое значение окружающих позиций за пределами текущего блока может быть 8 8… 8 8 6 4 2 0 0… 0 0.

[55] Например, окружающие позиции за пределами текущего блока могут включать позиции целого пикселя или позиции субпикселя, или как позиции целого пикселя, так и позиции субпикселя. Окружающие позиции за пределами текущего блока могут включать, не ограничиваясь этим, окружающие позиции в строке сверху от текущего блока, или окружающие позиции в столбце слева от текущего блока, или окружающие позиции в строке снизу от текущего блока, или окружающие позиции в столбце справа от текущего блока. Выше были приведены только примеры окружающих позиций, которые не накладывают никаких ограничений.

[56] В возможном варианте осуществления изобретения опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций (областей), одно или более опорных весовых значений первых соседних позиций (областей) целевых позиций и одно или более опорных весовых значений вторых соседних позиций (областей) целевых позиций. То есть окружающие позиции за пределами текущего блока могут быть разделены на целевые позиции, первые соседние позиции целевых позиций и вторые соседние позиции целевых позиций.

[57] Например, все опорные весовые значения первых соседних позиций являются первым опорным весовым значением, а опорные весовые значения вторых соседних позиций монотонно увеличиваются. Альтернативно, все опорные весовые значения первых соседних позиций являются первым опорным весовым значением, а опорные весовые значения вторых соседних позиций монотонно уменьшаются. Альтернативно, все опорные весовые значения первых соседних позиций являются вторым опорным весовым значением, и все опорные весовые значения вторых соседних позиций являются третьим опорным весовым значением, причем второе опорное весовое значение отличается от третьего опорного весового значения. Альтернативно, опорные весовые значения первых соседних позиций монотонно увеличиваются, и опорные весовые значения вторых соседних позиций монотонно увеличиваются. Альтернативно, опорные весовые значения первых соседних позиций монотонно уменьшаются, и опорные весовые значения вторых соседних позиций монотонно уменьшаются.

[58] Например, целевые позиции включают одно или по меньшей мере два опорных весовых значения, и, если целевые позиции включают по меньшей мере два опорных весовых значения, по меньшей мере два опорных весовых значения целевых позиций монотонно увеличиваются или уменьшаются.

[59] На этапе 303 для каждой позиции пикселя текущего блока определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией; и определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.

[60] Например, угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, например, на основе определенного угла взвешенного предсказания угловое направление, соответствующее углу взвешенного предсказания, указывает на окружающую позицию за пределами текущего блока. На основе этого, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания и затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе углового направления.

[61] Для каждой позиции пикселя текущего блока, после того как определена окружающая соответствующая позиция, указанная позицией пикселя, на основе опорного весового значения, связанного с окружающей соответствующей позицией, определяют целевое весовое значение позиции пикселя, например, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как целевое весовое значение пикселя. Затем ассоциированное весовое значение позиции пикселя может быть определено на основе целевого весового значения позиции пикселя. Например, для каждой позиции пикселя, сумма целевого весового значения и ассоциированного весового значения для позиции пикселя может быть фиксированным заранее заданным значением. Следовательно, ассоциированное весовое значение может быть разностью между заранее заданным значением и целевым весовым значением. Если предположить, что заранее заданное значение равно 8, а целевое весовое значение позиции пикселя равно 0, ассоциированное весовое значение позиции пикселя равно 8; если целевое весовое значение позиции пикселя равно 1, ассоциированное весовое значение позиции пикселя равно 7 и т.д., при условии, что сумма целевого весового значения и ассоциированного весового значения равна 8.

[62] На этапе 304 для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определяют второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определяют значение взвешенного предсказания позиции пикселя.

[63] Например, если целевое весовое значение представляет собой весовое значение, соответствующее первому режиму предсказания, а ассоциированное весовое значение представляет собой весовое значение, соответствующее второму режиму предсказания, значение взвешенного предсказания позиции пикселя может быть следующим: (первое значение предсказания позиции пикселя * целевое весовое значение позиции пикселя+второе значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение.

[64] Кроме того, если целевое весовое значение представляет собой весовое значение, соответствующее второму режиму предсказания, а ассоциированное весовое значение представляет собой весовое значение, соответствующее первому режиму предсказания, значение взвешенного предсказания позиции пикселя может быть следующим: (второе значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + первое значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение.

[65] На этапе 305 определяют значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[66] Например, значения взвешенного предсказания всех позиций пикселей текущего блока формируют в значения взвешенного предсказания текущего блока.

[67] Как описано в технических решениях, представленных выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ конфигурирования весовых значений, в котором конфигурируют подходящее целевое весовое значение для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.

[68] Вариант 2 осуществления изобретения. На основе варианта 1 осуществления изобретения в вариантах осуществления изобретения предоставляется другой способ кодирования и декодирования, как показано на Фиг. 4А, которая представляет собой схематическую диаграмму, иллюстрирующую блок-схему способа кодирования и декодирования. Способ может применяться на стороне кодера и включать следующие этапы.

[69] На этапе 401, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона кодера получает угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Например, сторона кодера определяет, следует ли разрешить взвешенное предсказание для текущего блока. Если сторона кодера определяет, что следует разрешить взвешенное предсказание для текущего блока, выполняют этап 401 и последующие этапы, в противном случае способ обработки не ограничивается настоящим изобретением.

[70] В возможной реализации, если текущий блок удовлетворяет условию для разрешения взвешенного предсказания, сторона кодера может определить, что взвешенное предсказание должно быть разрешено для текущего блока. Если текущий блок не удовлетворяет условию разрешения взвешенного предсказания, может быть определено, что взвешенное предсказание не должно быть разрешено для текущего блока. Например, сторона кодера может определить, удовлетворяет ли информация о характеристиках текущего блока определенному условию. Если информация о характеристиках текущего блока удовлетворяет определенному условию, определяют, что следует разрешить взвешенное предсказание для текущего блока, а если нет, определяют, что не следует разрешать взвешенное предсказание для текущего блока. Например, информация о характеристиках включает, не ограничиваясь этим, одно или более из следующего: тип текущего слайса, в котором расположен текущий блок, информация о размере текущего блока и информация управления переключением. Информация управления переключением может включать, не ограничиваясь этим: информацию управления переключением уровня последовательности (например, набор параметров последовательности (SPS, Sequence Parameter Set) и заголовок последовательности (SH, Sequence Header)), информацию управления переключением уровня изображения (например, набор параметров изображения (PPS, Picture Parameter Set) и заголовок изображения (РН, Picture Header)), информацию управления переключением уровня слайса (например, слайса, тайла и патча) или информацию управления переключением уровня наибольшей единицы кодирования (например, наибольшей единицы кодирования (LCU, Largest Coding Unit) и единицы дерева кодирования (CTU, Coding Tree Unit)), или информации управления переключением уровня блока (например, единицы кодирования (CU), единицы предсказания (PU), единицы преобразования (TU)).

[71] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, тип текущего слайса, в котором расположен текущий блок, удовлетворяющий определенному условию, включает, не ограничиваясь этим, следующее: если тип текущего слайса, в котором расположен текущий блок, является В-слайсом, определяют, что тип слайса удовлетворяет определенному условию; или, если тип текущего слайса, в котором расположен текущий блок, является I-слайсом, определяют, что тип слайса удовлетворяет определенному условию.

[72] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, например, ширину и высоту текущего блока, информация о размере текущего блока, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: если ширина больше или равна первому значению ширины, а высота больше или равна второму значению высоты, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если ширина больше или равна третьему значению ширины, высота больше или равна четвертому значению высоты, ширина меньше или равна пятому значению ширины, а высота меньше или равна шестому значению высоты, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или если произведение ширины и высоты больше или равно значению произведения, определяют, что информация о размере текущего блока удовлетворяет определенному условию. Вышеупомянутые значения могут быть сконфигурированы на основе опыта, например, сконфигурированы как 8, 16, 32, 64 или 128 и т.п. Например, первое значение ширины может быть 8, второе значение высоты может быть 8, третье значение ширины может быть 8, четвертое значение высоты может быть 8, пятое значение ширины может быть 64, шестое значение высоты может быть 64, и значение произведения может быть 64. В этом случае, если ширина больше или равна 8, а высота больше или равна 8, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если ширина больше или равна 8, высота больше или равна 8, ширина меньше или равна 64, а высота меньше или равна 64, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если произведение ширины и высоты больше или равно 64, определяют, что информация о размере текущего блока удовлетворяет определенному условию. Приведенные выше примеры являются только иллюстративными и не ограничивают настоящее изобретение.

[73] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, такую как ширина и высота текущего блока, информация о размере текущего блока, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: ширина не меньше а и не больше b, высота не меньше а и не больше b, где а может быть меньше или равно 16, и b может быть больше или равно 16. Например, а равно 8, и b равно 64 или 32.

[74] Например, если информация о характеристиках представляет собой информацию управления переключением, информация управления переключением, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: если информация управления переключением позволяет разрешить взвешенное предсказание для текущего блока, определяют, что информация управления переключением удовлетворяет определенному условию.

[75] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию о размере текущего блока, когда тип слайса удовлетворяет определенному условию, а информация о размере удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Альтернативно, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию управления переключением, когда тип слайса удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Альтернативно, если информация о характеристиках представляет собой информацию о размере текущего блока и информацию управления переключением, когда информация о размере удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Альтернативно, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, информацию о размере текущего блока и информацию управления переключением, когда тип слайса, информация о размере и информация управления переключением удовлетворяют определенным условиям соответственно, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию.

[76] В возможной реализации, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона кодера может получить угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока.

[77] Например, угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока. Как показано на Фиг. 4В, на основе угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 1 пикселя, позицией 2 пикселя и позицией 3 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока. Как показано на Фиг. 4С, на основе другого угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 2 пикселя, позицией 3 пикселя и позицией 4 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока.

[78] Например, позицию взвешенного предсказания (также называемую параметром расстояния) используют для конфигурирования опорного весового значения окружающей позиции за пределами текущего блока. Например, на основе таких параметров, как угол взвешенного предсказания текущего блока, размер текущего блока и т.д., определяют диапазон окружающих позиций за пределами текущего блока (например, количество окружающих позиций за пределами текущего блока), который показан на Фиг. 4В или 4С.

[79] Затем диапазон окружающих позиций поровну делится на N частей, где значение N может быть задано произвольно, например, может быть установлено равным 4, 6 или 8 и т.п. Возьмем, к примеру, 8. Позицию взвешенного предсказания используют для представления того, какая окружающая позиция используется в качестве начальной позиции преобразования весов текущего блока, так что опорные весовые значения окружающих позиций за пределами текущего блока конфигурируют на основе начальной позиции преобразования весов.

[80] Как показано на Фиг. 4D, после того как все окружающие позиции разделены на восемь равных частей, можно получить семь позиций взвешенного предсказания. На основе этого, когда позиция взвешенного предсказания равна 0, это может указывать на то, что окружающая позиция а0 (то есть окружающая позиция, отмеченная пунктирной линией 0. На практике пунктирная линия 0 не существует, и пунктирная линия 0 используется только для облегчения понимания приведенных примеров. Пунктирные линии от 0 до 6 используются для равного разделения всех окружающих позиций на восемь частей) служит начальной позицией преобразования весов окружающих позиций за пределами текущего блока. По аналогии, когда позиция взвешенного предсказания равна 6, это означает, что окружающая позиция а6 используется в качестве начальной позиции преобразования весов окружающих позиций за пределами текущего блока.

[81] Для различных углов взвешенного предсказания значения N могут быть различными. Например, для угла А взвешенного предсказания значение N может быть равно 6, что указывает на то, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, поровну разделен на шесть частей. Для угла В взвешенного предсказания значение N может быть равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, поровну разделен на восемь частей.

[82] Для различных углов взвешенного предсказания значения N могут быть одинаковыми. В случае одного и того же значения N количества позиций взвешенного предсказания могут быть различными. Например, для угла А взвешенного предсказания значение N равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, поровну разделен на восемь частей; и для угла В взвешенного предсказания значение N равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, поровну разделен на восемь частей. В то же время, позиции взвешенного предсказания, соответствующие углу А взвешенного предсказания, выбраны всего из пяти позиций от a1 до а5, и позиции взвешенного предсказания, соответствующие углу В взвешенного предсказания, выбраны всего из семи позиций от b0 до b6.

[83] Выше приведен пример равного разделения диапазона окружающих позиций на N частей. На практике также может быть принят способ неравного разделения, например, диапазон окружающих позиций может быть разделен на N частей, а не на N равных частей, что не ограничивается в настоящем изобретении.

[84] После того как все окружающие позиции будут поровну разделены на восемь частей, можно получить семь позиций взвешенного предсказания. На этапе 401 сторона кодера может получить одну позицию взвешенного предсказания из семи позиций взвешенного предсказания или выбрать некоторые позиции взвешенного предсказания (например, пять позиций взвешенного предсказания) из семи позиций взвешенного предсказания, а затем получить одну позицию взвешенного предсказания из пяти позиций взвешенного предсказания.

[85] Например, коэффициент преобразования весов представляет собой коэффициент преобразования опорных весовых значений окружающих позиций за пределами текущего блока, который используется для представления скорости изменения опорных весовых значений. Коэффициент преобразования весов может быть любым числом, отличным от 0, например, коэффициент преобразования весов может быть -4, -2, -1, 1, 2, 4, 0,5, 0,75, 1,5 и т.п. Когда абсолютное значение коэффициента преобразования весов равно 1, то есть когда коэффициент преобразования весов равен -1 или 1, он используется для указания того, что скорость изменения опорных весовых значений равна 1. В этом случае опорные весовые значения от 0 до 8 должны пройти через 0, 1, 2, 3, 4, 5, 6, 7, 8, а опорные весовые значения от 8 до 0 должны пройти через 8, 7, 6, 5, 4, 3, 2, 1, 0. Когда абсолютное значение коэффициента преобразования весов равно 2, то есть когда коэффициент преобразования весов равен -2 или 2, он используется для указания того, что скорость изменения опорных весовых значений равна 2. В этом случае опорные весовые значения от 0 до 8 должны пройти через 0, 2, 4, 6, 8, и опорные весовые значения от 8 до 0 должны пройти через 8, 6, 4, 2, 0. Когда абсолютное значение коэффициента преобразования весов равно 0,5, то есть когда коэффициент преобразования весов равен -0,5 или 0,5, он используется для указания того, что скорость изменения опорных весовых значений составляет 0,5. В этом случае опорные весовые значения от 0 до 8 должны пройти через 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, а опорные весовые значения от 8 до 0 должны пройти через 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0 Выше были приведены примеры от 0 до 8, причем 0 и 8 можно заменить любым числом.

[86] На этапе 402 сторона кодера конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока.

[87] Например, начальная позиция преобразования весов может быть определена по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока или размер текущего блока. Следовательно, начальная позиция преобразования весов текущего блока может быть определена на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока или размера текущего блока. Затем опорные весовые значения конфигурируют для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока.

[88] На этапе 403 для каждой позиции пикселя текущего блока сторона кодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока. Для удобства различения в этом варианте осуществления изобретения окружающая позиция за пределами текущего блока, указанная позицией пикселя, может называться окружающей соответствующей позицией для позиции пикселя.

[89] Например, поскольку угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания, а затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе углового направления.

[90] Окружающие позиции за пределами текущего блока могут включать окружающие позиции в строке сверху от текущего блока, например, окружающие позиции в n1-й строке сверху от текущего блока, где n1 может быть равно 1 или 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в столбце слева от текущего блока, например, окружающие позиции в n2-м столбце слева от текущего блока, где n2 может быть 1 или 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в строке снизу от текущего блока, например, окружающие позиции в n3-й строке снизу от текущего блока, где n3 может быть равно 1, 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в столбце справа от текущего блока, например, окружающие позиции в n4-м столбце справа от текущего блока, где n4 может быть 1 или 2, 3 и т.д., что здесь не ограничивается.

[91] Вышеприведенные примеры окружающих позиций являются иллюстративными и не ограничиваются здесь. На практике в дополнение к окружающим позициям за пределами текущего блока также могут использоваться внутренние позиции текущего блока, то есть внутренние позиции текущего блока используются для замены указанных выше окружающих позиций за пределами текущего блока, например, внутренние позиции могут включать внутренние позиции в n5-й строке внутри текущего блока, где n5 может быть 1 или 2, 3 и т.д., или внутренние позиции в n6-м столбце внутри текущего блока, где n6 может быть 1 или 2, 3 и т.д. Длина внутренних позиций может превышать диапазон текущего блока, например, позиции n7-й строки могут превышать диапазон текущего блока, то есть выходить наружу из двух сторон текущего блока. Внутренние позиции текущего блока и окружающие позиции за пределами текущего блока могут использоваться одновременно.

[92] Для использования внутренних позиций текущего блока или использования как внутренних позиций текущего блока, так и окружающих позиций за пределами текущего блока текущий блок может быть разделен на два малых блока, верхний и нижний, на основе строки, в которой расположены внутренние позиции, или разделен на два малых блока, левый и правый, в зависимости от столбца, в котором расположены внутренние позиции. В этом случае два малых блока имеют один и тот же угол взвешенного предсказания и одну и ту же позицию взвешенного предсказания.

[93] Например, окружающие позиции за пределами текущего блока могут быть расположены между позициями пикселей, например, в одной или более позициях субпикселя, и в этом случае позиция текущего блока не может быть просто описано как строка "х", а описывается как строка позиций субпикселя, расположенная между строкой "х" и строкой "у".

[94] Для удобства описания в последующих вариантах осуществления изобретения в качестве примера для описания приняты окружающие позиции в первой строке сверху от текущего блока или окружающие позиции в первом столбце слева от текущего блока, а другие окружающие позиции могут быть реализованы аналогичным образом.

[95] Например, для диапазона окружающих позиций за пределами текущего блока, этот диапазон может быть предварительно назначен как ряд окружающих позиций за пределами текущего блока. Альтернативно, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания, например, окружающую позицию, указанную каждой из позиций пикселя внутри текущего блока, определяют на основе угла взвешенного предсказания, а граница окружающих позиций, указанных всеми позициями пикселей может представлять собой диапазон окружающих позиций за пределами текущего блока. Диапазон окружающих позиций здесь не ограничен.

[96] Окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя и/или одну или более позиций нецелого пикселя. Позиция нецелого пикселя может быть позицией субпикселя, например, позицией 1/2 субпикселя, или позицией 1/4 субпикселя, или позицией 3/4 субпикселя и т.п., что не ограничивается здесь.

[97] Например, две окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или четыре окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать двум позициям целого пикселя. Выше приведены лишь несколько примеров, которые не ограничивают изобретение. Связь между окружающей позицией и позицией целого пикселя может быть сконфигурирована произвольно.

[98] Как показано на Фиг. 4В и 4С, одна окружающая позиция соответствует одной позиции целого пикселя, и, как показано на Фиг. 4Е две окружающие позиции соответствуют одной позиции целого пикселя. Другие примеры для краткости не будут описаны в этом варианте осуществления изобретения.

[99] На этапе 404 сторона кодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.

[100] Для каждой позиции пикселя текущего блока после определения окружающей соответствующей позиции, указанной позицией пикселя, сторона кодера определяет опорное весовое значение, связанное с окружающей соответствующей позицией, и определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, например, определяет опорное весовое значение, связанное с окружающей соответствующей позицией, в качестве целевого весового значения позиции пикселя.

[101] В возможной реализации сторона кодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, что может включать следующие несколько случаев.

[102] Случай 1. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя сконфигурирована с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного весового значения позиции целого пикселя.

[103] Случай 2. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя не сконфигурирована с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного(ых) весового(ых) значения(й) соседней(их) позиции(й) позиции целого пикселя. Например, может быть выполнена операция округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции целого пикселя. Способ определения здесь не ограничен.

[104] Случай 3. Если окружающая соответствующая позиция является позицией субпикселя, а позиция субпикселя сконфигурирована с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе опорного весового значения позиции субпикселя.

[105] Случай 4. Если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя не сконфигурирована с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе одного или более опорных весовых значений одной или более соседних позиций позиции субпикселя. Например, может быть выполнена операция округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции субпикселя. Способ определения здесь не ограничен.

[106] Случай 5, определяют целевое весовое значение позиции пикселя на основе нескольких опорных весовых значений, связанных с окружающей соответствующей позицией. Например, когда окружающая соответствующая позиция позицией целого пикселя или позицией субпикселя, могут быть получены опорные весовые значения множества соседних позиций окружающей соответствующей позиции. Если окружающая соответствующая позиция сконфигурирована с опорным весовым значением, выполняют взвешенную операцию на основе опорного весового значения окружающей соответствующей позиции и опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя. Если окружающая соответствующая позиция не сконфигурирована с опорным весовым значением, взвешенную операцию выполняют на основе опорных весовых значений множества соседних позиций для получения целевого весового значения позиции пикселя.

[107] На этапе 405 сторона кодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.

[108] Например, для каждой позиции пикселя сумма целевого весового значения позиции пикселя и ассоциированного весового значения позиции пикселя может быть фиксированным заданным значением, то есть ассоциированное весовое значение может представлять собой разность заранее заданного значения и целевого весового значения. Исходя из этого, предполагается, что заранее заданное значение равно 8. Если целевое весовое значение позиции пикселя равно 2, ассоциированное весовое значение позиции пикселя равно 6.

[109] На этапе 406 для каждой позиции пикселя текущего блока сторона кодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.

[110] Например, первый режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры; и второй режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры. Например, первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом предсказания внутриблочного копирования; или первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом внутреннего предсказания; или первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом внешнего предсказания; или первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом палитры. Аналогично, нет ограничений на первый режим предсказания и второй режим предсказания.

[111] Процесс определения значений предсказания на основе первого режима предсказания и второго режима предсказания может относиться к последующим вариантам осуществления изобретения.

[112] На этапе 407 сторона кодера определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.

[113] Например, значение взвешенного предсказания позиции пикселя может быть следующим: (первое значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + второе значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение.

[114] На этапе 408 сторона кодера определяет значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[115] Как описано в приведенных выше технических решениях, в вариантах осуществления настоящего изобретения предоставляется эффективный способ конфигурирования весовых значений, в котором подходящее целевое весовое значение конфигурируют для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к значениям исходных пикселей, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.

[116] Вариант 3 осуществления изобретения. На основе варианта 1 осуществления изобретения в вариантах осуществления настоящего изобретения предусмотрен другой способ кодирования и декодирования, как показано на Фиг. 4F, которая является схематической диаграммой, иллюстрирующей блок-схему способа кодирования и декодирования. Способ может применяться на стороне декодера и включать следующие этапы.

[117] На этапе 411, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера получает угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Например, сторона декодера определяет, следует ли разрешить взвешенное предсказание для текущего блока. Если сторона декодера определяет, что следует разрешить взвешенное предсказание для текущего блока, выполняют этап 411 и последующие этапы, в противном случае способ обработки не ограничивается настоящим изобретением.

[118] В возможной реализации сторона кодера определяет, удовлетворяет ли информация о характеристиках текущего блока определенному условию, и, если информация о характеристиках удовлетворяет определенному условию, сторона кодера определяет, что следует разрешить взвешенное предсказание для текущего блока. Сторона декодера также определяет, удовлетворяет ли информация о характеристиках текущего блока определенному условию, и, если информация о характеристиках удовлетворяет определенному условию, сторона декодера определяет, что следует разрешить взвешенное предсказание для текущего блока, в противном случае сторона декодера определяет, что не следует разрешать взвешенное предсказание для текущего блока. Способ, которым сторона декодера определяет, разрешить ли взвешенное предсказание для текущего блока на основе информации о характеристиках, может быть отнесен к этапу 401 и здесь повторяться не будет.

[119] В другой возможной реализации на стороне кодера определяют, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока. Когда текущий блок поддерживает взвешенное предсказание, также может быть принята другая стратегия, чтобы определить, разрешить ли взвешенное предсказание для текущего блока, например, используют RDO, чтобы определить, разрешить ли взвешенное предсказание для текущего блока. После определения, разрешить ли взвешенное предсказание для текущего блока, когда сторона кодера передает кодированный битовый поток текущего блока, кодированный битовый поток может включать синтаксис для определения, следует ли разрешить взвешенное предсказание для текущего блока, при этом синтаксис указывает, следует ли разрешить взвешенное предсказание для текущего блока. Сторона декодера определяет, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока. Когда определяют, что текущий блок поддерживает взвешенное предсказание, сторона декодера может декодировать синтаксис для определения, следует ли разрешить взвешенное предсказание, из кодированного битового потока и определять, разрешить ли взвешенное предсказание для текущего блока на основе упомянутого синтаксиса.

[120] Например, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера может также получить угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока, при этом соответствующее описание угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов может быть отнесено к этапу 401 и не будет здесь повторяться.

[121] На этапе 412 сторона декодера конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока.

[122] Например, сторона декодера может определить начальную позицию преобразования весов текущего блока на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока или размера текущего блока. Затем сторона декодера конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока.

[123] На этапе 413 для каждой позиции пикселя текущего блока сторона декодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока.

[124] На этапе 414 сторона декодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.

[125] На этапе 415 сторона декодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.

[126] На этапе 416 для каждой позиции пикселя текущего блока сторона декодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.

[127] На этапе 417 сторона декодера определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.

[128] На этапе 418 сторона декодера определяет значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[129] Например, процессы реализации этапов 412-418 могут быть отнесены к этапам 402 - 408, с той разницей, что этапы 412-418 являются процессами на стороне декодера, а не процессами на стороне кодера, поэтому они не будут здесь повторяться.

[130] Как описано в приведенных выше технических решениях, в вариантах осуществления настоящего изобретения предоставляется эффективный способ конфигурирования весовых значений, в котором подходящее целевое весовое значение конфигурируют для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования и декодирования.

[131] Вариант 4 осуществления изобретения. В вариантах 1-3 осуществления изобретения ожидается, что взвешенная обработка будет выполняться на основе угла взвешенного предсказания, и способ взвешенной обработки может быть обозначен как угловой режим внешнего взвешенного предсказания (AWP, Angular Weighted Prediction). То есть, когда текущий блок поддерживает режим AWP, текущий блок предсказывают с использованием вариантов 1-3 осуществления изобретения для получения значений предсказания текущего блока.

[132] Варианты 1-3 осуществления изобретения включают угол взвешенного предсказания. Угол взвешенного предсказания может быть любым углом, например, любым углом в пределах 180 градусов или любым углом в пределах 360 градусов, таким как 10 градусов, 20 градусов, 30 градусов или т.п., что здесь не ограничено.

[133] В возможной реализации угол взвешенного предсказания может быть горизонтальным углом (например, углом 2 на Фиг. 7 В); или угол взвешенного предсказания может быть вертикальным углом (например, углом 6 на Фиг. 7 В); или абсолютное значение наклона угла взвешенного предсказания (абсолютное значение наклона угла взвешенного предсказания является тангенсом угла взвешенного предсказания) может быть n-й степенью числа 2, где n - целое число, например, положительное целое число, 0 и отрицательное целое число.

[134] Например, абсолютное значение наклона угла взвешенного предсказания может быть 1 (то есть значение 0-й степени числа 2), 2 (то есть значение 1-й степени числа 2), 1/2 (то есть значение -1-й степени числа 2), 4 (то есть значение 2-й степени числа 2), 1/4 (то есть значение -2-й степени числа 2), 8 (то есть значение 3-й степени числа 2) или 1/8 (то есть значение -3-й степени числа 2) и т.п. Например, на Фиг. 5 показаны восемь углов взвешенного предсказания, при этом абсолютные значения наклонов углов взвешенного предсказания представляют собой значения n-й степени числа 2.

[135] В вариантах осуществления настоящего изобретения может выполняться операция сдвига для угла взвешенного предсказания. См. последующие варианты осуществления изобретения для примеров операции сдвига угла взвешенного предсказания. Следовательно, когда абсолютное значение наклона угла взвешенного предсказания равно n-й степени числа 2, операции деления можно избежать во время операции сдвига для угла взвешенного предсказания, что облегчает реализацию сдвига.

[136] Например, количество углов взвешенного предсказания, поддерживаемых различными размерами блоков (например, размером текущего блока), может быть одинаковым или различным. Например, размер блока А поддерживает 8 углов взвешенного предсказания, размер блока В и размер блока С поддерживают 6 углов взвешенного предсказания и т.д.

[137] Вариант 5 осуществления изобретения. В вариантах 1-3 осуществления изобретения на стороне кодера или на стороне декодера необходимо сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока. В возможной реализации может использоваться следующий способ: для каждой окружающей позиции за пределами текущего блока конфигурируют опорное весовое значение окружающей позиции на основе значений координат окружающей позиции, значений координат начальной позиции преобразования весов и коэффициента преобразования весов.

[138] Например, для каждой окружающей позиции за пределами текущего блока, если окружающая позиция является окружающей позицией в одной строке сверху или в одной строке снизу от текущего блока, значение координаты окружающей позиции может быть значением абсциссы, и значение координаты начальной позиции преобразования весов может быть значением абсциссы. Альтернативно, если окружающая позиция является окружающей позицией в одном столбце слева или в одном столбце справа от текущего блока, значение координаты окружающей позиции может быть значением ординаты и значение координаты начальной позиции преобразования весов может быть значением ординаты.

[139] Например, позиция пикселя в верхнем левом углу текущего блока (например, первая позиция пикселя в верхнем левом углу) может использоваться в качестве начала координат, а значение координаты окружающей позиции текущего блока (например, значение абсциссы или значение ординаты) и значение координаты начальной позиции преобразования весов (например, значение абсциссы или значение ординаты) оба являются значениями координат относительно начала координат. Другая позиция пикселя текущего блока также может быть взята в качестве начала координат, и способ реализации аналогичен способу использования позиции пикселя в верхнем левом углу в качестве начала координат.

[140] В возможной реализации сначала определяют разность между значением координаты окружающей позиции и значением координаты начальной позиции преобразования весов, и определяют значение произведения разности и коэффициента преобразования весов текущего блока. Если значение произведения меньше первого значения (например, минимальное значение опорного весового значения, такое как 0), опорное весовое значение, связанное с окружающей позицией, определяют как первое значение. Если значение произведения превышает второе значение (например, максимальное значение опорного весового значения, такое как 8), опорное весовое значение, связанное с окружающей позицией, определяют как второе значение. Если значение произведения не меньше первого значения и не больше второго значения, опорное весовое значение, связанное с окружающей позицией, определяют как значение произведения. В другой возможной реализации опорное весовое значение, связанное с окружающей позицией, также может быть определено непосредственно на основе отношения размера между значением координаты окружающей позиции и значением координаты начальной позиции преобразования весов. Например, если значение координаты окружающей позиции меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как первое значение; и, если значение координаты окружающей позиции не меньше значения координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как второе значение. В другом примере, если значение координаты окружающей позиции меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как второе значение; и, если значение координаты окружающей позиции не меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как первое значение.

[141] Например, первое значение и второе значение могут быть сконфигурированы на основе опыта, и первое значение меньше второго значения. Первое значение и второе значение здесь не ограничиваются. В некоторых примерах первое значение может быть минимальным значением предварительно согласованных опорных весовых значений, например, 0, а второе значение может быть максимальным значением предварительно согласованных опорных весовых значений, например, 8, где 0 и 8 являются только примерами.

[142] Например, как показано на Фиг. 4D, после того как все окружающие позиции поровну разделены на восемь частей, получают семь позиций взвешенного предсказания. Когда позиция взвешенного предсказания равна 0, она указывает окружающую позицию а0, а значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции а0. Когда позиция взвешенного предсказания равна 1, она указывает окружающую позицию a1, а значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции a1 и т.д. Способ определения значения координаты начальной позиции преобразования весов здесь повторяться не будет.

[143] Вариант 6 осуществления изобретения. В вариантах 1-3 осуществления изобретения на стороне кодера или на стороне декодера необходимо сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока. В возможной реализации может использоваться следующий способ: получают угол взвешенного предсказания текущего блока, коэффициент преобразования весов текущего блока и позицию взвешенного предсказания текущего блока, определяют начальную позицию преобразования весов текущего блока на основе позиции взвешенного предсказания текущего блока и определяют параметры весовой конфигурации на основе начальной позиции преобразования весов и коэффициента преобразования весов. Параметры весовой конфигурации включают начальную позицию преобразования весов и коэффициент преобразования весов. Затем на основе параметров весовой конфигурации определяют опорные весовые значения окружающих позиций за пределами текущего блока.

[144] Процесс конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока описан ниже в сочетании с конкретными способами реализации.

[145] Сначала получают действительное количество опорных весовых значений, а затем опорные весовые значения окружающих позиций за пределами текущего блока конфигурируют в соответствии с действительным количеством опорных весовых значений.

[146] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и необходимо получить действительное количество опорных весовых значений, при этом действительное количество может быть определено на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. Например, действительное количество ValidLength можно определить следующим образом: ValidLength=(N+(М>>X))<<1, где N представляет высоту текущего блока, М представляет ширину текущего блока, X представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например 0 или 1, << означает арифметический сдвиг влево, а >> означает арифметический сдвиг вправо.

[147] В настоящем изобретении а<<b можно понимать как арифметический сдвиг влево целочисленного двоично-дополнительного представления а на b двоичных цифр, и эта операция определена, когда b является положительным числом. Проще говоря, а<<b можно понимать как умножение а на 2 в степени b. В настоящем описании а>>b можно понимать как арифметический сдвиг вправо целочисленного двоично-дополнительного представления а на b двоичных цифр, и эта операция определена, когда b является положительным числом. Проще говоря, а>>b можно понимать как деление а на 2 в степени b.

[148] В возможной реализации действительное количество опорных весовых значений может монотонно увеличиваться или монотонно уменьшаться. Опционально, действительное количество опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем включать множество вторых опорных весовых значений, или сначала включать множество вторых опорных весовых значений, а затем включать множество первых опорных весовых значений. Описание приведено ниже в сочетании с несколькими условиями.

[149] Условие 1: действительное количество опорных весовых значений может монотонно увеличиваться или монотонно уменьшаться. Например, действительное количество опорных весовых значений может быть [8 8…88765432100…0 0], то есть монотонно убывающим. В другом примере действительное количество опорных весовых значений может быть [0 0…0 0 1 2 3 4 5 6 7 8 8… 8 8], то есть монотонно возрастающим. Приведенные выше примеры являются только иллюстративными и не ограничивают настоящее изобретение.

[150] Например, опорные весовые значения могут быть сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. См. последующие варианты осуществления способа получения коэффициента преобразования весов. Начальная позиция преобразования весов может быть значением, установленным на основе опыта, или начальная позиция преобразования весов также может быть определена на основе позиции взвешенного предсказания или определена на основе угла взвешенного предсказания и позиции взвешенного предсказания, что не ограничивается.

[151] Действительное количество опорных весовых значений может монотонно увеличиваться или уменьшаться от первого к последнему. Например, если максимальное значение опорных весовых значений равно M1, а минимальное значение опорных весовых значений равно М2, действительное количество опорных весовых значений монотонно уменьшается от максимального значения M1 до минимального значения М2 или монотонно увеличивается от минимального значения М2 до максимального значения M1. Если M1 равно 8, а М2 равно 0, множество опорных весовых значений монотонно уменьшаются от 8 до 0 или монотонно увеличиваются от 0 до 8.

[152] Например, сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем, на основе коэффициента преобразования весов и начальной позиции преобразования весов, может быть определено множество опорных весовых значений. Например, опорные весовые значения могут быть определены следующим образом: у(х)=Clip3 (минимум, максимум, a*(x-s)), где х представляет индекс окружающей позиции, который находится в диапазоне от 1 до значения действительного количества, например, х равно 1, что указывает первую окружающую позицию; у(х) представляет опорное весовое значение для х-й окружающей позиции, «а» представляет коэффициент преобразования весов, a s представляет начальную позицию преобразования весов. Функция Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями. Максимальное значение и минимальное значение можно сконфигурировать на основе опыта. Для простоты последующее описание представлено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.

[153] «а» представляет коэффициент преобразования весов, и «а» может быть ненулевым целым числом, например, «а» может быть -4, -2, -1, 1, 2, 4 и т.п. Нет ограничений на значение а. Если абсолютное значение «а» равно 1, то опорные весовые значения от 0 до 8 должны пройти через 0, 1, 2, 3, 4, 5, 6, 7, 8, или опорные весовые значения от 8 до 0 должны пройти через 8, 7, 6, 5, 4, 3, 2, 1, 0.

[154] s может представлять начальную позицию преобразования весов, которая может быть определена на основе позиции взвешенного предсказания. Например, s=f (позиция взвешенного предсказания), то есть s является функцией позиции взвешенного предсказания. Например, после определения диапазона окружающих позиций за пределами текущего блока определяют действительное количество окружающих позиций, и все окружающие позиции поровну делятся на N частей, где значение N может быть сконфигурировано произвольно, например как 4, 6, 8 и т.п. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция за пределами текущего блока принимается в качестве одной из целевых окружающих позиций текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов. Опционально, значение s может быть определено на основе угла взвешенного предсказания и позиции взвешенного предсказания, например, s=f (угол взвешенного предсказания, позиция взвешенного предсказания), то есть s является функцией угла взвешенного предсказания и позиции взвешенного предсказания. Например, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания. После определения диапазона окружающих позиций за пределами текущего блока может быть определено действительное количество окружающих позиций, и все окружающие позиции поровну делятся на N частей. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция за пределами текущего блока принята в качестве одной из целевых окружающих позиций текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов.

[155] Подводя итог, можно сказать, что в у(х)=Clip3 (минимум, максимум, a*(x-s)) коэффициент «а» преобразования весов и начальная позиция s преобразования весов являются известными значениями. Для каждой из окружающих позиций х за пределами текущего блока опорное весовое значение у(х) окружающей позиции может быть определено на основе функциональной взаимосвязи. Например, если коэффициент «а» преобразования весов равен 2, а начальная позиция s преобразования весов равна 2, функциональное соотношение может быть у(х)=Clip3 (минимум, максимум, 2*(х-2)). Для каждой окружающей позиции х за пределами текущего блока может быть получено опорное весовое значение у(х).

[156] Таким образом, можно получить действительное количество опорных весовых значений текущего блока, и эти опорные весовые значения могут монотонно увеличиваться или монотонно уменьшаться. В возможном варианте осуществления изобретения опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций.

[157] Например, целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения. Например, опорное весовое значение определяют на основе начальной позиции преобразования весов, и позиции, соответствующие опорному весовому значению, принимают в качестве целевых позиций. В другом примере по меньшей мере два опорных весовых значения определяют на основе начальной позиции преобразования весов, и позиции, соответствующие по меньшей мере двум опорным весовым значениям, принимают в качестве целевых позиций.

[158] Если целевые позиции включают по меньшей мере два опорных весовых значения, по меньшей мере два опорных весовых значения целевых позиций монотонно увеличиваются или монотонно уменьшаются. Монотонное увеличение может быть строго монотонным увеличением (по меньшей мере два опорных весовых значения целевых позиций строго монотонно увеличиваются); и монотонное уменьшение может быть строго монотонным уменьшением (по меньшей мере два опорных весовых значения целевых позиций строго монотонно уменьшаются). Например, опорные весовые значения целевых позиций монотонно увеличиваются от 1 до 7 или опорные весовые значения целевых позиций монотонно уменьшаются от 7 до 1.

[159] Например, все опорные весовые значения первых соседних позиций могут быть первым опорным весовым значением, а опорные весовые значения вторых соседних позиций могут монотонно увеличиваться. Например, все опорные весовые значения первых соседних позиций могут быть равны 0, целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8.

[160] Альтернативно, все опорные весовые значения первых соседних позиций могут быть первым опорным весовым значением, а опорные весовые значения вторых соседних позиций могут монотонно уменьшаться. Например, все опорные весовые значения первых соседних позиций могут быть равны 8, целевые позиции включают одно опорное весовое значение, равное 7, а опорные весовые значения вторых соседних позиций монотонно уменьшаются от 6 до 0.

[161] Альтернативно, все опорные весовые значения первых соседних позиций являются вторым опорным весовым значением, и все опорные весовые значения вторых соседних позиций являются третьим опорным весовым значением, причем второе опорное весовое значение отличается от третьего опорного весового значения. Например, все опорные весовые значения первых соседних позиций равны 0, целевые позиции включают по меньшей мере два опорных весовых значения, которые монотонно увеличиваются от 1 до 7, а все опорные весовые значения вторых соседних позиций равны 8, при этом опорные весовые значения первых соседних позиций отличаются от опорных весовых значений вторых соседних позиций.

[162] Опционально, опорные весовые значения первых соседних позиций и опорные весовые значения вторых соседних позиций монотонно увеличиваются или монотонно уменьшаются одновременно. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются, и опорные весовые значения вторых соседних позиций также монотонно увеличиваются. В другом примере опорные весовые значения первых соседних позиций монотонно уменьшаются, и опорные весовые значения вторых соседних позиций также монотонно уменьшаются. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 3, целевые позиции включают одно опорное весовое значение, равное 4, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 5 до 8.

[163] Условие 2: действительное количество опорных весовых значений может сначала включать множество третьих значений, а затем включать множество четвертых значений, или может сначала включать множество четвертых значений, а затем включать множество третьих значений. Например, действительное количество опорных весовых значений может быть [8 8… 8 8 0 0… 0 0] или [0 0… 0 0 8 8… 8 8]. Например, множество опорных весовых значений может быть определено на основе начальной позиции преобразования весов. Например, начальная позиция преобразования весов представляет s-e опорное весовое значение. Следовательно, все опорные весовые значения перед s-м опорным весовым значением (исключая s-e опорное весовое значение) являются третьим значением (например, 8), и все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются четвертым значением (например, 0). Альтернативно, все опорные весовые значения перед s-м опорным весовым значением являются четвертым значением, а все опорные весовые значения после s-го опорного весового значения являются третьим значением.

[164] После получения действительного количества опорных весовых значений опорные весового значения окружающих позиций за пределами текущего блока конфигурируют в соответствии с действительным количеством опорных весовых значений.

[165] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и количество опорных весовых значений является действительным количеством, так что действительное количество опорных весовых значений может быть сконфигурировано как опорные весовые значения окружающих позиций за пределами текущего блока. Например, первое опорное весовое значение может быть сконфигурировано как опорное весовое значение первой окружающей позиции за пределами текущего блока, а второе опорное весовое значение может быть сконфигурировано как опорное весовое значение второй окружающей позиции за пределами текущего блока и т.д.

[166] Таким образом, опорные весовые значения сконфигурированы для окружающих позиций за пределами текущего блока, то есть каждая окружающая позиция имеет опорное весовое значение. Следовательно, опорное весовое значение, связанное с окружающей соответствующей позицией, которое является целевым весовым значением позиции пикселя, может быть определено после определения окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока.

[167] Реализация представленного выше процесса описана ниже в сочетании с несколькими конкретными сценариями применения. Например, в следующих сценариях применения предполагается, что размер текущего блока равен М * N, где М представляет ширину текущего блока, а N представляет высоту текущего блока. X представляет собой значение логарифма log2 тангенса угла взвешенного предсказания, такое как 0 или 1. Y представляет значение индекса позиции взвешенного предсказания, а А, b, с и d представляют заранее заданные постоянные значения. ValidLength представляет действительное количество, FirstPos представляет начальную позицию преобразования весов, ReferenceWeights[i] представляет опорное весовое значение i-й окружающей позиции, функция Clip3 используется для ограничения опорного весового значения между минимальным значением 0 и максимальным значением 8, i представляет собой индекс окружающих позиций за пределами текущего блока, а «а» представляет собой абсолютное значение коэффициента преобразования весов.

[168] Сценарий 1 применения: определяют действительное количество (также известное как действительная длина опорного веса, то есть ValidLength) на основе размера текущего блока и угла взвешенного предсказания текущего блока и получают начальную позицию FirstPos преобразования весов. Например, ValidLength можно определить по следующей формуле: FirstPos можно определить по следующей формуле: Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока выводится по следующей формуле: Диапазон значений i может быть от 0 до ValidLength-1 или от 1 до ValidLength. После получения опорного весового значения ReferenceWeights[i] окружающей позиции текущего блока целевое весовое значение позиции пикселя (х, у) текущего блока получают по следующей формуле: где << означает арифметический сдвиг влево, а >> означает арифметический сдвиг вправо.

[169] Сценарий 2 применения: ValidLength можно определить по следующей формуле: FirstPos можно определить по следующей формуле: Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока выводится по следующей формуле: Целевое весовое значение каждой позиции пикселя (х, у) текущего блока может быть получено по следующей формуле:

[170] Сценарий 3 применения: ValidLength можно определить по следующей формуле: FirstPos можно определить по следующей формуле: Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: Целевое весовое значение каждой позиции пикселя (х, у) текущего блока может быть получено по следующей формуле:

[171] Сценарий 4 применения: ValidLength можно определить по следующей формуле: FirstPos можно определить по следующей формуле: исходя из этого, опорные весовые значения каждой окружающей позиции текущего блока могут быть получены по следующей формуле: Целевое весовое значение каждой позиции пикселя (х, у) текущего блока может быть получено по следующей формуле:

[172] Сценарий 5 применения: на Фиг. 6 показана схематическая диаграмма опорных весовых значений для четырех коэффициентов преобразования весов.

[173] Когда абсолютное значение коэффициента преобразования весов равно 1, то есть коэффициент преобразования весов равен 1 или -1, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: а приведенную выше формулу можно переписать как В этом случае можно обратиться к первому типу, показанному на Фиг. 6, значение FirstPos может быть равно 4, то есть опорные весовые значения окружающих позиций с 1-й по 4-ю равны 0, опорное весовое значение 5-й окружающей позиции равно 1, опорное весовое значение 6-й окружающей позиции равно 2 и т.д.

[174] Когда абсолютное значение коэффициента преобразования весов равно 2, то есть коэффициент преобразования весов равен 2 или -2, опорное весовое значение каждой окружающей позиции текущего блока получают по следующей формуле: а приведенную выше формулу можно переписать как В этом случае можно обратиться ко второму типу, показанному на Фиг. 6 значение FirstPos может быть равно 6, то есть опорные весовые значения окружающих позиций с 1-й по 6-ю равны 0, опорное весовое значение 7-й окружающей позиции равно 2, опорное весовое значение 8-й окружающей позиции равно 4 и т.д.

[175] Когда абсолютное значение коэффициента преобразования весов равно 4, то есть коэффициент преобразования весов равен 4 или -4, опорное весовое значение каждой окружающей позиции текущего блока получают по следующей формуле: а приведенную выше формулу можно переписать как В этом случае можно обратиться к третьему типу, показанному на Фиг. 6, FirstPos может быть равно 7, то есть опорные весовые значения окружающих позиций с 1-й по 7-ю равны 0, опорное весовое значение 8-й окружающей позиции равно 4, опорные весовые значения окружающих позиций с 9-й по 17-ю равны 8, и т.д.

[176] Когда абсолютное значение коэффициента преобразования весов равно 8, то есть коэффициент преобразования весов равен 8 или -8, опорное весовое значение каждой окружающей позиции текущего блока получают по следующей формуле: а приведенную выше формулу можно переписать как В этом случае можно обратиться к четвертому типу, показанному на Фиг. 6, FirstPos может быть равно 8, то есть опорные весовые значения окружающих позиций с 1-й по 8-ю равны 0, опорное весовое значение 9-й окружающей позиции равно 8, опорные весовые значения окружающих позиций с 10-й по 17-ю равны 8 и т.д.

[177] Таким образом, когда абсолютное значение коэффициента преобразования весов равно 1, FirstPos равно 4; когда абсолютное значение коэффициента преобразования весов равно 2, FirstPos равно 6 (т.е. FirstPos при коэффициенте преобразования весов, равном 1, плюс 2); и когда абсолютное значение коэффициента преобразования весов равно 4, FirstPos равно 7 (т.е. FirstPos при коэффициенте преобразования весов, равном 1, плюс 3). Исходя из этого позиции с опорным весовым значением 4 могут быть выровнены.

[178] Например, для текущего блока, когда поддерживается переключение коэффициента преобразования весов и разрешено переключение коэффициента преобразования весов, для переключения может быть выбран один из 4 типов для распределений опорных весовых значений коэффициента преобразования весов, показанных на Фиг. 6, так что путем переключения коэффициента преобразования весов для изображения или для части изображения можно уменьшить проблему, состоящую в том, что быстрые изменения значений отображения изображения в некоторых сценах отображения изображения заметны. Например, ожидается, что в некоторых сценах отображения изображения проблема, связанная с заметными быстрыми изменениями значений, будет уменьшена, и переключение коэффициента преобразования весов в режиме AWP может решить эту проблему. Например, смешанный контент изображения включает часть экранных контентов, мультфильмы, изображения, содержащие мультфильмы и т.п., переключение коэффициента преобразования весов может быть применено к определенной области, содержащей экранные контенты, чтобы уменьшить проблему, заключающуюся в том, что быстрые изменения значений заметны.

[179] В приведенном выше процессе значение ValidLength связано с углом взвешенного предсказания текущего блока и размером текущего блока. Для упрощения схемы некоторые параметры могут быть фиксированными для достижения оптимизации. Например, угол взвешенного предсказания текущего блока может быть установлен равным фиксированному значению параметра, a ValidLength относится только к размеру текущего блока. Значение FirstPos связано с углом взвешенного предсказания текущего блока, размером текущего блока и позицией взвешенного предсказания текущего блока. В другом примере угол взвешенного предсказания текущего блока может быть сконфигурирован как фиксированное значение параметра, а значение FirstPos относится только к размеру текущего блока и позиции взвешенного предсказания текущего блока. Опционально, позиция взвешенного предсказания текущего блока может быть сконфигурирована как фиксированное значение параметра, а значение FirstPos относится только к размеру текущего блока и углу взвешенного предсказания текущего блока. Опционально, угол взвешенного предсказания текущего блока и позиция взвешенного предсказания текущего блока могут быть сконфигурированы как значения фиксированных параметров, которые могут быть одинаковыми или разными, а значение FirstPos относится только к размеру текущего блока.

[180] Вариант 7 осуществления изобретения. В вариантах 1-3 осуществления изобретения на стороне кодера или на стороне декодера необходимо сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока в соответствии с коэффициентом преобразования весов текущего блока и начальной позицией преобразования весов текущего блока. В возможной реализации М и N представляют ширину и высоту текущего блока соответственно. Как показано на Фиг. 7А, способ получения весового массива для углового режима взвешенного предсказания (AWP) может включать следующее.

[181] На этапе a1 получают такие параметры, как stepIdx, angleIdx и subAngleIdx, на основе AwpIdx.

[182] Например, AwpIdx представляет значение индекса угла взвешенного предсказания и позиции взвешенного предсказания. Если имеется 7 позиций взвешенного предсказания и 8 углов взвешенного предсказания, диапазон значений AwpIdx составляет от 0 до 55. Если позиции взвешенного предсказания от -3 до 3 (представляющая четвертую позицию взвешенного предсказания является центром, а четвертая позиция взвешенного предсказания равна 0), и, если индекс угла взвешенного предсказания равен 0-7, позиции взвешенного предсказания и углы взвешенного предсказания, соответствующие 56 значениям индекса AwpIdx, показаны в Таблице 1.

[183] Например, stepIdx представляет позицию взвешенного предсказания (например, значение индекса позиции взвешенного предсказания), которая находится в диапазоне от -3 до 3. Например, для первой позиции взвешенного предсказания значение индекса позиции взвешенного предсказания равно -3; для второй позиции взвешенного предсказания значение индекса позиции взвешенного предсказания равно -2 и т.д.; для седьмой позиции взвешенного предсказания значение индекса позиции взвешенного предсказания равно 3.

[184] angleIdx представляет собой значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания (например, 0, или 1, или большую константу), a subAngleIdx представляет угловую область, в которой находится угол взвешенного предсказания. На Фиг. 7В показаны восемь углов взвешенного предсказания, где angleIdx угла 0 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 0 взвешенного предсказания, angleIdx угла 1 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 1 взвешенного предсказания и т.д., a angleIdx угла 7 взвешенного предсказания является значением логарифма log2 абсолютного значения наклона угла 7 взвешенного предсказания. Угол 0 взвешенного предсказания и угол 1 взвешенного предсказания расположены в угловой области 0, угол 2 взвешенного предсказания и угол 3 взвешенного предсказания расположены в угловой области 1, угол 4 взвешенного предсказания и угол 5 взвешенного предсказания расположены в угловой области 2, а угол 6 взвешенного предсказания и угол 7 взвешенного предсказания расположены в угловой области 3.

[185] Например, stepIdx можно определить по следующей формуле:

[186] Например, modAngNum(индекс угла) может быть сначала определен на основе следующей формулы: затем angleIdx определяют на основе modAngNum следующим образом: если значение modAngNum равно 2, angleIdx=7; если значение modAngNum равно 6, angleIdx=8; в противном случае angularIdx=modAngNum % 2.

[187] Например, subAngleIdx можно определить по следующей формуле:

[188] Таким образом, после определения угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока сторона кодера на основе угла взвешенного предсказания и позиции взвешенного предсказания может определить значение AwpIdx, как показано в Таблице 1. Когда сторона кодера передает кодированный битовый поток стороне декодера, кодированный битовый поток может содержать значение AwpIdx. Таким образом, сторона декодера может получить значение AwpIdx, а затем получить stepIdx, angleIdx и sub AngleIdx на основе AwpIdx.

[189] Например, на основе angleIdx и sub AngleIdx один угол взвешенного предсказания может быть однозначно определен, как показано в Таблице 2. Угол взвешенного предсказания также может быть определен другим способом, например, путем изменения номера раздела и т.д.

[190] На этапе а2 на основе stepIdx, angleIdx и sub AngleIdx конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока. Этап а2 включает следующие условия.

[191] Условие 1: если значение subAngleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания равен углу 0 взвешенного предсказания или углу 1 взвешенного предсказания, начальная позиция FirstPos преобразования весов может определяться по следующей формуле: Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: Формула приведена для минимального значения опорных весовых значений, равного 0, максимального значения опорных весовых значений, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, то есть приведенная выше формула может быть эквивалентна ReferenceWeights[x]=Clip3 (минимум, максимум, a*(x-FirstPos)), где х может относиться к индексу одной из окружающих позиций за пределами текущего блока, х находится в диапазоне от 0 до ValidLength_H-1, а «а» представляет коэффициент преобразования весов.

[192] В приведенной выше формуле ValidLength_H может представлять количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subAngleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Поэтому действительное количество обозначается как ValidLength H. Например, действительное количество ValidLength H может быть определено по следующей формуле: сдвиг влево на один бит обусловлен тем, что формула использует точность 1/2 пикселя. Если используется точность 1 пиксель, формула будет следующей:

Если используется точность 1/4 пикселя, формула будет следующей: Если используется точность 2 пикселя, Может использоваться другая пиксельная точность, и здесь не приводится избыточных описаний. В последующих формулах операции, включающие >>1, могут измениться для различной пиксельной точности.

[193] В приведенной выше формуле DeltaPos_H представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subAngleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в столбце слева от текущего блока. Поэтому параметр изменения позиции обозначается как DeltaPos_H. Например, DeltaPos_H определяется по следующей формуле:

[194] Условие 2: если значение subAngleIdx равно 1, то есть угол взвешенного предсказания находится в угловой области 1, например, угол взвешенного предсказания является углом 2 взвешенного предсказания или углом 3 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: Формула приведена для минимального опорного весового значения, равного 0, максимального значения опорных весовых значений, равного 8, и коэффициента преобразования весов, равного "а", в качестве примера, х может представлять индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLength_H-1.

[195] В приведенной выше формуле могут быть отнесены к условию 1 и здесь повторяться не будут.

[196] Условие 3: если значение subAngleIdx равно 2, то есть угол взвешенного предсказания находится в угловой области 2, например, угол взвешенного предсказания является углом 4 взвешенного предсказания или углом 5 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного "а", в качестве примера, х может представлять индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLengthW -1.

[197] В приведенной выше формуле ValidLength_W представляет количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subAngleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в одной верхней строке. Поэтому действительное количество обозначается как ValidLength_W. Например, действительное количество ValidLength_W может быть определено по следующей формуле:

[198] В приведенной выше формуле DeltaPos_W представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subAngleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в строке сверху от текущего блока. Поэтому параметр изменения позиции обозначается как DeltaPos_W. Например, DeltaPos_W определяется по следующей формуле:

[199] Условие 4: если значение subAngleIdx равно 3, то есть угол взвешенного предсказания находится в угловой области 3, например, угол взвешенного предсказания представляет собой угол 6 взвешенного предсказания или угол 7 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х может представлять индекс окружающих позиций за пределами текущего блока и находится в диапазоне от 0 до ValidLength_W-1.

[200] В приведенной выше формуле ValidLength_W и DeltaPos_W могут быть отнесены к условию 3 и здесь повторяться не будут.

[201] Таким образом, можно определить, какое условие следует использовать, на основе subAngleIdx, например, в условиях 1 и 2 ValidLength_H и DeltaPos_H определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_H и DeltaPos_H, и затем опорные весовые значения конфигурируют на основе FirstPos. В условиях 3 и 4 ValidLength-W и DeltaPos_W определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_W и DeltaPos_W, и затем опорные весовые значения конфигурируют на основе FirstPos.

[202] Формулы вышеперечисленных условий отличаются следующим: когда в качестве начала координат используется левый верхний угол текущего блока, изменяется начальная позиция опорного весового значения ReferenceWeights[x]. Например, на Фиг. 7С показаны примеры угловой области 2 и угловой области 3. Когда используется точность 1/2 пикселя, начальная позиция опорного весового значения то есть смещение в формуле равно "- Угловая область 0 и угловая область 1 реализуются аналогичным образом, за исключением того, что смещение в формуле равно то есть высота изменяется на ширину.

[203] На этапе а3 получают весовое значение яркости позиции пикселя на основе angleIdx и опорного весового значения ReferenceWeight[x].

[204] Условие 1: если значение subAngleIdx равно 0, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: где представляет собой окружающую позицию, указанную позицией пикселя (х, у), представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[205] Условие 2: если значение subAngleIdx равно 1, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: где представляет окружающую позицию, указанную позицией пикселя (х, у), представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[206] Условие 3: если значение subAngleIdx равно 2, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: где ( представляет собой окружающую позицию, указанную позицией пикселя (х, у), представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[207] Условие 4: если значение subAngleIdx равно 3, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: где представляет окружающую позицию, указанную позицией пикселя (х, у), представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[208] Вышеупомянутые этапы а2 и а3 могут быть объединены в один этап. Например, этап а2 (конфигурирование опорного весового значения для окружающих позиций за пределами текущего блока в соответствии с stepIdx, angleIdx и subAngleIdx) и этап а3 (получение весового значения яркости в соответствии с angleIdx и опорным весовым значением ReferenceWeight[x]) могут быть объединены следующим образом: получение весового значения яркости позиции пикселя в соответствии с stepIdx, angleIdx и subAngleIdx, т.е. определенного на основе значений координат окружающих позиций и значений координат начальной позиции преобразования весов.

[209] Например, с условием 1, если значение subAngleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания является углом 0 взвешенного предсказания или углом 1 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: Затем весовое значение яркости позиции пикселя (х, у) определяют по следующей формуле: где (у<<1)+((х<<1)>>angleIdx) представляет окружающую соответствующую позицию, указанную позицией пикселя (х, у). Другие условия аналогичны.

[210] На этапе а4 получают весовое значение цветности для позиции пикселя на основе весового значения яркости для позиции пикселя, а весовое значение яркости для позиции пикселя и весовое значение цветности для позиции пикселя могут формировать целевое весовое значение позиции пикселя.

[211] Например, если используется формат разрешения цветности 4:2:0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: В другом примере, если используется формат разрешения цветности 4:4:4, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: Диапазон значений х составляет от 0 до М/2-1, а диапазон значений у составляет от 0 до N/2-1.

[212] Этап а4 может быть реализован другим способом: вместо получения весового значения цветности на основе весового значения яркости весовое значение цветности для позиции пикселя получают на основе angleIdx и опорного весового значения ReferenceWeight[x]. Например, если используется формат разрешения цветности 4:2:0, весовое значение цветности для позиции пикселя может быть получено на основе angleIdx и опорного весового значения ReferenceWeight[x].

[213] Например, если значение subAngleIdx равно 0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле:

[214] Например, если значение subAngleIdx равно 1, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле:

[215] Например, если значение subAngleIdx равно 2, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле:

[216] Например, если значение subAngleIdx равно 3, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле:

[217] В приведенных выше формулах диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[218] На этапах а3 и а4 формулы указанных условий отличаются следующим. На Фиг. 7D показаны примеры угловой области 2 и угловой области 3. Когда левый верхний угол текущего блока принят за начало координат, формула вычисления соответствующей позиции (х, у) в угловой области 2 может быть х-у>>angleIdx, а формула вычисления соответствующей позиции (х, у) в угловой области 3 может быть х+у>>angleIdx. Когда используется точность 1/2 пикселя, формула вычисления соответствующей позиции (х, у) в угловой области 2 может быть (х<<1) - (у<<1)>>angleIdx, и формула вычисления соответствующей позиции (х, у) в угловой области 3 может быть (х<<1)+(у<<1)>>angleIdx. Угловая область 0 и угловая область 1 могут быть реализованы аналогичным образом, за исключением того, что позиции (х, у) меняются местами.

[219] Вариант 8 осуществления изобретения. В вариантах 1-3 осуществления изобретения сторона кодера или сторона декодера ожидает получить коэффициент преобразования весов текущего блока. Если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока получают следующим образом: получение первой информации указания коэффициента преобразования весов для текущего блока и определение коэффициента преобразования весов текущего блока на основе первой информации указания коэффициента преобразования весов. Например, если первая информация указания коэффициента преобразования весов представляет собой первую информацию указания, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; а если первая информация указания коэффициента преобразования весов является второй информацией указания, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Если текущий блок не поддерживает режим переключения коэффициента преобразования весов, заранее заданный коэффициент преобразования весов определяют как коэффициент преобразования весов текущего блока. Первая информация указания коэффициента преобразования весов может быть получена из LCU, слайса, изображения, последовательности и т.п., где находится текущий блок. Например, первая информация указания коэффициента преобразования весов может быть информацией указания уровня изображения, такой как информация указания уровня PPS, информации указания уровня РН.

[220] Таким образом, если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть либо первым коэффициентом преобразования весов, либо вторым коэффициентом преобразования весов, и первый коэффициент преобразования весов отличается от второго коэффициента преобразования весов. Таким образом, коэффициент преобразования весов текущего блока является переменным, так что коэффициент преобразования весов может переключаться адаптивно вместо использования единого коэффициента преобразования весов.

[221] Например, если информация управления переключением позволяет текущему блоку включить режим переключения коэффициента преобразования весов, текущий блок поддерживает режим переключения коэффициента преобразования весов, и если информация управления переключением не позволяет текущему блоку включить режим переключения коэффициента преобразования весов, текущий блок не поддерживает режим переключения коэффициента преобразования весов. Информация управления переключением может включать, не ограничиваясь этим, информацию управления переключением уровня последовательности, информацию управления переключением уровня изображения, информацию управления переключением уровня слайса, информацию управления переключением уровня тайла, информацию управления переключением уровня патча, информацию управления переключением уровня CTU, информацию управления переключением уровня LCU, информацию управления переключением уровня блока, информацию управления переключением уровня CU, информацию управления переключением уровня PU и т.д.

[222] Стороне кодера может быть сообщена информация управления переключением и то, позволяет ли информация управления переключением включить текущему блоку режим переключения коэффициента преобразования весов, а затем определяет, поддерживает ли текущий блок режим переключения коэффициента преобразования весов. Сторона кодера может кодировать информацию управления переключением в битовый поток. Таким образом, сторона декодера может анализировать информацию управления переключением из битового потока, получать информацию о том, позволяет ли информация управления переключением включить текущему блоку режим переключения коэффициента преобразования весов, а затем определять, поддерживает ли текущий блок режим переключения коэффициента преобразования весов. Вместо того, чтобы кодировать информацию управления переключением в битовый поток на стороне кодера, сторона декодера может неявным образом получить информацию управления переключением, чтобы узнать, позволяет ли информация управления переключением включить текущему блоку режим переключения коэффициента преобразования весов, а затем определяет, поддерживает ли текущий блок режим переключения коэффициента преобразования весов.

[223] Возьмем в качестве примера информацию управления переключением уровня последовательности, информацией управления переключением уровня последовательности может быть awp_adptive_flag (бит флага адаптации углового внешнего взвешенного предсказания). Если awp_adptive_flag является первой величиной, это означает, что информация управления переключением уровня последовательности позволяет текущей последовательности включить режим переключения коэффициента преобразования весов, тем самым позволяя текущему блоку включить режим переключения коэффициента преобразования весов. Если awp_adptive_flag является второй величиной, это означает, что информация управления переключением уровня последовательности не позволяет текущей последовательности включить режим переключения коэффициента преобразования весов и, таким образом, не позволяет текущему блоку включить режим переключения коэффициента преобразования весов. Например, первая величина равна 1, а вторая величина равна 0, или первая величина равна 0, а вторая величина - величина 1. Выше приведены только примеры первой величины и второй величины, и на них нет никаких ограничений. Для других типов информации управления переключением процессы реализации аналогичны процессам реализации информации управления переключением уровня последовательности и здесь повторяться не будут.

[224] В возможной реализации первая информация указания коэффициента преобразования весов в текущем блоке может быть идентификацией SCC (Screen Content Coding, кодирование экранного контента), соответствующей текущему блоку, первая информация указания предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, а вторая информация указания предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента (non-SCC). На основе этого может быть получена идентификация SCC, соответствующая текущему блоку, и коэффициент преобразования весов текущего блока может быть определен на основе идентификации SCC. Например, если идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; и если идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.

[225] Например, абсолютное значение первого коэффициента преобразования весов может быть больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. В другом примере абсолютное значение первого коэффициента преобразования весов может быть равно 2, а абсолютное значение второго коэффициента преобразования весов может быть равно 1. В другом примере абсолютное значение первого коэффициента преобразования весов может быть равно 8, а абсолютное значение второго коэффициента преобразования весов может быть равно 1, или 2, или 4. В другом примере, абсолютное значение первого коэффициента преобразования весов может быть равно 8 или 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. Выше приведены только примеры, которые не накладывают никаких ограничений при условии, что абсолютное значение первого коэффициента преобразования весов больше, чем абсолютное значение второго коэффициента преобразования весов.

[226] Например, идентификация SCC может включать, не ограничиваясь этим: идентификацию SCC уровня последовательности, идентификацию SCC уровня изображения, идентификацию SCC уровня слайса, идентификацию SCC уровня тайла, идентификацию SCC уровня патча, идентификацию SCC уровня CTU, идентификацию SCC уровня LCU, идентификацию SCC уровня блока, идентификацию SCC уровня CU, идентификацию SCC уровня PU и т.д., что не ограничивается здесь. Например, идентификация SCC уровня последовательности, соответствующая текущему блоку, может быть определена как идентификация SCC, соответствующая текущему блоку, или идентификация SCC уровня изображения, соответствующая текущему блоку, может быть определена как идентификация SCC, соответствующая текущему блоку, и т.д. при условии, что может быть получена идентификация SCC, соответствующая текущему блоку.

[227] Например, сторона кодера может определить, принадлежит ли текущий блок SCC или non-SCC. Если текущий блок принадлежит SCC, сторона кодера определяет коэффициент преобразования весов текущего блока как первый коэффициент преобразования весов. Если текущий блок принадлежит non-SCC, сторона кодера определяет коэффициент преобразования весов текущего блока как второй коэффициент преобразования весов. Опционально, для стороны кодера может быть получена идентификация SCC, соответствующая текущему блоку, и, если идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC, сторона кодера определяет коэффициент преобразования весов текущего блока как первый коэффициент преобразования весов. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC, сторона кодера определяет коэффициент преобразования весов текущего блока как второй коэффициент преобразования весов.

[228] Сторона кодера может кодировать идентификацию SCC (например, идентификацию SCC уровня последовательности, идентификацию SCC уровня изображения, идентификацию SCC уровня слайса и т.д.) в битовый поток. Таким образом, сторона декодера может анализировать идентификацию SCC из битового потока и определить идентификацию SCC как идентификацию SCC, соответствующую текущему блоку, например, идентификацию SCC уровня последовательности, соответствующую текущему блоку, можно определить как идентификацию SCC, соответствующую текущему блоку. Подводя итог, можно сказать, что стороне декодера может быть сообщена идентификация SCC, соответствующая текущему блоку. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC, сторона декодера определяет коэффициент преобразования весов текущего блока как первый коэффициент преобразования весов. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC, сторона декодера определяет коэффициент преобразования весов текущего блока как второй коэффициент преобразования весов. Например, если идентификация SCC представляет собой первую величину, она предназначена для указания того, что текущий блок принадлежит SCC, а если идентификация SCC представляет собой вторую величину, она предназначена для указания того, что текущий блок принадлежит non-SCC. Первая величина равна 1, а вторая величина равна 0, или первая величина равна 0, а вторая величина равна 1. Выше приведены только примеры первой величины и второй величины, и на них нет никаких ограничений.

[229] Вместо того чтобы кодировать идентификацию SCC в битовый поток, сторона кодера может неявным образом получить идентификацию SCC, используя ту же информацию, что и сторона декодера. Таким образом, сторона декодера также может неявным образом получить идентификацию SCC и определить идентификацию SCC как идентификацию SCC, соответствующую текущему блоку. Например, если все несколько последовательных изображений используют SCC, может быть получено текущее изображение с использованием SCC, поэтому сторона декодера неявным образом выводит идентификацию SCC уровня изображения и определяет идентификацию SCC как идентификацию SCC, соответствующую текущему блоку, и идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC. Например, если несколько последовательных изображений используются как non-SCC, может быть получено текущее изображение non-SCC, таким образом, сторона декодера неявно выводит идентификацию SCC уровня изображения, и идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC. Например, если доля режима IBC среди всех выбранных режимов в текущем изображении меньше определенного процента, следующее изображение определяют как non-SCC, в противном случае следующее изображение определяют как SCC. Описанные выше способы являются только примерами неявного получения идентификации SCC, и нет никаких ограничений на неявные способы получения. Подводя итог, можно сказать, что сторона декодера может получить идентификацию SCC, соответствующую текущему блоку. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, сторона декодера определяет коэффициент преобразования весов текущего блока как первый коэффициент преобразования весов. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного содержимого, сторона декодера определяет коэффициент преобразования весов текущего блока как второй коэффициент преобразования весов. Например, если идентификация SCC представляет собой первую величину, она предназначена для указания того, что текущий блок принадлежит SCC, а если идентификация SCC представляет собой вторую величину, она предназначена для указания того, что текущий блок принадлежит non-SCC.

[230] Таким образом, коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов или вторым коэффициентом преобразования весов. То есть коэффициент преобразования весов текущего блока может переключаться, и переключение коэффициента преобразования весов зависит от явной идентификации SCC или неявной идентификации SCC определенного уровня. Явная идентификация SCC означает, что scc_flag (идентификация SCC) кодируется в битовом потоке, так что сторона декодера анализирует идентификацию SCC из битового потока, а неявная идентификация SCC означает, что сторона декодера адаптивно получает идентификацию SCC на основе информации, доступной стороне декодера.

[231] Идентификация SCC определенного уровня включает: идентификацию SCC уровня последовательности для указания текущей последовательности, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущей последовательности; идентификацию SCC уровня изображения для указания текущего изображения, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущему изображению; идентификацию SCC уровня слайса для указания текущего слайса, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущему слайсу; идентификацию SCC уровня тайла для указания текущего тайла, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущему тайлу; идентификацию SCC уровня патча для указания текущего патча, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущему патчу; идентификацию SCC уровня CTU для указания текущей CTU, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущей CTU; идентификацию SCC уровня LCU для указания текущей LCU, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущей LCU; идентификацию SCC уровня блока для указания текущего блока, которая используется в качестве идентификации SCC всех блоков, принадлежащих текущему блоку; идентификацию SCC уровня CU для указания текущей CU, которая используется в качестве идентификации SCC, принадлежащей текущей CU; и идентификацию SCC уровня PU для указания текущей PU, которая используется в качестве идентификации SCC, принадлежащей текущей PU.

[232] Например, второй коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию, и нет необходимости переключать коэффициент преобразования весов, когда идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC, т.е. коэффициент преобразования весов текущего блока определяется как второй коэффициент преобразования весов. Когда идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC, ожидается, что коэффициент преобразования весов будет переключен, то есть коэффициент преобразования весов текущего блока определяют как первый коэффициент преобразования весов. Опционально, первый коэффициент преобразования весов может использоваться в качестве коэффициента преобразования весов по умолчанию, и ожидается, что коэффициент преобразования весов будет переключен, когда идентификация SCC предназначена для указания того, что текущий блок принадлежит non-SCC, то есть коэффициент преобразования весов текущего блока определяют как второй коэффициент преобразования весов. Когда идентификация SCC предназначена для указания того, что текущий блок принадлежит SCC, нет необходимости переключать коэффициент преобразования весов, то есть коэффициент преобразования весов текущего блока определяют как первый коэффициент преобразования весов.

[233] Например, на Фиг. 8А показана схематическая диаграмма последовательности SCC (например, последовательности, принадлежащей SCC). На Фиг. 8В проиллюстрирована схематическая диаграмма натуральной последовательности (например, последовательности, принадлежащей non-SCC). Для последовательностей SCC изменение цвета завершается после одного пикселя, в то время как для натуральных последовательностей изменение цвета занимает переход в несколько пикселей. Подводя итог, можно видеть, что последовательности SCC обычно имеют такие характеристики, как постоянный цвет на больших участках и быстрое изменение цвета, и взвешенное предсказание для последовательностей SCC также должно адаптироваться к таким характеристикам. Следовательно, весовое значение режима AWP должно уменьшить характеристики плавного перехода, то есть коэффициент преобразования весов должен быть увеличен, чтобы адаптироваться к характеристикам последовательностей SCC. Таким образом, когда текущий блок принадлежит SCC, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов, а когда текущий блок принадлежит non-SCC, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов, при этом абсолютное значение первого коэффициента преобразования весов больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов равно 4, а абсолютное значение второго коэффициента преобразования весов равно 1. Таким образом, увеличивается абсолютное значение коэффициента преобразования весов текущего блока, принадлежащего последовательности SCC, то есть увеличивается скорость преобразования. Например, увеличение эффективности (например, увеличение эффективности по коэффициенту BD) при фактической проверке для последовательности SCC показано в Таблице 3, где представлено увеличение эффективности при переключении коэффициента преобразования весов с 1 на 4. Как показано в Таблице 3, для компонента канала Y последовательности SCC 1 может быть получено увеличение эффективности по коэффициенту BD на -1,83% при переключении коэффициента преобразования весов с 1 на 4, что эквивалентно при тех же объективных условиях качества уменьшению скорости кодирования на 1,83% при переключении коэффициента преобразования весов. Для компонента канала U последовательности 1 SCC скорость кодирования может быть снижена на 1,19% при переключении коэффициента преобразования весов с 1 на 4, а для компонента канала V последовательности 1 SCC скорость кодирования может быть снижена на 1,05% при переключении коэффициента преобразования весов с 1 на 4. Когда коэффициент преобразования весов переключается с 1 на 4, сложность кодирования на стороне кодера остается неизменной, а сложность декодирования на стороне декодера увеличивается до 101%. Для других последовательностей SCC скорость кодирования также может быть снижена, когда коэффициент преобразования весов переключается с 1 на 4. Таким образом, увеличение эффективности может быть больше.

[234] В другой возможной реализации первая информация указания коэффициента преобразования весов в текущем блоке может быть идентификацией переключения коэффициента преобразования весов, соответствующей текущему блоку, при этом первая информация указания предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, а вторая информация указания предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов. На основе этого может быть получена идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку, и коэффициент преобразования весов текущего блока может быть определен в соответствии с идентификацией переключения коэффициента преобразования весов. Например, если идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов. Если идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть вторым коэффициентом преобразования весов. Абсолютное значение первого коэффициента преобразования весов не равно абсолютному значению второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 2, а абсолютное значение второго коэффициента преобразования весов может быть равно 1. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 8, а абсолютное значение второго коэффициента преобразования весов может быть равно 1, 2 или 4. В другом примере абсолютное значение первого коэффициента преобразования весов может быть меньше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 1, а абсолютное значение второго коэффициента преобразования весов может быть равно 2, 4 или 8. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 2, а абсолютное значение второго коэффициента преобразования весов может быть равно 4 или 8. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 8. Выше приведены только примеры, и не накладываются ограничения при условии, что абсолютное значение первого коэффициента преобразования весов не равно абсолютному значению второго коэффициента преобразования весов.

[235] Например, идентификация переключения коэффициента преобразования весов может включать, не ограничиваясь этим, идентификацию переключения коэффициента преобразования весов уровня последовательности, идентификацию переключения коэффициента преобразования весов уровня изображения, идентификацию переключения коэффициента преобразования весов уровня слайса, идентификацию переключения коэффициента преобразования весов уровня тайла, идентификацию переключения коэффициента преобразования весов уровня патча, идентификацию переключения коэффициента преобразования весов уровня CTU, идентификацию переключения коэффициента преобразования весов уровня LCU, идентификацию переключения коэффициента преобразования весов уровня блока, идентификацию переключения коэффициента преобразования весов уровня CU, идентификацию переключения коэффициента преобразования весов уровня PU, и т.д., что здесь не ограничено.

[236] Например, идентификация переключения коэффициента преобразования весов уровня последовательности, соответствующая текущему блоку, может быть определена как идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку, или идентификация переключения коэффициента преобразования весов уровня изображения, соответствующая текущему блоку, может быть определена как идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку, и т.д., при условии, что можно получить идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку.

[237] Например, первый коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию, и сторона кодера может быть проинформирована о том, требует ли текущий блок переключения коэффициента преобразования весов. Если текущий блок не требует переключения коэффициента преобразования весов, сторона кодера определяет коэффициент преобразования весов текущего блока в качестве первого коэффициента преобразования весов. Если текущий блок требует переключения коэффициента преобразования весов, сторона кодера определяет коэффициент преобразования весов текущего блока как второй коэффициент преобразования весов. Опционально, стороне кодера может быть сообщена идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку, и, если идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, сторона кодера может определить, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов, сторона кодера определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.

[238] Например, сторона кодера определяет значение 1 стоимости RDO, соответствующее первому коэффициенту преобразования весов, и значение 2 стоимости RDO, соответствующее второму коэффициенту преобразования весов. Если значение 1 стоимости RDO меньше значения 2 стоимости RDO, сторона кодера определяет текущий блок, не требующий переключения коэффициента преобразования весов, и если значение 2 стоимости RDO меньше значения 1 стоимости RDO, сторона кодера определяет текущий блок, требующий переключения коэффициента преобразования весов.

[239] Сторона кодера может кодировать идентификацию переключения коэффициента преобразования весов (например, идентификацию переключения коэффициента преобразования весов уровня последовательности и т.д.) в битовый поток, заставляя сторону декодера анализировать идентификацию переключения коэффициента преобразования весов из битового потока и определять эту идентификацию переключения коэффициента преобразования весов как идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку. Таким образом, стороне декодера может быть сообщена идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку. Если эта идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, сторона декодера определяет коэффициент преобразования весов текущего блока как первый коэффициент преобразования весов. Если идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов, сторона декодера определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Например, если идентификация переключения коэффициента преобразования весов является первой величиной, это указывает на то, что текущий блок не требует переключения коэффициента преобразования весов, а если идентификация переключения коэффициента преобразования весов является второй величиной, это указывает на то, что текущий блок требует переключения коэффициента преобразования весов. Первая величина равна 1, а вторая величина равна 0, или первая величина равна 0, а вторая величина равна 1. Выше приведены только примеры первой величины и второй величины, и на это нет никаких ограничений.

[240] Вместо того чтобы кодировать идентификацию переключения коэффициента преобразования весов в битовый поток на стороне кодера, сторона декодера может неявным образом получить идентификацию переключения коэффициента преобразования весов и определить эту идентификацию переключения коэффициента преобразования весов как идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку. Например, если все несколько последовательных блоков требуют переключения коэффициента преобразования весов, текущий блок также может потребовать переключения коэффициента преобразования весов. Таким образом, сторона декодера неявным образом выводит идентификацию переключения коэффициента преобразования весов и определяет идентификацию переключения коэффициента преобразования весов как идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку, и идентификация переключения коэффициента преобразования весов указывает на то, что текущий блок требует переключения коэффициента преобразования весов. Если все несколько последовательных блоков не требуют переключения коэффициента преобразования весов, текущий блок также может не требовать переключения коэффициента преобразования весов. Таким образом, сторона декодера неявным образом выводит идентификацию переключения коэффициента преобразования весов, и идентификация переключения коэффициента преобразования весов указывает на то, что текущий блок не требует переключения коэффициента преобразования весов. Описанные выше способы являются только примерами неявного получения идентификации переключения коэффициента преобразования весов, и нет никаких ограничений на способы получения. Таким образом, стороне декодера может быть сообщена идентификация переключения коэффициента преобразования весов, соответствующая текущему блоку. Если идентификация переключения коэффициента преобразования весов указывает на то, что текущий блок не требует переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока определяют как первый коэффициент преобразования весов. Если идентификация переключения коэффициента преобразования весов указывает на то, что текущий блок требует переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока определяют как второй коэффициент преобразования весов.

[241] Таким образом, коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов или вторым коэффициентом преобразования весов, то есть коэффициент преобразования весов текущего блока может переключаться, а переключение коэффициента преобразования весов зависит от идентификации переключения коэффициента преобразования весов (refine_flag) определенного уровня, refine_flag может быть явной или неявной идентификацией. Явная идентификация означает, что refine_flag кодируют в битовом потоке, заставляя сторону декодера анализировать refine_flag из битового потока, а неявная идентификация означает, что сторона кодера и сторона декодера адаптивно получают refine_flag на основе информации, которая может быть получена.

[242] Например, refine_flag определенного уровня включает: refine_flag уровня последовательности для указания текущей последовательности, который используется в качестве refine_flag для всех блоков, принадлежащих текущей последовательности; refine_flag уровня изображения для указания текущего изображения, который используется в качестве refine_flag всех блоков, принадлежащих текущему изображению; refine_flag уровня слайса для указания текущего слайса, который используется в качестве refine_flag всех блоков, принадлежащих текущему слайсу; refine_flag уровня тайла для указания текущего тайла, который используется в качестве refine_flag всех блоков, принадлежащих текущему тайлу; refine_flag уровня патча для указания текущего патча, который используется в качестве refine_flag всех блоков, принадлежащих текущему патчу; refine_flag уровня CTU для указания текущей CTU, который используется в качестве refine_flag для всех блоков, принадлежащих текущей CTU; refine_flag уровня LCU для указания текущей LCU, который используется в качестве refine_flag для всех блоков, принадлежащих текущей LCU; refine_flag уровня блока для указания текущего блока, который используется в качестве refine_flag всех блоков, принадлежащих текущему блоку; refine_flag уровня CU для указания текущей CU, который используется в качестве refine_flag, принадлежащего текущей CU; и refine_flag уровня PU для указания текущей PU, который используется в качестве refine_flag, принадлежащего текущей PU. Выше приведены лишь примеры, и здесь нет никаких ограничений.

[243] Например, первый коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию. Когда идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, переключение коэффициента преобразования весов не выполняют для текущего блока, то есть коэффициент преобразования весов текущего блока определяют как первый коэффициент преобразования весов. Когда идентификация переключения коэффициента преобразования весов предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов, коэффициент преобразования весов переключают, то есть коэффициент преобразования весов текущего блока определяют как второй коэффициент преобразования весов.

[244] Вариант 9 осуществления изобретения. В вариантах 1-3 осуществления изобретения сторона кодера или сторона декодера ожидает получить угол взвешенного предсказания и позицию взвешенного предсказания текущего блока, а в варианте 8 осуществления изобретения может быть получен коэффициент преобразования весов, такой как первый коэффициент преобразования весов или второй коэффициент преобразования весов. На основе этого угол взвешенного предсказания и позицию взвешенного предсказания текущего блока получают следующими способами.

[245] В первом способе сторона кодера и сторона декодера договариваются о том, чтобы принять один и тот же угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и договариваются о том, чтобы принять одну и ту же позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока. Например, и сторона кодера, и сторона декодера принимают угол А взвешенного предсказания в качестве угла взвешенного предсказания текущего блока и принимают позицию 4 взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[246] Во втором способе сторона кодера строит список углов взвешенного предсказания, который может включать по меньшей мере один угол взвешенного предсказания, например, список углов взвешенного предсказания может включать угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона кодера строит список позиций взвешенного предсказания, который может включать по меньшей мере одну позицию взвешенного предсказания, например, список позиций взвешенного предсказания может включать позиции взвешенного предсказания от 0 до 6. Сторона кодера последовательно проходит каждый угол взвешенного предсказания в списке углов взвешенного предсказания и последовательно проходит каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания, то есть проходит комбинацию каждого угла взвешенного предсказания и каждой позиции взвешенного предсказания. Для каждой комбинации угла (углов) взвешенного предсказания и позиции (позиций) взвешенного предсказания угол взвешенного предсказания и позиция взвешенного предсказания в комбинации могут быть приняты в качестве угла взвешенного предсказания и позиции взвешенного предсказания текущего блока, полученного на этапе 401, и этапы с 402 по 408 выполняют на основе угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов (полученных в варианте 8 осуществления изобретения) для получения значения взвешенного предсказания текущего блока.

[247] Например, когда сторона кодера переходит к углу А взвешенного предсказания и позиции 0 взвешенного предсказания, сторона кодера выполняет этапы 402-408 на основе угла А взвешенного предсказания и позиции 0 взвешенного предсказания, чтобы получить значение А-0 взвешенного предсказания текущего блока. Когда сторона кодера переходит к углу А взвешенного предсказания и позиции 1 взвешенного предсказания, выполняют этапы 402-408 на основе угла А взвешенного предсказания и позиции 1 взвешенного предсказания для получения значения А-1 взвешенного предсказания текущего блока. Когда сторона кодера переходит к углу В взвешенного предсказания и позиции 0 взвешенного предсказания, этапы 402-408 выполняют на основе угла В взвешенного предсказания и позиции 0 взвешенного предсказания для получения значения В-0 взвешенного предсказания текущего блока и т.д. Сторона кодера может получить соответствующее значение взвешенного предсказания на основе каждой комбинации (каждой комбинации угла взвешенного предсказания и позиции взвешенного предсказания).

[248] После получения всех значений взвешенного предсказания на основе комбинации угла (углов) взвешенного предсказания и позиции (позиций) взвешенного предсказания сторона кодера может определить соответствующее значение стоимости RDO на основе каждого значения взвешенного предсказания любым неограниченным образом. Сторона кодера может получить значение стоимости RDO для каждой комбинации и выбрать минимальное значение стоимости RDO из всех значений стоимости RDO.

[249] Затем сторона кодера принимает угол взвешенного предсказания и позицию взвешенного предсказания в комбинации, соответствующей минимальному значению стоимости RDO, в качестве целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания соответственно, и, наконец, кодирует значение индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания и значение индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания в битовый поток.

[250] Описанные выше способы являются только иллюстративными и не ограничивают изобретение при условии, что могут быть получены угол взвешенного предсказания и позиция взвешенного предсказания текущего блока. Например, один угол взвешенного предсказания может быть выбран случайным образом из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и одна позиция взвешенного предсказания может быть выбрана случайным образом из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[251] Сторона декодера создает список углов взвешенного предсказания, который идентичен списку углов взвешенного предсказания на стороне кодера и включает по меньшей мере один угол взвешенного предсказания, такой как угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона декодера строит список позиций взвешенного предсказания, который идентичен списку позиций взвешенного предсказания на стороне кодера и включает по меньшей мере одну позицию взвешенного предсказания, такую как позиция взвешенного предсказания от 0 до 6. После получения кодированного битового потока текущего блока, сторона декодера анализирует информацию указания из кодированного битового потока, выбирает угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока в соответствии с информацией указания и выбирает позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока в соответствии с информацией указания.

[252] Сценарий 1 применения: когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 1 указания, используемую для указания как угла взвешенного предсказания текущего блока (то есть целевого угла взвешенного предсказания), так и позиции взвешенного предсказания текущего блока (т.е. целевой позиции взвешенного предсказания). Например, когда информация 1 указания равна 0, информация 1 указания может указывать первый угол взвешенного предсказания в списке углов взвешенного предсказания и первую позицию взвешенного предсказания в списке позиций взвешенного предсказания, когда информация 1 указания равна 1, информация 1 указания может указывать первый угол взвешенного предсказания в списке углов взвешенного предсказания и вторую позицию взвешенного предсказания в списке позиций взвешенного предсказания и т.д., нет ограничений на значение информации 1 указания, которая используется для указания угла взвешенного предсказания и позиции взвешенного предсказания, если сторона кодера и сторона декодера согласовали это.

[253] После приема кодированного битового потока сторона декодера декодирует информацию 1 указания из кодированного битового потока. На основе информации 1 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий информации 1 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 1 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 1 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[254] Сценарий 2 применения: когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 2 указания и информацию 3 указания. Информация 2 указания предназначена для указания целевого угла взвешенного предсказания текущего блока, например, значение 1 индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, при этом значение 1 индекса указывает, какой угол взвешенного предсказания в списке углов взвешенного предсказания является целевым углом взвешенного предсказания. Информация 3 указания предназначена для указания целевой позиции взвешенного предсказания текущего блока, например, значения 2 индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, при этом значение 2 индекса указывает, какая позиция взвешенного предсказания в списке позиций взвешенного предсказания является целевой позицией взвешенного предсказания. После приема кодированного битового потока сторона декодера анализирует информацию 2 указания и информацию 3 указания из кодированного битового потока. На основе информации 2 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий значению 1 индекса, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 3 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую значению 2 индекса, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[255] Сценарий 3 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. Предпочтительная комбинация конфигурации может быть сконфигурирована в соответствии с практическим опытом и здесь не ограничивается. Например, можно согласовать предпочтительную комбинацию 1 конфигурации, включающую угол А взвешенного предсказания и позицию 4 взвешенного предсказания, предпочтительную комбинацию 2 конфигурации, включающую угол В взвешенного предсказания и позицию 4 взвешенного предсказания, и т.п.

[256] После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера определяет, относится ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания к предпочтительной комбинации конфигурации. Если комбинация является предпочтительной комбинацией конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания и информацию 5 указания. Информация 4 указания предназначена для указания того, используется ли предпочтительная комбинация конфигурации для текущего блока. Например, когда информация 4 указания представляет собой первую величину (например, 0), информация 4 указания указывает, что для текущего блока используется предпочтительная комбинация конфигурации. Информация 5 указания указывает, какая предпочтительная комбинация конфигурации используется для текущего блока. Например, когда значение информации 5 указания равно 0, информация 5 указания может указывать, что для текущего блока используется предпочтительная комбинация 1 конфигурации, а когда значение информации 5 указания равно 1, информация 5 указания может указывать, что для текущего блока используется предпочтительная комбинация 2 конфигурации.

[257] После приема кодированного битового потока сторона декодера может анализировать информацию 4 указания и информацию 5 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания представляет собой первую величину, сторона декодера определяет, что для текущего блока используется предпочтительная комбинация конфигурации. Когда для текущего блока используется предпочтительная комбинация конфигурации, сторона декодера может определить, какая предпочтительная комбинация конфигурации используется для текущего блока, на основе информации 5 указания. Например, когда значение информации 5 указания равно 0, сторона декодера может определить, что предпочтительная комбинация 1 конфигурации используется для текущего блока, например, угол взвешенного предсказания текущего блока представляет собой угол А взвешенного предсказания, и позиция взвешенного предсказания текущего блока представляет собой позицию 4 взвешенного предсказания. В другом примере, когда значение информации 5 указания равно 1, сторона декодера может определить, что предпочтительная комбинация 2 конфигурации используется для текущего блока, например, угол взвешенного предсказания текущего блока представляет собой угол В взвешенного предсказания, а позиция взвешенного предсказания текущего блока представляет собой позицию 4 взвешенного предсказания.

[258] Например, если сторона кодера и сторона декодера согласуют только одну предпочтительную комбинацию конфигурации, например, предпочтительную комбинацию конфигурации, включающую угол А взвешенного предсказания и позицию 4 взвешенного предсказания, кодированный битовый поток может включать только информацию 4 указания без информации 5 указания, при этом информация 4 указания предназначена для указания того, что для текущего блока используется предпочтительная комбинация конфигурации. После того, как сторона декодера анализирует информацию 4 указания из кодированного битового потока, если информация 4 указания является первой величиной, сторона декодера определяет, что для текущего блока используется предпочтительная комбинация конфигурации. На основе этой предпочтительной комбинации сторона декодера определяет, что угол взвешенного предсказания текущего блока является углом взвешенного А предсказания, а позиция взвешенного предсказания текущего блока является позицией 4 взвешенного предсказания.

[259] Сценарий 4 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера может определить, относится ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания к предпочтительной комбинации конфигурации. Если она не относится к предпочтительной комбинации конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания и информацию 6 указания. Информация 4 указания предназначена для указания того, что для текущего блока используется предпочтительная комбинация конфигурации. Если информация 4 указания представляет собой второе значение (например, 1), информация 4 указания может указывать, что предпочтительная комбинация конфигурации не используется для текущего блока. Информация 6 указания предназначена для указания как целевого угла взвешенного предсказания текущего блока, так и целевой позиции взвешенного предсказания текущего блока. Например, когда значение информации 6 указания равно 0, информация 6 указания используется для указания первого угла взвешенного предсказания в списке углов взвешенного предсказания и первой позиции взвешенного предсказания в списке позиций взвешенного предсказания и т.д.

[260] После приема кодированного битового потока сторона декодера может анализировать информацию 4 указания и информацию 6 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда предпочтительная комбинация конфигурации не используется для текущего блока, сторона декодера может на основе информации 6 указания выбрать угол взвешенного предсказания, соответствующий информации 6 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания как угол взвешенного предсказания текущего блока; и на основе информации 6 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 6 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[261] Сценарий 5 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера может определить, относится ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания к предпочтительной комбинации конфигурации. Если комбинация не относится к предпочтительной комбинации конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания, информацию 7 указания и информацию 8 указания. Например, информация 4 указания предназначена для указания того, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, информация 4 указания может указывать, что предпочтительная комбинация конфигурации не используется для текущего блока. Информация 7 указания предназначена для указания целевого угла взвешенного предсказания текущего блока, например, значение 1 индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, при этом значение 1 индекса указывает, какой угол взвешенного предсказания в списке углов взвешенного предсказания является целевым углом взвешенного предсказания. Информация 8 указания предназначена для указания целевой позиции взвешенного предсказания текущего блока, например, значения 2 индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, при этом значение 2 индекса указывает, какая позиция взвешенного предсказания в списке позиций взвешенного предсказания является целевой позицией взвешенного предсказания.

[262] После приема кодированного битового потока сторона декодера может анализировать информацию 4 указания, информацию 7 указания и информацию 8 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда предпочтительная комбинация конфигурации не используется для текущего блока, сторона декодера может, на основе информации 7 указания, выбрать угол взвешенного предсказания, соответствующий значению 1 индекса, из списка углов взвешенного предсказания, и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 8 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую значению 2 индекса, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[263] Вариант 10 осуществления изобретения. В вариантах 1-3 осуществления изобретения сторона кодера или сторона декодера ожидает получить коэффициент преобразования весов текущего блока. Если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока получают следующим образом: получают вторую информацию указания коэффициента преобразования весов для текущего блока и выбирают коэффициент преобразования весов, соответствующий второй информации указания коэффициента преобразования весов из заранее заданной таблицы поиска; при этом заданная таблица поиска включает по меньшей мере два коэффициента преобразования весов. Выбранный коэффициент преобразования весов определяют как коэффициент преобразования весов текущего блока.

[264] Поскольку заранее заданная таблица поиска включает по меньшей мере два коэффициента преобразования весов, если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть выбран из по меньшей мере двух коэффициентов преобразования весов. То есть коэффициент преобразования весов текущего блока является переменным, так что коэффициент преобразования весов может переключаться адаптивно вместо использования единого коэффициента преобразования весов.

[265] Например, если информация управления переключением позволяет текущему блоку включить режим переключения коэффициента преобразования весов, текущий блок поддерживает режим переключения коэффициента преобразования весов, и если информация управления переключением не позволяет текущему блоку включить режим переключения коэффициента преобразования весов, текущий блок не поддерживает режим переключения коэффициента преобразования весов. См. вариант 8 осуществления изобретения для описания того, поддерживает ли текущий блок режим переключения коэффициента преобразования весов.

[266] В возможной реализации заранее заданная таблица поиска может включать по меньшей мере два коэффициента преобразования весов, а вторая информация указания коэффициента преобразования весов может включать информацию об индексе коэффициента преобразования весов (для указания определенного коэффициента преобразования весов среди всех коэффициентов преобразования весов в таблице поиска). На основе этого коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, может быть выбран из таблицы поиска.

[267] На стороне кодера, если имеется только одна таблица поиска, для каждого коэффициента преобразования весов в таблице поиска, сторона кодера может определить значение стоимости RDO, соответствующее коэффициенту преобразования весов, и принять коэффициент преобразования весов, соответствующий минимальному значению стоимости RDO, в качестве целевого коэффициента преобразования весов текущего блока. Затем сторона кодера определяет информацию об индексе целевого коэффициента преобразования весов из таблицы поиска, например, информацию об индексе коэффициента преобразования весов, при этом информация об индексе коэффициента преобразования весов представляет целевой коэффициент преобразования весов в таблице поиска.

[268] Для стороны декодера, если имеется только одна таблица поиска, когда сторона кодера передает кодированный битовый поток текущего блока на сторону декодера, кодированный битовый поток может нести информацию об индексе коэффициента преобразования весов, которая предназначена для указания информации об индексе целевого коэффициента преобразования весов в таблице поиска. Сторона декодера выбирает коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, из таблицы поиска, в качестве целевого коэффициента преобразования весов текущего блока.

[269] В другой возможной реализации заранее заданная таблица поиска может включать по меньшей мере две таблицы поиска, и каждая таблица поиска может включать по меньшей мере один коэффициент преобразования весов. Вторая информация указания коэффициента преобразования весов может включать информацию об индексе таблицы поиска (для указания определенной таблицы поиска во всех таблицах поиска) и информацию об индексе коэффициента преобразования весов (для указания определенного коэффициента преобразования весов из всех коэффициентов преобразования весов в таблице поиска). На основе этого целевая таблица поиска, соответствующая информации об индексе таблицы поиска, может быть выбрана из по меньшей мере двух таблиц поиска, и коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, может быть выбран из целевой таблицы поиска.

[270] Например, заранее заданная таблица поиска может включать первую таблицу поиска и вторую таблицу поиска, и максимальное значение абсолютных значений коэффициентов преобразования весов, включенных во вторую таблицу поиска, больше, чем максимальное значение абсолютных значений коэффициентов преобразования весов, включенных в первую таблицу поиска. Например, абсолютные значения коэффициентов преобразования весов, включенных во вторую таблицу поиска, равны 4 и 8, а абсолютные значения коэффициентов преобразования весов, включенных в первую таблицу поиска, равны 5 и 7. Максимальное значение абсолютных значений коэффициентов преобразования весов, включенных во вторую таблицу поиска, равно 8, и максимальное значение абсолютных значений коэффициентов преобразования весов, включенных в первую таблицу поиска, равно 7. Абсолютные значения коэффициентов преобразования весов, включенных во вторую таблицу поиска, не идентичны абсолютным значениям коэффициентов преобразования весов, включенных в первую таблицу поиска. Например, абсолютные значения коэффициентов преобразования весов, включенных во вторую таблицу поиска, равны 4 и 8, а абсолютные значения коэффициентов преобразования весов, включенных в первую таблицу поиска, равны 1, 2 и 4, при этом абсолютные значения коэффициентов преобразования весов, включенных в две таблицы поиска, не идентичны. Опционально, абсолютные значения коэффициентов преобразования весов, включенных во вторую таблицу поиска, полностью отличаются от абсолютных значений коэффициентов преобразования весов, включенных в первую таблицу поиска. Например, абсолютные значения коэффициентов преобразования весов, включенных во вторую таблицу поиска, равны 4 и 8, а абсолютные значения коэффициентов преобразования весов, включенных в первую таблицу поиска, равны 1 и 2, при этом абсолютные значения коэффициентов преобразования весов, включенных в две таблицы поиска, полностью различны.

[271] Например, вторая информация указания коэффициента преобразования весов включает информацию об индексе таблицы поиска и информацию об индексе коэффициента преобразования весов. Информация об индексе таблицы поиска может быть идентификацией SCC, соответствующей текущему блоку, и идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, или идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента, целевая таблица поиска, соответствующая идентификации SCC, может быть первой таблицей поиска. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, целевой таблицей поиска, соответствующей идентификации SCC, может быть вторая таблица поиска.

[272] Таким образом, можно получить идентификацию SCC (например, информацию об индексе таблицы поиска) и информацию об индексе коэффициента преобразования весов, соответствующую текущему блоку. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента, целевую таблицу поиска определяют как первую таблицу поиска, коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, выбирают из первой таблицы поиска, и выбранный коэффициент преобразования весов определяют как коэффициент преобразования весов текущего блока. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, целевую таблицу поиска определяют как вторую таблицу поиска, и коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, выбирают из второй таблицы поиска, и выбранный коэффициент преобразования весов определяют как коэффициент преобразования весов текущего блока. Таким образом, можно получить коэффициент преобразования весов текущего блока.

[273] Процесс на стороне кодера для получения идентификации SCC может относиться к варианту 8 осуществления изобретения и здесь повторяться не будет.

[274] Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента, целевой таблицей поиска может быть первая таблица поиска. Для каждого коэффициента преобразования весов в первой таблице поиска сторона кодера определяет значение стоимости RDO, соответствующее коэффициенту преобразования весов, и принимает коэффициент преобразования весов, соответствующий минимальному значению стоимости RDO, в качестве целевого коэффициента преобразования весов текущего блока. Сторона кодера определяет информацию об индексе целевого коэффициента преобразования весов из первой таблицы поиска, то есть информацию об индексе коэффициента преобразования весов. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, целевой таблицей поиска может быть вторая таблица поиска. Для каждого коэффициента преобразования весов во второй таблице поиска сторона кодера определяет значение стоимости RDO, соответствующее коэффициенту преобразования весов, и принимает коэффициент преобразования весов, соответствующий минимальному значению стоимости RDO, в качестве целевого коэффициента преобразования весов текущего блока. Сторона кодера определяет информацию об индексе целевого коэффициента преобразования весов из второй таблицы поиска, то есть информацию об индексе коэффициента преобразования весов, и информация об индексе коэффициента преобразования весов указывает, каким является определенный коэффициент преобразования весов во второй таблице поиска.

[275] Процесс на стороне декодера для получения идентификации SCC можно увидеть в варианте 8 осуществления изобретения, и здесь он повторяться не будет.

[276] Когда сторона кодера передает кодированный битовый поток текущего блока на сторону декодера, кодированный битовый поток может нести информацию об индексе коэффициента преобразования весов, которая предназначена для указания информации об индексе целевого коэффициента преобразования весов в первой таблице поиска или во второй таблице поиска. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию неэкранного контента, целевой таблицей поиска может быть первая таблица поиска.

Сторона декодера выбирает коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов (информация об индексе коэффициента преобразования весов указывает, каким является коэффициент преобразования весов в первой таблице поиска) из первой таблицы поиска, который принимают в качестве коэффициента преобразования весов текущего блока. Если идентификация SCC предназначена для указания того, что текущий блок принадлежит кодированию экранного контента, целевой таблицей поиска может быть вторая таблица поиска. Сторона декодера выбирает коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов (информация об индексе коэффициента преобразования весов указывает, каким является коэффициент преобразования весов во второй таблице поиска) из второй таблицы поиска, который принимают в качестве коэффициента преобразования весов текущего блока.

[277] Вариант 11 осуществления изобретения. В вариантах 1-3 осуществления сторона кодера или сторона декодера ожидает получить угол взвешенного предсказания, позицию взвешенного предсказания и коэффициент преобразования весов текущего блока, и в варианте 10 осуществления может быть получен коэффициент преобразования весов. На основе этого угол взвешенного предсказания и позицию взвешенного предсказания текущего блока получают следующими способами.

[278] В первом способе сторона кодера и сторона декодера договариваются о том, чтобы принять один и тот же угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и договариваются о том, чтобы принять одну и ту же позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока. Например, и сторона кодера, и сторона декодера принимают угол А взвешенного предсказания в качестве угла взвешенного предсказания текущего блока и принимают позицию 4 взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.

[279] Во втором способе сторона кодера строит список углов взвешенного предсказания, который может включать по меньшей мере один угол взвешенного предсказания, например, список углов взвешенного предсказания может включать угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона кодера строит список позиций взвешенного предсказания, который может включать по меньшей мере одну позицию взвешенного предсказания, например, список позиций взвешенного предсказания может включать позиции взвешенного предсказания от 0 до 6. Сторона кодера строит по меньшей мере две таблицы поиска, например, первую таблицу поиска и вторую таблицу поиска, при этом первая таблица поиска включает по меньшей мере один коэффициент преобразования весов, и вторая таблица поиска включает по меньшей мере один коэффициент преобразования весов. Сторона кодера определяет целевую таблицу поиска, см. вариант 10 осуществления для способа определения целевой таблицы поиска. В качестве примера целевая таблица поиска является первой таблицей поиска. Сторона кодера последовательно проходит каждый угол взвешенного предсказания в списке углов взвешенного предсказания, проходит каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания и последовательно проходит каждый коэффициент преобразования весов в целевой таблице поиска. То есть проходит комбинацию каждого угла взвешенного предсказания, каждой позиции взвешенного предсказания и каждого коэффициента преобразования весов. Для каждой комбинации угла (углов) взвешенного предсказания, позиции (позиций) взвешенного предсказания и коэффициента (коэффициентов) преобразования весов угол взвешенного предсказания, позиция взвешенного предсказания и коэффициент преобразования весов в комбинации могут быть приняты в качестве угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов текущего блока, полученных на этапе 401, и этапы с 402 по 408 выполняют на основе угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов для получения значения взвешенного предсказания текущего блока.

[280] Таким образом, сторона кодера может получить группу значений взвешенного предсказания, соответствующих текущему блоку, на основе каждой комбинации (комбинация включает угол взвешенного предсказания, позицию взвешенного предсказания и коэффициент преобразования весов). После получения каждой группы значений взвешенного предсказания текущего блока сторона кодера может определить соответствующее значение стоимости RDO на основе каждой группы значений взвешенного предсказания текущего блока. Способ определения стоимости RDO не ограничен. Сторона кодера может получить значение стоимости RDO для каждой комбинации и выбрать минимальное значение стоимости RDO из всех значений стоимости RDO.

[281] Затем сторона кодера принимает угол взвешенного предсказания, позицию взвешенного предсказания и коэффициент преобразования весов, соответствующие минимальному значению стоимости RDO, в качестве целевого угла взвешенного предсказания, целевой позиции взвешенного предсказания и целевого коэффициента преобразования весов, соответственно, и наконец, кодирует значение индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, значение индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания и значение индекса целевого коэффициента преобразования весов в целевой таблице поиска в битовый поток текущего блока.

[282] Сторона декодера строит список углов взвешенного предсказания, который идентичен списку углов взвешенного предсказания на стороне кодера, сторона декодера строит список позиций взвешенного предсказания, который идентичен списку позиций взвешенного предсказания на стороне кодера, и сторона декодера строит таблицу поиска, которая идентична таблице поиска на стороне кодера. После приема кодированного битового потока текущего блока сторона декодера декодирует информацию указания из кодированного битового потока, выбирает угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока в соответствии с информацией указания и выбирает позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока в соответствии с информацией указания. См. вариант 9 осуществления для способа получения угла взвешенного предсказания и позиции взвешенного предсказания, который здесь не описывается повторно. После приема кодированного битового потока текущего блока сторона декодера может определить целевую таблицу поиска (например, первую таблицу поиска или вторую таблицу поиска) и выбрать коэффициент преобразования весов из целевой таблицы поиска в качестве коэффициента преобразования весов текущего блока на основе информации об индексе коэффициента преобразования весов, см. вариант 10 осуществления для получения коэффициента преобразования весов, который здесь не описывается повторно.

[283] Вариант 12 осуществления изобретения. В вариантах 1-3 осуществления изобретения первое значение предсказания позиции пикселя определяют на основе первого режима предсказания, а второе значение предсказания позиции пикселя определяют на основе второго режима предсказания.

[284] В этом варианте осуществления изобретения описание приведено для первого режима предсказания, являющегося режимом внешнего предсказания, и второго режима предсказания, являющегося режимом внешнего предсказания, в качестве примера.

[285] Условие 1. Первый режим предсказания представляет собой режим внешнего предсказания, второй режим предсказания представляет собой режим внешнего предсказания, и получают список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере две части информации о возможном движении. Одну часть информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока, а другую часть информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока. Для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определяют второе значение предсказания позиции пикселя на основе второй целевой информации о движении.

[286] Например, и сторона кодера, и сторона декодера могут получать список кандидатов для компенсации движения, и список кандидатов для компенсации движения на стороне кодера может быть таким же, как список кандидатов для компенсации движения на стороне декодера, что не ограничивается здесь.

[287] Например, все части информации о возможном движении в списке кандидатов для компенсации движения представляют собой информацию о движении с одной гипотезой, например, информация о возможном движении в списке кандидатов для компенсации движения представляет собой информацию об однонаправленном движении, а не информацию о двунаправленном движении. Поскольку все части информации о возможном движении представляют собой информацию о движении с одной гипотезой, список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения.

[288] Процесс получения списка кандидатов для компенсации движения можно увидеть в последующих вариантах осуществления изобретения, и здесь он повторяться не будет.

[289] Сторона кодера может выбрать, на основе RDO, одну часть информации о возможном движении из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока и выбрать другую часть информации о возможном движении из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока, при этом первая целевая информация о движении отличается от второй целевой информации о движении, что не ограничивается здесь.

[290] В возможной реализации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может переносить информацию а указания и информацию b указания. Информация а указания указывает значение 1 индекса первой целевой информации о движении текущего блока, и значение индекса 1 представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является первой целевой информацией о движении. Информация b указания указывает значение 2 индекса второй целевой информации о движении текущего блока, и значение 2 индекса представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является второй целевой информацией о движении. Например, значение 1 индекса и значение 2 индекса могут быть различными.

[291] После приема кодированного битового потока сторона декодера может проанализировать информацию а указания и информацию b указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации b указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока.

[292] В другой возможной реализации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может переносить информацию а указания и информацию с указания. Информация а указания указывает значение 1 индекса первой целевой информации о движении текущего блока, и значение 1 индекса представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является первой целевой информацией о движении. Информация с указания может использоваться для указания разности между значением 1 индекса и значением 2 индекса, при этом значение индекса 2 представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является второй целевой информацией о движении. Например, значение 1 индекса и значение 2 индекса могут быть различными.

[293] После приема кодированного битового потока сторона декодера может проанализировать информацию а указания и информацию с указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации с указания сторона декодера получает разность между значением 2 индекса и значением 1 индекса и определяет значение 2 индекса на основе упомянутой разности и значения 1 индекса, затем сторона декодера может выбрать информацию о возможном движении, соответствующую значению 2 индекса из списка кандидатов для компенсации движения, в качестве второй целевой информации о движении текущего блока.

[294] Процесс, в котором сторона кодера / сторона декодера определяет первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определяет второе значение предсказания позиции пикселя на основе второй целевой информации о движении, может относиться к процессу внешнего предсказания и не будет здесь повторяться.

[295] Например, когда первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, первое значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Например, начальное значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, а затем начальное значение предсказания умножают на заданный коэффициент для получения корректирующего значения предсказания. Если корректирующее значение предсказания больше, чем максимальное значение предсказания, максимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; если корректирующее значение предсказания меньше минимального значения предсказания, минимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; и, если корректирующее значение предсказания не меньше минимального значения предсказания или не больше максимального значения предсказания, корректирующее значение предсказания принимают в качестве первого значения предсказания текущего блока. Описанный выше способ является только иллюстративным и не ограничивается здесь.

[296] Аналогично, когда второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении, второе значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Конкретная реализация может быть отнесена к приведенному выше примеру и не будет здесь повторяться.

[297] Условие 2. Первый режим предсказания представляет собой режим внешнего предсказания, и второй режим предсказания представляет собой режим внешнего предсказания. Получают первый список кандидатов для компенсации движения и второй список кандидатов для компенсации движения, при этом первый список кандидатов для компенсации движения включает по меньшей мере одну часть информации о возможном движении, и второй список кандидатов для компенсации движения включает по меньшей мере одну часть информации о возможном движении. Одну часть информации о возможном движении выбирают из первого списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока, и одну часть информации о возможном движении выбирают из второго списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока. Для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении; и второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении.

[298] Например, сторона кодера и сторона декодера могут получать первый список кандидатов для компенсации движения и второй список кандидатов для компенсации движения, и первый список кандидатов для компенсации движения на стороне кодера может быть идентичен первому списку кандидатов для компенсации движения на стороне декодера, а второй список кандидатов для компенсации движения на стороне кодера может быть идентичен второму списку кандидатов для компенсации движения на стороне декодера.

[299] Все части информации о возможном движении в первом списке кандидатов для компенсации движения представляют собой информацию о движении с одной гипотезой, то есть информация о возможном движении в первом списке кандидатов для компенсации движения представляет собой информацию об однонаправленном движении, а не информацию о двунаправленном движении. Поскольку все части информации о возможном движении являются информацией о движении с одной гипотезой, первый список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения.

[300] Все части информации о возможном движении во втором списке кандидатов для компенсации движения представляют собой информацию о движении с одной гипотезой, то есть информация о возможном движении во втором списке кандидатов для компенсации движения представляет собой информацию об однонаправленном движении, а не информацию о двунаправленном движении. Поскольку все части информации о возможном движении являются информацией о движении с одной гипотезой, второй список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения.

[301] Процесс получения первого списка кандидатов для компенсации движения и второго списка кандидатов для компенсации движения можно увидеть в последующих вариантах осуществления изобретения.

[302] Сторона кодера может, на основе RDO, выбрать одну часть информации о возможном движении из первого списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока и выбрать одну часть информации о возможном движении из второго списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока, при этом первая целевая информация о движении отличается от второй целевой информации о движении, что здесь не ограничено.

[303] Когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток несет информацию а указания и информацию b указания. Информация а указания указывает значение 1 индекса первой целевой информации о движении текущего блока, и значение индекса 1 представляет, какая информация о возможном движении в первом списке кандидатов для компенсации движения является первой целевой информацией о движении. Информация b указания указывает значение 2 индекса второй целевой информации о движении текущего блока, и значение 2 индекса представляет, какая информация о возможном движении во втором списке кандидатов для компенсации движения является второй целевой информацией о движении. После приема кодированного битового потока сторона декодера анализирует информацию а указания и информацию b указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из первого списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации b указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 2 индекса, из второго списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока.

[304] В описанных выше условиях информация указания информации предсказания для первого режима предсказания и информация указания информации предсказания для второго режима предсказания могут быть взаимозаменяемыми при условии, что сторона кодера и сторона декодера согласованы. Обмен информацией указания не влияет на процесс синтаксического анализа, то есть зависимость от синтаксического анализа отсутствует. В случае использования одного и того же списка кандидатов режима предсказания, информация указания информации предсказания для первого режима предсказания не может быть равна информации указания информации предсказания для второго режима предсказания. Предполагается, что кодируются два индекса, при этом значение а индекса равно 1, а значение b индекса равно 3, когда значение а индекса кодируется первым, значение b индекса может кодироваться как 2 (т.е. 3-1); и когда значение b индекса кодируется первым, значение b индекса должно кодироваться как 3. Одним словом, информация указания кодирования сначала с меньшим значением индекса может уменьшить служебные данные кодирования для кодирования большего значения индекса. Согласно способу построения списка кандидатов режима предсказания, первый режим предсказания, вероятнее всего, поступает с левой стороны, и на основе этого предшествующего опыта может быть выполнена корректировка на стороне кодера и стороне декодера, при этом может сначала кодироваться информация указания информации предсказания в области, смежной с левой стороной.

[305] Следующее описание комбинируется с условием 1, а другие условия аналогичны Условию 1. В Условии 1 список кандидатов режима предсказания может быть списком кандидатов для компенсации движения, информация предсказания первого режима предсказания может быть первой целевой информацией о движении, и информация предсказания второго режима предсказания может быть второй целевой информацией о движении. В кодированном битовом потоке сначала кодируется информация указания первой целевой информации о движении, такая как значение а индекса, а затем кодируется информация указания второй целевой информации о движении, такая как значение b индекса. Опционально, сначала кодируется информация указания второй целевой информации о движении, такая как значение b индекса, и затем кодируется информация указания первой целевой информации о движении, такая как значение а индекса. Например, если значение а индекса равно 1, а значение b индекса равно 3, значение а индекса кодируется перед значением b индекса. В другом примере, если значение b индекса равно 1, а значение а индекса равно 3, значение b индекса кодируется перед значением а индекса.

[306] Вариант 13 осуществления изобретения. В вариантах 1-3 осуществления изобретения первое значение предсказания позиции пикселя определяют на основе первого режима предсказания, а второе значение предсказания позиции пикселя определяют на основе второго режима предсказания. Например, первый режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры; и второй режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры.

[307] В этом варианте осуществления изобретения описание приведено для первого режима предсказания, являющегося режимом внешнего предсказания, и второго режима предсказания, являющегося режимом внешнего предсказания, в качестве примера. Поскольку первый режим предсказания является режимом внешнего предсказания, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока может включать: получение списка кандидатов для компенсации движения, включающего по меньшей мере одну часть информации о возможном движении; выбор одной части информации о возможном движении из списка кандидатов для компенсации движения в качестве исходной информации о движении текущего блока; определение целевой информации о движении текущего блока на основе исходной информации о движении; и определение первого значения предсказания позиции пикселя на основе целевой информации о движении.

[308] Условие 1. Первый режим предсказания представляет собой режим внешнего предсказания, второй режим предсказания представляет собой режим внешнего предсказания, и получают список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения может включать по меньшей мере две части информации о возможном движении. Одну часть информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве первой исходной информации о движении текущего блока, а другую часть информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве второй исходной информации о движении текущего блока. Первая исходная информация о движении отличается от второй исходной информации о движении. Затем на основе первой исходной информации о движении определяют первую целевую информацию о движении текущего блока, и на основе второй исходной информации о движении определяют вторую целевую информацию о движении текущего блока. Для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, а второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении.

[309] Процесс получения списка кандидатов для компенсации движения можно увидеть в последующих вариантах осуществления изобретения, и здесь он повторяться не будет. Процесс определения первого значения предсказания на основе первой целевой информации о движении и определения второго значения предсказания на основе второй целевой информации о движении можно увидеть в варианте 12 осуществления изобретения, и здесь он повторяться не будет. В отличие от варианта 12 осуществления изобретения, в варианте 13 осуществления изобретения информация о возможном движении, выбранная из списка кандидатов для компенсации движения, используется в качестве исходной информации о движении, а не в качестве целевой информации о движении. После получения исходной информации о движении целевая информация о движении может быть получена на основе исходной информации о движении, см. последующие варианты осуществления изобретения для конкретного процесса получения.

[310] Условие 2. Первый режим предсказания представляет собой режим внешнего предсказания, второй режим предсказания представляет собой режим внешнего предсказания, получают первый список кандидатов для компенсации движения и второй список кандидатов для компенсации движения, при этом первый список кандидатов для компенсации движения включает по меньшей мере одну часть информации о возможном движении, и второй список кандидатов для компенсации движения включает по меньшей мере одну часть информации о возможном движении. Одну часть информации о возможном движении выбирают из первого списка кандидатов для компенсации движения в качестве первой исходной информации о движении текущего блока, и на основе первой исходной информации о движении определяют первую целевую информацию о движении текущего блока. Одну часть информации о возможном движении выбирают из второго списка кандидатов для компенсации движения в качестве второй исходной информации о движении текущего блока, и на основе второй исходной информации о движении определяют вторую целевую информацию о движении текущего блока. Для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении; и второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении. В отличие от варианта 12 осуществления изобретения, в варианте 13 осуществления изобретения информацию о возможном движении, выбранную из списка кандидатов для компенсации движения, используют в качестве исходной информации о движении, а не в качестве целевой информации о движении. После получения исходной информации о движении целевая информация о движении также может быть получена на основе исходной информации о движении, см. последующие варианты осуществления для конкретного процесса получения.

[311] Таким образом, для описанных выше условий, когда режим предсказания является режимом внешнего предсказания, может быть получен список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере одну часть информации о возможном движении. Затем информацию о возможном движении выбирают из списка кандидатов для компенсации движения в качестве исходной информации о движении текущего блока. Первую целевую информацию о движении определяют на основе первой исходной информации о движении, а вторую целевую информацию о движении определяют на основе второй исходной информации о движении. Затем значение предсказания позиции пикселя определяют на основе целевой информации о движении.

[312] Для определения целевой информации о движении на основе исходной информации о движении варианты осуществления изобретения предоставляют схемы наложения информации об однонаправленном движении на разность векторов движения (что называется уточнением вектора движения (Motion Vector Refinement)). Например, исходная информация о движении включает исходный вектор движения, а целевая информация о движении включает целевой вектор движения. Для определения целевого вектора движения текущего блока на основе исходного вектора движения может быть получена разность векторов движения (MVD, motion vector difference), соответствующая исходному вектору движения, и целевой вектор движения определяют на основе разности векторов движения и исходного вектора движения. То есть сумму разности векторов движения и исходного вектора движения принимают в качестве целевого вектора движения.

[313] Вариант 14 осуществления изобретения. На основе варианта 13 осуществления изобретения согласовываются информация о направлении и информация об амплитуде разности векторов движения. Если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad). Если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна А1, разность векторов движения равна (-А1, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Au, разность векторов движения равна (0, Au). Если информация о направлении указывает направление вправо-вверх, а информация об амплитуде указывает, что амплитуда равна Aru, разность векторов движения равна (Aru, Aru). Если информация о направлении указывает направление влево-вверх, а информация об амплитуде указывает, что амплитуда равна Alu, разность векторов движения равна (-Alu, Alu). Если информация о направлении указывает направление влево-вниз, а информация об амплитуде указывает, что амплитуда равна Ald, разность векторов движения равна (-Ald, -Ald). Если информация о направлении указывает направление вправо-вниз, а информация об амплитуде указывает, что амплитуда равна Ard, разность векторов движения равна (Ard, -Ard).

[314] Отметим, что вышеуказанные амплитуды Ar, Ad, Al, Au, Aru, Alu, Ald и Ard соответственно указывают на один набор значений, а значения в наборах амплитуд различных направлений могут быть полностью одинаковыми, или частично одинаковыми, или полностью различными.

[315] Например, разность векторов движения может поддерживать всю или часть вышеуказанной информации о направлении, диапазон значений амплитуды А, поддерживаемый разностью векторов движения, может быть сконфигурирован на основе опыта, а амплитуда может включать по меньшей мере одно значение, которое здесь не ограничивается.

[316] Например, разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.д., а разность векторов движения поддерживает следующие пять конфигураций длины шага: ¼-пикселя, ½-пикселя, 1-пиксель, 2-пикселя и 4-пикселя, то есть значение амплитуды может быть 1, 2, 4, 8 и 16. Таким образом, при направлении вверх разность векторов движения может быть (0, 1), (О, 2), (0, 4), (0, 8) и (0, 16). При направлении вниз разность векторов движения может быть (0, -1), (0, -2), (0, -4), (0, -8) и (0, -16). При направлении влево разность векторов движения может быть (-1,0), (-2, 0), (-4, 0), (-8, 0) и (-16, 0). При направлении вправо разность векторов движения может быть (1, 0), (2, 0), (4, 0), (8, 0) и (16, 0).

[317] В другом примере разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.д., а разность векторов движения поддерживает следующие шесть конфигураций длины шага: ¼-пикселя, ½-пикселя, 1-пиксель, 2-пикселя, 3-пикселя и 4-пикселя, то есть значение амплитуды может быть равно 1, 2, 4, 8 и 16. Таким образом, при направлении вверх разность векторов движения может быть (0, 1), (0, 2), (0, 4), (0, 8), (0, 12) и (0, 16). Разности векторов движения других направлений могут быть реализованы таким же образом, как и в направлении «вверх», и здесь не повторяются.

[318] В другом примере разность векторов движения поддерживает восемь направлений, таких как вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз и т.д., а разность векторов движения поддерживает следующие три конфигурации длины шага: ¼-пикселя, ½-пикселя и 1-пиксель, то есть значение амплитуды А может быть равно 1, 2 и 4. Таким образом, при направлении влево-вверх разность векторов движения может быть (-1, 1), (-2, 2) и (-4, 4). Когда направление вправо-вверх, разность векторов движения может быть (1, 1), (2, 2) и (4, 4). Разности векторов движения других направлений могут быть реализованы таким же образом, как и в направлениях «влево-вверх и вправо-вверх», а значения разностей векторов движения могут быть указаны в описанном выше соглашении и не будут здесь повторяться.

[319] В другом примере разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.д., а разность векторов движения поддерживает следующие четыре конфигурации длины шага: ¼-пикселя, ½-пикселя, 1-пиксель и 2-пикселя, что то есть значение амплитуды может быть равно 1, 2, 4 и 8.

[320] Приведенные выше примеры являются только иллюстративными, и здесь не делается никаких ограничений. Например, направление, поддерживаемое разностью векторов движения, может быть выбрано произвольно, например, может быть выбрано 6 направлений, таких как вверх, вниз, влево, вправо, влево-вверх и влево-вниз и т.п., или два направления, например вверх и вниз, и т.п. В качестве другого примера, конфигурация длины шага, поддерживаемая разностью векторов движения, может быть изменяемой и может гибко конфигурироваться. В другом примере конфигурация длины шага может быть адаптивно сконфигурирована на основе параметров кодирования, таких как QP (параметр квантования) и т.п. Например, 1-пиксель, 2-пикселя, 4-пикселя и 8-пикселей могут быть приняты для большего QP, а ¼-пикселя, ½-пикселя, 1-пиксель и 2-пикселя могут быть приняты для меньшего QP. В другом примере подходящая конфигурация длины шага может быть сконфигурирована на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча, уровне CTU и т.п., и сторона декодера выполняет операцию декодирования в соответствии с конфигурациями длины шага, проанализированными на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча, уровне CTU и т.п.

[321] Для простоты описания в последующих вариантах осуществления изобретения разность векторов движения поддерживает направления, такие как вверх и вниз и т.п., и поддерживает конфигурации длины шага, такие как 1-пиксель и 2-пикселя, в случае точности ¼-пикселя разность векторов движения может быть (0, 4), (0, 8), (0, -4), (0, -8), то есть (0, 1 << 2), (0, 1 << 3), (0, -1 << 2) и (0, -1 << 3).

[322] После получения списка кандидатов для компенсации движения сторона кодера может последовательно проходить каждый возможный вектор движения в списке кандидатов для компенсации движения. При прохождении возможного вектора 1 движения сумма возможного вектора 1 движения и разности векторов движения (0, 4) берется в качестве возможного вектора 1-1 движения, и определяют значение 1-1 стоимости RDO, соответствующее возможному вектору 1-1 движения. Описанный выше процесс определения здесь не ограничивается. Сумма возможного вектора 1 движения и разности векторов движения (0, 8) берется в качестве возможного вектора 1-2 движения, и определяют значение 1-2 стоимости RDO, соответствующее возможному вектору 1-2 движения. Сумма возможного вектора 1 движения и разности векторов движения (0, -4) берется в качестве возможного вектора 1-3 движения, и определяют значение 1-3 стоимости RDO, соответствующее возможному вектору 1-3 движения. Сумма возможного вектора движения 1 и разности векторов движения (0, -8) берется в качестве возможного вектора 1-4 движения, и определяют значение 1-4 стоимости RDO, соответствующее возможному вектору 1-4 движения.

[323] Аналогично, для каждого из пройденных возможных векторов движения значение стоимости RDO может быть получено путем описанной выше обработки. После завершения прохождения всех возможных векторов движения из всех значений стоимости RDO выбирают минимальное значение стоимости RDO. Если значение 1-1 стоимости RDO является минимальным, сторона кодера может кодировать следующее содержимое в кодированном битовом потоке: значение индекса возможного вектора 1 движения в списке кандидатов для компенсации движения, информацию о направлении и информацию об амплитуде разности векторов движения (0, 4), при этом информация о направлении используется для указания направления разности векторов движения (0, 4) вверх, а информация об амплитуде используется для указания амплитуды разности векторов движения (0, 4) и равна 4. Например, информация указания информации о направлении может быть равна 0, что указывает первое направление в списке направлений (вверх и вниз), и информация указания информации об амплитуде может быть равна 4, что указывает первую конфигурацию длины шага в списке конфигурации длины шага (1-пиксель, 2-пикселя). Описанный выше процесс является упрощенным примером, который здесь не ограничивается при условии, что могут быть указаны информация о направлении и информация об амплитуде.

[324] Например, когда разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.п., а разность векторов движения поддерживает пять конфигураций длины шага, таких как ¼-пикселя, ½-пикселя, 1-пиксель, 2-пикселя и 4-пикселя и т.п., информация о направлении разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения), при этом четыре значения 2-бинового кода фиксированной длины соответственно представляют четыре направления, такие как вверх, вниз, влево и вправо и т.п. Информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода, то есть пять конфигураций длины шага указаны усеченным унарным кодом.

[325] Другой пример, когда разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.п., а разность векторов движения поддерживает шесть конфигураций длины шага, таких как ¼-пикселя, ½-пикселя, 1-пиксель, 2-пикселя, 3-пикселя и 4-пикселя и т.п., информация о направлении разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.

[326] Другой пример, когда разность векторов движения поддерживает восемь направлений, таких как вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз и т.п., а разность векторов движения поддерживает три конфигурации длины шага, такие как ¼-пикселя, ½-пикселя и 1-пиксель и т.п., информация о направлении разности векторов движения может кодироваться с использованием 3-бинового кода фиксированной длины (всего восемь значений), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.

[327] В другом примере, когда разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево, вправо и т.п., а разность векторов движения поддерживает четыре конфигурации длины шага, такие как ¼-пикселя, ½-пикселя, 1-пиксель и 2-пикселя и т.п., таким образом информация о направлении разности векторов движения может кодироваться с использованием усеченного унарного кода, а информация об амплитуде разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения).

[328] Описанные выше способы кодирования являются только примерами и не ограничиваются здесь.

[329] Подводя итог, можно сказать, что сторона кодера может искать оптимальный вектор движения в определенной области, а затем принимать разность между оптимальным вектором движения и возможным вектором движения в качестве разности векторов движения и кодировать информацию об амплитуде и информацию о направлении разности векторов движения и значения индекса возможного вектора движения в списке кандидатов для компенсации движения в битовый поток. Когда на стороне кодера выполняется поиск оптимального вектора движения в определенной области, ожидается, что направление и амплитуда разности векторов движения будут согласованы, то есть поиск оптимального вектора движения осуществляется в ограниченных диапазонах разности векторов движения, например (Ar, 0), (0, -Ad), (-А1, 0), (0, Au), (Aru, Aru), (-Aru, Alu), (-Ald, -Ald) и (Ard, -Ard) и т.п., а не в любом диапазоне разности векторов движения.

[330] После получения кодированного битового потока текущего блока сторона декодера может проанализировать значение индекса возможного вектора движения в списке кандидатов для компенсации движения из кодированного битового потока и выбрать возможный вектор движения, соответствующий значению индекса в списке кандидатов для компенсации движения и принять возможный вектор движения в качестве исходного вектора движения текущего блока. Сторона декодера также может анализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока и определять разность векторов движения на основе информации о направлении и информации об амплитуде.

[331] Затем сторона декодера может определить целевой вектор движения текущего блока на основе разности векторов движения и исходного вектора движения, например, сумма разности векторов движения и исходного вектора движения может быть принята в качестве целевого вектора движения текущего блока.

[332] В описанных выше вариантах осуществления изобретения, при определении разности векторов движения на основе информации о направлении и информации об амплитуде, если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad). Если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна А1, разность векторов движения равна (-А1, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Au, разность векторов движения равна (0, Au). Если информация о направлении указывает направление вправо-вверх, а информация об амплитуде указывает, что амплитуда равна Aru, разность векторов движения равна (Aru, Aru). Если информация о направлении указывает направление влево-вверх, а информация об амплитуде указывает, что амплитуда равна Alu, разность векторов движения равна (-Alu, Alu). Если информация о направлении указывает направление влево-вниз, а информация об амплитуде указывает, что амплитуда равна Ald, разность векторов движения равна (-Ald, -Ald). Если информация о направлении указывает направление вправо-вниз, а информация об амплитуде указывает, что амплитуда равна Ard, разность векторов движения равна (Ard, -Ard).

[333] В вышеприведенном варианте осуществления изобретения при кодировании информации о направлении разности векторов движения сторона кодера может использовать код фиксированной длины или усеченный унарный код и т.п. Следовательно, на стороне декодера может использоваться код фиксированной длины или усеченный унарный код и т.п. для декодирования информации о направлении разности векторов движения, чтобы получить информацию о направлении разности векторов движения, например вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх, вправо-вниз и т.д.

[334] В вышеприведенном варианте осуществления изобретения при кодировании информации об амплитуде разности векторов движения сторона кодера может использовать код фиксированной длины или усеченный унарный код и т.п. Следовательно, сторона декодера может использовать код фиксированной длины или усеченный унарный код и т.п. для декодирования информации об амплитуде разности векторов движения, чтобы получить информацию об амплитуде разности векторов движения, такую как конфигурации длины шага: ¼-пикселя, ½-пикселя, 1-пиксель, 2-пикселя и т.п., а затем определить значение амплитуды разности векторов движения на основе конфигурации длины шага, например, ¼-пикселя, ½-пикселя, 1-пиксель и 2-пикселя.

[335] Подводя итог, можно сказать, что сторона декодера может проанализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока, а затем определить разность векторов движения на основе информации о направлении и информации об амплитуде.

[336] В возможной реализации сторона кодера может также кодировать информацию флага в кодированном битовом потоке, при этом информация флага указывает на наложение разности векторов движения на исходный вектор движения или отсутствие наложения разности векторов движения на исходный вектор движения. Информация флага может быть флагом подрежима расширенного углового режима взвешенного предсказания. Кроме того, расширенный угловой режим взвешенного предсказания также может называться режимом AWP с уточнением вектора движения (AWP-MVR, AWP with Motion Vector Refinement). После приема кодированного битового потока текущего блока сторона декодера сначала анализирует информацию флага из кодированного битового потока текущего блока. Если информация флага указывает на наложение разности векторов движения на исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока текущего блока и определяет разность векторов движения на основе информации о направлении и информации об амплитуде и определяет целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения. Если информация флага указывает на отсутствие наложения разности векторов движения на исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде разности векторов движения, а напрямую принимает исходный вектор движения в качестве целевого вектора движения текущего блока.

[337] Например, когда флаг подрежима расширенного углового режима взвешенного предсказания представляет собой первое значение подрежима, это указывает на наложение разности векторов движения на исходный вектор движения; когда флаг подрежима режима EAWP является вторым значением подрежима, это указывает на отсутствие наложения разности векторов движения на исходный вектор движения. Первое значение подрежима и второе значение подрежима могут быть сконфигурированы на основе опыта, например, первое значение подрежима может быть 1, а второе значение подрежима может быть 0, или, например, первое значение подрежима может быть равно 0, а второе значение подрежима может быть равно 1. Выше приведены только два примера, и здесь не делается никаких ограничений.

[338] В возможной реализации для условий 1 или 2 варианта 13 осуществления изобретения первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, и вторая целевая информация о движении включает второй целевой вектор движения. На основе вышеизложенного может быть получена первая разность векторов движения, соответствующая первому исходному вектору движения, и первый целевой вектор движения определяется на основе первой разности векторов движения и первого исходного вектора движения, то есть сумма первой разности векторов движения и первого исходного вектора движения принимается в качестве первого целевого вектора движения. Может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения, и второй целевой вектор движения определяется на основе второй разности векторов движения и второго исходного вектора движения, то есть сумма второй разности векторов движения и второго исходного вектора движения принимается в качестве второго целевого вектора движения.

[339] Сторона кодера может использовать RDO для определения первой разности векторов движения, соответствующей первому исходному вектору движения, и определения второй разности векторов движения, соответствующей второму исходному вектору движения, что здесь не ограничено.

[340] Когда сторона кодера передает кодированный битовый поток текущего блока на сторону декодера, кодированный битовый поток может переносить информацию о направлении и информацию об амплитуде первой разности векторов движения, а также информацию о направлении и информацию об амплитуде второй разности векторов движения.

[341] Сторона декодера после приема кодированного битового потока текущего блока может анализировать информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения и может анализировать информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения. Затем сторона декодера может определить первый целевой вектор движения текущего блока на основе первой разности векторов движения и первого исходного вектора движения и определить второй целевой вектор движения текущего блока на основе второй разности векторов движения и второго исходного вектора движения.

[342] В возможной реализации сторона кодера может также кодировать первый флаг подрежима и второй флаг подрежима расширенного углового режима взвешенного предсказания в кодированном битовом потоке, при этом первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения или отсутствие наложения разности векторов движения на первый исходный вектор движения, а второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения или отсутствие наложения разности векторов движения на второй исходный вектор движения.

[343] В возможной реализации упомянутый выше первый флаг подрежима также может быть первым битом флага в кодированном битовом потоке, а упомянутый выше второй флаг подрежима также может быть вторым битом флага в кодированном битовом потоке.

[344] Сторона декодера после приема кодированного битового потока текущего блока может сначала анализировать первый флаг подрежима и второй флаг подрежима расширенного углового режима взвешенного предсказания из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определяет первую разность векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения, а затем определяет первый целевой вектор движения текущего блока на основе первого исходного вектора движения и первой разности векторов движения. Если первый флаг подрежима указывает на отсутствие наложения разности векторов движения на первый исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде первой разности векторов движения, а напрямую берет первый исходный вектор движения в качестве первого целевого вектора движения текущего блока. Если второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определяет вторую разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения, а затем определяет второй целевой вектор движения текущего блока на основе второго исходного вектора движения и второй разности векторов движения. Если второй флаг подрежима указывает на отсутствие наложения разности векторов движения на второй исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде второй разности векторов движения, а напрямую берет второй исходный вектор движения в качестве второго целевого вектора движения текущего блока.

[345] Вариант 15 осуществления изобретения. На основе вариантов 13 и 14 осуществления изобретения для условия двух разностей векторов движения соответствующий синтаксис для наложения разности векторов движения на информацию об однонаправленном движении описан ниже в сочетании с несколькими конкретными сценариями применения.

[346] Сценарий 1 применения: в Таблице 4 показан пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, a AwpFlag указывает, находится ли текущий блок в режиме AWP.

[347] awp_idx (индекс углового режима взвешенного предсказания) представляет собой значение индекса углового режима взвешенного предсказания в режиме пропуска или в прямом режиме, и значение AwpIdx может быть равно значению awp_idx. Если в битовом потоке нет awp_idx, значение AwpIdx равно 0.

[348] awp_cand_idx0 (первый индекс информации о движении углового режима взвешенного предсказания) представляет собой первое значение индекса информации о движении углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx0 равно значению awp_cand_idx0. Если в битовом потоке нет awp_cand_idx0, значение AwpCandIdx0 равно 0.

[349] awp_cand_idx1 (второй индекс информации о движении для углового режима взвешенного предсказания) представляет собой второе значение индекса информации о движении для углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx1 равно значению awp_cand_idx1. Если в битовом потоке нет awp_cand_idx1, значение AwpCandIdx1 равно 0.

[350] awp_mvd_flag (флаг расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_flag является первой величиной (например, 1), это указывает на то, что текущий блок находится в расширенном угловом режиме взвешенного предсказания; когда awp_mvd_flag является вторым значением (например, 0), это указывает на то, что текущий блок находится в нерасширенном угловом режиме взвешенного предсказания. Например, значение AwpMvdFlag может быть равно значению awp_mvd_flag. Если в битовом потоке нет awp_mvd_flag, значение AwpMvdFlag равно 0.

[351] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первой величиной, это указывает на то, что первая информация о движении углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.

[352] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первой величиной, это указывает на то, что вторая информация о движении углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, может быть следующий случай: если значение AwpMvdFlag равно 1, значение AwpMvdSubFlag1 равно 1, в противном случае значение AwpMvdSubFlag1 может быть 0.

[353] awp_mvd_dir0 (значение индекса направления разности векторов движения для первой информации о движении) представляет собой значение индекса направления для разности векторов движения для первой информации о движении в угловом режиме взвешенного предсказания. Например, значение AwpMvdDir0 может быть равно значению awp_mvd_dir0. Если в битовом потоке нет awp_mvd_dir0, значение AwpMvdDir может быть равно 0.

[354] awp_mvd_step0 (значение индекса длины шага разности векторов движения первой информации о движении) представляет собой значение индекса длины шага разности векторов движения первой информации о движении в угловом режиме взвешенного предсказания. Например, значение AwpMvdStep0 может быть равно значению awp_mvd_step0. Если в битовом потоке нет awp_mvd_step0, значение AwpMvdStep0 может быть равно 0.

[355] awp_mvd_dir1 (значение индекса направления разности векторов движения второй информации о движении) представляет собой значение индекса направления разности векторов движения второй информации о движении в угловом режиме взвешенного предсказания. Например, значение AwpMvdDirl может быть равно значению awp_mvd_dir1. Если в битовом потоке нет awp_mvd_dir1, значение AwpMvdDirl может быть равно 0.

[356] awp_mvd_step1 (значение индекса длины шага разности векторов движения второй информации о движении) представляет собой значение индекса длины шага разности векторов движения второй информации о движении в угловом режиме взвешенного предсказания. Например, значение AwpMvdStep1 может быть равно значению awp_mvd_step1. Если в битовом потоке нет awp_mvd_step1, значение AwpMvdStep1 может быть равно 0.

[357] Сценарий 2 применения: Таблица 5 показывает пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, a AwpFlag указывает, находится ли текущий блок в режиме AWP.

[358] Для awp_idx, awp_cand_idx0 и awp_cand_idx1 может быть сделана ссылка на сценарий 1 применения, и здесь не приводится избыточных описаний.

[359] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первой величиной, это указывает на то, что первая информация о движении углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.

[360] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первой величиной, это указывает на то, что вторая информация о движении углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, значение AwpMvdSubFlag1 может быть равно 0.

[361] Для awp_mvd_dir0, awp_mvd_step0, awp_mvd_dir1 и awp_mvd_step1 можно сделать ссылку на сценарий 1 применения.

[362] Например, сценарий 1 применения и сценарий 2 применения отличаются в следующем: в сценарии 1 применения присутствует синтаксис awp_mvd_flag, но в сценарии 2 применения синтаксис awp_mvd_flag отсутствует. В сценарии 1 применения расширенный угловой режим взвешенного предсказания управляется посредством awp_mvd_flag, то есть расширенный угловой режим взвешенного предсказания управляется главным переключателем.

[363] Сценарий 3 применения: приведенные выше сценарий 1 применения и сценарий 2 применения можно расширить для полной интеграции режимов AWP и AWP-MVR, то есть добавить 0 диапазонов к диапазону, таким образом, нет необходимости кодировать бит флага для указания того, следует ли включить или нет. Например, разность векторов движения поддерживает четыре направления, такие как вверх, вниз, влево и вправо и т.п., а разность векторов движения поддерживает следующие 6 конфигураций длины шага: 0-пикселей, 1/4-пикселя, 1/2-пикселя, 1-пиксель, 2-пикселя и 4-пикселя, то есть добавляется конфигурация шага 0-пикселей. На основе этого Таблица 4 или Таблица 5 может быть обновлена до Таблицы 6. Значения соответствующего синтаксиса в Таблице 6 можно найти в Таблице 4, и здесь они не будут повторяться.

[364] Например, в приведенных выше вариантах осуществления изобретения целевая информация о движении может быть получена на основе исходной информации о движении. После того как целевая информация о движении получена, целевая информация о движении текущего блока может быть сохранена способом, который здесь не ограничивается.

[365] Вариант 16 осуществления изобретения: в вариантах 12 и 13 осуществления изобретения ожидается получение списка кандидатов для компенсации движения, и в процессе получения списка кандидатов для компенсации движения может быть получена по меньшей мере одна часть доступной информации о движении, которая должна быть добавлена в список кандидатов для компенсации движения; на основе упомянутой по меньшей мере одной части доступной информации о движении получают список кандидатов для компенсации движения. Например, для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения, если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, уже существующей в списке кандидатов для компенсации движения, информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения. Если доступная информация о движении представляет собой информацию о двунаправленном движении, и первая информация об однонаправленном движении в информации о двунаправленном движении не дублируется информацией о возможном движении, уже существующей в списке кандидатов для компенсации движения, первую информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения. Если доступная информация о движении является информацией о двунаправленном движении, первая информация об однонаправленном движении в информации о двунаправленном движении дублируется информацией о возможном движении, уже существующей в списке кандидатов для компенсации движения, а вторая информация об однонаправленном движении в информации о двунаправленном движении не дублируется информацией о возможном движении, уже существующей в списке кандидатов для компенсации движения, то вторую информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения.

[366] Например, первая информация об однонаправленном движении представляет собой информацию об однонаправленном движении, указывающую на опорное изображение в первом списке опорных изображений, а вторая информация об однонаправленном движении представляет собой информацию об однонаправленном движении, указывающую на опорное изображение во втором списке опорных изображений.

[367] В возможной реализации, если общее количество информации о возможном движении, уже существующей в списке кандидатов для компенсации движения (например, общее количество информации о возможном движении, уже существующей для текущего блока), является четным числом, то первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений; если общее количество информации о возможном движении, уже существующей в списке кандидатов для компенсации движения, является нечетным числом, первый список опорных изображений является списком List0 опорных изображений, а второй список опорных изображений является списком List1 опорных изображений. Альтернативно, если общее количество информации о возможном движении, уже существующей в списке кандидатов для компенсации движения, является нечетным числом, первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений; если общее количество информации о возможном движении, уже существующей в списке кандидатов для компенсации движения, является четным числом, первый список опорных изображений является списком List0 опорных изображений, а второй список опорных изображений является списком List1 опорных изображений.

[368] В другой возможной реализации первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений; или первый список опорных изображений представляет собой список List1 опорных изображений, а второй список опорных изображений представляет собой список List0 опорных изображений.

[369] В приведенных выше вариантах осуществления изобретения по меньшей мере одна часть доступной информации о движении, которая должна быть добавлена в список кандидатов для компенсации движения, может включать, не ограничиваясь этим, по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; информация о движении HMVP (предсказание вектора движения на основе предыстории); или заранее заданная информация о движении.

[370] Например, упомянутый выше список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения, как показано на Фиг. 9, которая представляет собой схематическую диаграмму текущего блока и соседних блоков. Для процесса получения списка кандидатов для компенсации движения на основе порядка F, G, С, А, В, D пространственную информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения и выполняют проверку на дублирование, и временную информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения и выполняют проверку на дублирование, и, наконец, если список кандидатов для компенсации движения не является полным, повторно выполняют операцию заполнения. Порядок F, G, С, А, В, D является только примером, и можно использовать другие порядки, которые не ограничены.

[371] Выполнение проверки на дублирование заключается в сравнении информации о движении, которая должна быть добавлена в список кандидатов для компенсации движения, с каждой из существующей информации о возможном движении в списке кандидатов для компенсации движения, если она не дублируется в сравнении со всей существующей информацией о возможном движении в списке кандидатов для компенсации движения, считается, что список кандидатов без дублирования; если она дублируется в сравнении с какой-либо существующей информацией о возможном движении в списке кандидатов для компенсации движения, он считается дублированным.

[372] Процесс получения списка кандидатов для компенсации движения описан ниже посредством нескольких конкретных сценариев применения.

[373] Сценарий 1 применения: пространственную информацию о движении и временную информацию о движении совместно добавляют в список кандидатов для компенсации движения.

[374] На первом этапе, как показано на Фиг. 9, F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и определяют доступность F, G, С, А, В и D. Например, если присутствует F и принят режим внешнего предсказания, информация F о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация F о движении недоступна. Если присутствует G и принят режим внешнего предсказания, информация G о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация G о движении недоступна. Если присутствует С и принят режим внешнего предсказания, информация С о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация С о движении недоступна. Если присутствует А и принят режим внешнего предсказания, информация А о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация А о движении недоступна. Если присутствует В и принят режим внешнего предсказания, информация В о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация о движении В недоступна. Если присутствует D и принят режим внешнего предсказания, информация D о движении может быть определена как доступная информация о движении; в противном случае определяют, что информация D о движении недоступна.

[375] На втором этапе доступную информацию о движении добавляют в список кандидатов для компенсации движения AwpUniArray на основе порядка доступной информации о движении F, G, С, А, В и D (этот порядок является переменным и включает только доступную информацию о движении) и порядка временной информации о движении (включая доступную информацию о движении) до тех пор, пока длина AwpUniArray не станет равной X или пока не завершится обход.

[376] Условие 1, для добавления доступной информации о движении в список кандидатов для компенсации движения, если доступная информация о движении является информацией о двунаправленном движении (например, включая информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информацию об однонаправленном движении, указывающую на список List1 опорных изображений), на основе четности общего количества существующей информации о возможном движении в списке кандидатов для компенсации движения (то есть текущей длины списка AwpUniArray кандидатов для компенсации движения) определяют, как добавить доступную информацию о движении в список AwpUniArray кандидатов для компенсации движения. Для простоты доступная информация о движении может называться первой доступной информацией о движении.

[377] Способ 1. Если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является четным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[378] Альтернативно, если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является нечетным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений добавляют в список AwpUniArray кандидатов для компенсации движения.

[379] Способ 2. Если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является нечетным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений в первой доступной информации о движении, и однонаправленной информацией о движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[380] Альтернативно, если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является четным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений в первой доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[381] Условие 2. Для добавления доступной информации о движении в список кандидатов для компенсации движения, если доступная информация о движении является информацией об однонаправленном движении, выполняют проверку на дублирование между информацией об однонаправленном движении и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении добавляют в список AwpUniArray кандидатов для компенсации движения.

[382] На третьем этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[383] Например, в сценарии 1 применения временная информация о движении может быть информацией об однонаправленном движении или информацией о двунаправленном движении. Например, в Р-слайсе временная информация о движении представляет собой информацию об однонаправленном движении, а в В-слайсе временная информация о движении представляет собой информацию о двунаправленном движении.

[384] Сценарий 2 применения: после добавления пространственной информации о движении в список кандидатов для компенсации движения позиции Y зарезервированы для временной информации о движении, а временная информация о движении представляет собой информацию о двунаправленном движении, то есть список кандидатов для компенсации движения включает временную информацию о движении Y.

[385] На первом этапе определяют «доступность» информации о движении F, G, С, А, В и D, что может относиться к сценарию 1 применения.

[386] На втором этапе доступную информацию о движении (каждую доступную пространственную информацию о движении) добавляют в список AwpUniArray кандидатов для компенсации движения на основе порядка доступной информации о движении F, G, С, А, В и D (этот порядок является переменным и включает только доступную информацию о движении) до тех пор, пока длина списка AwpUniArray кандидатов для компенсации движения не будет равна X-Y, или пока не завершится обход доступной информации о движении.

[387] Второй этап сценария 2 применения можно увидеть на втором этапе сценария 1 применения, и здесь он повторяться не будет.

[388] Третий этап, для временной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения (например, временной информации о двунаправленном движении и доступной информации о движении), временную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения в соответствии с четностью общего количества информации о возможном движении, уже существующей в списке кандидатов для компенсации движения (то есть текущей длины списка кандидатов для компенсации движения).

[389] Способ 1. Если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является четным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[390] Альтернативно, если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является нечетным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[391] Способ 2. Если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является нечетным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[392] Альтернативно, если общее количество существующей информации о возможном движении в списке AwpUniArray кандидатов для компенсации движения является четным числом, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[393] На четвертом этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[394] Сценарий 3 применения: после добавления пространственной информации о движении в список кандидатов для компенсации движения позиции Y зарезервированы для временной информации о движении, а временная информация о движении представляет собой информацию об однонаправленном движении, то есть список кандидатов для компенсации движения включает временную информацию о движении Y.

[395] На первом этапе определяют «доступность» информации о движении F, G, С, А, В и D, что может относиться к сценарию 1 применения.

[396] На втором этапе доступную информацию о движении (каждую доступную пространственную информацию о движении) добавляют в список AwpUniArray кандидатов для компенсации движения на основе порядка доступной информации о движении F, G, С, А, В и D (этот порядок является переменным и включает только доступную информацию о движении) до тех пор, пока длина списка AwpUniArray кандидатов для компенсации движения не будет равна X-Y, или пока не завершится обход доступной информации о движении.

[397] Второй этап сценария 3 применения можно увидеть на втором этапе сценария 1 применения, и здесь он повторяться не будет.

[398] На третьем этапе, для временной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения (например, временной информации об однонаправленном движении и доступной информации о движении), выполняют проверку на дублирование между временной информацией о движении и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, временную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения.

[399] На четвертом этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[400] Сценарий 4 применения: пространственную информацию о движении и временную информацию о движении совместно добавляют в список кандидатов для компенсации движения.

[401] На первом этапе определяют «доступность» информации о движении F, G, С, А, В и D, что может относиться к сценарию 1 применения.

[402] На втором этапе доступную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения на основе порядка доступной информации о движении F, G, С, А, В и D (этот порядок является переменным и включает только доступную информацию о движении) и порядка временной информации о движении (включая доступную информацию о движении), пока длина AwpUniArray не станет равной X или пока обход не завершится:

[403] Условие 1, для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения, если доступная информация о движении является информацией о двунаправленном движении (например, включая информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информацию об однонаправленном движении, указывающую на список List1 опорных изображений), доступную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения. Для простоты доступная информация о движении может называться второй доступной информацией о движении.

[404] В способе 1 выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во второй доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во второй доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[405] Способ 2, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во второй доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во второй доступной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[406] Условие 2. Для добавления доступной информации о движении в список кандидатов для компенсации движения, если доступная информация о движении является информацией об однонаправленном движении, выполняют проверку на дублирование между информацией об однонаправленном движении и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении добавляют в список AwpUniArray кандидатов для компенсации движения.

[407] На третьем этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[408] Например, в сценарии 4 применения временная информация о движении может быть информацией об однонаправленном движении или информацией о двунаправленном движении. Например, в Р-слайсе временная информация о движении представляет собой информацию об однонаправленном движении, а в В-слайсе временная информация о движении представляет собой информацию о двунаправленном движении.

[409] Сценарий 5 применения: после добавления пространственной информации о движении в список кандидатов для компенсации движения позиции Y зарезервированы для временной информации о движении, а временная информация о движении представляет собой информацию о двунаправленном движении, то есть список кандидатов для компенсации движения включает временную информацию о движении Y.

[410] На первом этапе определяют «доступность» информации о движении F, G, С, А, В и D, что может относиться к сценарию 1 применения.

[411] На втором этапе доступную информацию о движении (например, каждую доступную пространственную информацию о движении) добавляют в список AwpUniArray кандидатов для компенсации движения на основе порядка доступной информации о движении F, G, С, А, В и D (этот порядок является переменным и включает только доступную информацию о движении) до тех пор, пока длина списка AwpUniArray кандидатов для компенсации движения не будет равна X-Y, или пока не завершится обход доступной информации о движении.

[412] Второй этап сценария 5 применения можно увидеть на втором этапе сценария 1 применения, и здесь он повторяться не будет.

[413] На третьем этапе для временной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения (например, временной информации о двунаправленном движении и доступной информации о движении), временную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения.

[414] Способ 1, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[415] Способ 2, выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List1 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List1 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения. В случае дублирования выполняют проверку на дублирование между информацией об однонаправленном движении, указывающей на список List0 опорных изображений во временной информации о движении, и информацией об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения. При отсутствии дублирования, информацию об однонаправленном движении, указывающую на список List0 опорных изображений, добавляют в список AwpUniArray кандидатов для компенсации движения.

[416] На четвертом этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[417] После добавления пространственной информации о движении в список кандидатов для компенсации движения позиции Y резервируют для временной информации о движении, а временная информация о движении представляет собой информацию об однонаправленном движении, то есть список кандидатов для компенсации движения включает временную информацию о движении Y.

[418] На первом этапе определяют «доступность» информации о движении F, G, С, А, В и D, что может относиться к сценарию 1 применения.

[419] Второй этап можно увидеть на втором этапе сценария 4 применения, и здесь он повторяться не будет.

[420] На третьем этапе, для временной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов для компенсации движения (например, временной информации об однонаправленном движении и доступной информации о движении), выполняют проверку на дублирование между временной информацией о движении и информацией об однонаправленном движении в списке AwpUniArray кандидатов компенсации движения. При отсутствии дублирования, временную информацию о движении добавляют в список AwpUniArray кандидатов для компенсации движения.

[421] На четвертом этапе, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет X.

[422] В приведенных выше сценариях применения X может быть любым положительным целым числом, например, X может быть 4 или 5 и т.п.

[423] В приведенных выше сценариях применения, если длина списка AwpUniArray кандидатов для компенсации движения меньше X, повторяют заполнение последней части информации об однонаправленном движении в списке AwpUniArray кандидатов для компенсации движения до тех пор, пока длина списка не станет равной X. На практике до повторного выполнения операции заполнения последней части информации об однонаправленном движении действительная информация о движении может быть увеличена за счет получения информации о движении. Например, с любой одной частью действительной информации о движении (х, у, ref_idx, ListX) в списке кандидатов для компенсации движения в качестве основы ref_idx и ListX представляют индекс опорного изображения и список опорных изображений соответственно, которые совместно называются информацией об опорных изображениях, и по меньшей мере одна часть информации о движении может быть добавлена следующим образом: (х+а, y+b, ref_idx, ListX), где а и b могут быть любыми целыми числами; (k1 * х, k1 * у, ref_idx_newl, ListX), где k1 - любое положительное целое число, отличное от нуля, то есть для вектора движения выполняют операцию масштабирования; (k2 * х, k2 * у, ref_idx_new2, ListY), где k2 - любое положительное целое число, отличное от нуля, то есть для вектора движения выполняют операцию масштабирования. Кроме того, может также выполняться добавление нулевых векторов движения, то есть информация о движении может быть (0, 0, ref_idx3, ListZ). Для приведенной выше информации о движении, когда информацию о движении добавляют в список кандидатов для компенсации движения, проверка на дублирование может выполняться или не выполняться. Если длина списка AwpUniArray кандидатов для компенсации движения все еще меньше X, может быть повторно выполнена операция заполнения, как указано выше.

[424] В приведенных выше сценариях применения, в дополнение к пространственной информации о движении и временной информации о движении, информация о движении HMVP также может быть добавлена в список AwpUniArray кандидатов для компенсации движения, и процесс добавления информации о движении HMVP не ограничен.

[425] В приведенных выше сценариях применения может быть построен список AwpUniArray кандидатов для компенсации движения, а информация о движении в AwpUniArray может называться информацией о возможном движении, а затем информация о возможном движении может быть выбрана из AwpUniArray в качестве целевой информации о движении текущего блока, и затем может быть определено значение предсказания позиции пикселя на основе целевой информации о движении.

[426] В возможной реализации две части информации о возможном движении выбирают из AwpUniArray в качестве первой целевой информации о движении и второй целевой информации о движении текущего блока. На основе этого сторона декодера может проанализировать AwpCandIdx0 и AwpCandIdx1 из кодированного битового потока и назначить (AwpCandIdx0+1)-го информацию о движении в AwpUniArray как mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1, а также назначить (AwpCandIdx1+1)-го информацию о движении в AwpUniArray как mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1. (AwpCandIdx0+1)-я информация о движении в AwpUniArray также может быть назначена как mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1, a (AwpCandIdx1+1)-я информация о движении в AwpUniArray может быть назначена как mvAwp0L0, mvAwpOLxLd0 и RefIdxAwp0, что здесь не ограничено.

[427] Например, AwpCandIdx0 представляет значение индекса первой целевой информации о движении. Следовательно, (AwpCandIdx0+1)-я информация о движении в AwpUniArray может быть назначена первой целевой информации о движении. Например, если значение AwpCandIdx0 равно 0, первую информацию о движении в AwpUniArray назначают первой целевой информации о движении; если значение AwpCandIdx0 равно 1, вторую информацию о движении в AwpUniArray назначают первой целевой информации о движении и т.д.

[428] mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1 объединяют в качестве первой целевой информации о движении, то есть первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1.

[429] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.

[430] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.

[431] Например, mvAwp0L0 и RefIdxAwp0L0 представляют информацию об однонаправленном движении, указывающую на List0 в первой целевой информации о движении, a mvAwp0L1 и RefIdxAwp0L1 представляют информацию об однонаправленном движении, указывающую на List1, в первой целевой информации о движении.

[432] Если RefIdxAwp0L0 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на List0, действительна. Таким образом, режим предсказания первой целевой информации о движении представляет собой PREDList0, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List0.

[433] Если RefIdxAwp0L1 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания первой целевой информации о движении представляет собой PRED List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.

[434] Например, AwpCandIdx1 представляет значение индекса второй целевой информации о движении. Следовательно, (AwpCandIdx1+1)-я информация о движении в AwpUniArray может быть назначена второй целевой информации о движении. Например, если значение AwpCandIdx1 равно 0, первую информацию о движении в AwpUniArray назначают второй целевой информации о движении; если значение AwpCandIdx1 равно 1, вторую информацию о движении в AwpUniArray назначают второй целевой информации о движении и т.д.

[435] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1 объединяют в качестве второй целевой информации о движении, то есть вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1.

[436] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.

[437] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.

[438] Например, mvAwp1L0 и RefIdxAwp1L0 представляют информацию об однонаправленном движении, указывающую на List0, во второй целевой информации о движении, a mvAwp1L1 и RefIdxAwp1L1 представляют информацию об однонаправленном движении, указывающую на List1, во второй целевой информации о движении.

[439] Если RefIdxAwp1L0 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на List0, действительна. Таким образом, режим предсказания второй целевой информации о движении представляет собой PRED List0, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List0.

[440] Если RefIdxAwp1L1 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания второй целевой информации о движении представляет собой PRED_List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.

[441] В другой возможной реализации одна часть информации о возможном движении может быть выбрана из AwpUniArray в качестве целевой информации о движении текущего блока. Сторона декодера может проанализировать AwpCandIdx из кодированного битового потока и назначить (AwpCandIdx+1)-ю информацию о движении в AwpUniArray как mvAwpL0, mvAwpL1, RefIdxAwpL0 и RefIdxAwpL1. AwpCandIdx представляет значение индекса целевой информации о движении, mvAwpL0, mvAwpL1, RefIdxAwpL0 и RefIdxAwpL1 совместно в качестве целевой информации о движении. mvAwpL0 и RefIdxAwpL0 представляют информацию об однонаправленном движении, указывающую на List0, в целевой информации о движении, a mvAwpL1 и RefIdxAwpL1 представляют информацию об однонаправленном движении, указывающую на List1, в целевой информации о движении.

[442] Например, варианты 1-16 осуществления изобретения могут быть реализованы по отдельности или в сочетании. Например, вариант 1 осуществления изобретения может быть реализован в сочетании с вариантом 2 осуществления изобретения; Вариант 1 осуществления изобретения может быть реализован в сочетании с Вариантом 3 осуществления изобретения; Вариант 1 осуществления изобретения, вариант 2 осуществления изобретения и вариант 3 осуществления изобретения могут быть реализованы в сочетании; Вариант 4 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 5 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 6 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 7 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 8 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 9 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 10 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 11 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 12 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 13 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 14 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 15 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; Вариант 16 осуществления изобретения может быть реализован в сочетании с одним или более вариантами 1-3 осуществления изобретения; выше приведены лишь примеры, и нет никаких ограничений на то, как варианты осуществления изобретения могут сочетаться друг с другом.

[443] Следует отметить, что в приведенных выше вариантах осуществления изобретения способ, используемый стороной кодера, и способ, используемый стороной декодера, могут ссылаться друг на друга.

[444] Вариант 17 осуществления изобретения. На основе той же идеи применения, что и в описанном выше способе, варианты осуществления настоящего изобретения также обеспечивают оборудование для кодирования и декодирования, применяемое на стороне кодера или на стороне декодера, см. Фиг. 10А, где показана структурная схема оборудования, содержащего модуль 111 получения, модуль 112 конфигурирования и модуль 113 определения.

[445] Модуль 111 получения предназначен для получения угла взвешенного предсказания и параметров весовой конфигурации текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов.

[446] Модуль 112 конфигурирования предназначен для конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации текущего блока.

[447] Модуль 113 определения предназначен для определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока, на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определения первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определения второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определения значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[448] Если текущий блок поддерживает режим переключения коэффициента преобразования весов, модуль 111 получения получает коэффициент преобразования весов текущего блока путем выполнения следующего: получение первой информации указания коэффициента преобразования весов для текущего блока; определение коэффициента преобразования весов текущего блока на основе первой информации указания коэффициента преобразования весов. Если первая информация указания коэффициента преобразования весов является первой информацией указания, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов, и если первая информация указания коэффициента преобразования весов является второй информацией указания, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.

[449] Первая информация указания коэффициента преобразования весов является информацией указания уровня изображения, первая информация указания коэффициента преобразования весов в текущем блоке представляет идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку, первая информация указания предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, а вторая информация указания предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов. Абсолютное значение первого коэффициента преобразования весов не равно абсолютному значению второго коэффициента преобразования весов.

[450] Если текущий блок поддерживает режим переключения коэффициента преобразования весов, модуль 111 получения получает коэффициент преобразования весов текущего блока путем выполнения следующего: получение второй информации указания коэффициента преобразования весов для текущего блока; выбор коэффициента преобразования весов, соответствующего второй информации указания коэффициента преобразования весов, из заранее заданной таблицы поиска; при этом заданная таблица поиска включает по меньшей мере два коэффициента преобразования весов; и определение выбранного коэффициента преобразования весов в качестве коэффициента преобразования весов текущего блока.

[451] Например, при конфигурировании опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации модуль 112 конфигурирования, в частности, используется для выполнения следующего: для каждой окружающей позиции за пределами текущего блока, конфигурирование опорного весового значения окружающей позиции в соответствии со значением координаты окружающей позиции, значением координаты начальной позиции преобразования весов и коэффициентом преобразования весов.

[452] Например, начальная позиция преобразования весов определяется по меньшей мере одним из следующих параметров: угол взвешенного предсказания, позиция взвешенного предсказания текущего блока или размер текущего блока. Количество окружающих позиций за пределами текущего блока определяется на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. Опорные весовые значения окружающих позиций за пределами текущего блока монотонно увеличиваются. Окружающие позиции за пределами текущего блока включают одну или более позиций целого пикселя и/или одну или более позиций субпикселя. Окружающие позиции за пределами текущего блока включают окружающие позиции в одной строке сверху от текущего блока и/или окружающие позиции в одном столбце слева от текущего блока.

[453] Опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций. Все опорные весовые значения первых соседних позиций являются вторым опорным весовым значением, а все опорные весовые значения вторых соседних позиций являются третьим опорным весовым значением, при этом второе опорное весовое значение отличается от третьего опорного весового значения. Целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения, если целевые позиции включают по меньшей мере два значения опорного веса, по меньшей мере два опорных весовых значения целевых позиций монотонно увеличиваются.

[454] Угол взвешенного предсказания представляет собой горизонтальный угол; или угол взвешенного предсказания представляет собой вертикальный угол; или абсолютное значение наклона угла взвешенного предсказания представляет собой n-ю степень числа 2, где п представляет собой целое число.

[455] Например, модуль 113 определения также предназначен для выполнения следующего: если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя сконфигурирована с опорным весовым значением, определение целевого весового значения позиции пикселя на основе опорного весового значения позиции целого пикселя; или, если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя сконфигурирована с опорным весовым значением, определение целевого весового значения позиции пикселя на основе опорного весового значения позиции субпикселя.

[456] Если первый режим предсказания представляет собой режим внешнего предсказания, модуль 113 определения также предназначен для получения списка кандидатов для компенсации движения, включающего по меньшей мере одну часть информации о возможном движении; выбор одной части информации о возможном движении из списка кандидатов для компенсации движения в качестве исходной информации о движении текущего блока; определение целевой информации о движении текущего блока на основе исходной информации о движении; и определение первого значения предсказания позиции пикселя на основе целевой информации о движении.

[457] Исходная информация о движении включает исходный вектор движения, целевая информация о движении включает целевой вектор движения, а модуль 113 определения также предназначен для получения разности векторов движения, соответствующей исходному вектору движения; и определения целевого вектора движения на основе разности векторов движения и исходного вектора движения.

[458] На стороне декодера модуль 113 определения также предназначен для анализа информации о направлении и информации об амплитуде разности векторов движения из кодированного битового потока текущего блока; определения разности векторов движения на основе информации о направлении и информации об амплитуде разности векторов движения.

[459] Если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad). Если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна А1, разность векторов движения равна (-А1, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Au, разность векторов движения равна (0, Au).

[460] На стороне декодера модуль 113 определения также предназначен для анализа информации флага из кодированного битового потока текущего блока; если информация флага указывает на наложение разности векторов движения на исходный вектор движения, анализа информации о направлении и информации об амплитуде разности векторов движения из кодированного битового потока текущего блока.

[461] Модуль 113 определения также предназначен для получения по меньшей мере одной части доступной информации о движении для добавления в список кандидатов для компенсации движения и построения списка кандидатов для компенсации движения на основе упомянутой по меньшей мере одной части доступной информации о движении.

[462] По меньшей мере одна часть доступной информации о движении включает по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; или заранее заданная информация о движении.

[463] Что касается варианта осуществления устройства, поскольку он в основном соответствует варианту осуществления способа, соответствующая часть может относиться к описанию варианта осуществления способа. Варианты осуществления устройства, описанные выше, являются просто иллюстративными, при этом блоки, описанные как отдельные компоненты, могут быть или не быть физически отдельными, а компоненты, показанные как блоки, могут быть или не быть физическими блоками, то есть могут быть расположены в одном месте или распределены по множеству устройств в сети. Некоторые или все модули могут быть выбраны в соответствии с практическими потребностями для достижения цели решений настоящего варианта осуществления изобретения. Специалисты в данной области техники могут понять и реализовать решения без выполнения творческой работы.

[464] На основе той же идеи применения, что и в вышеупомянутых способах, варианты осуществления настоящего изобретения обеспечивают устройство на стороне декодера (также называемое видеодекодером). Что касается аппаратных средств, архитектура аппаратных средств показана на Фиг. 10В. Устройство на стороне декодера содержит один или более процессоров 121 и машиночитаемый носитель 122 данных, при этом машиночитаемый носитель 122 данных хранит машиночитаемые инструкции, исполняемые процессором 121. Процессор 121 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 121 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания и параметров весовой конфигурации текущего блока; при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определение значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[465] На основе той же идеи применения, что и в вышеупомянутых способах, варианты осуществления настоящего изобретения обеспечивают устройство на стороне кодера (также называемое видеокодером). Что касается аппаратных средств, архитектура аппаратных средств показана на Фиг. 10С. Устройство на стороне декодера содержит один или более процессоров 131 и машиночитаемый носитель 132 данных, при этом машиночитаемый носитель 132 данных хранит машиночитаемые инструкции, исполняемые процессором 131. Процессор 131 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 131 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания и параметров весовой конфигурации текущего блока; при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов; конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока в соответствии с параметрами весовой конфигурации; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; определение значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

[466] На основе той же самой идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения также предлагают устройство камеры, которое может содержать оборудование для кодирования и декодирования в любом из вышеупомянутых вариантов осуществления изобретения. Устройство камеры может использовать описанные выше процессы.

[467] На основе той же идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения предлагают машиночитаемый носитель данных, хранящий несколько компьютерных инструкций, которые исполняются процессором для выполнения способов, раскрытых в приведенных выше вариантах осуществления настоящего изобретения, например, способов кодирования и декодирования в описанных выше вариантах осуществления изобретения.

[468] Системы, устройства, модули или блоки, описанные в приведенных выше вариантах осуществления изобретения, могут быть реализованы в виде компьютерных микросхем или объектов или в виде продуктов с определенными функциями. Типичным устройством реализации является компьютер, и компьютер, в конкретной форме, может быть персональным компьютером, портативным компьютером, сотовым телефоном, телефоном с камерой, смартфоном, персональным цифровым помощником, медиаплеером, навигационным оборудованием, приемопередатчиком электронной почты, игровой приставкой, планшетным компьютером, носимым оборудованием или комбинацией любых из этих устройств. Для удобства вышеупомянутые устройства при описании разделены на различные блоки по функциям. При реализации настоящего изобретения функции различных блоков могут быть реализованы в программном и/или аппаратном обеспечении.

[469] Специалистам в данной области техники должно быть понятно, что варианты осуществления настоящего изобретения могут быть предоставлены в виде способов, систем или компьютерных программных продуктов. Следовательно, настоящее изобретение может принимать форму чисто аппаратного варианта осуществления, чисто программного варианта осуществления или варианта осуществления, сочетающего как программное обеспечение, так и аппаратное обеспечение. Кроме того, варианты осуществления настоящего изобретения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких доступных для компьютера носителях данных (включая, не ограничиваясь, дисковые запоминающие устройства, CD-ROM, оптические запоминающие устройства и т.д.), которые содержат доступные для компьютера программные коды.

[470] Приведенное выше описание представляет лишь некоторые примеры настоящего изобретения и не ограничивает изобретение. Специалистам в данной области техники понятно, что настоящее изобретение может иметь различные изменения и модификации. Любые модификации, эквивалентные замены, усовершенствования и т.п. настоящего изобретения находятся в пределах сущности формулы изобретения.

Похожие патенты RU2809619C1

название год авторы номер документа
СПОСОБ, ОБОРУДОВАНИЕ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ 2021
  • Сунь Ючэн
RU2808807C1
СПОСОБ, ОБОРУДОВАНИЕ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ 2021
  • Сунь Ючэн
RU2822503C2
Способ, оборудование и устройство для кодирования и декодирования 2023
  • Сунь Ючэн
  • Цао Сяоцян
  • Чэнь Фандун
  • Ван Ли
RU2822442C2
Способ, оборудование и устройство для кодирования и декодирования 2021
  • Сунь Ючэн
  • Цао Сяоцян
  • Чэнь Фандун
  • Ван Ли
RU2809701C1
УСТРОЙСТВО И СПОСОБ ВНЕШНЕГО ПРЕДСКАЗАНИЯ 2019
  • Сюй, Вэйвэй
  • Ян, Хайтао
  • Чжао, Инь
RU2785725C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ВИДЕОКОДИРОВАНИЯ C ИСПОЛЬЗОВАНИЕМ УЛУЧШЕННОГО РЕЖИМА СЛИЯНИЯ С РАЗНОСТЬЮ ВЕКТОРОВ ДВИЖЕНИЯ 2019
  • Лай, Чен-Йен
  • Хсяо, Ю-Линг
  • Чуанг, Тзу-Дер
  • Чен, Чинг-Йех
RU2795830C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ВИДЕОКОДИРОВАНИЯ C ИСПОЛЬЗОВАНИЕМ УЛУЧШЕННОГО РЕЖИМА СЛИЯНИЯ С РАЗНОСТЬЮ ВЕКТОРОВ ДВИЖЕНИЯ 2019
  • Лай, Чен-Йен
  • Хсяо, Ю-Линг
  • Чуанг, Тзу-Дер
  • Чен, Чинг-Йех
RU2768377C1
ВИДЕОКОДЕР, ВИДЕОДЕКОДЕР И СООТВЕТСТВУЮЩИЙ СПОСОБ 2020
  • Чэнь, Сюй
  • Ян, Хайтао
  • Чжан, Лян
RU2819065C2
УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ВИДЕО 2018
  • Чэнь, Сюй
  • Ань, Цзичэн
  • Чжэн, Цзяньхуа
RU2767993C1
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Ли Гуйчунь
  • Ли Сян
  • Сюй Сяочжун
  • Лю Шань
RU2777498C1

Иллюстрации к изобретению RU 2 809 619 C1

Реферат патента 2023 года Способ, оборудование и устройство для кодирования и декодирования

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

Формула изобретения RU 2 809 619 C1

1. Способ декодирования видео, включающий:

когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания текущего блока и параметров весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов;

конфигурирование одного или более опорных весовых значений для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации;

для каждой позиции пикселя текущего блока,

определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания;

определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией;

определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;

определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока;

определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и

определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и

определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

2. Способ по п.1, в котором в ответ на определение того, что текущий блок поддерживает режим переключения коэффициента преобразования весов, получение коэффициента преобразования весов текущего блока включает:

получение первой информации указания коэффициента преобразования весов для текущего блока; и

определение коэффициента преобразования весов текущего блока на основе первой информации указания коэффициента преобразования весов, при этом в ответ на определение того, что первая информация указания коэффициента преобразования весов является первой информацией указания, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов, и в ответ на определение того, что первая информация указания коэффициента преобразования весов является второй информацией указания, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.

3. Способ по п.2, в котором первая информация указания коэффициента преобразования весов содержит информацию указания уровня изображения, первая информация указания коэффициента преобразования весов для текущего блока представляет идентификацию переключения коэффициента преобразования весов, соответствующую текущему блоку, первая информация указания предназначена для указания того, что текущий блок не требует переключения коэффициента преобразования весов, а вторая информация указания предназначена для указания того, что текущий блок требует переключения коэффициента преобразования весов.

4. Способ по п.1, в котором в ответ на определение того, что текущий блок поддерживает режим переключения коэффициента преобразования весов, получение коэффициента преобразования весов текущего блока включает:

получение второй информации указания коэффициента преобразования весов для текущего блока;

выбор коэффициента преобразования весов, соответствующего второй информации указания коэффициента преобразования весов, из заранее заданной таблицы поиска, при этом заранее заданная таблица поиска содержит по меньшей мере два коэффициента преобразования весов; и

определение выбранного коэффициента преобразования весов в качестве коэффициента преобразования весов текущего блока.

5. Способ по п.1, в котором конфигурирование одного или более опорных весовых значений для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации включает:

для каждой из окружающих позиций за пределами текущего блока, конфигурирование опорного весового значения окружающей позиции на основе значения координаты окружающей позиции, значения координаты начальной позиции преобразования весов и коэффициента преобразования весов.

6. Способ по п.1, в котором начальная позиция преобразования весов определяется по меньшей мере одним из следующих параметров:

угол взвешенного предсказания,

позиция взвешенного предсказания текущего блока или

размер текущего блока.

7. Способ по п.1, в котором количество окружающих позиций за пределами текущего блока определяют на основе размера текущего блока и/или угла взвешенного предсказания текущего блока;

опорные весовые значения окружающих позиций за пределами текущего блока монотонно увеличиваются;

окружающие позиции за пределами текущего блока включают одну или более позиций целого пикселя и/или одну или более позиций субпикселя; и

окружающие позиции за пределами текущего блока включают окружающие позиции, соседние с верхней стороной текущего блока, и/или окружающие позиции, соседние с левой стороной текущего блока.

8. Способ по п.1, в котором одно или более опорных весовых значений окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций,

при этом все одно или более опорных весовых значений первых соседних позиций являются вторым опорным весовым значением, и все одно или более опорных весовых значений вторых соседних позиций являются третьим опорным весовым значением, причем второе опорное весовое значение отличается от третьего опорного весового значения.

9. Способ по п.8, в котором целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения, в ответ на определение того, что целевые позиции включают по меньшей мере два опорных весовых значения, по меньшей мере два опорных весовых значения целевых позиций монотонно увеличиваются.

10. Способ по п.1, в котором

угол взвешенного предсказания представляет собой горизонтальный угол; или

угол взвешенного предсказания представляет собой вертикальный угол; или

абсолютное значение наклона угла взвешенного предсказания равно n-й степени

числа 2, где n является целым числом.

11. Способ по п.1, в котором определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, включает:

в ответ на определение того, что окружающая соответствующая позиция является позицией целого пикселя, а позиция целого пикселя сконфигурирована с опорным весовым значением, определение целевого весового значения позиции пикселя на основе опорного весового значения позиции целого пикселя; и

в ответ на определение того, что окружающая соответствующая позиция является позицией субпикселя, а позиция субпикселя сконфигурирована с опорным весовым значением, определение целевого весового значения позиции пикселя на основе опорного весового значения позиции субпикселя.

12. Способ по п.1, в котором в ответ на определение того, что первый режим предсказания является режимом внешнего предсказания, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока включает:

получение списка кандидатов для компенсации движения, при этом список кандидатов для компенсации движения содержит по меньшей мере одну часть информации о возможном движении;

выбор одной части информации о возможном движении из списка кандидатов для компенсации движения в качестве исходной информации о движении текущего блока;

определение целевой информации о движении для текущего блока на основе исходной информации о движении; и

определение первого значения предсказания позиции пикселя на основе целевой информации о движении.

13. Способ по п.12, в котором исходная информация о движении содержит исходный вектор движения, целевая информация о движении содержит целевой вектор движения, определение целевой информации о движении текущего блока на основе исходной информации о движении включает:

получение разности векторов движения, соответствующей исходному вектору движения; и

определение целевого вектора движения на основе разности векторов движения и исходного вектора движения.

14. Способ по п.13, в котором получение разности векторов движения, соответствующей исходному вектору движения, включает:

анализ информации о направлении разности векторов движения и информации об амплитуде разности векторов движения из кодированного битового потока текущего блока; и

определение разности векторов движения на основе информации о направлении разности векторов движения и информации об амплитуде разности векторов движения.

15. Способ по п.14, в котором

в ответ на определение того, что информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0);

в ответ на определение того, что информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad);

в ответ на определение того, что информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна А1, разность векторов движения равна (-А1, 0); и

в ответ на определение того, что информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Au, разность векторов движения равна (0, Au).

16. Способ по п.14, в котором анализ информации о направлении разности векторов движения и информации об амплитуде разности векторов движения из кодированного битового потока текущего блока включает:

анализ информации флага из кодированного битового потока текущего блока и

в ответ на определение того, что информация флага указывает на наложение разности векторов движения на исходный вектор движения, анализ информации о направлении разности векторов движения и информации об амплитуде разности векторов движения из кодированного битового потока текущего блока.

17. Способ по п.12, в котором построение списка кандидатов для компенсации движения включает:

получение по меньшей мере одной части доступной информации о движении для добавления в список кандидатов для компенсации движения; и

построение списка кандидатов для компенсации движения на основе упомянутой по меньшей мере одной части доступной информации о движении.

18. Способ по п.17, в котором упомянутая по меньшей мере одна часть доступной информации о движении включает по меньшей мере одну из следующей информации о движении:

пространственная информация о движении;

временная информация о движении; или

заранее заданная информация о движении.

19. Способ кодирования видео, включающий:

когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение угла взвешенного предсказания текущего блока и параметров весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов;

конфигурирование одного или более опорных весовых значений для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации;

для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания;

определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией;

определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;

определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока;

определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и

определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и

определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей в текущем блоке.

20. Видеодекодер, содержащий: процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, исполняемые процессором, и процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения способа по любому из пп.1-18.

21. Видеокодер, содержащий: процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, исполняемые процессором, и процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения способа по п.19.

Документы, цитированные в отчете о поиске Патент 2023 года RU2809619C1

WO 2019091292 A1, 16.05.2019
US 20200036970 A1, 30.01.2020
US 20180288425 A1, 04.10.2018
CN 110121073 A, 13.08.2019
СПОСОБЫ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ВИДЕО, УСТРОЙСТВА КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ВИДЕО И ПРОГРАММЫ ДЛЯ НИХ 2012
  • Мацумура Масааки
  • Такамура Сейси
  • Симидзу Ацуси
  • Дзозава Хирохиза
RU2553085C2

RU 2 809 619 C1

Авторы

Сунь Ючэн

Даты

2023-12-13Публикация

2021-05-31Подача