RU2812857C2 - Method and device for encoding/decoding image signals - Google Patents

Method and device for encoding/decoding image signals Download PDF

Info

Publication number
RU2812857C2
RU2812857C2 RU2023117253A RU2023117253A RU2812857C2 RU 2812857 C2 RU2812857 C2 RU 2812857C2 RU 2023117253 A RU2023117253 A RU 2023117253A RU 2023117253 A RU2023117253 A RU 2023117253A RU 2812857 C2 RU2812857 C2 RU 2812857C2
Authority
RU
Russia
Prior art keywords
block
affine
source vector
current block
affine source
Prior art date
Application number
RU2023117253A
Other languages
Russian (ru)
Other versions
RU2023117253A (en
Inventor
Пэ Кхын ЛИ
Original Assignee
Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд. filed Critical Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд.
Publication of RU2023117253A publication Critical patent/RU2023117253A/en
Application granted granted Critical
Publication of RU2812857C2 publication Critical patent/RU2812857C2/en

Links

Abstract

FIELD: video encoding.
SUBSTANCE: list of merge candidates for the current block is generated. One of the merger candidates included in the list of merger candidates is selected. The first affine source vector and the second affine source vector of the current block are obtained based on the first affine source vector and the second affine source vector of the specified merge candidate. An affine vector is obtained for a subblock in the current block by using the first affine source vector and the second affine source vector of the current block, where the subblock is a region with a size that is smaller than the size of the current block. The first affine source vector and the second affine merge candidate source vectors are obtained based on the motion information of a neighboring block adjacent to the current block. When a neighboring block is included in a code tree element different from the current block's code tree element, the first affine source vector and the second affine merge candidate source vectors are obtained based on the motion vectors of the bottom left subblock and bottom right subblock of the neighboring block.
EFFECT: increased efficiency of video coding.
12 cl, 35 dwg, 18 tbl

Description

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯBACKGROUND OF THE INVENTION

Область техники, к которой относится изобретениеField of technology to which the invention relates

Настоящее изобретение относится к способу и устройству для кодирования и декодирования видеосигнала.The present invention relates to a method and apparatus for encoding and decoding a video signal.

Предшествующий уровень техникиPrior Art

По мере увеличения дисплейных панелей требуется все больше видеоуслуг более высокого качества. Самой большой проблемой видеоуслуг высокой четкости является значительное увеличение объема данных, и для решения этой проблемы активно проводятся исследования по улучшению степени сжатия видео. В качестве иллюстративного примера группа экспертов по кинематографии (MPEG) и группа экспертов по видеокодированию (VCEG) в рамках сектора по стандартизации телекоммуникаций в составе Международного союза электросвязи (ITU-T) сформировали объединенную команду по видеокодированию (JCT-VC) в 2009 году. JCT-VC предложила высокоэффективное видеокодирование (HEVC), которое представляет собой стандарт сжатия видео, имеющий эффективность сжатия примерно вдвое выше, чем эффективность сжатия H.264/AVC, и он одобрен в качестве стандарта 25 января 2013 г. С быстрым развитием видеоуслуг высокой четкости эффективность HEVC постепенно обнаруживает свои ограничения.As display panels become larger, more and higher quality video services are required. The biggest challenge of high-definition video services is the significant increase in data volume, and to address this issue, research is being actively conducted to improve video compression rates. As an illustrative example, the Motion Picture Experts Group (MPEG) and the Video Coding Experts Group (VCEG) within the telecommunications standards sector of the International Telecommunication Union (ITU-T) formed the Joint Video Coding Team (JCT-VC) in 2009. JCT-VC proposed High Efficiency Video Coding (HEVC), which is a video compression standard that has a compression efficiency approximately twice that of H.264/AVC, and it was approved as a standard on January 25, 2013. With the rapid development of high-definition video services The effectiveness of HEVC is gradually revealing its limitations.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Одной целью настоящего изобретения является предоставление способа и устройства для предсказания, осуществляемого между изображениями, с использованием аффинной модели при кодировании/декодировании видеосигнала.One object of the present invention is to provide a method and apparatus for inter-image prediction using an affine model in video encoding/decoding.

Другой целью настоящего изобретения является предоставление способа получения аффинного исходного вектора с использованием вектора поступательного движения подблока и устройства для выполнения способа при кодировании/декодировании видеосигнала.Another object of the present invention is to provide a method for obtaining an affine source vector using a translational vector of a subblock and an apparatus for executing the method when encoding/decoding a video signal.

Другой целью настоящего изобретения является предоставление способа получения аффинного исходного вектора за счет преобразования расстояния между соседним блоком и текущим блоком в виде степенного ряда числа 2 и устройства для выполнения способа при кодировании/декодировании видеосигнала.Another object of the present invention is to provide a method for obtaining an affine source vector by transforming the distance between a neighboring block and a current block as a power series of 2, and an apparatus for executing the method when encoding/decoding a video signal.

Технические задачи, которые должны быть решены в настоящем изобретении, не ограничиваются техническими задачами, упомянутыми выше, и не упомянутые другие задачи могут быть ясно поняты специалистами в данной области техники из следующего описания.The technical problems to be solved by the present invention are not limited to the technical problems mentioned above, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.

Способ декодирования и кодирования видеосигнала согласно настоящему изобретению включает следующие этапы: генерирование списка кандидатов на слияние для текущего блока; указание одного из множества кандидатов на слияние, включенных в список кандидатов на слияние; получение первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока на основании первого аффинного исходного вектора и второго аффинного исходного вектора указанного кандидата на слияние; получение аффинного вектора для подблока в текущем блоке за счет использования первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока; и выполнение предсказания с компенсацией движения для подблока на основании аффинного вектора. В этом случае подблок представляет собой участок с размером, который меньше размера текущего блока. Кроме того, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние могут быть получены на основании информации о движении соседнего блока, смежного с текущим блоком.The video signal decoding and encoding method according to the present invention includes the following steps: generating a merge candidate list for the current block; identification of one of the plurality of merger candidates included in the list of merger candidates; obtaining a first affine source vector and a second affine source vector of the current block based on the first affine source vector and the second affine source vector of the specified merge candidate; obtaining an affine vector for a subblock in the current block by using the first affine source vector and the second affine source vector of the current block; and performing motion compensated prediction for the sub-block based on the affine vector. In this case, a subblock is an area with a size that is smaller than the size of the current block. In addition, the first affine source vector and the second affine source vector of the merge candidate may be obtained based on the motion information of a neighboring block adjacent to the current block.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению, когда соседний блок включен в элемент кодового дерева, отличающийся от элемента кодового дерева текущего блока, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние могут быть получены на основании векторов движения нижнего левого подблока и нижнего правого подблока соседнего блока.In the video signal decoding and encoding method according to the present invention, when a neighboring block is included in a code tree element different from the code tree element of the current block, the first affine source vector and the second affine source vector of the merge candidate can be obtained based on the motion vectors of the lower left sub-block and the lower right subblock of the adjacent block.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению нижний левый подблок может содержать нижний левый опорный отсчет, расположенный в нижнем левом углу соседнего блока, и нижний правый подблок может содержать нижний правый опорный отсчет, расположенный в нижнем левом углу соседнего блока.In a method for decoding and encoding a video signal according to the present invention, a lower left sub-block may include a lower left reference sample located in a lower left corner of an adjacent block, and a lower right sub-block may include a lower right reference sample located in a lower left corner of an adjacent block.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние могут быть получены на основании значения, полученного на основании операции сдвига, выполняемой в отношении значения разницы между векторами движения нижнего левого подблока и нижнего правого подблока с использованием коэффициента масштабирования, и коэффициент масштабирования может быть получен на основании значения, полученного за счет сложения расстояния по горизонтали между нижним левым опорным отсчетом и нижним правым опорным отсчетом и смещения.In the video signal decoding and encoding method according to the present invention, the first affine source vector and the second affine source vector of the merge candidate can be obtained based on the value obtained based on the shift operation performed on the difference value between the motion vectors of the lower left sub-block and the lower right sub-block with using a scaling factor, and the scaling factor can be obtained based on the value obtained by adding the horizontal distance between the lower left reference sample and the lower right reference sample and the offset.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние могут быть получены на основании значения, полученного на основании операции сдвига, выполняемой в отношении значения разницы между векторами движения нижнего левого подблока и нижнего правого подблока с использованием коэффициента масштабирования, и коэффициент масштабирования может быть получен на основании расстояния между соседним отсчетом, смежным с правой стороной нижнего правого опорного отсчета, и нижним левым опорным отсчетом.In the video signal decoding and encoding method according to the present invention, the first affine source vector and the second affine source vector of the merge candidate can be obtained based on the value obtained based on the shift operation performed on the difference value between the motion vectors of the lower left sub-block and the lower right sub-block with using a scaling factor, and the scaling factor can be obtained based on the distance between a neighboring sample adjacent to the right side of the lower right reference sample and the lower left reference sample.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению список кандидатов на слияние содержит первого кандидата на слияние, полученного на основании верхнего соседнего блока, определенного как первый доступный блок из верхних соседних блоков, расположенных сверху текущего блока, и второго кандидата на слияние, полученного на основании левого соседнего блока, определенного как первый доступный блок из левых соседних блоков, расположенных слева от текущего блока.In the video signal decoding and encoding method according to the present invention, the merge candidate list contains a first merge candidate obtained based on an upper neighbor block, defined as the first available block of the upper adjacent blocks located above the current block, and a second merge candidate obtained based on left neighbor block, defined as the first available block of the left neighbor blocks located to the left of the current block.

В способе декодирования и кодирования видеосигнала согласно настоящему изобретению, когда соседний блок включен в элемент кодового дерева, такой же как элемент кодового дерева текущего блока, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние могут быть получены на основании первого аффинного исходного вектора и второго аффинного исходного вектора соседнего блока.In the video signal decoding and encoding method according to the present invention, when a neighboring block is included in a code tree element the same as the code tree element of the current block, the first affine source vector and the second affine source vector of the merge candidate can be obtained based on the first affine source vector and the second affine source vector of the neighboring block.

Признаки, кратко изложенные выше в отношении настоящего изобретения, являются просто иллюстративными аспектами подробного описания настоящего изобретения, которые будут описаны ниже, и не ограничивают объем настоящего изобретения.The features briefly set forth above in relation to the present invention are merely illustrative aspects of the detailed description of the present invention, which will be described below, and do not limit the scope of the present invention.

Согласно настоящему изобретению существует эффект повышения эффективности предсказания за счет выполнения способа предсказания, осуществляемого между изображениями, с использованием аффинной модели.According to the present invention, there is an effect of improving the prediction efficiency by performing an inter-image prediction method using an affine model.

Согласно настоящему изобретению существует эффект повышения эффективности кодирования за счет получения аффинного исходного вектора с использованием вектора поступательного движения подблока.According to the present invention, there is an effect of improving coding efficiency by obtaining an affine source vector using the translational motion vector of a sub-block.

Согласно настоящему изобретению существует эффект повышения эффективности кодирования за счет получения аффинного исходного вектора посредством преобразования расстояния между соседним блоком и текущим блоком в виде степенного ряда числа 2.According to the present invention, there is an effect of improving coding efficiency by obtaining an affine source vector by transforming the distance between a neighboring block and the current block as a power series of 2.

Эффекты, которые могут быть получены из настоящего изобретения, не ограничены упомянутыми выше эффектами, и не упомянутые другие эффекты могут быть ясно поняты специалистами в данной области техники из следующего описания.The effects that can be obtained from the present invention are not limited to the effects mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the following description.

КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВBRIEF DESCRIPTION OF GRAPHIC MATERIALS

На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.In fig. 1 is a block diagram showing a video encoder according to one embodiment of the present invention.

На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.In fig. 2 is a block diagram showing a video decoder according to one embodiment of the present invention.

На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.In fig. 3 is a view showing a code tree base element according to one embodiment of the present invention.

На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.In fig. 4 is a view showing various types of partitioning of a coding block.

На фиг. 5 представлен вид, показывающий схему разбиения элемента кодового дерева.In fig. 5 is a view showing a code tree element partitioning diagram.

На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.In fig. 6 is a flowchart illustrating an inter-image prediction method according to one embodiment of the present invention.

На фиг. 7 представлен вид, показывающий нелинейное движение объекта.In fig. 7 is a view showing the nonlinear motion of an object.

На фиг. 8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.In fig. 8 is a flowchart illustrating a method for inter-image prediction based on affine motion according to one embodiment of the present invention.

На фиг. 9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.In fig. 9 is a view showing an example of affine source vectors of each affine motion model.

На фиг. 10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.In fig. 10 is a view showing an example of subblock affine vectors in a 4-parameter motion model.

На фиг. 11 представлен вид, показывающий соседний блок, который может использоваться для получения кандидата на слияние.In fig. 11 is a view showing a neighbor block that can be used to obtain a merge candidate.

На фиг. 12 представлен вид, показывающий пример получения аффинного исходного вектора текущего блока на основании аффинного исходного вектора аффинного соседнего блока.In fig. 12 is a view showing an example of obtaining an affine source vector of a current block based on an affine source vector of an affine neighboring block.

На фиг. 13 представлен вид, показывающий пример установки вектора движения подблока в качестве аффинного исходного вектора аффинного соседнего блока.In fig. 13 is a view showing an example of setting a motion vector of a sub-block as an affine source vector of an affine neighboring block.

На фиг. 14-16 представлены виды, показывающие положения опорных отсчетов.In fig. 14-16 are views showing the positions of the reference samples.

На фиг. 17 представлен вид, показывающий пример применения модифицированного способа получения аффинного вектора слияния.In fig. 17 is a view showing an application example of the modified method for producing an affinity fusion vector.

На фиг. 18 представлен вид, показывающий пример получения аффинного исходного вектора текущего блока на основании неаффинного соседнего блока.In fig. 18 is a view showing an example of obtaining an affine source vector of a current block based on a non-affine neighboring block.

На фиг. 19 представлен вид, показывающий пример замены соседнего блока другим соседним блоком.In fig. 19 is a view showing an example of replacing a neighboring block with another neighboring block.

На фиг. 20 и 21 представлены виды, показывающие последовательность способа предсказания с компенсацией движения, в котором используется множество кандидатов на слияние.In fig. 20 and 21 are views showing the flow of a motion compensation prediction method in which a plurality of fusion candidates are used.

На фиг. 22 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.In fig. 22 is a flowchart illustrating an intra prediction method according to one embodiment of the present invention.

На фиг. 23 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.In fig. 23 is a view showing reference samples included in each reference sample line.

На фиг. 24 представлен вид, показывающий режимы внутреннего предсказания.In fig. 24 is a view showing intra prediction modes.

На фиг. 25 и 26 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.In fig. 25 and 26 are views showing an example of a one-dimensional array arranging reference samples in a line.

На фиг. 27 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.In fig. 27 is a view showing an example of angles formed between intra prediction modes based on angle information and a straight line parallel to the x-axis.

На фиг. 28 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.In fig. 28 is a view showing an embodiment of obtaining prediction samples when the current block has a non-square shape.

На фиг. 29 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.In fig. 29 is a view showing wide-angle intra prediction modes.

На фиг. 30 представлена блок-схема, изображающая процесс определения качественного показателя блока.In fig. 30 is a flowchart illustrating the process of determining the quality indicator of a block.

На фиг. 31 представлен вид, показывающий предварительно заданные фильтры-кандидаты.In fig. 31 is a view showing preset candidate filters.

На фиг. 32 представлен вид, показывающий пример разбиения изображения на множество тайлов.In fig. 32 is a view showing an example of dividing an image into a plurality of tiles.

На фиг. 33 представлен вид, показывающий схему разбиения изображения согласно методу получения гибких тайлов.In fig. 33 is a view showing an image division scheme according to the flexible tile production method.

На фиг. 34 представлен вид, показывающий пример присвоения ID тайла каждому элементу кодового дерева.In fig. 34 is a view showing an example of assigning a tile ID to each element of the code tree.

На фиг. 35 представлен вид, показывающий пример выборочного определения того, применять ли фильтр в контуре к каждому тайлу.In fig. 35 is a view showing an example of selectively determining whether to apply a filter in a loop to each tile.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Далее будет подробно описан вариант осуществления настоящего изобретения со ссылкой на прилагаемые графические материалы.An embodiment of the present invention will now be described in detail with reference to the accompanying drawings.

Кодирование и декодирование видео выполняется посредством элемента блока. Например, процесс кодирования/декодирования, такой как преобразование, квантование, предсказание, фильтрование в контуре, восстановление и т.п., может выполняться в отношении блока кодирования, блока преобразования или блока предсказания.Video encoding and decoding is performed through a block element. For example, an encoding/decoding process such as transform, quantization, prediction, in-loop filtering, reconstruction, and the like may be performed on an encoding block, a transform block, or a prediction block.

Далее блок, подлежащий кодированию/декодированию, будет называться «текущим блоком». Например, текущий блок может представлять блок кодирования, блок преобразования или блок предсказания согласно текущему этапу процесса кодирования/декодирования.In the following, the block to be encoded/decoded will be referred to as the “current block”. For example, the current block may represent an encoding block, a transform block, or a prediction block according to the current stage of the encoding/decoding process.

Кроме того, следует понимать, что термин «элемент», используемый в настоящем описании, обозначает базовый элемент для выполнения конкретного процесса кодирования/декодирования, и термин «блок» обозначает массив отсчетов предварительно определенного размера. Если не указано иное, «блок» и «элемент» могут использоваться с одинаковым значением. Например, в варианте осуществления, описанном ниже, следует понимать, что блок кодирования и элемент кодирования имеют одинаковое значение.In addition, it should be understood that the term "element" as used herein denotes a basic element for performing a particular encoding/decoding process, and the term "block" denotes an array of samples of a predetermined size. Unless otherwise specified, "block" and "element" may be used with the same meaning. For example, in the embodiment described below, it should be understood that a coding block and a coding element have the same meaning.

На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.In fig. 1 is a block diagram showing a video encoder according to one embodiment of the present invention.

Как показано на фиг. 1, устройство 100 для кодирования видео может содержать часть 110 для разбиения изображений, части 120 и 125 для предсказания, часть 130 для преобразования, часть 135 для квантования, часть 160 для перестановки, часть 165 для энтропийного кодирования, часть 140 для обратного квантования, часть 145 для обратного преобразования, часть 150 для фильтрации и запоминающее устройство 155.As shown in FIG. 1, the video encoding apparatus 100 may include an image partitioning portion 110, prediction portions 120 and 125, transform portion 130, quantization portion 135, permutation portion 160, entropy encoding portion 165, inverse quantization portion 140, 145 for deconversion, part 150 for filtering and storage device 155.

Каждый из компонентов, показанных на фиг. 1, показан независимо, чтобы представить характерные функции, отличающиеся друг от друга в устройстве для кодирования видео, но это не означает, что каждый компонент образован элементом конфигурации отдельного аппаратного обеспечения или одного программного обеспечения. То есть каждый компонент включен в список в качестве компонента для удобства объяснения, и по меньшей мере два из компонентов могут быть объединены для образования единого компонента, или один компонент может быть разделен на множество компонентов для выполнения функции. Варианты осуществления с объединением и варианты осуществления с разделением компонентов также входят в объем настоящего изобретения, если они не выходят за рамки сущности настоящего изобретения.Each of the components shown in FIG. 1 is shown independently to represent characteristic functions different from each other in a video encoding apparatus, but this does not mean that each component is constituted by a configuration item of a separate hardware or a single software. That is, each component is listed as a component for convenience of explanation, and at least two of the components may be combined to form a single component, or one component may be divided into multiple components to perform a function. Combination embodiments and component separation embodiments are also included within the scope of the present invention as long as they do not depart from the spirit of the present invention.

Кроме того, некоторые из компонентов не являются важными компонентами, которые выполняют основные функции в настоящем изобретении, но могут быть необязательными компонентами только для повышения эффективности. Настоящее изобретение может быть реализовано путем включения только компонентов, необходимых для реализации сущности настоящего изобретения, за исключением компонентов, используемых для повышения эффективности, и конструкция, содержащая только необходимые компоненты, за исключением необязательных компонентов, используемых для повышения эффективности, также включена в объем настоящего изобретения.In addition, some of the components are not essential components that perform essential functions in the present invention, but may be optional components only to enhance efficiency. The present invention can be implemented by including only the components necessary to implement the essence of the present invention, excluding components used to improve efficiency, and a structure containing only the necessary components, excluding optional components used to increase efficiency, is also included within the scope of the present invention .

Часть 110 для разбиения изображений может разбивать входное изображение на по меньшей мере один элемент обработки. В этом случае элемент обработки может представлять собой элемент предсказания (PU), элемент преобразования (TU) или элемент кодирования (CU). Часть 110 для разбиения изображений может разбивать изображение на совокупность, состоящую из множества элементов кодирования, элементов предсказания и элементов преобразования, и кодировать изображение за счет выбора совокупности элемента кодирования, элемента предсказания и элемента преобразования на основании предварительно определенного критерия (например, функции стоимости).The image partitioning portion 110 may partition the input image into at least one processing element. In this case, the processing element may be a prediction element (PU), a transformation element (TU), or a coding element (CU). The image partitioning portion 110 may partition an image into a plurality of encoding elements, prediction elements, and transform elements, and encode the image by selecting a plurality of encoding element, prediction element, and transform element based on a predetermined criterion (eg, a cost function).

Например, одно изображение может быть разбито на множество элементов кодирования. Для разбиения элементов кодирования в изображении может использоваться структура в виде рекурсивного дерева, такая как структура в виде четвертичного дерева. Элемент кодирования, разбитый на разные элементы кодирования с использованием видео или наибольшего элемента кодирования в качестве корня, может быть разбит так, чтобы иметь столько же узлов-потомков, сколько разбитых элементов кодирования. Элемент кодирования, который больше не разбивается согласно предварительно определенному ограничению, становится листовым узлом. То есть, если предполагается, что возможно только квадратное разбиение для одного элемента кодирования, один элемент кодирования может быть разбит на не более чем четыре разных элемента кодирования.For example, a single image may be split into multiple encoding elements. A recursive tree structure, such as a quaternary tree structure, may be used to partition the encoding elements in an image. An encoding element, split into different encoding elements using video or the largest encoding element as the root, can be split to have as many child nodes as there are split encoding elements. An encoding element that is no longer split according to a predefined constraint becomes a leaf node. That is, if it is assumed that only a square partition is possible for one encoding element, one encoding element can be split into at most four different encoding elements.

Далее в варианте осуществления настоящего изобретения элемент кодирования может использоваться в значении элемента, выполняющего кодирование, или в значении элемента, выполняющего декодирование.Further, in an embodiment of the present invention, an encoding element may be used in the value of an element performing encoding or in the value of an element performing decoding.

Элемент предсказания может представлять собой элемент, разбитый в форме по меньшей мере одного квадрата, прямоугольника и т.п. одинакового размера в пределах одного элемента кодирования, или он может представлять собой любой элемент предсказания из элементов предсказания, разбитых в пределах одного элемента кодирования, который разбит так, что имеет форму и/или размер, отличающиеся от таковых другого элемента предсказания.The prediction element may be an element divided into the shape of at least one square, rectangle, or the like. the same size within a single encoding element, or it may be any prediction element of the prediction elements partitioned within a single encoding element that is partitioned to have a different shape and/or size from those of another prediction element.

Если элемент кодирования не является наименьшим элементом кодирования, когда генерируется элемент предсказания, который выполняет внутреннее предсказание на основании элемента кодирования, внутреннее предсказание может выполняться без разбиения изображения на множество элементов предсказания N×N.If the coding element is not the smallest coding element, when a prediction element that performs intra prediction based on the coding element is generated, intra prediction can be performed without dividing the image into a plurality of N×N prediction elements.

Части 120 и 125 для предсказания могут содержать часть 120 для предсказания, осуществляемого между изображениями, которая выполняет предсказание, осуществляемое между изображениями, и часть 125 для внутреннего предсказания, которая выполняет внутреннее предсказание. Может быть определено, использовать ли предсказание, осуществляемое между изображениями, или выполнить внутреннее предсказание для элемента предсказания, и определить конкретную информацию (например, режим внутреннего предсказания, вектор движения, опорное изображение и т.д.) согласно каждому способу предсказания. В этом случае элемент обработки для выполнения предсказания может отличаться от элемента обработки для определения способа предсказания и конкретного содержимого. Например, способ предсказания и режим предсказания могут быть определены в элементе предсказания, и предсказание может выполняться в элементе преобразования. Остаточный коэффициент (остаточный блок) между сгенерированным блоком предсказания и первоначальным блоком может быть введен в часть 130 для преобразования. Кроме того, информация о режиме предсказания, информация о векторе движения и т.п., используемые для предсказания, могут быть кодированы посредством части 165 для энтропийного кодирования вместе с остаточным коэффициентом и переданы на декодер. Когда используется конкретный режим кодирования, первоначальный блок может быть кодирован как есть и передан на декодер без генерирования блока предсказания посредством частей 120 и 125 для предсказания.The prediction portions 120 and 125 may include an inter-picture prediction portion 120 that performs inter-picture prediction and an intra prediction portion 125 that performs intra prediction. It can be determined whether to use inter-picture prediction or perform intra prediction on a prediction element, and determine specific information (eg, intra prediction mode, motion vector, reference image, etc.) according to each prediction method. In this case, the processing element for performing the prediction may be different from the processing element for determining the prediction method and the specific content. For example, a prediction method and a prediction mode may be determined in a prediction element, and prediction may be performed in a transform element. A residual coefficient (residual block) between the generated prediction block and the original block may be input to the transformation portion 130. In addition, prediction mode information, motion vector information, and the like used for prediction can be encoded by the entropy encoding portion 165 together with a residual coefficient and transmitted to the decoder. When a particular encoding mode is used, the original block can be encoded as is and transmitted to the decoder without generating a prediction block by the prediction portions 120 and 125.

Часть 120 для предсказания, осуществляемого между изображениями, может предсказывать элемент предсказания на основании информации о по меньшей мере одном изображении из изображений перед текущим изображением или после него, и в некоторых случаях она может предсказывать элемент предсказания на основании информации о частичной области, которая была кодирована в текущем изображении. Часть 120 для предсказания, осуществляемого между изображениями, может содержать часть для интерполяции опорного изображения, часть для предсказания движения и часть для компенсации движения.The inter-picture prediction portion 120 may predict a prediction element based on information about at least one image of the pictures before or after the current image, and in some cases, it may predict a prediction element based on information about a partial region that has been encoded. in the current image. The inter-image prediction portion 120 may include a reference image interpolation portion, a motion prediction portion, and a motion compensation portion.

Часть для интерполяции опорного изображения может принимать информацию об опорном изображении от запоминающего устройства 155 и генерировать информацию о пикселе для целого числа пикселей или меньше из опорного изображения. В случае пикселя яркости 8-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/4 пикселей. В случае цветоразностного сигнала 4-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/8 пикселей.The reference image interpolation portion may receive reference image information from the memory 155 and generate pixel information for an integer number of pixels or less from the reference image. In the case of a luminance pixel, an 8-tap DCT-based interpolation filter with a variable filter coefficient can be used to generate pixel information of an integer number of pixels or less through a 1/4 pixel element. In the case of a color difference signal, a 4-tap DCT-based interpolation filter with a variable filter coefficient can be used to generate pixel information of an integer number of pixels or less through a 1/8 pixel element.

Часть для предсказания движения может выполнять предсказание движения на основании опорного изображения, интерполированного частью для интерполяции опорного изображения. Различные способы, такие как алгоритм сопоставления блоков на основе полного поиска (FBMA), трехступенчатый поиск (TSS), алгоритм нового трехступенчатого поиска (NTS) и т.п., могут использоваться в качестве способа вычисления вектора движения. Вектор движения может иметь значение вектора движения в виде элемента, состоящего из 1/2 или 1/4 пикселей, на основании интерполированных пикселей. Часть для предсказания движения может предсказывать текущий элемент предсказания за счет изменения способа предсказания движения. Различные способы, такие как способ пропуска, способ слияния, способ усовершенствованного предсказания вектора движения (AMVP), способ внутриблочного копирования и т.п., могут использоваться в качестве способа предсказания движения.The motion prediction portion may perform motion prediction based on a reference image interpolated by the reference image interpolation portion. Various methods such as Full Search Based Block Matching Algorithm (FBMA), Three Stage Search (TSS), New Three Stage Search (NTS) algorithm, and the like can be used as the motion vector calculation method. The motion vector may have a motion vector value as a 1/2 or 1/4 pixel element based on the interpolated pixels. The motion prediction portion may predict the current prediction element by changing the motion prediction method. Various methods such as a skip method, a merging method, an advanced motion vector prediction (AMVP) method, an intra-block copy method, etc. can be used as the motion prediction method.

Часть 125 для внутреннего предсказания может генерировать элемент предсказания на основании информации об опорных пикселях, расположенных вокруг текущего блока, которая представляет собой информацию о пикселе в текущем изображении. Когда блок, находящийся поблизости от текущего элемента предсказания, представляет собой блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, и, таким образом, опорный пиксель представляет собой пиксель, в отношении которого было выполнено предсказание, осуществляемое между изображениями, опорный пиксель, включенный в блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, может использоваться вместо информации об опорном пикселе блока, находящегося поблизости, в отношении которого было выполнено внутреннее предсказание. То есть, когда опорный пиксель недоступен, по меньшей мере один опорный пиксель из доступных опорных пикселей может использоваться вместо недоступной информации об опорном пикселе.The intra prediction portion 125 may generate a prediction element based on information about reference pixels located around the current block, which is information about a pixel in the current image. When a block adjacent to the current prediction element is a block on which inter-picture prediction has been performed, and thus the reference pixel is a pixel on which inter-picture prediction has been performed, the reference pixel is included in a block that has been subject to inter-picture prediction may be used in place of the reference pixel information of a nearby block that has been intra-predicted. That is, when a reference pixel is not available, at least one reference pixel among the available reference pixels may be used instead of the unavailable reference pixel information.

При внутреннем предсказании режим предсказания может предусматривать режим предсказания, основанный на информации об углах, в котором используется информация об опорном пикселе согласно направлению предсказания, и режим предсказания, не основанный на информации об углах, в котором не используется информация о направлении при выполнении предсказания. Режим для предсказания информации о яркости может отличаться от режима для предсказания информации о цветовой разности, и информация о режиме внутреннего предсказания, используемая для предсказания информации о яркости или информации о предсказанном сигнале яркости, может использоваться для предсказания информации о цветовой разности.In intra prediction, a prediction mode may include a prediction mode based on angle information, which uses information about a reference pixel according to the prediction direction, and a prediction mode not based on angle information, which does not use direction information when making prediction. The mode for predicting the luminance information may be different from the mode for predicting the color difference information, and the intra prediction mode information used to predict the luminance information or the predicted luminance signal information may be used to predict the color difference information.

Если размер элемента предсказания такой же, как размер элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться для элемента предсказания на основании пикселя на левой стороне, пикселя на верхней левой стороне и пикселя сверху элемента предсказания. Однако, если размер элемента предсказания отличается от размера элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.If the size of the prediction element is the same as the size of the transform element when intra prediction is performed, intra prediction may be performed on the prediction element based on the pixel on the left side, the pixel on the top left side, and the pixel on top of the prediction element. However, if the size of the prediction element is different from the size of the transformation element when intra prediction is performed, intra prediction may be performed using a reference pixel based on the transformation element. In addition, intra prediction using N×N partitioning can only be used for the smallest coding element.

Посредством способа внутреннего предсказания можно генерировать блок предсказания после применения фильтра адаптивного внутреннего сглаживания (AIS) к опорному пикселю согласно режиму предсказания. Тип фильтра AIS, применяемого к опорному пикселю, может варьировать. Для выполнения способа внутреннего предсказания режим внутреннего предсказания текущего элемента предсказания может быть предсказан из режима внутреннего предсказания элемента предсказания, существующего поблизости от текущего элемента предсказания. Когда режим предсказания текущего элемента предсказания предсказан с использованием информации о режиме, предсказанной из соседнего элемента предсказания, если режимы внутреннего предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, то информация, указывающая, что режимы предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, может передаваться с использованием информации о предварительно определенном флаге, и если режимы предсказания текущего элемента предсказания и элемента предсказания поблизости отличаются друг от друга, информация о режиме предсказания текущего блока может быть кодирована за счет выполнения энтропийного кодирования.By the intra prediction method, a prediction block can be generated after applying an adaptive intra smoothing (AIS) filter to a reference pixel according to the prediction mode. The type of AIS filter applied to the reference pixel can vary. To perform the intra prediction method, the intra prediction mode of the current prediction element can be predicted from the intra prediction mode of the prediction element existing in the vicinity of the current prediction element. When the prediction mode of the current prediction element is predicted using mode information predicted from a neighboring prediction element, if the intra prediction modes of the current prediction element are the same as the nearby prediction element, then information indicating that the prediction modes of the current prediction element are the same as the element nearby prediction element can be transmitted using the predetermined flag information, and if the prediction modes of the current prediction element and the nearby prediction element are different from each other, the prediction mode information of the current block can be encoded by performing entropy encoding.

Кроме того, может быть сгенерирован остаточный блок, содержащий элемент предсказания, который выполнил предсказание на основании элемента предсказания, сгенерированного частями 120 и 125 для предсказания, и информации об остаточном коэффициенте, которая представляет собой значение разницы элемента предсказания от первоначального блока. Сгенерированный остаточный блок может быть введен в часть 130 для преобразования.In addition, a residual block may be generated containing a prediction element that has performed prediction based on the prediction element generated by the prediction portions 120 and 125 and residual coefficient information that is a difference value of the prediction element from the original block. The generated residual block may be input to the conversion portion 130.

Часть 130 для преобразования может преобразовывать остаточный блок, содержащий первоначальный блок и информацию об остаточном коэффициенте элемента предсказания, сгенерированного посредством частей 120 и 125 для предсказания, с помощью способа преобразования, такого как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или пропуск преобразования. Применение DCT, DST или KLT для преобразования остаточного блока, может быть определено на основании информации о режиме внутреннего предсказания элемента предсказания, используемого для генерирования остаточного блока.The transform portion 130 may transform the residual block containing the original block and the residual coefficient information of the prediction element generated by the prediction portions 120 and 125 using a transform method such as discrete cosine transform (DCT), discrete sine transform (DST), or skip conversion. The use of DCT, DST or KLT for transforming the residual block can be determined based on information about the intra prediction mode of the prediction element used to generate the residual block.

Часть 135 для квантования может квантовать значения, преобразованные в частотную область посредством части 130 для преобразования. Коэффициенты квантования могут изменяться в зависимости от блока или важности видео. Значение, вычисленное частью 135 для квантования, может быть предоставлено в часть 140 для обратного квантования и часть 160 для перестановки.The quantization portion 135 may quantize the values converted to the frequency domain by the conversion portion 130. Quantization factors may vary depending on the block or importance of the video. The value calculated by the quantization portion 135 may be provided to the inverse quantization portion 140 and the permutation portion 160.

Часть 160 для перестановки может выполнять перестановку значений коэффициентов для квантованных остаточных коэффициентов.The permutation portion 160 may perform permutation of coefficient values for the quantized residual coefficients.

Часть 160 для перестановки может изменять коэффициенты двумерной формы блока на одномерную векторную форму посредством способа сканирования коэффициентов. Например, часть 160 для перестановки может сканировать от коэффициентов DC до коэффициентов высокочастотной области с использованием способа зигзагообразного сканирования и менять коэффициенты с приданием им одномерной векторной формы. Согласно размеру элемента преобразования и режиму внутреннего предсказания вместо зигзагообразного сканирования может использоваться вертикальное сканирование в виде сканирования коэффициентов двумерной формы блока в направлении столбцов и горизонтальное сканирование коэффициентов двумерной формы блока в направлении строк. То есть согласно размеру элемента преобразования и режиму внутреннего предсказания может быть определен способ сканирования, который будет использоваться, из зигзагообразного сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении.The permutation portion 160 may change the coefficients of a two-dimensional block shape to a one-dimensional vector shape through a coefficient scanning method. For example, the permutation portion 160 may scan from the DC coefficients to the high frequency domain coefficients using a zigzag scanning method and change the coefficients into a one-dimensional vector form. According to the size of the transform element and the intra prediction mode, instead of zigzag scanning, vertical scanning in the form of scanning of two-dimensional block shape coefficients in the column direction and horizontal scanning of two-dimensional block shape coefficients in the row direction can be used. That is, according to the transform element size and the intra prediction mode, the scanning method to be used from zigzag scanning, vertical direction scanning, and horizontal direction scanning can be determined.

Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование на основании значений, вычисленных частью 160 для перестановки. Для энтропийного кодирования могут использоваться различные способы кодирования, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и т.п.The entropy encoding portion 165 may perform entropy encoding based on the values calculated by the permutation portion 160. For entropy coding, various encoding methods can be used, such as exponential Golomb coding, context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and the like.

Часть 165 для энтропийного кодирования может кодировать различную информацию, такую как информация об остаточном коэффициенте и информация о типе элемента кодирования, информация о режиме предсказания, информация об элементе разбиения, информация об элементе предсказания и информация об элементе передачи, информация о векторе движения, информация об опорном кадре, информация об интерполяции блока и информация о фильтрации, которая введена из части 160 для перестановки и частей 120 и 125 для предсказания.The entropy encoding portion 165 may encode various information such as residual coefficient information and coding element type information, prediction mode information, partition element information, prediction element information and transmission element information, motion vector information, reference frame, block interpolation information, and filtering information that is input from the permutation portion 160 and the prediction portions 120 and 125.

Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование значения коэффициента элемента кодирования, введенного из части 160 для перестановки.The entropy encoding portion 165 may perform entropy encoding of the coefficient value of the encoding element input from the permutation portion 160.

Часть 140 для обратного квантования и часть 145 для обратного преобразования выполняют обратное квантование значений, квантованных посредством части 135 для квантования, и обратное преобразование значений, преобразованных посредством части 130 для преобразования. Остаточный коэффициент, сгенерированный частью 140 для обратного квантования и частью 145 для обратного преобразования, может быть объединен с элементом предсказания, предсказанным посредством части для оценки движения, часть для компенсации движения и части для внутреннего предсказания, включенных в части 120 и 125 для предсказания, для генерирования восстановленного блока.The inverse quantization portion 140 and the inverse transform portion 145 perform inverse quantization of the values quantized by the quantization portion 135 and inverse transform of the values transformed by the transform portion 130. The residual coefficient generated by the inverse quantization portion 140 and the inverse transform portion 145 may be combined with a prediction element predicted by the motion estimation portion, the motion compensation portion, and the intra prediction portion included in the prediction portions 120 and 125 to generating a recovered block.

Часть 150 для фильтрации может содержать по меньшей мере одно из деблочного фильтра, элемента для коррекции смещения и адаптивного контурного фильтра (ALF).The filtering portion 150 may comprise at least one of a deblocking filter, an offset correction element, and an adaptive loop filter (ALF).

Деблочный фильтр может удалять искажение блока, возникающее на границе между блоками в восстановленном изображении. Определение того, выполнять ли удаление блочности, применять ли деблочный фильтр к текущему блоку, может осуществляться на основании пикселей, содержащихся в нескольких столбцах или строках, содержащихся в блоке. Сильный фильтр или слабый фильтр может применяться согласно необходимой степени фильтрации для удаления блочности при применении деблочного фильтра к блоку. Кроме того, когда выполняются фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении при применении деблочного фильтра, фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении могут осуществляться параллельно.The deblocking filter can remove block distortion occurring at the boundary between blocks in the reconstructed image. Determining whether to deblock or apply a deblocking filter to the current block can be made based on the pixels contained in multiple columns or rows contained in the block. A strong filter or a weak filter can be applied according to the required degree of filtering to remove blocking when applying a deblocking filter to a block. In addition, when vertical direction filtering and horizontal direction filtering are performed when using a deblocking filter, vertical direction filtering and horizontal direction filtering can be performed in parallel.

Элемент для коррекции смещения может корректировать смещение первоначального видео посредством элемента, состоящего из пикселей, для видео, в отношении которого было выполнено удаление блочности. Для выполнения коррекции смещения для конкретного изображения можно использовать способ разделения пикселей, включенных в видео, на определенное количество областей, определения области для выполнения смещения, и применения смещения к области, или способ применения смещения, учитывающий информацию о крае каждого пикселя.The offset correction element may correct the offset of the original video by means of a pixel element for the video that has been deblocked. To perform offset correction for a particular image, you can use a method of dividing the pixels included in the video into a certain number of regions, defining an area to perform the offset, and applying the offset to the area, or a method of applying the offset that takes into account the edge information of each pixel.

Адаптивная контурная фильтрация (ALF) может выполняться на основании значения, полученного за счет сравнения восстановленного и отфильтрованного видео с первоначальным видео. После разделения пикселей, включенных в видео, на предварительно определенные группы, может быть определен один фильтр, который должен применяться к соответствующей группе, и фильтрация может выполняться по-разному для каждой группы. Сигнал яркости, который представляет собой информацию, связанную с тем, применять ли ALF, может передаваться для каждого элемента кодирования (CU), и форма и коэффициент фильтрования фильтра ALF, который должен быть применен, могут варьировать в зависимости от каждого блока. Кроме того, фильтр ALF того же типа (фиксированного типа) может применяться независимо от характеристики применяемого блока.Adaptive contour filtering (ALF) can be performed based on the value obtained by comparing the reconstructed and filtered video with the original video. After dividing the pixels included in the video into predefined groups, a single filter can be defined to be applied to the corresponding group, and filtering can be performed differently for each group. A luminance signal, which is information related to whether to apply ALF, may be transmitted for each coding unit (CU), and the shape and filter coefficient of the ALF filter to be applied may vary depending on each block. In addition, an ALF filter of the same type (fixed type) can be applied regardless of the characteristic of the block used.

Запоминающее устройство 155 может хранить восстановленный блок или изображение, вычисленные посредством части 150 для фильтрации, и восстановленный и сохраненный блок или изображение могут быть предоставлены в части 120 и 125 для предсказания при выполнении предсказания, осуществляемого между изображениями.The storage device 155 may store the reconstructed block or image calculated by the filtering portion 150, and the reconstructed and stored block or image may be provided to the prediction portions 120 and 125 when performing inter-image prediction.

На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.In fig. 2 is a block diagram showing a video decoder according to one embodiment of the present invention.

Как показано на фиг. 2, видеодекодер 200 может содержать часть 210 для энтропийного декодирования, часть 215 для перестановки, часть 220 для обратного квантования, часть 225 для обратного преобразования, части 230 и 235 для предсказания, часть 240 для фильтрации и запоминающее устройство 245.As shown in FIG. 2, video decoder 200 may include an entropy decoding portion 210, a permutation portion 215, an inverse quantization portion 220, an inverse transform portion 225, prediction portions 230 and 235, a filtering portion 240, and a memory 245.

Когда битовый поток видео вводится из видеокодера, входной битовый поток может быть декодирован согласно процедуре, противоположной процедуре работы видеокодера.When a video bitstream is input from a video encoder, the input bitstream can be decoded according to a procedure opposite to that of the video encoder.

Часть 210 для энтропийного декодирования может выполнять энтропийное декодирование согласно процедуре, противоположной процедуре выполнения энтропийного кодирования в части для энтропийного декодирования видеокодера. Например, могут применяться различные способы, соответствующие способу, выполняемому видеокодером, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).The entropy decoding portion 210 may perform entropy decoding according to a procedure opposite to the procedure of performing entropy encoding in the entropy decoding portion of the video encoder. For example, various methods corresponding to the method performed by the video encoder may be used, such as exponential Golomb coding, context adaptive variable length coding (CAVLC), and context adaptive binary arithmetic coding (CABAC).

