СПОСОБ, ОБОРУДОВАНИЕ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ Российский патент 2024 года по МПК H04N19/105 H04N19/503 H04N19/182 

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

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

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

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

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

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

[0003] Настоящее изобретение предлагает способы, оборудование и устройства для кодирования и декодирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[00033] Режим внутреннего предсказания. При внутреннем кодировании режим внутреннего предсказания используется для выполнения компенсации движения, например, значение предсказания текущего блока получают с использованием режима внутреннего предсказания. Например, режим внутреннего предсказания может включать, не ограничиваясь этим, планарный режим, режим постоянной составляющей и 33 угловых режима. В таблице 1 показаны примеры режима внутреннего предсказания, где планарный режим соответствует режиму 0, режим DC соответствует режиму 1, а остальные 33 угловых режима соответствуют режимам со 2 по 34. Планарный режим применим к области, в которой значения пикселей изменяются медленно, и использует два линейных фильтра в горизонтальном и вертикальном направлениях, чтобы получить среднее значение пикселей в двух направлениях в качестве значения предсказания пикселей текущего блока. Режим постоянной составляющей применим к большой плоской поверхности и принимает среднее значение окружающих пикселей текущего блока в качестве значения предсказания пикселей текущего блока. Доступны 33 угловых режима. Стандарт кодирования и декодирования нового поколения VVC (Versatile Video Coding) использует режимы с разделенными углами, например режимы с 65 углами.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[00049] На этапе 301, когда определено, что следует разрешить взвешенное предсказание для текущего блока, получают для текущего блока угол взвешенного предсказания текущего блока.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[00083] Во втором способе сторона кодера создает список углов взвешенного предсказания, который может включать по меньшей мере один угол взвешенного предсказания, например, список углов взвешенного предсказания может включать угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона кодера создает список позиций взвешенного предсказания, который может включать по меньшей мере одну позицию взвешенного предсказания, например, список позиций взвешенного предсказания может включать позиции взвешенного предсказания ао-ае, позиции взвешенного предсказания b0-b6 и т.д. Сторона кодера последовательно проходит каждый угол взвешенного предсказания в списке углов взвешенного предсказания и последовательно проходит каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания, то есть проходит комбинацию каждого угла взвешенного предсказания и каждой позиции взвешенного предсказания. Для каждой комбинации угла (углов) взвешенного предсказания и позиции (позиций) взвешенного предсказания угол взвешенного предсказания и позиция взвешенного предсказания в комбинации могут быть приняты в качестве угла взвешенного предсказания и позиции взвешенного предсказания текущего блока, которые получены на этапе 401, и выполняют этапы 402-407 на основе угла взвешенного предсказания и позиции взвешенного предсказания для получения значения взвешенного предсказания текущего блока.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[000105] Вышеприведенные случаи 1-5 являются только примерами, и способы определения целевого весового значения здесь не ограничены.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[000144] Вариант 4 осуществления изобретения. В приведенных выше вариантах 1-3 осуществления изобретения используется угол взвешенного предсказания. Угол взвешенного предсказания может быть любым углом, например, любым углом в пределах 180 градусов или любым углом в пределах 360 градусов, таким как 10 градусов, 20 градусов, 30 градусов и т.п., что здесь не ограничено. В возможной реализации угол взвешенного предсказания может быть горизонтальным углом (например, углом 2 на фиг. 5В); или угол взвешенного предсказания может быть вертикальным углом (например, углом 6 на фиг. 5В); или абсолютное значение наклона угла взвешенного предсказания (наклон угла взвешенного предсказания представляет собой тангенс угла взвешенного предсказания) может быть n-й степенью 2, где n - целое число, например положительное целое число, 0 и отрицательное целое число. Например, абсолютное значение наклона угла взвешенного предсказания может быть равно 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. В последующих вариантах осуществления изобретения для угла взвешенного предсказания может выполняться операция сдвига. Следовательно, когда абсолютное значение наклона угла взвешенного предсказания равно n-й степени 2, операции деления можно избежать во время операции сдвига для угла взвешенного предсказания, что облегчает реализацию сдвига.

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

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

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

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

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

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

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

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

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

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

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

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

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

[000158] На этапе S1 определяют список опорных весовых значений текущего блока.

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

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

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

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

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

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

[000165] Для списка опорных весовых значений текущего блока количество опорных весовых значений в списке опорных весовых значений может быть заданным фиксированным значением, и фиксированное значение может быть установлено произвольно на основе опыта, что здесь не ограничивается. Альтернативно, количество опорных весовых значений в списке опорных весовых значений может быть связано с размером (например, шириной или высотой) текущего слайса, в котором расположен текущий блок, например, количество опорных весовых значений может быть больше ширины текущего слайса или таким же, как ширина текущего слайса; и количество опорных весовых значений может быть больше, чем высота текущего слайса, или таким же, как высота текущего слайса, что здесь не ограничено. Количество опорных весовых значений может быть выбрано исходя из практических потребностей.

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

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

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

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

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

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

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

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

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

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

[000176] Подводя итог, можно сказать, что опорные весовые значения в списке опорных весовых значений могут быть сконфигурированы на основе параметров весовой конфигурации следующим образом: ReferenceWeightsWhole[x] = Clip3(0, 8, х - Z); или ReferenceWeightsWhole[x] = Clip3(0, 8, Z - х); или ReferenceWeightsWhole[x] = Clip3(0, 4, х - Z); или ReferenceWeightsWhole[x] = Clip3(0, 4, Z - x). Вышеупомянутые способы являются только примерами, и способ реализации здесь не ограничивается.

