RU2822503C2 - Method, equipment and device for encoding and decoding - Google Patents
Method, equipment and device for encoding and decoding Download PDFInfo
- Publication number
- RU2822503C2 RU2822503C2 RU2023131512A RU2023131512A RU2822503C2 RU 2822503 C2 RU2822503 C2 RU 2822503C2 RU 2023131512 A RU2023131512 A RU 2023131512A RU 2023131512 A RU2023131512 A RU 2023131512A RU 2822503 C2 RU2822503 C2 RU 2822503C2
- Authority
- RU
- Russia
- Prior art keywords
- current block
- information
- motion vector
- motion
- target
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 230000033001 locomotion Effects 0.000 claims description 1040
- 239000013598 vector Substances 0.000 claims description 509
- 230000009466 transformation Effects 0.000 claims description 100
- 238000006243 chemical reaction Methods 0.000 claims description 29
- 230000003247 decreasing effect Effects 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 171
- 230000008569 process Effects 0.000 description 62
- 230000007423 decrease Effects 0.000 description 55
- 230000002457 bidirectional effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000002123 temporal effect Effects 0.000 description 9
- 238000007792 addition Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 101100273916 Schizosaccharomyces pombe (strain 972 / ATCC 24843) wip1 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Abstract
Description
ОБЛАСТЬ ТЕХНИКИTECHNICAL FIELD
[0001] Настоящее изобретение относится к способам, оборудованию и устройствам для кодирования и декодирования.[0001] The present invention relates to methods, equipment and apparatus for encoding and decoding.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯPREREQUISITES FOR CREATION OF THE INVENTION
[0002] Для уменьшения занимаемого объема, видео или изображения передают после кодирования. Способ кодирования видео может включать такие процессы, как предсказание, преобразование, квантование, энтропийное кодирование, фильтрация и т.д. Кодирование с предсказанием может включать внутреннее кодирование и внешнее кодирование. Внешнее кодирование относится к операции использования временной корреляции видео для предсказания текущих пикселей текущего изображения с использованием пикселей соседнего кодированного изображения для достижения эффективного устранения временной избыточности видео. Внутреннее кодирование относится к операции использования пространственной корреляции видео для предсказания текущих пикселей с использованием пикселей одного или более кодированных блоков текущего изображения для достижения эффективного устранения пространственной избыточности видео.[0002] To reduce space consumption, video or images are transmitted after encoding. The video encoding method may include processes such as prediction, transformation, quantization, entropy encoding, filtering, etc. Predictive coding may include inner coding and outer coding. Outer encoding refers to the operation of using video temporal correlation to predict the current pixels of the current image using the pixels of the neighboring encoded image to achieve effective video temporal redundancy elimination. Intra coding refers to the operation of using video spatial correlation to predict current pixels using the pixels of one or more coded blocks of the current image to achieve efficient video spatial redundancy removal.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
[0003] Настоящее изобретение предлагает способы, оборудование и устройства для кодирования и декодирования.[0003] The present invention provides methods, equipment and apparatus for encoding and decoding.
[0004] Настоящее изобретение предлагает способ кодирования и декодирования. Когда определено, что следует разрешить взвешенное предсказание для текущего блока, способ включает: получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0004] The present invention provides an encoding and decoding method. When it is determined that weighted prediction should be enabled for the current block, the method includes: obtaining, for the current block, a weighted prediction angle of the current block; for each pixel position of the current block, determining a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; determining a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position, determining an associated pixel position weight value based on the target pixel position weight value; for each pixel position of the current block, determining a first pixel position prediction value based on a first prediction mode of the current block, determining a second pixel position prediction value based on a second prediction mode of the current block; and based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determining a weighted pixel position prediction value; and determining weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[0005] Настоящее изобретение предлагает устройство кодирования, содержащее модуль, выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль, выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0005] The present invention provides an encoding apparatus comprising a module configured to obtain, for a current block, when it is determined that weighted prediction for the current block should be enabled, a weighted prediction angle of the current block; a module configured to determine, for each pixel position of the current block, a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; a module configured to determine a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position, and determine an associated pixel position weight value based on the target pixel position weight value; a module configured to determine, for each pixel position of the current block, a first pixel position prediction value based on the first prediction mode of the current block, determine a second pixel position prediction value based on the second prediction mode of the current block; and based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determining a weighted pixel position prediction value; and a module configured to determine weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[0006] Настоящее изобретение предлагает устройство декодирования, содержащее модуль, выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль, выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0006] The present invention provides a decoding apparatus comprising a module configured to obtain, for a current block, when it is determined that weighted prediction for the current block should be enabled, a weighted prediction angle of the current block; a module configured to determine, for each pixel position of the current block, a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; a module configured to determine a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position, and determine an associated pixel position weight value based on the target pixel position weight value; a module configured to determine, for each pixel position of the current block, a first pixel position prediction value based on the first prediction mode of the current block, determine a second pixel position prediction value based on the second prediction mode of the current block; and based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determining a weighted pixel position prediction value; and a module configured to determine weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[0007] Настоящее изобретение предлагает устройство на стороне декодера, содержащее процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором. Процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0007] The present invention provides a decoder-side device including a processor and a computer-readable storage medium on which computer-readable instructions executable by the processor are stored. The processor is configured to execute machine-readable instructions to do the following: when it is determined that weighted prediction should be enabled for the current block, obtaining for the current block a weighted prediction angle of the current block; for each pixel position of the current block, determining a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; determining a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position, determining an associated pixel position weight value based on the target pixel position weight value; for each pixel position of the current block, determining a first pixel position prediction value based on a first prediction mode of the current block, determining a second pixel position prediction value based on a second prediction mode of the current block; and based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determining a weighted pixel position prediction value; and determining weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[0008] Настоящее изобретение предлагает устройство на стороне кодера, содержащее процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором. Процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0008] The present invention provides an encoder-side apparatus comprising a processor and a computer-readable storage medium on which computer-readable instructions executable by the processor are stored. The processor is configured to execute machine-readable instructions to do the following: when it is determined that weighted prediction should be enabled for the current block, obtaining for the current block a weighted prediction angle of the current block; for each pixel position of the current block, determining a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; determining a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position, determining an associated pixel position weight value based on the target pixel position weight value; for each pixel position of the current block, determining a first pixel position prediction value based on a first prediction mode of the current block, determining a second pixel position prediction value based on a second prediction mode of the current block; and based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determining a weighted pixel position prediction value; and determining weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[0009] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором подходящее целевое весовое значение устанавливается для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[0009] As described above, embodiments of the present invention provide an efficient method for setting weight values, in which a suitable target weight value is set for each pixel position of the current block, so that the prediction values of the current block are closer to the original pixels, which improves the prediction accuracy. prediction efficiency and coding efficiency.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[00010] Фиг. 1 представляет собой схему структуры системы кодирования видео.[00010] FIG. 1 is a diagram of the structure of a video encoding system.
[00011] Фиг. 2А-2С представляют собой схематические диаграммы взвешенного предсказания.[00011] FIG. 2A-2C are schematic diagrams of weighted prediction.
[00012] Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования согласно варианту осуществления настоящего изобретения.[00012] FIG. 3 is a flowchart illustrating an encoding and decoding method according to an embodiment of the present invention.
[00013] Фиг. 4А представляет собой блок-схему, иллюстрирующую способ кодирования согласно варианту осуществления настоящего изобретения.[00013] FIG. 4A is a flowchart illustrating an encoding method according to an embodiment of the present invention.
[00014] Фиг. 4В-4Е представляют собой схемы, иллюстрирующие окружающие позиции за пределами текущего блока.[00014] FIG. 4B-4E are diagrams illustrating surrounding positions outside the current block.
[00015] Фиг. 4F представляет собой блок-схему, иллюстрирующую способ декодирования согласно варианту осуществления настоящего изобретения.[00015] FIG. 4F is a flowchart illustrating a decoding method according to an embodiment of the present invention.
[00016] Фиг. 5А и 5В представляют собой схемы, иллюстрирующие угол взвешенного предсказания согласно варианту осуществления настоящего изобретения.[00016] FIG. 5A and 5B are diagrams illustrating a weighted prediction angle according to an embodiment of the present invention.
[00017] Фиг. 6А представляет собой блок-схему определения опорного весового значения окружающей позиции в соответствии с вариантом осуществления настоящего изобретения.[00017] FIG. 6A is a flowchart for determining a reference weight value of a surrounding position in accordance with an embodiment of the present invention.
[00018] Фиг. 6В представляет собой блок-схему получения весового массива согласно варианту осуществления настоящего изобретения.[00018] FIG. 6B is a flowchart of obtaining a weight array according to an embodiment of the present invention.
[00019] Фиг. 6C-6D представляют собой схематические диаграммы углов текущего блока в различных областях согласно варианту осуществления настоящего изобретения.[00019] FIG. 6C to 6D are schematic diagrams of corners of a current block in various areas according to an embodiment of the present invention.
[00020] Фиг. 7 представляет собой схему, иллюстрирующую соседние блоки текущего блока в соответствии с вариантом осуществления настоящего изобретения.[00020] FIG. 7 is a diagram illustrating neighboring blocks of a current block in accordance with an embodiment of the present invention.
[00021] Фиг. 8А представляет собой структурную схематическую диаграмму, иллюстрирующую устройство кодирования и декодирования согласно варианту осуществления настоящего изобретения.[00021] FIG. 8A is a block diagram illustrating an encoding and decoding apparatus according to an embodiment of the present invention.
[00022] Фиг. 8В представляет собой схему аппаратной структуры устройства на стороне декодера согласно варианту осуществления настоящего изобретения.[00022] FIG. 8B is a diagram of a hardware structure of a decoder-side device according to an embodiment of the present invention.
[00023] Фиг. 8С представляет собой схему аппаратной структуры устройства на стороне кодера согласно варианту осуществления настоящего изобретения.[00023] FIG. 8C is a diagram of a hardware structure of an encoder-side device according to an embodiment of the present invention.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION
[00024] Используемые здесь термины предназначены только для описания конкретного варианта осуществления изобретения, а не для ограничения настоящего изобретения. Формы единственного числа, используемые в настоящем описании и прилагаемой формуле изобретения, также предназначены для включения форм множественного числа, если из контекста явно не следует иное. Также следует понимать, что сочетание «и/или», используемое в данном документе, относится к любой или всем возможным комбинациям, которые включают один или более связанных перечисленных элементов. Следует отметить, что, хотя термины «первый», «второй», «третий» и т.п. могут использоваться в настоящем изобретении для описания различной информации, такая информация не должна ограничиваться этими терминами. Эти термины используются только для того, чтобы отличить одну категорию информации от другой. Например, в пределах сущности настоящего изобретения, первая информация может упоминаться как вторая информация; и, аналогично, вторая информация также может упоминаться как первая информация. В зависимости от контекста слово «если», используемое здесь, может быть означать «когда», или «после», или «в ответ на определение».[00024] The terms used herein are intended only to describe a particular embodiment of the invention and not to limit the present invention. The singular forms used in this specification and the accompanying claims are also intended to include the plural forms unless the context clearly indicates otherwise. It should also be understood that the combination "and/or" as used herein refers to any or all possible combinations that include one or more related listed elements. It should be noted that although the terms “first”, “second”, “third”, etc. may be used in the present invention to describe various information, such information should not be limited to these terms. These terms are used only to distinguish one category of information from another. For example, within the spirit of the present invention, the first information may be referred to as the second information; and, likewise, the second information may also be referred to as the first information. Depending on the context, the word "if" used here can mean "when" or "after" or "in response to a definition."
[00025] Настоящее изобретение предлагает способы, оборудование и устройства для кодирования и декодирования, которые могут включать следующие понятия: внутреннее предсказание, внешнее предсказание и предсказание внутриблочного копирования (IBC, Intra Block Copy).[00025] The present invention provides methods, equipment and devices for encoding and decoding, which may include the following concepts: intra prediction, inter prediction and intra block copy (IBC) prediction.
[00026] Внутреннее предсказание использует пространственную корреляцию видео для предсказания текущего пикселя с использованием пикселей одного или более кодированных блоков текущего изображения, чтобы устранить пространственную избыточность видео. Внутреннее предсказание определяет несколько режимов предсказания, каждый из которых соответствует одному направлению текстуры (за исключением режима постоянной составляющей (DC, Direct Current)). Например, если текстура изображения соответствует горизонтальному направлению, использование режима горизонтального предсказания может лучше предсказывать информацию изображения.[00026] Intra prediction uses video spatial correlation to predict the current pixel using pixels from one or more coded blocks of the current image to eliminate spatial redundancy in the video. Internal prediction defines several prediction modes, each of which corresponds to one texture direction (with the exception of DC (Direct Current) mode). For example, if the image texture follows the horizontal direction, using the horizontal prediction mode can better predict image information.
[00027] Внешнее предсказание использует пиксели соседних кодированных изображений для предсказания пикселей текущего изображения на основе временной корреляции видео из-за сильной временной корреляции, включенной в видеопоследовательность, чтобы эффективно устранить временную избыточность видео. Внешнее предсказание в стандартах видеокодирования использует технологию компенсации движения на основе блоков, в которой находится наилучший соответствующий блок для каждого блока пикселей текущего изображения в одном или более ранее кодированных изображениях. Этот процесс называется оценкой движения (ME, Motion Estimation).[00027] Inter-prediction uses pixels of neighboring encoded images to predict pixels of the current image based on the temporal correlation of the video due to the strong temporal correlation included in the video sequence to effectively eliminate the temporal redundancy of the video. Inter-prediction in video coding standards uses a block-based motion compensation technique that finds the best matching block for each block of pixels in the current image in one or more previously encoded images. This process is called motion estimation (ME, Motion Estimation).
[00028] Внутриблочное копирование позволяет ссылаться на один и тот же слайс, если опорные данные текущего блока исходят из того же слайса. В технологии внутриблочного копирования значение предсказания текущего блока может быть получено с использованием вектора блока текущего блока. Например, на основе характеристики, состоящей в том, что имеется большое количество повторяющихся текстур в одном и том же слайсе в содержимом экрана, когда значение предсказания текущего блока получают с использованием вектора блока, эффективность сжатия последовательности содержимого экрана может быть улучшена.[00028] Intra-block copying allows the same slice to be referenced if the current block's reference data comes from the same slice. In intra-block copy technology, the prediction value of the current block can be obtained using the block vector of the current block. For example, based on the characteristic that there are a large number of repeating textures in the same slice in the screen content, when the prediction value of the current block is obtained using a block vector, the compression efficiency of the screen content sequence can be improved.
[00029] Пиксель предсказания относится к значению пикселя, полученному из кодированного/декодированного пикселя, и получают остаток на основе разности между исходным пикселем и пикселем предсказания, а затем выполняют преобразование, квантование, а также кодирование коэффициентов остатков. Пиксель внешнего предсказания для текущего блока относится к значению пикселя, полученному из опорного изображения, и, поскольку позиции пикселей являются дискретными, для получения окончательного пикселя предсказания требуется операция интерполяции. Чем ближе пиксель предсказания к исходному пикселю, тем меньше энергия остатка, полученная при выполнении вычитания для обоих пикселей, и тем выше эффективность сжатия кодирования.[00029] A prediction pixel refers to a pixel value obtained from an encoded/decoded pixel, and a residual is obtained based on the difference between the original pixel and the prediction pixel, and then transform, quantization, and coding of the residual coefficients are performed. The inter-prediction pixel for the current block refers to the pixel value obtained from the reference image, and since the pixel positions are discrete, an interpolation operation is required to obtain the final prediction pixel. The closer the prediction pixel is to the original pixel, the smaller the residual energy obtained by performing subtraction on both pixels, and the higher the coding compression efficiency.
[00030] Вектор движения (MB, Motion Vector). При внешнем кодировании вектор движения используется для представления относительного смещения между текущим блоком текущего изображения и опорным блоком опорного изображения. Каждый из разделенных блоков имеет соответствующий вектор движения, который должен быть передан на сторону декодера. Если вектор движения каждого блока кодируется и передается независимо, особенно при наличии большого количества блоков меньшего размера, необходимо использовать больше битов. Чтобы уменьшить количество битов, используемых для кодирования вектора движения, может использоваться пространственная корреляция между соседними блоками для предсказания вектора движения текущего подлежащего кодированию блока на основе вектора(ов) движения соседнего(их) кодированного(ых) блока(ов), а затем кодируется разность предсказания. Таким образом, количество битов, представляющих векторы движения, может быть эффективно уменьшено. Исходя из этого, в процессе кодирования вектора движения текущего блока сначала используются один или более векторов движения одного или более соседних кодируемых блоков для предсказания вектора движения текущего блока, а затем кодируется разность векторов движения (MVD, Motion Vector Difference) между значением предсказания вектора движения (MVP, Motion Vector Prediction) и реальным значением оценки вектора движения.[00030] Motion Vector (MB, Motion Vector). In outer coding, a motion vector is used to represent the relative offset between the current block of the current picture and the reference block of the reference picture. Each of the divided blocks has a corresponding motion vector that must be transmitted to the decoder side. If the motion vector of each block is encoded and transmitted independently, especially if there are many smaller blocks, more bits must be used. To reduce the number of bits used to encode the motion vector, spatial correlation between adjacent blocks can be used to predict the motion vector of the current block to be encoded based on the motion vector(s) of the adjacent encoded block(s), and then encode the difference predictions. In this way, the number of bits representing motion vectors can be effectively reduced. Based on this, in the process of encoding the motion vector of the current block, first uses one or more motion vectors of one or more neighboring encoded blocks to predict the motion vector of the current block, and then encodes the motion vector difference (MVD) between the motion vector prediction value ( MVP, Motion Vector Prediction) and the real value of the motion vector estimate.
[00031] Информация о движении. Поскольку вектор движения представляет собой смещение позиции из текущего блока к опорному блоку, для точного получения информации об указанном блоке в дополнение к вектору движения также необходима индексная информация об опорном изображении, чтобы указать, какое опорное изображение используется для текущего блока. В технологии кодирования видео для текущего изображения может быть установлен список опорных изображений, и индексная информация об опорном изображении указывает, какое опорное изображение, указанное в списке опорных изображений, используется для текущего блока. Кроме того, многие технологии кодирования также поддерживают несколько списков опорных изображений, так что индекс может также использоваться для указания того, какой список опорных изображений используется, и этот индекс может упоминаться как опорное направление. Подводя итог, можно сказать, что в технологии кодирования видео информация, относящаяся к движению, такая как вектор движения, индексная информация опорного изображения и опорное направление, может совместно называться информацией о движении.[00031] Motion information. Since the motion vector represents a position offset from the current block to the reference block, to accurately obtain information about the specified block, in addition to the motion vector, reference image index information is also needed to indicate which reference image is used for the current block. In a video encoding technology, a reference picture list may be set for the current picture, and the reference picture index information indicates which reference picture specified in the reference picture list is used for the current block. In addition, many encoding technologies also support multiple reference picture lists, so that an index may also be used to indicate which reference picture list is used, and this index may be referred to as a reference direction. To summarize, in video coding technology, motion-related information such as motion vector, reference image index information, and reference direction may be collectively referred to as motion information.
[00032] Вектор блока (BV, Block vector). Вектор блока применяется в технологии внутриблочного копирования, которая использует вектор блока для компенсации движения, например, значение предсказания текущего блока получают с использованием вектора блока. Вектор блока представляет собой относительное смещение между текущим блоком и наилучшим соответствующим блоком из кодированных блоков текущего слайса и отличается от вектора движения. На основе характеристики наличия большого количества повторяющихся текстур в одном и том же слайсе, когда значение предсказания текущего блока получают с использованием вектора блока, эффективность сжатия может быть улучшена.[00032] Block vector (BV, Block vector). The block vector is used in intra-block copy technology, which uses the block vector to compensate for motion, for example, the prediction value of the current block is obtained using the block vector. The block vector represents the relative displacement between the current block and the best matching block of the encoded blocks of the current slice and is different from the motion vector. Based on the characteristic of having a large number of repeated textures in the same slice, when the prediction value of the current block is obtained using the block vector, the compression efficiency can be improved.
[00033] Режим внутреннего предсказания. При внутреннем кодировании режим внутреннего предсказания используется для выполнения компенсации движения, например, значение предсказания текущего блока получают с использованием режима внутреннего предсказания. Например, режим внутреннего предсказания может включать, не ограничиваясь этим, планарный режим, режим постоянной составляющей и 33 угловых режима. В таблице 1 показаны примеры режима внутреннего предсказания, где планарный режим соответствует режиму 0, режим DC соответствует режиму 1, а остальные 33 угловых режима соответствуют режимам со 2 по 34. Планарный режим применим к области, в которой значения пикселей изменяются медленно, и использует два линейных фильтра в горизонтальном и вертикальном направлениях, чтобы получить среднее значение пикселей в двух направлениях в качестве значения предсказания пикселей текущего блока. Режим постоянной составляющей применим к большой плоской поверхности и принимает среднее значение окружающих пикселей текущего блока в качестве значения предсказания пикселей текущего блока. Доступны 33 угловых режима. Стандарт кодирования и декодирования нового поколения VVC (Versatile Video Coding) использует режимы с разделенными углами, например режимы с 65 углами.[00033] Intra prediction mode. In intra coding, the intra prediction mode is used to perform motion compensation, for example, the prediction value of the current block is obtained using the intra prediction mode. For example, the intra prediction mode may include, but is not limited to, planar mode, DC mode, and 33 angular modes. Table 1 shows examples of intra prediction mode, where planar mode corresponds to
[00034] Режим палитры. В режиме палитры значения пикселей текущего блока представлены небольшим набором значений пикселей, то есть палитрой. Когда значение пикселя позиции пикселя в текущем блоке близко к цвету в палитре, позиция пикселя кодируется значением индекса соответствующего цвета в палитре. Когда значение пикселя позиции пикселя в текущем блоке не похоже на все цвета в палитре, позиция пикселя должна кодироваться с помощью «сбежавшего» пикселя (escape pixel), и «сбежавший» пиксель непосредственно квантуется, а затем кодируется в битовый поток. На стороне декодера сначала получают одну палитру, например, палитру, хранящую {цвет А, цвет В, цвет С}, и затем определяют, кодирована ли каждая позиция пикселя как «сбежавший» пиксель. Если позиция пикселя не является «сбежавшим» пикселем, индекс позиции пикселя получают из битового потока, а затем из палитры получают цвет на основе индекса позиции пикселя и назначают его позиции пикселя; в противном случае анализируют «сбежавший» пиксель.[00034] Palette mode. In palette mode, the pixel values of the current block are represented by a small set of pixel values, that is, a palette. When the pixel value of a pixel position in the current block is close to a color in the palette, the pixel position is encoded by the index value of the corresponding color in the palette. When the pixel value of a pixel position in the current block is not similar to all the colors in the palette, the pixel position must be encoded using an escape pixel, and the escape pixel is directly quantized and then encoded into a bitstream. At the decoder side, one palette is first obtained, for example, a palette storing {color A, color B, color C}, and then determines whether each pixel position is encoded as an escaped pixel. If the pixel position is not a runaway pixel, the pixel position index is obtained from the bitstream, and then the color based on the pixel position index is obtained from the palette and assigned to the pixel position; otherwise, the “escaped” pixel is analyzed.
[00035] Оптимизация «скорость-искажение» (RDO, Rate-Distortion Optimization). Есть два показателя для оценки эффективности кодирования: битовая скорость и отношение пикового сигнала к шуму (PSNR, Peak Signal to Noise Ratio). Чем меньше битовый поток, тем выше степень сжатия; и чем выше PSNR, тем лучше качество реконструированного изображения. При выборе режима способ принятия решения фактически представляет собой всестороннюю оценку для обоих режимов. Например, стоимость, соответствующая режиму, может быть рассчитана по следующей формуле: J/(режим)=D+λ*R, где D представляет искажение, обычно измеряемое суммой квадратов ошибок (SSE, Sum of Squared Errors), a SSE относится к средней сумме квадратов разностей между реконструированным блоком изображения и исходным изображением; λ представляет множитель Лагранжа; и R представляет фактическое количество битов, необходимых для кодирования блока изображения в этом режиме, включая общее количество битов, необходимое для информации о режиме кодирования, информации о движении, остатках и т.п. При выборе режима, если RDO используется для принятия сравнительного решения о режимах кодирования, обычно может быть гарантирована наилучшая эффективность кодирования.[00035] Rate-Distortion Optimization (RDO). There are two metrics to evaluate encoding efficiency: bit rate and Peak Signal to Noise Ratio (PSNR). The smaller the bit stream, the higher the compression ratio; and the higher the PSNR, the better the quality of the reconstructed image. When choosing a mode, the decision method is actually a comprehensive assessment for both modes. For example, the cost corresponding to a mode can be calculated using the following formula: J/(mode)=D+λ*R, where D represents the distortion, usually measured by the Sum of Squared Errors (SSE), and SSE refers to the average the sum of squared differences between the reconstructed image block and the original image; λ represents the Lagrange multiplier; and R represents the actual number of bits required to encode an image block in this mode, including the total number of bits required for encoding mode information, motion information, residuals, and the like. In mode selection, if RDO is used to make a comparative decision about encoding modes, the best encoding efficiency can usually be guaranteed.
[00036] Структура системы кодирования видео. Структура системы кодирования видео, показанная на фиг. 1, может использоваться для выполнения процесса на стороне кодера в вариантах осуществления настоящего изобретения, а структура системы декодирования видео аналогична фиг. 1 и здесь повторяться не будет. Структура системы декодирования видео может использоваться для выполнения процесса на стороне декодера в вариантах осуществления настоящего изобретения. Например, структура системы кодирования видео и структура системы декодирования видео могут включать, не ограничиваясь этим, модуль внутреннего предсказания, модуль оценки/компенсации движения, буфер опорных изображений, модуль внутриконтурной фильтрации, модуль реконструкции, модуль преобразования, модуль квантования, модуль обратного преобразования, модуль деквантования, энтропийный кодер и т.п. Кодер может выполнять процесс на стороне кодера посредством взаимодействия этих модулей, а декодер может выполнять процесс на стороне декодера посредством взаимодействия этих модулей.[00036] Video coding system structure. The structure of the video encoding system shown in FIG. 1 can be used to perform an encoder-side process in embodiments of the present invention, and the structure of the video decoding system is similar to FIG. 1 will not be repeated here either. The structure of a video decoding system may be used to perform a decoder-side process in embodiments of the present invention. For example, the video encoding system structure and the video decoding system structure may include, but are not limited to, an intra prediction module, a motion estimation/compensation module, a reference picture buffer, an in-loop filtering module, a reconstruction module, a transform module, a quantization module, an inverse transform module, a dequantization, entropy encoder, etc. An encoder can execute an encoder-side process through the interaction of these modules, and a decoder can execute a decoder-side process through the interaction of these modules.
[00037] Например, текущий блок может быть прямоугольным, в то время как граница объекта обычно не является прямоугольной в практических ситуациях. Поэтому для границы объекта обычно используются две различные сущности (например, объект, представленный на переднем плане и на заднем плане, и т.д.). Когда движения двух объектов несовместимы, эти два объекта не могут быть хорошо разделены на основе прямоугольного разделения. Следовательно, текущий блок может быть разделен на два непрямоугольных подблока, и для двух непрямоугольных подблоков выполняется взвешенное предсказание. Например, взвешенное предсказание предназначено для выполнения взвешенной операции на основе нескольких значений предсказания для получения одного или более окончательных значений предсказания. Взвешенное предсказание может включать: комбинированное внешнее/внутреннее предсказание, комбинированное внешнее/внутреннее предсказание, комбинированное внутреннее/внутреннее предсказание и т.д. Для весового(ых) значения(й) взвешенного предсказания одно и то же весовое значение или различные весовые значения могут быть установлены для всех позиций пикселей текущего блока.[00037] For example, the current block may be rectangular, while the boundary of an object is typically not rectangular in practical situations. Therefore, the boundary of an object usually uses two different entities (for example, an object represented in the foreground and in the background, etc.). When the motions of two objects are inconsistent, the two objects cannot be separated well based on rectangular separation. Therefore, the current block can be divided into two non-rectangular sub-blocks, and a weighted prediction is performed on the two non-rectangular sub-blocks. For example, weighted prediction is designed to perform a weighted operation based on multiple prediction values to obtain one or more final prediction values. The weighted prediction may include: combined inter/intra prediction, combined inter/intra prediction, combined intra/intra prediction, etc. For the weighted prediction weight(s), the same weight value or different weight values may be set for all pixel positions of the current block.
[00038] Фиг. 2А представляет собой схематическую диаграмму, иллюстрирующую режим треугольного разделения (ТРМ, Triangular Partition Mode) внешнего взвешенного предсказания.[00038] FIG. 2A is a schematic diagram illustrating the Triangular Partition Mode (TPM) of external weighted prediction.
[00039] Блок предсказания ТРМ получают путем объединения блока 1 внешнего предсказания (например, значение 1 внешнего предсказания для нескольких позиций пикселей получают с использованием режима внешнего предсказания) и блока 2 внешнего предсказания (например, значение 2 внешнего предсказания нескольких позиций пикселей получают с использованием режима внешнего предсказания). Блок предсказания ТРМ может быть разделен на две области/части, одна из которых может быть областью 1 внешнего предсказания, и другая может быть областью 2 внешнего предсказания. Блок предсказания ТРМ может быть прямоугольным, а две области внешнего предсказания блока предсказания ТРМ могут быть непрямоугольными, и линия границы между двумя областями внешнего предсказания (как показано пунктирной линией на фиг. 2В) может быть главной диагональю или субдиагональю блока предсказания ТРМ.[00039] The TPM prediction block is obtained by combining the inter prediction block 1 (for example, the
[00040] Например, позиция каждого пикселя в области 1 внешнего предсказания в основном определяется на основе значения внешнего предсказания блока 1 внешнего предсказания. Например, значение внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, где значение внешнего предсказания блока 1 внешнего предсказания имеет большее весовое значение, а значение внешнего предсказания блока 2 внешнего предсказания имеет меньшее весовое значение или даже 0. Каждая позиция пикселя области 2 внешнего предсказания в основном определяется на основе значения внешнего предсказания блока 2 внешнего предсказания. Например, значение внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, при этом значение внешнего предсказания блока 2 внешнего предсказания имеет большее весовое значение, а значение внешнего предсказания блока 1 внешнего предсказания имеет меньшее весовое значение или даже 0. Наконец, комбинированные значения предсказания позиций пикселей объединяют для формирования блока предсказания ТРМ.[00040] For example, the position of each pixel in the
[00041] Фиг. 2В представляет собой схематическую диаграмму, иллюстрирующую режим геометрического разделения (Geometrical, GEO) для межблочного режима. Режим GEO используется для разделения блока внешнего предсказания на два подблока с использованием одной линии разделения. В режиме GEO может быть больше направлений разделения по сравнению с режимом ТРМ. Режим GEO аналогичен режиму ТРМ в процессе взвешенного предсказания.[00041] FIG. 2B is a schematic diagram illustrating the Geometrical (GEO) mode for the interblock mode. GEO mode is used to divide an inter prediction block into two sub-blocks using a single dividing line. In GEO mode there can be more separation directions compared to TPM mode. The GEO mode is similar to the TPM mode in the weighted prediction process.
[00042] Блок предсказания GEO получают путем объединения блока 1 внешнего предсказания (например, значение 1 внешнего предсказания для позиций нескольких пикселей получают с использованием режима внешнего предсказания) и блока 2 внешнего предсказания (например, значение 2 внешнего предсказания для позиций нескольких пикселей получают с использованием режима внешнего предсказания). Блок предсказания GEO может быть разделен на две области/части, одна из которых может быть областью 1 внешнего предсказания, а другая может быть областью 2 внешнего предсказания.[00042] The GEO prediction block is obtained by combining the inter prediction block 1 (for example, the
[00043] Например, позиция каждого пикселя в области 1 внешнего предсказания в основном определяется на основе значения внешнего предсказания блока 1 внешнего предсказания. Например, значение внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, при этом значение внешнего предсказания блока 1 внешнего предсказания имеет большее весовое значение, а значение внешнего предсказания блока 2 внешнего предсказания имеет меньшее весовое значение или даже 0. Каждая позиция пикселя области 2 внешнего предсказания в основном определяется на основе значения внешнего предсказания блока 2 внешнего предсказания. Например, значение внешнего предсказания блока 1 внешнего предсказания позиции пикселя и значение внешнего предсказания блока 2 внешнего предсказания позиции пикселя взвешивают для получения комбинированного значения предсказания позиции пикселя, при этом значение внешнего предсказания блока 2 внешнего предсказания имеет большее весовое значение, а значение внешнего предсказания блока 1 внешнего предсказания имеет меньшее весовое значение или даже 0. Наконец, комбинированные значения предсказания позиций пикселей объединяют для формирования блока предсказания GEO.[00043] For example, the position of each pixel in the
[00044] Например, весовые значения блока предсказания GEO устанавливают с учетом расстояния позиции пикселя от линии разделения. Как показано на фиг. 2С, позиция А пикселя, позиция В пикселя и позиция С пикселя расположены в нижней правой части от линии разделения, а позиция D пикселя, позиция Е пикселя и позиция F пикселя расположены в верхней левой части от линии разделения. Для позиции А пикселя, позиции В пикселя и позиции С пикселя весовые значения блока 2 внешнего предсказания ранжируют как В≥А≥С, а весовые значения блока 1 внешнего предсказания ранжируют как С≥А≥В. Для позиции D пикселя, позиции Е пикселя и позиции F пикселя весовые значения блока 1 внешнего предсказания ранжируют как D≥F≥Е, а весовые значения блока 2 внешнего предсказания ранжируют как Е≥F≥D. Описанный выше способ требует вычисления расстояния между позицией пикселя и линией разделения, а затем определения весового значения позиции пикселя.[00044] For example, the weight values of the GEO prediction block are set taking into account the distance of the pixel position from the dividing line. As shown in FIG. 2C, pixel position A, pixel position B, and pixel position C are located at the lower right of the dividing line, and pixel position D, pixel position E, and pixel position F are located at the upper left of the dividing line. For pixel position A, pixel position B, and pixel position C, the weight values of the
[00045] В приведенных выше примерах для достижения взвешенного предсказания необходимо определить одно или более весовых значений блока предсказания, соответствующих каждой позиции пикселя текущего блока, и взвешенное предсказание выполняется на основе одного или более весовых значений, соответствующих каждой позиции пикселя. Но установка одного или более весовых значений зависит от линии разделения, и необоснованная установка одного или более весовых значений может привести к плохому результату предсказания и низкой эффективности кодирования.[00045] In the above examples, to achieve a weighted prediction, it is necessary to determine one or more weight values of a prediction block corresponding to each pixel position of the current block, and the weighted prediction is performed based on the one or more weight values corresponding to each pixel position. But setting one or more weight values depends on the dividing line, and unreasonably setting one or more weight values may result in poor prediction result and low coding efficiency.
[00046] Ввиду этого, варианты осуществления настоящего изобретения предлагают способ получения одного или более весовых значений. Таким образом, на основе опорных весовых значений окружающих позиций за пределами текущего блока определяют целевое весовое значение для каждой позиции пикселя текущего блока, таким образом, для каждой позиции пикселя может быть установлено более подходящее целевое весовое значение. В этом случае значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[00046] In view of this, embodiments of the present invention provide a method for obtaining one or more weight values. Thus, based on the reference weight values of surrounding positions outside the current block, a target weight value for each pixel position of the current block is determined, thus, a more appropriate target weight value can be set for each pixel position. In this case, the prediction values of the current block are closer to the original pixels, which improves the prediction accuracy, prediction efficiency, and coding efficiency.
[00047] Способ кодирования и декодирования согласно вариантам осуществления настоящего изобретения будет подробно описан ниже в сочетании с несколькими конкретными вариантами осуществления изобретения.[00047] The encoding and decoding method according to embodiments of the present invention will be described in detail below in combination with several specific embodiments of the invention.
[00048] Вариант 1 осуществления изобретения. Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования согласно вариантам осуществления настоящего изобретения. Способ кодирования и декодирования применяется на стороне декодера или на стороне кодера. Способ кодирования и декодирования включает следующие этапы 301-304.[00048]
[00049] На этапе 301, когда определено, что следует разрешить взвешенное предсказание для текущего блока, получают для текущего блока угол взвешенного предсказания текущего блока.[00049] At
[00050] В некоторых примерах текущий блок может включать один подблок, то есть подблок является самим текущим блоком. В этом случае получение угла взвешенного предсказания подблока означает получение угла взвешенного предсказания текущего блока.[00050] In some examples, the current block may include one subblock, that is, the subblock is the current block itself. In this case, obtaining the weighted prediction angle of a sub-block means obtaining the weighted prediction angle of the current block.
[00051] Например, при предсказании текущего блока сторона декодера или сторона кодера сначала определяют, разрешить ли взвешенное предсказание для текущего блока. Если определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока получают с использованием способа кодирования и декодирования согласно вариантам осуществления настоящего изобретения. Если определено, что не следует разрешать взвешенное предсказание для текущего блока, никаких ограничений на соответствующие реализации в вариантах осуществления настоящего изобретения не делается.[00051] For example, when predicting the current block, the decoder side or the encoder side first determines whether to allow weighted prediction for the current block. If it is determined that weighted prediction should be enabled for the current block, the weighted prediction angle of the current block is obtained using the encoding and decoding method according to embodiments of the present invention. If it is determined that weighted prediction should not be enabled for the current block, no restrictions are made on the corresponding implementations in embodiments of the present invention.
[00052] Например, когда определено, что следует разрешить взвешенное предсказание для текущего блока, должен быть получен угол взвешенного предсказания текущего блока, при этом угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока. Например, угловое направление, указанное позицией пикселя внутри текущего блока, определяют на основе определенного угла взвешенного предсказания, при этом угловое направление указывает на окружающую позицию за пределами текущего блока.[00052] For example, when it is determined that weighted prediction should be enabled for the current block, the weighted prediction angle of the current block must be obtained, wherein the weighted prediction angle refers to the angular direction indicated by the pixel position within the current block. For example, the angular direction indicated by a pixel position inside the current block is determined based on the determined weighted prediction angle, with the angular direction indicating a surrounding position outside the current block.
[00053] На этапе 302 для каждой позиции пикселя текущего блока определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией; и определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[00053] In
[00054] Например, поскольку угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания и затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе углового направления.[00054] For example, since the weighted prediction angle refers to the angular direction indicated by the pixel position within the current block, for each pixel position of the current block, the angular direction indicated by the pixel position is determined based on the weighted prediction angle, and then determines the surrounding corresponding position indicated by the pixel position , from surrounding positions outside the current block based on angular direction.
[00055] Для каждой позиции пикселя текущего блока, после того как определена окружающая соответствующая позиция, указанная позицией пикселя, определяют опорное весовое значение, связанное с окружающей соответствующей позицией, при этом опорное весовое значение, связанное с окружающей соответствующей позицией, может быть предварительно сконфигурировано или определено на основе стратегии, которая не ограничивается настоящим изобретением, при условии, что окружающая соответствующая позиция имеет ассоциированное опорное весовое значение.[00055] For each pixel position of the current block, after the surrounding corresponding position indicated by the pixel position is determined, a reference weight value associated with the surrounding corresponding position is determined, wherein the reference weight value associated with the surrounding corresponding position may be pre-configured or determined based on a strategy that is not limited to the present invention, provided that the surrounding corresponding position has an associated reference weight value.
[00056] Затем на основе опорного весового значения, связанного с окружающей соответствующей позицией, определяют целевое весовое значение позиции пикселя, например, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как целевое весовое значение пикселя.[00056] Then, based on the reference weight value associated with the surrounding corresponding position, the target weight value of the pixel position is determined, for example, the reference weight value associated with the surrounding corresponding position may be determined as the target pixel weight value.
[00057] После получения целевого весового значения позиции пикселя ассоциированное весовое значение позиции пикселя может быть определено на основе целевого весового значения позиции пикселя. Например, сумма целевого весового значения и ассоциированного весового значения для каждой позиции пикселя может быть фиксированным заданным значением. Следовательно, ассоциированное весовое значение может быть разностью между заданным значением и целевым весовым значением. Если предположить, что заданное значение равно 8, а целевое весовое значение позиции пикселя равно 0, ассоциированное весовое значение позиции пикселя равно 8; если предположить, что целевое весовое значение позиции пикселя равно 1, ассоциированное весовое значение позиции пикселя равно 7 и т.д., при условии, что сумма целевого весового значения и ассоциированного весового значения равна 8.[00057] After obtaining the target pixel position weight value, an associated pixel position weight value may be determined based on the target pixel position weight value. For example, the sum of the target weight value and the associated weight value for each pixel position may be a fixed target value. Therefore, the associated weight value may be the difference between the target value and the target weight value. Assuming that the specified value is 8 and the target pixel position weight value is 0, the associated pixel position weight value is 8; assuming that the target pixel position weight value is 1, the associated pixel position weight value is 7, etc., provided that the sum of the target weight value and the associated weight value is 8.
[00058] На этапе 303 для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определяют второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения позиции пикселя определяют значение взвешенного предсказания позиции пикселя.[00058] In
[00059] Например, если целевое весовое значение представляет собой весовое значение, соответствующее первому режиму предсказания, а ассоциированное весовое значение представляет собой весовое значение, соответствующее второму режиму предсказания, значение взвешенного предсказания позиции пикселя может быть следующим: (первое значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + второе значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заданное значение.[00059] For example, if the target weight value is a weight value corresponding to a first prediction mode, and the associated weight value is a weight value corresponding to a second prediction mode, the weighted pixel position prediction value may be as follows: (first pixel position prediction value * target pixel position weight value + second pixel position prediction value * associated pixel position weight value) / fixed set value.
[00060] Кроме того, если целевое весовое значение представляет собой весовое значение, соответствующее второму режиму предсказания, а ассоциированное весовое значение представляет собой весовое значение, соответствующее первому режиму предсказания, значение взвешенного предсказания позиции пикселя может быть следующим: (второе значение предсказания позиции пикселя * целевое весовое значение позиции пикселя + первое значение предсказания позиции пикселя * ассоциированное весовое значение позиции пикселя) / фиксированное заданное значение.[00060] In addition, if the target weight value is a weight value corresponding to the second prediction mode, and the associated weight value is a weight value corresponding to the first prediction mode, the weighted pixel position prediction value may be as follows: (second pixel position prediction value * target pixel position weight value + first pixel position prediction value * associated pixel position weight value) / fixed target value.
[00061] На этапе 304 определяют значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[00061] At
[00062] Например, для текущего блока значения взвешенного предсказания всех позиций пикселей текущего блока формируют в значения взвешенного предсказания текущего блока.[00062] For example, for the current block, the weighted prediction values of all pixel positions of the current block are generated into the weighted prediction values of the current block.
[00063] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором устанавливают подходящее целевое весовое значение для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[00063] As described above, embodiments of the present invention provide an efficient weight value setting method in which a suitable target weight value is set for each pixel position of the current block, so that the prediction values of the current block are closer to the original pixels, which improves the prediction accuracy. prediction efficiency and coding efficiency.
[00064] Вариант 2 осуществления изобретения. В варианте 1 осуществления изобретения текущий блок может включать один подблок, то есть подблок является самим текущим блоком. Для текущего блока на фиг. 4А показана схематическая диаграмма, иллюстрирующая блок-схему способа кодирования. Способ применяется на стороне кодера и включает следующие этапы 401-407.[00064]
[00065] На этапе 401, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона кодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока.[00065] In
[00066] Например, на стороне кодера необходимо определить, разрешить ли взвешенное предсказание для текущего блока. Если сторона кодера определяет, что следует разрешить взвешенное предсказание для текущего блока, получают угол взвешенного предсказания и позицию взвешенного предсказания текущего блока и выполняют последующие этапы, в противном случае способ обработки не ограничивается в настоящем изобретении.[00066] For example, on the encoder side it is necessary to determine whether to enable weighted prediction for the current block. If the encoder side determines that weighted prediction should be enabled for the current block, the weighted prediction angle and the weighted prediction position of the current block are obtained and subsequent steps are performed, otherwise the processing method is not limited in the present invention.
[00067] В возможной реализации, если текущий блок удовлетворяет условию для разрешения взвешенного предсказания, сторона кодера может определить, что взвешенное предсказание должно быть разрешено для текущего блока. Если текущий блок не удовлетворяет условию разрешения взвешенного предсказания, сторона кодера может определить, что взвешенное предсказание не должно быть разрешено для текущего блока. Например, сторона кодера может определить, удовлетворяет ли информация о характеристиках текущего блока определенному условию. Если информация о характеристиках текущего блока удовлетворяет определенному условию, определяют, что следует разрешить взвешенное предсказание для текущего блока, а если нет, определяют, что не следует разрешать взвешенное предсказание для текущего блока.[00067] In an exemplary implementation, if the current block satisfies a condition for enabling weighted prediction, the encoder side may determine that weighted prediction should be enabled for the current block. If the current block does not satisfy the weighted prediction enable condition, the encoder side may determine that the weighted prediction should not be enabled for the current block. For example, the encoder side can determine whether the characteristics information of the current block satisfies a certain condition. If the characteristic information of the current block satisfies a certain condition, it is determined that weighted prediction should be enabled for the current block, and if not, it is determined that weighted prediction should not be enabled for the current block.
[00068] Например, информация о характеристиках включает, не ограничиваясь этим, одно или более из следующего: тип текущего слайса, в котором расположен текущий блок, информация о размере текущего блока и информация управления переключением. Информация управления переключением может включать, не ограничиваясь этим: информацию управления переключением уровня последовательности (например, набор параметров последовательности (SPS, Sequence Parameter Set) и заголовок последовательности (SH, Sequence Header)), информацию управления переключением уровня изображения (например, набор параметров изображения (PPS, Picture Parameter Set) и заголовок изображения (РН, Picture Header)), информацию управления переключением уровня слайса (например, слайса, тайла и патча) или информацию управления переключением уровня наибольшей единицы кодирования (например, наибольшей единицы кодирования (LCU, Largest Coding Unit) и единицы дерева кодирования (CTU, Coding Tree Unit)).[00068] For example, the characteristics information includes, but is not limited to, one or more of the following: the type of the current slice in which the current block is located, information about the size of the current block, and switching control information. The switching control information may include, but is not limited to: sequence level switching control information (eg, Sequence Parameter Set and SH, Sequence Header), picture level switching control information (eg, picture parameter set). (PPS, Picture Parameter Set) and picture header (PH, Picture Header), slice level switching control information (for example, slice, tile and patch) or largest coding unit level switching control information (for example, LCU, Largest Coding Unit) and coding tree units (CTU, Coding Tree Unit)).
[00069] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, тип текущего слайса, в котором расположен текущий блок, удовлетворяющий определенному условию, включает, не ограничиваясь этим, следующее: если тип текущего слайса, в котором расположен текущий блок, является В-слайсом, определяют, что тип слайса удовлетворяет определенному условию; или, если тип текущего слайса, в котором расположен текущий блок, является I-слайсом, определяют, что тип слайса удовлетворяет определенному условию.[00069] For example, if the characteristic information is the type of the current slice in which the current block is located, the type of the current slice in which the current block satisfying a certain condition is located includes, but is not limited to, the following: if the type of the current slice in which the current block is located, is a B-slice, determine that the slice type satisfies a certain condition; or, if the type of the current slice in which the current block is located is an I-slice, determine that the slice type satisfies a certain condition.
[00070] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, например, ширину и высоту текущего блока, информация о размере текущего блока, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: если ширина больше или равна первому значению, а высота больше или равна второму значению, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если ширина больше или равна третьему значению, высота больше или равна четвертому значению, ширина меньше или равна пятому значению, а высота меньше или равна шестому значению, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или произведение ширины и высоты больше или равно седьмому значению, определяют, что информация о размере текущего блока удовлетворяет определенному условию. Вышеупомянутые значения могут быть сконфигурированы на основе опыта, например, сконфигурированы как 8, 16, 32, 64 или 128 и т.п., что здесь не ограничено. Например, первое значение может быть 8, второе значение может быть 8, третье значение может быть 8, четвертое значение может быть 8, пятое значение может быть 64, шестое значение может быть 64, и седьмое значение может быть 64. В этом случае, если ширина больше или равна 8, а высота больше или равна 8, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если ширина больше или равна 8, высота больше или равна 8, ширина меньше или равна 64, а высота меньше или равна 64, определяют, что информация о размере текущего блока удовлетворяет определенному условию; или, если произведение ширины и высоты больше или равно 64, определяют, что информация о размере текущего блока удовлетворяет определенному условию. Приведенные выше примеры являются только иллюстративными и не ограничивают настоящее изобретение.[00070] For example, if the characteristic information is information about the size of the current block, such as the width and height of the current block, the size information about the current block that satisfies a certain condition includes, but is not limited to, the following: if the width is greater than or equal to the first value , and the height is greater than or equal to the second value, it is determined that the size information of the current block satisfies a certain condition; or, if the width is greater than or equal to the third value, the height is greater than or equal to the fourth value, the width is less than or equal to the fifth value, and the height is less than or equal to the sixth value, determining that the current block size information satisfies a certain condition; or the product of the width and height is greater than or equal to the seventh value, determines that the size information of the current block satisfies a certain condition. The above values can be configured based on experience, for example, configured as 8, 16, 32, 64 or 128, etc., which is not limited here. For example, the first value could be 8, the second value could be 8, the third value could be 8, the fourth value could be 8, the fifth value could be 64, the sixth value could be 64, and the seventh value could be 64. In this case, if the width is greater than or equal to 8, and the height is greater than or equal to 8, determine that the size information of the current block satisfies a certain condition; or, if the width is greater than or equal to 8, the height is greater than or equal to 8, the width is less than or equal to 64, and the height is less than or equal to 64, determining that the size information of the current block satisfies a certain condition; or, if the product of the width and height is greater than or equal to 64, determining that the size information of the current block satisfies a certain condition. The above examples are illustrative only and do not limit the present invention.
[00071] Например, если информация о характеристиках представляет собой информацию о размере текущего блока, такую как ширина и высота текущего блока, информация о размере текущего блока, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: ширина не меньше а и не больше b, высота не меньше а и не больше b, где а может быть меньше или равно 16, и b может быть больше или равно 16. Например, а равно 8, и b равно 64 или 32.[00071] For example, if the characteristic information is information about the size of the current block, such as the width and height of the current block, the current block size information satisfying a certain condition includes, but is not limited to, the following: width is not less than a and not greater than b, the height is not less than a and not greater than b, where a can be less than or equal to 16, and b can be greater than or equal to 16. For example, a is 8, and b is 64 or 32.
[00072] Например, если информация о характеристиках представляет собой информацию управления переключением, информация управления переключением, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: если информация управления переключением позволяет разрешить взвешенное предсказание для текущего блока, определяют, что информация управления переключением удовлетворяет определенному условию.[00072] For example, if the performance information is switching control information, the switching control information satisfying a certain condition includes, but is not limited to, the following: if the switching control information allows weighted prediction for the current block, it is determined that the switching control information satisfies a certain condition.
[00073] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию о размере текущего блока, когда тип слайса удовлетворяет определенному условию, а информация о размере удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию управления переключением, когда тип слайса удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой информацию о размере текущего блока и информацию управления переключением, когда информация о размере удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, информацию о размере текущего блока и информацию управления переключением, когда тип слайса, информация о размере и информация управления переключением удовлетворяют определенным условиям соответственно, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию.[00073] For example, if the characteristics information is the type of the current slice in which the current block is located and the size information of the current block, when the slice type satisfies a certain condition and the size information satisfies a certain condition, it is determined that the characteristics information of the current block satisfies a certain condition. If the characteristic information represents the type of the current slice in which the current block is located and the switching control information, when the slice type satisfies a certain condition and the switching control information satisfies the certain condition, it is determined that the characteristic information of the current block satisfies the certain condition. If the characteristics information is size information of the current block and switching control information, when the size information satisfies a certain condition and the switching control information satisfies the certain condition, it is determined that the characteristics information of the current block satisfies the certain condition. If the characteristics information is the type of the current slice in which the current block is located, the size information of the current block and the switching control information, when the slice type, the size information and the switching control information satisfy certain conditions, respectively, it is determined that the characteristics information of the current block satisfies a certain condition.
[00074] В возможной реализации, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона кодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока. На фиг. 4В на основе угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 1 пикселя, позицией 2 пикселя и позицией 3 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока. На фиг. 4С на основе другого угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 2 пикселя, позицией 3 пикселя и позицией 4 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока.[00074] In an exemplary implementation, when it is determined that weighted prediction should be enabled for the current block, the encoder side obtains the weighted prediction angle and the weighted prediction position of the current block. In fig. 4B, based on the weighted prediction angle, shows the angular direction indicated by a pixel position (eg, 1 pixel position, 2 pixel position, and 3 pixel position) inside the current block, with the angular direction indicating a surrounding position outside the current block. In fig. 4C, based on another weighted prediction angle, shows the angular direction indicated by a pixel position (eg,
[00075] Позиция взвешенного предсказания (также называемая параметром расстояния) используется для конфигурирования опорного весового значения окружающей позиции за пределами текущего блока. Например, на основе таких параметров, как угол взвешенного предсказания, размер текущего блока и т.д., определяют диапазон окружающих позиций за пределами текущего блока, что показано на фиг. 4В и 4С. Диапазон окружающих позиций поровну делится на N частей, где значение N может быть установлено произвольно, например, может быть установлено как 4, 6 или 8 и т.п. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция используется в качестве начальной позиции преобразования весов текущего блока, так что опорные весовые значения окружающих позиций за пределами текущего блока сконфигурированы на основе начальной позиции преобразования весов.[00075] The weighted prediction position (also called the distance parameter) is used to configure the reference weight value of the surrounding position outside the current block. For example, based on parameters such as weighted prediction angle, current block size, etc., a range of surrounding positions outside the current block is determined, as shown in FIG. 4B and 4C. The range of surrounding positions is equally divided into N parts, where the value of N can be set arbitrarily, for example, it can be set to 4, 6 or 8, etc. The weighted prediction position is used to represent which surrounding position is used as the starting position of the weight transformation of the current block, so that the reference weight values of the surrounding positions outside the current block are configured based on the starting position of the weight transformation.
[00076] Например, описание представлено для N=8. Как показано на фиг. 4D, после того как все окружающие позиции разделены на восемь равных частей, можно получить семь позиций взвешенного предсказания. Когда позиция взвешенного предсказания равна 0, это указывает на то, что окружающая позиция ао (то есть окружающая позиция, отмеченная пунктирной линией 0. На практике нет пунктирной линии 0, и пунктирная линия 0 используется только для облегчения понимания данных примеров. Пунктирные линии от 0 до 6 используются для равного разделения всех окружающих позиций на восемь частей) служит начальной позицией преобразования весов текущего блока. Когда позиция взвешенного предсказания равна 1, это указывает на то, что окружающая позиция a1 служит начальной позицией преобразования весов текущего блока. Аналогично, когда позиция взвешенного предсказания равна 6, это означает, что окружающая позиция ае используется в качестве начальной позиции преобразования весов текущего блока.[00076] For example, the description is provided for N=8. As shown in FIG. 4D, after all surrounding positions are divided into eight equal parts, seven weighted prediction positions can be obtained. When the weighted prediction position is 0, it indicates that the surrounding position is ao (that is, the surrounding position marked by the dotted
[00077] Например, для различных углов взвешенного предсказания значения N могут быть различными. Например, для угла А взвешенного предсказания значение N может быть равно 6, что указывает на то, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, поровну разделен на шесть частей. Для угла В взвешенного предсказания значение N может быть равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, поровну разделен на восемь частей.[00077] For example, the N values may be different for different weighted prediction angles. For example, for weighted prediction angle A, the value of N may be 6, indicating that the range of surrounding positions determined based on weighted prediction angle A is equally divided into six parts. For the weighted prediction angle B, the value of N may be 8, indicating that the range of surrounding positions determined based on the weighted prediction angle B is equally divided into eight parts.
[00078] Для различных углов взвешенного предсказания значения N могут быть одинаковыми. В случае одного и того же значения N могут быть выбраны различные количества позиций взвешенного предсказания. Например, для угла А взвешенного предсказания значение N равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, поровну разделен на восемь частей; и для угла В взвешенного предсказания значение N равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, поровну разделен на восемь частей. В то же время, позиции взвешенного предсказания, соответствующие углу А взвешенного предсказания, могут быть выбраны всего из пяти позиций от a1 до a5, и позиции взвешенного предсказания, соответствующие углу В взвешенного предсказания, могут быть выбраны всего из семи позиций от b0 до b6.[00078] For different weighted prediction angles, the N values may be the same. For the same value of N, different numbers of weighted prediction positions can be selected. For example, for weighted prediction angle A, the value of N is 8, indicating that the range of surrounding positions determined based on weighted prediction angle A is equally divided into eight parts; and for the weighted prediction angle B, the value of N is 8, indicating that the range of surrounding positions determined based on the weighted prediction angle B is equally divided into eight parts. At the same time, weighted prediction positions corresponding to weighted prediction angle A can be selected from a total of five positions from a 1 to a 5 , and weighted prediction positions corresponding to weighted prediction angle B can be selected from a total of seven positions from b 0 to b 6 .
[00079] Например, диапазон окружающих позиций может быть разделен поровну на N частей, как описано выше. На практике способ неравного деления также может быть принят для разделения диапазона окружающих позиций на N частей, а не на N равных частей, что не ограничивается настоящим изобретением.[00079] For example, the range of surrounding positions may be divided equally into N parts, as described above. In practice, the unequal division method may also be adopted to divide a range of surrounding positions into N parts rather than N equal parts, which is not limited to the present invention.
[00080] Например, после того как все окружающие позиции будут поровну разделены на восемь частей, можно получить семь позиций взвешенного предсказания. На этапе 401 сторона кодера может получить одну позицию взвешенного предсказания из семи позиций взвешенного предсказания или выбрать некоторые позиции взвешенного предсказания (например, пять позиций взвешенного предсказания) из семи позиций взвешенного предсказания, а затем получить одну позицию взвешенного предсказания из пяти позиций взвешенного предсказания.[00080] For example, after all surrounding positions are equally divided into eight parts, seven weighted prediction positions can be obtained. At
[00081] Например, сторона кодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока следующими способами.[00081] For example, the encoder side obtains the weighted prediction angle and the weighted prediction position of the current block in the following ways.
[00082] В первом способе сторона кодера и сторона декодера соглашаются принять тот же угол взвешенного предсказания, что и угол взвешенного предсказания текущего блока, и соглашаются принять ту же позицию взвешенного предсказания, что и позиция взвешенного предсказания текущего блока. Например, и сторона кодера, и сторона декодера принимают угол А взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и обе стороны принимают позицию взвешенного предсказания а4 в качестве позиции взвешенного предсказания текущего блока.[00082] In the first method, the encoder side and the decoder side agree to adopt the same weighted prediction angle as the weighted prediction angle of the current block, and agree to adopt the same weighted prediction position as the weighted prediction position of the current block. For example, both the encoder side and the decoder side receive the weighted prediction angle A as the weighted prediction angle of the current block, and both sides receive the weighted prediction position a 4 as the weighted prediction position of the current block.
[00083] Во втором способе сторона кодера создает список углов взвешенного предсказания, который может включать по меньшей мере один угол взвешенного предсказания, например, список углов взвешенного предсказания может включать угол А взвешенного предсказания и угол В взвешенного предсказания. Сторона кодера создает список позиций взвешенного предсказания, который может включать по меньшей мере одну позицию взвешенного предсказания, например, список позиций взвешенного предсказания может включать позиции взвешенного предсказания ао-ае, позиции взвешенного предсказания b0-b6 и т.д. Сторона кодера последовательно проходит каждый угол взвешенного предсказания в списке углов взвешенного предсказания и последовательно проходит каждую позицию взвешенного предсказания в списке позиций взвешенного предсказания, то есть проходит комбинацию каждого угла взвешенного предсказания и каждой позиции взвешенного предсказания. Для каждой комбинации угла (углов) взвешенного предсказания и позиции (позиций) взвешенного предсказания угол взвешенного предсказания и позиция взвешенного предсказания в комбинации могут быть приняты в качестве угла взвешенного предсказания и позиции взвешенного предсказания текущего блока, которые получены на этапе 401, и выполняют этапы 402-407 на основе угла взвешенного предсказания и позиции взвешенного предсказания для получения значения взвешенного предсказания текущего блока.[00083] In the second method, the encoder side creates a list of weighted prediction angles, which may include at least one weighted prediction angle, for example, the list of weighted prediction angles may include weighted prediction angle A and weighted prediction angle B. The encoder side creates a list of weighted prediction positions, which may include at least one weighted prediction position, for example, the list of weighted prediction positions may include weighted prediction positions ao-ae, weighted prediction positions b 0 -b 6 , etc. The encoder side sequentially traverses each weighted prediction angle in the weighted prediction angle list, and sequentially traverses each weighted prediction position in the weighted prediction position list, that is, traverses a combination of each weighted prediction angle and each weighted prediction position. For each combination of weighted prediction angle(s) and weighted prediction position(s), the weighted prediction angle and weighted prediction position in the combination may be taken as the weighted prediction angle and weighted prediction position of the current block that are obtained in
[00084] Например, когда сторона кодера переходит к углу А взвешенного предсказания и позиции а0 взвешенного предсказания, сторона кодера выполняет этапы 402-407 на основе угла А взвешенного предсказания и позиции ао взвешенного предсказания, чтобы получить значение А-1 взвешенного предсказания текущего блока. Когда сторона кодера переходит к углу А взвешенного предсказания и позиции a1 взвешенного предсказания, выполняют этапы 402-407 на основе угла А взвешенного предсказания и позиции a1 взвешенного предсказания для получения значения А-2 взвешенного предсказания текущего блока. Когда сторона кодера получает угол В взвешенного предсказания и позицию b0 взвешенного предсказания путем обхода, выполняют этапы 402-407 на основе угла В взвешенного предсказания и позиции b0 взвешенного предсказания для получения значения В-1 взвешенного предсказания текущего блока и т.д. Сторона кодера может получить соответствующее значение взвешенного предсказания на основе каждой комбинации (каждой комбинации углов взвешенного предсказания и позиций взвешенного предсказания).[00084] For example, when the encoder side moves to the weighted prediction angle A and the weighted prediction position a0 , the encoder side performs steps 402-407 based on the weighted prediction angle A and the weighted prediction position AO to obtain the weighted prediction value A-1 of the current block . When the encoder side moves to the weighted prediction angle A and the weighted prediction position a 1 , steps 402 to 407 are performed based on the weighted prediction angle A and the weighted prediction position a 1 to obtain the weighted prediction value A-2 of the current block. When the encoder side obtains the weighted prediction angle B and the weighted prediction position b 0 by bypass, steps 402 to 407 are performed based on the weighted prediction angle B and the weighted prediction position b 0 to obtain the weighted prediction value B-1 of the current block, etc. The encoder side can obtain the corresponding weighted prediction value based on each combination (each combination of weighted prediction angles and weighted prediction positions).
[00085] После получения всех значений взвешенного предсказания на основе комбинации угла (углов) взвешенного предсказания и позиции (позиций) взвешенного предсказания сторона кодера может определить значение стоимости RDO на основе каждого значения взвешенного предсказания любым неограниченным образом. Сторона кодера может получить значение стоимости RDO для каждой комбинации и выбрать минимальное значение стоимости RDO из всех значений стоимости RDO.[00085] After obtaining all the weighted prediction values based on the combination of the weighted prediction angle(s) and the weighted prediction position(s), the encoder side may determine an RDO cost value based on each weighted prediction value in any unrestricted manner. The encoder side may obtain the RDO cost value for each combination and select the minimum RDO cost value from all the RDO cost values.
[00086] Затем сторона кодера принимает угол взвешенного предсказания и позицию взвешенного предсказания в комбинации, соответствующей минимальному значению стоимости RDO, в качестве целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока соответственно и, наконец, кодирует значение индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания и значение индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания в битовый поток. Конкретный способ реализации кодирования значений индекса в битовый поток может относиться к сценарию применения, рассмотренному при описании второго способа реализации следующего варианта осуществления изобретения.[00086] Then, the encoder side takes the weighted prediction angle and the weighted prediction position in the combination corresponding to the minimum RDO cost value as the target weighted prediction angle and the target weighted prediction position of the current block, respectively, and finally encodes the target weighted prediction angle index value in the list weighted prediction angles and an index value of the weighted prediction target position in the list of weighted prediction positions in the bitstream. The specific method for implementing encoding index values into a bit stream may relate to the application scenario discussed in the description of the second method for implementing the following embodiment of the invention.
[00087] Описанные выше способы являются только иллюстративными и не ограничиваются здесь при условии, что могут быть получены угол взвешенного предсказания и позиция взвешенного предсказания текущего блока. Например, один угол взвешенного предсказания может быть выбран любым путем из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и одна позиция взвешенного предсказания может быть выбрана любым путем из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[00087] The methods described above are only exemplary and are not limited herein, provided that the weighted prediction angle and weighted prediction position of the current block can be obtained. For example, one weighted prediction angle may be selected in any way from a list of weighted prediction angles as a weighted prediction angle of the current block, and one weighted prediction position may be selected in any way from a list of weighted prediction positions as a weighted prediction position of the current block.
[00088] На этапе 402 для каждой позиции пикселя текущего блока сторона кодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока. Для удобства различения в этом варианте осуществления изобретения окружающая позиция за пределами текущего блока, указанная позицией пикселя, может упоминаться как окружающая соответствующая позиция для позиции пикселя.[00088] At
[00089] Например, поскольку угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания, а затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока, которому принадлежит позиция пикселя, на основе углового направления.[00089] For example, since the weighted prediction angle refers to the angular direction indicated by the pixel position within the current block, for each pixel position of the current block, the angular direction indicated by the pixel position is determined based on the weighted prediction angle, and then the surrounding corresponding position indicated by the position is determined pixel, from surrounding positions outside the current block to which the pixel position belongs, based on angular direction.
[00090] Например, окружающие позиции за пределами текущего блока могут включать окружающие позиции в строке сверху от текущего блока, например, окружающие позиции в n1-й строке сверху от текущего блока, где n1 может быть равно 1 или 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в столбце слева от текущего блока, например, окружающие позиции в n2-м столбце слева от текущего блока, где n2 может быть 1 или 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в строке снизу от текущего блока, например, окружающие позиции в n3-й строке снизу от текущего блока, где n3 может быть равно 1, 2, 3 и т.д., что здесь не ограничивается; или могут включать окружающие позиции в столбце справа от текущего блока, например, окружающие позиции в n4-м столбце справа от текущего блока, где n4 может быть 1 или 2, 3 и т.д., что здесь не ограничивается.[00090] For example, surrounding positions outside the current block may include surrounding positions in the line above the current block, for example, surrounding positions in the n1th line above the current block, where n1 may be 1 or 2, 3, etc. ., which is not limited to here; or may include surrounding positions in the column to the left of the current block, for example, surrounding positions in the n2th column to the left of the current block, where n2 may be 1 or 2, 3, etc., which is not limited here; or may include surrounding positions in the line below the current block, for example, surrounding positions in the n3th line below the current block, where n3 may be 1, 2, 3, etc., but is not limited to this; or may include surrounding positions in the column to the right of the current block, for example, surrounding positions in the n4th column to the right of the current block, where n4 could be 1 or 2, 3, etc., but is not limited here.
[00091] Вышеприведенные примеры окружающих позиций являются иллюстративными и не ограничиваются здесь. На практике в дополнение к окружающим позициям за пределами текущего блока также могут использоваться внутренние позиции текущего блока, то есть внутренние позиции текущего блока используются для замены вышеперечисленных окружающих позиций за пределами текущего блока, например, внутренние позиции могут включать внутренние позиции в n5-й строке внутри текущего блока, где n5 может быть 1 или 2, 3 и т.д., или внутренние позиции в n6-м столбце внутри текущего блока, где n6 может быть 1 или 2, 3 и т.д. Длина внутренних позиций может превышать диапазон текущего блока, например, позиции n7-й строки могут превышать диапазон текущего блока, то есть выходить наружу из двух сторон текущего блока.[00091] The above examples of surrounding positions are illustrative and not limited here. In practice, in addition to the surrounding positions outside the current block, the internal positions of the current block can also be used, that is, the internal positions of the current block are used to replace the above surrounding positions outside the current block, for example, the internal positions may include the internal positions in the n5th row inside the current block, where n5 could be 1 or 2, 3, etc., or the internal positions in the n6th column within the current block, where n6 could be 1 or 2, 3, etc. The length of internal positions may exceed the range of the current block, for example, the positions of the n7th row may exceed the range of the current block, that is, extend outward from two sides of the current block.
[00092] Внутренние позиции текущего блока и окружающие позиции за пределами текущего блока могут использоваться одновременно.[00092] The interior positions of the current block and the surrounding positions outside the current block can be used simultaneously.
[00093] Для использования внутренних позиций текущего блока или использования как внутренних позиций текущего блока, так и окружающих позиций за пределами текущего блока текущий блок может быть разделен на два подблока, верхний и нижний, на основе строки, в которой расположены внутренние позиции, или разделен на два подблока, левый и правый, в зависимости от столбца, в котором расположены внутренние позиции. В этом случае два подблока имеют один и тот же угол взвешенного предсказания и одну и ту же позицию взвешенного предсказания.[00093] To use the internal positions of the current block, or use both the internal positions of the current block and surrounding positions outside the current block, the current block can be divided into two sub-blocks, top and bottom, based on the row in which the internal positions are located, or divided into two subblocks, left and right, depending on the column in which the internal positions are located. In this case, the two sub-blocks have the same weighted prediction angle and the same weighted prediction position.
[00094] Например, окружающие позиции за пределами текущего блока могут быть расположены между позициями пикселей, например, в одной или более позициях субпикселей, и в этом случае позиция текущего блока не может быть просто описано как строка "х", а описывается как строка позиций субпикселей, расположенная между строкой "х" и строкой "у".[00094] For example, surrounding positions outside the current block may be located between pixel positions, for example, at one or more subpixel positions, in which case the position of the current block cannot simply be described as a string of "x", but rather described as a string of positions subpixels located between the "x" line and the "y" line.
[00095] Для удобства описания в последующих вариантах осуществления изобретения в качестве примера приняты окружающие позиции в первой строке сверху от текущего блока или окружающие позиции в первом столбце слева от текущего блока, а другие окружающие позиции могут быть реализованы аналогичным образом.[00095] For convenience of description, the following embodiments take as an example the surrounding positions in the first row above the current block or the surrounding positions in the first column to the left of the current block, and other surrounding positions may be implemented in a similar manner.
[00096] Например, для диапазона окружающих позиций за пределами текущего блока, этот диапазон может быть предварительно назначен как ряд окружающих позиций за пределами текущего блока. Альтернативно, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания, например, окружающую позицию, указанную каждой из позиций пикселя внутри текущего блока, определяют на основе угла взвешенного предсказания, а затем определяют диапазон окружающих позиций за пределами текущего блока на основе границы окружающих позиций, указанных всеми позициями пикселей. Диапазон окружающих позиций здесь не ограничен.[00096] For example, for a range of surrounding positions outside the current block, that range may be pre-assigned as a range of surrounding positions outside the current block. Alternatively, the range of surrounding positions outside the current block may be determined based on the weighted prediction angle, for example, the surrounding position indicated by each of the pixel positions within the current block is determined based on the weighted prediction angle, and then determine the range of surrounding positions outside the current block by based on the boundary of the surrounding positions indicated by all pixel positions. The range of surrounding positions is not limited here.
[00097] Окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя или одну или более позиций нецелого пикселя. Позиция нецелого пикселя может быть позицией субпикселя, например, позицией 1/2 субпикселя, или позицией 1/4 субпикселя, или позицией 3/4 субпикселя и т.п., что не ограничивается здесь. Кроме того, окружающие позиции за пределами текущего блока могут включать как одну или более позиций целого пикселя, так и одну или более позиций субпикселя.[00097] Surrounding positions outside the current block may include one or more integer pixel positions or one or more non-integer pixel positions. The non-integer pixel position may be a sub-pixel position, such as a 1/2 sub-pixel position, or a 1/4 sub-pixel position, or a 3/4 sub-pixel position and the like, which is not limited here. In addition, surrounding positions outside the current block may include both one or more whole pixel positions and one or more subpixel positions.
[00098] Например, две окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или четыре окружающие позиции за пределами текущего блока могут соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать одной позиции целого пикселя; или одна окружающая позиция за пределами текущего блока может соответствовать двум позициям целого пикселя. Выше приведены лишь несколько примеров, которые не ограничивают изобретение. Связь между окружающей позицией и позицией целого пикселя может быть сконфигурирована произвольно.[00098] For example, two surrounding positions outside the current block may correspond to one whole pixel position; or four surrounding positions outside the current block may correspond to one whole pixel position; or one surrounding position outside the current block may correspond to one whole pixel position; or one surrounding position outside the current block may correspond to two whole pixel positions. The above are just a few examples that do not limit the invention. The relationship between the surrounding position and the whole pixel position can be configured arbitrarily.
[00099] Как показано на фиг. 4В и 4С, одна окружающая позиция соответствует одной позиции целого пикселя, и, как показано на фиг. 4Е две окружающие позиции соответствуют одной позиции целого пикселя. Другие примеры для краткости не будут описаны в этом варианте осуществления изобретения.[00099] As shown in FIG. 4B and 4C, one surrounding position corresponds to one whole pixel position, and, as shown in FIG. 4E, two surrounding positions correspond to one whole pixel position. Other examples will not be described in this embodiment for brevity.
[000100] На этапе 403 сторона кодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.[000100] At
[000101] Например, для каждой позиции пикселя текущего блока после определения окружающей соответствующей позиции, указанной позицией пикселя, сторона кодера определяет опорное весовое значение, связанное с окружающей соответствующей позицией. Опорное весовое значение, связанное с окружающей соответствующей позицией, может быть предварительно сконфигурировано или определено на основе стратегии, при этом конкретный способ определения может относиться к последующим вариантам осуществления изобретения.[000101] For example, for each pixel position of the current block, after determining a surrounding corresponding position indicated by the pixel position, the encoder side determines a reference weight value associated with the surrounding corresponding position. The reference weight value associated with the surrounding corresponding position may be pre-configured or determined based on the strategy, and the specific determination method may be related to subsequent embodiments of the invention.
[000102] Затем сторона кодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, например, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как целевое весовое значение позиции пикселя.[000102] Then, the encoder side determines the target pixel position weight value based on the reference weight value associated with the surrounding corresponding position, for example, the reference weight value associated with the surrounding corresponding position may be determined as the target pixel position weight value.
[000103] Например, одно или более опорных весовых значений могут быть установлены для окружающих позиций за пределами текущего блока. Конкретный процесс может быть отнесен к последующим вариантам осуществления изобретения. Окружающие позиции за пределами текущего блока могут быть одной или более позициями целого пикселя или одной или более позициями субпикселя. Например, одно или более опорных весовых значений могут быть установлены для одной или более позиций целого пикселя за пределами текущего блока, и/или одно или более опорных весовых значений могут быть установлены для одной или более позиций субпикселя за пределами текущего блока.[000103] For example, one or more reference weights may be set for surrounding positions outside the current block. The specific process may be referred to in subsequent embodiments of the invention. Surrounding positions outside the current block may be one or more whole pixel positions or one or more subpixel positions. For example, one or more reference weights may be set to one or more whole pixel positions outside the current block, and/or one or more reference weights may be set to one or more sub-pixel positions outside the current block.
[000104] В возможной реализации целевое весовое значение позиции пикселя определяют на основе опорного весового значения, связанного с окружающей соответствующей позицией, что может включать следующие пять случаев. Случай 1. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного весового значения позиции целого пикселя. Случай 2. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя не задана с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного(ых) весового(ых) значения(й) соседней(их) позиции(й) позиции целого пикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции целого пикселя. Способ определения здесь не ограничен. Случай 3. Если окружающая соответствующая позиция является позицией субпикселя, а позиция субпикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе опорного весового значения позиции субпикселя. Случай 4. Если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя не задана с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе одного или более опорных весовых значений одной или более соседних позиций позиции субпикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции субпикселя. Способ определения здесь не ограничен. Случай 5, определяют целевое весовое значение позиции пикселя на основе нескольких опорных весовых значений, связанных с окружающей соответствующей позицией. Например, независимо от того, является ли окружающая соответствующая позиция позицией целого пикселя или позицией субпикселя, могут быть получены опорные весовые значения множества соседних позиций окружающей соответствующей позиции. Если окружающая соответствующая позиция установлена с опорным весовым значением, выполняют взвешенную операцию для опорного весового значения окружающей соответствующей позиции и опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя. Если окружающая соответствующая позиция не задана с опорным весовым значением, выполняют операцию взвешивания для опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя.[000104] In an exemplary implementation, the target weight value of a pixel position is determined based on a reference weight value associated with a surrounding corresponding position, which may include the following five cases. Case 1: If the surrounding corresponding position is an integer pixel position, and the integer pixel position is set with a reference weight value, the target pixel position weight value can be determined based on the reference integer pixel position weight value. Case 2: If the surrounding corresponding position is an integer pixel position, and the integer pixel position is not specified with a reference weight value, the target pixel position weight value(s) can be determined based on the reference weight value(s) of the neighboring position(s). (th) positions of the whole pixel. For example, a rounding operation is performed on the reference weight value of the adjacent position to obtain the target pixel position weight value; or performing a round-down operation on the adjacent position reference weight value to obtain a target pixel position weight value; or determining a target pixel position weight value based on interpolation of reference weight values of neighboring positions of the whole pixel position. The method of determination is not limited here. Case 3: If the surrounding corresponding position is a subpixel position, and the subpixel position is set with a reference weight value, the target pixel position weight value is determined based on the reference subpixel position weight value. Case 4: If the surrounding corresponding position is a subpixel position, and the subpixel position is not specified with a reference weight value, the target pixel position weight value is determined based on one or more reference weight values of one or more neighboring subpixel position positions. For example, a rounding operation is performed on the reference weight value of the adjacent position to obtain the target pixel position weight value; or performing a round-down operation on the adjacent position reference weight value to obtain a target pixel position weight value; or determining a target pixel position weight value based on interpolation of reference weight values of adjacent subpixel position positions. The method of determination is not limited here.
[000105] Вышеприведенные случаи 1-5 являются только примерами, и способы определения целевого весового значения здесь не ограничены.[000105] The above cases 1-5 are only examples, and methods for determining the target weight value are not limited here.
[000106] На этапе 404 сторона кодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[000106] At
[000107] На этапе 405 для каждой позиции пикселя текущего блока сторона кодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.[000107] In
[000108] Например, первый режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры; и второй режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры. Например, первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом предсказания внутриблочного копирования; первый режим предсказания может быть режимом внешнего предсказания, и второй режим предсказания может быть режимом внешнего предсказания и т.д.[000108] For example, the first prediction mode may be any of an intra-block copy prediction mode, an intra prediction mode, an inter prediction mode, and a palette mode; and the second prediction mode may be any of an intra-block copy prediction mode, an intra prediction mode, an inter prediction mode, and a palette mode. For example, the first prediction mode may be an intra-block copy prediction mode, and the second prediction mode may be an intra-block copy prediction mode; the first prediction mode may be an inter prediction mode, and the second prediction mode may be an inter prediction mode, etc.
[000109] Процесс определения значения предсказания на основе первого режима предсказания и второго режима предсказания может относиться к последующим вариантам осуществления изобретения.[000109] The process of determining a prediction value based on the first prediction mode and the second prediction mode may be related to subsequent embodiments of the invention.
[000110] На этапе 406 сторона кодера определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.[000110] At
[000111] На этапе 407 сторона кодера определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой из позиций пикселей текущего блока.[000111] In
[000112] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений для установки подходящего целевого весового значения для каждой из позиций пикселей текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[000112] As described above, embodiments of the present invention provide an efficient weight value setting method for setting a suitable target weight value for each of the pixel positions of the current block, so that the prediction values of the current block are closer to the original pixels, which improves prediction accuracy, efficiency predictions and coding efficiency.
[000113] Вариант 3 осуществления изобретения. В варианте 1 осуществления текущий блок может включать один подблок, то есть подблок является самим текущим блоком. Для текущего блока на фиг. 4F показана схематическая диаграмма, иллюстрирующая блок-схему способа декодирования. Способ применяется на стороне декодера и включает следующие этапы 411-417.[000113]
[000114] На этапе 411, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока.[000114] At
[000115] Например, стороне декодера также необходимо определить, следует ли разрешить взвешенное предсказание для текущего блока. Если сторона декодера определяет, что следует разрешить взвешенное предсказание для текущего блока, получают угол взвешенного предсказания и позицию взвешенного предсказания текущего блока и выполняют последующие этапы, в противном случае способ обработки не ограничивается в настоящем изобретении.[000115] For example, the decoder side also needs to determine whether weighted prediction should be enabled for the current block. If the decoder side determines that weighted prediction should be enabled for the current block, the weighted prediction angle and the weighted prediction position of the current block are obtained and subsequent steps are performed, otherwise the processing method is not limited in the present invention.
[000116] В возможной реализации сторона кодера определяет, удовлетворяет ли информация о характеристиках текущего блока определенному условию, и, если информация о характеристиках удовлетворяет определенному условию, сторона кодера определяет, что следует разрешить взвешенное предсказание для текущего блока. Сторона декодера также определяет, удовлетворяет ли информация о характеристиках текущего блока определенному условию, и, если информация о характеристиках удовлетворяет определенному условию, сторона декодера определяет, что следует разрешить взвешенное предсказание для текущего блока, в противном случае сторона декодера определяет, что не следует разрешать взвешенное предсказание для текущего блока. Способ, которым сторона декодера определяет, разрешить ли взвешенное предсказание для текущего блока на основе информации о характеристиках, может быть отнесен к этапу 401 и здесь повторяться не будет.[000116] In an exemplary implementation, the encoder side determines whether the characteristic information of the current block satisfies a certain condition, and if the characteristic information satisfies the certain condition, the encoder side determines that a weighted prediction should be allowed for the current block. The decoder side also determines whether the performance information of the current block satisfies a certain condition, and if the performance information satisfies the certain condition, the decoder side determines that weighted prediction should be allowed for the current block, otherwise the decoder side determines that weighted prediction should not be allowed. prediction for the current block. The manner in which the decoder side determines whether to allow weighted prediction for the current block based on the performance information may be referred to at
[000117] В другой возможной реализации на стороне кодера определяют, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока. Когда текущий блок поддерживает взвешенное предсказание, также может быть принята другая стратегия, чтобы определить, разрешить ли взвешенное предсказание для текущего блока, например, используют RDO, чтобы определить, разрешить ли взвешенное предсказание для текущего блока. После определения, разрешить ли взвешенное предсказание для текущего блока, когда сторона кодера передает кодированный битовый поток текущего блока, кодированный битовый поток может включать синтаксис для определения, следует ли разрешить взвешенное предсказание для текущего блока, при этом синтаксис указывает, следует ли разрешить взвешенное предсказание для текущего блока. Сторона декодера определяет, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока, и конкретная реализация может быть отнесена к этапу 401 и здесь не повторяется. Когда определяют, что текущий блок поддерживает взвешенное предсказание, сторона декодера может также декодировать синтаксис для определения, следует ли разрешить взвешенное предсказание для текущего блока, из кодированного битового потока и определять, разрешить ли взвешенное предсказание для текущего блока на основе упомянутого синтаксиса.[000117] In another possible encoder-side implementation, it is determined whether the current block supports weighted prediction based on information about the characteristics of the current block. When the current block supports weighted prediction, another strategy may also be adopted to determine whether to enable weighted prediction for the current block, for example, using RDO to determine whether to enable weighted prediction for the current block. After determining whether to enable weighted prediction for the current block, when the encoder side transmits the encoded bitstream of the current block, the encoded bitstream may include syntax for determining whether to enable weighted prediction for the current block, wherein the syntax indicates whether to enable weighted prediction for current block. The decoder side determines whether the current block supports weighted prediction based on the characteristics information of the current block, and the specific implementation may be referred to block 401 and is not repeated here. When it is determined that the current block supports weighted prediction, the decoder side may also decode a syntax for determining whether to enable weighted prediction for the current block from the encoded bit stream and determine whether to enable weighted prediction for the current block based on the syntax.
[000118] В возможной реализации, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока, при этом соответствующее описание угла взвешенного предсказания и позиции взвешенного предсказания может относиться к этапу 401 и здесь повторяться не будет. Сторона декодера может получить угол взвешенного предсказания и позицию взвешенного предсказания текущего блока следующими способами.[000118] In an exemplary implementation, when it is determined that weighted prediction should be enabled for the current block, the decoder side obtains the weighted prediction angle and weighted prediction position of the current block, wherein a corresponding description of the weighted prediction angle and weighted prediction position may be referred to at
[000119] В первом способе сторона декодера и сторона кодера договариваются принять тот же угол взвешенного предсказания, что и угол взвешенного предсказания текущего блока, и договариваются принять ту же позицию взвешенного предсказания, что и позиция взвешенного предсказания текущего блока. Конкретное содержание может относиться к первому способу в описанном выше варианте осуществления изобретения.[000119] In the first method, the decoder side and the encoder side agree to adopt the same weighted prediction angle as the weighted prediction angle of the current block, and agree to adopt the same weighted prediction position as the weighted prediction position of the current block. The specific content may relate to the first method in the above-described embodiment of the invention.
[000120] Во втором способе на стороне декодера создается список углов взвешенного предсказания, который является таким же, как список углов взвешенного предсказания на стороне кодера. На стороне декодера создается список позиций взвешенного предсказания, который является таким же, как список позиций взвешенного предсказания на стороне кодера. Конкретное содержание может относиться ко второму способу в описанном выше варианте осуществления изобретения. После получения кодированного битового потока текущего блока сторона декодера анализирует информацию указания из кодированного битового потока и выбирает один угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока на основе информации указания и выбирает одну позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока на основе информации указания.[000120] In the second method, a weighted prediction angle list is created on the decoder side, which is the same as a weighted prediction angle list on the encoder side. At the decoder side, a list of weighted prediction positions is created, which is the same as the list of weighted prediction positions at the encoder side. The specific content may relate to the second method in the above-described embodiment of the invention. After receiving the encoded bitstream of the current block, the decoder side analyzes the indication information from the encoded bitstream and selects one weighted prediction angle from the list of weighted prediction angles as the weighted prediction angle of the current block based on the indication information, and selects one weighted prediction position from the list of weighted prediction positions in as a weighted prediction position of the current block based on the indication information.
[000121] Процесс реализации второго способа будет описан ниже в сочетании с несколькими конкретными сценариями применения.[000121] The process for implementing the second method will be described below in conjunction with several specific application scenarios.
[000122] Сценарий 1 применения: когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 1 указания, используемую для указания как угла взвешенного предсказания текущего блока (то есть целевого угла взвешенного предсказания), так и позиции взвешенного предсказания текущего блока (то есть целевой позиции взвешенного предсказания). Например, когда информация 1 указания равна 0, информация 1 указания может указывать первый угол взвешенного предсказания в списке углов взвешенного предсказания и первую позицию взвешенного предсказания в списке позиций взвешенного предсказания и т.д., нет никаких ограничений на значение информации 1 указания, для указания которой используются угол взвешенного предсказания и позиция взвешенного предсказания, если сторона кодера и сторона декодера согласны с этим.[000122] Application Scenario 1: When the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may include
[000123] После приема кодированного битового потока сторона декодера декодирует информацию 1 указания из кодированного битового потока. На основе информации 1 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий информации 1 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 1 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 1 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000123] After receiving the encoded bitstream, the decoder side decodes the
[000124] Сценарий 2 применения: когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 2 указания и информацию 3 указания. Информация 2 указания указывает целевой угол взвешенного предсказания текущего блока, например, значение 1 индекса целевого угла взвешенного предсказания в списке углов взвешенного предсказания, при этом значение 1 индекса указывает, какой угол взвешенного предсказания в списке углов взвешенного предсказания является целевым углом взвешенного предсказания. Информация 3 указания указывает целевую позицию взвешенного предсказания текущего блока, например, значение 2 индекса целевой позиции взвешенного предсказания в списке позиций взвешенного предсказания, при этом значение 2 индекса указывает, какая позиция взвешенного предсказания в списке позиций взвешенного предсказания является целевой позицией взвешенного предсказания.[000124] Application Scenario 2: When the encoder side transmits a coded bit stream to the decoder side, the coded bit stream may include
[000125] После приема кодированного битового потока сторона декодера анализирует информацию 2 указания и информацию 3 указания из кодированного битового потока. На основе информации 2 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий значению 1 индекса в списке углов взвешенного предсказания, и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 3 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую значению 2 индекса в списке позиций взвешенного предсказания, и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000125] After receiving the coded bit stream, the decoder side analyzes the
[000126] Сценарий 3 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. Предпочтительная комбинация конфигурации может быть сконфигурирована в соответствии с опытом, что здесь не ограничивается. Например, они могут договориться о том, что предпочтительная комбинация конфигурации включает предпочтительную комбинацию 1 конфигурации, включающую угол А взвешенного предсказания, и позиция a4 взвешенного предсказания может быть согласована, предпочтительную комбинацию 2 конфигурации, включающую угол В взвешенного предсказания и позицию b4 взвешенного предсказания и т.п.[000126] Application Scenario 3: The encoder side and the decoder side can agree on a preferred configuration combination. The preferred configuration combination may be configured according to experience, but is not limited here. For example, they may agree that a preferred configuration combination includes a
[000127] После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера определяет, принадлежит ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания предпочтительной комбинации конфигурации. Если комбинация включена в предпочтительную комбинацию конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания и информацию 5 указания. Информация 4 указания указывает, используется ли предпочтительная комбинация конфигурации для текущего блока. Например, информация 4 указания представляет собой первое значение (например, 0), указывающее, что для текущего блока используется предпочтительная комбинация конфигурации. Информация 5 указания указывает, какая предпочтительная комбинация конфигурации используется для текущего блока. Например, когда значение информации 5 указания равно 0, это может указывать на то, что для текущего блока используется предпочтительная комбинация 1 конфигурации, а когда значение информации 5 указания равно 1, это может указывать на то, что для текущего блока используется предпочтительная комбинация 2 конфигурации.[000127] After determining the weighted prediction target angle and the weighted prediction target position of the current block, the encoder side determines whether the combination of the weighted prediction target angle and the weighted prediction target position belongs to the preferred configuration combination. If the combination is included in the preferred configuration combination, when the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may include
[000128] После приема кодированного битового потока сторона декодера может проанализировать информацию 4 указания и информацию 5 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является первым значением, сторона декодера определяет, что для текущего блока используется предпочтительная комбинация конфигурации. Когда для текущего блока используется предпочтительная комбинация конфигурации, сторона декодера может определить, какая предпочтительная комбинация конфигурации используется для текущего блока, на основе информации 5 указания. Например, когда значение информации 5 указания равно 0, сторона декодера может определить, что для текущего блока используется предпочтительная комбинация 1 конфигурации, например, угол взвешенного предсказания текущего блока представляет собой угол А взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией a4 взвешенного предсказания. В другом примере, когда значение информации 5 указания равно 1, сторона декодера может определить, что для текущего блока используется предпочтительная комбинация 2 конфигурации, например, угол взвешенного предсказания текущего блока представляет собой угол В взвешенного предсказания, и позиция взвешенного предсказания текущего блока представляет собой позицию b4 взвешенного предсказания.[000128] After receiving the encoded bitstream, the decoder side can analyze the
[000129] Например, если сторона кодера и сторона декодера согласуют только один набор комбинаций в предпочтительной комбинации конфигурации, например, предпочтительная комбинация конфигурации включает только угол А взвешенного предсказания и позицию а4 взвешенного предсказания, кодированный битовый поток может включать только информацию 4 указания без информации 5 указания, при этом информация 4 указания указывает, что для текущего блока используется предпочтительная комбинация конфигурации. После того как сторона декодера анализирует информацию 4 указания из кодированного битового потока, если информация 4 указания является первым значением, сторона декодера определяет, что для текущего блока используется предпочтительная комбинация конфигурации. На основе предпочтительной комбинации сторона декодера определяет, что угол взвешенного предсказания текущего блока представляет собой угол А взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией а4 взвешенного предсказания.[000129] For example, if the encoder side and the decoder side agree on only one set of patterns in the preferred configuration combination, for example, the preferred configuration combination includes only the weighted prediction angle A and the weighted prediction position a 4 , the encoded bitstream may only include the
[000130] Сценарий 4 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера может определить, принадлежит ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания предпочтительной комбинации конфигурации. Если она не принадлежит предпочтительной комбинации конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания и информацию 6 указания. Информация 4 указания указывает, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания представляет собой второе значение (например, 1), информация 4 указания может указывать, что предпочтительная комбинация конфигурации не используется для текущего блока. Информация 6 указания указывает как целевой угол взвешенного предсказания текущего блока, так и целевую позицию взвешенного предсказания текущего блока.[000130] Application Scenario 4: The encoder side and the decoder side may agree on a preferred configuration combination. After determining the weighted prediction target angle and the weighted prediction target position of the current block, the encoder side can determine whether the combination of the weighted prediction target angle and the weighted prediction target position belongs to the preferred configuration combination. If it does not belong to the preferred configuration combination, when the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may include
[000131] После приема кодированного битового потока сторона декодера может проанализировать информацию 4 указания и информацию 6 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда предпочтительная комбинация конфигурации не используется для текущего блока, сторона декодера может выбрать на основе информации 6 указания угол взвешенного предсказания, соответствующий информации 6 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока; и на основе информации 6 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 6 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000131] After receiving the coded bitstream, the decoder side can analyze the
[000132] Сценарий 5 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера может определить, входит ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания в предпочтительную комбинацию конфигурации. Если комбинация не является предпочтительной комбинацией конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания, информацию 7 указания и информацию 8 указания. Например, информация 4 указания указывает, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, информация 4 указания может указывать, что предпочтительная комбинация конфигурации не используется для текущего блока. Информация 7 указания указывает целевой угол взвешенного предсказания текущего блока. Информация 8 указания указывает целевую позицию взвешенного предсказания текущего блока.[000132] Application Scenario 5: The encoder side and the decoder side can agree on a preferred configuration combination. After determining the target weighted prediction angle and the target weighted prediction position of the current block, the encoder side can determine whether the combination of the target weighted prediction angle and the target weighted prediction position is included in the preferred configuration combination. If the combination is not the preferred configuration combination, when the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may include
[000133] После приема кодированного битового потока сторона декодера анализирует информацию 4 указания, информацию 7 указания и информацию 8 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда для текущего блока не используется предпочтительная комбинация конфигурации, сторона декодера может выбрать, на основе информации 7 указания, соответствующий угол взвешенного предсказания из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока; и на основе информации 8 указания сторона декодера может выбрать соответствующую позицию взвешенного предсказания из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000133] After receiving the encoded bitstream, the decoder side analyzes the
[000134] Вышеупомянутые первый и второй способы являются просто иллюстративными и не ограничиваются здесь при условии, что сторона декодера может получить угол взвешенного предсказания (то есть целевой угол взвешенного предсказания) и позицию взвешенного предсказания (то есть целевую позицию взвешенного предсказания) текущего блока.[000134] The above first and second methods are merely exemplary and are not limited herein, as long as the decoder side can obtain the weighted prediction angle (ie, target weighted prediction angle) and the weighted prediction position (ie, target weighted prediction position) of the current block.
[000135] На этапе 412 для каждой позиции пикселя текущего блока сторона декодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока.[000135] At
[000136] На этапе 413 сторона декодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.[000136] At
[000137] На этапе 414 сторона декодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[000137] At
[000138] На этапе 415 для каждой позиции пикселя текущего блока сторона декодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.[000138] In
[000139] На этапе 416 на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения позиции пикселя сторона декодера определяет значение взвешенного предсказания позиции пикселя.[000139] At
[000140] На этапе 417 сторона декодера определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой из позиций пикселей текущего блока.[000140] In
[000141] Например, процессы реализации этапов 412-417 могут быть отнесены к этапам 402-407, с той разницей, что этапы 412-417 являются процессами на стороне декодера, а не процессами на стороне кодера, поэтому они не будут здесь повторяться.[000141] For example, the processes implementing steps 412-417 can be referred to as steps 402-407, with the difference that steps 412-417 are decoder-side processes rather than encoder-side processes, so they will not be repeated here.
[000142] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором устанавливают подходящее целевое весовое значение для каждой из позиций пикселей текущего блока таким образом, чтобы значения предсказания текущего блока были более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность декодирования.[000142] As described above, embodiments of the present invention provide an efficient weight value setting method in which a suitable target weight value is set for each of the pixel positions of the current block so that the prediction values of the current block are more similar to the original pixels, which improves prediction accuracy, prediction efficiency and decoding efficiency.
[000143] В приведенных выше вариантах 2 и 3 осуществления изобретения текущий блок включает один подблок, то есть обработка текущего блока может быть обозначена как угловой режим внешнего взвешенного предсказания (AWP, Angular Weighted Prediction).[000143] In the
[000144] Вариант 4 осуществления изобретения. В приведенных выше вариантах 1-3 осуществления изобретения используется угол взвешенного предсказания. Угол взвешенного предсказания может быть любым углом, например, любым углом в пределах 180 градусов или любым углом в пределах 360 градусов, таким как 10 градусов, 20 градусов, 30 градусов и т.п., что здесь не ограничено. В возможной реализации угол взвешенного предсказания может быть горизонтальным углом (например, углом 2 на фиг. 5В); или угол взвешенного предсказания может быть вертикальным углом (например, углом 6 на фиг. 5В); или абсолютное значение наклона угла взвешенного предсказания (наклон угла взвешенного предсказания представляет собой тангенс угла взвешенного предсказания) может быть n-й степенью 2, где n - целое число, например положительное целое число, 0 и отрицательное целое число. Например, абсолютное значение наклона угла взвешенного предсказания может быть равно 1 (то есть значение 0-й степени 2), 2 (то есть значение 1-й степени 2), 1/2 (то есть значение - 1-й степени 2), 4 (то есть значение 2-й степени 2), 1/4 (то есть значение - 2-й степени 2), 8 (то есть значение 3-й степени 2) и 1/8 (то есть значение - 3-й степени 2) и т.д. Например, на фиг. 5А показаны восемь углов взвешенного предсказания, где абсолютные значения наклонов углов взвешенного предсказания являются значениями n-й степени 2. В последующих вариантах осуществления изобретения для угла взвешенного предсказания может выполняться операция сдвига. Следовательно, когда абсолютное значение наклона угла взвешенного предсказания равно n-й степени 2, операции деления можно избежать во время операции сдвига для угла взвешенного предсказания, что облегчает реализацию сдвига.[000144]
[000145] Например, количество углов взвешенного предсказания, поддерживаемых различными размерами блоков, может быть одинаковым или различным.[000145] For example, the number of weighted prediction angles supported by different block sizes may be the same or different.
[000146] Вариант 5 осуществления изобретения. В приведенных выше вариантах 1-3 осуществления изобретения для каждой позиции пикселя может быть определено целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, указанной позицией пикселя. В вариантах 2 и 3 осуществления изобретения окружающая соответствующая позиция представляет собой окружающую соответствующую позицию текущего блока.[000146]
[000147] Опорное весовое значение, связанное с окружающей соответствующей позицией, может быть получено следующим образом: на основе значения координаты окружающей соответствующей позиции текущего блока и значения координаты начальной позиции преобразования весов текущего блока определяют опорное весовое значение, связанное с окружающей соответствующей позицией.[000147] The reference weight value associated with the surrounding corresponding position can be obtained as follows: based on the coordinate value of the surrounding corresponding position of the current block and the coordinate value of the weight transformation starting position of the current block, the reference weight value associated with the surrounding corresponding position is determined.
[000148] Например, если окружающая соответствующая позиция является окружающей позицией в одной строке сверху от текущего блока или в одной строке снизу от текущего блока, значение координаты окружающей соответствующей позиции представляет собой значение абсциссы окружающей соответствующей позиции, а значение координаты начальной позиции преобразования весов представляет собой значение абсциссы начальной позиции преобразования весов. В качестве альтернативы, если окружающая соответствующая позиция является окружающей позицией в одном столбце слева от текущего блока или в одном столбце справа от текущего блока, значение координаты окружающей соответствующей позиции является значением ординаты окружающей соответствующей позиции, а значение координаты начальной позиции преобразования весов является значением ординаты начальной позиции преобразования весов.[000148] For example, if the surrounding corresponding position is the surrounding position one line above the current block or one line below the current block, the coordinate value of the surrounding corresponding position is the abscissa value of the surrounding corresponding position, and the coordinate value of the weight transformation starting position is the abscissa value of the starting position of the weight transformation. Alternatively, if the surrounding corresponding position is the surrounding position one column to the left of the current block or one column to the right of the current block, the coordinate value of the surrounding corresponding position is the ordinate value of the surrounding corresponding position, and the coordinate value of the weight transformation starting position is the ordinate value of the starting position weight conversion positions.
[000149] Например, позиция пикселя в верхнем левом углу текущего блока (например, первая позиция пикселя в верхнем левом углу) может использоваться в качестве начала координат, а значение координаты окружающей соответствующей позиции текущего блока (например, значение абсциссы или значение ординаты) и значение координаты начальной позиции преобразования весов текущего блока (например, значение абсциссы или значение ординаты) оба являются значениями координат относительно начала координат. Другая позиция пикселя текущего блока также может быть взята в качестве начала координат, и способ реализации аналогичен способу использования позиции пикселя в верхнем левом углу в качестве начала координат.[000149] For example, the pixel position in the upper left corner of the current block (for example, the first pixel position in the upper left corner) can be used as the origin, and the coordinate value of the surrounding corresponding position of the current block (for example, the abscissa value or ordinate value) and the value The coordinates of the starting position of the current block's weight transformation (for example, the abscissa value or the ordinate value) are both coordinate values relative to the origin. Another pixel position of the current block can also be taken as the origin, and the implementation method is similar to the method of using the pixel position in the top left corner as the origin.
[000150] В возможной реализации, когда определяют опорное весовое значение, связанное с окружающей соответствующей позицией, на основе значения координаты окружающей соответствующей позиции и значения координаты начальной позиции преобразования весов текущего блока, может быть вычислена разность между значением координаты окружающей соответствующей позиции и значением координаты начальной позиции преобразования весов текущего блока. Если разность меньше первого порогового значения, в качестве первого порогового значения определяют опорное весовое значение, связанное с окружающей соответствующей позицией. Если разность больше второго порогового значения, в качестве второго порогового значения определяют опорное весовое значение, связанное с окружающей соответствующей позицией. Если разность не меньше первого порогового значения и не больше второго порогового значения, в качестве разности определяют опорное весовое значение, связанное с окружающей соответствующей позицией. В другой возможной реализации, когда определяют опорное весовое значение, связанное с окружающей соответствующей позицией, на основе значения координаты окружающей соответствующей позиции и значения координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, определяют непосредственно на основе соотношения размера между значением координаты окружающей соответствующей позиции и значением координаты начальной позиции преобразования весов текущего блока.[000150] In an exemplary implementation, when a reference weight value associated with a surrounding corresponding position is determined based on the coordinate value of the surrounding corresponding position and the coordinate value of the starting position of the weight transformation of the current block, the difference between the coordinate value of the surrounding corresponding position and the starting coordinate value can be calculated weight transformation positions of the current block. If the difference is less than the first threshold value, a reference weight value associated with the surrounding corresponding position is determined as the first threshold value. If the difference is greater than the second threshold value, a reference weight value associated with the surrounding corresponding position is determined as the second threshold value. If the difference is not less than the first threshold value and not more than the second threshold value, the reference weight value associated with the surrounding corresponding position is determined as the difference. In another possible implementation, when the reference weight value associated with the surrounding corresponding position is determined based on the coordinate value of the surrounding corresponding position and the coordinate value of the starting position of the weight transformation of the current block, the reference weight value associated with the surrounding corresponding position is determined directly based on the size relationship between the coordinate value of the surrounding corresponding position and the coordinate value of the starting position of the weight transformation of the current block.
[000151] Например, если значение координаты окружающей соответствующей позиции меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как первое пороговое значение; и, если значение координаты окружающей соответствующей позиции не меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как второе пороговое значение.[000151] For example, if the coordinate value of the surrounding corresponding position is smaller than the coordinate value of the weight transformation starting position of the current block, the reference weight value associated with the surrounding corresponding position may be determined as a first threshold value; and, if the coordinate value of the surrounding corresponding position is not less than the coordinate value of the weight transformation starting position of the current block, a reference weight value associated with the surrounding corresponding position may be determined as a second threshold value.
[000152] В качестве другого примера, если значение координаты окружающей соответствующей позиции меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как второе пороговое значение; и, если значение координаты окружающей соответствующей позиции не меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как первое пороговое значение.[000152] As another example, if the coordinate value of the surrounding corresponding position is smaller than the coordinate value of the weight transformation starting position of the current block, the reference weight value associated with the surrounding corresponding position may be determined as a second threshold value; and, if the coordinate value of the surrounding corresponding position is not less than the coordinate value of the weight transformation starting position of the current block, a reference weight value associated with the surrounding corresponding position may be determined as a first threshold value.
[000153] Например, первое пороговое значение и второе пороговое значение могут быть сконфигурированы на основе опыта, при этом первое пороговое значение меньше второго порогового значения. Первое пороговое значение и второе пороговое значение здесь не ограничиваются. В некоторых примерах первое пороговое значение может быть минимальным значением предварительно согласованных опорных весовых значений, например, 0, а второе пороговое значение может быть максимальным значением предварительно согласованных опорных весовых значений, например, 8, где 0 и 8 являются только примерами.[000153] For example, the first threshold value and the second threshold value may be configured based on experience, the first threshold value being less than the second threshold value. The first threshold value and the second threshold value are not limited here. In some examples, the first threshold value may be the minimum value of the pre-negotiated reference weight values, such as 0, and the second threshold value may be the maximum value of the pre-negotiated reference weight values, such as 8, where 0 and 8 are examples only.
[000154] Например, как показано на фиг. 4D, все окружающие позиции поровну разделены на восемь частей для получения семи позиций взвешенного предсказания. Когда позиция взвешенного предсказания равна 0, она указывает на окружающую позицию а0, то есть значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции а0. Когда позиция взвешенного предсказания равна 1, она указывает на окружающую позицию a1, то есть значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции a1, и т.д. Способ определения значения координаты начальной позиции преобразования весов здесь повторяться не будет.[000154] For example, as shown in FIG. 4D, all surrounding positions are equally divided into eight parts to obtain seven weighted prediction positions. When the weighted prediction position is 0, it points to the surrounding position a 0 , that is, the coordinate value of the starting position of the weight transformation is the coordinate value of the surrounding position a 0 . When the weighted prediction position is 1, it points to the surrounding position a 1 , that is, the coordinate value of the starting position of the weight transformation is the coordinate value of the surrounding position a 1 , etc. The method for determining the coordinate value of the initial position of the weight transformation will not be repeated here.
[000155] Вариант 6 осуществления изобретения. В приведенных выше вариантах 1-3 осуществления изобретения для каждой позиции пикселя целевое весовое значение позиции пикселя может быть определено на основе опорного весового значения, связанного с окружающей соответствующей позицией, указанной позицией пикселя. Последующее описание приведено для окружающей соответствующей позиции текущего блока в качестве примера. Опорное весовое значение, связанное с окружающей соответствующей позицией, может быть получено следующим образом: определяют список опорных весовых значений текущего блока, при этом список опорных весовых значений может включать множество опорных весовых значений, которые предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. На основе целевого индекса, выбирают действительное количество опорных весовых значений из списка опорных весовых значений и устанавливают одно или более опорных весовых значений для окружающих позиций за пределами текущего блока на основе действительного количества опорных весовых значений. Например, действительное количество может быть определено на основе размера текущего блока и угла взвешенного предсказания текущего блока; целевой индекс может быть определен на основе размера текущего блока, угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока.[000155]
[000156] Таким образом, поскольку одно или более опорных весовых значений уже были установлены для окружающих позиций за пределами текущего блока, то есть каждая из окружающих позиций имеет опорное весовое значение, после определения окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока может быть определено опорное весовое значение, связанное с окружающей соответствующей позицией, например, целевое весовое значение позиции пикселя.[000156] Thus, since one or more reference weight values have already been set for surrounding positions outside the current block, that is, each of the surrounding positions has a reference weight value, after determining the surrounding corresponding position, indicated by the pixel position, from the surrounding positions outside of the current block, a reference weight value associated with a surrounding corresponding position, for example, a target pixel position weight value, can be determined.
[000157] В сочетании с конкретными этапами реализации, показанными на фиг. 6А, ниже будет описан процесс установки опорных весовых значений окружающих позиций.[000157] In combination with the specific implementation steps shown in FIG. 6A, a process for setting reference weight values of surrounding positions will be described below.
[000158] На этапе S1 определяют список опорных весовых значений текущего блока.[000158] In step S1, a list of reference weight values of the current block is determined.
[000159] В возможной реализации список опорных весовых значений на уровне последовательности может быть определен как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера могут быть сконфигурированы со списком А1 опорных весовых значений уровня последовательности. Для изображений с несколькими уровнями последовательности все эти изображения используют список А1 опорных весовых значений. Независимо от того, что представляют собой угол взвешенного предсказания и позиция взвешенного предсказания, текущие блоки множества изображений уровня последовательности совместно используют один и тот же список А1 опорных весовых значений.[000159] In an exemplary implementation, a sequence-level list of reference weights may be defined as a list of reference weights of the current block. For example, both the encoder side and the decoder side may be configured with a sequence layer reference weight list A1. For images with multiple sequence levels, all of these images use the list A1 of reference weights. Regardless of what the weighted prediction angle and the weighted prediction position are, the current blocks of multiple sequence-level pictures share the same reference weight value list A1.
[000160] В другой возможной реализации предварительно установленный список опорных весовых значений может быть определен как список опорных весовых значений текущего блока. Например, как сторона кодера, так и сторона декодера могут предварительно установить список опорных весовых значений. Для всех изображений в нескольких последовательностях используется этот список опорных весовых значений. Независимо от того, какие угол взвешенного предсказания и позиция взвешенного предсказания, текущие блоки всех изображений в множестве последовательностей совместно используют один и тот же список опорных весовых значений.[000160] In another possible implementation, the preset reference weight list may be defined as a list of reference weights of the current block. For example, both the encoder side and the decoder side may preset a list of reference weights. All images in multiple sequences use this list of reference weights. No matter what the weighted prediction angle and weighted prediction position are, the current blocks of all images in a plurality of sequences share the same list of reference weights.
[000161] В другой возможной реализации список опорных весовых значений, соответствующий углу взвешенного предсказания текущего блока, может быть определен как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера сконфигурированы с множеством списков опорных весовых значений, и несколько углов взвешенного предсказания могут совместно использовать один и тот же список опорных весовых значений. Например, сконфигурированы список А2 опорных весовых значений и список A3 опорных весовых значений, угол 1 взвешенного предсказания и угол 2 взвешенного предсказания совместно используют список А2 опорных весовых значений, а угол 3 взвешенного предсказания использует список A3 опорных весовых значений. На основе этого, после получения угла взвешенного предсказания текущего блока, если угол взвешенного предсказания текущего блока является углом 1 взвешенного предсказания, список А2 опорных весовых значений, соответствующий углу 1 взвешенного предсказания, определяют как список опорных весовых значений текущего блока.[000161] In another possible implementation, a list of reference weights corresponding to the weighted prediction angle of the current block may be defined as a list of reference weights of the current block. For example, both the encoder side and the decoder side are configured with multiple reference weight lists, and multiple weighted prediction angles may share the same reference weight list. For example, reference weight list A2 and reference weight list A3 are configured,
[000162] В другой возможной реализации список опорных весовых значений, соответствующий углу взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока, может быть определен как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера сконфигурированы с множеством списков опорных весовых значений, различные комбинации угла взвешенного предсказания и позиции взвешенного предсказания могут соответствовать одинаковым или различным спискам опорных весовых значений. Например, сконфигурированы список А4 опорных весовых значений, список А5 опорных весовых значений и список А6 опорных весовых значений. Угол 1 взвешенного предсказания и позиции взвешенного предсказания от 0 до 2 совместно используют список А4 опорных весовых значений, угол 1 взвешенного предсказания и позиции 3-5 взвешенного предсказания совместно используют список А5 опорных весовых значений, а угол 2 взвешенного предсказания и позиции 0-5 взвешенного предсказания совместно используют список А6 опорных весовых значений. Исходя из этого, после получения угла взвешенного предсказания и позиции взвешенного предсказания текущего блока, если угол взвешенного предсказания текущего блока является углом 1 взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией 4 взвешенного предсказания, список А5 опорных весовых значений, соответствующий углу 1 взвешенного предсказания и позиции 4 взвешенного предсказания, определяют как список опорных весовых значений текущего блока.[000162] In another possible implementation, a list of reference weights corresponding to the weighted prediction angle of the current block and the weighted prediction position of the current block may be defined as a list of reference weights of the current block. For example, both the encoder side and the decoder side are configured with a plurality of reference weight lists, different combinations of weighted prediction angle and weighted prediction position may correspond to the same or different reference weight lists. For example, reference weight value list A4, reference weight value list A5, and reference weight value list A6 are configured.
[000163] В другой возможной реализации список опорных весовых значений, соответствующий размеру текущего блока и углу взвешенного предсказания текущего блока, определяют как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера сконфигурированы с множеством списков опорных весовых значений, различные комбинации размера и угла взвешенного предсказания могут соответствовать одинаковым или различным спискам опорных весовых значений. Например, сконфигурированы список А7 опорных весовых значений и список А8 опорных весовых значений. Угол 1 взвешенного предсказания и размер 1 используют список А7 опорных весовых значений. Угол 1 взвешенного предсказания и размер 2, а также угол 2 взвешенного предсказания и размер 1 используют список А8 опорных весовых значений. На основе этого, если угол взвешенного предсказания текущего блока является углом 1 взвешенного предсказания, а размер текущего блока равен размеру 1, определяют список А7 опорных весовых значений, соответствующий углу 1 взвешенного предсказания и размеру 1 в качестве списка опорных весовых значений текущего блока.[000163] In another possible implementation, a list of reference weights corresponding to the size of the current block and the weighted prediction angle of the current block is defined as a list of reference weights of the current block. For example, both the encoder side and the decoder side are configured with a plurality of reference weight lists, different combinations of weighted prediction size and angle may correspond to the same or different reference weight lists. For example, reference weight value list A7 and reference weight value list A8 are configured.
[000164] Таким образом, можно определить список опорных весовых значений текущего блока, и список опорных весовых значений может включать множество опорных весовых значений, которые предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации.[000164] Thus, a list of reference weight values of the current block can be defined, and the list of reference weight values may include a plurality of reference weight values that are preconfigured or configured based on the weight configuration parameters.
[000165] Для списка опорных весовых значений текущего блока количество опорных весовых значений в списке опорных весовых значений может быть заданным фиксированным значением, и фиксированное значение может быть установлено произвольно на основе опыта, что здесь не ограничивается. Альтернативно, количество опорных весовых значений в списке опорных весовых значений может быть связано с размером (например, шириной или высотой) текущего слайса, в котором расположен текущий блок, например, количество опорных весовых значений может быть больше ширины текущего слайса или таким же, как ширина текущего слайса; и количество опорных весовых значений может быть больше, чем высота текущего слайса, или таким же, как высота текущего слайса, что здесь не ограничено. Количество опорных весовых значений может быть выбрано исходя из практических потребностей.[000165] For the reference weight list of the current block, the number of reference weights in the reference weight list may be a predetermined fixed value, and the fixed value may be set arbitrarily based on experience, which is not limited here. Alternatively, the number of reference weights in the list of reference weights may be related to the size (e.g., width or height) of the current slice in which the current block is located, e.g., the number of reference weights may be greater than the width of the current slice or the same as the width current slice; and the number of reference weights may be greater than the height of the current slice, or the same as the height of the current slice, which is not limited here. The number of reference weights can be selected based on practical needs.
[000166] Например, для множества опорных весовых значений в списке опорных весовых значений множество опорных весовых значений могут быть непоследовательными опорными весовыми значениями, например, множество опорных весовых значений в списке опорных весовых значений могут не быть полностью одинаковыми.[000166] For example, for a plurality of reference weight values in a list of reference weights, the plurality of reference weights may be non-consecutive reference weights, for example, the plurality of reference weights in a list of reference weights may not be exactly the same.
[000167] В возможной реализации множество опорных весовых значений в списке опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Кроме того, множество опорных весовых значений в списке опорных весовых значений могут сначала монотонно увеличиваться, а затем монотонно уменьшаться, или сначала монотонно уменьшаться, а затем монотонно увеличиваться. Кроме того, множество опорных весовых значений в списке опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем множество вторых опорных весовых значений, или сначала включать множество вторых опорных весовых значений, а затем множество первых опорных весовых значений. В сочетании с несколькими случаями содержание приведенного выше списка опорных весовых значений описано ниже.[000167] In an exemplary implementation, a plurality of reference weight values in a list of reference weight values may monotonically increase or monotonically decrease. In addition, a plurality of reference weight values in the list of reference weight values may first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. In addition, the plurality of reference weight values in the list of reference weight values may first include a plurality of first reference weight values and then a plurality of second reference weight values, or first include a plurality of second reference weight values and then a plurality of first reference weight values. In combination with several cases, the contents of the above list of reference weight values are described below.
[000168] Случай 1: множество опорных весовых значений в списке опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Например, список опорных весовых значений может быть [8 8 8 8…8 8 7 6 5 4 3 2 1 0 0 0 0…0 0], то есть множество опорных весовых значений в списке опорных весовых значений монотонно уменьшаются. В другом примере список опорных весовых значений может быть [0 0 0 0…0 0 1 2 3 4 5 6 7 8 8 8 8…8 8], то есть множество опорных весовых значений в списке опорных весовых значений монотонно увеличиваются. Выше приведены лишь примеры, и перечень опорных весовых значений здесь не ограничен.[000168] Case 1: A plurality of reference weight values in a list of reference weight values may monotonically increase or monotonically decrease. For example, the list of reference weights could be [8 8 8 8…8 8 7 6 5 4 3 2 1 0 0 0 0…0 0], that is, the set of reference weights in the list of reference weights decreases monotonically. In another example, the list of reference weights may be [0 0 0 0...0 0 1 2 3 4 5 6 7 8 8 8 8...8 8], that is, the plurality of reference weights in the list of reference weights increases monotonically. The above are just examples, and the list of reference weight values is not limited here.
[000169] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта.[000169] For example, reference weight values in the list of reference weight values may be preconfigured or configured based on weight configuration parameters. The weight configuration parameters may include the weight conversion factor and the weight conversion starting position. The weight conversion factor may be a value established based on experience, and the starting position of the weight conversion may also be a value established based on experience.
[000170] Множество опорных весовых значений в списке опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Например, если максимальное значение опорных весовых значений равно M1, а минимальное значение опорных весовых значений равно М2, множество опорных весовых значений в списке опорных весовых значений монотонно уменьшаются от максимального значения M1 до минимального значения М2; либо монотонно увеличиваются от минимального значения М2 до максимального значения M1. Если M1 равно 8, а М2 равно 0, множество опорных весовых значений монотонно уменьшаются от 8 до 0 или монотонно увеличиваются от 0 до 8.[000170] A plurality of reference weight values in a list of reference weight values may monotonically increase or monotonically decrease. For example, if the maximum value of the reference weight values is M1 and the minimum value of the reference weight values is M2, the plurality of reference weight values in the list of reference weight values are monotonically decreased from the maximum value M1 to the minimum value M2; or monotonically increase from the minimum value M2 to the maximum value M1. If M1 is 8 and M2 is 0, the set of reference weights decreases monotonically from 8 to 0 or monotonically increases from 0 to 8.
[000171] Например, в процессе предварительного конфигурирования опорных весовых значений в списке опорных весовых значений множество опорных весовых значений в списке опорных весовых значений может быть произвольно сконфигурировано при условии, что множество опорных весовых значений монотонно увеличиваются или монотонно уменьшаются.[000171] For example, in the process of pre-configuring the reference weight values in the reference weight value list, a plurality of reference weight values in the reference weight value list can be arbitrarily configured as long as the plurality of reference weight values is monotonically increased or monotonically decreased.
[000172] Например, в процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем на основе коэффициента преобразования весов и начальной позиции преобразования весов определяют множество опорных весовых значений в списке опорных весовых значений. Коэффициент преобразования весов и начальная позиция преобразования весов могут быть предварительно заданными значениями, которые могут быть сконфигурированы на основе опыта и не ограничиваются здесь.[000172] For example, in the process of configuring reference weight values in the list of reference weight values, based on the parameters of the weight configuration, a weight conversion coefficient and a weight conversion starting position can be first obtained, and then a plurality of reference weights can be determined based on the weight conversion factor and the weight conversion starting position values in the list of reference weight values. The weight conversion factor and the weight conversion starting position may be preset values that can be configured based on experience and are not limited here.
[000173] Например, опорные весовые значения в списке опорных весовых значений могут быть определены следующим образом: у(х)=Clip3(минимум, максимум, a*(x-s)), где х представляет индекс позиции в списке опорных весовых значений, например, х равно 1, что указывает на первую позицию в списке опорных весовых значений, у(х) представляет х-е опорное весовое значение в списке опорных весовых значений, «а» представляет коэффициент преобразования весов, s представляет начальную позицию преобразования весов, а функция Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями. Максимальное значение и минимальное значение могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000173] For example, reference weight values in a list of reference weight values can be defined as follows: y(x)=Clip3(min, maximum, a*(x-s)), where x represents the index of a position in the list of reference weights, for example, x is 1, which indicates the first position in the list of reference weights, y(x) represents the xth reference weight in the list of reference weights, "a" represents the weight transformation factor, s represents the starting position of the weight transformation, and the Clip3 function used to limit reference weight values between the minimum and maximum values. The maximum value and minimum value can be configured based on experience. For simplicity, the following description is given with a minimum value of 0 and a maximum value of 8 as an example.
[000174] «а» представляет собой коэффициент преобразования весов, который может быть сконфигурирован на основе опыта, например, «а» может быть ненулевым целым числом, например, «а» может быть -4, -3, -2, -1, 1, 2, 3 или 4 и т.п. Для простоты описание представлено для «а», равного 1, в качестве примера. Если коэффициент «а» равен 1, опорные весовые значения должны пройти через 0, 1, 2, 3, 4, 5, 6, 7, 8 от 0 до 8 или пройти через 8, 7, 6, 5, 4, 3, 2, 1, 0 от 8 до 0.[000174] "a" represents a weight conversion factor that can be configured based on experience, for example, "a" can be a non-zero integer, for example, "a" can be -4, -3, -2, -1, 1, 2, 3 or 4, etc. For simplicity, the description is presented with "a" equal to 1 as an example. If the coefficient "a" is 1, the reference weight values must pass through 0, 1, 2, 3, 4, 5, 6, 7, 8 from 0 to 8 or pass through 8, 7, 6, 5, 4, 3, 2, 1, 0 from 8 to 0.
[000175] s может представлять начальную позицию преобразования весов, которая может быть сконфигурирована на основе опыта, например, s может быть половиной общего количества опорных весовых значений в списке опорных весовых значений; или s может быть немного меньше половины общего количества опорных весовых значений, например, половина общего количества опорных весовых значений минус 4; или s может быть немного больше половины общего количества опорных весовых значений, например, половина общего количества опорных весовых значений плюс 4. Приведенные выше значения s являются только примерами и не ограничиваются здесь.[000175] s may represent the starting position of the weight transformation, which may be configured based on experience, for example, s may be half of the total number of reference weight values in the list of reference weight values; or s may be slightly less than half the total number of reference weights, for example, half the total number of reference weights minus 4; or s may be slightly greater than half the total number of reference weights, for example, half the total number of reference weights plus 4. The above values of s are examples only and are not limited here.
[000176] Подводя итог, можно сказать, что опорные весовые значения в списке опорных весовых значений могут быть сконфигурированы на основе параметров весовой конфигурации следующим образом: ReferenceWeightsWhole[x] = Clip3(0, 8, х - Z); или ReferenceWeightsWhole[x] = Clip3(0, 8, Z - х); или ReferenceWeightsWhole[x] = Clip3(0, 4, х - Z); или ReferenceWeightsWhole[x] = Clip3(0, 4, Z - x). Вышеупомянутые способы являются только примерами, и способ реализации здесь не ограничивается.[000176] To summarize, reference weights in a list of reference weights can be configured based on the weight configuration parameters as follows: ReferenceWeightsWhole[x] = Clip3(0, 8, x - Z); or ReferenceWeightsWhole[x] = Clip3(0, 8, Z - x); or ReferenceWeightsWhole[x] = Clip3(0, 4, x - Z); or ReferenceWeightsWhole[x] = Clip3(0, 4, Z - x). The above methods are only examples, and the implementation method is not limited here.
[000177] В приведенных выше формулах х находится в диапазоне от 0 до WholeLength-1. Когда х равно 1, ReferenceWeightsWhole[x] может представлять первое опорное весовое значение в списке опорных весовых значений; когда х равно 2, ReferenceWeightsWhole[x] может представлять второе опорное весовое значение в списке опорных весовых значений, и т.д. Например, если окружающие позиции за пределами текущего блока являются окружающими позициями в одной верхней строке или в одной нижней строке, WholeLength определяют на основе ширины текущего слайса; и, если окружающие позиции за пределами текущего блока являются окружающими позициями в левом столбце или правом столбце, WholeLength определяют на основе высоты текущего слайса.[000177] In the above formulas, x ranges from 0 to WholeLength-1. When x is 1, ReferenceWeightsWhole[x] may represent the first reference weight value in the list of reference weight values; when x is 2, ReferenceWeightsWhole[x] can represent the second reference weight value in the list of reference weight values, etc. For example, if the surrounding positions outside the current block are surrounding positions in the same top row or in the same bottom row, WholeLength is determined based on the width of the current slice; and, if the surrounding positions outside the current block are surrounding positions in the left column or right column, WholeLength is determined based on the height of the current slice.
[000178] В приведенной выше формуле a*(x-s), если значение «а» равно 1, a*(x-s)=x-s, то есть x-Z в Clip3(0, 8, х - Z) эквивалентно x-s, где Z представляет начальную позицию преобразования весов. Если «а» равно -1, a*(x-s)=s-x, то есть Z-x в Clip3(0, 8, Z - х) эквивалентно s-x, где Z представляет начальную позицию преобразования весов. Когда «а» является другим значением, процесс реализации аналогичен при условии, что опорные весовые значения в списке опорных весовых значений удовлетворяют у(х)=Clip3(минимум, максимум, a*(x-s)). Clip3(0, 8) используется для ограничения опорных весовых значений от 0 до 8, а Clip3(0, 4) используется для ограничения опорных весовых значений от 0 до 4.[000178] In the above formula a*(x-s), if the value of "a" is 1, a*(x-s)=x-s, that is, x-Z in Clip3(0, 8, x - Z) is equivalent to x-s, where Z represents the initial weight conversion position. If "a" is -1, a*(x-s)=s-x, then Z-x in Clip3(0, 8, Z - x) is equivalent to s-x, where Z represents the starting position of the weight transformation. When "a" is another value, the implementation process is similar provided that the reference weights in the list of reference weights satisfy y(x)=Clip3(minimum, maximum, a*(x-s)). Clip3(0, 8) is used to constrain the reference weight values from 0 to 8, and Clip3(0, 4) is used to constrain the reference weight values from 0 to 4.
[000179] В приведенных выше формулах Z представляет начальную позицию преобразования весов, которая может быть сконфигурирована на основе опыта. Предполагая, что х находится в диапазоне от 0 до 511, a Z равно 255, Z подставляют в формулу ReferenceWeightsWhole[x]=Clip3(0, 8, х - Z), и для любого значения от 0 до 511 может быть получено ReferenceWeightsWhole[x], то есть может быть получено 512 опорных весовых значений, и 512 опорных весовых значений образуют список опорных весовых значений. Например, когда х находится в диапазоне от 0 до 255, все соответствующие опорные весовые значения равны 0, когда х равно 256, опорное весовое значение равно 1 и т.д., когда х равно 262, опорное весовое значение равно 7, и когда х изменяется от 263 до 511, все опорные весовые значения равны 8. Одним словом, когда значение «а» равно 1, Clip3(0, 8, х - Z) используется для монотонного увеличения опорных весовых значений. Сходным образом, Z можно подставить в другую формулу для получения 512 опорных весовых значений, и список опорных весовых значений формируют на основе 512 опорных весовых значений. Например, когда значение «а» равно -1, Clip3(0, 8, Z - х) используется для монотонного уменьшения опорных весовых значений. Clip3(0, 4) используется для ограничения опорных весовых значений от 0 до 4, что здесь не повторяется.[000179] In the above formulas, Z represents the starting position of the weight transformation, which can be configured based on experience. Assuming that x is in the
[000180] Одним словом, может быть получен список опорных весовых значений текущего блока, и список опорных весовых значений может включать множество опорных весовых значений, которые могут монотонно увеличиваться или монотонно уменьшаться. В возможной реализации список опорных весовых значений может также включать одно или более опорных весовых значений целевых позиций (областей), одно или более опорных весовых значений первых соседних позиций (областей) целевых позиций и одно или более опорных весовых значений вторых соседних позиций (областей) целевых позиций.[000180] In short, a list of reference weight values of the current block may be obtained, and the list of reference weight values may include a plurality of reference weight values that may monotonically increase or monotonically decrease. In an exemplary implementation, the list of reference weights may also include one or more reference weights of the target positions (regions), one or more reference weights of the first adjacent positions (regions) of the target positions, and one or more reference weights of the second neighboring positions (regions) of the target positions.
[000181] Целевые позиции включают одно или более опорных весовых значений, определенных на основе начальной позиции преобразования весов. Например, на основе начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве целевых позиций. Например, начальная позиция s преобразования весов равна 255, 259-е опорное весовое значение может быть принято в качестве целевых позиций, или 258-е опорное весовое значение может быть принято в качестве целевых позиций, или 260-е опорное весовое значение может быть принято в качестве целевых позиций. Выше приведены лишь несколько примеров, которые не ограничиваются здесь. В другом примере, на основе начальной позиции преобразования весов определяют множество опорных весовых значений, которые принимают в качестве целевых позиций. Например, в качестве целевых позиций принимают опорные весовые значения с 256-го по 262-е, или опорные весовые значения с 258-го по 260-е принимают в качестве целевых позиций. Выше приведены лишь несколько примеров, которые не ограничиваются здесь.[000181] The target positions include one or more reference weight values determined based on the starting position of the weight transformation. For example, based on the initial position of the weight transformation, one reference weight value is determined and taken as the target positions. For example, the starting position s of the weight transformation is 255, the 259th weight reference value may be taken as the target positions, or the 258th weight reference value may be taken as the target positions, or the 260th weight reference value may be taken as as target positions. The above are just a few examples and are not limited to here. In another example, based on the initial position of the weight transformation, a plurality of reference weight values are determined and taken as target positions. For example, reference weight values 256 to 262 are taken as target positions, or reference weight values 258 to 260 are taken as target positions. The above are just a few examples and are not limited to here.
[000182] Например, целевые позиции могут включать опорное весовое значение со значением 4. Например, 259-е опорное весовое значение равно 4. Следовательно, если целевые позиции включают одно опорное весовое значение, целевые позиции могут включать 259-е опорное весовое значение, или если целевые позиции включают множество опорных весовых значений, то целевые позиции могут включать опорные весовые значения с 256-го по 262-е или опорные весовые значения с 258-го по 260-е, что здесь не ограничивается при условии, что 259-е опорное весовое значение находится в пределах целевых позиций.[000182] For example, target positions may include a reference weight value with a value of 4. For example, the 259th reference weight value is 4. Therefore, if the target positions include one reference weight value, the target positions may include a 259th reference weight value, or if the target positions include multiple reference weights, then the target positions may include reference weights 256 to 262 or reference weights 258 to 260, which is not limited to, provided that the 259th reference the weight value is within the target positions.
[000183] Одним словом, целевые позиции могут включать одно опорное весовое значение; или целевые позиции могут включать множество опорных весовых значений. Если целевые позиции включают множество опорных весовых значений, множество опорных весовых значений целевых позиций монотонно увеличиваются или монотонно уменьшаются. Монотонное увеличение может быть строго монотонным увеличением (то есть множество опорных весовых значений в целевых позициях строго монотонно увеличивается); и монотонное уменьшение может быть строго монотонным уменьшением (то есть множество опорных весовых значений в целевых позициях строго монотонно уменьшается). Например, множество опорных весовых значений целевых позиций монотонно увеличиваются с 1 до 7 или монотонно уменьшаются с 7 до 1.[000183] In short, target positions may include one reference weight value; or the target positions may include multiple reference weights. If the target positions include a plurality of reference weights, the plurality of reference weights of the target positions are monotonically increased or monotonically decreased. A monotonic increase can be a strictly monotonic increase (that is, the set of reference weights at target positions increases strictly monotonically); and a monotonic decrease may be a strictly monotonic decrease (that is, the set of reference weights at target positions is strictly monotonically decreased). For example, a set of reference weights of target positions increases monotonically from 1 to 7 or decreases monotonically from 7 to 1.
[000184] Например, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями, а опорные весовые значения вторых соседних позиций монотонно увеличиваются или монотонно уменьшаются. Например, все опорные весовые значения первых соседних позиций равны 0, целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8.[000184] For example, all reference weight values of the first adjacent positions are first reference weight values, and the reference weight values of the second adjacent positions are monotonically increasing or monotonically decreasing. For example, the first adjacent position reference weights are all 0, the target positions include one weight reference value equal to 1, and the second adjacent position reference weights increase monotonically from 2 to 8.
[000185] Опционально, все опорные весовые значения первых соседних позиций являются вторыми опорными весовыми значениями, а все опорные весовые значения вторых соседних позиций являются третьими опорными весовыми значениями, при этом вторые опорные весовые значения отличаются от третьих опорных весовых значений. Например, все опорные весовые значения первых соседних позиций равны 0, целевые позиции включают множество опорных весовых значений, которые монотонно увеличиваются от 1 до 7, а опорные весовые значения вторых соседних позиций равны 8. Очевидно, опорные весовые значения первых соседних позиций отличаются от значений вторых соседних позиций.[000185] Optionally, all reference weights of the first adjacent positions are second reference weights, and all reference weights of the second adjacent positions are third reference weights, wherein the second reference weights are different from the third reference weights. For example, the reference weights of the first neighboring positions are all 0, the target positions include a set of reference weights that increase monotonically from 1 to 7, and the reference weights of the second neighboring positions are 8. Obviously, the reference weights of the first neighboring positions are different from the values of the second ones. neighboring positions.
[000186] Опционально, опорные весовые значения первых соседних позиций и опорные весовые значения вторых соседних позиций монотонно увеличиваются или монотонно уменьшаются одновременно. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются, и опорные весовые значения вторых соседних позиций также монотонно увеличиваются. В другом примере опорные весовые значения первых соседних позиций монотонно уменьшаются, и опорные весовые значения вторых соседних позиций также монотонно уменьшаются. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 3, целевые позиции включают одно опорное весовое значение, равное 4, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 5 до 8.[000186] Optionally, the reference weight values of the first adjacent positions and the reference weight values of the second adjacent positions are monotonically increased or monotonically decreased simultaneously. For example, the reference weight values of the first adjacent positions increase monotonically, and the reference weight values of the second adjacent positions also increase monotonically. In another example, the reference weight values of the first adjacent positions are monotonically decreased, and the reference weight values of the second adjacent positions are also monotonically decreased. For example, the reference weights of the first adjacent positions increase monotonically from 0 to 3, the target positions include one reference weight of 4, and the reference weights of the second adjacent positions monotonically increase from 5 to 8.
[000187] Случай 2: множество опорных весовых значений в списке опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, или сначала монотонно уменьшаются, а затем монотонно увеличиваются. Например, список опорных весовых значений может быть [8 8…8 8 7 6 5 4 3 2 1 0 0…0 0 1 2 3 4 5 6 7 8 8…8 8], то есть множество опорных весовых значений в списке опорных весовых значений сначала монотонно уменьшаются, а затем монотонно увеличиваются. В другом примере список опорных весовых значений может быть [0 0…0 0 1 2 3 4 5 6 7 8 8…8 8 7 6 5 4 3 2 1 0 0…0 0], то есть множество опорных весовых значений в списке опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются. Вышеприведенные примеры являются только иллюстративными, и список опорных весовых значений здесь не ограничивается.[000187] Case 2: A plurality of reference weight values in the list of reference weight values first monotonically increases and then monotonically decreases, or first monotonically decreases and then monotonically increases. For example, the list of reference weights could be [8 8…8 8 7 6 5 4 3 2 1 0 0…0 0 1 2 3 4 5 6 7 8 8…8 8], that is, the set of reference weights in the list of reference weights values first decrease monotonically and then increase monotonically. In another example, the list of reference weights could be [0 0…0 0 1 2 3 4 5 6 7 8 8…8 8 7 6 5 4 3 2 1 0 0…0 0], that is, the set of reference weights in the list of references weight values first increase monotonically and then decrease monotonically. The above examples are illustrative only and the list of reference weights is not limited here.
[000188] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта.[000188] For example, reference weight values in the list of reference weight values may be preconfigured or configured based on weight configuration parameters. The weight configuration parameters may include the weight conversion factor and the weight conversion starting position. The weight conversion factor may be a value established based on experience, and the starting position of the weight conversion may also be a value established based on experience.
[000189] Например, если максимальное значение опорных весовых значений равно M1, а минимальное значение опорных весовых значений равно М2, множество опорных весовых значений в списке опорных весовых значений монотонно уменьшаются от максимального значения M1 до минимального значения М2 и затем монотонно увеличиваются от минимального значения М2 до максимального значения M1, или монотонно увеличиваются от минимального значения М2 до максимального значения M1 и затем монотонно уменьшаются от максимального значения M1 до минимального значения М2. Если M1 равно 8, а М2 равно 0, множество опорных весовых значений монотонно уменьшаются от 8 до 0, а затем монотонно увеличиваются от 0 до 8; или множество опорных весовых значений монотонно увеличиваются от 0 до 8, а затем монотонно уменьшаются от 8 до 0.[000189] For example, if the maximum value of the reference weights is M1 and the minimum value of the reference weights is M2, the plurality of reference weights in the list of reference weights decreases monotonically from the maximum value M1 to the minimum value M2 and then increases monotonically from the minimum value M2 to the maximum value of M1, or monotonically increase from the minimum value of M2 to the maximum value of M1 and then monotonically decrease from the maximum value of M1 to the minimum value of M2. If M1 is 8 and M2 is 0, the set of reference weights decreases monotonically from 8 to 0 and then increases monotonically from 0 to 8; or a set of reference weights increases monotonically from 0 to 8 and then decreases monotonically from 8 to 0.
[000190] Например, в процессе предварительного конфигурирования опорных весовых значений в списке опорных весовых значений множество опорных весовых значений в списке опорных весовых значений может быть произвольно сконфигурировано при условии, что множество опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, или множество опорных весовых значений сначала монотонно уменьшаются, а затем монотонно увеличиваются. Других ограничений на опорные весовые значения нет.[000190] For example, in the process of pre-configuring reference weight values in the reference weight list, a plurality of reference weight values in the reference weight list may be arbitrarily configured so long as the plurality of reference weights first monotonically increases and then monotonically decreases, or the plurality of reference weights first monotonically increases and then monotonically decreases. weight values first decrease monotonically and then increase monotonically. There are no other restrictions on reference weight values.
[000191] Например, в процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены первый коэффициент преобразования весов, второй коэффициент преобразования весов, первая начальная позиция преобразования весов и вторая начальная позиция преобразования весов, а затем на основе первого коэффициента преобразования весов, второго коэффициента преобразования весов, первой начальной позиции преобразования весов и второй начальной позиции преобразования весов определяют множество опорных весовых значений в списке опорных весовых значений. Первый коэффициент преобразования весов, второй коэффициент преобразования весов, первая начальная позиция преобразования весов и вторая начальная позиция преобразования весов могут быть предварительно заданными значениями, и не накладывается никаких ограничений на первый коэффициент преобразования весов, второй коэффициент преобразования весов, первую начальную позицию преобразования весов и вторую начальную позицию преобразования весов.[000191] For example, in the process of configuring reference weight values in the list of reference weight values based on the weight configuration parameters, the first weight conversion coefficient, the second weight conversion coefficient, the first weight conversion starting position, and the second weight conversion starting position may be obtained, and then Based on the first weight conversion factor, the second weight conversion factor, the first weight conversion starting position, and the second weight conversion starting position, a plurality of reference weight values are determined in the list of reference weight values. The first weight transformation coefficient, the second weight transformation coefficient, the first weight transformation starting position and the second weight transformation starting position may be preset values, and no restrictions are imposed on the first weight transformation coefficient, the second weight transformation coefficient, the first weight transformation starting position and the second the starting position of the weight transformation.
[000192] Например, опорные весовые значения в списке опорных весовых значений могут быть определены следующим образом: когда х находится в [0, k], у(х)=Clip3 (минимум, максимум, a1*(x-s1)). Когда х находится в [k+1, t], у(х)=Clip3(минимум, максимум, a2*(x-s2)). х представляет индекс позиции в списке опорных весовых значений, например, х равно 1, что указывает на первую позицию в списке опорных весовых значений, у(х) представляет х-е опорное весовое значение в списке опорных весовых значений, к представляет собой значение, сконфигурированное на основе опыта, и здесь не ограничивается, например, к может быть половиной общего количества опорных весовых значений в списке опорных весовых значений или другим значением, при условии, что k меньше t, где t - общее количество опорных весовых значений в списке опорных весовых значений, a1 представляет первый коэффициент преобразования весов, а2 представляет второй коэффициент преобразования весов, s1 представляет первую начальную позицию преобразования весов, a s2 представляет вторую начальную позицию преобразования весов.[000192] For example, reference weight values in a list of reference weight values can be defined as follows: when x is in [0, k], y(x)=Clip3(min, maximum, a1*(x-s1)). When x is in [k+1, t], y(x)=Clip3(min, max, a2*(x-s2)). x represents the index of a position in the reference weight list, for example, x is 1, which indicates the first position in the reference weight list, y(x) represents the xth reference weight in the reference weight list, k represents the value configured based on experience and is not limited to, for example, k may be half the total number of reference weights in the reference weight list or another value, provided that k is less than t, where t is the total number of reference weights in the reference weight list , a1 represents the first weight transformation coefficient, a2 represents the second weight transformation coefficient, s1 represents the first weight transformation starting position, and s2 represents the second weight transformation starting position.
[000193] Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями, при этом минимальное и максимальное значения могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000193] Clip3 is used to limit reference weights between the minimum and maximum values, where the minimum and maximum values can be configured based on experience. For simplicity, the following description is given with a minimum value of 0 and a maximum value of 8 as an example.
[000194] a1 и а2 представляют коэффициенты преобразования весов, которые могут быть сконфигурированы на основе опыта. Например, a1 может быть целым числом, отличным от нуля, например, a1 может быть равно -4, -3, -2, -1, 1, 2, 3 или 4 и т.п., а2 может быть ненулевым целым числом, например, а2 может быть -4, -3, -2, -1, 1, 2, 3 или 4, и т.п. Например, когда a1 является положительным целым числом, а2 может быть отрицательным целым числом; когда a1 является отрицательным целым числом, а2 может быть положительным целым числом. Например, a1 может быть -а2, то есть скорости изменения одинаковы, что отражается в установке опорных весовых значений, то есть опорные весовые значения имеют одинаковую постепенно изменяющуюся ширину. Для простоты описания возьмем в качестве примера значение a1, равное 1, и значение а2, равное -1, опорные весовые значения должны проходить через 0, 1, 2, 3, 4, 5, 6, 7, 8 от 0 до 8, а затем проходить через 8, 7, 6, 5, 4, 3, 2, 1, 0 от 8 до 0. Опционально, опорные весовые значения проходят через 8, 6, 4, 2, 0 от 8 до 0, а затем проходят через 0, 2, 4, 6, 8 от 0 до 8.[000194] a1 and a2 represent weight conversion factors that can be configured based on experience. For example, a1 can be a non-zero integer, for example, a1 can be equal to -4, -3, -2, -1, 1, 2, 3 or 4, etc., a2 can be a non-zero integer, for example, a2 could be -4, -3, -2, -1, 1, 2, 3 or 4, etc. For example, when a1 is a positive integer, a2 can be a negative integer; when a1 is a negative integer, a2 can be a positive integer. For example, a1 may be -a2, that is, the rates of change are the same, which is reflected in the setting of the reference weight values, that is, the reference weights have the same gradually changing width. For ease of description, let's take as an example the value of a1 equal to 1 and the value of a2 equal to -1, the reference weight values should pass through 0, 1, 2, 3, 4, 5, 6, 7, 8 from 0 to 8, and then pass through 8, 7, 6, 5, 4, 3, 2, 1, 0 from 8 to 0. Optionally, reference weight values pass through 8, 6, 4, 2, 0 from 8 to 0, and then pass through 0, 2, 4, 6, 8 from 0 to 8.
[000195] s1 и s2 могут представлять начальные позиции преобразования весов, которые могут быть сконфигурированы на основе опыта. Например, s1 может быть начальной позицией преобразования опорных весовых значений в интервале [0, k] и может быть половиной k; или s1 может быть немного меньше половины k, например, половина к минус 4; или s1 может быть немного больше половины k, например, половина к плюс 4. Приведенные выше примеры являются только иллюстративными, и значение s1 здесь не ограничивается. s2 может быть начальной позицией преобразования опорных весовых значений в интервале [k+1, t], a s2 может быть половиной q (например, разность между t и k+1); или s2 может быть немного меньше половины q, например, половина q минус 4; или s2 может быть немного больше половины q, например, половина q плюс 4. Приведенные выше примеры являются только иллюстративными, и значение s2 здесь не ограничено.[000195] s1 and s2 may represent the starting positions of the weight transformation, which can be configured based on experience. For example, s1 may be the starting position of the transformation of reference weights in the interval [0, k] and may be half of k; or s1 may be slightly less than half k, for example half k minus 4; or s1 may be slightly larger than half k, such as half k plus 4. The above examples are illustrative only and the meaning of s1 is not limited here. s2 may be the starting position of the transformation of the reference weights in the interval [k+1, t], and s2 may be half of q (eg, the difference between t and k+1); or s2 may be slightly less than half q, for example half q minus 4; or s2 may be slightly larger than half q, such as half q plus 4. The above examples are illustrative only and the value of s2 is not limited here.
[000196] Одним словом, может быть получен список опорных весовых значений текущего блока, и список опорных весовых значений может включать множество опорных весовых значений, которые сначала монотонно увеличиваются, а затем монотонно уменьшаются, или сначала монотонно уменьшаются, а затем монотонно увеличиваются. В возможной реализации список опорных весовых значений может также включать одно или более опорных весовых значений первых целевых позиций, одно или более опорных весовых значений вторых целевых позиций, одно или более опорных весовых значений первых соседних позиций, соседних только с первыми целевыми позициями, одно или более опорных весовых значений вторых соседних позиций, соседних как с первыми целевыми позициями, так и со вторыми целевыми позициями, и одно или более опорных весовых значений третьих соседних позиций, соседних только со вторыми целевыми позициями.[000196] In short, a list of reference weight values of the current block may be obtained, and the list of reference weight values may include a plurality of reference weight values that first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. In an exemplary implementation, the list of reference weights may also include one or more reference weights of the first target positions, one or more reference weights of the second target positions, one or more reference weights of the first adjacent positions adjacent only to the first target positions, one or more reference weight values of second neighboring positions adjacent to both the first target positions and the second target positions, and one or more reference weight values of third neighboring positions adjacent only to the second target positions.
[000197] Первые целевые позиции включают одно или более опорных весовых значений, определенных на основе первой начальной позиции преобразования весов. Например, на основе первой начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве первых целевых позиций. Опционально, на основе первой начальной позиции преобразования весов определяют множество опорных весовых значений, которые принимают в качестве первых целевых позиций. Если первые целевые позиции включают множество опорных весовых значений, множество опорных весовых значений в первых целевых позициях монотонно увеличиваются или уменьшаются. Монотонное увеличение может быть монотонным увеличением множества опорных весовых значений первых целевых позиций, и монотонное уменьшение может быть монотонным уменьшением множества опорных весовых значений первых целевых позиций.[000197] The first target positions include one or more reference weight values determined based on the first weight transformation start position. For example, based on the first starting position of the weight transformation, one reference weight value is determined and taken as the first target positions. Optionally, based on the first starting position of the weight transformation, a plurality of reference weight values are determined and taken as the first target positions. If the first target positions include a plurality of reference weight values, the plurality of reference weight values at the first target positions are monotonically increased or decreased. The monotonic increase may be a monotonic increase of a plurality of reference weight values of the first target positions, and the monotonic decrease may be a monotonic decrease of a plurality of reference weight values of the first target positions.
[000198] Вторые целевые позиции включают одно или более опорных весовых значений, определенных на основе второй начальной позиции преобразования весов. Например, на основе второй начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве вторых целевых позиций. Опционально, на основе второй начальной позиции преобразования весов определяют множество опорных весовых значений, которые принимают в качестве вторых целевых позиций. Если вторые целевые позиции включают множество опорных весовых значений, множество опорных весовых значений во вторых целевых позициях монотонно увеличиваются или уменьшаются. Монотонное увеличение может быть строго монотонным увеличением (множество опорных весовых значений вторых целевых позиций строго монотонно увеличиваются).[000198] The second target positions include one or more reference weight values determined based on the second start position of the weight transformation. For example, based on the second starting position of the weight transformation, one reference weight value is determined and taken as the second target positions. Optionally, based on the second start position of the weight transformation, a plurality of reference weight values are determined and taken as the second target positions. If the second target positions include a plurality of reference weight values, the plurality of reference weight values at the second target positions are monotonically increased or decreased. A monotonic increase may be a strictly monotonic increase (the set of reference weights of the second target positions are strictly monotonically increased).
[000199] Если множество опорных весовых значений первых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются), множество опорных весовых значений вторых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются). Опционально, если множество опорных весовых значений первых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются), множество опорных весовых значений вторых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются).[000199] If the plurality of reference weights of the first target positions are monotonically increasing (eg, strictly monotonically increasing), the plurality of reference weights of the second target positions are monotonically decreasing (eg, strictly monotonically decreasing). Optionally, if the plurality of reference weights of the first target positions are monotonically decreasing (eg, strictly monotonically decreasing), the plurality of reference weights of the second target positions are monotonically increasing (eg, strictly monotonically increasing).
[000200] Например, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями, все опорные весовые значения вторых соседних позиций являются вторыми опорными весовыми значениями, и все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Первые опорные весовые значения могут быть такими же, как третьи опорные весовые значения, первые опорные весовые значения могут отличаться от вторых опорных весовых значений, а третьи опорные весовые значения могут отличаться от вторых опорных весовых значений. Например, все опорные весовые значения первых соседних позиций равны 0, все опорные весовые значения вторых соседних позиций равны 8, а все опорные весовые значения третьих соседних позиций равны 0. Опционально, все опорные весовые значения первых соседних позиций равны 8, все опорные весовые значения вторых соседних позиций равны 0, а все опорные весовые значения третьих соседних позиций равны 8.[000200] For example, all reference weights of the first adjacent positions are first reference weights, all reference weights of the second adjacent positions are second reference weights, and all reference weights of the third adjacent positions are third reference weights. The first reference weight values may be the same as the third reference weight values, the first reference weight values may be different from the second reference weight values, and the third reference weight values may be different from the second reference weight values. For example, all reference weights of the first adjacent positions are 0, all reference weights of the second adjacent positions are 8, and all reference weights of the third adjacent positions are 0. Optionally, all reference weights of the first adjacent positions are 8, all reference weights of the second neighboring positions are equal to 0, and all reference weights of the third neighboring positions are equal to 8.
[000201] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно уменьшаются; и опорные весовые значения третьих соседних позиций монотонно увеличиваются. Например, все опорные весовые значения первых соседних позиций равны 8, первые целевые позиции включают одно опорное весовое значение 7, опорные весовые значения вторых соседних позиций монотонно уменьшаются от 6 до 0, вторые целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения третьих соседних позиций монотонно увеличиваются от 2 до 8.[000201] Optionally, all reference weight values of the first adjacent positions are first reference weight values; the reference weight values of the second neighboring positions decrease monotonically; and the reference weights of the third neighboring positions increase monotonically. For example, the first adjacent position reference weights are all 8, the first target positions include one weight reference value of 7, the second adjacent position reference weight values decrease monotonically from 6 to 0, the second target positions include one weight reference value equal to 1, and the reference weight values the values of the third neighboring positions increase monotonically from 2 to 8.
[000202] Опционально, опорные весовые значения первых соседних позиций монотонно уменьшаются; опорные весовые значения вторых соседних позиций сначала монотонно уменьшаются, а затем монотонно увеличиваются; опорные весовые значения третьих соседних позиций монотонно увеличиваются. Например, опорные весовые значения первых соседних позиций монотонно уменьшаются от 8 до 5, первые целевые позиции включают одно опорное весовое значение 4, опорные весовые значения вторых соседних позиций сначала монотонно уменьшаются от 3 до 0, а затем монотонно увеличиваются от 0 до 3, вторые целевые позиции включают одно опорное весовое значение 4, а опорные весовые значения третьих соседних позиций монотонно увеличиваются от 5 до 8.[000202] Optionally, the reference weights of the first adjacent positions decrease monotonically; the reference weight values of the second neighboring positions first decrease monotonically and then increase monotonically; the reference weight values of the third neighboring positions increase monotonically. For example, the reference weight values of the first adjacent positions monotonically decrease from 8 to 5, the first target positions include one
[000203] Опционально, опорные весовые значения первых соседних позиций монотонно уменьшаются; опорные весовые значения вторых соседних позиций монотонно увеличиваются; все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Например, опорные весовые значения первых соседних позиций монотонно уменьшаются от 8 до 1, первые целевые позиции включают одно опорное весовое значение 0, опорные весовые значения вторых соседних позиций монотонно увеличиваются от 0 до 7, вторые целевые позиции включают одно опорное весовое значение 8, а все опорные весовые значения третьих соседних позиций равны 8.[000203] Optionally, the reference weight values of the first adjacent positions are monotonically decreased; the reference weight values of the second neighboring positions increase monotonically; all reference weights of third adjacent positions are third reference weights. For example, the reference weight values of the first adjacent positions monotonically decrease from 8 to 1, the first target positions include one
[000204] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно увеличиваются; опорные весовые значения третьих соседних позиций монотонно уменьшаются. Например, все опорные весовые значения первых соседних позиций равны 0, первые целевые позиции включают одно опорное весовое значение 1, опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8, вторые целевые позиции включают одно опорное весовое значение 7, а опорные весовые значения третьих соседних позиций монотонно уменьшаются от 6 до 0.[000204] Optionally, all reference weight values of the first adjacent positions are first reference weight values; the reference weight values of the second neighboring positions increase monotonically; the reference weight values of the third neighboring positions decrease monotonically. For example, the first adjacent position reference weights are all 0, the first target positions include one
[000205] Опционально, опорные весовые значения первых соседних позиций монотонно увеличиваются; опорные весовые значения вторых соседних позиций сначала монотонно увеличиваются, а затем монотонно уменьшаются; опорные весовые значения третьих соседних позиций монотонно уменьшаются. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 3, первые целевые позиции включают одно опорное весовое значение 4, опорные весовые значения вторых соседних позиций сначала монотонно увеличиваются от 5 до 8, а затем монотонно уменьшаются от 8 до 5, вторые целевые позиции включают одно опорное весовое значение 4, а опорные весовые значения третьих соседних позиций монотонно уменьшаются от 3 до 0.[000205] Optionally, the reference weights of the first adjacent positions increase monotonically; the reference weight values of the second neighboring positions first increase monotonically and then decrease monotonically; the reference weight values of the third neighboring positions decrease monotonically. For example, the reference weights of the first adjacent positions increase monotonically from 0 to 3, the first target positions include one
[000206] Опционально, опорные весовые значения первых соседних позиций монотонно увеличиваются; опорные весовые значения вторых соседних позиций монотонно уменьшаются; все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 7, первые целевые позиции включают одно опорное весовое значение 8, опорные весовые значения вторых соседних позиций монотонно уменьшаются от 8 до 1, вторые целевые позиции включают одно опорное весовое значение 0, и все опорные весовые значения третьих соседних позиций равны 0.[000206] Optionally, the reference weights of the first adjacent positions increase monotonically; the reference weight values of the second neighboring positions decrease monotonically; all reference weights of third adjacent positions are third reference weights. For example, the reference weight values of the first adjacent positions increase monotonically from 0 to 7, the first target positions include one reference weight value 8, the reference weight values of the second adjacent positions monotonically decrease from 8 to 1, the second target positions include one
[000207] Вышеприведенные примеры являются только иллюстративными, и здесь не делается никаких ограничений при условии, что множество опорных весовых значений в списке опорных весовых значений может удовлетворять следующим требованиям: увеличение от 0 до 8, а затем уменьшение от 8 до 0; или уменьшение от 8 до 0, а затем увеличение от 0 до 8.[000207] The above examples are only illustrative, and no limitation is made herein, provided that the plurality of reference weight values in the list of reference weight values can satisfy the following requirements: increasing from 0 to 8 and then decreasing from 8 to 0; or decreasing from 8 to 0 and then increasing from 0 to 8.
[000208] Случай 3: множество опорных весовых значений в списке опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем включать множество вторых опорных весовых значений, или может сначала включать множество вторых опорных весовых значений, а затем включать множество первых опорных весовых значений. Например, список опорных весовых значений может быть [8 8…8 8 0 0…0 0] или [0 0…0 0 8 8…8 8].[000208] Case 3: The plurality of reference weights in the list of reference weights may first include a plurality of first reference weights and then include a plurality of second reference weights, or may first include a plurality of second reference weights and then include a plurality of first reference weights values. For example, the list of reference weights could be [8 8…8 8 0 0…0 0] or [0 0…0 0 8 8…8 8].
[000209] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать начальную позицию преобразования весов. Начальная позиция преобразования весов может быть значением, установленным на основе опыта.[000209] For example, reference weight values in the list of reference weight values may be preconfigured or configured based on weight configuration parameters. The weight configuration parameters may include the starting position of the weight transformation. The starting position of the weight transformation may be a value established based on experience.
[000210] В процессе предварительного конфигурирования опорных весовых значений в списке опорных весовых значений множество опорных весовых значений в списке опорных весовых значений может быть сконфигурировано произвольно при условии, что множество опорных весовых значений включает первые опорные весовые значения и вторые опорные весовые значения.[000210] In the process of pre-configuring the reference weight values in the reference weight value list, the plurality of reference weight values in the reference weight value list can be configured arbitrarily as long as the plurality of reference weight values includes the first reference weight values and the second reference weight values.
[000211] В процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала может быть получена начальная позиция преобразования весов, а затем множество опорных весовых значений в списке опорных весовых значений определяют на основе начальной позиции преобразования весов. Например, начальная позиция преобразования весов представляет s-e опорное весовое значение в списке опорных весовых значений. Следовательно, все опорные весовые значения до s-го опорного весового значения (за исключением s-го опорного весового значения) являются первыми опорными весовыми значениями (например, 8), а все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются вторыми опорными весовыми значениями (например, 0). Опционально, все опорные весовые значения до s-го опорного весового значения (за исключением s-го опорного весового значения) являются вторыми опорными весовыми значениями (например, 0), а все опорные весовые значения после s-го опорного весового значения (включая s-e опорное весовое значение) являются первыми опорными весовыми значениями (например, 8).[000211] In the process of configuring reference weight values in the reference weight list based on the weight configuration parameters, a weight transformation starting position may first be obtained, and then a plurality of reference weight values in the reference weight value list are determined based on the weight transformation starting position. For example, the start position of the weight transformation represents the s-e reference weight value in the list of reference weight values. Therefore, all reference weights up to the sth reference weight (excluding the sth reference weight) are the first reference weights (e.g., 8), and all reference weights after the sth reference weight (including the s-e reference weight value) are second reference weight values (eg 0). Optionally, all reference weight values up to the sth reference weight value (excluding the sth reference weight value) are second reference weight values (eg, 0), and all reference weight values after the sth reference weight value (including the s-e reference weight value) weight value) are the first reference weight values (for example, 8).
[000212] На основе вышеуказанных случаев может быть получен список опорных весовых значений текущего блока. Для простоты в последующих вариантах осуществления изобретения описание приведено для списка опорных весовых значений случая 1 в качестве примера, а списки опорных весовых значений других случаев могут быть реализованы аналогичным образом.[000212] Based on the above cases, a list of reference weight values of the current block can be obtained. For simplicity, in subsequent embodiments of the invention, the description is given for the reference weight list of
[000213] На этапе S2 определяют действительное количество на основе размера текущего блока и угла взвешенного предсказания текущего блока.[000213] In step S2, the actual quantity is determined based on the size of the current block and the weighted prediction angle of the current block.
[000214] Например, действительное количество относится к наличию действительного количества окружающих позиций за пределами текущего блока, например, позиции пикселей внутри текущего блока могут указывать только на действительное количество окружающих позиций, то есть целевое весовое значение каждой из позиций пикселей внутри текущего блока можно получить, установив опорные весовые значения для действительного количества окружающих позиций.[000214] For example, the actual number refers to the presence of an actual number of surrounding positions outside the current block, for example, the pixel positions inside the current block can only indicate the actual number of surrounding positions, that is, the target weight value of each of the pixel positions inside the current block can be obtained, by setting reference weights for the actual number of surrounding positions.
[000215] Например, количество окружающих позиций за пределами текущего блока определяют на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. В этом варианте осуществления изобретения количество окружающих позиций за пределами текущего блока обозначается как действительное количество ValidLength.[000215] For example, the number of surrounding positions outside the current block is determined based on the size of the current block and/or the weighted prediction angle of the current block. In this embodiment of the invention, the number of surrounding positions outside the current block is designated as the valid number of ValidLength.
[000216] Например, действительное количество можно определить по следующей формуле: ValidLength = (N+(М>>X))<<1 или ValidLength = (М+(N>>X))<<1. В приведенной выше формуле ValidLength представляет действительное количество, М представляет ширину текущего блока, N представляет высоту текущего блока, X представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например 0 или 1, << относится к арифметическому сдвигу влево, а >> относится к арифметическому сдвигу вправо.[000216] For example, the valid quantity can be determined by the following formula: ValidLength = (N+(M>>X))<<1 or ValidLength = (M+(N>>X))<<1. In the above formula, ValidLength represents the real quantity, M represents the width of the current block, N represents the height of the current block, X represents the log2 value of the absolute value of the slope of the weighted prediction angle of the current block, such as 0 or 1, << refers to the arithmetic left shift, and > > refers to an arithmetic right shift.
[000217] В настоящем изобретении а<<b можно понимать как арифметический сдвиг влево целочисленного двоично-дополнительного представления a на b двоичных цифр, и эта операция определена тогда, когда b является положительным числом. Проще говоря, а<<b можно понимать как умножение а на 2 в степени b. В настоящем изобретении а>>b можно понимать как арифметический сдвиг вправо целочисленного двоично-дополнительного представления а на b двоичных цифр, и эта операция определена тогда, когда b является положительным числом. Проще говоря, а>>b можно понимать как деление а на 2 в степени b.[000217] In the present invention, a<<b can be understood as an arithmetic left shift of the integer two's complement representation of a by b binary digits, and this operation is defined when b is a positive number. Simply put, a<<b can be understood as multiplying a by 2 to the power of b. In the present invention, a>>b can be understood as an arithmetic right shift of the integer two's complement representation of a by b binary digits, and this operation is defined when b is a positive number. Simply put, a>>b can be understood as dividing a by 2 to the power of b.
[000218] На этапе S3 на основе размера текущего блока, угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока определяют целевой индекс.[000218] In step S3, based on the size of the current block, the weighted prediction angle of the current block, and the weighted prediction position of the current block, the target index is determined.
[000219] Например, целевой индекс может относиться к нумерации опорного весового значения в списке опорных весовых значений, например, когда целевой индекс равен 259, он может указывать на 259-е опорное весовое значение в списке опорных весовых значений.[000219] For example, the target index may refer to the numbering of the reference weight value in the list of reference weight values, for example, when the target index is 259, it may point to the 259th reference weight value in the list of reference weight values.
[000220] Например, целевой индекс можно определить по следующим формулам: FirstIndex=(HalfLength-4)-((ValidLength>>1)-а + Y * ((ValidLength - 1) >> 3)); или Firstlndex=(HalfLength-4)-((ValidLength>>1)-b+Y * ((ValidLength - 1)>>3) - ((M << 1) >> X)); или Firstlndex = (HalfLength - 4) - ((ValidLength>>1) - с + Y * ((ValidLength - 1) >> 3) - ((N << 1) >> X)); или Firstlndex = (HalfLength - 4) - ((ValidLength >> 1) - d+Y * ((ValidLength - 1) >> 3)). В приведенных выше формулах Firstlndex относится к целевому индексу, ValidLength относится к действительному количеству, которое определяют на основе размера текущего блока и угла взвешенного предсказания текущего блока, Y относится к позиции взвешенного предсказания текущего блока, значение HalfLength - 4 относится к начальной позиции преобразования весов, М относится к ширине текущего блока, N относится к высоте текущего блока, X является значением логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, и а, b, с и d - предварительно установленные постоянные значения.[000220] For example, the target index can be determined using the following formulas: FirstIndex=(HalfLength-4)-((ValidLength>>1)-a + Y * ((ValidLength - 1) >> 3)); or Firstlndex=(HalfLength-4)-((ValidLength>>1)-b+Y * ((ValidLength - 1)>>3) - ((M << 1) >> X)); or Firstlndex = (HalfLength - 4) - ((ValidLength>>1) - c + Y * ((ValidLength - 1) >> 3) - ((N << 1) >> X)); or FirstIndex = (HalfLength - 4) - ((ValidLength >> 1) - d+Y * ((ValidLength - 1) >> 3)). In the above formulas, FirstIndex refers to the target index, ValidLength refers to the actual quantity, which is determined based on the size of the current block and the weighted prediction angle of the current block, Y refers to the weighted prediction position of the current block, the HalfLength value - 4 refers to the starting position of the weight transformation, M refers to the width of the current block, N refers to the height of the current block, X is the log2 value of the absolute value of the weighted prediction angle slope of the current block, and a, b, c and d are preset constant values.
[000221] В приведенном выше процессе значение ValidLength связано с углом взвешенного предсказания текущего блока и размером текущего блока. Для упрощения схемы некоторые параметры могут быть фиксированными для достижения оптимизации, например, угол взвешенного предсказания текущего блока может быть установлен равным фиксированному значению параметра, a ValidLength относится только к размеру текущего блока. В других вариантах осуществления изобретения ValidLength можно определить аналогичным образом.[000221] In the above process, the ValidLength value is related to the weighted prediction angle of the current block and the size of the current block. To simplify the design, some parameters can be fixed to achieve optimization, for example, the weighted prediction angle of the current block can be set to a fixed parameter value, and ValidLength refers only to the size of the current block. In other embodiments of the invention, ValidLength can be determined in a similar manner.
[000222] В приведенном выше процессе значение Firstlndex связано с углом взвешенного предсказания текущего блока, размером текущего блока и позицией взвешенного предсказания текущего блока. Для упрощения схемы некоторые параметры могут быть фиксированными для достижения оптимизации, например, угол взвешенного предсказания текущего блока может быть установлен равным фиксированному значению параметра, а значение Firstlndex связано только с размером текущего блока и позицией взвешенного предсказания текущего блока. Опционально, позиция взвешенного предсказания текущего блока может быть установлена равной фиксированному значению параметра, а значение Firstlndex связано только с размером текущего блока и углом взвешенного предсказания текущего блока. Опционально, угол взвешенного предсказания текущего блока и позиция взвешенного предсказания текущего блока могут быть установлены как фиксированные значения параметров, которые могут быть одинаковыми или различными для различных текущих блоков, а значение Firstlndex связано только с размером текущего блока. В других вариантах осуществления изобретения Firstlndex (или FirstPos) можно определить аналогичным образом, что здесь повторяться не будет.[000222] In the above process, the FirstIndex value is related to the weighted prediction angle of the current block, the size of the current block, and the weighted prediction position of the current block. To simplify the design, some parameters can be fixed to achieve optimization, for example, the weighted prediction angle of the current block can be set to a fixed parameter value, and the FirstIndex value is only related to the size of the current block and the weighted prediction position of the current block. Optionally, the weighted prediction position of the current block can be set to a fixed parameter value, and the FirstIndex value is related only to the size of the current block and the weighted prediction angle of the current block. Optionally, the weighted prediction angle of the current block and the weighted prediction position of the current block can be set as fixed parameter values, which may be the same or different for different current blocks, and the FirstIndex value is only related to the size of the current block. In other embodiments of the invention, FirstIndex (or FirstPos) can be defined in a similar manner, which will not be repeated here.
[000223] На этапе S4 выбирают действительное количество опорных весовых значений из списка опорных весовых значений на основе целевого индекса.[000223] In step S4, an actual number of reference weight values is selected from the list of reference weight values based on the target index.
[000224] Например, предполагается, что целевой индекс равен q1, а действительное количество - r. Если целевой индекс является первым опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, опорные весовые значения с q1-го по q2-e выбирают из списка опорных весовых значений, и разность между индексом, относящимся к q2, и индексом, относящимся к q1, равна r - 1, и, таким образом, r опорных весовых значений выбирают из списка опорных весовых значений. Альтернативно, если целевой индекс является последним опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, опорные весовые значения с q3-го по q1-e выбирают из списка опорных весовых значений, и разность между индексом, относящимся к q1, и индексом, относящимся к q3, равна r-1, и, таким образом, r опорных весовых значений выбирают из списка опорных весовых значений.[000224] For example, it is assumed that the target index is q1 and the actual quantity is r. If the target index is the first reference weight value to be selected in the reference weight value list, reference weight values q1-th to q2-e are selected from the reference weight value list, and the difference between the index related to q2 and the index related to to q1 is equal to r - 1, and thus r reference weights are selected from the list of reference weights. Alternatively, if the target index is the last reference weight value to be selected in the list of reference weight values, reference weight values q3 to q1-e are selected from the list of reference weight values, and the difference between the index related to q1 and the index related to q3 is equal to r-1, and thus r reference weight values are selected from the list of reference weight values.
[000225] Описанные выше способы являются только примерами, и целевой индекс также может быть средним опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, реализация аналогична и не будет здесь повторяться. Последующее описание приведено для целевого индекса, являющегося первым опорным весовым значением, которое должно быть выбрано в списке опорных весовых значений, в качестве примера, то есть выбирают опорные весовые значения с q1-го по q2-e.[000225] The above methods are only examples, and the target index may also be an average reference weight value to be selected from the reference weight value list, the implementation is similar and will not be repeated here. The following description is given for the target index being the first reference weight value to be selected from the reference weight value list as an example, that is, reference weight values q1-th to q2-e are selected.
[000226] На этапе S5 на основе действительного количества опорных весовых значений устанавливают опорные весовые значения окружающих позиций за пределами текущего блока.[000226] In step S5, based on the actual number of reference weight values, reference weight values of surrounding positions outside the current block are set.
[000227] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и действительное количество опорных весовых значений выбирают из списка опорных весовых значений. Таким образом, количество окружающих позиций равно количеству выбранных опорных весовых значений, и действительное количество опорных весовых значений в списке опорных весовых значений могут быть установлены как опорные весовые значения окружающих позиций за пределами текущего блока соответственно.[000227] For example, the number of surrounding positions outside the current block is an actual number, and the actual number of reference weights is selected from a list of reference weights. That is, the number of surrounding positions is equal to the number of selected reference weights, and the actual number of reference weights in the list of reference weights can be set to the reference weights of surrounding positions outside the current block, respectively.
[000228] Например, для первого опорного весового значения в пределах действительного количества опорных весовых значений первое опорное весовое значение задают как опорное весовое значение для первой окружающей позиции за пределами текущего блока; для второго опорного весового значения в пределах действительного количества опорных весовых значений, второе опорное весовое значение задают как опорное весовое значение для второй окружающей позиции за пределами текущего блока и т.д.[000228] For example, for the first reference weight value within the actual number of reference weight values, the first reference weight value is set as the reference weight value for the first surrounding position outside the current block; for a second reference weight value within the actual number of reference weight values, the second reference weight value is set as a reference weight value for a second surrounding position outside the current block, etc.
[000229] В возможной реализации, если r опорных весовых значений выбраны из списка опорных весовых значений, r опорных весовых значений берут из списка опорных весовых значений и устанавливают соответственно в качестве опорных весовых значений r окружающих позиций за пределами текущего блока. В качестве альтернативы, если r опорных весовых значений выбраны из списка опорных весовых значений, вместо извлечения r опорных весовых значений из списка опорных весовых значений, r опорных весовых значений используют в качестве опорных весовых значений r окружающих позиций за пределами текущего блока путем перемещения опорных весовых значений в списке опорных весовых значений.[000229] In an exemplary implementation, if r reference weights are selected from a list of reference weights, r reference weights are taken from the list of reference weights and are set respectively as reference weights of r surrounding positions outside the current block. Alternatively, if r reference weights are selected from the list of reference weights, instead of retrieving the r reference weights from the list of reference weights, the r reference weights are used as reference weights of r surrounding positions outside the current block by moving the reference weights in the list of reference weight values.
[000230] Вариант 7 осуществления изобретения. В вышеприведенных вариантах 1-3 осуществления изобретения для каждой позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, указанной позицией пикселя, определяют целевое весовое значение позиции пикселя. Ниже в качестве примера описание приведено для окружающей соответствующей позиции текущего блока. Опорное весовое значение, связанное с окружающей соответствующей позицией, может быть получено следующим образом: опорное весовое значение задают непосредственно для каждой из окружающих позиций за пределами текущего блока, например, получают действительное количество опорных весовых значений (не выбраны из списка опорных весовых значений) и на основе действительного количества опорных весовых значений устанавливают опорные весовые значения окружающих позиций за пределами текущего блока.[000230] Embodiment 7 of the invention. In the
[000231] Например, опорные весовые значения, сконфигурированные для окружающих позиций за пределами текущего блока, могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Для начальной позиции преобразования весов каждого текущего блока начальную позицию преобразования весов определяют на основе по меньшей мере одного из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока или размер текущего блока. Когда текущий блок включает один подблок, количество окружающих позиций за пределами текущего блока (например, действительное количество) определяют на основе размера текущего блока и угла взвешенного предсказания текущего блока.[000231] For example, reference weights configured for surrounding positions outside the current block may be preconfigured or configured based on the weight configuration parameters. The weight configuration parameters may include the weight conversion factor and the weight conversion starting position. For the weight transformation starting position of each current block, the weight transformation starting position is determined based on at least one of the current block's weighted prediction angle, the current block's weighted prediction position, or the size of the current block. When the current block includes one sub-block, the number of surrounding positions outside the current block (eg, the actual number) is determined based on the size of the current block and the weighted prediction angle of the current block.
[000232] Таким образом, поскольку опорные весовые значения были установлены для окружающих позиций за пределами текущего блока, то есть каждая окружающая позиция имеет опорное весовое значение, после того как окружающую соответствующую позицию, указанную позицией пикселя, определяют из окружающих позиций за пределами текущего блока, может быть определено опорное весовое значение, связанное с окружающей соответствующей позицией, например, целевое весовое значение позиции пикселя.[000232] Thus, since reference weight values have been set for surrounding positions outside the current block, that is, each surrounding position has a reference weight value after the surrounding corresponding position indicated by the pixel position is determined from surrounding positions outside the current block, a reference weight value associated with a surrounding corresponding position, for example, a target pixel position weight value, may be determined.
[000233] Процесс установки опорных весовых значений окружающих позиций описан ниже в сочетании с реализациями.[000233] The process of setting reference weights of surrounding positions is described below in conjunction with implementations.
[000234] Сначала получают действительное количество опорных весовых значений. Затем на основе действительного количества опорных весовых значений устанавливают опорные весовые значения окружающих позиций за пределами текущего блока, причем опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться или монотонно уменьшаться.[000234] First, the actual number of reference weight values is obtained. Then, based on the actual number of reference weight values, reference weight values of the surrounding positions outside the current block are set, and the reference weight values of the surrounding positions outside the current block may monotonically increase or monotonically decrease.
[000235] Следует отметить, что действительное количество опорных весовых значений также получают в предыдущем варианте осуществления изобретения, и действительное количество в предыдущем варианте осуществления изобретения может быть таким же, что и действительное количество в этом варианте осуществления изобретения, или может отличаться от него. В целях различения действительное количество в предыдущем варианте осуществления изобретения может рассматриваться как первое действительное количество, а действительное количество в этом варианте осуществления изобретения может рассматриваться как второе действительное количество.[000235] It should be noted that the actual number of reference weight values is also obtained in the previous embodiment, and the actual number in the previous embodiment may be the same as or different from the actual number in this embodiment. For purposes of distinction, the actual amount in the previous embodiment may be considered the first actual amount, and the actual amount in this embodiment may be considered the second actual amount.
[000236] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и должно быть получено действительное количество опорных весовых значений. Например, действительное количество можно определить по следующей формуле: ValidLength=(N+(М >> X)) << 1, где N и М соответственно представляют высоту и ширину текущего блока, а X представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например, 0 или 1.[000236] For example, the number of surrounding positions outside the current block is a real number, and a real number of reference weights must be obtained. For example, the actual quantity can be determined by the following formula: ValidLength=(N+(M >> X)) << 1, where N and M respectively represent the height and width of the current block, and X represents the logarithm log2 value of the absolute value of the slope of the weighted prediction angle of the current block, for example 0 or 1.
[000237] В возможной реализации действительное количество опорных весовых значений может монотонно увеличиваться или монотонно уменьшаться. Опционально, действительное количество опорных весовых значений может сначала монотонно увеличиваться, а затем монотонно уменьшаться, или сначала монотонно уменьшаться, а затем монотонно увеличиваться. Опционально, действительное количество опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем включать множество вторых опорных весовых значений, или может сначала включать множество вторых опорных весовых значений, а затем включать множество первых опорных весовых значений. Описание ниже будет приведено в сочетании с несколькими случаями.[000237] In a possible implementation, the actual number of reference weight values may monotonically increase or monotonically decrease. Optionally, the actual number of reference weights may first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. Optionally, the actual number of reference weight values may first include a plurality of first reference weight values and then include a plurality of second reference weight values, or may first include a plurality of second reference weight values and then include a plurality of first reference weight values. The description below will be given in combination with several cases.
[000238] Случай 1: действительное количество опорных весовых значений может монотонно увеличиваться или монотонно уменьшаться.[000238] Case 1: The actual number of reference weights may monotonically increase or monotonically decrease.
[000239] Например, опорные весовые значения могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта, или начальная позиция преобразования весов также может быть определена на основе позиции взвешенного предсказания или определена на основе угла взвешенного предсказания и позиции взвешенного предсказания.[000239] For example, weight reference values may be preconfigured or configured based on weight configuration parameters. The weight configuration parameters may include the weight conversion factor and the weight conversion starting position. The weight transformation coefficient may be a value set based on experience, and the weight transformation starting position may also be a value set based on experience, or the weight transformation starting position may also be determined based on the weighted prediction position, or determined based on the weighted prediction angle and position weighted prediction.
[000240] Например, в процессе предварительного конфигурирования множества опорных весовых значений множество опорных весовых значений может быть сконфигурировано произвольно при условии, что множество опорных весовых значений монотонно увеличиваются или монотонно уменьшаются. Кроме того, в процессе конфигурирования множества опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем на основе коэффициента преобразования весов и начальной позиции преобразования весов определяют множество опорных весовых значений. Начальную позицию преобразования весов определяют на основе позиции взвешенного предсказания текущего блока или определяют на основе угла взвешенного предсказания и позиции взвешенного предсказания текущего блока.[000240] For example, in the process of preconfiguring a plurality of reference weight values, the plurality of reference weight values can be configured arbitrarily as long as the plurality of reference weight values are monotonically increased or monotonically decreased. In addition, in the process of configuring a plurality of reference weight values based on the weight configuration parameters, a weight conversion coefficient and a weight conversion starting position can first be obtained, and then a plurality of reference weight values can be determined based on the weight conversion coefficient and a weight conversion starting position. The starting position of the weight transformation is determined based on the weighted prediction position of the current block, or determined based on the weighted prediction angle and the weighted prediction position of the current block.
[000241] Например, опорные весовые значения могут быть определены следующим образом: у(х)=Clip3(минимум, максимум, a*(x-s)), где х представляет индекс окружающей позиции, который находится в диапазоне от 1 до значения действительного количества, например, х равно 1, что указывает на первую окружающую позицию, а у(х) представляет опорное весовое значение х-й окружающей позиции, «а» представляет коэффициент преобразования весов, и s представляет начальную позицию преобразования весов.[000241] For example, reference weight values can be defined as follows: y(x)=Clip3(min, max, a*(x-s)), where x represents the index of the surrounding position, which ranges from 1 to the value of the actual quantity, for example, x is 1, which indicates the first surrounding position, and y(x) represents the reference weight value of the xth surrounding position, "a" represents the weight transformation factor, and s represents the starting weight transformation position.
[000242] Функция Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями. Максимальное значение и минимальное значение могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000242] The Clip3 function is used to limit reference weight values between the minimum and maximum values. The maximum value and minimum value can be configured based on experience. For simplicity, the following description is given with a minimum value of 0 and a maximum value of 8 as an example.
[000243] «а» представляет коэффициент преобразования весов, который может быть сконфигурирован на основе опыта, например, «а» может быть ненулевым целым числом, например, «а» может быть -4, -3, -2, -1, 1, 2, 3 или 4 и т.п. Для простоты описание приведено для «а», равного 1, в качестве примера. Если значение «а» равно 1, опорные весовые значения должны пройти через 0, 1, 2, 3, 4, 5, 6, 7, 8 от 0 до 8 или пройти через 8, 7, 6, 5, 4, 3, 2, 1, 0 от 8 до 0. Например, когда «а» является положительным целым числом, «а» может положительно коррелировать с количеством окружающих позиций, то есть чем больше окружающих позиций за пределами текущего блока, тем больше значение «а». Когда «а» является отрицательным целым числом, «а» может иметь отрицательную корреляцию с количеством окружающих позиций, то есть чем больше окружающих позиций за пределами текущего блока, тем меньше значение «а». Выше приведены примеры значения «а», и здесь не делается никаких ограничений.[000243] "a" represents a weight conversion factor that can be configured based on experience, for example, "a" can be a non-zero integer, for example, "a" can be -4, -3, -2, -1, 1 , 2, 3 or 4, etc. For simplicity, the description is given for "a" equal to 1 as an example. If the value of "a" is 1, the reference weights must go through 0, 1, 2, 3, 4, 5, 6, 7, 8 from 0 to 8, or go through 8, 7, 6, 5, 4, 3, 2, 1, 0 from 8 to 0. For example, when "a" is a positive integer, "a" can be positively correlated with the number of surrounding positions, that is, the more surrounding positions outside the current block, the larger the value of "a". When "a" is a negative integer, "a" can be negatively correlated with the number of surrounding positions, that is, the more surrounding positions outside the current block, the smaller the value of "a". The above are examples of the meaning of "a" and no restrictions are made here.
[000244] s может представлять начальную позицию преобразования весов, которая может быть определена на основе позиции взвешенного предсказания. Например, s=f (позиция взвешенного предсказания), то есть s является функцией позиции взвешенного предсказания. Например, после определения диапазона окружающих позиций за пределами текущего блока определяют действительное количество окружающих позиций, и все окружающие позиции поровну разделены на N частей, где значение N может быть задано произвольно, например 4, 6 или 8 и т.п. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция за пределами текущего блока принимается в качестве целевых окружающих позиций текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов. Опционально, значение s может быть определено на основе угла взвешенного предсказания и позиции взвешенного предсказания, например, s=f (угол взвешенного предсказания и позиция взвешенного предсказания), то есть s является функцией угла взвешенного предсказания и позиции взвешенного предсказания. Например, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания. После определения диапазона окружающих позиций за пределами текущего блока может быть определено действительное количество окружающих позиций, и все окружающие позиции поровну разделены на N частей. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция за пределами текущего блока принимается в качестве целевых окружающих позиций текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией преобразования весов.[000244] s may represent a starting position of the weight transformation, which may be determined based on the position of the weighted prediction. For example, s=f (weighted prediction position), that is, s is a function of the weighted prediction position. For example, after determining the range of surrounding positions outside the current block, the actual number of surrounding positions is determined, and all surrounding positions are equally divided into N parts, where the value of N can be set arbitrarily, such as 4, 6 or 8, etc. The weighted prediction position is used to represent which surrounding position outside the current block is taken as the target surrounding positions of the current block, and the surrounding position corresponding to the weighted prediction position is the starting position of the weight transformation. Optionally, the value of s can be determined based on the weighted prediction angle and the weighted prediction position, for example, s=f (weighted prediction angle and weighted prediction position), that is, s is a function of the weighted prediction angle and the weighted prediction position. For example, the range of surrounding positions outside the current block can be determined based on the weighted prediction angle. After determining the range of surrounding positions outside the current block, the actual number of surrounding positions can be determined, and all surrounding positions are equally divided into N parts. The weighted prediction position is used to represent which surrounding position outside the current block is taken as the target surrounding positions of the current block, and the surrounding position corresponding to the weighted prediction position is the starting position of the weight transformation.
[000245] Подводя итог, можно сказать, что в у(х)=Clip3(минимум, максимум, a*(x-s)) коэффициент «а» преобразования весов и начальная позиция s преобразования весов являются известными значениями. Для каждой из окружающих позиций за пределами текущего блока может быть определено опорное весовое значение окружающей позиции на основе функциональной взаимосвязи. Например, если коэффициент а преобразования весов равен 2, а начальная позиция s преобразования весов равна 2, функциональная взаимосвязь будет у(х)=Clip3(минимум, максимум, 2*(х-2)). Для каждой окружающей позиции х за пределами текущего блока может быть получено опорное весовое значение у.[000245] To summarize, in y(x)=Clip3(min, max, a*(x-s)), the weight transformation coefficient a and the weight transformation starting position s are known values. For each of the surrounding positions outside the current block, a reference weight value for the surrounding position may be determined based on the functional relationship. For example, if the weight transformation factor a is 2 and the weight transformation starting position s is 2, the functional relationship will be y(x)=Clip3(min, max, 2*(x-2)). For each surrounding position x outside the current block, a reference weight value y can be obtained.
[000246] Таким образом, можно получить действительное количество опорных весовых значений текущего блока, и эти опорные весовые значения могут монотонно увеличиваться или монотонно уменьшаться. В возможной реализации опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций.[000246] In this way, the actual number of reference weight values of the current block can be obtained, and these reference weight values can monotonically increase or monotonically decrease. In an exemplary implementation, the reference weights of the surrounding positions outside the current block include one or more reference weights of the target positions, one or more reference weights of the first adjacent positions of the target positions, and one or more reference weights of the second adjacent positions of the target positions.
[000247] Целевые позиции, опорные весовые значения целевых позиций, опорные весовые значения первых соседних позиций и опорные весовые значения вторых соседних позиций могут быть отнесены к описанию случая 1 в предыдущем варианте осуществления изобретения и не будут здесь повторяться.[000247] The target positions, target position reference weights, first adjacent position reference weights, and second adjacent position reference weights can be referred to the description of
[000248] Случай 2: действительное количество опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, либо сначала монотонно уменьшаются, а затем монотонно увеличиваются.[000248] Case 2: The actual number of reference weights increases monotonically and then decreases monotonically, or decreases monotonically and then increases monotonically.
[000249] Например, действительное количество опорных весовых значений может быть предварительно сконфигурировано или сконфигурировано на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта, или определенным на основе позиции взвешенного предсказания, или определенным на основе угла взвешенного предсказания и позиции взвешенного предсказания.[000249] For example, the actual number of weight references may be preconfigured or configured based on the weight configuration parameters. The weight configuration parameters may include the weight conversion factor and the weight conversion starting position. The weight conversion coefficient may be a value set based on experience, and the weight transformation starting position may also be a value set based on experience, or determined based on a weighted prediction position, or determined based on a weighted prediction angle and a weighted prediction position.
[000250] Например, в процессе предварительного конфигурирования множества опорных весовых значений множество опорных весовых значений может быть сконфигурировано произвольно при условии, что множество опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, или сначала монотонно уменьшаются, а затем монотонно увеличиваются. В процессе конфигурирования множества опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены первый коэффициент преобразования весов, второй коэффициент преобразования весов, первая начальная позиция преобразования весов и вторая начальная позиция преобразования весов, а затем на основе первого коэффициента преобразования весов, второго коэффициента преобразования весов, первой начальной позиции преобразования весов и второй начальной позиции преобразования весов определяют множество опорных весовых значений.[000250] For example, in the process of preconfiguring a plurality of reference weight values, the plurality of reference weight values can be arbitrarily configured as long as the plurality of reference weight values first monotonically increases and then monotonically decreases, or first monotonically decreases and then monotonically increases. In the process of configuring a plurality of reference weight values, based on the weight configuration parameters, the first weight transformation coefficient, the second weight transformation coefficient, the first weight transformation starting position and the second weight transformation starting position can be obtained first, and then based on the first weight transformation coefficient, the second transformation coefficient weights, a first weight transformation starting position and a second weight transformation starting position define a plurality of reference weight values.
[000251] Например, множество опорных весовых значений можно определить следующим образом: когда х находится в [0, k], у(х)=Clip3(минимум, максимум, a1*(x-s1)). Когда х находится в [k+1, t], у(х)=Clip3(минимум, максимум, a2*(x-s2)). X представляет индекс позиции окружающей позиции, например, значение х равно 1, что указывает на первую окружающую позицию, а у(х) представляет опорное весовое значение х-й окружающей позиции. K - это значение, сконфигурированное на основе опыта, которое здесь не ограничивается, например, k может быть половиной действительного количества или другим значением, если k меньше t, где t - общее количество окружающих позиций, то есть указанное выше действительное количество, a1 представляет первый коэффициент преобразования весов, а2 представляет второй коэффициент преобразования весов, s1 представляет первую начальную позицию преобразования весов, a s2 представляет вторую начальную позицию преобразования весов.[000251] For example, a set of reference weights can be defined as follows: when x is in [0, k], y(x)=Clip3(min, max, a1*(x-s1)). When x is in [k+1, t], y(x)=Clip3(min, max, a2*(x-s2)). X represents the position index of the surrounding position, for example, the value of x is 1, which indicates the first surrounding position, and y(x) represents the reference weight value of the xth surrounding position. K is a value configured based on experience, which is not limited here, for example, k can be half the actual quantity or another value if k is less than t, where t is the total number of surrounding positions, that is, the above real quantity, a1 represents the first a weight transformation coefficient, a2 represents a second weight transformation coefficient, s1 represents a first weight transformation starting position, and s2 represents a second weight transformation starting position.
[000252] Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями, при этом минимальное и максимальное значения могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000252] Clip3 is used to limit reference weights between the minimum and maximum values, where the minimum and maximum values can be configured based on experience. For simplicity, the following description is given with a minimum value of 0 and a maximum value of 8 as an example.
[000253] a1 и а2 представляют коэффициенты преобразования весов, которые могут быть сконфигурированы на основе опыта. Например, a1 может быть целым числом, отличным от нуля, например, al может быть равно -4, -3, -2, -1, 1, 2, 3 или 4 и т.п. а2 может быть ненулевым целым числом, например, а2 может быть -4, -3, -2, -1, 1, 2, 3 или 4 и т.п.[000253] a1 and a2 represent weight conversion factors that can be configured based on experience. For example, a1 can be a non-zero integer, for example al can be -4, -3, -2, -1, 1, 2, 3 or 4, etc. a2 can be a non-zero integer, for example, a2 can be -4, -3, -2, -1, 1, 2, 3 or 4, etc.
[000254] s1 и s2 могут представлять начальные позиции преобразования весов, которые могут быть сконфигурированы на основе опыта, s1 может быть начальной позицией преобразования опорных весовых значений в интервале [0, k], a s2 может быть начальной позицией преобразования опорных весовых значений в интервале [k+1, t].[000254] s1 and s2 may represent weight transformation starting positions that can be configured based on experience, s1 may be a starting position for transforming reference weight values in the interval [0, k], and s2 may be a starting position for transforming reference weight values in the interval [k+1, t].
[000255] s1 можно определить на основе позиции взвешенного предсказания. Например, s1=f(позиция взвешенного предсказания), то есть s1 является функцией позиции взвешенного предсказания. Например, после определения диапазона окружающих позиций за пределами текущего блока из всех окружающих позиций определяют диапазон [0, k], и все окружающие позиции в диапазоне [0, k] поровну делят на N частей, где значение N может быть установлено произвольно. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция в пределах диапазона [0, k] принимается в качестве целевых окружающих позиций текущего блока, а окружающая позиция, соответствующая позиции взвешенного предсказания, является начальной позицией s1 преобразования весов. Опционально, s1 можно определить на основе угла взвешенного предсказания и позиции взвешенного предсказания, например, s1=f(угол взвешенного предсказания, позиция взвешенного предсказания), то есть s1 является функцией угла взвешенного предсказания и позиции взвешенного предсказания. Например, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания, и диапазон [0, k] определяют из всех окружающих позиций. Все окружающие позиции в диапазоне [0, k] поровну делят на N частей. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция в диапазоне [0, k] принимается в качестве целевых окружающих позиций текущего блока, чтобы получить начальную позицию s1 преобразования весов.[000255] s1 can be determined based on the weighted prediction position. For example, s1=f(weighted prediction position), that is, s1 is a function of the weighted prediction position. For example, after determining the range of surrounding positions outside the current block, the range [0, k] is determined from all surrounding positions, and all surrounding positions in the range [0, k] are equally divided into N parts, where the value of N can be set arbitrarily. The weighted prediction position is used to represent which surrounding position within the range [0, k] is taken as the target surrounding positions of the current block, and the surrounding position corresponding to the weighted prediction position is the starting position s1 of the weight transformation. Optionally, s1 can be determined based on the weighted prediction angle and the weighted prediction position, for example, s1=f(weighted prediction angle, weighted prediction position), that is, s1 is a function of the weighted prediction angle and the weighted prediction position. For example, a range of surrounding positions outside the current block may be determined based on the weighted prediction angle, and the range [0, k] is determined from all surrounding positions. All surrounding positions in the range [0, k] are equally divided into N parts. The weighted prediction position is used to represent which surrounding position in the range [0, k] is taken as the target surrounding positions of the current block to obtain the starting position s1 of the weight transformation.
[000256] s2 может быть определено на основе позиции взвешенного предсказания или может быть определено на основе угла взвешенного предсказания и позиции взвешенного предсказания. Процесс определения s2 можно отнести к процессу определения s1, за исключением того, что диапазон изменен на [k+1, t], и поэтому здесь не повторяется.[000256] s2 may be determined based on the weighted prediction position, or may be determined based on the weighted prediction angle and the weighted prediction position. The process of determining s2 can be related to the process of determining s1, except that the range is changed to [k+1, t] and therefore is not repeated here.
[000257] Примеры определения начальных позиций s1 и s2 преобразования весов приведены выше, и здесь не делается никаких ограничений.[000257] Examples of determining the initial positions s1 and s2 of the weight transformation are given above, and no restrictions are made here.
[000258] Таким образом, можно получить множество опорных весовых значений, и эти опорные весовые значения могут сначала монотонно увеличиваться, а затем монотонно уменьшаться, или сначала монотонно уменьшаться, а затем монотонно увеличиваться. В возможной реализации опорные весовые значения множества окружающих позиций за пределами текущего блока могут также включать одно или более опорных весовых значений первых целевых позиций, одно или более опорных весовых значений вторых целевых позиций, одно или более опорных весовых значений первых соседних позиций, соседних только с первыми целевыми позициями, одно или более опорных весовых значений вторых соседних позиций, соседних как с первыми целевыми позициями, так и со вторыми целевыми позициями, и одно или более опорных весовых значений третьих соседних позиций, соседних только со вторыми целевыми позициями.[000258] In this way, a plurality of reference weight values can be obtained, and these reference weight values may first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. In a possible implementation, the reference weights of a plurality of surrounding positions outside the current block may also include one or more reference weights of the first target positions, one or more reference weights of the second target positions, one or more reference weights of the first adjacent positions adjacent only to the first target positions, one or more reference weights of second neighboring positions adjacent to both the first target positions and the second target positions, and one or more reference weights of third neighboring positions adjacent only to the second target positions.
[000259] Для первых целевых позиций, вторых целевых позиций, опорных весовых значений первых целевых позиций, опорных весовых значений вторых целевых позиций, опорных весовых значений первых соседних позиций, опорных весовых значений вторых соседних позиций и опорных весовых значений третьих соседних позиций и т.п. можно сделать ссылку на описание случая 2 в предыдущем варианте осуществления изобретения, и здесь не приводится избыточных описаний.[000259] For first target positions, second target positions, reference weights of first target positions, reference weights of second target positions, reference weights of first adjacent positions, reference weights of second adjacent positions and reference weights of third adjacent positions, and the like . Reference may be made to the description of
[000260] Случай 3: действительное количество опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем множество вторых опорных весовых значений, или сначала включать множество вторых опорных весовых значений, а затем множество первых опорных весовых значений. Действительное количество опорных весовых значений может быть предварительно сконфигурировано или сконфигурировано на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать начальную позицию преобразования весов. В процессе конфигурирования опорных весовых значений на основе параметров весовой конфигурации может быть получена начальная позиция преобразования весов, и множество опорных весовых значений определяют на основе начальной позиции преобразования весов.[000260] Case 3: The actual number of reference weight values may first include a plurality of first reference weight values and then a plurality of second reference weight values, or first include a plurality of second reference weight values and then a plurality of first reference weight values. The actual number of weight references may be preconfigured or configured based on the weight configuration parameters. The weight configuration parameters may include the starting position of the weight transformation. In the process of configuring reference weight values, based on the weight configuration parameters, a weight transformation starting position can be obtained, and a plurality of reference weight values are determined based on the weight transformation starting position.
[000261] На основе нескольких описанных выше случаев может быть получено действительное количество опорных весовых значений. Для простоты в последующих вариантах осуществления изобретения описание приведено для опорного весового значения в случае 1 в качестве примера, и опорные весовые значения в других случаях реализованы аналогичным образом.[000261] Based on several cases described above, the actual number of reference weight values can be obtained. For simplicity, in the following embodiments, the description is given for the reference weight value in
[000262] После того как получено действительное количество опорных весовых значений, опорные весовые значения окружающих позиций за пределами текущего блока устанавливают на основе действительного количества опорных весовых значений, при этом опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться или монотонно уменьшаться.[000262] After the actual number of reference weights is obtained, the reference weights of surrounding positions outside the current block are set based on the actual number of reference weights, and the reference weights of surrounding positions outside the current block may monotonically increase or monotonically decrease.
[000263] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и количество опорных весовых значений является действительным количеством. Следовательно, действительное количество опорных весовых значений могут быть установлены как опорные весовые значения окружающих позиций за пределами текущего блока.[000263] For example, the number of surrounding positions outside the current block is a real number, and the number of reference weights is a real number. Therefore, the actual number of reference weights can be set to the reference weights of surrounding positions outside the current block.
[000264] Например, первое опорное весовое значение устанавливают как опорное весовое значение первой окружающей позиции за пределами текущего блока, второе опорное весовое значение устанавливают как опорное весовое значение второй окружающей позиции за пределами текущего блока и т.д.[000264] For example, the first reference weight value is set to the reference weight value of the first surrounding position outside the current block, the second reference weight value is set to the reference weight value of the second surrounding position outside the current block, etc.
[000265] Вариант 8 осуществления изобретения. В приведенных выше вариантах 1-7 осуществления изобретения текущий блок может включать один подблок, то есть подблок является самим текущим блоком. Для текущего блока М и N представляют ширину и высоту текущего блока (то есть текущей единицы предсказания) соответственно. В этом случае, как показано на фиг. 6В, способ получения весового массива для углового взвешенного предсказания (AWP) может включать этапы a1 - а4.[000265] Embodiment 8 of the invention. In the
[000266] На этапе a1 получают такие параметры, как stepIdx, angleIdx и subAngleIdx, на основе AwpIdx.[000266] In step a1, parameters such as stepIdx, angleIdx and subAngleIdx are obtained based on AwpIdx.
[000267] AwpIdx представляет значение индекса угла взвешенного предсказания и позиции взвешенного предсказания. Если имеется 7 позиций взвешенного предсказания и 8 углов взвешенного предсказания, диапазон значений AwpIdx составляет от 0 до 55. Если позиция взвешенного предсказания составляет от -3 до 3 (представляющая четвертую позицию взвешенного предсказания является центром, а четвертая позиция взвешенного предсказания равна 0), и, если индекс угла взвешенного предсказания равен 0-7, позиции взвешенного предсказания и углы взвешенного предсказания, соответствующие 56 значениям индекса AwpIdx, показаны в таблице 2.[000267] AwpIdx represents the weighted prediction angle index value and the weighted prediction position. If there are 7 weighted prediction positions and 8 weighted prediction angles, the value range of AwpIdx is 0 to 55. If the weighted prediction position is -3 to 3 (representing the fourth weighted prediction position is the center, and the fourth weighted prediction position is 0), and , if the weighted prediction angle index is 0-7, the weighted prediction positions and weighted prediction angles corresponding to 56 AwpIdx index values are shown in Table 2.
[000268] stepIdx представляет позицию взвешенного предсказания, которая находится в диапазоне от -3 до 3. Например, для первой позиции взвешенного предсказания позиция взвешенного предсказания равна -3; для второй позиции взвешенного предсказания позиция взвешенного предсказания равна -2 и т.д.; для седьмой позиции взвешенного предсказания позиция взвешенного предсказания равна 3.[000268] stepIdx represents a weighted prediction position that ranges from -3 to 3. For example, for the first weighted prediction position, the weighted prediction position is -3; for the second weighted prediction position, the weighted prediction position is -2, etc.; for the seventh weighted prediction position, the weighted prediction position is 3.
[000269] angleIdx представляет собой значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания (например, 0, или 1, или большую константу), a subangleIdx представляет угловую область, в которой находится угол взвешенного предсказания. На фиг. 5В показаны восемь углов взвешенного предсказания, где angleIdx угла 0 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 0 взвешенного предсказания, angleIdx угла 1 взвешенного предсказания представляет собой значение логарифма log2 абсолютного значения наклона угла 1 взвешенного предсказания и т.д., a angleIdx угла 7 взвешенного предсказания является значением логарифма log2 абсолютного значения наклона угла 7 взвешенного предсказания. Угол 0 взвешенного предсказания и угол 1 взвешенного предсказания расположены в угловой области 0, угол 2 взвешенного предсказания и угол 3 взвешенного предсказания расположены в угловой области 1, угол 4 взвешенного предсказания и угол 5 взвешенного предсказания расположены в угловой области 2, а угол 6 взвешенного предсказания и угол 7 взвешенного предсказания расположены в угловой области 3.[000269] angleIdx represents the log2 value of the absolute value of the slope of the weighted prediction angle (eg, 0, or 1, or a greater constant), and subangleIdx represents the angular region in which the weighted prediction angle lies. In fig. 5B shows eight weighted prediction angles, where
[000270] Например, stepIdx можно определить по следующей формуле: stepIdx=(AwpIdx>>3)-3.[000270] For example, stepIdx can be determined using the following formula: stepIdx=(AwpIdx>>3)-3.
[000271] Например, modAngNum(индекс угла) может быть сначала определен на основе следующей формулы: modAngNum=AwpIdx% 8; затем angleIdx определяют на основе modAngNum следующим образом: если значение modAngNum равно 2, angleIdx = 7; если значение modAngNum равно 6, angleIdx = 8; в противном случае angularIdx = modAngNum % 2.[000271] For example, modAngNum(angle index) may first be determined based on the following formula: modAngNum=AwpIdx%8; angleIdx is then determined based on modAngNum as follows: if modAngNum is 2, angleIdx = 7; if modAngNum is 6, angleIdx = 8; otherwise angularIdx =
[000272] Например, subangleIdx можно определить по следующей формуле: subangleIdx=modAngNum>>1.[000272] For example, subangleIdx can be determined by the following formula: subangleIdx=modAngNum>>1.
[000273] Таким образом, после определения угла взвешенного предсказания текущего блока и позиции взвешенного предсказания текущего блока сторона кодера на основе угла взвешенного предсказания и позиции взвешенного предсказания может определить значение AwpIdx, как показано в таблице 2. Когда сторона кодера передает кодированный битовый поток стороне декодера, кодированный битовый поток может содержать значение AwpIdx. Таким образом, сторона декодера может получить значение AwpIdx, а затем получить stepIdx, angleIdx и subangleIdx на основе AwpIdx.[000273] Thus, after determining the weighted prediction angle of the current block and the weighted prediction position of the current block, the encoder side, based on the weighted prediction angle and the weighted prediction position, can determine the value of AwpIdx, as shown in Table 2. When the encoder side transmits the encoded bitstream to the decoder side , the encoded bitstream may contain the value AwpIdx. So the decoder side can get the AwpIdx value and then get the stepIdx, angleIdx and subangleIdx based on the AwpIdx.
[000274] Например, на основе angleIdx и subangleIdx один угол взвешенного предсказания может быть однозначно определен, как показано в таблице 3. Угол взвешенного предсказания также может быть определен другим способом, например, путем изменения номера раздела и т.д.[000274] For example, based on angleIdx and subangleIdx, one weighted prediction angle can be uniquely determined as shown in Table 3. The weighted prediction angle can also be determined in another way, such as by changing the section number, etc.
[000275] На этапе а2 на основе stepIdx, angleIdx и subangleIdx конфигурируют список опорных весовых значений ReferenceWeight[x], что означает установку опорных весовых значений для окружающих позиций за пределами текущего блока. На основе subangleIdx, ReferenceWeight[x] можно рассчитать в следующих нескольких случаях.[000275] In step a2, based on stepIdx, angleIdx and subangleIdx, a list of reference weights ReferenceWeight[x] is configured, which means setting reference weights for surrounding positions outside the current block. Based on subangleIdx, ReferenceWeight[x] can be calculated in the following few cases.
[000276] Случай 1: если значение subangleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания равен углу 0 взвешенного предсказания или углу 1 взвешенного предсказания, начальная позиция FirstPos преобразования весов может определяться по следующей формуле: FirstPos = (ValidLength_H>>1)-6+DeltaPos_H. Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального значения опорных весовых значений, равного 0, максимального значения опорных весовых значений, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, то есть приведенная выше формула может быть эквивалентна ReferenceWeights[x]=Clip3(минимум, максимум, a*(x-FirstPos)), где х может относиться к индексу окружающих позиций за пределами текущего блока, х находится в диапазоне от 0 до ValidLength_Н-1, а «а» представляет коэффициент преобразования весов.[000276] Case 1: If the value of subangleIdx is 0, that is, the weighted prediction angle is in the 0 angle region, for example, the weighted prediction angle is equal to the
[000277] В приведенной выше формуле ValidLength_H представляет количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subangleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Поэтому действительное количество обозначается как ValidLength_Н. Например, действительное количество ValidLength_Н может быть определено по следующей формуле: ValidLength_H=(N+(М>>angleIdx)) << 1, сдвиг влево на один бит обусловлен тем, что формула использует точность 1/2 пикселя. Если используется точность 1 пиксель, формула будет следующей: ValidLength_Н=(N+(М >> angleIdx)). Если принята точность 1/4 пикселя, формула будет следующей: ValidLength_Н=(N+(М >> angleIdx)) << 2. Если принята точность 2 пикселя, ValidLength_H=(N+(М >> angleIdx)) >> 1. Может использоваться другая пиксельная точность, и здесь не делается избыточных описаний. В последующих формулах операции, включающие >> 1, могут измениться для различной пиксельной точности.[000277] In the above formula, ValidLength_H represents the number of surrounding positions outside the current block (eg, valid quantity, also called valid length). When the value of subangleIdx is 0, the surrounding positions outside the current block, indicated by the weighted prediction angle, can be the surrounding positions in the left column. Therefore, the valid quantity is designated as ValidLength_Н. For example, the actual amount of ValidLength_H can be determined by the following formula: ValidLength_H=(N+(M>>angleIdx)) << 1, shifted to the left by one bit because the formula uses 1/2 pixel precision. If 1 pixel precision is used, the formula will be: ValidLength_N=(N+(M >> angleIdx)). If 1/4 pixel precision is accepted, the formula will be: ValidLength_H=(N+(M >> angleIdx)) << 2. If 2 pixel precision is accepted, ValidLength_H=(N+(M >> angleIdx)) >> 1. Can be used different pixel precision, and no redundant descriptions are made here. In subsequent formulas, the operations involving >> 1 may change for different pixel precisions.
[000278] В приведенной выше формуле DeltaPos_Н представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subangleIdx равно 0, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в левом столбце. Поэтому параметр изменения позиции обозначается как DeltaPos_Н. Например, DeltaPos_Н определяется по следующей формуле: DeltaPos_Н = stepIdx * ((ValidLength_H >> 3)-1).[000278] In the above formula, DeltaPos_H represents a position change parameter (eg, an intermediate parameter). When the value of subangleIdx is 0, the surrounding positions outside the current block, indicated by the weighted prediction angle, can be the surrounding positions in the left column. Therefore, the position change parameter is designated as DeltaPos_Н. For example, DeltaPos_H is determined by the following formula: DeltaPos_H = stepIdx * ((ValidLength_H >> 3)-1).
[000279] Случай 2: если значение subangleIdx равно 1, то есть угол взвешенного предсказания находится в угловой области 1, например, угол взвешенного предсказания является углом 2 взвешенного предсказания или углом 3 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_H >> 1) - 4 + DeltaPos_H - ((М << 1) >> angleIdx). Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального значения опорных весовых значений, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLength_H-1.[000279] Case 2: If the value of subangleIdx is 1, that is, the weighted prediction angle is in
[000280] В приведенной выше формуле ValidLength_Н и DeltaPos_Н могут быть отнесены к случаю 1 и здесь повторяться не будут.[000280] In the above formula, ValidLength_Н and DeltaPos_Н can be attributed to
[000281] Случай 3: если значение subangleIdx равно 2, то есть угол взвешенного предсказания находится в угловой области 2, например, угол взвешенного предсказания является углом 4 взвешенного предсказания или углом 5 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_W >> 1) - 4 + DeltaPos_W - ((N << 1) >> angleIdx). Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока, и х находится в диапазоне от 0 до ValidLength_W -1.[000281] Case 3: If the value of subangleIdx is 2, that is, the weighted prediction angle is in
[000282] В приведенной выше формуле ValidLength_W представляет количество окружающих позиций за пределами текущего блока (например, действительное количество, также называемое действительной длиной). Когда значение subangleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в одной верхней строке. Поэтому действительное количество обозначается как ValidLength_W. Например, действительное количество ValidLength_W может быть определено по следующей формуле: ValidLength_W=(М+(N >> angleIdx)) << 1.[000282] In the above formula, ValidLength_W represents the number of surrounding positions outside the current block (eg, valid quantity, also called valid length). When the value of subangleIdx is 2, the surrounding positions outside the current block, indicated by the weighted prediction angle, can be the surrounding positions in the same top row. Therefore, the valid quantity is designated as ValidLength_W. For example, the actual amount of ValidLength_W can be determined by the following formula: ValidLength_W=(M+(N >> angleIdx)) << 1.
[000283] В приведенной выше формуле DeltaPos_W представляет параметр изменения позиции (например, промежуточный параметр). Когда значение subangleIdx равно 2, окружающие позиции за пределами текущего блока, указанные углом взвешенного предсказания, могут быть окружающими позициями в верхней строке. Поэтому параметр изменения позиции обозначается как DeltaPos_W. Например, DeltaPos_W определяется по следующей формуле: DeltaPos_W = stepIdx * ((ValidLength_W>> 3)-1).[000283] In the above formula, DeltaPos_W represents a position change parameter (eg, an intermediate parameter). When the value of subangleIdx is 2, the surrounding positions outside the current block, indicated by the weighted prediction angle, can be the surrounding positions in the top row. Therefore, the position change parameter is designated as DeltaPos_W. For example, DeltaPos_W is determined by the following formula: DeltaPos_W = stepIdx * ((ValidLength_W>> 3)-1).
[000284] Случай 4: если значение subangleIdx равно 3, то есть угол взвешенного предсказания находится в угловой области 3, например, угол взвешенного предсказания представляет собой угол 6 взвешенного предсказания или угол 7 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos=(ValidLength_W>>1)-6 + DeltaPos_W. Затем можно определить опорные весовые значения окружающих позиций за пределами текущего блока по следующей формуле: ReferenceWeights[x]=Clip3(0, 8, x-FirstPos). Формула приведена для минимального опорного весового значения, равного 0, максимального опорного весового значения, равного 8, и коэффициента преобразования весов, равного 1, в качестве примера, х представляет индекс окружающих позиций за пределами текущего блока и находится в диапазоне от 0 до ValidLength_W-1.[000284] Case 4: If the value of subangleIdx is 3, that is, the weighted prediction angle is in
[000285] В приведенной выше формуле ValidLength_W и DeltaPos_W могут быть отнесены к случаю 3 и здесь повторяться не будут.[000285] In the above formula, ValidLength_W and DeltaPos_W can be assigned to
[000286] Таким образом, можно определить, какой случай следует использовать, на основе subangleIdx, например, в случаях 1 и 2 ValidLength_H и DeltaPos_H определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_Н и DeltaPos_Н, и затем опорные весовые значения устанавливают на основе FirstPos. В случаях 3 и 4 ValidLength_W и DeltaPos_W определяют на основе angleIdx и stepIdx, a FirstPos определяют на основе ValidLength_W и DeltaPos_W, и затем опорные весовые значения устанавливают на основе FirstPos.[000286] Thus, it is possible to determine which case should be used based on subangleIdx, for example, in
[000287] Формулы вышеперечисленных случаев отличаются следующим: когда в качестве начала координат используется левый верхний угол текущего блока, изменяется начальная позиция списка опорных весовых значений ReferenceWeights[x]. Например, на фиг. 6С показаны примеры угловой области 2 и угловой области 3. Когда принята точность 1/2 пикселя, начальная позиция списка опорных весовых значений ReferenceWeights[x] равна (height<<1)>>angleIdx, то есть смещение в формуле равно "-((N<<1) >> angularldx)". Угловая область 0 и угловая область 1 реализуются аналогичным образом, за исключением того, что смещение в формуле равно "- ((М << 1) >> angleIdx)", то есть высота изменяется на ширину.[000287] The formulas of the above cases differ in the following: when the upper left corner of the current block is used as the origin, the starting position of the list of reference weights ReferenceWeights[x] is changed. For example, in FIG. 6C shows examples of
[000288] На этапе а3 весовое значение яркости позиции пикселя получают на основе angleIdx и списка опорных весовых значений ReferenceWeight[x]. На основе subangleIdx весовое значение яркости позиции пикселя может быть определено в следующих нескольких случаях.[000288] In step a3, the brightness weight value of the pixel position is obtained based on angleIdx and the reference weight list ReferenceWeight[x]. Based on subangleIdx, the brightness weight value of the pixel position can be determined in the following several cases.
[000289] Случай 1: если значение subangleIdx равно 0, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=Reference Weights [(у << 1)+((х << 1) >> angleIdx)], где (у << 1)+((х << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(y << 1)+((х << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.[000289] Case 1: If the value of subangleIdx is 0, the brightness weight value of the pixel position (x, y) can be determined by the following formula: AwpWeightArrayY[x][y]=Reference Weights [(y << 1)+((x < < 1) >> angleIdx)], where (y << 1)+((x << 1) >> angleIdx) represents the surrounding position indicated by the pixel position (x, y), ReferenceWeights[(y << 1)+ ((x << 1) >> angleIdx)] represents the reference weight value of the surrounding position. The range of x values is from 0 to M-1, and the range of y values is from 0 to N-1.
[000290] Случай 2: если значение subangleIdx равно 1, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y] = Reference Weights [(у << 1) - ((х << 1) >> angleIdx)], где (у << 1) - ((х << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), Reference Weights [(у << 1) - ((х << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.[000290] Case 2: If the value of subangleIdx is 1, the brightness weight value of the pixel position (x, y) can be determined by the following formula: AwpWeightArrayY[x][y] = Reference Weights [(y << 1) - ((x < < 1) >> angleIdx)], where (y << 1) - ((x << 1) >> angleIdx) represents the surrounding position indicated by the pixel position (x, y), Reference Weights [(y << 1) - ((x << 1) >> angleIdx)] represents the reference weight value of the surrounding position. The range of x values is from 0 to M-1, and the range of y values is from 0 to N-1.
[000291] Случай 3: если значение subangleIdx равно 2, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y] = ReferenceWeights[(x << 1) - ((у << 1) >> angleIdx)], где (х << 1) - ((y << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(x << 1) - ((у << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.[000291] Case 3: If the value of subangleIdx is 2, the brightness weight value of the pixel position (x, y) can be determined by the following formula: AwpWeightArrayY[x][y] = ReferenceWeights[(x << 1) - ((y << 1) >> angleIdx)], where (x << 1) - ((y << 1) >> angleIdx) represents the surrounding position indicated by the pixel position (x, y), ReferenceWeights[(x << 1) - ( (y << 1) >> angleIdx)] represents the reference weight value of the surrounding position. The range of x values is from 0 to M-1, and the range of y values is from 0 to N-1.
[000292] Случай 4: если значение subangleIdx равно 3, весовое значение яркости позиции пикселя (х, у) можно определить по следующей формуле: AwpWeightArrayY[x][y]=ReferenceWeights[(x << 1)+((у << 1) >> angleIdx)], где (x << 1)+((у << 1) >> angleIdx) представляет окружающую позицию, указанную позицией пикселя (х, у), ReferenceWeights[(x << 1)+((у << 1) >> angleIdx)] представляет опорное весовое значение окружающей позиции. Диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.[000292] Case 4: If the value of subangleIdx is 3, the brightness weight value of the pixel position (x, y) can be determined by the following formula: AwpWeightArrayY[x][y]=ReferenceWeights[(x << 1)+((y << 1) >> angleIdx)], where (x << 1)+((y << 1) >> angleIdx) represents the surrounding position indicated by the pixel position (x, y), ReferenceWeights[(x << 1)+( (y << 1) >> angleIdx)] represents the reference weight value of the surrounding position. The range of x values is from 0 to M-1, and the range of y values is from 0 to N-1.
[000293] Вышеупомянутые этапы а2 и а3 могут быть объединены в один этап, то есть этап а2 (список опорных весовых значений ReferenceWeight[x] конфигурируют на основе stepIdx, angleIdx и subangleIdx, а конфигурирование списка опорных весов ReferenceWeight[x] означает установку опорных весовых значений для окружающих позиций за пределами текущего блока) и этап аЗ (весовое значение яркости позиции пикселя получают на основе angleIdx и списка опорных весовых значений ReferenceWeight[x]) могут быть объединены в этап получения весового значения яркости позиции пикселя на основе stepIdx, angleIdx и subangleIdx, то есть определение весового значения яркости позиции пикселя на основе значения координаты окружающей соответствующей позиции текущего блока и значения координаты начальной позиции преобразования весов текущего блока.[000293] The above steps a2 and a3 can be combined into one step, that is, step a2 (the reference weight list ReferenceWeight[x] is configured based on stepIdx, angleIdx and subangleIdx, and configuring the reference weight list ReferenceWeight[x] means setting the reference weights values for surrounding positions outside the current block) and step a3 (a pixel position brightness weight is obtained based on angleIdx and a list of reference weights ReferenceWeight[x]) can be combined into a step of obtaining a pixel position brightness weight based on stepIdx, angleIdx and subangleIdx , that is, determining the weight value of the brightness of a pixel position based on the coordinate value of the surrounding corresponding position of the current block and the coordinate value of the initial position of the transformation of the weights of the current block.
[000294] Например, в случае 1, если значение subangleIdx равно 0, то есть угол взвешенного предсказания находится в угловой области 0, например, угол взвешенного предсказания является углом 0 взвешенного предсказания или углом 1 взвешенного предсказания, начальная позиция FirstPos преобразования весов может быть определена по следующей формуле: FirstPos = (ValidLength_Н >> 1) - 6 + DeltaPos_Н. Затем весовое значение яркости позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayY[x][y] = Clip3(0, 8, (у << 1) + ((х << 1) >> angleIdx)-FirstPos), где (у << 1)+((х << 1) >> angleIdx) представляет окружающую соответствующую позицию, указанную позицией пикселя (х, у). Другие случаи аналогичны.[000294] For example, in
[000295] На этапе а4 получают весовое значение цветности для позиции пикселя на основе весового значения яркости для позиции пикселя, а весовое значение яркости для позиции пикселя и весовое значение цветности для позиции пикселя могут формировать целевое весовое значение позиции пикселя.[000295] In step a4, a chroma weight value for a pixel position is obtained based on a luminance weight value for a pixel position, and a luminance weight value for a pixel position and a chroma weight value for a pixel position may form a target pixel position weight value.
[000296] Например, если используется формат разрешения цветности 4:2:0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y]=AwpWeightArrayY[x << 1][у << 1]. В другом примере, если используется формат разрешения цветности 4:4:4, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y] = AwpWeightArrayY[x] [у]. Диапазон значений х составляет от 0 до М/2-1, а диапазон значений у составляет от 0 до N/2-1.[000296] For example, if a 4:2:0 chroma resolution format is used, the chroma weight value of the pixel position (x, y) is determined by the following formula: AwpWeightArrayUV[x][y]=AwpWeightArrayY[x << 1][y << 1]. In another example, if a 4:4:4 chroma resolution format is used, the chroma weight value of the pixel position (x,y) is determined by the following formula: AwpWeightArrayUV[x][y] = AwpWeightArrayY[x][y]. The range of x values is from 0 to M/2-1, and the range of y values is from 0 to N/2-1.
[000297] Этап а4 может быть реализован другим способом: вместо получения весового значения цветности на основе весового значения яркости весовое значение цветности для позиции пикселя получают на основе angleIdx и списка опорных весовых значений ReferenceWeight[x]. Например, если используется формат разрешения цветности 4:2:0, весовое значение цветности для позиции пикселя может быть получено на основе angleIdx и списка опорных весовых значений ReferenceWeight[x].[000297] Step a4 can be implemented in another way: instead of obtaining a chroma weight value based on a luma weight value, a chroma weight value for a pixel position is obtained based on angleIdx and a list of reference weights ReferenceWeight[x]. For example, if a 4:2:0 chroma resolution format is used, the chroma weight for a pixel position can be derived from angleIdx and a list of reference weights ReferenceWeight[x].
[000298] Например, если значение subangleIdx равно 0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y] = Reference Weights [(у << 2)+((х << 2) >> angleIdx)].[000298] For example, if the value of subangleIdx is 0, the chroma weight value of the pixel position (x, y) is determined by the following formula: AwpWeightArrayUV[x][y] = Reference Weights [(y << 2)+((x << 2 ) >> angleIdx)].
[000299] Например, если значение subangleIdx равно 1, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = Reference Weights [(у << 2) - ((х << 2) >> angleIdx)].[000299] For example, if the value of subangleIdx is 1, the chroma weight value of the pixel position (x, y) is determined by the following formula: AwpWeightArrayUV [x][y] = Reference Weights [(y << 2) - ((x << 2 ) >> angleIdx)].
[000300] Например, если значение subangleIdx равно 2, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = ReferenceWeights[(x << 2) - ((у << 2) >> angleIdx)].[000300] For example, if the value of subangleIdx is 2, the chroma weight value of the pixel position (x, y) is determined by the following formula: AwpWeightArrayUV [x][y] = ReferenceWeights[(x << 2) - ((y << 2) >> angleIdx)].
[000301] Например, если значение subangleIdx равно 3, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV [х][у] = Reference Weights [(х << 2) + ((у << 2) >> angleIdx)].[000301] For example, if the value of subangleIdx is 3, the chroma weight value of the pixel position (x, y) is determined by the following formula: AwpWeightArrayUV [x][y] = Reference Weights [(x << 2) + ((y << 2 ) >> angleIdx)].
[000302] В приведенных выше формулах диапазон значений х составляет от 0 до М-1, а диапазон значений у составляет от 0 до N-1.[000302] In the above formulas, the range of x values is from 0 to M-1, and the range of y values is from 0 to N-1.
[000303] На этапах а3 и а4 формулы в указанных случаях отличаются следующим. На фиг. 6D показаны примеры угловой области 2 и угловой области 3. Когда левый верхний угол текущего блока принимается за начало координат, формула вычисления окружающей соответствующей позиции (х, у) в угловой области 2 может быть х-у >> angleIdx, а формула вычисления окружающей соответствующей позиции (х, у) в угловой области 3 может быть х+у >> angleIdx. Когда принята точность 1/2 пикселя, формула вычисления окружающей соответствующей позиции (х, у) в угловой области 2 может быть (х << 1) - ((у << 1) >> angleIdx), и формула вычисления окружающей соответствующей позиции (х, у) в угловой области 3 может быть (х << 1)+((у << 1) >> angleIdx). Угловая область 0 и угловая область 1 могут быть реализованы аналогичным образом, за исключением того, что позиции х, у меняются местами.[000303] In steps a3 and a4, the formulas in these cases differ as follows. In fig. 6D shows examples of
[000304] Вариант 9 осуществления изобретения. В описанных выше вариантах 1-3 осуществления изобретения первое значение предсказания позиции пикселя определяют на основе первого режима предсказания, а второе значение предсказания позиции пикселя определяют на основе второго режима предсказания.[000304] Embodiment 9 of the invention. In the above-described
[000305] В этом варианте осуществления изобретения описание приведено для первого режима предсказания, являющегося режимом внешнего предсказания, и второго режима предсказания, являющегося режимом внешнего предсказания, в качестве примера.[000305] In this embodiment, description is given for the first prediction mode being an inter prediction mode and the second prediction mode being an inter prediction mode as an example.
[000306] Первый режим предсказания представляет собой режим внешнего предсказания, второй режим предсказания представляет собой режим внешнего предсказания, и создается список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере две информации о возможном движении. Одну информацию о возможном движении выбирают из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока, а другую информацию о возможном движении выбирают из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока. Для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определяют второе значение предсказания позиции пикселя на основе второй целевой информации о движении.[000306] The first prediction mode is an inter-prediction mode, the second prediction mode is an inter-prediction mode, and a motion compensation candidate list is generated, wherein the motion compensation candidate list includes at least two possible motion information. One possible motion information is selected from the motion compensation candidate list as the first motion target information of the current block, and another possible motion information is selected from the motion compensation candidate list as the second motion target information of the current block. For each pixel position of the current block, a first pixel position prediction value is determined based on the first motion target information, and a second pixel position prediction value is determined based on the second motion target information.
[000307] Например, и сторона кодера, и сторона декодера могут создавать список кандидатов для компенсации движения, и список кандидатов для компенсации движения на стороне кодера может быть таким же, как список кандидатов для компенсации движения на стороне декодера, что не ограничивается здесь.[000307] For example, both the encoder side and the decoder side can create a motion compensation candidate list, and the encoder side motion compensation candidate list can be the same as the decoder side motion compensation candidate list, which is not limited here.
[000308] Например, все информации о возможном движении в списке кандидатов для компенсации движения представляют собой информацию о движении с одной гипотезой, например, информация о возможном движении в списке кандидатов для компенсации движения представляет собой информацию об однонаправленном движении, а не информацию о двунаправленном движении. Поскольку все информации о возможном движении представляют собой информацию о движении с одной гипотезой, список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения.[000308] For example, all the possible motion information in the motion compensation candidate list is single-hypothesis motion information, for example, the possible motion information in the motion compensation candidate list is unidirectional motion information rather than bidirectional motion information . Since all possible motion information is single-hypothesis motion information, the motion compensation candidate list may be a unidirectional motion compensation candidate list.
[000309] Например, когда создается список кандидатов для компенсации движения, сначала может быть добавлена пространственная информация о движении (например, один или более пространственных векторов движения), а затем может быть добавлена временная информация о движении (например, один или более временных векторов движения); и/или, когда создается список кандидатов для компенсации движения, сначала может быть добавлена информация об однонаправленном движении (например, один или более однонаправленных векторов движения), а затем может быть добавлена информация о двунаправленном движении (например, один или более двунаправленных векторов движения), что здесь не ограничивается.[000309] For example, when a candidate list for motion compensation is created, spatial motion information (e.g., one or more spatial motion vectors) may be added first, and then temporal motion information (e.g., one or more temporal motion vectors) may be added ); and/or, when a motion compensation candidate list is created, unidirectional motion information (e.g., one or more unidirectional motion vectors) may be added first, and then bidirectional motion information may be added (e.g., one or more bidirectional motion vectors) , which is not limited here.
[000310] Например, когда информация о двунаправленном движении добавляется в список кандидатов для компенсации движения, информация о двунаправленном движении сначала разделяется на две информации об однонаправленном движении, и две разделенные информации об однонаправленном движении добавляются в список кандидатов для компенсации движения по порядку. Или же, когда информация о двунаправленном движении добавляется в список кандидатов для компенсации движения, информация о двунаправленном движении сначала сокращается до одной информации об однонаправленном движении, а затем эта одна информация об однонаправленном движении добавляется в список кандидатов для компенсации движения. Например, сокращение информации о двунаправленном движении до одной информации об однонаправленном движении включает: прямое получение информации об однонаправленном движении из List0 (список 0 опорных изображений); или прямое получение информации об однонаправленном движении из List1 (список 1 опорных изображений); или определение получения информации об однонаправленном движении из List0 или List1 на основе порядка добавления.[000310] For example, when bidirectional motion information is added to the motion compensation candidate list, the bidirectional motion information is first divided into two unidirectional motion information, and the two separated unidirectional motion information is added to the motion compensation candidate list in order. Or, when bidirectional motion information is added to the motion compensation candidate list, the bidirectional motion information is first reduced to one unidirectional motion information, and then this one unidirectional motion information is added to the motion compensation candidate list. For example, reducing the bidirectional motion information to one unidirectional motion information includes: directly obtaining the unidirectional motion information from List0 (reference picture list 0); or directly obtaining unidirectional motion information from List1 (reference picture list 1); or determining to obtain unidirectional movement information from List0 or List1 based on the order of addition.
[000311] Выше приведены только примеры списка кандидатов для компенсации движения, и информация о движении в списке кандидатов для компенсации движения здесь не ограничена.[000311] The above are only examples of the motion compensation candidate list, and the motion information in the motion compensation candidate list is not limited here.
[000312] Сторона кодера может выбрать, на основе RDO, одну информацию о возможном движении из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока и выбрать другую информацию о возможном движении из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока, при этом первая целевая информация о движении отличается от второй целевой информации о движении, что не ограничивается здесь.[000312] The encoder side may select, based on RDO, one possible motion information from the motion compensation candidate list as the first target motion information of the current block, and select other possible motion information from the motion compensation candidate list as the second target information about the movement of the current block, wherein the first target movement information is different from the second target movement information, which is not limited here.
[000313] В возможной реализации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может переносить информацию а указания и информацию b указания. Информация а указания указывает значение 1 индекса первой целевой информации о движении текущего блока, и значение индекса 1 представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является первой целевой информацией о движении. Информация b указания указывает значение 2 индекса второй целевой информации о движении текущего блока, и значение 2 индекса представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является второй целевой информацией о движении. Например, значение 1 индекса и значение 2 индекса могут быть различными.[000313] In a possible implementation, when the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may carry indication information a and indication information b. The indication information a indicates an
[000314] После приема кодированного битового потока сторона декодера может проанализировать информацию а указания и информацию b указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации b указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока.[000314] After receiving the encoded bitstream, the decoder side can analyze the indication information a and the indication information b from the encoded bitstream. Based on the indication information a, the decoder side selects the possible motion information corresponding to the
[000315] В другой возможной реализации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может переносить информацию а указания и информацию с указания. Информация а указания указывает значение 1 индекса первой целевой информации о движении текущего блока, и значение 1 индекса представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является первой целевой информацией о движении. Информация с указания указывает разность между значением 1 индекса и значением 2 индекса, при этом значение индекса 2 представляет, какая информация о возможном движении в списке кандидатов для компенсации движения является второй целевой информацией о движении. Например, значение 1 индекса и значение 2 индекса могут быть различными.[000315] In another possible implementation, when the encoder side transmits the encoded bitstream to the decoder side, the encoded bitstream may carry indication information and indication information. The indication information a indicates the
[000316] После приема кодированного битового потока сторона декодера может проанализировать информацию а указания и информацию с указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации с указания сторона декодера сначала определяет значение 2 индекса на основе значения 1 индекса и разности между значением 1 индекса и значением 2 индекса, а затем выбирает информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока.[000316] After receiving the encoded bitstream, the decoder side can analyze the indication information a and the indication information c from the encoded bitstream. Based on the indication information a, the decoder side selects the possible motion information corresponding to the
[000317] Процесс, в котором сторона кодера / сторона декодера определяет первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определяет второе значение предсказания позиции пикселя на основе второй целевой информации о движении, может относиться к процессу внешнего предсказания и не будет здесь повторяться.[000317] The process in which the encoder side/decoder side determines a first pixel position prediction value based on the first motion target information and determines a second pixel position prediction value based on the second motion target information may be related to an inter prediction process and will not be included here. repeat.
[000318] Например, когда первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, первое значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Например, начальное значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, а затем начальное значение предсказания умножают на заданный коэффициент для получения корректирующего значения предсказания. Если корректирующее значение предсказания больше, чем максимальное значение предсказания, максимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; если корректирующее значение предсказания меньше минимального значения предсказания, минимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; и, если корректирующее значение предсказания не меньше минимального значения предсказания или не больше максимального значения предсказания, корректирующее значение предсказания принимают в качестве первого значения предсказания текущего блока. Описанный выше способ является только иллюстративным и не ограничивается здесь.[000318] For example, when the first pixel position prediction value is determined based on the first motion target information, the first pixel position prediction value may be obtained using an external weighted prediction mode. For example, an initial pixel position prediction value is determined based on the first motion target information, and then the initial prediction value is multiplied by a predetermined factor to obtain a correction prediction value. If the correction prediction value is greater than the maximum prediction value, the maximum prediction value is taken as the first prediction value of the current block; if the correction prediction value is smaller than the minimum prediction value, the minimum prediction value is taken as the first prediction value of the current block; and, if the prediction correction value is not less than the minimum prediction value or not greater than the maximum prediction value, the prediction correction value is taken as the first prediction value of the current block. The method described above is only illustrative and is not limited here.
[000319] Аналогично, когда второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении, второе значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Конкретная реализация может быть отнесена к приведенному выше примеру и не будет здесь повторяться.[000319] Similarly, when the second pixel position prediction value is determined based on the second motion target information, the second pixel position prediction value can be obtained using an external weighted prediction mode. The specific implementation can be referred to as the example above and will not be repeated here.
[000320] В приведенных выше случаях информация указания информации предсказания первого режима предсказания и информация указания информации предсказания второго режима предсказания могут быть взаимозаменяемыми при условии, что сторона кодера и сторона декодера являются согласованными. Обмен информацией указания не влияет на процесс анализа, то есть зависимость от анализа отсутствует. В случае одного и того же списка кандидатов режимов предсказания информация указания информации предсказания первого режима предсказания не может совпадать с информацией указания информации предсказания второго режима предсказания. Предполагается, что кодируются два индекса, где значение индекса а равно 1, а значение индекса b равно 3, когда значение индекса а кодируется первым, значение индекса b может кодироваться как 2(3-1); когда значение индекса b кодируется первым, значение индекса b должно кодироваться как 3. Одним словом, информация указания кодирования сначала с меньшим значением индекса может уменьшить служебные данные кодирования для кодирования большего значения индекса. Согласно способу создания списка кандидатов режима предсказания, первый режим предсказания, скорее всего, поступает с левой стороны, и на основе этого предшествующего опыта может быть выполнена корректировка на стороне кодера и стороне декодера, и может сначала кодироваться информация указания информации предсказания в области, смежной с левой стороной.[000320] In the above cases, the prediction information indicating information of the first prediction mode and the prediction information indicating information of the second prediction mode can be interchangeable provided that the encoder side and the decoder side are consistent. The exchange of guidance information does not affect the analysis process, that is, there is no dependency on the analysis. In the case of the same prediction mode candidate list, the prediction information indicating information of the first prediction mode cannot be the same as the prediction information indicating information of the second prediction mode. It is assumed that two indices are encoded, where the value of index a is 1 and the value of index b is 3, when the value of index a is encoded first, the value of index b can be encoded as 2(3-1); when the index value b is encoded first, the index value b must be encoded as 3. In a word, the encoding indication information with a smaller index value first can reduce the encoding overhead for encoding a larger index value. According to the method of creating a prediction mode candidate list, the first prediction mode is likely to come from the left side, and based on this previous experience, adjustment can be made on the encoder side and the decoder side, and the prediction information indication information in the region adjacent to the left side.
[000321] В приведенном выше случае список кандидатов режима предсказания может быть списком кандидатов для компенсации движения, информация предсказания первого режима предсказания может быть первой целевой информацией о движении, а информация предсказания второго режима предсказания может быть второй целевой информацией о движении. В кодированном битовом потоке сначала кодируется информация указания первой целевой информации о движении, такая как значение а индекса, а затем кодируется информация указания второй целевой информации о движении, такая как значение b индекса. В качестве альтернативы, сначала кодируется информация указания второй целевой информации о движении, такая как значение b индекса, а затем кодируется информация указания первой целевой информации о движении, такая как значение а индекса. Например, если значение а индекса равно 1, а значение b индекса равно 3, значение а индекса кодируется перед значением b индекса. В другом примере, если значение b индекса равно 1, а значение а индекса равно 3, значение b индекса кодируется перед значением а индекса.[000321] In the above case, the prediction mode candidate list may be a candidate list for motion compensation, the prediction information of the first prediction mode may be the first motion target information, and the prediction information of the second prediction mode may be the second motion target information. In the encoded bit stream, the first target motion information indication information such as the index value a is encoded first, and then the second target motion information indication information such as the index value b is encoded. Alternatively, the second target motion information indication information such as the index value b is encoded first, and then the first motion target information indication information such as the index value a is encoded. For example, if the index value a is 1 and the index b value is 3, the index value a is encoded before the index value b. In another example, if the index value b is 1 and the index value a is 3, the index value b is encoded before the index value a.
[000322] Вариант 10 осуществления изобретения. Для варианта 9 осуществления изобретения должен быть создан список кандидатов для компенсации движения, который может быть списком кандидатов для компенсации однонаправленного движения. Фиг. 7 представляет собой схематическое представление текущего блока и соседних блоков. В процессе построения списка кандидатов для компенсации движения на основе порядка F, G, С, А, В и D, экземпляры информации об однонаправленном движении добавляются в список кандидатов для компенсации движения в порядке приоритета List0, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей. Порядок F, G, С, А, В и D является только примером, и также может быть принят другой порядок, который не ограничивается в настоящем описании.[000322] Embodiment 10 of the invention. For Embodiment 9 of the invention, a motion compensation candidate list must be created, which may be a unidirectional motion compensation candidate list. Fig. 7 is a schematic representation of the current block and neighboring blocks. In the process of constructing a motion compensation candidate list based on the order of F, G, C, A, B and D, instances of unidirectional motion information are added to the motion compensation candidate list in priority order List0, and the addition process should check for duplicates. records. The order of F, G, C, A, B and D is only an example, and other order may also be adopted which is not limited herein.
[000323] Если список кандидатов для компенсации движения не полон, оставшаяся информация о двунаправленном движении далее разбивается на информацию об однонаправленном движении и добавляется в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000323] If the motion compensation candidate list is not complete, the remaining bidirectional motion information is further split into unidirectional motion information and added to the motion compensation candidate list in List0 order as priority, and a check for duplicate entries must be performed during the adding process .
[000324] Наконец, если список кандидатов для компенсации движения не полон, временная информация о движении далее разбивается на информацию об однонаправленном движении и добавляется в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000324] Finally, if the motion compensation candidate list is not complete, the temporary motion information is further split into unidirectional motion information and added to the motion compensation candidate list in the order List0 as a priority, and a check should be made for duplicate entries in the process additions.
[000325] Стратегия List0 в качестве приоритета следующая: если имеется информация о движении List0, информация о движении List0 добавляется в список кандидатов для компенсации движения, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей. Если имеется информация о движении из List1, информация о движении из List1 добавляется в список кандидатов для компенсации движения, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей.[000325] The strategy of List0 as a priority is as follows: if there is movement information of List0, the movement information of List0 is added to the candidate list for motion compensation, and a check for duplicate entries must be performed during the adding process. If there is motion information from List1, the motion information from List1 is added to the candidate list for motion compensation, and the addition process should check for duplicate entries.
[000326] Процесс создания списка кандидатов для компенсации движения описан ниже в сочетании с несколькими конкретными сценариями применения.[000326] The process of creating a candidate list for motion compensation is described below in conjunction with several specific application scenarios.
[000327] Сценарий 1 применения: на этапе 1, как показано на фиг. 7, F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е и основаны на порядке F, G, С, А, В и D (этот порядок может быть изменен, например, может использоваться порядок D, В, А, С, G и F, или может использоваться другой порядок, кроме того, может быть удален один или более соседних блоков предсказания, например, используются только F, G, С, А и D), связанная с ними информация о движении (если есть) добавляется в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока обнаружение всей информации о движении не будет завершено или длина списка кандидатов для компенсации движения не достигнет Х-1.[000327] Application Scenario 1: In
[000328] На этапе 2, поскольку длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении, указывающую на List0 (если есть) в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей.[000328] In
[000329] На этапе 3, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении, указывающую на List1 (если есть) в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000329] In
[000330] На этапе 4, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет X.[000330] In
[000331] В приведенном выше варианте осуществления изобретения X может быть любым положительным целым числом, например, значение X может быть равно 4 или 5 и т.п.[000331] In the above embodiment, X may be any positive integer, for example, the value of X may be 4 or 5, etc.
[000332] Сценарий 2 применения: на этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и в зависимости от порядка F, G, С, А, В и D их соответствующую информацию о движении (если есть) добавляют в список кандидатов для компенсации движения в порядке списка List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока обнаружение всей информации о движении не будет завершено или пока длина списка кандидатов для компенсации движения не достигнет X.[000332] Application scenario 2: in
[000333] На этапе 2, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении, указывающую на List0 (если есть) в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000333] In
[000334] На этапе 3, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении, указывающую на List1 (если есть) в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000334] In
[000335] На этапе 4, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет X.[000335] In
[000336] В приведенном выше варианте осуществления изобретения X может быть любым положительным целым числом, например, значение X может быть равно 4 или 5 и т.п.[000336] In the above embodiment, X may be any positive integer, for example, the value of X may be 4 or 5, etc.
[000337] Например, сценарий 1 применения отличается от сценария 2 применения тем, что сценарий 1 применения имеет по меньшей мере одну зарезервированную позицию для временной информации о движении, то есть на этапе 1 длина списка кандидатов для компенсации движения достигает максимум Х-1, а не X.[000337] For example,
[000338] Сценарий 3 применения: на этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и на основе порядка F, G, С, А, В и D информацию об однонаправленном движении (если есть) добавляют в список кандидатов для компенсации движения по очереди, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления до тех пор, пока не будет завершено обнаружение всей информации об однонаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет Х-1.[000338] Application scenario 3: in
[000339] На этапе 2, если длина списка кандидатов для компенсации движения меньше Х-1, информацию о двунаправленном движении (если есть) F, G, С, А, В и D добавляют в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей во время процесса добавления, пока не будет завершено обнаружение всей информации о двунаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет Х-1.[000339] In
[000340] На этапе 3, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении (если есть), указывающую на List0 в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000340] In
[000341] На этапе 4, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении (если есть), указывающую на List1 в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000341] In
[000342] На этапе 5, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет X.[000342] In
[000343] В приведенном выше варианте осуществления изобретения X может быть любым положительным целым числом, например, значение X может быть равно 4 или 5 и т.п.[000343] In the above embodiment, X may be any positive integer, for example, the value of X may be 4 or 5, etc.
[000344] В возможной реализации сценарий 3 применения может быть описан в другой форме:[000344] In a possible implementation,
[000345] На этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е, и в зависимости от порядка F, G, С, А, В и D определяют доступность F, G, С, А, В и D: если присутствует F и принят режим внешнего предсказания, может быть определено, что F доступен; в противном случае F определяют как недоступный. Если присутствует G и принят режим внешнего предсказания, может быть определено, что G доступен; в противном случае G определяют как недоступный. Если присутствует С и принят режим внешнего предсказания, может быть определено, что С доступен; в противном случае С определяют как недоступный. Если присутствует А и принят режим внешнего предсказания, может быть определено, что А доступен; в противном случае А определяют как недоступный. Если присутствует В и принят режим внешнего предсказания, может быть определено, что В доступен; в противном случае В определяют как недоступный. Если присутствует D и принят режим внешнего предсказания, может быть определено, что D доступен; в противном случае D определяют как недоступный.[000345] In
[000346] На этапе 2, в соответствии с порядком F, G, С, А, В и D, доступную информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения по очереди, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока длина списка кандидатов для компенсации движения не достигнет Х-1 или пока не завершится обход.[000346] In
[000347] На этапе 3, если длина списка кандидатов для компенсации движения меньше Х-1, доступную информацию о двунаправленном движении разделяют на информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1, которые затем добавляют в список кандидатов для компенсации движения по очереди и подвергают проверке на наличие повторяющихся записей до тех пор, пока длина списка кандидатов для компенсации движения не станет Х-1 или не будет завершен обход.[000347] In
[000348] На этапе 4 полученную временную информацию о двунаправленном движении разделяют на информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1; проверку на наличие повторяющихся записей выполняют сначала для информации об однонаправленном движении, и, если информация об однонаправленном движении не повторяется, информацию об однонаправленном движении добавляют в список кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет равной X или не будет завершен обход.[000348] In
[000349] На этапе 5, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет X.[000349] In
[000350] В приведенном выше варианте осуществления изобретения X может быть любым положительным целым числом, например, значение X может быть равно 4 или 5 и т.п.[000350] In the above embodiment, X may be any positive integer, for example, the value of X may be 4 or 5, etc.
[000351] Сценарий 4 применения: на этапе 1 F, G, С, А, В и D являются соседними блоками предсказания текущего блока Е и в зависимости от порядка F, G, С, А, В и D информацию об однонаправленном движении (если есть) добавляют в список кандидатов для компенсации движения по очереди, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока не будет завершено обнаружение всей информации об однонаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет X.[000351] Application scenario 4: in
[000352] На этапе 2, если длина списка кандидатов для компенсации движения меньше X, информацию о двунаправленном движении (если есть) F, G, С, А, В и D добавляют в список кандидатов для компенсации движения в порядке List0 в качестве приоритета, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления, пока не будет завершено обнаружение всей информации о двунаправленном движении или пока длина списка кандидатов для компенсации движения не достигнет X.[000352] In
[000353] На этапе 3, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении (если есть), указывающую на List0 в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000353] In
[000354] На этапе 4, если длина списка кандидатов для компенсации движения меньше X, информацию об однонаправленном движении (если есть), указывающую на List1 в полученной временной информации о движении, добавляют в список кандидатов для компенсации движения, и должна выполняться проверка на наличие повторяющихся записей в процессе добавления.[000354] In
[000355] На этапе 5, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения до тех пор, пока длина списка кандидатов для компенсации движения не станет X.[000355] In
[000356] В приведенном выше варианте осуществления изобретения X может быть любым положительным целым числом, например, значение X может быть равно 4 или 5 и т.п.[000356] In the above embodiment, X may be any positive integer, for example, the value of X may be 4 or 5, etc.
[000357] Например, сценарий 3 применения отличается от сценария 4 применения тем, что сценарий 3 применения имеет по меньшей мере одну зарезервированную позицию для временной информации о движении, то есть на этапе 1 длина списка кандидатов для компенсации движения достигает максимум Х-1, но не достигает X.[000357] For example,
[000358] В приведенных выше сценариях 1-4 применения схема получения временной информации о движении относится к смежным областям техники, например, временная информация о движении текущего блока может быть получена через совмещенный блок совмещенного изображения, что не ограничивается здесь.[000358] In the
[000359] Сценарий 5 применения: в сценариях 1-4 применения, если длина списка кандидатов для компенсации движения меньше X, выполняют повторяющуюся операцию заполнения для последней информации об однонаправленном движении в списке кандидатов для компенсации движения. В сценарии 5 применения повторяющуюся операцию заполнения больше не выполняют для последней информации об однонаправленном движении, а операцию заполнения выполняют путем вычисления. Например, с любой действительной информацией о движении (х, у, ref_idx, ListX) в списке кандидатов для компенсации движения в качестве основы, ref_idx и ListX представляют опорный индекс и опорный список соответственно, которые в совокупности называются информацией опорного изображения, и можно добавить по меньшей мере одну информацию о возможном движении следующим образом:[000359] Application scenario 5: In
[000360] (х+а, y+b, ref_idx, ListX), где а и b могут быть любым целым числом; (k1 * х, k1 * у, ref_idx new1, ListX), где k1 - любое положительное целое число, отличное от нуля, то есть для вектора движения выполняют операцию масштабирования; (k2 * х, k2 * у, ref_idx_new2, ListY), где k2 - любое положительное целое число, отличное от нуля, то есть для вектора движения выполняют операцию масштабирования. Кроме того, также может быть выполнено добавление нулевых векторов движения, то есть информация о возможном движении может быть (0, 0, ref_idx3, ListZ). Для вышеуказанной информации о возможном движении, когда информацию о возможном движении добавляют в список кандидатов для компенсации движения, может выполняться или не выполняться проверка на наличие повторяющихся записей.[000360] (x+a, y+b, ref_idx, ListX), where a and b can be any integer; (k1 * x, k1 * y, ref_idx new1, ListX), where k1 is any positive integer non-zero, that is, a scaling operation is performed for the motion vector; (k2 * x, k2 * y, ref_idx_new2, ListY), where k2 is any positive integer non-zero, that is, a scaling operation is performed on the motion vector. In addition, the addition of zero motion vectors can also be performed, that is, the possible motion information can be (0, 0, ref_idx3, ListZ). For the above possible motion information, when the possible motion information is added to the candidate list for motion compensation, a check for duplicate entries may or may not be performed.
[000361] Сценарий 6 применения: в сценариях 1-4 применения длина списка кандидатов для компенсации движения равна X. Для варианта 9 осуществления изобретения две информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве целевой информации о движении текущего блока. Следовательно, длина списка кандидатов для компенсации движения может быть от 2 до Н, где значение Н может быть сконфигурировано на основе опыта, например, сконфигурировано как 4 или 5 и т.п. На основе этого, сторона кодера может установить длину списка кандидатов для компенсации движения (например, длину списка кандидатов для компенсации движения в режиме AWP или длину списка кандидатов для компенсации движения в расширенном угловом режиме взвешенного предсказания (EAWP) через синтаксис уровня последовательности. Например, awpmaxcandnum используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное awp_max_cand_num, равно «а», которое находится в диапазоне от 2 до Н, сторона декодера может определить длину списка кандидатов для компенсации движения на основе awp_max_cand_num, например, длина X равна «а». Опционально, awp_max_cand_num_minus2 используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное awp_max_cand_num_minus2, равно «а», которое находится в диапазоне от 0 до (Н-2), сторона декодера может определить длину списка кандидатов для компенсации движения на основе awp_max_cand_num_minus2, например, длина X равна а+2. Опционально, сторона кодера может установить длину списка кандидатов для компенсации движения посредством синтаксиса уровня изображения, например, длина списка кандидатов для компенсации движения указывается на основе slice_awp_max_cand_num. Если значение, указанное slice_awp_max_cand_num, равно «а», которое находится в диапазоне от 2 до Н, сторона декодера может определить длину списка кандидатов для компенсации движения на основе slice_awp_max_cand_num, например, длина X равна «а». Опционально, slice_awp_max_cand_num_minus2 используется для указания длины списка кандидатов для компенсации движения. Если значение, указанное с помощью slice_awp_max_cand_num_minus2, равно «а» и находится в диапазоне от 0 до (Н-2), сторона декодера может определить длину списка кандидатов для компенсации движения на основе slice_awp_max_cand_num_minus2, например, длина X равна а+2.[000361] Application Scenario 6: In
[000362] Сценарий 7 применения: в сценариях 14 применения может быть создан список кандидатов для компенсации движения. В сценарии 7 применения список кандидатов для компенсации движения обозначается как AwpUniArray, а информация о движении в AwpUniArray упоминается как информация о возможном движении. Для варианта 9 осуществления изобретения информация о возможном движении может быть выбрана из AwpUniArray в качестве целевой информации о движении текущего блока, а затем определяют значение предсказания позиции пикселя на основе целевой информации о движении.[000362] Application scenario 7: In application scenarios 14, a candidate list for motion compensation can be created. In application scenario 7, the candidate list for motion compensation is referred to as AwpUniArray, and the motion information in AwpUniArray is referred to as possible motion information. For Embodiment 9, the possible motion information may be selected from AwpUniArray as the target motion information of the current block, and then a pixel position prediction value is determined based on the target motion information.
[000363] Для варианта 9 осуществления изобретения две информации о возможном движении выбирают из AwpUniArray в качестве первой целевой информации о движении и второй целевой информации о движении текущего блока. На основе этого, сторона декодера может проанализировать AwpCandIdx0 и AwpCandIdx1 из кодированного битового потока и назначить (AwpCandIdx0+1)-ю информацию о движении в AwpUniArray для mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1, а также назначить (AwpCandIdx1+1)-ю информацию о движении в AwpUniArray для mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1. (AwpCandIdx0+1)-я информация о движении в AwpUniArray также может быть назначена mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1, а (AwpCandIdx1+1)-я информация о движении в AwpUniArray может быть назначена mvAwp0L0, mvAwp0LxLd0, RefIdxAwp0L0 и RefIdxAwp0L1, что здесь не ограничивается.[000363] For Embodiment 9, two possible motion information is selected from AwpUniArray as the first target motion information and the second target motion information of the current block. Based on this, the decoder side can parse AwpCandIdx0 and AwpCandIdx1 from the encoded bitstream and assign (AwpCandIdx0+1)-th motion information in AwpUniArray for mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 and RefIdxAwp0L1, and assign (AwpCandIdx1+1) information about movement in AwpUniArray for mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 and RefIdxAwp1L1. The (AwpCandIdx0+1)th motion information in AwpUniArray can also be assigned to mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 and RefIdxAwp1L1, and the (AwpCandIdx1+1)th motion information in AwpUniArray can be assigned to mvAwp0L0, 0, RefIdxAwp0L0 and RefIdxAwp0L1, which is here not limited.
[000364] Например, AwpCandIdx0 представляет значение индекса первой целевой информации о движении. Следовательно, (AwpCandIdx0+1)-я информация о движении в AwpUniArray может быть назначена первой целевой информации о движении. Например, если значение AwpCandIdx0 равно 0, первая информация о движении в AwpUniArray назначается первой целевой информации о движении; если значение AwpCandIdx0 равно 1, вторая информация о движении в AwpUniArray назначается первой целевой информации о движении и т.д.[000364] For example, AwpCandIdx0 represents the index value of the first target motion information. Therefore, the (AwpCandIdx0+1)th motion information in AwpUniArray can be assigned to the first target motion information. For example, if the value of AwpCandIdx0 is 0, the first motion information in AwpUniArray is assigned to the first target motion information; if the value of AwpCandIdx0 is 1, the second motion information in AwpUniArray is assigned to the first target motion information, etc.
[000365] mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 и RefIdxAwp0L1 объединяют в качестве первой целевой информации о движении, то есть первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1.[000365] mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 and RefIdxAwp0L1 are combined as the first target motion information, that is, the first target motion information includes unidirectional motion information pointing to List0 and unidirectional motion information pointing to List1.
[000366] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.[000366] If the (AwpCandIdx0+1)-th motion information in AwpUniArray is unidirectional motion information pointing to List0, the first target motion information includes unidirectional motion information pointing to List0 and unidirectional motion information pointing to List1 , is null.
[000367] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.[000367] If the (AwpCandIdx0+1)-th motion information in AwpUniArray is unidirectional motion information pointing to List1, the first target motion information includes unidirectional motion information pointing to List1 and unidirectional motion information pointing to List0 , is null.
[000368] Например, mvAwp0L0 и RefIdxAwp0L0 представляют информацию об однонаправленном движении, указывающую на List0 в первой целевой информации о движении, a mvAwp0L1 и RefIdxAwp0L1 представляют информацию об однонаправленном движении, указывающую на List1 в первой целевой информации о движении.[000368] For example, mvAwp0L0 and RefIdxAwp0L0 represent unidirectional motion information pointing to List0 in the first target motion information, and mvAwp0L1 and RefIdxAwp0L1 represent unidirectional motion information pointing to List1 in the first target motion information.
[000369] Если значение RefIdxAwp0L0 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List0, действительна. Таким образом, режим предсказания первой целевой информации о движении представляет собой PRED_List0, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List0.[000369] If the value of RefIdxAwp0L0 is valid, this indicates that the unidirectional information pointing to List0 is valid. That is, the prediction mode of the first target motion information is PRED_List0, that is, a pixel position prediction value of the unidirectional motion information pointing to List0 can be received.
[000370] Если значение RefIdxAwp0L1 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания первой целевой информации о движении представляет собой PRED List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.[000370] If the value of RefIdxAwp0L1 is valid, this indicates that the unidirectional information pointing to List1 is valid. That is, the prediction mode of the first target motion information is PRED List1, that is, a pixel position prediction value of the unidirectional motion information pointing to List1 can be received.
[000371] Например, AwpCandIdx1 представляет значение индекса второй целевой информации о движении. Следовательно, (AwpCandIdx1+1)-я информация о движении в AwpUniArray может быть назначена второй целевой информации о движении. Например, если значение AwpCandIdx1 равно 0, первая информация о движении в AwpUniArray назначается второй целевой информации о движении; если значение AwpCandIdx1 равно 1, вторая информация о движении в AwpUniArray назначается второй целевой информации о движении и т.д.[000371] For example, AwpCandIdx1 represents the index value of the second target motion information. Therefore, the (AwpCandIdx1+1)th motion information in AwpUniArray can be assigned to the second target motion information. For example, if the value of AwpCandIdx1 is 0, the first motion information in AwpUniArray is assigned to the second target motion information; if the value of AwpCandIdx1 is 1, the second motion information in AwpUniArray is assigned to the second target motion information, etc.
[000372] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1 объединяют как вторую целевую информацию о движении, то есть вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1.[000372] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 and RefIdxAwp1L1 are combined as second target motion information, that is, the second target motion information includes unidirectional motion information pointing to List0 and unidirectional motion information pointing to List1.
[000373] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.[000373] If the (AwpCandIdx1+1)th motion information in AwpUniArray is unidirectional motion information pointing to List0, then the second target motion information includes unidirectional motion information pointing to List0 and unidirectional motion information pointing to List1 is null.
[000374] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.[000374] If the (AwpCandIdx1+1)th motion information in AwpUniArray is unidirectional motion information pointing to List1, then the second target motion information includes unidirectional motion information pointing to List1 and unidirectional motion information pointing to List0 is null.
[000375] Например, mvAwp1L0 и RefIdxAwp1L0 представляют информацию об однонаправленном движении, указывающую на List0, во второй целевой информации о движении, a mvAwp1L1 и RefIdxAwp1L1 представляют информацию об однонаправленном движении, указывающую на List1, во второй целевой информации о движении.[000375] For example, mvAwp1L0 and RefIdxAwp1L0 represent unidirectional motion information pointing to List0 in the second target motion information, and mvAwp1L1 and RefIdxAwp1L1 represent unidirectional motion information pointing to List1 in the second target motion information.
[000376] Если значение RefIdxAwp1L0 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List0, действительна. Таким образом, режим предсказания второй целевой информации о движении представляет собой PRED_List0, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List0.[000376] If the value of RefIdxAwp1L0 is valid, this indicates that the unidirectional information pointing to List0 is valid. That is, the prediction mode of the second target motion information is PRED_List0, that is, a pixel position prediction value of the unidirectional motion information pointing to List0 can be received.
[000377] Если значение RefIdxAwp1L1 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания второй целевой информации о движении представляет собой PRED_List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.[000377] If the value of RefIdxAwp1L1 is valid, this indicates that the unidirectional information pointing to List1 is valid. That is, the prediction mode of the second target motion information is PRED_List1, that is, a pixel position prediction value of the unidirectional motion information pointing to List1 can be received.
[000378] Вариант 11 осуществления изобретения. В описанных выше вариантах 1-3 осуществления изобретения необходимо определить первое значение предсказания позиции пикселя на основе первого режима предсказания и определить второе значение предсказания позиции пикселя на основе второго режима предсказания. В этом варианте осуществления изобретения описание приведено для первого режима предсказания как режима внешнего предсказания и второго режима предсказания как режима внешнего предсказания в качестве примера.[000378] Embodiment 11 of the invention. In the above-described
[000379] Первый режим предсказания представляет собой режим внешнего предсказания, второй режим предсказания представляет собой режим внешнего предсказания, и создается список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере две информации о возможном движении. Одну информацию о возможном движении выбирают из списка кандидатов для компенсации движения в качестве первой исходной информации о движении текущего блока, а другую информацию о возможном движении выбирают из списка кандидатов для компенсации движения в качестве второй исходной информации о движении текущего блока, при этом первая исходная информация о движении и вторая исходная информация о движении различны. Затем на основе первой исходной информации о движении определяют первую целевую информацию о движении текущего блока, а на основе второй исходной информации о движении определяют вторую целевую информацию о движении текущего блока. Для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, а второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении.[000379] The first prediction mode is an inter-prediction mode, the second prediction mode is an inter-prediction mode, and a motion compensation candidate list is generated, wherein the motion compensation candidate list includes at least two possible motion information. One possible motion information is selected from the motion compensation candidate list as the first motion source information of the current block, and the other possible motion information is selected from the motion compensation candidate list as the second motion source information of the current block, wherein the first motion source information is the motion information and the second motion source information are different. Then, based on the first source motion information, the first target motion information of the current block is determined, and based on the second source motion information, the second target motion information of the current block is determined. For each pixel position of the current block, a first pixel position prediction value is determined based on the first motion target information, and a second pixel position prediction value is determined based on the second motion target information.
[000380] Процесс создания списка кандидатов для компенсации движения можно отнести к вариантам осуществления 9 и 10 изобретения и здесь повторяться не будет. Процесс определения первого значения предсказания на основе первой целевой информации о движении и определения второго значения предсказания на основе второй целевой информации о движении можно отнести к варианту 9 осуществления изобретения и здесь повторяться не будет. В отличие от варианта 9 осуществления изобретения, в варианте 11 осуществления изобретения информация о возможном движении, выбранная из списка кандидатов для компенсации движения, является исходной информацией о движении, а не целевой информацией о движении. После получения исходной информации о движении целевая информация о движении может быть получена на основе исходной информации о движении. Конкретный процесс получения можно отнести к последующим вариантам осуществления изобретения.[000380] The process of creating a candidate list for motion compensation can be attributed to embodiments 9 and 10 of the invention and will not be repeated here. The process of determining the first prediction value based on the first motion target information and determining the second prediction value based on the second motion target information can be referred to as Embodiment 9 and will not be repeated here. Unlike Embodiment 9, in Embodiment 11, the possible motion information selected from the candidate list for motion compensation is source motion information rather than target motion information. After obtaining the original motion information, target motion information can be obtained based on the original motion information. The specific production process can be referred to as subsequent embodiments of the invention.
[000381] Таким образом, для описанного выше случая, когда по меньшей мере один из первого режима предсказания или второго режима предсказания является режимом внешнего предсказания, может быть создан список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере одну информацию о возможном движении. Затем две информации о возможном движении выбирают из списка кандидатов для компенсации движения в качестве первой исходной информации о движении и второй исходной информации о движении текущего блока. Первую целевую информацию о движении определяют на основе первой исходной информации о движении, а вторую целевую информацию о движении определяют на основе второй исходной информации о движении. Затем определяют два значения предсказания позиции пикселя на основе этих двух экземпляров целевой информации о движении.[000381] Thus, for the above-described case where at least one of the first prediction mode or the second prediction mode is an inter prediction mode, a motion compensation candidate list can be generated, wherein the motion compensation candidate list includes at least one information about possible movement. Then, two possible motion information are selected from the candidate list for motion compensation as the first motion source information and the second motion source information of the current block. The first target motion information is determined based on the first source motion information, and the second target motion information is determined based on the second source motion information. Then, two pixel position prediction values are determined based on these two instances of target motion information.
[000382] Для определения целевой информации о движении на основе исходной информации о движении варианты осуществления изобретения предоставляют схемы наложения информации об однонаправленном движении на разность векторов движения. Например, исходная информация о движении включает исходный вектор движения, а целевая информация о движении включает целевой вектор движения. Для определения целевого вектора движения текущего блока на основе исходного вектора движения может быть получена разность векторов движения (MVD), соответствующая исходному вектору движения, и целевой вектор движения определяют на основе разности векторов движения и исходного вектора движения, то есть сумму разности векторов движения и исходного вектора движения принимают в качестве целевого вектора движения.[000382] To determine target motion information based on source motion information, embodiments of the invention provide schemes for superimposing unidirectional motion information onto a motion vector difference. For example, the source motion information includes a source motion vector, and the target motion information includes a target motion vector. To determine the target motion vector of the current block based on the original motion vector, the motion vector difference (MVD) corresponding to the original motion vector can be obtained, and the target motion vector is determined based on the difference between the motion vectors and the original motion vector, that is, the sum of the difference between the motion vectors and the original motion vector. motion vector is taken as the target motion vector.
[000383] Вариант 12 осуществления изобретения. На основе варианта 11 осуществления изобретения согласовываются информация о направлении и информация об амплитуде разности векторов движения. Если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0). Если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad). Если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна Al, разность векторов движения равна (-Al, 0). Если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Au, разность векторов движения равна (0, Au). Если информация о направлении указывает направление вправо-вверх, а информация об амплитуде указывает, что амплитуда равна Аrа, разность векторов движения равна (Aru, Aru). Если информация о направлении указывает направление слева-вверх, а информация об амплитуде указывает, что амплитуда равна Alu, разность векторов движения равна (-Alu, Alu). Если информация о направлении указывает направление слева-вниз, а информация об амплитуде указывает, что амплитуда равна Aid, разность векторов движения равна (-Ald, -Ald). Если информация о направлении указывает направление вправо-вниз, а информация об амплитуде указывает, что амплитуда равна Ard, разность векторов движения равна (Ard, -Ard).[000383] Embodiment 12 of the invention. Based on Embodiment 11 of the invention, the direction information and the amplitude information of the motion vector difference are matched. If the direction information indicates the direction to the right and the amplitude information indicates that the amplitude is Ar, the motion vector difference is (Ar, 0). If the direction information indicates a downward direction and the amplitude information indicates that the amplitude is equal to Ad, the difference of motion vectors is equal to (0, -Ad). If the direction information indicates the left direction and the amplitude information indicates that the amplitude is Al, the motion vector difference is (-Al, 0). If the direction information indicates the upward direction and the amplitude information indicates that the amplitude is Au, the motion vector difference is (0, Au). If the direction information indicates a right-up direction and the amplitude information indicates that the amplitude is Ara, the difference of motion vectors is (Aru, Aru). If the direction information indicates a left-up direction and the amplitude information indicates that the amplitude is Alu, the motion vector difference is (-Alu, Alu). If the direction information indicates the left-down direction and the amplitude information indicates that the amplitude is Aid, the motion vector difference is (-Ald, -Ald). If the direction information indicates the right-down direction and the amplitude information indicates that the amplitude is Ard, the motion vector difference is (Ard, -Ard).
[000384] Отметим, что вышеуказанные амплитуды Ar, Ad, Al, Au, Aru, Alu, Ald и Ard соответственно указывают на один набор значений, а значения в наборах амплитуд различных направлений могут быть полностью одинаковыми или частично одинаковыми, или полностью различными.[000384] Note that the above amplitudes Ar, Ad, Al, Au, Aru, Alu, Ald and Ard respectively indicate one set of values, and the values in sets of amplitudes of different directions may be completely the same, or partially the same, or completely different.
[000385] Например, разность векторов движения может поддерживать всю или часть вышеуказанной информации о направлении, диапазон значений амплитуды А, поддерживаемый разностью векторов движения, может быть сконфигурирован на экспериментальной основе, а амплитуда А может включать по меньшей мере одно значение, которое здесь не ограничивается.[000385] For example, the motion vector difference may support all or part of the above direction information, the range of values of the amplitude A supported by the motion vector difference may be configured on an experimental basis, and the amplitude A may include at least one value, which is not limited herein .
[000386] Например, разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие пять конфигураций длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя и 4-пикселя, то есть значение амплитуды А может быть 1, 2, 4, 8 и 16. Таким образом, при направлении вверх разность векторов движения может быть (0, 1), (0, 2), (0, 4), (0, 8) и (0, 16). При направлении вниз разность векторов движения может быть (0, -1), (0, -2), (0, -4), (0, -8) и (0, -16). При направлении влево разность векторов движения может быть (-1,0), (-2, 0), (-4, 0), (-8, 0) и (-16, 0). При направлении вправо разность векторов движения может быть (1, 0), (2, 0), (4, 0), (8, 0) и (16, 0).[000386] For example, motion vector difference supports four directions: up, down, left, and right, and motion vector difference supports the following five stride length configurations: -pixel, -pixel, 1-pixel, 2-pixel and 4-pixel, that is, the value of amplitude A can be 1, 2, 4, 8 and 16. Thus, in the upward direction, the difference in motion vectors can be (0, 1), ( 0, 2), (0, 4), (0, 8) and (0, 16). In the downward direction, the difference in motion vectors can be (0, -1), (0, -2), (0, -4), (0, -8) and (0, -16). When directed to the left, the difference in motion vectors can be (-1.0), (-2, 0), (-4, 0), (-8, 0) and (-16, 0). When directed to the right, the difference in motion vectors can be (1, 0), (2, 0), (4, 0), (8, 0) and (16, 0).
[000387] В другом примере разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие шесть конфигураций длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя, 3-пикселя и 4-пикселя, то есть значение амплитуды А может быть равно 1, 2, 4, 8 и 16. Таким образом, при направлении вверх разность векторов движения может быть (0, 1), (0, 2), (0, 4), (0, 8), (0, 12) и (0, 16). Разности векторов движения других направлений могут быть реализованы таким же образом, как и в направлении «вверх», и здесь не повторяются.[000387] In another example, the motion vector difference supports four directions: up, down, left, and right, and the motion vector difference supports the following six stride length configurations: -pixel, -pixel, 1-pixel, 2-pixel, 3-pixel and 4-pixel, that is, the value of the amplitude A can be 1, 2, 4, 8 and 16. Thus, in the upward direction, the difference in motion vectors can be (0 , 1), (0, 2), (0, 4), (0, 8), (0, 12) and (0, 16). Differences in motion vectors in other directions can be realized in the same way as in the “up” direction, and are not repeated here.
[000388] В другом примере разность векторов движения поддерживает восемь направлений: вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз, а разность векторов движения поддерживает следующие три конфигурации длины шага: -пикселя, -пикселя и 1-пиксель, то есть значение амплитуды А может быть равно 1, 2 и 4. Таким образом, при направлении влево-вверх разность векторов движения может быть (-1, 1), (-2, 2) и (-4, 4). Когда направление вправо-вверх, разность векторов движения может быть (1, 1), (2, 2) и (4, 4). Разности векторов движения других направлений могут быть реализованы таким же образом, как и в направлениях «влево вверх и вправо вверх», а значения разностей векторов движения могут быть указаны в описанном выше соглашении и не будут здесь повторяться.[000388] In another example, the motion vector difference supports eight directions: up, down, left, right, left-up, left-down, right-up, and right-down, and the motion vector difference supports the following three stride length configurations: -pixel, -pixel and 1-pixel, that is, the value of amplitude A can be equal to 1, 2 and 4. Thus, in the left-up direction, the difference in motion vectors can be (-1, 1), (-2, 2) and (- 4, 4). When the direction is right-up, the difference of motion vectors can be (1, 1), (2, 2) and (4, 4). The motion vector differences of other directions can be realized in the same way as in the left-up and right-up directions, and the values of the motion vector differences can be specified in the above-described convention and will not be repeated here.
[000389] В другом примере разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие четыре конфигурации длины шага: -пикселя, -пикселя, 1-пиксель и 2-пикселя, что то есть значение амплитуды А может быть равно 1, 2, 4 и 8.[000389] In another example, the motion vector difference supports four directions: up, down, left, and right, and the motion vector difference supports the following four stride length configurations: -pixel, -pixel, 1-pixel and 2-pixel, that is, the value of amplitude A can be equal to 1, 2, 4 and 8.
[000390] Приведенные выше примеры являются только иллюстративными, и здесь не делается никаких ограничений. Например, направление, поддерживаемое разностью векторов движения, может быть выбрано произвольно, например, может быть выбрано как вверх, вниз, влево, вправо, влево-вверх и влево-вниз, или как два направления, например вверх и вниз, и т.п. В качестве другого примера, конфигурация длины шага, поддерживаемая разностью векторов движения, может быть изменяемой и может гибко конфигурироваться. В другом примере конфигурация длины шага может быть адаптивно сконфигурирована на основе параметров кодирования, таких как QP (параметр квантования) и т.п. Например, 1-пиксель, 2-пикселя, 4-пикселя и 8-пикселей могут быть приняты для большего QP, а -пикселя, -пикселя, 1-пиксель и 2-пикселя могут быть приняты для меньшего QP. В другом примере подходящая конфигурация длины шага может быть установлена на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча, уровне CTU и т.п., и сторона декодера выполняет операцию декодирования в соответствии с конфигурациями длины шага, проанализированными на уровне последовательности, уровне изображения, уровне кадра, уровне слайса, уровне тайла, уровне патча, уровне CTU и т.п.[000390] The above examples are illustrative only and no limitation is intended herein. For example, the direction supported by the motion vector difference can be selected arbitrarily, such as up, down, left, right, left-up and left-down, or two directions, such as up and down, etc. . As another example, the step length configuration supported by the motion vector difference can be changed and can be flexibly configured. In another example, the step length configuration may be adaptively configured based on encoding parameters such as QP (quantization parameter) and the like. For example, 1-pixel, 2-pixel, 4-pixel and 8-pixel can be accepted for larger QP, and -pixel, -pixel, 1-pixel and 2-pixel can be adopted for lower QP. In another example, a suitable step length configuration can be set at the sequence level, picture level, frame level, slice level, tile level, patch level, CTU level, etc., and the decoder side performs the decoding operation according to the step length configurations. analyzed at sequence level, image level, frame level, slice level, tile level, patch level, CTU level, etc.
[000391] Для простоты описания в последующих вариантах осуществления изобретения разность векторов движения поддерживает направления вверх и вниз и поддерживает конфигурации длины шага, такие как 1-пиксель и 2-пикселя, в случае точности -пикселя разность векторов движения может быть (0, 4), (0, 8), (0, -4), (0, -8), то есть (0, 1 << 2), (0, 1 << 3), (0, -1 << 2) и (0, -1 << 3).[000391] For ease of description, in subsequent embodiments of the invention, the motion vector difference supports up and down directions and supports step length configurations such as 1-pixel and 2-pixel in the case of precision -pixel difference in motion vectors can be (0, 4), (0, 8), (0, -4), (0, -8), that is (0, 1 << 2), (0, 1 << 3), (0, -1 << 2) and (0, -1 << 3).
[000392] После создания списка кандидатов для компенсации движения сторона кодера может последовательно пройти каждый возможный вектор движения в списке кандидатов для компенсации движения. При прохождении возможного вектора 1 движения сумма возможного вектора 1 движения и разности векторов движения (0, 4) берется в качестве возможного вектора 1-1 движения, и определяют значение 1-1 стоимости RDO, соответствующее возможному вектору 1-1 движения. Описанный выше процесс определения здесь не ограничивается. Сумма возможного вектора 1 движения и разности векторов движения (0, 8) берется в качестве возможного вектора 1-2 движения, и определяют значение 1-2 стоимости RDO, соответствующее возможному вектору 1-2 движения. Сумма возможного вектора 1 движения и разности векторов движения (0, -4) берется в качестве возможного вектора 1-3 движения, и определяют значение 1-3 стоимости RDO, соответствующее возможному вектору 1-3 движения. Сумма возможного вектора движения 1 и разности векторов движения (0, -8) берется в качестве возможного вектора 1-4 движения, и определяют значение 1-4 стоимости RDO, соответствующее возможному вектору 1-4 движения.[000392] Once the motion compensation candidate list has been created, the encoder side can sequentially go through each possible motion vector in the motion compensation candidate list. When passing the
[000393] Аналогично, для каждого из пройденных возможных векторов движения значение стоимости RDO может быть получено путем описанной выше обработки. После прохождения всех возможных векторов движения из всех значений стоимости RDO выбирают минимальное значение стоимости RDO. Если значение 1-1 стоимости RDO является минимальным, сторона кодера может кодировать следующее содержимое в кодированном битовом потоке: значение индекса возможного вектора 1 движения в списке кандидатов для компенсации движения, информацию о направлении и информацию об амплитуде разности векторов движения (0, 4), при этом информация о направлении используется для указания направления разности векторов движения (0, 4) вверх, а информация об амплитуде используется для указания амплитуды разности векторов движения (0, 4) и равна 4. Например, информация указания информации о направлении может быть равна 0, что указывает первое направление в списке направлений (вверх и вниз), и информация указания информации об амплитуде может быть равна 4, что указывает первую конфигурацию длины шага в списке конфигурации длины шага (1-пиксель, 2-пикселя). Описанный выше процесс является упрощенным примером, который здесь не ограничивается при условии, что могут быть указаны информация о направлении и информация об амплитуде.[000393] Likewise, for each of the possible motion vectors traversed, the RDO cost value can be obtained by the processing described above. After passing through all possible motion vectors, the minimum RDO cost value is selected from all RDO cost values. If the RDO cost value 1-1 is the minimum, the encoder side can encode the following contents in the encoded bitstream: the index value of
[000394] Например, когда разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает пять конфигураций длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя и 4-пикселя, информация о направлении разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения), при этом четыре значения 2-бинового кода фиксированной длины соответственно представляют четыре направления: вверх, вниз, влево и вправо. Информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода, то есть пять конфигураций длины шага указаны усеченным унарным кодом.[000394] For example, when the motion vector difference supports four directions: up, down, left and right, and the motion vector difference supports five stride length configurations: -pixel, -pixel, 1-pixel, 2-pixel and 4-pixel, motion vector difference direction information can be encoded using a 2-bin fixed-length code (four values in total), where four values of a 2-bin fixed-length code respectively represent four directions: up, down, left and right. The motion vector difference amplitude information may be encoded using a truncated unary code, that is, five step length configurations are indicated by a truncated unary code.
[000395] Другой пример, когда разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает шесть конфигураций длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя, 3-пикселя и 4-пикселя, информация о направлении разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.[000395] Another example where the motion vector difference supports four directions: up, down, left and right, and the motion vector difference supports six stride length configurations: -pixel, -pixel, 1-pixel, 2-pixel, 3-pixel and 4-pixel, motion vector difference direction information can be encoded using a 2-bin fixed length code (four values in total), and motion vector difference amplitude information can be encoded using truncated unary code.
[000396] Другой пример, когда разность векторов движения поддерживает восемь направлений: вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз, а разность векторов движения поддерживает три конфигурации длины шага: -пикселя, -пикселя и 1-пиксель, информация о направлении разности векторов движения может кодироваться с использованием 3-бинового кода фиксированной длины (всего восемь значений), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.[000396] Another example is where the motion vector difference supports eight directions: up, down, left, right, left-up, left-down, right-up and right-down, and the motion vector difference supports three stride length configurations: -pixel, -pixel and 1-pixel, motion vector difference direction information can be encoded using a 3-bin fixed-length code (eight values in total), and motion vector difference amplitude information can be encoded using a truncated unary code.
[000397] В другом примере, когда разность векторов движения поддерживает четыре направления: вверх, вниз, влево, вправо, а разность векторов движения поддерживает четыре конфигурации длины шага: -пикселя, -пикселя, 1-пиксель и 2-пикселя, информация о направлении разности векторов движения может кодироваться с использованием усеченного унарного кода, а информация об амплитуде разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения).[000397] In another example, where the motion vector difference supports four directions: up, down, left, right, and the motion vector difference supports four stride length configurations: -pixel, -pixel, 1-pixel and 2-pixel, motion vector difference direction information can be encoded using a truncated unary code, and motion vector difference amplitude information can be encoded using a fixed-length 2-bin code (four values in total).
[000398] Описанные выше способы кодирования являются только примерами и не ограничиваются здесь.[000398] The encoding methods described above are examples only and are not limited here.
[000399] Подводя итог, можно сказать, что сторона кодера может искать оптимальный вектор движения в определенной области, а затем принимать разность между оптимальным вектором движения и возможным вектором движения в качестве разности векторов движения (MVD) и кодировать информацию об амплитуде и информацию о направлении разности векторов движения и значения индекса возможного вектора движения в списке кандидатов для компенсации движения в битовый поток. Когда на стороне кодера выполняется поиск оптимального вектора движения в определенной области, ожидается, что направление и амплитуда разности векторов движения будут согласованы, то есть поиск оптимального вектора движения осуществляется в ограниченных диапазонах разности векторов движения, например (Ar, 0), (0, -Ad), (-Al, 0), (0, Au), (Aru, Aru), (-Aru, Alu), (-Ald, -Ald), и (Ard, -Ard) и т.п., а не в любом диапазоне разности векторов движения.[000399] To summarize, the encoder side can search for the optimal motion vector in a certain area, and then take the difference between the optimal motion vector and the possible motion vector as a motion vector difference (MVD), and encode amplitude information and direction information the difference between motion vectors and the index value of a possible motion vector in the list of candidates for motion compensation into the bit stream. When the encoder side searches for the optimal motion vector in a certain area, it is expected that the direction and amplitude of the motion vector difference will be consistent, that is, the search for the optimal motion vector is carried out in limited ranges of the motion vector difference, for example (Ar, 0), (0, - Ad), (-Al, 0), (0, Au), (Aru, Aru), (-Aru, Alu), (-Ald, -Ald), and (Ard, -Ard), etc., and not in any range of motion vector differences.
[000400] После получения кодированного битового потока текущего блока сторона декодера может проанализировать значение индекса возможного вектора движения в списке кандидатов для компенсации движения из кодированного битового потока и выбрать возможный вектор движения, соответствующий значению индекса в списке кандидатов для компенсации движения и принять возможный вектор движения в качестве исходного вектора движения текущего блока. Сторона декодера также может анализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока и определять разность векторов движения на основе информации о направлении и информации об амплитуде.[000400] After receiving the encoded bitstream of the current block, the decoder side may analyze the index value of a candidate motion vector in the motion compensation candidate list from the encoded bitstream and select a candidate motion vector corresponding to the index value in the candidate list for motion compensation and receive the candidate motion vector in as the initial motion vector of the current block. The decoder side can also analyze the direction information and the motion vector difference amplitude information from the encoded bitstream, and determine the motion vector difference based on the direction information and the amplitude information.
[000401] Затем сторона декодера может определить целевой вектор движения текущего блока на основе разности векторов движения и исходного вектора движения, например, сумма разности векторов движения и исходного вектора движения может быть принята в качестве целевого движения текущего блока.[000401] Then, the decoder side can determine the target motion vector of the current block based on the difference of the motion vectors and the original motion vector, for example, the sum of the difference of the motion vectors and the original motion vector can be taken as the target motion of the current block.
[000402] В вышеприведенном варианте осуществления изобретения при кодировании информации о направлении разности векторов движения сторона кодера может использовать код фиксированной длины или усеченный унарный код и т.п. Следовательно, на стороне декодера может использоваться код фиксированной длины или усеченный унарный код и т.п. для декодирования информации о направлении разности векторов движения, чтобы получить информацию о направлении разности векторов движения, например вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх, вправо-вниз и т.д.[000402] In the above embodiment, when encoding the motion vector difference direction information, the encoder side may use a fixed length code or a truncated unary code or the like. Therefore, a fixed-length code or a truncated unary code, etc. may be used on the decoder side. for decoding information about the direction of the motion vector difference to obtain information about the direction of the motion vector difference, such as up, down, left, right, left-up, left-down, right-up, right-down, etc.
[000403] В вышеприведенном варианте осуществления изобретения при кодировании информации об амплитуде разности векторов движения сторона кодера может использовать код фиксированной длины или усеченный унарный код и т.п. Следовательно, сторона декодера может использовать код фиксированной длины или усеченный унарный код и т.п. для декодирования информации об амплитуде разности векторов движения, чтобы получить информацию об амплитуде разности векторов движения, такую как конфигурации длины шага: -пикселя, -пикселя, 1-пиксель, 2-пикселя и т.п., а затем определить значение амплитуды А разности векторов движения на основе конфигурации длины шага, например -пикселя, -пикселя, 1-пиксель и 2-пикселя.[000403] In the above embodiment, when encoding the motion vector difference amplitude information, the encoder side may use a fixed length code or a truncated unary code or the like. Therefore, the decoder side may use a fixed-length code or a truncated unary code, etc. for decoding motion vector difference amplitude information to obtain motion vector difference amplitude information such as step length configurations: -pixel, -pixel, 1-pixel, 2-pixel, etc., and then determine the value of the amplitude A of the difference in motion vectors based on the step length configuration, for example -pixel, -pixel, 1-pixel and 2-pixel.
[000404] Подводя итог, можно сказать, что сторона декодера может проанализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока, а затем определить разность векторов движения на основе информации о направлении и информации об амплитуде.[000404] To summarize, the decoder side can analyze the direction information and the motion vector difference amplitude information from the encoded bitstream, and then determine the motion vector difference based on the direction information and the amplitude information.
[000405] В возможной реализации сторона кодера может также кодировать информацию флага в кодированном битовом потоке, при этом информация флага указывает на наложение разности векторов движения на исходный вектор движения или отсутствие наложения разности векторов движения на исходный вектор движения. Информация флага может быть флагом подрежима режима EAWP. Кроме того, режим EAWP также может называться режимом AWP с уточнением вектора движения (AWP-MVR, AWP with Motion Vector Refinement). После приема кодированного битового потока текущего блока сторона декодера сначала анализирует флаг подрежима расширенного углового режима взвешенного предсказания (EAWP) из кодированного битового потока текущего блока. Если флаг подрежима указывает на наложение разности векторов движения на исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока текущего блока и определяет разность векторов движения на основе информации о направлении и информации об амплитуде и определяет целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения. Если флаг подрежима указывает на отсутствие наложения разности векторов движения на исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде разности векторов движения, а напрямую принимает исходный вектор движения в качестве целевого движения текущего блока.[000405] In an exemplary implementation, the encoder side may also encode flag information in the encoded bitstream, wherein the flag information indicates whether the motion vector difference is superimposed on the original motion vector or whether the motion vector difference is not superimposed on the original motion vector. The flag information may be an EAWP mode submode flag. In addition, EAWP mode can also be called AWP mode with Motion Vector Refinement (AWP-MVR). After receiving the encoded bitstream of the current block, the decoder side first analyzes the Extended Angular Weighted Prediction (EAWP) submode flag from the encoded bitstream of the current block. If the submode flag indicates superposition of the motion vector difference with the original motion vector, the decoder side analyzes the direction information and the amplitude information of the motion vector difference from the encoded bitstream of the current block, and determines the motion vector difference based on the direction information and the amplitude information, and determines the target the motion vector of the current block based on the original motion vector and the difference of the motion vectors. If the submode flag indicates that the motion vector difference is not superimposed on the original motion vector, the decoder side does not analyze the direction information or the amplitude information of the motion vector difference, but directly takes the original motion vector as the target motion of the current block.
[000406] Например, когда флаг подрежима режима EAWP представляет собой первое значение подрежима, это указывает на наложение разности векторов движения на исходный вектор движения; когда флаг подрежима режима EAWP является вторым значением подрежима, это указывает на отсутствие наложения разности векторов движения на исходный вектор движения. Первое значение подрежима и второе значение подрежима могут быть сконфигурированы на основе опыта, например, первое значение подрежима может быть 1, а второе значение подрежима может быть 0, или, например, первое значение подрежима может быть равно 0, а второе значение подрежима может быть равно 1. Выше приведены только два примера, и здесь не делается никаких ограничений.[000406] For example, when the EAWP mode submode flag is the first value of the submode, it indicates superposition of the motion vector difference on the original motion vector; when the EAWP mode submode flag is the second submode value, it indicates that the motion vector difference is not superimposed on the original motion vector. The first submode value and the second submode value may be configured based on experience, for example, the first submode value may be 1 and the second submode value may be 0, or, for example, the first submode value may be 0 and the second submode value may be 1. The above are just two examples and no limitations are made here.
[000407] В возможной реализации для варианта 11 осуществления изобретения первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, и вторая целевая информация о движении включает второй целевой вектор движения. На основе вышеизложенного может быть получена первая разность векторов движения, соответствующая первому исходному вектору движения, и первый целевой вектор движения определяется на основе первой разности векторов движения и первого исходного вектора движения, то есть сумма первой разности векторов движения и первого исходного вектора движения принимается в качестве первого целевого вектора движения. Может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения, и второй целевой вектор движения определяется на основе второй разности векторов движения и второго исходного вектора движения, то есть сумма второй разности векторов движения и второго исходного вектора движения принимается в качестве второго целевого вектора движения.[000407] In a possible implementation for embodiment 11 of the invention, the first motion source information includes a first motion source vector, the first motion target information includes a first motion target vector, the second motion source information includes a second motion source vector, and the second motion target information includes a second target motion vector. Based on the above, the first motion vector difference corresponding to the first source motion vector can be obtained, and the first target motion vector is determined based on the first motion vector difference and the first source motion vector, that is, the sum of the first motion vector difference and the first source motion vector is taken as the first target motion vector. A second motion vector difference corresponding to the second source motion vector can be obtained, and a second target motion vector is determined based on the second motion vector difference and the second source motion vector, that is, the sum of the second motion vector difference and the second source motion vector is taken as the second target vector. movements.
[000408] Сторона кодера может использовать RDO для определения первой разности векторов движения, соответствующей первому исходному вектору движения, и определения второй разности векторов движения, соответствующей второму исходному вектору движения, что здесь не ограничено.[000408] The encoder side may use RDO to determine a first motion vector difference corresponding to the first source motion vector and determine a second motion vector difference corresponding to the second source motion vector, which is not limited here.
[000409] Когда сторона кодера передает кодированный битовый поток текущего блока на сторону декодера, кодированный битовый поток может переносить информацию о направлении и информацию об амплитуде первой разности векторов движения, а также информацию о направлении и информацию об амплитуде второй разности векторов движения.[000409] When the encoder side transmits the encoded bitstream of the current block to the decoder side, the encoded bitstream may carry direction information and amplitude information of the first motion vector difference, as well as direction information and amplitude information of the second motion vector difference.
[000410] Сторона декодера после приема кодированного битового потока текущего блока может анализировать информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения и может анализировать информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения.[000410] The decoder side, after receiving the encoded bitstream of the current block, can analyze the direction information and the amplitude information of the first motion vector difference from the encoded bitstream, and determine the first motion vector difference based on the direction information and the amplitude information of the first motion vector difference, and can analyze the direction information and the amplitude information of the second motion vector difference from the encoded bit stream, and determine the second motion vector difference based on the direction information and the amplitude information of the second motion vector difference.
[000411] Затем сторона декодера может определить первый целевой вектор движения текущего блока на основе первой разности векторов движения и первого исходного вектора движения и определить второй целевой вектор движения текущего блока на основе второй разности векторов движения и второго исходного вектора движения.[000411] Then, the decoder side may determine the first target motion vector of the current block based on the first difference of the motion vectors and the first source motion vector, and determine the second target motion vector of the current block based on the second difference of the motion vectors and the second source motion vector.
[000412] В возможной реализации сторона кодера может также кодировать первый флаг подрежима и второй флаг подрежима режима предсказания EAWP в кодированном битовом потоке, при этом первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения или отсутствие наложения разности векторов движения на первый исходный вектор движения, а второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения или отсутствие наложения разности векторов движения на второй исходный вектор движения.[000412] In an exemplary implementation, the encoder side may also encode a first sub-mode flag and a second sub-mode flag of the EAWP prediction mode in the encoded bit stream, wherein the first sub-mode flag indicates whether the motion vector difference is superimposed on the first source motion vector or whether the motion vector difference is not superimposed on the first the original motion vector, and the second sub-mode flag indicates that the motion vector difference is superimposed on the second original motion vector or that the motion vector difference is not superimposed on the second original motion vector.
[000413] В возможной реализации упомянутый выше первый флаг подрежима также может быть первым битом флага в кодированном битовом потоке, а упомянутый выше второй флаг подрежима также может быть вторым битом флага в кодированном битовом потоке.[000413] In an exemplary implementation, the above-mentioned first submode flag may also be the first flag bit in the encoded bitstream, and the above-mentioned second submode flag may also be the second flag bit in the encoded bitstream.
[000414] Сторона декодера после приема кодированного битового потока текущего блока может сначала анализировать первый флаг подрежима и второй флаг подрежима режима EAWP из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определяет первую разность векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения, а затем определяет первый целевой вектор движения текущего блока на основе первого исходного вектора движения и первой разности векторов движения. Если первый флаг подрежима указывает на отсутствие наложения разности векторов движения на первый исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде первой разности векторов движения, а напрямую берет первый исходный вектор движения в качестве первого целевого вектора движения текущего блока. Если второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определяет вторую разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения, а затем определяет второй целевой вектор движения текущего блока на основе второго исходного вектора движения и второй разности векторов движения. Если второй флаг подрежима указывает на отсутствие наложения разности векторов движения на второй исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде второй разности векторов движения, а напрямую берет второй исходный вектор движения в качестве второго целевого вектора движения текущего блока.[000414] The decoder side, after receiving the encoded bitstream of the current block, may first analyze the first submode flag and the second submode flag of the EAWP mode from the encoded bitstream of the current block. If the first sub-mode flag indicates superposition of a motion vector difference on the first original motion vector, the decoder side analyzes the direction information and the amplitude information of the first motion vector difference from the encoded bit stream, and determines the first motion vector difference based on the direction information and the amplitude information of the first a motion vector difference, and then determines a first target motion vector of the current block based on the first source motion vector and the first motion vector difference. If the first submode flag indicates that the motion vector difference is not superimposed on the first source motion vector, the decoder side does not analyze the direction information or the amplitude information of the first motion vector difference, but directly takes the first source motion vector as the first target motion vector of the current block. If the second sub-mode flag indicates superposition of the motion vector difference on the second original motion vector, the decoder side analyzes the direction information and the amplitude information of the second motion vector difference from the encoded bit stream, and determines the second motion vector difference based on the direction information and the amplitude information of the second a motion vector difference, and then determines a second target motion vector of the current block based on the second source motion vector and the second motion vector difference. If the second sub-mode flag indicates that there is no overlap of the motion vector difference with the second source motion vector, the decoder side does not analyze the direction information or the amplitude information of the second motion vector difference, but directly takes the second source motion vector as the second target motion vector of the current block.
[000415] Вариант 13 осуществления изобретения: на основе варианта 11 осуществления изобретения сторона кодера может искать оптимальный вектор движения в пределах определенной области, затем принимать разность между оптимальным вектором движения и возможным вектором движения как разность векторов движения (MVD), а затем кодировать информацию о разности векторов движения в битовый поток и кодировать значение индекса возможного вектора движения в списке кандидатов компенсации движения в битовый поток.[000415] Embodiment 13: Based on Embodiment 11, the encoder side can search for an optimal motion vector within a certain area, then take the difference between the optimal motion vector and the possible motion vector as a motion vector difference (MVD), and then encode the information about motion vector differences into the bitstream and encode the index value of the candidate motion vector into the motion compensation candidate list into the bitstream.
[000416] При поиске оптимального вектора движения в определенной области кодер может выполнять поиск произвольно без ограничений. Например, для каждого возможного вектора движения в списке кандидатов для компенсации движения выполняется поиск нескольких векторов движения границ с принятием возможного вектора движения в качестве центра, определяется значение стоимости RDO, соответствующее каждому из векторов движения границ, и выбирается минимальное значение стоимости RDO из всех значений стоимости RDO, а вектор движения границ, соответствующий минимальному значению стоимости RDO, принимается в качестве оптимального вектора движения.[000416] When searching for the optimal motion vector in a certain area, the encoder can search randomly without restrictions. For example, for each possible motion vector in the motion compensation candidate list, a search is made for multiple boundary motion vectors, taking the candidate motion vector as the center, determining the RDO cost value corresponding to each of the boundary motion vectors, and selecting the minimum RDO cost value from among all the cost values. RDO, and the boundary motion vector corresponding to the minimum value of RDO cost is taken as the optimal motion vector.
[000417] Если оптимальный вектор движения получен на основе возможного вектора 1 движения, возможный вектор 1 движения может быть принят в качестве исходного вектора движения текущего блока, а разность между оптимальным вектором движения и возможным вектором 1 движения принимается в качестве разности векторов движения.[000417] If the optimal motion vector is obtained based on the
[000418] Сторона кодера может кодировать следующее содержимое в кодированном битовом потоке: значение индекса возможного вектора движения 1 в списке кандидатов для компенсации движения и информацию разности векторов движения, при этом информация разности векторов движения включает, не ограничиваясь этим, информацию разности горизонтальных составляющих и/или информацию разности вертикальных составляющих. Информация разности горизонтальных составляющих может включать абсолютное значение разности горизонтальных составляющих и/или значение со знаком разности горизонтальных составляющих, а информация разности вертикальных составляющих может включать абсолютное значение разности вертикальных составляющих и/или значение со знаком разности вертикальных составляющих.[000418] The encoder side may encode the following contents in the encoded bit stream: the index value of
[000419] Сторона декодера может после получения кодированного битового потока текущего блока анализировать значение индекса возможного вектора движения в списке кандидатов для компенсации движения из кодированного битового потока, выбирать возможный вектор движения, соответствующий значению индекса, из списка кандидатов для компенсации движения и принимать возможный вектор движения в качестве исходного вектора движения текущего блока. Сторона декодера также может анализировать информацию разности горизонтальных составляющих и/или информацию разности вертикальных составляющих разности векторов движения из кодированного битового потока текущего блока и определять разность векторов движения на основе информации разности горизонтальных составляющих (например, абсолютное значение разности горизонтальных составляющих и/или значение со знаком разности горизонтальных составляющих) разности векторов движения и информацию разности вертикальных составляющих (например, абсолютное значение разности вертикальных составляющих и/или значение со знаком разности вертикальных составляющих) разности векторов движения.[000419] The decoder side may, after receiving the encoded bitstream of the current block, analyze the index value of a candidate motion vector in the motion compensation candidate list from the encoded bitstream, select a candidate motion vector corresponding to the index value from the candidate list for motion compensation, and receive the candidate motion vector as the initial motion vector of the current block. The decoder side may also analyze the horizontal component difference information and/or the vertical component difference information of the motion vector difference from the encoded bit stream of the current block, and determine the motion vector difference based on the horizontal component difference information (for example, the absolute value of the horizontal component difference and/or the signed value horizontal component difference) motion vector difference and vertical component difference information (eg, the absolute value of the vertical component difference and/or the signed value of the vertical component difference) of the motion vector difference.
[000420] Затем сторона декодера может определить целевой вектор движения текущего блока на основе разности векторов движения и исходного вектора движения, например, сторона декодера может взять сумму разности векторов движения и исходного вектора движения в качестве целевого вектора движения текущего блока.[000420] Then, the decoder side may determine the target motion vector of the current block based on the difference of the motion vectors and the source motion vector, for example, the decoder side may take the sum of the difference of the motion vectors and the source motion vector as the target motion vector of the current block.
[000421] Например, сторона декодера может определить разность горизонтальных составляющих на основе абсолютного значения разности горизонтальных составляющих и значения со знаком разности горизонтальных составляющих и определить разность векторов по вертикали на основе абсолютного значения разности вертикальных составляющих и значения со знаком разности вертикальных составляющих. Комбинация разности горизонтальных составляющих и разности вертикальных составляющих представляет собой разность векторов движения, то есть разность векторов движения включает разность горизонтальных составляющих и разность вертикальных составляющих.[000421] For example, the decoder side may determine the horizontal component difference based on the absolute value of the horizontal component difference and the signed value of the horizontal component difference, and determine the vertical vector difference based on the absolute value of the vertical component difference and the signed value of the vertical component difference. The combination of the horizontal component difference and the vertical component difference is a motion vector difference, that is, the motion vector difference includes a horizontal component difference and a vertical component difference.
[000422] В возможной реализации сторона кодера может также кодировать флаг подрежима режима EAWP в кодированном битовом потоке, при этом флаг подрежима указывает на наложение разности векторов движения на исходный вектор движения или отсутствие наложения разности векторов движения на исходный вектор движения. Сторона декодера после приема кодированного битового потока текущего блока анализирует флаг подрежима режима EAWP из кодированного битового потока. Если флаг подрежима указывает на наложение разности векторов движения на исходный вектор движения, анализируют информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих разности векторов движения из кодированного битового потока, определяют разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих и определяют целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения. Если флаг подрежима указывает на отсутствие наложения разности векторов движения на исходный вектор движения, информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих разности векторов движения не анализируют, но исходный вектор движения принимают как целевой вектор движения текущего блока.[000422] In an exemplary implementation, the encoder side may also encode an EAWP mode submode flag in the encoded bitstream, wherein the submode flag indicates whether the motion vector difference is superimposed on the original motion vector or whether the motion vector difference is not superimposed on the original motion vector. The decoder side, after receiving the encoded bitstream of the current block, analyzes the EAWP mode submode flag from the encoded bitstream. If the submode flag indicates superposition of the motion vector difference on the original motion vector, analyze the horizontal component difference information and the vertical component difference information of the motion vector difference from the encoded bit stream, determine the motion vector difference based on the horizontal component difference information and the vertical component difference information, and determine the target the motion vector of the current block based on the original motion vector and the difference of the motion vectors. If the submode flag indicates that the motion vector difference does not overlap the original motion vector, the horizontal component difference information and the vertical component difference information of the motion vector difference are not analyzed, but the original motion vector is taken as the target motion vector of the current block.
[000423] В возможной реализации для варианта 11 осуществления изобретения первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, и вторая целевая информация о движении включает второй целевой вектор движения. На основе этого может быть получена первая разность векторов движения, соответствующая первому исходному вектору движения, и первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения, то есть суммы первого исходного вектора движения, и первый исходный вектор движения принимают в качестве первого целевого вектора движения. Может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения, и второй целевой вектор движения определяют на основе второй разности векторов движения и второго исходного вектора движения, то есть суммы второй разности векторов движения, и в качестве второго целевого вектора движения принимают второй исходный вектор движения.[000423] In a possible implementation for embodiment 11 of the invention, the first motion source information includes a first motion source vector, the first motion target information includes a first motion target vector, the second motion source information includes a second motion source vector, and the second motion target information includes a second target motion vector. Based on this, the first motion vector difference corresponding to the first source motion vector can be obtained, and the first target motion vector is determined based on the first motion vector difference and the first source motion vector, that is, the sum of the first source motion vector, and the first source motion vector is taken into as the first target motion vector. A second motion vector difference corresponding to the second source motion vector can be obtained, and a second target motion vector is determined based on the second motion vector difference and the second source motion vector, that is, the sum of the second motion vector difference, and the second source motion vector is taken as the second target motion vector motion vector.
[000424] Для стороны кодера кодированный битовый поток текущего блока может переносить информацию разности горизонтальных составляющих (например, абсолютное значение разности горизонтальных составляющих и/или значение со знаком разности горизонтальных составляющих) и информацию разности вертикальных составляющих (например, абсолютное значение разности вертикальных составляющих и/или значение со знаком разности вертикальных составляющих) первой разности векторов движения, а также информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения.[000424] For the encoder side, the encoded bit stream of the current block may carry horizontal component difference information (e.g., the absolute value of the horizontal component difference and/or the signed value of the horizontal component difference) and vertical component difference information (e.g., the absolute value of the vertical component difference and/or or the value with the sign of the vertical component difference) of the first motion vector difference, as well as the horizontal component difference information and the vertical component difference information of the second motion vector difference.
[000425] После приема кодированного битового потока текущего блока сторона декодера может анализировать информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих первой разности векторов движения. Сторона декодера также может анализировать информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих второй разности векторов движения. Первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения, а второй целевой вектор движения определяют на основе второй разности векторов движения и второго исходного вектора движения.[000425] After receiving the encoded bitstream of the current block, the decoder side can analyze the horizontal component difference information and the vertical component difference information of the first motion vector difference from the encoded bitstream, and determine the first motion vector difference based on the horizontal component difference information and the first difference vertical component difference information motion vectors. The decoder side can also analyze the horizontal component difference information and the vertical component difference information of the second motion vector difference from the encoded bit stream, and determine the second motion vector difference based on the horizontal component difference information and the vertical component difference information of the second motion vector difference. The first target motion vector is determined based on the first difference of motion vectors and the first source motion vector, and the second target motion vector is determined based on the second difference of motion vectors and the second source motion vector.
[000426] В возможной реализации сторона кодера может также кодировать первый флаг подрежима и второй флаг подрежима режима EAWP в кодированном битовом потоке, при этом первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения или отсутствие наложения разности векторов движения на первый исходный вектор движения; второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения или отсутствие наложения разности векторов движения на второй исходный вектор движения.[000426] In an exemplary implementation, the encoder side may also encode a first sub-mode flag and a second sub-mode flag of the EAWP mode in the encoded bitstream, wherein the first sub-mode flag indicates whether the motion vector difference is superimposed on the first original motion vector or whether the motion vector difference is not superimposed on the first original motion vector; the second submode flag indicates that the motion vector difference is superimposed on the second original motion vector or that the motion vector difference is not superimposed on the second original motion vector.
[000427] После приема кодированного битового потока текущего блока сторона декодера может сначала анализировать первый флаг подрежима и второй флаг подрежима режима EAWP из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения, сторона декодера анализирует информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих первой разности векторов движения из кодированного битового потока текущего блока и определяет первую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих первой разности векторов движения, а затем определяет первый целевой вектор движения текущего блока на основе первого исходного вектора движения и первой разности векторов движения. Если первый флаг подрежима указывает на то, что разность векторов движения не накладывается на первый исходный вектор движения, сторона декодера не анализирует информацию разности горизонтальных составляющих или информацию разности вертикальных составляющих первой разности векторов движения, а напрямую принимает первый исходный вектор движения в качестве первого целевого вектора движения текущего блока. Если второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения, сторона декодера анализирует информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения из кодированного битового потока текущего блока и определяет вторую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих второй разности векторов движения, а затем определяет второй целевой вектор движения текущего блока на основе второго исходного вектора движения и второй разности векторов движения. Если второй флаг подрежима указывает на то, что разность векторов движения не накладывается на второй исходный вектор движения, сторона декодера не анализирует информацию разности горизонтальных составляющих или информацию разности вертикальных составляющих второй разности векторов движения, а напрямую принимает второй исходный вектор движения в качестве второго целевого вектора движения текущего блока.[000427] After receiving the encoded bitstream of the current block, the decoder side may first analyze the first submode flag and the second submode flag of the EAWP mode from the encoded bitstream of the current block. If the first submode flag indicates superposition of the motion vector difference on the first original motion vector, the decoder side analyzes the horizontal component difference information and the vertical component difference information of the first motion vector difference from the encoded bitstream of the current block, and determines the first motion vector difference based on the horizontal component difference information. and vertical component difference information of the first motion vector difference, and then determines a first target motion vector of the current block based on the first source motion vector and the first motion vector difference. If the first sub-mode flag indicates that the motion vector difference is not superimposed on the first source motion vector, the decoder side does not analyze the horizontal component difference information or the vertical component difference information of the first motion vector difference, but directly takes the first source motion vector as the first target vector movements of the current block. If the second submode flag indicates superposition of the motion vector difference on the second original motion vector, the decoder side analyzes the horizontal component difference information and the vertical component difference information of the second motion vector difference from the encoded bit stream of the current block, and determines the second motion vector difference based on the horizontal component difference information. and vertical component difference information of the second motion vector difference, and then determines a second target motion vector of the current block based on the second source motion vector and the second motion vector difference. If the second sub-mode flag indicates that the motion vector difference is not superimposed on the second source motion vector, the decoder side does not analyze the horizontal component difference information or the vertical component difference information of the second motion vector difference, but directly takes the second source motion vector as the second target vector movements of the current block.
[000428] Вариант 14 осуществления изобретения: на основе вариантов 11-13 осуществления изобретения для двух разностей векторов движения соответствующий синтаксис для наложения разности векторов движения на информацию об однонаправленном движении описан ниже в сочетании с несколькими конкретными сценариями применения.[000428] Embodiment 14: Based on Embodiments 11 to 13 for two motion vector differences, the corresponding syntax for overlaying the motion vector difference with unidirectional motion information is described below in combination with several specific application scenarios.
[000429] Сценарий 1 применения: в таблице 4 показан пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, а AwpFlag указывает, находится ли текущий блок в режиме AWP.[000429] Application Scenario 1: Table 4 shows an example of the corresponding syntax, where SkipFlag indicates whether the current block is in skip mode, DirectFlag indicates whether the current block is in direct mode, and AwpFlag indicates whether the current block is in AWP mode.
[000430] awp_idx (индекс углового режима взвешенного предсказания) представляет собой значение индекса углового режима взвешенного предсказания в режиме пропуска или в прямом режиме, и значение AwpIdx (см. вариант 8 осуществления изобретения для определения AwpIdx) может быть равно значению awp_idx. Если в битовом потоке нет awp_idx, значение AwpIdx равно 0.[000430] awp_idx (weighted prediction angle mode index) is the weighted prediction angle mode index value in skip mode or forward mode, and the AwpIdx value (see Embodiment 8 to determine AwpIdx) may be equal to the awp_idx value. If there is no awp_idx in the bitstream, the value of AwpIdx is 0.
[000431] awp_cand_idx0 (первый индекс информации о движении углового режима взвешенного предсказания) представляет собой первое значение индекса информации о движении углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx0 (см. вариант 10 осуществления изобретения для соответствующего определения) равно значению awp_cand_idx0. Если в битовом потоке нет awp_cand_idx0, значение AwpCandIdx0 равно 0.[000431] awp_cand_idx0 (first weighted prediction angular mode motion information index) is the first value of the weighted prediction angular mode motion information index in the skip mode or direct mode. The value of AwpCandIdx0 (see Embodiment 10 for the corresponding definition) is equal to the value of awp_cand_idx0. If there is no awp_cand_idx0 in the bitstream, the value of AwpCandIdx0 is 0.
[000432] awp_cand_idx1 (второй индекс информации о движении для углового режима взвешенного предсказания) представляет собой второе значение индекса информации о движении для углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx1 (см. вариант 10 осуществления изобретения для соответствующего определения) равно значению awp_cand_idx1. Если в битовом потоке нет awp_cand_idx1, значение AwpCandIdx1 равно 0.[000432] awp_cand_idx1 (second motion information index for angular weighted prediction mode) is a second motion information index value for angular weighted prediction mode in skip mode or direct mode. The value of AwpCandIdx1 (see Embodiment 10 for the corresponding definition) is equal to the value of awp_cand_idx1. If there is no awp_cand_idx1 in the bitstream, the value of AwpCandIdx1 is 0.
[000433] awp_mvd_flag (флаг расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_flag является первым значением (например, 1), это указывает на то, что текущий блок находится в расширенном угловом режиме взвешенного предсказания; когда awp_mvd_flag является вторым значением (например, 0), это указывает на то, что текущий блок находится в нерасширенном угловом режиме взвешенного предсказания. Например, значение AwpMvdFlag может быть равно значению awp_mvd_flag. Если в битовом потоке нет awp_mvd_flag, значение AwpMvdFlag равно 0.[000433] awp_mvd_flag (extended angle weighted prediction mode flag) is a binary variable. When awp_mvd_flag is the first value (for example, 1), it indicates that the current block is in extended angle weighted prediction mode; when awp_mvd_flag is the second value (eg 0), it indicates that the current block is in non-extended angle weighted prediction mode. For example, the value of AwpMvdFlag can be equal to the value of awp_mvd_flag. If there is no awp_mvd_flag in the bitstream, the value of AwpMvdFlag is 0.
[000434] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.[000434] awp_mvd_sub_flag0 (first flag of the extended angle weighted prediction mode submode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag0 is the second value, it indicates that the first motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag0 may be equal to the value of awp_mvd_sub_flag0. If there is no awp_mvd_sub_flag0 in the bitstream, the value of AwpMvdSubFlag0 is 0.
[000435] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, может быть следующий случай: если значение AwpMvdFlag равно 1, значение AwpMvdSubFlag1 равно 1, в противном случае значение AwpMvdSubFlag1 может быть 0.[000435] awp_mvd_sub_flag1 (second advanced angle weighted prediction mode submode flag) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag1 is the second value, it indicates that the second motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag1 may be equal to the value of awp_mvd_sub_flag1. If there is no awp_mvd_sub_flag1 in the bitstream, the following case may be: if the value of AwpMvdFlag is 1, the value of AwpMvdSubFlag1 is 1, otherwise the value of AwpMvdSubFlag1 may be 0.
[000436] awp_mvd_dir0 (значение индекса направления разности векторов движения для первой информации о движении) представляет собой значение индекса направления для разности векторов движения для первой информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdDir0 может быть равно значению awp_mvd_dir0. Если в битовом потоке нет awp_mvd_dir0, значение AwpMvdDir может быть равно 0.[000436] awp_mvd_dir0 (motion vector difference direction index value for first motion information) is a motion vector difference direction index value for the first motion information of the extended angle weighted prediction mode. For example, the value of AwpMvdDir0 may be equal to the value of awp_mvd_dir0. If there is no awp_mvd_dir0 in the bitstream, the value of AwpMvdDir may be 0.
[000437] awp_mvd_step0 (значение индекса длины шага разности векторов движения первой информации о движении) представляет собой значение индекса длины шага разности векторов движения первой информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdStep0 может быть равно значению awp_mvd_step0. Если в битовом потоке нет awp_mvd_step0, значение AwpMvdStep0 может быть равно 0.[000437] awp_mvd_step0 (the motion vector difference step length index value of the first motion information) is the motion vector difference step length index value of the first motion information extended angle weighted prediction mode. For example, the value of AwpMvdStep0 may be equal to the value of awp_mvd_step0. If there is no awp_mvd_step0 in the bitstream, the value of AwpMvdStep0 may be 0.
[000438] awp_mvd_dir1 (значение индекса направления разности векторов движения второй информации о движении) представляет собой значение индекса направления разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdDir1 может быть равно значению awp_mvd_dir1. Если в битовом потоке нет awp_mvd_dir1, значение AwpMvdDir1 может быть равно 0.[000438] awp_mvd_dir1 (second motion information motion vector difference direction index value) is a motion vector difference direction index value of the second motion information extended angle weighted prediction mode. For example, the value of AwpMvdDir1 may be equal to the value of awp_mvd_dir1. If there is no awp_mvd_dir1 in the bitstream, the value of AwpMvdDir1 may be 0.
[000439] awp_mvd_step1 (значение индекса длины шага разности векторов движения второй информации о движении) представляет собой значение индекса длины шага разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdStep1 может быть равно значению awp_mvd_step1. Если в битовом потоке нет awp_mvd_step1, значение AwpMvdStep1 может быть равно 0.[000439] awp_mvd_step1 (second motion information motion vector difference step length index value) is the motion vector difference step length index value of the second motion information extended angle weighted prediction mode. For example, the value of AwpMvdStep1 may be equal to the value of awp_mvd_step1. If there is no awp_mvd_step1 in the bitstream, the value of AwpMvdStep1 may be 0.
[000440] Сценарий 2 применения: таблица 5 показывает пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, а AwpFlag указывает, находится ли текущий блок в режиме AWP.[000440] Application Scenario 2: Table 5 shows an example of the corresponding syntax, where SkipFlag indicates whether the current block is in skip mode, DirectFlag indicates whether the current block is in forward mode, and AwpFlag indicates whether the current block is in AWP mode.
[000441] Для awp_idx, awp_cand_idx0 и awp_cand_idx1 может быть сделана ссылка на сценарий 1 применения, и здесь не приводится избыточных описаний.[000441] For awp_idx, awp_cand_idx0 and awp_cand_idx1, reference may be made to
[000442] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первым значением, оно указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.[000442] awp_mvd_sub_flag0 (first flag of the extended angle weighted prediction mode submode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag0 is the second value, it indicates that the first motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag0 may be equal to the value of awp_mvd_sub_flag0. If there is no awp_mvd_sub_flag0 in the bitstream, the value of AwpMvdSubFlag0 is 0.
[000443] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, значение AwpMvdSubFlag1 равно 0.[000443] awp_mvd_sub_flag1 (second advanced angle weighted prediction mode submode flag) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag1 is the second value, it indicates that the second motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag1 may be equal to the value of awp_mvd_sub_flag1. If there is no awp_mvd_sub_flag1 in the bitstream, the value of AwpMvdSubFlag1 is 0.
[000444] Для awp_mvd_dir0, awp_mvd_step0, awp_mvd_dir1 и awp_mvd_step1 можно сделать ссылку на сценарий 1 применения.[000444] Awp_mvd_dir0, awp_mvd_step0, awp_mvd_dir1 and awp_mvd_step1 can be referenced to
[000445] Например, сценарий 1 применения и сценарий 2 применения отличаются следующим: в сценарии 1 применения присутствует синтаксис awp_mvd_flag, а в сценарии 2 применения синтаксис awp_mvd_flag отсутствует. В сценарии 1 применения расширенный угловой режим взвешенного предсказания управляется посредством awp_mvd_flag, то есть расширенный угловой режим взвешенного предсказания управляется главным переключателем.[000445] For example,
[000446] Например, сценарии 1 и 2 применения могут быть реализациями варианта 12 осуществления изобретения.[000446] For example,
[000447] Сценарий 3 применения: в таблице 6 показан пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, а AwpFlag указывает, находится ли текущий блок в режиме AWP.[000447] Application Scenario 3: Table 6 shows an example of the corresponding syntax, where SkipFlag indicates whether the current block is in skip mode, DirectFlag indicates whether the current block is in direct mode, and AwpFlag indicates whether the current block is in AWP mode.
[000448] awp_idx (индекс углового режима взвешенного предсказания) представляет собой значение индекса углового режима взвешенного предсказания в режиме пропуска или в прямом режиме, и значение AwpIdx может быть равно значению awp_idx. Если в битовом потоке нет awp_idx, значение AwpIdx равно 0.[000448] awp_idx (weighted prediction angular mode index) is a weighted prediction angular mode index value in skip mode or forward mode, and the value of AwpIdx may be equal to the value of awp_idx. If there is no awp_idx in the bitstream, the value of AwpIdx is 0.
[000449] awp_cand_idx0 (первый индекс информации о движении для углового режима взвешенного предсказания) является первым значением индекса информации о движении для углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx0 (см. вариант 10 осуществления изобретения для соответствующего определения) равно значению awp_cand_idx0. Если в битовом потоке нет awp_cand_idx0, значение AwpCandIdx0 равно 0.[000449] awp_cand_idx0 (first motion information index for angular weighted prediction mode) is the first value of the motion information index for angular weighted prediction mode in skip mode or direct mode. The value of AwpCandIdx0 (see Embodiment 10 for the corresponding definition) is equal to the value of awp_cand_idx0. If there is no awp_cand_idx0 in the bitstream, the value of AwpCandIdx0 is 0.
[000450] awp_cand_idx1 (второй индекс информации о движении для углового режима взвешенного предсказания) является вторым значением индекса информации о движении для углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx1 (см. вариант 10 осуществления изобретения для соответствующего определения) равно значению awp_cand_idx1. Если в битовом потоке нет awp_cand_idx1, значение AwpCandIdx1 равно 0.[000450] awp_cand_idx1 (second motion information index for angular weighted prediction mode) is the second motion information index value for angular weighted prediction mode in skip mode or direct mode. The value of AwpCandIdx1 (see Embodiment 10 for the corresponding definition) is equal to the value of awp_cand_idx1. If there is no awp_cand_idx1 in the bitstream, the value of AwpCandIdx1 is 0.
[000451] awp_mvd_flag (флаг расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_flag является первым значением (например, 1), это указывает на то, что текущий блок находится в расширенном угловом режиме взвешенного предсказания; когда awp_mvd_flag является вторым значением (например, 0), это указывает на то, что текущий блок находится в нерасширенном угловом режиме взвешенного предсказания. Например, значение AwpMvdFlag может быть равно значению awp_mvd_flag. Если в битовом потоке нет awp_mvd_flag, значение AwpMvdFlag равно 0.[000451] awp_mvd_flag (extended angle weighted prediction mode flag) is a binary variable. When awp_mvd_flag is the first value (for example, 1), it indicates that the current block is in extended angle weighted prediction mode; when awp_mvd_flag is the second value (eg 0), it indicates that the current block is in non-extended angle weighted prediction mode. For example, the value of AwpMvdFlag can be equal to the value of awp_mvd_flag. If there is no awp_mvd_flag in the bitstream, the value of AwpMvdFlag is 0.
[000452] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.[000452] awp_mvd_sub_flag0 (first flag of the extended angle weighted prediction mode submode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag0 is the second value, it indicates that the first motion information of the extended angle weighted prediction mode should not overlap with the motion information difference. For example, the value of AwpMvdSubFlag0 may be equal to the value of awp_mvd_sub_flag0. If there is no awp_mvd_sub_flag0 in the bitstream, the value of AwpMvdSubFlag0 is 0.
[000453] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке отсутствует awp_mvd_sub_flag1, могут быть следующие случаи: если значение AwpMvdFlag равно 1, значение AwpMvdSubFlag1 равно 1, в противном случае значение AwpMvdSubFlag1 может быть равно 0. Например, awp_mv_diff_x_abs0 (абсолютное значение разности горизонтальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_abs0 (абсолютное значение разности вертикальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) являются абсолютными значениями первой разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXAbs0 равно значению awp_mv_diff_x_abs0, а значение AwpMvDiffYAbs0 равно значению awp_mv_diff_у_abs0. awp_mv_diff_x_sign0 (значение со знаком разности горизонтальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_у_sign0 (значение со знаком разности вертикальных составляющих первого вектора движения в расширенном угловом режиме взвешенного предсказания) являются знаковыми битами первой разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXSign0 равно значению awp_mv_diff_x_sign0, а значение AwpMvDiffYSign0 равно значению awp_mv_diff_у_sign0.[000453] awp_mvd_sub_flag1 (second advanced angle weighted prediction mode submode flag) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag1 is the second value, it indicates that the second motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag1 may be equal to the value of awp_mvd_sub_flag1. If there is no awp_mvd_sub_flag1 in the bit stream, the following cases may occur: if the value of AwpMvdFlag is 1, the value of AwpMvdSubFlag1 is 1, otherwise the value of AwpMvdSubFlag1 may be 0. For example, awp_mv_diff_x_abs0 (the absolute value of the difference of the horizontal components of the first motion vector in the extended angular weighted mode prediction) and awp_mv_diff_y_abs0 (the absolute value of the difference of the vertical components of the first motion vector in the extended angle weighted prediction mode) are the absolute values of the first difference of the motion vectors of the extended angle weighted prediction mode. The value of AwpMvDiffXAbs0 is equal to the value of awp_mv_diff_x_abs0, and the value of AwpMvDiffYAbs0 is equal to the value of awp_mv_diff_y_abs0. awp_mv_diff_x_sign0 (the signed value of the difference of the horizontal components of the first motion vector in the extended angular weighted prediction mode) and awp_mv_diff_y_sign0 (the signed value of the difference of the vertical components of the first motion vector in the extended angular weighted prediction mode) are the sign bits of the first difference of the extended angular weighted prediction mode motion vectors. The value of AwpMvDiffXSign0 is equal to the value of awp_mv_diff_x_sign0, and the value of AwpMvDiffYSign0 is equal to the value of awp_mv_diff_y_sign0.
[000454] В возможной реализации, если в битовом потоке нет awp_mv_diff_x_sign0 или awp_mv_diff_y_sign0, значение AwpMvDiffXSign0 или значение AwpMvDiffYSign0 равно 0. Если значение AwpMvDiffXSign0 равно 0, значение AwpMvDiffX0 равно AwpMvDiffXAbs0; если значение AwpMvDiffXSign0 равно 1, то значение AwpMvDiffX0 равно -AwpMvDiffXAbs0; если значение AwpMvDiffYSign0 равно 0, то значение AwpMvDiffY0 равно AwpMvDiffYAbs0; если значение AwpMvDiffYSign0 равно 1, то значение AwpMvDiffY0 равно AwpMvDiffYAbs0. Значения AwpMvDiffX0 и AwpMvDiffY0 находятся в диапазоне от -32768 до 32767.[000454] In a possible implementation, if there is no awp_mv_diff_x_sign0 or awp_mv_diff_y_sign0 in the bitstream, the value of AwpMvDiffXSign0 or the value of AwpMvDiffYSign0 is 0. If the value of AwpMvDiffXSign0 is 0, the value of AwpMvDiffX0 is AwpMvDiffXAbs0; if the value of AwpMvDiffXSign0 is 1, then the value of AwpMvDiffX0 is -AwpMvDiffXAbs0; if the value of AwpMvDiffYSign0 is 0, then the value of AwpMvDiffY0 is equal to AwpMvDiffYAbs0; if the value of AwpMvDiffYSign0 is 1, then the value of AwpMvDiffY0 is equal to AwpMvDiffYAbs0. The AwpMvDiffX0 and AwpMvDiffY0 values range from -32768 to 32767.
[000455] Например, awp_mv_diff_x_abs1 (абсолютное значение разности горизонтальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_abs1 (абсолютное значение разности вертикальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) являются абсолютными значениями второй разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXAbs1 равно значению awp_mv_diff_x_abs1, а значение AwpMvDiffYAbs1 равно значению awp_mv_diff_у_abs1. awp_mv_diff_х_sign1 (значение со знаком разности горизонтальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) и awp_mv_diff_y_sign1 (значение со знаком разности вертикальных составляющих второго вектора движения в расширенном угловом режиме взвешенного предсказания) являются знаковыми битами второй разности векторов движения расширенного углового режима взвешенного предсказания. Значение AwpMvDiffXSign1 равно значению awp_mv_diff_х_sign1, а значение AwpMvDiffYSign1 равно значению awp_mv_diff_y_sign1.[000455] For example, awp_mv_diff_x_abs1 (absolute value of the difference of the horizontal components of the second motion vector in the extended angular weighted prediction mode) and awp_mv_diff_y_abs1 (absolute value of the difference of the vertical components of the second motion vector in the extended angular weighted prediction mode) are the absolute values of the second difference of the extended angular mode motion vectors weighted prediction. The value of AwpMvDiffXAbs1 is equal to the value of awp_mv_diff_x_abs1, and the value of AwpMvDiffYAbs1 is equal to the value of awp_mv_diff_y_abs1. awp_mv_diff_x_sign1 (the signed value of the difference of the horizontal components of the second motion vector in the extended angular weighted prediction mode) and awp_mv_diff_y_sign1 (the signed value of the difference of the vertical components of the second motion vector in the extended angular weighted prediction mode) are the sign bits of the second difference of the extended angular weighted prediction mode motion vectors. The value of AwpMvDiffXSign1 is equal to the value of awp_mv_diff_x_sign1, and the value of AwpMvDiffYSign1 is equal to the value of awp_mv_diff_y_sign1.
[000456] В возможной реализации, если в битовом потоке нет awp_mv_diff_х_sign1 или awp_mv_diff_у_sign1, значение AwpMvDiffXSign1 или AwpMvDiffYSign1 равно 0. Если значение AwpMvDiffXSign1 равно 0, AwpMvDiffX1 равно AwpMvDiffXAbs1; если значение AwpMvDiffXSign1 равно 1, то значение AwpMvDiffX1 равно -AwpMvDiffXAbs1. Если значение AwpMvDiffYSign1 равно 0, значение AwpMvDiffY1 может быть равно AwpMvDiffYAbsl; если значение AwpMvDiffYSign1 равно 1, значение AwpMvDiffY1 может быть равно AwpMvDiffYAbs1. Значения AwpMvDiffX1 и AwpMvDiffY1 находятся в диапазоне от -32768 до 32767.[000456] In a possible implementation, if there is no awp_mv_diff_x_sign1 or awp_mv_diff_y_sign1 in the bit stream, the value of AwpMvDiffXSign1 or AwpMvDiffYSign1 is 0. If the value of AwpMvDiffXSign1 is 0, AwpMvDiffX1 is equal to AwpMvDiffXAbs1; if the value of AwpMvDiffXSign1 is 1, then the value of AwpMvDiffX1 is -AwpMvDiffXAbs1. If the value of AwpMvDiffYSign1 is 0, the value of AwpMvDiffY1 can be equal to AwpMvDiffYAbsl; if the value of AwpMvDiffYSign1 is 1, the value of AwpMvDiffY1 can be equal to AwpMvDiffYAbs1. The AwpMvDiffX1 and AwpMvDiffY1 values range from -32768 to 32767.
[000457] Сценарий 4 применения. В таблице 7 показан пример соответствующего синтаксиса, где SkipFlag представляет, находится ли текущий блок в режиме пропуска, DirectFlag показывает, находится ли текущий блок в прямом режиме, a AwpFlag показывает, находится ли текущий блок в режиме AWP.[000457]
[000458] Для awp_idx, awp_cand_idx0 и awp_cand_idx1 может быть сделана ссылка на сценарий 1 применения, и здесь не приводится избыточных описаний.[000458] For awp_idx, awp_cand_idx0 and awp_cand_idx1, reference may be made to
[000459] awp_mvd_sub_flag0 (первый флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag0 является первым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag0 является вторым значением, это указывает на то, что первая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag0 может быть равно значению awp_mvd_sub_flag0. Если в битовом потоке нет awp_mvd_sub_flag0, значение AwpMvdSubFlag0 равно 0.[000459] awp_mvd_sub_flag0 (first flag of the extended angle weighted prediction mode submode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag0 is the second value, it indicates that the first motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag0 may be equal to the value of awp_mvd_sub_flag0. If there is no awp_mvd_sub_flag0 in the bitstream, the value of AwpMvdSubFlag0 is 0.
[000460] awp_mvd_sub_flag1 (второй флаг подрежима расширенного углового режима взвешенного предсказания) является бинарной переменной. Когда awp_mvd_sub_flag1 является первым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания должна быть наложена на разность информации о движении; когда awp_mvd_sub_flag1 является вторым значением, это указывает на то, что вторая информация о движении расширенного углового режима взвешенного предсказания не должна накладываться на разность информации о движении. Например, значение AwpMvdSubFlag1 может быть равно значению awp_mvd_sub_flag1. Если в битовом потоке нет awp_mvd_sub_flag1, значение AwpMvdSubFlag1 может быть равно 0.[000460] awp_mvd_sub_flag1 (second advanced angle weighted prediction mode submode flag) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the extended angle weighted prediction mode should be superimposed on the motion information difference; when awp_mvd_sub_flag1 is the second value, it indicates that the second motion information of the extended angle weighted prediction mode should not overlap the motion information difference. For example, the value of AwpMvdSubFlag1 may be equal to the value of awp_mvd_sub_flag1. If there is no awp_mvd_sub_flag1 in the bitstream, the value of AwpMvdSubFlag1 may be 0.
[000461] Например, для параметров, таких как awp_mv_diff_x_abs0, awp_mv_diff_у_abs0, awp_mv_diff_x_sign0, awp_mv_diff_у_sign0, awp_mv_diff_x_abs1, awp_mv_diff_y_abs1, awp_mv_diff_x_sign1 и awp_mv_diff_y_sign1 в таблице 7, можно сделать ссылку на сценарий 3 применения, и здесь не приводится избыточных описаний.[000461] For example, for parameters such as awp_mv_diff_x_abs0, awp_mv_diff_y_abs0, awp_mv_diff_x_sign0, awp_mv_diff_y_sign0, awp_mv_diff_x_abs1, awp_mv_diff_y_abs1, awp_mv_diff_x_sign1 and awp_mv_diff_y_sign1 in Table 7, reference can be made to
[000462] Например, сценарий 3 применения и сценарий 4 применения отличаются следующим: в сценарии 3 применения синтаксис awp_mvd_flag присутствует, а в сценарии 4 применения синтаксис awp_mvd_flag отсутствует. В сценарии 3 применения расширенный угловой режим взвешенного предсказания управляется посредством awp_mvd_flag, то есть расширенный угловой режим взвешенного предсказания управляется главным переключателем.[000462] For example,
[000463] Например, сценарий 3 применения и сценарий 4 применения являются реализациями варианта 13 осуществления изобретения.[000463] For example,
[000464] Сценарий 3 или 4 применения и сценарий 1 или 2 применения отличаются следующим: в сценарии 1 или 2 применения используются несколько предпочтительных MVD, а в сценарии 3 или 4 применения разрешены все MVD в пределах определенного диапазона поиска, например, на основе способа сценария 5 применения поиск всех MVD осуществляется в пределах определенного диапазона поиска.[000464]
[000465] Сценарий 5 применения: в таблице 8 показан пример соответствующего синтаксиса. Таблица 8 иллюстрирует способ кодирования MVD.[000465] Application Scenario 5: Table 8 shows an example of the corresponding syntax. Table 8 illustrates the MVD encoding method.
[000466] 1. Определяют, больше ли |MVD_Х| 0, где |…| является обозначением абсолютного значения, a MVD_X относится к горизонтальной составляющей MVD.[000466] 1. Determine whether |MVD_X| 0, where |…| is the absolute value designation, and MVD_X refers to the horizontal component of MVD.
[000467] 2. Определяют, больше ли |MVD_Y| 0, где |…| является обозначением абсолютного значения, a MVD_Y относится к вертикальной составляющей MVD.[000467] 2. Determine whether |MVD_Y| 0, where |…| is the absolute value designation, and MVD_Y refers to the vertical component of MVD.
[000468] 3. Если |MVD_X| больше 0, определяют, больше ли |MVD_X| 1.[000468] 3. If |MVD_X| greater than 0, determine whether |MVD_X| 1.
[000469] 4. Если |MVD_Y| больше 0, определяют, больше ли |MVD_Y| 1.[000469] 4. If |MVD_Y| greater than 0, determine whether |MVD_Y| 1.
[000470] 5. Если |MVD_X| больше 1, кодируют |MVD_X| - 2.[000470] 5. If |MVD_X| greater than 1, encode |MVD_X| - 2.
[000471] 6. Если |MVD_X| больше 0, кодируют знаковый бит MVD_X.[000471] 6. If |MVD_X| greater than 0, encode the sign bit MVD_X.
[000472] 7. Если |MVD_Y| больше 1, кодируют |MVD_Y| - 2.[000472] 7. If |MVD_Y| greater than 1, encode |MVD_Y| - 2.
[000473] 8. Если |MVD_Y| больше 0, кодируют знаковый бит MVD_Y.[000473] 8. If |MVD_Y| greater than 0, encode the sign bit MVD_Y.
[000474] Сценарий 6 применения: производная версия приведенных выше сценариев 1-4 применения для полного слияния режима AWP и режима EAWP, то есть 0 диапазон добавляется к диапазону без кодирования бита флага, который должен быть разрешен или нет. Например, разность векторов движения поддерживает четыре направления: вверх, вниз, влево и вправо, а разность векторов движения поддерживает следующие 6 конфигураций длины шага: 0-пикселей, -пикселя, -пикселя, 1-пиксель, 2-пикселя, 4-пикселя, то есть добавлена конфигурация длины одного шага 0-пикселей. На основе этого, таблица 4 или 5 может быть обновлена до таблицы 9, а таблица 6 или 7 может быть обновлена до таблицы 10. Для значений соответствующего синтаксиса в таблицах 9 и 10 можно сделать ссылку на таблицу 4 и таблицу 6, и избыточные описания здесь не приводятся.[000474] Application Scenario 6: A derived version of Application Scenarios 1-4 above to completely merge AWP mode and EAWP mode, that is, the 0 range is added to the range without encoding the flag bit that should be enabled or not. For example, motion vector difference supports four directions: up, down, left and right, and motion vector difference supports the following 6 step length configurations: 0-pixels, -pixel, -pixel, 1-pixel, 2-pixel, 4-pixel, that is, the configuration of the length of one step of 0-pixels has been added. Based on this, table 4 or 5 can be updated to table 9, and table 6 or 7 can be updated to table 10. For the corresponding syntax values in tables 9 and 10, reference can be made to table 4 and table 6, and redundant descriptions here are not given.
[000475] Сценарий 7 применения: описанные выше варианты осуществления изобретения включают режим AWP, режим DAWP (двойное внешнее угловое взвешенное предсказание), и можно управлять включением или отключением режима EAWP с помощью высокоуровневого синтаксиса. Например, включением или отключением режима AWP управляют с помощью высокоуровневого синтаксиса 1. В другом примере включением или отключением режима DAWP управляют с помощью высокоуровневого синтаксиса 2. В другом примере включение или отключение режима EAWP осуществляется с помощью высокоуровневого синтаксиса 3. В качестве другого примера, одновременным включением или отключением режимов AWP и DAWP управляют с помощью высокоуровневого синтаксиса 4. В другом примере одновременным включением или отключением режимов AWP и EAWP управляют с помощью высокоуровневого синтаксиса 5. В другом примере одновременным включением или отключением режимов DAWP и EAWP управляют с помощью высокоуровневого синтаксиса 6. В другом примере одновременным включением или отключением режимов AWP, DAWP и EAWP управляют с помощью высокоуровневого синтаксиса 7. Выше приведены лишь примеры, и здесь не делается никаких ограничений.[000475] Application Scenario 7: The above embodiments include an AWP mode, a DAWP (Double Outer Angle Weighted Prediction) mode, and enabling or disabling the EAWP mode can be controlled by high-level syntax. For example, enabling or disabling AWP mode is controlled using high-
[000476] В вышеприведенных вариантах осуществления изобретения высокоуровневый синтаксис может быть высокоуровневым синтаксисом набора параметров последовательности, или высокоуровневым синтаксисом набора параметров изображения, или высокоуровневым синтаксисом уровня заголовка слайса, или высокоуровневым синтаксисом заголовка изображения, что здесь не ограничивается. Например, на основе высокоуровневого синтаксиса уровня набора параметров последовательности, посредством использования sps_awp_enable_flag, sh_awp_enable_flag и awp_enable_flag и т.п., можно управлять включением или отключением режима AWP, или можно управлять включением или отключением режима EAWP, или включением или отключением нескольких режимов можно управлять одновременно, что здесь не ограничено.[000476] In the above embodiments, the high-level syntax may be a sequence parameter set high-level syntax, or an image parameter set high-level syntax, or a slice header level high-level syntax, or an image header high-level syntax, which is not limited to herein. For example, based on the high-level syntax of the sequence parameter set level, through the use of sps_awp_enable_flag, sh_awp_enable_flag and awp_enable_flag, etc., enabling or disabling of the AWP mode can be controlled, or enabling or disabling of the EAWP mode can be controlled, or enabling or disabling of multiple modes can be controlled simultaneously , which is not limited here.
[000477] Например, в приведенных выше вариантах осуществления изобретения целевая информация о движении может быть получена на основе исходной информации о движении. После того как целевая информация о движении получена, целевая информация о движении текущего блока может быть сохранена способом, который здесь не ограничивается.[000477] For example, in the above embodiments, target motion information can be obtained based on source motion information. After the target motion information is acquired, the target motion information of the current block may be stored in a manner that is not limited here.
[000478] Например, вышеприведенные варианты 1-14 осуществления изобретения могут быть реализованы по отдельности или в комбинации. Например, варианты 1 и 2 осуществления изобретения могут быть объединены для реализации; варианты 1 и 3 осуществления изобретения могут быть объединены для реализации; варианты 1, 2 и 3 осуществления изобретения могут быть объединены для реализации. Вариант 4 осуществления может быть объединен с одним или более вариантами 1-3 осуществления изобретения для реализации; вариант 5 осуществления изобретения (или вариант 6 осуществления изобретения, или вариант 7 осуществления изобретения) может быть объединен с вариантом 2 осуществления изобретения (или вариантом 3 осуществления изобретения) для реализации. Вариант 8 осуществления изобретения может быть объединен с вариантом 2 осуществления изобретения (или вариантом 3 осуществления изобретения). Вариант 9 осуществления изобретения может быть объединен с одним или более вариантами 9-14 осуществления изобретения или объединен с одним или более вариантами 1-8 осуществления изобретения для реализации и т.п. Выше приведены лишь примеры, и комбинации вариантов осуществления изобретения здесь не ограничиваются.[000478] For example, the above embodiments 1-14 may be implemented individually or in combination. For example,
[000479] Основываясь на той же самой идее применения, что и вышеописанные способы, варианты осуществления настоящего изобретения также предлагают устройства кодирования и устройства декодирования. Оба типа устройств можно отнести к устройству, показанному на фиг. 8А. Устройство содержит модуль 811 получения, первый модуль 812 определения, второй модуль 813 определения, третий модуль 814 определения и модуль 815 кодирования и декодирования. Для устройства кодирования модуль 815 кодирования и декодирования выполняет функцию кодирования, а для устройства декодирования модуль 815 кодирования и декодирования выполняет функцию декодирования.[000479] Based on the same application idea as the above-described methods, embodiments of the present invention also provide encoding devices and decoding devices. Both types of devices can be classified as the device shown in FIG. 8A. The device includes an acquisition module 811, a first determination module 812, a second determination module 813, a third determination module 814, and an encoding and decoding module 815. For the encoding device, the encoding and decoding unit 815 performs the encoding function, and for the decoding device, the encoding and decoding unit 815 performs the decoding function.
[000480] В некоторых примерах устройство кодирования содержит модуль (например, модуль 811 получения), выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль (например, первый модуль 812 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль (например, второй модуль 813 определения), выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль (например, третий модуль 814 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль (например, модуль 815 кодирования и декодирования), выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000480] In some examples, the encoding apparatus includes a module (eg, acquisition module 811) configured to obtain, for a current block, when it is determined that weighted prediction should be enabled for the current block, a weighted prediction angle of the current block; a module (eg, the first determination module 812) configured to determine, for each pixel position of the current block, a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; a module (eg, a second determination module 813) configured to determine a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position and determine an associated pixel position weight value based on the target pixel position weight value; a module (eg, a third determination module 814) configured to determine, for each pixel position of the current block, a first pixel position prediction value based on the first prediction mode of the current block, and determine a second pixel position prediction value based on the second prediction mode of the current block; based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determine a weighted pixel position prediction value; and a module (eg, encoding and decoding module 815) configured to determine weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[000481] В некоторых примерах устройство декодирования содержит модуль (например, модуль 811 получения), выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль (например, первый модуль 812 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль (например, второй модуль 813 определения), выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль (например, третий модуль 814 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль (например, модуль 815 кодирования и декодирования), выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000481] In some examples, the decoding apparatus includes a module (eg, acquisition module 811) configured to obtain, for a current block, when it is determined that weighted prediction should be enabled for the current block, a weighted prediction angle of the current block; a module (eg, the first determination module 812) configured to determine, for each pixel position of the current block, a surrounding corresponding position indicated by the pixel position from surrounding positions outside the current block based on the weighted prediction angle of the current block; a module (eg, a second determination module 813) configured to determine a target pixel position weight value based on a reference weight value associated with a surrounding corresponding position and determine an associated pixel position weight value based on the target pixel position weight value; a module (eg, a third determining module 814) configured to determine, for each pixel position of the current block, a first pixel position prediction value based on a first prediction mode of the current block, and determine a second pixel position prediction value based on a second prediction mode of the current block; based on the first prediction value, the target weight value, the second prediction value and the associated weight value, determine a weighted pixel position prediction value; and a module (eg, encoding and decoding module 815) configured to determine weighted prediction values of the current block based on the weighted prediction values of all pixel positions of the current block.
[000482] Второй модуль 813 определения также выполнен с возможностью конфигурировать опорные весовые значения для окружающих позиций за пределами текущего блока; при этом опорные весовые значения окружающих позиций за пределами текущего блока предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации; параметры весовой конфигурации включают коэффициент преобразования весов и начальную позицию преобразования весов. Например, начальная позиция преобразования весов определяется по меньшей мере одним из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока или размер текущего блока.[000482] The second determination module 813 is also configured to configure reference weight values for surrounding positions outside the current block; wherein the reference weight values of the surrounding positions outside the current block are pre-configured or configured based on the weight configuration parameters; The weight configuration parameters include the weight conversion factor and the weight conversion starting position. For example, the starting position of the weight transformation is determined by at least one of the current block's weighted prediction angle, the current block's weighted prediction position, or the current block's size.
[000483] Например, количество окружающих позиций за пределами текущего блока определяется на основе размера текущего блока и/или угла взвешенного предсказания текущего блока; опорные весовые значения окружающих позиций за пределами текущего блока монотонно увеличиваются или монотонно уменьшаются.[000483] For example, the number of surrounding positions outside the current block is determined based on the size of the current block and/or the weighted prediction angle of the current block; the reference weights of surrounding positions outside the current block are monotonically increased or monotonically decreased.
[000484] Например, опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций. Опционально, все опорные весовые значения первых соседних позиций являются вторыми опорными весовыми значениями, а все опорные весовые значения вторых соседних позиций являются третьими опорными весовыми значениями, при этом вторые опорные весовые значения отличаются от третьих опорных весовых значений.[000484] For example, reference weights of surrounding positions outside the current block include one or more reference weights of target positions, one or more reference weights of first adjacent positions of target positions, and one or more reference weights of second adjacent positions of target positions. Optionally, all reference weights of the first adjacent positions are second reference weights, and all reference weights of the second adjacent positions are third reference weights, wherein the second reference weights are different from the third reference weights.
[000485] Целевые позиции включают одно опорное весовое значение или по меньшей мере два опорных весовых значения; если целевые позиции включают по меньшей мере два опорных весовых значения, упомянутые по меньшей мере два опорных весовых значения целевых позиций монотонно увеличиваются.[000485] The target positions include one reference weight value or at least two reference weight values; if the target positions include at least two reference weights, the at least two reference weights of the target positions increase monotonically.
[000486] Например, угол взвешенного предсказания текущего блока представляет собой горизонтальный угол; или угол взвешенного предсказания текущего блока представляет собой вертикальный угол; или абсолютное значение наклона угла взвешенного предсказания текущего блока равно n-й степени числа 2, где n является целым числом.[000486] For example, the weighted prediction angle of the current block is a horizontal angle; or the weighted prediction angle of the current block is a vertical angle; or the absolute value of the weighted prediction angle slope of the current block is equal to the nth power of 2, where n is an integer.
[000487] Например, окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя или одну или более позиций субпикселя, или как одну или более позиций целого пикселя, так и одну или более позиций субпикселя. Окружающие позиции за пределами текущего блока могут включать: окружающие позиции в одной строке сверху от текущего блока или окружающие позиции в одном столбце слева от текущего блока.[000487] For example, surrounding positions outside the current block may include one or more whole pixel positions or one or more subpixel positions, or both one or more whole pixel positions and one or more subpixel positions. Surrounding positions outside the current block may include: surrounding positions one row above the current block, or surrounding positions one column to the left of the current block.
[000488] Второй модуль 813 определения выполнен с возможностью определять, если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя на основе опорного весового значения позиции целого пикселя; альтернативно, если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя установлена с опорным весовым значением, определять целевое весовое значение позиции пикселя на основе опорного весового значения позиции субпикселя.[000488] The second determination unit 813 is configured to determine, if the surrounding corresponding position is an integer pixel position and the integer pixel position is set with a reference weight value, a target pixel position weight value based on the reference integer pixel position weight value; alternatively, if the surrounding corresponding position is a subpixel position, and the subpixel position is set with a reference weight value, determine the target pixel position weight value based on the reference subpixel position weight value.
[000489] Например, первый режим предсказания представляет собой режим внешнего предсказания, и второй режим предсказания представляет собой режим внешнего предсказания.[000489] For example, the first prediction mode is an inter prediction mode, and the second prediction mode is an inter prediction mode.
[000490] Например, третий модуль 814 определения также выполнен с возможностью создавать список кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере две информации о возможном движении; выбирать одну информацию о возможном движении из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока; определять первое значение предсказания позиции пикселя на основе первой целевой информации о движении; выбирать другую информацию о возможном движении из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока; определять второе значение предсказания позиции пикселя на основе второй целевой информации о движении.[000490] For example, the third determination module 814 is also configured to create a motion compensation candidate list, wherein the motion compensation candidate list includes at least two possible motion information; select one possible motion information from the motion compensation candidate list as the first target motion information of the current block; determine a first pixel position prediction value based on the first target motion information; select other possible motion information from the motion compensation candidate list as the second target motion information of the current block; determine a second pixel position prediction value based on the second target motion information.
[000491] Третий модуль 814 определения также выполнен с возможностью создания списка кандидатов для компенсации движения, при этом список кандидатов для компенсации движения включает по меньшей мере две информации о возможном движении; выбора одной информации о возможном движении из списка кандидатов для компенсации движения в качестве первой исходной информации о движении текущего блока; определения первой целевой информации о движении текущего блока на основе первой исходной информации о движении; определения первого значения предсказания позиции пикселя на основе первой целевой информации о движении; выбора другой информации о возможном движении из списка кандидатов для компенсации движения в качестве второй исходной информации о движении текущего блока; определения второй целевой информации о движении текущего блока на основе второй исходной информации о движении; определения второго значения предсказания позиции пикселя на основе второй целевой информации о движении.[000491] The third determination module 814 is also configured to create a motion compensation candidate list, wherein the motion compensation candidate list includes at least two possible motion information; selecting one possible motion information from the candidate list for motion compensation as the first initial motion information of the current block; determining first target motion information of the current block based on the first source motion information; determining a first pixel position prediction value based on the first target motion information; selecting other possible motion information from the candidate list for motion compensation as second input motion information of the current block; determining second target motion information of the current block based on the second source motion information; determining a second pixel position prediction value based on the second target motion information.
[000492] Первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, а вторая целевая информация о движении включает второй целевой вектор движения. Третий модуль 814 определения также выполнен с возможностью: получать разность векторов движения, соответствующую первому исходному вектору движения, и определять первый целевой вектор движения на основе разности векторов движения, соответствующей первому исходному вектору движения, и первого исходного вектора движения; получать разность векторов движения, соответствующую второму исходному вектору движения, и определять второй целевой вектор движения на основе разности векторов движения, соответствующей второму исходному вектору движения, и второго исходного вектора движения. Если устройство применяется на стороне декодера, третий модуль 814 определения также сконфигурирован для анализа информации о направлении и информации об амплитуде соответствующей разности векторов движения из кодированного битового потока текущего блока и определения соответствующей разности векторов движения на основе информации о направлении и информации об амплитуде соответствующей разности векторов движения.[000492] The first source motion information includes a first source motion vector, the first target motion information includes a first target motion vector, the second source motion information includes a second source motion vector, and the second target motion information includes a second target motion vector. The third determining unit 814 is also configured to: obtain a motion vector difference corresponding to the first source motion vector, and determine a first target motion vector based on the difference of motion vectors corresponding to the first source motion vector and the first source motion vector; obtain a motion vector difference corresponding to the second source motion vector, and determine a second target motion vector based on the difference of motion vectors corresponding to the second source motion vector and the second source motion vector. If the device is applied at the decoder side, the third determining unit 814 is also configured to analyze the direction information and the amplitude information of the corresponding motion vector difference from the encoded bit stream of the current block and determine the corresponding motion vector difference based on the direction information and the amplitude information of the corresponding vector difference movements.
[000493] Например, если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0); если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad); если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна Al, разность векторов движения равна (-Al, 0); если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Аи, разность векторов движения равна (0, Au).[000493] For example, if the direction information indicates the direction to the right, and the amplitude information indicates that the amplitude is Ar, the motion vector difference is (Ar, 0); if the direction information indicates the downward direction and the amplitude information indicates that the amplitude is Ad, the motion vector difference is (0, -Ad); if the direction information indicates the left direction and the amplitude information indicates that the amplitude is Al, the motion vector difference is (-Al, 0); if the direction information indicates the upward direction and the amplitude information indicates that the amplitude is Au, the motion vector difference is (0, Au).
[000494] Третий модуль 814 определения также сконфигурирован для анализа информации флага из кодированного битового потока текущего блока; если информация флага указывает на наложение разности векторов движения на исходный вектор движения, анализа информации о направлении и информации об амплитуде соответствующей разности векторов движения из кодированного битового потока текущего блока.[000494] The third determination module 814 is also configured to analyze flag information from the encoded bitstream of the current block; if the flag information indicates superposition of the motion vector difference on the original motion vector, analyzing the direction information and amplitude information of the corresponding motion vector difference from the encoded bitstream of the current block.
[000495] На основе идеи применения вышеупомянутых способов, варианты осуществления настоящего изобретения предлагают устройство на стороне декодера (также называемое видеодекодером). Что касается аппаратных средств, архитектура аппаратных средств показана на фиг. 8В. Устройство на стороне декодера содержит один или более процессоров 821 и машиночитаемый носитель 822 данных, при этом машиночитаемый носитель 822 данных хранит машиночитаемые инструкции, исполняемые процессором 821. Процессор 821 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 821 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующих этапов: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока и определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения, определение значения взвешенного предсказания позиции пикселя; определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000495] Based on the idea of applying the above methods, embodiments of the present invention provide a decoder-side device (also called a video decoder). Regarding hardware, the hardware architecture is shown in FIG. 8B. The decoder side apparatus includes one or
[000496] На основе той же идеи применения, что и вышеописанные способы, варианты осуществления настоящего изобретения предлагают устройство на стороне кодера (также называемое видеокодером). Что касается аппаратных средств, архитектура аппаратных средств показана на фиг. 8С. Устройство на стороне кодера содержит один или более процессоров 831 и машиночитаемый носитель 832 данных, который хранит машиночитаемые инструкции, исполняемые процессором 831. Процессор 831 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 831 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока и определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения, определение значения взвешенного предсказания позиции пикселя; определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000496] Based on the same application idea as the above methods, embodiments of the present invention provide an encoder-side device (also called a video encoder). Regarding hardware, the hardware architecture is shown in FIG. 8C. The encoder-side apparatus includes one or
[000497] На основе той же самой идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения также предлагают устройство камеры, которое может содержать устройство кодирования и декодирования в любом из вышеупомянутых вариантов осуществления изобретения. Устройство камеры может использовать описанные выше процессы.[000497] Based on the same application idea as in the above-described methods, embodiments of the present invention also provide a camera device that may include an encoding and decoding apparatus in any of the above-mentioned embodiments. The camera device can use the processes described above.
[000498] На основе той же идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения предлагают машиночитаемый носитель данных, хранящий несколько компьютерных инструкций, которые исполняются процессором для выполнения способов, раскрытых в приведенных выше вариантах осуществления настоящего изобретения, например, способы кодирования и декодирования в описанных выше вариантах осуществления изобретения.[000498] Based on the same application idea as the above-described methods, embodiments of the present invention provide a computer-readable storage medium storing multiple computer instructions that are executed by a processor to perform the methods disclosed in the above embodiments of the present invention, such as encoding methods and decoding in the embodiments described above.
[000499] Системы, устройства, модули или блоки, описанные в приведенных выше вариантах осуществления изобретения, могут быть реализованы в виде компьютерных микросхем или объектов или в виде продуктов с определенными функциями. Типичным устройством реализации является компьютер, и компьютер, в конкретной форме, может быть персональным компьютером, портативным компьютером, сотовым телефоном, телефоном с камерой, смартфоном, персональным цифровым помощником, медиаплеером, навигационным оборудованием, приемопередатчиком электронной почты, игровой приставкой, планшетным компьютером, носимым оборудованием или комбинацией любых из этих устройств. Для удобства описания вышеупомянутые устройства при описании разделены на различные блоки по функциям. При реализации настоящего изобретения функции различных блоков могут быть реализованы в программном и/или аппаратном обеспечении.[000499] The systems, devices, modules or blocks described in the above embodiments of the invention may be implemented as computer chips or objects or as products with certain functions. A typical implementation device is a computer, and a computer, in a specific form, may be a personal computer, laptop computer, cell phone, camera phone, smartphone, personal digital assistant, media player, navigation equipment, email transceiver, game console, tablet computer, wearable equipment or a combination of any of these devices. For convenience of description, the above-mentioned devices are divided into different blocks according to their functions when described. In implementing the present invention, the functions of the various blocks may be implemented in software and/or hardware.
[000500] Специалистам в данной области техники должно быть понятно, что варианты осуществления настоящего изобретения могут быть предоставлены в виде способов, систем или компьютерных программных продуктов. Следовательно, настоящее изобретение может принимать форму чисто аппаратного варианта осуществления, чисто программного варианта осуществления или варианта осуществления, сочетающего как программное обеспечение, так и аппаратное обеспечение. Кроме того, варианты осуществления настоящего изобретения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких доступных для компьютера носителях данных (включая, не ограничиваясь, дисковые запоминающие устройства, CD-ROM, оптические запоминающие устройства и т.д.), которые содержат доступные для компьютера программные коды.[000500] Those skilled in the art will appreciate that embodiments of the present invention may be provided as methods, systems, or computer program products. Therefore, the present invention may take the form of a pure hardware embodiment, a pure software embodiment, or an embodiment combining both software and hardware. In addition, embodiments of the present invention may take the form of a computer program product embodied on one or more computer-accessible storage media (including, but not limited to, disk storage devices, CD-ROMs, optical storage devices, etc.) that comprise computer-accessible program codes.
[000501] Приведенное выше описание представляет лишь некоторые примеры осуществления настоящего изобретения и не ограничивает изобретение. Специалистам в данной области техники понятно, что настоящее изобретение может иметь различные изменения и модификации. Любые модификации, эквивалентные замены, усовершенствования и т.п. настоящего изобретения находятся в пределах объема формулы изобретения.[000501] The above description represents only some examples of implementation of the present invention and does not limit the invention. Those skilled in the art will appreciate that the present invention is subject to various changes and modifications. Any modifications, equivalent replacements, improvements, etc. of the present invention are within the scope of the claims.
Claims (130)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010220130.1 | 2020-03-25 | ||
CN2020100220130 | 2020-03-25 | ||
CN2020100220130.1 | 2020-03-25 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2022123523A Division RU2808807C1 (en) | 2020-03-25 | 2021-03-23 | Method, equipment and device for encoding and decoding |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2023131512A RU2023131512A (en) | 2024-03-25 |
RU2822503C2 true RU2822503C2 (en) | 2024-07-08 |
RU2822503C9 RU2822503C9 (en) | 2024-08-19 |
Family
ID=
Non-Patent Citations (1)
Title |
---|
LIANG ZHAO еt al, Non-CE: Weighted intra and inter prediction mode, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-O0537, 15th Meeting: Gothenburg, 3-12 July 2019. US 2018288425 A1 - 2018.10.04. SHOHEI MATSUO et al, AHG7: Modification of intra angular prediction blending, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JCTVC-L0128, 12th Meeting: Geneva, 14-23 January 2013. CN 109862369 A - 2019.06.07. KRIT PANUSOPONE et al, Weighted Angular Prediction, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-F0104, 6th Meeting: Hobart, 3 March - 7 April 2017. RU 2571550 C2 - 2015.12.20. US 9609343 B1 - 2017.03.28. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2696301C2 (en) | Video signal decoding method | |
EP4221202A1 (en) | Image encoding and decoding method and image decoding device | |
US11889077B2 (en) | Method for encoding/decoding image signal and device therefor | |
CN113395517B (en) | Video signal encoding/decoding method and apparatus thereof | |
CN113382234B (en) | Video signal encoding/decoding method and apparatus for the same | |
JP7625054B2 (en) | Encoding/Decoding Method, Apparatus and Device Thereof | |
JP2023120392A (en) | Image encoding/decoding method and device | |
US20220078436A1 (en) | Image encoding/decoding method and device | |
CN113574878A (en) | Method and apparatus for encoding/decoding video signal | |
CN113709488B (en) | Encoding and decoding method, device and equipment | |
US10205952B2 (en) | Method and apparatus for inter color component prediction | |
RU2822503C2 (en) | Method, equipment and device for encoding and decoding | |
RU2808807C1 (en) | Method, equipment and device for encoding and decoding | |
RU2822503C9 (en) | Method, equipment and device for encoding and decoding | |
RU2809619C1 (en) | Method, equipment and device for encoding and decoding | |
RU2830114C2 (en) | Method, equipment and device for encoding and decoding | |
RU2809701C1 (en) | Method, equipment and device for encoding and decoding | |
WO2024149251A1 (en) | Methods and apparatus of cross-component model merge mode for video coding | |
WO2024149159A1 (en) | Methods and apparatus for improvement of transform information coding according to intra chroma cross-component prediction model in video coding | |
WO2024120478A1 (en) | Method and apparatus of inheriting cross-component models in video coding system | |
KR20240152234A (en) | Video encoding/decoding method, apparatus and recording medium storing bitstream using model-based prediction | |
KR20240153266A (en) | Video encoding/decoding method, apparatus and recording medium storing bitstream using model-based prediction | |
WO2025010276A2 (en) | Method, apparatus, and medium for video processing |