Часть 210 для энтропийного декодирования может декодировать информацию, связанную с внутренним предсказанием и предсказанием, осуществляемым между изображениями, выполняемыми кодером.The entropy decoding portion 210 can decode information related to intra prediction and inter-picture prediction performed by the encoder.

Часть 215 для перестановки может выполнять перестановку в отношении битового потока, подвергнутого энтропийному декодированию посредством части 210 для энтропийного декодирования, на основании способа перестановки, выполняемого кодером. Коэффициенты, выраженные в одномерной векторной форме, могут быть восстановлены и переставлены как коэффициенты в двумерной форме блока. Часть 215 для перестановки может принимать информацию, связанную со сканированием коэффициентов, выполняемым частью для кодирования, и выполнять восстановление посредством способа обратного сканирования на основании порядка сканирования, выполняемого соответствующей частью для кодирования.The permutation portion 215 may perform permutation on the bit stream subjected to entropy decoding by the entropy decoding portion 210 based on the permutation method performed by the encoder. Coefficients expressed in one-dimensional vector form can be recovered and rearranged as coefficients in two-dimensional block form. The permutation portion 215 may receive information related to coefficient scanning performed by the encoding portion and perform reconstruction by an inverse scan method based on the scanning order performed by the corresponding encoding portion.

Часть 220 для обратного квантования может выполнять обратное квантование на основании параметра квантования, предоставленного кодером, и значения коэффициента переставленного блока.The inverse quantization portion 220 may perform inverse quantization based on the quantization parameter provided by the encoder and the permuted block coefficient value.

Часть 225 для обратного преобразования может выполнять обратное преобразование, т.е. обратное DCT, обратное DST или обратное KLT, для преобразования, т.е. DCT, DST или KLT, выполняемого частью для преобразования в отношении результата квантования, выполняемого видеокодером. Обратное преобразование может выполняться на основании элемента передачи, определенного видеокодером. Часть 225 для обратного преобразования видеодекодера может выборочно выполнять метод преобразования (например, DCT, DST, KLT) согласно множеству фрагментов информации, такой как способ предсказания, размер текущего блока, направление предсказания и т.п.The deconversion portion 225 may perform the deconversion, i.e. reverse DCT, reverse DST or reverse KLT, for conversion, i.e. DCT, DST or KLT performed by the conversion part with respect to the quantization result performed by the video encoder. The inverse conversion may be performed based on the transfer element determined by the video encoder. The video decoder deconversion portion 225 may selectively perform a transformation method (eg, DCT, DST, KLT) according to a plurality of pieces of information such as a prediction method, a current block size, a prediction direction, and the like.

Части 230 и 235 для предсказания могут генерировать блок предсказания на основании информации, относящейся к генерированию блока предсказания, предоставленного энтропийным декодером 210, и информации о ранее декодированном блоке или изображении, предоставленном запоминающим устройством 245.The prediction parts 230 and 235 may generate a prediction block based on the prediction block generation-related information provided by the entropy decoder 210 and the previously decoded block or image information provided by the storage device 245.

Как описано выше, если размер элемента предсказания и размер элемента преобразования одинаковы, когда внутреннее предсказание выполняется таким же образом, как операция в видеокодере, внутреннее предсказание выполняется в отношении элемента предсказания на основании пикселя, находящегося на левой стороне, пикселя на верхней левой стороне и пикселя сверху элемента предсказания. Однако, если размер элемента предсказания и размер элемента преобразования отличаются друг от друга, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.As described above, if the size of the prediction element and the size of the transform element are the same, when intra prediction is performed in the same manner as the operation in a video encoder, intra prediction is performed on the prediction element based on the pixel located on the left side, the pixel on the upper left side and the pixel on top of the prediction element. However, if the size of the prediction element and the size of the transformation element are different from each other when intra prediction is performed, intra prediction may be performed using a reference pixel based on the transformation element. In addition, intra prediction using N×N partitioning can only be used for the smallest coding element.

Части 230 и 235 для предсказания могут содержать часть для определения элемента предсказания, часть для предсказания, осуществляемого между изображениями, и часть для внутреннего предсказания. Часть для определения элемента предсказания может принимать различную информацию, такую как информация об элементе предсказания, введенная от части 210 для энтропийного декодирования, информация о режиме предсказания для способа внутреннего предсказания, информация, относящаяся к предсказанию движения для способа предсказания, осуществляемого между изображениями, и т.п., идентифицировать элемент предсказания из текущего элемента кодирования и определять, выполняет элемент предсказания предсказание, осуществляемое между изображениями, или внутреннее предсказание. Часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, в отношении текущего элемента предсказания на основании информации, включенной в по меньшей мере одно изображение из изображений до или после текущего изображения, включая текущий элемент предсказания, за счет использования информации, необходимой для предсказания, осуществляемого между изображениями, текущего элемента предсказания, предоставленного видеокодером. Альтернативно часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, на основании информации о частичной области, ранее восстановленной в текущем изображении, содержащем текущий элемент предсказания.The prediction portions 230 and 235 may include a prediction element determination portion, an inter-picture prediction portion, and an intra prediction portion. The prediction element determination portion may receive various information such as prediction element information inputted from the entropy decoding portion 210, prediction mode information for the intra prediction method, motion prediction related information for the inter-picture prediction method, etc. etc., identify a prediction element from the current encoding element and determine whether the prediction element performs inter-picture prediction or intra-prediction. The inter-picture prediction portion 230 may perform inter-picture prediction regarding the current prediction element based on information included in at least one image of the images before or after the current image, including the current prediction element, by using the information , necessary for inter-picture prediction of the current prediction element provided by the video encoder. Alternatively, the inter-image prediction portion 230 may perform inter-image prediction based on the partial region information previously reconstructed in the current image containing the current prediction element.

Для выполнения предсказания, осуществляемого между изображениями, можно определить на основании элемента кодирования, является способ предсказания движения элемента предсказания, включенного в соответствующий элемент кодирования, режимом пропуска, режимом слияния, режимом предсказания вектора движения (режимом AMVP) или режимом внутриблочного копирования.To perform prediction carried out between pictures, it can be determined based on the encoding element whether the motion prediction method of the prediction element included in the corresponding encoding element is a skip mode, a merging mode, a motion vector prediction mode (AMVP mode), or an intra-block copy mode.

Часть 235 для внутреннего предсказания может генерировать блок предсказания на основании информации о пикселе в текущем изображении. Когда элемент предсказания представляет собой элемент предсказания, который выполнил внутреннее предсказание, внутреннее предсказание может быть выполнено на основании информации о режиме внутреннего предсказания элемента предсказания, предоставленного видеокодером. Часть 235 для внутреннего предсказания может содержать фильтр адаптивного внутреннего сглаживания (AIS), часть для интерполяции опорного пикселя и фильтр DC. Фильтр AIS представляет собой часть, которая выполняет фильтрацию в отношении опорного пикселя текущего блока, и может определять, применять ли фильтр согласно режиму предсказания текущего элемента предсказания, и применять фильтр. Фильтрация AIS может выполняться в отношении опорного пикселя текущего блока за счет использования режима предсказания и информации о фильтре AIS элемента предсказания, предоставленного видеокодером. Когда режим предсказания текущего блока представляет собой режим, который не выполняет фильтрацию AIS, фильтр AIS может не применяться.The intra prediction portion 235 may generate a prediction block based on information about a pixel in the current image. When the prediction element is a prediction element that has performed intra prediction, intra prediction may be performed based on the intra prediction mode information of the prediction element provided by the video encoder. The intra prediction portion 235 may include an adaptive intra-smoothing (AIS) filter, a reference pixel interpolation portion, and a DC filter. The AIS filter is a part that performs filtering on a reference pixel of the current block, and can determine whether to apply a filter according to the prediction mode of the current prediction element, and apply the filter. AIS filtering may be performed on a reference pixel of the current block by using the prediction mode and AIS filter information of the prediction element provided by the video encoder. When the prediction mode of the current block is a mode that does not perform AIS filtering, the AIS filter may not be applied.

Когда режим предсказания элемента предсказания представляет собой элемент предсказания, который выполняет внутреннее предсказание на основании значения пикселя, полученного за счет интерполяции опорного пикселя, часть для интерполяции опорного пикселя может генерировать опорный пиксель элемента, состоящего из пикселей, который имеет целое значение или меньше за счет интерполяции опорного пикселя. Когда режим предсказания текущего элемента предсказания представляет собой режим предсказания, который генерирует блок предсказания без интерполяции опорного пикселя, опорный пиксель может не быть интерполирован. Фильтр DC может генерировать блок предсказания посредством фильтрации, когда режим предсказания текущего блока представляет собой режим DC.When the prediction element prediction mode is a prediction element that performs intra prediction based on a pixel value obtained by interpolating a reference pixel, the reference pixel interpolation part may generate a reference pixel of an element composed of pixels that has an integer value or less by interpolation reference pixel. When the prediction mode of the current prediction element is a prediction mode that generates a prediction block without interpolating a reference pixel, the reference pixel may not be interpolated. The DC filter may generate a prediction block by filtering when the prediction mode of the current block is a DC mode.

Восстановленный блок или изображение могут быть предоставлены в часть 240 для фильтрации. Часть 240 для фильтрации может содержать деблочный фильтр, элемент для коррекции смещения и ALF.The reconstructed block or image may be provided to part 240 for filtering. The filtering portion 240 may include a deblocking filter, an offset correction element, and an ALF.

Информация о том, применять ли деблочный фильтр к соответствующему блоку или изображению, и информация о том, применять сильный фильтр или слабый фильтр, когда применяется деблочный фильтр, могут быть предоставлены видеокодером. В деблочный фильтр видеодекодера может быть предоставлена информация, связанная с деблочным фильтром, предоставленная видеокодером, и видеодекодер может выполнять фильтрацию для удаления блочности в отношении соответствующего блока.Information about whether to apply a deblocking filter to the corresponding block or image, and information about whether to apply a strong filter or a weak filter when the deblocking filter is applied may be provided by the video encoder. The video decoder deblocking filter may be provided with information associated with the deblocking filter provided by the video encoder, and the video decoder may perform deblocking filtering on the corresponding block.

Элемент для коррекции смещения может выполнять коррекцию смещения в отношении восстановленного видео на основании типа коррекции смещения и информации о значении смещения, применяемых к видео при выполнении кодирования.The offset correction element may perform offset correction on the reconstructed video based on the offset correction type and offset value information applied to the video when encoding is performed.

ALF может применяться к элементу кодирования на основании информации о том, применять ли ALF, и информации о коэффициентах ALF, предоставленной кодером. Информация об ALF может быть предоставлена для включения в набор конкретных параметров.ALF may be applied to an encoding element based on information about whether to apply ALF and information about ALF coefficients provided by the encoder. ALF information can be provided for inclusion in a set of specific parameters.

Запоминающее устройство 245 может хранить восстановленное изображение или блок и использовать их в качестве опорного изображения или опорного блока и может предоставлять восстановленное изображение на элемент вывода.Storage device 245 may store the reconstructed image or block and use it as a reference image or reference block, and may provide the reconstructed image to an output element.

На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.In fig. 3 is a view showing a code tree base element according to one embodiment of the present invention.

Блок кодирования максимального размера может быть определен как блок кодового дерева. Изображение разбивается на множество элементов кодового дерева (CTU). Элемент кодового дерева представляет собой элемент кодирования, имеющий максимальный размер, и может называться большим элементом кодирования (LCU). На фиг. 3 представлен пример, в котором изображение разбивается на множество элементов кодового дерева.A maximum size coding block can be defined as a code tree block. The image is divided into many code tree units (CTUs). A code tree element is a coding element having a maximum size and may be called a large coding unit (LCU). In fig. Figure 3 shows an example in which an image is divided into many code tree elements.

Размер элемента кодового дерева может быть определен на уровне изображения или уровне последовательности. Для этого информация, указывающая размер элемента кодового дерева, может быть передана посредством набора параметров изображения или набора параметров последовательности.The size of a code tree element can be determined at the image level or the sequence level. To do this, information indicating the size of the code tree element may be transmitted by an image parameter set or a sequence parameter set.

Например, размер элемента кодового дерева для всего изображения в последовательности может быть установлен равным 128×128. Альтернативно на уровне изображения любой размер из 128×128 и 256×256 может быть определен как размер элемента кодового дерева. Например, размер элемента кодового дерева может быть установлен равным 128×128 в первом изображении, и размер элемента кодового дерева может быть установлен равным 256×256 во втором изображении.For example, the code tree element size for the entire image in the sequence can be set to 128×128. Alternatively, at the image level, any size between 128×128 and 256×256 may be defined as the code tree element size. For example, the code tree element size may be set to 128×128 in the first image, and the code tree element size may be set to 256×256 in the second image.

Блоки кодирования могут быть сгенерированы за счет разбиения элемента кодового дерева. Блок кодирования указывает базовый элемент для выполнения кодирования/декодирования. Например, предсказание или преобразование может выполняться для каждого блока кодирования, или режим кодирования с предсказанием может быть определен для каждого блока кодирования. В данном случае режим кодирования с предсказанием указывает способ генерирования видео предсказания. Например, режим кодирования с предсказанием может включать предсказание в пределах экрана (внутреннее предсказание), предсказание между экранами (предсказание, осуществляемое между изображениями), привязку к текущему изображению (CPR), или внутриблочное копирование (IBC), или комбинированное предсказание. Для блока кодирования блок предсказания может быть сгенерирован за счет использования по меньшей мере одного режима кодирования с предсказанием из внутреннего предсказания, предсказания, осуществляемого между изображениями, привязки к текущему изображению и комбинированного предсказания.Coding blocks can be generated by splitting a code tree element. The encoding block specifies a base element for performing encoding/decoding. For example, prediction or transformation may be performed for each encoding block, or a predictive encoding mode may be determined for each encoding block. Here, the predictive encoding mode indicates a method for generating video prediction. For example, the predictive coding mode may include intra-screen prediction (intra-prediction), inter-screen prediction (inter-picture prediction), current picture reference (CPR), or intra-block copy (IBC), or combined prediction. For a coding block, a prediction block may be generated by using at least one predictive coding mode of intra prediction, inter-picture prediction, anchor to current picture, and combined prediction.

Информация, указывающая режим кодирования с предсказанием текущего блока, может передаваться посредством битового потока. Например, информация может представлять собой 1-битный флаг, указывающий, является режим кодирования с предсказанием внутренним режимом или режимом, осуществляемым между изображениями. Только когда режим кодирования с предсказанием текущего блока определен как режим, осуществляемый между изображениями, может использоваться привязка к текущему изображению или комбинированное предсказание.Information indicating the predictive encoding mode of the current block may be transmitted via a bitstream. For example, the information may be a 1-bit flag indicating whether the predictive coding mode is an intra-picture mode or an inter-picture mode. Only when the predictive encoding mode of the current block is determined to be an inter-picture mode can lock to the current picture or combined prediction be used.

Привязка к текущему изображению предназначена для установления текущего изображения как опорного изображения и получения блока предсказания текущего блока из области, которая уже была кодирована/декодирована в текущем изображении. В данном случае текущее изображение означает изображение, содержащее текущий блок. Информация, указывающая, применяется ли привязка к текущему изображению к текущему блоку, может быть передана посредством битового потока. Например, информация может представлять собой 1-битный флаг. Когда флаг является истинным, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению, а когда флаг является ложным, режим предсказания текущего блока может быть определен как предсказание, осуществляемое между изображениями.The purpose of snapping to the current picture is to establish the current picture as a reference picture and obtain the prediction block of the current block from the region that has already been encoded/decoded in the current picture. In this case, the current image means the image containing the current block. Information indicating whether an anchor to the current image is applied to the current block may be transmitted via a bit stream. For example, the information may be a 1-bit flag. When the flag is true, the predictive encoding mode of the current block can be defined as anchor to the current picture, and when the flag is false, the predictive mode of the current block can be defined as inter-picture prediction.

Альтернативно режим кодирования с предсказанием текущего блока может быть определен на основании индекса опорного изображения. Например, когда индекс опорного изображения указывает текущее изображение, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению. Когда индекс опорного изображения указывает изображение, отличающееся от текущего изображения, режим кодирования с предсказанием текущего блока может быть определен как предсказание, осуществляемое между изображениями. То есть привязка к текущему изображению представляет собой способ предсказания, использующий информацию об области, в которой было осуществлено кодирование/декодирование, в текущем изображении, и предсказание, осуществляемое между изображениями, представляет собой способ предсказания, использующий информацию о другом изображении, в котором было осуществлено кодирование/декодирование.Alternatively, the predictive coding mode of the current block may be determined based on the index of the reference picture. For example, when the reference picture index indicates the current picture, the predictive encoding mode of the current block may be determined to be anchored to the current picture. When the reference picture index indicates a picture different from the current picture, the predictive coding mode of the current block can be defined as prediction performed between pictures. That is, anchoring to the current image is a prediction method using information about the region in which encoding/decoding has been performed in the current image, and prediction performed between images is a prediction method using information about another image in which encoding/decoding has been performed. encoding/decoding.

Комбинированное предсказание представляет режим кодирования, в котором объединены два или более из внутреннего предсказания, предсказания, осуществляемого между изображениями, и привязки к текущему изображению. Например, при применении комбинированного предсказания первый блок предсказания может быть сгенерирован на основании одно из внутреннего предсказания, предсказания, осуществляемого между изображениями, и привязки к текущему изображению, а второй блок предсказания может быть сгенерирован на основании другого из них. При генерировании первого блока предсказания и второго блока предсказания, конечный блок предсказания может быть сгенерирован посредством операции усреднения или операции взвешенного суммирования первого блока предсказания и второго блока предсказания. Информация, указывающая, применяется ли комбинированное предсказание, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг.Combined prediction represents a coding mode in which two or more of intra-prediction, inter-picture prediction, and current-picture anchoring are combined. For example, when applying combined prediction, a first prediction block may be generated based on one of intra prediction, inter-image prediction, and current image anchoring, and a second prediction block may be generated based on another of them. When generating the first prediction block and the second prediction block, the final prediction block may be generated by an averaging operation or a weighted addition operation of the first prediction block and the second prediction block. Information indicating whether combined prediction is applied may be transmitted via a bitstream. The information may be a 1-bit flag.

На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.In fig. 4 is a view showing various types of partitioning of a coding block.

Блок кодирования может быть разбит на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева. Разбитый блок кодирования может быть разбит снова на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева.The encoding block may be partitioned into a plurality of encoding blocks based on a quaternary tree partition, a binary tree partition, or a ternary tree partition. The split encoding block may be split again into a plurality of encoding blocks based on a quaternary tree split, a binary tree split, or a ternary tree split.

Разбиение на основе четверичного дерева относится к методу разбиения, который разбивает текущий блок на четыре блока. В результате разбиения на основе четвертичного дерева текущий блок может быть разбит на четыре раздела квадратной формы (см. «SPLIT_QT» на фиг. 4(a)).Quaternary tree partitioning refers to a partitioning method that splits the current block into four blocks. As a result of quaternary tree partitioning, the current block can be split into four square-shaped partitions (see “SPLIT_QT” in Fig. 4(a)).

Разбиение на основе двоичного дерева относится к методу разбиения, который разбивает текущий блок на два блока. Разбиение текущего блока на два блока вдоль вертикального направления (т.е. с использованием вертикальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в вертикальном направлении, и разбиение текущего блока на два блока вдоль горизонтального направления (т.е. с использованием горизонтальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в горизонтальном направлении. В результате разбиения на основе двоичного дерева текущий блок может быть разбит на два раздела неквадратной формы. «SPLIT_BT_VER» на фиг. 4(b) представляет результат разбиения на основе двоичного дерева в вертикальном направлении, а «SPLIT_BT_HOR» на фиг. 4(c) представляет результат разбиения на основе двоичного дерева в горизонтальном направлении.Binary tree partitioning refers to a partitioning method that splits the current block into two blocks. Splitting the current block into two blocks along the vertical direction (i.e. using a vertical line intersecting the current block) can be called binary tree splitting in the vertical direction, and splitting the current block into two blocks along the horizontal direction (i.e. with using a horizontal line intersecting the current block) can be called a binary tree partition in the horizontal direction. Binary tree partitioning can split the current block into two non-square partitions. "SPLIT_BT_VER" in Fig. 4(b) represents the result of binary tree splitting in the vertical direction, and “SPLIT_BT_HOR” in FIG. 4(c) presents the result of binary tree partitioning in the horizontal direction.

Разбиение на основе троичного дерева относится к методу разбиения, который разбивает текущий блок на три блока. Разбиение текущего блока на три блока вдоль вертикального направления (т.е. с использованием двух вертикальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в вертикальном направлении, и разбиение текущего блока на три блока вдоль горизонтального направления (т.е. с использованием двух горизонтальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в горизонтальном направлении. В результате разбиения на основе троичного дерева текущий блок может быть разбит на три раздела неквадратной формы. В этом случае ширина/высота раздела, расположенного в центре текущего блока, может быть вдвое больше ширины/высоты других разделов. «SPLIT_TT_VER» на фиг. 4(d) представляет результат разбиения на основе троичного дерева в вертикальном направлении, а «SPLIT_TT_HOR» на фиг. 4(e) представляет результат разбиения на основе троичного дерева в горизонтальном направлении.Ternary tree partitioning refers to a partitioning method that splits the current block into three blocks. Splitting the current block into three blocks along the vertical direction (i.e. using two vertical lines crossing the current block) can be called ternary tree splitting in the vertical direction, and splitting the current block into three blocks along the horizontal direction (i.e. using two horizontal lines crossing the current block) can be called ternary tree partitioning in the horizontal direction. As a result of ternary tree partitioning, the current block can be partitioned into three non-square partitions. In this case, the width/height of the section located in the center of the current block can be twice the width/height of other sections. "SPLIT_TT_VER" in Fig. 4(d) represents the result of ternary tree partitioning in the vertical direction, and “SPLIT_TT_HOR” in FIG. 4(e) presents the result of ternary tree partitioning in the horizontal direction.

Количество разбиений элемента кодового дерева может быть определено как глубина разбиения. Максимальная глубина разбиения элемента кодового дерева может быть определена на уровне последовательности или уровне изображения. Соответственно, максимальная глубина разбиения элемента кодового дерева может отличаться для каждой последовательности или изображения.The number of splits of a code tree element can be defined as the split depth. The maximum split depth of a code tree element can be determined at the sequence level or the image level. Accordingly, the maximum depth of a code tree element may differ for each sequence or image.

Альтернативно максимальная глубина разбиения для каждого метода разбиения может быть определена отдельно. Например, максимальная глубина разбиения, допускаемая для разбиения на основе четверичного дерева, может быть отличной от максимальной глубины разбиения, допускаемой для разбиения на основе двоичного дерева и/или разбиения на основе троичного дерева.Alternatively, the maximum splitting depth for each splitting method can be determined separately. For example, the maximum partition depth allowed for a quaternary tree partition may be different from the maximum partition depth allowed for a binary tree partition and/or ternary tree partition.

Кодер может передавать информацию, указывающую по меньшей мере одно из типа разбиения и глубины разбиения текущего блока посредством битового потока. Декодер может определять тип разбиения и глубину разбиения элемента кодового дерева на основании информации, проанализированной из битового потока.The encoder may transmit information indicating at least one of a split type and a split depth of the current block via a bit stream. The decoder may determine the split type and split depth of a code tree element based on information parsed from the bit stream.

На фиг. 5 представлен вид, показывающий схему разбиения элемента кодового дерева.In fig. 5 is a view showing a code tree element partitioning diagram.

Разбиение блока кодирования с использованием такого метода разбиения, как разбиение на основе четверичного дерева, разбиение на основе двоичного дерева и/или разбиение на основе троичного дерева, может называться разбиением на основе нескольких деревьев.Partitioning a coding block using a partitioning method such as quaternary tree partitioning, binary tree partitioning, and/or ternary tree partitioning may be referred to as multi-tree partitioning.

Блоки кодирования, сгенерированные путем применения разбиения на основе нескольких деревьев к блоку кодирования, могут называться нижними блоками кодирования. Когда глубина разбиения блока кодирования представляет собой k, глубина разбиения нижних блоков кодирования установлена равной k+1.Coding blocks generated by applying a multi-tree partition to a coding block may be called lower coding blocks. When the partition depth of the encoding block is k, the partition depth of the lower encoding blocks is set to k+1.

И наоборот, для блоков кодирования, имеющих глубину разбиения k+1, блок кодирования, имеющий глубину разбиения k, может называться верхним блоком кодирования.Conversely, for encoding blocks having partition depth k+1, the encoding block having partition depth k may be called an upper encoding block.

Тип разбиения текущего блока кодирования может быть определен на основании по меньшей мере одного из типа разбиения верхнего блока кодирования и типа разбиения соседнего блока кодирования. В данном случае соседний блок кодирования представляет собой блок кодирования, смежный с текущим блоком кодирования, и может включать по меньшей мере один из верхнего соседнего блока и левого соседнего блока текущего блока кодирования, и соседний блок, смежный с верхним левым углом. В данном случае тип разбиения может включать по меньшей мере одно из следующего: применялось ли разбиение на основе четверичного дерева, применялось ли разбиение на основе двоичного дерева, направление разбиения на основе двоичного дерева, применялось ли разбиение на основе троичного дерева и направление разбиения на основе троичного дерева.The partition type of the current encoding block may be determined based on at least one of the partition type of the upper encoding block and the partition type of the adjacent encoding block. Here, a neighboring encoding block is an encoding block adjacent to the current encoding block, and may include at least one of an upper adjacent block and a left adjacent block of the current encoding block, and an adjacent block adjacent to the upper left corner. In this case, the type of splitting may include at least one of the following: whether a quaternary tree splitting was used, whether a binary tree splitting was used, a binary tree splitting direction, whether a ternary tree splitting was used, and a ternary splitting direction tree.

Чтобы определить тип разбиения блока кодирования, информация, указывающая то, может ли быть разбит блок кодирования, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг «split_cu_flag», и, когда флаг является истинным, она указывает, что блок кодирования разбит с помощью метода разбиения на основе квадродерева (→ четвертичного дерева).To determine the type of splitting of the encoding block, information indicating whether the coding block can be split may be transmitted by a bitstream. The information is a 1-bit flag "split_cu_flag", and when the flag is true, it indicates that the encoding block is split using a quadtree (→ quaternary tree) splitting method.

Когда split_cu_flag является истинным, информация, указывающая то, разбит ли блок кодирования на основе четверичного дерева, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг в виде split_qt_flag, и, когда флаг является истинным, блок кодирования может быть разбит на четыре блока.When split_cu_flag is true, information indicating whether a quaternary tree coding block is split can be transmitted via the bitstream. The information is a 1-bit flag in the form split_qt_flag, and when the flag is true, the encoding block can be split into four blocks.

Например, в примере, показанном на фиг. 5, когда элемент кодового дерева разбит на основе четвертичного дерева, генерируются четыре блока кодирования, имеющие глубину разбиения 1. Кроме того, показано, что разбиение на основе четвертичного дерева применяется снова к первому и четвертому блокам кодирования из четырех блоков кодирования, сгенерированных в результате разбиения на основе четвертичного дерева. В результате могут быть сгенерированы четыре блока кодирования, имеющие глубину разбиения 2.For example, in the example shown in FIG. 5, when a code tree element is split based on the quaternary tree, four coding blocks having a split depth of 1 are generated. In addition, it is shown that the splitting based on the quaternary tree is applied again to the first and fourth coding blocks of the four coding blocks generated by the splitting based on a quaternary tree. As a result, four coding blocks having a partition depth of 2 can be generated.

Кроме того, блоки кодирования, имеющие глубину разбиения, равную 3, могут быть сгенерированы путем повторного применения разбиения на основе четверичного дерева к блоку кодирования, имеющему глубину разбиения, равную 2.In addition, encoding blocks having a partition depth of 3 can be generated by repeatedly applying the quaternary tree partition to a encoding block having a partition depth of 2.

Когда разбиение на основе четверичного дерева не применяется к блоку кодирования, может быть определено то, выполняется разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, с учетом по меньшей мере одного из следующего: размера блока кодирования, расположен ли блок кодирования на границе изображения, максимальной глубины разбиения и типа разбиения соседнего блока. Когда определено, что следует выполнить разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, информация, указывающая направление разбиения, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_vertical_flag. На основании флага может быть определено, является направление разбиения вертикальным направлением или горизонтальным направлением. Дополнительно информация, указывающая то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_binary_flag. На основании флага может быть определено то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования.When a quaternary tree partition is not applied to an encoding block, it can be determined whether a binary tree partition or a ternary tree partition is performed on the encoding block, taking into account at least one of the size of the encoding block, whether the block is located encoding at the image boundary, the maximum partition depth and the type of partition of the adjacent block. When it is determined that binary tree partitioning or ternary tree partitioning should be performed on an encoding block, information indicating the direction of partitioning may be transmitted by a bitstream. The information may be a 1-bit flag in the form mtt_split_cu_vertical_flag. Based on the flag, it can be determined whether the dividing direction is the vertical direction or the horizontal direction. Additionally, information indicating whether a binary tree partition or a ternary tree partition is applied to the encoding block may be transmitted by the bitstream. The information can be a 1-bit flag in the form mtt_split_cu_binary_flag. Based on the flag, it can be determined whether a binary tree partition or a ternary tree partition is applied to the encoding block.

Например, в примере, показанном на фиг. 5, показано, что разбиение на основе двоичного дерева в вертикальном направлении применено к блоку кодирования, имеющему глубину разбиения, равную 1, разбиение на основе троичного дерева в вертикальном направлении применено к левому блоку кодирования из блоков кодирования, сгенерированных в результате разбиения, и разбиение на основе двоичного дерева в вертикальном направлении применено к правому блоку кодирования.For example, in the example shown in FIG. 5, it is shown that a binary tree partition in the vertical direction is applied to a coding block having a partition depth of 1, a ternary tree partition in the vertical direction is applied to the left encoding block of the encoding blocks generated by the partition, and a partition into the binary tree base in the vertical direction is applied to the right encoding block.

Предсказание, осуществляемое между изображениями, представляет собой режим кодирования с предсказанием, который предсказывает текущий блок путем использования информации о предшествующем изображении. Например, блок в том же положении, что и текущий блок в предшествующем изображении (далее - совмещаемый блок), может быть установлен как блок предсказания текущего блока. Далее блок предсказания, сгенерированный на основании блока в том же положении, что и текущий блок, будет называться совмещаемым блоком предсказания.Inter-picture prediction is a predictive coding mode that predicts the current block by using information about the previous picture. For example, a block at the same position as the current block in the previous image (hereinafter referred to as a compatible block) can be set as a prediction block of the current block. Hereinafter, a prediction block generated based on a block at the same position as the current block will be called a compatible prediction block.

С другой стороны, когда объект, находящийся в предшествующем изображении, переместился в другое положение в текущем изображении, текущий блок может быть эффективным образом предсказан путем использования движения объекта. Например, когда направление движения и размер объекта можно узнать путем сравнения предшествующего изображения и текущего изображения, блок предсказания (или видео предсказания) текущего блока может быть сгенерирован с учетом информации о движении объекта. Далее блок предсказания, сгенерированный путем использования информации о движении, может называться блоком предсказания движения.On the other hand, when an object located in the previous image has moved to a different position in the current image, the current block can be efficiently predicted by using the movement of the object. For example, when the motion direction and size of an object can be learned by comparing a previous image and a current image, a prediction block (or video prediction) of the current block can be generated taking into account the motion information of the object. Hereinafter, the prediction block generated by using the motion information may be called a motion prediction block.

Остаточный блок может быть сгенерирован путем вычитания блока предсказания из текущего блока. В этом случае, когда имеется движение объекта, энергия остаточного блока может быть уменьшена путем использования блока предсказания движения вместо совмещаемого блока предсказания, и, таким образом, эффективность сжатия остаточного блока может быть улучшена.A residual block can be generated by subtracting a prediction block from the current block. In this case, when there is motion of the object, the energy of the residual block can be reduced by using a motion prediction block instead of a compatible prediction block, and thus the compression efficiency of the residual block can be improved.

Как описано выше, генерирование блока предсказания путем использования информации о движении может называться предсказанием с компенсацией движения. В большинстве предсказаний, осуществляемых между изображениями, блок предсказания может быть сгенерирован на основании предсказания с компенсацией движения.As described above, generating a prediction block by using motion information may be called motion-compensated prediction. In most inter-image predictions, a prediction block may be generated based on motion compensated prediction.

Информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса. Вектор движения представляет направление движения и размер объекта. Индекс опорного изображения указывает опорное изображение текущего блока из опорных изображений, включенных в список опорных изображений. Направление предсказания указывает любое из однонаправленного предсказания L0, однонаправленного предсказания L1 и двунаправленного предсказания (предсказания L0 и предсказания L1). Согласно направлению предсказания текущего блока может использоваться по меньшей мере одно из информации о движении в направлении L0 и информации о движении в направлении L1. Двунаправленный весовой индекс указывает значение взвешивания, примененное к блоку предсказания L0, и значение взвешивания, примененное к блоку предсказания L1.The motion information may comprise at least one of a motion vector, a reference image index, a prediction direction, and a bidirectional weight index. The motion vector represents the direction of motion and the size of the object. The reference picture index indicates the reference picture of the current block of the reference pictures included in the reference picture list. The prediction direction indicates any of unidirectional L0 prediction, unidirectional L1 prediction, and bidirectional prediction (L0 prediction and L1 prediction). According to the prediction direction of the current block, at least one of the movement information in the L0 direction and the movement information in the L1 direction may be used. The bidirectional weight index indicates the weighting value applied to the L0 prediction block and the weighting value applied to the L1 prediction block.

На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.In fig. 6 is a flowchart illustrating an inter-image prediction method according to one embodiment of the present invention.

Как показано на фиг. 6, способ предсказания, осуществляемого между изображениями, включает этапы определения (S601) режима предсказания, осуществляемого между изображениями, текущего блока, получения (S602) информации о движении текущего блока согласно определенному режиму предсказания, осуществляемого между изображениями, и выполнения (S603) предсказания с компенсацией движения для текущего блока на основании полученной информации о движении.As shown in FIG. 6, the inter-picture prediction method includes the steps of determining (S601) an inter-picture prediction mode of the current block, obtaining (S602) information about the movement of the current block according to the determined inter-picture prediction mode, and performing (S603) the inter-picture prediction motion compensation for the current block based on received motion information.

В данном случае режим предсказания, осуществляемого между изображениями, представляет различные методы определения информации о движении текущего блока и может включать режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении. Например, режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, может включать режим слияния и режим предсказания вектора движения, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, может включать аффинный режим слияния и режим предсказания вектора аффинного движения. Информация о движении текущего блока может быть определена на основании соседнего блока, смежного с текущим блоком, или информации, проанализированной из битового потока согласно режиму предсказания, осуществляемого между изображениями.Here, the inter-picture prediction mode represents various methods for determining motion information of the current block, and may include an inter-picture prediction mode that uses translational motion information and an inter-picture prediction mode that uses affine motion information. . For example, an inter-image prediction mode that uses translational motion information may include a fusion mode and a motion vector prediction mode, and an inter-image prediction mode that uses affine motion information may include an affine fusion mode and a vector prediction mode. affine movement. The motion information of the current block may be determined based on a neighboring block adjacent to the current block or information analyzed from the bitstream according to an inter-picture prediction mode.

Далее способ предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, будет описан подробно.Next, an inter-image prediction method that uses affine motion information will be described in detail.

На фиг. 7 представлен вид, показывающий нелинейное движение объекта.In fig. 7 is a view showing the nonlinear motion of an object.

Нелинейное движение объекта может быть сгенерировано в видео. Например, как показано в примере на фиг. 7, может происходить такое нелинейное движение объекта, как приближение, отдаление, поворот, аффинное преобразование и т.п. камеры. Когда происходит нелинейное движение объекта, движение объекта не может быть эффективно выражено с помощью вектора поступательного движения. Соответственно, эффективность кодирования может быть улучшена за счет использования аффинного движения вместо поступательного движения в области, где происходит нелинейное движение объекта.Nonlinear object motion can be generated in video. For example, as shown in the example of FIG. 7, such nonlinear movement of an object can occur as approaching, moving away, rotating, affine transformation, etc. cameras. When nonlinear motion of an object occurs, the motion of the object cannot be effectively expressed by a translational motion vector. Accordingly, encoding efficiency can be improved by using affine motion instead of translational motion in the region where nonlinear object motion occurs.

На фиг. 8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.In fig. 8 is a flowchart illustrating a method for inter-image prediction based on affine motion according to one embodiment of the present invention.

Применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании информации, проанализированной из битового потока. В частности, применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании по меньшей мере одно из флага, указывающего, применяется ли аффинный режим слияния к текущему блоку, и флага, указывающего, применяется ли режим предсказания вектора аффинного движения к текущему блоку.Whether the inter-image prediction method based on affine motion is applied to the current block can be determined based on the information parsed from the bitstream. In particular, whether an inter-image prediction method based on affine motion is applied to the current block can be determined based on at least one of a flag indicating whether the affine fusion mode is applied to the current block and a flag indicating whether whether the mode of predicting the affine motion vector to the current block.

Когда метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, применяется к текущему блоку, может быть определена (S801) модель аффинного движения текущего блока. Модель аффинного движения может быть определена как по меньшей мере одна из шестипараметрической модели аффинного движения и четырехпараметрической модели аффинного движения. Шестипараметрическая модель аффинного движения выражает аффинное движение с использованием шести параметров, а четырехпараметрическая модель аффинного движения выражает аффинное движение с использованием четырех параметров.When the inter-image prediction method based on affine motion is applied to the current block, an affine motion model of the current block can be determined (S801). The affine motion model may be defined as at least one of a six-parameter affine motion model and a four-parameter affine motion model. A six-parameter affine motion model expresses affine motion using six parameters, and a four-parameter affine motion model expresses affine motion using four parameters.

Уравнение 1 выражает аффинное движение с использованием шести параметров. Аффинное движение представляет поступательное движение для предварительно определенной области, определенной аффинными исходными векторами.Equation 1 expresses affine motion using six parameters. Affine motion represents translational motion for a predefined region defined by affine source vectors.

[Уравнение 1][Equation 1]

Когда аффинное движение выражено с использованием шести параметров, может быть выражено сложное движение. Однако, поскольку увеличивается количество битов, необходимых для кодирования каждого из параметров, эффективность кодирования может снижаться. Соответственно, аффинное движение может быть выражено с использованием четырех параметров. Уравнение 2 выражает аффинное движение с использованием четырех параметров.When affine motion is expressed using six parameters, complex motion can be expressed. However, as the number of bits required to encode each parameter increases, the encoding efficiency may decrease. Accordingly, affine motion can be expressed using four parameters. Equation 2 expresses the affine motion using four parameters.

[Уравнение 2][Equation 2]

Информация для определения модели аффинного движения текущего блока может быть кодирована и передана посредством битового потока. Например, информация может представлять собой 1-битный флаг в виде «affine_type_flag». Когда значение флага равно 0, это может указывать, что применяется 4-параметрическая модель аффинного движения, а когда значение флага равно 1, это может указывать, что применяется 6-параметрическая модель аффинного движения. Флаг может быть кодирован посредством элемента в виде слайса, тайла или блока (например, посредством элемента блока кодирования или кодового дерева). Когда флаг передается на уровне слайса, модель аффинного движения, определенная на уровне слайса, может применяться ко всем блокам, принадлежащим к слайсу.Information for determining the affine motion model of the current block can be encoded and transmitted via a bitstream. For example, the information could be a 1-bit flag in the form "affine_type_flag". When the flag value is 0, it may indicate that a 4-parameter affine motion model is applied, and when the flag value is 1, it may indicate that a 6-parameter affine motion model is applied. The flag may be encoded through a slice, tile, or block element (eg, through an encoding block or encoding tree element). When a flag is passed at the slice level, the affine motion model defined at the slice level can be applied to all blocks belonging to the slice.

Альтернативно модель аффинного движения текущего блока может быть определена на основании аффинного режима предсказания, осуществляемого между изображениями, текущего блока. Например, когда применяется аффинный режим слияния, модель аффинного движения текущего блока может быть определена как 4-параметрическая модель движения. С другой стороны, когда применяется режим предсказания вектора аффинного движения, информация для определения модели аффинного движения текущего блока может быть кодирована и передана посредством битового потока. Например, когда режим предсказания вектора аффинного движения применяется к текущему блоку, модель аффинного движения текущего блока может быть определена на основании 1-битного флага в виде «affine_type_flag».Alternatively, the affine motion model of the current block may be determined based on the inter-image affine prediction mode of the current block. For example, when the affine merging mode is applied, the affine motion model of the current block can be defined as a 4-parameter motion model. On the other hand, when the affine motion vector prediction mode is applied, information for determining the affine motion model of the current block can be encoded and transmitted by a bitstream. For example, when the affine motion vector prediction mode is applied to the current block, the affine motion model of the current block can be determined based on a 1-bit flag in the form “affine_type_flag”.

Затем может быть получен (S802) аффинный исходный вектор текущего блока. Когда выбрана 4-параметрическая модель аффинного движения, могут быть получены векторы движения в двух контрольных точках текущего блока. С другой стороны, когда выбрана 6-параметрическая модель аффинного движения, могут быть получены векторы движения в трех контрольных точках текущего блока. Вектор движения в контрольной точке может называться аффинным исходным вектором. Контрольная точка может включать по меньшей мере один из верхнего левого угла, верхнего правого угла и нижнего левого угла текущего блока.Then, the affine source vector of the current block can be obtained (S802). When a 4-parameter affine motion model is selected, motion vectors at two control points of the current block can be obtained. On the other hand, when the 6-parameter affine motion model is selected, the motion vectors at the three control points of the current block can be obtained. The motion vector at a control point can be called an affine source vector. The reference point may include at least one of the top left corner, top right corner, and bottom left corner of the current block.

На фиг. 9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.In fig. 9 is a view showing an example of affine source vectors of each affine motion model.

В 4-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для двух из верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг. 9(a), когда выбрана 4-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)) и аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)). Также можно использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего левого угла, или использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего правого угла.In the 4-parameter affine motion model, affine source vectors can be obtained for two of the upper left corner, upper right corner and lower left corner. For example, as shown in the example of FIG. 9(a), when the 4-parameter affine motion model is selected, the affine vector can be obtained by using the affine source vector sv 0 for the top left corner of the current block (for example, the top left sample (x1, y1)) and the affine source vector sv 1 for the top right corner of the current block (for example, top right count (x1, y1)). You can also use an affine source vector for the bottom left corner instead of an affine source vector for the top left corner, or use an affine source vector for the bottom left corner instead of an affine source vector for the top right corner.