[000177] В приведенных выше формулах х находится в диапазоне от 0 до WholeLength-1. Когда х равно 1, ReferenceWeightsWhole[x] может представлять первое опорное весовое значение в списке опорных весовых значений; когда х равно 2, ReferenceWeightsWhole[x] может представлять второе опорное весовое значение в списке опорных весовых значений, и т.д. Например, если окружающие позиции за пределами текущего блока являются окружающими позициями в одной верхней строке или в одной нижней строке, WholeLength определяют на основе ширины текущего слайса; и, если окружающие позиции за пределами текущего блока являются окружающими позициями в левом столбце или правом столбце, WholeLength определяют на основе высоты текущего слайса.

[000178] В приведенной выше формуле a*(x-s), если значение «а» равно 1, a*(x-s)=x-s, то есть x-Z в Clip3(0, 8, х - Z) эквивалентно x-s, где Z представляет начальную позицию преобразования весов. Если «а» равно -1, a*(x-s)=s-x, то есть Z-x в Clip3(0, 8, Z - х) эквивалентно s-x, где Z представляет начальную позицию преобразования весов. Когда «а» является другим значением, процесс реализации аналогичен при условии, что опорные весовые значения в списке опорных весовых значений удовлетворяют у(х)=Clip3(минимум, максимум, a*(x-s)). Clip3(0, 8) используется для ограничения опорных весовых значений от 0 до 8, а Clip3(0, 4) используется для ограничения опорных весовых значений от 0 до 4.

[000179] В приведенных выше формулах Z представляет начальную позицию преобразования весов, которая может быть сконфигурирована на основе опыта. Предполагая, что х находится в диапазоне от 0 до 511, a Z равно 255, Z подставляют в формулу ReferenceWeightsWhole[x]=Clip3(0, 8, х - Z), и для любого значения от 0 до 511 может быть получено ReferenceWeightsWhole[x], то есть может быть получено 512 опорных весовых значений, и 512 опорных весовых значений образуют список опорных весовых значений. Например, когда х находится в диапазоне от 0 до 255, все соответствующие опорные весовые значения равны 0, когда х равно 256, опорное весовое значение равно 1 и т.д., когда х равно 262, опорное весовое значение равно 7, и когда х изменяется от 263 до 511, все опорные весовые значения равны 8. Одним словом, когда значение «а» равно 1, Clip3(0, 8, х - Z) используется для монотонного увеличения опорных весовых значений. Сходным образом, Z можно подставить в другую формулу для получения 512 опорных весовых значений, и список опорных весовых значений формируют на основе 512 опорных весовых значений. Например, когда значение «а» равно -1, Clip3(0, 8, Z - х) используется для монотонного уменьшения опорных весовых значений. Clip3(0, 4) используется для ограничения опорных весовых значений от 0 до 4, что здесь не повторяется.

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

[000181] Целевые позиции включают одно или более опорных весовых значений, определенных на основе начальной позиции преобразования весов. Например, на основе начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве целевых позиций. Например, начальная позиция s преобразования весов равна 255, 259-е опорное весовое значение может быть принято в качестве целевых позиций, или 258-е опорное весовое значение может быть принято в качестве целевых позиций, или 260-е опорное весовое значение может быть принято в качестве целевых позиций. Выше приведены лишь несколько примеров, которые не ограничиваются здесь. В другом примере, на основе начальной позиции преобразования весов определяют множество опорных весовых значений, которые принимают в качестве целевых позиций. Например, в качестве целевых позиций принимают опорные весовые значения с 256-го по 262-е, или опорные весовые значения с 258-го по 260-е принимают в качестве целевых позиций. Выше приведены лишь несколько примеров, которые не ограничиваются здесь.

[000182] Например, целевые позиции могут включать опорное весовое значение со значением 4. Например, 259-е опорное весовое значение равно 4. Следовательно, если целевые позиции включают одно опорное весовое значение, целевые позиции могут включать 259-е опорное весовое значение, или если целевые позиции включают множество опорных весовых значений, то целевые позиции могут включать опорные весовые значения с 256-го по 262-е или опорные весовые значения с 258-го по 260-е, что здесь не ограничивается при условии, что 259-е опорное весовое значение находится в пределах целевых позиций.

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

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

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

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

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

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

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

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

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

[000192] Например, опорные весовые значения в списке опорных весовых значений могут быть определены следующим образом: когда х находится в [0, k], у(х)=Clip3 (минимум, максимум, a1*(x-s1)). Когда х находится в [k+1, t], у(х)=Clip3(минимум, максимум, a2*(x-s2)). х представляет индекс позиции в списке опорных весовых значений, например, х равно 1, что указывает на первую позицию в списке опорных весовых значений, у(х) представляет х-е опорное весовое значение в списке опорных весовых значений, к представляет собой значение, сконфигурированное на основе опыта, и здесь не ограничивается, например, к может быть половиной общего количества опорных весовых значений в списке опорных весовых значений или другим значением, при условии, что k меньше t, где t - общее количество опорных весовых значений в списке опорных весовых значений, a1 представляет первый коэффициент преобразования весов, а2 представляет второй коэффициент преобразования весов, s1 представляет первую начальную позицию преобразования весов, a s2 представляет вторую начальную позицию преобразования весов.

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

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

