RU2822503C9 - Method, equipment and device for encoding and decoding - Google Patents
Method, equipment and device for encoding and decoding Download PDFInfo
- Publication number
- RU2822503C9 RU2822503C9 RU2023131512A RU2023131512A RU2822503C9 RU 2822503 C9 RU2822503 C9 RU 2822503C9 RU 2023131512 A RU2023131512 A RU 2023131512A RU 2023131512 A RU2023131512 A RU 2023131512A RU 2822503 C9 RU2822503 C9 RU 2822503C9
- Authority
- RU
- Russia
- Prior art keywords
- current block
- value
- motion vector
- reference weight
- information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 143
- 239000013598 vector Substances 0.000 claims description 504
- 230000009466 transformation Effects 0.000 claims description 82
- 230000007423 decrease Effects 0.000 claims description 75
- 238000006243 chemical reaction Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 169
- 230000008569 process Effects 0.000 description 63
- 238000010586 diagram Methods 0.000 description 21
- 230000002123 temporal effect Effects 0.000 description 17
- 230000002457 bidirectional effect Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 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
- 238000005457 optimization Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000001914 filtration Methods 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
- 101100273916 Schizosaccharomyces pombe (strain 972 / ATCC 24843) wip1 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 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
ОБЛАСТЬ ТЕХНИКИAREA OF TECHNOLOGY
[0001] Настоящее изобретение относится к способам, оборудованию и устройствам для кодирования и декодирования.[0001] The present invention relates to methods, equipment and devices for encoding and decoding.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯPREREQUISITES FOR THE CREATION OF THE INVENTION
[0002] Для уменьшения занимаемого объема, видео или изображения передают после кодирования. Способ кодирования видео может включать такие процессы, как предсказание, преобразование, квантование, энтропийное кодирование, фильтрация и т.д. Кодирование с предсказанием может включать внутреннее кодирование и внешнее кодирование. Внешнее кодирование относится к операции использования временной корреляции видео для предсказания текущих пикселей текущего изображения с использованием пикселей соседнего кодированного изображения для достижения эффективного устранения временной избыточности видео. Внутреннее кодирование относится к операции использования пространственной корреляции видео для предсказания текущих пикселей с использованием пикселей одного или более кодированных блоков текущего изображения для достижения эффективного устранения пространственной избыточности видео.[0002] In order to reduce the occupied volume, video or images are transmitted after encoding. The video encoding method may include processes such as prediction, transformation, quantization, entropy encoding, filtering, etc. Predictive encoding may include intra-coding and inter-coding. Inter-coding refers to the operation of using temporal correlation of video to predict current pixels of the current image using pixels of a neighboring encoded image to achieve effective elimination of temporal redundancy of video. Intra-coding refers to the operation of using spatial correlation of video to predict current pixels using pixels of one or more encoded blocks of the current image to achieve effective elimination of spatial redundancy of video.
СУЩНОСТЬ ИЗОБРЕТЕНИЯESSENCE OF THE INVENTION
[0003] Настоящее изобретение предлагает способы, оборудование и устройства для кодирования и декодирования.[0003] The present invention provides methods, equipment and devices for encoding and decoding.
[0004] Настоящее изобретение предлагает способ кодирования и декодирования. Когда определено, что следует разрешить взвешенное предсказание для текущего блока, способ включает: получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0004] The present invention provides a method for encoding and decoding. When it is determined that weighted prediction should be enabled for a current block, the method includes: obtaining a weighted prediction angle of the current block for 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 weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position, determining an associated weight value of the pixel position based on the target weight value of the pixel position; for each pixel position of the current block, determining a first prediction value of the pixel position based on a first prediction mode of the current block, determining a second prediction value of the pixel position 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 prediction value of the pixel position; and determining the 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 device comprising a module 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 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 weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position, and to determine an associated weight value of the pixel position based on the target weight value of the pixel position; the module configured to determine, for each pixel position of the current block, a first prediction value of the pixel position based on a first prediction mode of the current block, to determine a second prediction value of the pixel position 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, determine a weighted prediction value of the pixel position; and a module configured to determine weighted prediction values of the current block based on weighted prediction values of all pixel positions of the current block.
[0006] Настоящее изобретение предлагает устройство декодирования, содержащее модуль, выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль, выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль, выполненный с возможностью определять, для каждой позиции пикселя текущего блока, первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль, выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0006] The present invention provides a decoding device comprising a module 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 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 weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position, and to determine an associated weight value of the pixel position based on the target weight value of the pixel position; the module configured to determine, for each pixel position of the current block, a first prediction value of the pixel position based on a first prediction mode of the current block, to determine a second prediction value of the pixel position 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, determine a weighted prediction value of the pixel position; and a module configured to determine weighted prediction values of the current block based on weighted prediction values of all pixel positions of the current block.
[0007] Настоящее изобретение предлагает устройство на стороне декодера, содержащее процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором. Процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0007] The present invention provides a decoder-side device comprising a processor and a machine-readable storage medium on which machine-readable instructions executable by the processor are stored. The processor is configured to execute machine-readable instructions for performing the following: when it is determined that weighted prediction should be enabled for a 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 weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position, determining an associated weight value of the pixel position based on the target weight value of the pixel position; for each pixel position of the current block, determining a first prediction value of the pixel position based on a first prediction mode of the current block, determining a second prediction value of the pixel position 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 prediction value of a pixel position; and determining weighted prediction values of a current block based on weighted prediction values of all pixel positions of the current block.
[0008] Настоящее изобретение предлагает устройство на стороне кодера, содержащее процессор и машиночитаемый носитель данных, на котором хранятся машиночитаемые инструкции, исполняемые процессором. Процессор сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока, определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определение значения взвешенного предсказания позиции пикселя; и определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[0008] The present invention provides an encoder-side device comprising a processor and a machine-readable storage medium on which machine-readable instructions executable by the processor are stored. The processor is configured to execute the machine-readable instructions for performing the following: when it is determined that weighted prediction should be enabled for a 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 weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position, determining an associated weight value of the pixel position based on the target weight value of the pixel position; for each pixel position of the current block, determining a first prediction value of the pixel position based on a first prediction mode of the current block, determining a second prediction value of the pixel position 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 prediction value of a pixel position; and determining weighted prediction values of a current block based on weighted prediction values of all pixel positions of the current block.
[0009] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором подходящее целевое весовое значение устанавливается для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[0009] As described above, in the embodiments of the present invention, an efficient method for setting weight values is provided in which a suitable target weight value is set for each pixel position of a current block, so that the prediction values of the current block are closer to the original pixels, which improves the prediction accuracy, the prediction efficiency, and the coding efficiency.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS
[00010] Фиг. 1 представляет собой схему структуры системы кодирования видео.[00010] Fig. 1 is a diagram of the structure of a video coding system.
[00011] Фиг. 2А-2С представляют собой схематические диаграммы взвешенного предсказания.[00011] Figs. 2A-2C are schematic diagrams of weighted prediction.
[00012] Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования согласно варианту осуществления настоящего изобретения.[00012] Fig. 3 is a block diagram illustrating a method for encoding and decoding according to an embodiment of the present invention.
[00013] Фиг. 4А представляет собой блок-схему, иллюстрирующую способ кодирования согласно варианту осуществления настоящего изобретения.[00013] Fig. 4A is a block diagram illustrating a coding method according to an embodiment of the present invention.
[00014] Фиг. 4В-4Е представляют собой схемы, иллюстрирующие окружающие позиции за пределами текущего блока.[00014] Figs. 4B-4E are diagrams illustrating surrounding positions beyond the current block.
[00015] Фиг. 4F представляет собой блок-схему, иллюстрирующую способ декодирования согласно варианту осуществления настоящего изобретения.[00015] Fig. 4F is a block diagram 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 block diagram of determining a reference weight value of an ambient position according to an embodiment of the present invention.
[00018] Фиг. 6В представляет собой блок-схему получения весового массива согласно варианту осуществления настоящего изобретения.[00018] Fig. 6B is a block diagram of obtaining a weight array according to an embodiment of the present invention.
[00019] Фиг. 6C-6D представляют собой схематические диаграммы углов текущего блока в различных областях согласно варианту осуществления настоящего изобретения.[00019] Figs. 6C-6D are schematic diagrams of the corners of the current block in various regions according to an embodiment of the present invention.
[00020] Фиг. 7 представляет собой схему, иллюстрирующую соседние блоки текущего блока в соответствии с вариантом осуществления настоящего изобретения.[00020] Fig. 7 is a diagram illustrating neighboring blocks of a current block according to an embodiment of the present invention.
[00021] Фиг. 8А представляет собой структурную схематическую диаграмму, иллюстрирующую устройство кодирования и декодирования согласно варианту осуществления настоящего изобретения.[00021] Fig. 8A is a structural schematic diagram illustrating an encoding and decoding device 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 to describe a particular embodiment of the invention only and are not intended to limit the present invention. The singular forms used in the present specification and the appended claims are also intended to include the plural forms unless the context clearly dictates otherwise. It should also be understood that the phrase "and/or" as used herein refers to any and all possible combinations that include one or more of the related listed elements. It should be noted that while the terms "first," "second," "third," and the like may be used in the present invention to describe various information, such information should not be limited to these terms. These terms are used merely to distinguish one category of information from another. For example, within the spirit of the present invention, first information may be referred to as second information; and, similarly, second information may also be referred to as first information. Depending on the context, the word "if" as used herein may mean "when," or "after," or "in response to a determination."
[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 spatial correlation of video to predict the current pixel using pixels of one or more coded blocks of the current image to eliminate spatial redundancy of video. Intra prediction defines several prediction modes, each of which corresponds to one texture direction (except for the direct current (DC) mode). For example, if the image texture corresponds to the horizontal direction, using the horizontal prediction mode can better predict image information.
[00027] Внешнее предсказание использует пиксели соседних кодированных изображений для предсказания пикселей текущего изображения на основе временной корреляции видео из-за сильной временной корреляции, включенной в видеопоследовательность, чтобы эффективно устранить временную избыточность видео. Внешнее предсказание в стандартах видеокодирования использует технологию компенсации движения на основе блоков, в которой находится наилучший соответствующий блок для каждого блока пикселей текущего изображения в одном или более ранее кодированных изображениях. Этот процесс называется оценкой движения (ME, Motion Estimation).[00027] Inter prediction uses pixels of neighboring coded images to predict pixels of the current image based on temporal correlation of the video due to strong temporal correlation included in the video sequence in order to effectively eliminate temporal redundancy of the video. Inter prediction in video coding standards uses block-based motion compensation technology, in which the best corresponding block is found for each block of pixels of the current image in one or more previously coded images. This process is called Motion Estimation (ME).
[00028] Внутриблочное копирование позволяет ссылаться на один и тот же слайс, если опорные данные текущего блока исходят из того же слайса. В технологии внутриблочного копирования значение предсказания текущего блока может быть получено с использованием вектора блока текущего блока. Например, на основе характеристики, состоящей в том, что имеется большое количество повторяющихся текстур в одном и том же слайсе в содержимом экрана, когда значение предсказания текущего блока получают с использованием вектора блока, эффективность сжатия последовательности содержимого экрана может быть улучшена.[00028] Intra-block copying allows referencing the same slice if the reference data of the current block comes from the same slice. In the intra-block copying technology, a prediction value of the current block can be obtained using a block vector of the current block. For example, based on the characteristic that there are a large number of repeated textures in the same slice in the screen content, when the prediction value of the current block is obtained using the block vector, the compression efficiency of the screen content sequence can be improved.
[00029] Пиксель предсказания относится к значению пикселя, полученному из кодированного/декодированного пикселя, и получают остаток на основе разности между исходным пикселем и пикселем предсказания, а затем выполняют преобразование, квантование, а также кодирование коэффициентов остатков. Пиксель внешнего предсказания для текущего блока относится к значению пикселя, полученному из опорного изображения, и, поскольку позиции пикселей являются дискретными, для получения окончательного пикселя предсказания требуется операция интерполяции. Чем ближе пиксель предсказания к исходному пикселю, тем меньше энергия остатка, полученная при выполнении вычитания для обоих пикселей, и тем выше эффективность сжатия кодирования.[00029] The 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 transformation, quantization, and coding of the residual coefficients are performed. The inter prediction pixel for the current block refers to a pixel value obtained from a 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 for both pixels, and the higher the compression efficiency of coding.
[00030] Вектор движения (MB, Motion Vector). При внешнем кодировании вектор движения используется для представления относительного смещения между текущим блоком текущего изображения и опорным блоком опорного изображения. Каждый из разделенных блоков имеет соответствующий вектор движения, который должен быть передан на сторону декодера. Если вектор движения каждого блока кодируется и передается независимо, особенно при наличии большого количества блоков меньшего размера, необходимо использовать больше битов. Чтобы уменьшить количество битов, используемых для кодирования вектора движения, может использоваться пространственная корреляция между соседними блоками для предсказания вектора движения текущего подлежащего кодированию блока на основе вектора(ов) движения соседнего(их) кодированного(ых) блока(ов), а затем кодируется разность предсказания. Таким образом, количество битов, представляющих векторы движения, может быть эффективно уменьшено. Исходя из этого, в процессе кодирования вектора движения текущего блока сначала используются один или более векторов движения одного или более соседних кодируемых блоков для предсказания вектора движения текущего блока, а затем кодируется разность векторов движения (MVD, Motion Vector Difference) между значением предсказания вектора движения (MVP, Motion Vector Prediction) и реальным значением оценки вектора движения.[00030] Motion Vector (MB). In inter coding, a motion vector is used to represent the relative displacement 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, which must be transmitted to the decoder side. If the motion vector of each block is coded and transmitted independently, especially when there are a large number of smaller blocks, more bits must be used. In order to reduce the number of bits used to code the motion vector, spatial correlation between neighboring blocks can be used to predict the motion vector of the current block to be coded based on the motion vector(s) of the neighboring coded block(s), and then the prediction difference is coded. 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 one or more motion vectors of one or more neighboring coded blocks are used to predict the motion vector of the current block, and then the motion vector difference (MVD) between the motion vector prediction value (MVP) and the actual motion vector estimate value is encoded.
[00031] Информация о движении. Поскольку вектор движения представляет собой смещение позиции из текущего блока к опорному блоку, для точного получения информации об указанном блоке в дополнение к вектору движения также необходима индексная информация об опорном изображении, чтобы указать, какое опорное изображение используется для текущего блока. В технологии кодирования видео для текущего изображения может быть установлен список опорных изображений, и индексная информация об опорном изображении указывает, какое опорное изображение, указанное в списке опорных изображений, используется для текущего блока. Кроме того, многие технологии кодирования также поддерживают несколько списков опорных изображений, так что индекс может также использоваться для указания того, какой список опорных изображений используется, и этот индекс может упоминаться как опорное направление. Подводя итог, можно сказать, что в технологии кодирования видео информация, относящаяся к движению, такая как вектор движения, индексная информация опорного изображения и опорное направление, может совместно называться информацией о движении.[00031] Motion information. Since a motion vector is a position offset from a current block to a reference block, in order to accurately obtain information about a specified block, in addition to the motion vector, index information about a reference picture is also needed to indicate which reference picture is used for the current block. In a video coding technology, a reference picture list may be set for the current picture, and the index information about the reference picture indicates which reference picture specified in the reference picture list is used for the current block. In addition, many coding 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 a video coding technology, motion-related information such as a motion vector, index information of a reference picture, and a reference direction may be collectively referred to as motion information.
[00032] Вектор блока (BV, Block vector). Вектор блока применяется в технологии внутриблочного копирования, которая использует вектор блока для компенсации движения, например, значение предсказания текущего блока получают с использованием вектора блока. Вектор блока представляет собой относительное смещение между текущим блоком и наилучшим соответствующим блоком из кодированных блоков текущего слайса и отличается от вектора движения. На основе характеристики наличия большого количества повторяющихся текстур в одном и том же слайсе, когда значение предсказания текущего блока получают с использованием вектора блока, эффективность сжатия может быть улучшена.[00032] Block vector (BV). Block vector is applied in intra-block copy technology that uses block vector for motion compensation, for example, the prediction value of the current block is obtained using block vector. Block vector represents the relative offset between the current block and the best corresponding block from the coded 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 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, a planar mode, a DC mode, and 33 corner modes. Table 1 shows examples of the intra prediction mode, where the planar mode corresponds to
[00034] Режим палитры. В режиме палитры значения пикселей текущего блока представлены небольшим набором значений пикселей, то есть палитрой. Когда значение пикселя позиции пикселя в текущем блоке близко к цвету в палитре, позиция пикселя кодируется значением индекса соответствующего цвета в палитре. Когда значение пикселя позиции пикселя в текущем блоке не похоже на все цвета в палитре, позиция пикселя должна кодироваться с помощью «сбежавшего» пикселя (escape pixel), и «сбежавший» пиксель непосредственно квантуется, а затем кодируется в битовый поток. На стороне декодера сначала получают одну палитру, например, палитру, хранящую {цвет А, цвет В, цвет С}, и затем определяют, кодирована ли каждая позиция пикселя как «сбежавший» пиксель. Если позиция пикселя не является «сбежавшим» пикселем, индекс позиции пикселя получают из битового потока, а затем из палитры получают цвет на основе индекса позиции пикселя и назначают его позиции пикселя; в противном случае анализируют «сбежавший» пиксель.[00034] Palette mode. In the palette mode, the pixel values of the current block are represented by a small set of pixel values, i.e., 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 colors in the palette, the pixel position must be encoded by an escape pixel, and the escape pixel is directly quantized and then encoded into the bitstream. At the decoder side, one palette is first obtained, for example, a palette storing {color A, color B, color C}, and then it is determined whether each pixel position is encoded as an escape pixel. If the pixel position is not a runaway pixel, the pixel position index is obtained from the bitstream, and then a color based on the pixel position index is obtained from the palette and assigned to the pixel position; otherwise, the runaway 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 for evaluating coding efficiency: bit rate and Peak Signal to Noise Ratio (PSNR). The smaller the bit rate, the higher the compression ratio; and the higher the PSNR, the better the quality of the reconstructed image. When selecting a mode, the decision method is actually a comprehensive evaluation for both modes. For example, the cost corresponding to a mode can be calculated by 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 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 that mode, including the total number of bits required for the encoding mode information, motion information, residuals, etc. When selecting a mode, if RDO is used to make a comparative decision about encoding modes, the best encoding efficiency can usually be guaranteed.
[00036] Структура системы кодирования видео. Структура системы кодирования видео, показанная на фиг. 1, может использоваться для выполнения процесса на стороне кодера в вариантах осуществления настоящего изобретения, а структура системы декодирования видео аналогична фиг. 1 и здесь повторяться не будет. Структура системы декодирования видео может использоваться для выполнения процесса на стороне декодера в вариантах осуществления настоящего изобретения. Например, структура системы кодирования видео и структура системы декодирования видео могут включать, не ограничиваясь этим, модуль внутреннего предсказания, модуль оценки/компенсации движения, буфер опорных изображений, модуль внутриконтурной фильтрации, модуль реконструкции, модуль преобразования, модуль квантования, модуль обратного преобразования, модуль деквантования, энтропийный кодер и т.п. Кодер может выполнять процесс на стороне кодера посредством взаимодействия этих модулей, а декодер может выполнять процесс на стороне декодера посредством взаимодействия этих модулей.[00036] Structure of a video coding system. The structure of the video coding system shown in Fig. 1 can be used to perform a process on the encoder side in the embodiments of the present invention, and the structure of the video decoding system is similar to Fig. 1 and will not be repeated here. The structure of the video decoding system can be used to perform a process on the decoder side in the embodiments of the present invention. For example, the structure of the video coding system and the structure of the video decoding system may include, but are not limited to, an intra prediction unit, a motion estimation/compensation unit, a reference picture buffer, an in-loop filtering unit, a reconstruction unit, a transform unit, a quantization unit, an inverse transform unit, a dequantization unit, an entropy coder, and the like. The encoder can perform the process on the encoder side through the interaction of these units, and the decoder can perform the process on the decoder side through the interaction of these units.
[00037] Например, текущий блок может быть прямоугольным, в то время как граница объекта обычно не является прямоугольной в практических ситуациях. Поэтому для границы объекта обычно используются две различные сущности (например, объект, представленный на переднем плане и на заднем плане, и т.д.). Когда движения двух объектов несовместимы, эти два объекта не могут быть хорошо разделены на основе прямоугольного разделения. Следовательно, текущий блок может быть разделен на два непрямоугольных подблока, и для двух непрямоугольных подблоков выполняется взвешенное предсказание. Например, взвешенное предсказание предназначено для выполнения взвешенной операции на основе нескольких значений предсказания для получения одного или более окончательных значений предсказания. Взвешенное предсказание может включать: комбинированное внешнее/внутреннее предсказание, комбинированное внешнее/внутреннее предсказание, комбинированное внутреннее/внутреннее предсказание и т.д. Для весового(ых) значения(й) взвешенного предсказания одно и то же весовое значение или различные весовые значения могут быть установлены для всех позиций пикселей текущего блока.[00037] For example, the current block may be rectangular, while the boundary of an object is usually not rectangular in practical situations. Therefore, two different entities are usually used for the boundary of an object (for example, an object represented in the foreground and in the background, etc.). When the movements of two objects are incompatible, the two objects cannot be well separated based on the rectangular division. Therefore, the current block may be divided into two non-rectangular sub-blocks, and weighted prediction is performed on the two non-rectangular sub-blocks. For example, weighted prediction is intended to perform a weighted operation based on multiple prediction values to obtain one or more final prediction values. Weighted prediction may include: combined inter/intra prediction, combined inter/intra prediction, combined intra/intra prediction, etc. For the weight(s) of a weighted prediction, 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 a Triangular Partition Mode (TPM) of inter 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 a Geometrical (GEO) division mode for an inter-block mode. The GEO mode is used to divide an inter prediction block into two sub-blocks using one division line. In the GEO mode, there may be more division directions compared to the 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, 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, the pixel position A, the pixel position B, and the pixel position C are located at the lower right of the dividing line, and the pixel position D, the pixel position E, and the pixel position F are located at the upper left of the dividing line. For the pixel position A, the pixel position B, and the pixel position C, the weight values of the
[00045] В приведенных выше примерах для достижения взвешенного предсказания необходимо определить одно или более весовых значений блока предсказания, соответствующих каждой позиции пикселя текущего блока, и взвешенное предсказание выполняется на основе одного или более весовых значений, соответствующих каждой позиции пикселя. Но установка одного или более весовых значений зависит от линии разделения, и необоснованная установка одного или более весовых значений может привести к плохому результату предсказания и низкой эффективности кодирования.[00045] In the above examples, in order to achieve 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 weighted prediction is performed based on one or more weight values corresponding to each pixel position. But the setting of one or more weight values depends on the dividing line, and unreasonable setting of one or more weight values may result in poor prediction results and low coding efficiency.
[00046] Ввиду этого, варианты осуществления настоящего изобретения предлагают способ получения одного или более весовых значений. Таким образом, на основе опорных весовых значений окружающих позиций за пределами текущего блока определяют целевое весовое значение для каждой позиции пикселя текущего блока, таким образом, для каждой позиции пикселя может быть установлено более подходящее целевое весовое значение. В этом случае значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[00046] In view of this, embodiments of the present invention propose a method for obtaining one or more weight values. In this way, based on reference weight values of surrounding positions outside the current block, a target weight value is determined for each pixel position of the current block, so that a more suitable 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, the prediction efficiency, and the coding efficiency.
[00047] Способ кодирования и декодирования согласно вариантам осуществления настоящего изобретения будет подробно описан ниже в сочетании с несколькими конкретными вариантами осуществления изобретения.[00047] The encoding and decoding method according to embodiments of the present invention will be described in detail below in conjunction with several specific embodiments of the invention.
[00048] Вариант 1 осуществления изобретения. Фиг. 3 представляет собой блок-схему, иллюстрирующую способ кодирования и декодирования согласно вариантам осуществления настоящего изобретения. Способ кодирования и декодирования применяется на стороне декодера или на стороне кодера. Способ кодирования и декодирования включает следующие этапы 301-304.[00048]
[00049] На этапе 301, когда определено, что следует разрешить взвешенное предсказание для текущего блока, получают для текущего блока угол взвешенного предсказания текущего блока.[00049] In
[00050] В некоторых примерах текущий блок может включать один подблок, то есть подблок является самим текущим блоком. В этом случае получение угла взвешенного предсказания подблока означает получение угла взвешенного предсказания текущего блока.[00050] In some examples, the current block may include one sub-block, i.e., the sub-block is the current block itself. In this case, obtaining the weighted prediction angle of the 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 enable 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 the embodiments of the present invention. If it is determined that weighted prediction should not be enabled for the current block, no limitations are made on the corresponding implementations in the embodiments of the present invention.
[00052] Например, когда определено, что следует разрешить взвешенное предсказание для текущего блока, должен быть получен угол взвешенного предсказания текущего блока, при этом угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока. Например, угловое направление, указанное позицией пикселя внутри текущего блока, определяют на основе определенного угла взвешенного предсказания, при этом угловое направление указывает на окружающую позицию за пределами текущего блока.[00052] For example, when it is determined that weighted prediction should be enabled for the current block, a weighted prediction angle of the current block should be obtained, wherein the weighted prediction angle refers to an angular direction indicated by a pixel position within the current block. For example, the angular direction indicated by a pixel position within the current block is determined based on a determined weighted prediction angle, wherein the angular direction points to a surrounding position outside the current block.
[00053] На этапе 302 для каждой позиции пикселя текущего блока определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определяют целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией; и определяют ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[00053] At
[00054] Например, поскольку угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания и затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе углового направления.[00054] For example, since a weighted prediction angle refers to an angular direction indicated by a pixel position within a 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 a surrounding corresponding position indicated by the pixel position is determined from surrounding positions outside the current block based on the 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, a target weight value of the pixel position is determined, for example, the reference weight value associated with the surrounding corresponding position can be determined as the target weight value of the pixel.
[00057] После получения целевого весового значения позиции пикселя ассоциированное весовое значение позиции пикселя может быть определено на основе целевого весового значения позиции пикселя. Например, сумма целевого весового значения и ассоциированного весового значения для каждой позиции пикселя может быть фиксированным заданным значением. Следовательно, ассоциированное весовое значение может быть разностью между заданным значением и целевым весовым значением. Если предположить, что заданное значение равно 8, а целевое весовое значение позиции пикселя равно 0, ассоциированное весовое значение позиции пикселя равно 8; если предположить, что целевое весовое значение позиции пикселя равно 1, ассоциированное весовое значение позиции пикселя равно 7 и т.д., при условии, что сумма целевого весового значения и ассоциированного весового значения равна 8.[00057] After obtaining the target pixel position weight value, the 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 predetermined value. Therefore, the associated weight value may be the difference between the predetermined value and the target weight value. Assuming that the predetermined 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, and so on, provided that the sum of the target weight value and the associated weight value is 8.
[00058] На этапе 303 для каждой позиции пикселя текущего блока определяют первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока, определяют второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; и на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения позиции пикселя определяют значение взвешенного предсказания позиции пикселя.[00058] At
[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) / a fixed predetermined 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) / a fixed predetermined 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 formed into the weighted prediction values of the current block.
[00063] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором устанавливают подходящее целевое весовое значение для каждой позиции пикселя текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[00063] As described above, in the embodiments of the present invention, an efficient method for setting weight values is provided, in which a suitable target weight value is set for each pixel position of a current block, so that the prediction values of the current block are closer to the original pixels, which improves the prediction accuracy, the prediction efficiency, and the 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 a possible implementation, if the current block satisfies the 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 condition for enabling weighted prediction, the encoder side may determine that weighted prediction should not be enabled for the current block. For example, the encoder side may determine whether the characteristic 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 characteristic information includes, but is not limited to, one or more of the following: a 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 (e.g., Sequence Parameter Set (SPS) and Sequence Header (SH)), picture level switching control information (e.g., Picture Parameter Set (PPS) and Picture Header (PH)), slice level switching control information (e.g., slice, tile, and patch), or largest coding unit level switching control information (e.g., Largest Coding Unit (LCU) and Coding Tree Unit (CTU)).
[00069] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, тип текущего слайса, в котором расположен текущий блок, удовлетворяющий определенному условию, включает, не ограничиваясь этим, следующее: если тип текущего слайса, в котором расположен текущий блок, является В-слайсом, определяют, что тип слайса удовлетворяет определенному условию; или, если тип текущего слайса, в котором расположен текущий блок, является I-слайсом, определяют, что тип слайса удовлетворяет определенному условию.[00069] For example, if the characteristic information is a type of the current slice in which the current block is located, the type of the current slice in which the current block is located that satisfies a certain condition 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, determining 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, determining 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 information about the size of the current block satisfying a certain condition includes, but is not limited to, the following: if the width is greater than or equal to a first value, and the height is greater than or equal to a second value, it is determined that the information about the size of the current block satisfies a certain condition; or, if the width is greater than or equal to a third value, the height is greater than or equal to a fourth value, the width is less than or equal to a fifth value, and the height is less than or equal to a sixth value, it is determined that the information about the size of the current block satisfies a certain condition; or the product of the width and the height is greater than or equal to a seventh value, it is determined that the information about the size of the current block satisfies a certain condition. The above-mentioned 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 may be 8, the second value may be 8, the third value may be 8, the fourth value may be 8, the fifth value may be 64, the sixth value may be 64, and the seventh value may 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, 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 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, it is determined that the size information of the current block satisfies a certain condition; or, if the product of the width and the height is greater than or equal to 64, it is determined that the size information of the current block satisfies a certain condition. The above examples are merely illustrative 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 information about the size of the current block that satisfies a certain condition includes, but is not limited to, the following: the 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 may be less than or equal to 16, and b may be greater than or equal to 16. For example, a is 8, and b is 64 or 32.
[00072] Например, если информация о характеристиках представляет собой информацию управления переключением, информация управления переключением, удовлетворяющая определенному условию, включает, не ограничиваясь этим, следующее: если информация управления переключением позволяет разрешить взвешенное предсказание для текущего блока, определяют, что информация управления переключением удовлетворяет определенному условию.[00072] For example, if the characteristic 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 a weighted prediction to be resolved for the current block, it is determined that the switching control information satisfies the certain condition.
[00073] Например, если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию о размере текущего блока, когда тип слайса удовлетворяет определенному условию, а информация о размере удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, и информацию управления переключением, когда тип слайса удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой информацию о размере текущего блока и информацию управления переключением, когда информация о размере удовлетворяет определенному условию, и информация управления переключением удовлетворяет определенному условию, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию. Если информация о характеристиках представляет собой тип текущего слайса, в котором расположен текущий блок, информацию о размере текущего блока и информацию управления переключением, когда тип слайса, информация о размере и информация управления переключением удовлетворяют определенным условиям соответственно, определяют, что информация о характеристиках текущего блока удовлетворяет определенному условию.[00073] For example, if the characteristic 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 characteristic information of the current block satisfies the certain condition. If the characteristic information is 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 a certain condition, it is determined that the characteristic information of the current block satisfies the certain condition. If the characteristic information is the size information of the current block and the switching control information, when the size information satisfies a certain condition and the switching control information satisfies a certain condition, it is determined that the characteristic information of the current block satisfies the certain condition. If the characteristic information is a type of the current slice in which the current block is located, information about the size of the current block, and switching control information, when the slice type, the size information, and the switching control information satisfy certain conditions, respectively, it is determined that the characteristic information of the current block satisfies the certain condition.
[00074] В возможной реализации, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона кодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока. На фиг. 4В на основе угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 1 пикселя, позицией 2 пикселя и позицией 3 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока. На фиг. 4С на основе другого угла взвешенного предсказания показано угловое направление, указанное позицией пикселя (например, позицией 2 пикселя, позицией 3 пикселя и позицией 4 пикселя) внутри текущего блока, при этом угловое направление указывает на окружающую позицию за пределами текущего блока.[00074] In a possible implementation, when it is determined that weighted prediction should be enabled for the current block, the encoder side obtains a weighted prediction angle and a weighted prediction position of the current block. In Fig. 4B, based on the weighted prediction angle, an angular direction indicated by a pixel position (e.g.,
[00075] Позиция взвешенного предсказания (также называемая параметром расстояния) используется для конфигурирования опорного весового значения окружающей позиции за пределами текущего блока. Например, на основе таких параметров, как угол взвешенного предсказания, размер текущего блока и т.д., определяют диапазон окружающих позиций за пределами текущего блока, что показано на фиг. 4В и 4С. Диапазон окружающих позиций поровну делится на N частей, где значение N может быть установлено произвольно, например, может быть установлено как 4, 6 или 8 и т.п. Позиция взвешенного предсказания используется для представления того, какая окружающая позиция используется в качестве начальной позиции преобразования весов текущего блока, так что опорные весовые значения окружающих позиций за пределами текущего блока сконфигурированы на основе начальной позиции преобразования весов.[00075] A weighted prediction position (also called a distance parameter) is used to configure a reference weight value of a surrounding position outside the current block. For example, based on parameters such as a weighted prediction angle, a size of the current block, etc., a range of surrounding positions outside the current block is determined, as shown in Figs. 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, 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 given for N=8. As shown in Fig. 4D, after all the 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 ao (that is, the surrounding position marked with the dotted
[00077] Например, для различных углов взвешенного предсказания значения N могут быть различными. Например, для угла А взвешенного предсказания значение N может быть равно 6, что указывает на то, что диапазон окружающих позиций, определенный на основе угла А взвешенного предсказания, поровну разделен на шесть частей. Для угла В взвешенного предсказания значение N может быть равно 8, что указывает на то, что диапазон окружающих позиций, определенный на основе угла В взвешенного предсказания, поровну разделен на восемь частей.[00077] For example, for different weighted prediction angles, the values of N may be different. For example, for weighted prediction angle A, the value of N may be 6, which indicates that the range of surrounding positions determined based on weighted prediction angle A is equally divided into six parts. For weighted prediction angle B, the value of N may be 8, which indicates that the range of surrounding positions determined based on 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 values of N may be the same. In the case of the same value of N, different numbers of weighted prediction positions may be selected. For example, for weighted prediction angle A, the value of N is 8, which indicates that the range of surrounding positions determined based on weighted prediction angle A is equally divided into eight parts; and for weighted prediction angle B, the value of N is 8, which indicates that the range of surrounding positions determined based on weighted prediction angle B is equally divided into eight parts. At the same time, the weighted prediction positions corresponding to weighted prediction angle A may be selected from a total of five positions from a 1 to a 5 , and the weighted prediction positions corresponding to weighted prediction angle B may 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 the range of surrounding positions into N parts rather than into N equal parts, which is not limited to the present invention.
[00080] Например, после того как все окружающие позиции будут поровну разделены на восемь частей, можно получить семь позиций взвешенного предсказания. На этапе 401 сторона кодера может получить одну позицию взвешенного предсказания из семи позиций взвешенного предсказания или выбрать некоторые позиции взвешенного предсказания (например, пять позиций взвешенного предсказания) из семи позиций взвешенного предсказания, а затем получить одну позицию взвешенного предсказания из пяти позиций взвешенного предсказания.[00080] For example, after all the surrounding positions are equally divided into eight parts, seven weighted prediction positions can be obtained. In
[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 accept the same weighted prediction angle as the weighted prediction angle of the current block, and agree to accept the same weighted prediction position as the weighted prediction position of the current block. For example, both the encoder side and the decoder side accept the weighted prediction angle A as the weighted prediction angle of the current block, and both sides accept 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 a weighted prediction angle A and a 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 goes through each weighted prediction angle in the list of weighted prediction angles and sequentially goes through each weighted prediction position in the list of weighted prediction positions, that is, goes through a combination of each weighted prediction angle and each weighted prediction position. For each combination of the weighted prediction angle(s) and the weighted prediction position(s), the weighted prediction angle and the weighted prediction position in the combination may be taken as the weighted prediction angle and the weighted prediction position of the current block, which 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 a 0 , the encoder side executes 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-407 are executed 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 traversal, steps 402-407 are executed 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, and so on. 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 the RDO cost value based on each weighted prediction value in any unlimited 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 index value of the target weighted prediction angle in the list of weighted prediction angles and the index value of the target weighted prediction position in the list of weighted prediction positions into a bitstream. A specific method for implementing the encoding of index values into a bitstream may refer to the application scenario discussed in the description of the second implementation method of the following embodiment of the invention.
[00087] Описанные выше способы являются только иллюстративными и не ограничиваются здесь при условии, что могут быть получены угол взвешенного предсказания и позиция взвешенного предсказания текущего блока. Например, один угол взвешенного предсказания может быть выбран любым путем из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока, и одна позиция взвешенного предсказания может быть выбрана любым путем из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[00087] The above-described methods are only illustrative and are not limited here, provided that the weighted prediction angle and the weighted prediction position of the current block can be obtained. For example, one weighted prediction angle can be selected in any way from the list of weighted prediction angles as the weighted prediction angle of the current block, and one weighted prediction position can be selected in any way from the list of weighted prediction positions as the weighted prediction position of the current block.
[00088] На этапе 402 для каждой позиции пикселя текущего блока сторона кодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока. Для удобства различения в этом варианте осуществления изобретения окружающая позиция за пределами текущего блока, указанная позицией пикселя, может упоминаться как окружающая соответствующая позиция для позиции пикселя.[00088] In
[00089] Например, поскольку угол взвешенного предсказания относится к угловому направлению, указанному позицией пикселя внутри текущего блока, для каждой позиции пикселя текущего блока угловое направление, указанное позицией пикселя, определяют на основе угла взвешенного предсказания, а затем определяют окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока, которому принадлежит позиция пикселя, на основе углового направления.[00089] For example, since a weighted prediction angle refers to an angular direction indicated by a pixel position within a 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 a surrounding corresponding position indicated by the pixel position is determined from surrounding positions outside the current block to which the pixel position belongs based on the 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, the surrounding positions outside the current block may include surrounding positions in the row above the current block, such as surrounding positions in the n1th row above the current block, where n1 may be equal to 1 or 2, 3, etc., which is not limited here; or may include surrounding positions in the column to the left of the current block, such as surrounding positions in the n2nd 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 row below the current block, such as surrounding positions in the n3th row below the current block, where n3 may be equal to 1, 2, 3, etc., which is not limited here; or may include surrounding positions in the column to the right of the current block, such as surrounding positions in the n4th column to the right of the current block, where n4 may be 1 or 2, 3, etc., which 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 are not limited here. In practice, in addition to the surrounding positions outside the current block, internal positions of the current block may also be used, that is, internal positions of the current block are used to replace the above-mentioned surrounding positions outside the current block, for example, internal positions may include internal positions in the n5th row inside the current block, where n5 may be 1 or 2, 3, etc., or internal positions in the n6th column inside the current block, where n6 may 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 outside from two sides of the current block.
[00092] Внутренние позиции текущего блока и окружающие позиции за пределами текущего блока могут использоваться одновременно.[00092] Internal positions of the current block and surrounding positions outside the current block may be used simultaneously.
[00093] Для использования внутренних позиций текущего блока или использования как внутренних позиций текущего блока, так и окружающих позиций за пределами текущего блока текущий блок может быть разделен на два подблока, верхний и нижний, на основе строки, в которой расположены внутренние позиции, или разделен на два подблока, левый и правый, в зависимости от столбца, в котором расположены внутренние позиции. В этом случае два подблока имеют один и тот же угол взвешенного предсказания и одну и ту же позицию взвешенного предсказания.[00093] To use internal positions of the current block or to use both internal positions of the current block and surrounding positions outside the current block, the current block may be divided into two sub-blocks, upper and lower, based on the row in which the internal positions are located, or divided into two sub-blocks, 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 beyond the current block may be located between pixel positions, such as at one or more sub-pixel positions, in which case the position of the current block cannot be simply described as a row "x", but is described as a row of sub-pixel positions located between the row "x" and the row "y".
[00095] Для удобства описания в последующих вариантах осуществления изобретения в качестве примера приняты окружающие позиции в первой строке сверху от текущего блока или окружающие позиции в первом столбце слева от текущего блока, а другие окружающие позиции могут быть реализованы аналогичным образом.[00095] For convenience of description, in the following embodiments of the invention, the surrounding positions in the first row from the top of the current block or the surrounding positions in the first column to the left of the current block are taken as an example, and other surrounding positions can be implemented in a similar manner.
[00096] Например, для диапазона окружающих позиций за пределами текущего блока, этот диапазон может быть предварительно назначен как ряд окружающих позиций за пределами текущего блока. Альтернативно, диапазон окружающих позиций за пределами текущего блока может быть определен на основе угла взвешенного предсказания, например, окружающую позицию, указанную каждой из позиций пикселя внутри текущего блока, определяют на основе угла взвешенного предсказания, а затем определяют диапазон окружающих позиций за пределами текущего блока на основе границы окружающих позиций, указанных всеми позициями пикселей. Диапазон окружающих позиций здесь не ограничен.[00096] For example, for a range of surrounding positions outside the current block, this range may be previously designated as a series of surrounding positions outside the current block. Alternatively, the range of surrounding positions outside the current block may be determined based on a weighted prediction angle, for example, the surrounding position indicated by each of the pixel positions within the current block is determined based on a weighted prediction angle, and then the range of surrounding positions outside the current block is determined 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] The surrounding positions outside the current block may include one or more integer pixel positions or one or more non-integer pixel positions. A 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, etc., which is not limited here. In addition, the surrounding positions outside the current block may include both one or more integer pixel positions and one or more sub-pixel 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 may be arbitrarily configured.
[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 the 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 a strategy, and a specific determination method may relate to subsequent embodiments of the invention.
[000102] Затем сторона кодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, например, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как целевое весовое значение позиции пикселя.[000102] Then, the encoder side determines a target weight value of the pixel position based on a 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 weight value of the pixel position.
[000103] Например, одно или более опорных весовых значений могут быть установлены для окружающих позиций за пределами текущего блока. Конкретный процесс может быть отнесен к последующим вариантам осуществления изобретения. Окружающие позиции за пределами текущего блока могут быть одной или более позициями целого пикселя или одной или более позициями субпикселя. Например, одно или более опорных весовых значений могут быть установлены для одной или более позиций целого пикселя за пределами текущего блока, и/или одно или более опорных весовых значений могут быть установлены для одной или более позиций субпикселя за пределами текущего блока.[000103] For example, one or more reference weight values may be set for surrounding positions outside the current block. The specific process may be referred to in subsequent embodiments of the invention. The surrounding positions outside the current block may be one or more integer pixel positions or one or more subpixel positions. For example, one or more reference weight values may be set for one or more integer pixel positions outside the current block, and/or one or more reference weight values may be set for one or more subpixel positions outside the current block.
[000104] В возможной реализации целевое весовое значение позиции пикселя определяют на основе опорного весового значения, связанного с окружающей соответствующей позицией, что может включать следующие пять случаев. Случай 1. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного весового значения позиции целого пикселя. Случай 2. Если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя не задана с опорным весовым значением, целевое весовое значение позиции пикселя может быть определено на основе опорного(ых) весового(ых) значения(й) соседней(их) позиции(й) позиции целого пикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции целого пикселя. Способ определения здесь не ограничен. Случай 3. Если окружающая соответствующая позиция является позицией субпикселя, а позиция субпикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе опорного весового значения позиции субпикселя. Случай 4. Если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя не задана с опорным весовым значением, целевое весовое значение позиции пикселя определяют на основе одного или более опорных весовых значений одной или более соседних позиций позиции субпикселя. Например, выполняют операцию округления в большую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или выполняют операцию округления в меньшую сторону для опорного весового значения соседней позиции, чтобы получить целевое весовое значение позиции пикселя; или определяют целевое весовое значение позиции пикселя на основе интерполяции опорных весовых значений соседних позиций позиции субпикселя. Способ определения здесь не ограничен. Случай 5, определяют целевое весовое значение позиции пикселя на основе нескольких опорных весовых значений, связанных с окружающей соответствующей позицией. Например, независимо от того, является ли окружающая соответствующая позиция позицией целого пикселя или позицией субпикселя, могут быть получены опорные весовые значения множества соседних позиций окружающей соответствующей позиции. Если окружающая соответствующая позиция установлена с опорным весовым значением, выполняют взвешенную операцию для опорного весового значения окружающей соответствующей позиции и опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя. Если окружающая соответствующая позиция не задана с опорным весовым значением, выполняют операцию взвешивания для опорных весовых значений множества соседних позиций, чтобы получить целевое весовое значение позиции пикселя.[000104] In a possible implementation, the target weight value of the pixel position is determined based on a reference weight value associated with the surrounding corresponding position, which may include the following five cases.
[000105] Вышеприведенные случаи 1-5 являются только примерами, и способы определения целевого весового значения здесь не ограничены.[000105] The above cases 1-5 are only examples, and the methods for determining the target weight value are not limited here.
[000106] На этапе 404 сторона кодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[000106] At
[000107] На этапе 405 для каждой позиции пикселя текущего блока сторона кодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.[000107] At
[000108] Например, первый режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры; и второй режим предсказания может быть любым из режима предсказания внутриблочного копирования, режима внутреннего предсказания, режима внешнего предсказания и режима палитры. Например, первый режим предсказания может быть режимом предсказания внутриблочного копирования, и второй режим предсказания может быть режимом предсказания внутриблочного копирования; первый режим предсказания может быть режимом внешнего предсказания, и второй режим предсказания может быть режимом внешнего предсказания и т.д.[000108] For example, the first prediction mode may be any one 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 one 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 relate to subsequent embodiments of the invention.
[000110] На этапе 406 сторона кодера определяет значение взвешенного предсказания позиции пикселя на основе первого значения предсказания позиции пикселя, целевого весового значения позиции пикселя, второго значения предсказания позиции пикселя и ассоциированного весового значения позиции пикселя.[000110] At
[000111] На этапе 407 сторона кодера определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой из позиций пикселей текущего блока.[000111] At
[000112] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений для установки подходящего целевого весового значения для каждой из позиций пикселей текущего блока, так что значения предсказания текущего блока более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность кодирования.[000112] As described above, in the embodiments of the present invention, an efficient method for setting weight values is provided 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 the prediction accuracy, the prediction efficiency, and the coding efficiency.
[000113] Вариант 3 осуществления изобретения. В варианте 1 осуществления текущий блок может включать один подблок, то есть подблок является самим текущим блоком. Для текущего блока на фиг. 4F показана схематическая диаграмма, иллюстрирующая блок-схему способа декодирования. Способ применяется на стороне декодера и включает следующие этапы 411-417.[000113]
[000114] На этапе 411, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока.[000114] In
[000115] Например, стороне декодера также необходимо определить, следует ли разрешить взвешенное предсказание для текущего блока. Если сторона декодера определяет, что следует разрешить взвешенное предсказание для текущего блока, получают угол взвешенного предсказания и позицию взвешенного предсказания текущего блока и выполняют последующие этапы, в противном случае способ обработки не ограничивается в настоящем изобретении.[000115] For example, the decoder side also needs to determine whether to enable weighted prediction 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 a possible 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 weighted prediction should be enabled for the current block. The decoder side also determines whether the characteristic information of the current block satisfies a certain condition, and if the characteristic information satisfies the certain condition, the decoder side determines that weighted prediction should be enabled for the current block, otherwise the decoder side determines that weighted prediction should not be enabled for the current block. The manner in which the decoder side determines whether to enable weighted prediction for the current block based on the characteristic information may be referred to step 401 and will not be repeated here.
[000117] В другой возможной реализации на стороне кодера определяют, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока. Когда текущий блок поддерживает взвешенное предсказание, также может быть принята другая стратегия, чтобы определить, разрешить ли взвешенное предсказание для текущего блока, например, используют RDO, чтобы определить, разрешить ли взвешенное предсказание для текущего блока. После определения, разрешить ли взвешенное предсказание для текущего блока, когда сторона кодера передает кодированный битовый поток текущего блока, кодированный битовый поток может включать синтаксис для определения, следует ли разрешить взвешенное предсказание для текущего блока, при этом синтаксис указывает, следует ли разрешить взвешенное предсказание для текущего блока. Сторона декодера определяет, поддерживает ли текущий блок взвешенное предсказание, на основе информации о характеристиках текущего блока, и конкретная реализация может быть отнесена к этапу 401 и здесь не повторяется. Когда определяют, что текущий блок поддерживает взвешенное предсказание, сторона декодера может также декодировать синтаксис для определения, следует ли разрешить взвешенное предсказание для текущего блока, из кодированного битового потока и определять, разрешить ли взвешенное предсказание для текущего блока на основе упомянутого синтаксиса.[000117] In another possible implementation, on the encoder side, it is determined whether the current block supports weighted prediction based on the characteristic information of the current block. When the current block supports weighted prediction, another strategy can 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 coded bitstream of the current block, the coded bitstream can include syntax for determining whether to enable weighted prediction for the current block, wherein the syntax indicates whether to enable weighted prediction for the current block. The decoder side determines whether the current block supports weighted prediction based on the characteristic information of the current block, and the specific implementation can be referred to step 401 and is not repeated here. When it is determined that the current block supports weighted prediction, the decoder side may also decode syntax for determining whether to enable weighted prediction for the current block from the encoded bitstream and determine whether to enable weighted prediction for the current block based on the syntax.
[000118] В возможной реализации, когда определено, что следует разрешить взвешенное предсказание для текущего блока, сторона декодера получает угол взвешенного предсказания и позицию взвешенного предсказания текущего блока, при этом соответствующее описание угла взвешенного предсказания и позиции взвешенного предсказания может относиться к этапу 401 и здесь повторяться не будет. Сторона декодера может получить угол взвешенного предсказания и позицию взвешенного предсказания текущего блока следующими способами.[000118] In a possible implementation, when it is determined that weighted prediction should be enabled for the current block, the decoder side obtains a weighted prediction angle and a weighted prediction position of the current block, wherein the corresponding description of the weighted prediction angle and the weighted prediction position may refer to step 401 and will not be repeated here. The decoder side may obtain the weighted prediction angle and the weighted prediction position of the current block in the following ways.
[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. Specific content may relate to the first method in the embodiment of the invention described above.
[000120] Во втором способе на стороне декодера создается список углов взвешенного предсказания, который является таким же, как список углов взвешенного предсказания на стороне кодера. На стороне декодера создается список позиций взвешенного предсказания, который является таким же, как список позиций взвешенного предсказания на стороне кодера. Конкретное содержание может относиться ко второму способу в описанном выше варианте осуществления изобретения. После получения кодированного битового потока текущего блока сторона декодера анализирует информацию указания из кодированного битового потока и выбирает один угол взвешенного предсказания из списка углов взвешенного предсказания в качестве угла взвешенного предсказания текущего блока на основе информации указания и выбирает одну позицию взвешенного предсказания из списка позиций взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока на основе информации указания.[000120] In the second method, a list of weighted prediction angles is created on the decoder side, which is the same as the list of weighted prediction angles on the encoder side. A list of weighted prediction positions is created on the decoder side, which is the same as the list of weighted prediction positions on the encoder side. Specific content may relate to the second method in the embodiment of the invention described above. After obtaining the coded bitstream of the current block, the decoder side analyzes the indication information from the coded 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 as the weighted prediction position of the current block based on the indication information.
[000121] Процесс реализации второго способа будет описан ниже в сочетании с несколькими конкретными сценариями применения.[000121] The process of 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 an encoded bitstream to the decoder side, the encoded bitstream may include
[000123] После приема кодированного битового потока сторона декодера декодирует информацию 1 указания из кодированного битового потока. На основе информации 1 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий информации 1 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 1 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 1 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000123] After receiving the coded 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 the coded bitstream to the decoder side, the coded bitstream may include
[000125] После приема кодированного битового потока сторона декодера анализирует информацию 2 указания и информацию 3 указания из кодированного битового потока. На основе информации 2 указания сторона декодера может выбрать угол взвешенного предсказания, соответствующий значению 1 индекса в списке углов взвешенного предсказания, и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока. На основе информации 3 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую значению 2 индекса в списке позиций взвешенного предсказания, и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000125] After receiving the coded bitstream, the decoder side analyzes the
[000126] Сценарий 3 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. Предпочтительная комбинация конфигурации может быть сконфигурирована в соответствии с опытом, что здесь не ограничивается. Например, они могут договориться о том, что предпочтительная комбинация конфигурации включает предпочтительную комбинацию 1 конфигурации, включающую угол А взвешенного предсказания, и позиция a4 взвешенного предсказания может быть согласована, предпочтительную комбинацию 2 конфигурации, включающую угол В взвешенного предсказания и позицию b4 взвешенного предсказания и т.п.[000126] Application scenario 3: the encoder side and the decoder side may agree on a preferred configuration combination. The preferred configuration combination may be configured according to experience, which is not limited here. For example, they may agree that the preferred configuration combination includes a
[000127] После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера определяет, принадлежит ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания предпочтительной комбинации конфигурации. Если комбинация включена в предпочтительную комбинацию конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания и информацию 5 указания. Информация 4 указания указывает, используется ли предпочтительная комбинация конфигурации для текущего блока. Например, информация 4 указания представляет собой первое значение (например, 0), указывающее, что для текущего блока используется предпочтительная комбинация конфигурации. Информация 5 указания указывает, какая предпочтительная комбинация конфигурации используется для текущего блока. Например, когда значение информации 5 указания равно 0, это может указывать на то, что для текущего блока используется предпочтительная комбинация 1 конфигурации, а когда значение информации 5 указания равно 1, это может указывать на то, что для текущего блока используется предпочтительная комбинация 2 конфигурации.[000127] After determining the target weighted prediction angle and the target weighted prediction position of the current block, the encoder side determines whether the combination of the target weighted prediction angle and the target weighted prediction position belongs to the preferred configuration combination. If the combination is included in the preferred configuration combination, when the encoder side transmits the coded bitstream to the decoder side, the coded bitstream may include
[000128] После приема кодированного битового потока сторона декодера может проанализировать информацию 4 указания и информацию 5 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является первым значением, сторона декодера определяет, что для текущего блока используется предпочтительная комбинация конфигурации. Когда для текущего блока используется предпочтительная комбинация конфигурации, сторона декодера может определить, какая предпочтительная комбинация конфигурации используется для текущего блока, на основе информации 5 указания. Например, когда значение информации 5 указания равно 0, сторона декодера может определить, что для текущего блока используется предпочтительная комбинация 1 конфигурации, например, угол взвешенного предсказания текущего блока представляет собой угол А взвешенного предсказания, а позиция взвешенного предсказания текущего блока является позицией a4 взвешенного предсказания. В другом примере, когда значение информации 5 указания равно 1, сторона декодера может определить, что для текущего блока используется предпочтительная комбинация 2 конфигурации, например, угол взвешенного предсказания текущего блока представляет собой угол В взвешенного предсказания, и позиция взвешенного предсказания текущего блока представляет собой позицию b4 взвешенного предсказания.[000128] After receiving the coded bitstream, the decoder side may 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 combinations 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 coded bitstream may include only 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 target weighted prediction angle and the target weighted prediction position of the current block, the encoder side may determine whether the combination of the target weighted prediction angle and the target weighted prediction position belongs to the preferred configuration combination. If it does not belong to the preferred configuration combination, when the encoder side transmits the coded bitstream to the decoder side, the coded bitstream may include
[000131] После приема кодированного битового потока сторона декодера может проанализировать информацию 4 указания и информацию 6 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда предпочтительная комбинация конфигурации не используется для текущего блока, сторона декодера может выбрать на основе информации 6 указания угол взвешенного предсказания, соответствующий информации 6 указания, из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока; и на основе информации 6 указания сторона декодера может выбрать позицию взвешенного предсказания, соответствующую информации 6 указания, из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000131] After receiving the coded bitstream, the decoder side may analyze the
[000132] Сценарий 5 применения: сторона кодера и сторона декодера могут согласовать предпочтительную комбинацию конфигурации. После определения целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания текущего блока сторона кодера может определить, входит ли комбинация целевого угла взвешенного предсказания и целевой позиции взвешенного предсказания в предпочтительную комбинацию конфигурации. Если комбинация не является предпочтительной комбинацией конфигурации, когда сторона кодера передает кодированный битовый поток на сторону декодера, кодированный битовый поток может включать информацию 4 указания, информацию 7 указания и информацию 8 указания. Например, информация 4 указания указывает, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, информация 4 указания может указывать, что предпочтительная комбинация конфигурации не используется для текущего блока. Информация 7 указания указывает целевой угол взвешенного предсказания текущего блока. Информация 8 указания указывает целевую позицию взвешенного предсказания текущего блока.[000132] Application scenario 5: The encoder side and the decoder side may 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 may 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 coded bitstream to the decoder side, the coded bitstream may include
[000133] После приема кодированного битового потока сторона декодера анализирует информацию 4 указания, информацию 7 указания и информацию 8 указания из кодированного битового потока. На основе информации 4 указания сторона декодера может определить, используется ли предпочтительная комбинация конфигурации для текущего блока. Если информация 4 указания является вторым значением, сторона декодера определяет, что предпочтительная комбинация конфигурации не используется для текущего блока. Когда для текущего блока не используется предпочтительная комбинация конфигурации, сторона декодера может выбрать, на основе информации 7 указания, соответствующий угол взвешенного предсказания из списка углов взвешенного предсказания и принять угол взвешенного предсказания в качестве угла взвешенного предсказания текущего блока; и на основе информации 8 указания сторона декодера может выбрать соответствующую позицию взвешенного предсказания из списка позиций взвешенного предсказания и принять позицию взвешенного предсказания в качестве позиции взвешенного предсказания текущего блока.[000133] After receiving the coded bitstream, the decoder side analyzes the
[000134] Вышеупомянутые первый и второй способы являются просто иллюстративными и не ограничиваются здесь при условии, что сторона декодера может получить угол взвешенного предсказания (то есть целевой угол взвешенного предсказания) и позицию взвешенного предсказания (то есть целевую позицию взвешенного предсказания) текущего блока.[000134] The above-mentioned first and second methods are merely illustrative and are not limited here, provided that the decoder side can obtain the weighted prediction angle (that is, the target weighted prediction angle) and the weighted prediction position (that is, the target weighted prediction position) of the current block.
[000135] На этапе 412 для каждой позиции пикселя текущего блока сторона декодера определяет окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока.[000135] At
[000136] На этапе 413 сторона декодера определяет целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией.[000136] In
[000137] На этапе 414 сторона декодера определяет ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя.[000137] At
[000138] На этапе 415 для каждой позиции пикселя текущего блока сторона декодера определяет первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определяет второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока.[000138] At
[000139] На этапе 416 на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения позиции пикселя сторона декодера определяет значение взвешенного предсказания позиции пикселя.[000139] At
[000140] На этапе 417 сторона декодера определяет значения взвешенного предсказания текущего блока на основе значения взвешенного предсказания каждой из позиций пикселей текущего блока.[000140] In
[000141] Например, процессы реализации этапов 412-417 могут быть отнесены к этапам 402-407, с той разницей, что этапы 412-417 являются процессами на стороне декодера, а не процессами на стороне кодера, поэтому они не будут здесь повторяться.[000141] For example, the processes of implementing steps 412-417 may be classified as steps 402-407, with the difference that steps 412-417 are decoder-side processes rather than encoder-side processes, and so will not be repeated here.
[000142] Как описано выше, в вариантах осуществления настоящего изобретения предоставляется эффективный способ установки весовых значений, в котором устанавливают подходящее целевое весовое значение для каждой из позиций пикселей текущего блока таким образом, чтобы значения предсказания текущего блока были более приближены к исходным пикселям, что повышает точность предсказания, эффективность предсказания и эффективность декодирования.[000142] As described above, in the embodiments of the present invention, an efficient method for setting weight values is provided, 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 closer to the original pixels, which improves the prediction accuracy, the prediction efficiency, and the 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] A reference weight value associated with a surrounding corresponding position may be obtained as follows: based on a coordinate value of a surrounding corresponding position of a current block and a coordinate value of a start position of a weight transformation of the current block, a reference weight value associated with a surrounding corresponding position is determined.
[000148] Например, если окружающая соответствующая позиция является окружающей позицией в одной строке сверху от текущего блока или в одной строке снизу от текущего блока, значение координаты окружающей соответствующей позиции представляет собой значение абсциссы окружающей соответствующей позиции, а значение координаты начальной позиции преобразования весов представляет собой значение абсциссы начальной позиции преобразования весов. В качестве альтернативы, если окружающая соответствующая позиция является окружающей позицией в одном столбце слева от текущего блока или в одном столбце справа от текущего блока, значение координаты окружающей соответствующей позиции является значением ординаты окружающей соответствующей позиции, а значение координаты начальной позиции преобразования весов является значением ординаты начальной позиции преобразования весов.[000148] For example, if the surrounding corresponding position is a surrounding position in one row above the current block or in one row 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 starting position of the weight transformation is the abscissa value of the starting position of the weight transformation. Alternatively, if the surrounding corresponding position is a surrounding position in one column to the left of the current block or in 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 starting position of the weight transformation is the ordinate value of the starting position of the weight transformation.
[000149] Например, позиция пикселя в верхнем левом углу текущего блока (например, первая позиция пикселя в верхнем левом углу) может использоваться в качестве начала координат, а значение координаты окружающей соответствующей позиции текущего блока (например, значение абсциссы или значение ординаты) и значение координаты начальной позиции преобразования весов текущего блока (например, значение абсциссы или значение ординаты) оба являются значениями координат относительно начала координат. Другая позиция пикселя текущего блока также может быть взята в качестве начала координат, и способ реализации аналогичен способу использования позиции пикселя в верхнем левом углу в качестве начала координат.[000149] For example, a 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 a coordinate value of the surrounding corresponding position of the current block (for example, an abscissa value or an ordinate value) and a coordinate value of the starting position of the weight transformation of the current block (for example, an abscissa value or an 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 upper left corner as the origin.
[000150] В возможной реализации, когда определяют опорное весовое значение, связанное с окружающей соответствующей позицией, на основе значения координаты окружающей соответствующей позиции и значения координаты начальной позиции преобразования весов текущего блока, может быть вычислена разность между значением координаты окружающей соответствующей позиции и значением координаты начальной позиции преобразования весов текущего блока. Если разность меньше первого порогового значения, в качестве первого порогового значения определяют опорное весовое значение, связанное с окружающей соответствующей позицией. Если разность больше второго порогового значения, в качестве второго порогового значения определяют опорное весовое значение, связанное с окружающей соответствующей позицией. Если разность не меньше первого порогового значения и не больше второго порогового значения, в качестве разности определяют опорное весовое значение, связанное с окружающей соответствующей позицией. В другой возможной реализации, когда определяют опорное весовое значение, связанное с окружающей соответствующей позицией, на основе значения координаты окружающей соответствующей позиции и значения координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, определяют непосредственно на основе соотношения размера между значением координаты окружающей соответствующей позиции и значением координаты начальной позиции преобразования весов текущего блока.[000150] In a possible implementation, when a 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 initial position of the weight transformation of the current block, a difference between the coordinate value of the surrounding corresponding position and the coordinate value of the initial position of the weight transformation of the current block can be calculated. If the difference is less than a first threshold value, the reference weight value associated with the surrounding corresponding position is determined as the first threshold value. If the difference is greater than a second threshold value, the 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 is not greater 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 determining a reference weight value associated with a surrounding corresponding position based on a coordinate value of the surrounding corresponding position and a coordinate value of the initial 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 initial position of the weight transformation of the current block.
[000151] Например, если значение координаты окружающей соответствующей позиции меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как первое пороговое значение; и, если значение координаты окружающей соответствующей позиции не меньше, чем значение координаты начальной позиции преобразования весов текущего блока, опорное весовое значение, связанное с окружающей соответствующей позицией, может быть определено как второе пороговое значение.[000151] For example, if the coordinate value of the surrounding corresponding position is less than 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 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 starting position of the weight transformation of the current block, the 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 less than 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 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 starting position of the weight transformation of the current block, the 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, wherein the first threshold value is 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 a minimum value of the pre-agreed reference weight values, such as 0, and the second threshold value may be a maximum value of the pre-agreed reference weight values, such as 8, where 0 and 8 are only examples.
[000154] Например, как показано на фиг. 4D, все окружающие позиции поровну разделены на восемь частей для получения семи позиций взвешенного предсказания. Когда позиция взвешенного предсказания равна 0, она указывает на окружающую позицию а0, то есть значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции а0. Когда позиция взвешенного предсказания равна 1, она указывает на окружающую позицию a1, то есть значение координаты начальной позиции преобразования весов является значением координаты окружающей позиции a1, и т.д. Способ определения значения координаты начальной позиции преобразования весов здесь повторяться не будет.[000154] For example, as shown in Fig. 4D, all the 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 , and so on. The method for determining the coordinate value of the starting 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 the 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, a reference weight value associated with the surrounding corresponding position, for example, a target weight value of the pixel position, can be determined from the surrounding positions outside the current block.
[000157] В сочетании с конкретными этапами реализации, показанными на фиг. 6А, ниже будет описан процесс установки опорных весовых значений окружающих позиций.[000157] In combination with the specific implementation steps shown in Fig. 6A, the process of setting the reference weight values of the surrounding positions will be described below.
[000158] На этапе S1 определяют список опорных весовых значений текущего блока.[000158] At step S1, a list of reference weight values of the current block is determined.
[000159] В возможной реализации список опорных весовых значений на уровне последовательности может быть определен как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера могут быть сконфигурированы со списком А1 опорных весовых значений уровня последовательности. Для изображений с несколькими уровнями последовательности все эти изображения используют список А1 опорных весовых значений. Независимо от того, что представляют собой угол взвешенного предсказания и позиция взвешенного предсказания, текущие блоки множества изображений уровня последовательности совместно используют один и тот же список А1 опорных весовых значений.[000159] In a possible implementation, the list of reference weight values at the sequence level may be defined as the list of reference weight values of the current block. For example, both the encoder side and the decoder side may be configured with a list A1 of reference weight values of the sequence level. For pictures with multiple sequence levels, all of these pictures use the list A1 of reference weight values. Regardless of what the weighted prediction angle and the weighted prediction position are, the current blocks of a plurality of pictures of the sequence level share the same list A1 of reference weight values.
[000160] В другой возможной реализации предварительно установленный список опорных весовых значений может быть определен как список опорных весовых значений текущего блока. Например, как сторона кодера, так и сторона декодера могут предварительно установить список опорных весовых значений. Для всех изображений в нескольких последовательностях используется этот список опорных весовых значений. Независимо от того, какие угол взвешенного предсказания и позиция взвешенного предсказания, текущие блоки всех изображений в множестве последовательностей совместно используют один и тот же список опорных весовых значений.[000160] In another possible implementation, the preset list of reference weight values may be defined as a list of reference weight values of the current block. For example, both the encoder side and the decoder side may preset a list of reference weight values. This list of reference weight values is used for all pictures in several sequences. Regardless of the weighted prediction angle and the weighted prediction position, the current blocks of all pictures in the plurality of sequences share the same list of reference weight values.
[000161] В другой возможной реализации список опорных весовых значений, соответствующий углу взвешенного предсказания текущего блока, может быть определен как список опорных весовых значений текущего блока. Например, и сторона кодера, и сторона декодера сконфигурированы с множеством списков опорных весовых значений, и несколько углов взвешенного предсказания могут совместно использовать один и тот же список опорных весовых значений. Например, сконфигурированы список А2 опорных весовых значений и список A3 опорных весовых значений, угол 1 взвешенного предсказания и угол 2 взвешенного предсказания совместно используют список А2 опорных весовых значений, а угол 3 взвешенного предсказания использует список A3 опорных весовых значений. На основе этого, после получения угла взвешенного предсказания текущего блока, если угол взвешенного предсказания текущего блока является углом 1 взвешенного предсказания, список А2 опорных весовых значений, соответствующий углу 1 взвешенного предсказания, определяют как список опорных весовых значений текущего блока.[000161] In another possible implementation, a list of reference weight values corresponding to a weighted prediction angle of the current block may be defined as a list of reference weight values of the current block. For example, both the encoder side and the decoder side are configured with a plurality of lists of reference weight values, and several weighted prediction angles may share the same list of reference weight values. For example, a list of reference weight values A2 and a list of reference weight values 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 weight values corresponding to a weighted prediction angle of the current block and a weighted prediction position of the current block may be defined as a list of reference weight values of the current block. For example, both the encoder side and the decoder side are configured with a plurality of lists of reference weight values, different combinations of a weighted prediction angle and a weighted prediction position may correspond to the same or different lists of reference weight values. For example, a list of reference weight values A4, a list of reference weight values A5, and a list of reference weight values 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 weight values corresponding to the size of the current block and the weighted prediction angle of the current block is defined as a list of reference weight values of the current block. For example, both the encoder side and the decoder side are configured with a plurality of lists of reference weight values, different combinations of the size and the weighted prediction angle may correspond to the same or different lists of reference weight values. For example, a list of reference weight values A7 and a list of reference weight values A8 are configured. The
[000164] Таким образом, можно определить список опорных весовых значений текущего блока, и список опорных весовых значений может включать множество опорных весовых значений, которые предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации.[000164] In this manner, a list of reference weight values of the current block may be defined, and the list of reference weight values may include a plurality of reference weight values that are pre-configured or configured based on the weight configuration parameters.
[000165] Для списка опорных весовых значений текущего блока количество опорных весовых значений в списке опорных весовых значений может быть заданным фиксированным значением, и фиксированное значение может быть установлено произвольно на основе опыта, что здесь не ограничивается. Альтернативно, количество опорных весовых значений в списке опорных весовых значений может быть связано с размером (например, шириной или высотой) текущего слайса, в котором расположен текущий блок, например, количество опорных весовых значений может быть больше ширины текущего слайса или таким же, как ширина текущего слайса; и количество опорных весовых значений может быть больше, чем высота текущего слайса, или таким же, как высота текущего слайса, что здесь не ограничено. Количество опорных весовых значений может быть выбрано исходя из практических потребностей.[000165] For the list of reference weight values of the current block, the number of reference weight values in the list of reference weight values 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 weight values in the list of reference weight values may be related to the size (for example, width or height) of the current slice in which the current block is located, for example, the number of reference weight values may be greater than the width of the current slice or the same as the width of the current slice; and the number of reference weight values 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 weight values may be selected based on practical needs.
[000166] Например, для множества опорных весовых значений в списке опорных весовых значений множество опорных весовых значений могут быть непоследовательными опорными весовыми значениями, например, множество опорных весовых значений в списке опорных весовых значений могут не быть полностью одинаковыми.[000166] For example, for a plurality of reference weight values in a list of reference weight values, the plurality of reference weight values may be non-consecutive reference weight values, such that the plurality of reference weight values in the list of reference weight values may not be completely the same.
[000167] В возможной реализации множество опорных весовых значений в списке опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Кроме того, множество опорных весовых значений в списке опорных весовых значений могут сначала монотонно увеличиваться, а затем монотонно уменьшаться, или сначала монотонно уменьшаться, а затем монотонно увеличиваться. Кроме того, множество опорных весовых значений в списке опорных весовых значений может сначала включать множество первых опорных весовых значений, а затем множество вторых опорных весовых значений, или сначала включать множество вторых опорных весовых значений, а затем множество первых опорных весовых значений. В сочетании с несколькими случаями содержание приведенного выше списка опорных весовых значений описано ниже.[000167] In a possible implementation, the plurality of reference weight values in the list of reference weight values may monotonically increase or monotonically decrease. In addition, the 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 content of the above list of reference weight values is 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: The plurality of reference weight values in the reference weight value list may monotonically increase or monotonically decrease. For example, the reference weight value list may be [8 8 8 8…8 8 7 6 5 4 3 2 1 0 0 0 0…0 0], that is, the plurality of reference weight values in the reference weight value list monotonically decrease. In another example, the reference weight value list 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 weight values in the reference weight value list monotonically increase. The above are only examples, and the list of reference weight values is not limited here.
[000169] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта.[000169] For example, the reference weight values in the reference weight value list may be pre-configured or configured based on weight configuration parameters. The weight configuration parameters may include a weight conversion factor and a weight conversion start position. The weight conversion factor may be a value set based on experience, and the weight conversion start position may also be a value set based on experience.
[000170] Множество опорных весовых значений в списке опорных весовых значений могут монотонно увеличиваться или монотонно уменьшаться. Например, если максимальное значение опорных весовых значений равно M1, а минимальное значение опорных весовых значений равно М2, множество опорных весовых значений в списке опорных весовых значений монотонно уменьшаются от максимального значения M1 до минимального значения М2; либо монотонно увеличиваются от минимального значения М2 до максимального значения M1. Если M1 равно 8, а М2 равно 0, множество опорных весовых значений монотонно уменьшаются от 8 до 0 или монотонно увеличиваются от 0 до 8.[000170] The plurality of reference weight values in the 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 monotonically decrease from the maximum value of M1 to the minimum value of M2; or monotonically increase from the minimum value of M2 to the maximum value of M1. If M1 is 8 and M2 is 0, the plurality of reference weight values monotonically decrease from 8 to 0 or monotonically increase from 0 to 8.
[000171] Например, в процессе предварительного конфигурирования опорных весовых значений в списке опорных весовых значений множество опорных весовых значений в списке опорных весовых значений может быть произвольно сконфигурировано при условии, что множество опорных весовых значений монотонно увеличиваются или монотонно уменьшаются.[000171] For example, in a process of pre-configuring reference weight values in a reference weight value list, a plurality of reference weight values in the reference weight value list may be arbitrarily configured under the condition that the plurality of reference weight values monotonically increase or monotonically decrease.
[000172] Например, в процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем на основе коэффициента преобразования весов и начальной позиции преобразования весов определяют множество опорных весовых значений в списке опорных весовых значений. Коэффициент преобразования весов и начальная позиция преобразования весов могут быть предварительно заданными значениями, которые могут быть сконфигурированы на основе опыта и не ограничиваются здесь.[000172] For example, in the process of configuring reference weight values in the reference weight value list based on the weight configuration parameters, a weight conversion factor and a weight conversion start 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 conversion factor and the weight conversion start position. The weight conversion factor and the weight conversion start 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, the reference weight values in the reference weight value list may be defined as follows: y(x)=Clip3(minimum, maximum, a*(x-s)), where x represents a position index in the reference weight value list, for example, x is 1, which indicates the first position in the reference weight value list, y(x) represents the x-th reference weight value in the reference weight value list, "a" represents a weight conversion coefficient, s represents a weight conversion start position, and the Clip3 function is used to limit the reference weight values between the minimum and maximum values. The maximum value and the minimum value may be configured based on experience. For simplicity, the following description is given for 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" is 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 provided for "a" equal to 1 as an example. If the factor "a" is 1, the reference weight values should 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 a starting position of the weight conversion, 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 of the total number of reference weight values, for example, half of the total number of reference weight values minus 4; or s may be slightly greater than half of the total number of reference weight values, for example, half of the total number of reference weight values plus 4. The above values of s are only examples 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, the reference weight values in the reference weight value list 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-mentioned 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 is in the range 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] may represent the second reference weight value in the list of reference weight values, and so on. For example, if the surrounding positions beyond 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 beyond the current block are surrounding positions in the left column or the 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 starting position of the weight transformation. If "a" is -1, a*(x-s)=s-x, that is, 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 weight values in the reference weight value list satisfy y(x)=Clip3(minimum, maximum, a*(x-s)). Clip3(0, 8) is used to restrict the reference weight values from 0 to 8, and Clip3(0, 4) is used to restrict 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 initial position of the weight transformation, which can be configured based on experience. Assuming that x is in the range from 0 to 511, and Z is 255, Z is substituted into the formula ReferenceWeightsWhole[x]=Clip3(0, 8, x - Z), and for any value from 0 to 511, ReferenceWeightsWhole[x] can be obtained, that is, 512 reference weight values can be obtained, and the 512 reference weight values form a list of reference weight values. For example, when x is in the range from 0 to 255, all the corresponding reference weight values are 0, when x is 256, the reference weight value is 1, and so on, when x is 262, the reference weight value is 7, and when x varies from 263 to 511, all the reference weight values are 8. In short, when the value of "a" is 1, Clip3(0, 8, x - Z) is used to monotonically increase the reference weight values. Similarly, Z can be substituted into another formula to obtain 512 reference weight values, and the list of reference weight values is formed based on the 512 reference weight values. For example, when the value of "a" is -1, Clip3(0, 8, Z - x) is used to monotonically decrease the reference weight values. Clip3(0, 4) is used to limit the reference weight values from 0 to 4, which is not repeated here.
[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 a possible implementation, the list of reference weight values may also include one or more reference weight values of target positions (areas), one or more reference weight values of first neighboring positions (areas) of the target positions, and one or more reference weight values of second neighboring positions (areas) 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 initial 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 initial position s of the weight transformation is 255, the 259th reference weight value can be taken as the target positions, or the 258th reference weight value can be taken as the target positions, or the 260th reference weight value can be taken as the target positions. The above are just a few examples and are not limited here. In another example, based on the initial position of the weight transformation, a plurality of reference weight values are determined and taken as the target positions. For example, the 256th to 262nd reference weight values are taken as the target positions, or the 258th to 260th reference weight values are taken as the target positions. The above are just a few examples and are not limited here.
[000182] Например, целевые позиции могут включать опорное весовое значение со значением 4. Например, 259-е опорное весовое значение равно 4. Следовательно, если целевые позиции включают одно опорное весовое значение, целевые позиции могут включать 259-е опорное весовое значение, или если целевые позиции включают множество опорных весовых значений, то целевые позиции могут включать опорные весовые значения с 256-го по 262-е или опорные весовые значения с 258-го по 260-е, что здесь не ограничивается при условии, что 259-е опорное весовое значение находится в пределах целевых позиций.[000182] For example, the 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 the 259th reference weight value, or if the target positions include a plurality of reference weight values, the target positions may include the 256th to 262nd reference weight values or the 258th to 260th reference weight values, which is not limited here, provided that the 259th reference weight value is within the target positions.
[000183] Одним словом, целевые позиции могут включать одно опорное весовое значение; или целевые позиции могут включать множество опорных весовых значений. Если целевые позиции включают множество опорных весовых значений, множество опорных весовых значений целевых позиций монотонно увеличиваются или монотонно уменьшаются. Монотонное увеличение может быть строго монотонным увеличением (то есть множество опорных весовых значений в целевых позициях строго монотонно увеличивается); и монотонное уменьшение может быть строго монотонным уменьшением (то есть множество опорных весовых значений в целевых позициях строго монотонно уменьшается). Например, множество опорных весовых значений целевых позиций монотонно увеличиваются с 1 до 7 или монотонно уменьшаются с 7 до 1.[000183] In short, the target positions may include one reference weight value; or the target positions may include a plurality of reference weight values. If the target positions include a plurality of reference weight values, the plurality of reference weight values of the target positions monotonically increase or monotonically decrease. The monotonous increase may be a strictly monotonous increase (that is, the plurality of reference weight values at the target positions strictly monotonically increase); and the monotonous decrease may be a strictly monotonous decrease (that is, the plurality of reference weight values at the target positions strictly monotonically decrease). For example, the plurality of reference weight values of the target positions monotonically increase from 1 to 7 or monotonically decrease from 7 to 1.
[000184] Например, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями, а опорные весовые значения вторых соседних позиций монотонно увеличиваются или монотонно уменьшаются. Например, все опорные весовые значения первых соседних позиций равны 0, целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8.[000184] For example, all the reference weight values of the first neighboring positions are the first reference weight values, and the reference weight values of the second neighboring positions monotonically increase or monotonically decrease. For example, all the reference weight values of the first neighboring positions are equal to 0, the target positions include one reference weight value equal to 1, and the reference weight values of the second neighboring positions monotonically increase from 2 to 8.
[000185] Опционально, все опорные весовые значения первых соседних позиций являются вторыми опорными весовыми значениями, а все опорные весовые значения вторых соседних позиций являются третьими опорными весовыми значениями, при этом вторые опорные весовые значения отличаются от третьих опорных весовых значений. Например, все опорные весовые значения первых соседних позиций равны 0, целевые позиции включают множество опорных весовых значений, которые монотонно увеличиваются от 1 до 7, а опорные весовые значения вторых соседних позиций равны 8. Очевидно, опорные весовые значения первых соседних позиций отличаются от значений вторых соседних позиций.[000185] Optionally, all the reference weight values of the first adjacent positions are second reference weight values, and all the reference weight values of the second adjacent positions are third reference weight values, wherein the second reference weight values are different from the third reference weight values. For example, all the reference weight values of the first adjacent positions are 0, the target positions include a plurality of reference weight values that monotonically increase from 1 to 7, and the reference weight values of the second adjacent positions are 8. Obviously, the reference weight values of the first adjacent positions are different from the values of the second adjacent positions.
[000186] Опционально, опорные весовые значения первых соседних позиций и опорные весовые значения вторых соседних позиций монотонно увеличиваются или монотонно уменьшаются одновременно. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются, и опорные весовые значения вторых соседних позиций также монотонно увеличиваются. В другом примере опорные весовые значения первых соседних позиций монотонно уменьшаются, и опорные весовые значения вторых соседних позиций также монотонно уменьшаются. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 3, целевые позиции включают одно опорное весовое значение, равное 4, а опорные весовые значения вторых соседних позиций монотонно увеличиваются от 5 до 8.[000186] Optionally, the reference weight values of the first neighboring positions and the reference weight values of the second neighboring positions monotonically increase or monotonically decrease simultaneously. For example, the reference weight values of the first neighboring positions monotonically increase, and the reference weight values of the second neighboring positions also monotonically increase. In another example, the reference weight values of the first neighboring positions monotonically decrease, and the reference weight values of the second neighboring positions also monotonically decrease. For example, the reference weight values of the first neighboring positions monotonically increase from 0 to 3, the target positions include one reference weight value equal to 4, and the reference weight values of the second neighboring 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 reference weight value list first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. For example, the reference weight value list may 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, a plurality of reference weight values in the reference weight value list first monotonically decrease and then monotonically increase. In another example, the reference weight value list may 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, a plurality of reference weight values in the reference weight value list first monotonically increase and then monotonically decrease. The above examples are illustrative only and the list of reference weight values is not limited here.
[000188] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта.[000188] For example, the reference weight values in the reference weight value list may be pre-configured or configured based on weight configuration parameters. The weight configuration parameters may include a weight conversion factor and a weight conversion start position. The weight conversion factor may be a value set based on experience, and the weight conversion start position may also be a value set 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 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 monotonically decrease from the maximum value of M1 to the minimum value of M2 and then monotonically increase from the minimum value of 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 plurality of reference weight values monotonically decrease from 8 to 0 and then monotonically increase from 0 to 8; or the plurality of reference weight values monotonically increase from 0 to 8 and then monotonically decrease from 8 to 0.
[000190] Например, в процессе предварительного конфигурирования опорных весовых значений в списке опорных весовых значений множество опорных весовых значений в списке опорных весовых значений может быть произвольно сконфигурировано при условии, что множество опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, или множество опорных весовых значений сначала монотонно уменьшаются, а затем монотонно увеличиваются. Других ограничений на опорные весовые значения нет.[000190] 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 may be arbitrarily configured, provided that the plurality of reference weight values first monotonically increase and then monotonically decrease, or the plurality of reference weight values first monotonically decrease and then monotonically increase. There are no other restrictions on the reference weight values.
[000191] Например, в процессе конфигурирования опорных весовых значений в списке опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены первый коэффициент преобразования весов, второй коэффициент преобразования весов, первая начальная позиция преобразования весов и вторая начальная позиция преобразования весов, а затем на основе первого коэффициента преобразования весов, второго коэффициента преобразования весов, первой начальной позиции преобразования весов и второй начальной позиции преобразования весов определяют множество опорных весовых значений в списке опорных весовых значений. Первый коэффициент преобразования весов, второй коэффициент преобразования весов, первая начальная позиция преобразования весов и вторая начальная позиция преобразования весов могут быть предварительно заданными значениями, и не накладывается никаких ограничений на первый коэффициент преобразования весов, второй коэффициент преобразования весов, первую начальную позицию преобразования весов и вторую начальную позицию преобразования весов.[000191] For example, in the process of configuring reference weight values in the reference weight value list based on the weight configuration parameters, a first weight conversion factor, a second weight conversion factor, a first weight conversion start position, and a second weight conversion start position may first be obtained, and then a plurality of reference weight values in the reference weight value list are determined based on the first weight conversion factor, the second weight conversion factor, the first weight conversion start position, and the second weight conversion start position. The first weight conversion factor, the second weight conversion factor, the first weight conversion start position, and the second weight conversion start position may be predetermined values, and no restrictions are imposed on the first weight conversion factor, the second weight conversion factor, the first weight conversion start position, and the second weight conversion start position.
[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, the reference weight values in the reference weight value list may be defined as follows: when x is in [0, k], y(x)=Clip3(minimum, maximum, a1*(x-s1)). When x is in [k+1, t], y(x)=Clip3(minimum, maximum, a2*(x-s2)). x represents a position index in the reference weight value list, for example, x is 1, which indicates the first position in the reference weight value list, y(x) represents the x-th reference weight value in the reference weight value list, k represents a value configured based on experience, and is not limited here, for example, k may be half of the total number of reference weight values in the reference weight value list or another value, as long as k is less than t, where t is the total number of reference weight values in the reference weight value list, a1 represents the first weight conversion factor, a2 represents the second weight conversion factor, s1 represents the first initial position of the weight conversion, and s2 represents the second initial position of the weight conversion.
[000193] Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями, при этом минимальное и максимальное значения могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000193] Clip3 is used to limit the reference weight values between a minimum and a maximum value, and the minimum and maximum values can be configured based on experience. For simplicity, the following description is given for 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 an integer different from zero, for example, a1 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. 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 can 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 weight values have the same gradually changing width. For simplicity of description, take a1 as 1 and a2 as -1 as an example, 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, the 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 initial positions of the transformation of weights, which may be configured based on experience. For example, s1 may be an initial position of the transformation of reference weight values in the interval [0, k] and may be half of k; or s1 may be slightly less than half of k, for example, half of k minus 4; or s1 may be slightly greater than half of k, for example, half of k plus 4. The above examples are illustrative only, and the meaning of s1 is not limited here. s2 may be an initial position of the transformation of reference weight values in the interval [k+1, t], and s2 may be half of q (for example, the difference between t and k+1); or s2 may be slightly less than half of q, for example, half of q minus 4; or s2 may be slightly greater than half of q, for example, half of q plus 4. The above examples are illustrative only, and the meaning 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 a possible implementation, the list of reference weight values may also include one or more reference weight values of first target positions, one or more reference weight values of second target positions, one or more reference weight values of first neighboring positions neighboring only the first target positions, one or more reference weight values of second neighboring positions neighboring both the first target positions and the second target positions, and one or more reference weight values of third neighboring positions neighboring only the second target positions.
[000197] Первые целевые позиции включают одно или более опорных весовых значений, определенных на основе первой начальной позиции преобразования весов. Например, на основе первой начальной позиции преобразования весов определяют одно опорное весовое значение, которое принимают в качестве первых целевых позиций. Опционально, на основе первой начальной позиции преобразования весов определяют множество опорных весовых значений, которые принимают в качестве первых целевых позиций. Если первые целевые позиции включают множество опорных весовых значений, множество опорных весовых значений в первых целевых позициях монотонно увеличиваются или уменьшаются. Монотонное увеличение может быть монотонным увеличением множества опорных весовых значений первых целевых позиций, и монотонное уменьшение может быть монотонным уменьшением множества опорных весовых значений первых целевых позиций.[000197] The first target positions include one or more reference weight values determined based on the first initial position of the weight transformation. For example, based on the first initial position of the weight transformation, one reference weight value is determined, which is taken as the first target positions. Optionally, based on the first initial position of the weight transformation, a plurality of reference weight values are determined, which are taken as the first target positions. If the first target positions include a plurality of reference weight values, the plurality of reference weight values in the first target positions monotonically increase or decrease. The monotonous increase may be a monotonous increase of the plurality of reference weight values of the first target positions, and the monotonous decrease may be a monotonous decrease of the 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 initial position of the weight transformation. For example, based on the second initial position of the weight transformation, one reference weight value is determined, which is taken as the second target positions. Optionally, based on the second initial position of the weight transformation, a plurality of reference weight values are determined, which are 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 monotonically increase or decrease. The monotonous increase may be a strictly monotonous increase (the plurality of reference weight values of the second target positions strictly monotonically increase).
[000199] Если множество опорных весовых значений первых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются), множество опорных весовых значений вторых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются). Опционально, если множество опорных весовых значений первых целевых позиций монотонно уменьшаются (например, строго монотонно уменьшаются), множество опорных весовых значений вторых целевых позиций монотонно увеличиваются (например, строго монотонно увеличиваются).[000199] If the plurality of reference weight values of the first target positions monotonically increase (for example, strictly monotonically increase), the plurality of reference weight values of the second target positions monotonically decrease (for example, strictly monotonically decrease). Optionally, if the plurality of reference weight values of the first target positions monotonically decrease (for example, strictly monotonically decrease), the plurality of reference weight values of the second target positions monotonically increase (for example, strictly monotonically increase).
[000200] Например, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями, все опорные весовые значения вторых соседних позиций являются вторыми опорными весовыми значениями, и все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Первые опорные весовые значения могут быть такими же, как третьи опорные весовые значения, первые опорные весовые значения могут отличаться от вторых опорных весовых значений, а третьи опорные весовые значения могут отличаться от вторых опорных весовых значений. Например, все опорные весовые значения первых соседних позиций равны 0, все опорные весовые значения вторых соседних позиций равны 8, а все опорные весовые значения третьих соседних позиций равны 0. Опционально, все опорные весовые значения первых соседних позиций равны 8, все опорные весовые значения вторых соседних позиций равны 0, а все опорные весовые значения третьих соседних позиций равны 8.[000200] For example, all the reference weight values of the first adjacent positions are the first reference weight values, all the reference weight values of the second adjacent positions are the second reference weight values, and all the reference weight values of the third adjacent positions are the third reference weight values. The first reference weight values may be the same as the third reference weight values, the first reference weight values may differ from the second reference weight values, and the third reference weight values may differ from the second reference weight values. For example, all the reference weight values of the first adjacent positions are 0, all the reference weight values of the second adjacent positions are 8, and all the reference weight values of the third adjacent positions are 0. Optionally, all the reference weight values of the first adjacent positions are 8, all the reference weight values of the second adjacent positions are 0, and all the reference weight values of the third adjacent positions are 8.
[000201] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно уменьшаются; и опорные весовые значения третьих соседних позиций монотонно увеличиваются. Например, все опорные весовые значения первых соседних позиций равны 8, первые целевые позиции включают одно опорное весовое значение 7, опорные весовые значения вторых соседних позиций монотонно уменьшаются от 6 до 0, вторые целевые позиции включают одно опорное весовое значение, равное 1, а опорные весовые значения третьих соседних позиций монотонно увеличиваются от 2 до 8.[000201] Optionally, all the reference weight values of the first adjacent positions are the first reference weight values; the reference weight values of the second adjacent positions monotonically decrease; and the reference weight values of the third adjacent positions monotonically increase. For example, all the reference weight values of the first adjacent positions are 8, the first target positions include one reference weight value of 7, the reference weight values of the second adjacent positions monotonically decrease from 6 to 0, the second target positions include one reference weight value equal to 1, and the reference weight values of the third adjacent positions monotonically increase from 2 to 8.
[000202] Опционально, опорные весовые значения первых соседних позиций монотонно уменьшаются; опорные весовые значения вторых соседних позиций сначала монотонно уменьшаются, а затем монотонно увеличиваются; опорные весовые значения третьих соседних позиций монотонно увеличиваются. Например, опорные весовые значения первых соседних позиций монотонно уменьшаются от 8 до 5, первые целевые позиции включают одно опорное весовое значение 4, опорные весовые значения вторых соседних позиций сначала монотонно уменьшаются от 3 до 0, а затем монотонно увеличиваются от 0 до 3, вторые целевые позиции включают одно опорное весовое значение 4, а опорные весовые значения третьих соседних позиций монотонно увеличиваются от 5 до 8.[000202] Optionally, the reference weight values of the first adjacent positions monotonically decrease; the reference weight values of the second adjacent positions first monotonically decrease and then monotonically increase; the reference weight values of the third adjacent positions monotonically increase. For example, the reference weight values of the first adjacent positions monotonically decrease from 8 to 5, the first target positions include one reference weight value of 4, the reference weight values of the second adjacent positions first monotonically decrease from 3 to 0 and then monotonically increase from 0 to 3, the second target positions include one reference weight value of 4, and the reference weight values of the third adjacent positions monotonically increase from 5 to 8.
[000203] Опционально, опорные весовые значения первых соседних позиций монотонно уменьшаются; опорные весовые значения вторых соседних позиций монотонно увеличиваются; все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Например, опорные весовые значения первых соседних позиций монотонно уменьшаются от 8 до 1, первые целевые позиции включают одно опорное весовое значение 0, опорные весовые значения вторых соседних позиций монотонно увеличиваются от 0 до 7, вторые целевые позиции включают одно опорное весовое значение 8, а все опорные весовые значения третьих соседних позиций равны 8.[000203] Optionally, the reference weight values of the first adjacent positions monotonically decrease; the reference weight values of the second adjacent positions monotonically increase; all the reference weight values of the third adjacent positions are third reference weight values. For example, the reference weight values of the first adjacent positions monotonically decrease from 8 to 1, the first target positions include one reference weight value of 0, the reference weight values of the second adjacent positions monotonically increase from 0 to 7, the second target positions include one reference weight value of 8, and all the reference weight values of the third adjacent positions are 8.
[000204] Опционально, все опорные весовые значения первых соседних позиций являются первыми опорными весовыми значениями; опорные весовые значения вторых соседних позиций монотонно увеличиваются; опорные весовые значения третьих соседних позиций монотонно уменьшаются. Например, все опорные весовые значения первых соседних позиций равны 0, первые целевые позиции включают одно опорное весовое значение 1, опорные весовые значения вторых соседних позиций монотонно увеличиваются от 2 до 8, вторые целевые позиции включают одно опорное весовое значение 7, а опорные весовые значения третьих соседних позиций монотонно уменьшаются от 6 до 0.[000204] Optionally, all the reference weight values of the first adjacent positions are the first reference weight values; the reference weight values of the second adjacent positions monotonically increase; the reference weight values of the third adjacent positions monotonically decrease. For example, all the reference weight values of the first adjacent positions are 0, the first target positions include one
[000205] Опционально, опорные весовые значения первых соседних позиций монотонно увеличиваются; опорные весовые значения вторых соседних позиций сначала монотонно увеличиваются, а затем монотонно уменьшаются; опорные весовые значения третьих соседних позиций монотонно уменьшаются. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 3, первые целевые позиции включают одно опорное весовое значение 4, опорные весовые значения вторых соседних позиций сначала монотонно увеличиваются от 5 до 8, а затем монотонно уменьшаются от 8 до 5, вторые целевые позиции включают одно опорное весовое значение 4, а опорные весовые значения третьих соседних позиций монотонно уменьшаются от 3 до 0.[000205] Optionally, the reference weight values of the first adjacent positions monotonically increase; the reference weight values of the second adjacent positions first monotonically increase and then monotonically decrease; the reference weight values of the third adjacent positions monotonically decrease. For example, the reference weight values of the first adjacent positions monotonically increase from 0 to 3, the first target positions include one reference weight value of 4, the reference weight values of the second adjacent positions first monotonically increase from 5 to 8 and then monotonically decrease from 8 to 5, the second target positions include one reference weight value of 4, and the reference weight values of the third adjacent positions monotonically decrease from 3 to 0.
[000206] Опционально, опорные весовые значения первых соседних позиций монотонно увеличиваются; опорные весовые значения вторых соседних позиций монотонно уменьшаются; все опорные весовые значения третьих соседних позиций являются третьими опорными весовыми значениями. Например, опорные весовые значения первых соседних позиций монотонно увеличиваются от 0 до 7, первые целевые позиции включают одно опорное весовое значение 8, опорные весовые значения вторых соседних позиций монотонно уменьшаются от 8 до 1, вторые целевые позиции включают одно опорное весовое значение 0, и все опорные весовые значения третьих соседних позиций равны 0.[000206] Optionally, the reference weight values of the first adjacent positions monotonically increase; the reference weight values of the second adjacent positions monotonically decrease; all the reference weight values of the third adjacent positions are third reference weight values. For example, the reference weight values of the first adjacent positions monotonically increase from 0 to 7, the first target positions include one reference weight value of 8, the reference weight values of the second adjacent positions monotonically decrease from 8 to 1, the second target positions include one reference weight value of 0, and all the reference weight values of the third adjacent positions are 0.
[000207] Вышеприведенные примеры являются только иллюстративными, и здесь не делается никаких ограничений при условии, что множество опорных весовых значений в списке опорных весовых значений может удовлетворять следующим требованиям: увеличение от 0 до 8, а затем уменьшение от 8 до 0; или уменьшение от 8 до 0, а затем увеличение от 0 до 8.[000207] The above examples are illustrative only, and no limitations are made here, provided that the plurality of reference weight values in the reference weight value list 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 weight values in the reference weight value list may first include the plurality of first reference weight values and then include the plurality of second reference weight values, or may first include the plurality of second reference weight values and then include the plurality of first reference weight values. For example, the reference weight value list may be [8 8…8 8 0 0…0 0] or [0 0…0 0 8 8…8 8].
[000209] Например, опорные весовые значения в списке опорных весовых значений могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать начальную позицию преобразования весов. Начальная позиция преобразования весов может быть значением, установленным на основе опыта.[000209] For example, the reference weight values in the reference weight value list may be pre-configured or configured based on weight configuration parameters. The weight configuration parameters may include a weight conversion start position. The weight conversion start position 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, a plurality of reference weight values in the reference weight value list may be arbitrarily configured, provided that 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 value list based on the weight configuration parameters, a weight conversion start 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 conversion start position. For example, the weight conversion start position represents the s-th reference weight value in the reference weight value list. Therefore, all reference weight values up to the s-th reference weight value (except for the s-th reference weight value) are the first reference weight values (for example, 8), and all reference weight values after the s-th reference weight value (including the s-th reference weight value) are the second reference weight values (for example, 0). Optionally, all reference weight values up to the s-th reference weight value (except the s-th reference weight value) are second reference weight values (e.g., 0), and all reference weight values after the s-th reference weight value (including the s-th reference weight value) are first reference weight values (e.g., 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 the following embodiments of the invention, the description is given for the list of reference weight values 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 within the current block can only indicate an actual number of surrounding positions, that is, the target weight value of each of the pixel positions within the current block can be obtained by setting reference weight values for the actual number of surrounding positions.
[000215] Например, количество окружающих позиций за пределами текущего блока определяют на основе размера текущего блока и/или угла взвешенного предсказания текущего блока. В этом варианте осуществления изобретения количество окружающих позиций за пределами текущего блока обозначается как действительное количество ValidLength.[000215] For example, the number of surrounding positions beyond 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 beyond the current block is designated as the valid number ValidLength.
[000216] Например, действительное количество можно определить по следующей формуле: ValidLength = (N+(М>>X))<<1 или ValidLength = (М+(N>>X))<<1. В приведенной выше формуле ValidLength представляет действительное количество, М представляет ширину текущего блока, N представляет высоту текущего блока, X представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например 0 или 1, << относится к арифметическому сдвигу влево, а >> относится к арифметическому сдвигу вправо.[000216] For example, the valid quantity can be defined by the following formula: ValidLength = (N+(M>>X))<<1 or ValidLength = (M+(N>>X))<<1. In the above formula, ValidLength represents the valid quantity, M represents the width of the current block, N represents the height of the current block, X represents the logarithm 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 the 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 shift to the left of the integer binary-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 shift to the right of the integer binary-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, a target index is determined.
[000219] Например, целевой индекс может относиться к нумерации опорного весового значения в списке опорных весовых значений, например, когда целевой индекс равен 259, он может указывать на 259-е опорное весовое значение в списке опорных весовых значений.[000219] For example, the target index may refer to the numbering of a reference weight value in a list of reference weight values, such that 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 FirstIndex=(HalfLength-4)-((ValidLength>>1)-b+Y * ((ValidLength - 1)>>3) - ((M << 1) >> X)); or FirstIndex = (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 valid 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 position of the weighted prediction of the current block, the value of HalfLength - 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 logarithm of log2 of the absolute value of the slope of the weighted prediction angle 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 scheme, some parameters may be fixed to achieve optimization, for example, the weighted prediction angle of the current block may be set to a fixed parameter value, and ValidLength is related only to the size of the current block. In other embodiments of the invention, ValidLength may 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. In order to simplify the scheme, some parameters may be fixed to achieve optimization, for example, the weighted prediction angle of the current block may 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 position of the current block. Optionally, the weighted prediction angle of the current block and the weighted prediction position of the current block may be set to fixed parameter values, which may be the same or different for different current blocks, and the FirstIndex value is related only to the size of the current block. In other embodiments of the invention, FirstIndex (or FirstPos) can be determined 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 list of reference weight values, the reference weight values q1-th to q2-e are selected from the list of reference weight values, and the difference between the index related to q2 and the index related to q1 is r - 1, and thus r reference weight values are selected from the list of reference weight values. Alternatively, if the target index is the last reference weight value to be selected in the list of reference weight values, the reference weight values q3-th 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 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 the middle reference weight value to be selected in the list of reference weight values, the implementation is similar and will not be repeated here. The following description is given for the target index, which is the first reference weight value to be selected in the list of reference weight values, as an example, that is, the 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 weight values is selected from the reference weight value list. Thus, the number of surrounding positions is equal to the number of selected reference weight values, and the actual number of reference weight values in the reference weight value list can be set as reference weight values of the surrounding positions outside the current block, respectively.
[000228] Например, для первого опорного весового значения в пределах действительного количества опорных весовых значений первое опорное весовое значение задают как опорное весовое значение для первой окружающей позиции за пределами текущего блока; для второго опорного весового значения в пределах действительного количества опорных весовых значений, второе опорное весовое значение задают как опорное весовое значение для второй окружающей позиции за пределами текущего блока и т.д.[000228] For example, for a first reference weight value within the actual number of reference weight values, the first reference weight value is set as a reference weight value for a 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, and so on.
[000229] В возможной реализации, если r опорных весовых значений выбраны из списка опорных весовых значений, r опорных весовых значений берут из списка опорных весовых значений и устанавливают соответственно в качестве опорных весовых значений r окружающих позиций за пределами текущего блока. В качестве альтернативы, если r опорных весовых значений выбраны из списка опорных весовых значений, вместо извлечения r опорных весовых значений из списка опорных весовых значений, r опорных весовых значений используют в качестве опорных весовых значений r окружающих позиций за пределами текущего блока путем перемещения опорных весовых значений в списке опорных весовых значений.[000229] In a possible implementation, if r reference weight values are selected from the list of reference weight values, r reference weight values are taken from the list of reference weight values and set as reference weight values of r surrounding positions outside the current block, respectively. Alternatively, if r reference weight values are selected from the list of reference weight values, instead of retrieving r reference weight values from the list of reference weight values, r reference weight values are used as reference weight values of r surrounding positions outside the current block by moving the reference weight values in the list of reference weight values.
[000230] Вариант 7 осуществления изобретения. В вышеприведенных вариантах 1-3 осуществления изобретения для каждой позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, указанной позицией пикселя, определяют целевое весовое значение позиции пикселя. Ниже в качестве примера описание приведено для окружающей соответствующей позиции текущего блока. Опорное весовое значение, связанное с окружающей соответствующей позицией, может быть получено следующим образом: опорное весовое значение задают непосредственно для каждой из окружающих позиций за пределами текущего блока, например, получают действительное количество опорных весовых значений (не выбраны из списка опорных весовых значений) и на основе действительного количества опорных весовых значений устанавливают опорные весовые значения окружающих позиций за пределами текущего блока.[000230] Embodiment 7 of the invention. In the
[000231] Например, опорные весовые значения, сконфигурированные для окружающих позиций за пределами текущего блока, могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Для начальной позиции преобразования весов каждого текущего блока начальную позицию преобразования весов определяют на основе по меньшей мере одного из следующих параметров: угол взвешенного предсказания текущего блока, позиция взвешенного предсказания текущего блока или размер текущего блока. Когда текущий блок включает один подблок, количество окружающих позиций за пределами текущего блока (например, действительное количество) определяют на основе размера текущего блока и угла взвешенного предсказания текущего блока.[000231] For example, reference weight values configured for surrounding positions outside the current block may be pre-configured or configured based on weight configuration parameters. The weight configuration parameters may include a weight transformation coefficient and a weight transformation start position. For the weight transformation start position of each current block, the weight transformation start position is determined based on at least one of the following parameters: a weighted prediction angle of the current block, a weighted prediction position of the current block, or a size of the current block. When the current block includes one sub-block, the number of surrounding positions outside the current block (e.g., an 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 the surrounding positions outside the current block, a reference weight value associated with the surrounding corresponding position, for example, a target weight value of the pixel position, can be determined.
[000233] Процесс установки опорных весовых значений окружающих позиций описан ниже в сочетании с реализациями.[000233] The process of setting reference weight values of surrounding positions is described below in conjunction with implementations.
[000234] Сначала получают действительное количество опорных весовых значений. Затем на основе действительного количества опорных весовых значений устанавливают опорные весовые значения окружающих позиций за пределами текущего блока, причем опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться или монотонно уменьшаться.[000234] First, an 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, wherein 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 of the invention, and the actual number in the previous embodiment of the invention may be the same as or different from the actual number in this embodiment of the invention. For the purpose of distinction, the actual number in the previous embodiment of the invention may be considered as the first actual number, and the actual number in this embodiment of the invention may be considered as the second actual number.
[000236] Например, количество окружающих позиций за пределами текущего блока является действительным количеством, и должно быть получено действительное количество опорных весовых значений. Например, действительное количество можно определить по следующей формуле: ValidLength=(N+(М >> X)) << 1, где N и М соответственно представляют высоту и ширину текущего блока, а X представляет значение логарифма log2 абсолютного значения наклона угла взвешенного предсказания текущего блока, например, 0 или 1.[000236] For example, the number of surrounding positions beyond the current block is a valid number, and a valid number of reference weight values must be obtained. For example, the valid number 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, such as 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 weight values 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 weight values may increase monotonically or decrease monotonically.
[000239] Например, опорные весовые значения могут быть предварительно сконфигурированы или сконфигурированы на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта, или начальная позиция преобразования весов также может быть определена на основе позиции взвешенного предсказания или определена на основе угла взвешенного предсказания и позиции взвешенного предсказания.[000239] For example, the reference weight values may be pre-configured or configured based on the weight configuration parameters. The weight configuration parameters may include a weight conversion factor and a weight conversion start position. The weight conversion factor may be a value set based on experience, and the weight conversion start position may also be a value set based on experience, or the weight conversion start position may also be determined based on the weighted prediction position or determined based on the weighted prediction angle and the weighted prediction position.
[000240] Например, в процессе предварительного конфигурирования множества опорных весовых значений множество опорных весовых значений может быть сконфигурировано произвольно при условии, что множество опорных весовых значений монотонно увеличиваются или монотонно уменьшаются. Кроме того, в процессе конфигурирования множества опорных весовых значений на основе параметров весовой конфигурации сначала могут быть получены коэффициент преобразования весов и начальная позиция преобразования весов, а затем на основе коэффициента преобразования весов и начальной позиции преобразования весов определяют множество опорных весовых значений. Начальную позицию преобразования весов определяют на основе позиции взвешенного предсказания текущего блока или определяют на основе угла взвешенного предсказания и позиции взвешенного предсказания текущего блока.[000240] For example, in the process of pre-configuring a plurality of reference weight values, the plurality of reference weight values may be configured arbitrarily, provided that the plurality of reference weight values monotonically increase or monotonically decrease. Furthermore, in the process of configuring a plurality of reference weight values, based on the weight configuration parameters, a weight transformation coefficient and a weight transformation start position may first be obtained, and then a plurality of reference weight values are determined based on the weight transformation coefficient and the weight transformation start position. The weight transformation start position is determined based on the weighted prediction position of the current block, or is 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, the reference weight values may be defined as follows: y(x)=Clip3(minimum, maximum, a*(x-s)), where x represents an index of a surrounding position that is in the range 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 x-th surrounding position, “a” represents a weight transformation factor, and s represents the starting position of the weight transformation.
[000242] Функция Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями. Максимальное значение и минимальное значение могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000242] The Clip3 function is used to limit the reference weight values between the minimum and maximum values. The maximum value and the minimum value can be configured based on experience. For simplicity, the following description is given for the minimum value of 0 and the 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 transformation coefficient 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 weight values should 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. 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 greater the value of "a". When "a" is a negative integer, "a" may have a negative correlation with the number of surrounding positions, i.e. the more surrounding positions there are outside the current block, the smaller the value of "a". The above are examples of the value 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 weighted prediction position. 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 arbitrarily set, 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 may 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 the range of surrounding positions outside the current block is determined, 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(minimum, maximum, a*(x-s)) the weight transformation coefficient a and the initial position s of the weight transformation are known values. For each of the surrounding positions outside the current block, a reference weight value of the surrounding position can be determined based on a functional relationship. For example, if the weight transformation coefficient a is 2 and the initial position s of the weight transformation is 2, the functional relationship is y(x)=Clip3(minimum, maximum, 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, it is possible to obtain an actual number of reference weight values of the current block, and these reference weight values may monotonically increase or monotonically decrease. In a possible implementation, the reference weight values of the surrounding positions outside the current block include one or more reference weight values of the target positions, one or more reference weight values of the first neighboring positions of the target positions, and one or more reference weight values of the second neighboring positions of the target positions.
[000247] Целевые позиции, опорные весовые значения целевых позиций, опорные весовые значения первых соседних позиций и опорные весовые значения вторых соседних позиций могут быть отнесены к описанию случая 1 в предыдущем варианте осуществления изобретения и не будут здесь повторяться.[000247] The target positions, the reference weight values of the target positions, the reference weight values of the first adjacent positions, and the reference weight values of the second adjacent positions may be referred to in the description of
[000248] Случай 2: действительное количество опорных весовых значений сначала монотонно увеличиваются, а затем монотонно уменьшаются, либо сначала монотонно уменьшаются, а затем монотонно увеличиваются.[000248] Case 2: The actual number of reference weight values first increases monotonically and then decreases monotonically, or first decreases monotonically and then increases monotonically.
[000249] Например, действительное количество опорных весовых значений может быть предварительно сконфигурировано или сконфигурировано на основе параметров весовой конфигурации. Параметры весовой конфигурации могут включать коэффициент преобразования весов и начальную позицию преобразования весов. Коэффициент преобразования весов может быть значением, установленным на основе опыта, и начальная позиция преобразования весов также может быть значением, установленным на основе опыта, или определенным на основе позиции взвешенного предсказания, или определенным на основе угла взвешенного предсказания и позиции взвешенного предсказания.[000249] For example, the actual number of reference weight values may be pre-configured or configured based on weight configuration parameters. The weight configuration parameters may include a weight conversion factor and a weight conversion start position. The weight conversion factor may be a value set based on experience, and the weight conversion start 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 pre-configuring a plurality of reference weight values, the plurality of reference weight values may be arbitrarily configured on the condition that the plurality of reference weight values first monotonically increase and then monotonically decrease, or first monotonically decrease and then monotonically increase. In the process of configuring a plurality of reference weight values, based on the weight configuration parameters, a first weight conversion factor, a second weight conversion factor, a first weight conversion start position, and a second weight conversion start position may first be obtained, and then a plurality of reference weight values are determined based on the first weight conversion factor, the second weight conversion factor, the first weight conversion start position, and the second weight conversion start position.
[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 plurality of reference weight values may be defined as follows: when x is in [0, k], y(x)=Clip3(minimum, maximum, a1*(x-s1)). When x is in [k+1, t], y(x)=Clip3(minimum, maximum, a2*(x-s2)). X represents a position index of a surrounding position, for example, the value of x is 1, which indicates the first surrounding position, and y(x) represents a reference weight value of the x-th surrounding position. K is a value configured based on experience, which is not limited here, for example, k may be half of 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-mentioned actual quantity, a1 represents the first weight transformation coefficient, a2 represents the second weight transformation coefficient, s1 represents the first starting position of the weight transformation, and s2 represents the second starting position of the weight transformation.
[000252] Clip3 используется для ограничения опорных весовых значений между минимальным и максимальным значениями, при этом минимальное и максимальное значения могут быть сконфигурированы на основе опыта. Для простоты последующее описание приведено для минимального значения, равного 0, и максимального значения, равного 8, в качестве примера.[000252] Clip3 is used to limit the reference weight values between a minimum and a maximum value, and the minimum and maximum values can be configured based on experience. For simplicity, the following description is given for 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 may be an integer different from zero, such as al may be -4, -3, -2, -1, 1, 2, 3, or 4, etc. a2 may be a non-zero integer, such as a2 may 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 initial positions of weight transformation that may be configured based on experience, s1 may be an initial position of transformation of reference weight values in the interval [0, k], and s2 may be an initial position of transformation of 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 may 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 may 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, the range of surrounding positions beyond the current block can 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 initial 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 may 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 manner, a plurality of reference weight values may 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 weight values of a plurality of surrounding positions outside the current block may also include one or more reference weight values of first target positions, one or more reference weight values of second target positions, one or more reference weight values of first neighboring positions neighboring only the first target positions, one or more reference weight values of second neighboring positions neighboring both the first target positions and the second target positions, and one or more reference weight values of third neighboring positions neighboring only the second target positions.
[000259] Для первых целевых позиций, вторых целевых позиций, опорных весовых значений первых целевых позиций, опорных весовых значений вторых целевых позиций, опорных весовых значений первых соседних позиций, опорных весовых значений вторых соседних позиций и опорных весовых значений третьих соседних позиций и т.п. можно сделать ссылку на описание случая 2 в предыдущем варианте осуществления изобретения, и здесь не приводится избыточных описаний.[000259] For the first target positions, the second target positions, the reference weight values of the first target positions, the reference weight values of the second target positions, the reference weight values of the first adjacent positions, the reference weight values of the second adjacent positions, and the reference weight values of the third adjacent positions, etc., 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 reference weight values may be pre-configured or configured based on the weight configuration parameters. The weight configuration parameters may include a weight conversion start position. In the process of configuring the reference weight values based on the weight configuration parameters, a weight conversion start position may be obtained, and the plurality of reference weight values are determined based on the weight conversion start position.
[000261] На основе нескольких описанных выше случаев может быть получено действительное количество опорных весовых значений. Для простоты в последующих вариантах осуществления изобретения описание приведено для опорного весового значения в случае 1 в качестве примера, и опорные весовые значения в других случаях реализованы аналогичным образом.[000261] Based on several cases described above, an actual number of reference weight values can be obtained. For simplicity, in the following embodiments of the invention, the description is given for the reference weight value in
[000262] После того как получено действительное количество опорных весовых значений, опорные весовые значения окружающих позиций за пределами текущего блока устанавливают на основе действительного количества опорных весовых значений, при этом опорные весовые значения окружающих позиций за пределами текущего блока могут монотонно увеличиваться или монотонно уменьшаться.[000262] After the actual number of reference weight values is obtained, the reference weight values of the surrounding positions outside the current block are set based on the actual number of reference weight values, and the reference weight values of the 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 an actual number, and the number of reference weight values is an actual number. Therefore, the actual number of reference weight values can be set as reference weight values of surrounding positions outside the current block.
[000264] Например, первое опорное весовое значение устанавливают как опорное весовое значение первой окружающей позиции за пределами текущего блока, второе опорное весовое значение устанавливают как опорное весовое значение второй окружающей позиции за пределами текущего блока и т.д.[000264] For example, the first reference weight value is set as the reference weight value of the first surrounding position outside the current block, the second reference weight value is set as 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 value of the weighted prediction angle index and the weighted prediction position. If there are 7 weighted prediction positions and 8 weighted prediction angles, the range of AwpIdx values is from 0 to 55. If the weighted prediction position is from -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 the 56 values of the AwpIdx index are shown in Table 2.
[000268] stepIdx представляет позицию взвешенного предсказания, которая находится в диапазоне от -3 до 3. Например, для первой позиции взвешенного предсказания позиция взвешенного предсказания равна -3; для второй позиции взвешенного предсказания позиция взвешенного предсказания равна -2 и т.д.; для седьмой позиции взвешенного предсказания позиция взвешенного предсказания равна 3.[000268] stepIdx represents a weighted prediction position that is in the range 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, and so on; 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 is a value of the logarithm log2 of the absolute value of the slope of the weighted prediction angle (e.g., 0, or 1, or a larger constant), and subangleIdx is an angular region in which the weighted prediction angle is located. In Fig. 5B, eight weighted prediction angles are shown, where angleIdx of
[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; then angleIdx is determined based on modAngNum as follows: if the value of modAngNum is 2, angleIdx = 7; if the value of modAngNum is 6, angleIdx = 8; otherwise, angleIdx =
[000272] Например, subangleIdx можно определить по следующей формуле: subangleIdx=modAngNum>>1.[000272] For example, subangleIdx can be determined using 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 can determine the AwpIdx value based on the weighted prediction angle and the weighted prediction position, as shown in Table 2. When the encoder side transmits the coded bitstream to the decoder side, the coded bitstream may contain the AwpIdx value. Thus, the decoder side can obtain the AwpIdx value, and then obtain 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 weight values ReferenceWeight[x] is configured, which means setting reference weight values for surrounding positions outside the current block. Based on subangleIdx, ReferenceWeight[x] can be calculated in the following several 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 angle region of 0, for example, the weighted prediction angle is equal to
[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 beyond the current block (i.e., the valid number, also called the valid length). When the subangleIdx value is 0, the surrounding positions beyond the current block specified by the weighted prediction angle may be the surrounding positions in the left column. Therefore, the valid number is denoted as ValidLength_H. For example, the valid number ValidLength_H can be determined by the following formula: ValidLength_H=(N+(M>>angleIdx)) << 1, the left shift by one bit is due to the fact that the formula uses 1/2 pixel precision. If 1 pixel precision is used, the formula is: ValidLength_H=(N+(M >> angleIdx)). If 1/4 pixel precision is adopted, the formula is: ValidLength_H=(N+(M >> angleIdx)) << 2. If 2 pixel precision is adopted, ValidLength_H=(N+(M >> angleIdx)) >> 1. Other pixel precisions may be used, 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 the position change parameter (for example, the intermediate parameter). When the subangleIdx value is 0, the surrounding positions beyond the current block specified by the weighted prediction angle may be the surrounding positions in the left column. Therefore, the position change parameter is denoted as DeltaPos_H. 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 the
[000280] В приведенной выше формуле ValidLength_Н и DeltaPos_Н могут быть отнесены к случаю 1 и здесь повторяться не будут.[000280] In the formula above, ValidLength_H and DeltaPos_H can be assigned 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 the angle region of 2, for example, the weighted prediction angle is
[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 beyond the current block (i.e., the valid number, also called the valid length). When the subangleIdx value is 2, the surrounding positions beyond the current block specified by the weighted prediction angle can be the surrounding positions in one upper row. Therefore, the valid number is denoted as ValidLength_W. For example, the valid number 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 the position change parameter (for example, the intermediate parameter). When the subangleIdx value is 2, the surrounding positions beyond the current block specified by the weighted prediction angle may be the surrounding positions in the upper row. Therefore, the position change parameter is denoted 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 the angle region of 3, for example, the weighted prediction angle is the
[000285] В приведенной выше формуле ValidLength_W и DeltaPos_W могут быть отнесены к случаю 3 и здесь повторяться не будут.[000285] In the formula above, 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] In this way, it is possible to determine which case to use 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 as follows: when the upper left corner of the current block is used as the origin, the starting position of the list of reference weight values ReferenceWeights[x] is changed. For example, Fig. 6C shows examples of
[000288] На этапе а3 весовое значение яркости позиции пикселя получают на основе angleIdx и списка опорных весовых значений ReferenceWeight[x]. На основе subangleIdx весовое значение яркости позиции пикселя может быть определено в следующих нескольких случаях.[000288] In step a3, the pixel position brightness weight value is obtained based on angleIdx and the list of reference weight values ReferenceWeight[x]. Based on subangleIdx, the pixel position brightness weight value 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 luminance 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 specified 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 is from 0 to M-1, and the range of y 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 subangleIdx value is 1, the luminance 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 specified 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 specified 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 is from 0 to M-1, and the range of y 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 luminance 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 specified 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 is from 0 to M-1, and the range of y 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-mentioned steps a2 and a3 may be combined into one step, that is, step a2 (the list of reference weight values ReferenceWeight[x] is configured based on the stepIdx, angleIdx and subangleIdx, and configuring the list of reference weights ReferenceWeight[x] means setting reference weight values for the surrounding positions outside the current block) and step a3 (the weight value of the luminance of the pixel position is obtained based on the angleIdx and the list of reference weight values ReferenceWeight[x]) may be combined into a step of obtaining the weight value of the luminance of the pixel position based on the stepIdx, angleIdx and subangleIdx, that is, determining the weight value of the luminance of the pixel position based on the value of the coordinate of the surrounding corresponding position of the current block and the value of the coordinate of the starting position of the weight transformation 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 chromaticity weight value for a pixel position is obtained based on a luminance weight value for the pixel position, and the luminance weight value for the pixel position and the chromaticity weight value for the 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 the 4:2:0 color 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 the 4:4:4 color 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 may be implemented in another way: instead of obtaining the chroma weight value based on the luminance weight value, the chroma weight value for the pixel position is obtained based on the angleIdx and the list of reference weight values ReferenceWeight[x]. For example, if the 4:2:0 chroma resolution format is used, the chroma weight value for the pixel position may be obtained based on the angleIdx and the list of reference weight values ReferenceWeight[x].
[000298] Например, если значение subangleIdx равно 0, весовое значение цветности позиции пикселя (х, у) определяют по следующей формуле: AwpWeightArrayUV[x][y] = Reference Weights [(у << 2)+((х << 2) >> angleIdx)].[000298] For example, if the subangleIdx value is 0, the chromaticity 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 subangleIdx value is 1, the chromaticity 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 subangleIdx value is 2, the chromaticity 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 subangleIdx value is 3, the chromaticity 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. Fig. 6D shows examples of
[000304] Вариант 9 осуществления изобретения. В описанных выше вариантах 1-3 осуществления изобретения первое значение предсказания позиции пикселя определяют на основе первого режима предсказания, а второе значение предсказания позиции пикселя определяют на основе второго режима предсказания.[000304] Embodiment 9 of the invention. In
[000305] В этом варианте осуществления изобретения описание приведено для первого режима предсказания, являющегося режимом внешнего предсказания, и второго режима предсказания, являющегося режимом внешнего предсказания, в качестве примера.[000305] In this embodiment, the description is given for the first prediction mode being the inter prediction mode and the second prediction mode being the 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 created, 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 target motion information of the current block, and the other possible motion information is selected from the motion compensation candidate list as the second target motion 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 target motion information, and a second pixel position prediction value is determined based on the second target motion information.
[000307] Например, и сторона кодера, и сторона декодера могут создавать список кандидатов для компенсации движения, и список кандидатов для компенсации движения на стороне кодера может быть таким же, как список кандидатов для компенсации движения на стороне декодера, что не ограничивается здесь.[000307] For example, both the encoder side and the decoder side may create a motion compensation candidate list, and the motion compensation candidate list on the encoder side may be the same as the motion compensation candidate list on the decoder side, which is not limited here.
[000308] Например, все информации о возможном движении в списке кандидатов для компенсации движения представляют собой информацию о движении с одной гипотезой, например, информация о возможном движении в списке кандидатов для компенсации движения представляет собой информацию об однонаправленном движении, а не информацию о двунаправленном движении. Поскольку все информации о возможном движении представляют собой информацию о движении с одной гипотезой, список кандидатов для компенсации движения может быть списком кандидатов для компенсации однонаправленного движения.[000308] For example, all the possible motion information in the motion compensation candidate list is motion information with one hypothesis, for example, the possible motion information in the motion compensation candidate list is unidirectional motion information, not bidirectional motion information. Since all the possible motion information is motion information with one hypothesis, the motion compensation candidate list may be a unidirectional motion compensation candidate list.
[000309] Например, когда создается список кандидатов для компенсации движения, сначала может быть добавлена пространственная информация о движении (например, один или более пространственных векторов движения), а затем может быть добавлена временная информация о движении (например, один или более временных векторов движения); и/или, когда создается список кандидатов для компенсации движения, сначала может быть добавлена информация об однонаправленном движении (например, один или более однонаправленных векторов движения), а затем может быть добавлена информация о двунаправленном движении (например, один или более двунаправленных векторов движения), что здесь не ограничивается.[000309] For example, when a list of candidates 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 list of candidates for motion compensation is created, unidirectional motion information (e.g., one or more unidirectional motion vectors) may be added first, and then bidirectional motion information (e.g., one or more bidirectional motion vectors) may be added, 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 divided 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 the unidirectional motion information from List1 (reference picture list 1); or determining to obtain the unidirectional motion information from List0 or List1 based on the adding order.
[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 the RDO, one possible motion information from the motion compensation candidate list as the first target motion information of the current block and select another possible motion information from the motion compensation candidate list as the second target motion information of the current block, wherein the first target motion information is different from the second target motion 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 coded bitstream to the decoder side, the coded 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 coded bitstream, the decoder side may analyze the indication information a and the indication information b from the coded 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 coded bitstream to the decoder side, the coded bitstream may carry indication information a and indication information c. The indication information a indicates an
[000316] После приема кодированного битового потока сторона декодера может проанализировать информацию а указания и информацию с указания из кодированного битового потока. На основе информации а указания сторона декодера выбирает информацию о возможном движении, соответствующую значению 1 индекса, из списка кандидатов для компенсации движения в качестве первой целевой информации о движении текущего блока. На основе информации с указания сторона декодера сначала определяет значение 2 индекса на основе значения 1 индекса и разности между значением 1 индекса и значением 2 индекса, а затем выбирает информацию о возможном движении, соответствующую значению 2 индекса, из списка кандидатов для компенсации движения в качестве второй целевой информации о движении текущего блока.[000316] After receiving the coded bitstream, the decoder side may analyze the indication information a and the indication information c from the coded bitstream. Based on the indication information a, the decoder side selects the possible motion information corresponding to
[000317] Процесс, в котором сторона кодера / сторона декодера определяет первое значение предсказания позиции пикселя на основе первой целевой информации о движении и определяет второе значение предсказания позиции пикселя на основе второй целевой информации о движении, может относиться к процессу внешнего предсказания и не будет здесь повторяться.[000317] The process in which the encoder side/decoder side determines a first pixel position prediction value based on the first target motion information and determines a second pixel position prediction value based on the second target motion information may refer to an inter prediction process and will not be repeated here.
[000318] Например, когда первое значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, первое значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Например, начальное значение предсказания позиции пикселя определяют на основе первой целевой информации о движении, а затем начальное значение предсказания умножают на заданный коэффициент для получения корректирующего значения предсказания. Если корректирующее значение предсказания больше, чем максимальное значение предсказания, максимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; если корректирующее значение предсказания меньше минимального значения предсказания, минимальное значение предсказания принимают в качестве первого значения предсказания текущего блока; и, если корректирующее значение предсказания не меньше минимального значения предсказания или не больше максимального значения предсказания, корректирующее значение предсказания принимают в качестве первого значения предсказания текущего блока. Описанный выше способ является только иллюстративным и не ограничивается здесь.[000318] For example, when the first pixel position prediction value is determined based on the first target motion information, the first pixel position prediction value can be obtained using an inter weighted prediction mode. For example, an initial pixel position prediction value is determined based on the first target motion information, and then the initial prediction value is multiplied by a predetermined coefficient to obtain a prediction correction value. If the prediction correction 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 prediction correction value is less 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 is not greater than the maximum prediction value, the prediction correction value is taken as the first prediction value of the current block. The above-described method is only illustrative and is not limited here.
[000319] Аналогично, когда второе значение предсказания позиции пикселя определяют на основе второй целевой информации о движении, второе значение предсказания позиции пикселя может быть получено с использованием режима внешнего взвешенного предсказания. Конкретная реализация может быть отнесена к приведенному выше примеру и не будет здесь повторяться.[000319] Similarly, when the second pixel position prediction value is determined based on the second target motion information, the second pixel position prediction value may be obtained using an inter weighted prediction mode. The specific implementation may be referred to the above example and will not be repeated here.
[000320] В приведенных выше случаях информация указания информации предсказания первого режима предсказания и информация указания информации предсказания второго режима предсказания могут быть взаимозаменяемыми при условии, что сторона кодера и сторона декодера являются согласованными. Обмен информацией указания не влияет на процесс анализа, то есть зависимость от анализа отсутствует. В случае одного и того же списка кандидатов режимов предсказания информация указания информации предсказания первого режима предсказания не может совпадать с информацией указания информации предсказания второго режима предсказания. Предполагается, что кодируются два индекса, где значение индекса а равно 1, а значение индекса b равно 3, когда значение индекса а кодируется первым, значение индекса b может кодироваться как 2(3-1); когда значение индекса b кодируется первым, значение индекса b должно кодироваться как 3. Одним словом, информация указания кодирования сначала с меньшим значением индекса может уменьшить служебные данные кодирования для кодирования большего значения индекса. Согласно способу создания списка кандидатов режима предсказания, первый режим предсказания, скорее всего, поступает с левой стороны, и на основе этого предшествующего опыта может быть выполнена корректировка на стороне кодера и стороне декодера, и может сначала кодироваться информация указания информации предсказания в области, смежной с левой стороной.[000320] In the above cases, the indication information of the prediction information of the first prediction mode and the indication information of the prediction information of the second prediction mode may be interchangeable, provided that the encoder side and the decoder side are consistent. The exchange of the indication information does not affect the analysis process, that is, there is no dependence on the analysis. In the case of the same list of prediction mode candidates, the indication information of the prediction information of the first prediction mode cannot coincide with the indication information of the prediction information of the second prediction mode. It is assumed that two indices are encoded, where the index value a is 1 and the index value b is 3, when the index value a is encoded first, the index value b can be encoded as 2(3-1); when the index value b is encoded first, the index value b should be encoded as 3. In a word, the indication information of encoding with a smaller index value first can reduce the encoding overhead for encoding a larger index value. According to the method of creating the 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 indication information of the prediction information in the area adjacent to the left side can be first encoded.
[000321] В приведенном выше случае список кандидатов режима предсказания может быть списком кандидатов для компенсации движения, информация предсказания первого режима предсказания может быть первой целевой информацией о движении, а информация предсказания второго режима предсказания может быть второй целевой информацией о движении. В кодированном битовом потоке сначала кодируется информация указания первой целевой информации о движении, такая как значение а индекса, а затем кодируется информация указания второй целевой информации о движении, такая как значение b индекса. В качестве альтернативы, сначала кодируется информация указания второй целевой информации о движении, такая как значение b индекса, а затем кодируется информация указания первой целевой информации о движении, такая как значение а индекса. Например, если значение а индекса равно 1, а значение b индекса равно 3, значение а индекса кодируется перед значением b индекса. В другом примере, если значение b индекса равно 1, а значение а индекса равно 3, значение b индекса кодируется перед значением а индекса.[000321] In the above case, the candidate list of the prediction mode may be a candidate list for motion compensation, the prediction information of the first prediction mode may be the first target motion information, and the prediction information of the second prediction mode may be the second target motion information. In the coded bitstream, the indication information of the first target motion information, such as the index value a, is first coded, and then the indication information of the second target motion information, such as the index value b, is coded. Alternatively, the indication information of the second target motion information, such as the index value b, is first coded, and then the indication information of the first target motion information, such as the index value a, is coded. For example, if the index value a is 1 and the index value b is 3, the index value a is coded 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 coded 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 should be created, which may be a unidirectional motion compensation candidate list. Fig. 7 is a schematic diagram 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 the priority order of List0, and a check for duplicate entries should be performed in the adding process. The order of F, G, C, A, B, and D is only an example, and another order may also be adopted, which is not limited in this description.
[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 the order of List0 as a 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 of List0 as a priority, and a check for duplicate entries must be performed in the adding process.
[000325] Стратегия List0 в качестве приоритета следующая: если имеется информация о движении List0, информация о движении List0 добавляется в список кандидатов для компенсации движения, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей. Если имеется информация о движении из List1, информация о движении из List1 добавляется в список кандидатов для компенсации движения, и в процессе добавления должна выполняться проверка на наличие повторяющихся записей.[000325] The List0 strategy as a priority is as follows: if there is motion information of List0, the motion information of List0 is added to the motion compensation candidate list, and a check for duplicate entries must be performed during the adding process. If there is motion information of List1, the motion information of List1 is added to the motion compensation candidate list, and a check for duplicate entries must be performed during the adding process.
[000326] Процесс создания списка кандидатов для компенсации движения описан ниже в сочетании с несколькими конкретными сценариями применения.[000326] The process of creating a list of candidates 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 of the invention, 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 of the invention, 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 of the invention, 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 of the invention, 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 of the invention, 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 above application scenarios 1-4, the circuit for obtaining temporal information about the motion relates to related technical fields, for example, temporal information about the motion of the current block can be obtained through a combined block of a combined image, which is not limited here.
[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 may be any integer; (k1 * x, k1 * y, ref_idx new1, ListX), where k1 is any positive integer other than zero, that is, a scaling operation is performed on the motion vector; (k2 * x, k2 * y, ref_idx_new2, ListY), where k2 is any positive integer other than zero, that is, a scaling operation is performed on the motion vector. In addition, addition of zero motion vectors may also be performed, that is, the possible motion information may be (0, 0, ref_idx3, ListZ). For the above possible motion information, when the possible motion information is added to the motion compensation candidate list, 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 the application scenarios 14, a candidate list for motion compensation may be created. In the application scenario 7, the candidate list for motion compensation is designated as AwpUniArray, and the motion information in the AwpUniArray is referred to as possible motion information. For embodiment 9 of the invention, the possible motion information may be selected from the 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 of the invention, two possible motion information are selected from the AwpUniArray as the first target motion information and the second target motion information of the current block. Based on this, the decoder side can analyze AwpCandIdx0 and AwpCandIdx1 from the coded bitstream and assign the (AwpCandIdx0+1)-th motion information in the AwpUniArray to mvAwp0L0, mvAwp0L1, RefIdxAwp0L0 and RefIdxAwp0L1, and assign the (AwpCandIdx1+1)-th motion information in the AwpUniArray to 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, mvAwp0LxLd0, RefIdxAwp0L0, and RefIdxAwp0L1, which is not limited here.
[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 the AwpUniArray can be assigned to the first target motion information. For example, if the value of AwpCandIdx0 is 0, the first motion information in the AwpUniArray is assigned to the first target motion information; if the value of AwpCandIdx0 is 1, the second motion information in the AwpUniArray is assigned to the first target motion information, and so on.
[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 the unidirectional motion information pointing to List0 and the unidirectional motion information pointing to List1.
[000366] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.[000366] If the (AwpCandIdx0+1)th motion information in the AwpUniArray is unidirectional motion information pointing to List0, the first target motion information includes unidirectional motion information pointing to List0, and the unidirectional motion information pointing to List1 is zero.
[000367] Если (AwpCandIdx0+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, первая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.[000367] If the (AwpCandIdx0+1)th motion information in the AwpUniArray is unidirectional motion information pointing to List1, the first target motion information includes unidirectional motion information pointing to List1, and the unidirectional motion information pointing to List0 is zero.
[000368] Например, mvAwp0L0 и RefIdxAwp0L0 представляют информацию об однонаправленном движении, указывающую на List0 в первой целевой информации о движении, a mvAwp0L1 и RefIdxAwp0L1 представляют информацию об однонаправленном движении, указывающую на List1 в первой целевой информации о движении.[000368] For example, mvAwp0L0 and RefIdxAwp0L0 represent one-way motion information pointing to List0 in the first target motion information, and mvAwp0L1 and RefIdxAwp0L1 represent one-way 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 motion information pointing to List0 is valid. Thus, the prediction mode of the first target motion information is PRED_List0, that is, the prediction value of the pixel position of the unidirectional motion information pointing to List0 can be adopted.
[000370] Если значение RefIdxAwp0L1 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания первой целевой информации о движении представляет собой PRED List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.[000370] If the value of RefIdxAwp0L1 is valid, this indicates that the unidirectional motion information pointing to List1 is valid. Thus, the prediction mode of the first target motion information is PRED List1, that is, the prediction value of the pixel position of the unidirectional motion information pointing to List1 can be adopted.
[000371] Например, AwpCandIdx1 представляет значение индекса второй целевой информации о движении. Следовательно, (AwpCandIdx1+1)-я информация о движении в AwpUniArray может быть назначена второй целевой информации о движении. Например, если значение AwpCandIdx1 равно 0, первая информация о движении в AwpUniArray назначается второй целевой информации о движении; если значение AwpCandIdx1 равно 1, вторая информация о движении в AwpUniArray назначается второй целевой информации о движении и т.д.[000371] For example, AwpCandIdx1 represents an index value of the second target motion information. Therefore, the (AwpCandIdx1+1)th motion information in the AwpUniArray can be assigned to the second target motion information. For example, if the value of AwpCandIdx1 is 0, the first motion information in the AwpUniArray is assigned to the second target motion information; if the value of AwpCandIdx1 is 1, the second motion information in the AwpUniArray is assigned to the second target motion information, and so on.
[000372] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0 и RefIdxAwp1L1 объединяют как вторую целевую информацию о движении, то есть вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, и информацию об однонаправленном движении, указывающую на List1.[000372] mvAwp1L0, mvAwp1L1, RefIdxAwp1L0, and RefIdxAwp1L1 are combined as the second target motion information, that is, the second target motion information includes the unidirectional motion information pointing to List0 and the unidirectional motion information pointing to List1.
[000373] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List0, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List0, а информация об однонаправленном движении, указывающая на List1, является нулевой.[000373] If the (AwpCandIdx1+1)th motion information in the AwpUniArray is unidirectional motion information pointing to List0, then the second target motion information includes unidirectional motion information pointing to List0, and the unidirectional motion information pointing to List1 is zero.
[000374] Если (AwpCandIdx1+1)-я информация о движении в AwpUniArray является информацией об однонаправленном движении, указывающей на List1, то вторая целевая информация о движении включает информацию об однонаправленном движении, указывающую на List1, а информация об однонаправленном движении, указывающая на List0, является нулевой.[000374] If the (AwpCandIdx1+1)th motion information in the AwpUniArray is unidirectional motion information pointing to List1, then the second target motion information includes unidirectional motion information pointing to List1, and the unidirectional motion information pointing to List0 is zero.
[000375] Например, mvAwp1L0 и RefIdxAwp1L0 представляют информацию об однонаправленном движении, указывающую на List0, во второй целевой информации о движении, a mvAwp1L1 и RefIdxAwp1L1 представляют информацию об однонаправленном движении, указывающую на List1, во второй целевой информации о движении.[000375] For example, mvAwp1L0 and RefIdxAwp1L0 represent one-way motion information pointing to List0 in the second target motion information, and mvAwp1L1 and RefIdxAwp1L1 represent one-way 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 motion information pointing to List0 is valid. Thus, the prediction mode of the second target motion information is PRED_List0, that is, the prediction value of the pixel position of the unidirectional motion information pointing to List0 can be adopted.
[000377] Если значение RefIdxAwp1L1 действительно, это указывает на то, что информация об однонаправленном движении, указывающая на List1, действительна. Таким образом, режим предсказания второй целевой информации о движении представляет собой PRED_List1, то есть может быть принято значение предсказания позиции пикселя информации об однонаправленном движении, указывающей на List1.[000377] If the value of RefIdxAwp1L1 is valid, this indicates that the unidirectional motion information pointing to List1 is valid. Thus, the prediction mode of the second target motion information is PRED_List1, that is, the prediction value of the pixel position of the unidirectional motion information pointing to List1 can be adopted.
[000378] Вариант 11 осуществления изобретения. В описанных выше вариантах 1-3 осуществления изобретения необходимо определить первое значение предсказания позиции пикселя на основе первого режима предсказания и определить второе значение предсказания позиции пикселя на основе второго режима предсказания. В этом варианте осуществления изобретения описание приведено для первого режима предсказания как режима внешнего предсказания и второго режима предсказания как режима внешнего предсказания в качестве примера.[000378] Embodiment 11. In
[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 created, 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 source motion information of the current block, and the other possible motion information is selected from the motion compensation candidate list as the second source motion information of the current block, wherein the first source motion information and the second source motion information are different. Then, based on the first source motion information, a first target motion information of the current block is determined, and based on the second source motion information, a second target motion information of the current block is determined. For each pixel position of the current block, the first pixel position prediction value is determined based on the first target motion information, and the second pixel position prediction value is determined based on the second target motion information.
[000380] Процесс создания списка кандидатов для компенсации движения можно отнести к вариантам осуществления 9 и 10 изобретения и здесь повторяться не будет. Процесс определения первого значения предсказания на основе первой целевой информации о движении и определения второго значения предсказания на основе второй целевой информации о движении можно отнести к варианту 9 осуществления изобретения и здесь повторяться не будет. В отличие от варианта 9 осуществления изобретения, в варианте 11 осуществления изобретения информация о возможном движении, выбранная из списка кандидатов для компенсации движения, является исходной информацией о движении, а не целевой информацией о движении. После получения исходной информации о движении целевая информация о движении может быть получена на основе исходной информации о движении. Конкретный процесс получения можно отнести к последующим вариантам осуществления изобретения.[000380] The process of creating a motion compensation candidate list may be referred to embodiments 9 and 10 of the invention and will not be repeated here. The process of determining a first prediction value based on the first target motion information and determining a second prediction value based on the second target motion information may be referred to embodiment 9 of the invention and will not be repeated here. Unlike embodiment 9 of the invention, in embodiment 11 of the invention, the possible motion information selected from the motion compensation candidate list is the original motion information, not the target motion information. After the original motion information is obtained, the target motion information may be obtained based on the original motion information. The specific obtaining process may be referred to 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 may be created, wherein the motion compensation candidate list includes at least one possible motion information. Then, two possible motion information are selected from the motion compensation candidate list as the first source motion information and the second source motion 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 the target motion information.
[000382] Для определения целевой информации о движении на основе исходной информации о движении варианты осуществления изобретения предоставляют схемы наложения информации об однонаправленном движении на разность векторов движения. Например, исходная информация о движении включает исходный вектор движения, а целевая информация о движении включает целевой вектор движения. Для определения целевого вектора движения текущего блока на основе исходного вектора движения может быть получена разность векторов движения (MVD), соответствующая исходному вектору движения, и целевой вектор движения определяют на основе разности векторов движения и исходного вектора движения, то есть сумму разности векторов движения и исходного вектора движения принимают в качестве целевого вектора движения.[000382] To determine the target motion information based on the original motion information, embodiments of the invention provide schemes for superimposing the unidirectional motion information on the motion vector difference. For example, the original motion information includes the original motion vector, and the target motion information includes the target motion vector. To determine the target motion vector of the current block based on the original motion vector, a motion vector difference (MVD) corresponding to the original motion vector can be obtained, and the target motion vector is determined based on the motion vector difference and the original motion vector, that is, the sum of the motion vector difference and the original 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. Based on Embodiment 11, direction information and amplitude information of the motion vector difference are matched. If the direction information indicates a rightward direction 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 Ad, the motion vector difference is (0, -Ad). If the direction information indicates a leftward direction and the amplitude information indicates that the amplitude is Al, the motion vector difference is (-Al, 0). If the direction information indicates an 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-upward direction and the amplitude information indicates that the amplitude is Ar, the motion vector difference is (Aru, Aru). If the direction information indicates the left-up direction and the amplitude information indicates 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 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 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 the 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-mentioned directional 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 that is not limited here.
[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, the motion vector difference supports four directions: up, down, left, and right, and the motion vector difference supports the following five step length configurations: -pixels, -pixel, 1-pixel, 2-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 of the motion vectors can be (0, 1), (0, 2), (0, 4), (0, 8) and (0, 16). In the downward direction, the difference of the motion vectors can be (0, -1), (0, -2), (0, -4), (0, -8) and (0, -16). In the left direction, the difference of the motion vectors can be (-1.0), (-2, 0), (-4, 0), (-8, 0) and (-16, 0). In the right direction, the difference of the 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 step length configurations: -pixels, -pixel, 1-pixel, 2-pixel, 3-pixel and 4-pixel, that is, the value of the amplitude A can be equal to 1, 2, 4, 8 and 16. Thus, in the upward direction, the difference in the motion vectors can be (0, 1), (0, 2), (0, 4), (0, 8), (0, 12) and (0, 16). The differences in the motion vectors of 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 step length configurations: -pixels, -pixel and 1-pixel, that is, the value of the amplitude A can be equal to 1, 2 and 4. Thus, in the left-up direction, the difference of the motion vectors can be (-1, 1), (-2, 2) and (-4, 4). When the direction is right-up, the difference of the motion vectors can be (1, 1), (2, 2) and (4, 4). The differences of the motion vectors of other directions can be realized in the same way as in the directions "left up and right up", and the values of the differences of the motion vectors can be specified in the above 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 step length configurations: -pixels, -pixel, 1-pixel and 2-pixel, that is, the amplitude value 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 only illustrative, and no limitations are made herein. For example, the direction supported by the motion vector difference may be arbitrarily selected, 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 may be changeable 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 may be adopted for a larger QP, and -pixels, -pixel, 1-pixel and 2-pixel can be adopted for a smaller QP. In another example, a suitable step length configuration can be set at a sequence level, a picture level, a frame level, a slice level, a tile level, a patch level, a CTU level, etc., and the decoder side performs a decoding operation according to the step length configurations analyzed at a sequence level, a picture level, a frame level, a slice level, a tile level, a patch level, a 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 the following 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 accuracy -pixel motion vector difference 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] After creating the motion compensation candidate list, the encoder side may sequentially traverse each possible motion vector in the motion compensation candidate list. When traversing the
[000393] Аналогично, для каждого из пройденных возможных векторов движения значение стоимости RDO может быть получено путем описанной выше обработки. После прохождения всех возможных векторов движения из всех значений стоимости RDO выбирают минимальное значение стоимости RDO. Если значение 1-1 стоимости RDO является минимальным, сторона кодера может кодировать следующее содержимое в кодированном битовом потоке: значение индекса возможного вектора 1 движения в списке кандидатов для компенсации движения, информацию о направлении и информацию об амплитуде разности векторов движения (0, 4), при этом информация о направлении используется для указания направления разности векторов движения (0, 4) вверх, а информация об амплитуде используется для указания амплитуды разности векторов движения (0, 4) и равна 4. Например, информация указания информации о направлении может быть равна 0, что указывает первое направление в списке направлений (вверх и вниз), и информация указания информации об амплитуде может быть равна 4, что указывает первую конфигурацию длины шага в списке конфигурации длины шага (1-пиксель, 2-пикселя). Описанный выше процесс является упрощенным примером, который здесь не ограничивается при условии, что могут быть указаны информация о направлении и информация об амплитуде.[000393] Similarly, for each of the traversed possible motion vectors, an RDO cost value may be obtained by the above-described processing. After traversing all of the possible motion vectors, a minimum RDO cost value is selected from all of the RDO cost values. If the 1-1 RDO cost value is the minimum, the encoder side may encode the following content in the encoded bitstream: an index value of the
[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 step length configurations: -pixels, -pixel, 1-pixel, 2-pixel and 4-pixel, the direction information of the motion vector difference can be encoded using a 2-bin fixed-length code (a total of four values), where the four values of the 2-bin fixed-length code respectively represent four directions: up, down, left and right. The amplitude information of the motion vector difference can 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 is where the motion vector difference supports four directions: up, down, left, and right, and the motion vector difference supports six step length configurations: -pixels, -pixel, 1-pixel, 2-pixel, 3-pixel and 4-pixel, the direction information of the motion vector difference can be encoded using a fixed-length 2-bin code (a total of four values), and the amplitude information of the motion vector difference can be encoded using a truncated unary code.
[000396] Другой пример, когда разность векторов движения поддерживает восемь направлений: вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх и вправо-вниз, а разность векторов движения поддерживает три конфигурации длины шага: -пикселя, -пикселя и 1-пиксель, информация о направлении разности векторов движения может кодироваться с использованием 3-бинового кода фиксированной длины (всего восемь значений), а информация об амплитуде разности векторов движения может кодироваться с использованием усеченного унарного кода.[000396] Another example is when 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 step length configurations: -pixels, -pixel and 1-pixel, the direction information of the motion vector difference can be encoded using a 3-bin fixed-length code (eight values in total), and the amplitude information of the motion vector difference can be encoded using a truncated unary code.
[000397] В другом примере, когда разность векторов движения поддерживает четыре направления: вверх, вниз, влево, вправо, а разность векторов движения поддерживает четыре конфигурации длины шага: -пикселя, -пикселя, 1-пиксель и 2-пикселя, информация о направлении разности векторов движения может кодироваться с использованием усеченного унарного кода, а информация об амплитуде разности векторов движения может кодироваться с использованием 2-бинового кода фиксированной длины (всего четыре значения).[000397] In another example, when the motion vector difference supports four directions: up, down, left, right, and the motion vector difference supports four step length configurations: -pixels, -pixel, 1-pixel and 2-pixel, the direction information of the motion vector difference can be encoded using a truncated unary code, and the amplitude information of the motion vector difference can be encoded using a fixed-length 2-bin code (a total of four values).
[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 may search for an optimal motion vector in a certain region, and then take the difference between the optimal motion vector and a candidate motion vector as a motion vector difference (MVD), and encode the amplitude information and the direction information of the motion vector difference and the index value of the candidate motion vector in the motion compensation candidate list into the bitstream. When the encoder side searches for an optimal motion vector in a certain region, it is expected that the direction and amplitude of the motion vector difference will be consistent, that is, the optimal motion vector is searched in limited ranges of motion vector difference, such as (Ar, 0), (0, -Ad), (-Al, 0), (0, Au), (Aru, Aru), (-Aru, Alu), (-Ald, -Ald), and (Ard, -Ard), etc., rather than in any range of motion vector difference.
[000400] После получения кодированного битового потока текущего блока сторона декодера может проанализировать значение индекса возможного вектора движения в списке кандидатов для компенсации движения из кодированного битового потока и выбрать возможный вектор движения, соответствующий значению индекса в списке кандидатов для компенсации движения и принять возможный вектор движения в качестве исходного вектора движения текущего блока. Сторона декодера также может анализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока и определять разность векторов движения на основе информации о направлении и информации об амплитуде.[000400] After receiving the coded bitstream of the current block, the decoder side may analyze the index value of the possible motion vector in the motion compensation candidate list from the coded bitstream and select the possible motion vector corresponding to the index value in the motion compensation candidate list and take the possible motion vector as the original motion vector of the current block. The decoder side may also analyze the direction information and the amplitude information of the motion vector difference from the coded bitstream and determine the motion vector difference based on the direction information and the amplitude information.
[000401] Затем сторона декодера может определить целевой вектор движения текущего блока на основе разности векторов движения и исходного вектора движения, например, сумма разности векторов движения и исходного вектора движения может быть принята в качестве целевого движения текущего блока.[000401] 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 sum of the difference of the motion vectors and the source motion vector may be taken as the target motion of the current block.
[000402] В вышеприведенном варианте осуществления изобретения при кодировании информации о направлении разности векторов движения сторона кодера может использовать код фиксированной длины или усеченный унарный код и т.п. Следовательно, на стороне декодера может использоваться код фиксированной длины или усеченный унарный код и т.п. для декодирования информации о направлении разности векторов движения, чтобы получить информацию о направлении разности векторов движения, например вверх, вниз, влево, вправо, влево-вверх, влево-вниз, вправо-вверх, вправо-вниз и т.д.[000402] In the above embodiment of the invention, when encoding the direction information of the motion vector difference, the encoder side may use a fixed-length code or a truncated unary code, etc. Therefore, on the decoder side, a fixed-length code or a truncated unary code, etc. may be used to decode the direction information of the motion vector difference to obtain the direction information 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 of the invention, when encoding the motion vector difference amplitude information, the encoder side may use a fixed length code or a truncated unary code, etc. Therefore, the decoder side may use a fixed length code or a truncated unary code, etc. to decode the motion vector difference amplitude information to obtain motion vector difference amplitude information such as step length configurations: -pixels, -pixel, 1-pixel, 2-pixel, etc., and then determine the amplitude value A of the motion vector difference based on the step length configuration, for example -pixels, -pixel, 1-pixel and 2-pixel.
[000404] Подводя итог, можно сказать, что сторона декодера может проанализировать информацию о направлении и информацию об амплитуде разности векторов движения из кодированного битового потока, а затем определить разность векторов движения на основе информации о направлении и информации об амплитуде.[000404] To summarize, the decoder side may analyze direction information and amplitude information of the motion vector difference 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 a possible implementation, the encoder side may also encode flag information in the encoded bitstream, wherein the flag information indicates superposition of the motion vector difference on the original motion vector or no superposition of the motion vector difference on the original motion vector. The flag information may be a submode flag of the EAWP mode. In addition, the EAWP mode may also be called an AWP with Motion Vector Refinement (AWP-MVR) mode. After receiving the encoded bitstream of the current block, the decoder side first analyzes the submode flag of the extended angle weighted prediction (EAWP) mode from the encoded bitstream of the current block. If the submode flag indicates superposition of the motion vector difference on the original motion vector, the decoder side analyzes direction information and 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 motion vector of the current block based on the original motion vector and the motion vector difference. If the submode flag indicates that there is no overlap between the motion vector difference and 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 submode flag of the EAWP mode is the first submode value, this indicates that the motion vector difference is superimposed on the original motion vector; when the submode flag of the EAWP mode is the second submode value, this indicates that the motion vector difference is not superimposed on the original motion vector. The first submode value and the second submode value can be configured based on experience, for example, the first submode value can be 1, and the second submode value can be 0, or, for example, the first submode value can be 0, and the second submode value can be 1. The above are only two examples, and no limitations are made here.
[000407] В возможной реализации для варианта 11 осуществления изобретения первая исходная информация о движении включает первый исходный вектор движения, первая целевая информация о движении включает первый целевой вектор движения, вторая исходная информация о движении включает второй исходный вектор движения, и вторая целевая информация о движении включает второй целевой вектор движения. На основе вышеизложенного может быть получена первая разность векторов движения, соответствующая первому исходному вектору движения, и первый целевой вектор движения определяется на основе первой разности векторов движения и первого исходного вектора движения, то есть сумма первой разности векторов движения и первого исходного вектора движения принимается в качестве первого целевого вектора движения. Может быть получена вторая разность векторов движения, соответствующая второму исходному вектору движения, и второй целевой вектор движения определяется на основе второй разности векторов движения и второго исходного вектора движения, то есть сумма второй разности векторов движения и второго исходного вектора движения принимается в качестве второго целевого вектора движения.[000407] In a possible implementation for embodiment 11 of the invention, the first original motion information includes a first original motion vector, the first target motion information includes a first target motion vector, the second original motion information includes a second original motion vector, and the second target motion information includes a second target motion vector. Based on the above, a first motion vector difference corresponding to the first original motion vector can be obtained, and the first target motion vector is determined based on the first motion vector difference and the first original motion vector, that is, the sum of the first motion vector difference and the first original motion vector is taken as the first target motion vector. A second motion vector difference corresponding to the second original motion vector can be obtained, and the second target motion vector is determined based on the second motion vector difference and the second original motion vector, that is, the sum of the second motion vector difference and the second original motion vector is taken as the second target motion vector.
[000408] Сторона кодера может использовать RDO для определения первой разности векторов движения, соответствующей первому исходному вектору движения, и определения второй разности векторов движения, соответствующей второму исходному вектору движения, что здесь не ограничено.[000408] The encoder side may use the RDO to determine a first motion vector difference corresponding to a first source motion vector and determine a second motion vector difference corresponding to a second source motion vector, which is not limited here.
[000409] Когда сторона кодера передает кодированный битовый поток текущего блока на сторону декодера, кодированный битовый поток может переносить информацию о направлении и информацию об амплитуде первой разности векторов движения, а также информацию о направлении и информацию об амплитуде второй разности векторов движения.[000409] When the encoder side transmits the coded bitstream of the current block to the decoder side, the coded 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 coded bit stream of the current block, may analyze direction information and amplitude information of the first motion vector difference from the coded bit stream and determine the first motion vector difference based on the direction information and amplitude information of the first motion vector difference, and may analyze direction information and amplitude information of the second motion vector difference from the coded bit stream and determine the second motion vector difference based on the direction information and amplitude information of the second motion vector difference.
[000411] Затем сторона декодера может определить первый целевой вектор движения текущего блока на основе первой разности векторов движения и первого исходного вектора движения и определить второй целевой вектор движения текущего блока на основе второй разности векторов движения и второго исходного вектора движения.[000411] Then, the decoder side may determine a 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 a 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 a possible implementation, the encoder side may also encode a first submode flag and a second submode flag of the EAWP prediction mode in the encoded bitstream, wherein the first submode flag indicates the superposition of the motion vector difference on the first source motion vector or the absence of the superposition of the motion vector difference on the first source motion vector, and the second submode flag indicates the superposition of the motion vector difference on the second source motion vector or the absence of the superposition of the motion vector difference on the second source motion vector.
[000413] В возможной реализации упомянутый выше первый флаг подрежима также может быть первым битом флага в кодированном битовом потоке, а упомянутый выше второй флаг подрежима также может быть вторым битом флага в кодированном битовом потоке.[000413] In a possible implementation, the above-mentioned first submode flag may also be the first bit of a flag in the encoded bitstream, and the above-mentioned second submode flag may also be the second bit of a flag in the encoded bitstream.
[000414] Сторона декодера после приема кодированного битового потока текущего блока может сначала анализировать первый флаг подрежима и второй флаг подрежима режима EAWP из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде первой разности векторов движения из кодированного битового потока и определяет первую разность векторов движения на основе информации о направлении и информации об амплитуде первой разности векторов движения, а затем определяет первый целевой вектор движения текущего блока на основе первого исходного вектора движения и первой разности векторов движения. Если первый флаг подрежима указывает на отсутствие наложения разности векторов движения на первый исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде первой разности векторов движения, а напрямую берет первый исходный вектор движения в качестве первого целевого вектора движения текущего блока. Если второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения, сторона декодера анализирует информацию о направлении и информацию об амплитуде второй разности векторов движения из кодированного битового потока и определяет вторую разность векторов движения на основе информации о направлении и информации об амплитуде второй разности векторов движения, а затем определяет второй целевой вектор движения текущего блока на основе второго исходного вектора движения и второй разности векторов движения. Если второй флаг подрежима указывает на отсутствие наложения разности векторов движения на второй исходный вектор движения, сторона декодера не анализирует информацию о направлении или информацию об амплитуде второй разности векторов движения, а напрямую берет второй исходный вектор движения в качестве второго целевого вектора движения текущего блока.[000414] The decoder side, after receiving the coded bitstream of the current block, may first analyze the first submode flag and the second submode flag of the EAWP mode from the coded bitstream of the current block. If the first submode flag indicates superposition of the motion vector difference on the first source motion vector, the decoder side analyzes the direction information and the amplitude information of the first motion vector difference from the coded bitstream and determines the first motion vector difference based on the direction information and the amplitude information of the first motion vector difference, and then determines the 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 no superposition of the motion vector difference 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 submode flag indicates superposition of the motion vector difference on the second source 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 motion vector difference, and then determines the second target motion vector of the current block based on the second source motion vector and the second motion vector difference. If the second submode flag indicates that the motion vector difference is not superimposed on 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 of the invention: based on Embodiment 11 of the invention, the encoder side may search for an optimal motion vector within a certain area, then receive the difference between the optimal motion vector and the possible motion vector as a motion vector difference (MVD), and then encode information about the motion vector difference into a bitstream and encode an index value of the possible motion vector in the motion compensation candidate list into the bitstream.
[000416] При поиске оптимального вектора движения в определенной области кодер может выполнять поиск произвольно без ограничений. Например, для каждого возможного вектора движения в списке кандидатов для компенсации движения выполняется поиск нескольких векторов движения границ с принятием возможного вектора движения в качестве центра, определяется значение стоимости RDO, соответствующее каждому из векторов движения границ, и выбирается минимальное значение стоимости RDO из всех значений стоимости RDO, а вектор движения границ, соответствующий минимальному значению стоимости RDO, принимается в качестве оптимального вектора движения.[000416] When searching for an optimal motion vector in a certain area, the encoder may perform the search arbitrarily without restrictions. For example, for each possible motion vector in the candidate list for motion compensation, several boundary motion vectors are searched for by taking the possible motion vector as the center, an RDO cost value corresponding to each of the boundary motion vectors is determined, and the minimum RDO cost value is selected from all RDO cost values, and the boundary motion vector corresponding to the minimum RDO cost value 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 content in the encoded bitstream: a value of the index of the
[000419] Сторона декодера может после получения кодированного битового потока текущего блока анализировать значение индекса возможного вектора движения в списке кандидатов для компенсации движения из кодированного битового потока, выбирать возможный вектор движения, соответствующий значению индекса, из списка кандидатов для компенсации движения и принимать возможный вектор движения в качестве исходного вектора движения текущего блока. Сторона декодера также может анализировать информацию разности горизонтальных составляющих и/или информацию разности вертикальных составляющих разности векторов движения из кодированного битового потока текущего блока и определять разность векторов движения на основе информации разности горизонтальных составляющих (например, абсолютное значение разности горизонтальных составляющих и/или значение со знаком разности горизонтальных составляющих) разности векторов движения и информацию разности вертикальных составляющих (например, абсолютное значение разности вертикальных составляющих и/или значение со знаком разности вертикальных составляющих) разности векторов движения.[000419] The decoder side may, after receiving the coded bitstream of the current block, analyze an index value of a candidate motion vector in the motion compensation candidate list from the coded bitstream, select a candidate motion vector corresponding to the index value from the motion compensation candidate list, and take the candidate motion vector as an initial motion vector of the current block. The decoder side may also analyze horizontal component difference information and/or vertical component difference information of the motion vector difference from the coded bitstream of the current block, and determine the motion vector difference based on the horizontal component difference information (for example, an absolute value of the horizontal component difference and/or a signed value of the horizontal component difference) of the motion vector difference and the vertical component difference information (for example, an absolute value of the vertical component difference and/or a 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 the motion vector difference, that is, the motion vector difference includes the horizontal component difference and the vertical component difference.
[000422] В возможной реализации сторона кодера может также кодировать флаг подрежима режима EAWP в кодированном битовом потоке, при этом флаг подрежима указывает на наложение разности векторов движения на исходный вектор движения или отсутствие наложения разности векторов движения на исходный вектор движения. Сторона декодера после приема кодированного битового потока текущего блока анализирует флаг подрежима режима EAWP из кодированного битового потока. Если флаг подрежима указывает на наложение разности векторов движения на исходный вектор движения, анализируют информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих разности векторов движения из кодированного битового потока, определяют разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих и определяют целевой вектор движения текущего блока на основе исходного вектора движения и разности векторов движения. Если флаг подрежима указывает на отсутствие наложения разности векторов движения на исходный вектор движения, информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих разности векторов движения не анализируют, но исходный вектор движения принимают как целевой вектор движения текущего блока.[000422] In a possible implementation, the encoder side may also encode a submode flag of the EAWP mode in the encoded bitstream, wherein the submode flag indicates the superposition of the motion vector difference on the original motion vector or the absence of superposition of the motion vector difference on the original motion vector. The decoder side, after receiving the encoded bitstream of the current block, analyzes the submode flag of the EAWP mode from the encoded bitstream. If the submode flag indicates the superposition of the motion vector difference on the original motion vector, horizontal component difference information and vertical component difference information of the motion vector difference are analyzed from the encoded bitstream, the motion vector difference is determined based on the horizontal component difference information and the vertical component difference information, and the target motion vector of the current block is determined based on the original motion vector and the motion vector difference. If the submode flag indicates that there is no overlap of the motion vector difference with the source motion vector, the horizontal component difference information and the vertical component difference information of the motion vector difference are not analyzed, but the source 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 original motion information includes a first original motion vector, the first target motion information includes a first target motion vector, the second original motion information includes a second original motion vector, and the second target motion information includes a second target motion vector. Based on this, a first motion vector difference corresponding to the first original motion vector can be obtained, and the first target motion vector is determined based on the first motion vector difference and the first original motion vector, that is, the sum of the first original motion vector, and the first original motion vector is taken as the first target motion vector. A second motion vector difference corresponding to the second original motion vector can be obtained, and the second target motion vector is determined based on the second motion vector difference and the second original motion vector, that is, the sum of the second motion vector difference, and the second original motion vector is taken as the second target motion vector.
[000424] Для стороны кодера кодированный битовый поток текущего блока может переносить информацию разности горизонтальных составляющих (например, абсолютное значение разности горизонтальных составляющих и/или значение со знаком разности горизонтальных составляющих) и информацию разности вертикальных составляющих (например, абсолютное значение разности вертикальных составляющих и/или значение со знаком разности вертикальных составляющих) первой разности векторов движения, а также информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения.[000424] For the encoder side, the coded bitstream of the current block may carry horizontal component difference information (e.g., an absolute value of the horizontal component difference and/or a signed value of the horizontal component difference) and vertical component difference information (e.g., an absolute value of the vertical component difference and/or a signed value of the vertical component difference) of the first motion vector difference, as well as horizontal component difference information and vertical component difference information of the second motion vector difference.
[000425] После приема кодированного битового потока текущего блока сторона декодера может анализировать информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих первой разности векторов движения из кодированного битового потока и определять первую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих первой разности векторов движения. Сторона декодера также может анализировать информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения из кодированного битового потока и определять вторую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих второй разности векторов движения. Первый целевой вектор движения определяют на основе первой разности векторов движения и первого исходного вектора движения, а второй целевой вектор движения определяют на основе второй разности векторов движения и второго исходного вектора движения.[000425] After receiving the coded bitstream of the current block, the decoder side may analyze the horizontal component difference information and the vertical component difference information of the first motion vector difference from the coded bitstream, and determine the first motion vector difference based on the horizontal component difference information and the vertical component difference information of the first motion vector difference. The decoder side may also analyze the horizontal component difference information and the vertical component difference information of the second motion vector difference from the coded bitstream, 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 motion vector difference and the first source motion vector, and the second target motion vector is determined based on the second motion vector difference and the second source motion vector.
[000426] В возможной реализации сторона кодера может также кодировать первый флаг подрежима и второй флаг подрежима режима EAWP в кодированном битовом потоке, при этом первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения или отсутствие наложения разности векторов движения на первый исходный вектор движения; второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения или отсутствие наложения разности векторов движения на второй исходный вектор движения.[000426] In a possible implementation, the encoder side may also encode a first submode flag and a second submode flag of the EAWP mode in the encoded bitstream, wherein the first submode flag indicates the superposition of the motion vector difference on the first source motion vector or the absence of the superposition of the motion vector difference on the first source motion vector; the second submode flag indicates the superposition of the motion vector difference on the second source motion vector or the absence of the superposition of the motion vector difference on the second source motion vector.
[000427] После приема кодированного битового потока текущего блока сторона декодера может сначала анализировать первый флаг подрежима и второй флаг подрежима режима EAWP из кодированного битового потока текущего блока. Если первый флаг подрежима указывает на наложение разности векторов движения на первый исходный вектор движения, сторона декодера анализирует информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих первой разности векторов движения из кодированного битового потока текущего блока и определяет первую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих первой разности векторов движения, а затем определяет первый целевой вектор движения текущего блока на основе первого исходного вектора движения и первой разности векторов движения. Если первый флаг подрежима указывает на то, что разность векторов движения не накладывается на первый исходный вектор движения, сторона декодера не анализирует информацию разности горизонтальных составляющих или информацию разности вертикальных составляющих первой разности векторов движения, а напрямую принимает первый исходный вектор движения в качестве первого целевого вектора движения текущего блока. Если второй флаг подрежима указывает на наложение разности векторов движения на второй исходный вектор движения, сторона декодера анализирует информацию разности горизонтальных составляющих и информацию разности вертикальных составляющих второй разности векторов движения из кодированного битового потока текущего блока и определяет вторую разность векторов движения на основе информации разности горизонтальных составляющих и информации разности вертикальных составляющих второй разности векторов движения, а затем определяет второй целевой вектор движения текущего блока на основе второго исходного вектора движения и второй разности векторов движения. Если второй флаг подрежима указывает на то, что разность векторов движения не накладывается на второй исходный вектор движения, сторона декодера не анализирует информацию разности горизонтальных составляющих или информацию разности вертикальных составляющих второй разности векторов движения, а напрямую принимает второй исходный вектор движения в качестве второго целевого вектора движения текущего блока.[000427] After receiving the coded 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 coded bitstream of the current block. If the first submode flag indicates that the motion vector difference is superimposed on the first source 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 coded bitstream of the current block and determines the first motion vector difference based on the horizontal component difference information and the vertical component difference information of the first motion vector difference, and then determines the 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 horizontal component difference information or the vertical component difference information of the first motion vector difference, but directly receives the first source motion vector as the first target motion vector of the current block. If the second submode flag indicates that the motion vector difference is superimposed on the second source 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 coded bit stream of the current block, and determines the second motion vector difference based on the horizontal component difference information and the vertical component difference information of the second motion vector difference, and then determines the second target motion vector of the current block based on the second source motion vector and the second motion vector difference. If the second submode 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 motion vector of the current block.
[000428] Вариант 14 осуществления изобретения: на основе вариантов 11-13 осуществления изобретения для двух разностей векторов движения соответствующий синтаксис для наложения разности векторов движения на информацию об однонаправленном движении описан ниже в сочетании с несколькими конкретными сценариями применения.[000428] Embodiment 14: Based on embodiments 11-13 of the invention for two motion vector differences, a corresponding syntax for superimposing a motion vector difference on unidirectional motion information is described below in combination with several specific application scenarios.
[000429] Сценарий 1 применения: в таблице 4 показан пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, а AwpFlag указывает, находится ли текущий блок в режиме AWP.[000429] Usage Scenario 1: Table 4 shows an example of the relevant 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 a value of the weighted prediction angle mode index in the skip mode or the direct mode, and the value of AwpIdx (see Embodiment 8 of the invention for determining 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.
[000431] awp_cand_idx0 (первый индекс информации о движении углового режима взвешенного предсказания) представляет собой первое значение индекса информации о движении углового режима взвешенного предсказания в режиме пропуска или в прямом режиме. Значение AwpCandIdx0 (см. вариант 10 осуществления изобретения для соответствующего определения) равно значению awp_cand_idx0. Если в битовом потоке нет awp_cand_idx0, значение AwpCandIdx0 равно 0.[000431] awp_cand_idx0 (first index of the angle weighted prediction mode motion information) is the first index value of the angle weighted prediction mode motion information in the skip mode or the direct mode. The value of AwpCandIdx0 (see Embodiment 10 of the invention 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 (the second index of the motion information for the angular weighted prediction mode) is the second value of the index of the motion information for the angular weighted prediction mode in the skip mode or the direct mode. The value of AwpCandIdx1 (see Embodiment 10 of the invention 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 (e.g. 1), it indicates that the current block is in the extended angle weighted prediction mode; when awp_mvd_flag is the second value (e.g. 0), it indicates that the current block is in the non-extended angle weighted prediction mode. For example, the value of AwpMvdFlag may 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 (the first sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 (the second sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 occur: 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 (direction index value of motion vector difference for first motion information) is a direction index value of the motion vector difference 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 equal to 0.
[000437] awp_mvd_step0 (значение индекса длины шага разности векторов движения первой информации о движении) представляет собой значение индекса длины шага разности векторов движения первой информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdStep0 может быть равно значению awp_mvd_step0. Если в битовом потоке нет awp_mvd_step0, значение AwpMvdStep0 может быть равно 0.[000437] awp_mvd_step0 (the step length index value of the motion vector difference of the first motion information) is the step length index value of the motion vector difference of the first motion information of the 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 equal to 0.
[000438] awp_mvd_dir1 (значение индекса направления разности векторов движения второй информации о движении) представляет собой значение индекса направления разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdDir1 может быть равно значению awp_mvd_dir1. Если в битовом потоке нет awp_mvd_dir1, значение AwpMvdDir1 может быть равно 0.[000438] awp_mvd_dir1 (motion vector difference direction index value of the second motion information) is a motion vector difference direction index value of the second motion information of the 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 equal to 0.
[000439] awp_mvd_step1 (значение индекса длины шага разности векторов движения второй информации о движении) представляет собой значение индекса длины шага разности векторов движения второй информации о движении расширенного углового режима взвешенного предсказания. Например, значение AwpMvdStep1 может быть равно значению awp_mvd_step1. Если в битовом потоке нет awp_mvd_step1, значение AwpMvdStep1 может быть равно 0.[000439] awp_mvd_step1 (the step length index value of the motion vector difference of the second motion information) is the step length index value of the motion vector difference of the second motion information of the 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 equal to 0.
[000440] Сценарий 2 применения: таблица 5 показывает пример соответствующего синтаксиса, где SkipFlag указывает, находится ли текущий блок в режиме пропуска, DirectFlag указывает, находится ли текущий блок в прямом режиме, а AwpFlag указывает, находится ли текущий блок в режиме AWP.[000440] Usage Scenario 2: Table 5 shows an example of the relevant 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.
[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 (the first sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 (the second sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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] For awp_mvd_dir0, awp_mvd_step0, awp_mvd_dir1 and awp_mvd_step1, you can make a reference 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] Usage Scenario 3: Table 6 shows an example of the relevant 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 mode corner index) is the value of the weighted prediction mode corner index in the skip mode or direct 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 index of motion information for angular weighted prediction mode) is the first index value of motion information for angular weighted prediction mode in the skip mode or in the direct mode. The value of AwpCandIdx0 (see embodiment 10 of the invention 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 (the second index of the motion information for the angular weighted prediction mode) is the second value of the index of the motion information for the angular weighted prediction mode in the skip mode or the direct mode. The value of AwpCandIdx1 (see embodiment 10 of the invention 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 (e.g. 1), it indicates that the current block is in the extended angle weighted prediction mode; when awp_mvd_flag is the second value (e.g. 0), it indicates that the current block is in the non-extended angle weighted prediction mode. For example, the value of AwpMvdFlag may 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 (the first sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 (the second sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on the motion information difference. For example, the value of AwpMvdSubFlag1 may be equal to the value of awp_mvd_sub_flag1. If awp_mvd_sub_flag1 is not present in the bitstream, 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 prediction mode) and awp_mv_diff_y_abs0 (the absolute value of the difference of the vertical components of the first motion vector in the extended angular weighted prediction mode) are the absolute values of the first difference of motion vectors of the extended angular 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_у_abs0. awp_mv_diff_x_sign0 (signed value of difference of horizontal components of first motion vector in extended angular weighted prediction mode) and awp_mv_diff_у_sign0 (signed value of difference of vertical components of first motion vector in extended angular weighted prediction mode) are the sign bits of the first motion vector difference of the extended angular weighted prediction mode. 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_у_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 the bitstream does not contain awp_mv_diff_x_sign0 or awp_mv_diff_y_sign0, 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 AwpMvDiffYAbs0; if the value of AwpMvDiffYSign0 is 1, then the value of AwpMvDiffY0 is AwpMvDiffYAbs0. The values of AwpMvDiffX0 and AwpMvDiffY0 are in the 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 (the 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 (the 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 motion vectors of the extended angular weighted prediction mode. 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_у_abs1. awp_mv_diff_х_sign1 (signed value of difference of horizontal components of second motion vector in extended angular weighted prediction mode) and awp_mv_diff_y_sign1 (signed value of difference of vertical components of second motion vector in extended angular weighted prediction mode) are the sign bits of the second motion vector difference of extended angular weighted prediction mode. The value of AwpMvDiffXSign1 is equal to the value of awp_mv_diff_х_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 the bitstream does not contain awp_mv_diff_x_sign1 or awp_mv_diff_y_sign1, 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 may be equal to AwpMvDiffYAbsl; if the value of AwpMvDiffYSign1 is 1, the value of AwpMvDiffY1 may be equal to AwpMvDiffYAbs1. The values of AwpMvDiffX1 and AwpMvDiffY1 range from -32768 to 32767.
[000457] Сценарий 4 применения. В таблице 7 показан пример соответствующего синтаксиса, где SkipFlag представляет, находится ли текущий блок в режиме пропуска, DirectFlag показывает, находится ли текущий блок в прямом режиме, a AwpFlag показывает, находится ли текущий блок в режиме AWP.[000457] Usage Scenario 4: Table 7 shows an example of the relevant syntax, where SkipFlag represents whether the current block is in skip mode, DirectFlag represents whether the current block is in direct mode, and AwpFlag represents whether the current block is in AWP mode.
[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 (the first sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag0 is the first value, it indicates that the first motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 sub-mode flag of the advanced angle weighted prediction mode) is a binary variable. When awp_mvd_sub_flag1 is the first value, it indicates that the second motion information of the advanced 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 advanced angle weighted prediction mode should not be superimposed on 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 equal to 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] The difference between
[000465] Сценарий 5 применения: в таблице 8 показан пример соответствующего синтаксиса. Таблица 8 иллюстрирует способ кодирования MVD.[000465] Application Scenario 5: Table 8 shows an example of the corresponding syntax. Table 8 illustrates the encoding method of the MVD.
[000466] 1. Определяют, больше ли |MVD_Х| 0, где |…| является обозначением абсолютного значения, a MVD_X относится к горизонтальной составляющей MVD.[000466] 1. Determine whether |MVD_X| is greater than 0, where |…| denotes the absolute value 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| is greater than 0, where |…| denotes the absolute value and MVD_Y refers to the vertical component of MVD.
[000468] 3. Если |MVD_X| больше 0, определяют, больше ли |MVD_X| 1.[000468] 3. If |MVD_X| is greater than 0, determine whether |MVD_X| is greater than 1.
[000469] 4. Если |MVD_Y| больше 0, определяют, больше ли |MVD_Y| 1.[000469] 4. If |MVD_Y| is greater than 0, determine whether |MVD_Y| is greater than 1.
[000470] 5. Если |MVD_X| больше 1, кодируют |MVD_X| - 2.[000470] 5. If |MVD_X| is greater than 1, encode |MVD_X| - 2.
[000471] 6. Если |MVD_X| больше 0, кодируют знаковый бит MVD_X.[000471] 6. If |MVD_X| is greater than 0, encode the sign bit of MVD_X.
[000472] 7. Если |MVD_Y| больше 1, кодируют |MVD_Y| - 2.[000472] 7. If |MVD_Y| is greater than 1, encode |MVD_Y| - 2.
[000473] 8. Если |MVD_Y| больше 0, кодируют знаковый бит MVD_Y.[000473] 8. If |MVD_Y| is greater than 0, encode the sign bit of 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 derivative version of the above Application Scenarios 1-4 to completely merge the AWP mode and the 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, the motion vector difference supports four directions: up, down, left, and right, and the motion vector difference supports the following 6 step length configurations: 0-pixels, -pixels, -pixel, 1-pixel, 2-pixel, 4-pixel, that is, the configuration of the length of one step of 0-pixels is 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 values of the corresponding syntax in Tables 9 and 10, reference can be made to Table 4 and Table 6, and redundant descriptions are not provided here.
[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-described embodiments of the invention include an AWP mode, a DAWP (double exterior angle weighted prediction) mode, and the enabling or disabling of the EAWP mode can be controlled using a high-level syntax. For example, enabling or disabling the 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 of the invention, the high-level syntax may be a high-level syntax of a sequence parameter set, or a high-level syntax of a picture parameter set, or a high-level syntax of a slice header level, or a high-level syntax of a picture header, which is not limited here. For example, based on the high-level syntax of the sequence parameter set level, by using sps_awp_enable_flag, sh_awp_enable_flag and awp_enable_flag and the like, 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 of the invention, the target motion information may be obtained based on the source motion information. After the target motion information is obtained, 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 of the invention may be implemented individually or in combination. For example,
[000479] Основываясь на той же самой идее применения, что и вышеописанные способы, варианты осуществления настоящего изобретения также предлагают устройства кодирования и устройства декодирования. Оба типа устройств можно отнести к устройству, показанному на фиг. 8А. Устройство содержит модуль 811 получения, первый модуль 812 определения, второй модуль 813 определения, третий модуль 814 определения и модуль 815 кодирования и декодирования. Для устройства кодирования модуль 815 кодирования и декодирования выполняет функцию кодирования, а для устройства декодирования модуль 815 кодирования и декодирования выполняет функцию декодирования.[000479] Based on the same application concept as the above-described methods, embodiments of the present invention also provide encoding devices and decoding devices. Both types of devices can be referred to as the device shown in Fig. 8A. The device comprises an obtaining module 811, a first determining module 812, a second determining module 813, a third determining module 814, and an encoding and decoding module 815. For the encoding device, the encoding and decoding module 815 performs an encoding function, and for the decoding device, the encoding and decoding module 815 performs a decoding function.
[000480] В некоторых примерах устройство кодирования содержит модуль (например, модуль 811 получения), выполненный с возможностью получать для текущего блока, когда определено, что следует разрешить взвешенное предсказание для текущего блока, угол взвешенного предсказания текущего блока; модуль (например, первый модуль 812 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока окружающую соответствующую позицию, указанную позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; модуль (например, второй модуль 813 определения), выполненный с возможностью определять целевое весовое значение позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией и определять ассоциированное весовое значение позиции пикселя на основе целевого весового значения позиции пикселя; модуль (например, третий модуль 814 определения), выполненный с возможностью определять для каждой позиции пикселя текущего блока первое значение предсказания позиции пикселя на основе первого режима предсказания текущего блока и определять второе значение предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения определять значение взвешенного предсказания позиции пикселя; и модуль (например, модуль 815 кодирования и декодирования), выполненный с возможностью определять значения взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000480] In some examples, the encoding device comprises a module (e.g., an obtaining 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 (e.g., a first determining 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 (e.g., a second determining module 813) configured to determine a target weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position and to determine an associated weight value of the pixel position based on the target weight value of the pixel position; a module (for example, a third determining module 814) configured to determine, for each pixel position of the current block, a first prediction value of the pixel position based on a first prediction mode of the current block and to determine a second prediction value of the pixel position 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, to determine a weighted prediction value of the pixel position; and a module (for example, the encoding and decoding module 815) configured to determine the 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 device comprises a module (e.g., an obtaining 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 (e.g., a first determining 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 (e.g., a second determining module 813) configured to determine a target weight value of the pixel position based on a reference weight value associated with the surrounding corresponding position and to determine an associated weight value of the pixel position based on the target weight value of the pixel position; a module (for example, a third determining module 814) configured to determine, for each pixel position of the current block, a first prediction value of the pixel position based on a first prediction mode of the current block and to determine a second prediction value of the pixel position 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, to determine a weighted prediction value of the pixel position; and a module (for example, the encoding and decoding module 815) configured to determine the 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 determining module 813 is also configured to configure reference weight values for the 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 a weight transformation coefficient and a weight transformation start position. For example, the weight transformation start position is determined by at least one of the following parameters: a weighted prediction angle of the current block, a weighted prediction position of the current block, or a size of the current block.
[000483] Например, количество окружающих позиций за пределами текущего блока определяется на основе размера текущего блока и/или угла взвешенного предсказания текущего блока; опорные весовые значения окружающих позиций за пределами текущего блока монотонно увеличиваются или монотонно уменьшаются.[000483] For example, the number of surrounding positions beyond 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 the surrounding positions beyond the current block monotonically increase or monotonically decrease.
[000484] Например, опорные весовые значения окружающих позиций за пределами текущего блока включают одно или более опорных весовых значений целевых позиций, одно или более опорных весовых значений первых соседних позиций целевых позиций и одно или более опорных весовых значений вторых соседних позиций целевых позиций. Опционально, все опорные весовые значения первых соседних позиций являются вторыми опорными весовыми значениями, а все опорные весовые значения вторых соседних позиций являются третьими опорными весовыми значениями, при этом вторые опорные весовые значения отличаются от третьих опорных весовых значений.[000484] For example, the reference weight values of the surrounding positions outside the current block include one or more reference weight values of the target positions, one or more reference weight values of the first neighboring positions of the target positions, and one or more reference weight values of the second neighboring positions of the target positions. Optionally, all of the reference weight values of the first neighboring positions are second reference weight values, and all of the reference weight values of the second neighboring positions are third reference weight values, wherein the second reference weight values are different from the third reference weight values.
[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 weight values, said at least two reference weight values of the target positions monotonically increase.
[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 slope of the weighted prediction angle of the current block is equal to the n-th power of 2, where n is an integer.
[000487] Например, окружающие позиции за пределами текущего блока могут включать одну или более позиций целого пикселя или одну или более позиций субпикселя, или как одну или более позиций целого пикселя, так и одну или более позиций субпикселя. Окружающие позиции за пределами текущего блока могут включать: окружающие позиции в одной строке сверху от текущего блока или окружающие позиции в одном столбце слева от текущего блока.[000487] For example, surrounding positions beyond the current block may include one or more whole pixel positions or one or more sub-pixel positions, or both one or more whole pixel positions and one or more sub-pixel positions. Surrounding positions beyond the current block may include: surrounding positions in one row above the current block or surrounding positions in one column to the left of the current block.
[000488] Второй модуль 813 определения выполнен с возможностью определять, если окружающая соответствующая позиция является позицией целого пикселя, и позиция целого пикселя установлена с опорным весовым значением, целевое весовое значение позиции пикселя на основе опорного весового значения позиции целого пикселя; альтернативно, если окружающая соответствующая позиция является позицией субпикселя, и позиция субпикселя установлена с опорным весовым значением, определять целевое весовое значение позиции пикселя на основе опорного весового значения позиции субпикселя.[000488] The second determining module 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 weight value of the pixel position based on the reference weight value of the integer pixel position; alternatively, if the surrounding corresponding position is a sub-pixel position, and the sub-pixel position is set with a reference weight value, determine the target weight value of the pixel position based on the reference weight value of the sub-pixel position.
[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 determining module 814 is also configured to create a motion compensation candidate list, wherein the motion compensation candidate list includes at least two information about possible motion; select one information about possible motion 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 another information about possible motion 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 determining module 814 is also configured to create a motion compensation candidate list, wherein the motion compensation candidate list includes at least two pieces of possible motion information; select one possible motion information from the motion compensation candidate list as the first source motion information of the current block; determine a first target motion information of the current block based on the first source motion information; determine a first pixel position prediction value based on the first target motion information; select another possible motion information from the motion compensation candidate list as the second source motion information of the current block; determine a second target motion information of the current block based on the second source motion information; determine 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 module 814 is also configured to: obtain a motion vector difference corresponding to the first source motion vector, and determine the first target motion vector based on the motion vector difference 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 the second target motion vector based on the motion vector difference corresponding to the second source motion vector and the second source motion vector. If the device is applied to the decoder side, the third determining module 814 is also configured to analyze direction information and amplitude information of the corresponding motion vector difference from the coded bitstream of the current block, and determine the corresponding motion vector difference based on the direction information and the amplitude information of the corresponding motion vector difference.
[000493] Например, если информация о направлении указывает направление вправо, а информация об амплитуде указывает, что амплитуда равна Ar, разность векторов движения равна (Ar, 0); если информация о направлении указывает направление вниз, а информация об амплитуде указывает, что амплитуда равна Ad, разность векторов движения равна (0, -Ad); если информация о направлении указывает направление влево, а информация об амплитуде указывает, что амплитуда равна Al, разность векторов движения равна (-Al, 0); если информация о направлении указывает направление вверх, а информация об амплитуде указывает, что амплитуда равна Аи, разность векторов движения равна (0, Au).[000493] For example, if the direction information indicates a right direction 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 Ad, the motion vector difference is (0, -Ad); if the direction information indicates a left direction and the amplitude information indicates that the amplitude is Al, the motion vector difference is (-Al, 0); if the direction information indicates an upward direction and the amplitude information indicates that the amplitude is Au, the motion vector difference is (0, Au).
[000494] Третий модуль 814 определения также сконфигурирован для анализа информации флага из кодированного битового потока текущего блока; если информация флага указывает на наложение разности векторов движения на исходный вектор движения, анализа информации о направлении и информации об амплитуде соответствующей разности векторов движения из кодированного битового потока текущего блока.[000494] The third determining module 814 is also configured to analyze flag information from the coded bit stream of the current block; if the flag information indicates a superposition of the motion vector difference on the original motion vector, analyze the direction information and the amplitude information of the corresponding motion vector difference from the coded bit stream of the current block.
[000495] На основе идеи применения вышеупомянутых способов, варианты осуществления настоящего изобретения предлагают устройство на стороне декодера (также называемое видеодекодером). Что касается аппаратных средств, архитектура аппаратных средств показана на фиг. 8В. Устройство на стороне декодера содержит один или более процессоров 821 и машиночитаемый носитель 822 данных, при этом машиночитаемый носитель 822 данных хранит машиночитаемые инструкции, исполняемые процессором 821. Процессор 821 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 821 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующих этапов: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока и определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения, определение значения взвешенного предсказания позиции пикселя; определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000495] Based on the idea of applying the above-mentioned methods, embodiments of the present invention provide a device on the decoder side (also called a video decoder). In terms of hardware, the hardware architecture is shown in Fig. 8B. The device on the decoder side comprises one or
[000496] На основе той же идеи применения, что и вышеописанные способы, варианты осуществления настоящего изобретения предлагают устройство на стороне кодера (также называемое видеокодером). Что касается аппаратных средств, архитектура аппаратных средств показана на фиг. 8С. Устройство на стороне кодера содержит один или более процессоров 831 и машиночитаемый носитель 832 данных, который хранит машиночитаемые инструкции, исполняемые процессором 831. Процессор 831 сконфигурирован для исполнения машиночитаемых инструкций для выполнения способов, описанных выше. Например, процессор 831 сконфигурирован для исполнения машиночитаемых инструкций для выполнения следующего: когда определено, что следует разрешить взвешенное предсказание для текущего блока, получение для текущего блока угла взвешенного предсказания текущего блока; для каждой позиции пикселя текущего блока, определение окружающей соответствующей позиции, указанной позицией пикселя, из окружающих позиций за пределами текущего блока на основе угла взвешенного предсказания текущего блока; определение целевого весового значения позиции пикселя на основе опорного весового значения, связанного с окружающей соответствующей позицией, и определение ассоциированного весового значения позиции пикселя на основе целевого весового значения позиции пикселя; для каждой позиции пикселя текущего блока, определение первого значения предсказания позиции пикселя на основе первого режима предсказания текущего блока и определение второго значения предсказания позиции пикселя на основе второго режима предсказания текущего блока; на основе первого значения предсказания, целевого весового значения, второго значения предсказания и ассоциированного весового значения, определение значения взвешенного предсказания позиции пикселя; определение значений взвешенного предсказания текущего блока на основе значений взвешенного предсказания всех позиций пикселей текущего блока.[000496] Based on the same application concept as the above-described methods, embodiments of the present invention provide an encoder-side device (also referred to as a video encoder). In terms of hardware, the hardware architecture is shown in Fig. 8C. The encoder-side device comprises one or
[000497] На основе той же самой идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения также предлагают устройство камеры, которое может содержать устройство кодирования и декодирования в любом из вышеупомянутых вариантов осуществления изобретения. Устройство камеры может использовать описанные выше процессы.[000497] Based on the same application concept as in the above-described methods, embodiments of the present invention also provide a camera device that may include the encoding and decoding device in any of the above-mentioned embodiments of the invention. The camera device may use the processes described above.
[000498] На основе той же идеи применения, что и в вышеописанных способах, варианты осуществления настоящего изобретения предлагают машиночитаемый носитель данных, хранящий несколько компьютерных инструкций, которые исполняются процессором для выполнения способов, раскрытых в приведенных выше вариантах осуществления настоящего изобретения, например, способы кодирования и декодирования в описанных выше вариантах осуществления изобретения.[000498] Based on the same application concept as in the above-described methods, embodiments of the present invention provide a computer-readable storage medium storing several computer instructions that are executed by a processor to perform the methods disclosed in the above-described embodiments of the present invention, for example, the encoding and decoding methods in the above-described embodiments of the invention.
[000499] Системы, устройства, модули или блоки, описанные в приведенных выше вариантах осуществления изобретения, могут быть реализованы в виде компьютерных микросхем или объектов или в виде продуктов с определенными функциями. Типичным устройством реализации является компьютер, и компьютер, в конкретной форме, может быть персональным компьютером, портативным компьютером, сотовым телефоном, телефоном с камерой, смартфоном, персональным цифровым помощником, медиаплеером, навигационным оборудованием, приемопередатчиком электронной почты, игровой приставкой, планшетным компьютером, носимым оборудованием или комбинацией любых из этих устройств. Для удобства описания вышеупомянутые устройства при описании разделены на различные блоки по функциям. При реализации настоящего изобретения функции различных блоков могут быть реализованы в программном и/или аппаратном обеспечении.[000499] The systems, devices, modules or units 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 the computer, in a specific form, may be a personal computer, a portable computer, a cellular phone, a camera phone, a smartphone, a personal digital assistant, a media player, a navigation equipment, an e-mail transceiver, a game console, a tablet computer, a wearable equipment or a combination of any of these devices. For convenience of description, the above-mentioned devices are divided into various blocks according to functions in the description. When implementing the present invention, the functions of the various blocks can be implemented in software and/or hardware.
[000500] Специалистам в данной области техники должно быть понятно, что варианты осуществления настоящего изобретения могут быть предоставлены в виде способов, систем или компьютерных программных продуктов. Следовательно, настоящее изобретение может принимать форму чисто аппаратного варианта осуществления, чисто программного варианта осуществления или варианта осуществления, сочетающего как программное обеспечение, так и аппаратное обеспечение. Кроме того, варианты осуществления настоящего изобретения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких доступных для компьютера носителях данных (включая, не ограничиваясь, дисковые запоминающие устройства, CD-ROM, оптические запоминающие устройства и т.д.), которые содержат доступные для компьютера программные коды.[000500] It will be understood by those skilled in the art that embodiments of the present invention may be provided in the form of methods, systems, or computer program products. Accordingly, the present invention may take the form of a purely hardware embodiment, a purely software embodiment, or an embodiment combining both software and hardware. Furthermore, embodiments of the present invention may take the form of a computer program product implemented on one or more computer-accessible storage media (including, but not limited to, disk storage devices, CD-ROMs, optical storage devices, etc.) that contain computer-accessible program codes.
[000501] Приведенное выше описание представляет лишь некоторые примеры осуществления настоящего изобретения и не ограничивает изобретение. Специалистам в данной области техники понятно, что настоящее изобретение может иметь различные изменения и модификации. Любые модификации, эквивалентные замены, усовершенствования и т.п. настоящего изобретения находятся в пределах объема формулы изобретения.[000501] The above description presents only some examples of the implementation of the present invention and does not limit the invention. Those skilled in the art will understand that the present invention can have 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 |
|---|---|---|---|
| CN2020100220130 | 2020-03-25 | ||
| CN2020100220130.1 | 2020-03-25 | ||
| CN202010220130.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 RU2822503C2 (en) | 2024-07-08 |
| RU2822503C9 true 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 |
|---|---|---|
| CN113853794B (en) | Video decoding method and related electronic device | |
| RU2696301C2 (en) | Video signal decoding method | |
| JP2023120392A (en) | Video encoding/decoding method and apparatus | |
| US20250301169A1 (en) | Merge mode-based inter-prediction method and apparatus | |
| CN112514380A (en) | Method for encoding/decoding video signal and apparatus therefor | |
| JP7447097B2 (en) | Image encoding/decoding method and device | |
| JP7625054B2 (en) | Encoding/Decoding Method, Apparatus and Device Thereof | |
| CN116600109A (en) | Image encoding/decoding method and image data transmitting method | |
| JP7736884B2 (en) | Encoding/decoding method, apparatus and device | |
| CN113382234A (en) | Video signal encoding/decoding method and apparatus for the same | |
| CN113574878A (en) | Method and apparatus for encoding/decoding video signal | |
| CN118511508A (en) | Method, apparatus and medium for video processing | |
| CN110832854B (en) | Method and device for intra-frame prediction using interpolation | |
| US10205952B2 (en) | Method and apparatus for inter color component prediction | |
| RU2822503C9 (en) | Method, equipment and device for encoding and decoding | |
| RU2822503C2 (en) | Method, equipment and device for encoding and decoding | |
| RU2808807C1 (en) | Method, equipment and device for encoding and decoding | |
| CN119895867A (en) | Method, apparatus and recording medium for image encoding/decoding | |
| RU2830114C2 (en) | Method, equipment and device for encoding and decoding | |
| RU2809619C1 (en) | Method, equipment and device for encoding and decoding | |
| HK40064015A (en) | Coding and decoding method, device and equipment | |
| HK40064015B (en) | Coding and decoding method, device and equipment | |
| CN118556398A (en) | Method, apparatus and recording medium for image encoding/decoding | |
| CN120435858A (en) | Method, apparatus, and recording medium for image encoding/decoding | |
| CN120731596A (en) | Method and device for improving transform information encoding and decoding based on intra-frame chroma cross-element prediction model in video encoding and decoding |