В 6-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг. 9(b), когда выбрана 6-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)), аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)) и аффинного исходного вектора sv2 для верхнего левого угла текущего блока (например, верхний левый отсчет (x2, y2)).In the 6-parameter affine motion model, affine source vectors can be obtained for the upper left corner, upper right corner and lower left corner. For example, as shown in the example of FIG. 9(b), when the 6-parameter affine motion model is selected, the affine vector can be obtained by using the affine source vector sv 0 for the top left corner of the current block (for example, the top left sample (x1, y1)), the affine source vector sv 1 for the top right corner of the current block (for example, top right sample (x1, y1)) and the affine source vector sv 2 for the top left corner of the current block (for example, top left sample (x2, y2)).

В варианте осуществления, описанном ниже, в 4-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки и верхней правой контрольной точки будут называться первым аффинным исходным вектором и вторым аффинным исходным вектором соответственно. В вариантах осуществления, в которых используются первый аффинный исходный вектор и второй аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора и второго аффинного исходного вектора может быть заменен аффинным исходным вектором нижней левой контрольной точки (третьим аффинным исходным вектором) или аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).In the embodiment described below, in the 4-parameter affine motion model, the affine source vectors of the top left control point and the top right control point will be called the first affine source vector and the second affine source vector, respectively. In embodiments that use the first affine seed vector and the second affine seed vector described below, at least one of the first affine seed vector and the second affine seed vector may be replaced by the lower left reference point affine seed vector (third affine seed vector) or the affine source vector of the lower right control point (the fourth affine source vector).

Кроме того, в 6-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки будут называться первым аффинным исходным вектором, вторым аффинным исходным вектором и третьим аффинным исходным вектором соответственно. В вариантах осуществления, в которых используется первый аффинный исходный вектор, второй аффинный исходный вектор и третий аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора может быть заменен аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).In addition, in the 6-parameter affine motion model, the affine source vectors of the top left control point, top right control point and bottom left control point will be called the first affine source vector, the second affine source vector and the third affine source vector, respectively. In embodiments that use a first affine seed vector, a second affine seed vector, and a third affine seed vector described below, at least one of the first affine seed vector, the second affine seed vector, and the third affine seed vector may be replaced by an affine seed vector bottom right control point (the fourth affine source vector).

Аффинный вектор может быть получен (S803) для каждого подблока за счет использования аффинных исходных векторов. В данном случае аффинный вектор представляет вектор поступательного движения, полученный на основании аффинных исходных векторов. Аффинный вектор подблока может называться аффинным вектором движения подблока или вектором движения подблока.An affine vector can be obtained (S803) for each sub-block by using affine source vectors. In this case, the affine vector represents the translational motion vector obtained from the affine source vectors. An affine subblock vector may be called an affine subblock motion vector or a subblock motion vector.

На фиг. 10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.In fig. 10 is a view showing an example of subblock affine vectors in a 4-parameter motion model.

Аффинный вектор подблока может быть получен на основании положения контрольной точки, положения подблока и аффинного исходного вектора. Например, в уравнении 3 показан пример получения аффинного вектора подблока.The affine sub-block vector can be obtained based on the position of the reference point, the position of the sub-block and the affine source vector. For example, Equation 3 shows an example of obtaining an affine subblock vector.

[Уравнение 3][Equation 3]

В уравнении 3 (x, y) обозначают положение подблока. В данном случае положение подблока указывает положение опорного отсчета, включенного в подблок. Опорный отсчет может представлять собой отсчет, расположенный в верхнем левом углу подблока, или отсчет, у которого по меньшей мере одна из координат по оси x и оси y представляет собой центральную точку. (x0, y0) обозначает положение первой контрольной точки и (sv0x, sv0y) обозначает первый аффинный исходный вектор. Кроме того, (x1, y1) обозначает положение второй контрольной точки и (sv1x, sv1y) обозначает второй аффинный исходный вектор.In Equation 3, (x, y) denotes the position of the sub-block. Here, the position of the sub-block indicates the position of the reference sample included in the sub-block. The reference sample may be a sample located in the upper left corner of the subblock, or a sample for which at least one of the x-axis and y-axis coordinates represents a center point. (x 0 , y 0 ) denotes the position of the first control point and (sv 0x , sv 0y ) denotes the first affine source vector. In addition, (x 1 , y 1 ) denotes the position of the second control point and (sv 1x , sv 1y ) denotes the second affine source vector.

Когда первая контрольная точка и вторая контрольная точка соответствуют верхнему левому углу и верхнему правому углу текущего блока соответственно, x1-x0 может быть установлено на значение, равное ширине текущего блока.When the first control point and the second control point correspond to the top left corner and top right corner of the current block, respectively, x 1 -x 0 can be set to a value equal to the width of the current block.

После этого может быть выполнено (S804) предсказание с компенсацией движения для каждого подблока с использованием аффинного вектора каждого подблока. В результате выполнения предсказания с компенсацией движения может быть сгенерирован блок предсказания для каждого подблока. Блоки предсказания подблоков могут быть установлены как блоки предсказания текущего блока.Thereafter, motion compensation prediction can be performed (S804) for each sub-block using the affine vector of each sub-block. By performing motion-compensated prediction, a prediction block for each sub-block can be generated. Sub-block prediction blocks can be set as prediction blocks of the current block.

Аффинный исходный вектор текущего блока может быть получен на основании аффинного исходного вектора соседнего блока, смежного с текущим блоком. Когда режим предсказания, осуществляемого между изображениями, текущего блока представляет собой аффинный режим слияния, аффинный исходный вектор кандидата на слияние, включенного в список кандидатов на слияние, может быть определен как аффинный исходный вектор текущего блока. Кроме того, когда режим предсказания, осуществляемого между изображениями, текущего блока представляет собой аффинный режим слияния, информация о движении, включающая по меньшей мере одно из индекса опорного изображения текущего блока, флага предсказания конкретного направления и двунаправленного значения взвешивания, может быть установлена такой же, как информация кандидата на слияние.The affine source vector of the current block can be obtained based on the affine source vector of a neighboring block adjacent to the current block. When the inter-image prediction mode of the current block is an affine fusion mode, an affine source vector of a fusion candidate included in the fusion candidate list can be defined as an affine source vector of the current block. In addition, when the inter-picture prediction mode of the current block is an affine fusion mode, motion information including at least one of a reference image index of the current block, a specific direction prediction flag, and a bidirectional weighting value can be set to the same. as merger candidate information.

Кандидат на слияние может быть получен на основании соседнего блока текущего блока. Соседний блок может включать по меньшей мере один из пространственного соседнего блока, смежного в пространственном отношении с текущим блоком, и временного соседнего блока, включенного в изображение, отличающееся от текущего изображения.A merge candidate can be obtained based on the adjacent block of the current block. The neighbor block may include at least one of a spatial neighbor block spatially adjacent to the current block and a temporary neighbor block included in an image different from the current image.

На фиг. 11 представлен вид, показывающий соседний блок, который может использоваться для получения кандидата на слияние.In fig. 11 is a view showing a neighbor block that can be used to obtain a merge candidate.

Соседний блок текущего блока может включать по меньшей мере один из соседнего блока (A), смежного с левой стороной текущего блока, соседнего блока (B), смежного с верхней стороной текущего блока, соседнего блока (C), смежного с верхним правым углом текущего блока, соседнего блока (D), смежного с нижним левым углом текущего блока, и соседнего блока (E), смежного с верхним левым углом текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (x0, y0), левый соседний блок A содержит отсчет в положении (x0-1, y0+H-1) и верхний соседний блок B содержит отсчет в положении (x0+W-1, y0-1). В данном случае W и H обозначают ширину и высоту текущего блока соответственно. Верхний правый соседний блок C содержит отсчет в положении (x0+W, y0-1) и нижний левый соседний блок D содержит отсчет в положении (x0-1, y0+H). Верхний левый соседний блок E содержит отсчет в положении (x0-1, y0-1).The adjacent block of the current block may include at least one of an adjacent block (A) adjacent to the left side of the current block, an adjacent block (B) adjacent to the top side of the current block, an adjacent block (C) adjacent to the top right corner of the current block , an adjacent block (D) adjacent to the lower left corner of the current block, and an adjacent block (E) adjacent to the upper left corner of the current block. When the coordinates of the top left sample of the current block are (x 0 , y 0 ), the left neighbor block A contains a sample at position (x 0 -1, y 0 +H-1) and the top neighbor block B contains a sample at position (x 0 +W-1, y 0 -1). In this case, W and H represent the width and height of the current block, respectively. The upper right adjacent block C contains a sample at position (x 0 +W, y 0 -1) and the lower left adjacent block D contains a sample at position (x 0 -1, y 0 +H). The top left adjacent block E contains a sample at position (x 0 -1, y 0 -1).

Когда соседний блок кодирован в аффинном режиме предсказания, осуществляемого между изображениями, аффинный исходный вектор кандидата на слияние может быть получен на основании аффинного исходного вектора соседнего блока. Далее соседний блок, кодированный в аффинном режиме предсказания, осуществляемого между изображениями, будет называться аффинным соседним блоком.When a neighboring block is encoded in an affine inter-picture prediction mode, the affine source vector of a merge candidate can be obtained based on the affine source vector of the neighboring block. In the following, a neighboring block encoded in the affine inter-image prediction mode will be called an affine neighboring block.

Кандидат на слияние для текущего блока может быть сгенерирован путем поиска соседних блоков в предварительно заданном порядке сканирования. Порядок сканирования может быть предварительно задан в кодере и декодере. Например, поиск соседних блоков может осуществляться в следующем порядке: A, B, C, D и E. Кроме того, кандидаты на слияние могут быть последовательно получены из найденных аффинных соседних блоков. Альтернативно порядок сканирования может быть адаптивно определен на основании по меньшей мере одного из размера, формы и модели аффинного движения текущего блока. То есть порядки сканирования блоков, у которых отличается по меньшей мере одно из размера, формы и модели аффинного движения, могут отличаться друг от друга.A merge candidate for the current block can be generated by searching neighboring blocks in a predefined scan order. The scanning order can be preset in the encoder and decoder. For example, neighbor blocks can be searched in the following order: A, B, C, D, and E. In addition, merge candidates can be sequentially obtained from the found affine neighbor blocks. Alternatively, the scan order may be adaptively determined based on at least one of the size, shape, and affine motion model of the current block. That is, the scanning orders of blocks that differ in at least one of size, shape, and affine motion pattern may differ from each other.

Альтернативно осуществляется последовательный поиск блоков, расположенных сверху текущего блока, и кандидата на слияние получают из аффинного соседнего блока, найденного первым, и осуществляется последовательный поиск блоков, расположенных на левой стороне текущего блока, и кандидат на слияние может быть получен из аффинного соседнего блока, найденного первым. В данном случае соседние блоки, расположенные сверху текущего блока, включают по меньшей мере один из соседнего блока E, соседнего блока B и соседнего блока C, и блоки, расположенные на левой стороне текущего блока могут включать по меньшей мере один из блока A и блока D. В этом случае соседний блок E также может быть классифицирован как блок, расположенный на левой стороне текущего блока.Alternatively, blocks located on top of the current block are searched sequentially and a merge candidate is obtained from the affine neighbor block found first, and blocks located on the left side of the current block are searched sequentially and a merge candidate is obtained from the affine neighbor block found first. first. Here, neighboring blocks located on top of the current block include at least one of adjacent block E, adjacent block B and adjacent block C, and blocks located on the left side of the current block may include at least one of block A and block D In this case, the neighboring block E can also be classified as the block located on the left side of the current block.

Хотя это не показано, кандидат на слияние может быть получен из временного соседнего блока текущего блока. В данном случае временной соседний блок может включать блок в том же положении, что и положение текущего блока в совмещаемом изображении или блока, смежного с ним. В частности, когда временной соседний блок текущего блока кодирован в аффинном режиме предсказания, осуществляемого между изображениями, кандидат на слияние может быть получен на основании аффинного исходного вектора временного кандидата на слияние.Although not shown, a merge candidate may be obtained from a temporary neighbor of the current block. In this case, the temporary neighboring block may include a block at the same position as the position of the current block in the fusion image or a block adjacent to it. In particular, when the temporal neighbor of the current block is encoded in an affine inter-picture prediction mode, a merge candidate can be obtained based on the affine source vector of the temporal merge candidate.

Может быть сгенерирован список кандидатов на слияние, содержащий кандидатов на слияние, и аффинный исходный вектор одного из кандидатов на слияние, включенных в список кандидатов на слияние, может быть определен как аффинный исходный вектор текущего блока. Для этого информация об индексах для идентификации любого из кандидатов на слияние может быть кодирована и передана посредством битового потока.A merge candidate list containing the merge candidates may be generated, and an affine source vector of one of the merge candidates included in the merge candidate list may be determined to be the affine source vector of the current block. To achieve this, index information for identifying any of the merge candidates may be encoded and transmitted via a bit stream.

В качестве другого примера осуществляется поиск соседних блоков согласно порядку сканирования и аффинный исходный вектор текущего блока может быть получен из аффинного исходного вектора аффинного соседнего блока, найденного первым.As another example, neighboring blocks are searched according to scan order, and the affine source vector of the current block can be obtained from the affine source vector of the affine neighbor block found first.

Как описано выше, в аффинном режиме слияния аффинный исходный вектор текущего блока может быть получен с использованием аффинного исходного вектора соседнего блока.As described above, in affine merge mode, the affine source vector of the current block can be obtained using the affine source vector of the adjacent block.

Когда режим предсказания, осуществляемого между изображениями, текущего блока представляет собой режим предсказания вектора аффинного движения, аффинный исходный вектор кандидата на предсказание вектора движения, включенного в список кандидатов на предсказание вектора движения, может быть определен как значение предсказания аффинного исходного вектора текущего блока. Аффинный исходный вектор текущего блока может быть получен путем сложения значения разницы аффинных исходных векторов со значением предсказания аффинного исходного вектора.When the inter-picture prediction mode of the current block is an affine motion vector prediction mode, the affine source vector of the motion vector prediction candidate included in the motion vector prediction candidate list can be determined as the affine source vector prediction value of the current block. The affine source vector of the current block can be obtained by adding the difference value of the affine source vectors with the prediction value of the affine source vector.

Кандидат на предсказание аффинного исходного вектора может быть получен на основании соседнего блока текущего блока. В частности, поиск соседних блоков, расположенных сверху текущего блока, осуществляется согласно предварительно определенному порядку сканирования, и первый кандидат на предсказание аффинного исходного вектора может быть получен из аффинного соседнего блока, найденного первым. Кроме того, поиск соседних блоков, расположенных на левой стороне текущего блока, осуществляется согласно предварительно определенному порядку сканирования, и второй кандидат на предсказание аффинного исходного вектора может быть получен из аффинного соседнего блока, найденного первым.An affine source vector prediction candidate can be obtained based on the adjacent block of the current block. Specifically, neighboring blocks above the current block are searched according to a predetermined scanning order, and the first candidate for affine seed vector prediction can be obtained from the affine neighboring block found first. In addition, neighboring blocks located on the left side of the current block are searched according to a predetermined scanning order, and the second candidate for affine seed vector prediction can be obtained from the affine neighboring block found first.

Информация для определения значения разницы аффинных исходных векторов может быть кодирована и передана посредством битового потока. Информация может включать информацию о размере, указывающую величину значения разницы аффинных исходных векторов, и информацию о коде, указывающую знак значения разницы аффинных исходных векторов. Значение разницы аффинных исходных векторов для каждой контрольной точки может быть установлено одинаковым. Альтернативно значение разницы аффинных исходных векторов может быть установлено по-разному для каждой контрольной точки.Information for determining the difference value of the affine source vectors may be encoded and transmitted via a bitstream. The information may include size information indicating the magnitude of the difference value of the affine source vectors, and code information indicating the sign of the difference value of the affine source vectors. The difference value of the affine source vectors for each control point can be set to the same. Alternatively, the difference value of the affine source vectors can be set differently for each reference point.

Как описано выше, аффинный исходный вектор кандидата на слияние или кандидата на предсказание аффинного исходного вектора может быть получен из аффинного исходного вектора аффинного соседнего блока, и аффинный исходный вектор текущего блока может быть получен с использованием полученного аффинного исходного вектора кандидата на слияние или кандидата на предсказание аффинного исходного вектора. Альтернативно после поиска аффинных соседних блоков согласно предварительно определенному порядку сканирования аффинный исходный вектор текущего блока может быть получен из аффинного исходного вектора аффинного соседнего блока, найденного первым.As described above, an affine source vector of a merge candidate or a prediction candidate can be obtained from an affine source vector of an affine neighboring block, and an affine source vector of a current block can be obtained using the resulting affine source vector of a merge candidate or a prediction candidate. affine source vector. Alternatively, after searching for affine neighbor blocks according to a predetermined scanning order, the affine source vector of the current block can be obtained from the affine source vector of the affine neighbor block found first.

Далее будет подробно описан способ получения аффинного исходного вектора текущего блока, кандидата на слияние или кандидата на предсказание аффинного исходного вектора из аффинного исходного вектора аффинного соседнего блока. В вариантах осуществления, описанных ниже, следует понимать, что получение аффинного исходного вектора текущего блока представляет собой получение аффинного исходного вектора кандидата на слияние или получение аффинного исходного вектора кандидата на предсказание аффинного исходного вектора.Next, a method for obtaining an affine source vector of a current block, a merge candidate, or a prediction candidate affine source vector from an affine source vector of an affine neighboring block will be described in detail. In the embodiments described below, it should be understood that obtaining the affine source vector of the current block represents obtaining the affine source vector of the merge candidate or obtaining the affine source vector of the prediction candidate affine source vector.

На фиг. 12 представлен вид, показывающий пример получения аффинного исходного вектора текущего блока на основании аффинного исходного вектора аффинного соседнего блока.In fig. 12 is a view showing an example of obtaining an affine source vector of a current block based on an affine source vector of an affine neighboring block.

Когда первый аффинный исходный вектор nv0 для верхней левой контрольной точки и второй аффинный исходный вектор nv1 для верхней правой контрольной точки сохраняются для аффинного соседнего блока, третий аффинный исходный вектор nv2 для нижней левой контрольной точки аффинного соседнего блока может быть получен на основании первого аффинного исходного вектора и второго аффинного исходного вектора. В уравнении 4 показан пример получения третьего аффинного исходного вектора.When the first affine source vector nv 0 for the top left control point and the second affine source vector nv 1 for the top right control point are stored for the affine neighbor block, the third affine source vector nv 2 for the bottom left control point of the affine neighbor block can be obtained based on the first an affine source vector and a second affine source vector. Equation 4 shows an example of obtaining a third affine seed vector.

[Уравнение 4][Equation 4]

В уравнении 4 (nv0x, nv0y) обозначает первый аффинный исходный вектор nv0, (nv1x, nv1y) обозначает второй аффинный исходный вектор nv1 и (nv2x, nv2y) обозначает третий аффинный исходный вектор nv2. Кроме того, (xn0, xn0) обозначает положение первой контрольной точки, (xn1, xn1) обозначает положение второй контрольной точки и (xn2, xn2) обозначает положение третьей контрольной точки.In Equation 4, (nv 0x , nv 0y ) denotes the first affine source vector nv 0 , (nv 1x , nv 1y ) denotes the second affine source vector nv 1 , and (nv 2x , nv 2y ) denotes the third affine source vector nv 2 . In addition, (x n0 , x n0 ) denotes the position of the first control point, (x n1 , x n1 ) denotes the position of the second control point, and (x n2 , x n2 ) denotes the position of the third control point.

После этого аффинный исходный вектор текущего блока может быть получен с использованием первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора. В уравнении 5 показан пример получения первого аффинного исходного вектора v0 текущего блока, и в уравнении 6 показан пример получения второго аффинного исходного вектора v1 текущего блока.Thereafter, the affine source vector of the current block can be obtained using the first affine source vector, the second affine source vector, and the third affine source vector. Equation 5 shows an example of obtaining the first affine source vector v 0 of the current block, and Equation 6 shows an example of obtaining the second affine source vector v 1 of the current block.

[Уравнение 5][Equation 5]

[Уравнение 6][Equation 6]

В уравнениях 5 и 6 (v0x, v0y) обозначает первый аффинный исходный вектор sv0 текущего блока и (v1x, v1y) обозначает второй аффинный исходный вектор sv1 текущего блока. Кроме того, (x0, y0) обозначает положение первой контрольной точки и (x1, y1) обозначает положение второй контрольной точки. Например, первая контрольная точка указывает верхний левый угол текущего блока и вторая контрольная точка указывает верхний правый угол текущего блока.In Equations 5 and 6, (v 0x , v 0y ) denotes the first affine source vector sv 0 of the current block and (v 1x , v 1y ) denotes the second affine source vector sv 1 of the current block. In addition, (x 0 , y 0 ) denotes the position of the first control point and (x 1 , y 1 ) denotes the position of the second control point. For example, the first control point indicates the top left corner of the current block and the second control point indicates the top right corner of the current block.

В примере, описанном выше, было описано, что аффинные исходные векторы текущего блока получены с использованием трех аффинных исходных векторов для аффинного соседнего блока. В качестве другого примера аффинные исходные векторы текущего блока могут быть получены с использованием только двух из аффинных исходных векторов аффинного соседнего блока.In the example described above, it was described that the affine source vectors of the current block are obtained using three affine source vectors for the affine neighboring block. As another example, the affine source vectors of the current block can be obtained using only two of the affine source vectors of an affine neighboring block.

Альтернативно аффинные исходные векторы текущего блока могут быть получены с использованием четвертого аффинного исходного вектора для нижнего правого угла вместо первого аффинного исходного вектора верхнего левого угла, второго аффинного исходного вектора верхнего правого угла или третьего аффинного исходного вектора нижнего левого угла аффинного соседнего блока.Alternatively, the current block's affine source vectors may be obtained using a fourth bottom-right affine source vector instead of the first top-left corner affine source vector, the second top-right affine source vector, or the third bottom-left affine source vector of an affine adjacent block.