[000195] s1 и s2 могут представлять начальные позиции преобразования весов, которые могут быть сконфигурированы на основе опыта. Например, s1 может быть начальной позицией преобразования опорных весовых значений в интервале [0, k] и может быть половиной k; или s1 может быть немного меньше половины k, например, половина к минус 4; или s1 может быть немного больше половины k, например, половина к плюс 4. Приведенные выше примеры являются только иллюстративными, и значение s1 здесь не ограничивается. s2 может быть начальной позицией преобразования опорных весовых значений в интервале [k+1, t], a s2 может быть половиной q (например, разность между t и k+1); или s2 может быть немного меньше половины q, например, половина q минус 4; или s2 может быть немного больше половины q, например, половина q плюс 4. Приведенные выше примеры являются только иллюстративными, и значение s2 здесь не ограничено.

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

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

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

[000199] Если множество опорных весовых значений первых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются), множество опорных весовых значений вторых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются). Опционально, если множество опорных весовых значений первых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются), множество опорных весовых значений вторых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются).

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

[000201] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно уменьшаются; и опорные весовые значения третьих соседних позиций монотонно увеличиваются. Например, все опорные весовые значения первых соседних позиций равны 8, первые целевые позиции включают одно опорное весовое значение 7, опорные весовые значения вторых соседних позиций монотонно уменьшаются от 6 до 0, вторые целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения третьих соседних позиций монотонно увеличиваются от 2 до 8.

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

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

[000204] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно увеличиваются; опорные весовые значения третьих соседних позиций монотонно уменьшаются. Например, все опорные весовые значения первых соседних позиций равны 0, первые целевые позиции включают одно опорное весовое значение 1, опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8, вторые целевые позиции включают одно опорное весовое значение 7, а опорные весовые значения третьих соседних позиций монотонно уменьшаются от 6 до 0.

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

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

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

[000208] Случай 3: множество опорных весовых значений в списке опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем включать множество вторых опорных весовых значений, или может сначала включать множество вторых опорных весовых значений, а затем включать множество первых опорных весовых значений. Например, список опорных весовых значений может быть [8 8…8 8 0 0…0 0] или [0 0…0 0 8 8…8 8].

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

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

[000211] В процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала может быть получена начальная позиция преобразования весов, а затем множество опорных весовых значений в списке опорных весовых значений определяют на основе начальной позиции преобразования весов. Например, начальная позиция преобразования весов представляет s-e опорное весовое значение в списке опорных весовых значений. Следовательно, все опорные весовые значения до s-го опорного весового значения (за исключением s-го опорного весового значения) являются первыми опорными весовыми значениями (например, 8), а все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются вторыми опорными весовыми значениями (например, 0). Опционально, все опорные весовые значения до s-го опорного весового значения (за исключением s-го опорного весового значения) являются вторыми опорными весовыми значениями (например, 0), а все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются первыми опорными весовыми значениями (например, 8).

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

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

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

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

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

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

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

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

[000220] Например, целевой индекс можно определить по следующим формулам: FirstIndex=(HalfLength-4)-((ValidLength>>1)-а + Y * ((ValidLength - 1) >> 3)); или Firstlndex=(HalfLength-4)-((ValidLength>>1)-b+Y * ((ValidLength - 1)>>3) - ((M << 1) >> X)); или Firstlndex = (HalfLength - 4) - ((ValidLength>>1) - с + Y * ((ValidLength - 1) >> 3) - ((N << 1) >> X)); или Firstlndex = (HalfLength - 4) - ((ValidLength >> 1) - d+Y * ((ValidLength - 1) >> 3)). В приведенных выше формулах Firstlndex относится к целевому индексу, ValidLength относится к действительному количеству, которое определяют на основе размера текущего блока и угла взвешенного предсказания текущего блока, Y относится к позиции взвешенного предсказания текущего блока, значение HalfLength - 4 относится к начальной позиции преобразования весов, М относится к ширине текущего блока, N относится к высоте текущего блока, X является значением логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, и а, b, с и d - предварительно установленные постоянные значения.

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

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

[000223] На этапе S4 выбирают действительное количество опорных весовых значений из списка опорных весовых значений на основе целевого индекса.

[000224] Например, предполагается, что целевой индекс равен q1, а действительное количество - r. Если целевой индекс является первым опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, опорные весовые значения с q1-го по q2-e выбирают из списка опорных весовых значений, и разность между индексом, относящимся к q2, и индексом, относящимся к q1, равна r - 1, и, таким образом, r опорных весовых значений выбирают из списка опорных весовых значений. Альтернативно, если целевой индекс является последним опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, опорные весовые значения с q3-го по q1-e выбирают из списка опорных весовых значений, и разность между индексом, относящимся к q1, и индексом, относящимся к q3, равна r-1, и, таким образом, r опорных весовых значений выбирают из списка опорных весовых значений.

[000225] Описанные выше способы являются только примерами, и целевой индекс также может быть средним опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, реализация аналогична и не будет здесь повторяться. Последующее описание приведено для целевого индекса, являющегося первым опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, в качестве примера, то есть выбирают опорные весовые значения с q1-го по q2-e.

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

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

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

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

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

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

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

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

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

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

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

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

[000238] Случай 1: действительное количество опорных весовых значений может монотонно увеличиваться или монотонно уменьшаться.

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

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

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

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

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

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

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

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

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

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

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

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

