ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[01] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента Китая №202010622752.7, поданной 30 июня 2020 г. и озаглавленной «СПОСОБ, ОБОРУДОВАНИЕ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ», полное содержание которой включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[02] Настоящее изобретение относится к области техники кодирования и декодирования и, в частности, к способам, оборудованию и устройствам для кодирования и декодирования.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[03] В целях экономии места видеоизображения передаются после кодирования. Кодирование видео может включать предсказание, преобразование, квантование, энтропийное кодирование, фильтрацию и другие процессы. Предсказание может включать внутреннее предсказание и внешнее предсказание. Внешнее предсказание относится к операции использования временной корреляции видео для предсказания текущих пикселей с использованием пикселей соседних кодированных изображений, чтобы эффективно удалить временную избыточность видео. Внутреннее предсказание относится к операции использования пространственной корреляции видео для предсказания текущих пикселей с использованием пикселей одного или более кодированных блоков текущего изображения, чтобы удалить пространственную избыточность видео.
[04] В предшествующем уровне техники текущий блок является прямоугольным. Однако на практике край объекта обычно не является прямоугольным. Поэтому для края объекта на изображении обычно используются две разные сущности (например, объект, представленный на переднем плане, и задний план). Исходя из этого, когда движения двух объектов несовместимы, эти два объекта не могут быть хорошо разделены прямоугольным разделением. Даже если текущий блок разделен на два непрямоугольных подблока и предсказан посредством двух непрямоугольных подблоков, в настоящее время имеются такие проблемы, как плохой эффект предсказания и низкая производительность кодирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[05] Ввиду этого настоящее изобретение обеспечивает способы, оборудование и устройства для кодирования и декодирования, которые улучшают точность предсказания.
[06] Настоящее изобретение обеспечивает способ кодирования и декодирования, который включает:
[07] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[08] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[09] для каждой позиции пикселя текущего блока определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[10] получение списка кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
[11] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
[12] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[13] Настоящее изобретение обеспечивает оборудование для кодирования и декодирования, которое содержит: модуль получения, выполненный с возможностью получения, когда определено, что для текущего блока разрешено взвешенное предсказание, угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока; модуль конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации; и модуль определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; при этом модуль получения также выполнен с возможностью получения списка кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении, и получения первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении; модуль определения также выполнен с возможностью определения, для каждой позиции пикселя текущего блока, первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и определения значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[14] Настоящее изобретение обеспечивает устройство декодирования, которое содержит процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, которые могут исполняться процессором;
[15] процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[16] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[17] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[18] для каждой позиции пикселя текущего блока определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[19] получение списка кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
[20] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
[21] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[22] Настоящее изобретение обеспечивает устройство кодирования, которое содержит процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, которые могут исполняться процессором;
[23] процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[24] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[25] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[26] для каждой позиции пикселя текущего блока определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[27] получение списка кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
[28] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
[29] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[30] Из приведенного выше технического решения видно, что в примерах настоящего изобретения предоставлен эффективный способ конфигурирования весовых значений. Способ позволяет сконфигурировать подходящее целевое весовое значение для каждой позиции пикселя текущего блока, чтобы улучшить точность предсказания, эффективность предсказания и эффективность кодирования, при этом значения предсказания текущего блока могут быть более приближены к исходным пикселям, и может быть улучшена эффективность кодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[31] Фиг. 1 представляет схематическую диаграмму системы кодирования видео;
[32] фиг. 2А-2Е представляют схематические диаграммы взвешенного предсказания;
[33] фиг. 3 представляет блок-схему способа кодирования и декодирования согласно примеру настоящего изобретения;
[34] фиг. 4A-4D представляют схематическую диаграмму окружающих позиций за пределами текущего блока;
[35] фиг. 5 представляет блок-схему способа кодирования и декодирования согласно примеру настоящего изобретения;
[36] фиг. 6 представляет схематическую диаграмму углов взвешенного предсказания согласно примеру настоящего изобретения;
[37] фиг. 7 представляет схематическую диаграмму опорных весовых значений для четырех коэффициентов преобразования весов в соответствии с примером настоящего изобретения;
[38] фиг. 8А-8С представляют схематические диаграммы углов взвешенного предсказания и угловых областей согласно примеру настоящего изобретения;
[39] фиг. 9А представляет схематическую диаграмму соседних блоков текущего блока в соответствии с примером настоящего изобретения;
[40] фиг. 9B-9D представляют схематические диаграммы целевой позиции текущего блока в соответствии с примером настоящего изобретения;
[41] фиг. 10А представляет структурную схему оборудования для кодирования и декодирования согласно примеру настоящего изобретения;
[42] фиг. 10B представляет структурную схему оборудования для кодирования и декодирования согласно примеру настоящего изобретения;
[43] фиг. 10С представляет схему аппаратной структуры устройства декодирования согласно примеру настоящего изобретения;
[44] фиг. 10D представляет схему аппаратной структуры устройства кодирования в соответствии с примером настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[45] Термины, используемые в примерах настоящего изобретения, предназначены только для описания конкретных примеров, а не для ограничения настоящего изобретения. Формы единственного числа, используемые в примерах и в формуле изобретения, также предназначены для включения форм множественного числа, если контекст явно не указывает на другие значения. Также следует понимать, что используемое здесь сочетание «и/или» относится к любой или всем возможным комбинациям одного или более связанных перечисленных элементов. Следует понимать, что, хотя термины «первый», «второй», «третий» и т.д. могут использоваться в примерах настоящего изобретения для описания различной информации, эта информация не должна ограничиваться этими терминами. Эти термины используются только для различения информации одного типа. Например, в пределах сущности изобретения первая информация также может называться второй информацией, и аналогичным образом вторая информация также может называться первой информацией. Кроме того, используемое здесь слово «если» может означать «после», «когда» или «в ответ на».
[46] В примерах настоящего изобретения предоставлены способы, оборудование и устройства для кодирования и декодирования, которые могут включать следующие понятия.
[47] Внутреннее предсказание, внешнее предсказание и предсказание внутриблочного копирования (IBC, Intra Block Copy):
[48] Внутреннее предсказание относится к использованию одного или более кодированных блоков для предсказания на основе пространственной корреляции видео, чтобы удалить пространственную избыточность видео. Внутреннее предсказание определяет множество режимов предсказания, каждый из которых соответствует направлению текстуры (кроме режима постоянной составляющей (DC, Direct Current)). Например, если текстура изображения расположена горизонтально, режим горизонтального предсказания может лучше предсказывать информацию изображения.
[49] Внешнее предсказание относится к использованию пикселей соседних кодированных изображений для предсказания пикселей текущего изображения на основе временной корреляции видео из-за сильной временной корреляции, включенной в видеопоследовательность, что может эффективно удалить временную избыточность видео.
[50] IBC относится к разрешению ссылки на одно и то же изображение, опорные данные текущего блока берутся из того же изображения. IBC также можно назвать внутриблочной копией. В технологии внутриблочного копирования значение предсказания текущего блока может быть получено с использованием вектора блока для текущего блока. Например, на основе такой характеристики, что в одном и том же изображении экранного контента имеется большое количество повторяющихся текстур, когда значение предсказания текущего блока получают с использованием вектора блока, эффективность сжатия последовательности экранного контента может быть улучшена.
[51] Пиксель предсказания (также называемый сигналом предсказания): пиксель предсказания относится к значению пикселя, полученному из пикселя, который был кодирован и декодирован, остаток получают посредством разности между исходным пикселем и пикселем предсказания, а затем выполняют преобразование, квантование и кодирование коэффициентов остатков. Пиксель внешнего предсказания относится к значению пикселя, полученному из опорного изображения для текущего блока. Конечный пиксель предсказания должен быть получен посредством интерполяции из-за дискретных позиций пикселей. Чем ближе пиксель предсказания к исходному пикселю, тем меньше энергия остатка, полученная путем вычитания пикселя предсказания из исходного пикселя, и тем выше эффективность сжатия кодирования.
[52] Вектор движения (MV, Motion Vector): при внешнем предсказании вектор движения используют для указания относительного смещения между текущим блоком текущего изображения и опорным блоком опорного изображения. Каждый блок, полученный разделением, имеет соответствующий вектор движения, который передается стороне декодирования. Если вектор движения каждого блока кодируется и передается независимо, особенно в случае большого количества маленьких блоков, будет использоваться много битов. Чтобы уменьшить количество битов для кодирования вектора движения, используется пространственная корреляция между соседними блоками для предсказания вектора движения текущего блока на основе векторов движения соседних кодированных блоков, а затем кодируется разность предсказаний. Таким образом, количество битов, представляющих вектор движения, может быть эффективно уменьшено. Когда кодируют вектор движения текущего блока, вектор движения текущего блока может быть предсказан с использованием векторов движения соседних кодированных блоков, а затем может кодироваться разность (разность векторов движения (MVD, Motion Vector Difference)) между предсказанным вектором движения (MVP, Motion Vector Prediction) вектора движения и реальным оцененным значением вектора движения.
[53] Информация о движении: поскольку вектор движения указывает смещение позиции между текущим блоком и опорным блоком, для точного получения информации, указывающей на блок, в дополнение к вектору движения требуется информация об индексе опорного изображения, чтобы указать, какое опорное изображение используется текущим блоком. В технологии кодирования видео список опорных изображений обычно может быть установлен для текущего изображения, а информация об индексе опорного изображения указывает, какое опорное изображение в списке опорных изображений принято текущим блоком.
[54] Кроме того, многие технологии кодирования также поддерживают множество списков опорных изображений, и, следовательно, значение индекса, которое может называться опорным направлением, также может использоваться для указания того, какой список опорных изображений используется. Подводя итог, можно сказать, что в технологии кодирования видео информация, относящаяся к движению, такая как вектор движения, индекс опорного изображения и опорное направление, может совместно называться информацией о движении.
[55] Оптимизация «скорость-искажение» (RDO, Rate-Distortion Optimization): два показателя для оценки эффективности кодирования включают: битовую скорость и отношение пикового сигнала к шуму (PSNR, Peak Signal to Noise Ratio). Чем меньше битовый поток, тем больше степень сжатия; чем больше PSNR, тем лучше качество восстановленного изображения. Выбор режима кодирования обычно основывается на комплексной оценке двух показателей. Например, стоимость, соответствующая режиму, может быть рассчитана по следующей формуле: J(режим)=D+λ*R, где D представляет собой искажение, которое обычно может быть измерено суммой квадратов ошибок (SSE, Sum of Square Error) между реконструированным блоком изображения и исходным изображением; λ представляет множитель Лагранжа; R представляет фактическое количество битов, необходимых для кодирования блока изображения в этом режиме, включая общее количество битов, необходимых для кодирования информации о режиме, информации о движении, остатках и т.д. При выборе режима, если принцип RDO используется для создания сравнительного решения о режиме кодирования, как правило, может быть гарантирована лучшая эффективность кодирования.
[56] Система кодирования видео: как показано на фиг. 1, система кодирования видео может использоваться для реализации потока обработки на стороне кодирования в примерах настоящего изобретения. Схематическая диаграмма системы декодирования видео аналогична схеме на фиг. 1 и здесь повторяться не будет. Система декодирования видео может использоваться для реализации потока обработки на стороне декодирования в примерах настоящего изобретения. Например, система кодирования видео и система декодирования видео могут включать, не ограничиваясь этим, такие модули, как внутреннее предсказание/внешнее предсказание, оценка движения/компенсация движения, буфер опорных изображений, внутриконтурная фильтрация, реконструкция, преобразование, квантование, обратное преобразование, деквантование, энтропийный кодер. Поток обработки на стороне кодирования может быть реализован посредством взаимодействия между этими модулями, и поток обработки на стороне декодирования может быть реализован посредством взаимодействия между этими модулями.
[57] В предшествующем уровне техники текущий блок может быть прямоугольным. Однако на практике край объекта обычно не является прямоугольным. Поэтому для края объекта на изображении обычно используются две разные сущности (например, объект, представленный на переднем плане, и задний план). Когда движения двух объектов несовместимы, эти два объекта не могут быть хорошо разделены прямоугольным разделением. Следовательно, текущий блок может быть разделен на два непрямоугольных подблока, и для двух непрямоугольных подблоков может быть выполнено взвешенное предсказание. В примере взвешенное предсказание заключается в использовании множества значений предсказания для операции взвешивания, чтобы получить одно или более окончательных значений предсказания. Взвешенное предсказание может включать комбинированное внешнее предсказание с внутренним предсказанием (CIIP, combined inter and intra prediction), комбинированное внешнее предсказание с внешним предсказанием, комбинированное внутреннее предсказание с внутренним предсказанием и т.д. Для весовых значений комбинированного взвешенного предсказания одно и то же весовое значение может быть сконфигурировано для различных позиций пикселей текущего блока, или различные весовые значения могут быть сконфигурированы для различных позиций пикселей текущего блока.
[58] Как показано на фиг. 2А, которая является схематической диаграммой комбинированного внешнего взвешенного предсказания с внутренним взвешенным предсказанием.
[59] Блок предсказания CIIP взвешивается блоком внутреннего предсказания (то есть значение внутреннего предсказания позиции пикселя получают с использованием режима внутреннего предсказания) и блоком внешнего предсказания (то есть значение внешнего предсказания позиции пикселя получают с использованием режима внешнего предсказания), и отношение весов значения внутреннего предсказания и значения внешнего предсказания, используемое для каждой позиции пикселя, составляет 1:1. Например, для каждой позиции пикселя значение внутреннего предсказания позиции пикселя и значение внешнего предсказания позиции пикселя взвешиваются для получения комбинированного значения предсказания позиции пикселя. Наконец, комбинированные значения предсказания соответствующих позиций пикселей формируются в блок предсказания CIIP.
[60] На фиг. 2В показана схематическая диаграмма режима треугольного разделения (ТРМ, Triangular Partition Mode).
[61] Блок предсказания ТРМ получают путем объединения блока 1 внешнего предсказания (то есть значение внешнего предсказания позиции пикселя получают с использованием режима 1 внешнего предсказания) и блока 2 внешнего предсказания (то есть значение внешнего предсказания позиции пикселя получают с использованием режима 2 внешнего предсказания). Блок предсказания ТРМ может быть разделен на две области, одна из которых может быть областью 1 внешнего предсказания, а другая может быть областью 2 внешнего предсказания. Две области внешнего предсказания блока предсказания ТРМ могут быть непрямоугольными, и граница (которая может быть пунктирной линией) может быть первой диагональю или второй диагональю блока предсказания ТРМ.
[62] Для каждой позиции пикселя области 1 внешнего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внешнего предсказания блока 1 внешнего предсказания. Например, при взвешивании значения внешнего предсказания блока 1 внешнего предсказания для позиции пикселя и значения внешнего предсказания блока 2 внешнего предсказания для позиции пикселя, вес значения внешнего предсказания блока 1 внешнего предсказания велик, вес значения внешнего предсказания блока 2 внешнего предсказания мал (даже 0), и получают комбинированное значение предсказания позиции пикселя. Для каждой позиции пикселя области 2 внешнего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внешнего предсказания блока 2 внешнего предсказания. Например, когда выполняют взвешивание значения внешнего предсказания блока 1 внешнего предсказания для позиции пикселя и значения внешнего предсказания блока 2 внешнего предсказания для позиции пикселя, вес значения внешнего предсказания блока 2 внешнего предсказания велик, вес значения внешнего предсказания блока 1 внешнего предсказания мал (даже 0), и получают комбинированное значение предсказания позиции пикселя.
[63] Фиг. 2С представляет собой схематическую диаграмму комбинированного внешнего треугольного взвешенного предсказания с внутренним треугольным взвешенным предсказанием. Путем модификации комбинированного внешнего взвешенного предсказания с внутренним взвешенным предсказанием область внешнего предсказания и область внутреннего предсказания блока предсказания CIIP показывают весовое распределение взвешенного предсказания треугольного разделения.
[64] Блок предсказания CIIP получают путем объединения блока внутреннего предсказания (то есть значение внутреннего предсказания позиции пикселя получают с использованием режима внутреннего предсказания) и блока внешнего предсказания (то есть значение внешнего предсказания позиции пикселя получают путем использования режима внешнего предсказания). Блок предсказания CIIP может быть разделен на две области, одна из которых может быть областью внутреннего предсказания, а другая может быть областью внешнего предсказания. Область внешнего предсказания и область внутреннего предсказания блока предсказания CIIP могут быть непрямоугольными. Область границы (которая может быть пунктирной линией) может быть разделена смешанным взвешиванием или напрямую. Граница может быть первой диагональю или второй диагональю блока предсказания CIIP. Позиции области внутреннего предсказания и области внешнего предсказания являются переменными.
[65] Для каждой позиции пикселя области внутреннего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внутреннего предсказания. Например, когда выполняют взвешивание значения внутреннего предсказания позиции пикселя и значения внешнего предсказания позиции пикселя, вес значения внутреннего предсказания велик, а вес значения внешнего предсказания мал, и получают комбинированное значение предсказания позиции пикселя. Для каждой позиции пикселя области внешнего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внешнего предсказания. Например, когда выполняют взвешивание значения внутреннего предсказания позиции пикселя и значения внешнего предсказания позиции пикселя, вес значения внешнего предсказания велик, а вес значения внутреннего предсказания мал, и получают комбинированное значение предсказания позиции пикселя.
[66] Фиг. 2D представляет собой схематическую диаграмму режима геометрического разделения (GEO) для блоков внешнего предсказания. Режим GEO предназначен для разделения блока внешнего предсказания на два подблока с помощью линии разделения. В отличие от режима ТРМ, режим GEO может использовать больше направлений разделения. Процесс взвешенного предсказания в режиме GEO аналогичен процессу в режиме ТРМ.
[67] Блок предсказания GEO получают путем объединения блока 1 внешнего предсказания (то есть значение внешнего предсказания позиции пикселя получают с использованием режима 1 внешнего предсказания) и блока 2 внешнего предсказания (то есть значение внешнего предсказания положение пикселя получают с использованием режима 2 внешнего предсказания). Блок предсказания GEO может быть разделен на две области, одна из которых может быть областью 1 внешнего предсказания, а другая может быть областью 2 внешнего предсказания.
[68] Для каждой позиции пикселя области 1 внешнего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внешнего предсказания блока 1 внешнего предсказания. Например, при взвешивании значения внешнего предсказания блока 1 внешнего предсказания для позиции пикселя и значения внешнего предсказания блока 2 внешнего предсказания для позиции пикселя, вес значения внешнего предсказания блока 1 внешнего предсказания велик, а вес значения внешнего предсказания для блока 2 внешнего предсказания мал. Для каждой позиции пикселя области 2 внешнего предсказания значение предсказания позиции пикселя определяют в основном на основе значения внешнего предсказания блока 2 внешнего предсказания. Например, когда выполняется взвешивание значения внешнего предсказания блока 1 внешнего предсказания для позиции пикселя и значения внешнего предсказания блока 2 внешнего предсказания для позиции пикселя, вес значения внешнего предсказания блока 2 внешнего предсказания велик, а вес значения внешнего предсказания блока 1 внешнего предсказания мал.
[69] В примере весовая конфигурация блока предсказания GEO связана с расстоянием между позицией пикселя и линией разделения. Как показано на фиг. 2Е, позиция А пикселя, позиция В пикселя и позиция С пикселя расположены в нижней правой части от линии разделения, а позиция D пикселя, позиция E пикселя и позиция F пикселя расположены в верхней левой части от линии разделения. Для позиции А пикселя, позиции В пикселя и позиции С пикселя веса области 2 внешнего предсказания ранжируют как В≥А≥С, а веса области 1 внешнего предсказания ранжируют как С≥А≥В. Для позиции D пикселя, позиции E пикселя и позиции F пикселя веса области 1 внешнего предсказания ранжируют как D≥F≥E, а веса области 2 внешнего предсказания ранжируют как E≥F≥D. В приведенном выше способе необходимо вычислить расстояние между позицией пикселя и линией разделения, а затем определить весовое значение позиции пикселя.
[70] Для каждой из вышеперечисленных ситуаций, чтобы добиться взвешенного предсказания, необходимо определить весовое значение каждой позиции пикселя текущего блока и выполнить взвешенное предсказание позиции пикселя на основе весового значения позиции пикселя. Однако в предшествующем уровне техники не существует эффективного способа конфигурирования весовых значений, и невозможно сконфигурировать подходящие весовые значения, что приводит к таким проблемам, как плохой эффект предсказания и низкая эффективность кодирования.
[71] Ввиду вышеизложенного в примере настоящего изобретения предлагается способ получения весовых значений. Способ позволяет определять целевое весовое значение каждой позиции пикселя текущего блока на основе опорных весовых значений окружающих позиций за пределами текущего блока и конфигурировать подходящее целевое весовое значение для каждой позиции пикселя, чтобы повысить точность предсказания, эффективность предсказания и эффективность кодирования, при этом значения предсказания текущего блока могут быть более приближены к исходным пикселям.
[72] Способы кодирования и декодирования в примерах настоящего изобретения подробно описаны ниже в сочетании с несколькими конкретными примерами.
[73] Пример 1: Фиг. 3 представляет собой блок-схему способа кодирования и декодирования. Способ может применяться на стороне декодирования (также называемой видеодекодером) или на стороне кодирования (также называемой видеокодером). Способ может включать этапы 301-306.
[74] На этапе 301, когда определено, что для текущего блока разрешено взвешенное предсказание, получают угол взвешенного предсказания и один или более параметров весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов. Начальная позиция преобразования весов может определяться по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока и размер текущего блока.
[75] В примере, когда требуется предсказать текущий блок, сторона декодирования или сторона кодирования могут определить, разрешено ли взвешенное предсказание для текущего блока. Если для текущего блока разрешено взвешенное предсказание, используют способ кодирования и декодирования согласно примеру настоящего изобретения, то есть выполняют этап 301 и последующие этапы. Если взвешенное предсказание не разрешено для текущего блока, способ реализации не ограничивается примерами настоящего изобретения.
[76] В примере, когда определено, что взвешенное предсказание разрешено для текущего блока, могут быть получены угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Затем на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока и размера текущего блока может быть определена начальная позиция преобразования весов текущего блока. На данный момент могут быть получены угол взвешенного предсказания текущего блока, коэффициент преобразования весов текущего блока и начальная позиция преобразования весов текущего блока.
[77] На этапе 302 конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации текущего блока.
[78] В примере количество окружающих позиций за пределами текущего блока может быть определено на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. Например, количество M окружающих позиций за пределами текущего блока определяют на основе размера текущего блока и/или угла взвешенного предсказания текущего блока, а опорные весовые значения конфигурируют для M окружающих позиций на основе параметров весовой конфигурации текущего блока.
[79] В примере опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться. В другом примере опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно уменьшаться. Например, расположение опорных весовых значений окружающих позиций за пределами текущего блока может быть 00…0024688…88, или расположение опорных весовых значений окружающих позиций за пределами текущего блока может быть 88…8864200…00.
[80] В примере окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя, одну или более позиций субпикселя или одну или более позиций целого пикселя и одну или более позиций субпикселя. Окружающие позиции за пределами текущего блока могут включать, не ограничиваясь этим, окружающие позиции в верхней строке от текущего блока, или окружающие позиции в левом столбце от текущего блока, или окружающие позиции в нижней строке от текущего блока, или окружающие позиции в правом столбце от текущего блока. Выше приведены только примеры окружающих позиций, которые не ограничиваются здесь.
[81] В возможной реализации опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевой области, одно или более опорных весовых значений первой соседней области целевой области и одно или более опорных весовых значений второй соседней области целевой области.
[82] В примере все опорные весовые значения первой соседней области являются первым опорным весовым значением, а опорные весовые значения второй соседней области монотонно увеличиваются. Альтернативно, все опорные весовые значения первой соседней области представляют собой первое опорное весовое значение, а опорные весовые значения второй соседней области монотонно уменьшаются. Альтернативно, все опорные весовые значения первой соседней области являются вторым опорным весовым значением, все опорные весовые значения второй соседней области являются третьим опорным весовым значением, и второе опорное весовое значение отличается от третьего опорного весового значения. Альтернативно, опорные весовые значения первой соседней области монотонно увеличиваются, и опорные весовые значения второй соседней области монотонно увеличиваются. Альтернативно, опорные весовые значения первой соседней области монотонно уменьшаются, и опорные весовые значения второй соседней области монотонно уменьшаются.
[83] В примере целевая область включает одно опорное весовое значение или по меньшей мере два опорных весовых значения. Если целевая область включает по меньшей мере два опорных весовых значения, по меньшей мере два опорных весовых значения целевой области монотонно увеличиваются или уменьшаются.
[84] На этапе 303 для каждой позиции пикселя текущего блока определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.
[85] В примере угол взвешенного предсказания указывает угловое направление, указанное позициями пикселей внутри текущего блока. Например, для позиции пикселя текущего блока, на основе конкретного угла взвешенного предсказания, угловое направление, соответствующее углу взвешенного предсказания, указывает на конкретную окружающую позицию за пределами текущего блока. На основе этого, для каждой позиции пикселя текущего блока определяют угловое направление, указанное позицией пикселя, на основе угла взвешенного предсказания, а на основе углового направления определяют окружающую совпадающую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока.
[86] Для каждой позиции пикселя текущего блока, после определения окружающей соответствующей позиции, указанной позицией пикселя, определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией. Например, опорное весовое значение, связанное с окружающей соответствующей позицией, определяют как целевое весовое значение позиции пикселя. Затем определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя. Например, сумма целевого весового значения и ассоциированного весового значения каждой позиции пикселя может быть фиксированным заранее заданным значением. Следовательно, ассоциированное весовое значение может быть разностью между заранее заданным значением и целевым весовым значением. Предположим, что заранее заданное значение равно 8, если целевое весовое значение позиции пикселя равно 0, то ассоциированное весовое значение позиции пикселя равно 8; если целевое весовое значение позиции пикселя равно 1, то ассоциированное весовое значение позиции пикселя равно 7 и т.д., при условии, что сумма целевого весового значения и ассоциированного весового значения равна 8.
[87] На этапе 304 получают список кандидатов информации о движении, включающий по меньшей мере одну часть информации о возможном движении, и получают первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе списка кандидатов информации о движении.
[88] На этапе 305 для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определяют второе значение предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определяют значение взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения.
[89] В примере предполагается, что целевое весовое значение представляет собой весовое значение, соответствующее первой целевой информации о движении, а ассоциированное весовое значение представляет собой весовое значение, соответствующее второй целевой информации о движении, значение взвешенного предсказания позиции пикселя может быть: (первое значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + второе значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение. В другом примере предполагается, что целевое весовое значение представляет собой весовое значение, соответствующее второй целевой информации о движении, а ассоциированное весовое значение представляет собой весовое значение, соответствующее первой целевой информации о движении, значение взвешенного предсказания позиции пикселя может быть: (второе значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + первое значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение.
[90] На этапе 306 определяют значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[91] Например, значения взвешенного предсказания всех позиций пикселей текущего блока формируют как значения взвешенного предсказания текущего блока.
[92] Из приведенного выше технического решения видно, что в примерах настоящего изобретения предоставлен эффективный способ конфигурирования весовых значений. Способ позволяет конфигурировать подходящее целевое весовое значение для каждой позиции пикселя текущего блока, так что могут быть улучшены точность предсказания, эффективность предсказания и эффективность кодирования, значения предсказания текущего блока могут быть более приближены к исходным пикселям, и эффективность кодирования может быть улучшена.
[93] Пример 2: пример настоящего изобретения обеспечивает другой способ кодирования и декодирования, который может применяться на стороне кодирования. Способ включает этапы с a1 по а9.
[94] На этапе a1, когда определено, что для текущего блока разрешено взвешенное предсказание, сторона кодирования получает угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Например, сторона кодирования определяет, разрешено ли взвешенное предсказание для текущего блока. Если да, будут выполняться шаг a1 и последующие шаги. Если нет, способ обработки не ограничивается настоящим изобретением.
[95] В возможной реализации, если текущий блок удовлетворяет условиям для разрешения взвешенного предсказания, определяют, что взвешенное предсказание разрешено для текущего блока. Если текущий блок не удовлетворяет условиям для разрешения взвешенного предсказания, определяют, что взвешенное предсказание не разрешено для текущего блока. Например, определяют, соответствует ли информация о характеристиках текущего блока конкретным условиям. Если да, то определяют, что взвешенное предсказание разрешено для текущего блока; если нет, то определяют, что взвешенное предсказание не разрешено для текущего блока. Информация о характеристиках включает, не ограничиваясь этим, одну или любую комбинацию из следующего: тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, информация о размере текущего блока и информация управления переключением. Информация управления переключением может включать, не ограничиваясь этим, информацию управления переключением уровня последовательности (например, набор параметров последовательности (SPS, Sequence Parameter Set) и заголовок последовательности (SH, Sequence Header)) или информацию управления переключением уровня изображения (например, набор параметров изображения (PPS, Picture Parameter Set) и заголовок изображения (РН, Picture Header)) или информацию управления переключением уровня слайса (например, слайса, тайла, патча), или информацию управления переключением уровня наибольшей единицы кодирования (например, наибольшей единицы кодирования (LCU, Largest Coding Unit) и единицы дерева кодирования (CTU, Coding Tree Unit)).
[96] Например, если информация о характеристиках представляет собой тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, то, что тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, удовлетворяет конкретным условиям, может включать, не ограничиваясь этим, следующее: если тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, является изображением (слайсом) В, определяют, что тип изображения (слайса) удовлетворяет конкретным условиям; или, если тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, представляет собой I-изображение (слайс), определяют, что тип изображения (слайса) удовлетворяет конкретным условиям.
[97] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, такую как ширина и высота текущего блока, то, что информация о размере удовлетворяет конкретным условиям, может включать, не ограничиваясь этим, следующее: если ширина больше или равна первому значению, а высота больше или равна второму значению, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям; или, если ширина больше или равна третьему значению, высота больше или равна четвертому значению, ширина меньше или равна пятому значению, а высота меньше или равна шестому значению, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям; или, если произведение ширины и высоты больше или равно седьмому значению, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям. Вышеуказанные значения могут быть сконфигурированы на основе опыта, например, как 8, 16, 32, 64, 128 и т.д. Например, первое значение равно 8, второе значение равно 8, третье значение равно 8, четвертое значение равно 8, пятое значение равно 64, шестое значение равно 64, а седьмое значение равно 64. Таким образом, если ширина больше или равна 8, а высота больше или равна 8, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям. Альтернативно, если ширина больше или равна 8, высота больше или равна 8, ширина меньше или равна 64, а высота меньше или равна 64, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям. Альтернативно, если произведение ширины и высоты больше или равно 64, определяют, что информация о размере текущего блока удовлетворяет конкретным условиям.
[98] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, такую как ширина и высота текущего блока, то, что информация о размере текущего блока удовлетворяет конкретным условиям, может включать, не ограничиваясь этим, то, что ширина не меньше а и не больше b, а высота не меньше a и не больше b. Например, а может быть меньше или равно 16, а b может быть больше или равно 16. Например, а равно 8, а b равно 64 или 32.
[99] Например, если информация о характеристиках представляет собой информацию управления переключением, то, что информация управления переключением удовлетворяет конкретным условиям, может включать, не ограничиваясь этим, следующее: если информация управления переключением указывает на то, что взвешенное предсказание разрешено для текущего блока, определяют, что информация управления переключением удовлетворяет конкретным условиям.
[100] Например, если информация о характеристиках представляет собой тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, и информацию о размере текущего блока, когда тип изображения (слайса) удовлетворяет конкретным условиям, и информация о размере удовлетворяет конкретным условиям, можно определить, что информация о характеристиках текущего блока удовлетворяет конкретным условиям. Альтернативно, если информация о характеристиках представляет собой тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, и информацию управления переключением, когда тип изображения (слайса) удовлетворяет конкретным условиям, и информация управления переключением удовлетворяет конкретным условиям, можно определить, что информация о характеристиках текущего блока удовлетворяет конкретным условиям. Альтернативно, если информация о характеристиках представляет собой информацию о размере текущего блока и информацию управления переключением, когда информация о размере удовлетворяет конкретным условиям, и информация управления переключением удовлетворяет конкретным условиям, можно определить, что информация о характеристиках текущего блока удовлетворяет конкретным условиям. Альтернативно, если информация о характеристиках представляет собой тип изображения (слайса) текущего изображения (слайса), в котором расположен текущий блок, информацию о размере текущего блока и информацию управления переключением, когда тип изображения (слайса) удовлетворяет конкретным условиям, информация о размере удовлетворяет конкретным условиям, и информация управления переключением удовлетворяет конкретным условиям, может быть определено, что информация о характеристиках текущего блока удовлетворяет конкретным условиям.
[101] В возможной реализации, когда определено, что для текущего блока разрешено взвешенное предсказание, сторона кодирования может получить угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов для текущего блока.
[102] В примере угол взвешенного предсказания указывает угловое направление, указанное позициями пикселей внутри текущего блока. На фиг. 4А, на основе конкретного угла взвешенного предсказания, показано угловое направление, указанное позициями пикселей (такими как позиция 1 пикселя, позиция 2 пикселя и позиция 3 пикселя) внутри текущего блока. Для позиции пикселя внутри текущего блока угловое направление указывает на конкретную окружающую позицию за пределами текущего блока. Как показано на фиг. 4В, на основе другого угла взвешенного предсказания, показано угловое направление, указанное позициями пикселей (такими как позиция 2 пикселя, позиция 3 пикселя и позиция 4 пикселя) внутри текущего блока. Для позиции пикселя внутри текущего блока угловое направление указывает на конкретную окружающую позицию за пределами текущего блока.
[103] В примере позиция взвешенного предсказания (также называемая параметром расстояния) используется для конфигурирования опорных весовых значений окружающих позиций за пределами текущего блока. Например, на основе таких параметров, как угол взвешенного предсказания текущего блока и размер текущего блока, определяют диапазон окружающих позиций за пределами текущего блока (то есть количество окружающих позиций за пределами текущего блока), как показано на фиг. 4А или фиг. 4В.
[104] Затем диапазон окружающих позиций делится на N равных частей. Значение N может быть сконфигурировано произвольно, например, как 4, 6, 8 и т.д. Взяв в качестве примера 8, позиция взвешенного предсказания используется для указания того, какая окружающая позиция за пределами текущего блока является начальной позицией преобразования весов текущего блока, чтобы сконфигурировать опорные весовые значения окружающих позиций за пределами текущего блока на основе начальной позиции преобразования весов.
[105] Как показано на фиг. 4С, 7 позиций взвешенного предсказания могут быть получены после того, как все окружающие позиции разделены на 8 равных частей. На основе этого, когда позиция взвешенного предсказания равна 0, может быть указано, что окружающая позиция а0 (то есть окружающая позиция, указанная пунктирной линией 0, причем пунктирная линия 0 не существует в практических приложениях и предназначена только для удобства понимания приведенных примеров, а пунктирные линии от 0 до 6 используются для разделения всех окружающих позиций на 8 равных частей) принимается в качестве начальной позиции преобразования весов окружающих позиций за пределами текущего блока. По аналогии, когда позиция взвешенного предсказания равна 6, может быть указано, что окружающая позиция аб принимается в качестве начальной позиции преобразования весов окружающих позиций за пределами текущего блока.
[106] Значение N может быть разным для разных углов взвешенного предсказания. Например, для угла А взвешенного предсказания значение N может быть равно 6, что означает, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, делится на 6 равных частей, а для угла В взвешенного предсказания значение N может быть равно 8, что означает, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, делится на 8 равных частей.
[107] Для разных углов взвешенного предсказания значение N также может быть одинаковым. Если значение N одинаково, количество позиций взвешенного предсказания может быть различным. Например, для угла А взвешенного предсказания значение N равно 8, что означает, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, делится на 8 равных частей; для угла В взвешенного предсказания значение N равно 8, что означает, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, делится на 8 равных частей. Однако пять позиций от a1 до а5 выбирают для позиций взвешенного предсказания, соответствующих углу А взвешенного предсказания, и семь позиций от а0 до а6 выбирают для позиций взвешенного предсказания, соответствующих углу В взвешенного предсказания.
[108] Выше в качестве примера описано деление диапазона окружающих позиций на N равных частей. В практических приложениях также может использоваться неравномерное деление, например, диапазон окружающих позиций делится на N частей вместо N равных частей, что здесь не ограничено.
[109] После того как все окружающие позиции разделены на 8 равных частей, можно получить 7 позиций взвешенного предсказания. На этапе a1, например, сторона кодирования может получить позицию взвешенного предсказания из 7 позиций взвешенного предсказания или выбрать некоторые позиции взвешенного предсказания (например, 5 позиций взвешенного предсказания) из 7 позиций взвешенного предсказания и получить позицию взвешенного предсказания из 5 позиций взвешенного предсказания.
[110] В примере коэффициент преобразования весов указывает коэффициент преобразования опорных весовых значений окружающих позиций за пределами текущего блока и используется для указания скорости изменения опорных весовых значений. Коэффициент преобразования весов может быть любым числом, отличным от 0, например, коэффициент преобразования весов может быть -4, -2, -1, 1, 2, 4, 0,5, 0,75, 1,5 и т.д. Когда абсолютное значение коэффициента преобразования весов равно 1, то есть коэффициент преобразования весов равен -1 или 1, коэффициент преобразования весов используется для указания того, что скорость изменения опорных весовых значений равна 1. Опорные весовые значения должны проходить через такие значения, как 0, 1, 2, 3, 4, 5, 6, 7, 8, от 0 до 8, и опорные весовые значения должны проходить через такие значения, как 8, 7, 6, 5, 4, 3, 2, 1, 0, от 8 до 0. Когда абсолютное значение коэффициента преобразования весов равно 2, то есть коэффициент преобразования весов равен -2 или 2, коэффициент преобразования весов используется для указания того, что скорость изменения опорных весовых значений равна 2. Опорные весовые значения должны проходить через такие значения, как 0, 2, 4, 6, 8, от 0 до 8, и опорные весовые значения должны проходить через такие значения, как 8, 6, 4, 2, 0, от 8 до 0. Когда абсолютное значение коэффициента преобразования весов равно 4, то есть коэффициент преобразования весов равен -4 или 4, коэффициент преобразования весов используется для указания того, что скорость изменения опорных весовых значений равна 4. Опорные весовые значения должны проходить через такие значения, как 0, 4, 8, от 0 до 8, и опорные весовые значения должны проходить через такие значения, как 8, 4, 0, от 8 до 0. Когда абсолютное значение коэффициента преобразования весов равно 0,5, то есть коэффициент преобразования весов равен -0,5 или 0,5, коэффициент преобразования весов используется для указания того, что скорость изменения опорных весовых значений равна 0,5. Опорные весовые значения должны проходить через такие значения, как 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, от 0 до 8. Опорные весовые значения должны проходить через такие значения, как 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, от 8 до 0. В приведенном выше примере в качестве примера используются значения от 0 до 8, причем 0 и 8 можно заменить любыми значениями.
[111] На этапе а2 сторона кодирования конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов и начальной позиции преобразования весов текущего блока (коэффициент преобразования весов и начальная позиция преобразования весов могут называться параметрами весовой конфигурации).
[112] В примере начальная позиция преобразования весов может быть определена по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока и размер текущего блока. Таким образом, начальная позиция преобразования весов текущего блока может быть определена на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока и размера текущего блока. Затем опорные весовые значения конфигурируют для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов и начальной позиции преобразования весов текущего блока.
[113] На этапе а3 для каждой позиции пикселя текущего блока сторона кодирования определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока. Для удобства различения в этом примере окружающая позиция за пределами текущего блока, указанная позицией пикселя, называется окружающей соответствующей позицией для позиции пикселя.
[114] В примере, поскольку угол взвешенного предсказания указывает угловое направление, указанное позициями пикселей внутри текущего блока, для каждой позиции пикселя текущего блока определяют угловое направление, указанное позицией пикселя, на основе угла взвешенного предсказания и определяют на основе углового направления окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока.
[115] Окружающие позиции за пределами текущего блока могут включать: окружающие позиции в строке сверху от текущего блока, например окружающие позиции в n1-й строке сверху от текущего блока, где n1 может быть 1, 2, 3 и т.д., что здесь не ограничивается; или окружающие позиции в столбце слева от текущего блока, такие как окружающие позиции в n2-м столбце слева от текущего блока, где n2 может быть 1, 2, 3 и т.д., что здесь не ограничивается; или окружающие позиции в строке снизу от текущего блока, такие как окружающие позиции в n3-й строке снизу от текущего блока, где n3 может быть 1, 2, 3 и т.д., что здесь не ограничивается; или окружающие позиции в столбце справа от текущего блока, такие как окружающие позиции в n4-м столбце справа за пределами текущего блока, где n4 может быть 1, 2, 3 и т.д., что здесь не ограничивается.
[116] Выше приведены лишь несколько примеров окружающих позиций, которые не ограничиваются настоящим описанием. В практических приложениях помимо окружающих позиций за пределами текущего блока могут также использоваться позиции внутри текущего блока (внутренние позиции), то есть позиции внутри текущего блока используются для замены окружающих позиций за пределами текущего блока. Например, позиции внутри текущего блока могут быть позициями в n5-й строке внутри текущего блока, где n5 может быть 1, 2, 3 и т.д. В другом примере позиции внутри текущего блока могут быть позициями в n6-м столбце внутри текущего блока, где n6 может быть 1, 2, 3 и т.д. Длина внутренних позиций (то есть строки, в которой расположены позиции внутри текущего блока) может превышать диапазон текущего блока. Например, позиции в n7-й строке могут выходить за пределы текущего блока, то есть выходить наружу с двух сторон текущего блока.
[117] Позиции внутри текущего блока и окружающие позиции за пределами текущего блока также могут использоваться одновременно.
[118] В случае использования позиций внутри текущего блока или одновременного использования позиций внутри текущего блока и окружающих позиций за пределами текущего блока текущий блок может быть разделен на верхний и нижний малые блоки строкой, в которой расположены внутренние позиции, или может быть разделен на левый и правый малые блоки столбцом, в котором расположены внутренние позиции. В это время два малых блока имеют один и тот же угол взвешенного предсказания и одну и ту же конфигурацию опорных весов.
[119] В примере окружающая позиция за пределами текущего блока может быть расположена между позициями пикселей, то есть окружающая позиция за пределами текущего блока может быть позицией субпикселя. В это время окружающие позиции за пределами текущего блока не могут быть просто описаны как х-я строка, но представляют собой строку позиции субпикселя между х-й строкой и у-й строкой.
[120] Для удобства описания в последующих примерах взяты в качестве примера окружающие позиции в первой строке сверху от текущего блока или окружающие позиции в первом столбце слева от текущего блока, а для других окружающих позиций примеры могут быть реализованы аналогичным образом.
[121] Например, для диапазона окружающих позиций за пределами текущего блока конкретный диапазон может быть предварительно обозначен как диапазон окружающих позиций за пределами текущего блока. Альтернативно, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания. Например, окружающую позицию, указанную каждой позицией пикселя внутри текущего блока, определяют на основе угла взвешенного предсказания, а граница окружающих позиций, указанных всеми позициями пикселей, может быть диапазоном окружающих позиций за пределами текущего блока. Диапазон окружающих позиций за пределами текущего блока здесь не ограничен.
[122] Окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя; или окружающие позиции за пределами текущего блока могут включать одну или более позиций нецелого пикселя. Позиция нецелого пикселя может быть позицией субпикселя, например, позицией 1/2 субпикселя, позицией 1/4 субпикселя или позицией 3/4 субпикселя, что здесь не ограничено. В примере окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя и одну или более позиций субпикселя.
[123] В примере две окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или четыре окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать двум позициям целого пикселя. Выше приведены лишь несколько примеров, которые не ограничивают изобретение. Связь между окружающей позицией и позицией целого пикселя может быть сконфигурирована произвольно.
[124] Как показано на фиг. 4А и 4В, одна окружающая позиция соответствует одной позиции целого пикселя, и, как показано на фиг. 4D, две окружающие позиции соответствуют одной позиции целого пикселя. Другие примеры не будут описаны в этом варианте осуществления изобретения.
[125] На этапе а4 сторона кодирования определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.
[126] Для каждой позиции пикселя текущего блока после определения окружающей соответствующей позиции, указанной позицией пикселя, сторона кодирования определяет опорное весовое значение, связанное с окружающей соответствующей позицией, и определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, например, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как целевое весовое значение позиции пикселя.
[127] В возможной реализации сторона кодирования определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, что может включать следующие пять случаев. В случае 1, если окружающая соответствующая позиция представляет собой позицию целого пикселя, и позиция целого пикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе опорного весового значения позиции целого пикселя.
[128] В случае 2, если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя не установлена с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного(ых) весового(ых) значения(й) соседней(их) позиции(й) позиции целого пикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции целого пикселя.
[129] В случае 3, если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного весового значения позиции субпикселя.
[130] В случае 4, если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя не установлена с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе опорного(ых) весового(ых) значения(й) соседней(их) позиции(й) позиции субпикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или целевое весовое значение позиции пикселя определяют на основе интерполяции опорных весовых значений соседних позиций позиции субпикселя. Способ определения здесь не ограничен.
[131] В случае 5 целевое весовое значение позиции пикселя определяют на основе множества опорных весовых значений, связанных с окружающей соответствующей позицией. Например, независимо от того, является ли окружающая соответствующая позиция позицией целого пикселя или позицией субпикселя, могут быть получены опорные весовые значения множества соседних позиций окружающей соответствующей позиции. Если окружающая соответствующая позиция установлена с опорным весовым значением, выполняют взвешенную операцию для опорного весового значения окружающей соответствующей позиции и опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя. Если окружающая соответствующая позиция не установлена с опорным весовым значением, выполняют взвешенную операцию для опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя.
[132] На этапе а5 сторона кодирования определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.
[133] В примере, для каждой позиции пикселя сумма целевого весового значения позиции пикселя и ассоциированного весового значения позиции пикселя может быть фиксированным заранее заданным значением, то есть ассоциированное весовое значение может быть разностью между заранее заданным значением и целевым весовым значением. Исходя из этого, предполагается, что заранее заданное значение равно 8, а целевое весовое значение позиции пикселя равно 2, ассоциированное весовое значение позиции пикселя равно 6.
[134] На этапе а6 сторона кодирования получает список кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении; и получает первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе списка кандидатов информации о движении.
[135] На этапе а7 для каждой позиции пикселя текущего блока сторона кодирования определяет первое значение предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определяет второе значение предсказания позиции пикселя на основе второй целевой информации о движении текущего блока.
[136] На этапе а8 сторона кодирования определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.
[137] Например, значение взвешенного предсказания позиции пикселя может быть следующим: (первое значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + второе значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заранее заданное значение.
[138] На этапе а9 сторона кодирования определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[139] Пример 3: пример настоящего изобретения обеспечивает другой способ кодирования и декодирования, который может применяться на стороне декодирования. Способ включает этапы с b1 по b9.
[140] На этапе b1, когда определено, что для текущего блока разрешено взвешенное предсказание, сторона декодирования получает угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Например, сторона декодирования определяет, разрешено ли взвешенное предсказание для текущего блока. Если да, будут выполняться этап b1 и последующие этапы. Если нет, способ обработки не ограничивается настоящим изобретением.
[141] В возможной реализации сторона кодирования определяет, удовлетворяет ли информация о характеристиках текущего блока конкретным условиям, и, если да, сторона кодирования определяет, разрешено ли взвешенное предсказание для текущего блока. Сторона декодирования также определяет, удовлетворяет ли информация о характеристиках текущего блока конкретным условиям. Если да, сторона кодирования определяет, что взвешенное предсказание разрешено для текущего блока; если нет, сторона кодирования определяет, что взвешенное предсказание не разрешено для текущего блока. Способ, посредством которого сторона декодирования определяет, разрешено ли взвешенное предсказание для текущего блока, на основе информации о характеристиках аналогичен способу определения на стороне кодирования и здесь не будет повторяться.
[142] В другой возможной реализации сторона декодирования определяет, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока. Когда текущий блок поддерживает взвешенное предсказание, также могут быть приняты другие стратегии для определения того, разрешено ли взвешенное предсказание для текущего блока, например, используют принцип RDO для определения того, разрешено ли взвешенное предсказание для текущего блока. После определения того, разрешено ли взвешенное предсказание для текущего блока, когда сторона кодирования передает кодированный битовый поток текущего блока, кодированный битовый поток может включать синтаксис для указания того, разрешено ли взвешенное предсказание, причем синтаксис указывает, разрешено ли взвешенное предсказание для текущего блока. Сторона декодирования определяет, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока, и конкретный способ аналогичен способу определения на стороне кодирования и здесь не будет повторяться. При определении того, что текущий блок поддерживает взвешенное предсказание, сторона декодирования также может проанализировать синтаксис, чтобы определить, разрешено ли взвешенное предсказание, из кодированного битового потока, и определить, разрешено ли взвешенное предсказание для текущего блока, на основе синтаксиса.
[143] В примере, при определении того, что для текущего блока разрешено взвешенное предсказание, сторона декодирования может также получить угол взвешенного предсказания текущего блока, позицию взвешенного предсказания текущего блока и коэффициент преобразования весов текущего блока. Соответствующее описание угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов можно отнести к этапу a1, который здесь повторяться не будет.
[144] На этапе b2 сторона декодирования конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов и начальной позиции преобразования весов (коэффициент преобразования весов и начальная позиция преобразования весов могут называться параметрами весовой конфигурации) текущего блока.
[145] В примере сторона декодирования может определить начальную позицию преобразования весов текущего блока на основе по меньшей мере одного из угла взвешенного предсказания текущего блока, позиции взвешенного предсказания текущего блока и размера текущего блока. Затем сторона декодирования конфигурирует опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов и начальной позиции преобразования весов текущего блока.
[146] На этапе b3 для каждой позиции пикселя текущего блока сторона декодирования определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока.
[147] На этапе b4 сторона декодирования определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.
[148] На этапе b5 сторона декодирования определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.
[149] На этапе b6 сторона декодирования получает список кандидатов информации о движении, который включает по меньшей мере одну часть информации о возможном движении; и получает первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе списка кандидатов информации о движении.
[150] На этапе b7 для каждой позиции пикселя текущего блока сторона декодирования определяет первое значение предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определяет второе значение предсказания позиции пикселя на основе второй целевой информации о движении текущего блока.
[151] На этапе b8 сторона декодирования определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.
[152] На этапе b9 сторона декодирования определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[153] В примере процесс реализации этапов с b2 по b8 может быть отнесен к этапам с а2 по а8. Отличие состоит в том, что этапы b2-b8 представляют собой поток обработки на стороне декодирования, а не поток обработки на стороне кодирования, и здесь не повторяются.
[154] Пример 4: Фиг. 5 представляет собой блок-схему способа кодирования и декодирования. Способ может применяться на стороне декодирования (также называемой видеодекодером) или стороне кодирования (также называемой видеокодером). Способ может включать этапы 501-506.
[155] На этапе 501, когда определено, что для текущего блока разрешено взвешенное предсказание, получают угол взвешенного предсказания и один или более параметров весовой конфигурации текущего блока, при этом параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов. Начальная позиция преобразования весов может быть определена по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока и размер текущего блока.
[156] На этапе 502 конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока на основе параметров весовой конфигурации текущего блока.
[157] На этапе 503 для каждой позиции пикселя текущего блока определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.
[158] Например, этапы с 501 по 503 могут соответствовать этапам с 301 по 303 и здесь повторяться не будут.
[159] На этапе 504 получают информацию опорного изображения и получают список кандидатов вектора движения, соответствующий информации опорного изображения, при этом список кандидатов вектора движения включает по меньшей мере один возможный вектор движения, а информация опорного изображения включает первую информацию опорного изображения и вторую информацию опорного изображения; получают первый целевой вектор движения и второй целевой вектор движения текущего блока на основе списка кандидатов вектора движения.
[160] На этапе 505 для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определяют второе значение предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определяют значение взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения.
[161] В возможной реализации первая целевая информация о движении текущего блока может включать первый целевой вектор движения текущего блока и первую информацию опорного изображения, соответствующую первому целевому вектору движения, а вторая целевая информация о движении текущего блока может включать второй целевой вектор движения текущего блока и вторую информацию опорного изображения, соответствующую второму целевому вектору движения.
[162] Например, первая информация опорного изображения может быть такой же, как вторая информация опорного изображения, или первая информация опорного изображения может отличаться от второй информации опорного изображения. Если первая информация опорного изображения совпадает со второй информацией опорного изображения, опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются одним и тем же изображением. Если первая информация опорного изображения отличается от второй информации опорного изображения, опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются разными изображениями.
[163] На этапе 506 определяют значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[164] В примере, когда способ кодирования и декодирования применяется на стороне кодирования, подробная последовательность этапов с 501 по 506 также может быть реализована посредством примера 2. Отличие состоит в том, что на этапе а6 сторона кодирования получает список кандидатов вектора движения, получает первый целевой вектор движения и второй целевой вектор движения текущего блока на основе списка кандидатов вектора движения, получает первую целевую информацию о движении на основе первого целевого вектора движения и первую информацию опорного изображения, соответствующую первому целевому вектору движения, и получает вторую целевую информацию о движении на основе второго целевого вектора движения и вторую информацию опорного изображения, соответствующую второму целевому вектору движения, что здесь не повторяется.
[165] В примере, когда способ кодирования и декодирования применяется на стороне декодирования, подробная последовательность этапов с 501 по 506 также может быть реализована посредством примера 3. Отличие состоит в том, что на этапе b6 сторона декодирования получает список кандидатов вектора движения, получает первый целевой вектор движения и второй целевой вектор движения текущего блока на основе списка кандидатов вектора движения, получает первую целевую информацию о движении на основе первого целевого вектора движения и первую информацию опорного изображения, соответствующую первому целевому вектору движения, и получает вторую целевую информацию о движении на основе второго целевого вектора движения и вторую информацию опорного изображения, соответствующую второму целевому вектору движения, что здесь не повторяется.
[166] Из приведенного выше технического решения видно, что в примерах настоящего изобретения предоставлен эффективный способ конфигурирования весовых значений, который позволяет сконфигурировать подходящее целевое весовое значение для каждой позиции пикселя текущего блока, так что могут быть улучшены точность предсказания, эффективность предсказания и эффективность кодирования, а значения предсказания текущего блока могут быть более приближены к исходным пикселям, и может быть улучшена эффективность кодирования.
[167] Пример 5: в примерах с 1 по 4 требуется выполнить взвешивание на основе угла взвешенного предсказания. Этот способ взвешивания можно назвать угловым режимом внешнего взвешенного предсказания (AWP, Angular Weighted Prediction). То есть, когда текущий блок поддерживает режим AWP, текущий блок предсказывают согласно примерам с 1 по 4 для получения значений предсказания текущего блока.
[168] Примеры с 1 по 4 включают угол взвешенного предсказания. Угол взвешенного предсказания может быть любым углом, например, любым углом в пределах 180 градусов или любым углом в пределах 360 градусов. Угол взвешенного предсказания здесь не ограничен, например, 10 градусов, 20 градусов, 30 градусов и т.д.
[169] В возможной реализации угол взвешенного предсказания может быть горизонтальным углом; или угол взвешенного предсказания может быть вертикальным углом; или абсолютное значение наклона угла взвешенного предсказания (абсолютное значение наклона угла взвешенного предсказания также является тангенсом угла взвешенного предсказания) может быть n-й степенью числа 2, где n целое число, такое как положительное целое число, 0, отрицательное целое число и т.д.
[170] Например, абсолютное значение наклона угла взвешенного предсказания может быть равно 1 (то есть значению 0-й степени числа 2), или 2 (то есть значению 1-й степени числа 2), или 1/2 (то есть значение -1-й степени числа 2), или 4 (то есть значение 2-й степени числа 2), или 1/4 (то есть значение -2-й степени числа 2), или 8 (то есть значение третьей степени числа 2), или 1/8 (то есть значение -3 степени числа 2). Например, на фиг. 6 показаны восемь углов взвешенного предсказания, и абсолютные значения наклонов этих углов взвешенного предсказания являются значениями n-й степени числа 2.
[171] В примере настоящего изобретения может выполняться операция сдвига для угла взвешенного предсказания. Пример выполнения операции сдвига для угла взвешенного предсказания может быть отнесен к последующим примерам. Следовательно, когда абсолютное значение наклона угла взвешенного предсказания является n-й степенью числа 2, операции деления можно избежать во время операции сдвига угла взвешенного предсказания, что облегчает реализацию сдвига.
[172] В примере количество углов взвешенного предсказания, поддерживаемых разными размерами блоков (т.е. размером текущего блока), могут быть одинаковыми или различными. Например, размер А блока поддерживает 8 углов взвешенного предсказания, а размеры В и С блоков поддерживают 6 углов взвешенного предсказания.
[173] Пример 6: в вышеприведенных примерах с 1 по 4 сторона кодирования/сторона декодирования должны сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов текущего блока и начальной позиции преобразования весов текущего блока. В возможной реализации для каждой окружающей позиции за пределами текущего блока опорное весовое значение окружающей позиции может быть сконфигурировано на основе значения координаты окружающей позиции, значения координаты начальной позиции преобразования весов и коэффициента преобразования весов.
[174] Например, для каждой окружающей позиции за пределами текущего блока, если окружающая позиция является окружающей позицией в строке сверху или строке снизу от текущего блока, значение координаты окружающей позиции может быть значением абсциссы, и значение координаты начальной позиции преобразования весов может быть значением абсциссы. Альтернативно, если окружающая позиция является окружающей позицией в столбце слева или столбце справа от текущего блока, значение координаты окружающей позиции может быть значением ординаты, и значение координаты начальной позиции преобразования весов может быть значением ординаты.
[175] В примере позиция пикселя в верхнем левом углу текущего блока (такая как первая позиция пикселя в верхнем левом углу) может быть взята в качестве начала координат. Значения координат окружающих позиций текущего блока (например, значения абсциссы или значения ординаты) и значение координаты начальной позиции преобразования весов (например, значение абсциссы или значение ординаты) все являются значениями координат относительно начала координат. Другие позиции пикселя текущего блока также могут быть приняты в качестве начала координат, и способ реализации аналогичен способу, когда позиция пикселя в верхнем левом углу принята в качестве начала координат.
[176] В возможной реализации сначала определяют разность между значением координаты окружающей позиции и значением координаты начальной позиции преобразования весов и определяют произведение разности на коэффициент преобразования весов текущего блока. Если произведение меньше первого порога (то есть минимального значения опорного весового значения, такого как 0), опорное весовое значение, связанное с окружающей позицией, определяют как первое пороговое значение; если произведение превышает второе пороговое значение (то есть максимальное значение опорного весового значения, такое как 8), опорное весовое значение, связанное с окружающей позицией, определяют как второе пороговое значение; если произведение не меньше первого порога и не больше второго порога, опорное весовое значение, связанное с окружающей позицией, определяют как произведение. В другой возможной реализации опорное весовое значение, связанное с окружающей позицией, также может быть определено непосредственно на основе отношения величин между значением координаты окружающей позиции и значением координаты начальной позиции преобразования весов текущего блока. Например, если значение координаты окружающей позиции меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как первое пороговое значение; если значение координаты окружающей позиции не меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как второе пороговое значение. В другом примере, если значение координаты окружающей позиции меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как второе пороговое значение; если значение координаты окружающей позиции не меньше, чем значение координаты начальной позиции преобразования весов, опорное весовое значение, связанное с окружающей позицией, определяют как первое пороговое значение.
[177] В примере, как первое пороговое значение, так и второе пороговое значение могут быть сконфигурированы на основе опыта, первое пороговое значение меньше второго порогового значения, и первое пороговое значение и второе пороговое значение здесь не ограничиваются. Например, первое пороговое значение может быть минимальным значением предварительно согласованных опорных весовых значений, например 0, а второе пороговое значение может быть максимальным значением предварительно согласованных опорных весовых значений, например 8, причем 0 и 8 приведены только в качестве примера.
[178] Например, как показано на фиг. 4С, могут быть получены 7 позиций взвешенного предсказания после того, как все окружающие позиции разделены на 8 равных частей. Когда позиция взвешенного предсказания равна 0, может быть указано, что окружающая позиция а0 является начальной позицией преобразования весов, а значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции а0. Когда позиция взвешенного предсказания равна 1, может быть указано, что окружающая позиция a1 является начальной позицией преобразования весов, а значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции a1, и т.д. Способ определения значения координаты начальной позиции преобразования весов здесь повторяться не будет.
[179] Пример 7: в примерах с 1 по 4 сторона кодирования/сторона декодирования должна сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов текущего блока и начальной позиции преобразования весов текущего блока. В возможной реализации может быть принят следующий способ: получают угол взвешенного предсказания текущего блока, коэффициент преобразования весов текущего блока и позицию взвешенного предсказания текущего блока, определяют начальную позицию преобразования весов текущего блока на основе позиции взвешенного предсказания текущего блока и определяют параметры весовой конфигурации на основе начальной позиции преобразования весов и коэффициента преобразования весов, то есть параметры весовой конфигурации включают начальную позицию преобразования весов и коэффициент преобразования весов. Затем на основе параметров весовой конфигурации определяют опорные весовые значения окружающих позиций за пределами текущего блока.
[180] Далее описывается процесс конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока в сочетании с конкретными этапами.
[181] На этапе c1 получают действительное количество опорных весовых значений.
[182] Например, количество окружающих позиций за пределами текущего блока является действительным количеством. На этапе cl требуется получить действительное количество опорных весовых значений, при этом действительное количество может быть определено на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. Например, действительное количество определяют следующим образом: ValidLength=(N+(M>>X))<<1, где N и M представляют высоту и ширину текущего блока соответственно, а X представляет собой значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например 0 или 1.
[183] В возможной реализации действительное количество опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Альтернативно, действительное количество опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем включать множество вторых опорных весовых значений, или сначала включать множество вторых опорных весовых значений, а затем включать множество первых опорных весовых значений. Описание будет приведено ниже в сочетании с несколькими случаями.
[184] В случае 1 действительное количество опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Например, действительное количество опорных весовых значений могут быть [88…88765432100…00], то есть действительное количество опорных весовых значений монотонно уменьшаются. В другом примере действительное количество опорных весовых значений могут быть [00…00123456788…88], то есть действительное количество опорных весовых значений монотонно увеличиваются. Выше приведены только примеры, которые не накладывают ограничений.
[185] В примере опорные весовые значения могут быть сконфигурированы на основе параметров весовой конфигурации, которые могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Способ получения коэффициента преобразования весов можно отнести к последующим примерам. Начальная позиция преобразования весов может быть значением, установленным на основе опыта, или начальная позиция преобразования весов может быть определена позицией взвешенного предсказания, или начальная позиция преобразования весов может быть определена углом взвешенного предсказания и позицией взвешенного предсказания, что здесь не ограничено.
[186] Действительное количество опорных весовых значений могут монотонно увеличиваться или уменьшаться от первого из опорных весовых значений до последнего из опорных весовых значений. Например, если максимальное значение опорного весового значения равно M1, а минимальное значение опорного весового значения равно М2, действительное количество опорных весовых значений монотонно уменьшаются от максимального значения M1 до минимального значения М2; или монотонно увеличиваются от минимального значения М2 до максимального значения M1. Предполагается, что M1 равно 8, а М2 равно 0, множество опорных весовых значений могут монотонно уменьшаться от 8 до 0 или монотонно увеличиваться от 0 до 8.
[187] В примере сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем может быть определено множество опорных весовых значений на основе коэффициента преобразования весов и начальной позиции преобразования весов. Например, опорные весовые значения могут быть определены следующим образом: у=Clip3 (минимум, максимум, а*(x-s)), где x представляет индекс окружающих позиций и находится в диапазоне от 1 до действительного количества, например, x равно 1, что указывает на первую окружающую позицию, а у представляет опорное весовое значение первой окружающей позиции; в другом примере x равно 2, что указывает на вторую окружающую позицию, а у представляет опорное весовое значение второй окружающей позиции, «а» представляет коэффициент преобразования весов, и «s» представляет начальную позицию преобразования весов.
[188] Функция Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями. Минимальное значение и максимальное значение могут быть сконфигурированы на основе опыта. Для удобства последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.
[189] «а» представляет коэффициент преобразования весов и может быть ненулевым целым числом, например, «а» может быть -4, -2, -1, 1, 2, 4 и т.п. Значение «а» здесь не ограничено. Если абсолютное значение «а» равно 1, опорные весовые значения должны пройти через 0, 1, 2, 3, 4, 5, 6, 7, 8, от 0 до 8, или 8, 7, 6, 5, 4, 3, 2, 1, 0, от 8 до 0.
[190] «s» представляет начальную позицию преобразования весов и может быть определена на основе позиции взвешенного предсказания. Например, s=f (позиция взвешенного предсказания), то есть «s» - это функция, связанная с позицией взвешенного предсказания. Например, после определения диапазона окружающих позиций за пределами текущего блока может быть определено действительное количество окружающих позиций, и все окружающие позиции могут быть разделены на N равных частей, где значение N может быть задано произвольно, например, 4, 6 или 8. Позиция взвешенного предсказания используется для указания того, какая окружающая позиция за пределами текущего блока используется в качестве целевой окружающей позиции текущего блока, и окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов. Альтернативно, значение «s» может быть определено на основе угла взвешенного предсказания и позиции взвешенного предсказания, например, s=f (угол взвешенного предсказания, позиция взвешенного предсказания), то есть «s» является функцией, связанной с углом взвешенного предсказания и позицией взвешенного предсказания. Например, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания. После определения диапазона окружающих позиций за пределами текущего блока может быть определено действительное количество окружающих позиций, и все окружающие позиции делятся на N равных частей. Позиция взвешенного предсказания используется для указания того, какая окружающая позиция за пределами текущего блока используется в качестве целевой окружающей позиции текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов.
[191] Подводя итог, в у=Clip3 (минимум, максимум, а*(x-s)), коэффициент «а» преобразования весов и начальная позиция «s» преобразования весов являются известными значениями. Для каждой из окружающих позиций за пределами текущего блока может быть определено опорное весовое значение окружающей позиции на основе функционального соотношения. Например, если коэффициент «а» преобразования весов равен 2, а начальная позиция «s» преобразования весов равна 2, функциональное соотношение может быть у=2*(х-2). Для каждой окружающей позиции x за пределами текущего блока может быть получено опорное весовое значение у.
[192] Таким образом, можно получить действительное количество опорных весовых значений текущего блока, и эти опорные весовые значения могут монотонно увеличиваться или монотонно уменьшаться. В возможной реализации опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевой области, одно или более опорных весовых значений первой соседней области целевой области и одно или более опорных весовых значений второй соседней области целевой области.
[193] В примере целевая область включает одно опорное весовое значение или по меньшей мере два опорных весовых значения. Например, на основе начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве опорного весового значения целевой области. В другом примере определяют по меньшей мере два опорных весовых значения на основе начальной позиции преобразования весов, и эти по меньшей мере два опорных весовых значения принимают в качестве опорных весовых значений целевой области.
[194] Если целевая область включает по меньшей мере два опорных весовых значения, по меньшей мере два опорных весовых значения целевой области монотонно увеличиваются или уменьшаются. Монотонное увеличение может быть строго монотонным увеличением (то есть по меньшей мере два опорных весовых значения целевой области строго монотонно увеличиваются). Монотонное уменьшение может быть строго монотонным уменьшением (то есть по меньшей мере два опорных весовых значения целевой области строго монотонно уменьшаются). Например, опорные весовые значения целевой области монотонно увеличиваются от 1 до 7, или опорные весовые значения целевой области монотонно уменьшаются от 7 до 1.
[195] В примере все опорные весовые значения первой соседней области могут быть первым опорным весовым значением, а опорные весовые значения второй соседней области могут монотонно увеличиваться. Например, все опорные весовые значения первой соседней области могут быть равны 0, целевая область включает одно опорное весовое значение, равное 1, а опорные весовые значения второй соседней области монотонно увеличиваются от 2 до 8.
[196] Альтернативно, все опорные весовые значения первой соседней области могут быть первым опорным весовым значением, а опорные весовые значения второй соседней области могут монотонно уменьшаться. Например, все опорные весовые значения первой соседней области могут быть равны 8, целевая область включает одно опорное весовое значение, равное 7, а опорные весовые значения второй соседней области монотонно уменьшаются от 6 до 0.
[197] Альтернативно, все опорные весовые значения первой соседней области могут быть вторым опорным весовым значением, все опорные весовые значения второй соседней области могут быть третьим опорным весовым значением, и второе опорное весовое значение отличается от третьего опорного весового значения. Например, все опорные весовые значения первой соседней области равны 0, целевая область включает по меньшей мере два опорных весовых значения, которые монотонно увеличиваются от 1 до 7, а опорные весовые значения второй соседней области равны 8. Очевидно, опорные весовые значения первой соседней области отличаются от опорных весовых значений второй соседней области.
[198] Альтернативно, опорные весовые значения первой соседней области могут монотонно увеличиваться или уменьшаться, а опорные весовые значения второй соседней области могут монотонно увеличиваться или уменьшаться. Например, опорные весовые значения первой соседней области монотонно увеличиваются, и опорные весовые значения второй соседней области также монотонно увеличиваются. В другом примере опорные весовые значения первой соседней области монотонно уменьшаются, и опорные весовые значения второй соседней области также монотонно уменьшаются. Например, опорные весовые значения первой соседней области монотонно увеличиваются от 0 до 3, целевая область включает одно опорное весовое значение, равное 4, а опорные весовые значения второй соседней области монотонно увеличиваются от 5 до 8.
[199] В случае 2 действительное количество опорных весовых значений может сначала включать множество первых значений для опорного веса, а затем включать множество вторых значений для опорного веса, или сначала включать множество вторых значений для опорного веса, а затем включать множество первых значений для опорного веса. Например, действительное количество опорных весовых значений может быть [88…8800…00] или [00…0088…88]. В примере множество опорных весовых значений может быть определено на основе начальной позиции преобразования весов. Например, начальная позиция преобразования весов представляет s-e опорное весовое значение. Таким образом, все опорные весовые значения перед s-м опорным весовым значением (исключая s-e опорное весовое значение) являются первым опорным весовым значением (например, 8), и все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются вторым опорным весовым значением (например, 0). Альтернативно, все опорные весовые значения перед s-м опорным весовым значением (исключая s-e опорное весовое значение) являются вторым опорным весовым значением (например, 0), а все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются первым опорным весовым значением (например, 8).
[200] На этапе с2 конфигурируют опорные весовые значения окружающих позиций за пределами текущего блока на основе действительного количества опорных весовых значений.
[201] В примере количество окружающих позиций за пределами текущего блока является действительным количеством, и количество опорных весовых значений является действительным количеством, поэтому действительное количество опорных весовых значений могут быть сконфигурированы как опорные весовые значения окружающих позиций за пределами текущего блока.
[202] Например, первое из опорных весовых значений может быть сконфигурировано как опорное весовое значение первой окружающей позиции за пределами текущего блока, второе из опорных весовых значений может быть сконфигурировано как опорное весовое значение второй окружающей позиции за пределами текущего блока и т.д.
[203] Подводя итог, можно сказать, что поскольку опорные весовые значения сконфигурированы для окружающих позиций за пределами текущего блока, то есть каждая окружающая позиция имеет опорное весовое значение, после определения окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока может быть определено опорное весовое значение, связанное с окружающей соответствующей позицией, то есть целевое весовое значение позиции пикселя.
[204] Далее описывается реализация описанного выше процесса в сочетании с несколькими конкретными сценариями применения. Например, в следующих сценариях применения предполагается, что размер текущего блока равен M*N, где M - ширина текущего блока, а N - высота текущего блока. X представляет собой значение логарифма log2 тангенса значения угла взвешенного предсказания, такого как 0 или 1. Y представляет собой значение индекса позиции взвешенного предсказания, а а, b, с, d представляют собой заранее заданные постоянные значения. ValidLength представляет действительное количество, FirstPos представляет начальную позицию преобразования весов, ReferenceWeights[i] представляет опорное весовое значение i-й окружающей позиции, Clip3 используется для ограничения опорного весового значения между минимальным значением 0 и максимальным значением 8, i представляет собой индекс окружающих позиций за пределами текущего блока, а «а» представляет собой абсолютное значение коэффициента преобразования весов.
[205] Сценарий 1 применения: определяют действительное количество (также называемое действительной длиной опорных весов, т.е. ValidLength) на основе размера текущего блока и угла взвешенного предсказания текущего блока, а также получают начальную позицию преобразования весов (т.е. FirstPos). Например, ValidLength можно определить по следующей формуле: ValidLength=(N+(M>>X))<<1; FirstPos можно определить по следующей формуле: FirstPos=(ValidLength>>1)-а+Y*((ValidLength-1)>>3). Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, а*(i-FirstPos)). Диапазон значений i может быть от 0 до ValidLength-1 или от 1 до ValidLength. После получения опорного весового значения ReferenceWeights[i] окружающей позиции текущего блока целевое весовое значение позиции пикселя (х, у) текущего блока может быть получено по следующей формуле: SampleWeight[x][у]=ReferenceWeights[(y<<1)+((х<<1)>>Х)], «<<» представляет сдвиг влево, «>>» представляет сдвиг вправо.
[206] Сценарий 2 применения: ValidLength можно определить по следующей формуле: ValidLength=(N+(M>>X))<<1; и FirstPos можно определить по следующей формуле: FirstPos=(ValidLength>>1)-b+Y*((ValidLength-1)>>3)-((M<<1)>>X). Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, а*(i-FirstPos)). Целевое весовое значение каждой позиции пикселя (х, у) текущего блока может быть получено по следующей формуле: SampleWeight[x][у]=ReferenceWeights[(y<<1)-((х<<1)>>Х)].
[207] Сценарий 3 применения: ValidLength можно определить по следующей формуле: ValidLength=(M+(N>>X))<<1; и FirstPos можно определить по следующей формуле: FirstPos=(ValidLength>>1)-с+Y*((ValidLength-1)>>3)-((N<<1)>>X). Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, а*(i-FirstPos)). Целевое весовое значение каждой позиции пикселя (х, у) текущего блока может быть получено по следующей формуле: SampleWeight[x][у]=ReferenceWeights[(x<<1)-((у<<1)>>Х)].
[208] Сценарий 4 применения: ValidLength можно определить по следующей формуле: ValidLength=(M+(N>>X))<<1; и FirstPos можно определить по следующей формуле: FirstPos=(ValidLength>>1)-d+Y*((ValidLength-1)>>3). Исходя из этого, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, а*(i-FirstPos)). Целевое весовое значение каждой позиции пикселя (х, у) текущего блока можно получить по следующей формуле: SampleWeight[x][y]=ReferenceWeights[(x<<1)+((у<<1)>>Х)].
[209] Сценарий 5 применения: фиг. 7 показывает схематическую диаграмму опорных весовых значений для четырех коэффициентов преобразования весов.
[210] Когда абсолютное значение коэффициента преобразования весов равно 1, то есть коэффициент преобразования весов равен 1 или -1, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, 1*(i-FirstPos)). Приведенная выше формула может быть эквивалентна ReferenceWeight[i]=Clip3 (0, 8, i-FirstPos). В этом случае, если обратиться к первому случаю, показанному на фиг. 7, FirstPos может быть равно 4, то есть опорные весовые значения окружающих позиций с первой по четвертую равны 0, опорное весовое значение пятой окружающей позиции равно 1, опорное весовое значение шестой окружающей позиции равно 2, и т.д.
[211] Когда абсолютное значение коэффициента преобразования весов равно 2, то есть коэффициент преобразования весов равен 2 или -2, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, 2*(i-FirstPos)). Приведенная выше формула может быть эквивалентна ReferenceWeight[i]=Clip3 (0, 8, (i-FirstPos)<<1). В этом случае, если обратиться к второму случаю, показанному на фиг. 7, FirstPos может быть равно 6, то есть опорные весовые значения окружающих позиций с первой по шестую равны 0, опорное весовое значение седьмой окружающей позиции равно 2, опорное весовое значение восьмой окружающей позиции равно 4, и т.д.
[212] Когда абсолютное значение коэффициента преобразования весов равно 4, то есть коэффициент преобразования весов равен 4 или -4, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, 4*(i-FirstPos)). Приведенная выше формула может быть эквивалентна ReferenceWeight[i]=Clip3 (0, 8, (i-FirstPos)<<2). В этом случае, если обратиться к третьему случаю, показанному на фиг. 7, FirstPos может быть равно 7, то есть опорные весовые значения окружающих позиций с первой по седьмую равны 0, опорное весовое значение восьмой окружающей позиции равно 4, опорные весовые значения окружающих позиций с девятой по семнадцатую равны 8 и т.д.
[213] Когда абсолютное значение коэффициента преобразования весов равно 8, то есть коэффициент преобразования весов равен 8 или -8, опорное весовое значение каждой окружающей позиции текущего блока может быть получено по следующей формуле: ReferenceWeights[i]=Clip3 (0, 8, 8*(i-FirstPos)). Приведенная выше формула может быть эквивалентна ReferenceWeight[i]=Clip3 (0, 8, (i-FirstPos)<<3). В этом случае, если обратиться к четвертому случаю, показанному на фиг. 7, FirstPos может быть равно 8, то есть опорные весовые значения окружающих позиций с первой по восьмую равны 0, опорное весовое значение девятой окружающей позиции равно 9, опорные весовые значения окружающих позиций с десятой по семнадцатую равны 8, и т.д.
[214] Таким образом, когда абсолютное значение коэффициента преобразования весов равно 1, FirstPos равно 4, когда абсолютное значение коэффициента преобразования весов равно 2, FirstPos равно 6 (т.е. FirstPos при коэффициенте преобразования весов, равном 1, плюс 2), и когда абсолютное значение коэффициента преобразования весов равно 4, FirstPos равно 7 (т.е. FirstPos при коэффициенте преобразования весов, равном 1, плюс 3). Исходя из этого, позиции с опорными весовыми значениями 4 могут быть выровнены.
[215] В примере, для текущего блока, когда поддерживается переключение коэффициента преобразования весов и разрешено переключение коэффициента преобразования весов, один из четырех типов примеров распределения опорных весовых значений коэффициентов преобразования весов, показанных на фиг. 7, можно выбрать для переключения, чтобы уменьшить выделение скачков при отображении изображения в некоторых сценах показа изображения путем переключения коэффициента преобразования весов изображений или локальных областей изображений. Например, для некоторых сцен показа изображения необходимо решить проблему выделения скачка, и переключение коэффициента преобразования весов в режиме AWP может решить эту проблему. Например, контент смешанного изображения включает контент экрана, мультфильмы, изображения, содержащие мультфильмы и т.д., и переключение коэффициента преобразования весов может быть выполнено в области, содержащей контент экрана, для решения проблемы выделения скачка.
[216] В приведенном выше процессе ValidLength связан с углом взвешенного предсказания текущего блока и размером текущего блока. Чтобы упростить решение, некоторые параметры могут фиксироваться для достижения оптимизации. Например, угол взвешенного предсказания текущего блока может быть установлен как фиксированное значение параметра, a ValidLength связан только с размером текущего блока. FirstPos связан с углом взвешенного предсказания текущего блока, размером текущего блока и позицией взвешенного предсказания текущего блока. Чтобы упростить решение, некоторые параметры могут фиксироваться для достижения оптимизации. Например, угол взвешенного предсказания текущего блока может быть задан как фиксированное значение параметра, a FirstPos относится только к размеру текущего блока и позиции взвешенного предсказания текущего блока. Альтернативно, позиция взвешенного предсказания текущего блока может быть установлена как фиксированное значение параметра, a FirstPos относится только к размеру текущего блока и углу взвешенного предсказания текущего блока. Альтернативно, угол взвешенного предсказания текущего блока и позиция взвешенного предсказания текущего блока могут быть установлены как фиксированные значения параметров, которые могут быть одинаковыми или различными, a FirstPos относится только к размеру текущего блока.
[217] Пример 8: в примерах с 1 по 4 сторона кодирования/сторона декодирования должна сконфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока на основе коэффициента преобразования весов текущего блока и начальной позиции преобразования весов текущего блока. В возможной реализации M и N являются шириной и высотой текущего блока, и способ получения весового массива режима углового взвешенного предсказания (AWP) включает этапы с d1 по d4.
[218] На этапе d1 получают такие параметры, как stepIdx, angleIdx, subAngleIdx, на основе AwpIdx.
[219] В примере AwpIdx представляет значение индекса позиции взвешенного предсказания и угла взвешенного предсказания. Предполагается, что имеется 7 позиций взвешенного предсказания и 8 углов взвешенного предсказания, диапазон значений AwpIdx составляет от 0 до 55. Если позиции взвешенного предсказания равны от -3 до 3 (указывая, что четвертая позиция взвешенного предсказания является центром, и четвертая позиция взвешенного предсказания равна 0), а индекс угла взвешенного предсказания равен 0-7, позиции взвешенного предсказания и углы взвешенного предсказания, соответствующие 56 значениям индекса AwpIdx, показаны в таблице 1.
[220] В примере stepIdx представляет позицию взвешенного предсказания (т.е. значение индекса позиции взвешенного предсказания), а диапазон позиции взвешенного предсказания может быть от -3 до 3. Например, первая позиция взвешенного предсказания равна -3, вторая позиция взвешенного предсказания равна -2 и т.д., седьмая позиция взвешенного предсказания равна 3.
[221] angleIdx представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания (например, 0, 1 или большая константа), а subAngleIdx представляет угловую область, в которой расположен угол взвешенного предсказания. На фиг. 8А показаны восемь углов взвешенного предсказания. AngleIdx угла 0 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 0 взвешенного предсказания, a angleIdx угла 1 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 1 взвешенного предсказания. По аналогии, angleIdx угла 7 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 7 взвешенного предсказания. Угол 0 взвешенного предсказания и угол 1 взвешенного предсказания расположены в угловой области 0, угол 2 взвешенного предсказания и угол 3 взвешенного предсказания расположены в угловой области 1, угол 4 взвешенного предсказания и угол 5 взвешенного предсказания расположены в угловой области 2, и угол 6 взвешенного предсказания и угол 7 взвешенного предсказания расположены в угловой области 3.
[222] Например, для определения stepIdx можно использовать следующую формулу: stepIdx=(AwpIdx>>3)-3.
[223] Например, modAngNum (номер угла) можно определить по следующей формуле: modAngNum=AwpIdx % 8. На основе modAngNum можно определить angleIdx следующим образом: если modAngNum равен 2, то angleIdx=7; если modAngNum равен 6, то angleIdx=8; в противном случае angularIdx=modAngNum % 2.
[224] Например, subAngleIdx можно определить по следующей формуле: subAngleIdx=modAngleNum>>1.
[225] Подводя итог, можно сказать, что после определения угла взвешенного предсказания и позиции взвешенного предсказания текущего блока сторона кодирования может определить значение AwpIdx на основе угла взвешенного предсказания и позиции взвешенного предсказания, как показано в таблице 1. Когда сторона кодирования передает кодированный битовый поток на сторону декодирования, значение AwpIdx может переноситься в кодированном битовом потоке. На основе этого сторона декодирования может получить значение AwpIdx и получить stepIdx, angleIdx и subAngleIdx на основе AwpIdx.
[226] Например, angleIdx и subAngleIdx могут однозначно определять угол взвешенного предсказания, как показано в таблице 2. Для определения угла взвешенного предсказания также могут использоваться другие способы, такие как изменение номера раздела.
[227] На этапе d2 конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока на основе stepIdx, angleIdx и subAngleIdx.
[228] В случае 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 (минимум, максимум, а*(x-FirstPos)), где x представляет собой индекс окружающих позиций за пределами текущего блока, x находится в диапазоне от 0 до ValidLength_H-1, а «а» представляет коэффициент преобразования весов.
[229] В приведенной выше формуле ValidLength_H может представлять количество окружающих позиций за пределами текущего блока (т.е. действительное количество, которое также может называться действительной длиной). Когда значение subAngleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Следовательно, действительное количество может быть обозначено как ValidLength_H. Например, действительное количество ValidLength_H можно определить по следующей формуле: ValidLength_H=(N+(M>>angleIdx))<<1. Сдвиг влево на один бит обусловлен тем, что формула использует точность 1/2 пикселя. Если принята точность в 1 пиксель, формула будет следующей: ValidLength_H=(N+(M>>angleIdx)). Если принята точность 1/4 пикселя, формула будет следующей: ValidLength_H=(N+(M>>angleIdx))<<2. Если принята точность 2 пикселя, формула будет следующей: ValidLength_H=(N+(M>>angleIdx))>>1. Другие значения точности в пикселях реализуют таким же образом, и здесь не приводится избыточное описание. В последующих формулах операции, задействованные >>1, могут измениться для различной точности пикселей.
[230] В приведенной выше формуле DeltaPos_H представляет параметр изменения положения (например, промежуточный параметр). Когда значение subAngleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце за пределами текущего блока. Поэтому параметр изменения позиции обозначается как DeltaPos_H. Например, DeltaPos_H можно определить по следующей формуле: DeltaPos_H=stepIdx*((ValidLength_H>>3)-1).
[231] В случае 2, если subAngleIdx равен 1, то есть угол взвешенного предсказания расположен в угловой области 1, например, угол взвешенного предсказания представляет собой угол 2 взвешенного предсказания или угол 3 взвешенного предсказания, начальную позицию FirstPos преобразования весов можно определить по следующей формуле: FirstPos=(ValidLength_H>>1)-4+DeltaPos_H-((M<<1)>>angleIdx). Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3 (0, 8, а*(x-FirstPos)). В этой формуле в качестве примера для иллюстрации взяты минимальное значение опорного весового значения, равное 0, максимальное значение опорного весового значения, равное 8, и коэффициент преобразования весов, равный а, где x представляет собой индекс окружающих позиций за пределами текущего блока, и x находится в диапазоне от 0 до ValidLength_H-1.
[232] В приведенной выше формуле ValidLength_H и DeltaPos_H могут быть отнесены к случаю 1 и не будут здесь повторно описываться.
[233] В случае 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, и коэффициент преобразования весов, равный а, где x представляет индекс окружающих позиций за пределами текущего блока, и x находится в диапазоне от 0 до ValidLength_W-1.
[234] В приведенной выше формуле ValidLength_W представляет количество окружающих позиций за пределами текущего блока (т.е. действительное количество, которое также можно назвать действительной длиной). Когда значение subAngleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в верхней строке. Следовательно, действительное количество может быть обозначено как ValidLength_W. Например, действительное количество ValidLength_W можно определить по следующей формуле: ValidLength_W=(M+(N>>angleIdx))<<1.
[235] В приведенной выше формуле DeltaPos_W представляет параметр изменения положения (т.е. промежуточный параметр). Когда значение subAngleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в верхней строке за пределами текущего блока. Следовательно, параметр изменения позиции можно обозначить как DeltaPos_W. Например, DeltaPos_W можно определить по следующей формуле: DeltaPos_W=stepIdx*((ValidLength_W>>3)-1).
[236] В случае 4, если subAngleIdx равен 3, то есть угол взвешенного предсказания расположен в угловой области 3, например, угол взвешенного предсказания представляет собой угол 6 взвешенного предсказания или угол 7 взвешенного предсказания, начальную позицию FirstPos преобразования весов можно определить по следующей формуле: FirstPos=(ValidLength_W>>1)-6+DeltaPos_W. Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3 (0, 8, а*(x-FirstPos)). В этой формуле в качестве примера для иллюстрации взяты минимальное значение опорного весового значения, равное 0, максимальное значение опорного весового значения, равное 8, и коэффициент преобразования весов, равный а, где x представляет индекс окружающих позиций за пределами текущего блока, и x находится в диапазоне от 0 до ValidLength_W-1.
[237] В приведенной выше формуле ValidLength_W и DeltaPos_W могут относиться к случаю 3 и здесь не будут повторно описываться.
[238] Таким образом, можно определить, какой случай следует использовать, на основе subAngleIdx. Например, в случаях 1 и 2 ValidLength_H и DeltaPos_H могут быть определены на основе angleIdx и stepIdx, a FirstPos может быть определена на основе ValidLength_H и DeltaPos_H, а затем устанавливают опорные весовые значения на основе FirstPos. В случаях 3 и 4 ValidLength_W и DeltaPos_W могут быть определены на основе angleIdx и stepIdx, a FirstPos может быть определена на основе ValidLength_W и DeltaPos_W, а затем устанавливают опорные весовые значения на основе FirstPos.
[239] Формулы в приведенных выше случаях отличаются следующим: когда в качестве начала координат используется левый верхний угол текущего блока, изменяется начальная позиция опорного весового значения ReferenceWeights[x]. Например, на фиг. 8В показаны примеры угловой области 2 и угловой области 3. Когда принята точность 1/2 пикселя, начальная позиция опорного весового значения ReferenceWeights[x] равна (height<<1)>>angleIdx, т.е. смещение в формуле равно «-((N<<1)>>angularIdx)». Угловая область 0 и угловая область 1 реализуются аналогичным образом, за исключением того, что смещение в формуле равно «-((M<<1)>>angleIdx)», т.е. высота изменяется на ширину.
[240] На этапе d3 весовое значение яркости позиции пикселя получают на основе angleIdx и опорного весового значения ReferenceWeights[x].
[241] В случае 1, если значение subAngleIdx равно 0, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)+((x<<1)>>angleIdx)], где (у<<1)+((x<<1)>>angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), a ReferenceWeights [(у<<1)+((x<<1)>angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений x составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.
[242] В случае 2, если значение subAngleIdx равно 1, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=ReferenceWeights[(y<<1)-((x<<1)>>angleIdx)], где (y<<1)-((x<<1)>>angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), a ReferenceWeights [(у<<1)-((x<<1)>>angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений x составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.
[243] В случае 3, если значение subAngleIdx равно 2, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=ReferenceWeights[(x<<1)-(y<<1)>>angleIdx)], где (х<<1)-((y<<1)>>angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), a ReferenceWeights[(x<<<1)-(y<<1)>>angleIdx] представляет опорное весовое значение окружающей позиции. Диапазон значений x составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.
[244] В случае 4, если значение subAngleIdx равно 3, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][у]=ReferenceWeights[(x<<1)+((y<<1)>>angleIdx)], где (x<<1)+((y<<1)>>angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), a ReferenceWeights[(x<<<1)-(y<<1)>>angleIdx] представляет опорное весовое значение окружающей позиции. Диапазон значений x составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.
[245] Описанные выше этапы d2 и d3 могут быть объединены в один этап, то есть этап d2 (конфигурируют опорные весовые значения для окружающих позиций за пределами текущего блока на основе stepIdx, angleIdx и subAngleIdx) и этап d3 (получают весовое значение яркости позиции пикселя на основе angleIdx и опорного весового значения ReferenceWeights[x]) могут быть объединены в этап получения весового значения яркости для позиции пикселя на основе stepIdx, angleIdx и subAngleIdx, то есть определение весового значения яркости позиции пикселя на основе значения координаты окружающей соответствующей позиции и значения координаты начальной позиции преобразования весов.
[246] Например, в случае 1, если значение subAngleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания является углом 0 взвешенного предсказания или углом 1 взвешенного предсказания, начальную позицию FirstPos преобразования весов можно определить по следующей формуле: FirstPos=(ValidLength_H>>1)-6+DeltaPos H. Затем весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=Clip3(0, 8, (у<<1)+((x<<1)>>angleIdx)-FirstPos), где (у<<1)+((x<<1)>>angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у).
[247] На этапе d4 весовое значение цветности позиции пикселя получают на основе значения яркости позиции пикселя, при этом весовое значение яркости позиции пикселя и весовое значение цветности позиции пикселя могут формировать целевое весовое значение позиции пикселя.
[248] Например, если используют формат разрешения цветности 4:2:0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y]=AwpWeightArrayY[x<<1][y<<1]. В другом примере, если используют формат разрешения цветности 4:4:4, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y]=AwpWeightArrayY[x][y]. Диапазон значений x составляет от 0 до М/2-1, а диапазон значений у составляет от 0 до N/2-1.
[249] Этап d4 может быть реализован другим способом: вместо получения весового значения цветности на основе весового значения яркости весовое значение цветности позиции пикселя получают на основе angleIdx и опорного весового значения ReferenceWeights[x]. Например, если используют формат разрешения цветности 4:2:0, весовое значение цветности для позиции пикселя может быть получено на основе angleIdx и опорного весового значения ReferenceWeights[x].
[250] Например, если значение subAngleIdx равно 0, весовое значение цветности позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayUV[x][у]=ReferenceWeights[(у<<<2)+((x<<2)>>angleIdx)].
[251] Например, если значение subAngleIdx равно 1, весовое значение цветности позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayUV[x][y]=ReferenceWeights[(у<<2)-((x<<2)>>angleIdx)].
[252] Например, если значение subAngleIdx равно 2, весовое значение цветности позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)-((у<<2)>>angleIdx)].
[253] Например, если значение subAngleIdx равно 3, весовое значение цветности позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayUV[x][y]=ReferenceWeights[(x<<2)+((у<<2)>>angleIdx)].
[254] В приведенных выше формулах диапазон значений x составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.
[255] На этапах d3 и d4 формулы в указанных случаях отличаются следующим. На фиг. 8С показаны примеры угловой области 2 и угловой области 3. Когда верхний левый угол текущего блока принимают в качестве начала координат, формула вычисления окружающей соответствующей позиции (х, у) в угловой области 2 может быть х-у >> angleIdx, а формула вычисления окружающей соответствующей позиции (х, у) в угловой области 3 может быть x+у >> angleIdx. Когда принята точность 1/2 пикселя, формула вычисления окружающей соответствующей позиции (х, у) в угловой области 2 может быть (х<<1)-((у<<1)>>angleIdx), и формула вычисления окружающей соответствующей позиции (х, у) в угловой области 3 может быть (х<<1)+((у<<1)>>angleIdx). Угловая область 0 и угловая область 1 могут быть реализованы аналогичным образом, за исключением того, что положения х, у меняются местами.
[256] Пример 9: в примерах с 1 по 4 сторона кодирования/сторона декодирования должна получить коэффициент преобразования весов текущего блока. Если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока получают следующим образом: получают информацию указания коэффициента преобразования весов текущего блока и определяют коэффициент преобразования весов текущего блока на основе информации указания коэффициента преобразования весов. Например, если информация указания коэффициента преобразования весов является первой информацией указания, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; если информация указания коэффициента преобразования весов является второй информацией указания, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[257] Таким образом, если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов или вторым коэффициентом преобразования весов, и первый коэффициент преобразования весов отличается от второго коэффициента преобразования весов, то есть коэффициент преобразования весов текущего блока является переменным, так что коэффициент преобразования весов можно адаптивно переключать вместо принятия единого коэффициента преобразования весов.
[258] В примере, если информация управления переключением позволяет текущему блоку разрешать режим переключения коэффициента преобразования весов, текущий блок поддерживает режим переключения коэффициента преобразования весов. Если информация управления переключением не позволяет текущему блоку разрешать режим переключения коэффициента преобразования весов, текущий блок не поддерживает режим переключения коэффициента преобразования весов. Информация управления переключением может включать, не ограничиваясь этим, информацию управления переключением уровня последовательности, информацию управления переключением уровня изображения, информацию управления переключением уровня слайса, информацию управления переключением уровня тайла, информацию управления переключением уровня патча, информацию управления переключением уровня единицы дерева кодирования (CTU, Coding Tee Unit), информацию управления переключением уровня наибольшей единицы кодирования (LCU, Largest Coding Unit), информацию управления переключением уровня блока, информацию управления переключением уровня блока кодирования (CU, Coding Unit) и информацию управления переключением уровня блока предсказания (PU, Prediction Unit) и т.д., что не ограничивается настоящим описанием.
[259] Для стороны кодирования может быть получена информация управления переключением, и может быть получена информация о том, позволяет ли информация управления переключением разрешить режим переключения коэффициента преобразования весов текущему блоку, а затем может быть определено, поддерживает ли текущий блок режим переключения коэффициента преобразования весов. Сторона кодирования может кодировать информацию управления переключением в битовый поток, так что сторона декодирования может проанализировать информацию управления переключением из битового потока, узнать, позволяет ли информация управления переключением разрешить режим переключения коэффициента преобразования весов текущему блоку, и затем определить, поддерживает ли текущий блок режим переключения коэффициента преобразования весов. Сторона кодирования также может не кодировать информацию управления переключением в битовый поток, а сторона декодирования может неявным образом получить информацию управления переключением, чтобы узнать, позволяет ли информация управления переключением разрешить режим переключения коэффициента преобразования весов текущему блоку, а затем определить, поддерживает ли текущий блок режим переключения коэффициента преобразования весов.
[260] Взяв в качестве примера информацию управления переключением уровня последовательности, информацией управления переключением уровня последовательности может быть awp_adptive_flag (бит адаптивного флага внешнего углового взвешенного предсказания). Если awp_adptive_flag является первым значением, это указывает на то, что информация управления переключением уровня последовательности позволяет текущей последовательности разрешать режим переключения коэффициента преобразования весов, тем самым позволяя текущему блоку разрешать режим переключения коэффициента преобразования весов. Если awp_adptive_flag является вторым значением, это указывает на то, что информация управления переключением уровня последовательности не позволяет текущей последовательности разрешать режим переключения коэффициента преобразования весов и, таким образом, не позволяет текущему блоку разрешать режим переключения коэффициента преобразования весов. Например, первое значение равно 1, а второе значение равно 0; или первое значение равно 0, а второе значение равно 1. Выше приведены только примеры первого значения и второго значения, которые здесь не ограничиваются. Для других типов информации управления переключением процесс реализации подобен процессу реализации информации управления переключением уровня последовательности и не будет здесь повторяться.
[261] В возможной реализации информация указания коэффициента преобразования весов текущего блока может быть флагом кодирования экранного контента (SCC, Screen Content Coding), соответствующим текущему блоку, первая информация указания используется для указания того, что кодирование экранного контента принято для текущего блока, и вторая информация указания используется для указания того, что кодирование неэкранного контента принято для текущего блока. На основе этого может быть получен флаг SCC, соответствующий текущему блоку, и коэффициент преобразования весов текущего блока может быть определен на основе флага SCC. Например, если флаг SCC используется для указания того, что кодирование экранного контента принято для текущего блока, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; если флаг SCC используется для указания того, что кодирование неэкранного контента принято для текущего блока, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[262] В примере абсолютное значение первого коэффициента преобразования весов может быть больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. В другом примере абсолютное значение первого коэффициента преобразования весов может быть равно 2, и абсолютное значение второго коэффициента преобразования весов может быть равно 1. В другом примере абсолютное значение первого коэффициента преобразования весов может быть равно 8, а абсолютное значение второго коэффициента преобразования весов может быть равно 1, 2 или 4. Для другого примера, абсолютное значение первого коэффициента преобразования весов может быть равно 8 или 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. Выше приведен только пример, который не является ограничением в данном описании, при условии, что абсолютное значение первого коэффициента преобразования весов больше, чем абсолютное значение второго коэффициента преобразования весов.
[263] Например, флаг SCC может включать, не ограничиваясь этим, флаг SCC уровня последовательности, флаг SCC уровня изображения, флаг SCC уровня слайса, флаг SCC уровня тайла, флаг SCC уровня патча, флаг SCC уровня CTU, флаг SCC уровня LCU, флаг SCC уровня блока, флаг SCC уровня CU, флаг SCC уровня PU и т.д., что здесь не ограничено. Например, флаг SCC уровня последовательности, соответствующий текущему блоку, может быть определен как флаг SCC, соответствующий текущему блоку, или флаг SCC уровня изображения, соответствующий текущему блоку, может быть определен как флаг SCC, соответствующий текущему блоку, и т.д., при условии, что может быть получен флаг SCC, соответствующий текущему блоку.
[264] В примере сторона кодирования может решить, принято ли для текущего блока кодирование экранного контента или кодирование неэкранного контента. Если для текущего блока принято кодирование экранного контента, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если для текущего блока принято кодирование неэкранного контента, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Альтернативно, сторона кодирования может получить флаг SCC, соответствующий текущему блоку. Если флаг SCC используется для указания того, что для текущего блока принято кодирование экранного контента, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг SCC используется для указания того, что для текущего блока принято кодирование неэкранного контента, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[265] Сторона кодирования может кодировать флаг SCC (например, флаг SCC уровня последовательности, флаг SCC уровня изображения, флаг SCC уровня слайса и т.д.) в битовый поток, чтобы сторона декодирования могла проанализировать флаг SCC из битового потока и определить флаг SCC как флаг SCC, соответствующий текущему блоку. Например, флаг SCC уровня последовательности, соответствующий текущему блоку, может быть определен как флаг SCC, соответствующий текущему блоку. Подводя итог, можно сказать, что сторона декодирования может получить флаг SCC, соответствующий текущему блоку. Если флаг SCC используется для указания того, что для текущего блока принято кодирование экранного контента, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг SCC используется для указания того, что для текущего блока используется кодирование неэкранного контента, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Например, если флаг SCC является первым значением, это указывает на то, что для текущего блока используется кодирование экранного контента; если флаг SCC является вторым значением, это указывает на то, что для текущего блока принято кодирование неэкранного контента. Первое значение может быть 1, а второе значение может быть 0; или первое значение может быть равно 0, а второе значение может быть равно 1. Выше приведены только примеры первого значения и второго значения, которые здесь не ограничиваются.
[266] Сторона кодирования также может неявным образом получить флаг SCC, используя информацию, согласующуюся с информацией стороны декодирования, вместо кодирования флага SCC в битовый поток. В этом случае сторона декодирования также может неявно вывести флаг SCC и определить флаг SCC как флаг SCC, соответствующий текущему блоку. Например, если последовательные изображения представляют кодирование экранного контента, определяют, что текущее изображение представляет кодирование экранного контента. Следовательно, сторона декодирования неявным образом выводит флаг SCC уровня изображения и определяет флаг SCC как флаг SCC, соответствующий текущему блоку, который используется для указания того, что для текущего блока принято кодирование экранного контента. Например, если последовательные изображения представляют кодирование неэкранного контента, определяют, что текущее изображение представляет кодирование неэкранного контента. Следовательно, сторона декодирования неявным образом выводит флаг SCC уровня изображения, который используется для указания того, что для текущего блока принято кодирование неэкранного контента. Например, если доля режима IBC меньше определенного процента, следующее изображение будет определено как кодирование неэкранного контента, в противном случае будет определено, что следующее изображение продолжает принимать кодирование экранного контента. Описанный выше способ является лишь примером неявного получения флага SCC, который здесь не ограничивается. Подводя итог, можно сказать, что сторона декодирования может получить флаг SCC, соответствующий текущему блоку. Если флаг SCC используется для указания того, что для текущего блока принято кодирование экранного контента, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг SCC используется для указания того, что для текущего блока принято кодирование неэкранного контента, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Например, если флаг SCC является первым значением, это указывает на то, что для текущего блока используется кодирование экранного контента; если флаг SCC является вторым значением, это указывает на то, что для текущего блока принято кодирование неэкранного контента.
[267] Подводя итог, можно сказать, что коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов или вторым коэффициентом преобразования весов, то есть коэффициент преобразования весов текущего блока может переключаться, и переключение коэффициента преобразования весов зависит от явного флага SCC или неявного флага SCC определенного уровня. Явный флаг SCC означает, что scc flag (флаг SCC) кодирован в битовый поток, так что сторона декодирования может проанализировать флаг SCC из битового потока. Неявный флаг SCC означает, что сторона декодирования может адаптивно получить флаг SCC в соответствии с доступной информацией.
[268] Флаг SCC определенного уровня включает: флаг SCC уровня последовательности, который представляет собой флаг SCC, указывающий текущую последовательность, причем флаг SCC уровня последовательности служит флагом SCC для всех блоков, принадлежащих текущей последовательности; флаг SCC уровня изображения, который является флагом SCC, указывающим текущее изображение, причем флаг SCC уровня изображения служит флагом SCC для всех блоков, принадлежащих текущему изображению; флаг SCC уровня слайса, который представляет собой флаг SCC, указывающий текущий слайс, причем флаг SCC уровня слайса служит флагом SCC для всех блоков, принадлежащих текущему слайсу; флаг SCC уровня тайла, который представляет собой флаг SCC, указывающий текущий тайл, причем флаг SCC уровня тайла служит флагом SCC для всех блоков, принадлежащих текущему тайлу; флаг SCC уровня патча, который представляет собой флаг SCC, указывающий текущий патч, причем флаг SCC уровня патча служит флагом SCC для всех блоков, принадлежащих текущему патчу; флаг SCC уровня CTU, который является флагом SCC, указывающим текущую CTU, причем флаг SCC уровня CTU служит флагом SCC для всех блоков, принадлежащих текущей CTU; флаг SCC уровня LCU, который является флагом SCC, указывающим текущую LCU, причем флаг SCC уровня LCU служит флагом SCC для всех блоков, принадлежащих текущей LCU; флаг SCC уровня блока, который является флагом SCC, указывающим текущий блок, причем флаг SCC уровня блока служит флагом SCC для всех подблоков, принадлежащих текущему блоку; флаг SCC уровня CU, который является флагом SCC, указывающим текущую CU, причем флаг SCC уровня CU служит в качестве флага SCC текущей CU; флаг SCC уровня PU, который является флагом SCC, указывающим текущую PU, причем флаг SCC уровня PU служит флагом SCC текущей PU.
[269] В примере второй коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию. Когда флаг SCC используется для указания того, что для текущего блока принято кодирование неэкранного контента, нет необходимости переключать коэффициент преобразования весов, то есть определяют, что коэффициент преобразования весов текущего блока равен второму коэффициенту преобразования весов. Когда флаг SCC используется для указания того, что для текущего блока принято кодирование экранного контента, необходимо переключить коэффициент преобразования весов, то есть определяют, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Альтернативно, можно использовать первый коэффициент преобразования весов в качестве коэффициента преобразования весов по умолчанию. Когда флаг SCC используется для указания того, что для текущего блока используется кодирование неэкранного контента, коэффициент преобразования весов необходимо переключить, то есть определяют, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Когда флаг SCC используется для указания того, что для текущего блока принято кодирование экранного контента, нет необходимости переключать коэффициент преобразования весов, то есть определяют, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов.
[270] Подводя итог, можно сказать, что когда кодирование экранного контента принято для текущего блока, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; когда для текущего блока применяется кодирование неэкранного контента, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов, и абсолютное значение первого коэффициента преобразования весов больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов равно 4, а абсолютное значение второго коэффициента преобразования веса равно 1, так что абсолютное значение коэффициента преобразования весов текущего блока, принадлежащего последовательности SCC, увеличивается, т.е. то есть коэффициент преобразования увеличивается.
[271] В другой возможной реализации информация указания коэффициента преобразования весов текущего блока может быть флагом уточнения коэффициента преобразования весов, соответствующим текущему блоку. Первая информация указания используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, а вторая информация указания используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить. На основе этого, может быть получен флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку, и коэффициент преобразования весов текущего блока может быть определен на основе флага уточнения коэффициента преобразования весов. Например, если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов; если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить, коэффициент преобразования весов текущего блока может быть вторым коэффициентом преобразования весов. Абсолютное значение первого коэффициента преобразования весов не равно абсолютному значению второго коэффициента преобразования весов.
[272] Например, абсолютное значение первого коэффициента преобразования весов может быть больше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 1 или 2. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 2, а абсолютное значение второго коэффициента преобразования весов может быть равно 1. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 8, а абсолютное значение второго коэффициента преобразования весов может быть равно 1, 2 или 4. В другом примере абсолютное значение первого коэффициента преобразования весов может быть меньше, чем абсолютное значение второго коэффициента преобразования весов. Например, абсолютное значение первого коэффициента преобразования весов может быть равно 1, а абсолютное значение второго коэффициента преобразования весов может быть равно 2, 4 или 8. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 2, а абсолютное значение второго коэффициента преобразования весов может быть равно 4 или 8. Альтернативно, абсолютное значение первого коэффициента преобразования весов может быть равно 4, а абсолютное значение второго коэффициента преобразования весов может быть равно 8. Выше приведены только примеры, которые здесь не являются ограничением, при условии, что абсолютное значение первого коэффициента преобразования весов не равно абсолютному значению второго коэффициента преобразования весов.
[273] Например, флаг уточнения коэффициента преобразования весов может включать, не ограничиваясь этим: флаг уточнения коэффициента преобразования весов уровня последовательности, флаг уточнения коэффициента преобразования весов уровня изображения, флаг уточнения коэффициента преобразования весов уровня слайса, флаг уточнения коэффициента преобразования весов уровня тайла, флаг уточнения коэффициента преобразования весов уровня патча, флаг уточнения коэффициента преобразования весов уровня CTU, флаг уточнения коэффициента преобразования весов уровня LCU, флаг уточнения коэффициента преобразования весов уровня блока, флаг уточнения коэффициента преобразования весов уровня CU, флаг уточнения коэффициента преобразования весов уровня PU и т.д., что здесь не ограничено.
[274] Например, флаг уточнения коэффициента преобразования весов уровня последовательности, соответствующий текущему блоку, может быть определен как флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку, или флаг уточнения коэффициента преобразования весов уровня изображения, соответствующий текущему блоку, может быть определен как флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку, и т.д., при условии, что может быть получен флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку.
[275] В примере первый коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию. Сторона кодирования может узнать, нужно ли переключать коэффициент преобразования весов текущего блока. Если нет необходимости переключать коэффициент преобразования весов текущего блока, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если коэффициент преобразования весов текущего блока необходимо переключить, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Альтернативно, сторона кодирования может получить флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку. Если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, сторона кодирования может определить, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить, сторона кодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[276] Например, сторона кодирования определяет значение 1 стоимости RDO, соответствующее первому коэффициенту преобразования весов, и значение 2 стоимости RDO, соответствующее второму коэффициенту преобразования весов. Если значение 1 стоимости RDO меньше, чем значение 2 стоимости RDO, определяют, что коэффициент преобразования весов текущего блока не нужно переключать. Если значение 2 стоимости RDO меньше, чем значение 1 стоимости RDO, определяют, что необходимо переключить коэффициент преобразования весов текущего блока.
[277] Сторона кодирования может кодировать флаг уточнения коэффициента преобразования весов (например, флаг уточнения коэффициента преобразования весов уровня последовательности и т.д.) в битовый поток, так что сторона декодирования может анализировать флаг уточнения коэффициента преобразования весов из битового потока и определять флаг уточнения коэффициента преобразования весов как флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку. Подводя итог, можно сказать, что сторона декодирования может получить флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку. Если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить, сторона декодирования определяет, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов. Например, если флаг уточнения коэффициента преобразования весов является первым значением, это указывает на то, что коэффициент преобразования весов текущего блока не нужно переключать. Если флаг уточнения коэффициента преобразования весов является вторым значением, это указывает на то, что коэффициент преобразования весов текущего блока необходимо переключить. Первое значение равно 1, а второе значение равно 0; или первое значение равно 0, а второе значение равно 1. Выше приведены только примеры первого значения и второго значения, которые не представляют собой ограничение в данном описании.
[278] Сторона кодирования также может не кодировать флаг уточнения коэффициента преобразования весов в битовый поток, а сторона декодирования может неявно вывести флаг уточнения коэффициента преобразования весов и определить флаг уточнения коэффициента преобразования весов как флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку. Например, если последовательным блокам необходимо переключить коэффициент преобразования весов, текущему блоку также необходимо переключить коэффициент преобразования весов. Сторона декодирования неявным образом выводит флаг уточнения коэффициента преобразования весов и определяет флаг уточнения коэффициента преобразования весов как флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку, который указывает на то, что коэффициент преобразования весов текущего блока необходимо переключить. Если последовательным блокам не нужно переключать коэффициент преобразования весов, текущему блоку также не нужно переключать коэффициент преобразования весов. Сторона декодирования неявным образом выводит флаг уточнения коэффициента преобразования весов, и флаг уточнения коэффициента преобразования весов указывает на то, что коэффициент преобразования весов текущего блока не нужно переключать. Описанный выше способ является только примером неявного получения флага уточнения коэффициента преобразования весов, который здесь не ограничивается. Подводя итог, можно сказать, что сторона декодирования может получить флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку. Если флаг уточнения коэффициента преобразования весов указывает на то, что коэффициент преобразования весов текущего блока не нужно переключать, определяют, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Если флаг уточнения коэффициента преобразования весов указывает на то, что коэффициент преобразования весов текущего блока необходимо переключить, определяют, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[279] Подводя итог, можно сказать, что коэффициент преобразования весов текущего блока может быть первым коэффициентом преобразования весов или вторым коэффициентом преобразования весов, то есть коэффициент преобразования весов текущего блока можно переключать, и переключение коэффициента преобразования весов зависит от флага уточнения коэффициента преобразования весов определенного уровня (refine_flag), который является явным флагом или неявным флагом. Явный флаг означает, что флаг refine_flag уточнения кодирован в битовый поток, так что сторона декодирования может проанализировать флаг refine_flag уточнения из битового потока. Неявный флаг означает, что сторона кодирования и сторона декодирования адаптивно получают флаг refine_flag уточнения на основе доступной информации.
[280] Например, флаг refine_flag уточнения определенного уровня включает: флаг refine_flag уточнения уровня последовательности, который представляет собой флаг refine_flag уточнения, указывающий текущую последовательность, причем флаг refine_flag уточнения уровня последовательности служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущей последовательности; флаг refine_flag уточнения уровня изображения, который является флагом refine_flag уточнения, указывающим текущее изображение, при этом флаг refine_flag уточнения уровня изображения служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущему изображению; флаг refine_flag уточнения уровня слайса, который является флагом refine_flag уточнения, указывающим текущий слайс, причем флаг refine_flag уточнения уровня слайса служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущему слайсу; флаг refine_flag уточнения уровня тайла, который является флагом refine_flag уточнения, указывающим текущий тайл, при этом флаг refine_flag уточнения уровня тайла служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущему тайлу; флаг refine_flag уточнения уровня патча, который является флагом refine_flag уточнения, указывающим текущий патч, причем флаг refine_flag уточнения уровня патча служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущему патчу; флаг refine_flag уточнения уровня CTU, который является флагом refine_flag уточнения, указывающим текущую CTU, при этом флаг refine_flag уточнения уровня CTU служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущей CTU; флаг refine_flag уточнения уровня LCU, который является флагом refine_flag уточнения, указывающим текущую LCU, при этом флаг refine_flag уточнения уровня LCU служит в качестве флага refine_flag уточнения всех блоков, принадлежащих текущей LCU; флаг refine_flag уточнения уровня блока, который является флагом refine_flag уточнения, указывающим текущий блок, причем флаг refine_flag уточнения уровня блока служит в качестве флага refine_flag уточнения текущего блока; флаг refine_flag уточнения уровня CU, который является флагом refine_flag уточнения, указывающим текущую CU, при этом флаг refine_flag уточнения уровня CU служит в качестве флага refine_flag уточнения текущей CU; флаг refine_flag уточнения уровня PU, который является флагом refine_flag уточнения, указывающим текущую PU, при этом флаг refine_flag уточнения уровня PU служит в качестве флага refine_flag уточнения текущей PU. Выше приведены только примеры, которые не являются ограничением настоящего изобретения.
[281] В примере первый коэффициент преобразования весов может использоваться как коэффициент преобразования весов по умолчанию. Когда флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, коэффициент преобразования весов не будет переключаться, то есть определяют, что коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов. Когда флаг уточнения коэффициента преобразования весов используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить, коэффициент преобразования весов будет переключаться, то есть определяют, что коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[282] Пример 10: в примерах с 1 по 4 сторона кодирования/сторона декодирования должны получить угол взвешенного предсказания и позицию взвешенного предсказания текущего блока. В примере 9 может быть получен коэффициент преобразования весов текущего блока, такой как первый коэффициент преобразования весов или второй коэффициент преобразования весов. На основе этого, угол взвешенного предсказания и позиция взвешенного предсказания текущего блока могут быть получены следующими способами.
[283] В первом способе сторона кодирования и сторона декодирования договариваются о том, чтобы принять один и тот же угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и договариваются о том, чтобы принять одну и ту же позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока. Например, сторона кодирования и сторона декодирования принимают угол А взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, а также сторона кодирования и сторона декодирования принимают позицию 4 взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.
[284] Во втором способе сторона кодирования устанавливает список углов взвешенного предсказания, который включает по меньшей мере один угол взвешенного предсказания, такой как угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона кодирования устанавливает список позиций взвешенного предсказания, который включает по меньшей мере одну позицию взвешенного предсказания, такую как позиции взвешенного предсказания от 0 до 6. Каждый угол взвешенного предсказания в списке углов взвешенного предсказания проходят по очереди и проходят каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания, то есть проходят комбинации каждого угла взвешенного предсказания и каждой позиции взвешенного предсказания. Каждую комбинацию принимают в качестве угла взвешенного предсказания и позиции взвешенного предсказания, полученных на этапе a1. На основе угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов получают значения взвешенного предсказания текущего блока.
[285] Например, когда сторона кодирования проходит угол А взвешенного предсказания и позицию 0 взвешенного предсказания, значения взвешенного предсказания текущего блока получают на основе угла А взвешенного предсказания и позиции 0 взвешенного предсказания; когда сторона кодирования проходит угол А взвешенного предсказания и позицию 1 взвешенного предсказания, значения взвешенного предсказания текущего блока получают на основе угла А взвешенного предсказания и позиции 1 взвешенного предсказания; когда сторона кодирования проходит угол В взвешенного предсказания и позицию 0 взвешенного предсказания, значения взвешенного предсказания текущего блока получают на основе угла В взвешенного предсказания и позиции 0 взвешенного предсказания и т.д. Сторона кодирования может получить значения взвешенного предсказания текущего блока на основе каждой комбинации угла взвешенного предсказания и позиции взвешенного предсказания.
[286] После получения значений взвешенного предсказания текущего блока на основе комбинации угла взвешенного предсказания и позиции взвешенного предсказания сторона кодирования может определить значение стоимости RDO на основе значений взвешенного предсказания текущего блока. Способ определения стоимости RDO здесь не ограничивается. Сторона кодирования может получить значение стоимости RDO для каждой комбинации и выбрать минимальное значение стоимости RDO из всех значений стоимости RDO.
[287] Затем сторона кодирования принимает комбинацию угла взвешенного предсказания и позиции взвешенного предсказания, соответствующую минимальному значению стоимости RDO, в качестве целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания. Наконец, значение индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания и значение индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания кодируют в битовый поток.
[288] Сторона декодирования устанавливает список углов взвешенного предсказания, который совпадает со списком углов взвешенного предсказания на стороне кодирования. Список углов взвешенного предсказания включает по меньшей мере один угол взвешенного предсказания. Сторона декодирования устанавливает список позиций взвешенного предсказания, который совпадает со списком позиций взвешенного предсказания на стороне кодирования. Список позиций взвешенного предсказания включает по меньшей мере одну позицию взвешенного предсказания. После приема кодированного битового потока текущего блока сторона декодирования анализирует информацию указания из кодированного битового потока, выбирает угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока на основе информации указания и выбирает позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока на основе информации указания.
[289] Сценарий 1 применения: когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может включать информацию 1 указания, которая используется для указания угла взвешенного предсказания (т.е. целевого угла взвешенного предсказания) текущего блока и позиции взвешенного предсказания (т.е. целевой позиции взвешенного предсказания) текущего блока. Например, когда информация 1 указания равна 0, она используется для указания первого угла взвешенного предсказания в списке углов взвешенного предсказания и первой позиции взвешенного предсказания в списке позиций взвешенного предсказания. Когда информация 1 указания равна 1, она используется для указания первого угла взвешенного предсказания в списке углов взвешенного предсказания и второй позиции взвешенного предсказания в списке позиций взвешенного предсказания и т.д. Значение 1 информации указания используется для указания угла взвешенного предсказания и позиции взвешенного предсказания, при условии, что сторона кодирования и сторона декодирования согласованы, что не ограничивается в этом примере.
[290] После приема кодированного битового потока сторона декодирования анализирует информацию 1 указания из кодированного битового потока. На основе информации 1 указания сторона декодирования может выбрать угол взвешенного предсказания, соответствующий информации 1 указания, из списка углов взвешенного предсказания, и угол взвешенного предсказания используется в качестве угла взвешенного предсказания текущего блока. На основе информации 1 указания сторона декодирования может выбрать позицию взвешенного предсказания, соответствующую информации 1 указания, из списка позиций взвешенного предсказания, и позиция взвешенного предсказания используется в качестве позиции взвешенного предсказания текущего блока.
[291] Сценарий 2 применения: когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может включать информацию 2 указания и информацию 3 указания. Для указания целевого угла взвешенного предсказания текущего блока используется информация 2 указания, например, значение 1 индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, при этом значение 1 индекса указывает номер целевого угла взвешенного предсказания в списке углов взвешенного предсказания. Для указания целевой позиции взвешенного предсказания текущего блока используется информация 3 указания, например, значение 2 индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, при этом значение 2 индекса указывает номер целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания. После приема кодированного битового потока сторона декодирования анализирует информацию 2 указания и информацию 3 указания из кодированного битового потока. На основе информации 2 указания сторона декодирования выбирает угол взвешенного предсказания, соответствующий значению 1 индекса, из списка углов взвешенного предсказания, и угол взвешенного предсказания используется в качестве угла взвешенного предсказания текущего блока. На основе информации 3 указания сторона декодирования выбирает позицию взвешенного предсказания, соответствующую значению 2 индекса, из списка позиций взвешенного предсказания, и позиция взвешенного предсказания используется в качестве позиции взвешенного предсказания текущего блока.
[292] Сценарий 3 применения: сторона кодирования и сторона декодирования могут согласовать одну или более предпочтительных комбинаций конфигурации, которые не имеют ограничений и могут быть сконфигурированы на основе фактического опыта. Например, сторона кодирования и сторона декодирования согласовывают предпочтительную комбинацию 1 конфигурации, которая включает угол А взвешенного предсказания и позицию 4 взвешенного предсказания, и предпочтительную комбинацию 2 конфигурации, которая включает угол В взвешенного предсказания и позицию 4 взвешенного предсказания.
[293] После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодирования определяет, являются ли целевой угол взвешенного предсказания и целевая позиция взвешенного предсказания предпочтительной комбинацией конфигурации. Если да, то, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может включать информацию 4 указания и информацию 5 указания. Информация 4 указания используется для указания того, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является первым значением (например, 0), это указывает на то, что предпочтительная комбинация конфигурации принята для текущего блока. Информация 5 указания используется для указания того, какая предпочтительная комбинация конфигурации принята для текущего блока. Например, когда информация 5 указания равна 0, она используется для указания на то, что для текущего блока принята предпочтительная комбинация 1 конфигурации; когда информация 5 указания равна 1, она используется для указания на то, что для текущего блока принята предпочтительная комбинация 2 конфигурации.
[294] После приема кодированного битового потока сторона декодирования анализирует информацию 4 указания и информацию 5 указания из кодированного битового потока. На основе информации 4 указания сторона декодирования определяет, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является первым значением, сторона декодирования определяет, что для текущего блока принята предпочтительная комбинация конфигурации. Когда для текущего блока принята предпочтительная комбинация конфигурации, сторона декодирования определяет, какая предпочтительная комбинация конфигурации принята для текущего блока, на основе информации 5 указания. Например, когда информация 5 указания равна 0, сторона декодирования определяет, что для текущего блока принята предпочтительная комбинация 1 конфигурации, то есть угол взвешенного предсказания текущего блока является углом А взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией 4 взвешенного предсказания. В другом примере, когда информация 5 указания равна 1, сторона декодирования определяет, что для текущего блока принята предпочтительная комбинация 2 конфигурации, то есть угол взвешенного предсказания текущего блока является углом В взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией 4 взвешенного предсказания.
[295] В примере, если сторона кодирования и сторона декодирования согласуют только одну предпочтительную комбинацию конфигурации, такую как предпочтительная комбинация конфигурации, включающая угол А взвешенного предсказания и позицию 4 взвешенного предсказания, кодированный битовый поток может включать информацию 4 указания, но не информацию 5 указания, при этом информация 4 указания используется для указания того, принята ли предпочтительная комбинация конфигурации для текущего блока. После анализа информации 4 указания из кодированного битового потока, если информация 4 указания является первым значением, сторона декодирования определяет, что предпочтительная комбинация конфигурации принята для текущего блока. На основе предпочтительной комбинации конфигурации сторона декодирования определяет, что угол взвешенного предсказания текущего блока является углом А взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией 4 взвешенного предсказания.
[296] Сценарий 4 применения: сторона кодирования и сторона декодирования могут согласовать одну или более предпочтительных комбинаций конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодирования определяет, являются ли целевой угол взвешенного предсказания и целевая позиция взвешенного предсказания предпочтительной комбинацией конфигурации. Если нет, то, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток включает информацию 4 указания и информацию 6 указания. Информация 4 указания используется для указания того, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением (например, 1), это указывает на то, что предпочтительная комбинация конфигурации не принята для текущего блока. Информация 6 указания используется для указания целевого угла взвешенного предсказания текущего блока и целевой позиции взвешенного предсказания текущего блока. Например, когда информация 6 указания равна 0, она используется для указания первого угла взвешенного предсказания в списке углов взвешенного предсказания и для указания первой позиции взвешенного предсказания в списке позиций взвешенного предсказания и т.д.
[297] После приема кодированного битового потока сторона декодирования анализирует информацию 4 указания и информацию 6 указания из кодированного битового потока. На основе информации 4 указания сторона декодирования определяет, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодирования определяет, что предпочтительная комбинация конфигурации не принята для текущего блока. Когда предпочтительная комбинация конфигурации не принята для текущего блока, сторона декодирования может выбрать угол взвешенного предсказания, соответствующий информации 6 указания, из списка углов взвешенного предсказания на основе информации 6 указания, и угол взвешенного предсказания используется в качестве угла взвешенного предсказания текущего блока. На основе информации 6 указания сторона декодирования может выбрать позицию взвешенного предсказания, соответствующую информации 6 указания, из списка позиций взвешенного предсказания, и позиция взвешенного предсказания используется в качестве позиции взвешенного предсказания текущего блока.
[298] Сценарий 5 применения: сторона кодирования и сторона декодирования могут согласовать одну или более предпочтительных комбинаций конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодирования определяет, являются ли целевой угол взвешенного предсказания и целевая позиция взвешенного предсказания предпочтительной комбинацией конфигурации. Если нет, то, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток включает информацию 4 указания, информацию 7 указания и информацию 8 указания. В примере информация 4 указания используется для указания того, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, это указывает на то, что предпочтительная комбинация конфигурации не принята для текущего блока. Для указания целевого угла взвешенного предсказания текущего блока используется информация 7 указания, например, значение 1 индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, при этом значение 1 индекса указывает номер целевого угла взвешенного предсказания в списке углов взвешенного предсказания. Для указания целевой позиции взвешенного предсказания текущего блока используется информация 8 указания, например, значение 2 индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, при этом значение 2 индекса указывает номер целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания.
[299] После приема кодированного битового потока сторона декодирования анализирует информацию 4 указания, информацию 7 указания и информацию 8 указания из кодированного битового потока. На основе информации 4 указания сторона декодирования определяет, принята ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодирования определяет, что предпочтительная комбинация конфигурации не принята для текущего блока. Когда предпочтительная комбинация конфигурации не принята для текущего блока, сторона декодирования выбирает угол взвешенного предсказания, соответствующий значению 1 индекса, из списка углов взвешенного предсказания на основе информации 7 указания, и угол взвешенного предсказания принимается в качестве угла взвешенного предсказания текущего блока. Сторона декодирования выбирает позицию взвешенного предсказания, соответствующую значению 2 индекса, из списка позиций взвешенного предсказания на основе информации 8 указания, и позиция взвешенного предсказания используется в качестве позиции взвешенного предсказания текущего блока.
[300] Пример 11: в примерах с 1 по 4 сторона кодирования/сторона декодирования должны получить коэффициент преобразования весов текущего блока. Если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока получают следующим образом: получают информацию указания коэффициента преобразования весов текущего блока; выбирают коэффициент преобразования весов, соответствующий информации указания коэффициента преобразования весов, из заранее заданной таблицы поиска, которая включает по меньшей мере два коэффициента преобразования весов. Выбранный коэффициент преобразования весов определяют как коэффициент преобразования весов текущего блока.
[301] Поскольку заранее заданная таблица поиска включает по меньшей мере два коэффициента преобразования весов, если текущий блок поддерживает режим переключения коэффициента преобразования весов, коэффициент преобразования весов текущего блока может быть выбран из по меньшей мере двух коэффициентов преобразования весов, то есть коэффициент преобразования весов текущего блока является переменным, так что коэффициент преобразования весов может переключаться адаптивно вместо принятия единого коэффициента преобразования весов.
[302] Например, если информация управления переключением позволяет текущему блоку разрешать режим переключения коэффициента преобразования весов, текущий блок поддерживает режим переключения коэффициента преобразования весов. Если информация управления переключением не позволяет текущему блоку разрешать режим переключения коэффициента преобразования весов, текущий блок не поддерживает режим переключения коэффициента преобразования весов. Описание того, поддерживает ли текущий блок режим переключения коэффициента преобразования весов, представлено в примере 9.
[303] В возможной реализации заранее заданная таблица поиска может включать по меньшей мере два коэффициента преобразования весов, а информация указания коэффициента преобразования весов может включать информацию индекса коэффициента преобразования весов (используемую для указания конкретного коэффициента преобразования весов среди всех коэффициентов преобразования весов в таблице поиска). На основе этого коэффициент преобразования весов, соответствующий информации об индексе коэффициента преобразования весов, может быть выбран из таблицы поиска.
[304] Для стороны кодирования, если имеется только одна таблица поиска, сторона кодирования может определить значение стоимости RDO, соответствующее коэффициенту преобразования весов, для каждого коэффициента преобразования весов в таблице поиска, принять коэффициент преобразования весов, соответствующий минимальному значению стоимости RDO в качестве целевого коэффициента преобразования весов текущего блока и определить информацию индекса целевого коэффициента преобразования весов в таблице поиска, то есть информацию индекса коэффициента преобразования весов, которая указывает коэффициент преобразования весов в таблице поиска.
[305] Для стороны декодирования, если имеется только одна таблица поиска, когда сторона кодирования передает кодированный битовый поток текущего блока на сторону декодирования, кодированный битовый поток может нести информацию индекса коэффициента преобразования весов, которая используется для указания информации индекса целевого коэффициента преобразования весов в таблице поиска. Сторона декодирования выбирает коэффициент преобразования весов, соответствующий информации индекса коэффициента преобразования весов, из таблицы поиска, и коэффициент преобразования весов используется в качестве целевого коэффициента преобразования весов текущего блока.
[306] Пример 12: в примерах 1-4 сторона кодирования/сторона декодирования должны получить угол взвешенного предсказания, позицию взвешенного предсказания и коэффициент преобразования весов текущего блока. В примере 11 может быть получен коэффициент преобразования весов текущего блока. На основе этого, угол взвешенного предсказания и позиция взвешенного предсказания текущего блока могут быть получены следующими способами.
[307] Во-первых, сторона кодирования и сторона декодирования договариваются о том, что один и тот же угол взвешенного предсказания используется в качестве угла взвешенного предсказания текущего блока, и договариваются о том, что одна и та же позиция взвешенного предсказания используется в качестве позиции взвешенного предсказания текущего блока. Например, сторона кодирования и сторона декодирования принимают угол А взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, а также сторона кодирования и сторона декодирования принимают позицию 4 взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.
[308] Во втором способе сторона кодирования устанавливает список углов взвешенного предсказания, который включает по меньшей мере один угол взвешенного предсказания. Сторона кодирования устанавливает список позиций взвешенного предсказания, который включает по меньшей мере одну позицию взвешенного предсказания. Сторона кодирования устанавливает по меньшей мере две таблицы поиска. Взяв в качестве примера первую таблицу поиска и вторую таблицу поиска, первая таблица поиска включает по меньшей мере один коэффициент преобразования весов, и вторая таблица поиска включает по меньшей мере один коэффициент преобразования весов. Целевая таблица поиска определяется стороной кодирования, и способ определения описан в примере 11. Целевая таблица поиска, являющаяся первой таблицей поиска, представлена здесь в качестве примера. Сторона кодирования последовательно проходит каждый угол взвешенного предсказания в списке углов взвешенного предсказания, проходит каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания и проходит каждый коэффициент взвешенного предсказания в целевой таблице поиска, то есть проходит комбинации каждого угла взвешенного предсказания, каждой позиции взвешенного предсказания и каждого коэффициента преобразования весов. Каждая комбинация угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов может быть принята как угол взвешенного предсказания, позиция взвешенного предсказания и коэффициент преобразования весов, полученные на этапе a1. На основе угла взвешенного предсказания, позиции взвешенного предсказания и коэффициента преобразования весов получают значения взвешенного предсказания текущего блока.
[309] Подводя итог, можно сказать, что сторона кодирования может получить значения взвешенного предсказания текущего блока на основе каждой комбинации. После получения значений взвешенного предсказания текущего блока сторона кодирования может определить значение стоимости RDO на основе значений взвешенного предсказания текущего блока, то есть сторона кодирования может получить значение стоимости RDO для каждой комбинации и выбрать минимальное значение стоимости RDO из всех значений стоимости RDO.
[310] Затем сторона кодирования принимает угол взвешенного предсказания, позицию взвешенного предсказания и коэффициент преобразования весов, соответствующие минимальному значению стоимости RDO, в качестве целевого угла взвешенного предсказания, целевой позиции взвешенного предсказания и целевого коэффициента преобразования весов соответственно. Наконец, сторона кодирования использует значение индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, и значение индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, а также значение индекса целевого коэффициента преобразования весов в целевой таблице поиска кодируют в битовый поток текущего блока.
[311] Сторона декодирования устанавливает список углов взвешенного предсказания, который совпадает со списком углов взвешенного предсказания на стороне кодирования. Сторона декодирования устанавливает список позиций взвешенного предсказания, который совпадает со списком позиций взвешенного предсказания на стороне кодирования. Сторона декодирования устанавливает первую таблицу поиска, которая совпадает с первой таблицей поиска на стороне кодирования, и вторую таблицу поиска, которая совпадает со второй таблицей поиска на стороне кодирования. После приема кодированного битового потока текущего блока сторона декодирования анализирует информацию указания из кодированного битового потока, выбирает угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока на основе информации указания и выбирает позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока. Способ получения угла взвешенного предсказания и позиции взвешенного предсказания на основе информации указания см. в примере 10, который здесь повторяться не будет. После приема кодированного битового потока текущего блока сторона декодирования может определить целевую таблицу поиска (такую как первая таблица поиска или вторая таблица поиска) и на основе информации индекса коэффициента преобразования весов, сторона декодирования может выбрать коэффициент преобразования весов из целевой таблицы поиска в качестве коэффициента преобразования весов текущего блока. Способ получения коэффициента преобразования весов описан в примере 11, который здесь повторяться не будет.
[312] Пример 13: в примерах с 1 по 3 сторона кодирования/сторона декодирования должны получить список кандидатов информации о движении, например, список кандидатов информации о движении можно получить следующим образом: получают по меньшей мере одну часть доступной информации о движении, которую следует добавить в список кандидатов информации о движении; и список кандидатов информации о движении получают на основе по меньшей мере одной части доступной информации о движении. В примере по меньшей мере одна часть доступной информации о движении включает, не ограничиваясь этим, по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; информация о движении предсказания вектора движения на основе предыстории (HMVP, History-based Motion Vector Prediction); заранее заданная информация о движении.
[313] Например, для пространственной информации о движении по меньшей мере одна часть доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, может быть получена следующим образом: для пространственного соседнего блока текущего блока, если пространственный соседний блок имеется и для пространственного соседнего блока принят режим внешнего предсказания, информацию о движении пространственного соседнего блока определяют как доступную информацию о движении.
[314] Например, для временной информации о движении, по меньшей мере одна часть доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, может быть получена следующим образом: на основе заранее заданной позиции текущего блока (например, позиции пикселя в верхнем левом углу текущего блока), временной соседний блок, соответствующий заранее заданной позиции, выбирают из опорного изображения текущего блока, и информацию о движении временного соседнего блока определяют как доступную информацию о движении.
[315] Например, для заранее заданной информации о движении по меньшей мере одна часть доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, может быть получена следующим образом: заранее заданную информацию о движении определяют как доступную информацию о движении, и заранее заданная информация о движении может включать, но не ограничивается этим, информацию о движении по умолчанию, полученную на основе информации о возможном движении, существующей в списке кандидатов информации о движении.
[316] В возможной реализации, на основе по меньшей мере одной части доступной информации о движении, список кандидатов информации о движении может быть получен следующим образом: для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов информации о движении, если доступная информация о движении представляет собой информацию об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, информацию об однонаправленном движении добавляют в список кандидатов информации о движении; если доступная информация о движении представляет собой информацию о двунаправленном движении, информацию о двунаправленном движении разделяют на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении; если первая информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, первую информацию об однонаправленном движении добавляют в список кандидатов информации о движении.
[317] В приведенном выше примере первая информация об однонаправленном движении может быть информацией об однонаправленном движении, указывающей на опорное изображение в первом списке опорных изображений; вторая информация об однонаправленном движении может быть информацией об однонаправленном движении, указывающей на опорное изображение во втором списке опорных изображений.
[318] В возможной реализации список 0 опорных изображений может быть списком прямых опорных изображений, а список 1 опорных изображений может быть списком обратных опорных изображений.
[319] В приведенных выше примерах операция проверки на дублирование для информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении, может включать, не ограничиваясь этим: если индекс порядка отображения (также называемый счетчиком порядка изображения, (РОС, Picture Order Count)) опорного изображения, указанного информацией об однонаправленном движении, совпадает с РОС опорного изображения, указанного информацией о возможном движении, а вектор движения информации об однонаправленном движении совпадает с вектором движения информации о возможном движении, определяют, что информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что информация об однонаправленном движении не дублируется информацией о возможном движении.
[320] Операция проверки на дублирование для первой информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении, может включать, не ограничиваясь этим: если список опорных изображений, указанный первой информацией об однонаправленном движении, такой же, как список опорных изображений, указанный информацией о возможном движении, refIdx первой информации об однонаправленном движении совпадает с refIdx информации о возможном движении, и вектор движения первой информации об однонаправленном движении совпадает с вектором движения информации о возможном движении, определяют, что первая информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что первая информация об однонаправленном движении не дублируется информацией о возможном движении. Альтернативно, если РОС опорного изображения, указанного первой информацией об однонаправленном движении, совпадает с РОС опорного изображения, указанного информацией о возможном движении, и вектор движения первой информации об однонаправленном движении совпадает с вектором движения информации о возможном движении, определяют, что первая информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что первая информация об однонаправленном движении не дублируется информацией о возможном движении.
[321] Операция проверки на дублирование для второй информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении, может включать, не ограничиваясь этим: если список опорных изображений, указанный второй информацией об однонаправленном движении, совпадает со списком опорных изображений, указанным информацией о возможном движении, refIdx второй информации об однонаправленном движении такой же, как refIdx информации о возможном движении, и вектор движения второй информации об однонаправленном движении такой же, как вектор движения информации о возможном движении, определяют, что вторая информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что вторая информация об однонаправленном движении не дублируется информацией о возможном движении. Альтернативно, если РОС опорного изображения, указанного второй информацией об однонаправленном движении, совпадает с РОС опорного изображения, указанного информацией о возможном движении, и вектор движения второй информации об однонаправленном движении такой же, как вектор движения информации о возможном движении, определяют, что вторая информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что вторая информация об однонаправленном движении не дублируется информацией о возможном движении.
[322] В примере в описанном выше процессе нужно сравнить, является ли РОС опорного изображения, указанного информацией об однонаправленном движении, таким же, что и РОС опорного изображения, указанного информацией о возможном движении. Следует отметить, что РОС опорного изображения является только примером определения того, являются ли опорные изображения одинаковыми. В дополнение к РОС могут быть приняты другие атрибуты, которые могут определять, являются ли опорные изображения одинаковыми, например счетчик порядка декодирования (DOC, Decoding Order Count) опорного изображения, что не ограничено здесь. Таким образом, может также осуществляться сравнение, является ли DOC опорного изображения, указанного информацией об однонаправленном движении, таким же, что и DOC опорного изображения, указанного информацией о возможном движении, и принцип реализации аналогичен случаю использования РОС.
[323] Пример 14: для примера 13, список кандидатов информации о движении может быть получен с использованием пространственной информации о движении (информация о движении одного или более пространственных соседних блоков текущего блока упоминается здесь как пространственная информация о движении) и/или временной информации о движении (информация о движении одного или более временных соседних блоков текущего блока упоминается здесь как временная информация о движении). Следовательно, сначала необходимо выбрать доступную информацию о движении из пространственной информации о движении и/или временной информации о движении. На фиг. 9А показана схематическая диаграмма пространственных соседних блоков текущего блока. Пространственная информация о движении может быть информацией о движении пространственных соседних блоков, таких как F, G, С, А, В, D, и временная информация о движении может быть информацией о движении по меньшей мере одного временного соседнего блока.
[324] Для пространственной информации о движении доступная информация о движении, которая должна быть добавлена в список кандидатов информации о движении, может быть получена следующим образом.
[325] В способе 11, как показано на фиг. 9А, F, G, С, А, В, D являются пространственными соседними блоками текущего блока Е. Может быть определена «доступность» информации о движении F, G, С, А, В, D. Например, если существует F и принят режим внешнего предсказания, то информация о движении F является доступной информацией о движении; в противном случае информация о движении F является недоступной информацией о движении. Если существует G и принят режим внешнего предсказания, то информация о движении G является доступной информацией о движении; в противном случае информация о движении G является недоступной информацией о движении. Если существует С и принят режим внешнего предсказания, то информация о движении С является доступной информацией о движении; в противном случае информация о движении С является недоступной информацией о движении. Если существует А и принят режим внешнего предсказания, то информация о движении А является доступной информацией о движении; в противном случае информация о движении А является недоступной информацией о движении. Если существует В и принят режим внешнего предсказания, то информация о движении В является доступной информацией о движении; в противном случае информация о движении В является недоступной информацией о движении. Если существует D и принят режим внешнего предсказания, то информация о движении D является доступной информацией о движении; в противном случае информация о движении D является недоступной информацией о движении.
[326] В способе 12 F, G, С, А, В, D являются пространственными соседними блоками текущего блока Е. Может быть определена «доступность» информации о движении F, G, С, А, В, D. Если существует F и принят режим внешнего предсказания, то информация о движении F является доступной информацией о движении; в противном случае информация о движении F является недоступной информацией о движении. Если существует G и принят режим внешнего предсказания, а информация о движении G отличается от информации о движении F, то информация о движении G является доступной; в противном случае информация о движении G является недоступной информацией о движении. Если существует С и принят режим внешнего предсказания, а информация о движении С отличается от информации о движении G, то информация о движении С является доступной информацией о движении; в противном случае информация о движении С является недоступной информацией о движении. Если существует А и используется режим внешнего предсказания, а информация о движении А отличается от информации о движении F, то информация о движении А является доступной информацией о движении; в противном случае информация о движении А является недоступной информацией о движении. Если существует В и принят режим внешнего предсказания, информация о движении В отличается от информации G, тогда информация о движении В является доступной информацией о движении; в противном случае информация о движении В является недоступной информацией о движении. Если существует D и принят режим внешнего предсказания, информация о движении D отличается от информации о движении А, а информация о движении D отличается от информации G, тогда информация о движении D является доступной информацией о движении; в противном случае информация о движении D является недоступной информацией о движении.
[327] В способе 13 F, G, С, А, В, D являются пространственными соседними блоками текущего блока Е. Может быть определена «доступность» информации о движении F, G, С, А, В, D. Например, если существует F и принят режим внешнего предсказания, то информация о движении F является доступной информацией о движении; в противном случае информация о движении F является недоступной информацией о движении. Если существует G и принят режим внешнего предсказания, а информация о движении G отличается от информации F, то информация о движении G является доступной информацией о движении; в противном случае информация о движении G является недоступной информацией о движении. Если существует С и принят режим внешнего предсказания, а информация о движении С отличается от информации о движении G, то информация о движении С является доступной информацией о движении; в противном случае информация о движении С является недоступной информацией о движении. Если существует А и используется режим внешнего предсказания, а информация о движении А отличается от информации о движении F, то информация о движении А является доступной информацией о движении; в противном случае информация о движении А является недоступной информацией о движении. Если существует В и принят режим внешнего предсказания, то информация о движении В является доступной информацией о движении; в противном случае информация о движении В является недоступной информацией о движении. Если существует D и принят режим внешнего предсказания, информация о движении D отличается от информации о движении А, а информация о движении D отличается от информации о движении G, тогда информация о движении D является доступной информацией о движении; в противном случае информация о движении D является недоступной информацией о движении.
[328] В примере, в способах 12 и 13, при определении того, является ли информация о движении пространственного соседнего блока доступной информацией о движении, может потребоваться сравнить, является ли информация о движении двух пространственных соседних блоков (например, пространственного соседнего блока и другого пространственного соседнего блока) одинаковой. Например, необходимо сравнить, является ли информация о движении G такой же, как и информация о движении F. Процесс сравнения того, является ли информация о движении одинаковой, фактически является операцией проверки на дублирование информации о движении. Если результат проверки на дублирование показывает дублирование, результат сравнения информации о движении покажет, что информация одинакова. Если результат проверки на дублирование не показывает дублирование, результат сравнения информации о движении покажет, что информация различна. Операция проверки на дублирование информации о движении описана в последующих примерах и не будет повторяться здесь.
[329] Для временной информации о движении доступная информация о движении, которая должна быть добавлена в список кандидатов информации о движении, может быть получена следующими способами.
[330] В способе 21 на основе заранее заданной позиции текущего блока из опорного изображения текущего блока выбирают временной соседний блок, соответствующий заранее заданной позиции, и информацию о движении временного соседнего блока определяют как доступную информацию о движении. Например, если текущее изображение (слайс), в котором расположен текущий блок, является В-изображением (слайсом), информация об однонаправленном движении или информация о двунаправленном движении выводится на основе совмещенного блока совмещенного опорного изображения, и информация об однонаправленном движении или информация о двунаправленном движении используется в качестве доступной информации о движении. Если текущее изображение (слайс) представляет собой Р-изображение (слайс), информация об однонаправленном движении выводится на основе совмещенного блока совмещенного опорного изображения, и информация об однонаправленном движении используется как доступная информация о движении.
[331] В примере совмещенный блок является временным соседним блоком, соответствующим заранее заданной позиции текущего блока в совмещенном опорном изображении. Заранее заданная позиция текущего блока может быть установлена на основе опыта и здесь не ограничена, например, позиция пикселя в верхнем левом углу текущего блока, позиция пикселя в верхнем правом углу текущего блока, позиция пикселя в левом нижнем углу текущего блока, позиция пикселя в правом нижнем углу текущего блока и позиция пикселя в центре текущего блока. Совмещенное опорное изображение может быть заранее заданным опорным изображением, например, первое опорное изображение в списке List0 опорных изображений текущего блока принимают в качестве совмещенного опорного изображения. Совмещенное опорное изображение также может быть производным опорным изображением, например, опорное изображение, ближайшее к текущему изображению в списке List0 опорных изображений текущего блока, принимают в качестве совмещенного опорного изображения. Совмещенное опорное изображение также может быть опорным изображением, проанализированным из битового потока. Например, для стороны декодирования информация о совмещенном опорном изображении может быть проанализирована из битового потока, и может быть определено совмещенное опорное изображение.
[332] Если текущее изображение (слайс), в котором расположен текущий блок, является В-изображением (слайсом), информация об однонаправленном движении или информация о двунаправленном движении выводится на основе информации о движении совмещенного блока. Если текущее изображение (слайс) представляет собой Р-изображение (слайс), информация об однонаправленном движении выводится на основе информации о движении совмещенного блока.
[333] В способе 22 определяют целевую позицию текущего блока на основе угла взвешенного предсказания и позиции взвешенного предсказания текущего блока; выбирают временной соседний блок, соответствующий целевой позиции, из опорного изображения текущего блока и определяют информацию о движении временного соседнего блока в качестве доступной информации о движении. В примере, на основе угла взвешенного предсказания и позиции взвешенного предсказания текущего блока может быть определена целевая позиция текущего блока. Например, на основе значения индекса угла взвешенного предсказания и позиции взвешенного предсказания текущего блока может быть определена целевая позиция текущего блока. Затем совмещенный блок совмещенного опорного изображения может быть определен на основе целевой позиции текущего блока. Если текущее изображение (слайс), в котором расположен текущий блок, является В-изображением (слайсом), информация об однонаправленном движении или информация о двунаправленном движении выводится на основе совмещенного блока совмещенного опорного изображения, и информация об однонаправленном движении или информация о двунаправленном движении используется в качестве доступной информации о движении. Если текущее изображение (слайс) представляет собой Р-изображение (слайс), информация об однонаправленном движении выводится на основе совмещенного блока совмещенного опорного изображения, и информация об однонаправленном движении используется в качестве доступной информации о движении.
[334] Совмещенный блок является временным соседним блоком, соответствующим целевой позиции текущего блока в совмещенном опорном изображении. Целевая позиция может быть позицией пикселя в верхнем левом углу текущего блока, позицией пикселя в правом верхнем углу текущего блока, позицией пикселя в левом нижнем углу текущего блока, позицией пикселя в нижнем левом углу текущего блока, позицией пикселя в нижнем правом углу текущего блока и т.д.
[335] Например, на основе угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока можно получить весовую матрицу текущего блока. Как показано на фиг. 9В, весовая часть в верхней правой части (черная часть) составляет относительно небольшую долю, поэтому корреляция между пространственной информацией о движении и черной частью, скорее всего, будет ниже, чем для другой части (белой части). При таком допущении позиция временной информации о движении в списке кандидатов должна быть скорректирована для весовой части в верхней правой части для предоставления более подходящей информации о возможном движении. На основе этого, совмещенный блок может быть временным соседним блоком, соответствующим позиции пикселя в верхнем правом углу текущего блока (то есть весовая часть составляет относительно небольшую долю), то есть целевая позиция текущего блока является позицией пикселя в правом верхнем углу текущего блока.
[336] Аналогично, как показано на фиг. 9С, на основе угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока можно определить, что целевая позиция текущего блока является позицией пикселя в нижнем правом углу текущего блока. Как показано на фиг. 9D, на основе угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока можно определить, что целевая позиция текущего блока является позицией пикселя в нижнем левом углу текущего блока.
[337] После получения доступной информации о движении для каждой части доступной информации о движении (такой как пространственная информация о движении, временная информация о движении и т.д.) доступная информация о движении может быть добавлена в список кандидатов информации о движении с помощью одного из следующих способов или их комбинации.
[338] В способе 31 проверку на дублирование не выполняют. Например, если доступная информация о движении является информацией об однонаправленном движении, информацию об однонаправленном движении добавляют в список кандидатов информации о движении. Если доступная информация о движении представляет собой информацию о двунаправленном движении, информацию о двунаправленном движении разделяют на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении и добавляют некоторую информацию об однонаправленном движении после разделения в список кандидатов информации о движении. Например, первая информация об однонаправленном движении может быть добавлена в список кандидатов информации о движении.
[339] В способе 32 выполняют половинную проверку на дублирование, то есть другую половину информации о двунаправленном движении не проверяют. Например, если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, информацию об однонаправленном движении добавляют в список кандидатов информации о движении. Если доступная информация о движении представляет собой информацию о двунаправленном движении, информацию о двунаправленном движении разделяют на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении и добавляют некоторую информацию об однонаправленном движении в список кандидатов информации о движении. Например, если первая информация об однонаправленном движении в информации о двунаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, первую информацию об однонаправленном движении добавляют в список кандидатов информации о движении.
[340] В способе 33 выполняют полную проверку на дублирование. Например, если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, информацию об однонаправленном движении добавляют в список кандидатов информации о движении. Если доступная информация о движении представляет собой информацию о двунаправленном движении, информацию о двунаправленном движении разделяют на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении и добавляют некоторую информацию об однонаправленном движении в список кандидатов информации о движении. Например, если первая информация об однонаправленном движении в информации о двунаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, первую информацию об однонаправленном движении добавляют в список кандидатов информации о движении; если первая информация об однонаправленном движении дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, и вторая информация об однонаправленном движении в информации о двунаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, вторую информацию об однонаправленном движении добавляют в список кандидатов информации о движении.
[341] В способах 31, 32 и 33 первая информация об однонаправленном движении может быть информацией об однонаправленном движении, указывающей на опорное изображение в первом списке опорных изображений; вторая информация об однонаправленном движении может быть информацией об однонаправленном движении, указывающей на опорное изображение во втором списке опорных изображений.
[342] В примере, если общее количество частей информации о возможном движении, существующих в списке кандидатов информации о движении (то есть общее количество частей информации о возможном движении, существующих в настоящее время в списке кандидатов информации о движении, когда доступную информацию о движении добавляют в список кандидатов информации о движении) является четным, первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений; если общее количество частей информации о возможном движении, существующих в списке кандидатов информации о движении, является нечетным, первый список опорных изображений представляет собой список List1 опорных изображений, а второй список опорных изображений представляет собой список List0 опорных изображений. Альтернативно, если общее количество частей информации о возможном движении, существующих в списке кандидатов информации о движении, является нечетным, первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений; если общее количество частей информации о возможном движении, существующей в списке кандидатов информации о движении, является четным, первый список опорных изображений представляет собой список List1 опорных изображений, а второй список опорных изображений представляет собой список List0 опорных изображений. Альтернативно, первый список опорных изображений представляет собой список List0 опорных изображений, а второй список опорных изображений представляет собой список List1 опорных изображений. Альтернативно, первый список опорных изображений представляет собой список List1 опорных изображений, а второй список опорных изображений представляет собой список List0 опорных изображений.
[343] В приведенном выше примере задействована операция проверки на дублирование информации об однонаправленном движении (такой как информация об однонаправленном движении, первая информация об однонаправленном движении, вторая информация об однонаправленном движении) и информации о возможном движении, существующей в списке кандидатов информации о движении. Результат операции проверки на дублирование может показывать дублирование или нет. Также задействована операция проверки на дублирование информации о движении двух соседних пространственных блоков. Результат операции проверки на дублирование может показывать дублирование или нет. В последующем примере 19 также задействована операция проверки на дублирование информации о двунаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении. Результат операции проверки на дублирование может показывать дублирование или нет.
[344] Для удобства описания две части информации о движении для операции проверки на дублирование называются информацией 1 о движении и информацией 2 о движении. Когда информация 1 о движении представляет собой информацию об однонаправленном движении, подлежащую проверке на дублирование, информация 2 о движении представляет собой информацию о возможном движении, существующую в списке кандидатов информации о движении. Когда информация 1 о движении представляет собой проверяемую на дублирование информацию о двунаправленном движении, информация 2 о движении представляет собой информацию о возможном движении, существующую в списке кандидатов информации о движении. Когда информация 1 о движении является информацией о движении пространственного соседнего блока, для которой нужно определить доступность, информация 2 о движении является информацией о движении соседнего блока, для которой определена доступность. В способе 12, например, если информация о движении F доступна, когда необходимо определить, доступна ли информация о движении G, информация 1 о движении является информацией о движении G, а информация 2 о движении является информацией о движении F.
[345] Операция проверки на дублирование может быть реализована следующими способами.
[346] В способе 41 операцию проверки на дублирование выполняют на основе списка+refIdx+MV_x+MV_y. Например, сначала проверяют, совпадают ли один или более списков опорных изображений, указанных информацией 1 о движении, с одним или более списками опорных изображений, указанных информацией 2 о движении (т.е. указывают ли информация 1 о движении / информация 2 о движении на список List0 опорных изображений, список List1 опорных изображений или как на список List0 опорных изображений, так и на список List1 опорных изображений), совпадают ли refIdx информации 1 о движении и информации 2 о движении, а затем проверяют, является ли MV информации 1 о движении и информации 2 о движении одинаковыми (то есть проверяют, одинаковы ли горизонтальные компоненты и одинаковы ли вертикальные компоненты).
[347] Например, сначала проверяют, совпадают ли один или более списков опорных изображений, указанных информацией 1 о движении, с одним или более списками опорных изображений, указанных информацией 2 о движении. Если нет, то информация 1 о движении не дублируется информацией 2 о движении. Если да, то проверяют, совпадает ли refIdx информации 1 о движении с refIdx информации 2 о движении. Если нет, информация 1 о движении не дублируется информацией 2 о движении. Если да, то проверяют, совпадает ли вектор движения информации 1 о движении с вектором движения информации 2 о движении. Если нет, информация 1 о движении не дублируется информацией 2 о движении. Если да, определяют, что информация 1 о движении дублируется информацией 2 о движении.
[348] Например, если список опорных изображений, указанный информацией 1 о движении, и список опорных изображений, указанный информацией 2 о движении, оба являются списком 0 опорных изображений, информация 1 о движении и информация 2 о движении являются одинаковыми. Альтернативно, список опорных изображений, указанный информацией 1 о движении, и список опорных изображений, указанный информацией 2 о движении, оба являются списком 1 опорных изображений, информация 1 о движении и информация 2 о движении являются одинаковыми. Альтернативно, если список опорных изображений, указанный информацией 1 о движении, представляет собой список List0 опорных изображений, а список опорных изображений, указанный информацией 2 о движении, представляет собой список List1 опорных изображений, информация 1 о движении и информация 2 о движении различны. Альтернативно, если список опорных изображений, указанный информацией 1 о движении, является списком 1 опорных изображений, а список опорных изображений, указанный информацией 2 о движении, является списком 0 опорных изображений, информация 1 о движении и информация 2 о движении различны. Альтернативно, если список опорных изображений, указанный информацией 1 о движении, представляет собой список List0 опорных изображений, а списки опорных изображений, указанные информацией 2 о движении, представляют собой List0 опорных изображений и List1 опорных изображений, информация 1 о движении и информация 2 о движении различны. Альтернативно, если список опорных изображений, указанный информацией 1 о движении, представляет собой List1 опорных изображений, а списки опорных изображений, указанные информацией 2 о движении, представляют собой List0 опорных изображений и List1 опорных изображений, информация 1 о движении и информация 2 о движении различны. Альтернативно, если информация 1 о движении указывает на опорное изображение с индексом refIdx0 опорного изображения в списке List0 опорных изображений и указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом refIdx2 опорного изображения в списке List0 опорных изображений и указывает на опорное изображение с индексом refIdx3 опорного изображения в списке List1 опорных изображений, и refIdx0 не равен refIdx2, или refIdx1 не равен refIdx3, тогда информация 1 о движении и информация 2 о движении информация различны. Выше приведены только примеры сравнения списков опорных изображений, которые здесь не ограничиваются.
[349] В примере, если горизонтальная компонента вектора движения информации 1 о движении такая же, как горизонтальная компонента вектора движения информации 2 о движении, а вертикальная компонента вектора движения информации 1 о движении такая же, как вертикальная компонента вектора движения информации 2 о движении, это означает, что вектор движения информации 1 о движении совпадает с вектором движения информации 2 о движении.
[350] В способе 42 операцию проверки на дублирование выполняют на основе РОС+MV_x+MV_y.
[351] Например, сначала проверяют, совпадают ли РОС одного или более опорных изображений, указанных информацией 1 о движении, с РОС одного или более опорных изображений, указанных информацией 2 о движении (например, даже если РОС опорного изображения с индексом refIdx0 опорного изображения в списке List0 опорных изображений, указанных информацией 1 о движении, равен РОС опорного изображения с индексом опорного изображения refIdx1 в списке опорных изображений 1, указанных информацией 2 о движении, определяют, что информация 1 о движении и информация 2 о движении одинаковы, что применимо для проверки на дублирование информации об однонаправленном движении и информации об однонаправленном движении, а также проверки на дублирование информации о двунаправленном движении и информации о двунаправленном движении); и затем проверяют, совпадают ли MV информации 1 о движении и MV информации 2 о движении (то есть одинаковы ли горизонтальные компоненты и одинаковы ли вертикальные компоненты).
[352] Например, сначала проверяют, является ли РОС опорного изображения, указанного информацией о движении 1, таким же, что и у опорного изображения, указанного информацией 2 о движении. Если нет, то информация 1 о движении не дублируется информацией 2 о движении. Если да, то продолжают проверять, совпадают ли векторы движения информации 1 о движении и информации 2 о движении. Если нет, то информация 1 о движении не дублируется информацией 2 о движении. Если да, то определяют, что информация 1 о движении дублируется информацией 2 о движении.
[353] Например, РОС опорного изображения, указанного информацией 1 о движении, совпадает с РОС опорного изображения, указанного информацией 2 о движении, может включать: информация 1 о движении указывает на опорное изображение с индексом опорного изображения refIdx0 в списке List0 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом опорного изображения refIdx0 в списке List0 опорных изображений, и РОС опорного изображения, указанного информацией 1 о движении, такой же, как у опорного изображения, указанного информацией 2 о движении. Альтернативно, информация 1 о движении указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, и РОС опорного изображения, указанного информацией 1 о движении, является таким же, как у опорного изображения, указанного информацией 2 о движении. Альтернативно, информация 1 о движении указывает на опорное изображение с индексом refIdx0 опорного изображения в списке List0 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, а РОС опорного изображения, указанного информацией 1 о движении, совпадает с РОС опорного изображения, указанного информацией 2 о движении. Альтернативно, информация 1 о движении указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом refIdx0 опорного изображения в списке List0 опорных изображений, и РОС опорного изображения, указанного информацией 1 о движении, является таким же, как у опорного изображения, указанного информацией 2 о движении. Альтернативно, информация 1 о движении указывает на опорное изображение с индексом refIdx0 опорного изображения в списке List0 опорных изображений и указывает на опорное изображение с индексом refIdx1 опорного изображения в списке List1 опорных изображений, информация 2 о движении указывает на опорное изображение с индексом refIdx2 опорного изображения в списке List0 опорных изображений и указывает на опорное изображение с индексом refIdx3 опорного изображения в списке List1 опорных изображений, РОС опорного изображения с индексом refIdx0 опорного изображения в списке List0 опорных изображений, на которое указывает информация 1 о движении, является таким же, как у опорного изображения с индексом refIdx3 опорного изображения в списке List1 опорных изображений, на которое указывает информация 2 о движении, и РОС опорного изображения с индексом refIdx1 опорного изображения в списке List1 опорных изображений, на которое указывает информация 1 о движении, является таким же, как у опорного изображения с индексом refIdx2 опорного изображения в списке List0 опорных изображений, на которое указывает информация 2 о движении. Выше приведены только примеры одного и того же РОС опорных изображений, которые здесь не ограничиваются.
[354] В примере описанный выше процесс заключается в проверке того, дублируются ли РОС опорных изображений. Следует отметить, что РОС опорного изображения является только примером операции проверки на дублирование. В дополнение к РОС могут использоваться другие атрибуты, которые могут определять, являются ли опорные изображения одинаковыми, например DOC опорного изображения, что здесь не ограничивается. Таким образом, вышеприведенный РОС можно заменить на DOC.
[355] Таким образом, можно получить список кандидатов информации о движении, который также может называться AwpUniArray. Далее описывается процесс получения вышеупомянутого списка кандидатов информации о движении в сочетании с несколькими конкретными сценариями применения. В последующих сценариях применения предполагается, что длина списка кандидатов информации о движении (длина списка) равна X, то есть необходимо добавить X частей доступной информации о движении. После того как доступная информация о движении добавлена в список кандидатов информации о движении, добавленная информация о движении упоминается как информация о возможном движении.
[356] Сценарий 1 применения: пространственная информация о движении добавляется в список кандидатов информации о движении. Если длина списка равна X, процесс добавления завершается. Если длина списка меньше X, заранее заданная информация о движении добавляется в список кандидатов информации о движении до тех пор, пока длина списка не станет X.
[357] В примере сначала определяется доступная информация о движении (т.е. пространственная информация о движении), которая должна быть добавлена в список кандидатов информации о движении. Например, доступная информация о движении определяется способом 11, или доступная информация о движении определяется способом 12, или доступная информация о движении определяется способом 13. Когда доступная информация о движении определяется способом 12 или 13, операция проверки на дублирование, включающая информацию о движении двух соседних пространственных блоков, может быть выполнена способом 41 или 42.
[358] В примере, как показано на фиг. 9А, доступная информация о движении добавляется в список кандидатов информации о движении в порядке доступной информации о движении F, G, С, А, В, D (порядок является переменным). Для каждой части доступной информации о движении доступная информация о движении может быть добавлена в список кандидатов информации о движении способом 31, 32 или 33.
[359] В примере, когда доступная информация о движении добавляется в список кандидатов информации о движении способом 32 или 33, операция проверки на дублирование также может выполняться для информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении. Например, операция проверки на дублирование может быть выполнена способом 41 или 42.
[360] Сценарий 2 применения: временная информация о движении добавляется в список кандидатов информации о движении. Если длина списка равна X, процесс добавления завершается. Если длина списка меньше X, заранее заданная информация о движении добавляется в список кандидатов информации о движении до тех пор, пока длина списка не станет X.
[361] В примере сначала определяется доступная информация о движении (то есть временная информация о движении), которая должна быть добавлена в список кандидатов информации о движении. Например, доступная информация о движении определяется способом 21 или 22.
[362] Например, для каждой части доступной информации о движении доступная информация о движении может быть добавлена в список кандидатов информации о движении способом 31, 32 или 33.
[363] В примере, когда доступная информация о движении добавляется в список кандидатов информации о движении способом 32 или 33, операция проверки на дублирование также может выполняться для информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении. Например, операция проверки на дублирование может быть выполнена способом 41 или 42.
[364] Сценарий 3 применения: пространственная информация о движении и временная информация о движении добавляются в список кандидатов информации о движении (пространственная информация о движении может быть добавлена перед временной информацией о движении, или временная информация о движении также может быть добавлена перед пространственной информацией о движении. Для удобства описания пространственная информация о движении, добавляемая перед временной информацией о движении, будет рассмотрена в качестве примера позже). Если длина списка равна X, процесс добавления завершается. Если длина списка меньше X, заранее заданная информация о движении добавляется в список кандидатов информации о движении до тех пор, пока длина списка не станет X.
[365] В примере определяется доступная информация о движении (т.е. пространственная информация о движении и временная информация о движении), которая должна быть добавлена в список кандидатов информации о движении. Например, доступная информация о движении определяется способами 11 и 21, или доступная информация о движении определяется способами 11 и 22, или доступная информация о движении определяется способами 12 и 21, или доступная информация о движении определяется способами 12 и 22, или доступная информация о движении определяется способами 13 и 21, или доступная информация о движении определяется способами 13 и 22. Выше приведены только примеры, которые не представляют собой ограничения в данном документе.
[366] Когда доступная информация о движении определяется способом 12 или 13, операция проверки на дублирование, включающая информацию о движении двух соседних пространственных блоков, может выполняться способом 41 или 42.
[367] В примере, как показано на фиг. 9А, доступная информация о движении добавляется в список кандидатов информации о движении в порядке доступной информации о движении F, G, С, А, В, D и в порядке временной информации о движении (т.е. доступной информации о движении). Для каждой части доступной информации о движении доступная информация о движении может быть добавлена в список кандидатов информации о движении способом 31, 32 или 33.
[368] В примере, когда доступная информация о движении добавляется в список кандидатов информации о движении способом 32 или 33, операция проверки на дублирование также может выполняться для информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении. Например, операция проверки на дублирование может быть выполнена способом 41 или 42.
[369] Подводя итог, можно сказать, что на основе порядка пространственной информации о движении и временной информации о движении пространственная информация о движении и временная информация о движении могут быть добавлены в список кандидатов информации о движении вместе до тех пор, пока длина списка не станет равной X. Альтернативно, в конце обхода, если длина списка меньше X, заранее заданная информация о движении может быть добавлена в список кандидатов информации о движении до тех пор, пока длина списка не станет равной X.
[370] Сценарий 4 применения: после того как пространственная информация о движении добавлена в список кандидатов информации о движении, зарезервированы по меньшей мере позиции Y для временной информации о движении, которая является информацией о двунаправленном движении или информацией об однонаправленном движении. В примере пространственная информация о движении добавляется в список кандидатов информации о движении. Если длина списка равна X-Y, процесс добавления пространственной информации о движении завершается, или до завершения обхода пространственной информации о движении, если длина списка меньше X-Y, процесс добавления пространственной информации о движении завершается. Затем временная информация о движении добавляется в список кандидатов информации о движении. Если длина списка равна X, процесс добавления временной информации о движении завершается, или до завершения обхода временной информации о движении, если длина списка меньше X, процесс добавления информации о временном движении завершается, и заранее заданная информация о движении добавляется в список кандидатов информации о движении до тех пор, пока длина списка не станет равной X.
[371] В примере определяется доступная информация о движении (т.е. пространственная информация о движении и временная информация о движении), которая должна быть добавлена в список кандидатов информации о движении. Например, доступная информация о движении определяется способами 11 и 21, или доступная информация о движении определяется способами 11 и 22, или доступная информация о движении определяется способами 12 и 21, или доступная информация о движении определяется способами 12 и 22, или доступная информация о движении определяется способами 13 и 21, или доступная информация о движении определяется способами 13 и 22. Выше приведены только примеры, которые не представляют собой ограничения в данном документе.
[372] Когда доступная информация о движении определяется способом 12 или 13, операция проверки на дублирование, включающая информацию о движении двух соседних пространственных блоков, может выполняться способом 41 или 42.
[373] В примере доступная информация о движении добавляется в список кандидатов информации о движении в порядке доступной информации о движении (т.е. пространственной информации о движении) F, G, С, А, В, D до тех пор, пока длина списка не станет равной X-Y или пока не завершится обход пространственной информации о движении. Затем временная информация о движении (т.е. доступная информация о движении) добавляется в список кандидатов информации о движении до тех пор, пока длина списка не станет равной X или пока не завершится обход временной информации о движении. В процессе добавления доступной информации о движении для каждой части доступной информации о движении доступная информация о движении может быть добавлена в список кандидатов информации о движении способом 31, 32 или 33.
[374] В примере, когда доступная информация о движении добавляется в список кандидатов информации о движении способом 32 или 33, операция проверки на дублирование также может выполняться для информации об однонаправленном движении и информации о возможном движении, существующей в списке кандидатов информации о движении. Например, операция проверки на дублирование может быть выполнена способом 41 или 42.
[375] В приведенных выше сценариях применения X может быть любым положительным целым числом, например, X может быть 4, 5 и т.д.
[376] В каждом из приведенных выше сценариев применения заранее заданная информация о движении (также называемая информацией о движении по умолчанию) может быть добавлена в список кандидатов информации о движении. Реализация заранее заданной информации о движении может включать, не ограничиваясь этим, следующие способы.
[377] В способе 51 заранее заданная информация о движении является нулевой информацией о движении, такой как нулевой вектор движения, указывающий на список ListX опорных изображений, с refIdx, меньшим, чем количество опорных изображений в списке ListX опорных изображений. Например, может быть выполнена операция заполнения нулем, то есть информация о движении может быть (0, 0, ref_idx3, ListZ).
[378] Способ 52: информация о движении по умолчанию, полученная на основе информации о возможном движении, существующей в списке кандидатов информации о движении.
[379] Например, обозначено, что абсолютное значение вектора движения в направлении оси x или в направлении оси у, которое должно увеличиваться или уменьшаться, равно temp_val, результат включает следующие случаи.
[380] Случай 1: если temp_val<8, результат =8 или результат =-8.
[381] Например, если temp_val информации о возможном движении в направлении оси x меньше 8, вектор движения информации о движении по умолчанию в направлении оси x равен 8 или вектор движения информации о движении по умолчанию в направлении оси x равно -8.
[382] Если temp_val информации о возможном движении в направлении оси Y меньше 8, вектор движения информации о движении по умолчанию в направлении оси Y равен 8 или вектор движения информации о движении по умолчанию в направлении оси Y равен -8.
[383] Случай 2. Предположим, что случай 1 не выполняется, если temp_val<=64, тогда результат = (temp_val*5+2)>>2 или результат = (temp_val*3+2)>>2, с тем же знаком, что и вектор движения информации о возможном движении.
[384] Например, если вектор движения информации о возможном движении в направлении оси x положителен, а абсолютное значение вектора движения в направлении оси x (т.е. temp_val) меньше или равно 64, тогда вектор движения информации о движении по умолчанию в направлении оси x равен (temp_val*5+2)>>2. Если вектор движения информации о возможном движении в направлении оси x отрицателен, а абсолютное значение вектора движения в направлении оси x (т.е. temp_val) меньше или равно 64, тогда вектор движения информации о движении по умолчанию в направлении оси x равен (temp_val*3+2)>>2.
[385] Вектор движения информации о движении по умолчанию в направлении оси у аналогичен вектору движения информации о движении по умолчанию в направлении оси х.
[386] Случай 3. Предположим, что случаи 1 и 2 не выполняются, если temp_val<=128, то результат = (temp_val*9+4)>>3 или результат = (temp_val*7+4)>>3, с тем же знаком, что и у вектора движения информации о возможном движении.
[387] Случай 4. Предположим, что случаи 1, 2 и 3 не выполняются, тогда результат = (temp_val*33+16)>>5 или результат = (temp_val*31+16)>>5, с тем же знаком, что и у вектора движения информации о возможном движении.
[388] Способ 53: информация о движении по умолчанию, полученная на основе информации о возможном движении, существующей в списке кандидатов информации о движении.
[389] Например, на основе любой действительной информации о возможном движении (х, у, ref_idx, ListX) в списке кандидатов информации о движении, где ref_idx и ListX являются индексом опорного изображения и списком опорных изображений, соответственно, и оба совместно упоминаются как информация опорного изображения. Можно добавить по меньшей мере одну часть следующей информации о движении: (х+а, y+b, ref idx, ListX), где a, b могут быть любым целым числом; (k1*x, k1*y, ref_idx_new1, ListX), где k1 - любое положительное целое число, отличное от нуля, то есть вектор движения масштабируется; (k2*x, k2*у, ref_idx_new2, ListY), где k2 - любое положительное целое число, отличное от нуля, то есть вектор движения масштабируется.
[390] В способе 54: заранее заданная информация о движении представляет собой информацию о возможном движении, существующую в списке кандидатов информации о движении, то есть, когда выполняется операция заполнения, информация о возможном движении, существующая в списке кандидатов информации о движении, может использоваться для повторного заполнения. Например, последняя информация об однонаправленном движении, существующая в списке кандидатов информации о движении, может использоваться для повторного заполнения.
[391] Подводя итог, можно сказать, что когда длина списка меньше X и заранее заданную информацию о движении необходимо добавить в список кандидатов информации о движении, заранее заданную информацию о движении можно добавлять способом 51 в список кандидатов информации о движении до тех пор, пока длина списка не будет равна X. Альтернативно, заранее заданная информация о движении может быть добавлена способом 52 в список кандидатов информации о движении до тех пор, пока длина списка не станет X. Альтернативно, заранее заданная информация о движении может быть добавлена способом 53 в список кандидатов информации о движении до тех пор, пока длина списка не станет X. Альтернативно, заранее заданная информация о движении может быть добавлена способами 51 и 52 в список кандидатов информации о движении до тех пор, пока длина списка не станет X. Альтернативно, заранее заданная информация о движении может быть добавлена способами 51 и 53 в список кандидатов информации о движении до тех пор, пока длина списка не станет X. Альтернативно, заранее заданная информация о движении может быть добавлена способами 52 и 53 в список кандидатов информации о движении до тех пор, пока длина списка не станет X. Альтернативно, заранее заданная информация о движении может быть добавлена способами 51, 52 и 53 в список кандидатов информации о движении до тех пор, пока длина списка не станет X.
[392] В примере, после того как заранее заданная информация о движении добавлена в список кандидатов информации о движении описанным выше образом, если длина списка все еще меньше X, заранее заданная информация о движении может быть добавлена способом 54 в список кандидатов информации о движении, то есть информация о возможном движении, существующая в списке кандидатов информации о движении, используется для повторного заполнения до тех пор, пока длина списка не станет равной X.
[393] В другой возможной реализации, когда длина списка меньше X, и заранее заданную информацию о движении необходимо добавить в список кандидатов информации о движении, заранее заданную информацию о движении можно добавить способом 54 непосредственно в список кандидатов информации о движении, то есть информация о возможном движении, существующая в списке кандидатов информации о движении, используется для повторного заполнения до тех пор, пока длина списка не станет равной X.
[394] В приведенных выше примерах заранее заданная информация о движении может быть информацией об однонаправленном движении или информацией о двунаправленном движении. Если заранее заданная информация о движении является информацией об однонаправленном движении, когда заранее заданная информация о движении добавляется в список кандидатов информации о движении, операция проверки на дублирование может выполняться или нет. Если операция проверки на дублирование не выполняется, заранее заданная информация о движении непосредственно добавляется в список кандидатов информации о движении. Если операция проверки на дублирование выполняется, операция проверки на дублирование может выполняться способом 41 или 42. Если результат операции проверки на дублирование показывает, что дублирования нет, заранее заданную информацию о движении добавляют в список кандидатов информации о движении. Если результатом операции проверки на дублирование является дублирование, заранее заданную информацию о движении не добавляют в список кандидатов информации о движении.
[395] Пример 15: в примерах с 1 по 3 после получения списка кандидатов информации о движении (см. примеры 13 и 14) сторона кодирования/сторона декодирования может получить первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе списка кандидатов информации о движении. Получение первой целевой информации о движении и второй целевой информации о движении может быть реализовано следующими способами.
[396] В способе 1 одну часть информации о возможном движении выбирают из списка кандидатов информации о движении в качестве первой целевой информации о движении текущего блока, а другую часть информации о возможном движении выбирают из списка кандидатов информации о движении в качестве второй целевой информации о движении текущего блока.
[397] В примере как для стороны кодирования, так и для стороны декодирования может быть получен список кандидатов информации о движении, и список кандидатов информации о движении на стороне кодирования является таким же, как и на стороне декодирования. Здесь нет никаких ограничений на список кандидатов информации о движении.
[398] Для стороны кодирования, на основе принципа RDO, одна часть информации о возможном движении может быть выбрана из списка кандидатов информации о движении в качестве первой целевой информации о движении текущего блока, а другая часть информации о возможном движении может быть выбрана из списка кандидатов информации о движении в качестве второй целевой информации о движении текущего блока. Первая целевая информация о движении отличается от второй целевой информации о движении, и нет ограничений на первую целевую информацию о движении и вторую целевую информацию о движении.
[399] В возможной реализации, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может нести информацию а указания и информацию b указания. Информация а указания используется для указания значения 1 индекса первой целевой информации о движении текущего блока. Значение 1 индекса указывает, какая информация о возможном движении в списке кандидатов информации о движении является первой целевой информацией о движении. Информация b указания используется для указания значения 2 индекса второй целевой информации о движении текущего блока. Значение 2 индекса указывает, какой информацией о возможном движении в списке кандидатов информации о движении является вторая целевая информация о движении. В примере значение 1 индекса и значение 2 индекса могут быть различными.
[400] После приема кодированного битового потока сторона декодирования анализирует информацию а указания и информацию b указания из кодированного битового потока. На основе информации а указания сторона декодирования выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов информации о движении в качестве первой целевой информации о движении текущего блока. На основе информации b указания сторона декодирования выбирает информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов информации о движении в качестве второй целевой информации о движении текущего блока.
[401] В другой возможной реализации, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может нести информацию а указания и информацию с указания. Информация а указания может использоваться для указания значения 1 индекса первой целевой информации о движении текущего блока. Значение 1 индекса указывает, какая информация о возможном движении в списке кандидатов информации о движении является первой целевой информацией о движении. Информация с указания может использоваться для указания разности между значением 2 индекса и значением 1 индекса, где значение 2 индекса указывает, какой информацией о возможном движении в списке кандидатов информации о движении является вторая целевая информация о движении. В примере значение 1 индекса и значение 2 индекса могут быть различными.
[402] После приема кодированного битового потока сторона декодирования может проанализировать информацию а указания и информацию с указания из кодированного битового потока. На основе информации а указания сторона декодирования может выбрать информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов информации о движении в качестве первой целевой информации о движении текущего блока. На основе информации с указания сторона декодирования сначала определяет значение 2 индекса на основе значения 1 индекса и разности между значением 2 индекса и значением 1 индекса. Затем сторона декодирования может выбрать информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов информации о движении в качестве второй целевой информации о движении текущего блока.
[403] В примере информация указания первой целевой информации о движении и информация указания второй целевой информации о движении могут поменяться местами при условии, что сторона кодирования согласована со стороной декодирования. Здесь происходит обмен информацией указания, что не влияет на процесс синтаксического анализа, то есть отсутствует зависимость синтаксического анализа. Информация указания первой целевой информации о движении и информация указания второй целевой информации о движении не могут быть равными. Предполагая, что кодированы два значения индекса, значение а индекса равно 1, а значение b индекса равно 3, когда значение а индекса кодируется первым, значение b индекса может быть кодировано как 2 (т.е. 3-1); когда значение b индекса кодируется первым, значение b индекса должно быть кодировано как 3. Таким образом, кодирование информации указания сначала с небольшим значением индекса может уменьшить стоимость кодирования большого значения индекса. Например, информация указания первой целевой информации о движении, такая как значение а индекса, кодируется первой, а затем кодируется информация указания второй целевой информации о движении, такая как значение b индекса. Альтернативно, информация указания второй целевой информации о движении, такая как значение b индекса, кодируется первой, а затем кодируется информация указания первой целевой информации о движении, такая как значение а индекса. Например, если предположить, что значение а индекса равно 1, а значение b индекса равно 3, сначала кодируется значение а индекса, а затем кодируется значение b индекса. В другом примере, если предположить, что значение b индекса равно 1, а значение а индекса равно 3, сначала кодируется значение b индекса, а затем кодируется значение а индекса.
[404] В способе 2: информацию о возможном движении выбирают из списка кандидатов информации о движении в качестве первой исходной информации о движении текущего блока, а информацию о возможном движении выбирают из списка кандидатов информации о движении в качестве второй исходной информации о движении текущего блока. В примере первая исходная информация о движении и вторая исходная информация о движении могут быть различными, то есть две части различной информации о возможном движении выбирают из списка кандидатов информации о движении в качестве первой исходной информации о движении и второй исходной информации о движении. Альтернативно, первая исходная информация о движении и вторая исходная информация о движении также могут быть одинаковыми, т.е. одну и ту же информацию о возможном движении выбирают из списка кандидатов информации о движении в качестве первой исходной информации о движении и второй исходной информации о движении. Затем первую целевую информацию о движении текущего блока определяют на основе первой исходной информации о движении, а вторую целевую информацию о движении текущего блока определяют на основе второй исходной информации о движении. В примере первая целевая информация о движении может отличаться от второй целевой информации о движении.
[405] Что касается того, как определить целевую информацию о движении на основе исходной информации о движении, в примере дается решение углового взвешенного предсказания с уточнением вектора движения (AWP_MVR, Angular Weighted Prediction with Motion Vector Refinement). Например, первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, а вторая целевая информация о движении включает второй целевой вектор движения. На основе этого может быть получена первая разность векторов движения (MVD, motion vector difference), соответствующая первому исходному вектору движения; и первый целевой вектор движения может быть определен на основе первой разности векторов движения и первого исходного вектора движения (то есть сумма первой разности векторов движения и первого исходного вектора движения принимается за первый целевой вектор движения). Может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения; и второй целевой вектор движения может быть определен на основе второй разности векторов движения и второго исходного вектора движения (то есть сумма второй разности векторов движения и второго исходного вектора движения принимается в качестве второго целевого вектора движения).
[406] В примере при определении первого целевого вектора движения первый исходный вектор движения может быть определен как первый целевой вектор движения без наложения первой разности векторов движения. Однако при определении второго целевого вектора движения может накладываться вторая разность векторов движения, то есть второй целевой вектор движения определяют на основе второй разности векторов движения и второго исходного вектора движения.
[407] Альтернативно, при определении второго целевого вектора движения второй исходный вектор движения может быть определен как второй целевой вектор движения без наложения второй разности векторов движения. Однако при определении первого целевого вектора движения может накладываться первая разность векторов движения, то есть первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения.
[408] Альтернативно, при определении первого целевого вектора движения может накладываться первая разность векторов движения, то есть первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения. При определении второго целевого вектора движения может накладываться вторая разность векторов движения, то есть второй целевой вектор движения может быть определен на основе второй разности векторов движения и второго исходного вектора движения.
[409] В примере могут быть получены информация о направлении и информация об амплитуде первой разности векторов движения, и первая разность векторов движения может быть определена на основе информации о направлении и информации об амплитуде первой разности векторов движения. Кроме того, могут быть получены информация о направлении и информация об амплитуде второй разности векторов движения, и вторая разность векторов движения может быть определена на основе информации о направлении и информации об амплитуде второй разности векторов движения.
[410] Например, для стороны декодирования информация о направлении первой разности векторов движения может быть получена следующим образом: сторона декодирования анализирует информацию о направлении первой разности векторов движения из кодированного битового потока текущего блока; или сторона декодирования получает информацию о направлении первой разности векторов движения на основе угла взвешенного предсказания текущего блока. Для стороны декодирования информация о направлении второй разности векторов движения может быть получена следующим образом: сторона декодирования анализирует информацию о направлении второй разности векторов движения из кодированного битового потока текущего блока; или сторона декодирования получает информацию о направлении второй разности векторов движения на основе угла взвешенного предсказания текущего блока.
[411] Например, для стороны декодирования информация об амплитуде первой разности векторов движения может быть получена следующим образом: информацию об амплитуде первой разности векторов движения анализируют из кодированного битового потока текущего блока. Информация об амплитуде второй разности векторов движения может быть получена следующим образом: информацию об амплитуде второй разности векторов движения анализируют из кодированного битового потока текущего блока.
[412] В возможной реализации сторона кодирования и сторона декодирования могут согласовывать информацию о направлении и информацию об амплитуде разности векторов движения. Если информация о направлении указывает направление вправо, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (0, -А). Если информация о направлении указывает направление влево, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (0, А). Если информация о направлении указывает направление вправо-вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, А). Если информация о направлении указывает направление влево-вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, А). Если информация о направлении указывает направление влево-вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, -А). Если информация о направлении указывает направление вправо-вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, -А). Выше приведены только примеры, и информация о направлении и информация об амплитуде здесь не ограничиваются.
[413] В примере разность векторов движения может поддерживать часть или всю вышеуказанную информацию о направлении, и диапазон амплитуды А, поддерживаемой разностью векторов движения, конфигурируют на основе опыта, по меньшей мере с одним значением, что здесь не ограничивается. Например, разность векторов движения поддерживает такие направления, как вверх, вниз, влево, вправо, а разность векторов движения поддерживает следующие пять конфигураций шага: 1/4 пикселя, 1/2 пикселя, 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).
[414] В другом примере разность векторов движения поддерживает такие направления, как вверх, вниз, влево, вправо, а разность векторов движения поддерживает следующие шесть конфигураций шага: 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя, 3 пикселя, 4 пикселя, то есть значение амплитуды А может быть 1, 2, 4, 8, 12, 16.
[415] В другом примере разность векторов движения поддерживает восемь направлений, включая вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз, а разность векторов движения поддерживает следующие три конфигурации шага: 1/4 пикселя, 1/2 пикселя, 1 пиксель, то есть значение амплитуды А может быть 1, 2, 4.
[416] Например, разность векторов движения поддерживает четыре направления, включая вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие четыре конфигурации шага: 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя, то есть значение амплитуды А может быть равно 1, 2, 4, 8.
[417] Выше приведены только примеры, которые не являются ограничением настоящего изобретения. Например, направление, поддерживаемое разностью векторов движения, может быть выбрано произвольно. Например, разность векторов движения может поддерживать шесть направлений, включая вверх, вниз, влево, вправо, влево-вверх и влево-вниз, или разность векторов движения может поддерживать два направления, включая вверх и вниз. В качестве другого примера можно гибко задавать конфигурацию шага, поддерживаемую разностью векторов движения. В другом примере конфигурация шага может быть адаптивно сконфигурирована на основе параметров кодирования, таких как параметр QP квантования, например 1 пиксель, 2 пикселя, 4 пикселя и 8 пикселей для большого QP, и 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя для малого QP. В качестве другого примера, соответствующая конфигурация шага может быть установлена на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча, уровне CTU и т.д., чтобы сторона декодирования могла выполнять операцию декодирования на основе конфигурации шага, проанализированной на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча и уровне CTU.
[418] Для удобства описания в последующих примерах предполагается, что разность векторов движения поддерживает направления, включая вверх и вниз, и поддерживает конфигурации шага, включая 1 пиксель, 2 пикселя, в соответствии с точностью 1/4 пикселя, разность векторов движения может быть (0, 4), (0, 8), (0, -4), (0, -8), то есть (0, 1<<2), (0, 1<<3), (0, -1<<2), (0, -1<<3).
[419] Для стороны кодирования после получения списка кандидатов информации о движении каждая комбинация информации о возможном движении в списке кандидатов информации о движении проходится по очереди. Комбинация информации о возможном движении включает две части информации о возможном движении, одна из которых берется в качестве первой исходной информации о движении, а другая берется в качестве второй исходной информации о движении. Следует отметить, что первая исходная информация о движении и вторая исходная информация о движении могут быть одинаковыми (то есть две части информации о возможном движении, выбранные из списка кандидатов информации о движении, являются одинаковыми) или разными. Если первая исходная информация о движении совпадает со второй исходной информацией о движении, можно гарантировать, что первая целевая информация о движении и вторая целевая информация о движении отличаются друг от друга путем наложения различных разностей векторов движения. Для каждой комбинации информации о возможном движении комбинация разности векторов движения проходится по очереди. Комбинация разностей векторов движения включает первую разность векторов движения и вторую разность векторов движения. Первая разность векторов движения и вторая разность векторов движения могут быть одинаковыми или различными. Например, имеется две разности векторов движения, а именно: разность 1 векторов движения и разность 2 векторов движения. Комбинация 1 разностей векторов движения включает разность 1 векторов движения и разность 1 векторов движения. Комбинация 2 разностей векторов движения включает разность 1 векторов движения (т.е. первую разность векторов движения) и разность 2 векторов движения. Комбинация 3 разностей векторов движения включает разность 2 векторов движения (т.е. первую разность векторов движения) и разность 1 векторов движения. Комбинация 4 разностей векторов движения включает разность 2 векторов движения и разность 2 векторов движения.
[420] В примере, для комбинации информации о возможном движении и комбинации разностей векторов движения, проходимых в настоящее время, если первая исходная информация о движении отличается от второй исходной информации о движении, первая разность векторов движения и вторая разность векторов движения могут быть одинаковыми или различными. Если первая исходная информация о движении такая же, как вторая исходная информация о движении, первая разность векторов движения и вторая разность векторов движения могут быть различными.
[421] Для комбинации информации о возможном движении и комбинации разности векторов движения, проходимой в настоящее время, сумма вектора движения первой исходной информации о движении и первой разности векторов движения принимается в качестве первого целевого вектора движения, сумма вектора движения второй исходной информации о движении и второй разности векторов движения принимается в качестве второго целевого вектора движения, и значение стоимости RDO определяют на основе первого целевого вектора движения и второго целевого вектора движения. Ограничений на способ определения нет. Описанную выше обработку выполняют для каждой комбинации информации о возможном движении и каждой комбинации разности векторов движения и получают значение стоимости RDO. Затем выбирают минимальное значение стоимости RDO из всех значений стоимости RDO и кодируют информацию комбинации информации о возможном движении (первой исходной информации о движении и второй исходной информации о движении) и информацию комбинации разности векторов движения (первой разности векторов движения и второй разности векторов движения), соответствующей минимальному значению стоимости RDO, в кодированном битовом потоке текущего блока.
[422] Например, значение индекса первой исходной информации о движении, соответствующее минимальному значению RDO, в списке кандидатов информации о движении, значение индекса второй исходной информации о движении, соответствующее минимальному значению RDO, в списке кандидатов информации о движении, информацию о направлении и информацию об амплитуде первой разности векторов движения, соответствующей минимальному значению RDO, и информацию о направлении и информацию об амплитуде второй разности векторов движения, соответствующей минимальному значению RDO, кодированы в кодированном битовом потоке текущего блока. Например, для информации о направлении первой разности векторов движения или информации о направлении второй разности векторов движения информация указания информации о направлении может быть равна 0, что используется для обозначения первого направления в списке направлений. Для информации об амплитуде первой разности векторов движения или информации об амплитуде второй разности векторов движения информация указания информации об амплитуде может быть равна 0, что указывает первую конфигурацию шага в списке конфигураций шага.
[423] В примере, если разность векторов движения поддерживает четыре направления, включая вверх, вниз, влево и вправо, а разность векторов движения поддерживает пять конфигураций шага, включая 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя и 4 пикселя, информация о направлении разности векторов движения может кодироваться с использованием кода фиксированной длины с двумя бинами (всего четыре значения). Четыре значения двухбинового кода фиксированной длины соответственно указывают направления: вверх, вниз, влево и вправо. Информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода, то есть пять конфигураций шага указаны усеченным унарным кодом.
[424] В другом примере, если разность векторов движения поддерживает четыре направления, включая вверх, вниз, влево и вправо, а разность векторов движения поддерживает шесть конфигураций шага, включая 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя, 3 пикселя и 4 пикселя, информация о направлении разности векторов движения может кодироваться с использованием кода фиксированной длины с двумя бинами (всего четыре значения), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.
[425] В другом примере, если разность векторов движения поддерживает восемь направлений, включая вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз, а разность векторов движения поддерживает три конфигурации шага, включая 1/4 пикселя, 1/2 пикселя, 1 пиксель, информация о направлении разности векторов движения может кодироваться с использованием кода фиксированной длины с 3 бинами (всего восемь значений), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.
[426] В другом примере, если разность векторов движения поддерживает четыре направления, включая вверх, вниз, влево и вправо, а разность векторов движения поддерживает четыре конфигурации шага, включая 1/4 пикселя, 1/2 пикселя, 1 пиксель и 2 пикселя, исходя из этого, информация о направлении разности векторов движения может кодироваться с использованием усеченного унарного кода, а информация об амплитуде разности векторов движения может кодироваться с использованием кода фиксированной длины с двумя бинами (всего четыре значения).
[427] Выше приведены только примеры способов кодирования, ограничений на способ кодирования нет.
[428] Подводя итог, можно сказать, что сторона кодирования может искать оптимальный вектор движения (т.е. целевой вектор движения) в пределах конкретной области, а затем принимать разность между оптимальным вектором движения и исходным вектором движения как разность векторов движения (MVD) и кодировать информацию об амплитуде и информацию о направлении разности векторов движения в битовый поток. Когда сторона кодирования ищет оптимальный вектор движения в конкретной области, необходимо согласовать направление и амплитуду разности векторов движения, то есть поиск оптимального вектора движения осуществляется в ограниченных диапазонах разности векторов движения, таких как как (А, 0), (0, -А), (-А, 0), (0, А), (А, А), (-А, А), (-А, -А), (А, -А).
[429] После получения кодированного битового потока текущего блока сторона декодирования может проанализировать значение индекса первой исходной информации о движении в списке кандидатов информации о движении из кодированного битового потока, выбрать информацию о возможном движении, соответствующую значению индекса, из списка кандидатов информации о движении и принять информацию о возможном движении в качестве первой исходной информации о движении текущего блока. Сторона декодирования может проанализировать значение индекса второй исходной информации о движении в списке кандидатов информации о движении из кодированного битового потока, выбрать информацию о возможном движении, соответствующую значению индекса, из списка кандидатов информации о движении и принять информацию о возможном движении в качестве второй исходной информации о движении текущего блока.
[430] Сторона декодирования также может анализировать информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации о направлении и информации об амплитуде. Кроме того, сторона декодирования может анализировать информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации о направлении и информации об амплитуде.
[431] Затем сторона декодирования может определить первую целевую информацию о движении текущего блока на основе первой разности векторов движения и первой исходной информации о движении и определить вторую целевую информацию о движении текущего блока на основе второй разности векторов движения и второй исходной информации о движении.
[432] В примере, при определении первой разности векторов движения на основе информации о направлении первой разности векторов движения и информации об амплитуде первой разности векторов движения, если информация о направлении первой разности векторов движения указывает направление вправо, а информация об амплитуде первой разности векторов движения указывает амплитуду А, тогда первая разность векторов движения равна (А, 0); если информация о направлении первой разности векторов движения указывает направление вниз, а информация об амплитуде первой разности векторов движения указывает амплитуду А, тогда первая разность векторов движения равна (0, -А); если информация о направлении первой разности векторов движения указывает направление влево, и информация об амплитуде первой разности векторов движения указывает амплитуду А, тогда первая разность векторов движения равна (-А, 0); если информация о направлении первой разности векторов движения указывает направление вверх, а информация об амплитуде первой разности векторов движения указывает амплитуду А, тогда первая разность векторов движения равна (0, А). При определении второй разности векторов движения на основе информации о направлении второй разности векторов движения и информации об амплитуде второй разности векторов движения, если информация о направлении второй разности векторов движения указывает направление вправо, а информация об амплитуде второй разности векторов движения указывает амплитуду А, тогда вторая разность векторов движения равна (А, 0); если информация о направлении второй разности векторов движения указывает направление вниз, а информация об амплитуде второй разности векторов движения указывает амплитуду А, то вторая разность векторов движения равна (0, -А); если информация о направлении второй разности векторов движения указывает направление влево, а информация об амплитуде второй разности векторов движения указывает амплитуду А, то вторая разность векторов движения равна (-А, 0); если информация о направлении второй разности векторов движения указывает направление вверх, а информация об амплитуде второй разности векторов движения указывает амплитуду А, тогда вторая разность векторов движения равна (0, А).
[433] В приведенных выше примерах при кодировании информации о направлении разности векторов движения сторона кодирования может использовать код фиксированной длины, усеченный унарный код и т.д. Следовательно, сторона декодирования может использовать код фиксированной длины, усеченный унарный код и т.д., чтобы декодировать информацию о направлении разности векторов движения и получить информацию о направлении разности векторов движения, такую как вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх, вправо-вниз и т.д.
[434] В приведенных выше примерах при кодировании информации об амплитуде разности векторов движения сторона кодирования может использовать код фиксированной длины, усеченный унарный код и т.д. Следовательно, сторона декодирования может использовать код фиксированной длины, усеченный унарный код, и т.д., чтобы декодировать информацию об амплитуде разности векторов движения и получить информацию об амплитуде разности векторов движения, такую как 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя и другие конфигурации шага, и значение амплитуды А разности векторов движения определяется на основе конфигураций шага, таких как 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя.
[435] В возможной реализации сторона кодирования может также кодировать первый флаг подрежима и второй флаг подрежима расширенного углового режима взвешенного предсказания в кодированном битовом потоке. Первый флаг подрежима указывает на то, что на первую исходную информацию о движении накладывается разность векторов движения или на первую исходную информацию о движении не накладывается разность векторов движения. Второй флаг подрежима указывает на то, что на вторую исходную информацию о движении накладывается разность векторов движения или на вторую исходную информацию о движении не накладывается разность векторов движения.
[436] После приема кодированного битового потока текущего блока сторона декодирования может сначала проанализировать первый флаг подрежима и второй флаг подрежима расширенного углового режима взвешенного предсказания из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на то, что первая исходная информация о движении накладывается на разность векторов движения, информация о направлении и информация об амплитуде первой разности векторов движения анализируются из кодированного битового потока текущего блока, первая разность векторов движения определяется на основе информации о направлении и информации об амплитуде первой разности векторов движения, а затем определяется первая целевая информация о движении текущего блока на основе первой исходной информации о движении и первой разности векторов движения. Если первый флаг подрежима указывает на то, что первая исходная информация о движении не накладывается на разность векторов движения, информация о направлении и информация об амплитуде первой разности векторов движения не будут анализироваться, и первая исходная информация о движении может быть непосредственно использована как первая целевая информация о движении текущего блока. Если второй флаг подрежима указывает на то, что вторая исходная информация о движении накладывается на разность векторов движения, информация о направлении и информация об амплитуде второй разности векторов движения анализируются из кодированного битового потока текущего блока, и вторая разность векторов движения определяется на основе информации о направлении и информации об амплитуде второй разности векторов движения, и затем определяется вторая целевая информация о движении текущего блока на основе второй исходной информации о движении и второй разности векторов движения. Если второй флаг подрежима указывает на то, что вторая исходная информация о движении не накладывается на разность векторов движения, информация о направлении и информация об амплитуде второй разности векторов движения не будут анализироваться, и вторая исходная информация о движении может быть непосредственно использована как вторая целевая информация о движении текущего блока.
[437] В примере, когда первый флаг подрежима расширенного углового режима взвешенного предсказания представляет собой первое значение, это указывает на то, что первая исходная информация о движении накладывается на разность векторов движения. Когда первый флаг подрежима расширенного углового режима взвешенного предсказания имеет второе значение, это указывает на то, что первая исходная информация о движении не накладывается на разность векторов движения. Когда второй флаг подрежима расширенного углового режима взвешенного предсказания представляет собой первое значение, это указывает на то, что вторая исходная информация о движении накладывается на разность векторов движения. Когда второй флаг подрежима расширенного углового режима взвешенного предсказания представляет собой второе значение, это указывает на то, что вторая исходная информация о движении не накладывается на разность векторов движения. Первое значение и второе значение можно установить исходя из опыта, например, первое значение равно 1, а второе значение равно 0, или первое значение равно 0, а второе значение равно 1.
[438] В приведенных выше примерах сторона декодирования анализирует информацию о направлении первой разности векторов движения и информацию о направлении второй разности векторов движения из кодированного битового потока текущего блока. В практических приложениях информация о направлении первой разности векторов движения также может быть получена на основе угла взвешенного предсказания текущего блока, а информация о направлении второй разности векторов движения также может быть получена на основе угла взвешенного предсказания текущего блока.
[439] Например, угол взвешенного предсказания текущего блока представляет собой угловое направление, и на фиг. 6 показаны восемь угловых направлений. Угол взвешенного предсказания текущего блока представляет собой одно из восьми угловых направлений. Сторона декодирования может выбирать информацию о направлении, соответствующую угловому направлению, из всей информации о направлении (например, вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх, вправо-вниз) и непосредственно принимать информацию о направлении как информацию о направлении первой разности векторов движения и информацию о направлении второй разности векторов движения.
[440] Информация о направлении, соответствующая угловому направлению, может быть такой: разность углов между информацией о направлении и угловым направлением представляет собой заранее заданный угол или близкий к заранее заданному углу; или разница между угловой разницей и текущим углом является наименьшей среди всей информации о направлении, при этом угловая разница представляет собой разницу между информацией о направлении и угловым направлением. Заранее заданный угол можно установить в соответствии с опытом, например, заранее заданный угол может составлять 90 градусов.
[441] В примере сторона кодирования также может получить информацию о направлении первой разности векторов движения на основе угла взвешенного предсказания текущего блока и может получить информацию о направлении второй разности векторов движения на основе угла взвешенного предсказания текущего блока без определения информации о направлении первой разности векторов движения и информации о направлении второй разности векторов движения с использованием значения RDO. При передаче кодированного битового потока текущего блока на сторону декодирования сторона кодирования может не кодировать информацию о направлении первой разности векторов движения и информацию о направлении второй разности векторов движения, и сторона декодирования может получить информацию о направлении первой разности векторов движения и информацию о направлении второй разности векторов движения.
[442] Пример 16: в примере 15 сторона декодирования может анализировать информацию об амплитуде первой разности векторов движения и информацию об амплитуде второй разности векторов движения из кодированного битового потока. В возможной реализации сторона кодирования и сторона декодирования могут установить один и тот же список амплитуд разностей векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде первой разности векторов движения в списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды первой разности векторов движения. Сторона декодирования анализирует индекс амплитуды первой разности векторов движения из кодированного битового потока текущего блока и выбирает информацию об амплитуде, соответствующую индексу амплитуды, из списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде первой разности векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде второй разности векторов движения в списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды второй разности векторов движения. Сторона декодирования анализирует индекс амплитуды второй разности векторов движения из кодированного битового потока текущего блока и выбирает информацию об амплитуде, соответствующую индексу амплитуды, из списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде второй разности векторов движения.
[443] В другой возможной реализации сторона кодирования и сторона декодирования могут установить одни и те же по меньшей мере два списка амплитуд разностей векторов движения. Например, сторона кодирования и сторона декодирования устанавливают один и тот же список 1 амплитуды разности векторов движения и устанавливают один и тот же список 2 амплитуд разностей векторов движения. На основе информации указания списка амплитуд разностей векторов движения сторона кодирования выбирает целевой список амплитуд разностей векторов движения из всех списков амплитуд разностей векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде первой разности векторов движения в целевом списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды первой разности векторов движения.
[444] Сторона кодирования также может определить индекс амплитуды информации об амплитуде второй разности векторов движения в целевом списке амплитуд разностей векторов движения, и кодированный битовый поток может включать индекс амплитуды второй разности векторов движения. Сторона декодирования может анализировать индекс амплитуды второй разности векторов движения из кодированного битового потока текущего блока и выбирать информацию об амплитуде, соответствующую индексу амплитуды, из целевого списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде второй разности векторов движения.
[445] В примере, информация указания списка амплитуд разностей векторов движения может представлять собой информацию указания любого уровня, такую как информация указания уровня последовательности списка амплитуд разностей векторов движения, информация указания уровня изображения списка амплитуд разностей векторов движения, информация указания уровня слайса списка амплитуд разностей векторов движения, информация указания уровня тайла в списке амплитуд разностей векторов движения, информация указания уровня патча в списке амплитуд разностей векторов движения, информация указания уровня CTU в списке амплитуд разностей векторов движения, информация указания уровня LCU списка амплитуд разностей векторов движения, информация указания уровня блока списка амплитуд разностей векторов движения, информация указания уровня CU списка амплитуд разностей векторов движения, информация указания уровня PU списка амплитуд разностей векторов движения, что здесь не ограничивается. Для удобства описания в качестве примера взята информация указания уровня изображения из списка амплитуд разностей векторов движения, информация указания уровня изображения из списка амплитуд разностей векторов движения может быть awp_umve_offset_list_flag, a переключение списка амплитуд разностей векторов движения контролируется awp_umve_offset_list_flag.
[446] Например, сторона кодирования и сторона декодирования могут составить список 1 амплитуд разностей векторов движения и список 2 амплитуд разностей векторов движения, как показано в таблице 3 и таблице 4. Обработка бинаризации может быть выполнена для списка 1 амплитуд разностей векторов движения, и обработка бинаризации может быть выполнена для списка 2 амплитуд разностей векторов движения. Для этого способа обработки нет ограничений. Например, усеченный унарный код используется для списка 1 амплитуд разностей векторов движения, а усеченный унарный код используется для списка 2 амплитуд разностей векторов движения; или усеченный унарный код используется для списка 1 амплитуд разностей векторов движения, а код фиксированной длины используется для списка 2 амплитуд разностей векторов движения; или код фиксированной длины используется для списка 1 разности амплитуд векторов движения, и усеченный унарный код используется для списка 2 амплитуд разностей векторов движения, который не ограничен, как показано в таблице 5 и таблице 6.
[447] В приведенном выше сценарии применения переключение списка амплитуд разностей векторов движения управляется awp_umve_offset_list_flag, то есть управляется для принятия списка амплитуд разностей векторов движения, показанного в таблице 3, или списка амплитуд разностей векторов движения, показанного в таблице 4. Например, если awp_umve_offset_list_flag является первым значением, то список амплитуд разностей векторов движения, показанный в таблице 3, представляет собой целевой список амплитуд разностей векторов движения; если awp_umve_offset_list_flag является вторым значением, то список амплитуд разностей векторов движения, показанный в таблице 4, является целевым списком амплитуд разностей векторов движения. Альтернативно, если awp_umve_offset_list_flag является вторым значением, то список амплитуд разностей векторов движения, показанный в таблице 3, является целевым списком амплитуд разностей векторов движения; если awp_umve_offset_list_flag является первым значением, то список амплитуд разностей векторов движения, показанный в таблице 4, является целевым списком амплитуд разностей векторов движения.
[448] Когда используется целевой список амплитуд разностей векторов движения, показанный в таблице 3, сторона кодирования использует способ бинаризации, показанный в таблице 5, для кодирования, а сторона декодирования использует способ бинаризации, показанный в таблице 5, для декодирования. Когда используется целевой список амплитуд разностей векторов движения, показанный в таблице 4, сторона кодирования использует способ бинаризации, показанный в таблице 6, для кодирования, а сторона декодирования использует способ бинаризации, показанный в таблице 6, для декодирования.
[449] Пример 17: на основе примера 15 или 16 для первой разности векторов движения и второй разности векторов движения соответствующий синтаксис для углового взвешенного предсказания с уточнением вектора движения (AWP_MVR) будет описан ниже в сочетании с конкретными сценариями применения.
[450] Сценарий 1 применения: в таблице 7 показан пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, a AwpFlag указывает, находится ли текущий блок в режиме AWP.
[451] awp_idx (индекс режима углового взвешенного предсказания) представляет собой значение индекса режима углового взвешенного предсказания в режиме пропуска или в прямом режиме, и значение AwpIdx может быть равно значению awp_idx. Если в битовом потоке нет awp_idx, значение AwpIdx равно 0.
[452] awp_cand_idx0 (индекс первой информации о движении углового режима взвешенного предсказания) представляет собой значение индекса первой информации о движении углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx0 равно значению awp_cand_idx0. Если в битовом потоке нет awp_cand_idx0, значение AwpCandIdx0 равно 0.
[453] awp_cand_idx1 (индекс второй информации о движении углового режима взвешенного предсказания) представляет собой значение индекса второй информации о движении углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx1 равно значению awp_cand_idx1. Если в битовом потоке нет awp_cand_idx1, значение AwpCandIdx1 равно 0.
[454] awp_mvd_flag (флаг расширенного углового режима взвешенного предсказания) может быть двоичной переменной. Когда awp_mvd_flag является первым значением (например, 1), это указывает на то, что текущий блок находится в расширенном угловом режиме взвешенного предсказания; когда awp_mvd_flag является вторым значением (например, 0), это указывает на то, что текущий блок находится в нерасширенном угловом режиме взвешенного предсказания. В примере значение AwpMvdFlag может быть равно значению awp_mvd_flag. Если в битовом потоке нет awp_mvd_flag, значение AwpMvdFlag равно 0.
[455] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) может быть двоичной переменной. Когда awp_mvd_sub_flag0 является первым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна накладываться на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. В примере значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.
[456] 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.
[457] awp_mvd_dir0 (значение индекса направления разности векторов движения для первой информации о движении) представляет собой значение индекса направления для разности векторов движения для первой информации о движении расширенного углового режима взвешенного предсказания. В примере значение AwpMvdDir0 может быть равно значению awp_mvd_dir0. Если в битовом потоке нет awp_mvd_dir0, значение AwpMvdDir0 может быть равно 0.
[458] awp_mvd_step0 (значение индекса шага разности векторов движения первой информации о движении) представляет собой значение индекса шага разности векторов движения первой информации о движении расширенного углового режима взвешенного предсказания. В примере значение AwpMvdStep0 может быть равно значению awp_mvd_step0. Если в битовом потоке нет awp_mvd_step0, значение AwpMvdStep0 может быть равно 0.
[459] awp_mvd_dir1 (значение индекса направления разности векторов движения второй информации о движении) представляет собой значение индекса направления разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. В примере значение AwpMvdDir1 может быть равно значению awp_mvd_dir1. Если в битовом потоке нет awp_mvd_dir1, значение AwpMvdDir1 может быть равно 0.
[460] awp_mvd_step1 (значение индекса шага разности векторов движения второй информации о движении) представляет собой значение индекса шага разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. В примере значение AwpMvdStep1 может быть равно значению awp_mvd_step1. Если в битовом потоке нет awp_mvd_step1, значение AwpMvdStep1 может быть равно 0.
[461] Сценарий 2 применения: таблица 8 показывает пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, a AwpFlag указывает, находится ли текущий блок в режиме AWP.
[462] Для awp_idx, awp_cand_idx0 и awp_cand_idx1 может быть сделана ссылка на сценарий 1 применения, и здесь не приводится избыточное описание.
[463] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) может быть двоичной переменной. Когда awp_mvd_sub_flag0 является первым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна накладываться на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. В примере значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.
[464] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) может быть двоичной переменной. Когда awp_mvd_sub_flag1 является первым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания должна накладываться на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. В примере значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, значение AwpMvdSubFlag1 может быть равно 0.
[465] Для awp_mvd_dir0, awp_mvd_step0, awp_mvd_dir1 и awp_mvd_step1 можно сделать ссылку на сценарий 1 применения.
[466] В примере разница между сценарием 1 применения и сценарием 2 применения включает: в сценарии 1 применения присутствует синтаксис awp_mvd_flag, но в сценарии 2 применения синтаксис awp_mvd_flag отсутствует. В сценарии 1 применения расширенный угловой режим взвешенного предсказания может управляться посредством awp_mvd_flag, то есть расширенный угловой режим взвешенного предсказания управляется главным переключателем.
[467] Сценарий 3 применения: для сценариев 1 и 2 применения можно объединить режим AWP и режим AWP_MVR, то есть добавить 0 диапазон к диапазону без кодирования бита флага, который должен быть включен или нет. Например, разность векторов движения поддерживает направления, в том числе вверх, вниз, влево и вправо, и разность векторов движения поддерживает следующие конфигурации шага: 0 пикселей, 1/4 пикселя, 1/2 пикселя, 1 пиксель, 2 пикселя, 4 пикселя, то есть добавляют одну конфигурацию шага 0 пикселей. На основе этого, таблица 7 или 8 может быть обновлена до таблицы 9, и может быть сделана ссылка на таблицу 7 для соответствующего синтаксиса.
[468] В примере для каждого сценария применения порядок синтаксических элементов в соответствующем синтаксисе может быть скорректирован соответствующим образом. Например, для соответствующего синтаксиса, показанного в таблице 8, порядок синтаксических элементов может быть скорректирован соответствующим образом, чтобы получить соответствующий синтаксис, показанный в таблице 10.
[469] Из таблицы 8 и таблицы 10 видно, что порядок awp_cand_idx0 и awp_cand_idx1 можно настроить. Например, в таблице 10 способы анализа awp_cand_idx0 и awp_cand_idx1 можно настроить на основе значений одного или более из AwpMvdSubFlag0, AwpMvdSubFlag1, AwpMvdDir0, AwpMvdStep0, AwpMvdDir1 и AwpMvdStep1. Например, когда по меньшей мере один из AwpMvdSubFlag0 и AwpMvdSubFlag1 равен 1, способы анализа awp_cand_idx0 и awp_cand_idx1 полностью согласованы, в противном случае способы анализа несовместимы.
[470] В примере AwpMvdSubFlag0 указывает, накладывается ли первая исходная информация о движении на MVD. Если да, значение MVD, соответствующее первой исходной информации о движении, определяют на основе AwpMvdDir0 и AwpMvdStep0. AwpMvdSubFlag1 указывает, накладывается ли вторая исходная информация о движении на MVD. Если да, MVD, соответствующую второй исходной информации о движении, определяют на основе AwpMvdDir1 и AwpMvdStep1. Очевидно, что если одна из первой исходной информации о движении и второй исходной информации о движении накладывается на MVD, а другая не накладывается на MVD, или значения MVD, накладываемые на первую исходную информацию о движении и вторую исходную информацию о движении, различны, допускается, чтобы первая исходная информация о движении и вторая исходная информация о движении были одинаковыми. Awp_cand_idx0 представляет собой значение индекса первой исходной информации о движении, a awp_cand_idx1 представляет значение индекса второй исходной информации о движении, поэтому способы анализа awp_cand_idx0 и awp_cand_idx1 полностью согласованы. To есть первую исходную информацию о движении, соответствующую awp_cand_idx0, анализируют из полного списка кандидатов информации о движении, и вторую исходную информацию о движении, соответствующую awp_cand_idx1, анализируют из полного списка кандидатов информации о движении.
[471] Если ни первая исходная информация о движении, ни вторая исходная информация о движении не накладываются на MVD, или первая исходная информация о движении и вторая исходная информация о движении не накладываются на одну и ту же MVD, первая исходная информация о движении и вторая исходная информация о движении различны. Исходя из этого, способы анализа awp_cand_idx0 и awp_cand_idx1 несовместимы. Первую исходную информацию о движении, соответствующую awp_cand_idx0, анализируют из полного списка кандидатов информации о движении. Поскольку вторая исходная информация о движении отличается от первой исходной информации о движении, вместо анализа второй исходной информации о движении, соответствующей awp_cand_idx1, из полного списка кандидатов информации о движении, но на основе исключения первой исходной информации о движении, вторую исходную информацию о движении, соответствующую awp_cand_idx1, анализируют из неполного списка кандидатов информации о движении.
[472] На основе списка AwpUniArray кандидатов информации о движении две части информации о возможном движении выбирают из AwpUniArray и определяют первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе двух частей информации о возможном движении. Например, сторона декодирования анализирует AwpCandIdx0 и AwpCandIdx1 из кодированного битового потока и назначает (AwpCandIdx0+1)-ю часть информации о движении в AwpUniArray как mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1. (AwpCandIdx1+1)-я часть информации о движении в AwpUniArray назначается как mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1. (AwpCandIdx0+1)-я часть информации о движении в AwpUniArray также может быть назначена как mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1, a (AwpCandIdx1+1)-я часть информации о движении в AwpUniArray может быть назначена как mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1.
[473] AwpCandIdx0 представляет значение индекса первой целевой информации о движении. Следовательно, (AwpCandIdx0+1)-я часть информации о движении в AwpUniArray может быть назначена первой целевой информации о движении. Например, если значение AwpCandIdx0 равно 0, первая часть информации о движении в AwpUniArray назначается первой целевой информации о движении и т.д.
[474] mvAwp0L0, mvAwp0L1, RefIdxAwp0L0, RefIdxAwp0L1 объединяются как первая целевая информация о движении, то есть первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информацию об однонаправленном движении, указывающую на список List1 опорных изображений.
[475] Если (AwpCandIdx0+1)-я часть информации о движении в AwpUniArray представляет собой информацию об однонаправленном движении, указывающую на список List0 опорных изображений, то первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информация об однонаправленном движении, указывающая на список List1 опорных изображений, является нулевой.
[476] Если (AwpCandIdx0+1)-я часть информации о движении в AwpUniArray представляет собой информацию об однонаправленном движении, указывающую на список List1 опорных изображений, то первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List1 опорных изображений, и информация об однонаправленном движении, указывающая на список List0 опорных изображений, является нулевой.
[477] Например, mvAwp0L0 и RefIdxAwp0L0 представляют информацию об однонаправленном движении, указывающую на список List0 опорных изображений, в первой целевой информации о движении, a mvAwp0L1 и RefIdxAwp0L1 представляют информацию об однонаправленном движении, указывающую на список List1 опорных изображений, в первой целевой информации о движении.
[478] Если RefIdxAwp0L0 действителен, это указывает, что информация об однонаправленном движении, указывающая на список List0 опорных изображений, действительна. Следовательно, режим предсказания первой целевой информации о движении - это PRED_List0. Если RefIdxAwp0L1 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на список List1 опорных изображений, действительна. Следовательно, режим предсказания первой целевой информации о движении - PRED_List1.
[479] В примере AwpCandIdx1 представляет значение индекса второй целевой информации о движении. Следовательно, (AwpCandIdx1+1)-я часть информации о движении в AwpUniArray может быть назначена второй целевой информации о движении. Например, если значение AwpCandIdx1 равно 0, первая часть информации о движении в AwpUniArray назначается второй целевой информации о движении и т.д.
[480] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0, RefIdxAwp1L1 объединяются как вторая целевая информация о движении, то есть вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информацию об однонаправленном движении, указывающую на список List1 опорных изображений.
[481] Если (AwpCandIdx1+1)-я часть информации о движении в AwpUniArray представляет собой информацию об однонаправленном движении, указывающую на список List0 опорных изображений, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List0 опорных изображений, и информация об однонаправленном движении, указывающая на список List1 опорных изображений, является нулевой.
[482] Если (AwpCandIdx1+1)-я часть информации о движении в AwpUniArray представляет собой информацию об однонаправленном движении, указывающую на список List1 опорных изображений, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на список List1 опорных изображений, и информация об однонаправленном движении, указывающая на список List0 опорных изображений, является нулевой.
[483] В примере mvAwp1L0 и RefIdxAwp1L0 представляют информацию об однонаправленном движении, указывающую на список List0 опорных изображений во второй целевой информации о движении, a mvAwp1L1 и RefIdxAwp1L1 представляют информацию об однонаправленном движении, указывающую на список List1 опорных изображений во второй целевой информации о движении.
[484] Если RefIdxAwp1L0 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на список List0 опорных изображений, действительна. Следовательно, режим предсказания второй целевой информации о движении - это PRED_List0. Если RefIdxAwp1L1 действителен, это указывает на то, что информация об однонаправленном движении, указывающая на список List1 опорных изображений, действительна. Следовательно, режим предсказания второй целевой информации о движении - PRED_List1.
[485] В некоторых приложениях, поскольку пространство для хранения опорных изображений ограничено, если текущее изображение (слайс) является В-изображением (слайсом), а РОС опорных изображений в списке List0 опорных изображений и списке List1 опорных изображений одинаковы, т.е. представляют одно и то же изображение, чтобы максимизировать эффективность режима AWP, синтаксические элементы двух передаваемых частей информации о движении (первой целевой информации о движении и второй целевой информации о движении) могут быть перестроены. То есть информация о движении может быть передана способом этого примера. С другой стороны, для Р-изображения (слайса), если два вектора движения, указывающие на одно и то же изображение, ограничены конкретным диапазоном без увеличения предела полосы частот Р-изображения (слайса), режим AWP может быть применен к Р-изображению (слайсу).
[486] Ввиду вышеизложенного, в этом примере, когда опорное изображение, указанное первой целевой информацией о движении, и опорное изображение, указанное второй целевой информацией о движении, являются одним и тем же изображением, то есть два вектора движения режима AWP указывают на одно и то же изображение, то вектор движения второй целевой информации о движении может быть получен из вектора движения первой целевой информации о движении. То есть одна (например, первая целевая информация о движении) из двух частей информации о движении передает значение индекса, а другая (например, вторая целевая информация о движении) из двух частей информации о движении далее накладывается на MVD на основе первой целевой информации о движении. Можно сослаться на пример 15 или 16 для способа кодирования MVD.
[487] В таблице 11 показан пример синтаксических элементов, где awp_mvd_dir0 представляет значение индекса направления разности векторов движения первой информации о движении в ограниченном угловом режиме взвешенного предсказания. Значение AwpMvdDir0 равно значению awp_mvd_dir0. Если в битовом потоке нет awp_mvd_dir0, значение AwpMvdDir0 равно 0. Awp_mvd_step0 представляет значение индекса шага разности векторов движения первой информации о движении ограниченного углового режима взвешенного предсказания. Значение AwpMvdStep0 равно значению awp_mvd_step0. Если в битовом потоке нет awp_mvd_step0, значение AwpMvdStep0 равно 0. Awp_mvd_dir1 представляет значение индекса направления разности векторов движения второй информации о движении ограниченного углового режима взвешенного предсказания. Значение AwpMvdIdx1 равно значению awp_mvd_dir1. Если в битовом потоке нет awp_mvd_dir1, значение AwpMvdDir1 равно 0. Awp_mvd_step1 представляет значение индекса шага разности векторов движения второй информации о движении ограниченного углового режима взвешенного предсказания. Значение AwpMvdStep1 равно значению awp_mvd_step1. Если в битовом потоке нет awp_mvd_step1, значение AwpMvdStep1 равно 0.
Таким образом, исходная информация о движении (исходная информация о движении включает исходный вектор движения) может быть определена на основе awp_cand_idx. Первая разность MVD0 векторов движения и вторая разность MVD1 векторов движения могут быть определены на основе awp_mvd_dir0 и awp_mvd_step0. На основе этого, первый целевой вектор движения определяется на основе исходного вектора движения и первой разности MVD0 векторов движения, например, как исходный вектор движения + MVD0. Второй целевой вектор движения определяется на основе первого целевого вектора движения и второй разности MVD1 векторов движения, например, как первый целевой вектор движения + MVD1. После получения первого целевого вектора движения первую целевую информацию о движении получают на основе первого целевого вектора движения. Первая целевая информация о движении включает первый целевой вектор движения. После получения второго целевого вектора движения получают вторую целевую информацию о движении на основе второго целевого вектора движения. Вторая целевая информация о движении включает второй целевой вектор движения.
[488] В другом примере первый целевой вектор движения определяется на основе исходного вектора движения и первой разности MVD0 векторов движения, например, как исходный вектор движения + MVD0. Второй целевой вектор движения определяется на основе исходного вектора движения и второй разности MVD1 векторов движения, например, как исходный вектор движения + MVD1. После получения первого целевого вектора движения первую целевую информацию о движении получают на основе первого целевого вектора движения, и первая целевая информация о движении включает первый целевой вектор движения. После получения второго целевого вектора движения получают вторую целевую информацию о движении на основе второго целевого вектора движения, и вторая целевая информация о движении включает второй целевой вектор движения.
[489] В таблице 12 показан другой пример синтаксических элементов, где awp_mvd_dir и awp_mvd_step формируют синтаксическое выражение MVD второй информации о движении (т.е. второй целевой информации о движении) в первой информации о движении (т.е. первой целевой информации о движении). Awp_mvd_dir представляет значение индекса направления разности векторов движения ограниченного углового режима взвешенного предсказания. Значение AwpMvdDir равно значению awp_mvd_dir. Если в битовом потоке нет awp_mvd_dir, значение AwpMvdDir равно 0. Awp_mvd_step представляет значение индекса шага разности векторов движения ограниченного углового режима взвешенного предсказания. Значение AwpMvdStep равно значению awp_mvd_step. Если в битовом потоке нет awp_mvd_step, значение AwpMvdStep равно 0.
[490] Таким образом, исходная информация о движении (исходная информация о движении включает исходный вектор движения) может быть определена на основе awp_cand_idx, a MVD может быть определена на основе awp_mvd_dir и awp_mvd_step.
[491] На основе этого, первый целевой вектор движения определяется на основе исходного вектора движения. Например, первый целевой вектор движения является исходным вектором движения. Второй целевой вектор движения определяется на основе первого целевого вектора движения и MVD, например, как первый целевой вектор движения + MVD. После получения первого целевого вектора движения первую целевую информацию о движении получают на основе первого целевого вектора движения, и первая целевая информация о движении включает первый целевой вектор движения. После получения второго целевого вектора движения получают вторую целевую информацию о движении на основе второго целевого вектора движения, и вторая целевая информация о движении включает второй целевой вектор движения.
[492] В другом примере первый целевой вектор движения определяется на основе исходного вектора движения и MVD, например, как исходный вектор движения + MVD. Второй целевой вектор движения определяется на основе исходного вектора движения и MVD, например, как исходный вектор движения - MVD. Альтернативно, первый целевой вектор движения определяется на основе исходного вектора движения и MVD, например, как исходный вектор движения - MVD. Второй целевой вектор движения определяется на основе исходного вектора движения и MVD, например, как исходный вектор движения + MVD. После получения первого целевого вектора движения первую целевую информацию о движении получают на основе первого целевого вектора движения, и первая целевая информация о движении включает первый целевой вектор движения. После получения второго целевого вектора движения вторую целевую информацию о движении получают на основе второго целевого вектора движения, и вторая целевая информация о движении включает второй целевой вектор движения. Подводя итог, можно сказать, что, когда MVD действует в двух противоположных направлениях одновременно, можно получить две части целевой информации о движении на основе исходной информации о движении.
[493] В возможной реализации синтаксическое выражение MVD также может быть отдельным выражением горизонтальной компоненты и вертикальной компоненты. В таблице 13 показан пример отдельного выражения. Awp_mv_diff_x_abs является абсолютным значением разности горизонтальных компонент вектора движения ограниченного углового режима взвешенного предсказания, а awp_mv_diff_у_abs представляет собой абсолютное значение разности вертикальных компонент вектора движения ограниченного углового режима взвешенного предсказания. Awp_mv_diff_x_sign представляет значение знака разности горизонтальных компонент вектора движения ограниченного углового режима взвешенного предсказания, a awp_mv_diff_у_sign представляет значение знака разности вертикальных компонент вектора движения ограниченного углового режима взвешенного предсказания.
[494] Например, в качестве абсолютного значения разности векторов движения (абсолютное значение разности горизонтальных компонент вектора движения или абсолютное значение разности вертикальных компонент вектора движения) ограниченного углового режима взвешенного предсказания значение AwpMvDiffXAbs равно значению awp_mv_diff_x_abs, а значение AwpMvDiffYAbs равно значению awp_mv_diff_y_abs.
[495] Например, в качестве знакового бита разности векторов движения (знакового бита разности горизонтальных компонент вектора движения или знакового бита разности вертикальных компонент вектора движения) ограниченного углового режима взвешенного предсказания значение AwpMvDiffXSign равно значению awp_mv_diff_x_sign, а значение AwpMvDiffYSign равно значению awp_mv_diff_у_sign. Если в битовом потоке нет awp_mv_diff_x_sign или awp_mv_diff_у_sign, значение AwpMvDiffXSign или AwpMvDiffYSign равно 0. Если значение AwpMvDiffXSign равно 0, AwpMvDiffX равно AwpMvDiffXAbs; если значение AwpMvDiffXSign равно 1, AwpMvDiffX равно - AwpMvDiffXAbs. Если значение AwpMvDiffYSign равно 0, AwpMvDiffY равно AwpMvDiffYAbs; если значение AwpMvDiffYSign равно 1, AwpMvDiffY равно - AwpMvDiffYAbs. Диапазон значений AwpMvDiffX и AwpMvDiffY составляет от -32768 до 32767.
[496] В другой возможной реализации в таблице 14 показан другой пример отдельного выражения. На основе таблицы 14 можно определить, |MVD_X| больше ли 0, где |…| является знаком абсолютного значения, a MVD_X представляет горизонтальную компоненту MVD; можно определить, |MVD_Y| больше ли 0, где |…| является знаком абсолютного значения, MVD_Y представляет вертикальную компоненту MVD. Если |MVD_X| больше 0, можно определить, |MVD_X| больше ли 1. Если |MVD_Y| больше 0, можно определить, |MVD_Y| больше ли 1. Если |MVD_X| больше 1, кодируют |MVD_X|-2. Если |MVD_X| больше 0, кодируют знаковый бит MVD_X. Если |MVD_Y| больше 1, кодируют |MVD_Y|-2. Если |MVD_Y| больше 0, кодируют знаковый бит MVD_Y.
[497] Пример 19: в примерах с 1 по 3 сторона кодирования/сторона декодирования должны получить список кандидатов информации о движении, например, список кандидатов информации о движении получают следующим образом: получают по меньшей мере одну часть доступной информации о движении, добавляемую в список кандидатов информации о движении; список кандидатов информации о движении получают на основе по меньшей мере одной части доступной информации о движении. В примере по меньшей мере одна часть доступной информации о движении включает, не ограничиваясь этим, по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; заранее заданная информация о движении. Можно сделать ссылку на пример 13 для способа получения доступной информации о движении, и здесь не приводится избыточное описание.
[498] В примере получение списка кандидатов информации о движении на основе по меньшей мере одной части доступной информации о движении может включать: для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов информации о движении, добавление доступной информации о движении в список кандидатов информации о движении. Например, для доступной информации о движении, независимо от того, является ли доступная информация о движении однонаправленной или двунаправленной, доступная информация о движении добавляется в список кандидатов информации о движении. В отличие от примеров 13 и 14, когда доступная информация о движении представляет собой информацию о двунаправленном движении, информацию о двунаправленном движении не требуется разделять на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении, и информация о двунаправленном движении непосредственно добавляется в список кандидатов информации о движении. То есть список кандидатов информации о движении может включать информацию о двунаправленном движении.
[499] В примере, когда доступная информация о движении добавляется в список кандидатов информации о движении, может выполняться операция проверки на дублирование для доступной информации о движении, или операция проверки на дублирование может не выполняться для доступной информации о движении, что не ограничивается. Если операция проверки на дублирование может выполняться для доступной информации о движении, проверка на дублирование может выполняться на основе List+refIdx+MV_x+MV_y или на основе РОС+MV_x+MV_y. Можно обратиться к примеру 14 для способа проверки на дублирование, который подробно не описывается.
[500] Пример 20: в примерах с 1 по 3 после получения списка кандидатов информации о движении сторона кодирования/сторона декодирования может получить первую целевую информацию о движении и вторую целевую информацию о движении текущего блока на основе списка кандидатов информации о движении. Когда определено, что опорное изображение, указанное первой целевой информацией о движении, является таким же, что и опорное изображение, указанное второй целевой информацией о движении, вся информация о возможном движении в списке кандидатов информации о движении может быть информацией о двунаправленном движении.
[501] В примере, если определено, что опорное изображение, указанное первой целевой информацией о движении, совпадает с опорным изображением, указанным второй целевой информацией о движении, то есть два вектора движения режима AWP указывают на одно и то же изображение, то доступная информация о движении, добавляемая в список кандидатов информации о движении при установлении списка кандидатов информации о движении, представляет собой информацию о двунаправленном движении. На основе этого для стороны кодирования одна часть информации о возможном движении может быть выбрана из списка кандидатов информации о движении с использованием значения стоимости RDO. Когда сторона кодирования передает кодированный битовый поток текущего блока на сторону декодирования, кодированный битовый поток может нести значение индекса такой информации о возможном движении в списке кандидатов информации о движении. Сторона декодирования может выбрать одну часть информации о возможном движении из списка кандидатов информации о движении на основе значения индекса.
[502] Пример 21: в примере 4 сторона кодирования/сторона декодирования должны получить список кандидатов вектора движения, например, сторона кодирования/декодирования получает информацию опорного изображения (т.е. информацию опорного изображения текущего блока) и список кандидатов вектора движения, соответствующий информации опорного изображения (то есть список кандидатов вектора движения текущего блока), то есть список кандидатов вектора движения устанавливается для информации опорного изображения. В примере информация опорного изображения может включать первую информацию опорного изображения и вторую информацию опорного изображения. Следовательно, список кандидатов вектора движения может включать список кандидатов вектора движения, соответствующий первой информации опорного изображения (такой как индекс опорного изображения и направление опорного изображения), и список кандидатов вектора движения, соответствующий второй информации опорного изображения (такой как индекс опорного изображения и направление опорного изображения). Первая информация опорного изображения представляет собой информацию опорного изображения, соответствующую первому целевому вектору движения, а вторая информация опорного изображения представляет собой информацию об опорном изображении, соответствующую второму целевому вектору движения.
[503] В примере сторона кодирования может получить первую информацию опорного изображения и вторую информацию опорного изображения. Например, на основе значения стоимости RDO первая информация опорного изображения и вторая информация опорного изображения могут быть выбраны из одного списка опорных изображений, или первая информация опорного изображения и вторая информация опорного изображения могут быть выбраны из двух списков опорных изображений. Например, двумя списками опорных изображений являются список List0 опорных изображений и список List1 опорных изображений соответственно, и первую информацию опорного изображения выбирают из списка List0 опорных изображений, а вторую информацию опорного изображения выбирают из списка List1 опорных изображений.
[504] В примере сторона декодирования может получить первую информацию опорного изображения и вторую информацию опорного изображения. Например, на основе информации индекса в кодированном битовом потоке текущего блока первая информация опорного изображения и вторая информация опорного изображения могут быть выбраны из одного списка опорных изображений, или первая информация опорного изображения и вторая информация опорного изображения могут быть выбраны из двух списков опорных изображений. Например, двумя списками опорных изображений являются список List0 опорных изображений и список List1 опорных изображений соответственно. На основе информации индекса первой информации опорного изображения первую информацию опорного изображения выбирают из списка List0 опорных изображений, и на основе информации индекса второй информации опорного изображения вторую информацию опорного изображения выбирают из списка List1 опорных изображений.
[505] Выше приведен только пример получения первой информации опорного изображения и второй информации опорного изображения, которые здесь не ограничиваются.
[506] В возможной реализации первая информация опорного изображения и вторая информация опорного изображения могут быть одинаковыми. В этом случае опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются одним и тем же изображением, и список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения, являются одним и тем же списком кандидатов вектора движения. То есть сторона кодирования/сторона декодирования получает один список кандидатов вектора движения.
[507] В другой возможной реализации первая информация опорного изображения и вторая информация опорного изображения могут различаться. В этом случае опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются разными изображениями, и список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения, представляют собой различные списки кандидатов вектора движения. То есть сторона кодирования/сторона декодирования получает два разных списка кандидатов вектора движения.
[508] Для удобства описания либо один список кандидатов вектора движения, либо два разных списка кандидатов вектора движения обозначаются как список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения.
[509] На основе этого первый целевой вектор движения и второй целевой вектор движения текущего блока могут быть получены следующими способами.
[510] В способе 1 выбирают возможный вектор движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, в качестве первого целевого вектора движения текущего блока и выбирают возможный вектор движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения, в качестве второго целевого вектора движения текущего блока. Второй целевой вектор движения может отличаться от первого целевого вектора движения.
[511] На основе принципа RDO сторона кодирования может выбрать возможный вектор движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, в качестве первого целевого вектора движения текущего блока, и выбрать возможный вектор движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения, в качестве второго целевого вектора движения текущего блока, что здесь не ограничивается.
[512] В возможной реализации, когда сторона кодирования передает кодированный битовый поток стороне декодирования, кодированный битовый поток может нести информацию а указания и информацию b указания. Информация а указания используется для указания значения 1 индекса первого целевого вектора движения текущего блока. Значение 1 индекса указывает, какой возможный вектор движения в списке кандидатов вектора движения, соответствующем первой информации опорного изображения, является первым целевым вектором движения. Информация b указания используется для указания значения 2 индекса второго целевого вектора движения текущего блока. Значение 2 индекса указывает, какой возможный вектор движения в списке кандидатов вектора движения, соответствующем второй информации опорного изображения, является вторым целевым вектором движения.
[513] После приема кодированного битового потока сторона декодирования анализирует информацию а указания и информацию b указания из кодированного битового потока. На основе информации а указания сторона декодирования выбирает возможный вектор движения, соответствующий значению 1 индекса, из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, и возможный вектор движения используется в качестве первого целевого вектора движения текущего блока. На основе информации b указания сторона декодирования выбирает возможный вектор движения, соответствующий значению 2 индекса, из списка кандидатов вектора движения, соответствующего второй информации опорного изображения, и возможный вектор движения используется в качестве второго целевого вектора движения для текущего блока.
[514] В способе 2 выбирают возможный вектор движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, в качестве первого исходного вектора движения текущего блока и выбирают возможный вектор движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения, в качестве второго исходного вектора движения текущего блока. Например, первый исходный вектор движения может отличаться от второго исходного вектора движения, или первый исходный вектор движения и второй исходный вектор движения также могут быть одинаковыми. Затем первый целевой вектор движения текущего блока определяют на основе первого исходного вектора движения, а второй целевой вектор движения текущего блока определяют на основе второго исходного вектора движения. В примере первый целевой вектор движения может отличаться от второго целевого вектора движения.
[515] Что касается того, как определить целевой вектор движения на основе исходного вектора движения, в примере приведено решение углового взвешенного предсказания с уточнением вектора движения (AWP_MVR). Например, может быть получена первая разность векторов движения (MVD), соответствующая первому исходному вектору движения, и первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения (то есть сумму первой разности вектора движения и первого исходного вектора движения принимают в качестве первого целевого вектора движения); или первый исходный вектор движения может быть определен как первый целевой вектор движения. Кроме того, может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения, и второй целевой вектор движения может быть определен на основе второй разности векторов движения и второго исходного вектора движения (то есть сумму второй разности векторов движения и второго исходного вектора движения принимают в качестве второго целевого вектора движения); или второй исходный вектор движения определяют как второй целевой вектор движения.
[516] В примере могут быть получены информация о направлении и информация об амплитуде первой разности векторов движения, и первая разность векторов движения может быть определена на основе информации о направлении и информации об амплитуде первой разности векторов движения. Кроме того, могут быть получены информация о направлении и информация об амплитуде второй разности векторов движения, и может быть определена вторая разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения.
[517] Например, для стороны декодирования информация о направлении первой разности векторов движения может быть получена следующим образом: сторона декодирования анализирует информацию о направлении первой разности векторов движения из кодированного битового потока текущего блока; или сторона декодирования получает информацию о направлении первой разности векторов движения на основе угла взвешенного предсказания текущего блока. Для стороны декодирования информация о направлении второй разности векторов движения может быть получена следующим образом: сторона декодирования анализирует информацию о направлении второй разности векторов движения из кодированного битового потока текущего блока; или сторона декодирования получает информацию о направлении второй разности векторов движения на основе угла взвешенного предсказания текущего блока.
[518] Например, для стороны декодирования информация об амплитуде первой разности векторов движения может быть получена посредством анализа информации об амплитуде первой разности векторов движения из кодированного битового потока текущего блока, а информация об амплитуде второй разности векторов движения может быть получена посредством анализа информации об амплитуде второй разности векторов движения из кодированного битового потока текущего блока.
[519] В возможной реализации сторона кодирования и сторона декодирования могут согласовывать информацию о направлении и информацию об амплитуде разности векторов движения. Если информация о направлении указывает направление вправо, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (0, -А). Если информация о направлении указывает направление влево, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (0, А). Если информация о направлении указывает направление вправо-вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, А). Если информация о направлении указывает направление влево-вверх, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, А). Если информация о направлении указывает направление влево-вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (-А, -А). Если информация о направлении указывает направление вправо-вниз, а информация об амплитуде указывает амплитуду А, то разность векторов движения равна (А, -А). Выше приведены только примеры, и информация о направлении и информация об амплитуде здесь не ограничиваются.
[520] В качестве примера для соответствующего введения разности векторов движения можно сделать ссылку на пример 15, и здесь не приводится избыточное описание.
[521] На основе значения стоимости RDO сторона кодирования может выбрать первый исходный вектор движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, и выбрать второй исходный вектор движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения. На основе значения стоимости RDO сторона кодирования может определить информацию о направлении и информацию об амплитуде первой разности векторов движения, соответствующей первому исходному вектору движения, и определить информацию о направлении и информацию об амплитуде второй разности векторов движения, соответствующей второму исходному вектору движения. При передаче кодированного битового потока на сторону декодирования сторона кодирования кодирует значение индекса первого исходного вектора движения в списке кандидатов вектора движения, соответствующем первой информации опорного изображения, и кодирует значение индекса второго исходного вектора движения в списке кандидатов вектора движения, соответствующем второй информации опорного изображения, информацию о направлении и информацию об амплитуде первой разности векторов движения, а также информацию о направлении и информацию об амплитуде второй разности векторов движения в кодированный битовый поток.
[522] После приема кодированного битового потока текущего блока на основе значения индекса первого исходного вектора движения в списке кандидатов вектора движения, соответствующем первой информации опорного изображения, сторона декодирования выбирает первый исходный вектор движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, и на основе значения индекса второго исходного вектора движения в списке кандидатов вектора движения, соответствующем второй информации опорного изображения, сторона декодирования выбирает второй исходный вектор движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения.
[523] Сторона декодирования также может анализировать информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации о направлении и информации об амплитуде, а также анализировать информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации о направлении и информации об амплитуде.
[524] В примере кодированный битовый поток может также включать первую информацию опорного изображения, соответствующую первому исходному вектору движения, и сторона декодирования может определить первую исходную информацию о движении на основе первого исходного вектора движения и первой информации опорного изображения, соответствующей первому исходному вектору движения. Кодированный битовый поток может также включать вторую информацию опорного изображения, соответствующую второму исходному вектору движения, и сторона декодирования может определить вторую исходную информацию о движении на основе второго исходного вектора движения и второй информации опорного изображения, соответствующей второму исходному вектору движения.
[525] Затем сторона декодирования может определить первую целевую информацию о движении текущего блока на основе первой разности векторов движения и первой исходной информации о движении и определить вторую целевую информацию о движении текущего блока на основе второй разности векторов движения и второй исходной информации о движении.
[526] В примере сторона кодирования может также кодировать первый флаг подрежима и второй флаг подрежима расширенного углового режима взвешенного предсказания в кодированном битовом потоке. Первый флаг подрежима указывает на то, что на первую исходную информацию о движении накладывается разность векторов движения или на первую исходную информацию о движении не накладывается разность векторов движения. Второй флаг подрежима указывает на то, что на вторую исходную информацию о движении накладывается разность векторов движения или на вторую исходную информацию о движении не накладывается разность векторов движения. Можно сделать ссылку на пример 15 для соответствующей обработки, и здесь не приводится избыточное описание.
[527] В приведенном выше примере сторона декодирования анализирует информацию о направлении первой разности векторов движения и информацию о направлении второй разности векторов движения из кодированного битового потока текущего блока. В практических приложениях информация о направлении первой разности векторов движения также может быть получена на основе угла взвешенного предсказания текущего блока, а информация о направлении второй разности векторов движения может быть получена на основе угла взвешенного предсказания текущего блока.
[528] Сторона кодирования также может получать информацию о направлении первой разности векторов движения на основе угла взвешенного предсказания текущего блока и получать информацию о направлении второй разности векторов движения на основе угла взвешенного предсказания текущего блока.
[529] В примере сторона декодирования может анализировать информацию об амплитуде первой разности векторов движения и информацию об амплитуде второй разности векторов движения из кодированного битового потока. В возможной реализации сторона кодирования и сторона декодирования могут установить один и тот же список амплитуд разностей векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде первой разности векторов движения в списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды первой разности векторов движения. Сторона декодирования анализирует индекс амплитуды первой разности векторов движения из кодированного битового потока текущего блока и выбирает информацию об амплитуде, соответствующую индексу амплитуды, из списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде первой разности векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде второй разности векторов движения в списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды второй разности векторов движения. Сторона декодирования анализирует индекс амплитуды второй разности векторов движения из кодированного битового потока текущего блока и выбирает информацию об амплитуде, соответствующую индексу амплитуды, из списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде второй разности векторов движения.
[530] В другой возможной реализации сторона кодирования и сторона декодирования могут установить одинаковые по меньшей мере два списка амплитуд разностей векторов движения. Например, сторона кодирования и сторона декодирования устанавливают один и тот же список 1 амплитуд разностей векторов движения и устанавливают один и тот же список 2 амплитуд разностей векторов движения. На основе информации указания списка амплитуд разностей векторов движения сторона кодирования выбирает целевой список амплитуд разностей векторов движения из всех списков амплитуд разностей векторов движения. Сторона кодирования определяет индекс амплитуды информации об амплитуде первой разности векторов движения в целевом списке амплитуд разностей векторов движения, и кодированный битовый поток включает индекс амплитуды первой разности векторов движения.
[531] Сторона кодирования также может определить индекс амплитуды информации об амплитуде второй разности векторов движения в целевом списке амплитуд разностей векторов движения, и кодированный битовый поток может включать индекс амплитуды второй разности векторов движения. Сторона декодирования может анализировать индекс амплитуды второй разности векторов движения из кодированного битового потока текущего блока и выбирать информацию об амплитуде, соответствующую индексу амплитуды, из целевого списка амплитуд разностей векторов движения. Информация об амплитуде представляет собой информацию об амплитуде второй разности векторов движения.
[532] Например, для соответствующего содержимого списка амплитуд разностей векторов движения можно сделать ссылку на пример 16, и здесь не приводится избыточное описание.
[533] Пример 22: в примере 4 на основе списка кандидатов вектора движения, соответствующего первой информации опорного изображения, и списка кандидатов вектора движения, соответствующего второй информации опорного изображения, сторона кодирования/сторона декодирования может получить первый целевой вектор движения и второй целевой вектор движения текущего блока. Когда опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются одним и тем же изображением, первая информация опорного изображения совпадает со второй информацией опорного изображения. То есть список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения, являются одинаковыми. На основе этого, первый целевой вектор движения и второй целевой вектор движения получают следующим образом: возможный вектор движения выбирают из списка кандидатов вектора движения в качестве исходного вектора движения текущего блока; первый целевой вектор движения текущего блока определяют на основе исходного вектора движения. Второй целевой вектор движения текущего блока определяют на основе первого целевого вектора движения, или второй целевой вектор движения текущего блока определяют на основе исходного вектора движения.
[534] В примере получают разность векторов движения, соответствующую исходному вектору движения, определяют первый целевой вектор движения текущего блока на основе исходного вектора движения и определяют второй целевой вектор движения текущего блока на основе первого целевого вектора движения и разности векторов движения. Альтернативно, получают разность векторов движения, соответствующую исходному вектору движения, определяют первый целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения и определяют второй целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения. Альтернативно, получают первую разность векторов движения и вторую разность векторов движения, соответствующие исходному вектору движения; первый целевой вектор движения текущего блока определяют на основе исходного вектора движения и первой разности векторов движения, а второй целевой вектор движения текущего блока определяют на основе первого целевого вектора движения и второй разности векторов движения. Альтернативно, получают первую разность векторов движения и вторую разность векторов движения, соответствующие исходному вектору движения; первый целевой вектор движения текущего блока определяют на основе исходного вектора движения и первой разности векторов движения, а второй целевой вектор движения текущего блока определяют на основе исходного вектора движения и второй разности векторов движения.
[535] В приведенном выше примере первый целевой вектор движения и второй целевой вектор движения могут быть разными.
[536] В примере 21 или 22 вместо создания списка кандидатов информации о движении устанавливают список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения. Например, список кандидатов вектора движения устанавливают с использованием (refIdx)-го изображения для списка ListX опорных изображений, и установление может быть выполнено способом создания списка кандидатов вектора движения во внешнем общем режиме, или ограничение, указывающее на опорное изображение, может быть добавлено на основе варианта 13 или 14 осуществления изобретения. Когда добавлено ограничение, указывающее на опорное изображение, список кандидатов информации о движении может быть списком кандидатов вектора движения. В примере, при установлении списка кандидатов вектора движения определение опорного изображения добавляют при определении доступности, или при добавлении однонаправленного вектора движения могут применяться масштабирование и другие средства.
[537] В примерах с 1 по 4 сторона кодирования/сторона декодирования может определить первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определить второе значение предсказания позиции пикселя на основе второй целевой информации о движении. Можно сделать ссылку на процесс внешнего предсказания для этого процесса, что здесь не ограничивается. В примере, при определении первого значения предсказания позиции пикселя на основе первой целевой информации о движении первое значение предсказания позиции пикселя может быть получено с использованием внешнего режима взвешенного предсказания. Например, начальное значение предсказания позиции пикселя сначала определяют с использованием первой целевой информации о движении, а затем начальное значение предсказания умножают на заранее заданный коэффициент для получения скорректированного значения предсказания. Если скорректированное значение предсказания больше, чем максимальное значение предсказания, максимальное значение предсказания принимают в качестве первого значения предсказания текущего блока. Если скорректированное значение предсказания меньше минимального значения предсказания, минимальное значение предсказания принимают в качестве первого значения предсказания текущего блока. Если скорректированное значение предсказания не меньше минимального значения предсказания и не больше максимального значения предсказания, то скорректированное значение предсказания принимают в качестве первого значения предсказания текущего блока. Описанный выше способ является только примером, который здесь не ограничивается. Аналогичным образом, при определении второго значения предсказания позиции пикселя на основе второй целевой информации о движении, второе значение предсказания позиции пикселя также может быть получено с использованием внешнего режима взвешенного предсказания. Конкретный способ реализации см. в приведенном выше примере, который здесь повторяться не будет.
[538] Например, примеры с 1 по 3, примеры с 5 по 12 и примеры с 13 по 20 могут быть реализованы по отдельности или в комбинации. Например, пример 1 и пример 2 могут быть реализованы в комбинации; пример 1 и пример 3 могут быть реализованы в комбинации; пример 1 и по меньшей мере один из примеров с 5 по 12 могут быть реализованы в комбинации; пример 1 и по меньшей мере один из примеров с 13 по 20 могут быть реализованы в комбинации; пример 2 и по меньшей мере один из примеров с 5 по 12 могут быть реализованы в комбинации; пример 2 и по меньшей мере один из примеров с 13 по 20 могут быть реализованы в комбинации; пример 3 и по меньшей мере один из примеров с 5 по 12 могут быть реализованы в комбинации; пример 3 и по меньшей мере один из примеров с 13 по 20 могут быть реализованы в комбинации. Режим комбинации примеров здесь не ограничивается.
[539] Например, пример 4, примеры с 5 по 12 и примеры с 21 по 22 могут быть реализованы по отдельности или в комбинации. Например, пример 4 и по меньшей мере один из примеров с 5 по 12 могут быть реализованы в комбинации; пример 4 и пример 21 могут быть реализованы в комбинации; пример 4 и пример 22 могут быть реализованы в комбинации; пример 4, пример 21 и пример 22 могут быть реализованы в комбинации. Режим комбинации примеров здесь не ограничивается.
[540] Пример 23: на основе той же концепции применения, что и в описанных выше способах, примеры настоящего изобретения также обеспечивают оборудование для кодирования и декодирования, которое применяется на стороне кодирования или стороне декодирования. На фиг. 10А показана структурная схема оборудования, содержащая:
[541] модуль 111 получения, выполненный с возможностью получения, когда определено, что для текущего блока разрешено взвешенное предсказание, угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока; модуль 112 конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации; и модуль 113 определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока, на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; модуль 111 получения также выполнен с возможностью получения списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и получения первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении; модуль 113 определения также выполнен с возможностью определения, для каждой позиции пикселя текущего блока, первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и определения значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[542] В примере, при получении списка кандидатов информации о движении модуль 111 получения, в частности, выполнен с возможностью:
[543] получения по меньшей мере одной части доступной информации о движении для добавления в список кандидатов информации о движении и получения списка кандидатов информации о движении на основе по меньшей мере одной части доступной информации о движении; при этом доступная информация о движении содержит по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; заранее заданная информация о движении.
[544] В примере, при получении списка кандидатов информации о движении на основе по меньшей мере одной части доступной информации о движении, модуль 111 получения, в частности, сконфигурирован для выполнения следующего: для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов информации о движении,
[545] если доступная информация о движении является информацией об однонаправленном движении, добавление информации об однонаправленном движении в список кандидатов информации о движении;
[546] если доступная информация о движении является информацией о двунаправленном движении, разделение информации о двунаправленном движении на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении и добавление первой информации об однонаправленном движении в список кандидатов информации о движении;
[547] или, для доступной информации о движении, которая в данный момент должна быть добавлена в список кандидатов информации о движении,
[548] если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление информации об однонаправленном движении в список кандидатов информации о движении;
[549] если доступная информация о движении является информацией о двунаправленном движении, разделение информации о двунаправленном движении на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении; если первая информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление первой информации об однонаправленном движении в список кандидатов информации о движении;
[550] или, для доступной информации о движении, которая в данный момент должна быть добавлена в список кандидатов информации о движении,
[551] если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление информации об однонаправленном движении в список кандидатов информации о движении;
[552] если доступная информация о движении является информацией о двунаправленном движении, разделение информации о двунаправленном движении на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении; если первая информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление первой информации об однонаправленном движении в список кандидатов информации о движении; если первая информация об однонаправленном движении дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, а вторая информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление второй информации об однонаправленном движении в список кандидатов информации о движении.
[553] В примере, при получении первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении модуль 111 получения, в частности, выполнен с возможностью выбора информации о возможном движении из списка кандидатов информации о движении в качестве первой исходной информации о движении текущего блока и выбора информации о возможном движении из списка кандидатов информации о движении в качестве второй исходной информации о движении текущего блока; определения первой целевой информации о движении текущего блока на основе первой исходной информации о движении; и определения второй целевой информации о движении текущего блока на основе второй исходной информации о движении.
[554] В примере первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, и при определении первой целевой информации о движении текущего блока на основе первой исходной информации о движении модуль 111 получения, в частности, выполнен с возможностью получения первой разности векторов движения, соответствующей первому исходному вектору движения, и определения первого целевого вектора движения на основе первой разности векторов движения и первого исходного вектора движения; или определения первого исходного вектора движения в качестве первого целевого вектора движения; вторая исходная информация о движении включает второй исходный вектор движения, вторая целевая информация о движении включает второй целевой вектор движения, и при определении второй целевой информации о движении текущего блока на основе второй исходной информации о движении модуль 111 получения, в частности, выполнен с возможностью получения второй разности векторов движения, соответствующей второму исходному вектору движения, и определения второго целевого вектора движения на основе второй разности векторов движения и второго исходного вектора движения; или определения второго исходного вектора движения в качестве второго целевого вектора движения.
[555] Например, если опорное изображение, указанное первой целевой информацией о движении, и опорное изображение, указанное второй целевой информацией о движении, являются одним и тем же изображением, при получении первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении, модуль 111 получения, в частности, выполнен с возможностью выбора части информации о возможном движении из списка кандидатов информации о движении в качестве исходной информации о движении текущего блока; определения первой целевой информации о движении текущего блока на основе исходной информации о движении; определения второй целевой информации о движении текущего блока на основе первой целевой информации о движении, или определения второй целевой информации о движении текущего блока на основе исходной информации о движении.
[556] В примере исходная информация о движении включает исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, а вторая целевая информация о движении включает второй целевой вектор движения. Модуль 111 получения, в частности, выполнен с возможностью получения разности векторов движения, соответствующей исходному вектору движения; определения первого целевого вектора движения текущего блока на основе исходного вектора движения; определения второго целевого вектора движения текущего блока на основе первого целевого вектора движения и разности векторов движения; или получения разности векторов движения, соответствующей исходному вектору движения; определения первого целевого вектора движения текущего блока на основе исходного вектора движения и разности векторов движения; определения второго целевого вектора движения текущего блока на основе исходного вектора движения и разности векторов движения; или получения первой разности векторов движения и второй разности векторов движения, соответствующих исходному вектору движения; определения первого целевого вектора движения текущего блока на основе исходного вектора движения и первой разности векторов движения; определения второго целевого вектора движения текущего блока на основе исходного вектора движения и второй разности векторов движения.
[557] В приведенных выше примерах первый целевой вектор движения и второй целевой вектор движения могут быть разными.
[558] На основе той же концепции применения, что и в описанных выше способах, примеры настоящего изобретения также обеспечивают оборудование для кодирования и декодирования, которое применяется на стороне кодирования или стороне декодирования. На фиг. 10В показана структурная схема оборудования, содержащая:
[559] модуль 121 получения, выполненный с возможностью получения, когда определено, что взвешенное предсказание разрешено для текущего блока, угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока; модуль 122 конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации; и модуль 123 определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; модуль 121 получения также выполнен с возможностью получения информации опорного изображения и получения списка кандидатов вектора движения, соответствующего информации опорного изображения, при этом список кандидатов вектора движения включает по меньшей мере один возможный вектор движения, а информация опорного изображения включает первую информацию опорного изображения и вторую информацию опорного изображения; получения первого целевого вектора движения и второго целевого вектора движения текущего блока на основе списка кандидатов вектора движения; модуль 123 определения также выполнен с возможностью определения, для каждой позиции пикселя текущего блока, первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; при этом первая целевая информация о движении включает первый целевой вектор движения и первую информацию опорного изображения, соответствующую первому целевому вектору движения, а вторая целевая информация о движении включает второй целевой вектор движения и вторую информацию опорного изображения, соответствующую второму целевому вектору движения; и определения значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[560] В примере один или более параметров весовой конфигурации включают коэффициент преобразования весов. Если текущий блок поддерживает режим переключения коэффициента преобразования весов, модуль 121 получения получает коэффициент преобразования весов текущего блока следующим образом: получение информации указания коэффициента преобразования весов текущего блока; определение коэффициента преобразования весов текущего блока на основе информации указания коэффициента преобразования весов; при этом, если информация указания коэффициента преобразования весов является первой информацией указания, коэффициент преобразования весов текущего блока является первым коэффициентом преобразования весов; если информация указания коэффициента преобразования весов является второй информацией указания, коэффициент преобразования весов текущего блока является вторым коэффициентом преобразования весов.
[561] Например, информация указания коэффициента преобразования весов текущего блока представляет собой флаг уточнения коэффициента преобразования весов, соответствующий текущему блоку, первая информация указания используется для указания того, что коэффициент преобразования весов текущего блока не нужно переключать, а вторая информация указания используется для указания того, что коэффициент преобразования весов текущего блока необходимо переключить.
[562] Один или более параметров весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов. При конфигурировании опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации модуль 122 конфигурирования, в частности, выполнен с возможностью:
[563] для каждой окружающей позиции за пределами текущего блока, конфигурирования опорного весового значения окружающей позиции на основе значения координаты окружающей позиции, значения координаты начальной позиции преобразования весов и коэффициента преобразования весов.
[564] В примере список кандидатов вектора движения включает список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения. При получении первого целевого вектора движения и второго целевого вектора движения текущего блока на основе списка кандидатов вектора движения модуль 121 получения, в частности, выполнен с возможностью:
[565] выбора возможного вектора движения из списка кандидатов вектора движения, соответствующего первой информации опорного изображения, в качестве первого исходного вектора движения текущего блока, и выбора возможного вектора движения из списка кандидатов вектора движения, соответствующего второй информации опорного изображения, в качестве второго исходного вектора движения текущего блока; определения первого целевого вектора движения текущего блока на основе первого исходного вектора движения; и определения второго целевого вектора движения текущего блока на основе второго исходного вектора движения.
[566] В примере, при определении первого целевого вектора движения текущего блока на основе первого исходного вектора движения модуль 121 получения, в частности, выполнен с возможностью получения первой разности векторов движения, соответствующей первому исходному вектору движения; определения первого целевого вектора движения на основе первой разности векторов движения и первого исходного вектора движения; или определения первого исходного вектора движения в качестве первого целевого вектора движения.
[567] В примере при определении второго целевого вектора движения текущего блока на основе второго исходного вектора движения модуль 121 получения, в частности, выполнен с возможностью получения второй разности векторов движения, соответствующей второму исходному вектору движения; определения второго целевого вектора движения на основе второй разности векторов движения и второго исходного вектора движения; или определения второго исходного вектора движения в качестве второго целевого вектора движения.
[568] В примере, если опорное изображение, указанное первым целевым вектором движения, и опорное изображение, указанное вторым целевым вектором движения, являются одним и тем же изображением, первая информация опорного изображения совпадает со второй информацией опорного изображения, и список кандидатов вектора движения, соответствующий первой информации опорного изображения, и список кандидатов вектора движения, соответствующий второй информации опорного изображения, являются одним и тем же списком кандидатов вектора движения, при получении первого целевого вектора движения и второго целевого вектора движения текущего блока на основе списка кандидатов вектора движения модуль 121 получения, в частности, выполнен с возможностью выбора кандидата вектора движения из списка кандидатов вектора движения в качестве исходного вектора движения текущего блока; определения первого целевого вектора движения текущего блока на основе исходного вектора движения; определения второго целевого вектора движения текущего блока на основе первого целевого вектора движения или определения второго целевого вектора движения текущего блока на основе исходного вектора движения.
[569] В примере модуль 121 получения, в частности, выполнен с возможностью:
[570] получения разности векторов движения, соответствующей исходному вектору движения, определения первого целевого вектора движения текущего блока на основе исходного вектора движения и определения второго целевого вектора движения текущего блока на основе первого целевого вектора движения и разности векторов движения; или получения разности векторов движения, соответствующей исходному вектору движения, определения первого целевого вектора движения текущего блока на основе исходного вектора движения и разности векторов движения и определения второго целевого вектора движения текущего блока на основе исходного вектора движения и разности векторов движения; или получения первой разности векторов движения и второй разности векторов движения, соответствующих исходному вектору движения, определения первого целевого вектора движения текущего блока на основе исходного вектора движения и первой разности векторов движения и определения второго целевого вектора движения текущего блока на основе первого целевого вектора движения и второй разности векторов движения; или получения первой разности векторов движения и второй разности векторов движения, соответствующих исходному вектору движения, определения первого целевого вектора движения текущего блока на основе исходного вектора движения и первой разности векторов движения и определения второй целевой разности векторов движения текущего блока на основе исходного вектора движения и второй разности векторов движения.
[571] В приведенных выше примерах первый целевой вектор движения и второй целевой вектор движения могут быть разными.
[572] На основе той же концепции приложения, что и в описанных выше способах, аппаратная архитектура устройства декодирования (также называемого видеодекодером), обеспечиваемая примерами настоящего изобретения, может быть видна на фиг. 10С. Устройство декодирования включает процессор 131 и машиночитаемый носитель 132 данных. Машиночитаемый носитель 132 данных хранит машиночитаемые инструкции, которые могут выполняться процессором 131. Процессор 131 сконфигурирован для исполнения машиночитаемых инструкций для осуществления способов, раскрытых в приведенных выше примерах настоящего изобретения. Например, процессор 131 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[573] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[574] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[575] для каждой позиции пикселя текущего блока определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[576] получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
[577] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения;
[578] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока. Альтернативно, процессор 131 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[579] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[580] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[581] для каждой позиции пикселя текущего блока определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[582] получение информации опорного изображения и получение списка кандидатов вектора движения, соответствующего информации опорного изображения, при этом список кандидатов вектора движения включает по меньшей мере один возможный вектор движения, а информация опорного изображения включает первую информацию опорного изображения и вторую информацию опорного изображения; получение первого целевого вектора движения и второго целевого вектора движения текущего блока на основе списка кандидатов вектора движения;
[583] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; при этом первая целевая информация о движении включает первый целевой вектор движения и первую информацию опорного изображения, соответствующую первому целевому вектору движения, а вторая целевая информация о движении включает второй целевой вектор движения и вторую информацию опорного изображения, соответствующую второму целевому вектору движения;
[584] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[585] На основе той же концепции приложения, что и в описанных выше способах, аппаратная архитектура устройства кодирования (также называемого видеокодером), обеспечиваемая примерами настоящего изобретения, может быть видна на фиг. 10D. Устройство кодирования включает процессор 141 и машиночитаемый носитель 142 данных. Машиночитаемый носитель 142 данных хранит машиночитаемые инструкции, которые могут выполняться процессором 141. Процессор 141 сконфигурирован для исполнения машиночитаемых инструкций для осуществления способов, раскрытых в приведенных выше примерах настоящего изобретения. Например, процессор 141 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[586] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[587] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[588] для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[589] получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
[590] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения;
[591] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока. Альтернативно, процессор 141 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
[592] когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
[593] конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
[594] для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
[595] получение информации опорного изображения и получение списка кандидатов вектора движения, соответствующего информации опорного изображения, при этом список кандидатов вектора движения включает по меньшей мере один возможный вектор движения, а информация опорного изображения включает первую информацию опорного изображения и вторую информацию опорного изображения; получение первого целевого вектора движения и второго целевого вектора движения текущего блока на основе списка кандидатов вектора движения;
[596] для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; при этом первая целевая информация о движении включает первый целевой вектор движения и первую информацию опорного изображения, соответствующую первому целевому вектору движения, а вторая целевая информация о движении включает второй вектор движения цели и вторую информацию опорного изображения, соответствующую второму целевому вектору движения;
[597] определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
[598] На основе той же концепции применения, что и в описанных выше способах, примеры настоящего изобретения также обеспечивают машиночитаемый носитель данных, на котором хранятся компьютерные инструкции. Когда компьютерные инструкции выполняются процессором, осуществляются способы, раскрытые в приведенных выше примерах настоящего изобретения, такие как способы кодирования и декодирования в приведенных выше примерах.
[599] Системы, устройства, модули или блоки, описанные в приведенных выше примерах, могут быть, в частности, реализованы в виде компьютерной микросхемы или объекта либо в виде продукта с конкретной функцией. Типичным устройством реализации является компьютер. Конкретной формой компьютера могут быть персональный компьютер, портативный компьютер, сотовый телефон, телефон с камерой, смартфон, персональный цифровой помощник, медиаплеер, навигационное устройство, устройство приема и отправки электронной почты, игровая приставка, планшетный компьютер, носимое устройство или любая комбинация этих устройств. Для удобства описания вышеперечисленные устройства разбиты на различные блоки по функциям и описаны отдельно. Конечно, при реализации настоящего изобретения функции каждого блока могут быть реализованы в одном или более программных и/или аппаратных средствах.
[600] Специалистам в данной области техники должно быть понятно, что примеры настоящего изобретения могут быть предоставлены в виде способов, систем или компьютерных программных продуктов. Настоящее изобретение может принимать форму примера полностью аппаратных средств, примера полностью программного обеспечения или примера, сочетающего аспекты программного и аппаратного обеспечения. Примеры настоящего изобретения могут принимать форму компьютерного программного продукта, реализованного на одном или более носителях данных, используемых компьютером (включая, не ограничиваясь этим, дисковое хранилище, CD-ROM, оптическую память и т.д.), содержащих программные коды, используемые компьютером.
[601] Выше приведены только примеры настоящего изобретения, которые не ограничивают настоящее изобретение. Специалистам в данной области техники понятно, что настоящее изобретение может иметь различные изменения и варианты. Любая модификация, эквивалентная замена, усовершенствование и т.д., в пределах сущности настоящего изобретения, должны быть включены в объем формулы изобретения настоящего изобретения.
Изобретение относится к кодированию и декодированию видео. Технический результат заключается в повышении эффективности кодирования и декодирования видео. Такой результат обеспечивается за счет конфигурирования весовых значений, которое позволяет сконфигурировать подходящее целевое весовое значение для каждой позиции пикселя текущего блока, чтобы улучшить точность предсказания, эффективность предсказания и эффективность кодирования, при этом значения предсказания текущего блока могут быть более приближены к исходным пикселям, и может быть улучшена эффективность кодирования декодирования видео. 8 н. и 14 з.п. ф-лы, 25 ил., 14 табл.
1. Способ декодирования видео, включающий:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
2. Способ по п. 1, в котором получение списка кандидатов информации о движении включает:
получение по меньшей мере одной части доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении; и
получение списка кандидатов информации о движении на основе упомянутой по меньшей мере одной части доступной информации о движении;
при этом доступная информация о движении содержит по меньшей мере одну из следующей информации о движении: пространственная информация о движении; временная информация о движении; заранее заданная информация о движении.
3. Способ по п. 2, в котором получение по меньшей мере одной части доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, включает:
для пространственного соседнего блока текущего блока, если пространственный соседний блок имеется, и для пространственного соседнего блока принят режим внешнего предсказания, определение информации о движении пространственного соседнего блока в качестве доступной информации о движении.
4. Способ по п. 2, в котором получение по меньшей мере одной части доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, включает:
на основе заранее заданной позиции текущего блока, выбор временного соседнего блока, соответствующего заранее заданной позиции, из опорного изображения текущего блока и определение информации о движении временного соседнего блока в качестве доступной информации о движении.
5. Способ по п. 2, в котором получение по меньшей мере одной части доступной информации о движении, которая должна быть добавлена в список кандидатов информации о движении, включает:
определение заранее заданной информации о движении в качестве доступной информации о движении, при этом заранее заданная информация о движении содержит:
информацию о движении по умолчанию, полученную на основе информации о возможном движении, существующей в списке кандидатов информации о движении.
6. Способ по п. 2, в котором получение списка кандидатов информации о движении на основе упомянутой по меньшей мере одной части доступной информации о движении включает:
для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов информации о движении,
если доступная информация о движении является информацией об однонаправленном движении, и информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление информации об однонаправленном движении в список кандидатов информации о движении;
если доступная информация о движении является информацией о двунаправленном движении, разделение информации о двунаправленном движении на первую информацию об однонаправленном движении и вторую информацию об однонаправленном движении; если первая информация об однонаправленном движении не дублируется информацией о возможном движении, существующей в списке кандидатов информации о движении, добавление первой информации об однонаправленном движении в список кандидатов информации о движении.
7. Способ по п. 2, в котором получение списка кандидатов информации о
движении на основе упомянутой по меньшей мере одной части доступной информации о движении включает:
для доступной информации о движении, которая в настоящее время должна быть добавлена в список кандидатов информации о движении, добавление доступной информации о движении в список кандидатов информации о движении.
8. Способ по п. 6, в котором
первая информация об однонаправленном движении представляет собой информацию об однонаправленном движении, указывающую на опорное изображение в первом списке опорных изображений;
вторая информация об однонаправленном движении представляет собой информацию об однонаправленном движении, указывающую на опорное изображение во втором списке опорных изображений;
при этом первым списком опорных изображений является List0, а вторым списком опорных изображений является List1; или
первым списком опорных изображений является List1, а вторым списком опорных изображений является List0.
9. Способ по п. 6, в котором проверяют, дублируется ли информация об однонаправленном движении информацией о возможном движении, существующей в списке кандидатов информации о движении, следующим образом:
если счетчик порядка изображения (POC) опорного изображения, указанного информацией об однонаправленном движении, такой же, как у опорного изображения, указанного информацией о возможном движении, и вектор движения информации об однонаправленном движении такой же, как вектор движения информации о возможном движении, определяют, что информация об однонаправленном движении дублируется информацией о возможном движении; в противном случае определяют, что информация об однонаправленном движении не дублируется информацией о возможном движении.
10. Способ по п. 1, в котором на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока включает:
выбор информации о возможном движении из списка кандидатов информации о движении в качестве первой исходной информации о движении текущего блока и выбор информации о возможном движении из списка кандидатов информации о движении в качестве второй исходной информации о движении текущего блока;
определение первой целевой информации о движении текущего блока на основе первой исходной информации о движении; и
определение второй целевой информации о движении текущего блока на основе второй исходной информации о движении.
11. Способ по п. 10, в котором
первая исходная информация о движении содержит первый исходный вектор движения, первая целевая информация о движении содержит первый целевой вектор движения, и определение первой целевой информации о движении текущего блока на основе первой исходной информации о движении включает:
получение первой разности векторов движения, соответствующей первому исходному вектору движения, и определение первого целевого вектора движения на основе первой разности векторов движения и первого исходного вектора движения; или
определение первого исходного вектора движения в качестве первого целевого вектора движения;
вторая исходная информация о движении содержит второй исходный вектор движения, вторая целевая информация о движении содержит второй целевой вектор движения, и определение второй целевой информации о движении текущего блока на основе второй исходной информации о движении включает:
получение второй разности векторов движения, соответствующей второму исходному вектору движения, и определение второго целевого вектора движения на основе второй разности векторов движения и второго исходного вектора движения; или
определение второго исходного вектора движения в качестве второго целевого вектора движения.
12. Способ по п. 11, в котором
получение первой разности векторов движения, соответствующей первому исходному вектору движения, включает:
получение информации о направлении и информации об амплитуде первой разности векторов движения; и
определение первой разности векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения;
получение второй разности векторов движения, соответствующей второму исходному вектору движения, включает:
получение информации о направлении и информации об амплитуде второй разности векторов движения; и
определение второй разности векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения.
13. Способ по п. 12, в котором
получение информации о направлении первой разности векторов движения включает:
получение информации о направлении первой разности векторов движения посредством анализа кодированного битового потока текущего блока; или
получение информации о направлении первой разности векторов движения на основе угла взвешенного предсказания текущего блока;
получение информации о направлении второй разности векторов движения включает:
получение информации о направлении второй разности векторов движения посредством анализа кодированного битового потока текущего блока; или
получение информации о направлении второй разности векторов движения на основе угла взвешенного предсказания текущего блока.
14. Способ по п. 12, в котором
получение информации об амплитуде первой разности векторов движения включает:
получение информации об амплитуде первой разности векторов движения посредством анализа кодированного битового потока текущего блока;
получение информации об амплитуде второй разности векторов движения включает:
получение информации об амплитуде второй разности векторов движения посредством анализа кодированного битового потока текущего блока.
15. Способ по любому из пп. 12-14, в котором,
если информация о направлении первой разности векторов движения указывает направление вправо, а информация об амплитуде первой разности векторов движения указывает амплитуду Ar1, первая разность векторов движения равна (Ar1, 0); если информация о направлении первой разности векторов движения указывает направление вниз, а информация об амплитуде первой разности векторов движения указывает амплитуду Ad1, первая разность векторов движения равна (0, -Ad1); если информация о направлении первой разности векторов движения указывает направление влево, а информация об амплитуде первой разности векторов движения указывает амплитуду Al1, первая разность векторов движения равна (-Al1, 0); если информация о направлении первой разности векторов движения указывает направление вверх, а информация об амплитуде первой разности векторов движения указывает амплитуду Au1, первая разность векторов движения равна (0, Au1);
если информация о направлении второй разности векторов движения указывает направление вправо, а информация об амплитуде второй разности векторов движения указывает амплитуду Ar2, вторая разность векторов движения равна (Ar2, 0); если информация о направлении второй разности векторов движения указывает направление вниз, а информация об амплитуде второй разности векторов движения указывает амплитуду Ad2, вторая разность векторов движения равна (0, -Ad2); если информация о направлении второй разности векторов движения указывает направление влево, а информация об амплитуде второй разности векторов движения указывает амплитуду А12, вторая разность векторов движения равна (-А12, 0); если информация о направлении второй разности векторов движения указывает направление вверх, а информация об амплитуде второй разности векторов движения указывает амплитуду Au2, вторая разность векторов движения равна (0, Au2).
16. Способ кодирования видео, включающий:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
17. Оборудование для декодирования видео, содержащее:
модуль получения, выполненный с возможностью получения, когда определено, что для текущего блока разрешено взвешенное предсказание, угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
модуль конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации; и
модуль определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
при этом модуль получения также выполнен с возможностью получения списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и получения первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении;
модуль определения также выполнен с возможностью определения, для каждой позиции пикселя текущего блока, первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и определения значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
18. Оборудование для кодирования видео, содержащее:
модуль получения, выполненный с возможностью получения, когда определено, что для текущего блока разрешено взвешенное предсказание, угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
модуль конфигурирования, выполненный с возможностью конфигурирования опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации; и
модуль определения, выполненный с возможностью определения, для каждой позиции пикселя текущего блока, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания; определения целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определения ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
при этом модуль получения также выполнен с возможностью получения списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и получения первой целевой информации о движении и второй целевой информации о движении текущего блока на основе списка кандидатов информации о движении;
модуль определения также выполнен с возможностью определения, для каждой позиции пикселя текущего блока, первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока, определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока и определения значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и определения значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
19. Устройство декодирования видео, содержащее процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, которые могут исполняться процессором, и
процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
20. Устройство кодирования видео, содержащее процессор и машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит машиночитаемые инструкции, которые могут исполняться процессором, и
процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
21. Машиночитаемый носитель данных, на котором хранятся компьютерные инструкции, при исполнении которых процессором осуществляется способ декодирования видео, включающий:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
22. Машиночитаемый носитель данных, на котором хранятся компьютерные инструкции, при исполнении которых процессором осуществляется способ кодирования видео, включающий:
когда определено, что для текущего блока разрешено взвешенное предсказание, получение угла взвешенного предсказания и одного или более параметров весовой конфигурации текущего блока;
конфигурирование опорных весовых значений для окружающих позиций за пределами текущего блока на основе одного или более параметров весовой конфигурации;
для каждой позиции пикселя текущего блока, определение, на основе угла взвешенного предсказания, окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя;
получение списка кандидатов информации о движении, который содержит по меньшей мере одну часть информации о возможном движении, и на основе списка кандидатов информации о движении получение первой целевой информации о движении и второй целевой информации о движении текущего блока;
для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первой целевой информации о движении текущего блока и определение второго значения предсказания позиции пикселя на основе второй целевой информации о движении текущего блока; определение значения взвешенного предсказания позиции пикселя на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения; и
определение значений взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой позиции пикселя текущего блока.
CN 109819255 B, 03.01.2020 | |||
US 20180288425 A1, 04.10.2018 | |||
WO 2016072775 A1, 12.05.2016 | |||
CN 103533376 B, 12.04.2017 | |||
US 20170347102 A1, 30.11.2017 | |||
СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛА | 2012 |
|
RU2716230C2 |
Авторы
Даты
2023-12-14—Публикация
2021-06-24—Подача