В частности, когда верхняя граница текущего блока находится в контакте с верхней границей элемента кодового дерева, и желательно использовать аффинный исходный вектор для верхней контрольной точки (например, верхний левый угол или верхний правый угол) аффинного соседнего блока, смежного с верхней стороной текущего блока (далее называемого верхним аффинным соседним блоком), их желательно сохранить в запоминающем устройстве заранее, и может возникнуть проблема увеличения количества линейных буферов. Соответственно, когда верхняя граница текущего блока находится в контакте с верхней границей элемента кодового дерева, может быть установлено, что необходимо использовать аффинный исходный вектор нижней контрольной точки (например, нижний левый угол или нижний правый угол) вместо аффинного исходного вектора верхней контрольной точки для верхнего аффинного соседнего блока. Например, аффинные исходные векторы текущего блока могут быть получены с использованием третьего аффинного исходного вектора для нижнего левого угла и четвертого аффинного исходного вектора для нижнего правого угла верхнего аффинного соседнего блока. В этом случае аффинные исходные векторы для нижних углов могут быть скопированы из аффинных исходных векторов для верхних углов или получены из аффинных исходных векторов для верхних углов. Например, первый аффинный исходный вектор, второй аффинный исходный вектор или третий аффинный исходный вектор могут быть преобразованы в или заменять четвертый аффинный исходный вектор для нижнего правого угла.Specifically, when the top border of the current block is in contact with the top border of a code tree element, and it is desirable to use an affine source vector for the top reference point (e.g., top left corner or top right corner) of an affine neighbor block adjacent to the top side of the current block ( (hereinafter referred to as the upper affine neighbor block), they are desirable to be stored in the storage device in advance, and the problem of increasing the number of linear buffers may arise. Accordingly, when the top boundary of the current block is in contact with the top boundary of a code tree element, it may be determined that it is necessary to use the affine source vector of the bottom reference point (e.g., bottom left corner or bottom right corner) instead of the affine source vector of the top reference point for the top affine neighboring block. For example, the affine source vectors of the current block can be obtained using a third affine source vector for the bottom left corner and a fourth affine source vector for the bottom right corner of the top affine adjacent block. In this case, the affine source vectors for the bottom corners can be copied from the affine source vectors for the top corners or derived from the affine source vectors for the top corners. For example, the first affine source vector, the second affine source vector, or the third affine source vector may be converted to or replace the fourth affine source vector for the lower right corner.

В уравнениях 7 и 8 показан пример получения первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока с использованием третьего аффинного исходного вектора для нижней левой контрольной точки и четвертого аффинного исходного вектора для нижней правой контрольной точки соседнего аффинного вектора.Equations 7 and 8 show an example of obtaining the first affine seed vector and the second affine seed vector of the current block using the third affine seed vector for the lower left control point and the fourth affine seed vector for the lower right control point of the adjacent affine vector.

[Уравнение 7][Equation 7]

[Уравнение 8][Equation 8]

В уравнениях 7 и 8 (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока. (x0, y0) обозначает координаты верхней левой контрольной точки текущего блока и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока. (nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки аффинного соседнего блока (т.е. третий аффинный исходный вектор) и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки аффинного соседнего блока (т.е. четвертый аффинный исходный вектор). (v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки текущего блока (т.е. первый аффинный исходный вектор) и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки текущего блока (т.е. второй аффинный исходный вектор).In Equations 7 and 8, (x n2 , y n2 ) denotes the coordinates of the bottom left control point of the affine neighbor block and (x n3 , y n3 ) denotes the coordinates of the bottom right control point of the affine neighbor block. (x 0 , y 0 ) denotes the coordinates of the top left control point of the current block and (x 1 , y 1 ) denotes the coordinates of the top right control point of the current block. (nv 2x , nv 2y ) denotes the affine source vector of the bottom left control point of the affine neighbor block (i.e., the third affine source vector) and (nv 3x , nv 3y ) denotes the affine source vector of the bottom right control point of the affine neighbor block (i.e. e. the fourth affine source vector). (v 0x , v 0y ) denotes the affine source vector of the top left control point of the current block (i.e., the first affine source vector) and (v 1x , v 1y ) denotes the affine source vector of the top right control point of the current block (i.e. second affine source vector).

Операция деления, включенная в уравнения 7 и 8, может быть изменена на операцию сдвига. Операция сдвига может быть выполнена на основании значения, полученного из ширины между нижней левой контрольной точкой и нижней правой контрольной точкой (т.е. (xn3-xn2)).The division operation included in Equations 7 and 8 can be changed to a shift operation. The shift operation can be performed based on the value obtained from the width between the bottom left control point and the bottom right control point (ie (x n3 -x n2 )).

Как показано в примере, описанном выше, аффинные исходные векторы текущего блока могут быть получены из аффинных исходных векторов аффинного соседнего блока, которые были кодированы/декодированы. Для этого аффинные исходные векторы аффинного соседнего блока, которые были кодированы/декодированы, должны храниться в запоминающем устройстве. Однако, когда аффинные исходные векторы аффинного соседнего блока сохраняются в запоминающем устройстве в дополнение к векторам поступательного движения (т.е. аффинным векторам) подблоков, включенных в аффинный соседний блок, возникает проблема увеличения объема использования запоминающего устройства. Для решения этой проблемы аффинный исходный вектор текущего блока может быть получен с использованием вектора движения подблока, смежного с контрольной точкой аффинного соседнего блока, вместо аффинного исходного вектора аффинного соседнего блока. То есть вектор движения подблока, смежного с контрольной точкой аффинного соседнего блока, может быть установлен как аффинный исходный вектор аффинного соседнего блока. В данном случае подблок представляет собой блок, имеющий размер/форму, предварительно заданные в кодере и декодере, и может представлять собой блок, имеющий базовые размер/форму для хранения вектора движения. Например, подблок может представлять собой квадратный блок размером 4×4. Альтернативно вектор движения для конкретного положения отсчета может быть установлен как аффинный исходный вектор аффинного соседнего блока.As shown in the example described above, the affine source vectors of the current block can be obtained from the affine source vectors of the affine neighboring block that have been encoded/decoded. To do this, the affine source vectors of the affine neighbor block that have been encoded/decoded must be stored in a storage device. However, when the affine source vectors of the affine neighbor block are stored in the storage device in addition to the translational vectors (ie, affine vectors) of the subblocks included in the affine neighbor block, the problem of increasing the storage device usage occurs. To solve this problem, the affine source vector of the current block can be obtained using the motion vector of the subblock adjacent to the reference point of the affine neighbor block, instead of the affine source vector of the affine neighbor block. That is, the motion vector of a subblock adjacent to the reference point of an affine neighbor block can be set as the affine source vector of the affine neighbor block. Here, a sub-block is a block having a size/shape preset in the encoder and decoder, and may be a block having a basic size/shape for storing a motion vector. For example, a subblock may be a 4x4 square block. Alternatively, the motion vector for a particular reference position can be set to the affine source vector of the affine neighbor block.

На фиг. 13 представлен вид, показывающий пример установки вектора движения подблока в качестве аффинного исходного вектора аффинного соседнего блока.In fig. 13 is a view showing an example of setting a motion vector of a sub-block as an affine source vector of an affine neighboring block.

Вектор движения подблока, смежного с контрольной точкой, может быть установлен как аффинный исходный вектор контрольной точки. Например, в примере, показанном на фиг. 13, вектор движения (nv4x, nv4y) подблока (нижнего левого подблока), смежного с нижним левым углом аффинного соседнего блока, может быть установлен как аффинный исходный вектор (nv2x, nv2x) нижней левой контрольной точки и вектор движения (nv5x, nv5y) подблока (нижнего правого подблока), смежного с нижним правым углом, может быть установлен как аффинный исходный вектор (nv3x, nv3y) контрольной точки в нижнем правом углу. В данном случае нижний левый подблок может означать подблок, содержащий отсчет (например, отсчет в положении (xn2, yn2-1)), смежный с нижней левой контрольной точкой (xn2, yn2) в соседнем аффинном блоке, и нижний правый подблок может означать блок, содержащий отсчет (например, отсчет в положении (xn3-1, yn3-1)), смежный с нижней правой контрольной точкой (xn3, yn3) в соседнем аффинном блоке. Когда аффинные исходные векторы текущего блока получены на основании уравнений 7 и 8, третий аффинный исходный вектор аффинного соседнего блока может быть заменен вектором движения нижнего левого подблока и четвертый аффинный исходный вектор может быть заменен вектором движения нижнего правого подблока.The motion vector of a subblock adjacent to a reference point can be set as the affine source vector of the reference point. For example, in the example shown in FIG. 13, the motion vector (nv 4x , nv 4y ) of the sub-block (lower left sub-block) adjacent to the lower left corner of the affine neighboring block can be set as the affine source vector (nv 2x , nv 2x ) of the lower left control point and the motion vector (nv 5x , nv 5y ) of the subblock (lower right subblock) adjacent to the lower right corner can be set as an affine source vector (nv 3x , nv 3y ) of the control point in the lower right corner. In this case, the bottom-left sub-block may mean a sub-block containing a sample (for example, a sample at position (x n2 , y n2-1 )) adjacent to the bottom-left sample point (x n2 , y n2 ) in the adjacent affine block, and a bottom-right a sub-block may mean a block containing a sample (for example, a sample at position (x n3-1 , y n3-1 )) adjacent to the lower right sample point (x n3 , y n3 ) in an adjacent affine block. When the affine source vectors of the current block are obtained based on Equations 7 and 8, the third affine source vector of the affine neighboring block can be replaced by the motion vector of the lower left sub-block, and the fourth affine source vector can be replaced by the motion vector of the lower right sub-block.

Далее в варианте осуществления, описанном ниже, подблок, используемый как аффинный исходный вектор аффинного соседнего блока, будет называться аффинным подблоком.Hereinafter, in the embodiment described below, a sub-block used as an affine source vector of an affine neighbor block will be called an affine sub-block.

Согласно одному варианту осуществления настоящего изобретения аффинный подблок может быть определен на основании отсчета в конкретном положении. Например, подблок, содержащий отсчет в конкретном положении, может быть установлен как аффинный подблок. Далее отсчет в конкретном положении будет называться аффинным опорным отсчетом. Кроме того, опорный отсчет, используемый для определения аффинного подблока нижней левой контрольной точки, называется нижним левым опорным отсчетом, и опорный отсчет, используемый для определения аффинного подблока нижней правой контрольной точки, называется нижним правым опорным отсчетом.According to one embodiment of the present invention, an affine subblock can be determined based on a count at a particular position. For example, a subblock containing a sample at a particular position can be set as an affine subblock. In what follows, a sample at a specific position will be called an affine reference sample. In addition, the reference sample used to determine the affine subblock of the lower left reference point is called the lower left reference sample, and the reference sample used to determine the affine subblock of the lower right reference point is called the lower right reference sample.

Нижний левый опорный отсчет и нижний правый опорный отсчет могут быть выбраны из отсчетов, включенных в аффинный соседний блок. Например, по меньшей мере один из верхнего левого отсчета, нижнего левого отсчета, верхнего правого отсчета и нижнего левого отсчета нижнего левого подблока может быть установлен как нижний левый опорный отсчет, и по меньшей мере один из верхнего левого отсчета, нижнего левого отсчета, верхнего правого отсчета и нижнего левого отсчета нижнего правого подблока может быть установлен как нижний правый опорный отсчет. Соответственно, векторы движения нижнего левого подблока, содержащего нижний левый опорный отсчет, и нижнего правого подблока, содержащего нижний правый опорный отсчет, могут быть установлены как аффинный исходный вектор для нижней левой контрольной точки и аффинный исходный вектор для нижней правой контрольной точки соответственно.The lower left reference sample and the lower right reference sample may be selected from samples included in the affine adjacent block. For example, at least one of the upper left sample, lower left sample, upper right sample, and lower left sample of the lower left subblock may be set as the lower left reference sample, and at least one of the upper left sample, lower left sample, upper right reference and the lower left sample of the lower right subblock can be set as the lower right reference sample. Accordingly, the motion vectors of the lower left sub-block containing the lower left reference sample and the lower right sub-block containing the lower right reference sample can be set as an affine source vector for the lower left reference point and an affine source vector for the lower right reference point, respectively.

В качестве другого примера по меньшей мере один из нижнего левого опорного отсчета и нижнего правого опорного отсчета могут быть установлены как отсчет, расположенный за пределами аффинного соседнего блока. Это будет описано подробно со ссылкой на фиг. 14-16.As another example, at least one of the lower left reference sample and the lower right reference sample may be set to be a sample located outside the affine neighbor block. This will be described in detail with reference to FIG. 14-16.

На фиг. 14-16 представлены виды, показывающие положения опорных отсчетов.In fig. 14-16 are views showing the positions of the reference samples.

Как показано в примере на фиг. 14(a), верхний левый отсчет нижнего левого подблока может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.As shown in the example in FIG. 14(a), the upper left sample of the lower left sub-block may be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Отсчет, расположенный на правой стороне верхнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.A sample located on the right side of the top right sample of the bottom right subblock can be set as a reference sample (x n5 , y n5 ) for the bottom right reference point. Accordingly, a subblock adjacent to the right side of the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Альтернативно, как показано в примере на фиг. 14(b), отсчет, расположенный на левой стороне верхнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.Alternatively, as shown in the example of FIG. 14(b), a sample located on the left side of the upper left sample of the lower left sub-block can be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, a subblock adjacent to the left side of the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Верхний правый отсчет нижнего правого подблока может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.The top right sample of the bottom right subblock can be set as the reference sample (x n5 , y n5 ) for the bottom right reference point. Accordingly, the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Альтернативно, как показано в примере на фиг. 15(a), нижний левый отсчет нижнего левого подблока может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.Alternatively, as shown in the example of FIG. 15(a), the lower left sample of the lower left sub-block may be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Отсчет, расположенный на правой стороне нижнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.A sample located on the right side of the lower right sample of the lower right subblock can be set as a reference sample (x n5 , y n5 ) for the lower right reference point. Accordingly, a subblock adjacent to the right side of the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Альтернативно, как показано в примере на фиг. 15(b), отсчет, расположенный на левой стороне нижнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.Alternatively, as shown in the example of FIG. 15(b), a sample located on the left side of the lower left sample of the lower left sub-block can be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, a subblock adjacent to the left side of the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Нижний правый отсчет нижнего правого подблока может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.The bottom right sample of the bottom right subblock can be set as the reference sample (x n5 , y n5 ) for the bottom right reference point. Accordingly, the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Альтернативно, как показано в примере на фиг. 16(a), отсчет, расположенный между верхним левым отсчетом и нижним левым отсчетом нижнего левого подблока (например, средний левый отсчет), может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.Alternatively, as shown in the example of FIG. 16(a), a sample located between the upper left sample and the lower left sample of the lower left sub-block (eg, the middle left sample) may be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Отсчет, расположенный на правой стороне отсчета, расположенного между верхним правым отсчетом и нижним правым отсчетом нижнего правого подблока (например, средний правый отсчет), может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.A sample located on the right side of a sample located between the top right sample and the bottom right sample of the bottom right subblock (eg, the middle right sample) can be set as the reference sample (x n5 , y n5 ) for the bottom right reference point. Accordingly, a subblock adjacent to the right side of the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Альтернативно, как показано в примере на фиг. 16(b), отсчет, расположенный на левой стороне отсчета, расположенного между верхним левым отсчетом и нижним левым отсчетом нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.Alternatively, as shown in the example of FIG. 16(b), a sample located on the left side of a sample located between the upper left sample and the lower left sample of the lower left sub-block can be set as a reference sample (x n4 , y n4 ) for the lower left reference point. Accordingly, a subblock adjacent to the left side of the lower left subblock containing the reference sample (x n4 and y n4 ) can be set as an affine subblock for the lower left reference point.

Отсчет, расположенный между верхним правым отсчетом и нижним правым отсчетом нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.A sample located between the upper right sample and the lower right sample of the lower right subblock may be set as a reference sample (x n5 , y n5 ) for the lower right reference point. Accordingly, the lower right subblock containing the reference sample (x n5 and y n5 ) can be set as an affine subblock for the lower right reference point.

Когда аффинные исходные векторы текущего блока получены на основании уравнений 7 и 8, третий аффинный исходный вектор аффинного соседнего блока может быть заменен вектором движения аффинного подблока для нижней левой контрольной точки и четвертый аффинный исходный вектор может быть заменен вектором движения аффинного подблока для нижней правой контрольной точки. Кроме того, положение нижней левой контрольной точки может быть заменено положением нижнего левого опорного отсчета и положение нижней правой контрольной точки может быть заменено положением нижнего правого опорного отсчета.When the affine source vectors of the current block are obtained based on Equations 7 and 8, the third affine source vector of the affine neighboring block can be replaced by the motion vector of the affine sub-block for the lower left control point, and the fourth affine source vector can be replaced by the motion vector of the affine sub-block for the bottom right control point . In addition, the position of the lower left reference point may be replaced by the position of the lower left reference sample, and the position of the lower right reference point may be replaced by the position of the lower right reference sample.

В отличие от вариантов осуществления, описанных со ссылкой на фиг. 14-16, подблок, содержащий отсчет, смежный с опорным отсчетом, может быть установлен как аффинный подблок. В частности, отсчет, расположенный за пределами аффинного соседнего подблока, может быть установлен как опорный отсчет, и подблок, содержащийся в аффинном соседнем блоке, может быть установлен как аффинный подблок. Например, в примере, показанном на фиг. 14(a), отсчет, расположенный на правой стороне верхнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) и нижний правый подблок может быть установлен как аффинный подблок для нижнего правого угла. Альтернативно в примере, показанном на фиг. 14(b), отсчет, расположенный слева от верхнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) и нижний левый подблок может быть установлен как аффинный подблок для нижнего левого угла.Unlike the embodiments described with reference to FIGS. 14-16, a subblock containing a sample adjacent to a reference sample may be set as an affine subblock. Specifically, a sample located outside an affine neighbor sub-block may be set as a reference sample, and a sub-block contained in an affine neighbor block may be set as an affine sub-block. For example, in the example shown in FIG. 14(a), a sample located on the right side of the upper right sample of the lower right sub-block can be set as a reference sample (x n5 , y n5 ) and the lower right sub-block can be set as an affine sub-block for the lower right corner. Alternatively, in the example shown in FIG. 14(b), a sample located to the left of the upper left sample of the lower left sub-block can be set as a reference sample (x n4 , y n4 ) and the lower left sub-block can be set as an affine sub-block for the lower left corner.

Варианты осуществления, описанные выше, могут быть равным образом применены к фиг. 15 и 16. То есть в примере, показанном на фиг. 15(a) или фиг. 16(a), отсчет, расположенный на правой стороне нижнего правого отсчета или среднего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) и нижний правый подблок может быть установлен как аффинный подблок для нижнего правого угла. Альтернативно в примере, показанном на фиг. 15(b) или фиг. 16(b), отсчет, расположенный на левой стороне нижнего левого отсчета или среднего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) и нижний левый подблок может быть установлен как аффинный подблок для нижнего левого угла.The embodiments described above can be equally applied to FIGS. 15 and 16. That is, in the example shown in FIG. 15(a) or FIG. 16(a), a sample located on the right side of the lower right sample or middle right sample of the lower right sub-block can be set as a reference sample (x n5 , y n5 ) and the lower right sub-block can be set as an affine sub-block for the lower right corner. Alternatively, in the example shown in FIG. 15(b) or FIG. 16(b), a sample located on the left side of the lower left sample or the middle left sample of the lower left sub-block can be set as a reference sample (x n4 , y n4 ) and the lower left sub-block can be set as an affine sub-block for the lower left corner.

Как показано в примерах, описанных выше, аффинный исходный вектор аффинного соседнего блока может быть получен с использованием вектора движения аффинного подблока. Для этого в случае блока, который был кодирован/декодирован, вектор движения может храниться посредством элемента подблока.As shown in the examples described above, the affine source vector of the affine neighbor block can be obtained using the motion vector of the affine sub-block. To this end, in the case of a block that has been encoded/decoded, the motion vector can be stored by a subblock element.

В качестве другого примера после сохранения минимального количества аффинных исходных векторов для аффинного соседнего блока вектор движения аффинного подблока может быть получен с использованием сохраненных аффинных исходных векторов.As another example, after storing a minimum number of affine source vectors for an affine neighbor block, the motion vector of the affine sub-block can be obtained using the stored affine source vectors.

В уравнениях 9 и 10 показан пример получения вектора движения аффинного подблока с использованием аффинных исходных векторов аффинного соседнего блока.Equations 9 and 10 show an example of obtaining the motion vector of an affine subblock using the affine source vectors of an affine neighboring block.

[Уравнение 9][Equation 9]

[Уравнение 10][Equation 10]

В уравнениях 9 и 10 (nv4x, nv4y) обозначает вектор движения аффинного подблока для нижней левой контрольной точки и (nv5x, nv5y) обозначает вектор движения аффинного подблока для нижней правой контрольной точки. Поскольку вектор движения аффинного подблока и аффинный исходный вектор контрольной точки установлены равными, (nv4x, nv4y) может быть заменен аффинным исходным вектором (nv2x, nv2y) для нижней левой контрольной точки или (nv5x, nv5y) может быть заменен аффинным исходным вектором (nv3x, nv3y) для нижней правой контрольной точки.In Equations 9 and 10, (nv 4x , nv 4y ) denotes the affine subblock motion vector for the bottom left control point and (nv 5x , nv 5y ) denotes the affine subblock motion vector for the bottom right control point. Since the motion vector of the affine subblock and the affine source vector of the control point are set equal, (nv 4x , nv 4y ) can be replaced by the affine source vector (nv 2x , nv 2y ) for the bottom left control point or (nv 5x , nv 5y ) can be replaced affine source vector (nv 3x , nv 3y ) for the lower right control point.

(xn4, yn4) обозначает положение опорного отсчета для нижнего левого подблока. Альтернативно вместо него может использоваться центральное положение нижнего левого подблока или положение нижней левой контрольной точки. (xn5, yn5) обозначает положение опорного отсчета для нижнего правого подблока. Альтернативно вместо него может использоваться центральное положение нижнего правого подблока или положение нижней правой контрольной точки.(x n4 , y n4 ) denotes the position of the reference sample for the lower left subblock. Alternatively, the center position of the bottom left subblock or the position of the bottom left control point may be used instead. (x n5 , y n5 ) denotes the position of the reference sample for the lower right subblock. Alternatively, the center position of the lower right subblock or the position of the lower right control point may be used instead.

Уравнения 9 и 10 могут применяться, когда текущий блок не находится в контакте с границей элемента кодового дерева. Когда текущий блок находится в контакте с верхней границей элемента кодового дерева, вместо использования уравнений 9 и 10, вектор поступательного движения аффинного подблока, определенный на основании нижнего левого опорного отсчета, может быть установлен как третий аффинный исходный вектор, и вектор поступательного движения аффинного подблока, определенный на основании нижнего правого опорного отсчета, может быть установлен как четвертый аффинный исходный вектор.Equations 9 and 10 can be applied when the current block is not in contact with a code tree element boundary. When the current block is in contact with the upper boundary of a code tree element, instead of using Equations 9 and 10, the translation vector of the affine subblock determined based on the lower left reference sample can be set as the third affine source vector, and the translation vector of the affine subblock. determined based on the lower right reference sample, can be set as the fourth affine source vector.

В уравнениях 7 и 8 (xn3-xn2) обозначает ширину между нижней левой контрольной точкой и нижней правой контрольной точкой. Как описано выше, xn3 может быть заменено положением xn5 нижнего правого опорного отсчета и xn2 может быть заменено положение xn4 нижнего левого опорного отсчета. Далее (xn3-xn2) или значение, полученное за счет замены положений в вышеупомянутом уравнении положениями опорных отсчетов (например, (xn5-xn4)), определяется как переменная Wseed, и переменная называется шириной исходного подвектора.In Equations 7 and 8, (x n3 -x n2 ) denotes the width between the bottom left control point and the bottom right control point. As described above, x n3 may be replaced by the lower right reference position x n5 and x n2 may be replaced by the lower left reference position x n4 . Next, (x n3 -x n2 ) or the value obtained by replacing the positions in the above equation with the positions of the reference samples (for example, (x n5 -x n4 )) is defined as the variable W seed , and the variable is called the width of the original subvector.

Согласно положениям опорных отсчетов может возникнуть случай, когда ширина исходного подвектора не является степенным рядом числа 2 (например, 2n). Например, когда нижний левый отсчет нижнего левого подблока установлен как нижний левый опорный отсчет и нижний правый отсчет нижнего правого подблока установлен как нижний правый опорный отсчет, ширина исходного подвектора не кратна числу 2. Как описано выше, когда ширина исходного подвектора не является степенным рядом числа 2, ширина исходного подвектора может быть преобразована в степенной ряд числа 2. Преобразование может включать добавление смещения к ширине исходного подвектора или вычитание смещения из нее, или использование положения отсчета, смежного с опорным отсчетом, вместо положения опорного отсчета. Например, преобразованная ширина исходного подвектора может быть получена за счет добавления 1 к ширине между нижним левым опорным отсчетом и нижним правым опорным отсчетом. Альтернативно ширина между соседним опорным отсчетом, смежным с правой стороной нижнего правого опорного отсчета, и нижним левым опорным отсчетом может быть установлена как преобразованная ширина исходного подвектора. После этого аффинный исходный вектор текущего блока может быть получен за счет применения преобразованной ширины исходного подвектора к уравнениям 7 и 8.According to the positions of the reference samples, a case may arise when the width of the original subvector is not a power series of the number 2 (for example, 2 n ). For example, when the lower left sample of the lower left subblock is set as the lower left reference sample and the lower right sample of the lower right subblock is set as the lower right reference sample, the width of the original subvector is not a multiple of 2. As described above, when the width of the original subvector is not a power series of the number 2, the width of the original subvector may be converted to a power series of 2. The transformation may involve adding an offset to or subtracting an offset from the width of the original subvector, or using the position of a sample adjacent to the reference sample instead of the position of the reference sample. For example, the transformed width of the original subvector can be obtained by adding 1 to the width between the lower left reference sample and the lower right reference sample. Alternatively, the width between an adjacent reference sample adjacent to the right side of the lower right reference sample and the lower left reference sample may be set as the transformed width of the original subvector. The affine source vector of the current block can then be obtained by applying the transformed width of the source subvector to Equations 7 and 8.

Операция деления, включенная в уравнения 7 и 8, может быть изменена на операцию сдвига. Операция сдвига может быть выполнена на основании значения, полученного из преобразованной ширины исходного подвектора (т.е. значения, выраженного как степенной ряд числа 2).The division operation included in Equations 7 and 8 can be changed to a shift operation. The shift operation can be performed based on the value obtained from the transformed width of the original subvector (ie, the value expressed as a power series of 2).

Когда опорный отсчет, используемый для определения аффинного подблока, не принадлежит к аффинному соседнему блоку, аффинный исходный вектор аффинного соседнего блока может быть получен на основании отсчета, смежного с опорным отсчетом, из отсчетов, включенных в аффинный соседний блок. В частности, вектор поступательного движения подблока, содержащего отсчет, смежный с опорным отсчетом в аффинном соседнем блоке (далее называемый соседним опорным отсчетом), может быть установлен как аффинный исходный вектор аффинного соседнего блока. Таким образом, способ получения аффинного исходного вектора с использованием соседнего опорного отсчета может быть определен как модифицированный способ получения аффинного вектора слияния.When the reference sample used to determine the affine subblock does not belong to the affine neighbor block, the affine source vector of the affine neighbor block can be obtained based on the sample adjacent to the reference sample from the samples included in the affine neighbor block. Specifically, the translation vector of a subblock containing a sample adjacent to a reference sample in an affine neighbor block (hereinafter referred to as a neighbor reference sample) can be set as the affine source vector of the affine neighbor block. Thus, a method for obtaining an affine source vector using a neighboring reference sample can be defined as a modified method for obtaining an affine fusion vector.

На фиг. 17 представлен вид, показывающий пример применения модифицированного способа получения аффинного вектора слияния.In fig. 17 is a view showing an application example of the modified method for producing an affinity fusion vector.

Когда нижний правый опорный отсчет (xn5, yn5) аффинного соседнего блока E не принадлежит к аффинному соседнему блоку, аффинный исходный вектор может быть получен на основании отсчета (xn5-1, yn5), смежного с левой стороной нижнего правого опорного отсчета, из отсчетов, включенных в аффинный соседний блок. В частности, вектор поступательного движения подблока, содержащего соседний опорный отсчет (xn5-1, yn5), может быть установлен как аффинный исходный вектор нижней правой контрольной точки.When the lower right reference sample (x n5 , y n5 ) of the affine neighbor block E does not belong to the affine neighbor block, the affine source vector can be obtained based on the sample (x n5 -1, y n5 ) adjacent to the left side of the lower right reference sample , from the samples included in the affine neighboring block. In particular, the translation vector of the subblock containing the adjacent reference sample (x n5 -1, y n5 ) can be set as the affine source vector of the lower right reference point.

В примере, показанном на фиг. 17, показано, что отсчет, смежный с правой стороной верхнего правого отсчета нижнего правого подблока, представляет собой нижний правый опорный отсчет. Даже когда отсчет, смежный с правой стороной нижнего правого отсчета нижнего правого подблока, или отсчет, смежный с правой стороной среднего правого отсчета нижнего правого подблока, установлен как нижний правый опорный отсчет, аффинный исходный вектор может быть получен на основании отсчета, смежного с левой стороной соседнего опорного отсчета.In the example shown in FIG. 17, it is shown that the sample adjacent to the right side of the upper right sample of the lower right sub-block is the lower right reference sample. Even when a sample adjacent to the right side of the lower right sample of the lower right sub-block, or a sample adjacent to the right side of the middle right sample of the lower right sub-block, is set as the lower right reference sample, an affine source vector can be obtained based on the sample adjacent to the left side adjacent reference reading.

Кроме того, даже когда нижний левый опорный отсчет не принадлежит к аффинному соседнему блоку, согласно варианту осуществления, описанному выше, аффинный исходный вектор может быть получен на основании отсчета, смежного с правой стороной нижнего левого опорного отсчета.Moreover, even when the lower left reference sample does not belong to an affine neighbor block, according to the embodiment described above, an affine source vector can be obtained based on a sample adjacent to the right side of the lower left reference sample.

Поскольку положение опорного отсчета и подблока для получения аффинного исходного вектора установлены по-разному, ширина исходного подвектора может быть установлена равной степенному ряду числа 2.Since the position of the reference sample and the sub-block to obtain the affine source vector are set differently, the width of the source sub-vector can be set to a power series of 2.

Кандидат на слияние, кандидат на предсказание аффинного исходного вектора или аффинный исходный вектор текущего блока может быть получен с использованием соседнего блока, который не был кодирован в аффинном режиме, осуществляемом между изображениями, поблизости от текущего блока. В частности, блоки, не кодированные в аффинном режиме, осуществляемом между изображениями, могут быть скомбинированы, и их комбинация может быть установлена как кандидат на слияние или кандидат на предсказание аффинного исходного вектора. Например, комбинация по меньшей мере одного из вектора движения любого из соседних блоков, смежных с верхним левым углом текущего блока, вектора движения любого из соседних блоков, смежных с верхним правым углом текущего блока, и вектора движения любого из соседних блоков, смежных с нижним левым углом текущего блока, может быть установлена как кандидат на слияние или кандидат на предсказание аффинного исходного вектора. В этом случае вектор движения соседнего блока, смежного с верхним левым углом, вектор движения соседнего блока, смежного с верхним правым углом, и вектор движения соседнего блока, смежного с нижним левым углом, может быть установлен как первый аффинный исходный вектор для верхней левой контрольной точки, второй аффинный исходный вектор для верхней правой контрольной точки и третий аффинный исходный вектор для нижней левой контрольной точки соответственно.A fusion candidate, an affine source vector prediction candidate, or an affine source vector of the current block can be obtained using a neighboring block that has not been encoded in an inter-image affine mode in the vicinity of the current block. In particular, blocks not encoded in the inter-image affine mode can be combined, and their combination can be set as a fusion candidate or an affine source vector prediction candidate. For example, a combination of at least one of the motion vector of any of the adjacent blocks adjacent to the top left corner of the current block, the motion vector of any of the adjacent blocks adjacent to the top right corner of the current block, and the motion vector of any of the adjacent blocks adjacent to the bottom left corner of the current block, can be set as a fusion candidate or an affine source vector prediction candidate. In this case, the motion vector of the adjacent block adjacent to the upper left corner, the motion vector of the adjacent block adjacent to the upper right corner, and the motion vector of the adjacent block adjacent to the lower left corner can be set as the first affine source vector for the upper left control point , the second affine source vector for the top right control point and the third affine source vector for the bottom left control point, respectively.

Альтернативно кандидат на слияние, кандидат на предсказание аффинного исходного вектора или аффинный исходный вектор текущего блока может быть получен с использованием соседнего блока, который не кодирован в аффинном режиме, осуществляемом между изображениями, в модифицированном способе получения аффинного вектора слияния, который описан выше. Далее соседний блок, который не кодирован в аффинном режиме, осуществляемом между изображениями, будет называться неаффинным соседним блоком.Alternatively, a fusion candidate, an affine source vector prediction candidate, or an affine source vector of the current block can be obtained using a neighboring block that is not encoded in the inter-image affine mode, in a modified method for obtaining the affine merge vector that is described above. In the following, a neighboring block that is not encoded in the affine mode carried out between images will be called a non-affine neighboring block.

На фиг. 18 представлен вид, показывающий пример получения аффинного исходного вектора текущего блока на основании неаффинного соседнего блока.In fig. 18 is a view showing an example of obtaining an affine source vector of a current block based on a non-affine neighboring block.

В примере, показанном на фиг. 18, предполагается, что все соседние блоки, смежные с текущим блоком, представляют собой неаффинные соседние блоки.In the example shown in FIG. 18, all neighbor blocks adjacent to the current block are assumed to be non-affine neighbor blocks.

Когда желательно получить аффинный исходный вектор текущего блока из неаффинного соседнего блока A из соседних блоков, смежных с текущим блоком, нижний левый опорный отсчет и нижний правый опорный отсчет могут быть установлены для блока A. Например, отсчет, смежный с левой стороной нижнего левого отсчета блока A, может быть установлен как нижний левый опорный отсчет, и нижний правый отсчет блока A может быть установлен как нижний правый опорный отсчет. Поскольку нижний левый опорный отсчет находится за пределами блока A, вектор движения подблока, содержащего отсчет, смежный с правой стороной нижнего левого опорного отсчета, может быть установлен как третий аффинный исходный вектор блока A. Кроме того, вектор движения подблока, содержащего нижний правый опорный отсчет, может быть установлен как четвертый аффинный исходный вектор блока A. После этого первый аффинный исходный вектор и второй аффинный исходный вектор для текущего блока может быть получен из блока A на основании уравнений 9 и 10.When it is desired to obtain an affine source vector of the current block from a non-affine neighbor block A from neighboring blocks adjacent to the current block, a lower left reference sample and a lower right reference sample can be set for block A. For example, a sample adjacent to the left side of the block's lower left sample A may be set as the lower left reference count, and the lower right sample of block A may be set as the lower right reference count. Since the lower left reference sample is outside of block A, the motion vector of the subblock containing the sample adjacent to the right side of the lower left reference sample can be set as the third affine source vector of block A. Additionally, the motion vector of the subblock containing the lower right reference sample , can be set as the fourth affine source vector of block A. Then, the first affine source vector and the second affine source vector for the current block can be obtained from block A based on Equations 9 and 10.

Способ получения аффинного исходного вектора из неаффинного соседнего блока может использоваться только при выполнении предсказания с компенсацией движения для неаффинного соседнего блока посредством элемента подблока. В данном случае метод предсказания для выполнения предсказания с компенсацией движения посредством элемента подблока может включать по меньшей мере одно из STMVP, ATMVP, двунаправленного оптического потока (BIO), компенсации движения с перекрытиями блоков (OBMC) и уточнения вектора движения на стороне декодера (DMVR).The method of obtaining an affine source vector from a non-affine neighbor block can only be used when performing motion-compensated prediction on a non-affine neighbor block by a sub-block element. Here, the prediction method for performing motion compensation prediction by a subblock element may include at least one of STMVP, ATMVP, Bidirectional Optical Flow (BIO), Overlapping Block Motion Compensation (OBMC), and Decoder Side Motion Vector Refinement (DMVR) .

В варианте осуществления, описанном выше, было описано, что, когда верхняя граница текущего блока находится в контакте с границей элемента кодового дерева, то кандидата на слияние, кандидата на предсказание аффинного исходного вектора или аффинный исходный вектор текущего блока получают с использованием третьего аффинного исходного вектора для нижней левой контрольной точки и четвертого аффинного исходного вектора для нижней правой контрольной точки аффинного соседнего блока, расположенного сверху текущего блока.In the embodiment described above, it has been described that when the upper boundary of the current block is in contact with the boundary of a code tree element, a merge candidate, an affine source vector prediction candidate, or an affine source vector of the current block is obtained using the third affine source vector for the bottom left control point and a fourth affine source vector for the bottom right control point of the affine neighbor block located on top of the current block.

В качестве другого примера, когда верхняя граница текущего блока находится в контакте с границей элемента кодового дерева, и соседний блок, расположенный сверху текущего блока, принадлежит к элементу кодового дерева, отличающемуся от элемента кодового дерева текущего блока, кандидат на слияние, кандидат на предсказание аффинного исходного вектора или аффинный исходный вектор текущего блока может быть получен с использованием соседнего блока, ближайшего к соседнему блоку из блоков, включенных в элемент кодового дерева, к которому принадлежит текущий блок, вместо соседнего блока.As another example, when the top boundary of the current block is in contact with the boundary of a code tree element, and a neighboring block located on top of the current block belongs to a code tree element different from the code tree element of the current block, a merge candidate, an affine prediction candidate source vector or an affine source vector of the current block can be obtained using the neighbor block closest to the neighbor block of the blocks included in the code tree element to which the current block belongs, instead of the neighbor block.

В примере, показанном на фиг. 19, показано, что текущий блок находится в контакте с верхней границей элемента кодового дерева, и блоки B, C и E, расположенные сверху текущего блока, принадлежат к элементу кодового дерева, отличающемуся от элемента кодового дерева текущего блока. Соответственно, вместо использования блока E, аффинный исходный вектор текущего блока может быть получен с использованием блока F, смежного с блоком E, из блоков, включенных в элемент кодового дерева, к которому принадлежит текущий блок.In the example shown in FIG. 19, it is shown that the current block is in contact with the upper boundary of the code tree element, and blocks B, C and E located on top of the current block belong to a code tree element different from the code tree element of the current block. Accordingly, instead of using block E, the affine source vector of the current block can be obtained using block F adjacent to block E from the blocks included in the code tree element to which the current block belongs.

Для предсказания с компенсацией движения текущего блока могут использоваться аффинные исходные векторы множества блоков. Например, можно выбрать множество кандидатов на слияние из списка кандидатов на слияние и получить аффинный исходный вектор или вектор подблока для текущего блока на основании аффинных исходных векторов выбранных кандидатов на слияние. Кодирование/декодирование текущего блока с использованием аффинных исходных векторов множества блоков может называться способом кодирования с множественным аффинным слиянием.For motion-compensated prediction of the current block, affine source vectors of multiple blocks can be used. For example, you can select a plurality of merge candidates from a list of merge candidates and obtain an affine source vector or a sub-block vector for the current block based on the affine source vectors of the selected merge candidates. Encoding/decoding a current block using affine source vectors of multiple blocks may be called a multiple affine fusion encoding method.

Информация, указывающая применяется ли способ кодирования с множественным аффинным слиянием к текущему блоку, может быть кодирована и передана посредством битового потока. Альтернативно, применять ли способ кодирования с множественным аффинным слиянием к текущему блоку, может быть определено на основании по меньшей мере одного из ряда аффинных соседних блоков из соседних блоков, смежных с текущим блоком, ряда кандидатов на слияние, включенных в список кандидатов на слияние, и модели аффинного движения текущего блока.Information indicating whether a multiple affine merge encoding method is applied to the current block may be encoded and transmitted via a bit stream. Alternatively, whether to apply a multiple affine merge encoding method to the current block may be determined based on at least one of a number of affine neighbor blocks from neighboring blocks adjacent to the current block, a number of merge candidates included in the merge candidate list, and models of affine movement of the current block.

На фиг. 20 и 21 представлены виды, показывающие последовательность способа предсказания с компенсацией движения, в котором используется множество кандидатов на слияние.In fig. 20 and 21 are views showing the flow of a motion compensation prediction method in which a plurality of fusion candidates are used.

На фиг. 20 представлен вид, показывающий пример получения аффинных исходных векторов текущего блока с использованием аффинных исходных векторов множества кандидатов на слияние. На фиг. 21 представлен вид, показывающий пример получения вектора движения каждого подблока с использованием аффинных исходных векторов множества кандидатов на слияние.In fig. 20 is a view showing an example of obtaining affine source vectors of a current block using the affine source vectors of a plurality of merge candidates. In fig. 21 is a view showing an example of obtaining the motion vector of each sub-block using affine source vectors of a plurality of merge candidates.

Аффинные исходные векторы текущего блока могут быть сгенерированы на основании операции суммирования, нахождения разности, усреднения или взвешенного суммирования аффинных исходных векторов двух кандидатов на слияние.The affine source vectors of the current block can be generated based on the summation, difference, averaging, or weighted summation of the affine source vectors of two merge candidates.

В уравнениях 11 и 12 показан пример получения аффинного исходного вектора текущего блока посредством суммирования аффинных исходных векторов кандидатов на слияние.Equations 11 and 12 show an example of obtaining the affine source vector of the current block by summing the affine source vectors of merge candidates.

[Уравнение 11][Equation 11]

[Уравнение 12][Equation 12]

В уравнениях 11 и 12 sv4 обозначает первый аффинный исходный вектор текущего блока, sv0 обозначает первый аффинный исходный вектор первого кандидата на слияние и sv2 обозначает первый аффинный исходный вектор второго кандидата на слияние. Кроме того, sv5 обозначает второй аффинный исходный вектор текущего блока, sv1 обозначает второй аффинный исходный вектор первого кандидата на слияние и sv3 обозначает второй аффинный исходный вектор второго кандидата на слияние.In Equations 11 and 12, sv 4 denotes the first affine source vector of the current block, sv 0 denotes the first affine source vector of the first merge candidate, and sv 2 denotes the first affine source vector of the second merge candidate. In addition, sv 5 denotes the second affine source vector of the current block, sv 1 denotes the second affine source vector of the first merge candidate, and sv 3 denotes the second affine source vector of the second merge candidate.