[000251] Например, множество опорных весовых значений можно определить следующим образом: когда х находится в [0, k], у(х)=Clip3(минимум, максимум, a1*(x-s1)). Когда х находится в [k+1, t], у(х)=Clip3(минимум, максимум, a2*(x-s2)). X представляет индекс позиции окружающей позиции, например, значение х равно 1, что указывает на первую окружающую позицию, а у(х) представляет опорное весовое значение х-й окружающей позиции. K - это значение, сконфигурированное на основе опыта, которое здесь не ограничивается, например, k может быть половиной действительного количества или другим значением, если k меньше t, где t - общее количество окружающих позиций, то есть указанное выше действительное количество, a1 представляет первый коэффициент преобразования весов, а2 представляет второй коэффициент преобразования весов, s1 представляет первую начальную позицию преобразования весов, a s2 представляет вторую начальную позицию преобразования весов.

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

[000253] a1 и а2 представляют коэффициенты преобразования весов, которые могут быть сконфигурированы на основе опыта. Например, a1 может быть целым числом, отличным от нуля, например, al может быть равно -4, -3, -2, -1, 1, 2, 3 или 4 и т.п. а2 может быть ненулевым целым числом, например, а2 может быть -4, -3, -2, -1, 1, 2, 3 или 4 и т.п.

[000254] s1 и s2 могут представлять начальные позиции преобразования весов, которые могут быть сконфигурированы на основе опыта, s1 может быть начальной позицией преобразования опорных весовых значений в интервале [0, k], a s2 может быть начальной позицией преобразования опорных весовых значений в интервале [k+1, t].

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

[000256] s2 может быть определено на основе позиции взвешенного предсказания или может быть определено на основе угла взвешенного предсказания и позиции взвешенного предсказания. Процесс определения s2 можно отнести к процессу определения s1, за исключением того, что диапазон изменен на [k+1, t], и поэтому здесь не повторяется.

[000257] Примеры определения начальных позиций s1 и s2 преобразования весов приведены выше, и здесь не делается никаких ограничений.

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

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

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

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

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

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

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

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

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

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

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

[000269] angleIdx представляет собой значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания (например, 0, или 1, или большую константу), a subangleIdx представляет угловую область, в которой находится угол взвешенного предсказания. На фиг. 5В показаны восемь углов взвешенного предсказания, где 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.

[000270] Например, stepIdx можно определить по следующей формуле: stepIdx=(AwpIdx>>3)-3.

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

[000272] Например, subangleIdx можно определить по следующей формуле: subangleIdx=modAngNum>>1.

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

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

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

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

[000277] В приведенной выше формуле ValidLength_H представляет количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subangleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Поэтому действительное количество обозначается как ValidLength_Н. Например, действительное количество ValidLength_Н может быть определено по следующей формуле: ValidLength_H=(N+(М>>angleIdx)) << 1, сдвиг влево на один бит обусловлен тем, что формула использует точность 1/2 пикселя. Если используется точность 1 пиксель, формула будет следующей: ValidLength_Н=(N+(М >> angleIdx)). Если принята точность 1/4 пикселя, формула будет следующей: ValidLength_Н=(N+(М >> angleIdx)) << 2. Если принята точность 2 пикселя, ValidLength_H=(N+(М >> angleIdx)) >> 1. Может использоваться другая пиксельная точность, и здесь не делается избыточных описаний. В последующих формулах операции, включающие >> 1, могут измениться для различной пиксельной точности.

[000278] В приведенной выше формуле DeltaPos_Н представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subangleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Поэтому параметр изменения позиции обозначается как DeltaPos_Н. Например, DeltaPos_Н определяется по следующей формуле: DeltaPos_Н = stepIdx * ((ValidLength_H >> 3)-1).

[000279] Случай 2: если значение subangleIdx равно 1, то есть угол взвешенного предсказания находится в угловой области 1, например, угол взвешенного предсказания является углом 2 взвешенного предсказания или углом 3 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_H >> 1) - 4 + DeltaPos_H - ((М << 1) >> angleIdx). Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального значения опорных весовых значений, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLength_H-1.

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

[000281] Случай 3: если значение subangleIdx равно 2, то есть угол взвешенного предсказания находится в угловой области 2, например, угол взвешенного предсказания является углом 4 взвешенного предсказания или углом 5 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_W >> 1) - 4 + DeltaPos_W - ((N << 1) >> angleIdx). Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLength_W -1.

[000282] В приведенной выше формуле ValidLength_W представляет количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subangleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в одной верхней строке. Поэтому действительное количество обозначается как ValidLength_W. Например, действительное количество ValidLength_W может быть определено по следующей формуле: ValidLength_W=(М+(N >> angleIdx)) << 1.

[000283] В приведенной выше формуле DeltaPos_W представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subangleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в верхней строке. Поэтому параметр изменения позиции обозначается как DeltaPos_W. Например, DeltaPos_W определяется по следующей формуле: DeltaPos_W = stepIdx * ((ValidLength_W>> 3)-1).

[000284] Случай 4: если значение subangleIdx равно 3, то есть угол взвешенного предсказания находится в угловой области 3, например, угол взвешенного предсказания представляет собой угол 6 взвешенного предсказания или угол 7 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_W>>1)-6 + DeltaPos_W. Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока и находится в диапазоне от 0 до ValidLength_W-1.

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

[000286] Таким образом, можно определить, какой случай следует использовать, на основе subangleIdx, например, в случаях 1 и 2 ValidLength_H и DeltaPos_H определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_Н и DeltaPos_Н, и затем опорные весовые значения устанавливают на основе FirstPos. В случаях 3 и 4 ValidLength_W и DeltaPos_W определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_W и DeltaPos_W, и затем опорные весовые значения устанавливают на основе FirstPos.