Кроме того, в уравнениях 13 и 14 показан пример получения аффинного исходного вектора текущего блока посредством операции взвешенного суммирования аффинных исходных векторов кандидатов на слияние.In addition, Equations 13 and 14 show an example of obtaining the affine source vector of the current block through a weighted summation operation of the affine source vectors of merge candidates.

[Уравнение 13][Equation 13]

[Уравнение 14][Equation 14]

В качестве другого примера первый вектор движения подблока и второй вектор движения подблока могут быть сгенерированы для каждого подблока в текущем блоке на основании аффинных исходных векторов первого кандидата на слияние и аффинных исходных векторов второго кандидата на слияние. После этого конечный вектор движения подблока может быть сгенерирован на основании операции суммирования, нахождения разности, усреднения или взвешенного суммирования первого вектора движения подблока и второго вектора движения подблока.As another example, a first sub-block motion vector and a second sub-block motion vector may be generated for each sub-block in the current block based on the affine source vectors of the first merge candidate and the affine source vectors of the second merge candidate. Thereafter, the final subblock motion vector may be generated based on a summation, difference, averaging, or weighted summation operation of the first subblock motion vector and the second subblock motion vector.

В уравнении 15 показан пример получения конечного вектора движения подблока посредством суммирования первого вектора движения подблока и второго вектора движения подблока.Equation 15 shows an example of obtaining a final sub-block motion vector by summing the first sub-block motion vector and the second sub-block motion vector.

[Уравнение 15][Equation 15]

В уравнении 15 V0 обозначает первый вектор движения подблока, V1 обозначает второй вектор движения подблока и V2 обозначает конечный вектор движения подблока.In Equation 15, V 0 denotes the first motion vector of the sub-block, V 1 denotes the second motion vector of the sub-block, and V 2 denotes the final motion vector of the sub-block.

Кроме того, в уравнении 16 показан пример получения конечного вектора движения подблока посредством операции взвешенного суммирования первого вектора движения подблока и второго вектора движения подблока.In addition, Equation 16 shows an example of obtaining a final sub-block motion vector through a weighted summation operation of the first sub-block motion vector and the second sub-block motion vector.

[Уравнение 16][Equation 16]

Внутреннее предсказание предназначено для предсказания текущего блока с использованием восстановленных отсчетов, которые были кодированы/декодированы вокруг текущего блока. В этом случае отсчеты, восстановленные до применения фильтра в контуре, могут использоваться для внутреннего предсказания текущего блока.Intra prediction is designed to predict the current block using the reconstructed samples that have been encoded/decoded around the current block. In this case, the samples reconstructed before applying the filter in the loop can be used for intra-prediction of the current block.

Метод внутреннего предсказания включает внутреннее предсказание на основе матрицы и общее внутреннее предсказание, учитывающее направленность относительно соседних восстановленных отсчетов. Информация, указывающая метод внутреннего предсказания текущего блока, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг. Альтернативно метод внутреннего предсказания текущего блока может быть определен на основании по меньшей мере одного из местоположения, размера и формы текущего блока или на основании метода внутреннего предсказания соседнего блока. Например, когда текущий блок находится на границе изображения, может быть установлено, что нет необходимости применять внутреннее предсказание на основе матрицы к текущему блоку.The intra prediction method includes matrix-based intra prediction and general intra prediction taking into account directionality relative to neighboring reconstructed samples. Information indicating the intra prediction method of the current block may be transmitted via a bitstream. The information may be a 1-bit flag. Alternatively, the intra prediction method of the current block may be determined based on at least one of the location, size and shape of the current block or based on the intra prediction method of the neighboring block. For example, when the current block is on an image boundary, it may be determined that there is no need to apply matrix-based intra prediction to the current block.

Внутреннее предсказание, представляющее собой внутреннее предсказание на основе матрицы, представляет собой способ получения блока предсказания текущего блока кодером и декодером на основании матричного произведения между ранее сохраненной матрицей и восстановленными отсчетами вокруг текущего блока. Информация для указания любой из множества ранее сохраненных матриц может передаваться посредством битового потока. Декодер может определять матрицу для внутреннего предсказания текущего блока на основании информации и размера текущего блока.Intra prediction, which is matrix-based intra prediction, is a method of obtaining a block prediction of a current block by an encoder and decoder based on a matrix product between a previously stored matrix and reconstructed samples around the current block. Information to indicate any of a plurality of previously stored matrices may be transmitted via a bit stream. The decoder may determine a matrix for intra prediction of the current block based on the information and size of the current block.

Общее внутреннее предсказание представляет собой способ получения блока предсказания для текущего блока на основании режима внутреннего предсказания, не основанного на информации об углах, или режима внутреннего предсказания, основанного на информации об углах. Далее процесс выполнения внутреннего предсказания на основании общего внутреннего предсказания будет описан более подробно со ссылкой на графические материалы.General intra prediction is a method of obtaining a prediction block for a current block based on an intra prediction mode not based on angle information or an intra prediction mode based on angle information. Next, the process of performing intra prediction based on the general intra prediction will be described in more detail with reference to drawings.

На фиг. 22 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.In fig. 22 is a flowchart illustrating an intra prediction method according to one embodiment of the present invention.

Может быть определена (S2201) линия опорных отсчетов текущего блока. Линия опорных отсчетов означает набор опорных отсчетов, включенных в k-ю линию от верхней и/или левой стороны текущего блока. Опорные отсчеты могут быть получены из восстановленных отсчетов, которые были кодированы/декодированы вокруг текущего блока.The reference sample line of the current block can be determined (S2201). A reference sample line means a set of reference samples included in the kth line from the top and/or left side of the current block. The reference samples can be obtained from the reconstructed samples that have been encoded/decoded around the current block.

Информация об индексах для идентификации линии опорных отсчетов текущего блока из множества линий опорных отсчетов может быть передана посредством битового потока. Множество линий опорных отсчетов может содержать по меньшей мере одно из первой линии, второй линии, третьей линии и четвертой линии сверху и/или слева от текущего блока. В таблице 1 показаны индексы, присвоенные линиям опорных отсчетов, соответственно. В таблице 1 предполагается, что первая линия, вторая линия и четвертая линия используются в качестве кандидатов линии опорных отсчетов.Index information for identifying a reference sample line of a current block from a plurality of reference sample lines may be transmitted by a bit stream. The plurality of reference sample lines may comprise at least one of a first line, a second line, a third line, and a fourth line from above and/or to the left of the current block. Table 1 shows the indices assigned to the reference sample lines, respectively. Table 1 assumes that the first line, second line, and fourth line are used as reference sample line candidates.

[Таблица 1] [ Table 1 ] ИндексIndex Линии опорных отсчетовReference lines 00 Первая линия опорных отсчетовFirst reference line 11 Вторая линия опорных отсчетовSecond reference line 22 Четвертая линия опорных отсчетовFourth reference line

Линия опорных отсчетов текущего блока может быть определена на основании по меньшей мере одного из местоположения, размера и формы текущего блока или на основании режима кодирования с предсказанием соседнего блока. Например, когда текущий блок находится в контакте с границей изображения, тайла, слайса или элемента кодового дерева, первая линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока.The reference sample line of the current block may be determined based on at least one of the location, size and shape of the current block or based on the predictive encoding mode of a neighboring block. For example, when the current block is in contact with the boundary of an image, tile, slice, or code tree element, the first reference sample line may be defined as the current block's reference sample line.

Линия опорных отсчетов может включать верхние опорные отсчеты, расположенные сверху от текущего блока, и левые опорные отсчеты, расположенные слева от текущего блока. Верхние опорные отсчеты и левые опорные отсчеты могут быть получены из восстановленных отсчетов вокруг текущего блока. Восстановленные отсчеты могут быть в состоянии до применения фильтра в контуре.The line of reference samples may include top reference samples located above the current block and left reference samples located to the left of the current block. The top reference samples and left reference samples can be obtained from the reconstructed samples around the current block. The reconstructed samples may be in the state before applying the filter in the loop.

На фиг. 23 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.In fig. 23 is a view showing reference samples included in each reference sample line.

Согласно режиму внутреннего предсказания текущего блока отсчет предсказания может быть получен путем использования по меньшей мере одного из опорных отсчетов, принадлежащих к линии опорных отсчетов.According to the intra prediction mode of the current block, a prediction sample can be obtained by using at least one of the reference samples belonging to the reference sample line.

Далее может быть определен (S2202) режим внутреннего предсказания текущего блока. Что касается режима внутреннего предсказания текущего блока, по меньшей мере один из режима внутреннего предсказания, не основанного на информации об углах, и режима внутреннего предсказания, основанного на информации об углах, может быть определен как режим внутреннего предсказания текущего блока. Режим внутреннего предсказания, не основанный на информации об углах, включает планарный режим и режим DC, а режим внутреннего предсказания, основанный на информации об углах, включает 33 или 65 режимов между диагональным направлением вниз и влево и диагональным направлением вверх и вправо.Next, the intra prediction mode of the current block can be determined (S2202). Regarding the intra prediction mode of the current block, at least one of the intra prediction mode not based on angle information and the intra prediction mode based on angle information may be defined as the intra prediction mode of the current block. The intra prediction mode not based on angle information includes planar mode and DC mode, and the intra prediction mode based on angle information includes 33 or 65 modes between the down-left diagonal direction and the up-right diagonal direction.

На фиг. 24 представлен вид, показывающий режимы внутреннего предсказания.In fig. 24 is a view showing intra prediction modes.

На фиг. 24(a) показаны 35 режимов внутреннего предсказания, и на фиг. 24(b) показаны 67 режимов внутреннего предсказания.In fig. 24(a) shows 35 intra prediction modes, and FIG. 24(b) shows 67 intra prediction modes.

Может быть определено большее или меньшее количество режимов внутреннего предсказания, чем показано на фиг. 24.More or fewer intra prediction modes may be defined than those shown in FIG. 24.

Наиболее вероятный режим (MPM) может быть установлен на основании режима внутреннего предсказания соседнего блока, смежного с текущим блоком. В данном случае соседний блок может включать левый соседний блок, смежный с левой стороной текущего блока, и верхний соседний блок, смежный с верхней стороной текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (0, 0), левый соседний блок может содержать отсчет в положении (-1, 0), (-1, H-1) или (-1, (H-1)/2). В данном случае H обозначает высоту текущего блока. Верхний соседний блок может содержать отсчет в положении (0, -1), (W-1, -1) или ((W-1)/2, -1). В данном случае W обозначает ширину текущего блока.The most probable mode (MPM) can be set based on the intra prediction mode of a neighboring block adjacent to the current block. Here, the neighbor block may include a left neighbor block adjacent to the left side of the current block and an upper neighbor block adjacent to the top side of the current block. When the coordinates of the top left sample of the current block are (0, 0), the left adjacent block may contain a sample at position (-1, 0), (-1, H-1) or (-1, (H-1)/2 ). In this case, H denotes the height of the current block. The top adjacent block may contain a sample at position (0, -1), (W-1, -1) or ((W-1)/2, -1). In this case, W denotes the width of the current block.

Когда соседний блок кодирован с помощью нормального внутреннего предсказания, MPM может быть получен на основании режима внутреннего предсказания соседнего блока. В частности, режим внутреннего предсказания левого соседнего блока может быть установлен как переменная candIntraPredModeA, а режим внутреннего предсказания верхнего соседнего блока может быть установлен как переменная candIntraPredModeB.When a neighboring block is encoded using normal intra prediction, the MPM can be obtained based on the intra prediction mode of the neighboring block. Specifically, the intra prediction mode of the left neighbor block can be set as the variable candIntraPredModeA, and the intra prediction mode of the top neighbor block can be set as the variable candIntraPredModeB.

В этом случае, когда соседний блок является недоступным (например, когда соседний блок еще не кодирован/декодирован или когда положение соседнего блока находится за границей изображения), когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, когда соседний блок кодирован с помощью предсказания, осуществляемого между изображениями, или когда соседний блок включен в элемент кодового дерева, отличный от текущего блока, переменная candIntraPredModeX (в данном случае X представляет собой A или B), полученная на основании режима внутреннего предсказания соседнего блока, может быть установлена как режим по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении.In this case, when a neighboring block is unavailable (for example, when a neighboring block is not yet encoded/decoded or when the position of a neighboring block is outside the image boundary), when a neighboring block is encoded using matrix-based intra prediction, when a neighboring block is encoded using prediction between pictures, or when a neighboring block is included in a code tree element other than the current block, the variable candIntraPredModeX (in this case X represents A or B) derived from the intra prediction mode of the neighboring block can be set as the default mode . Here, the default mode may comprise at least one of a planar mode, a DC mode, a vertical direction mode, and a horizontal direction mode.

Альтернативно, когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, режим внутреннего предсказания, соответствующий индексному значению для указания любой из матриц, может быть установлен равным candIntraPredModeX. Для этого в кодере и декодере может быть предварительно сохранена таблица поиска, показывающая взаимоотношение между индексными значениями для указания матрицы и режимов внутреннего предсказания.Alternatively, when a neighboring block is encoded using matrix-based intra prediction, the intra prediction mode corresponding to the index value for indicating any of the matrices may be set to candIntraPredModeX. To this end, a lookup table showing the relationship between index values for specifying the matrix and intra prediction modes may be previously stored in the encoder and decoder.

MPM могут быть получены на основании переменной candIntraPredModeA и переменной candIntraPredModeB. Количество MPM, включенных в список MPM, может быть заранее установлено в кодере и декодере. Количество MPM, включенных в список MPM, может быть задано в кодере и декодере. Например, количество MPM может быть равно 3, 4, 5 или 6. Альтернативно информация, указывающая количество MPM, может быть передана посредством битового потока. Альтернативно количество MPM может быть определено на основании по меньшей мере одного из режима кодирования с предсказанием соседнего блока и размера и формы текущего блока.MPMs can be obtained based on the variable candIntraPredModeA and the variable candIntraPredModeB. The number of MPMs included in the MPM list can be preset in the encoder and decoder. The number of MPMs included in the MPM list can be set in the encoder and decoder. For example, the number of MPMs may be 3, 4, 5, or 6. Alternatively, information indicating the number of MPMs may be transmitted via a bit stream. Alternatively, the number of MPMs may be determined based on at least one of a neighboring block predictive coding mode and the size and shape of the current block.

В вариантах осуществления, описанных ниже, предполагается, что количество MPM равно трем, и три MPM называются MPM[0], MPM[1] и MPM[2]. Когда количество MPM более трех, MPM могут быть настроены так, чтобы включать три MPM, описанных в вариантах осуществления, описанных ниже.In the embodiments described below, the number of MPMs is assumed to be three, and the three MPMs are called MPM[0], MPM[1], and MPM[2]. When the number of MPMs is more than three, the MPMs can be configured to include three MPMs described in the embodiments described below.

Когда candIntraPredA и candIntraPredB одинаковы, и candIntraPredA представляет собой планарный режим или режим DC, MPM[0] и MPM[1] могут быть установлены как планарный режим и режим DC соответственно. MPM[2] может быть установлен как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Режим внутреннего предсказания в диагональном направлении может представлять собой режим внутреннего предсказания в диагональном направлении вниз и влево, режим внутреннего предсказания в направлении вверх и влево или режим внутреннего предсказания в направлении вверх и вправо.When candIntraPredA and candIntraPredB are the same, and candIntraPredA is planar mode or DC mode, MPM[0] and MPM[1] can be set to planar mode and DC mode, respectively. MPM[2] can be set as a vertical direction intra prediction mode, a horizontal direction intra prediction mode, or a diagonal direction intra prediction mode. The diagonal direction intra prediction mode may be a down-left diagonal intra prediction mode, an up-left intra prediction mode, or an up-right intra prediction mode.

Когда candIntraPredA и candIntraPredB являются одинаковыми, и candIntraPredA представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM[0] может быть установлен таким же, как candIntraPredA. MPM[1] и MPM[2] могут быть установлены как режим внутреннего предсказания, аналогичный candIntraPredA, соответственно. Режим внутреннего предсказания, аналогичный candIntraPredA, может представлять собой режим внутреннего предсказания, в котором разница между candIntraPredA и индексом составляет ±1 или ±2. Операция по модулю (%) и смещение могут быть использованы для получения режима внутреннего предсказания, подобного candIntraPredA.When candIntraPredA and candIntraPredB are the same, and candIntraPredA is an intra prediction mode based on angle information, MPM[0] can be set to the same as candIntraPredA. MPM[1] and MPM[2] can be set as intra prediction mode similar to candIntraPredA, respectively. An intra prediction mode similar to candIntraPredA may be an intra prediction mode in which the difference between candIntraPredA and the index is ±1 or ±2. The modulo (%) and offset operation can be used to obtain an intra prediction mode similar to candIntraPredA.

Когда candIntraPredA и candIntraPredB различаются, MPM[0] может быть установлен таким же, как candIntraPredA, а MPM[1] может быть установлен таким же, как candIntraPredB. В этом случае, когда как candIntraPredA, так и candIntraPredB являются режимом внутреннего предсказания, не основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Альтернативно, когда по меньшей мере один из candIntraPredA и candIntraPredB является режимом внутреннего предсказания, основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания, полученный путем добавления или вычитания смещения к или из планарного режима, режима DC или одного из candIntraPredA и candIntraPredB, имеющего большее значение. В данном случае смещение может быть равно 1 или 2.When candIntraPredA and candIntraPredB are different, MPM[0] can be set to the same as candIntraPredA, and MPM[1] can be set to the same as candIntraPredB. In this case, when both candIntraPredA and candIntraPredB are intra prediction modes not based on angle information, MPM[2] can be set to be the same as the vertical direction intra prediction mode, the horizontal direction intra prediction mode, or the intra predictions in the diagonal direction. Alternatively, when at least one of candIntraPredA and candIntraPredB is an intra prediction mode based on angle information, MPM[2] may be set to be the same as the intra prediction mode obtained by adding or subtracting an offset to or from the planar mode, mode DC or one of candIntraPredA and candIntraPredB, whichever is greater. In this case, the offset can be 1 or 2.

Генерируется список MPM, содержащий множество MPM, и информация, указывающая, включен ли MPM, который является таким же, как режим внутреннего предсказания текущего блока, в список MPM, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг и может называться флагом MPM. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM, информация об индексах, указывающая один из MPM, может быть передана посредством битового потока. MPM, указанный информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, не включен в список MPM, информация об остаточных режимах, указывающая любой из остаточных режимов внутреннего предсказания, отличных от MPM, может быть передана посредством битового потока. Информация об остаточных режимах указывает индексное значение, соответствующее режиму внутреннего предсказания текущего блока, когда индексы повторно присвоены остаточным режимам внутреннего предсказания за исключением MPM. Декодер может располагать MPM в возрастающем порядке и определять режим внутреннего предсказания текущего блока путем сравнения информации об остаточных режимах с MPM. Например, когда информация об остаточных режимах меньше или равна MPM, режим внутреннего предсказания текущего блока может быть получен путем добавления 1 к информации об остаточных режимах.An MPM list containing a plurality of MPMs is generated, and information indicating whether an MPM that is the same as the intra prediction mode of the current block is included in the MPM list can be transmitted by a bitstream. The information is a 1-bit flag and may be called an MPM flag. When the MPM flag indicates that an MPM that is the same as that of the current block is included in the MPM list, index information indicating one of the MPMs may be transmitted via a bitstream. The MPM indicated by the index information can be set as the intra prediction mode of the current block. When the MPM flag indicates that an MPM that is the same as that of the current block is not included in the MPM list, residual mode information indicating any of the intra prediction residual modes other than MPM may be transmitted by a bit stream. The residual mode information indicates an index value corresponding to the intra prediction mode of the current block when indexes are reassigned to the residual intra prediction modes except MPM. The decoder may arrange the MPMs in ascending order and determine the intra prediction mode of the current block by comparing the residual mode information with the MPM. For example, when the residual mode information is less than or equal to MPM, the intra prediction mode of the current block can be obtained by adding 1 to the residual mode information.

Вместо установки режима по умолчанию как MPM, информация, указывающая, является ли режим внутреннего предсказания текущего блока режимом по умолчанию, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг, и флаг может называться флагом режима по умолчанию. Флаг режима по умолчанию может быть передан только тогда, когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM. Как описано выше, режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении. Например, когда планарный режим установлен как режим по умолчанию, флаг режима по умолчанию может указывать, является ли режим внутреннего предсказания текущего блока планарным режимом. Когда флаг режима по умолчанию указывает, что режим внутреннего предсказания текущего блока не является режимом по умолчанию, один из MPM, указанных информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока.Instead of setting the default mode to MPM, information indicating whether the intra prediction mode of the current block is the default mode may be transmitted via a bit stream. The information is a 1-bit flag, and the flag may be called a default mode flag. The default mode flag can be sent only when the MPM flag indicates that an MPM that is the same as that of the current block is included in the MPM list. As described above, the default mode may comprise at least one of a planar mode, a DC mode, a vertical direction mode, and a horizontal direction mode. For example, when planar mode is set as the default mode, the default mode flag may indicate whether the intra prediction mode of the current block is planar mode. When the default mode flag indicates that the intra prediction mode of the current block is not the default mode, one of the MPMs indicated by the index information may be set as the intra prediction mode of the current block.

Когда множество режимов внутреннего предсказания установлены как режимы по умолчанию, информация об индексах, указывающая любой из режимов по умолчанию, может быть передана дальше. Режим внутреннего предсказания текущего блока может быть установлен как режим по умолчанию, указанный информацией об индексах.When multiple intra prediction modes are set as default modes, index information indicating any of the default modes can be passed on. The intra prediction mode of the current block can be set as the default mode indicated by the index information.

Когда индекс линии опорных отсчетов текущего блока не равен 0, может быть установлено не использовать режим по умолчанию. Соответственно, когда индекс линии опорных отсчетов не равен 0, флаг режима по умолчанию не передается, и значение флага режима по умолчанию может быть установлено таким же, как предварительно заданное значение (т.е. ложное).When the reference line index of the current block is not 0, it can be set to not use the default mode. Accordingly, when the index of the reference sample line is not 0, the default mode flag is not transmitted, and the value of the default mode flag may be set to the same as a preset value (ie, false).

Когда режим внутреннего предсказания текущего блока определен, отсчеты предсказания могут быть получены для текущего блока на основании определенного режима внутреннего предсказания (S2203).When the intra prediction mode of the current block is determined, prediction samples can be obtained for the current block based on the determined intra prediction mode (S2203).

Когда выбран режим DC, отсчеты предсказания генерируются для текущего блока на основании среднего значения опорных отсчетов. В частности, значения всех отсчетов в блоке предсказания могут быть сгенерированы на основании среднего значения опорных отсчетов. Среднее значение может быть получено с использованием по меньшей мере одного из верхних опорных отсчетов, расположенных сверху текущего блока, и левых опорных отсчетов, расположенных слева от текущего блока.When DC mode is selected, prediction samples are generated for the current block based on the average of the reference samples. In particular, the values of all samples in the prediction block can be generated based on the average value of the reference samples. The average may be obtained using at least one of the top reference samples located on top of the current block and the left reference samples located to the left of the current block.

В зависимости от формы текущего блока, количество или диапазон опорных отсчетов, используемых для получения среднего значения, могут варьировать. Например, когда текущий блок представляет собой блок неквадратной формы, ширина которого больше, чем высота, среднее значение может быть вычислено с использованием только верхних опорных отсчетов. С другой стороны, когда текущий блок представляет собой блок неквадратной формы, ширина которого меньше, чем высота, среднее значение может быть вычислено с использованием только левых опорных отсчетов. То есть, когда ширина и высота текущего блока различаются, среднее значение может быть вычислено с использованием только опорных отсчетов, смежных с тем, что длиннее. Альтернативно на основании соотношения ширины и высоты текущего блока можно определить, вычислять среднее значение с использованием только верхних опорных отсчетов или вычислять среднее значение с использованием только левых опорных отсчетов.Depending on the shape of the current block, the number or range of reference samples used to obtain the average may vary. For example, when the current block is a non-square block that is wider than it is tall, the average can be calculated using only the top reference samples. On the other hand, when the current block is a non-square block whose width is less than its height, the average can be calculated using only the left reference samples. That is, when the width and height of the current block differ, the average can be calculated using only the reference samples adjacent to the longer one. Alternatively, based on the width/height ratio of the current block, you can determine whether to calculate the average using only the top reference samples or calculate the average using only the left reference samples.

Когда выбран планарный режим, отсчет предсказания может быть получен с использованием отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. В данном случае отсчет предсказания в горизонтальном направлении получают на основании левого опорного отсчета и правого опорного отсчета, расположенных на той же горизонтальной линии, что и отсчет предсказания, а отсчет предсказания в вертикальном направлении получают на основании верхнего опорного отсчета и нижнего опорного отсчета, расположенных на той же вертикальной линии, что и отсчет предсказания. В данном случае правый опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с верхним правым углом текущего блока, а нижний опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с нижним левым углом текущего блока. Отсчет предсказания в горизонтальном направлении может быть получен на основании операции взвешенного суммирования левого опорного отсчета и правого опорного отсчета, а отсчет предсказания в вертикальном направлении может быть получен на основании операции взвешенного суммирования верхнего опорного отсчета и нижнего опорного отсчета. В этом случае значение взвешивания, присвоенное каждому опорному отсчету, может быть определено согласно положению отсчета предсказания. Отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. Когда выполняется операция взвешенного суммирования, значения взвешивания, применяемые к отсчету предсказания в горизонтальном направлении и отсчету предсказания в вертикальном направлении, могут быть определены на основании положения отсчета предсказания.When the planar mode is selected, a prediction sample can be obtained using a horizontal direction prediction sample and a vertical direction prediction sample. Here, the prediction count in the horizontal direction is obtained based on the left reference sample and the right reference sample located on the same horizontal line as the prediction count, and the prediction count in the vertical direction is obtained based on the upper reference sample and the lower reference sample located on the same vertical line as the prediction count. Here, the right reference sample may be generated by copying a reference sample adjacent to the upper right corner of the current block, and the lower reference sample may be generated by copying the reference sample adjacent to the lower left corner of the current block. The prediction count in the horizontal direction can be obtained based on the weighted addition operation of the left reference sample and the right reference sample, and the prediction count in the vertical direction can be obtained based on the weighted addition operation of the upper reference sample and the lower reference sample. In this case, the weighting value assigned to each reference sample can be determined according to the position of the prediction sample. The prediction sample may be obtained based on an averaging operation or a weighted summation operation of the prediction sample in the horizontal direction and the prediction sample in the vertical direction. When the weighted addition operation is performed, weighting values applied to the prediction sample in the horizontal direction and the prediction sample in the vertical direction can be determined based on the position of the prediction sample.

Когда выбран режим предсказания, основанный на информации об углах, может быть определен параметр, указывающий направление предсказания (или угол предсказания) выбранного режима предсказания, основанного на информации об углах. В таблице 2 показан параметр intraPredAng внутреннего направления каждого режима внутреннего предсказания.When the angle information-based prediction mode is selected, a parameter indicating the prediction direction (or prediction angle) of the selected angle information-based prediction mode can be determined. Table 2 shows the intraPredAng parameter of the intra direction of each intra prediction mode.

[Таблица 2] [ Table 2 ] PredModeIntraIntraPredAngPredModeIntraIntraPredAng 1-1- 232232 326326 421421 517517 613613 7979 PredModeIntraIntraPredAngPredModeIntraIntraPredAng 8585 9292 100100 11-211-2 12-512-5 13-913-9 14-1314-13 PredModeIntraIntraPredAngPredModeIntraIntraPredAng 15-1715-17 16-2116-21 17-2617-26 18-3218-32 19-2619-26 20-2120-21 21-1721-17 PredModeIntraIntraPredAngPredModeIntraIntraPredAng 22-1322-13 23-923-9 24-524-5 25-225-2 260260 272272 285285 PredModeIntraIntraPredAngPredModeIntraIntraPredAng 299299 30133013 31173117 32213221 33263326 34323432

Когда определены 35 режимов внутреннего предсказания, в таблице 2 показан параметр внутреннего направления каждого режима внутреннего предсказания, имеющего любой индекс от 2 до 34. Когда определены более 33 режимов внутреннего предсказания, основанных на информации об углах, таблица 2 дополнительно поделена, чтобы установить параметр внутреннего направления каждого режима внутреннего предсказания, основанного на информации об углах.When 35 intra prediction modes are defined, Table 2 shows the internal direction parameter of each intra prediction mode having any index from 2 to 34. When more than 33 intra prediction modes based on angle information are defined, Table 2 is further divided to set the internal parameter directions of each intra prediction mode based on angle information.

После расположения верхних опорных отсчетов и левых опорных отсчетов текущего блока в линию отсчет предсказания может быть получен на основании значения параметра внутреннего направления. В этом случае, когда значение параметра внутреннего направления представляет собой отрицательное значение, левые опорные отсчеты и верхние опорные отсчеты могут быть расположены в линию.After arranging the top reference samples and left reference samples of the current block in a line, a prediction sample can be obtained based on the value of the inner direction parameter. In this case, when the value of the inner direction parameter is a negative value, the left reference samples and the top reference samples can be arranged in a line.

На фиг. 25 и 26 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.In fig. 25 and 26 are views showing an example of a one-dimensional array arranging reference samples in a line.

На фиг. 25 представлен вид, показывающий пример одномерного массива в вертикальном направлении, размещающего опорные отсчеты в вертикальном направлении, а на фиг. 26 представлен вид, показывающий пример одномерного массива в горизонтальном направлении, размещающего опорные отсчеты в горизонтальном направлении. Варианты осуществления, представленные на фиг. 25 и 26, будут описаны с предположением, что определены 35 режимов внутреннего предсказания.In fig. 25 is a view showing an example of a one-dimensional array in the vertical direction arranging reference samples in the vertical direction, and FIG. 26 is a view showing an example of a one-dimensional array in the horizontal direction placing reference samples in the horizontal direction. The embodiments shown in FIGS. 25 and 26 will be described with the assumption that 35 intra prediction modes are defined.

Когда индекс режима внутреннего предсказания является любым из 11-18, может быть применен одномерный массив в горизонтальном направлении, в котором верхние опорные отсчеты поворачиваются против часовой стрелки, а когда индекс режима внутреннего предсказания является любым из 19-25, может быть применен одномерный массив в вертикальном направлении, в котором левые опорные отсчеты поворачиваются по часовой стрелке. При расположении опорных отсчетов в линию можно учесть угол режима внутреннего предсказания.When the intra prediction mode index is any of 11-18, a one-dimensional array in the horizontal direction in which the top reference samples are rotated counterclockwise can be applied, and when the intra prediction mode index is any of 19-25, a one-dimensional array in vertical direction in which the left reference readings rotate clockwise. When arranging the reference samples in a line, the angle of the internal prediction mode can be taken into account.

Параметр определения опорного отсчета может быть определен на основании параметра внутреннего направления. Параметр определения опорного отсчета может содержать индекс опорного отсчета для указания опорного отсчета и параметр значения взвешивания для определения значения взвешивания, применяемого к опорному отсчету.The reference determination parameter may be determined based on the internal direction parameter. The reference sample definition parameter may comprise a reference sample index to indicate the reference sample and a weighting value parameter to specify a weighting value to apply to the reference sample.

Индекс iIdx опорного отсчета и параметр ifact значения взвешивания могут быть получены с помощью уравнений 17 и 18, показанных ниже соответственно.The index iIdx of the reference count and the parameter ifact of the weighting value can be obtained using Equations 17 and 18 shown below, respectively.

[Уравнение 17][Equation 17]

[Уравнение 18][Equation 18]

В уравнениях 17 и 18 Pang обозначает параметр внутреннего направления. Опорный отсчет, указанный индексом iIdx опорного отсчета, соответствует целому пикселю.In Equations 17 and 18, P ang denotes the internal direction parameter. The reference sample, indicated by the reference sample index iIdx, corresponds to an integer pixel.

По меньшей мере один или более опорных отсчетов могут быть указаны для получения отсчета предсказания. В частности, положение опорного отсчета, используемого для получения отсчета предсказания, может быть указано с учетом наклона режима предсказания. Например, опорный отсчет, используемый для получения отсчета предсказания, может быть указан с использованием индекса iIdx опорного отсчета.At least one or more reference samples may be specified to obtain the prediction sample. In particular, the position of the reference sample used to obtain the prediction sample may be specified taking into account the slope of the prediction mode. For example, the reference sample used to obtain the prediction sample may be specified using the reference sample index iIdx.

В этом случае, когда наклон режима внутреннего предсказания не выражен одним опорным отсчетом, отсчет предсказания может быть сгенерирован путем интерполяции множества опорных отсчетов. Например, когда наклон режима внутреннего предсказания представляет собой значение между наклоном между отсчетом предсказания и первым опорным отсчетом и наклоном между отсчетом предсказания и вторым опорным отсчетом, отсчет предсказания может быть получен путем интерполяции первого опорного отсчета и второго опорного отсчета. То есть, когда угловая линия, проходящая под углом внутреннего предсказания, не проходит сквозь опорный отсчет, расположенный в целом пикселе, отсчет предсказания может быть получен путем интерполяции опорных отсчетов, смежных с левой и правой или верхней или нижней сторонами положения, в котором угловая линия проходит сквозь.In this case, when the slope of the intra prediction mode is not expressed by a single reference sample, the prediction sample can be generated by interpolating a plurality of reference samples. For example, when the slope of the intra prediction mode is a value between the slope between the prediction sample and the first reference sample and the slope between the prediction sample and the second reference sample, the prediction sample can be obtained by interpolating the first reference sample and the second reference sample. That is, when the corner line passing at the intra prediction angle does not pass through the reference sample located in the whole pixel, the prediction sample can be obtained by interpolating the reference samples adjacent to the left and right or the upper or lower sides of the position at which the corner line passes through.

В уравнении 19 показан пример получения отсчета предсказания на основании опорных отсчетов.Equation 19 shows an example of obtaining a prediction sample based on reference samples.

[Уравнение 19][Equation 19]

В уравнении 19 P обозначает отсчет предсказания, а Ref_1D обозначает любой из одномерно расположенных опорных отсчетов. В этом случае положение опорного отсчета может быть определено посредством положения (x, y) отсчета предсказания и индекса iIdx опорного отсчета.In Equation 19, P denotes the prediction sample and Ref_1D denotes any of the one-dimensionally located reference samples. In this case, the position of the reference sample can be determined by the position (x, y) of the prediction sample and the index iIdx of the reference sample.

Когда наклон режима внутреннего предсказания может быть выражен в виде одного опорного отсчета, параметр значения взвешивания ifact установлен равным 0. Соответственно, уравнение 19 может быть упрощено, как показано в уравнении 20.When the intra prediction mode slope can be expressed as a single reference sample, the weighting value parameter i fact is set to 0. Accordingly, Equation 19 can be simplified as shown in Equation 20.

[Уравнение 20][Equation 20]

Внутреннее предсказание для текущего блока может быть выполнено на основании множества режимов внутреннего предсказания. Например, режим внутреннего предсказания может быть получен для каждого отсчета предсказания, и отсчет предсказания может быть получен на основании режима внутреннего предсказания, присвоенного каждому отсчету предсказания.Intra prediction for the current block may be performed based on a variety of intra prediction modes. For example, an intra prediction mode may be obtained for each prediction sample, and a prediction sample may be obtained based on the intra prediction mode assigned to each prediction sample.

Альтернативно режим внутреннего предсказания может быть получен для каждого участка, и внутреннее предсказание для каждого участка может быть выполнено на основании режима внутреннего предсказания, присвоенного каждому участку. В данном случае участок может содержать по меньшей мере один отсчет. По меньшей мере одно из размера и формы участка может быть адаптивно определено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока. Альтернативно по меньшей мере одно из размера и формы участка может быть предварительно задано в кодере и декодере, чтобы быть независимым от размера или формы текущего блока.Alternatively, an intra prediction mode may be obtained for each region, and intra prediction for each region may be performed based on the intra prediction mode assigned to each region. In this case, the area may contain at least one sample. At least one of the size and shape of the patch may be adaptively determined based on at least one of the size, shape, and intra prediction mode of the current block. Alternatively, at least one of the size and shape of the patch may be preset in the encoder and decoder to be independent of the size or shape of the current block.

Альтернативно внутреннее предсказание может быть выполнено на основании каждого из множества внутренних предсказаний, и конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования множества отсчетов предсказания, полученных с помощью множества внутренних предсказаний. Например, первый отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании первого режима внутреннего предсказания, а второй отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании второго режима внутреннего предсказания. После этого конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования первого отсчета предсказания и второго отсчета предсказания. В этом случае значение взвешивания, присвоенное каждому из первого отсчета предсказания и второго отсчета предсказания, может быть определено с учетом по меньшей мере одного из того, является ли первый режим внутреннего предсказания режимом предсказания, не основанным на информации об углах/режимом предсказания, основанным на информации об углах, того, является ли второй режим внутреннего предсказания режимом предсказания, не основанным на информации об углах/режимом предсказания, основанным на информации об углах, и режима внутреннего предсказания соседнего блока.Alternatively, intra prediction may be performed based on each of the plurality of intra predictions, and the final prediction sample may be obtained based on an averaging operation or a weighted summation operation of the plurality of prediction samples obtained by the plurality of intra predictions. For example, a first prediction sample may be obtained by performing intra prediction based on a first intra prediction mode, and a second prediction sample may be obtained by performing intra prediction based on a second intra prediction mode. Thereafter, the final prediction sample can be obtained based on an averaging operation or a weighted summation operation of the first prediction sample and the second prediction sample. In this case, the weighting value assigned to each of the first prediction sample and the second prediction sample may be determined taking into account at least one of whether the first intra prediction mode is a prediction mode not based on angle information/a prediction mode based on the angle information, whether the second intra prediction mode is a prediction mode not based on angle information/a prediction mode based on angle information, and an intra prediction mode of the adjacent block.

Множество режимов внутреннего предсказания могут представлять собой комбинацию режима внутреннего предсказания, не основанного на информации об углах, и режима предсказания, основанного на информации об углах, комбинацию режимов предсказания, основанных на информации об углах, или комбинацию режимов предсказания, не основанных на информации об углах.The plurality of intra prediction modes may be a combination of an intra prediction mode not based on angle information and a prediction mode based on angle information, a combination of prediction modes based on angle information, or a combination of prediction modes not based on angle information .

На фиг. 27 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.In fig. 27 is a view showing an example of angles formed between intra prediction modes based on angle information and a straight line parallel to the x-axis.

Как показано в примере на фиг. 27, режимы предсказания, основанные на информации об углах, могут существовать между диагональным направлением вниз и влево и диагональным направлением вверх и вправо. При описании в отношении угла, образованного осью x и режимом предсказания, основанным на информации об углах, режимы предсказания, основанные на информации об углах, могут существовать между 45 градусами (диагональным направлением вниз и влево) и -135 градусами (диагональным направлением вверх и вправо).As shown in the example in FIG. 27, prediction modes based on angle information may exist between the down-left diagonal direction and the up-right diagonal direction. When described in relation to the angle formed by the x-axis and the prediction mode based on angle information, the prediction modes based on angle information may exist between 45 degrees (diagonal direction down and left) and -135 degrees (diagonal direction up and right ).

Когда текущий блок имеет неквадратную форму, согласно режиму внутреннего предсказания текущего блока может иметь место случай получения отсчета предсказания за счет использования опорного отсчета дальше от отсчета предсказания вместо опорного отсчета еще ближе к отсчету предсказания из опорных отсчетов, расположенных на угловой линии, проходящей под углом внутреннего предсказания.When the current block has a non-square shape, according to the intra prediction mode of the current block, it may be the case that a prediction sample is obtained by using a reference sample further from the prediction sample instead of a reference sample even closer to the prediction sample from reference samples located on a corner line passing at the angle of the internal predictions.

На фиг. 28 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.In fig. 28 is a view showing an embodiment of obtaining prediction samples when the current block has a non-square shape.

Например, как показано в примере на фиг. 28(a), предполагается, что текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от 0 до 45 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле правого столбца текущего блока, может иметь место случай использования левого опорного отсчета L, удаленного от отсчета предсказания, вместо верхнего опорного отсчета T, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.For example, as shown in the example of FIG. 28(a), it is assumed that the current block has a non-square shape whose width is larger than the height, and the intra prediction mode of the current block is an intra prediction mode based on angle information having an angle from 0 to 45 degrees. In the above case, when a prediction sample A near the right column of the current block is obtained, it may be a case of using the left reference sample L distant from the prediction sample instead of the top reference sample T located near the prediction sample from the reference samples located in the angular mode passing at an angle.

В качестве другого примера, как показано в примере на фиг. 28(b), предполагается, что текущий блок имеет неквадратную форму, высота которой больше, чем ширина, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от -90 до -135 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле нижней строки текущего блока, может иметь место случай использования верхнего опорного отсчета T, удаленного от отсчета предсказания, вместо левого опорного отсчета L, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.As another example, as shown in the example of FIG. 28(b), it is assumed that the current block has a non-square shape whose height is greater than the width, and the intra prediction mode of the current block is an intra prediction mode based on angle information having an angle of -90 to -135 degrees. In the above case, when a prediction sample A near the bottom line of the current block is obtained, it may be a case of using the top reference sample T away from the prediction sample instead of the left reference sample L located near the prediction sample from the reference samples located in the angular mode passing at an angle.

Для решения проблемы, описанной выше, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания текущего блока может быть заменен режимом внутреннего предсказания в противоположном направлении. Соответственно, режимы предсказания, основанные на информации об углах, имеющие угол больше или меньше, чем у режимов предсказания, основанных на информации об углах, показанных на фиг. 24, могут быть использованы для блока неквадратной формы. Такой режим внутреннего предсказания, основанный на информации об углах, может быть определен как широкоугольный режим внутреннего предсказания. Широкоугольный режим внутреннего предсказания представляет режим внутреннего предсказания, основанный на информации об углах, который не принадлежит к диапазону от 45 до -135 градусов.To solve the problem described above, when the current block has a non-square shape, the intra prediction mode of the current block can be replaced by an intra prediction mode in the opposite direction. Accordingly, prediction modes based on angle information having an angle larger or smaller than those of the prediction modes based on angle information shown in FIG. 24 can be used for a non-square shaped block. Such an intra prediction mode based on angle information can be defined as a wide-angle intra prediction mode. The wide-angle intra prediction mode represents an intra prediction mode based on angle information that does not belong to the range of 45 to -135 degrees.

На фиг. 29 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.In fig. 29 is a view showing wide-angle intra prediction modes.

В примере, показанном на фиг. 29, режимы внутреннего предсказания с индексом от -1 до -14 и режимы внутреннего предсказания с индексом от 67 до 80 представляют широкоугольные режимы внутреннего предсказания.In the example shown in FIG. 29, intra prediction modes with an index of -1 to -14 and intra prediction modes with an index of 67 to 80 represent wide-angle intra prediction modes.

Хотя 14 широкоугольных режимов внутреннего предсказания (от -1 до -14), имеющих угол больше 45 градусов, и 14 широкоугольных режимов внутреннего предсказания (от 67 до 80), имеющих угол меньше -135 градусов, показаны на фиг. 29, может быть определено большее или меньшее количество широкоугольных режимов внутреннего предсказания.Although 14 wide-angle intra prediction modes (-1 to -14) having an angle greater than 45 degrees and 14 wide-angle intra prediction modes (67 to 80) having an angle less than -135 degrees are shown in FIG. 29, more or less wide-angle intra prediction modes may be defined.

Когда используется широкоугольный режим внутреннего предсказания, длина верхних опорных отсчетов может быть установлена равной 2W+1, а длина левых опорных отсчетов может быть установлена равной 2H+1.When the wide-angle intra prediction mode is used, the length of the top reference samples can be set to 2W+1, and the length of the left reference samples can be set to 2H+1.

Так как используется широкоугольный режим внутреннего предсказания, отсчет A, показанный на фиг. 28(a), может быть предсказан с использованием опорного отсчета T, а отсчет A, показанный на фиг. 28(b), может быть предсказан с использованием опорного отсчета L.Since the wide-angle intra prediction mode is used, sample A shown in FIG. 28(a) can be predicted using the reference sample T, and the sample A shown in FIG. 28(b) can be predicted using the reference sample L.

Путем сложения существующих режимов внутреннего предсказания и N широкоугольных режимов внутреннего предсказания можно использовать суммарно 67+N режимов внутреннего предсказания. Например, в таблице 3 показаны параметры внутреннего направления режимов внутреннего предсказания, когда определены 20 широкоугольных режимов внутреннего предсказания.By adding the existing intra prediction modes and the N wide-angle intra prediction modes, a total of 67+N intra prediction modes can be used. For example, Table 3 shows the inner direction parameters of the intra prediction modes when 20 wide-angle intra prediction modes are defined.

[Таблица 3] [ Table 3 ] PredModeIntraPredModeIntra -10-10 -9-9 -8-8 -7-7 -6-6 -5-5 -4-4 -3-3 -2-2 intraPredAngleintraPredAngle 114114 9393 7979 6868 6060 5454 4949 4545 3939 PredModeIntraPredModeIntra -1-1 22 33 44 55 66 77 88 99 intraPredAngleintraPredAngle 3535 3232 2929 2626 2323 2121 1919 1717 1515 PredModeIntraPredModeIntra 1010 11eleven 1212 1313 1414 1515 1616 1717 1818 intraPredAngleintraPredAngle 1313 11eleven 99 77 55 33 22 11 00 PredModeIntraPredModeIntra 1919 2020 2121 2222 2323 2424 2525 2626 2727 intraPredAngleintraPredAngle -1-1 -2-2 -3-3 -5-5 -7-7 -9-9 -11-eleven -13-13 -15-15 PredModeIntraPredModeIntra 2828 2929 30thirty 3131 3232 3333 3434 3535 3636 intraPredAngleintraPredAngle -17-17 -19-19 -21-21 -23-23 -26-26 -29-29 -32-32 -29-29 -26-26 PredModeIntraPredModeIntra 3737 3838 3939 4040 4141 4242 4343 4444 4545 intraPredAngleintraPredAngle -23-23 -21-21 -19-19 -17-17 -15-15 -13-13 -11-eleven -9-9 -7-7 PredModeIntraPredModeIntra 4646 4747 4848 4949 5050 5151 5252 5353 5454 intraPredAngleintraPredAngle -5-5 -3-3 -2-2 -1-1 00 11 22 33 55 PredModeIntraPredModeIntra 5555 5656 5757 5858 5959 6060 6161 6262 6363 intraPredAngleintraPredAngle 77 99 11eleven 1313 1515 1717 1919 2121 2323 PredModeIntraPredModeIntra 6464 6565 6666 6767 6868 6969 7070 7171 7272 intraPredAngleintraPredAngle 2626 2929 3232 3535 3939 4545 4949 5454 6060 PredModeIntraPredModeIntra 7373 7474 7575 7676 intraPredAngleintraPredAngle 6868 7979 9393 114114

Когда текущий блок имеет неквадратную форму и режим внутреннего предсказания текущего блока, полученный на этапе S2202, принадлежит к диапазону преобразования, режим внутреннего предсказания текущего блока может быть преобразован в широкоугольный режим внутреннего предсказания. Диапазон преобразования может быть определен на основании по меньшей мере одного из размера, формы и соотношения текущего блока. В данном случае соотношение может представлять соотношение ширины и высоты текущего блока.When the current block has a non-square shape and the intra prediction mode of the current block obtained in step S2202 belongs to the conversion range, the intra prediction mode of the current block can be converted to a wide-angle intra prediction mode. The transformation range may be determined based on at least one of the size, shape, and ratio of the current block. In this case, the ratio can represent the ratio of the width and height of the current block.

Когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 66) диагонального направления вверх и вправо (индекса режима внутреннего предсказания в диагональном направлении вверх и вправо - N). В данном случае N может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой вычитание предварительно заданного значения из режима внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 67) режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания.When the current block has a non-square shape whose width is greater than its height, the transformation range can be set from the intra prediction mode index (eg, 66) of the diagonal up and right direction (the intra prediction mode index in the diagonal up and right direction is N). In this case, N can be determined based on the ratio of the current block. When the intra prediction mode of the current block belongs to the conversion range, the intra prediction mode can be converted to a wide-angle intra prediction mode. The transformation may be the subtraction of a predetermined value from the intra prediction mode, and the predetermined value may be the total number (eg, 67) of intra prediction modes excluding wide-angle intra prediction modes.

Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания с 66-го по 53-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с -1-го по -14-й соответственно.According to the embodiment described above, intra prediction modes 66 to 53 can be converted to wide-angle intra prediction modes -1 to -14, respectively.

Когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 2) диагонального направления вниз и влево (индекса режима внутреннего предсказания в диагональном направлении вниз и влево + M). В данном случае M может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой добавление предварительно заданного значения к режиму внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 65) режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания.When the current block has a non-square shape whose height is larger than the width, the transformation range can be set from the intra prediction mode index (eg, 2) of the down-left diagonal direction (down-left intra prediction mode index + M). In this case, M can be determined based on the ratio of the current block. When the intra prediction mode of the current block belongs to the conversion range, the intra prediction mode can be converted to a wide-angle intra prediction mode. The transformation may be adding a predetermined value to the intra prediction mode, and the predetermined value may be the total number (eg, 65) of intra prediction modes based on the angle information, excluding wide-angle intra prediction modes.

Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания со 2-го по 15-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с 67-го по 80-й соответственно.According to the embodiment described above, intra prediction modes 2 to 15 can be converted to wide-angle intra prediction modes 67 to 80, respectively.

Далее режимы внутреннего предсказания, принадлежащие к диапазону преобразования, будут называться широкоугольными заменяющими режимами внутреннего предсказания.Hereinafter, intra prediction modes belonging to the conversion range will be referred to as wide-angle replacement intra prediction modes.

Диапазон преобразования может быть определен на основании соотношения текущего блока. Например, в таблицах 4 и 5 показан диапазон преобразования, когда определены 35 режимов внутреннего предсказания и 67 режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания соответственно.The conversion range can be determined based on the ratio of the current block. For example, Tables 4 and 5 show the conversion range when 35 intra prediction modes and 67 intra prediction modes excluding wide-angle intra prediction modes are defined, respectively.

[Таблица 4] [ Table 4 ] УсловиеCondition Замененные режимы внутреннего предсказанияReplaced intra prediction modes W/H = 2W/H = 2 Режимы 2, 3, 4Modes 2, 3, 4 W/H > 2W/H > 2 Режимы 2, 3, 4, 5, 6Modes 2, 3, 4, 5, 6 W/H = 1W/H = 1 НетNo H/W = 1/2H/W = 1/2 Режимы 32, 33, 34Modes 32, 33, 34 H/W < 1/2H/W < 1/2 Режимы 30, 31, 32, 33, 34Modes 30, 31, 32, 33, 34

[Таблица 5] [ Table 5 ] УсловиеCondition Замененные режимы внутреннего предсказанияReplaced intra prediction modes W/H = 2W/H = 2 Режимы 2, 3, 4, 5, 6, 7Modes 2, 3, 4, 5, 6, 7 W/H > 2W/H > 2 Режимы 2, 3, 4, 5, 6, 7, 8, 9, 10, 11Modes 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 W/H = 1W/H = 1 НетNo H/W = 1/2H/W = 1/2 Режимы 61, 62, 63, 64, 65, 66Modes 61, 62, 63, 64, 65, 66 H/W < 1/2H/W < 1/2 Режимы 57, 58, 59, 60, 61, 62, 63, 64, 65, 66Modes 57, 58, 59, 60, 61, 62, 63, 64, 65, 66

Как показано в примерах из таблиц 4 и 5, количество широкоугольных заменяющих режимов внутреннего предсказания, принадлежащих к диапазону преобразования, может варьировать согласно соотношению текущего блока.As shown in the examples of Tables 4 and 5, the number of wide-angle replacement intra prediction modes belonging to the conversion range may vary according to the ratio of the current block.

Так как используются широкоугольные режимы внутреннего предсказания в дополнение к существующим режимам внутреннего предсказания, увеличиваются ресурсы, требуемые для кодирования широкоугольных режимов внутреннего предсказания, и, таким образом, эффективность кодирования может быть снижена. Соответственно, эффективность кодирования может быть улучшена за счет кодирования заменяющих режимов внутреннего предсказания для широкоугольных режимов внутреннего предсказания вместо кодирования широкоугольных режимов внутреннего предсказания как таковых.Since wide-angle intra prediction modes are used in addition to existing intra prediction modes, resources required for encoding wide-angle intra prediction modes increase, and thus coding efficiency may be reduced. Accordingly, coding efficiency can be improved by encoding replacement intra prediction modes for wide-angle intra-prediction modes instead of encoding the wide-angle intra-prediction modes themselves.

Например, когда текущий блок кодируется с использованием 67-го широкоугольного режима внутреннего предсказания, 2-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания 67-го широкоугольного режима внутреннего предсказания, может быть кодирован с использованием режима внутреннего предсказания текущего блока. Кроме того, когда текущий блок кодируется с использованием -1-го широкоугольного режима внутреннего предсказания, 66-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания -1-го широкоугольного режима внутреннего предсказания, может быть кодирован с использованием режима внутреннего предсказания текущего блока.For example, when the current block is encoded using the 67th wide-angle intra prediction mode, the 2nd intra prediction mode, which is a replacement intra prediction mode of the 67th wide-angle intra prediction mode, can be encoded using the intra prediction mode of the current block. In addition, when the current block is encoded using the -1st wide-angle intra prediction mode, the 66th intra prediction mode, which is a replacement intra prediction mode of the -1st wide-angle intra prediction mode, can be encoded using the intra prediction mode of the current block.

Декодер может декодировать режим внутреннего предсказания текущего блока и определять, принадлежит ли декодированный режим внутреннего предсказания к диапазону преобразования. Когда декодированный режим внутреннего предсказания представляет собой широкоугольный заменяющий режим внутреннего предсказания, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания.The decoder may decode the intra prediction mode of the current block and determine whether the decoded intra prediction mode belongs to the transform range. When the decoded intra prediction mode is a wide-angle replacement intra-prediction mode, the intra-prediction mode can be converted to a wide-angle intra-prediction mode.

Альтернативно, когда текущий блок кодируется с использованием широкоугольного режима внутреннего предсказания, широкоугольный режим внутреннего предсказания может быть кодирован, как есть.Alternatively, when the current block is encoded using the wide-angle intra prediction mode, the wide-angle intra prediction mode may be encoded as is.

Кодирование режима внутреннего предсказания может быть выполнено на основании списка MPM, описанного выше. Далее будет подробно описан способ конфигурирования списка MPM. В вариантах осуществления, описанных ниже, предполагается, что определены 10 широкоугольных режимов внутреннего предсказания (от -1 до -10) с углом более 45 градусов и 10 широкоугольных режимов внутреннего предсказания (от 67 до 76) с углом меньше -135 градусов.Intra prediction mode coding can be performed based on the MPM list described above. The following will describe in detail how to configure the MPM list. In the embodiments described below, it is assumed that 10 wide-angle intra prediction modes (-1 to -10) with an angle greater than 45 degrees and 10 wide-angle intra prediction modes (67 to 76) with an angle less than -135 degrees are defined.

Когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, MPM может быть установлен на основании широкоугольного заменяющего режима внутреннего предсказания, соответствующего широкоугольному режиму внутреннего предсказания. Например, когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, переменная candIntraPredX (X является A или B) может быть установлена равной широкоугольному заменяющему режиму внутреннего предсказания.When a neighboring block is encoded using a wide-angle intra prediction mode, the MPM may be set based on a wide-angle replacement intra prediction mode corresponding to the wide-angle intra prediction mode. For example, when a neighboring block is encoded using the wide-angle intra prediction mode, the variable candIntraPredX (X is A or B) can be set equal to the wide-angle replacement intra prediction mode.

Альтернативно способ получения MPM может быть определен согласно форме текущего блока. Например, когда текущий блок имеет квадратную форму, ширина которой равна высоте, candIntraPredX может быть установлено равным широкоугольному заменяющему режиму внутреннего предсказания. С другой стороны, когда текущий блок имеет неквадратную форму, candIntraPredX может быть установлено равным широкоугольному режиму внутреннего предсказания.Alternatively, the method for obtaining the MPM may be determined according to the shape of the current block. For example, when the current block is a square shape whose width is equal to its height, candIntraPredX can be set to the wide-angle intra prediction replacement mode. On the other hand, when the current block is non-square, candIntraPredX can be set to the wide-angle intra prediction mode.

Альтернативно то, устанавливать ли candIntraPredX равным широкоугольному режиму внутреннего предсказания, может быть определено на основании того, может ли широкоугольный режим внутреннего предсказания соседнего блока быть применен к текущему блоку. Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, широкоугольный режим внутреннего предсказания, индекс которого больше, чем индекс режима внутреннего предсказания диагонального направления вверх и вправо, устанавливается как candIntraPredX как есть. Однако широкоугольный заменяющий режим внутреннего предсказания, соответствующий ему, устанавливается как candIntraPredX для широкоугольного режима внутреннего предсказания, индекс которого меньше, чем индекс режима внутреннего предсказания диагонального направления вниз и влево. С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, широкоугольный режим внутреннего предсказания, индекс которого меньше, чем индекс режима внутреннего предсказания диагонального направления вниз и влево, устанавливается как candIntraPredX как есть. Однако широкоугольный заменяющий режим внутреннего предсказания, соответствующий ему, устанавливается как candIntraPredX для широкоугольного режима внутреннего предсказания, индекс которого больше, чем индекс режима внутреннего предсказания диагонального направления вверх и вправо.Alternatively, whether to set candIntraPredX equal to the wide-angle intra prediction mode can be determined based on whether the wide-angle intra prediction mode of a neighboring block can be applied to the current block. For example, when the current block has a non-square shape whose width is greater than its height, the wide-angle intra prediction mode whose index is greater than the index of the diagonal up-right intra prediction mode is set to candIntraPredX as is. However, the wide-angle replacement intra prediction mode corresponding to it is set as candIntraPredX for the wide-angle intra prediction mode whose index is less than the index of the down-left diagonal direction intra prediction mode. On the other hand, when the current block has a non-square shape whose height is greater than its width, the wide-angle intra prediction mode whose index is smaller than the index of the diagonal down-left intra prediction mode is set to candIntraPredX as is. However, the wide-angle replacement intra prediction mode corresponding to it is set as candIntraPredX for the wide-angle intra prediction mode whose index is greater than the index of the diagonal upward and right direction intra prediction mode.

То есть то, получать ли MPM с использованием широкоугольного режима внутреннего предсказания как есть, или то, получать ли MPM с использованием широкоугольного заменяющего режима внутреннего предсказания, можно определить согласно тому, имеет ли соседний блок, кодированный в широкоугольном режиме внутреннего предсказания, такую же или подобную форму, как у текущего блока.That is, whether to obtain an MPM using the wide-angle intra prediction mode as is or whether to obtain an MPM using the wide-angle replacement intra prediction mode can be determined according to whether a neighboring block encoded in the wide-angle intra prediction mode has the same or similar shape as the current block.

Альтернативно широкоугольный режим внутреннего предсказания соседнего блока может быть установлен как candIntraPredX независимо от формы текущего блока.Alternatively, the wide-angle neighbor intra prediction mode can be set to candIntraPredX regardless of the shape of the current block.

В итоге, candIntraPredX может быть установлено равным широкоугольному режиму внутреннего предсказания или широкоугольному заменяющему режиму внутреннего предсказания соседнего блока.Finally, candIntraPredX can be set equal to the wide-angle intra prediction mode or the wide-angle substituting intra-prediction mode of an adjacent block.

MPM может быть получен на основании candIntraPredA и candIntraPredB. В этом случае MPM может быть получен в режиме внутреннего предсказания, подобном candIntraPredA или candIntraPredB. Режим внутреннего предсказания, подобный candIntraPredA или candIntraPredB, может быть получен на основании операции по модулю и смещения. В этом случае постоянная и смещение, используемые для операции по модулю, могут быть определены по-разному согласно форме текущего блока.The MPM can be derived from candIntraPredA and candIntraPredB. In this case, the MPM can be obtained in an intra prediction mode like candIntraPredA or candIntraPredB. An intra prediction mode like candIntraPredA or candIntraPredB can be obtained based on the modulo and offset operation. In this case, the constant and offset used for the modulo operation can be defined differently according to the shape of the current block.

В таблице 6 показан пример получения MPM согласно форме текущего блока.Table 6 shows an example of obtaining MPM according to the shape of the current block.

[Таблица 6][Table 6] i) если cuWidth равна cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) иначе (т.е. cuWidth не равна cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
i) if cuWidth is equal to cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) otherwise (i.e. cuWidth is not equal to cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)

Предполагается, что candIntraPredA и candIntraPredB одинаковые, и candIntraPredA представляет собой режим внутреннего предсказания, основанный на информации об углах. Когда текущий блок имеет квадратную форму, режим внутреннего предсказания, подобный candIntraPredA, может быть получен на основании операции по модулю на основании значения, полученного путем вычитания 1 из общего количества режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания. Например, когда количество режимов внутреннего предсказания, основанных на информации об углах, отличных от широкоугольных режимов внутреннего предсказания, составляет 65, MPM может быть получен на основании значения, полученного на основании candIntraPredA и операции по модулю 64. С другой стороны, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания, подобный candIntraPredA, может быть получен на основании операции по модулю на основании значения, полученного путем вычитания 1 из общего количества режимов внутреннего предсказания, основанных на информации об углах, включая широкоугольные режимы внутреннего предсказания. Например, когда количество широкоугольных режимов внутреннего предсказания составляет 20, MPM может быть получен на основании значения, полученного на основании candIntraPredA и операции по модулю 84.It is assumed that candIntraPredA and candIntraPredB are the same, and candIntraPredA is an intra prediction mode based on angle information. When the current block is square-shaped, an intra prediction mode like candIntraPredA can be obtained based on a modulo operation based on a value obtained by subtracting 1 from the total number of intra prediction modes based on angle information, except for wide-angle intra prediction modes. For example, when the number of intra prediction modes based on angle information other than wide-angle intra prediction modes is 65, the MPM can be obtained based on the value obtained based on candIntraPredA and modulo 64 operation. On the other hand, when the current block has non-square form, an intra prediction mode like candIntraPredA can be obtained based on a modulo operation based on a value obtained by subtracting 1 from the total number of intra prediction modes based on angle information, including wide-angle intra prediction modes. For example, when the number of wide-angle intra prediction modes is 20, the MPM can be obtained based on the value obtained from candIntraPredA and modulo 84 operation.

Так как постоянная, используемая для операции по модулю, установлена по-разному согласно форме текущего блока, можно определить, может ли широкоугольный режим внутреннего предсказания быть установлен таким же, как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA. Например, широкоугольный режим внутреннего предсказания может не быть установлен как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, в операции по модулю с использованием 64, тогда как широкоугольный режим внутреннего предсказания может быть установлен как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA в операции по модулю с использованием 84.Since the constant used for the modulo operation is set differently according to the shape of the current block, it can be determined whether the wide-angle intra prediction mode can be set to the same as the intra prediction mode based on angle information like candIntraPredA. For example, the wide-angle intra prediction mode may not be set to an intra prediction mode based on angle information like candIntraPredA in a modulo 64 operation, while the wide-angle intra prediction mode may be set to an intra prediction mode based on angle information. corners, similar to candIntraPredA in a modulo operation using 84.

Альтернативно, когда candIntraPredA и candIntraPredB являются одинаковыми, MPM может быть получен с учетом формы текущего блока и того, является ли candIntraPredA широкоугольным режимом внутреннего предсказания.Alternatively, when candIntraPredA and candIntraPredB are the same, the MPM can be obtained taking into account the shape of the current block and whether candIntraPredA is a wide-angle intra prediction mode.

В таблице 7 показан пример получения MPM согласно форме текущего блока.Table 7 shows an example of obtaining MPM according to the shape of the current block.

[Таблица 7][Table 7] - Если candIntraPredModeB равен candIntraPredModeA, применимо следующее:
-- Если candIntraPredModeA меньше чем 2 (т.е. равен INTRA_PLANAR или INTRA_DC), candModeList[x] при x = 0…2 получают следующим образом:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- иначе candModeList[x] при x = 0.. 2 получают следующим образом:
i) если cuWidth равна cuHeight
1. если candIntrapredA меньше чем 0 или candIntraPredModeA больше чем 66
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
2. иначе, если candIntraPredA >= 0 и candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) иначе, если cuWidth больше, чем cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iii) иначе (т.е. cuWidth больше, чем cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = -8 + ((candIntraPredModeA - 1) % 84)
- Иначе (candIntraPredModeB не равен candIntraPredModeA), применимо следующее:
-- candModeList[0] и candModeList[1] получают следующим образом:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- Если ни один из candModeList[0] и candModeList[1] не равен INTRA_PLANAR, candModeList[2] установлен равным INTRA_PLANAR
-- Иначе, если ни один из candModeList[0] и candModeList[1] не равен INTRA_DC, candModeList[2] установлен равным INTRA_DC,
-- Иначе candModeList[2] установлен равным INTRA_ANGULAR 50.
- If candIntraPredModeB is equal to candIntraPredModeA, the following applies:
-- If candIntraPredModeA is less than 2 (i.e. equal to INTRA_PLANAR or INTRA_DC), candModeList[x] for x = 0...2 is obtained as follows:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- otherwise candModeList[x] for x = 0.. 2 is obtained as follows:
i) if cuWidth is equal to cuHeight
1. if candIntrapredA is less than 0 or candIntraPredModeA is greater than 66
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
2. otherwise, if candIntraPredA >= 0 and candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) else if cuWidth is greater than cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iii) otherwise (i.e. cuWidth is greater than cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = -8 + ((candIntraPredModeA - 1) % 84)
- Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), the following applies:
-- candModeList[0] and candModeList[1] are obtained as follows:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- If neither candModeList[0] and candModeList[1] are equal to INTRA_PLANAR, candModeList[2] is set to INTRA_PLANAR
-- Else, if neither candModeList[0] and candModeList[1] are equal to INTRA_DC, candModeList[2] is set to INTRA_DC,
-- Otherwise candModeList[2] is set to INTRA_ANGULAR 50.

Предполагается, что candIntraPredA и candIntraPredB являются одинаковыми.CandIntraPredA and candIntraPredB are assumed to be the same.

Когда текущий блок имеет квадратную форму и candIntraPredA является широкоугольным режимом внутреннего предсказания, MPM могут быть установлены равными режимам по умолчанию. Например, MPM[0], MPM[1] и MPM[2] могут быть установлены равными планарному режиму, режиму DC и вертикальному режиму внутреннего предсказания соответственно.When the current block is square and candIntraPredA is a wide-angle intra prediction mode, MPMs can be set to the default modes. For example, MPM[0], MPM[1], and MPM[2] may be set to planar mode, DC mode, and vertical intra prediction mode, respectively.

Когда текущий блок имеет квадратную форму и candIntraPredA является не широкоугольным режимом внутреннего предсказания, а режимом внутреннего предсказания, основанным на информации об углах, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. Например, MPM[0] может быть установлен равным candIntraPredA, а MPM[1] и MPM[2] могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему.When the current block has a square shape and candIntraPredA is not a wide-angle intra prediction mode but an intra prediction mode based on angle information, the MPMs can be set equal to candIntraPredA and an intra prediction mode based on angle information like it. For example, MPM[0] can be set to candIntraPredA, and MPM[1] and MPM[2] can be set to candIntraPredA and an internal prediction mode based on angle information like it.

Когда текущий блок имеет неквадратную форму и candIntraPredA является режимом внутреннего предсказания, основанным на информации об углах, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. Например, MPM[0] может быть установлен равным candIntraPredA, а MPM[1] и MPM[2] могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему.When the current block has a non-square shape and candIntraPredA is an intra prediction mode based on angle information, the MPMs can be set equal to candIntraPredA and an intra prediction mode based on angle information like it. For example, MPM[0] can be set to candIntraPredA, and MPM[1] and MPM[2] can be set to candIntraPredA and an internal prediction mode based on angle information like it.

Режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием операции по модулю и смещения. В этом случае постоянная, используемая для операции по модулю, может варьировать согласно форме текущего блока. Кроме того, смещение, используемое для получения режима внутреннего предсказания, основанного на информации об углах, подобного candIntraPredA, может быть установлено по-разному согласно форме текущего блока. Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием смещения 2. С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием смещений 2 и -8.An internal prediction mode based on angle information, similar to candIntraPredA, can be obtained using modulo and offset operations. In this case, the constant used for the modulo operation can vary according to the shape of the current block. In addition, the offset used to obtain an intra prediction mode based on angle information like candIntraPredA can be set differently according to the shape of the current block. For example, when the current block has a non-square shape whose width is greater than its height, an intra prediction mode based on angle information like candIntraPredA can be obtained using an offset of 2. On the other hand, when the current block has a non-square shape whose height larger than the width, an intra prediction mode based on angle information, similar to candIntraPredA, can be obtained using offsets 2 and -8.

Альтернативно MPM могут быть получены с учетом того, является ли candIntraPredX широкоугольным режимом внутреннего предсказания, имеющим наибольший или наименьший индекс.Alternatively, the MPMs may be derived by considering whether candIntraPredX is the wide-angle intra prediction mode having the largest or smallest index.

В таблице 8 показан пример получения MPM с учетом индекса широкоугольного режима внутреннего предсказания.Table 8 shows an example of obtaining MPM taking into account the wide-angle intra prediction mode index.

[Таблица 8][Table 8] - Если candIntraPredModeB равен candIntraPredModeA, применимо следующее:
-- Если candIntraPredModeA меньше чем 2 (т.е. равен INTRA_PLANAR или INTRA_DC), candModeList[x] при x = 0…2 получают следующим образом:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- иначе candModeList[x] при x = 0.. 2 получают следующим образом:
i) Если (candIntraPredModeA < 0 и candIntraPredModeA != -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA - 3) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
ii) иначе, если (candIntraPredModeA = -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = -1
candModeList[2] = -9
iii) иначе, если (candIntraPredModeA > 67 и candIntraPredModeA < 76)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iv) иначе candIntraPredModeA равен 67
candModeList[0] = candIntraPredModeA
candModeList[1] = 66
candModeList[2] = 68
v) иначе candIntraPredModeA равен 77
candModeList[0] = candIntraPredModeA
candModeList[1] = 76
candModeList[2] = 67
vi) иначе, если (candIntraPredModeA >= 0 и candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
- Иначе (candIntraPredModeB не равен candIntraPredModeA), применимо следующее:
-- candModeList[0] и candModeList[1] получают следующим образом:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- Если ни один из candModeList[0] и candModeList[1] не равен INTRA_PLANAR, candModeList[2] установлен равным INTRA_PLANAR
-- Иначе, если ни один из candModeList[0] и candModeList[1] не равен INTRA_DC, candModeList[2] установлен равным INTRA_DC,
-- Иначе candModeList[2] установлен равным INTRA_ANGULAR 50.
- If candIntraPredModeB is equal to candIntraPredModeA, the following applies:
-- If candIntraPredModeA is less than 2 (i.e. equal to INTRA_PLANAR or INTRA_DC), candModeList[x] for x = 0...2 is obtained as follows:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- otherwise candModeList[x] for x = 0.. 2 is obtained as follows:
i) If (candIntraPredModeA < 0 and candIntraPredModeA != -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA - 3) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
ii) else if (candIntraPredModeA = -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = -1
candModeList[2] = -9
iii) else if (candIntraPredModeA > 67 and candIntraPredModeA < 76)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iv) otherwise candIntraPredModeA is 67
candModeList[0] = candIntraPredModeA
candModeList[1] = 66
candModeList[2] = 68
v) otherwise candIntraPredModeA is 77
candModeList[0] = candIntraPredModeA
candModeList[1] = 76
candModeList[2] = 67
vi) else if (candIntraPredModeA >= 0 and candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
- Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), the following applies:
-- candModeList[0] and candModeList[1] are obtained as follows:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- If neither candModeList[0] and candModeList[1] are equal to INTRA_PLANAR, candModeList[2] is set to INTRA_PLANAR
-- Else, if neither candModeList[0] and candModeList[1] are equal to INTRA_DC, candModeList[2] is set to INTRA_DC,
-- Otherwise candModeList[2] is set to INTRA_ANGULAR 50.

Предполагается, что candIntraPredA и candIntraPredB являются одинаковыми. Для удобства объяснения широкоугольные режимы внутреннего предсказания, имеющие индексное значение меньше, чем у режима внутреннего предсказания диагонального направления вниз и влево, называются широкоугольными режимами внутреннего предсказания в направлении вниз, а широкоугольные режимы внутреннего предсказания, имеющие индексное значение больше, чем у режима внутреннего предсказания диагонального направления вверх и вправо, называются широкоугольными режимами внутреннего предсказания в направлении вправо.CandIntraPredA and candIntraPredB are assumed to be the same. For convenience of explanation, wide-angle intra prediction modes having an index value less than that of the diagonal down and left intra prediction mode are called wide-angle intra prediction modes in the downward direction, and wide-angle intra prediction modes having an index value greater than that of the diagonal intra prediction mode up and right directions are called wide-angle right direction intra prediction modes.

Когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вниз, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. В этом случае, когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вниз, имеющий наименьшее значение, MPM может быть установлен равным широкоугольному режиму внутреннего предсказания в направлении вниз, имеющему предварительно заданное индексное значение. В данном случае предварительно заданный индекс может представлять собой индекс, имеющий наибольшее значение из индексов широкоугольных режимов внутреннего предсказания в направлении вниз. Например, когда candIntraPredA равен -10, MPM[0], MPM[1] и MPM[2] могут быть установлены равными -10, -1 и -9 соответственно.When candIntraPredA is a wide-angle downward intra prediction mode, the MPMs may be set equal to candIntraPredA and an angle information-based intra prediction mode like it. In this case, when candIntraPredA is the wide-angle downward intra prediction mode having the smallest value, the MPM may be set equal to the wide-angle downward intra prediction mode having the predetermined index value. Here, the predetermined index may be an index having the largest value among the indexes of the wide-angle intra prediction modes in the downward direction. For example, when candIntraPredA is -10, MPM[0], MPM[1], and MPM[2] can be set to -10, -1, and -9, respectively.

Когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вправо, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. В этом случае, когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вправо, имеющий наибольшее значение, MPM может быть установлен равным широкоугольному режиму внутреннего предсказания в направлении вправо, имеющему предварительно заданное индексное значение. В данном случае предварительно заданный индекс может представлять собой индекс, имеющий наименьшее значение из индексов широкоугольных режимов внутреннего предсказания в направлении вправо. Например, когда candIntraPredA равен 77, MPM[0], MPM[1] и MPM[2] могут быть установлены равными 77, 76 и 67 соответственно.When candIntraPredA is a wide-angle intra-prediction mode in the right direction, the MPMs may be set equal to candIntraPredA and an intra-prediction mode based on angle information like it. In this case, when candIntraPredA is the right-direction wide-angle intra prediction mode having the largest value, the MPM may be set equal to the right-direction wide-angle intra prediction mode having the predetermined index value. Here, the predetermined index may be an index having the smallest value among the indexes of the wide-angle intra prediction modes in the right direction. For example, when candIntraPredA is 77, MPM[0], MPM[1], and MPM[2] can be set to 77, 76, and 67, respectively.