[000287] Формулы вышеперечисленных случаев отличаются следующим: когда в качестве начала координат используется левый верхний угол текущего блока, изменяется начальная позиция списка опорных весовых значений ReferenceWeights[x]. Например, на фиг. 6С показаны примеры угловой области 2 и угловой области 3. Когда принята точность 1/2 пикселя, начальная позиция списка опорных весовых значений ReferenceWeights[x] равна (height<<1)>>angleIdx, то есть смещение в формуле равно "-((N<<1) >> angularldx)". Угловая область 0 и угловая область 1 реализуются аналогичным образом, за исключением того, что смещение в формуле равно "- ((М << 1) >> angleIdx)", то есть высота изменяется на ширину.

[000288] На этапе а3 весовое значение яркости позиции пикселя получают на основе angleIdx и списка опорных весовых значений ReferenceWeight[x]. На основе subangleIdx весовое значение яркости позиции пикселя может быть определено в следующих нескольких случаях.

[000289] Случай 1: если значение subangleIdx равно 0, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=Reference Weights [(у << 1)+((х << 1) >> angleIdx)], где (у << 1)+((х << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(y << 1)+((х << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[000290] Случай 2: если значение subangleIdx равно 1, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y] = Reference Weights [(у << 1) - ((х << 1) >> angleIdx)], где (у << 1) - ((х << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), Reference Weights [(у << 1) - ((х << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[000291] Случай 3: если значение subangleIdx равно 2, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y] = ReferenceWeights[(x << 1) - ((у << 1) >> angleIdx)], где (х << 1) - ((y << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(x << 1) - ((у << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

[000292] Случай 4: если значение subangleIdx равно 3, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=ReferenceWeights[(x << 1)+((у << 1) >> angleIdx)], где (x << 1)+((у << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(x << 1)+((у << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.

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

[000294] Например, в случае 1, если значение subangleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания является углом 0 взвешенного предсказания или углом 1 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos = (ValidLength_Н >> 1) - 6 + DeltaPos_Н. Затем весовое значение яркости позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayY[x][y] = Clip3(0, 8, (у << 1) + ((х << 1) >> angleIdx)-FirstPos), где (у << 1)+((х << 1) >> angleIdx) представляет окружающую соответствующую позицию, указанную позицией пикселя (х, у). Другие случаи аналогичны.

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

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

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

[000298] Например, если значение subangleIdx равно 0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y] = Reference Weights [(у << 2)+((х << 2) >> angleIdx)].

[000299] Например, если значение subangleIdx равно 1, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = Reference Weights [(у << 2) - ((х << 2) >> angleIdx)].

[000300] Например, если значение subangleIdx равно 2, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = ReferenceWeights[(x << 2) - ((у << 2) >> angleIdx)].

[000301] Например, если значение subangleIdx равно 3, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = Reference Weights [(х << 2) + ((у << 2) >> angleIdx)].

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

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

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

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

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

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

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

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

[000310] Например, когда информация о двунаправленном движении добавляется в список кандидатов для компенсации движения, информация о двунаправленном движении сначала разделяется на две информации об однонаправленном движении, и две разделенные информации об однонаправленном движении добавляются в список кандидатов для компенсации движения по порядку. Или же, когда информация о двунаправленном движении добавляется в список кандидатов для компенсации движения, информация о двунаправленном движении сначала сокращается до одной информации об однонаправленном движении, а затем эта одна информация об однонаправленном движении добавляется в список кандидатов для компенсации движения. Например, сокращение информации о двунаправленном движении до одной информации об однонаправленном движении включает: прямое получение информации об однонаправленном движении из List0 (список 0 опорных изображений); или прямое получение информации об однонаправленном движении из List1 (список 1 опорных изображений); или определение получения информации об однонаправленном движении из List0 или List1 на основе порядка добавления.

[000311] Выше приведены только примеры списка кандидатов для компенсации движения, и информация о движении в списке кандидатов для компенсации движения здесь не ограничена.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[000327] Сценарий 1 применения: на этапе 1, как показано на фиг. 7, F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е и основаны на порядке F, G, С, А, В и D (этот порядок может быть изменен, например, может использоваться порядок D, В, А, С, G и F, или может использоваться другой порядок, кроме того, может быть удален один или более соседних блоков предсказания, например, используются только F, G, С, А и D), связанная с ними информация о движении (если есть) добавляется в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока обнаружение всей информации о движении не будет завершено или длина списка кандидатов для компенсации движения не достигнет Х-1.

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

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

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

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

[000332] Сценарий 2 применения: на этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и в зависимости от порядка F, G, С, А, В и D их соответствующую информацию о движении (если есть) добавляют в список кандидатов для компенсации движения в порядке списка List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока обнаружение всей информации о движении не будет завершено или пока длина списка кандидатов для компенсации движения не достигнет X.

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

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

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

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

[000337] Например, сценарий 1 применения отличается от сценария 2 применения тем, что сценарий 1 применения имеет по меньшей мере одну зарезервированную позицию для временной информации о движении, то есть на этапе 1 длина списка кандидатов для компенсации движения достигает максимум Х-1, а не X.

[000338] Сценарий 3 применения: на этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и на основе порядка F, G, С, А, В и D информацию об однонаправленном движении (если есть) добавляют в список кандидатов для компенсации движения по очереди, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления до тех пор, пока не будет завершено обнаружение всей информации об однонаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет Х-1.

[000339] На этапе 2, если длина списка кандидатов для компенсации движения меньше Х-1, информацию о двунаправленном движении (если есть) F, G, С, А, В и D добавляют в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей во время процесса добавления, пока не будет завершено обнаружение всей информации о двунаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет Х-1.

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

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

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

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

[000344] В возможной реализации сценарий 3 применения может быть описан в другой форме:

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

[000346] На этапе 2, в соответствии с порядком F, G, С, А, В и D, доступную информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения по очереди, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока длина списка кандидатов для компенсации движения не достигнет Х-1 или пока не завершится обход.

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

[000348] На этапе 4 полученную временную информацию о двунаправленном движении разделяют на информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1; проверку на наличие повторяющихся записей выполняют сначала для информации об однонаправленном движении, и, если информация об однонаправленном движении не повторяется, информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет равной X или не будет завершен обход.

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

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

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

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

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

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

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

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

[000357] Например, сценарий 3 применения отличается от сценария 4 применения тем, что сценарий 3 применения имеет по меньшей мере одну зарезервированную позицию для временной информации о движении, то есть на этапе 1 длина списка кандидатов для компенсации движения достигает максимум Х-1, но не достигает X.

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

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

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

[000361] Сценарий 6 применения: в сценариях 1-4 применения длина списка кандидатов для компенсации движения равна X. Для варианта 9 осуществления изобретения две информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве целевой информации о движении текущего блока. Следовательно, длина списка кандидатов для компенсации движения может быть от 2 до Н, где значение Н может быть сконфигурировано на основе опыта, например, сконфигурировано как 4 или 5 и т.п. На основе этого, сторона кодера может установить длину списка кандидатов для компенсации движения (например, длину списка кандидатов для компенсации движения в режиме AWP или длину списка кандидатов для компенсации движения в расширенном угловом режиме взвешенного предсказания (EAWP) через синтаксис уровня последовательности. Например, awpmaxcandnum используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное awp_max_cand_num, равно «а», которое находится в диапазоне от 2 до Н, сторона декодера может определить длину списка кандидатов для компенсации движения на основе awp_max_cand_num, например, длина X равна «а». Опционально, awp_max_cand_num_minus2 используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное awp_max_cand_num_minus2, равно «а», которое находится в диапазоне от 0 до (Н-2), сторона декодера может определить длину списка кандидатов для компенсации движения на основе awp_max_cand_num_minus2, например, длина X равна а+2. Опционально, сторона кодера может установить длину списка кандидатов для компенсации движения посредством синтаксиса уровня изображения, например, длина списка кандидатов для компенсации движения указывается на основе slice_awp_max_cand_num. Если значение, указанное slice_awp_max_cand_num, равно «а», которое находится в диапазоне от 2 до Н, сторона декодера может определить длину списка кандидатов для компенсации движения на основе slice_awp_max_cand_num, например, длина X равна «а». Опционально, slice_awp_max_cand_num_minus2 используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное с помощью slice_awp_max_cand_num_minus2, равно «а» и находится в диапазоне от 0 до (Н-2), сторона декодера может определить длину списка кандидатов для компенсации движения на основе slice_awp_max_cand_num_minus2, например, длина X равна а+2.

[000362] Сценарий 7 применения: в сценариях 14 применения может быть создан список кандидатов для компенсации движения. В сценарии 7 применения список кандидатов для компенсации движения обозначается как AwpUniArray, а информация о движении в AwpUniArray упоминается как информация о возможном движении. Для варианта 9 осуществления изобретения информация о возможном движении может быть выбрана из AwpUniArray в качестве целевой информации о движении текущего блока, а затем определяют значение предсказания позиции пикселя на основе целевой информации о движении.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[000386] Например, разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие пять конфигураций длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя и 4-пикселя, то есть значение амплитуды А может быть 1, 2, 4, 8 и 16. Таким образом, при направлении вверх разность векторов движения может быть (0, 1), (0, 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).

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

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

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

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

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

[000392] После создания списка кандидатов для компенсации движения сторона кодера может последовательно пройти каждый возможный вектор движения в списке кандидатов для компенсации движения. При прохождении возможного вектора 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 движения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[000435] 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.

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

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

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

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

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

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

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

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

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

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

[000446] Например, сценарии 1 и 2 применения могут быть реализациями варианта 12 осуществления изобретения.

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

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

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

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

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

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

[000453] 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. Например, awp_mv_diff_x_abs0 (абсолютное значение разности горизонтальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_abs0 (абсолютное значение разности вертикальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) являются абсолютными значениями первой разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXAbs0 равно значению awp_mv_diff_x_abs0, а значение AwpMvDiffYAbs0 равно значению awp_mv_diff_у_abs0. awp_mv_diff_x_sign0 (значение со знаком разности горизонтальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_у_sign0 (значение со знаком разности вертикальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) являются знаковыми битами первой разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXSign0 равно значению awp_mv_diff_x_sign0, а значение AwpMvDiffYSign0 равно значению awp_mv_diff_у_sign0.

[000454] В возможной реализации, если в битовом потоке нет awp_mv_diff_x_sign0 или awp_mv_diff_y_sign0, значение AwpMvDiffXSign0 или значение AwpMvDiffYSign0 равно 0. Если значение AwpMvDiffXSign0 равно 0, значение AwpMvDiffX0 равно AwpMvDiffXAbs0; если значение AwpMvDiffXSign0 равно 1, то значение AwpMvDiffX0 равно -AwpMvDiffXAbs0; если значение AwpMvDiffYSign0 равно 0, то значение AwpMvDiffY0 равно AwpMvDiffYAbs0; если значение AwpMvDiffYSign0 равно 1, то значение AwpMvDiffY0 равно AwpMvDiffYAbs0. Значения AwpMvDiffX0 и AwpMvDiffY0 находятся в диапазоне от -32768 до 32767.

[000455] Например, awp_mv_diff_x_abs1 (абсолютное значение разности горизонтальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_abs1 (абсолютное значение разности вертикальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) являются абсолютными значениями второй разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXAbs1 равно значению awp_mv_diff_x_abs1, а значение AwpMvDiffYAbs1 равно значению awp_mv_diff_у_abs1. awp_mv_diff_х_sign1 (значение со знаком разности горизонтальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_sign1 (значение со знаком разности вертикальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) являются знаковыми битами второй разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXSign1 равно значению awp_mv_diff_х_sign1, а значение AwpMvDiffYSign1 равно значению awp_mv_diff_y_sign1.

[000456] В возможной реализации, если в битовом потоке нет awp_mv_diff_х_sign1 или awp_mv_diff_у_sign1, значение AwpMvDiffXSign1 или AwpMvDiffYSign1 равно 0. Если значение AwpMvDiffXSign1 равно 0, AwpMvDiffX1 равно AwpMvDiffXAbs1; если значение AwpMvDiffXSign1 равно 1, то значение AwpMvDiffX1 равно -AwpMvDiffXAbs1. Если значение AwpMvDiffYSign1 равно 0, значение AwpMvDiffY1 может быть равно AwpMvDiffYAbsl; если значение AwpMvDiffYSign1 равно 1, значение AwpMvDiffY1 может быть равно AwpMvDiffYAbs1. Значения AwpMvDiffX1 и AwpMvDiffY1 находятся в диапазоне от -32768 до 32767.

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

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

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

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

[000461] Например, для параметров, таких как awp_mv_diff_x_abs0, awp_mv_diff_у_abs0, awp_mv_diff_x_sign0, awp_mv_diff_у_sign0, awp_mv_diff_x_abs1, awp_mv_diff_y_abs1, awp_mv_diff_x_sign1 и awp_mv_diff_y_sign1 в таблице 7, можно сделать ссылку на сценарий 3 применения, и здесь не приводится избыточных описаний.

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

[000463] Например, сценарий 3 применения и сценарий 4 применения являются реализациями варианта 13 осуществления изобретения.

[000464] Сценарий 3 или 4 применения и сценарий 1 или 2 применения отличаются следующим: в сценарии 1 или 2 применения используются несколько предпочтительных MVD, а в сценарии 3 или 4 применения разрешены все MVD в пределах определенного диапазона поиска, например, на основе способа сценария 5 применения поиск всех MVD осуществляется в пределах определенного диапазона поиска.

[000465] Сценарий 5 применения: в таблице 8 показан пример соответствующего синтаксиса. Таблица 8 иллюстрирует способ кодирования MVD.

[000466] 1. Определяют, больше ли |MVD_Х| 0, где |…| является обозначением абсолютного значения, a MVD_X относится к горизонтальной составляющей MVD.

[000467] 2. Определяют, больше ли |MVD_Y| 0, где |…| является обозначением абсолютного значения, a MVD_Y относится к вертикальной составляющей MVD.

[000468] 3. Если |MVD_X| больше 0, определяют, больше ли |MVD_X| 1.

[000469] 4. Если |MVD_Y| больше 0, определяют, больше ли |MVD_Y| 1.

[000470] 5. Если |MVD_X| больше 1, кодируют |MVD_X| - 2.

[000471] 6. Если |MVD_X| больше 0, кодируют знаковый бит MVD_X.

[000472] 7. Если |MVD_Y| больше 1, кодируют |MVD_Y| - 2.

[000473] 8. Если |MVD_Y| больше 0, кодируют знаковый бит MVD_Y.

[000474] Сценарий 6 применения: производная версия приведенных выше сценариев 1-4 применения для полного слияния режима AWP и режима EAWP, то есть 0 диапазон добавляется к диапазону без кодирования бита флага, который должен быть разрешен или нет. Например, разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие 6 конфигураций длины шага: 0-пикселей, -пикселя, -пикселя, 1-пиксель, 2-пикселя, 4-пикселя, то есть добавлена конфигурация длины одного шага 0-пикселей. На основе этого, таблица 4 или 5 может быть обновлена до таблицы 9, а таблица 6 или 7 может быть обновлена до таблицы 10. Для значений соответствующего синтаксиса в таблицах 9 и 10 можно сделать ссылку на таблицу 4 и таблицу 6, и избыточные описания здесь не приводятся.

[000475] Сценарий 7 применения: описанные выше варианты осуществления изобретения включают режим AWP, режим DAWP (двойное внешнее угловое взвешенное предсказание), и можно управлять включением или отключением режима EAWP с помощью высокоуровневого синтаксиса. Например, включением или отключением режима AWP управляют с помощью высокоуровневого синтаксиса 1. В другом примере включением или отключением режима DAWP управляют с помощью высокоуровневого синтаксиса 2. В другом примере включение или отключение режима EAWP осуществляется с помощью высокоуровневого синтаксиса 3. В качестве другого примера, одновременным включением или отключением режимов AWP и DAWP управляют с помощью высокоуровневого синтаксиса 4. В другом примере одновременным включением или отключением режимов AWP и EAWP управляют с помощью высокоуровневого синтаксиса 5. В другом примере одновременным включением или отключением режимов DAWP и EAWP управляют с помощью высокоуровневого синтаксиса 6. В другом примере одновременным включением или отключением режимов AWP, DAWP и EAWP управляют с помощью высокоуровневого синтаксиса 7. Выше приведены лишь примеры, и здесь не делается никаких ограничений.

[000476] В вышеприведенных вариантах осуществления изобретения высокоуровневый синтаксис может быть высокоуровневым синтаксисом набора параметров последовательности, или высокоуровневым синтаксисом набора параметров изображения, или высокоуровневым синтаксисом уровня заголовка слайса, или высокоуровневым синтаксисом заголовка изображения, что здесь не ограничивается. Например, на основе высокоуровневого синтаксиса уровня набора параметров последовательности, посредством использования sps_awp_enable_flag, sh_awp_enable_flag и awp_enable_flag и т.п., можно управлять включением или отключением режима AWP, или можно управлять включением или отключением режима EAWP, или включением или отключением нескольких режимов можно управлять одновременно, что здесь не ограничено.

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

[000478] Например, вышеприведенные варианты 1-14 осуществления изобретения могут быть реализованы по отдельности или в комбинации. Например, варианты 1 и 2 осуществления изобретения могут быть объединены для реализации; варианты 1 и 3 осуществления изобретения могут быть объединены для реализации; варианты 1, 2 и 3 осуществления изобретения могут быть объединены для реализации. Вариант 4 осуществления может быть объединен с одним или более вариантами 1-3 осуществления изобретения для реализации; вариант 5 осуществления изобретения (или вариант 6 осуществления изобретения, или вариант 7 осуществления изобретения) может быть объединен с вариантом 2 осуществления изобретения (или вариантом 3 осуществления изобретения) для реализации. Вариант 8 осуществления изобретения может быть объединен с вариантом 2 осуществления изобретения (или вариантом 3 осуществления изобретения). Вариант 9 осуществления изобретения может быть объединен с одним или более вариантами 9-14 осуществления изобретения или объединен с одним или более вариантами 1-8 осуществления изобретения для реализации и т.п. Выше приведены лишь примеры, и комбинации вариантов осуществления изобретения здесь не ограничиваются.

[000479] Основываясь на той же самой идее применения, что и вышеописанные способы, варианты осуществления настоящего изобретения также предлагают устройства кодирования и устройства декодирования. Оба типа устройств можно отнести к устройству, показанному на фиг. 8А. Устройство содержит модуль 811 получения, первый модуль 812 определения, второй модуль 813 определения, третий модуль 814 определения и модуль 815 кодирования и декодирования. Для устройства кодирования модуль 815 кодирования и декодирования выполняет функцию кодирования, а для устройства декодирования модуль 815 кодирования и декодирования выполняет функцию декодирования.

[000480] В некоторых примерах устройство кодирования содержит модуль (например, модуль 811 получения), выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль (например, первый модуль 812 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль (например, второй модуль 813 определения), выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль (например, третий модуль 814 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль (например, модуль 815 кодирования и декодирования), выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.

[000481] В некоторых примерах устройство декодирования содержит модуль (например, модуль 811 получения), выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль (например, первый модуль 812 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль (например, второй модуль 813 определения), выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль (например, третий модуль 814 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль (например, модуль 815 кодирования и декодирования), выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.

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

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

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

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

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

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

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

[000489] Например, первый режим предсказания представляет собой режим внешнего предсказания, и второй режим предсказания представляет собой режим внешнего предсказания.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Иллюстрации к изобретению RU 2 822 503 C2

Реферат патента 2024 года СПОСОБ, ОБОРУДОВАНИЕ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ

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

Формула изобретения RU 2 822 503 C2

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

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

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

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

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

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

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

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

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

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

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

при этом первый режим предсказания представляет собой режим внешнего предсказания, и второй режим предсказания представляет собой режим внешнего предсказания, и способ также содержит:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Способ по п. 3, в котором,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7. Способ по п. 6, в котором

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

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

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

8. Способ по п. 6, в котором

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

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

целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения; и,

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

9. Способ по любому из пп. 1-8, в котором

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

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

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

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

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

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

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

11. Устройство декодирования, применяемое на стороне декодирования и содержащее:

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

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

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

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

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

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

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

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

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

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

12. Устройство по п. 11, в котором

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

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

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

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

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

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

13. Устройство по п. 12, в котором, при получении разности векторов движения, соответствующей первому исходному вектору движения, третий модуль определения выполнен с возможностью:

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

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

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

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

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

14. Устройство по п. 13, в котором,

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

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

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

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

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

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

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

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

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

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

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

16. Устройство по п. 11, в котором второй модуль определения также выполнен с возможностью:

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

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

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

17. Устройство по п. 16, в котором

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

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

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

18. Устройство по п. 16, в котором

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

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

целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения; и,

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

19. Устройство по любому из пп. 11-18, в котором

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

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

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

20. Устройство по любому из пп. 11-18, в котором окружающие позиции за пределами текущего блока включают одну или более позиций целого пикселя, или одну или более позиций субпикселя, или как одну или более позиций целого пикселя, так и одну или более позиций субпикселя;

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

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

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

21. Устройство декодирования, содержащее:

процессор и

машиночитаемый носитель данных,

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

22. Машиночитаемый носитель данных, который хранит машиночитаемые инструкции, исполняемые процессором для осуществления способа по любому из пп. 1-10.

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

LIANG ZHAO еt al, Non-CE: Weighted intra and inter prediction mode, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-O0537, 15th Meeting: Gothenburg, 3-12 July 2019
US 2018288425 A1 - 2018.10.04
SHOHEI MATSUO et al, AHG7: Modification of intra angular prediction blending, Joint Collaborative Team on Video

RU 2 822 503 C2

Авторы

Сунь Ючэн

Даты

2024-07-08Публикация

2021-03-23Подача