Альтернативно, когда индекс, полученный путем вычитания или добавления 1 из или к индексу candIntraPredA, меньше, чем наименьшее значение, или больше, чем наибольшее значение, из индексов режимов внутреннего предсказания, MPM может быть установлен равным режиму по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, вертикального режима внутреннего предсказания, горизонтального режима внутреннего предсказания и диагонального режима внутреннего предсказания.Alternatively, when the index obtained by subtracting or adding 1 from or to the candIntraPredA index is less than the smallest value or greater than the largest value of the intra prediction mode indices, the MPM may be set to the default mode. Here, the default mode may comprise at least one of a planar mode, a DC mode, a vertical intra prediction mode, a horizontal intra prediction mode, and a diagonal intra prediction mode.

Альтернативно, когда индекс, полученный путем вычитания или добавления 1 из или к индексу candIntraPredA, меньше, чем наименьшее значение, или больше, чем наибольшее значение, из индексов режимов внутреннего предсказания, MPM может быть установлен равным режиму внутреннего предсказания, противоположному candIntraPredA, или режиму внутреннего предсказания, подобному режиму внутреннего предсказания, противоположному candIntraPredA.Alternatively, when the index obtained by subtracting or adding 1 from or to the candIntraPredA index is less than the smallest value or greater than the largest value of the intra prediction mode indices, MPM may be set equal to the intra prediction mode opposite candIntraPredA or the mode intra prediction, similar to the intra prediction mode, the opposite of candIntraPredA.

Альтернативно MPM-кандидаты могут быть получены с учетом формы текущего блока и формы соседнего блока. Например, способ получения MPM, когда как текущий блок, так и соседний блок имеют неквадратную форму, может отличаться от способа получения MPM, когда текущий блок имеет квадратную форму, а соседний блок имеет неквадратную форму.Alternatively, MPM candidates can be obtained taking into account the shape of the current block and the shape of the neighboring block. For example, the method for obtaining the MPM when both the current block and the adjacent block are non-square in shape may be different from the method for obtaining the MPM when the current block is square in shape and the adjacent block is in a non-square shape.

MPM в списке MPM могут быть переставлены (или переупорядочены) с учетом по меньшей мере одного из размера текущего блока, формы текущего блока, размера соседнего блока и формы соседнего блока. В данном случае перестановка указывает переприсвоение индексов, присвоенных каждому из MPM. Например, меньший индекс может быть присвоен тому же MPM, что и режим внутреннего предсказания соседнего блока, имеющего такие же размер или форму, как и у текущего блока.The MPMs in the MPM list may be permuted (or reordered) based on at least one of the size of the current block, the shape of the current block, the size of the adjacent block, and the shape of the adjacent block. In this case, the permutation indicates a reassignment of the indices assigned to each of the MPMs. For example, a smaller index may be assigned to the same MPM as the intra prediction mode of a neighboring block having the same size or shape as the current block.

Предполагается, что MPM[0] и MPM[1] установлены равными режиму внутреннего предсказания candIntraPredA левого соседнего блока и режиму внутреннего предсказания candIntraPredB верхнего соседнего блока соответственно.It is assumed that MPM[0] and MPM[1] are set to the intra prediction mode candIntraPredA of the left neighbor block and the intra prediction mode candIntraPredB of the top neighbor block, respectively.

Когда текущий блок и верхний соседний блок имеют неквадратную форму, ширина которой больше, чем высота, MPM могут быть переставлены таким образом, что режим внутреннего предсказания candIntraPredB верхнего соседнего блока может иметь меньший индекс. То есть candIntraPredB может быть переставлен на место MPM[0], а candIntraPredA может быть переставлен на место MPM[1].When the current block and the upper neighboring block have a non-square shape whose width is greater than the height, the MPMs may be rearranged such that the intra prediction mode candIntraPredB of the upper neighboring block may have a smaller index. That is, candIntraPredB can be swapped to MPM[0], and candIntraPredA can be swapped to MPM[1].

Альтернативно, когда текущий блок и верхний соседний блок имеют неквадратную форму, высота которой больше, чем ширина, MPM могут быть переставлены таким образом, что режим внутреннего предсказания candIntraPredB верхнего соседнего блока имеет меньший индекс. То есть candIntraPredB может быть переставлен на место MPM[0], а candIntraPredA может быть переставлен на место MPM[1].Alternatively, when the current block and the upper neighboring block have a non-square shape whose height is greater than the width, the MPMs can be rearranged such that the intra prediction mode candIntraPredB of the upper neighboring block has a smaller index. That is, candIntraPredB can be swapped to MPM[0], and candIntraPredA can be swapped to MPM[1].

Альтернативно, когда текущий блок и верхний соседний блок имеют квадратную форму, MPM могут быть переставлены таким образом, что режим внутреннего предсказания candIntraPredB верхнего соседнего блока имеет меньший индекс. То есть candIntraPredB может быть переставлен на место MPM[0], а candIntraPredA может быть переставлен на место MPM[1].Alternatively, when the current block and the upper neighboring block are square-shaped, the MPMs can be rearranged such that the intra prediction mode candIntraPredB of the upper neighboring block has a smaller index. That is, candIntraPredB can be swapped to MPM[0], and candIntraPredA can be swapped to MPM[1].

Вместо перестановки MPM, когда candIntraPredX изначально присвоен MPM, можно учесть по меньшей мере одно из размера текущего блока, формы текущего блока, размера соседнего блока и формы соседнего блока.Instead of permuting the MPM, when candIntraPredX is initially assigned to the MPM, at least one of the size of the current block, the shape of the current block, the size of the adjacent block, and the shape of the adjacent block can be considered.

MPM могут быть переставлены на основании размера или формы текущего блока. Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, MPM могут быть переставлены в убывающем порядке. С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, MPM могут быть переставлены в возрастающем порядке.MPMs can be rearranged based on the size or shape of the current block. For example, when the current block has a non-square shape whose width is greater than its height, the MPMs may be rearranged in descending order. On the other hand, when the current block has a non-square shape whose height is greater than its width, the MPMs can be rearranged in ascending order.

Полученное остаточное видео может быть получено путем вычитания видео предсказания из первоначального видео. В этом случае, когда остаточное видео изменяется на частотную область, субъективное качество видео существенно не снижается, хотя высокочастотные компоненты удалены из частотных компонентов. Соответственно, когда значения высокочастотных компонентов конвертируются в небольшие или значения высокочастотных компонентов установлены равными 0, имеет место эффект увеличения эффективности сжатия без генерирования существенного визуального искажения. Отражая эту характеристику, текущий блок может быть преобразован для разложения остаточного видео на двумерные частотные компоненты. Преобразование может быть выполнено с использованием метода преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST).The resulting residual video can be obtained by subtracting the prediction video from the original video. In this case, when the residual video is changed to the frequency domain, the subjective quality of the video is not significantly reduced although the high-frequency components are removed from the frequency components. Accordingly, when the high-frequency component values are converted to small values or the high-frequency component values are set to 0, the effect of increasing compression efficiency occurs without generating significant visual distortion. Reflecting this characteristic, the current block can be transformed to decompose the residual video into two-dimensional frequency components. The conversion can be done using a transform method such as discrete cosine transform (DCT) or discrete sine transform (DST).

DCT раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием косинусного преобразования, а DST раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием синусного преобразования. В результате преобразования остаточного видео частотные компоненты могут быть выражены в виде базового видео. Например, когда преобразование DCT выполнено в отношении блока размером N×N, могут быть получены компоненты базовой схемы в количестве N2. Размер каждого из компонентов базовой схемы, включенных в блок размером N×N, может быть получен посредством преобразования. Согласно методу преобразования, используемому для этого, размер компонента базовой схемы может называться коэффициентом DCT или коэффициентом DST.DCT decomposes (or transforms) the residual video into two-dimensional frequency components using a cosine transform, and DST decomposes (or transforms) the residual video into two-dimensional frequency components using a sine transform. As a result of the residual video transformation, the frequency components can be expressed as the base video. For example, when DCT is performed on an N×N block, N 2 base circuit components can be obtained. The size of each of the base circuit components included in an N×N block can be obtained through transformation. According to the conversion method used for this, the component size of the underlying circuit can be called the DCT coefficient or the DST coefficient.

Метод преобразования DCT в основном используют для преобразования видео, в котором распределяют многие ненулевые низкочастотные компоненты. Метод преобразования DST в основном используют для видео, в которых распределяют многие высокочастотные компоненты.The DCT conversion method is mainly used for video conversion in which many non-zero low-frequency components are distributed. The DST conversion method is mainly used for videos in which many high-frequency components are distributed.

Остаточное видео может быть преобразовано с использованием метода преобразования, отличного от DCT или DST.The residual video may be converted using a conversion method other than DCT or DST.

Далее преобразование остаточного видео в двумерные частотные компоненты будет называться двумерным преобразованием видео. Кроме того, размер компонентов базовой схемы, полученный в результате преобразования, называется коэффициентом преобразования. Например, коэффициент преобразования может означать коэффициент DCT или коэффициент DST. Когда применены как первое преобразование, так и второе преобразование, описанные ниже, коэффициент преобразования может означать размер компонента базовой схемы, сгенерированного в результате второго преобразования.In the following, the conversion of residual video into two-dimensional frequency components will be referred to as two-dimensional video conversion. In addition, the size of the base circuit components resulting from the transformation is called the transformation factor. For example, the conversion factor can mean a DCT factor or a DST factor. When both the first transform and the second transform described below are applied, the transform factor may indicate the size of the base circuit component generated as a result of the second transform.

Метод преобразования может быть определен для каждого блока. Метод преобразования может быть определен на основании по меньшей мере одного из режима кодирования с предсказанием текущего блока, размера текущего блока и размера текущего блока. Например, когда текущий блок кодируется в режиме внутреннего предсказания, а размер текущего блока меньше, чем N×N, преобразование может быть выполнено с использованием метода преобразования DST. С другой стороны, когда приведенные выше условия не удовлетворяются, преобразование может быть выполнено с использованием метода преобразования DCT.The conversion method can be defined for each block. The transformation method may be determined based on at least one of a predictive coding mode of the current block, a size of the current block, and a size of the current block. For example, when the current block is encoded in the intra prediction mode and the size of the current block is smaller than N×N, the transformation can be performed using the DST transformation method. On the other hand, when the above conditions are not satisfied, the conversion can be done using the DCT conversion method.

Двумерное преобразование видео может не быть выполнено для некоторых блоков остаточного видео. Невыполнение двумерного преобразования видео может называться пропуском преобразования. Когда применен пропуск преобразования, квантование может быть применено к остаточным коэффициентам, которые не были преобразованы.2D video conversion may not be performed for some residual video blocks. Failure to perform 2D video conversion may be referred to as skip conversion. When skip transform is applied, quantization can be applied to the residual coefficients that were not transformed.

После преобразования текущего блока с использованием DCT или DST преобразованный текущий блок может быть преобразован повторно. В этом случае преобразование на основании DCT или DST может быть определено как первое преобразование, а повторное преобразование блока, к которому применено первое преобразование, может быть определено как второе преобразование.After converting the current block using DCT or DST, the converted current block can be converted again. In this case, the transformation based on the DCT or DST can be defined as the first transform, and the retransformation of the block to which the first transform is applied can be defined as the second transform.

Первое преобразование может быть выполнено с использованием любого из множества кандидатов-основ преобразования. Например, первое преобразование может быть выполнено с использованием любого из DCT2, DCT8 или DCT7.The first transformation may be performed using any of a variety of candidate transformation bases. For example, the first conversion may be performed using any of DCT2, DCT8 or DCT7.

Разные основы преобразования могут быть использованы для горизонтального направления и вертикального направления. Информация, указывающая комбинацию основы преобразования в горизонтальном направлении и основы преобразования в вертикальном направлении, может быть передана посредством битового потока.Different transformation bases can be used for the horizontal direction and the vertical direction. Information indicating a combination of a translation base in the horizontal direction and a transformation basis in the vertical direction may be transmitted by a bit stream.

Элементы для выполнения первого преобразования и второго преобразования могут быть разными. Например, первое преобразование может быть выполнено в отношении блока 8×8, а второе преобразование может быть выполнено в отношении подблока размером 4×4 из преобразованного блока 8×8. В этом случае коэффициенты преобразования остаточных участков, в отношении которых не было выполнено второе преобразование, могут быть установлены равными 0.The elements for performing the first transformation and the second transformation may be different. For example, the first transformation may be performed on an 8x8 block, and the second transformation may be performed on a 4x4 subblock of the transformed 8x8 block. In this case, the transformation coefficients of the residual areas for which the second transformation has not been performed can be set to 0.

Альтернативно первое преобразование может быть выполнено в отношении блока 4×4, а второе преобразование может быть выполнено в отношении участка размером 8×8, содержащего преобразованный блок 4×4.Alternatively, the first transform may be performed on the 4x4 block and the second transform may be performed on the 8x8 portion containing the transformed 4x4 block.

Информация, указывающая, было ли выполнено второе преобразование, может быть передана посредством битового потока.Information indicating whether the second conversion has been performed may be transmitted via the bit stream.

Декодер может выполнять обратное преобразование второго преобразования (второе обратное преобразование) и может выполнять обратное преобразование первого преобразования (первое обратное преобразование) в отношении результата обратного преобразования. В результате выполнения второго обратного преобразования и первого обратного преобразования могут быть получены остаточные сигналы для текущего блока.The decoder may invert the second transform (second inverse transform) and may inverse the first transform (first inverse transform) with respect to the result of the inverse transform. By performing the second deconversion and the first deconversion, residual signals for the current block can be obtained.

Квантование предназначено для уменьшения энергии блока, и процесс квантования включает процесс разделения коэффициента преобразования на конкретное постоянное значение. Постоянное значение может быть получено с помощью параметра квантования, и параметр квантования может быть определен как значение от 1 до 63.Quantization is designed to reduce the energy of a block, and the quantization process involves the process of dividing the conversion coefficient into a specific constant value. A constant value can be obtained using a quantization parameter, and the quantization parameter can be defined as a value from 1 to 63.

Когда кодер выполняет преобразование и квантование, декодер может получать остаточный блок путем обратного квантования и обратного преобразования. Декодер может получать восстановленный блок для текущего блока путем сложения блока предсказания и остаточного блока.When the encoder performs the transform and quantization, the decoder can obtain the residual block by inverse quantization and inverse transform. The decoder can obtain a reconstructed block for the current block by adding the prediction block and the residual block.

Когда получают восстановленный блок текущего блока, потеря информации, происходящая в процессе квантования и кодирования, может быть уменьшена посредством фильтрования в контуре. Фильтр в контуре может включать по меньшей мере один из деблочного фильтра, фильтра адаптивного смещения отсчета (SAO) и адаптивного контурного фильтра (ALF). Далее восстановленный блок перед применением фильтра в контуре называется первым восстановленным блоком, а восстановленный блок после применения фильтра в контуре называется вторым восстановленным блоком.When the reconstructed block of the current block is obtained, the information loss occurring in the quantization and encoding process can be reduced by in-loop filtering. The filter in the loop may include at least one of a deblocking filter, an adaptive sample offset filter (SAO), and an adaptive loop filter (ALF). In the following, the reconstructed block before applying the filter in the loop is called the first reconstructed block, and the reconstructed block after applying the filter in the loop is called the second reconstructed block.

Второй восстановленный блок может быть получен путем применения по меньшей мере одного из деблочного фильтра, SAO и ALF к первому восстановленному блоку. В этом случае SAO или ALF могут быть применены после применения деблочного фильтра.The second reconstructed block may be obtained by applying at least one of a deblocking filter, SAO, and ALF to the first reconstructed block. In this case, SAO or ALF can be applied after applying the deblocking filter.

Деблочный фильтр предназначен для уменьшения ухудшения качества видео (блочного артефакта) на границе блока, которое происходит при выполнении квантования в отношении отдельных блоков. Для применения деблочного фильтра может быть определен качественный показатель блока (BS) между первым восстановленным блоком и соседним восстановленным блоком.The deblocking filter is designed to reduce the video quality degradation (block artifact) at the block boundary that occurs when performing quantization on individual blocks. To apply a deblocking filter, a block quality score (BS) between the first reconstructed block and the adjacent reconstructed block can be determined.

На фиг. 30 представлена блок-схема, изображающая процесс определения качественного показателя блока.In fig. 30 is a flowchart illustrating the process of determining the quality indicator of a block.

В примере, показанном на фиг. 30, P обозначает первый восстановленный блок, а Q обозначает соседний восстановленный блок. В данном случае соседний восстановленный блок может представлять собой блок, смежный с левой стороной или верхней стороной текущего блока.In the example shown in FIG. 30, P denotes the first reconstructed block, and Q denotes the adjacent reconstructed block. In this case, the adjacent reconstructed block may be a block adjacent to the left side or top side of the current block.

В примере, показанном на фиг. 30, показано, что качественный показатель блока определен с учетом режимов кодирования с предсказанием P и Q, того, включен ли ненулевой коэффициент преобразования, того, выполнено ли предсказание, осуществляемое между изображениями, с использованием того же опорного изображения, и того, является ли значение разницы векторов движения большей или равной пороговому значению.In the example shown in FIG. 30, it is shown that the block quality is determined taking into account the P and Q predictive coding modes, whether a non-zero transform coefficient is included, whether inter-picture prediction is performed using the same reference picture, and whether the value the difference between motion vectors is greater than or equal to the threshold value.

Следует ли применять деблочный фильтр, можно определить на основании качественного показателя блока. Например, когда качественный показатель блока равен 0, фильтрование можно не выполнять.Whether a deblock filter should be used can be determined based on the quality of the block. For example, when the block quality score is 0, filtering may not be performed.

SAO предназначен для уменьшения явления в виде колец (артефакта в виде колец), которое происходит при выполнении квантования в частотной области. SAO может быть выполнено путем добавления или вычитания смещения, определенного с учетом схемы первого восстановленного видео. Способ определения смещения включает смещение по краю (EO) или смещение по полосам. EO обозначает способ определения смещения текущего отсчета согласно схеме окружающих пикселей. BO обозначает способ применения обычного смещения к набору пикселей, имеющих похожие значения яркости на участке. В частности, яркость пикселей может быть разделена на 32 равные секции, и пиксели, имеющие похожие значения яркости, могут быть установлены как один набор. Например, четыре смежные полосы из 32 полос могут быть установлены как одна группа, и одинаковое значение смещения может быть применено к отсчетам, принадлежащим к четырем полосам.SAO is designed to reduce the ringing phenomenon (ring artifact) that occurs when performing frequency domain quantization. SAO can be performed by adding or subtracting an offset determined given the design of the first recovered video. The method for determining the offset includes edge offset (EO) or stripe offset. EO denotes a method for determining the offset of the current sample according to the pattern of surrounding pixels. BO denotes a method of applying a common bias to a set of pixels having similar brightness values in an area. Specifically, the brightness of pixels can be divided into 32 equal sections, and pixels having similar brightness values can be set as one set. For example, four adjacent bands of 32 bands can be set as one group, and the same offset value can be applied to the samples belonging to the four bands.

ALF представляет собой способ генерирования второго восстановленного видео путем применения фильтра, имеющего предварительно заданный размер/форму, к первому восстановленному видео или восстановленному видео, к которому был применен деблочный фильтр. В уравнении 21 показан пример применения ALF.ALF is a method of generating a second restored video by applying a filter having a predetermined size/shape to a first restored video or a restored video to which a deblocking filter has been applied. Equation 21 shows an example application of ALF.

[Уравнение 21][Equation 21]

Любой из предварительно заданных фильтров-кандидатов может быть выбран элементом изображения, элементом кодового дерева, блоком кодирования, блоком предсказания или блоком преобразования. Каждый из фильтров-кандидатов может отличаться либо по размеру, либо по форме.Any of the predefined candidate filters may be selected as an image element, a code tree element, an encoding block, a prediction block, or a transform block. Each of the candidate filters may differ in either size or shape.

На фиг. 31 представлен вид, показывающий предварительно заданные фильтры-кандидаты.In fig. 31 is a view showing preset candidate filters.

Как показано в примере на фиг. 31, может быть выбрана по меньшей мере одна из ромбовидных форм 5x5, 7x7 и 9x9.As shown in the example in FIG. 31, at least one of the 5x5, 7x7, and 9x9 diamond shapes may be selected.

Только ромбовидная форма размером 5x5 может быть использована для компонента цветности.Only the 5x5 diamond shape can be used for the chroma component.

Для кодирования в реальном времени или с низкой задержкой видео в высоком разрешении, таких как панорамные видео, 360-градусные видео, или видео 4K/8K UHD (сверхвысокой четкости), можно учесть способ разбиения изображения на множество участков и кодирования/декодирования множества участков параллельно. Для этого изображение может быть разбито на тайлы, т.е. базовый элемент параллельного кодирования/декодирования, и тайлы могут быть обработаны параллельно.For real-time or low-latency encoding of high-definition video, such as panoramic videos, 360-degree videos, or 4K/8K UHD (ultra high-definition) video, a method for dividing the image into multiple sections and encoding/decoding multiple sections in parallel can be considered. . To do this, the image can be divided into tiles, i.e. basic element of parallel encoding/decoding, and tiles can be processed in parallel.

Тайлы могут быть ограничены, чтобы иметь прямоугольную форму. При кодировании/декодировании тайла данные других тайлов не используются. Таблица вероятностей контекста контекстно-адаптивного двоичного арифметического кодирования (CABAC) может быть инициализирована элементом тайла, и может быть установлено не применять фильтр в контуре на границах тайлов.Tiles can be constrained to be rectangular in shape. When encoding/decoding a tile, data from other tiles is not used. The Context Adaptive Binary Arithmetic Coding (CABAC) context probability table may be initialized by the tile element, and may be set not to apply an in-loop filter at tile boundaries.

На фиг. 32 представлен вид, показывающий пример разбиения изображения на множество тайлов.In fig. 32 is a view showing an example of dividing an image into a plurality of tiles.

Тайл содержит по меньшей мере один элемент кодового дерева, и граница тайла перекрывается с границей элемента кодового дерева.The tile contains at least one code tree element, and the tile's boundary overlaps with the border of the code tree element.

Как показано в примере на фиг. 32, изображение может быть разбито на множество наборов тайлов. Информация для разбиения изображения на множество наборов тайлов может быть передана посредством битового потока.As shown in the example in FIG. 32, the image may be divided into multiple sets of tiles. Information for dividing an image into multiple sets of tiles may be transmitted via a bitstream.

Согласно типу разбиения изображения тайлы могут иметь одинаковый размер во всех участках за исключением границ изображения.According to the type of image partitioning, tiles can have the same size in all areas except for the image borders.

Альтернативно изображение может быть разбито таким образом, что тайлы, смежные в горизонтальном направлении, могут иметь одинаковую высоту, или изображение может быть разбито таким образом, что тайлы, смежные в вертикальном направлении, могут иметь одинаковую ширину.Alternatively, the image may be sliced such that tiles adjacent in the horizontal direction may have the same height, or the image may be sliced such that tiles adjacent in the vertical direction may be the same width.

Так как изображение разбивается с использованием по меньшей мере одной из вертикальной линии и горизонтальной линии, пересекающей изображение, каждый из тайлов принадлежит к своему столбцу и/или строке. В варианте осуществления, описанном ниже, столбец, к которому принадлежит тайл, называется столбцом тайлов, а строка, к которой принадлежит тайл, называется строкой тайлов.Since the image is divided using at least one of a vertical line and a horizontal line intersecting the image, each of the tiles belongs to its own column and/or row. In the embodiment described below, the column to which a tile belongs is called a tile column, and the row to which a tile belongs is called a tile row.

Информация для определения формы разбиения изображения на тайлы может быть передана посредством битового потока. Информация может быть кодирована и передана с помощью набора параметров изображения или набора параметров последовательности. Информация предназначена для определения количества тайлов в изображении, и может содержать информацию, указывающую количество строк тайлов, и информацию, указывающую количество столбцов тайлов. Например, элемент синтаксиса num_tile_columns_minus1 указывает значение, полученное путем вычитания 1 из количества столбцов тайлов, а элемент синтаксиса num_tile_rows_minus1 указывает значение, полученное путем вычитания 1 из количества строк тайлов.Information for determining the tile form of the image may be transmitted via a bitstream. The information may be encoded and transmitted using a picture parameter set or a sequence parameter set. The information is for determining the number of tiles in the image, and may include information indicating the number of rows of tiles and information indicating the number of columns of tiles. For example, the num_tile_columns_minus1 syntax element specifies the value obtained by subtracting 1 from the number of tile columns, and the num_tile_rows_minus1 syntax element specifies the value obtained by subtracting 1 from the number of tile rows.

В примере, показанном на фиг. 32, поскольку количество столбцов тайлов составляет 4, а количество строк тайлов составляет 3, num_tile_columns_minus1 может быть равен 3, в num_tile_rows_minus1 может быть равен 2.In the example shown in FIG. 32, since the number of tile columns is 4 and the number of tile rows is 3, num_tile_columns_minus1 can be 3, num_tile_rows_minus1 can be 2.

Когда изображение разбито на множество тайлов, информация, указывающая размер тайла, может быть передана посредством битового потока. Например, когда изображение разбито на множество столбцов тайлов, информация, указывающая ширину каждого столбца тайлов, передается посредством битового потока, а когда изображение разбито на множество строк тайлов, информация, указывающая высоту каждой строки тайлов, передается посредством битового потока. Например, элемент синтаксиса column_width_minus1, указывающий ширину столбца тайлов, может быть кодирован и передан для каждого столбца тайлов, и элемент синтаксиса row_height_minus1, указывающий высоту строки тайлов, может быть кодирован и передан для каждой строки тайлов.When an image is divided into multiple tiles, information indicating the size of the tile may be transmitted via a bitstream. For example, when an image is divided into a plurality of tile columns, information indicating the width of each tile column is transmitted via a bitstream, and when an image is divided into a plurality of tile rows, information indicating the height of each tile row is transmitted via a bitstream. For example, a column_width_minus1 syntax element indicating the width of a column of tiles may be encoded and transmitted for each tile column, and a row_height_minus1 syntax element indicating the height of a row of tiles may be encoded and transmitted for each row of tiles.

Column_width_minus1 может указывать значение, полученное путем вычитания 1 из ширины столбца тайлов, а row_height_minus1 может указывать значение, полученное путем вычитания 1 из высоты строки тайлов.Column_width_minus1 may indicate a value obtained by subtracting 1 from the width of a column of tiles, and row_height_minus1 may indicate a value obtained by subtracting 1 from the height of a row of tiles.

Кодирование column_width_minus1 может быть пропущено для последнего столбца тайлов, а кодирование row_height_minus1 может быть пропущено для последней строки тайлов. Ширина последнего столбца тайлов и высота последней строки могут быть получены с учетом размера изображения.The column_width_minus1 encoding can be skipped for the last column of tiles, and the row_height_minus1 encoding can be skipped for the last row of tiles. The width of the last column of tiles and the height of the last row can be obtained taking into account the image size.

Декодер может определять размер тайла на основании column_width_minus1 и row_height_minus1.The decoder can determine the tile size based on column_width_minus1 and row_height_minus1.

В таблице 9 показана синтаксическая таблица для разбиения изображения на тайлы.Table 9 shows the syntax table for dividing an image into tiles.

Как показано в таблице 9, могут быть переданы элемент синтаксиса num_tile_columns_minus1, указывающий количество столбцов тайлов, и элемент синтаксиса num_tile_rows_minus1, указывающий количество строк.As shown in Table 9, a num_tile_columns_minus1 syntax element indicating the number of tile columns and a num_tile_rows_minus1 syntax element indicating the number of rows may be passed.

Далее может быть передан элемент синтаксиса uniform_spacing_flag, указывающий, разбито ли изображение на тайлы равного размера. Когда uniform_spacing_flag является истинным, тайлы в остальной области за исключением границ изображения могут быть разбиты на равные размеры.Next, a uniform_spacing_flag syntax element can be passed, indicating whether the image is divided into tiles of equal size. When uniform_spacing_flag is true, tiles in the rest of the area excluding the borders of the image can be spaced equally.

Когда uniform_spacing_flag является ложным, могут быть переданы элемент синтаксиса column_width_minus1, указывающий ширину каждого столбца тайлов, и элемент синтаксиса row_height_minus1, указывающий высоту каждой строки тайлов.When uniform_spacing_flag is false, the column_width_minus1 syntax element indicating the width of each column of tiles and the row_height_minus1 syntax element indicating the height of each row of tiles may be passed.

Элемент синтаксиса loop_filter_across_tiles_enabled_flag указывает, разрешено ли использовать контурный фильтр на границах тайла.The syntax element loop_filter_across_tiles_enabled_flag specifies whether the edge filter is enabled on tile boundaries.

Столбец тайлов, имеющий наименьшую ширину из столбцов тайлов, может называться тайлом минимальной ширины, а строка тайлов, имеющая наименьшую высоту из строк тайлов, может называться тайлом минимальной высоты. Информация, указывающая ширину тайла минимальной ширины, и информация, указывающая высоту тайла минимальной высоты, могут быть переданы посредством битового потока. Например, элемент синтаксиса min_column_width_minus1 указывает значение, полученное путем вычитания 1 из ширины тайла минимальной ширины, а элемент синтаксиса min_row_height_minus1 указывает значение, полученное путем вычитания 1 из высоты тайла минимальной высоты.A column of tiles having the smallest width of the tile columns may be called a minimum-width tile, and a row of tiles having the smallest height of the tile rows may be called a minimum-height tile. Information indicating the width of a minimum-width tile and information indicating a height of a minimum-height tile may be transmitted by a bit stream. For example, the syntax element min_column_width_minus1 specifies the value obtained by subtracting 1 from the width of the minimum-width tile, and the min_row_height_minus1 syntax element specifies the value obtained by subtracting 1 from the height of the minimum-height tile.

Информация, указывающая значение разницы с минимальной шириной тайла может быть передана для каждого столбца тайлов. Например, элемент синтаксиса diff_column_width указывает значение разницы по ширине между текущим столбцом тайлов и минимальным столбцом тайлов. Значение разницы по ширине может быть выражено как значение разницы по количеству столбцов элементов кодового дерева. Декодер может получать ширину текущего тайла путем сложения ширины тайла минимальной ширины, полученной на основании min_column_width_minus1, и значения разницы по ширине, полученного на основании diff_column_width.Information indicating the difference value with the minimum tile width can be passed for each column of tiles. For example, the diff_column_width syntax element specifies the value of the difference in width between the current tile column and the minimum tile column. The value of the difference in width can be expressed as the value of the difference in the number of columns of code tree elements. The decoder can obtain the width of the current tile by adding the minimum width tile width obtained from min_column_width_minus1 and the difference width value obtained from diff_column_width.

Кроме того, информация, указывающая значение разницы с минимальной высотой тайла, может быть передана для каждой строки тайлов. Например, элемент синтаксиса diff_row_height указывает значение разницы по высоте между текущей строкой тайлов и минимальной строкой тайлов. Значение разницы по высоте может быть выражено как значение разницы по количеству строк элементов кодового дерева. Декодер может получать высоту текущего тайла путем сложения высоты тайла минимальной высоты, полученной на основании min_row_height_minus1, и значения разницы по высоте, полученного на основании diff_row_height.In addition, information indicating the difference value with the minimum tile height may be transmitted for each row of tiles. For example, the diff_row_height syntax element specifies the height difference value between the current tile row and the minimum tile row. The value of the difference in height can be expressed as the value of the difference in the number of rows of code tree elements. The decoder can obtain the height of the current tile by adding the minimum height tile height obtained from min_row_height_minus1 and the height difference value obtained from diff_row_height.

В таблице 10 показана синтаксическая таблица, содержащая информацию о разнице по размеру.Table 10 shows a syntax table containing size difference information.

Изображение может быть разбито таким образом, что смежные в горизонтальном направлении тайлы могут иметь разную высоту, или изображение может быть разбито таким образом, что смежные в вертикальном направлении тайлы могут иметь разную ширину. Такой способ разбиения изображения может называться способом гибкого разбиения тайлов, и тайлы, разбитые посредством способа гибкого разбиения тайлов, могут называться гибкими тайлами.The image can be broken up so that horizontally adjacent tiles can have different heights, or the image can be broken up so that vertically adjacent tiles can have different widths. Such an image dividing method may be called a flexible tiling method, and tiles divided by the flexible tiling method may be called flexible tiles.

На фиг. 33 представлен вид, показывающий схему разбиения изображения согласно методу получения гибких тайлов.In fig. 33 is a view showing an image division scheme according to the flexible tile production method.

Порядок поиска тайлов, сгенерированных путем разбиения изображения, может повторять предварительно определенный порядок сканирования. Кроме того, индекс может быть присвоен каждому из тайлов согласно предварительно определенному порядку сканирования.The search order of tiles generated by image partitioning may follow a predefined scanning order. In addition, an index can be assigned to each of the tiles according to a predefined scan order.

Порядок сканирования тайлов может быть любым из растрового сканирования, диагонального сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении. На фиг. 33(a)-33(d) соответственно показаны примеры присвоения индекса каждому из тайлов согласно растровому сканированию, диагональному сканированию, сканированию в вертикальном направлении и сканированию в горизонтальном направлении.The tile scanning order can be any of raster scanning, diagonal scanning, vertical scanning, and horizontal scanning. In fig. 33(a)-33(d) respectively show examples of assigning an index to each of the tiles according to raster scanning, diagonal scanning, vertical direction scanning and horizontal scanning.

Следующий порядок сканирования может быть определен согласно размеру или положению текущего тайла. Например, когда высота текущего тайла и высота тайла, смежного с правой стороной текущего тайла, различаются (например, когда высота соседнего справа тайла больше, чем высота текущего тайла), тайл, расположенный с крайней левой стороны из тайлов, расположенных на той же вертикальной линии, что и тайл, смежный с нижней стороной текущего тайла, может быть определен как цель сканирования после текущего тайла.The next scanning order can be determined according to the size or position of the current tile. For example, when the height of the current tile and the height of the tile adjacent to the right side of the current tile are different (for example, when the height of the tile adjacent to the right is greater than the height of the current tile), the tile located on the leftmost side of the tiles located on the same vertical line , that the tile adjacent to the bottom side of the current tile can be defined as a scan target after the current tile.

Порядок сканирования тайлов может быть определен элементом изображения или последовательности.The order in which tiles are scanned can be determined by an image or sequence element.

Альтернативно порядок сканирования тайлов может быть определен с учетом размера первого тайла в изображении. Например, когда ширина первого тайла больше, чем высота, порядок сканирования тайлов может быть установлен как горизонтальное сканирование. Когда высота первого тайла больше, чем ширина, порядок сканирования может быть установлен как вертикальное сканирование. Когда ширина первого тайла равна высоте, порядок сканирования тайлов может быть установлен как растровое сканирование или диагональное сканирование.Alternatively, the order in which the tiles are scanned may be determined based on the size of the first tile in the image. For example, when the width of the first tile is greater than the height, the scanning order of the tiles can be set to horizontal scanning. When the height of the first tile is greater than the width, the scanning order can be set to vertical scanning. When the width of the first tile is equal to the height, the scanning order of the tiles can be set as raster scanning or diagonal scanning.

Информация, указывающая общее количество тайлов, может быть передана посредством битового потока. Например, когда применяется метод получения гибких тайлов, может быть передан элемент синтаксиса number_of_tiles_in_picture_minus2, полученный путем вычитания 2 из общего количества тайлов в изображении. Декодер может распознавать количество тайлов, содержащихся в текущем изображении, на основании number_of_tiles_in_picture_minus2.Information indicating the total number of tiles may be transmitted via a bitstream. For example, when using the flexible tiles method, the syntax element number_of_tiles_in_picture_minus2, obtained by subtracting 2 from the total number of tiles in the picture, may be passed. The decoder can recognize the number of tiles contained in the current picture based on number_of_tiles_in_picture_minus2.

В таблице 11 показана синтаксическая таблица, содержащая информацию о количестве тайлов.Table 11 shows a syntax table containing information about the number of tiles.

Для уменьшения количества битов, требуемых для кодирования размера тайла, может быть кодирована и передана информация, указывающая размер подтайла. Подтайл представляет собой базовый элемент, составляющий тайл, и каждый тайл может быть выполнен так, чтобы содержать по меньшей мере один подтайл. Подтайл может содержать один или более элементов кодового дерева.To reduce the number of bits required to encode the tile size, information indicating the size of the subtile may be encoded and transmitted. A subtile is the basic element that makes up a tile, and each tile can be configured to contain at least one subtile. A subtile may contain one or more code tree elements.

Например, элемент синтаксиса subtile_width_minus1 указывает значение, полученное путем вычитания 1 из ширины подтайла. Элемент синтаксиса subtile_height_minus1 указывает значение, полученное путем вычитания 1 из высоты подтайла.For example, the subtile_width_minus1 syntax element specifies the value obtained by subtracting 1 from the subtile's width. The subtile_height_minus1 syntax element specifies the value obtained by subtracting 1 from the subtile's height.

Может быть кодирована и передана информация, указывающая, имеют ли остальные тайлы, отличные от первого тайла, такой же размер, как у предыдущего тайла. Например, элемент синтаксиса use_previous_tile_size_flag указывает, является ли размер текущего тайла таким же, как и размер предыдущего тайла. Когда use_previous_tile_size_flag является истинным, это указывает, что размер текущего тайла является таким же, как и размер предыдущего тайла. Когда use_previous_tile_size_flag является ложным, может быть кодирована и передана информация, указывающая размер текущего тайла. Для первого тайла кодирование use_previous_tile_size_flag может быть пропущено, и значение флага может быть установлено как ложное.Information may be encoded and transmitted indicating whether other tiles other than the first tile are the same size as the previous tile. For example, the use_previous_tile_size_flag syntax element indicates whether the size of the current tile is the same as the size of the previous tile. When use_previous_tile_size_flag is true, it indicates that the size of the current tile is the same as the size of the previous tile. When use_previous_tile_size_flag is false, information indicating the size of the current tile can be encoded and transmitted. For the first tile, the use_previous_tile_size_flag encoding may be skipped and the flag may be set to false.

Информация, указывающая размер тайла, может содержать элемент синтаксиса tile_width_minus1[i], указывающий ширину i-го тайла, и элемент синтаксиса tile_height_minus1[i], указывающий высоту i-го тайла.The tile size information may comprise a tile_width_minus1[i] syntax element indicating the width of the i-th tile, and a tile_height_minus1[i] syntax element indicating the height of the i-th tile.

Информация, указывающая размер тайла, может указывать значение разницы с размером подтайла. Так как используется информация о размере подтайла, эффективность кодирования/декодирования может быть улучшена за счет уменьшения количества битов, требуемых для кодирования размера каждого тайла. Например, ширина i-го тайла tileWidth может быть получена на основании уравнения 22, показанного ниже, а высота i-го тайла tileHeight может быть получена на основании уравнения 23, показанного ниже.Information indicating the size of the tile may indicate a difference value with the size of the subtile. Since subtile size information is used, encoding/decoding efficiency can be improved by reducing the number of bits required to encode the size of each tile. For example, the width of the i-th tile tileWidth can be obtained based on Equation 22 shown below, and the height of the i-th tile tileHeight can be obtained based on Equation 23 shown below.

[Уравнение 22][Equation 22]

[Уравнение 23][Equation 23]

Альтернативно кодирование информации о размере подтайла может быть пропущено, и размер i-го тайла может быть кодирован как есть в виде информации о размере подтайла. Информация о размере подтайла необязательно может быть кодирована. Информация, указывающая, кодирована ли информация о размере подтайла, может быть передана посредством набора параметров видео, набора параметров последовательности или набора параметров изображения.Alternatively, encoding of the subtile size information may be skipped, and the size of the i-th tile may be encoded as is as subtile size information. The subtile size information may optionally be encoded. Information indicating whether the subtile size information is encoded may be conveyed by a video parameter set, a sequence parameter set, or an image parameter set.

Информация, связанная с размером тайла, описанная выше, может быть кодирована и передана как указывающая количество элементов кодового дерева. Например, column_width_minus1, min_column_width_minus1, subtile_width_minus1 или tile_width_minus1 могут указывать количество столбцов элементов кодового дерева, содержащихся в тайле. Кроме того, diff_column_width может указывать значение разницы между количеством столбцов элементов кодового дерева, содержащихся в тайле минимальной ширины, и количеством столбцов элементов кодового дерева, содержащихся в текущем тайле.The tile size-related information described above may be encoded and transmitted as indicating the number of code tree elements. For example, column_width_minus1, min_column_width_minus1, subtile_width_minus1, or tile_width_minus1 may indicate the number of columns of code tree elements contained in a tile. Additionally, diff_column_width can specify the difference value between the number of columns of code tree elements contained in the minimum width tile and the number of columns of code tree elements contained in the current tile.

Кроме того, row_height_minus1, min_row_height_minus1, subtile_height_minus1 или tile_height_minus1 может указывать количество строк элементов кодового дерева, содержащихся в тайле. Кроме того, diff_row_height может указывать значение разницы между количеством строк элементов кодового дерева, содержащихся в тайле минимальной высоты, и количеством строк элементов кодового дерева, содержащихся в текущем тайле.Additionally, row_height_minus1, min_row_height_minus1, subtile_height_minus1, or tile_height_minus1 may indicate the number of rows of code tree elements contained in the tile. Additionally, diff_row_height can indicate the difference value between the number of code tree rows contained in the minimum height tile and the number of code tree rows contained in the current tile.

Декодер может определять размер тайла на основании количества столбцов элементов кодового дерева и/или количества строк элементов кодового дерева, полученных на основании элементов синтаксиса и размера элемента кодового дерева. Например, ширина i-го тайла может быть установлена равной (tile_width_minus1[i] + 1)*(ширина элемента кодового дерева), а высота i-го тайла может быть установлена равной (tile_height_minus1[i] + 1)*(высота элемента кодового дерева).The decoder may determine the tile size based on the number of columns of code tree elements and/or the number of rows of code tree elements obtained based on the syntax elements and size of the code tree element. For example, the width of the i-th tile can be set to (tile_width_minus1[i] + 1)*(width of the code tree element), and the height of the i-th tile can be set to (tile_height_minus1[i] + 1)*(height of the code tree element tree).

В то же время, информация, указывающая размер элемента кодового дерева, может быть передана посредством набора параметров последовательности или набора параметров изображения.At the same time, information indicating the size of a code tree element may be transmitted by a sequence parameter set or an image parameter set.

В таблице 11 описано, что используется элемент синтаксиса use_previous_tile_size_flag, указывающий, является ли размер текущего тайла таким же, как и размер предыдущего тайла. В качестве другого примера может быть кодирована и передана информация, указывающая, является ли ширина текущего тайла такой же, как и ширина предыдущего тайла, или информация, указывающая, является ли высота текущего тайла такой же, как и высота предыдущего тайла.Table 11 describes that the use_previous_tile_size_flag syntax element is used to indicate whether the size of the current tile is the same as the size of the previous tile. As another example, information indicating whether the width of the current tile is the same as the width of the previous tile, or information indicating whether the height of the current tile is the same as the height of the previous tile may be encoded and transmitted.

В таблице 12 показана синтаксическая таблица, содержащая информацию, указывающую, является ли ширина текущего тайла такой же, как и ширина предыдущего тайла.Table 12 shows a syntax table containing information indicating whether the width of the current tile is the same as the width of the previous tile.

Элемент синтаксиса use_previous_tile_width_flag указывает, является ли ширина текущего тайла такой же, как и ширина предыдущего тайла. Когда use_previous_tile_width_flag является истинным, ширина текущего тайла может быть установлена такой же, как и ширина предыдущего тайла. В этом случае кодирование информации, указывающей ширину текущего тайла, может быть пропущено, и ширина текущего тайла может быть получена из ширины предыдущего тайла.The use_previous_tile_width_flag syntax element specifies whether the width of the current tile is the same as the width of the previous tile. When use_previous_tile_width_flag is true, the width of the current tile can be set to the same as the width of the previous tile. In this case, the encoding of information indicating the width of the current tile can be skipped, and the width of the current tile can be obtained from the width of the previous tile.

Когда use_previous_tile_width_flag является ложным, может быть передана информация, указывающая ширину текущего тайла. Например, tile_width_minus1[i] может указывать значение, полученное путем вычитания 1 из ширины i-го тайла.When use_previous_tile_width_flag is false, information indicating the width of the current tile may be passed. For example, tile_width_minus1[i] could indicate a value obtained by subtracting 1 from the width of the i-th tile.

Элемент синтаксиса use_previous_tile_width_flag может быть кодирован и передан только тогда, когда определено, что размер текущего тайла отличается от размера предыдущего тайла (например, когда значение use_previous_tile_size_flag равно 0).The use_previous_tile_width_flag syntax element can be encoded and passed only when it is determined that the size of the current tile is different from the size of the previous tile (for example, when the value of use_previous_tile_size_flag is 0).

Tile_width_minus1[i] может иметь значение, полученное путем вычитания 1 из количества столбцов элементов кодового дерева, содержащихся в i-м тайле. Декодер может получать количество столбцов элементов кодового дерева, принадлежащих i-му тайлу, путем добавления 1 к tile_width_minus1[i], и вычислять ширину тайла путем умножения полученного значения на ширину элемента кодового дерева.Tile_width_minus1[i] can be the value obtained by subtracting 1 from the number of columns of code tree elements contained in the i-th tile. The decoder can obtain the number of columns of code tree elements belonging to the i-th tile by adding 1 to tile_width_minus1[i], and calculate the width of the tile by multiplying the resulting value by the width of the code tree element.

В таблице 13 показана синтаксическая таблица, дополнительно содержащая информацию, указывающую, является ли высота текущего тайла такой же, как и высота предыдущего тайла.Table 13 shows a syntax table further containing information indicating whether the height of the current tile is the same as the height of the previous tile.

Элемент синтаксиса use_previous_tile_height_flag указывает, является ли высота текущего тайла такой же, как и высота предыдущего тайла. Когда use_previous_tile_height_flag является истинным, высота текущего тайла может быть установлена такой же, как и высота предыдущего тайла. В этом случае кодирование информации, указывающей высоту текущего тайла, может быть пропущено, и высота текущего тайла может быть получена из высоты предыдущего тайла.The use_previous_tile_height_flag syntax element specifies whether the height of the current tile is the same as the height of the previous tile. When use_previous_tile_height_flag is true, the height of the current tile can be set to the same as the height of the previous tile. In this case, the encoding of information indicating the height of the current tile can be skipped, and the height of the current tile can be obtained from the height of the previous tile.

Когда use_previous_tile_height_flag является ложным, может быть передана информация, указывающая высоту текущего тайла. Например, tile_height_minus1[i] может указывать значение, полученное путем вычитания 1 из высоты i-го тайла.When use_previous_tile_height_flag is false, information indicating the height of the current tile can be passed. For example, tile_height_minus1[i] could indicate the value obtained by subtracting 1 from the height of the i-th tile.

Элемент синтаксиса use_previous_tile_height_flag может быть кодирован и передан только тогда, когда определено, что размер текущего тайла отличается от размера предыдущего тайла (например, когда значение use_previous_tile_size_flag равно 0). Кроме того, элемент синтаксиса use_previous_tile_height_flag может быть передан только тогда, когда use_previous_tile_width_flag является ложным.The use_previous_tile_height_flag syntax element can be encoded and passed only when it is determined that the size of the current tile is different from the size of the previous tile (for example, when the value of use_previous_tile_size_flag is 0). Additionally, the use_previous_tile_height_flag syntax element can only be passed when use_previous_tile_width_flag is false.

В таблице 12 показан пример случая использования use_previous_tile_width_flag, а в таблице 13 показан пример случая использования use_previous_tile_width_flag и use_previous_tile_height_flag. Хотя это не показано в приведенных выше таблицах, кодирование use_previous_tile_width_flag может быть пропущено, и может быть использовано только use_previous_tile_height_flag.Table 12 shows an example use case for use_previous_tile_width_flag, and Table 13 shows an example use case for use_previous_tile_width_flag and use_previous_tile_height_flag. Although not shown in the tables above, the encoding of use_previous_tile_width_flag can be omitted and only use_previous_tile_height_flag can be used.

Какой из use_previous_tile_height_flag и use_previous_tile_размер_flag будет использован, может быть определено на основании по меньшей мере одного из порядка сканирования тайлов, ширины и высоты первого тайла и ширины и высоты предыдущего тайла. Например, когда порядок сканирования тайлов является вертикальным направлением, может быть использован use_previous_tile_height_flag, тогда как когда порядок сканирования тайлов является горизонтальным направлением, может быть использован use_previous_tile_width_flag. Альтернативно, когда первый тайл или предыдущий тайл имеет неквадратную форму, ширина которой больше, чем высота, может быть использован use_previous_tile_width_flag, тогда как когда первый тайл или предыдущий тайл имеет неквадратную форму, высота которой больше, чем ширина, может быть использован use_previous_tile_height_flag.Which of use_previous_tile_height_flag and use_previous_tile_size_flag will be used can be determined based on at least one of the scanning order of the tiles, the width and height of the first tile, and the width and height of the previous tile. For example, when the tile scanning order is a vertical direction, use_previous_tile_height_flag can be used, whereas when the tile scanning order is a horizontal direction, use_previous_tile_width_flag can be used. Alternatively, when the first tile or previous tile has a non-square shape whose width is greater than its height, use_previous_tile_width_flag can be used, whereas when the first tile or previous tile has a non-square shape whose height is greater than its width, use_previous_tile_height_flag can be used.

Во время передачи количества тайлов, содержащихся в изображении, кодирование информации, связанной с размером тайла, может быть пропущено для последнего тайла.While transmitting the number of tiles contained in an image, encoding of information related to the tile size may be skipped for the last tile.

В таблице 14 показан пример, в котором кодирование информации о размере тайла пропущено для последнего тайла.Table 14 shows an example in which the encoding of tile size information is skipped for the last tile.

Когда указан размер тайлов, отличных от последнего тайла, оставшийся участок в изображении может быть установлен как последний тайл.When the size of tiles other than the last tile is specified, the remaining area in the image can be set as the last tile.

Каждому элементу кодового дерева может быть присвоен идентификатор для идентификации тайла, к которому принадлежит элемент кодового дерева (далее называемый ID тайла, TileID).Each code tree element may be assigned an identifier to identify the tile to which the code tree element belongs (hereinafter referred to as Tile ID).

На фиг. 34 представлен вид, показывающий пример присвоения ID тайла каждому элементу кодового дерева.In fig. 34 is a view showing an example of assigning a tile ID to each element of the code tree.

Такой же ID тайла может быть присвоен элементам кодового дерева, принадлежащим к тому же тайлу. В частности, N-й TileID может быть присвоен элементам кодового дерева, принадлежащим к тайлу N.The same tile ID can be assigned to code tree elements belonging to the same tile. In particular, the Nth TileID can be assigned to code tree elements belonging to tile N.

Переменные x и y, указывающие положение элемента кодового дерева в изображении, могут быть определены для определения ID тайла, присвоенного каждому элементу кодового дерева. В данном случае x обозначает значение, полученное путем деления координаты по оси x из положения (x0, y0) верхнего левого отсчета элемента кодового дерева на ширину элемента кодового дерева, а y обозначает значение, полученное путем деления координаты по оси y из положения (x0, y0) верхнего левого отсчета элемента кодового дерева на высоту элемента кодового дерева. В частности, x и y могут быть получены с помощью уравнений 24 и 25, показанных ниже.Variables x and y indicating the position of the code tree element in the image can be defined to determine the tile ID assigned to each code tree element. Here, x denotes the value obtained by dividing the x-coordinate from the position (x0, y0) of the top left sample of the code tree element by the width of the code tree element, and y denotes the value obtained by dividing the y-coordinate from the position (x0, y0) of the top left reference of the code tree element by the height of the code tree element. Specifically, x and y can be obtained using equations 24 and 25 shown below.

[Уравнение 24][Equation 24]

[Уравнение 25][Equation 25]

Присвоение ID тайла каждому элементу кодового дерева может быть выполнено с помощью процесса, описанного ниже.Assigning a tile ID to each code tree element can be done using the process described below.

i) Инициализация ID тайлаi) Tile ID initialization

ID тайла каждого элемента кодового дерева может быть инициализировано как значение, полученное путем вычитания 1 из количества тайлов в изображении.The tile ID of each code tree element can be initialized to a value obtained by subtracting 1 from the number of tiles in the image.

ii) Получение ID тайлаii) Obtaining tile ID

В варианте осуществления, описанном выше, было описано, что флаг, указывающий, разрешено ли применять фильтр в контуре на границах тайлов, передается посредством набора параметров изображения. Однако, когда установлено не использовать фильтр в контуре на всех границах тайлов, может возникнуть проблема снижения субъективного качества изображения и снижения эффективности кодирования.In the embodiment described above, it was described that a flag indicating whether an in-line filter is allowed to be applied at tile boundaries is passed through an image parameter set. However, when it is set not to use an in-line filter on all tile boundaries, the problem of reducing subjective image quality and reducing encoding efficiency may arise.

Следовательно, может быть кодирована и передана информация, указывающая, разрешать ли фильтр в контуре для каждого тайла.Therefore, information indicating whether to enable a filter in the loop for each tile can be encoded and transmitted.

На фиг. 35 представлен вид, показывающий пример выборочного определения того, применять ли фильтр в контуре к каждому тайлу.In fig. 35 is a view showing an example of selectively determining whether to apply a filter in a loop to each tile.

Как показано в примере на фиг. 35, разрешать ли фильтр в контуре (например, деблочный фильтр, SAO и/или ALF) на горизонтальной или вертикальной границе, может быть определено для каждого тайла.As shown in the example in FIG. 35, whether to enable an in-loop filter (eg, deblock filter, SAO and/or ALF) on a horizontal or vertical boundary can be determined on a per-tile basis.

В таблице 17 показан пример, в котором информация, указывающая, разрешать ли фильтр в контуре, кодирована для каждого тайла.Table 17 shows an example in which information indicating whether to enable a filter in the loop is encoded for each tile.

В примере по таблице 17 элемент синтаксиса loop_filter_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре к i-му тайлу. Когда значение loop_filter_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на горизонтальных и вертикальных границах тайла, ID тайла которого равен i. Когда значение loop_filter_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на горизонтальных и вертикальных границах тайла, ID тайла которого равен i.In the example in Table 17, the syntax element loop_filter_across_tiles_flag[i] specifies whether the loop filter is allowed to be applied to the i-th tile. When the value of loop_filter_across_tiles_flag[i] is 1, it indicates that the loop filter can be used on the horizontal and vertical boundaries of the tile whose tile ID is i. When loop_filter_across_tiles_flag[i] is 0, it indicates that the loop filter cannot be used on the horizontal and vertical boundaries of a tile whose tile ID is i.

Может быть кодирована информация, указывающая, разрешать ли фильтр в контуре для каждого из горизонтального и вертикального направлений.Information may be encoded indicating whether to enable a filter in the loop for each of the horizontal and vertical directions.

В таблице 18 показан пример, в котором информация, указывающая, разрешать ли фильтр в контуре, кодирована по отдельности для горизонтального направления и вертикального направления.Table 18 shows an example in which information indicating whether to enable a filter in the loop is encoded separately for the horizontal direction and the vertical direction.

В примере по таблице 18 элемент синтаксиса loop_filter_hor_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре, пересекающий i-й тайл в горизонтальном направлении. Элемент синтаксиса loop_filter_ver_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре, пересекающий i-й тайл в вертикальном направлении.In the example in Table 18, the loop_filter_hor_across_tiles_flag[i] syntax element specifies whether a filter is allowed on a loop that crosses the i-th tile in the horizontal direction. The loop_filter_ver_across_tiles_flag[i] syntax element specifies whether a filter is allowed on a loop that crosses the i-th tile in the vertical direction.

Когда значение loop_filter_hor_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на горизонтальной границе тайла, ID тайла которого равен i. Когда значение loop_filter_hor_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на горизонтальной границе тайла, ID тайла которого равен i.When the value of loop_filter_hor_across_tiles_flag[i] is 1, it indicates that the loop filter can be used on the horizontal boundary of a tile whose tile ID is i. When loop_filter_hor_across_tiles_flag[i] is 0, it indicates that the loop filter cannot be used on the horizontal boundary of a tile whose tile ID is i.

Когда значение loop_filter_ver_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на вертикальной границе тайла, ID тайла которого равен i, а когда значение loop_filter_ver_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на вертикальной границе тайла, ID тайла которого равен i.When the value of loop_filter_ver_across_tiles_flag[i] is 1, it indicates that an in-loop filter can be used on the vertical boundary of a tile whose tile ID is i, and when the value of loop_filter_ver_across_tiles_flag[i] is 0, it indicates that an in-loop filter cannot be used. used on the vertical border of a tile whose tile ID is i.

Альтернативно может быть кодирована и передана информация, указывающая, разрешен ли фильтр в контуре для группы тайлов, содержащей множество тайлов. С помощью информации может быть определено, разрешать ли фильтр в контуре для множества тайлов, содержащихся в группе тайлов.Alternatively, information indicating whether a filter is enabled in a loop for a tile group containing a plurality of tiles may be encoded and transmitted. The information can be used to determine whether to enable a filter in the loop for a plurality of tiles contained in a group of tiles.

Для определения группы тайлов по меньшей мере одно из количества тайлов, принадлежащих к группе тайлов, размера группы тайлов и информации о разбиении изображения может быть передано посредством битового потока. Альтернативно участок, имеющий размер, предварительно заданный в кодере и декодере, может быть установлен как группа тайлов.To determine a tile group, at least one of the number of tiles belonging to the tile group, the size of the tile group, and image partitioning information may be transmitted via a bit stream. Alternatively, a region having a size predetermined in the encoder and decoder may be set as a group of tiles.

Кодирование информации, указывающей, разрешен ли фильтр в контуре, может быть пропущено, и то, разрешать ли фильтр в контуре, может быть определено на основании по меньшей мере одного из количества элементов кодового дерева, содержащихся в тайле, ширины тайла и высоты тайла. Например, когда ширина тайла меньше, чем опорное значение, фильтр в контуре для горизонтального направления может быть разрешен, а когда высота тайла меньше, чем опорное значение, фильтр в контуре для вертикального направления может быть разрешен.Encoding of information indicating whether a filter is enabled in the loop may be omitted, and whether to enable a filter in the loop can be determined based on at least one of the number of code tree elements contained in the tile, the width of the tile, and the height of the tile. For example, when the tile width is smaller than the reference value, a filter in the loop for the horizontal direction may be enabled, and when the tile height is smaller than the reference value, a filter in the loop for the vertical direction may be enabled.

Когда фильтр в контуре используется на границе тайла, восстановленные данные за пределами тайла могут быть сгенерированы на основании данных, содержащихся в тайле. В этом случае восстановленное видео за пределами тайла может быть получено путем заполнения или интерполяции данных, содержащихся в тайле. После этого фильтр в контуре может быть применен с использованием восстановленных данных за пределами тайла.When an in-loop filter is used at a tile boundary, reconstructed off-tile data can be generated from the data contained in the tile. In this case, the reconstructed video outside the tile can be obtained by padding or interpolating the data contained in the tile. The in-loop filter can then be applied using the recovered data outside the tile.

Применение вариантов осуществления, описанных выше, сфокусированных на процессе декодирования или процессе кодирования, к процессу кодирования или процессу декодирования включено в объем настоящего изобретения. Изменение вариантов осуществления, описанных в предварительно определенном порядке, в порядке, отличающемся от описанного порядка, также включено в объем настоящего изобретения.The application of the embodiments described above, focused on a decoding process or an encoding process, to an encoding process or a decoding process is included within the scope of the present invention. Changing the embodiments described in a predetermined order in an order different from the described order is also included within the scope of the present invention.

Хотя приведенные выше варианты осуществления были описаны на основании ряда этапов или блок-схем, это не ограничивает порядок выполнения во времени настоящего изобретения, и они могут быть выполнены одновременно или в другом порядке при необходимости. Кроме того, каждый из компонентов (например, элементы, модули и т.д.), составляющих структурную схему в вариантах осуществления, описанных выше, может быть реализован в виде аппаратного устройства или программного обеспечения, или множество компонентов могут быть скомбинированы для реализации в виде одного аппаратного устройства или программного обеспечения. Варианты осуществления, описанные выше, могут быть реализованы в форме программных команд, которые могут быть исполнены посредством различных компьютерных компонентов и записаны в машиночитаемом носителе данных. Машиночитаемый носитель данных может содержать программные команды, файлы данных, структуры данных и т.п. независимо или в комбинации. Машиночитаемый носитель данных включает, например, магнитные носители, такие как жесткий диск, гибкий диск и магнитную ленту, оптические носители данных, такие как CD-ROM и DVD, магнитно-оптические носители, такие как гибкий оптический диск, и аппаратные устройства, специально выполненные с возможностью хранения и исполнения программных команд, такие как ROM, RAM, флеш-память и т.п. Аппаратные устройства, описанные выше, могут быть выполнены с возможностью работы с использованием одного или более программных модулей для выполнения процесса согласно настоящему изобретению, и наоборот.Although the above embodiments have been described based on a number of steps or flowcharts, this does not limit the timing of the present invention, and they can be executed simultaneously or in a different order as necessary. In addition, each of the components (eg, elements, modules, etc.) constituting the block diagram in the embodiments described above may be implemented as a hardware device or software, or a plurality of components may be combined to be implemented as one hardware device or software. The embodiments described above may be implemented in the form of program instructions that can be executed by various computer components and recorded in a computer-readable storage medium. The computer-readable storage medium may contain program instructions, data files, data structures, and the like. independently or in combination. Computer readable storage media includes, for example, magnetic media such as hard disk, floppy disk and magnetic tape, optical storage media such as CD-ROM and DVD, magnetic-optical media such as floppy optical disk, and hardware devices specially designed with the ability to store and execute software commands, such as ROM, RAM, flash memory, etc. The hardware devices described above may be configured to operate using one or more software modules to perform a process according to the present invention, and vice versa.

Настоящее изобретение может быть применено к электронному устройству, которое кодирует и декодирует видео.The present invention can be applied to an electronic device that encodes and decodes video.

Claims (34)

1. Способ декодирования видео, включающий1. A video decoding method including генерирование списка кандидатов на слияние для текущего блока;generating a list of merge candidates for the current block; указание одного из множества кандидатов на слияние, включенных в список кандидатов на слияние;identification of one of the plurality of merger candidates included in the list of merger candidates; получение первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока на основании первого аффинного исходного вектора и второго аффинного исходного вектора указанного кандидата на слияние; obtaining a first affine source vector and a second affine source vector of the current block based on the first affine source vector and the second affine source vector of the specified merge candidate; получение аффинного вектора для подблока в текущем блоке за счет использования первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока, причем подблок представляет собой участок с размером, который меньше размера текущего блока;obtaining an affine vector for a sub-block in the current block by using a first affine source vector and a second affine source vector of the current block, wherein the sub-block is a region with a size that is smaller than the size of the current block; при этом первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании информации о движении соседнего блока, смежного с текущим блоком; wherein the first affine source vector and the second affine source vector of the merge candidate are obtained based on the motion information of a neighboring block adjacent to the current block; в случае если соседний блок включен в элемент кодового дерева, отличающийся от элемента кодового дерева текущего блока, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании векторов движения нижнего левого подблока и нижнего правого подблока соседнего блока.in case a neighboring block is included in a code tree element different from the code tree element of the current block, the first affine source vector and the second affine source vector of the merge candidate are obtained based on the motion vectors of the lower left sub-block and the lower right sub-block of the neighboring block. 2. Способ по п. 1, отличающийся тем, что нижний левый подблок содержит нижний левый опорный отсчет, расположенный в нижнем левом углу соседнего блока, и нижний правый подблок содержит нижний правый опорный отсчет, расположенный в нижнем левом углу соседнего блока.2. The method of claim 1, wherein the lower left sub-block contains a lower left reference sample located in the lower left corner of the adjacent block, and the lower right sub-block contains a lower right reference sample located in the lower left corner of the adjacent block. 3. Способ по п. 2, отличающийся тем, что первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании значения, полученного на основании операции сдвига, выполняемой в отношении значения разницы между векторами движения нижнего левого подблока и нижнего правого подблока с использованием коэффициента масштабирования, и коэффициент масштабирования получают на основании значения, полученного за счет сложения расстояния по горизонтали между нижним левым опорным отсчетом и нижним правым опорным отсчетом и смещения.3. The method according to claim 2, characterized in that the first affine source vector and the second affine source vector of the merge candidate are obtained based on the value obtained based on the shift operation performed on the difference value between the motion vectors of the lower left sub-block and the lower right sub-block using a scaling factor, and the scaling factor is obtained based on the value obtained by adding the horizontal distance between the lower left reference sample and the lower right reference sample and the offset. 4. Способ по п. 1, отличающийся тем, что первый аффинный исходный вектор и второй аффинный исходный вектор текущего блока получают с использованием третьего аффинного исходного вектора для нижней левой контрольной точки и четвертого аффинного исходного вектора для нижней правой контрольной точки соседнего аффинного вектора, при этом4. The method according to claim 1, characterized in that the first affine source vector and the second affine source vector of the current block are obtained using the third affine source vector for the lower left control point and the fourth affine source vector for the lower right control point of the adjacent affine vector, when this где (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока, и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока; where (x n2 , y n2 ) denotes the coordinates of the bottom left control point of the affine neighbor block, and (x n3 , y n3 ) denotes the coordinates of the bottom right control point of the affine neighbor block; (x0, y0) обозначает координаты верхней левой контрольной точки текущего блока, и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока; (x 0 , y 0 ) denotes the coordinates of the top left control point of the current block, and (x 1 , y 1 ) denotes the coordinates of the top right control point of the current block; (nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки третьего аффинного исходного вектора, и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки четвертого аффинного исходного вектора; и(nv 2x , nv 2y ) denotes the affine source vector of the lower left control point of the third affine source vector, and (nv 3x , nv 3y ) denotes the affine source vector of the lower right control point of the fourth affine source vector; And (v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки первого аффинного исходного вектора, и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки второго аффинного исходного вектора.(v 0x , v 0y ) denotes the top left control point affine source vector of the first affine source vector, and (v 1x , v 1y ) denotes the top right control point affine source vector of the second affine source vector. 5. Способ по п. 1, отличающийся тем, что верхняя граница текущего блока находится в контакте с верхней границей элемента кодового дерева текущего блока.5. The method according to claim 1, characterized in that the upper boundary of the current block is in contact with the upper boundary of the code tree element of the current block. 6. Способ кодирования видео, включающий6. A video encoding method including генерирование списка кандидатов на слияние для текущего блока;generating a list of merge candidates for the current block; указание одного из множества кандидатов на слияние, включенных в список кандидатов на слияние;identification of one of the plurality of merger candidates included in the list of merger candidates; получение первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока на основании первого аффинного исходного вектора и второго аффинного исходного вектора указанного кандидата на слияние; obtaining a first affine source vector and a second affine source vector of the current block based on the first affine source vector and the second affine source vector of the specified merge candidate; получение аффинного вектора для подблока в текущем блоке за счет использования первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока, причем подблок представляет собой участок с размером, который меньше размера текущего блока; obtaining an affine vector for a sub-block in the current block by using a first affine source vector and a second affine source vector of the current block, wherein the sub-block is a region with a size that is smaller than the size of the current block; при этом первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании информации о движении соседнего блока, смежного с текущим блоком; иwherein the first affine source vector and the second affine source vector of the merge candidate are obtained based on the motion information of a neighboring block adjacent to the current block; And в случае если соседний блок включен в элемент кодового дерева, отличающийся от элемента кодового дерева текущего блока, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании векторов движения нижнего левого подблока и нижнего правого подблока соседнего блока.in case a neighboring block is included in a code tree element different from the code tree element of the current block, the first affine source vector and the second affine source vector of the merge candidate are obtained based on the motion vectors of the lower left sub-block and the lower right sub-block of the neighboring block. 7. Способ по п. 6, отличающийся тем, что нижний левый подблок содержит нижний левый опорный отсчет, расположенный в нижнем левом углу соседнего блока, и нижний правый подблок содержит нижний правый опорный отсчет, расположенный в нижнем левом углу соседнего блока.7. The method of claim 6, wherein the lower left subblock includes a lower left reference sample located in the lower left corner of the adjacent block, and the lower right subblock includes a lower right reference sample located in the lower left corner of the adjacent block. 8. Способ по п. 7, отличающийся тем, что первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании значения, полученного на основании операции сдвига, выполняемой в отношении значения разницы между векторами движения нижнего левого подблока и нижнего правого подблока с использованием коэффициента масштабирования, и коэффициент масштабирования получают на основании значения, полученного за счет сложения расстояния по горизонтали между нижним левым опорным отсчетом и нижним правым опорным отсчетом и смещения.8. The method according to claim 7, characterized in that the first affine source vector and the second affine source vector of the merge candidate are obtained based on the value obtained based on the shift operation performed on the difference value between the motion vectors of the lower left sub-block and the lower right sub-block using a scaling factor, and the scaling factor is obtained based on the value obtained by adding the horizontal distance between the lower left reference sample and the lower right reference sample and the offset. 9. Способ по п. 6, отличающийся тем, что первый аффинный исходный вектор и второй аффинный исходный вектор текущего блока получают с использованием третьего аффинного исходного вектора для нижней левой контрольной точки и четвертого аффинного исходного вектора для нижней правой контрольной точки соседнего аффинного вектора, при этом9. The method according to claim 6, characterized in that the first affine source vector and the second affine source vector of the current block are obtained using the third affine source vector for the lower left control point and the fourth affine source vector for the lower right control point of the adjacent affine vector, when this где (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока, и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока; where (x n2 , y n2 ) denotes the coordinates of the bottom left control point of the affine neighbor block, and (x n3 , y n3 ) denotes the coordinates of the bottom right control point of the affine neighbor block; (x0, y0) обозначает координаты верхней левой контрольной точки текущего блока, и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока; (x 0 , y 0 ) denotes the coordinates of the top left control point of the current block, and (x 1 , y 1 ) denotes the coordinates of the top right control point of the current block; (nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки третьего аффинного исходного вектора, и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки четвертого аффинного исходного вектора; и(nv 2x , nv 2y ) denotes the affine source vector of the lower left control point of the third affine source vector, and (nv 3x , nv 3y ) denotes the affine source vector of the lower right control point of the fourth affine source vector; And (v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки первого аффинного исходного вектора, и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки второго аффинного исходного вектора.(v 0x , v 0y ) denotes the top left control point affine source vector of the first affine source vector, and (v 1x , v 1y ) denotes the top right control point affine source vector of the second affine source vector. 10. Способ по п. 6, отличающийся тем, что верхняя граница текущего блока находится в контакте с верхней границей элемента кодового дерева текущего блока.10. The method according to claim 6, characterized in that the upper boundary of the current block is in contact with the upper boundary of the code tree element of the current block. 11. Видеодекодер, выполненный с возможностью выполнения способа по любому из пп. 1–5.11. A video decoder configured to perform the method according to any one of claims. 1–5. 12. Видеокодер, выполненный с возможностью выполнения способа по любому из пп. 6–10. 12. A video encoder configured to perform the method according to any one of claims. 6–10.
RU2023117253A 2018-09-21 2019-09-20 Method and device for encoding/decoding image signals RU2812857C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2018-0114342 2018-09-21
KR10-2018-0114343 2018-09-21
KR10-2018-0114344 2018-09-21

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2021110554A Division RU2799588C2 (en) 2018-09-21 2019-09-20 Method and device for coding/decoding image signals

Publications (2)

Publication Number Publication Date
RU2023117253A RU2023117253A (en) 2023-07-12
RU2812857C2 true RU2812857C2 (en) 2024-02-05

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2607619C2 (en) * 2011-12-15 2017-01-10 ТАГИВАН II ЭлЭлСи Image encoding method, image decoding method, image encoding device, image decoding device and apparatus for encoding and decoding images
US20180098063A1 (en) * 2016-10-05 2018-04-05 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
WO2018061563A1 (en) * 2016-09-27 2018-04-05 シャープ株式会社 Affine motion vector derivation device, prediction image generation device, moving image decoding device, and moving image coding device
US20180192069A1 (en) * 2016-12-29 2018-07-05 Qualcomm Incorporated Motion vector generation for affine motion model for video coding
WO2018135885A1 (en) * 2017-01-19 2018-07-26 가온미디어 주식회사 Image decoding and encoding method providing transformation processing
US20180270500A1 (en) * 2017-03-14 2018-09-20 Qualcomm Incorporated Affine motion information derivation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2607619C2 (en) * 2011-12-15 2017-01-10 ТАГИВАН II ЭлЭлСи Image encoding method, image decoding method, image encoding device, image decoding device and apparatus for encoding and decoding images
WO2018061563A1 (en) * 2016-09-27 2018-04-05 シャープ株式会社 Affine motion vector derivation device, prediction image generation device, moving image decoding device, and moving image coding device
US20180098063A1 (en) * 2016-10-05 2018-04-05 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US20180192069A1 (en) * 2016-12-29 2018-07-05 Qualcomm Incorporated Motion vector generation for affine motion model for video coding
WO2018135885A1 (en) * 2017-01-19 2018-07-26 가온미디어 주식회사 Image decoding and encoding method providing transformation processing
US20180270500A1 (en) * 2017-03-14 2018-09-20 Qualcomm Incorporated Affine motion information derivation

Similar Documents

Publication Publication Date Title
RU2766152C1 (en) Method and device for encoding/decoding an image signal
US11758176B2 (en) Image signal encoding/decoding method and non-transitory computer-readable medium
CA3118429C (en) Image signal encoding/decoding method and apparatus therefor
JP7305879B2 (en) Video signal encoding/decoding method and apparatus
CN112956193A (en) Video signal encoding/decoding method and apparatus thereof
JP2024045193A (en) Video signal encoding/decoding method and device therefor
RU2812857C2 (en) Method and device for encoding/decoding image signals
JP2023509347A (en) Image signal encoding/decoding method and apparatus therefor
RU2799588C2 (en) Method and device for coding/decoding image signals
KR20200145763A (en) Method for encoding/decoidng video signal and apparatus therefor
RU2811980C2 (en) Method and device for encoding/decoding image signals
RU2811985C2 (en) Method and device for encoding/decoding image signals
RU2813667C2 (en) Method and device for encoding and decoding video signals
RU2800133C2 (en) Method and device for coding/decoding image signals
RU2808720C2 (en) Method and device for coding/decoding image signals
RU2799079C2 (en) Method and device for coding/decoding image signals
RU2809582C2 (en) Method and device for encoding and decoding video signals
RU2810054C2 (en) Method and device for encoding and decoding video signals
KR20210061944A (en) Method for encoding/decoidng video signal and apparatus therefor