RU2781517C1 - Dynamic image encoding device, dynamic image encoding method, dynamic image encoding program, dynamic image decoding device, dynamic image decoding method and dynamic image decoding program - Google Patents
Dynamic image encoding device, dynamic image encoding method, dynamic image encoding program, dynamic image decoding device, dynamic image decoding method and dynamic image decoding program Download PDFInfo
- Publication number
- RU2781517C1 RU2781517C1 RU2021137427A RU2021137427A RU2781517C1 RU 2781517 C1 RU2781517 C1 RU 2781517C1 RU 2021137427 A RU2021137427 A RU 2021137427A RU 2021137427 A RU2021137427 A RU 2021137427A RU 2781517 C1 RU2781517 C1 RU 2781517C1
- Authority
- RU
- Russia
- Prior art keywords
- block
- prediction
- motion vector
- encoding
- vector predictor
- Prior art date
Links
- 238000009795 derivation Methods 0.000 claims description 41
- 230000000875 corresponding Effects 0.000 claims description 33
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000003384 imaging method Methods 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 241
- 238000010586 diagram Methods 0.000 description 72
- 230000002457 bidirectional Effects 0.000 description 19
- 230000002123 temporal effect Effects 0.000 description 12
- 230000004927 fusion Effects 0.000 description 8
- 241001442055 Vipera berus Species 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 230000001131 transforming Effects 0.000 description 7
- 239000000284 extract Substances 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 230000001702 transmitter Effects 0.000 description 5
- 229920001405 Coding region Polymers 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000000945 filler Substances 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000003287 optical Effects 0.000 description 4
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 3
- 239000003623 enhancer Substances 0.000 description 3
- 230000002708 enhancing Effects 0.000 description 3
- 229940040608 SPS Drugs 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 229920000069 poly(p-phenylene sulfide) Polymers 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 229940116821 SSD Drugs 0.000 description 1
- 230000003044 adaptive Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- 239000002023 wood Substances 0.000 description 1
Images
Abstract
Description
Уровень техникиState of the art
Настоящее изобретение относится к способам кодирования и декодирования изображений, в которых изображение разделяется на блоки и выполняется предсказание.The present invention relates to image encoding and decoding methods in which an image is divided into blocks and prediction is performed.
При кодировании и декодировании изображения целевое изображение разделяется на блоки, каждый из которых является группой из заданного количества выборок, и обработка выполняется в блоках блоков. Разделение изображения на соответствующие блоки с соответствующими установками внутрикадрового предсказания и межкадрового предсказания позволяет повысить эффективность кодирования.When encoding and decoding an image, the target image is divided into blocks, each of which is a group of a predetermined number of samples, and processing is performed in blocks of blocks. Dividing an image into appropriate blocks with appropriate intra-prediction and inter-prediction settings can improve coding efficiency.
В патентном документе 1 раскрыта методика внутрикадрового предсказания, в которой получают предсказанного изображения с использованием декодированных выборок в блоке, соседнем с целевым блоком кодирования/декодирования.
[Патентный документ 1] JP 9–172644 A.[Patent Document 1] JP 9-172644A.
Раскрытие сущности изобретенияDisclosure of the essence of the invention
Однако в технологии, изложенной в патентном документе 1, для предсказания используются только декодированные выборки в блоке, соседнем с целевым блоком кодирования/декодирования, и это приводит к плохой эффективности предсказания.However, in the technology set forth in
В аспекте настоящего изобретения для решения вышеописанной проблемы предоставляется устройство, включающее в себя: блок получения блочного вектора-кандидата, который получает блочные векторы-кандидаты целевого блока кодирования в целевом изображении кодирования из информации кодирования, сохраненной в памяти для хранения информации кодирования; селектор, который выбирает подлежащий выбору блочный вектор из блочных векторов-кандидатов; запоминающее устройство, в котором хранятся кодированные изображения заданного количества стандартных блоков внутриблочного копирования, находящихся непосредственно перед целевым блоком кодирования; и блок коррекции границы опорной области, который удаляет кодированное изображение одного стандартного блока внутриблочного копирования, хранящегося в запоминающем устройстве, из области, на которую можно ссылаться, после завершения процесса кодирования целевого блока кодирования, и определяет, включены ли как верхняя левая позиция, так и нижняя правая позиция опорного блока, указанного выбранным блочным вектором, в область, на которую можно ссылаться.In an aspect of the present invention, in order to solve the above-described problem, an apparatus is provided, including: a block vector candidate deriving unit that obtains candidate block vectors of an encoding target block in an encoding target image from encoding information stored in a memory for storing encoding information; a selector that selects a block vector to be selected from among the candidate block vectors; a storage device that stores encoded images of a predetermined number of intra-block copy building blocks immediately before the encoding target block; and a reference area boundary correction unit that removes an encoded image of one standard block copy stored in the memory from the referenced area after the encoding process of the encoding target block is completed, and determines whether both the upper left position and the bottom right position of the reference block specified by the selected block vector into the referenced area.
Согласно настоящему изобретению предложен высокоэффективный процесс кодирования/декодирования изображений с низкой нагрузкой.According to the present invention, a highly efficient low load image encoding/decoding process is provided.
Краткое описание чертежейBrief description of the drawings
Фиг. 1 – блок-схема устройства кодирования изображений согласно варианту осуществления настоящего изобретения.Fig. 1 is a block diagram of an image encoding apparatus according to an embodiment of the present invention.
Фиг. 2 – блок-схема устройства декодирования изображения согласно варианту осуществления настоящего изобретения.Fig. 2 is a block diagram of an image decoding apparatus according to an embodiment of the present invention.
Фиг. 3 – блок-схема алгоритма, иллюстрирующая операцию разделения блока дерева.Fig. 3 is a block diagram of the algorithm illustrating the operation of dividing a tree block.
Фиг. 4 – схема, иллюстрирующая состояние разделения входного изображения на блоки дерева.Fig. 4 is a diagram illustrating the state of splitting the input image into tree blocks.
Фиг. 5 – схема, иллюстрирующая z-сканирование.Fig. 5 is a diagram illustrating z-scan.
Фиг. 6A – схема, иллюстрирующая форму разделенного блока.Fig. 6A is a diagram illustrating the shape of a divided block.
Фиг. 6B – схема, иллюстрирующая форму разделенного блока.Fig. 6B is a diagram illustrating the shape of a divided block.
Фиг. 6C – схема, иллюстрирующая форму разделенного блока.Fig. 6C is a diagram illustrating the shape of a divided block.
Фиг. 6D – схема, иллюстрирующая форму разделенного блока.Fig. 6D is a diagram illustrating the shape of a divided block.
Фиг. 6E – схема, иллюстрирующая форму разделенного блока.Fig. 6E is a diagram illustrating the shape of a divided block.
Фиг. 7 – блок-схема алгоритма, иллюстрирующая операцию разделения блока на четыре.Fig. 7 is a block diagram of the algorithm illustrating the operation of dividing a block into four.
Фиг. 8 – блок-схема алгоритма, иллюстрирующая операцию разделения блока на два или три.Fig. 8 is a flowchart illustrating the operation of dividing a block into two or three.
Фиг. 9 – синтаксис для выражения формы разделения блока.Fig. 9 is the syntax for expressing the shape of a block split.
Фиг. 10A – схема, иллюстрирующая внутрикадровое предсказание.Fig. 10A is a diagram illustrating intra prediction.
Фиг. 10B – схема, иллюстрирующая внутрикадровое предсказание.Fig. 10B is a diagram illustrating intra prediction.
Фиг. 11 – схема, иллюстрирующая опорные блоки для межкадрового предсказания.Fig. 11 is a diagram illustrating reference blocks for inter prediction.
Фиг. 12A – синтаксис для выражения режима предсказания блока кодирования.Fig. 12A is a syntax for expressing a coding block prediction mode.
Фиг. 12В – синтаксис для выражения режима предсказания блока кодирования.Fig. 12B is a syntax for expressing a coding block prediction mode.
Фиг. 13 – таблица, иллюстрирующая соответствие между элементами синтаксиса и режимами, которые относятся к межкадровому предсказанию.Fig. 13 is a table illustrating the correspondence between syntax elements and modes that are related to inter prediction.
Фиг. 14 – схема, иллюстрирующая компенсацию аффинного движения в двух контрольных точках.Fig. 14 is a diagram illustrating affine motion compensation at two control points.
Фиг. 15 – схема, иллюстрирующая компенсацию аффинного движения в трех контрольных точках.Fig. 15 is a diagram illustrating affine motion compensation at three control points.
Фиг. 16 – блок-схема подробной конфигурации блока 102 межкадрового предсказания (фиг. 1).Fig. 16 is a block diagram of a detailed configuration of the inter prediction block 102 (FIG. 1).
Фиг. 17 – блок-схема подробной конфигурации блока 301 получения режима предиктора нормального вектора движения (фиг. 16).Fig. 17 is a block diagram of a detailed configuration of the normal motion vector predictor mode acquisition block 301 (FIG. 16).
Фиг. 18 – блок-схема подробной конфигурации блока 302 получения режима нормального слияния (фиг. 16).Fig. 18 is a block diagram of a detailed configuration of the normal merge mode acquisition block 302 (FIG. 16).
Фиг. 19 – блок-схема алгоритма, иллюстрирующая процесс получения режима предиктора нормального вектора движения блока 301 получения режима предиктора нормального вектора движения (фиг. 16).Fig. 19 is a flowchart illustrating a normal motion vector predictor mode acquisition process of the normal motion vector predictor mode acquisition unit 301 (FIG. 16).
Фиг. 20 – блок-схема алгоритма, иллюстрирующая процедуру обработки процесса получения режима предиктора нормального вектора движения.Fig. 20 is a flowchart illustrating a normal motion vector predictor mode acquisition processing procedure.
Фиг. 21 – блок-схема алгоритма, иллюстрирующая процедуру обработки нормального процесса получения режима слияния.Fig. 21 is a flowchart illustrating a normal merge mode acquisition process processing procedure.
Фиг. 22 – блок-схема подробной конфигурации блока 203 межкадрового предсказания (фиг. 2).Fig. 22 is a block diagram of a detailed configuration of the inter prediction block 203 (FIG. 2).
Фиг. 23 – блок-схема подробной конфигурации блока 401 получения режима предиктора нормального вектора движения (фиг. 22).Fig. 23 is a block diagram of a detailed configuration of the normal motion vector predictor mode acquisition block 401 (FIG. 22).
Фиг. 24 – блок-схема подробной конфигурации блока 402 получения режима нормального слияния (фиг. 22).Fig. 24 is a block diagram of a detailed configuration of the normal merge mode acquisition block 402 (FIG. 22).
Фиг. 25 – блок-схема алгоритма, иллюстрирующая процесс получения режима предиктора нормального вектора движения блока 401 получения режима предиктора нормального вектора движения (фиг. 22).Fig. 25 is a flowchart illustrating the normal motion vector predictor mode acquisition process of the normal motion vector predictor mode acquisition unit 401 (FIG. 22).
Фиг. 26 – блок-схема алгоритма, иллюстрирующая процедуру обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.Fig. 26 is a flowchart illustrating a process of initializing/updating a motion vector predictor candidate list based on history.
Фиг. 27 – блок-схема алгоритма процедуры обработки подтверждения идентичного элемента в процедуре обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.Fig. 27 is a flowchart of the identity confirmation processing procedure in the history-based motion vector predictor candidate list initialization/updating processing procedure.
Фиг. 28 – блок-схема алгоритма процедуры обработки сдвига элемента в процедуре обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.Fig. 28 is a flowchart of the element shift processing procedure in the history-based motion vector predictor candidate list initialization/updating processing procedure.
Фиг. 29 – блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидата предиктора вектора движения на основании истории.Fig. 29 is a flowchart illustrating a processing procedure for obtaining a motion vector predictor candidate based on history.
Фиг. 30 – блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидатов слияния на основании истории.Fig. 30 is a flowchart illustrating a history-based merge candidate acquisition processing procedure.
Фиг. 31A – схема, иллюстрирующая пример процесса обновления списка кандидатов предиктора вектора движения на основании истории.Fig. 31A is a diagram illustrating an example of a process for updating a motion vector predictor candidate list based on history.
Фиг. 31B – схема, иллюстрирующая пример процесса обновления списка кандидатов предиктора вектора движения на основании истории.Fig. 31B is a diagram illustrating an example of a process for updating a motion vector predictor candidate list based on history.
Фиг. 31C – схема, иллюстрирующая процесса обновления списка кандидатов предиктора вектора движения на основании истории.Fig. 31C is a diagram illustrating a process of updating a motion vector predictor candidate list based on history.
Фиг. 32 – схема, иллюстрирующая предсказание компенсации движения в случае, когда выполняется предсказание L0 и опорное изображение (RefL0Pic) L0 происходит в момент перед целевым изображением (CurPic).Fig. 32 is a diagram illustrating motion compensation prediction in a case where L0 prediction is performed and an L0 reference picture (RefL0Pic) occurs at a time before the target picture (CurPic).
Фиг. 33 – схема, иллюстрирующая предсказание с компенсацией движения в случае, когда выполняется предсказание L0 и опорное изображение предсказания L0 происходит в момент после целевого изображения.Fig. 33 is a diagram illustrating motion-compensated prediction in a case where L0 prediction is performed and an L0 prediction reference picture occurs at a time after the target picture.
Фиг. 34 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения происходит в момент перед целевым изображением и L1 предсказание опорного изображения происходит в момент после целевого изображения.Fig. 34 is a diagram illustrating a motion compensation prediction direction in bidirectional prediction in which L0 reference picture prediction occurs at a time before the target picture and L1 reference picture prediction occurs at a time after the target picture.
Фиг. 35 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения и L1 предсказание опорного изображения происходит в момент до целевого кадра.Fig. 35 is a diagram illustrating a motion compensation prediction direction in bidirectional prediction in which L0 reference picture prediction and L1 reference picture prediction occur at a time before the target frame.
Фиг. 36 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения и L1 предсказание опорного изображения происходит в момент, после целевого изображения.Fig. 36 is a diagram illustrating a motion compensation prediction direction in bidirectional prediction in which L0 reference picture prediction and L1 reference picture prediction occur at a time after the target picture.
Фиг. 37 – блок-схема, иллюстрирующая пример конфигурации аппаратных средств устройства для кодирования-декодирования согласно варианту осуществления настоящего изобретения.Fig. 37 is a block diagram illustrating a hardware configuration example of an encoding/decoding device according to an embodiment of the present invention.
Фиг.38 – блок-схема алгоритма, иллюстрирующая процедуру процесса получения усредненного кандидата слияния.38 is a flowchart illustrating a procedure for obtaining an average merge candidate.
Фиг.39A – схема, иллюстрирующая действительную опорную область внутриблочного копирования.39A is a diagram illustrating the actual in-block copy reference area.
Фиг.39B – схема, иллюстрирующая действительную опорную область внутриблочного копирования.39B is a diagram illustrating the actual in-block copy reference area.
Фиг.40 – блок-схема подробной конфигурации блока 103 внутрикадрового предсказания (фиг.1).FIG. 40 is a block diagram of a detailed configuration of the intra prediction block 103 (FIG. 1).
Фиг.41 – блок-схема подробной конфигурации блока 204 внутрикадрового предсказания (фиг.2).FIG. 41 is a block diagram of a detailed configuration of the intra prediction block 204 (FIG. 2).
Фиг.42 – блок-схема блока 352 предсказания внутририблочного копирования.FIG. 42 is a block diagram of
Фиг.43 – блок-схема блока 362 предсказания внутририблочного копирования.43 is a block diagram of an intra-block
Фиг.44 – блок-схема алгоритма, иллюстрирующая процесс копирования внутрикадрового блока предсказания блока 352 предсказания внутририблочного копирования.44 is a flowchart illustrating the process of copying an intra-frame prediction block of the intra-block
Фиг.45 – блок-схема алгоритма, иллюстрирующая процесс копирования внутрикадрового блока предсказания блока 362 предсказания внутририблочного копирования.45 is a flowchart illustrating the process of copying an intra-frame prediction block of the intra-block
Фиг.46 – блок-схема алгоритма, иллюстрирующая процесс внутриблочного копирования в режиме слияния.Fig. 46 is a flowchart illustrating the intra-block copy process in merge mode.
Фиг.47 - блок-схема алгоритма, иллюстрирующая процедуру выполнения процесса получения режима предсказания блочного вектора с внутририблочным копированием.FIG. 47 is a flowchart illustrating a process flow for obtaining a block vector prediction mode with intra-block copy.
Фиг.48 – блок-схема алгоритма, иллюстрирующая процесс, выполняемый блоком 380 коррекции опорной позиции и блоком 480 коррекции опорной позиции.48 is a flowchart illustrating the process performed by the reference
Фиг.49 – схематичное представление, иллюстрирующее состояние коррекции опорной позиции.Fig. 49 is a schematic diagram illustrating a state of reference position correction.
Фиг.50A – схематичное представление, иллюстрирующее верхнюю левую и нижнюю правую позиции, когда область, на которую можно ссылаться, является прямоугольной.Fig. 50A is a schematic diagram illustrating the top left and bottom right positions when the area that can be referred to is rectangular.
Фиг.50B – схематичное представление, иллюстрирующее верхнюю левую и нижнюю правую позиции, когда область, на которую можно ссылаться, является прямоугольной.50B is a schematic diagram illustrating the top left and bottom right positions when the area that can be referred to is rectangular.
Фиг.50C – схематичное представление, иллюстрирующее верхнюю левую и нижнюю правую позиции, когда область, на которую можно ссылаться, является прямоугольной.50C is a schematic diagram illustrating the top left and bottom right positions when the area that can be referred to is rectangular.
Фиг.50D – схематичное представление, иллюстрирующее верхнюю левую и нижнюю правую позиции, когда область, на которую можно ссылаться, является прямоугольной.50D is a schematic diagram illustrating the top left and bottom right positions when the area that can be referred to is rectangular.
Фиг.51 – блок-схема алгоритма, иллюстрирующая процесс коррекции опорной позиции участка, в котором область, на которую можно ссылаться, не является прямоугольной.Fig. 51 is a flowchart illustrating a process for correcting a reference position of a portion in which an area that can be referred to is not rectangular.
Фиг.52A – схематичное представление, иллюстрирующее состояние коррекции опорной позиции.Fig. 52A is a schematic diagram illustrating the status of the reference position correction.
Фиг.52B – схематичное представление, иллюстрирующее состояние коррекции опорной позиции.Fig. 52B is a schematic diagram illustrating a state of correction of the reference position.
Фиг.53 – блок-схема алгоритма, иллюстрирующая процесс, выполняемый блоком 380 коррекции опорной позиции и блоком 480 коррекции опорной позиции.53 is a flowchart illustrating the process performed by the reference
Фиг.54A – схематичное представление, иллюстрирующее состояние разделения области, на которую можно ссылаться, на две области.Fig. 54A is a schematic view illustrating a state of dividing an area that can be referred to into two areas.
Фиг.54B – схематичное представление, иллюстрирующее состояние разделения области, на которую можно ссылаться, на две области.Fig. 54B is a schematic view illustrating a state of dividing an area that can be referred to into two areas.
Фиг.54C – схематичное представление, иллюстрирующее состояние разделения области, на которую можно ссылаться, на две области.Fig. 54C is a schematic view illustrating a state of dividing an area that can be referred to into two areas.
Фиг.54D – схематичное представление, иллюстрирующее состояние разделения области, на которую можно ссылаться, на две области.Fig. 54D is a schematic view illustrating a state of dividing an area that can be referred to into two areas.
Фиг.55 – блок-схема алгоритма, иллюстрирующая процесс разделения опорной области на две области и коррекции каждой из опорных позиций.55 is a flowchart illustrating the process of dividing a reference area into two areas and correcting each of the reference positions.
Фиг.56A – схематичное представление, иллюстрирующее область памяти опорной области, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования.56A is a schematic diagram illustrating a reference area memory area when a coding tree block unit is used as an intra-block copy standard block.
Фиг.56B – схематичное представление, иллюстрирующее область памяти опорной области, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования.56B is a schematic diagram illustrating a reference area memory area when a coding tree block unit is used as an intra-block copy standard block.
Фиг.56C – схематичное представление, иллюстрирующее область памяти опорной области, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования.56C is a schematic diagram illustrating a reference area memory area when a coding tree block unit is used as an intra-block copy standard block.
Фиг.57A – схематичное представление, иллюстрирующее область памяти опорной области, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.57A is a schematic diagram illustrating a reference area memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Фиг.57B – схематичное представление, иллюстрирующее область памяти опорной области, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.57B is a schematic diagram illustrating a reference area memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Фиг.57C – схематичное представление, иллюстрирующее область памяти опорной области, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.57C is a schematic diagram illustrating a reference area memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Фиг.57D – схематичное представление, иллюстрирующее область памяти опорной области, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.57D is a schematic diagram illustrating a reference area memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Фиг.58 – блок-схема алгоритма, иллюстрирующая процедуру коррекции границы опорной области.58 is a flowchart illustrating the procedure for correcting the boundary of the reference area.
Фиг.59A – схематичное представление, иллюстрирующее разделение опорного блока в области памяти, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования.59A is a schematic diagram illustrating the division of a reference block in a memory area when a coding tree block unit is used as an intra-block copy standard block.
Фиг.59B – схематичное представление, иллюстрирующее разделение опорного блока в области памяти, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования.59B is a schematic diagram illustrating the division of a reference block in a memory area when a coding tree block unit is used as an intra-block copy standard block.
Фиг.60A – схематичное представление, иллюстрирующее разделение опорного блока в области памяти, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.60A is a schematic diagram illustrating the division of a reference block in a memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Фиг.60B – схематичное представление, иллюстрирующее разделение опорного блока в области памяти, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования.60B is a schematic diagram illustrating the division of a reference block in a memory area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block.
Осуществление изобретенияImplementation of the invention
Прежде всего, будет описаны определения технологии и технические термины, используемые в настоящем варианте осуществления.First of all, technology definitions and technical terms used in the present embodiment will be described.
Блок дереваwood block
В варианте осуществления целевое изображение кодирования/декодирования одинаково разделяется на заданный размер. Этот блок определяется как блок дерева. В то время, как на фиг. 4 размер блока дерева устанавливается равным 128×128 выборок, размер блока дерева этим не ограничивается и может быть установлен любой размер. Блок целевого дерева (соответствующий цели кодирования в процессе кодирования и цели декодирования в процессе декодирования) переключается в порядке растрового сканирования, то есть в порядке слева направо и сверху вниз. Внутренняя часть каждого блока дерева может быть дополнительно рекурсивно разделена. Блок кодирования/декодирования в результате рекурсивного разделения блока дерева определяется как блок кодирования. Блок дерева и блок кодирования вместе определяются как блок. Выполнение соответствующего разделения блока обеспечивает эффективное кодирование. Размер блока дерева может быть фиксированным значением, заранее определенным устройством для кодирования и устройством для декодирования, или можно принять конфигурацию, в которой размер блока дерева, определенный устройством для кодирования, передается в устройство для декодирования. Здесь максимальный размер блока дерева составляет 128×128 выборок и минимальный размер блока дерева равен 16×16 выборок. Максимальный размер блока кодирования составляет 64×64 выборки и минимальный размер блока кодирования равен 4×4 выборки.In an embodiment, the encoding/decoding target image is equally divided into a predetermined size. This block is defined as a tree block. While in FIG. 4, the tree block size is set to 128×128 samples, the tree block size is not limited to this, and any size can be set. The target tree block (corresponding to the encoding target in the encoding process and the decoding target in the decoding process) is switched in the raster scan order, that is, in the order from left to right and top to bottom. The interior of each tree block can be further divided recursively. The coding/decoding block resulting from the recursive splitting of the tree block is defined as the coding block. The tree block and the coding block are collectively defined as a block. Performing an appropriate block split provides efficient coding. The tree block size may be a fixed value predetermined by the encoding device and the decoding device, or a configuration may be adopted in which the tree block size determined by the encoding device is transmitted to the decoding device. Here, the maximum tree block size is 128×128 samples and the minimum tree block size is 16×16 samples. The maximum coding block size is 64×64 samples and the minimum coding block size is 4×4 samples.
Режим предсказанияPrediction mode
Между внутрикадровым предсказанием (MODE_INTRA) для выполнения предсказания из сигнала, обработанного изображения целевого изображения, и межкадровым предсказанием (MODE_INTER) для выполнения предсказания из сигнала изображения обработанного изображения в блоках целевых блоков кодирования выполняется переключение.Switching is performed between intra-picture prediction (MODE_INTRA) for performing prediction from the processed image signal of the target image and inter-picture prediction (MODE_INTER) for performing prediction from the image signal of the processed image in blocks of coding target blocks.
В процессе кодирования используется обработанное изображение для изображения, полученного посредством декодирования кодированного сигнала, сигнала изображения, блока дерева, блока, блока кодирования и т.п. В процессе декодирования используется обработанное изображение для декодированного изображения, сигнала изображения, блока дерева, блока, блока кодирования и т.п.The encoding process uses a processed image for an image obtained by decoding an encoded signal, an image signal, a tree block, a block, an encoding block, or the like. The decoding process uses the processed image for the decoded image, image signal, tree block, block, coding block, and the like.
Режим идентификации внутрикадрового предсказания (MODE_INTRA) и межкадрового предсказания (MODE_INTER) определяется как режим предсказания (PredMode). В качестве значения режим предсказания (PredMode) имеет внутрикадровое предсказание (MODE_INTRA) или межкадровое предсказание (MODE_INTER).The identification mode of intra-prediction (MODE_INTRA) and inter-prediction (MODE_INTER) is defined as a prediction mode (PredMode). As a value, the prediction mode (PredMode) has intra-frame prediction (MODE_INTRA) or inter-frame prediction (MODE_INTER).
Предсказание с внутрикадровым копированием блокаPrediction with intraframe block copy
Предсказание с внутрикадровым копированием блока представляет собой процесс кодирования/декодирования целевого блока по отношению к декодированной выборке в целевом изображении в качестве значения предсказания. Расстояние от целевого блока до опорной выборки представлено блочным вектором. Блочный вектор относится к целевому изображению, и опорное изображение определяется однозначным образом. Таким образом, нет необходимости предоставлять опорный индекс. Разница между блочным вектором и вектором движения заключается в том, является ли опорное изображение целевым изображением или обработанным изображением. В дополнение к этому, в случае блочного вектора точность выборки 1 или точность выборки 4 может быть выбрана с использованием адаптивного разрешения вектора движения (AMVR).Block copy prediction is a process of encoding/decoding a target block with respect to a decoded sample in the target picture as a prediction value. The distance from the target block to the reference sample is represented by a block vector. The block vector refers to the target image, and the reference image is uniquely defined. Thus, there is no need to provide a reference index. The difference between a block vector and a motion vector is whether the reference image is the target image or the processed image. In addition, in the case of a block vector,
При внутриблочном копировании можно выбирать один из двух режимов: режим предсказания внутририблочного копирования или режим внутриблочного копирования со слиянием.With intrablock copy, you can choose one of two modes: intrablock copy prediction mode or intrablock copy merge mode.
Режим предсказания внутририблочного копирования представляет собой режим определения блочного вектора целевого блока на основе предиктора блочного вектора, полученного из обработанной информации, и на основе разности блочных векторов. Предиктор блочного вектора получается из обработанного блока вблизи целевого блока и из индекса для точного определения предиктора блочного вектора. Индекс для точного определения предиктора блочного вектора и разности блочных векторов передаются в потоке битов. The intra-block copy prediction mode is a mode of determining a block vector of a target block based on the block vector predictor obtained from the processed information and based on the block vector difference. The block vector predictor is obtained from the processed block near the target block and from the index to fine-tune the block vector predictor. An index to fine-tune the block vector predictor and block vector differences are transmitted in the bitstream.
Режим внутриблочного копирования со слиянием представляет собой режим получения информации предсказания внутририблочного копирования целевого блока из информации предсказания внутририблочного копирования обработанного блока вблизи целевого блока без передачи разности векторов движения.The intra-block copy-merge mode is a mode of obtaining intra-block copy prediction information of a target block from intra-block copy prediction information of a processed block near the target block without transmitting a motion vector difference.
Межкадровое предсказаниеInterframe prediction
При межкадровом предсказании, в котором предсказание выполняется из сигнала изображения обработанного изображения, можно использовать множество обработанных изображений в качестве опорных изображений. Для управления множеством опорных изображений, определены два типа справочных списков L0 (справочный список 0) и L1 (справочный список 1). В каждом из списков опорное изображение указывается с использованием опорного индекса. В P-сегменте можно использовать L0 предсказание (Pred_L0). В B-сегменте можно использовать L0 предсказание (Pred_L0), L1 предсказание (Pred_L1) и двунаправленное предсказание (Pred_BI). L0 предсказание (Pred_L0) является межкадровым предсказанием, которое относится к опорному изображению, управляемому L0, в то время, как L1 предсказание (Pred_L1) является межкадровым предсказанием, которое относится к опорному изображению, управляемому с помощью L1. Двунаправленное предсказание (Pred_BI) является межкадровым предсказанием, в котором выполняются как L0 предсказание и L1 предсказание и ссылается на одно опорное изображение, управляемое в каждом из L0 и L1. Информация, определяющая L0 предсказание, L1 предсказание и двунаправленное предсказание, определяется как режим межкадрового предсказания. В следующем процессе обработки предполагается, что обработка будет выполняться для каждого из L0 и L1 для постоянных и переменных в выходных данных суффикса LX.In inter-picture prediction, in which prediction is performed from an image signal of a processed image, a plurality of processed images can be used as reference images. To manage a plurality of reference pictures, two types of look-up lists L0 (look-up list 0) and L1 (look-up list 1) are defined. In each of the lists, a reference image is indicated using a reference index. In the P-segment, L0 prediction (Pred_L0) can be used. In the B-segment, L0 prediction (Pred_L0), L1 prediction (Pred_L1), and bidirectional prediction (Pred_BI) can be used. L0 prediction (Pred_L0) is inter-picture prediction, which is related to the reference picture driven by L0, while L1 prediction (Pred_L1) is inter-picture prediction, which is related to the reference picture driven by L1. Bidirectional prediction (Pred_BI) is inter-picture prediction in which both L0 prediction and L1 prediction are performed and refers to one reference picture driven in each of L0 and L1. Information defining L0 prediction, L1 prediction, and bidirectional prediction is defined as an inter prediction mode. The following processing process assumes that processing will be performed for each of L0 and L1 for constants and variables in the LX suffix output.
Режим предиктора вектора движенияMotion vector predictor mode
Режим предиктора вектора движения является режимом передачи индекса для указания предиктора вектора движения, разности вектора движения, режима межкадрового предсказания и опорного индекса, и определения информации межкадрового предсказания целевого блока. Предиктор вектора движения получают из кандидата предиктора вектора движения, полученного из обработанного блока в соседнем целевом блоке или блоке, принадлежащем обработанному изображению, и расположенном в той же позиции или в окрестности (vicinity) целевого блока, и из индекса для указания предиктора вектора движения.The motion vector predictor mode is an index transmission mode for specifying a motion vector predictor, a motion vector difference, an inter prediction mode, and a reference index, and determining target block inter prediction information. A motion vector predictor is obtained from a motion vector predictor candidate obtained from a processed block in a neighboring target block or a block belonging to the processed image and located at the same position or neighborhood (vicinity) of the target block, and from an index to indicate the motion vector predictor.
Режим слиянияMerge Mode
Режим слияния является режимом извлечения информации межкадрового предсказания целевого блока из информации межкадрового предсказания обработанного блока в соседнем блоке целевого блока или блока, принадлежащего обработанному изображению и расположенного на той же позиции, что и целевой блок или в окрестностях целевого блока, без передачи разности вектора движения или опорного индекса.The merge mode is a mode of extracting target block inter prediction information from inter prediction information of a processed block in a neighboring block of the target block or a block belonging to the processed image and located at the same position as the target block or in the vicinity of the target block, without transmitting a motion vector difference or base index.
Обработанный блок в соседнем блоке целевого блока и информация межкадрового предсказания обработанного блока определены как кандидаты пространственного слияния. Блоки, принадлежащие обработанному изображению и расположенные на той же позиции, что и целевой блок, или в окрестности (vicinity) целевого блока, и информация межкадрового предсказания, полученная из информации межкадрового предсказания блока, определяются как кандидаты временного слияния. Каждый из кандидатов слияния регистрируется в списке кандидатов слияния. Кандидат слияния, который будет использоваться для предсказания целевого блока, определяется индексом слияния.The processed block in the adjacent block of the target block and the inter prediction information of the processed block are determined as spatial merge candidates. Blocks belonging to the processed image and located at the same position as the target block, or in the vicinity (vicinity) of the target block, and inter prediction information obtained from the block inter prediction information are determined as temporal merge candidates. Each of the merger candidates is registered in the list of merger candidates. The merge candidate to be used to predict the target block is determined by the merge index.
Соседний блокneighboring block
На фиг. 11 показана схема, иллюстрирующая опорные блоки, на которые следует ссылаться для получения информации межкадрового предсказания в режиме предиктора вектора движения и режиме слияния. A0, A1, A2, B0, B1, B2 и B3 представляют собой обрабатываемые блоки в соседнем блоке целевого блока. T0 является блоком, принадлежащим обрабатываемому изображению и расположенным на той же позиции, что и целевой блок, или в окрестности (vicinity) целевого блока в целевом изображении.In FIG. 11 is a diagram illustrating reference blocks to be referenced for obtaining inter prediction information in the motion vector predictor mode and the merge mode. A0, A1, A2, B0, B1, B2, and B3 are processing blocks in the neighboring block of the target block. T0 is a block belonging to the image being processed and located at the same position as the target block, or in the neighborhood (vicinity) of the target block in the target image.
A1 и A2 являются блоками, расположенными слева от целевого блока кодирования и рядом с целевым блоком кодирования. B1 и B3 являются блоками, расположенными над целевым блоком кодирования и рядом с целевым блоком кодирования. A0, B0 и B2 являются блоками, расположенными соответственно в нижнем левом, верхнем правом и верхнем левом углу целевого блока кодирования.A1 and A2 are blocks located to the left of the target encoding block and next to the target encoding block. B1 and B3 are blocks located above the target encoding block and next to the target encoding block. A0, B0, and B2 are blocks located respectively at the bottom left, top right, and top left of the coding target block.
Далее приведено подробное описание процесса обработки соседних блоков в режиме предиктора вектора движения и режиме слияния.The following is a detailed description of the processing of adjacent blocks in the motion vector predictor mode and the merge mode.
Компенсация аффинного движенияAffine motion compensation
Компенсация аффинного движения сначала разбивает блок кодирования на подблоки заданного блока, и затем индивидуально определяет вектор движения для каждого из разделенных подблоков для выполнения компенсации движения. Вектор движения каждого из подблоков получают на основании одной или нескольких контрольных точек, полученных из информации межкадрового предсказания обработанного блока в соседнем блоке целевого блока или блока, принадлежащего обработанному изображению и расположенного на той же позиции, что или в окрестности (vicinity) целевого блока. В то время, как настоящий вариант осуществления устанавливает размер подблока равным 4×4 выборки, размер подблока этим не ограничивается, и вектор движения может быть получен в блоках выборок.Affine motion compensation first partitions a coding block into subblocks of a given block, and then individually determines a motion vector for each of the partitioned subblocks to perform motion compensation. The motion vector of each of the sub-blocks is obtained based on one or more control points obtained from the inter-frame prediction information of the processed block in the neighboring block of the target block or a block belonging to the processed image and located at the same position as or in the neighborhood (vicinity) of the target block. While the present embodiment sets the sub-block size to 4×4 samples, the sub-block size is not limited to this, and a motion vector can be obtained in blocks of samples.
На фиг. 14 показан пример компенсации аффинного движения в случае наличия двух контрольных точек. В этом случае каждая из двух контрольных точек имеет два параметра, то есть горизонтальную составляющую и вертикальную составляющую. Соответственно, аффинное преобразование, имеющее две контрольные точки, называется аффинным преобразованием с четырьмя параметрами. На фиг. 14 CP1 и CP2 являются контрольными точками.In FIG. 14 shows an example of affine motion compensation in the case of two control points. In this case, each of the two control points has two parameters, ie a horizontal component and a vertical component. Accordingly, an affine transformation that has two control points is called a four-parameter affine transformation. In FIG. 14 CP1 and CP2 are control points.
На фиг. 15 показан пример компенсации аффинного движения в случае трех контрольных точек. В этом случае каждая из трех контрольных точек имеет два параметра, то есть горизонтальную составляющую и вертикальную составляющую. Соответственно, аффинное преобразование, имеющее три контрольные точки, называется аффинным преобразованием с шестью параметрами. На фиг. 15 CP1, CP2 и CP3 являются контрольными точками.In FIG. 15 shows an example of affine motion compensation in the case of three control points. In this case, each of the three control points has two parameters, ie a horizontal component and a vertical component. Accordingly, an affine transformation that has three control points is called a six-parameter affine transformation. In FIG. 15 CP1, CP2 and CP3 are control points.
Компенсация аффинного движения может использоваться в любом из режима предиктора вектора движения и режима слияния. Режим применения компенсации аффинного движения в режиме предиктора вектора движения определяется как режим предиктора вектора движения подблока. Режим применения компенсации аффинного движения в режиме слияния определяется как режим слияния подблоков.Affine motion compensation may be used in either of the motion vector predictor mode and the fusion mode. The affine motion compensation application mode in the motion vector predictor mode is defined as the sub-block motion vector predictor mode. The application mode of affine motion compensation in the merge mode is defined as the sub-block merge mode.
Синтаксис блока кодированияCode block syntax
Синтаксис для выражения режима предсказания блока кодирования будет описан со ссылкой на фиг.12A, 12B и 13. На фиг.12A pred_mode_flag является флагом, указывающим то, является ли режим режимом межкадрового предсказания. Установка pred_mode_flag в 0 указывает межкадровое предсказание, тогда как установка pred_mode_flag в 1 указывает внутрикадровое предсказание. pred_mode_ibc_flag, указывающий то, является ли режим режимом предсказания внутририблочного копирования, передается в случае внутрикадрового предсказания. merge_flag передается в случае предсказания внутририблочного копирования (pred_mode_ibc_flag = 1). merge_flag является флагом, указывающим то, является ли используемый режим режимом внутриблочного копирования со слиянием или режимом копирования внутрикадрового блока предсказания. merge_idx передается в режиме внутриблочного копирования со слиянием (merge_flag = 1). Режим установлен на нормальное внутрикадровое предсказание, и информация о нормальном внутрикадровом предсказании intra_pred_mode передается в том случае, когда режим не является режимом предсказания внутририблочного копирования (pred_mode_ibc_flag = 0). The syntax for expressing a coding block prediction mode will be described with reference to FIGS. 12A, 12B, and 13. In FIG. 12A, pred_mode_flag is a flag indicating whether the mode is an inter prediction mode. Setting pred_mode_flag to 0 indicates inter-prediction, while setting pred_mode_flag to 1 indicates intra-prediction. pred_mode_ibc_flag indicating whether the mode is an intra-block copy prediction mode is transmitted in the case of intra-prediction. merge_flag is passed in case of intrablock copy prediction (pred_mode_ibc_flag = 1). merge_flag is a flag indicating whether the mode used is an intra-block merge copy mode or an intra prediction block copy mode. merge_idx is passed in intra-block merge copy mode (merge_flag = 1). The mode is set to normal intra prediction, and normal intra prediction information intra_pred_mode is transmitted when the mode is not an intra block copy prediction mode (pred_mode_ibc_flag = 0).
intra_pred_mode передается в случае внутрикадрового предсказания. merge_flag является флагом, указывающим то, является ли используемый режим режимом слияния или режимом предсказания вектора движения. В случае режима предиктора вектора движения (merge_flag = 0) передается флаг inter_affine_flag, указывающий то, применять ли режим предиктора вектора движения подблока. В случае применения режима предсказания вектора движения подблока (inter_affine_flag = 1) передается cu_affine_type_flag. cu_affine_type_flag является флагом для определения количества контрольных точек в режиме предиктора вектора движения подблока.intra_pred_mode is transmitted in case of intra prediction. merge_flag is a flag indicating whether the mode used is a merge mode or a motion vector prediction mode. In the case of the motion vector predictor mode (merge_flag = 0), an inter_affine_flag flag is transmitted indicating whether to apply the subblock motion vector predictor mode. In case of applying the sub-block motion vector prediction mode (inter_affine_flag = 1), cu_affine_type_flag is transmitted. cu_affine_type_flag is a flag for specifying the number of breakpoints in subblock motion vector predictor mode.
Напротив, как показано на фиг. 12B, в случае режима слияния (merge_flag = 1) передается merge_subblock_flag. merge_subblock_flag является флагом, указывающим, применять ли режим слияния подблоков. В случае режима слияния подблоков (merge_subblock_flag = 1) передается индекс слияния merge_subblock_idx. Наоборот, в случае, когда режим не является режимом слияния подблоков (merge_subblock_flag = 0), передается флаг merge_triangle_flag, указывающий, применять ли режим слияния треугольника. В случае применения режима слияния треугольников (merge_triangle_flag = 1) передаются индексы merge_triangle_idx0 и merge_triangle_idx1 слияния треугольников для каждого из направлений разделения блоков merge_triangle_split_dir и для каждого из двух разделенных разделов. В случае неприменения режима слияния треугольников (merge_triangle_flag = 0) передается индекс merge_idx слияния.On the contrary, as shown in FIG. 12B, in case of merge mode (merge_flag = 1), merge_subblock_flag is transmitted. merge_subblock_flag is a flag indicating whether to apply the subblock merge mode. In the case of the subblock merge mode (merge_subblock_flag = 1), the merge index merge_subblock_idx is passed. Conversely, in the case where the mode is not a subblock merge mode (merge_subblock_flag = 0), a merge_triangle_flag flag indicating whether to apply the triangle merge mode is transmitted. If the triangle merge mode is applied (merge_triangle_flag = 1), the merge_triangle_idx0 and merge_triangle_idx1 indices of the triangle merge are passed for each of the merge_triangle_split_dir block splitting directions and for each of the two split sections. If the triangle merge mode is not applied (merge_triangle_flag = 0), the merge_idx index of the merge is passed.
На фиг. 13 показано значение каждого из элементов синтаксиса межкадрового предсказания и соответствующий режим предсказания. merge_flag = 0 и inter_affine_flag = 0 соответствуют нормальному режиму предиктора вектора движения (Inter Pred Mode). merge_flag = 0 и inter_affine_flag = 1 соответствуют режиму предиктора вектора движения подблока (межаффинный режим). merge_flag = 1, merge_subblock_flag = 0 и merge_trianlge_flag = 0 соответствуют нормальному режиму слияния (Merge Mode). merge_flag = 1, merge_subblock_flag = 0 и merge_trianlge_flag = 1 соответствуют режиму слияния треугольников (Triangle Merge Mode). merge_flag = 1, merge_subblock_flag = 1 соответствуют режиму слияния подблоков (Affine Merge Mode).In FIG. 13 shows the meaning of each of the inter prediction syntax elements and the corresponding prediction mode. merge_flag = 0 and inter_affine_flag = 0 correspond to normal motion vector predictor mode (Inter Pred Mode). merge_flag = 0 and inter_affine_flag = 1 correspond to the subblock motion vector predictor mode (interaffine mode). merge_flag = 1, merge_subblock_flag = 0 and merge_trianlge_flag = 0 correspond to normal Merge Mode. merge_flag = 1, merge_subblock_flag = 0 and merge_trianlge_flag = 1 correspond to Triangle Merge Mode. merge_flag = 1, merge_subblock_flag = 1 correspond to the Affine Merge Mode.
POCPOC
Счетчик очередности изображений (POC) является переменной, ассоциированной с кодируемым изображением, и устанавливается на значение, которое увеличивается на единицу в соответствии с порядком вывода изображений. Значение POC позволяет различать, являются ли изображения одинаковыми, различать последовательную взаимосвязь внешних изображений в порядке вывода или получать расстояние между изображениями. Например, можно определить, что два изображения, имеющие одинаковое значение POC, являются идентичными изображениями. В случае, когда POCs двух изображений имеют разные значения, изображение с меньшим значением POC может быть определено как изображение, которое выводится раньше. Разница между POCs двух изображений указывает расстояние между изображениями в направлении оси времени.The Picture Order Count (POC) is a variable associated with the encoded picture and is set to a value that is incremented by one according to the output order of the pictures. The POC value allows you to distinguish whether the images are the same, to distinguish the sequential relationship of external images in the output order, or to get the distance between images. For example, it can be determined that two images having the same POC value are identical images. In the case where the POCs of two pictures have different values, the picture with the lower POC value can be determined as the picture that is output earlier. The difference between the POCs of two images indicates the distance between the images in the direction of the time axis.
Первый вариант осуществленияFirst Embodiment
Далее будет приведено описание устройства 100 для кодирования изображения и устройства 200 для декодирования изображения согласно первому варианту осуществления настоящего изобретения.Next, a description will be given of the image encoding apparatus 100 and the image decoding apparatus 200 according to the first embodiment of the present invention.
На фиг. 1 показана блок-схема устройства 100 для кодирования изображений согласно первому варианту осуществления. Устройство 100 для кодирования изображений согласно варианту осуществления включает в себя блок 101 разделения блока, блок 102 межкадрового предсказания, блок 103 внутрикадрового предсказания, память 104 декодированных изображений, определитель 105 способа предсказания, блок 106 генерирования остатка, ортогональный преобразователь/квантователь 107, блок 108 кодирования битовой строки, обратный квантователь/обратный ортогональный преобразователь 109, блок 110 наложения сигнала декодированного изображения и память 111 хранения информации кодирования.In FIG. 1 shows a block diagram of an image encoding apparatus 100 according to the first embodiment. The image encoding apparatus 100 according to the embodiment includes a
Блок 101 разделения блока рекурсивно разделяет входное изображение для построения блока кодирования. Блок 101 разделения блока включает в себя: блок четвертичного разделения, который разделяет целевой блок разделения как в горизонтальном направлении, так и в вертикальном направлении; и блок двоично-троичного разделения, который разделяет целевой блок разделения либо в горизонтальном направлении, либо в вертикальном направлении. Блок 101 разделения блока устанавливает построенный блок кодирования в качестве целевого блока кодирования и подает сигнал изображения целевого блока кодирования в блок 102 межкадрового предсказания, блок 103 внутрикадрового предсказания и блок 106 генерирования остатка. Дополнительно, блок 101 разделения блока поставляет информацию, указывающую определенную рекурсивную структуру разделения, в блок 108 кодирования битовой строки. Далее приводиться подробная информация функционирования блока 101 разделения блока.The
Блок 102 межкадрового предсказания выполняет межкадровое предсказание целевого блока кодирования. Блок 102 межкадрового предсказания выводит множество кандидатов информации межкадрового предсказания из информации межкадрового предсказания, хранящейся в памяти 111 для хранения информации кодирования, и сигнала декодированного изображения, хранящегося в памяти 104 декодированных изображений, выбирает подходящий режим межкадрового предсказания из множества полученных кандидатов, и поставляет выбранный режим межкадрового предсказания и сигнал предсказанного изображения, соответствующий выбранному режиму межкадрового предсказания, в определитель 105 способа предсказания. Далее будет приведена подробная конфигурация и функционирования блока 102 межкадрового предсказания.The
Блок 103 внутрикадрового предсказания выполняет внутрикадровое предсказание для целевого блока кодирования. Блок 103 внутрикадрового предсказания обращается к сигналу декодированного изображения, хранящемуся в памяти 104 декодированных изображений, в качестве опорной выборки и выполняет внутрикадровое предсказание на основании информации кодирования, такой как режим внутрикадрового предсказания, сохраненной в памяти 111 хранения информации кодирования и, тем самым, генерирует предсказанный сигнал изображения. При внутрикадровом предсказании, блок 103 внутрикадрового предсказания выбирает подходящий режим внутрикадрового предсказания из множества режимов внутрикадрового предсказания и поставляет выбранный режим внутрикадрового предсказания и выбранный сигнал предсказанного изображения, соответствующий выбранному режиму внутрикадрового предсказания, в определитель 105 способа предсказания. Далее будет описана подробная конфигурация и работа блока 103 внутрикадрового предсказания.The
Память 104 декодированных изображений хранит декодированные изображения, сформированные блоком 110 наложения сигнала декодированных изображений. Память 104 декодированных изображений подает сохраненные декодированные изображения в блок 102 межкадрового предсказания и блок 103 внутрикадрового предсказания.The decoded
Определитель 105 способа предсказания оценивает каждое из внутрикадрового предсказания и межкадрового предсказания, используя информацию кодирования, величину кода остатка, величину искажения между предсказанным сигналом изображения и сигналом целевого изображения или т.п., и, таким образом, определяет оптимальный режим предсказания. В случае внутрикадрового предсказания определитель 105 способа предсказания поставляет информацию внутрикадрового предсказания, такую как режим внутрикадрового предсказания, в блок 108 кодирования битовой строки в качестве информации кодирования. В случае режима слияния межкадрового предсказания определитель 105 способа предсказания предоставляет информацию межкадрового предсказания, такую как индекс слияния и информацию (флаг слияния подблоков), указывающую, является ли режим режимом слияния подблоков, в блок 108 кодирования битовой строки, как информацию кодирования. В случае режима предиктора вектора движения межкадрового предсказания определитель 105 способа предсказания поставляет информацию межкадрового предсказания, такую как режим межкадрового предсказания, индекс предиктора вектора движения, опорный индекс L0 или L1, разность векторов движения или информацию, указывающую, является ли режим режимом предиктора вектора движения подблока (флаг предиктора вектора движения подблока) в блок 108 кодирования битовой строки в качестве информации кодирования. Определитель 105 способа предсказания дополнительно поставляет определенную информацию кодирования в память 111 хранения информации кодирования. Определитель 105 способа предсказания поставляет сигнал предсказанного изображения в блок 106 генерирования остатка и блок 110 наложения сигнала декодированного изображения.The
Блок 106 генерирования остатка формирует остаток путем вычитания сигнала предсказанного изображения из сигнала целевого изображения и поставляет сформированный остаток в ортогональный преобразователь/квантователь 107.The
Ортогональный преобразователь/квантователь 107 выполняет ортогональное преобразование и квантование остатка в соответствии с параметром квантования и, тем самым, формирует ортогонально преобразованный и квантованный остаток, и затем поставляет сформированный остаток в блок 108 кодирования битовой строки и обратный квантователь/обратный ортогональный преобразователь 109.The orthogonal transform/
Блок 108 кодирования битовой строки кодирует, в дополнение к последовательностям, изображения, сегменты и информацию в блоках блоков кодирования, блок 108 кодирования битовой строки кодирует информацию кодирования, соответствующую способу предсказания, определенному определителем 105 способа предсказания. для каждого из блоков кодирования. В частности, блок 108 кодирования битовой строки кодирует режим предсказания PredMode для каждого из блоков кодирования. В случае, когда режимом предсказания является межкадровое предсказание (MODE_INTER), блок 108 кодирования битовой строки кодирует информацию кодирования (информацию межкадрового предсказания), такую как флаг, для определения, является ли режим режимом слияния, флаг слияния подблоков, индекс слияния в режиме слияния, режим межкадрового предсказания в режимах без слияния, индекс предиктора вектора движения, информацию, относящуюся к разности векторов движения, и флаг предиктора вектора движения подблока на основе предписанного синтаксиса (правила синтаксиса битовой строки) и, тем самым, формирует первую битовую строку. В случае, когда режимом предсказания является внутрикадровое предсказание (MODE_INTRA), блок 108 кодирования битовых строк кодирует флаг, чтобы определить, является ли режим режимом внутриблочного копирования в соответствии с предписанным синтаксисом. В случае, когда режимом является внутриблочное копирование, информация кодирования (информация внутрикадрового предсказания), такая как индекс слияния в случае режима слияния, индекс предиктора блочного вектора в случае режима без слияния и разность блочных векторов кодируется в соответствии с предписанным синтаксисом. В случае, когда режимом не является внутриблочное копирование, информация кодирования (информация внутрикадрового предсказания), такая как режим внутрикадрового предсказания, кодируется в соответствии с предписанным синтаксисом. С помощью вышеупомянутого способа кодирования создается первая битовая строка. В дополнение к этому, блок 108 кодирования битовой строки выполняет энтропийное кодирование ортогонально преобразованного и квантованного остатка на основе предписанного синтаксиса и, таким образом, формирует вторую битовую строку. Блок 108 кодирования битовой строки мультиплексирует первую битовую строку и вторую битовую строку на основе предписанного синтаксиса и выводит битовый поток.The bit
Обратный квантователь/обратный ортогональный преобразователь 109 выполняет обратное квантование и обратное ортогональное преобразование ортогонально преобразованного/квантованного остатка, подаваемого из ортогонального преобразователя/квантователя 107 и, таким образом, вычисляет остаток и затем подает вычисленный остаток в блок 110 наложения сигнала декодированных изображений.The inverse quantizer/inverse
Блок 110 наложения сигнала декодированного изображения накладывает сигнал предсказанного изображения в соответствии с определением определителя 105 способа предсказания с остатком, который подвергается обратному квантованию/обратному ортогональному преобразованию с помощью обратного квантователя/обратного ортогонального преобразователя 109, тем самым, формируя декодированное изображение, и сохраняет сформированное декодированное изображение в памяти 104 декодированных изображений. Блок 110 наложения сигнала декодированного изображения может выполнять обработку фильтрации для уменьшения искажения, такого как блочное искажение, из-за кодирования декодированного изображения, и может после этого сохранять декодированное изображение в памяти 104 декодированных изображений. The decoded image
Память 111 хранения информации кодирования хранит информацию кодирования, такую как режим предсказания (межкадровое предсказание или внутрикадровое предсказание), определенный определителем 105 способа предсказания. В случае межкадрового предсказания информация кодирования сохраняется в памяти 111 хранения информации кодирования, которая включает в себя информацию межкадрового предсказания, такую как определенный вектор движения, опорные индексы справочных списков L0 и L1 и список кандидатов предиктора вектора движения на основании истории. В случае режима слияния с межкадровым предсказанием информация кодирования, хранящаяся в памяти 111 хранения информации кодирования, включает в себя, в дополнение к вышеописанной информации, индекс слияния и информацию межкадрового предсказания, включающую в себя информацию, указывающую, является ли режим режимом слияния подблоков. (флаг слияния подблоков). В случае режима предиктора вектора движения межкадрового предсказания информация кодирования, хранимая в памяти 111 хранения информации кодирования, включает в себя, в дополнение к вышеупомянутой информации, информацию межкадрового предсказания, такую как режим межкадрового предсказания, индекс предиктора вектора движения, разность векторов движения и информацию, указывающую, является ли режим режимом предиктора вектора движения подблока (флаг предиктора вектора движения подблока). В случае внутрикадрового предсказания информация кодирования, хранимая в памяти 111 хранения информации кодирования, включает в себя информацию внутрикадрового предсказания, такую как определенный режим внутрикадрового предсказания.The
На фиг. 2 показана блок-схема, иллюстрирующей конфигурацию устройства для декодирования изображений согласно варианту осуществления настоящего изобретения, соответствующего устройству для кодирования изображений (фиг. 1). Устройство для декодирования изображений согласно варианту осуществления включает в себя блок 201 декодирование битовой строки, блок 202 разделения блока, блок 203 межкадрового предсказания, блок 204 внутрикадрового предсказания, память 205 хранения информации кодирования, обратный квантователь/обратный ортогональный преобразователь 206 и блок 207 наложения сигнала декодированного изображения и память 208 декодированного изображения.In FIG. 2 is a block diagram illustrating the configuration of an image decoding apparatus according to an embodiment of the present invention corresponding to the image encoding apparatus (FIG. 1). The image decoding apparatus according to the embodiment includes a bit
Так как процесс декодирования устройства для декодирования изображений на фиг. 2 соответствует процессу декодирования, выполняемому устройством для кодирования изображений на фиг. 1. Соответственно, каждая из конфигураций памяти 205 хранения информации кодирования, обратный квантователь/обратный ортогональный преобразователь 206, блок 207 наложения сигнала декодированного изображения и память 208 декодированного изображения на фиг. 2 соответственно имеют функцию, соответствующую каждому из конфигураций памяти 111 хранения информации кодирования, обратного квантователя/обратного ортогонального преобразователя 109, блока 110 наложения сигнала декодированного изображения и памяти 104 декодированных изображений устройства для кодирования изображений (фиг. 1).Since the decoding process of the image decoding device in FIG. 2 corresponds to the decoding process performed by the image encoding apparatus in FIG. 1. Accordingly, each of the configurations of the encoding
Битовый поток, подаваемый в блок 201 декодирования битовых строк, разделяется на основе предписанного правила синтаксиса. Блок 201 декодирования битовых строк декодирует разделенную первую битовую строку и, таким образом, получает последовательность, изображение, сегмент, информацию в блоках блоков кодирования и информацию кодирования в блоках блоков кодирования. В частности, блок 201 декодирования битовых строк декодирует режим предсказания PredMode, который определяет, является ли предсказание межкадровым предсказанием (MODE_INTER) или внутрикадровым предсказанием (MODE_INTRA) в блоках блока кодирования. В случае, когда режимом предсказания является межкадровое предсказание (MODE_INTER), блок 201 декодирования битовых строк декодирует информацию кодирования (информацию межкадрового предсказания), относящуюся к флагу, который определяет, является ли режим режимом слияния, индекс слияния в случае режима слияния, флаг слияния подблока и межкадровое предсказание в случае режима предиктора вектора движения, индекс предиктора вектора движения, разность векторов движения, флаг предиктора вектора движения подблока или т.п. в соответствии с предписанным синтаксисом, и затем подает информацию кодирования (информацию межкадрового предсказания) в память 205 хранения информации кодирования через блок 203 межкадрового предсказания и блок 202 разделения блоков. В случае, когда режимом предсказания является внутрикадровое предсказание (MODE_INTRA), блок 201 декодирования битовых строк декодирует флаг, чтобы определить, является ли режимом режим внутриблочного копирования. В случае, когда режимом является внутриблочное копирование, информация кодирования (информация внутрикадрового предсказания), такая как индекс слияния в случае режима слияния, индекс предиктора блочного вектора в случае режима без слияния, и разность блочных векторов декодируется в соответствии с предписанным синтаксисом. В случае, когда режимом не является внутриблочное копирование, блок 201 декодирования битовых строк декодирует информацию кодирования (информацию внутрикадрового предсказания), такую как режим внутрикадрового предсказания, в соответствии с предписанным синтаксисом. С помощью вышеупомянутого способа декодирования декодированная информация кодирования (информация внутрикадрового предсказания) подается в память 205 хранения информации кодирования через блок 203 межкадрового предсказания или блок 204 внутрикадрового предсказания и через блок 202 разделения блоков. Блок 201 декодирования битовых строк декодирует разделенную вторую битовую строку и вычисляет ортогонально преобразованный/квантованный остаток и затем подает ортогонально преобразованный/квантованный остаток в обратный квантователь/обратный ортогональный преобразователь 206.The bit stream supplied to the bit
Когда режим PredMode предсказания целевого блока кодирования представляет собой межкадровое предсказание (MODE_INTER) и режим предсказания вектора движения, блок 203 межкадрового предсказания использует информацию кодирования уже декодированного сигнала изображения, сохраненного в памяти 205 хранения информации кодирования, для получения множества кандидатов предикторов вектора движения. Блок 203 межкадрового предсказания затем добавляет множество полученных кандидатов предикторов вектора движения в список кандидатов предикторов вектора движения, описанный ниже. Блок 203 межкадрового предсказания выбирает предиктор вектора движения, соответствующий индексу предиктора вектора движения, который должен быть декодирован и поставленный блоком 201 декодирования битовой строки, из множества кандидатов предикторов вектора движения, зарегистрированных в списке кандидатов предикторов вектора движения. Блок 203 межкадрового предсказания затем вычисляет вектор движения на основании разности векторов движения, декодированных блоком 201 декодирования битовой строки и выбранным предиктором вектора движения, и сохраняет вычисленный вектор движения в памяти 205 хранения информации кодирования вместе с другой информацией кодирования. Здесь информация кодирования блока кодирования, которая должна быть поставлена и сохранена, включает в себя режим PredMode предсказания, флаги predFlagL0 [xP] [yP] и predFlagL1 [xP] [yP], указывающие, следует ли использовать L0 предсказание и L1 предсказание, опорные индексы refIdxL0 [xP] [yP] и refIdxL1 [xP] [yP] L0 и L1; и векторы mvL0 [xP] [yP] и mvL1 [xP] [yP] движения для L0 и L1. Здесь xP и yP являются индексами, указывающие позицию верхней левой выборки блока кодирования в изображении. В случае, когда режим PredMode предсказания является межкадровым предсказанием (MODE_INTER) и режимом межкадрового предсказания является L0 предсказанием (Pred_L0), флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, устанавливается на 1, и флаг predFlagL1 указывает, использовать ли L1 предсказание, установлен на 0. В случае, когда режимом межкадрового предсказания является L1 предсказание (Pred_L1), флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, установлен на 0, и флаг predFlagL1, указывающий, использовать ли L1 предсказание, установлен на 1. В случае, когда режимом межкадрового предсказания является двунаправленное предсказание (Pred_BI), и флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, и флаг predFlagL1, указывающий, использовать ли L1 предсказание, устанавливаются на 1. Дополнительно, когда режим PredMode предсказания целевого блока кодирования является режимом межкадрового предсказания (MODE_INTER) и режимом слияния, то получается кандидат слияния. Используя информацию кодирования уже декодированного блока кодирования, хранящуюся в памяти 205 хранения информации кодирования, выводится множество кандидатов слияния и регистрируется в списке кандидатов слияния, описанном ниже. Затем кандидат слияния, соответствующий индексу слияния, который декодируется блоком 201 декодирования битовой строки и предоставляется, выбирается из множества кандидатов слияния, зарегистрированных в списке кандидатов слияния, и затем информация межкадрового предсказания, такая как flags predFlagL0 [xP ] [yP] и predFlagL1 [xP] [yP], указывающие, следует ли использовать L0 предсказание и L1 предсказание выбранного кандидата слияния, опорные индексы refIdxL0 [xP] [yP] и refIdxL1 [xP] [yP] L0 и L1 и векторы mvL0 [xP] [yP] и mvL1 [xP] [yP] движения для L0 и L1 должны храниться в памяти 205 хранения информации кодирования. Здесь xP и yP являются индексами, указывающими позицию верхней левой выборки блока кодирования в изображении. Далее будет приведено подробное описание конфигурации и функционирования блока 203 межкадрового предсказания.When the prediction mode PredMode of the target encoding block is inter prediction (MODE_INTER) and motion vector prediction mode, the
Блок 204 внутрикадрового предсказания выполняет внутрикадровое предсказание, когда режим PredMode предсказания целевого блока кодирования является внутрикадровым предсказанием (MODE_INTRA). Информация кодирования, декодированная блоком 201 декодирования битовой строки, включает в себя режим внутрикадрового предсказания. Блок 204 внутрикадрового предсказания генерирует сигнал предсказанного изображения посредством внутрикадрового предсказания из сигнала декодированного изображения, хранящегося в памяти 208 декодированных изображений, в соответствии с режимом внутрикадрового предсказания в информации кодирования, декодированной блоком 201 декодирования битовой строки. Далее блок 204 внутрикадрового предсказания поставляет сгенерированный предсказанный сигнал изображения в блок 207 наложения декодированного сигнала изображения. Блок 204 внутрикадрового предсказания соответствует блоку 103 внутрикадрового предсказания устройства 100 для кодирования изображения и, таким образом, выполняет обработку, аналогичную обработке блока 103 внутрикадрового предсказания. The
Обратный квантователь/обратный ортогональный преобразователь 206 выполняет обратное ортогональное преобразование/обратное квантование ортогонально преобразованного/квантованного остатка, декодированного в блоке 201 декодирования битовой строки и, таким образом, получает обратно ортогонально преобразованный/обратно квантованный остаток.The inverse quantizer/inverse
Блок 207 наложения сигнала декодированного изображения накладывает сигнал изображения, предсказанный с помощью межкадрового предсказания блоком 203 межкадрового предсказания, или сигнал изображения с предсказанием, предсказанный с помощью внутрикадрового предсказания блоком 204 внутрикадрового предсказания, с остатком, который был обратно ортогонально преобразован/обратно квантован посредством обратного квантователя/обратного ортогонального преобразователя 206, тем самым, декодируя сигнал декодированного изображения. Блок 207 наложения сигнала декодированного изображения затем сохраняет сигнал декодированного изображения, который был декодирован, в памяти 208 декодированных изображений. При сохранении декодированного изображения в памяти 208 декодированных изображений, блок 207 наложения сигнала декодированного изображения может выполнять обработку фильтрации для декодированного изображения для уменьшения блочного искажения или подобного из-за кодирования и может после этого сохранять декодированное изображение в памяти 208 декодированных изображений.The decoded image
Далее будет описана работа блока 101 разделения блока в устройстве 100 для кодирования изображения. На фиг. 3 показана блок-схема алгоритма, иллюстрирующая операцию разделения изображения на блоки дерева и дополнительного разделения каждого из блоков дерева. Сначала входное изображение разделяется на блоки дерева заданного размера (этап S1001). Каждый из блоков дерева сканируется в заранее определенном порядке, то есть в порядке растрового сканирования (этап S1002), и целевой блок дерева внутренне разделяется (этап S1003).Next, the operation of the
На фиг. 7 показана блок-схема алгоритма, иллюстрирующая подробную операцию процесса разделения на этапе S1003. Сначала определяется, разделить ли целевой блок на четыре (этап S1101).In FIG. 7 is a flowchart illustrating the detailed operation of the division process in step S1003. First, it is determined whether to divide the target block into four (step S1101).
В случае, когда определяется, что целевой блок должен быть разделен на четыре, целевой блок будет разделен на четыре (этап S1102). Каждый из блоков, полученных путем разделения целевого блока, сканируется в порядке Z-сканирования, то есть в порядке верхнего левого, верхнего правого, нижнего левого и нижнего правого (этап S1103). На фиг. 5 показан пример порядка Z-сканирования, 601 на фиг. 6A иллюстрирует пример, в котором целевой блок разделен на четыре. Цифры от 0 до 3 из 601 на фиг. 6A указывают порядок обработки. Затем рекурсивно выполняется процесс разделения (фиг. 7) для каждого из блоков, разделенных на этапе S1101 (этап S1104).In the case where it is determined that the target block is to be divided by four, the target block will be divided by four (step S1102). Each of the blocks obtained by dividing the target block is scanned in a Z-scan order, that is, in the order of top left, top right, bottom left, and bottom right (step S1103). In FIG. 5 shows an example of a Z-scan order, 601 in FIG. 6A illustrates an example in which the target block is divided into four.
В случае, когда определено, что целевой блок не должен быть разделен на четыре, целевой блок будет разделен на два или три, а именно, будет выполнено двоично-троичное разделение (этап S1105).In the case where it is determined that the target block is not to be divided into four, the target block will be divided into two or three, namely, binary-ternary division will be performed (step S1105).
На фиг. 8 показана блок-схема алгоритма, подробно иллюстрирующая работу процесса двоично-троичного разделения на этапе S1105. Во-первых, определяется, будет ли выполнено двоично-троичное разделение для целевого блока, то есть будет ли выполняться какое-либо двоичное или троичное разделение (этап S1201).In FIG. 8 is a flowchart illustrating in detail the operation of the binary-ternary separation process in step S1105. First, it is determined whether binary-ternary separation will be performed for the target block, that is, whether any binary or ternary separation will be performed (step S1201).
В случае, когда не определено, что на целевом блоке должно выполняться двоично-троичное разделение, то есть в случае, когда определено, что не следует разделять целевой блок, разделение завершается (этап S1211). То есть дополнительный процесс рекурсивного разделения не должен выполняться для блока, который был разделен процессом рекурсивного разделения.In the case where it is not determined that binary-ternary separation is to be performed on the target block, that is, in the case where it is determined that the target block is not to be divided, the separation is completed (step S1211). That is, an additional recursive division process need not be performed on a block that has been divided by the recursive division process.
В случае, когда определено, что двоично-троичное разделение будет выполнено в целевом блоке, дополнительно определяется, следует ли разделить целевой блок на два (этап S1202).In the case where it is determined that binary-ternary division will be performed in the target block, it is further determined whether or not to divide the target block into two (step S1202).
В случае, когда определяется, что целевой блок должен быть разделен на два, дополнительно определяется, следует ли разделить целевой блок в верхнем-нижнем (вертикальном) направлении (этап S1203) и затем на основании результата целевой блок будет двоично разделен в верхнем-нижнем (вертикальном) направлении (этап S1204), или целевой блок будет двоично разделен в лево-правом (горизонтальном) направлении (этап S1205). В результате этапа S1204 целевой блок двоично разделяется в направлении вверх-вниз (вертикальное направление), как проиллюстрировано на позиции 602 на фиг. 6B. В результате этапа S1205 целевой блок двоично разделяется вправо-влево (горизонтальное направление), как проиллюстрировано на этапе 604 на фиг. 6D.In the case where it is determined that the target block is to be divided into two, it is further determined whether or not to split the target block in the top-bottom (vertical) direction (step S1203), and then, based on the result, the target block will be binary-divided in the top-bottom ( vertical) direction (step S1204), or the target block will be binary divided in the left-right (horizontal) direction (step S1205). As a result of step S1204, the target block is binary split in the up-down direction (vertical direction), as illustrated at 602 in FIG. 6b. As a result of step S1205, the target block is left-right binary split (horizontal direction), as illustrated in
На этапе S1202, в случае, когда не определено, что целевой блок должен быть разделен на два, то есть в случае, когда определено, что целевой блок должен быть разделен на три, дополнительно определяют, следует ли разделить целевой блок на три части: верхнюю, среднюю и нижнюю (вертикальное направление) (этап S1206). На основании результата целевой блок разделяется на три части: верхнюю, среднюю и нижнюю части (вертикальное направление) (этап S1207) или левую, среднюю и правую части (горизонтальное направление) (этап S1208). В результате этапа S1207 целевой блок разделяется на три части: верхнюю, среднюю и нижнюю части (вертикальное направление), как проиллюстрировано на этапе 603 на фиг. 6C. В результате этапа S1208 целевой блок разделяется на три части: левую, среднюю и правую (горизонтальное направление), как проиллюстрировано на этапе 605 на фиг. 6E.In step S1202, in the case where it is not determined that the target block is to be divided into two, that is, in the case where it is determined that the target block is to be divided into three, it is further determined whether the target block is to be divided into three parts: upper , middle and bottom (vertical direction) (step S1206). Based on the result, the target block is divided into three parts: top, middle and bottom parts (vertical direction) (step S1207) or left, middle and right parts (horizontal direction) (step S1208). As a result of step S1207, the target block is divided into three parts: top, middle, and bottom (vertical direction), as illustrated in
После выполнения одного из этапов S1204, S1205, S1207 или S1208 каждый из блоков, полученных путем разделения целевого блока, сканируется в порядке слева направо и сверху вниз (этап S1209). Цифры от 0 до 2 от 602 до 605 на фиг. 6B-6E указывают порядок обработки. Для каждого из блоков разделения рекурсивно выполняется процесс двоично-троичного разделения на фиг. 8 (этап S1210).After performing one of steps S1204, S1205, S1207 or S1208, each of the blocks obtained by dividing the target block is scanned in order from left to right and top to bottom (step S1209).
В описанном в настоящем документе рекурсивном разделении блоков правильность разделения может быть ограничена на основании количества разделений, размера целевого блока и т.п. Информация, которая ограничивает правильность разделения, может быть предоставлена в конфигурации, в которой информация не передается путем заключения предварительного соглашения между устройством кодирования и устройством декодирования, или в конфигурации, в которой устройство кодирования определяет информацию для ограничения правильности разделения и записывает информацию в битовые строки, тем самым, передавая информацию в устройство для декодирования.In the recursive block division described herein, the correctness of the division may be limited based on the number of divisions, the size of the target block, and the like. The information that limits the correctness of the division may be provided in a configuration in which information is not transmitted by a prior agreement between the encoder and the decoder, or in a configuration in which the encoder determines information for limiting the correctness of the division and writes the information in bit strings, thereby transmitting the information to the device for decoding.
Когда конкретный блок разделяется, блок до разделения называется родительским блоком и каждый из блоков после разделения называется дочерним блоком.When a particular block is split, the block before the split is called the parent box and each of the boxes after the split is called a child box.
Далее будет описана функциональность блока 202 разделения блока в устройстве 200 для декодирования изображения. Блок 202 разделения блока разделяет блок дерева, используя процедуру обработки, аналогичную случаю блока 101 разделения блока устройства 100 для кодирования изображения. Обратите внимание, что есть разница, хотя блок 101 разделения блока устройства 100 для кодирования изображения определяет оптимальную форму разделения блока путем применения способа оптимизации, такого как оценка оптимальной формы путем распознавания изображения или оптимизации скорости искажения, блок 202 разделения блока устройства 200 для декодирования изображения определяет форму разделения блока путем декодирования информации разделения блока, записанную в битовой строке.Next, the functionality of the
Фиг.9 иллюстрирует синтаксис (правила синтаксиса битовой строки), относящийся к разделению блока согласно первому варианту осуществления. coding_quadtree () представляет синтаксис для процесса разделения на четыре части блока. multi_type_tree () представляет синтаксис процесса разделения блока на два или три. qt_split является флагом, указывающим, следует ли разбить блок на четыре. В случае разделения блока на четыре, установка является qt_split = 1. В случае отсутствия разделения блока на четыре, настройка будет равна qt_split = 0. В случае разделения блока на четыре (qt_split = 1), процесс разделения на четыре будет выполняться рекурсивно для каждого из блоков, разделенных на четыре (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2) и coding_quadtree (3), в которых аргументы от 0 до 3 соответствуют номерам 601 на фиг.6A). В случае, когда разделение на четыре не должно выполняться (qt_split = 0), последующее разделение определяется согласно multi_type_tree (). mtt_split является флагом, указывающим, следует ли выполнять дополнительное разделение. В случае, когда необходимо выполнить дополнительное разделение (mtt_split = 1), будет выполнена передача mtt_split_vertical, который является флагом, указывающим, следует ли выполнять разделение в вертикальном или горизонтальном направлении, и mtt_split_binary, который является флагом, определяющим то, следует ли выполнять двоичное разделение или троичное разделение блока. mtt_split_vertical = 1 указывает разделение в вертикальном направлении и mtt_split_vertical = 0 указывает разделение в горизонтальном направлении. mtt_split_binary = 1 указывает, что блок подвергнут двоичному разделению, а mtt_split_binary = 0 указывает, что блок разделен на три. В случае, когда блок должен быть разделен двоичным кодом (mtt_split_binary = 1), процесс разделения выполняется рекурсивно для каждого из двух разделенных блоков (multi_type_tree (0) и multi_type_tree (1), в которых аргументы от 0 до 1 соответствуют числам в 602 или 604 на фиг.6B-6D). В случае, когда блок должен быть разделен на три (mtt_split_binary = 0), процесс разделения выполняется рекурсивно для каждого из трех разделенных блоков (multi_type_tree (0), multi_type_tree (1) и multi_type_tree (2), в котором 0 2 соответствуют номерам 603 на фиг.6B или 605 на фиг.6E). multi_type_tree рекурсивно используется до тех пор, пока mtt_split = 0 не приведет к иерархическому разделению блоков.9 illustrates the syntax (bit string syntax rules) related to block division according to the first embodiment. coding_quadtree() represents the syntax for the quad block process. multi_type_tree() represents the syntax for splitting a block into two or three. qt_split is a flag indicating whether the block should be split into four. In the case of a block split by four, the setting is qt_split = 1. In the case of no block split by four, the setting will be qt_split = 0. In the case of a block split by four (qt_split = 1), the split by four process will be performed recursively for each of blocks divided into four (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2) and coding_quadtree (3), in which the arguments from 0 to 3 correspond to the
Внутрикадровое предсказаниеIntra-frame prediction
Способ внутрикадрового предсказания согласно варианту осуществления реализуется в блоке 103 внутрикадрового предсказания устройства 100 для кодирования изображений, показанного на фиг.1, и в блоке 204 внутрикадрового предсказания устройства 200 для декодирования изображений, показанного на фиг.2.The intra prediction method according to the embodiment is implemented in the
Способ внутрикадрового предсказания согласно варианту осуществления будет описан со ссылкой на чертежи. Способ внутрикадрового предсказания реализуется в любом из процессов кодирования и декодирования в единицах блоков кодирования.An intra prediction method according to an embodiment will be described with reference to the drawings. The intra-frame prediction method is implemented in any of the encoding and decoding processes in units of coding blocks.
Блок 103 внутрикадрового предсказания на стороне кодирования
На фиг.40 показано схематичное представление, иллюстрирующее подробную конфигурацию блока 103 внутрикадрового предсказания устройства 100 для кодирования изображений, показанного на фиг.1. Блок 351 нормального внутрикадрового предсказания вырабатывает предсказанный сигнал изображения посредством нормального внутрикадрового предсказания из декодированных пикселей, соседних с целевым блоком кодирования, выбирает подходящий режим внутрикадрового предсказания из множества режимов внутрикадрового предсказания и подает выбранный режим внутрикадрового предсказания и предсказанный сигнал изображения, соответствующий выбранному режиму внутрикадрового предсказания, в определитель 105 способа предсказания. На фиг.10A и 10B показаны примеры внутрикадрового предсказания. Фиг.10A иллюстрирует соответствие между направлением предсказания нормального внутрикадрового предсказания и номером режима внутрикадрового предсказания. Например, режим 50 «внутрикадрового предсказания» копирует опорные выборки в вертикальном направлении и тем самым создает изображение внутрикадрового предсказания. Режим 1 внутрикадрового предсказания представляет собой режим постоянного тока, в котором все значения выборки целевого блока устанавливаются равными среднему значению опорных выборок. Режим 0 внутрикадрового предсказания представляет собой планарный режим, в котором двухмерное внутрикадровое предсказание создается из опорных выборок в вертикальном и горизонтальном направлениях. На фиг.10В показан пример построения изображения внутрикадрового предсказания в случае режима 40 внутрикадрового предсказания. Для каждой из выборок целевого блока копируется значение опорной выборки в направлении, указанном режимом внутрикадрового предсказания. В случае, когда опорная выборка в режиме внутрикадрового предсказания находится не в целочисленной позиции, значение опорной выборки определяется путем интерполяции из значений опорных выборок в соседних целочисленных позициях.FIG. 40 is a schematic diagram illustrating the detailed configuration of the
Блок 352 предсказания внутририблочного копирования получает декодированную область одного и того же сигнала изображения в качестве целевого блока кодирования, вырабатывает предсказанный сигнал изображения в процессе внутриблочного копирования, и подает предсказанный сигнал изображения в определитель 105 способа предсказания. Подробная конфигурация и процесс, выполняемый блоком 352 предсказания внутририблочного копирования будут описаны ниже.The block
Блок 204 внутрикадрового предсказания на стороне декодирования
На фиг.41 показано схематичное представление, иллюстрирующее подробную конфигурацию блока 204 внутрикадрового предсказания устройства 200 для декодирования изображений, показанного на фиг.2.FIG. 41 is a schematic diagram illustrating a detailed configuration of the
Блок 361 нормального внутрикадрового предсказания вырабатывает сигнал предсказания посредством нормального внутрикадрового предсказания из декодированных пикселей, соседних с целевым блоком кодирования, выбирает подходящий режим внутрикадрового предсказания из множества режимов внутрикадрового предсказания и получает выбранный режим внутрикадрового предсказания и предсказанный сигнал изображения, соответствующий выбранному режиму внутрикадрового предсказания. Этот сигнал предсказания подается в блок 207 наложения сигналов декодированного изображения через переключатель 364. Процесс, выполняемый блоком 361 нормального внутрикадрового предсказания, показанного на фиг.41, соответствует процессу, выполняемому блоком 351 нормального внутрикадрового предсказания, показанным на фиг.40, и поэтому их подробное описание будет опущено.The normal
Блок 362 предсказания внутририблочного копирования получает декодированную область одного и того же сигнала изображения в качестве целевого блока кодирования, и получает предсказанный сигнал изображения путем процесса внутриблочного копирования. Этот предсказанный сигнал изображения подается в блок 207 наложения сигналов декодированного изображения через переключатель 364. Подробная конфигурация и процесс, выполняемый блоком 362 предсказания внутририблочного копирования будут описаны ниже.The intra-block
Межкадровое предсказаниеInterframe prediction
Способ межкадрового предсказания согласно варианту осуществления реализован в блоке 102 межкадрового предсказания устройства для кодирования изображения на фиг. 1 и в блоке 203 межкадрового предсказания устройства для декодирования изображения на фиг. 2.The inter prediction method according to the embodiment is implemented in the
Далее будет приведено описание способа межкадрового предсказания согласно варианту осуществления со ссылкой на чертежи. Способ межкадрового предсказания реализуется в любом из процессов кодирования и декодирования в блоках кодирования.Next, a description will be given of the inter prediction method according to the embodiment with reference to the drawings. The inter-frame prediction method is implemented in any of the encoding and decoding processes in coding blocks.
Блок 102 межкадрового предсказания на стороне кодирования
На фиг. 16 показана схема, иллюстрирующая подробную конфигурацию блока 102 межкадрового предсказания устройства для кодирования изображений на фиг. 1. Блок 301 получения режима предиктора нормального вектора движения выводит множество кандидатов предиктора нормального вектора движения, выбирает предиктор вектора движения и вычисляет разность векторов движения между выбранным предиктором вектора движения и обнаруженным вектором движения. Обнаруженный режим межкадрового предсказания, опорный индекс, вектор движения и вычисленная разность векторов движения являются информацией межкадрового предсказания режима предиктора нормального вектора движения. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 301 получения режима предиктора нормального вектора движения.In FIG. 16 is a diagram illustrating a detailed configuration of the
Блок 302 получения режима нормального слияния выводит множество кандидатов нормального слияния, выбирает кандидата нормального слияния и получает информацию межкадрового предсказания для режима нормального слияния. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 302 получения режима нормального слияния.The normal merge
Блок 303 получения режима предиктора вектора движения подблока выводит множество кандидатов предиктора вектора движения подблока, выбирает предиктор вектора движения подблока и вычисляет разность векторов движения между выбранным предиктором вектора движения подблока и обнаруженным вектором движения. Обнаруженный режим межкадрового предсказания, опорный индекс, вектор движения и вычисленная разность векторов движения является информацией межкадрового предсказания режима предиктора вектора движения подблока. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания.The sub-block motion vector predictor
Блок 304 получения режима слияния подблоков выводит множество кандидатов слияния подблоков, выбирает кандидата слияния подблоков и получает информацию межкадрового предсказания режима слияния подблоков. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания.The sub-block merge
В определителе 305 режима межкадрового предсказания определяется информация межкадрового предсказания на основании информации межкадрового предсказания, поступающей из блока 301 получения режима предиктора нормального вектора движения, блока 302 получения режима нормального слияния, блока 303 получения режима предиктора вектора движения подблока и блока 304 получения режима слияния подблоков. Информация межкадрового предсказания согласно результата определения подается из определителя 305 режима межкадрового предсказания в блок 306 предсказания компенсации движения.In the inter
Блок 306 предсказания компенсации движения выполняют межкадровое предсказание на сигнале опорного изображения, сохраненном в памяти 104 декодированного изображения на основании определенной информации межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 306 предсказания компенсации движения.The
Блок 203 межкадрового предсказания на стороне декодирования
На фиг. 22 показан схема, иллюстрирующая подробную конфигурацию блока 203 межкадрового предсказания устройства для декодирования изображения на фиг. 2.In FIG. 22 is a diagram illustrating a detailed configuration of the
Блок 401 получения режима предиктора нормального вектора движения выводит множество кандидатов предиктора нормального вектора движения, выбирает предиктор вектора движения, вычисляет добавленное значение, полученное путем сложения выбранного предиктора вектора движения и разности декодированных векторов движения, и устанавливает это добавленное значение как вектор движения. Декодированный режим межкадрового предсказания, опорный индекс, вектор движения является информацией межкадрового предсказания режима предиктора нормального вектора движения. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408. Далее будет приведено подробное описание конфигурации и обработки блока 401 получения режима предиктора нормального вектора движения.The normal motion vector predictor
Блок 402 получения режима нормального слияния выводит множество кандидатов нормального слияния, выбирает кандидата нормального слияния и получает информацию межкадрового предсказания для режима нормального слияния. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408. Ниже будет представлена подробная конфигурация и обработка блока 402 получения режима нормального слияния.The normal merge
Блок 403 получения режима предиктора вектора движения подблока выводит множество кандидатов предиктора вектора движения подблока, выбирает предиктор вектора движения подблока и вычисляет добавленное значение, полученное путем сложения выбранного предиктора вектора движения подблока и декодированной разности векторов движения, и устанавливает это добавленное значение как вектор движения. Декодированный режим межкадрового предсказания, опорный индекс и вектор движения являются информацией межкадрового предсказания режима предиктора вектора движения подблока. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408.The sub-block motion vector predictor
Блок 404 получения режима слияния подблоков выводит множество кандидатов слияния подблоков, выбирает кандидата слияния подблоков и получает информацию межкадрового предсказания режима слияния подблоков. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408.The sub-block merge
Блок 406 предсказания компенсации движения выполняет межкадровое предсказание на сигнале опорного изображения, сохраненного в памяти 208 декодированного изображения на основании определенной информации межкадрового предсказания. Подробная конфигурация и обработка блока 406 предсказания компенсации движения аналогичны блоку 306 предсказания компенсации движения на стороне кодирования.The
Блок получения режима предиктора нормального вектора движения (Normal AMVP)Normal Motion Vector Predictor Mode (Normal AMVP) Obtaining Block
Блок 301 получения режима предиктора нормального вектора движения на фиг. 17 включает в себя блок 321 получения кандидата пространственного предиктора вектора движения, блок 322 получения кандидата временного предиктора вектора движения, блок 323 получения кандидата предиктора вектора движения на основании истории, пополнитель 325 кандидатов предиктора вектора движения, определитель 326 нормального вектора движения, селектор 327 кандидата предиктора вектора движения и вычитатель 328 вектора движения.The normal motion vector predictor
Блок 401 получения режима предиктора нормального вектора движения на фиг. 23 включает в себя блок 421 получения кандидата пространственного предиктора вектора движения, блок 422 получения кандидата временного предиктора вектора движения, блок 423 получения кандидата предиктора вектора движения на основании истории, пополнитель 425 кандидатов предиктора вектора движения, селектор 426 кандидатов предиктора вектора движения и сумматор 427 вектора движения.The normal motion vector predictor
Со ссылкой на блок-схемы алгоритма на фиг. 19 и фиг. 25, соответственно, описаны процедуры обработки блока 301 получения режима предиктора нормального вектора движения на стороне кодирования и блока 401 получения режима предиктора нормального вектора движения на стороне декодирования. На фиг. 19 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения режима предиктора нормального вектора движения, выполняемую блоком 301 получения режима нормального вектора движения на стороне кодирования. На фиг. 25 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения режима предиктора нормального вектора движения, выполняемую блоком 401 получения режима нормального вектора движения на стороне декодирования.With reference to the flowcharts in FIG. 19 and FIG. 25, respectively, the processing procedures of the normal motion vector predictor
Блок получения режима предиктора нормального вектора движения (Normal AMVP): сторона кодированияNormal Motion Vector Predictor Mode (Normal AMVP) Obtaining Block: Encoding Side
Со ссылкой на фиг. 19 будет описана процедура обработки получения режима предиктора нормального вектора движения на стороне кодирования. В описании процедуры обработки на фиг. 19 слово «нормальный», проиллюстрированное на фиг. 19, в некоторых случаях опускается.With reference to FIG. 19, a normal motion vector predictor mode acquisition processing procedure on the encoding side will be described. In the description of the processing procedure in FIG. 19, the word "normal" illustrated in FIG. 19 is omitted in some cases.
Во-первых, определитель 326 нормального вектора движения обнаруживает нормальный вектор движения для каждого из режимов межкадрового предсказания и опорных индексов (этап S100 на фиг. 19).First, the normal motion vector determiner 326 detects the normal motion vector for each of the inter prediction modes and reference indexes (step S100 in FIG. 19).
В последствии, для каждого из L0 и L1 вычисляется разность векторов движения вектора движения, используемого при межкадровом предсказании в режиме предиктора нормального вектора движения (этапы S101-S106 на фиг. 19) в блоке 321 получения кандидата пространственного предиктора вектора движения, блоке 322 получения кандидата временного предиктора вектора движения, блоке 323 получения кандидата предиктора вектора движения на основании истории, пополнителе 325 кандидата предиктора вектора движения, селекторе 327 кандидата предиктора вектора движения и вычитателе 328 вектора движения. В частности, в случае, где режимом предсказания PredMode целевого блока является межкадровое предсказание (MODE_INTER) и режимом межкадрового предсказания является L0 предсказание (Pred_L0), вычисляется список mvpListL0 кандидатов предиктора вектора движения L0. В последствии выбирается предиктор mvpL0 вектора движения и затем вычисляется разность mvdL0 вектора движения вектора mvL0 движения L0. В случае, когда режимом межкадрового предсказания целевого блока является L1 предсказание (Pred_L1), вычисляется список mvpListL1 кандидатов предикторов вектора движения L1. Затем выбирается предиктор mvpL1 вектора движения, в последствии вычисляется разность mvdL1 векторов движения вектора mvL1 движения L1. В случае, когда режимом межкадрового предсказания целевого блока является двунаправленное предсказание (Pred_BI), выполняются оба L0 предсказание и L1 предсказание. Вычисляется список mvpListL0 кандидатов предикторов вектора движения для L0 и выбирается предиктор mvpL0 вектора движения для L0, и затем вычисляется разность mvdL0 векторов движения вектора mvL0 движения для L0. Наряду с этим вычислением вычисляется список mvpListL1 кандидатов предикторов вектора движения для L1 и вычисляется предиктор mvpL1 вектора движения для L1 и затем вычисляется разность mvdL1 векторов движения вектора mvL1 движения для L1.Subsequently, for each of L0 and L1, the motion vector difference of the motion vector used in inter-picture prediction in the normal motion vector predictor mode is calculated (steps S101 to S106 in FIG. 19) in the spatial motion vector predictor
Процесс вычисления разности векторов движения выполняется для каждого из L0 и L1, в котором процесс вычисления является общим процессом как для L0, так и для L1. Соответственно, L0 и L1 будут обозначаться как LX как общая процедура. В процессе вычисления разности векторов движения L0, X LX устанавливается на 0, в то время как в процессе вычисления разности векторов движения L1, X LX устанавливается на 1. Дополнительно, в случае, когда обращаются за информацией о другом списке вместо одного LX в процессе вычисления разности векторов движения одного LX, другой список будет представлен как LY.The motion vector difference calculation process is performed for each of L0 and L1, in which the calculation process is a common process for both L0 and L1. Accordingly, L0 and L1 will be referred to as LX as a general procedure. In the process of calculating the motion vector difference L0, X, LX is set to 0, while in the process of calculating the motion vector difference L1, X, LX is set to 1. the difference of the motion vectors of one LX, the other list will be represented as LY.
В случае, когда используется вектор mvLX движения LX (ДА на этапе S102 на фиг. 19), вычисляются кандидаты предиктора вектора движения LX, тем самым, составляя список mvpListLX кандидатов предикторов вектора движения LX (этап S103 на фиг. 19). В блоке 301 получения режима предиктора нормального вектора движения, блоке 321 получения кандидата пространственного предиктора вектора движения, блоке 322 получения кандидата временного предиктора вектора движения, блоке 323 получения кандидата предиктора вектора движения на основании истории и пополнителе 325 кандидатов предиктора вектора движения выводят множество кандидатов предикторов вектора движения и, тем самым, составляют список mvpListLX кандидатов предикторов вектора движения. Далее со ссылкой на фиг. 19 будет описана подробная процедура обработки этапа S103 с использованием блок-схемы алгоритма на фиг. 20.In the case where the LX motion vector mvLX is used (YES in step S102 in FIG. 19), the LX motion vector predictor candidates are calculated, thereby compiling the LX motion vector predictor candidate list mvpListLX (Step S103 in FIG. 19). In the normal motion vector predictor
Далее селектор 327 кандидатов предиктора вектора движения выбирает предиктор mvpLX вектора движения LX списка mvpListLX кандидатов предиктора вектора движения LX (этап S104 на фиг. 19). Здесь один элемент (i-й элемент, отсчитываемый от 0) в списке mvpListLX кандидатов предиктора вектора движения представлен как mvpListLX [i]. Вычисляется каждая разность векторов движения, которая представляет собой разность между вектором движения mvLX и каждым из кандидатов предикторов mvpListLX [i] вектора движения, сохраненных в списке mvpListLX кандидатов предикторов вектора движения. Для каждого из элементов (кандидатов предикторов вектора движения) списка mvpListLX кандидатов предиктора вектора движения вычисляется объем кода во время кодирования этих разностей векторов движения. Затем выбирается кандидат предиктор mvpListLX [i] вектора движения, который минимизирует количество кода для каждого из кандидатов предикторов вектора движения среди отдельных элементов, зарегистрированных в списке mvpListLX кандидатов предиктора вектора движения, в качестве предиктора mvpLX вектора движения, и получен его индекс i. В случае наличия множества кандидатов предикторов вектора движения, имеющих минимальный сгенерированный объем кода в списке mvpListLX кандидатов предикторов вектора движения, выбирается кандидат предиктор mvpListLX [i] вектора движения, имеющий индекс i в списке mvpListLX кандидатов предиктора вектора движения, представленный небольшим числом в качестве оптимального предиктора mvpLX вектора движения, и получается его индекс i.Next, the motion vector
Затем блок 328 вычитания вектора движения вычитает выбранный предиктор mvpLX вектора движения LX из вектора mvLX движения LX и вычисляет разность векторов mvdLX движения LX как в: Then, the
mvdLX = mvLX - mvpLX (этап S105 на фиг. 19).mvdLX = mvLX - mvpLX (step S105 in FIG. 19).
Блок получения режима предиктора нормального вектора движения (нормальный AMVP): сторона декодированияNormal motion vector predictor mode acquisition block (normal AMVP): decode side
Далее со ссылкой на фиг. 25 будет описана процедура обработки режима предиктора нормального вектора движения на стороне декодирования. На стороне декодирования блок 421 получения кандидата пространственного предиктора вектора движения, блок 422 получения кандидата временного предиктора вектора движения, блок 423 получения кандидатов предикторов вектора движения на основании истории и пополнитель 425 кандидатов предикторов вектора движения индивидуально вычисляют векторы движения, используемые во межкадровом предсказании режима предиктора нормального вектора движения для каждого из L0 и L1 (этапы S201-S206 на фиг. 25). В частности, в случае, когда режимом PredMode предсказания целевого блока является межкадровое предсказание (MODE_INTER) и режимом межкадрового предсказания целевого блока является L0 предсказание (Pred_L0), вычисляется список mvpListL0 кандидатов предикторов вектора движения L0. Затем выбирается предиктор вектора mvpL0 движения и затем вычисляется вектор mvL0 движения L0. В случае, когда режимом межкадрового предсказания целевого блока является L1 предсказание (Pred_L1), вычисляется список mvpListL1 кандидатов предикторов вектора движения L1. Затем выбирается предиктор вектора mvpL1 движения и вычисляется вектор mvL1 движения L1. В случае, когда режимом межкадрового предсказания целевого блока является двунаправленное предсказание (Pred_BI), выполняются оба L0 предсказание и L1 предсказание. Вычисляется список mvpListL0 кандидатов предикторов вектора движения L0 и выбирается предиктор mvpL0 вектора движения L0 и затем вычисляется вектор mvL0 движения для L0. Наряду с этим вычислением вычисляется список mvpListL1 кандидатов предикторов вектора движения для L1 и вычисляется предиктор mvpL1 вектора движения для L1 и затем вычисляется вектор mvL1 движения для L1.Next, with reference to FIG. 25, a normal motion vector predictor mode processing procedure on the decoding side will be described. On the decoding side, a spatial motion vector predictor
Аналогично стороне кодирования, сторона декодирования выполняет обработку вычисления вектора движения для каждого из L0 и L1, при этом обработка является общим процессом как для L0, так и для L1. Соответственно, L0 и L1 будут обозначаться как LX как общая процедура. LX представляет режим межкадрового предсказания, используемый для межкадрового предсказания целевого блока кодирования. X равен 0 в процессе вычисления вектора движения L0 и X равен 1 в процессе вычисления вектора движения L1. Дополнительно, в случае, когда информация о другом справочном списке упоминается вместо того же справочного списка, что и LX, который должен быть вычислен в процессе вычисления вектора движения LX, другой справочный список будет представлен как LY.Similar to the encoding side, the decoding side performs motion vector calculation processing for each of L0 and L1, the processing being a common process for both L0 and L1. Accordingly, L0 and L1 will be referred to as LX as a general procedure. LX represents an inter prediction mode used for inter prediction of a target coding block. X is 0 in the process of calculating the motion vector L0 and X is 1 in the process of calculating the motion vector L1. Additionally, in the case where other lookup list information is mentioned instead of the same lookup list as LX to be calculated in the process of calculating the motion vector LX, the other lookup list will be represented as LY.
В случае, когда используется вектор mvLX движения для LX (ДА на этапе S202 на фиг. 25), вычисляются кандидаты предикторы вектора движения LX для составления списка mvpListLX кандидатов предикторов вектора движения для LX (этап S203 на фиг. 25). В блоке 401 получения режима предиктора нормального вектора движения, блоке 421 получения кандидата пространственного предиктора вектора движения, блоке 422 получения кандидата временного предиктора вектора движения, блоке 423 получения кандидата предиктора вектора движения на основании истории и пополнителе 425 кандидата предиктора вектора движения вычисляют множество кандидатов предикторов вектора движения и, тем самым, составляют список mvpListLX кандидатов предикторов вектора движения. Далее со ссылкой на фиг. 25 и с использованием блок-схемы алгоритма на фиг. 20 будет описана подробная процедура обработки этапа S203.In the case where the LX motion vector mvLX is used (YES in step S202 in FIG. 25), the LX motion vector predictor candidates are calculated to compile the LX motion vector predictor candidate list mvpListLX (step S203 in FIG. 25). In the normal motion vector predictor
Затем селектор 426 кандидатов предиктора вектора движения извлекает кандидата предиктора mvpListLX [mvpIdxLX] вектора движения, соответствующего индексу mvpIdxLX предиктора вектора движения, декодированному и поставленному блоком 201 декодирования битовой строки из списка mvpListLX кандидатов предиктора вектора движения, как выбранный предиктор mvpLX вектора движения (этап S204 на фиг. 25).Then, the motion vector
Затем сумматор 427 векторов движения суммирует разность mvdLX векторов движения LX и предиктора mvpLX вектора движения LX, которые декодируются и поставляются блоком 201 декодирования битовых строк, и вычисляет вектор mvLX движения LX как в: Then, the
mvLX = mvpLX + mvdLX (этап S205 на фиг. 25).mvLX = mvpLX + mvdLX (step S205 in FIG. 25).
Блок получения режима предиктора нормального вектора движения (нормальный AMVP): способ предсказания вектора движенияNormal Motion Vector Predictor Mode Obtainer (Normal AMVP): Motion Vector Prediction Method
На фиг. 20 показана блок-схема алгоритма, иллюстрирующая процедуру обработки процесса получения режима предиктора нормального вектора движения, имеющего функцию, общую для блока 301 получения режима предиктора нормального вектора движения устройства для кодирования изображения и блока 401 получения режима предиктора нормального вектора движения устройства для декодирования изображения согласно варианту осуществления настоящего изобретения.In FIG. 20 is a flowchart illustrating a processing procedure for obtaining the normal motion vector predictor mode having a function common to the normal motion vector predictor
Каждый из блока 301 получения режима предиктора нормального вектора движения и блока 401 получения режима предиктора нормального вектора движения включает в себя список mvpListLX кандидатов предиктора вектора движения. Список mvpListLX кандидатов предиктора вектора движения имеет структуру списка и включает в себя область хранения, которая хранит в качестве элементов индекс предиктора вектора движения, указывающий местоположение в списке кандидатов предиктора вектора движения, и кандидата предиктора вектора движения, соответствующего этому индексу. Номер индекса предиктора вектора движения начинается с 0, и кандидаты предиктора вектора движения должны храниться в области хранения списка mvpListLX кандидатов предиктора вектора движения. В настоящем варианте осуществления предполагается, что список mvpListLX кандидатов предиктора вектора движения может регистрировать, по меньшей мере, два кандидата предиктора вектора движения (в качестве информации межкадрового предсказания). Кроме того, переменная numCurrMvpCand, указывающая количество кандидатов предиктора вектора движения, зарегистрированных в списке mvpListLX кандидатов предиктора вектора движения, устанавливается на 0.Each of the normal motion vector predictor
Каждый из блоков 321 и 421 получения кандидата пространственного предиктора движения извлекает кандидат предиктора вектора движения из блоков в соседнем с левой стороны. Этот процесс выводит предиктор mvLXA вектора движения со ссылкой на информацию межкадрового предсказания блока в соседнем с левой стороны (A0 или A1 на фиг. 11), а именно флаг, указывающий, можно ли использовать кандидат предиктор вектора движения, вектор движения, опорный индекс или т.п., и добавляет полученный mvLXA к списку mvpListLX кандидатов предиктора вектора движения (этап S301 на фиг. 20). Обратите внимание, что X равен 0 в L0 предсказании и X равен 1 в L1 предсказании (аналогично применяется в дальнейшем). Затем блоки 321 и 421 получения кандидатов предиктора вектора движения извлекают кандидатов предиктора вектора движения из верхнего соседнего блока. Этот процесс выводит предиктор вектора mvLXB движения со ссылкой на информацию межкадрового предсказания верхнего соседнего блока (B0, B1 или B2 на фиг. 11), а именно, флаг, указывающий, можно ли использовать кандидат предиктора вектора движения, вектор движения, опорный индекс и т.п. Когда полученный mvLXA и полученный mvLXB не равны, mvLXB добавляется в список mvpListLX кандидатов предиктора вектора движения (этап S302 на фиг. 20). Процессы на этапах S301 и S302 на фиг. 20 представлены как общий процесс, за исключением того, что позиции и номера опорных соседних блоков различны, и флаг availableFlagLXN, указывающий, можно ли использовать кандидата предиктора вектора движения блока кодирования, и вектор mvLXN движения, опорный индекс refIdxN (N указывает A или B, аналогично применяется в дальнейшем) в этих процессах.Each of the spatial motion predictor candidate derivation blocks 321 and 421 extracts a motion vector predictor candidate from the blocks in the adjacent left side. This process outputs the motion vector predictor mvLXA with reference to the block inter-prediction information in the adjacent left side (A0 or A1 in FIG. 11), namely a flag indicating whether the motion vector predictor candidate, motion vector, reference index, or t can be used. .p., and adds the obtained mvLXA to the motion vector predictor candidate list mvpListLX (step S301 in FIG. 20). Note that X is 0 in L0 prediction and X is 1 in L1 prediction (similarly applies later). Next, motion vector predictor candidate derivation blocks 321 and 421 extract motion vector predictor candidates from the top neighbor block. This process outputs the mvLXB motion vector predictor with reference to the upper neighbor block inter prediction information (B0, B1, or B2 in FIG. 11), namely, a flag indicating whether the motion vector predictor candidate, the motion vector, the reference index, etc., can be used. .P. When the received mvLXA and the received mvLXB are not equal, the mvLXB is added to the motion vector predictor candidate list mvpListLX (step S302 in FIG. 20). The processes in steps S301 and S302 in FIG. 20 are presented as a general process, except that the positions and numbers of reference adjacent blocks are different, and the flag availableFlagLXN indicating whether a coding block motion vector predictor candidate can be used, and motion vector mvLXN, reference index refIdxN (N indicates A or B, similarly applied later) in these processes.
Затем каждый из блоков 322 и 422 получения кандидата временного предиктора вектора движения извлекает кандидата предиктора вектора движения из блока в изображении, имеющего временное отличие от целевого изображения. Этот процесс выводит флаг availableFlagLXCol, указывающий, можно ли использовать кандидат предиктора вектора движения блока кодирования изображения, имеющего временную разницу, и вектор mvLXCol движения, опорный индекс refIdxCol и справочный список listCol, и добавляет mvLXCol в список mvpListLX кандидатов предиктора вектора движения (этап S303 на фиг. 20).Then, each of the motion vector temporal predictor candidate derivation blocks 322 and 422 extracts a motion vector predictor candidate from a block in the picture having a temporal difference from the target picture. This process outputs an availableFlagLXCol flag indicating whether the motion vector predictor candidate of the image coding block having the time difference and the motion vector mvLXCol, the reference index refIdxCol and the lookup list listCol can be used, and adds mvLXCol to the motion vector predictor candidate list mvpListLX (step S303 in Fig. 20).
Следует отметить, что предполагается, что процессы блоков 322 и 422 получения кандидата временного предиктора вектора движения могут быть опущены в блоках последовательности (SPS), изображения (PPS) или сегмента.It should be noted that it is contemplated that the processes of temporal motion vector predictor candidate derivation blocks 322 and 422 may be omitted in Sequence (SPS), Picture (PPS), or Segment blocks.
Затем блоки 323 и 423 получения кандидатов предиктора вектора движения на основании истории добавляют кандидаты предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, в список mvpListLX кандидатов предиктора вектора движения. (Этап S304 на фиг. 20). Со ссылкой на блок-схему алгоритма на фиг. 29 далее будет приведено подробное описание процедуры обработки регистрации на этапе S304.Then, the history-based motion vector predictor candidate derivers 323 and 423 add the history-based motion vector predictor candidates registered in the history-based motion vector predictor candidate list HmvpCandList to the motion vector predictor candidate list mvpListLX. (Step S304 in FIG. 20). With reference to the flowchart in FIG. 29, next, a detailed description of the registration processing procedure in step S304 will be given.
Затем пополнители 325 и 425 кандидатов предиктора вектора движения добавляют кандидата предиктора движения, имеющего предварительно определенное значение, такое как (0, 0), до тех пор, пока не будет удовлетворен список mvpListLX кандидатов предиктора вектора движения (S305 на фиг. 20).Then, the motion vector
Блок получение режима нормального слияния (normal merge)Block receiving normal merge mode (normal merge)
Блок 302 получения режима нормального слияния на фиг. 18 включает в себя блок 341 получения кандидатов пространственного слияния, блок 342 получения кандидатов временного слияния, блок 344 получения кандидата усредненного слияния, блок 345 получения кандидатов слияния на основании истории, пополнитель 346 кандидатов слияния и селектор 347 кандидатов слияния.Normal merge
Блок 402 получения режима нормального слияния на фиг. 24 включает в себя блок 441 получения кандидатов пространственного слияния, блок 442 получения кандидатов временного слияния, блок 444 получения кандидата усредненного слияния, блок 445 получения кандидатов слияния на основании истории и пополнитель 446 кандидатов слияния и селектор 447 кандидатов слияния.Normal merge
На фиг. 21 показана блок-схема алгоритма, иллюстрирующая процедуру процесса получения режима нормального слияния, имеющего функцию, общую для блока 302 получения режима нормального слияния устройства для кодирования изображений и блока 402 получения режима нормального слияния устройства для декодирования изображений согласно к варианту осуществления настоящего изобретения.In FIG. 21 is a flowchart illustrating a procedure for obtaining a normal fusion mode having a function common to the normal fusion
В дальнейшем в этом документе будут поэтапно описаны различные процессы. Следующее описание представляет собой случай, когда тип slice_type сегмента является сегментом B, если не указано иное. Однако настоящее изобретение также может быть применено к случаю P-сегмента. Отметим, что существует только L0 предсказание (Pred_L0) в качестве режима межкадрового предсказания, L1 предсказания (Pred_L1) или двунаправленное предсказания (Pred_BI) в случае, когда тип slice_type сегмента представляет собой P-сегмент. Соответственно, в этом случае можно пропустить процесс, связанный с L1.Later in this document, the various processes will be described step by step. The following description is for the case where the slice_type of the segment is segment B, unless otherwise noted. However, the present invention can also be applied to the case of a P segment. Note that there is only L0 prediction (Pred_L0) as the inter prediction mode, L1 prediction (Pred_L1) or bidirectional prediction (Pred_BI) in the case where the slice_type of the segment is a P-segment. Accordingly, in this case, the process associated with L1 can be skipped.
Блок 302 получения режима нормального слияния и блок 402 получения режима нормального слияния включают в себя список mergeCandList кандидатов слияния. Список mergeCandList кандидатов слияния имеет структуру списка и включает в себя область хранения, которая хранит в качестве элементов индекс слияния, указывающий местоположение в списке кандидатов слияния, и кандидата слияния, соответствующего этому индексу. Номер индекса слияния начинается с 0, и кандидат слияния сохраняется в области хранения списка mergeCandList кандидатов слияния. В последующей обработке кандидат слияния индекса i слияния, зарегистрированный в списке mergeCandList кандидатов слияния, будет представлен mergeCandList [i]. В настоящем варианте осуществления предполагается, что список mergeCandList кандидатов слияния может зарегистрировать, по меньшей мере, шесть кандидатов слияния (в качестве информации межкадрового предсказания). Кроме того, переменная numCurrMergeCand, указывающая количество кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния, устанавливается на 0.The normal
Блок 341 получения кандидатов пространственного слияния и блок 441 получения кандидатов пространственного слияния выводят кандидата пространственного слияния каждого из блоков (B1, A1, B0, A0, B2 на фиг. 11) в соседнем блоке целевого блока в порядке B1, A1, B0, A0 и B2 из информации кодирования, хранящейся либо в памяти 111 хранения информации кодирования устройства для кодирования изображений, либо в памяти 205 хранения информации кодирования устройства для декодирования изображений, и затем регистрирует полученные кандидаты пространственного слияния в список mergeCandList кандидатов слияния (этап S401 на фиг. 21). Здесь будет определено N, обозначающее один из B1, A1, B0, A0, B2 или кандидата Col временного слияния. Элементы, которые должны быть выведены, включают в себя флаг availableFlagN, указывающий, может ли информация межкадрового предсказания блока N использоваться в качестве кандидата на пространственное слияние, опорный индекс refIdxL0N L0 и опорный индекс refIdxL1N L1 кандидата пространственного слияния N, флаг predFlagL0N L0 предсказания, указывающий, должно ли выполняться L0 предсказание, флаг predFlagL1N L1 предсказания, указывающий, должно ли выполняться L1 предсказание, вектор mvL0N движения L0 и вектор mvL1N движения L1. Однако так как кандидат слияния в настоящем варианте осуществления выводится без ссылки на информацию межкадрового предсказания блока, включенного в целевой блок кодирования, не может быть получен кандидат пространственного слияния, использующий информацию межкадрового предсказания блока, включенного в целевой блок кодирования.The spatial merge
Затем блок 342 получения кандидатов временного слияния и блок 442 получения кандидатов временного слияния выводят кандидатов временного слияния из изображений, имеющих временную разницу, и регистрируют полученные временные кандидаты слияния в списке mergeCandList кандидатов слияния (этап S402 на фиг. 21). Элементы, которые должны быть получены, включают в себя флаг availableFlagCol, указывающий, можно ли использовать кандидата временного слияния, флаг predFlagL0Col L0 предсказания, указывающий, должно ли выполняться L0 предсказание кандидата временного слияния, флаг predFlagL1Col L1-предсказания, указывающий, должно быть выполнено L1 предсказание, вектор mvL0Col движения L0 и вектор mvL1Col движения L1.Then, the temporary merge
Отметим, что предполагается, что процессы блоков 342 и 442 получения кандидатов временного слияния могут быть опущены в блоках последовательности (SPS), изображения (PPS) или сегмента.Note that it is contemplated that the processes of temporally merge candidate derivation blocks 342 and 442 may be omitted in Sequence (SPS), Picture (PPS), or Segment blocks.
Затем блок 345 получения кандидатов слияния на основании истории и блок 445 получения кандидатов слияния на основании истории регистрируют кандидатов предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предикторов вектора движения на основании истории, в списке list mergeCandList кандидатов слияния (этап S403 на фиг. 21).Next, the history-based merge
В случае, когда количество кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают кандидат слияния на основании истории с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, ограниченным максимальным количеством кандидатов MaxNumMergeCand слияния и затем регистрируется в списке mergeCandList кандидатов слияния.In the case where the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList is less than the maximum number of merge candidates MaxNumMergeCand, obtain a merge candidate based on history with the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList limited by the maximum number of merge candidates MaxNumMergeCand and then registered in the mergeCandList of merge candidates.
Затем блок 344 получения кандидата усредненного слияния и блок 444 получения кандидата усредненного слияния выводят кандидата усредненного слияния из списка mergeCandList кандидатов слияния и добавляют полученный кандидат усредненного слияния в список mergeCandList кандидатов слияния (этап S404 на фиг. 21).Then, the average merge
В случае, когда количество кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают кандидат усредненного слияния с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, которое ограничено до максимального числа кандидатов MaxNumMergeCand слияния и затем зарегистрируют в списке mergeCandList кандидатов слияния.In the case where the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList is less than the maximum number of merge candidates MaxNumMergeCand, an average merge candidate is obtained with the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList which is limited to the maximum number of merge candidates MaxNumMergeCand and then register in the list mergeCandList merge candidates.
Здесь кандидат усредненного слияния является новым кандидатом слияния, включающий в себя вектор движения, полученный посредством усреднения векторов движения первого кандидата слияния и второго кандидата слияния, зарегистрированных в списке mergeCandList кандидатов слияния для каждого из L0 предсказания и L1 предсказания.Here, the average merge candidate is a new merge candidate including a motion vector obtained by averaging the motion vectors of the first merge candidate and the second merge candidate registered in the merge candidate list mergeCandList for each of prediction L0 and prediction L1.
Затем в пополнителе 346 кандидатов слияния и пополнителе 446 кандидатов слияния, в случае, когда количество numCurrMergeCand кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают дополнительный кандидат слияния с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, ограниченным максимальным количеством кандидатов MaxNumMergeCand слияния и затем регистрируют в списке mergeCandList кандидатов слияния (этап S405 на фиг. 21). В P-сегменте кандидат слияния, имеющий вектор движения значения (0, 0) и режим предсказания L0 предсказания (Pred_L0), добавляется с максимальным количеством кандидатов MaxNumMergeCand слияния в качестве верхнего предела. В B-сегменте добавляется кандидат слияния, имеющий режим предсказания с двунаправленным предсказанием (Pred_BI) и вектор движения значения (0, 0). Опорный индекс на момент добавления кандидата слияния отличается от опорного индекса, который уже был добавлен.Then, in
Затем селектор 347 кандидатов слияния и селектор 447 кандидатов слияния выбирают кандидата слияния из числа кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния. Селектор 347 кандидатов слияния на стороне кодирования вычисляет величину кода и величину искажения и, таким образом, выбирает кандидата слияния, и затем поставляет индекс слияния, указывающий выбранного кандидата слияния, и информацию межкадрового предсказания кандидата слияния в блок 306 предсказания компенсации движения через определитель 305 режима межкадрового предсказания. В отличие от этого селектор 447 кандидатов слияния на стороне декодирования выбирает кандидата слияния на основании декодированного индекса слияния и поставляет выбранного кандидата слияния в блок 406 предсказания компенсации движения.Then, the
Обновление списка кандидатов предиктора вектора движения на основании историиUpdate Motion Vector Predictor Candidate List Based on History
Далее будет подробно описан способ инициализации и обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории, предоставленного в памяти 111 хранения информации кодирования на стороне кодирования и памяти 205 хранения информации кодирования на стороне декодирования. На фиг. 26 показана блок-схема алгоритма, иллюстрирующая процедуру инициализации/обновления списка кандидатов предиктора вектора движения на основании истории.Next, the method of initializing and updating the motion vector predictor candidate list HmvpCandList based on the history provided in the encoding
В настоящем варианте осуществления список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в памяти 111 хранения информации кодирования и памяти 205 хранения информации кодирования. В качестве альтернативы в блоке 102 межкадрового предсказания и блоке 203 межкадрового предсказания может быть предусмотрен блок обновления списка кандидатов предиктора вектора движения на основании истории для обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории.In the present embodiment, the motion vector predictor candidate list HmvpCandList based on the history is updated in the encoding
В заголовке сегмента выполняются начальные установки списка HmvpCandList кандидатов предиктора вектора движения на основании истории. На стороне кодирования список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в случае, когда определитель 105 способа предсказания выбирает режим предиктора нормального вектора движения или режим нормального слияния. На стороне декодирования список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в случае, когда информация предсказания, декодированная блоком 201 декодирования битовой строки, является режимом предиктора нормального вектора движения или режимом нормального слияния.In the segment header, the history-based motion vector predictor candidate list HmvpCandList is initialized. On the encoding side, the history-based motion vector predictor candidate list HmvpCandList is updated in the case that the
Информация межкадрового предсказания, используемая во время выполнения межкадрового предсказания в режиме предиктора нормального вектора движения или режиме нормального слияния, должна быть зарегистрирована в списке HmvpCandList кандидатов предиктора вектора движения на основании истории в качестве кандидата hMvpCand информации межкадрового предсказания. Кандидат hMvpCand информации межкадрового предсказания включает в себя опорный индекс refIdxL0 для L0 и опорный индекс refIdxL1 для L1, флаг predFlagL0 предсказания, указывающий, должно ли выполняться L0 предсказание, флаг predFlagL1 предсказания, указывающий, должно ли выполняться L1 предсказание, вектор mvL0 движения для L0 и вектор mvL1 движения для L1.The inter prediction information used at the time of performing inter prediction in the normal motion vector predictor mode or normal merge mode needs to be registered in the history-based motion vector predictor candidate list HmvpCandList as the inter prediction information candidate hMvpCand. The inter prediction information candidate hMvpCand includes a reference index refIdxL0 of L0 and a reference index refIdxL1 of L1, a prediction flag predFlagL0 indicating whether L0 prediction should be performed, a prediction flag predFlagL1 indicating whether L1 prediction should be performed, a motion vector mvL0 for L0, and motion vector mvL1 for L1.
В случае наличия информации межкадрового предсказания, имеющей то же значение, что и кандидат hMvpCand информации межкадрового предсказания среди элементов (то есть информация межкадрового предсказания), зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, предоставленном в памяти 111 хранения информации кодирования на стороне кодирования и памяти 205 хранения информации кодирования на стороне декодирования, элемент будет удален из списка HmvpCandList кандидатов предиктора вектора движения на основании истории. Напротив, в случае отсутствия информации межкадрового предсказания, имеющей то же значение, что и кандидат hMvpCand информации межкадрового предсказания, элемент заголовка списка HmvpCandList кандидатов предиктора вектора движения на основании истории будет удален и кандидат hMvpCand информации межкадрового предсказания будет добавлен в конец списка HmvpCandList кандидатов предиктора вектора движения на основании истории.In the case of having inter prediction information having the same value as an inter prediction information candidate hMvpCand among the elements (i.e., inter prediction information) registered in the history-based motion vector predictor candidate list HmvpCandList provided in the side encoding
Количество элементов списка HmvpCandList кандидатов предиктора вектора движения, предоставленных в памяти 111 хранения информации кодирования на стороне кодирования и в памяти 205 хранения информации кодирования на стороне декодирования настоящего изобретения, установлено равным шести.The number of elements of the motion vector predictor candidate list HmvpCandList provided in the
Во-первый, список HmvpCandList кандидатов предиктора вектора движения на основании истории инициализируется в блоках сегментов (этап S2101 на фиг. 26). Все элементы списка HmvpCandList кандидатов предиктора вектора движения на основании истории очищаются в начале сегмента и количество NumHmvpCand (текущее количество кандидатов) кандидатов предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения, установлено на 0.First, the history-based motion vector predictor candidate list HmvpCandList is initialized in segment blocks (step S2101 in FIG. 26). All elements of the history-based motion vector predictor candidate list HmvpCandList are cleared at the beginning of the segment, and the number NumHmvpCand (current number of candidates) of the history-based motion vector predictor candidates registered in the motion vector predictor candidate list HmvpCandList is set to 0.
Хотя инициализация списка HmvpCandList кандидатов предиктора вектора движения на основании истории должна выполняться в блоках сегментов (первый блок кодирования сегмента), инициализация может выполняться в блоках изображений, плиток или строк блока дерева.Although the initialization of the history-based motion vector predictor candidate list HmvpCandList must be performed in segment blocks (the first segment coding block), the initialization may be performed in image blocks, tiles, or rows of the tree block.
Затем для каждого из блоков кодирования в сегменте повторно выполняется следующий процесс обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории (этапы S2102-S2107 на фиг. 26).Then, for each of the coding blocks in the segment, the following process of updating the motion vector predictor candidate list HmvpCandList based on the history is repeated (steps S2102 to S2107 in FIG. 26).
Прежде всего, в блоках кодирования выполняются начальные установка. Флаг identityCandExist, указывающий наличие идентичного кандидата, устанавливается в значение FALSE (ложно), целевой индекс removeIdx удаления, указывающий удаление целевого кандидата, устанавливается на 0 (этап S2103 на фиг. 26).First of all, initial settings are made in the coding blocks. The identityCandExist flag indicating the presence of an identical candidate is set to FALSE, the removal target index removeIdx indicating removal of the target candidate is set to 0 (step S2103 in FIG. 26).
Определяется наличие кандидата hMvpCand информации межкадрового предсказания, который нужно зарегистрировать (этап S2104 на фиг. 26). В случае, когда определитель 105 способа предсказания на стороне кодирования определяет режим предиктора нормального вектора движения или режим нормального слияния или, когда блок 201 декодирования битовой строки на стороне декодирования выполняет декодирование как режим предиктора нормального вектора движения или режим нормального слияния, устанавливается соответствующая информация межкадрового предсказания как кандидат hMvpC информации межкадрового предсказания и подлежит регистрации. В случае, когда определитель 105 способа предсказания на стороне кодирования определяет режим внутрикадрового предсказания, режим предиктора вектора движения подблока или режим слияния подблоков или, в случае, когда блок 201 декодирования битовой строки на стороне декодирования выполняет декодирование как режиме внутрикадрового предсказания, в режиме предсказания вектора движения подблока или в режиме слияния подблоков не будет выполняться процесс обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории, и для регистрации не будет ни одного кандидата hMvpCand информации межкадрового предсказания. В случае отсутствия кандидата hMvpCand информации межкадрового предсказания, подлежащего регистрации, этапы S2105-S2106 будут пропущены (НЕТ на этапе S2104 на фиг. 26). В случае наличия кандидата hMvpCand информации межкадрового предсказания, который должен быть зарегистрирован, будет выполняться процесс этапа S2105 и более поздних (ДА на этапе S2104 на фиг. 26).The existence of an inter prediction information candidate hMvpCand to be registered is determined (step S2104 in FIG. 26). In the case where the encoding side
Затем определяется, включают ли в себя отдельные элементы списка HmvpCandList кандидатов предиктора вектора движения на основании истории элемент (информацию межкадрового предсказания), имеющий то же значение, что и кандидат hMvpCand информации межкадрового предсказания для регистрации, то есть существует ли идентичный элемент (этап S2105 на фиг. 26). На фиг. 27 показана блок-схема алгоритма процедуры обработки подтверждения идентичного элемента. В случае, когда значение количества кандидатов NumHmvpCand предиктора вектора движения на основании истории равно 0 (НЕТ на этапе этап S2121 на фиг. 27), список HmvpCandList кандидатов предиктора вектора движения на основании истории пуст, и идентичный кандидат отсутствует. Соответственно, этапы S2122-S2125 на фиг. 27 будут пропущены, что завершит процедуру обработки подтверждения идентичного элемента. В случае, когда значение числа NumHmvpCand кандидатов предиктора вектора движения на основании истории больше 0 (ДА на этапе S2121 на фиг. 27), процесс этапа S2123 будет повторяться с индекса hMvpIdx предиктора вектора движения на основании истории от 0 до NumHmvpCand-1 (этапы S2122-S2125 на фиг. 27). Сначала выполняется сравнение на предмет того, идентичен ли элемент hMvpIdx-th HmvpCandList [hMvpIdx], отсчитываемый от 0 в списке кандидатов предиктора вектора движения на основании истории, кандидату hMvpCand информации межкадрового предсказания (этап S2123 на фиг. 27). В случае, когда они идентичны (ДА на этапе S2123 на фиг. 27), флаг identityCandExist, указывающий наличие идентичного кандидата, устанавливается в значение TRUE, и целевой индекс removeIdx удаления, указывающий позицию удаляемого элемента, устанавливается в текущее значение индекса hMvpIdx предиктора вектора движения на основании истории, и обработка подтверждения идентичного элемента будет завершена. В случае, когда они не идентичны (НЕТ на этапе S2123 на фиг. 27), hMvpIdx увеличивается на единицу. В случае, когда индекс hMvpIdx предиктора вектора движения на основании истории меньше или равен NumHmvpCand-1, выполняется обработка на этапе S2123 и позже.It is then determined whether the individual elements of the history-based motion vector predictor candidate list HmvpCandList include an element (inter prediction information) having the same value as the inter prediction information candidate hMvpCand for registration, that is, whether an identical element exists (step S2105 in Fig. 26). In FIG. 27 is a flowchart of the same item confirmation processing procedure. In the case where the history-based motion vector predictor candidate number NumHmvpCand value is 0 (NO in step S2121 in FIG. 27), the history-based motion vector predictor candidate list HmvpCandList is empty and there is no identical candidate. Accordingly, steps S2122-S2125 in FIG. 27 will be skipped, which will complete the identical element confirmation processing procedure. In the case where the value of the history-based motion vector predictor candidate number NumHmvpCand is greater than 0 (YES in step S2121 in FIG. 27), the process of step S2123 will be repeated from the history-based motion vector predictor index hMvpIdx from 0 to NumHmvpCand-1 (steps S2122 -S2125 in Fig. 27). First, a comparison is made as to whether the 0-based element hMvpIdx-th HmvpCandList [hMvpIdx] in the history-based motion vector predictor candidate list is identical to the inter prediction information candidate hMvpCand (step S2123 in FIG. 27). In the case that they are identical (YES in step S2123 in FIG. 27), the identityCandExist flag indicating the existence of an identical candidate is set to TRUE, and the removal target index indicating the position of the element to be removed is set to the current value of the motion vector predictor index hMvpIdx based on history, and identical item confirmation processing will be completed. In the case where they are not identical (NO in step S2123 in FIG. 27), hMvpIdx is incremented by one. In a case where the motion vector predictor index based on history hMvpIdx is less than or equal to NumHmvpCand-1, processing is performed in step S2123 and later.
Возвращаясь к блок-схеме алгоритма на фиг. 26, выполняется процесс сдвига и добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории (этап S2106 на фиг. 26). Фиг. 28 является блок-схемой алгоритма процедуры обработки сдвига/добавления элементов в списке HmvpCandList кандидатов предиктора вектора движения на основании истории на этапе S2106 на фиг. 26. Сначала определяется, следует ли добавлять новый элемент после удаления элемента, хранящегося в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, или добавить новый элемент, не удаляя элемент. В частности, выполняется сравнение на предмет того, является ли флаг identityCandExist, указывающий наличие идентичного кандидата TRUE, или равен ли NumHmvpCand 6 (этап S2141 на фиг. 28). В случае, когда одно из условий, при которых флаг identityCandExist, указывающий наличие идентичного кандидата, имеет значение TRUE или то, что текущее количество кандидатов NumHmvpCand равно 6, выполняется (ДА на этапе S2141 на фиг. 28), элемент, сохраненный в списке HmvpCandList кандидатов предиктора вектора движения на основании истории удаляется, и после этого будет добавлен новый элемент. Начальное значение индекса i устанавливается на значение removeIdx + 1. Процесс сдвига элемента на этапе S2143 повторяется от этого начального значения до NumHmvpCand. (этапы S2142-S2144 на фиг. 28). Путем копирования элементов HmvpCandList [i] в HmvpCandList [i - 1] элементы сдвигаются вперед (этап S2143 на фиг. 28) и i увеличивается на единицу (этапы S2142-S2144 на фиг. 28). Затем кандидат hMvpCand информации межкадрового предсказания добавляется в (NumHmvpCand-1) HmvpCandList [NumHmvpCand-1], отсчитывая от 0, что соответствует концу списка кандидатов предиктора вектора движения на основании истории (этап S2145 на фиг. 28) и процесс сдвига/добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории будет завершен. Напротив, в случае, когда ни одно из условий, при которых флаг identityCandExist, указывающий наличие идентичного кандидата, имеет значение TRUE и что NumHmvpCand равно 6, не удовлетворяется (НЕТ на этапе S2141 на фиг. 28), кандидат hMvpCand информации межкадрового предсказания будет добавлен в конец списка кандидатов предиктора вектора движения на основании истории без удаления элемента, хранящегося в списке HmvpCandList кандидатов предиктора вектора движения на основании истории (этап S2146 на фиг. 28). Здесь концом списка кандидатов предиктора вектора движения на основании истории является NumHmvpCand-th HmvpCandList [NumHmvpCand], отсчитываемый от 0. Более того, NumHmvpCand увеличивается на единицу и процесс сдвига и добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории завершен.Returning to the flowchart of the algorithm in FIG. 26, a process of shifting and adding elements of the motion vector predictor candidate list HmvpCandList based on the history is performed (step S2106 in FIG. 26). Fig. 28 is a flowchart of the shift/add processing procedure of elements in the history-based motion vector predictor candidate list HmvpCandList in step S2106 in FIG. 26. First, it is determined whether to add a new element after deleting the element stored in the history-based motion vector predictor candidate list HmvpCandList, or to add a new element without deleting the element. Specifically, a comparison is made as to whether the identityCandExist flag indicating the existence of an identical candidate is TRUE or NumHmvpCand is equal to 6 (step S2141 in FIG. 28). In the case where one of the conditions under which the identityCandExist flag indicating the presence of an identical candidate is TRUE or that the current number of candidates NumHmvpCand is 6 is satisfied (YES in S2141 in FIG. 28), the item stored in the HmvpCandList history-based motion vector predictor candidates are removed and a new element is added afterwards. The initial value of index i is set to
На фиг. 31 показан вид, иллюстрирующий пример процесса обновления списка кандидатов предиктора вектора движения на основании истории. В случае, когда новый элемент должен быть добавлен в список HmvpCandList кандидатов предиктора вектора движения на основании истории, в котором уже зарегистрировано шесть элементов (информация межкадрового предсказания), список HmvpCandList кандидатов предиктора вектора движения на основании истории сравнивается с новой информацией межкадрового предсказания в порядке с начального элемента (фиг. 31A). Когда новый элемент имеет то же значение, что и третий элемент HMVP2 из заголовка списка HmvpCandList кандидатов предиктора вектора движения на основании истории, элемент HMVP2 удаляется из списка HmvpCandList кандидатов предиктора вектора движения на основании истории и элементы HMVP3-HMVP5 сдвигаются (копируются) один за другим вперед, и новый элемент добавляется в конец списка HmvpCandList кандидатов предиктора вектора движения на основании истории (фиг. 31B) для завершения обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории (фиг. 31C).In FIG. 31 is a view illustrating an example of a process for updating a motion vector predictor candidate list based on history. In the case where a new element is to be added to the history-based motion vector predictor candidate list HmvpCandList in which six elements (inter prediction information) are already registered, the history-based motion vector predictor candidate list HmvpCandList is compared with the new inter prediction information in order of initial element (Fig. 31A). When the new element has the same value as the third element HMVP2 from the header of the history-based motion vector predictor candidate list HmvpCandList, the HMVP2 element is removed from the history-based motion vector predictor candidate list HmvpCandList, and the elements HMVP3-HMVP5 are shifted (copied) one by one. forward, and a new element is added to the end of the history-based motion vector predictor candidate list HmvpCandList (FIG. 31B) to complete updating the history-based motion vector predictor candidate list HmvpCandList (FIG. 31C).
Процесс получения кандидатов предиктора вектора движения на основании историиThe Process of Deriving Motion Vector Predictor Candidates Based on History
Далее будет подробно описан способ получения кандидата предиктора вектора движения на основании истории из списка HmvpCandList кандидатов предиктора вектора движения на основании истории. Это соответствует процедуре обработки этапа S304 на фиг. 20, касающейся общей обработки, выполняемой блоком 323 получения кандидата предиктора вектора движения на основании истории блока 301 получения режима предиктора нормального вектора движения на стороне кодирования и блоком 423 получения кандидата предиктора вектора движения на основании истории из блока 401 получения режима предиктора нормального вектора движения на стороне декодирования. Фиг. 29 является блок-схемой последовательности операций, иллюстрирующей процедуру обработки получения кандидата предиктора вектора движения на основании истории.Next, a method for obtaining a history-based motion vector predictor candidate from the history-based motion vector predictor candidate list HmvpCandList will be described in detail. This corresponds to the processing procedure of step S304 in FIG. 20 regarding the general processing performed by the motion vector predictor
В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно максимальному количеству элементов списка mvpListLX кандидатов предиктора вектора движения (здесь 2) или количество кандидатов NumHmvpCand предиктора вектора движения на основании истории равно 0 (НЕТ на этапе S2201 на фиг. 29), процесс этапов S2202-S2209 на фиг. 29 будет опущен, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда число numCurrMvpCand текущих кандидатов предиктора вектора движения меньше 2, что является максимальным числом элементов списка mvpListLX кандидатов предиктора вектора движения, и, в случае, когда значение числа NumHmvpCand кандидатов предиктора вектора движения на основании истории больше 0 (ДА на этапе S2201 на фиг. 29), будет выполняться процесс этапов S2202-S2209 на фиг. 29.In the case where the current number of motion vector predictor candidates numCurrMvpCand is greater than or equal to the maximum number of elements of the motion vector predictor candidate list mvpListLX (here 2) or the number of motion vector predictor candidates NumHmvpCand based on history is 0 (NO in step S2201 in FIG. 29), the process of steps S2202-S2209 in FIG. 29 will be omitted, and the history-based motion vector predictor candidate acquisition process will be completed. In the case where the number numCurrMvpCand of the current motion vector predictor candidates is less than 2, which is the maximum number of elements of the motion vector predictor candidate list mvpListLX, and, in the case where the value of the number NumHmvpCand of the history-based motion vector predictor candidates is greater than 0 (YES in step S2201 in 29), the process of steps S2202-S2209 in FIG. 29.
Затем процесс этапов S2203-S2208 на фиг. 29 повторяется до тех пор, пока индекс i не станет равным от 1 до меньшего значения из 4, или до числа кандидатов numCheckedHMVPCand предиктора вектора движения на основании истории (этапы S2202-S2209 на фиг. 29). В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно 2, что является максимальным количеством элементов списка mvpListLX кандидатов предиктора вектора движения (НЕТ на этапе S2203 на фиг. 29), этапы процесса S2204-S2209 на фиг. 29 будут опущены, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения меньше 2, что является максимальным количеством элементов в списке mvpListLX кандидатов предиктора вектора движения (ДА на этапе S2203 на фиг. 29), будет выполняться процесс на этапе S2204 и позже на фиг. 29.Then, the process of steps S2203-S2208 in FIG. 29 is repeated until index i is 1 to the lower of 4, or up to the number of history-based motion vector predictor candidates numCheckedHMVPCand (steps S2202-S2209 in FIG. 29). In the case where the current number of motion vector predictor candidates numCurrMvpCand is greater than or equal to 2, which is the maximum number of elements of the motion vector predictor candidate list mvpListLX (NO in step S2203 in FIG. 29), process steps S2204 to S2209 in FIG. 29 will be omitted, and the history-based motion vector predictor candidate acquisition process will be completed. In the case where the current number of motion vector predictor candidates numCurrMvpCand is less than 2, which is the maximum number of elements in the motion vector predictor candidate list mvpListLX (YES in S2203 in FIG. 29), the process in S2204 and later in FIG. 29.
Затем процесс на этапах S2205-S2207 выполняется для случаев, когда Y равно 0, и Y равно 1 (L0 и L1) (этапы S2204-S2208 на фиг. 29). В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно 2, что является максимальным количеством элементов списка mvpListLX кандидатов предиктора вектора движения (НЕТ на этапе S2205 на фиг. 29), процесс этапов S2206-S2209 на фиг. 29 будут опущены, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения меньше 2, что является максимальным количеством элементов в списке mvpListLX кандидатов предиктора вектора движения (ДА на этапе S2205 на фиг. 29), будет выполняться процесс на этапе S2206 и позже на фиг. 29.Then, the process in steps S2205 to S2207 is performed for the cases where Y is 0 and Y is 1 (L0 and L1) (steps S2204 to S2208 in FIG. 29). In the case where the current number of motion vector predictor candidates numCurrMvpCand is greater than or equal to 2, which is the maximum number of elements of the motion vector predictor candidate list mvpListLX (NO in step S2205 in FIG. 29), the process of steps S2206 to S2209 in FIG. 29 will be omitted, and the history-based motion vector predictor candidate acquisition process will be completed. In the case where the current number of motion vector predictor candidates numCurrMvpCand is less than 2, which is the maximum number of elements in the motion vector predictor candidate list mvpListLX (YES in S2205 in FIG. 29), the process in S2206 and later in FIG. 29.
Затем, в случае, когда список HmvpCandList кандидатов предиктора вектора движения на основании истории включает в себя элемент, имеющий тот же опорный индекс, что и опорный индекс refIdxLX целевого вектора движения кодирования/декодирования и который отличается от любого элемента списка mvpListLX предикторов вектора движения (ДА на этапе S2206 на фиг. 29), вектор движения LY кандидата HmvpCandList [NumHmvpCand-i] предиктора вектора движения на основании истории добавляется к numCurrMvpCand-ому элементу mvpListLX [numCurr] посчитывается от 0 в списке кандидатов предиктора вектора движения (этап S2207 на фиг. 29), и число numCurrMvpCand текущих кандидатов предиктора вектора движения увеличивается на единицу. В случае, когда в списке HmvpCandList кандидатов предиктора вектора движения на основании истории отсутствует элемент, который имеет тот же опорный индекс, что и опорный индекс refIdxLX целевого вектора движения кодирования/декодирования, и отличается от любого элемента списка mvpListLX предикторов вектора движения (НЕТ на этапе S2206 на фиг. 29), дополнительный процесс на этапе S2207 будет пропущен.Then, in the case that the history-based motion vector predictor candidate list HmvpCandList includes an element having the same reference index as the encoding/decoding target motion vector reference index refIdxLX and which is different from any element of the motion vector predictor list mvpListLX (YES in step S2206 in FIG. 29) and the number numCurrMvpCand of current motion vector predictor candidates is incremented by one. In the case where there is no element in the history-based motion vector predictor candidate list HmvpCandList that has the same reference index as the reference index refIdxLX of the encode/decode target motion vector and is different from any element of the motion vector predictor list mvpListLX (NO in step S2206 in Fig. 29), the additional process in step S2207 will be skipped.
Процесс этапов S2205-S2207 на фиг. 29 выполняется как для L0, так и для L1 (этапы S2204-S2208 на фиг. 29). Индекс i увеличивается на единицу, и когда индекс i меньше или равен любому из меньшего значения 4 или количества кандидатов NumHmvpCand предиктора вектора движения на основании истории, процесс этапа S2203 и более поздних будет повторяться (этапы S2202-S2209 на фиг. 29).The process of steps S2205-S2207 in FIG. 29 is performed for both L0 and L1 (steps S2204-S2208 in FIG. 29). Index i is incremented by one, and when index i is less than or equal to any of the
Процесс получения кандидатов слияния на основании историиThe process of obtaining merger candidates based on history
Ниже приводится подробное описание способа получения кандидата слияния на основании истории из списка HmvpCandList кандидатов слияния на основании истории, процедуры процесса этапа S404 на фиг. 21, который является общим процессом блока 345 получения кандидатов слияния на основании истории из блока 302 получения режима нормального слияния на стороне кодирования, и блока 445 получения кандидатов слияния на основании истории блока 402 получения режима нормального слияния на стороне декодирования. На фиг. 30 показана блок-схема последовательности операций, иллюстрирующая процедуру обработки получения кандидатов слияния на основании истории.The following is a detailed description of the method for obtaining a history-based merge candidate from the history-based merge candidate list HmvpCandList, the process procedure of step S404 in FIG. 21, which is the general process of
Во-первых, выполняется процесс инициализации (этап S2301 на фиг. 30). Каждому из элементов от 0 до (numCurrMergeCand -1) isPruned [i] устанавливается значение FALSE, и переменная numOrigMergeCand устанавливается на значение numCurrMergeCand числа элементов, зарегистрированных в текущем списке кандидатов слияния.First, an initialization process is performed (step S2301 in FIG. 30). The elements from 0 to (numCurrMergeCand -1) of isPruned[i] are each set to FALSE and numOrigMergeCand is set to numCurrMergeCand of the number of elements registered in the current merge candidate list.
Затем начальное значение индекса hMvpIdx устанавливается равным 1, и дополнительный процесс с этапа S2303 по этап S2310 на фиг. 30 повторяется от этого начального значения до NumHmvpCand (этапы S2302-S2311 на фиг. 30). Когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, не меньше или равно (максимальное количество кандидатов слияния MaxNumMergeCand-1), кандидаты слияния были добавлены ко всем элементам в списке кандидатов слияния. Соответственно, процесс получения кандидатов слияния на основании истории будет завершен (НЕТ на этапе S2303 на фиг. 30). В случае, когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, меньше или равно (максимальное количество кандидатов слияния MaxNumMergeCand-1), будет выполняться процесс этапа S2304 и позже. sameMotion устанавливается в значение FALSE (этап S2304 на фиг. 30). Затем начальное значение индекса i устанавливается на 0, и процесс этапов S2306 и S2307 на фиг. 30 выполняется от этого начального значения до numOrigMergeCand-1 (этапы S2305-S2308 на фиг. 30). Сравнение выполняется на предмет того, является ли (NumHmvpCand-hMvpIdx) элемент HmvpCandList [NumHmvpCand-hMvpIdx], отсчитываемый от 0 в списке кандидатов предиктора вектора движения на основании истории, тем же значением, что и i-ый элемент mergeCandList [i], отсчитываемый от 0 в списке кандидатов слияния (этап S2306 на фиг. 30).Then, the hMvpIdx index initial value is set to 1, and the sub-process from step S2303 to step S2310 in FIG. 30 is repeated from this initial value to NumHmvpCand (steps S2302-S2311 in FIG. 30). When the number numCurrMergeCand of elements registered in the current merge candidate list is not less than or equal to (MaxNumMergeCand-1 maximum merge candidates), merge candidates have been added to all elements in the merge candidate list. Accordingly, the history-based merge candidate acquisition process will be completed (NO at S2303 in FIG. 30). In the case where the number numCurrMergeCand of items registered in the current merge candidate list is less than or equal to (the maximum number of merge candidates MaxNumMergeCand-1), the process of step S2304 and later will be executed. sameMotion is set to FALSE (step S2304 in FIG. 30). Then, the initial value of index i is set to 0, and the process of steps S2306 and S2307 in FIG. 30 is executed from this initial value to numOrigMergeCand-1 (steps S2305-S2308 in FIG. 30). A comparison is made to see if the (NumHmvpCand-hMvpIdx) element of HmvpCandList [NumHmvpCand-hMvpIdx] counted from 0 in the history-based motion vector predictor candidate list is the same value as the ith element of mergeCandList [i] counted from from 0 in the merge candidate list (step S2306 in FIG. 30).
Определяется, что кандидаты слияния имеют одинаковое значение в случае, когда все составляющие элементы (режим межкадрового предсказания, опорный индекс, вектор движения) кандидата слияния имеют одинаковое значение. В случае, когда кандидаты слияния имеют одинаковое значение и isPruned [i] установлен на FALSE (ДА на этапе S2306 на фиг. 30), для sameMotion и isPruned [i] будет установлено значение TRUE (этап S2307 на фиг. 30). В случае, если значения не совпадают (НЕТ на этапе S2306 на фиг. 30), процесс на этапе S2307 будет пропущен. После завершения обработки повторения с этапа S2305 по этап S2308 на фиг. 30 выполняется сравнение на предмет того, является ли sameMotion FALSE (этап S2309 на фиг. 30). В случае, когда sameMotion имеет значение FALSE (ДА на этап S2309 на фиг. 30), то есть (NumHmvpCand-hMvpIdx) элемент HmvpCandList [NumHmvpCand - hMvpIdx], который отсчитывается от 0 в списке кандидатов предиктора вектора движения на основании истории, отсутствует в mergeCandList и, следовательно, элемент HmvpCandList [NumHmvpCand - hMvpIdx], который является (NumHmvpCand - hMvpIdx) элементом, отсчитываемым от 0 в списке кандидатов предиктора вектора движения на основании истории, добавляется в mergeCandList [ngeumCurr], который является numCurrMergeCand в списке кандидатов слияния, и numCurrMergeCand увеличивается на единицу (этап S2310 на фиг. 30). Индекс hMvpIdx увеличивается на единицу (этап S2302 на фиг. 30), и процесс этапов S2302-S2311 на фиг. 30 повторяется.The merge candidates are determined to have the same value in the case where all constituent elements (inter prediction mode, reference index, motion vector) of the merge candidate have the same value. In the case where the merge candidates have the same value and isPruned[i] is set to FALSE (YES in step S2306 in FIG. 30), sameMotion and isPruned[i] will be set to TRUE (step S2307 in FIG. 30). In case the values do not match (NO in step S2306 in FIG. 30), the process in step S2307 will be skipped. After completion of repetition processing from step S2305 to step S2308 in FIG. 30, a comparison is made as to whether the sameMotion is FALSE (step S2309 in FIG. 30). In the case where sameMotion is FALSE (YES at step S2309 in FIG. 30), that is, (NumHmvpCand-hMvpIdx), the HmvpCandList [NumHmvpCand-hMvpIdx] item, which is 0-based in the history-based motion vector predictor candidate list, is not present in mergeCandList and hence the element HmvpCandList [NumHmvpCand - hMvpIdx], which is the (NumHmvpCand - hMvpIdx) element 0-based in the history-based motion vector predictor candidate list, is added to mergeCandList [ngeumCurr], which is numCurrMergeCand in the merge candidate list, and numCurrMergeCand is incremented (step S2310 in FIG. 30). The hMvpIdx index is incremented by one (step S2302 in FIG. 30), and the process of steps S2302-S2311 in FIG. 30 is repeated.
После завершения подтверждения всех элементов в списке кандидатов предиктора вектора движения на основании истории или завершения добавления кандидатов слияния ко всем элементам в списке кандидатов слияния процесс получения кандидатов слияния на основании истории завершается.When all elements in the history-based motion vector predictor candidate list are confirmed or adding merge candidates to all elements in the merge candidate list is completed, the history-based merge candidate derivation process ends.
Процесс получения кандидатов усредненного слиянияThe Process of Obtaining Average Merge Candidates
Ниже приводится подробное описание способа получения кандидата усредненного слияния, процедуры обработки этапа S403 на фиг. 21, который является общим процессом блока 344 получения кандидата усредненного слияния блока 302 получения режима нормального слияния на стороне кодирования, и блока 444 получения кандидата усредненного слияния блока 402 получения режима нормального слияния на стороне декодирования. На фиг. 38 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидата усредненного слияния.The following is a detailed description of the average merge candidate acquisition method, the processing procedure of step S403 in FIG. 21, which is the common process of the average merge
Сначала выполняется процесс инициализации (этап S1301 на фиг. 38). Переменная numOrigMergeCand устанавливается равной количеству элементов numCurrMergeCand, зарегистрированных в текущем списке кандидатов слияния.First, an initialization process is performed (step S1301 in FIG. 38). The variable numOrigMergeCand is set to the number of numCurrMergeCand elements registered in the current list of merge candidates.
Затем выполняется последовательное сканирование, начиная с начала списка кандидатов слияния для определения двух фрагментов информации движения. Индекс i, указывающий первую информацию движения, устанавливается таким образом, что индекс i = 0, и индекс j, указывающий вторую информацию движения, устанавливается таким образом, что индекс j=1. (Этапы S1302-S1303 на фиг. 38). Когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, не меньше или равно (максимальное количество кандидатов MaxNumMergeCand-1 слияния), ко всем элементам в списке кандидатов слияния были добавлены кандидаты слияния. Соответственно, процесс получения кандидатов слияния на основании истории будет завершен (этап S1304 на фиг. 38). В случае, когда количество numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, меньше или равно (максимальное количество кандидатов MaxNumMergeCand-1 слияния), будет выполняться процесс этапа S1305 и более поздних.A sequential scan is then performed, starting at the beginning of the merge candidate list, to determine two pieces of motion information. An index i indicating the first motion information is set such that the index i = 0, and an index j indicating the second motion information is set such that the index j=1. (Steps S1302-S1303 in FIG. 38). When the number numCurrMergeCand of elements registered in the current merge candidate list is not less than or equal to (the maximum number of merge candidates MaxNumMergeCand-1), merge candidates have been added to all elements in the merge candidate list. Accordingly, the process of obtaining merge candidates based on the history will be completed (step S1304 in FIG. 38). In the case where the number numCurrMergeCand of elements registered in the current merge candidate list is less than or equal to (the maximum number of merge candidates MaxNumMergeCand-1), the process of step S1305 and later will be executed.
Определяется, являются ли действительной как i-ая информация mergeCandList [i] движения из списка кандидатов слияния, так и j-ая информация mergeCandList [j] движения из списка кандидатов слияния (этап S1305 на фиг. 38). В случае, когда обе являются недействительными, процесс переходит к следующему элементу без получения кандидата усредненного слияния mergeCandList [i] и mergeCandList [j]. В случае, когда условие, что оба mergeCandList [i] и mergeCandList [j] являются недействительными, не удовлетворяется, следующий процесс повторяется с X, установленным на 0 и 1 (этапы S1306-S1314 на фиг. 38).It is determined whether both the i-th mergeCandList [i] motion information of the merge candidate list and the j-th mergeCandList [j] motion information of the merge candidate list are valid (step S1305 in FIG. 38). In the case where both are invalid, the process proceeds to the next element without obtaining an average merge candidate mergeCandList[i] and mergeCandList[j]. In the case where the condition that both mergeCandList[i] and mergeCandList[j] are invalid is not satisfied, the following process is repeated with X set to 0 and 1 (steps S1306 to S1314 in FIG. 38).
Определение, действительно ли LX предсказание mergeCandList [i] (этап S1307 на фиг. 38). В случае, когда LX предсказание mergeCandList [i] является действительным, выполняется определение, действительно ли LX предсказание mergeCandList [j] (этап S1308 на фиг. 38). В случае, когда LX предсказание mergeCandList [j] действительно, то есть в случае, когда действительны как LX предсказание mergeCandList [i], так и LX предсказание mergeCandList [j], получают вектор движения LX предсказания путем усреднения вектора движения предсказания LX для mergeCandList [i] и вектора движения предсказания LX для mergeCandList [j] и будет получен кандидат усредненного слияния предсказания LX, имеющий опорный индекс предсказания LX для mergeCandList [i], для установления LX предсказание как averageCand, и LX предсказание averageCand будет являться действительным (этап S1309 на фиг. 38). На этапе S1308 на фиг. 38, в случае, когда LX предсказание mergeCandList [j] недействительно, то есть в случае, когда LX предсказание mergeCandList [i] действительно и LX предсказание mergeCandList [j] недействительно, будут получены вектор движения LX предсказания mergeCandList [i] и кандидат усредненного слияния LX предсказания, имеющий опорный индекс, чтобы быть установленным как LX предсказание averageCand и LX предсказание meanCand будет действительным (этап S1310 на фиг. 38). В случае, когда LX предсказание mergeCandList [i] недействительно на этапе S1307 на фиг. 38, то выполняется определение относительно того, действительно ли LX предсказание mergeCandList [j] (этап S1311 на фиг. 38). В случае, когда LX предсказание mergeCandList [j] действительно, то есть в случае, когда LX предсказание mergeCandList [i] недействительно и LX предсказание mergeCandList [j] действительно, будут получены вектор движения LX предсказания mergeCandList [j], и кандидат усредненного слияния LX предсказания, имеющий опорный индекс, чтобы быть установленным как LX предсказание averageCand, и LX предсказание averageCand будет являться действительным (этап S1312 на фиг. 38). На этапе S1311 на фиг. 38, в случае, когда LX предсказание mergeCandList [j] недействительно, то есть в случае, когда LX предсказание mergeCandList [i] и LX предсказание mergeCandList [j] оба недействительны, LX предсказание averageCand будет недействительным (этап S1312 на фиг. 38).Determining whether the LX prediction mergeCandList [i] is valid (step S1307 in FIG. 38). In the case where the LX prediction mergeCandList[i] is valid, a determination is made whether the LX prediction mergeCandList[j] is valid (step S1308 in FIG. 38). In the case where the LX prediction of mergeCandList[j] is valid, that is, in the case where both the LX prediction of mergeCandList[i] and the LX prediction of mergeCandList[j] are valid, obtain an LX prediction motion vector by averaging the LX prediction motion vector of mergeCandList[ i] and the LX prediction motion vector of mergeCandList[j], and an LX prediction average merge candidate having a LX prediction reference index of mergeCandList[i] will be obtained to set the LX prediction to averageCand, and the LX prediction averageCand will be valid (step S1309 on Fig. 38). At step S1308 in FIG. 38, in the case where the LX prediction mergeCandList[j] is invalid, that is, in the case where the LX prediction mergeCandList[i] is valid and the LX prediction mergeCandList[j] is invalid, the LX prediction motion vector mergeCandList[i] and the average merge candidate will be obtained. LX prediction having a reference index to be set as LX prediction averageCand and LX prediction meanCand will be valid (step S1310 in FIG. 38). In the case where the LX mergeCandList [i] prediction is invalid in step S1307 in FIG. 38, a determination is made as to whether or not the LX mergeCandList [j] prediction is valid (step S1311 in FIG. 38). In the case where the LX prediction of mergeCandList[j] is valid, i.e., in the case where the LX prediction of mergeCandList[i] is invalid and the LX prediction of mergeCandList[j] is valid, the LX prediction motion vector mergeCandList[j] and the LX average merge candidate will be obtained prediction having a reference index to be set as LX prediction averageCand, and LX prediction averageCand will be valid (step S1312 in FIG. 38). At step S1311 in FIG. 38, in the case where LX prediction mergeCandList[j] is invalid, that is, in the case where LX prediction mergeCandList[i] and LX prediction mergeCandList[j] are both invalid, LX prediction averageCand will be invalid (step S1312 in FIG. 38).
Полученный таким образом кандидат averageCand усредненного слияния L0 предсказания, L1 предсказания или предсказания BI, добавляется к numCurrMergeCand-th mergeCandList [numCurrMergeCand] списка кандидатов слияния, и numCurrMergeCand увеличивается на единицу (этап S1315 на фиг. 38). На этом процесс получения кандидата усредненного слияния завершается.Thus obtained average merge candidate L0 prediction, L1 prediction or BI prediction is added to numCurrMergeCand-th mergeCandList [numCurrMergeCand] of the merge candidate list, and numCurrMergeCand is incremented by one (step S1315 in FIG. 38). This completes the process of obtaining an average merge candidate.
Кандидат усреднённого слияния получается посредством усреднения по каждой из горизонтальной составляющей вектора движения и вертикальной составляющей вектора движения.An average fusion candidate is obtained by averaging over each of the horizontal motion vector component and the vertical motion vector component.
Процесс предсказания компенсации движенияMotion Compensation Prediction Process
Блок 306 предсказания компенсации движения получает позицию и размер блока, который в настоящее время подвергается обработке предсказания при кодировании. Дополнительно, блок 306 предсказания компенсации движения получает информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания. Опорный индекс и вектор движения выводятся из полученной информации межкадрового предсказания и опорное изображение, указанное опорным индексом в памяти 104 декодированного изображения сдвигается из той же позиции, что и сигнал изображения целевого блока предсказания, который подвергается обработке с предсказанием, на величину вектора движения. После сдвига получают сигнал изображения этой позиции и после этого генерируется сигнал предсказания.The motion
В случае, когда предсказание выполнено из сигнального опорного изображения, например, когда режим межкадрового предсказания в межкадровом предсказании является L0 предсказанием или L1 предсказанием, в качестве сигнала предсказания компенсации движения сигнал предсказания устанавливается сигнал предсказания, полученный из одного опорного изображения. В случае, когда предсказание выполняется из двух опорных изображений, например, когда режимом межкадрового предсказания является предсказание BI, в качестве сигнала предсказания компенсации движения устанавливается средневзвешенное значение сигналов предсказания, полученных из двух опорных изображений. Полученный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания. Здесь отношение средневзвешенных значений при двунаправленном предсказании устанавливается равным 1:1. В качестве альтернативы, можно использовать другое отношение средневзвешенных значений. Например, коэффициент взвешенного усреднения может быть установлен таким образом, что чем короче интервал изображения между целевым изображением предсказания и опорным изображением, тем выше коэффициент взвешенного усреднения. Вычисление коэффициента взвешенного усреднения также может выполняться с использованием таблицы соответствия между комбинацией интервалов изображения и коэффициентов взвешенного усреднения.In the case where the prediction is made from the signal reference picture, for example, when the inter prediction mode in the inter prediction is L0 prediction or L1 prediction, the prediction signal obtained from one reference picture is set as the motion compensation prediction signal. In the case where prediction is performed from two reference pictures, for example, when the inter prediction mode is BI prediction, a weighted average of the prediction signals obtained from the two reference pictures is set as the motion compensation prediction signal. The received motion compensation prediction signal is supplied to the
Блок 406 предсказания компенсации движения имеет функцию, аналогичную блоку 306 предсказания компенсации движения на стороне кодирования. Блок 406 предсказания компенсации движения получает информацию межкадрового предсказания от блока 401 получения режима предиктора нормального вектора движения, блока 402 получения режима нормального слияния, блока 403 получения режима предиктора вектора движения подблока и блока 404 получения режима слияния подблока через переключатель 408. Блок 406 предсказания компенсации движения подает полученный сигнал предсказания компенсации движения в блок 207 наложения сигнала декодированного изображения.The
Режим межкадрового предсказанияInterframe prediction mode
Процесс выполнения предсказания из одного опорного изображения определяется как однонаправленное предсказание. Однонаправленное предсказание выполняет предсказание L0 предсказания или L1 предсказания с использованием одного из двух опорных изображений, зарегистрированных в справочных списках L0 или L1.The process of performing prediction from one reference picture is defined as unidirectional prediction. Unidirectional prediction performs L0 prediction or L1 prediction using one of two reference pictures registered in the L0 or L1 directory lists.
На фиг. 32 показан случай однонаправленного предсказания, в котором опорное изображение (RefL0Pic) L0 происходит в тот момент до целевого изображения (CurPic). Фиг. 33 иллюстрирует случай однонаправленного предсказания, в котором опорное изображение L0 предсказания происходит в тот момент после целевого изображения. Точно так же, однонаправленное предсказание может быть выполнено путем замены L0 предсказания опорного изображения на фиг. 32 и фиг. 33 на опорное изображение (RefL1Pic) L1 предсказания.In FIG. 32 shows a case of unidirectional prediction in which the reference picture (RefL0Pic) L0 occurs at the time before the target picture (CurPic). Fig. 33 illustrates a case of unidirectional prediction in which the prediction reference picture L0 occurs at a time after the target picture. Similarly, unidirectional prediction can be performed by replacing the reference picture prediction L0 in FIG. 32 and FIG. 33 per prediction reference picture (RefL1Pic) L1.
Процесс выполнения предсказания из двух опорных изображений определяется как двунаправленное предсказание. Двунаправленное предсказание выполняет предсказание, выраженное как предсказание BI, с использованием как L0 предсказания, так и L1 предсказания. Фиг. 34 иллюстрирует случай двунаправленного предсказания, в котором L0 предсказание опорного изображения происходит в тот момент до целевого изображения и L1 предсказание опорного изображения происходит в тот момент после целевого изображения. Фиг. 35 иллюстрирует случай двунаправленного предсказания, в котором опорное изображение L0 предсказания и опорное изображение L1 предсказания происходит в тот момент до целевого изображения. Фиг. 36 иллюстрирует случай двунаправленного предсказания, в котором опорный кадр для L0 предсказания и опорное изображение L1 предсказания происходит в тот момент после целевого изображения.The process of performing prediction from two reference pictures is defined as bidirectional prediction. Bidirectional prediction performs prediction expressed as BI prediction using both L0 prediction and L1 prediction. Fig. 34 illustrates a case of bidirectional prediction in which L0 reference picture prediction occurs at that point before the target picture and L1 reference picture prediction occurs at that point after the target picture. Fig. 35 illustrates a case of bidirectional prediction in which the prediction reference picture L0 and the prediction reference picture L1 occur at the same time as the target picture. Fig. 36 illustrates a case of bidirectional prediction in which a reference frame for prediction L0 and a reference picture L1 prediction occur at a time after the target picture.
Таким образом, можно использовать предсказание без ограничения взаимосвязи между типом предсказания L0/L1 и временем, так что L0 для прошлого направления и L1 для будущего направления. Более того, двунаправленное предсказание может выполнить каждое из L0 предсказание L1 предсказание, используя то же опорное изображение. Определение, следует ли выполнять предсказание компенсации движения при однонаправленном предсказании или двунаправленном предсказании, выполняется на основании информации (например, флага), указывающей, следует ли использовать L0 предсказание и следует ли использовать L1 предсказание.Thus, it is possible to use prediction without limiting the relationship between L0/L1 prediction type and time, such that L0 for the past direction and L1 for the future direction. Moreover, bidirectional prediction can perform each of the L0 predictions and L1 predictions using the same reference picture. Determining whether to perform motion compensation prediction in unidirectional prediction or bidirectional prediction is performed based on information (eg, a flag) indicating whether to use L0 prediction and whether to use L1 prediction.
Опорный индексReference index
В варианте осуществления настоящего изобретения, можно выбрать оптимальные опорное изображение из множества опорных изображений в предсказании компенсации движения для повышения точности предсказания компенсации движения. Таким образом, опорное изображение, используемое в предсказании компенсации движения должно быть использовано в качестве опорного индекса, и опорный индекс кодируется в битовом потоке вместе с разностью векторов движения.In an embodiment of the present invention, it is possible to select optimal reference pictures from a plurality of reference pictures in motion compensation prediction to improve the accuracy of motion compensation prediction. Thus, a reference picture used in motion compensation prediction should be used as a reference index, and the reference index is encoded in the bitstream along with the motion vector difference.
Процесс компенсации движения на основании режима предиктора нормального вектора движенияMotion Compensation Process Based on Normal Motion Vector Predictor Mode
Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 301 получения режима предиктора нормального вектора движения, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока и, таким образом, генерирует сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.As illustrated in the
Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 401 получения режима предиктора нормального вектора движения во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 401 получения режима предиктора нормального вектора движения и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока и, таким образом, генерирует сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.Similarly, as illustrated in the
Процесс компенсации движения на основании режима нормального слиянияMotion compensation process based on normal fusion mode
Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 302 получения режима нормального слияния, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.As illustrated in the
Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 402 получения режима нормального слияния во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания блоком 402 получения режима нормального слияния и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.Similarly, as illustrated in the
Процесс компенсации движения на основании режима предиктора вектора движения подблокаMotion Compensation Process Based on Subblock Motion Vector Predictor Mode
Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 303 получения режима предиктора вектора движения подблока, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.As illustrated in the
Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 403 получения режима предиктора вектора движения подблока во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 403 получения режима предиктора вектора движения подблока и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.Similarly, as illustrated in the
Процесс компенсации движения на основании режима слияния подблоковMotion Compensation Process Based on Subblock Merge Mode
Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 304 получения режима слияния подблоков, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.As illustrated in the
Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 404 получения режима слияния подблоков во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 404 получения режима слияния подблоков и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.Similarly, as illustrated in the
Процесс компенсации движения на основании предсказания аффинного преобразованияMotion Compensation Process Based on Affine Transform Prediction
В режиме предиктора нормального вектора движения и режиме нормального слияния может использоваться компенсация движения с использованием аффинной модели на основании следующих флагов. Следующие флаги отражаются в следующих флагах на основании условий межкадрового предсказания, определенных определителем 305 режима межкадрового предсказания в процессе кодирования, и кодируются в битовом потоке. В процессе декодирования определяется, выполнять ли компенсацию движения с использованием аффинной модели на основании следующих флагов в битовом потоке.In the normal motion vector predictor mode and the normal merge mode, motion compensation using an affine model can be used based on the following flags. The following flags are reflected in the following flags based on the inter prediction conditions determined by the inter
sps_affine_enabled_flag указывает, может ли использоваться компенсация движения с использованием аффинной модели во межкадровом предсказании. Когда sps_affine_enabled_flag равен 0, процесс подавляется, чтобы не выполнять компенсацию движения с помощью аффинной модели в блоках последовательности. Более того, inter_affine_flag и cu_affine_type_flag не передаются в синтаксисе блока кодирования (CU) кодирующей видеопоследовательности. Когда sps_affine_enabled_flag равен 1, может использоваться компенсация движения с помощью аффинной модели в видеопоследовательности кодирования.sps_affine_enabled_flag indicates whether motion compensation using the affine model can be used in inter-prediction. When sps_affine_enabled_flag is 0, the process is suppressed to not perform motion compensation with the affine model in sequence blocks. Moreover, inter_affine_flag and cu_affine_type_flag are not conveyed in the coding unit (CU) syntax of the video coding sequence. When sps_affine_enabled_flag is equal to 1, affine model motion compensation can be used in the video coding sequence.
sps_affine_type_flag указывает, может ли использоваться компенсация движения с использованием 6-параметрической аффинной модели во межкадровом предсказании. Когда sps_affine_type_flag равен 0, процесс подавляется, чтобы не выполнять компенсацию движения с использованием 6-параметрической аффинной модели. Более того, cu_affine_type_flag не передается в синтаксисе CU кодирующей видеопоследовательности. Когда sps_affine_type_flag равен 1, в видеопоследовательности кодирования может использоваться компенсация движения на основании 6-параметрической аффинной модели. В случае отсутствия sps_affine_type_flag, должен быть равен 0.sps_affine_type_flag indicates whether motion compensation using the 6-parameter affine model can be used in inter-prediction. When sps_affine_type_flag is 0, the process is suppressed to not perform motion compensation using the 6-parameter affine model. Moreover, cu_affine_type_flag is not conveyed in the CU syntax of the video coding sequence. When sps_affine_type_flag is equal to 1, motion compensation based on a 6-parameter affine model can be used in the video coding sequence. If there is no sps_affine_type_flag, it should be 0.
В случае декодирования P- или B-сегмента, когда inter_affine_flag равен 1 в текущем CU, для генерирования сигнала предсказания компенсации движения текущего CU используется компенсация движения с использованием аффинной модели. Когда inter_affine_flag равен 0, аффинная модель не используется для текущего CU. В случае отсутствия inter_affine_flag, должен быть равен 0.In the case of P or B segment decoding, when inter_affine_flag is equal to 1 in the current CU, motion compensation using an affine model is used to generate a motion compensation prediction signal of the current CU. When inter_affine_flag is 0, no affine model is used for the current CU. If there is no inter_affine_flag, it must be 0.
В случае декодирования P- или B-сегмента, когда cu_affine_type_flag равен 1 в текущем CU, для генерирования сигнала предсказания компенсации движения текущего CU используется компенсация движения с использованием 6-параметрической аффинной модели. Когда cu_affine_type_flag равен 0, для генерирования сигнала предсказания компенсации движения CU, обрабатываемого в данный момент, используется компенсация движения с использованием четырехпараметрической аффинной модели.In the case of P or B segment decoding, when cu_affine_type_flag is equal to 1 in the current CU, motion compensation using a 6-parameter affine model is used to generate a motion compensation prediction signal of the current CU. When cu_affine_type_flag is 0, motion compensation using a four-parameter affine model is used to generate a motion compensation prediction signal of the CU currently being processed.
Опорный индекс и вектор движения выводятся в блоках подблоков в компенсации движения на основании аффинной модели. Соответственно, сигнал предсказания с компенсацией движения генерируется с использованием опорного индекса и вектора движения для обработки в подблоках.The reference index and motion vector are output in blocks of sub-blocks in motion compensation based on the affine model. Accordingly, a motion-compensated prediction signal is generated using a reference index and a motion vector for sub-block processing.
Четырехпараметрическая аффинная модель представляет собой режим, в котором получают вектор движения подблока из четырех параметров горизонтального компонента и вертикального компонента каждого из векторов движения двух контрольных точек и компенсация движения выполняется в блоках подблоков.The four-parameter affine model is a mode in which a sub-block motion vector is obtained from the four parameters of the horizontal component and the vertical component of each of the motion vectors of the two control points, and motion compensation is performed in blocks of sub-blocks.
Для предсказания компенсации движения раздела 0 используется информация движения однонаправленного предсказания, обозначенная индексом 0 слияния треугольников. Информация движения однонаправленного предсказания, обозначенная индексом 1 слияния треугольников, используется для предсказания компенсации движения раздела 1. Информация движения двунаправленного предсказания, объединенная с информацией движения однонаправленного предсказания, обозначенная индексом 0 слияния треугольников, и информации движения однонаправленного предсказания, обозначенная индексом 1 слияния треугольников, используется для предсказания компенсации движения раздела 2.For
Внутриблочное копирование (IBC)Intrablock Copy (IBC)
Действительная опорная область внутриблочного копирования будет описана со ссылкой на фиг.39. На фиг.39A показан примерный случай, когда действительная опорная область определяется при условии, что единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования. Блоки 500, 501, 502, 503 и 504 на фиг.39A являются блоками дерева кодирования, и блок 504 среди них является целевым блоком дерева кодирования. Блок 505 представляет собой целевой блок кодирования. Блоки дерева кодирования обрабатываются в порядке 500, 501, 502, 503 и 504. В этом случае все три блока 501, 502 и 503 дерева кодирования, которые обрабатываются непосредственно перед блоком 504 дерева кодирования, включая целевой блок 505 кодирования, устанавливаются как действительные опорные области целевого блока 505 кодирования. Блок дерева кодирования, который обрабатывается перед блоком 501 дерева кодирования, и области, включенные в блок 504 дерева кодирования, включая целевой блок 505 кодирования, устанавливаются все как недействительные опорные области независимо от того, завершена ли обработка перед целевым блоком 505 кодирования. The actual intra-block copy reference area will be described with reference to FIG. FIG. 39A shows an exemplary case where a valid reference area is determined under the condition that a coding tree block unit is used as an intra-block copy standard block.
На фиг.39B показан примерный случай, когда действительная опорная область определяется при условии, что единица, полученная путем разделения на четыре части единицы блока дерева кодирования, используется в качестве стандартного блока внутриблочного копирования. На фиг.39B блоки 515 и 516 представляют собой блоки дерева кодирования, и блок 516 является целевым блоком дерева кодирования. Блок 515 дерева кодирования разделен на блоки 506, 507, 508 и 509, и блок 516 дерева кодирования разделен на блоки 510, 511, 512 и 513. Ссылочная позиция 514 обозначает целевой блок кодирования. Стандартные блоки внутриблочного копирования обрабатываются в порядке 506, 507, 508, 509, 510, 511, 512 и 513. В этом случае три стандартных блока 508, 509, 510 внутриблочного копирования обрабатываются непосредственно перед стандартным блоком 511 внутриблочного копирования, включая целевой блок 514 кодирования, задаются как действительные опорные области целевого блока 514 кодирования. Блок дерева кодирования, обработанный перед стандартным блоком 508 внутриблочного копирования, и вся область, включенная в стандартный блок 511 внутриблочного копирования, включая целевой блок 514 кодирования устанавливаются все как недействительные опорные области независимо от того, завершена ли обработка перед целевым блоком 514 кодирования. FIG. 39B shows an exemplary case where a valid reference area is determined under the condition that a unit obtained by dividing a coding tree block into four units is used as an intra-block copy standard unit. 39B, blocks 515 and 516 are coding tree blocks, and block 516 is the target coding tree block. The
Пространство памяти опорной областиReference area memory space
Ниже будет описано пространство памяти для хранения обработанного изображения опорной области. На фиг.56 показано схематичное представление, иллюстрирующее пространство памяти опорной области, когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования. Блоки 500, 501, 502, 503, 504 и 505, показанные на фиг.56A, являются блоками дерева кодирования. Блок 503 дерева кодирования является целевым блоком дерева кодирования. Блок 500 дерева кодирования, блок 501 дерева кодирования, блок 502 дерева кодирования являются обработанными блоками дерева кодирования и соответствуют опорной области целевого блока 503 дерева кодирования. Блоки 504 и 505 дерева кодирования являются необработанными блоками дерева кодирования. На фиг.56A промежутки 600, 601, 602 и 603 представляют собой пространство памяти. Пространство памяти 600 хранит обработанное изображение блока кодирования дерева 500. Аналогичным образом, пространство памяти 601 хранит обработанное изображение блока 501 кодирования дерева, в то время как пространство памяти 602 хранит обработанное изображение блока 502 дерева кодирования. Пространство 603 памяти последовательно сохраняет обработанные изображения в соответствии с обработкой целевого блока 503 дерева кодирования. Когда обработка блока 503 дерева кодирования завершается, затем начинается обработка блока 504 дерева кодирования. The memory space for storing the processed image of the reference area will be described below. 56 is a schematic diagram illustrating the memory space of a reference area when a coding tree block unit is used as an intra-block copy standard block.
Процесс, выполняемый при завершении обработки блока 503 дерева кодирования, будет описан с использованием фиг.56B. На данном этапе блок 504 дерева кодирования будет целевым блоком дерева кодирования. Кроме того, блок 503 дерева кодирования будет опорной областью, и блок 500 дерева кодирования больше не будет опорной областью. На данном этапе обработанное изображение блока 503 дерева кодирования было сохранено в пространстве 603 памяти, которая последовательно хранила обработанное изображение блока 503 дерева кодирования. Так как блок 500 дерева кодирования больше не является опорной областью кодирования блока 504 дерева, обработанное изображение блока 500 дерева кодирования, сохраненное в пространстве 600 памяти, будет представлять собой ненужную информацию. Соответственно, обработанные изображения целевого блока 504 дерева кодирования будут последовательно сохраняться в пространстве 600 памяти. Когда обработка блока 504 дерева кодирования завершена, затем начинается обработка блока 505 дерева кодирования. The process performed when processing of the
Аналогичным образом, пример завершения обработки блока 504 дерева кодирования показан на фиг.56C. На данном этапе блок 505 дерева кодирования будет целевым блоком дерева кодирования, и блок 504 дерева кодирования будет опорной областью. Блок 501 дерева кодирования больше не является опорной областью. Обработанные изображения целевого блока 504 дерева кодирования последовательно сохраняются в пространстве 601 памяти. Когда обработка блока 505 дерева кодирования завершена, начинается обработка следующего блока дерева кодирования. Similarly, an example of completing processing of the
На фиг.57 показано схематичное представление, иллюстрирующее пространство памяти опорной области, когда действительная опорная область определяется при предположении, что единица получена путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования. На фиг.57A 510 и 511 показаны блоки дерева кодирования. Блок 510 дерева кодирования является обработанным блоком дерева кодирования, и блок 511 дерева кодирования является целевым блоком дерева кодирования. Блок 510 дерева кодирования включает в себя блоки 500, 501, 502 и 503. Блок 511 дерева кодирования включает в себя блоки 504, 505, 506 и 507. Блок 504 является целевым блоком. Блоки 501, 502 и 503 являются обработанными блоками и соответствуют опорной области целевого блока 504. Блоки 505, 506, 507 являются необработанными блоками. Промежутки 600, 601, 602 и 603 на фиг.57A являются пространствами памяти. В пространстве 603 памяти хранится обработанное изображение блока 501. Аналогичным образом, в пространстве 602 памяти хранится обработанное изображение блока 502. В пространстве 603 памяти хранится обработанное изображение блока 503. В пространстве 600 памяти последовательно сохраняются обработанные изображения в соответствии с обработкой целевого блока 504. Когда обработка блока 504 завершена, затем начинается обработка блока 505. Fig. 57 is a schematic diagram illustrating the memory space of a reference area when a valid reference area is determined under the assumption that a unit is obtained by quartering a coding tree block as an intra-block copy standard block. On
Процесс, выполняемый при завершении обработки блока 504, будет описан с использованием фиг.57B. На данном этапе блок 505 будет целевым блоком дерева кодирования. Кроме того, блок 504 будет опорной областью, и блок 501 больше не будет опорной областью. На данном этапе обработанное изображение блока 504 сохраняется в пространстве 600 памяти, в котором последовательно сохраняется обработанное изображение блока 504. Так как блок 501 дерева кодирования больше не является опорной областью блока 505 дерева кодирования, обработанное изображение блока 501 дерева кодирования, сохраненное в пространстве 601 памяти, будет представлять собой ненужную информацию. Соответственно, обработанные изображения целевого блока 505 дерева кодирования будут последовательно сохраняться в пространстве 601 памяти. Когда обработка блока 505 завершена, затем начинается обработка блока 506 дерева кодирования. The process performed at the completion of
Процесс, выполняемый при завершении обработки блока 504, будет описан с использованием фиг.57C. На данном этапе блок 506 будет целевым блоком. Кроме того, блок 505 будет опорной областью, и блок 502 дерева кодирования больше не будет опорной областью. Аналогично вышеприведенному примеру, обработанные изображения целевого блока 506 дерева кодирования будут последовательно сохраняться в пространстве 602 памяти. The process performed at the completion of
Процесс, выполняемый при завершении обработки блока 505, будет описан со ссылкой на фиг.57D. На данном этапе блок 507 будет целевым блоком. Кроме того, блок 506 будет опорной областью, и блок 503 дерева кодирования больше не будет опорной областью. Аналогично вышеприведенному примеру, обработанные изображения целевого блока 507 дерева кодирования будут последовательно сохраняться в пространстве 603 памяти. The process performed at the completion of
Внутриблочное копирование с предсказанием: сторона кодирования Intrablock Predictive Copy: Encoding Side
Процедура обработки внутририблочного копирования с предсказанием на стороне кодирования будет описана со ссылкой на фиг.44.The encoding-side intra-block copy copy processing procedure will be described with reference to FIG.
Сначала детектор 375 блочного вектора обнаруживает блочный вектор mvL (этап S4500 на фиг.44). Затем блок 371 получения пространственного блочного вектора-кандидата IBC, блок 372 получения кандидата предиктора блочного вектора IBC на основе истории, пополнитель 373 кандидата предиктора блочного вектора IBC, селектор 376 кандидата предиктора блочного вектора IBC, вычитатель 378 блочного вектора вычисляют разность блочных векторов для блочного вектора, используемого в режиме предиктора блочного вектора (этапы S4501-S4503 на фиг.44). First, the
Кандидаты предиктора блочного вектора вычисляются для составления списка mvpList кандидатов блочного вектора (этап S4501 на фиг.44). В блоке 352 предсказания внутририблочного копирования блок 371 получения пространственного блочного вектора-кандидата IBC, блок 372 получения блочного вектора-кандидата IBC на основе истории и пополнитель 373 кандидата предиктора блочного вектора IBC получают множество кандидатов предиктора блочного вектора и составляют список кандидатов предиктора блочного вектора mvpList. Подробная процедура обработки, выполняемой на этапе S4501 на фиг.44, будет описана ниже с использованием блок-схемы на фиг.47. The block vector predictor candidates are computed to construct the block vector candidate list mvpList (step S4501 in FIG. 44). In intra-block
Затем селектор 376 кандидатов предиктора блочного вектора IBC выбирает предиктор mvpL блочного вектора из списка mvpListL кандидатов предиктора блочного вектора (этап S4502 на фиг.44). Вычисляется каждая разность блочных векторов, которая представляет собой разность между блочным вектором mvL и каждым из списка mvpListL[i] кандидатов предиктора блочного вектора, хранящихся в списке mvpListL кандидатов предиктора блочного вектора. Объем кода во время кодирования этих разностей блочных векторов вычисляется для каждого из элементов списка mvpListL кандидатов предиктора блочного вектора. Затем кандидат предиктора блочного вектора mvpListL[i], который минимизирует объем кода для каждого из кандидатов предиктора блочного вектора среди отдельных элементов, зарегистрированных в списке mvpListL кандидатов предиктора блочного вектора, выбирается в качестве предиктора блочного вектора mvpL, и получается его индекс i. В случае, когда существует множество кандидатов предиктора блочного вектора, имеющих минимальный выработанный объем кода в списке mvpListL кандидатов предиктора блочного вектора, кандидат предиктора блочного вектора mvpListL[i], имеющий индекс i в списке mvpListL кандидатов предиктора блочного вектора, представленный маленьким числом, выбирается в качестве оптимального предиктора блочного вектора mvpL, и получается его индекс i. Then, the IBC block vector
Затем вычитатель 378 блочных векторов вычитает выбранный предиктор блочного вектора mvpL из блочного вектора mvL и, таким образом, вычисляет разность mvdL блочных векторов в виде:The
mvdL = mvL - mvpL (этап S4503 на фиг.44).mvdL = mvL - mvpL (step S4503 in FIG. 44).
Внутриблочное копирование с предсказанием: сторона декодированияIntrablock Predictive Copy: Decoding Side
Далее, процедура обработки режима нормального предиктора блочного вектора на стороне декодирования будет описана со ссылкой на фиг.45. На стороне декодирования блок 471 получения кандидата предиктора пространственного блочного вектора IBC, блок 472 получения блочного вектора-кандидата IBC на основе истории, и пополнитель 473 предиктора блочного вектора IBC вычисляют блочный вектор, используемый в режиме предиктора блочного вектора (этапы S4600-S4602 на фиг.45). В частности, вычисляется список mvpListL кандидатов предиктора блочного вектора, выбирается предиктор блочного вектора mvpL, и затем вычисляется блочный вектор mvL. Next, the block vector normal predictor mode processing procedure on the decoding side will be described with reference to FIG. On the decoding side, an IBC spatial block vector
Кандидаты предиктора блочного вектора вычисляются для составления списка mvpListL кандидатов предиктора блочного вектора (этап S4601 на фиг.45). В блоке 362 предсказания внутририблочного копирования блок 471 получения пространственного блочного вектора-кандидата IBC, блок 472 получения блочного вектора-кандидата IBC на основе истории и пополнитель 473 предиктора блочного вектора IBC вычисляют множество кандидатов предиктора блочного вектора и составляют список mvpListL кандидатов предиктора блочного вектора. Описание подробной процедуры обработки, выполняемой на этапе S4601 на фиг.45, опущено. Затем селектор 476 кандидатов предиктора блочного вектора извлекает кандидата предиктора блочного вектора mvpListL[mvpIdxL], соответствующего индексу предиктора блочного вектора mvpIdxL, декодированному и предоставленному блоком 201 декодирования битовых строк, из списка mvpListL кандидатов предиктора блочного вектора, в качестве выбранного блочного вектора-предиктора mvpL (этап S4601 на фиг.45). Затем сумматор 478 блочных векторов суммирует разность mvdL блочных векторов и предиктора блочных векторов mvpL, декодированные и предоставленные блоком 201 декодирования битовых строк, и вычисляет (этап S4602 на фиг.45) блочный вектор mvL следующим образом: The block vector predictor candidates are computed to construct a block vector predictor candidate list mvpListL (step S4601 in FIG. 45). In intra-block
mvL = mvpL + mvdLmvL = mvpL + mvdL
Режим блочного вектора предсказания: способ предсказания блочного вектораBlock vector prediction mode: block vector prediction method
На фиг.47 показана блок-схема алгоритма, иллюстрирующая процедуру обработки предсказания процесса получения режима внутриблочного копирования, имеющего функцию, общую с блоком 352 предсказания внутририблочного копирования устройства для кодирования движущихся изображений и блоком 362 предсказания внутририблочного копирования устройства для декодирования движущихся изображений согласно варианту осуществления настоящего изобретения.Fig. 47 is a flowchart illustrating a prediction processing procedure of an intra-block copy mode acquisition process having a function in common with an
Каждый из блока 352 предсказания внутририблочного копирования и блока 362 предсказания внутририблочного копирования включает в себя список mvpListL кандидатов предиктора блочного вектора. Список mvpListL кандидатов предиктора блочного вектора имеет структуру списка и включает в себя область хранения, которая хранит в качестве элементов индекс предиктора блочного вектора, указывающий местоположение в списке кандидатов предиктора блочного вектора, и кандидата предиктора блочного вектора, соответствующего этому индексу. Номер индекса предиктора блочного вектора начинается с 0, и кандидаты предиктора блочного вектора должны храниться в области хранения списка mvpListL кандидатов предиктора блочного вектора. В настоящем варианте осуществления предполагается, что список mvpListL кандидатов предиктора блочного вектора может регистрировать трех кандидатов предиктора блочного вектора. Кроме того, переменная numCurrMvpIbcCand, указывающая количество кандидатов предиктора блочного вектора, зарегистрированных в списке mvpListL кандидатов предиктора блочного вектора, устанавливается на 0. Each of the
Блоки 371 и 471 получения пространственного блочного вектора-кандидата IBC получают кандидата предиктора блочного вектора из соседнего блока на левой стороне (этап S4801 на фиг.47). В этом процессе получаются флаг availableFlagLA, указывающий то, можно ли использовать кандидат предиктора блочного вектора соседнего блока (A0 или A1) с левой стороны, и блочный вектор mvLA, и полученный mvLA будет добавлен в список mvpListL кандидатов предиктора блочного вектора. Затем блоки 371 и 471 получения пространственного блочного вектора-кандидата IBC получают кандидата предиктора блочного вектора из соседнего блока (B0, B1 или B2) на верхней стороне (этап S4802 на фиг.47). Этот процесс получает флаг availableFlagLB, указывающий то, можно ли использовать кандидат предиктора вектора движения соседнего блока на верхней стороне, и блочный вектор mvLB. Когда mvLA и mvLB не равны, блочный вектор mvLB будет добавлен в список mvpListL кандидатов предиктора блочного вектора. Процессы на этапах S4801 и S4802 на фиг.47 представлены в виде общего процесса, за исключением того, что позиции и номера опорных соседних блоков являются различными. Эти процессы получают флаг availableFlagLN, указывающий то, можно ли использовать кандидат предиктора блочного вектора для блока кодирования, и вектор движения mvLN (N указывает A или B, аналогично применяется в дальнейшем). IBC spatial block vector candidate derivation blocks 371 and 471 obtain a block vector predictor candidate from an adjacent block on the left side (step S4801 in FIG. 47). In this process, the availableFlagLA flag indicating whether the block vector predictor candidate of the adjacent block (A0 or A1) on the left side can be used and the mvLA block vector are obtained, and the resulting mvLA will be added to the block vector predictor candidate list mvpListL. Next, IBC spatial block vector candidate derivation blocks 371 and 471 obtain the block vector predictor candidate from the neighboring block (B0, B1 or B2) on the upper side (step S4802 in FIG. 47). This process obtains an availableFlagLB flag indicating whether the neighbor block motion vector predictor candidate on the upper side can be used, and the mvLB block vector. When mvLA and mvLB are not equal, the mvLB block vector will be added to the block vector predictor candidate list mvpListL. The processes in steps S4801 and S4802 in FIG. 47 are shown as a general process, except that the positions and numbers of reference neighboring blocks are different. These processes receive an availableFlagLN flag indicating whether a block vector predictor candidate for a coding block can be used, and a motion vector mvLN (N indicates A or B, similarly applied hereinafter).
Затем блоки 372 и 472 получения блочных векторов-кандидатов IBC на основе истории добавляют блочные векторы-кандидаты на основе истории, зарегистрированные в списке HmvpIbcCandList блочных векторов-кандидатов на основе истории, в список mvpListL кандидатов предиктора блочного вектора. (Этап S4803 на фиг.47). Для подробностей процедуры обработки регистрации на этапе S4803 достаточно выполнить операцию, аналогичную операции, показанной на блок-схеме на фиг.29, то есть операцию, когда вектор движения заменяется блочным вектором, список опорных индексов заменяется на L0, список HmvpCandList кандидатов предиктора вектора движения на основе истории заменяется список HmvpIbcCandList блочных векторов-кандидатов на основе истории, и, таким образом, их описание будет опущено. Then, the history-based IBC block vector candidate derivers 372 and 472 add the history-based block vector candidates registered in the history-based block vector candidate list HmvpIbcCandList to the block vector predictor candidate list mvpListL. (Step S4803 in FIG. 47). For the details of the registration processing procedure, in step S4803, it is sufficient to perform an operation similar to the operation shown in the flowchart of FIG. the history-based list HmvpIbcCandList of history-based candidate block vectors is replaced, and thus their description will be omitted.
Затем пополнители 373 и 473 предиктора блочного вектора IBC добавляют блочный вектор, имеющий предварительно определенное значение, такое как (0, 0), до тех пор, пока список mvpListL кандидатов предиктора блочного вектора не будет удовлетворен (S4804 на фиг.47).Then, the IBC block
Блок получения режима внутриблочного копирования со слияниемIn-block copy-and-merge mode receive block
Блок 352 предсказания внутририблочного копирования, показанный на фиг.42, включает в себя блок 371 получения пространственного блочного вектора-кандидата IBC, блок 372 получения блочного вектора-кандидата IBC на основе истории, пополнитель 373 предиктора блочного вектора IBC, блок 380 коррекции опорной позиции, блок 381 коррекции границы опорной области, селектор 374 кандидатов слияния IBC и определитель 377 режима предсказания IBC.The intra-block
Блок 362 предсказания внутририблочного копирования на фиг.43 включает в себя блок 471 получения пространственного блочного вектора-кандидата IBC, блок 472 получения блочного вектора-кандидата IBC на основе истории, пополнитель 473 предиктора блочного вектора IBC, селектор 474 кандидатов слияния IBC, блок 480 коррекции опорной позиции, блок 481 коррекции границы опорной области и блок 477 блочного копирования.The intra-block
На фиг.46 показана блок-схема, иллюстрирующая процесс получения режима внутриблочного копирования в режиме слияния, имеющий функцию, общую с блоком 352 предсказания внутририблочного копирования устройства для кодирования движущихся изображений и блоком 362 предсказания внутририблочного копирования устройства для декодирования движущихся изображений согласно варианту осуществления настоящего изобретения.FIG. 46 is a flowchart illustrating a process of obtaining the intra-block copy mode in the merge mode having a function in common with the
Блок 352 предсказания внутририблочного копирования и блок 362 предсказания внутририблочного копирования включают в себя список mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния. Список mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния имеет структуру списка и включает в себя: область хранения, в которой в качестве элементов хранится индекс слияния, указывающий местоположение внутри кандидата внутриблочного копирования в режиме слияния; и кандидат внутриблочного копирования в режиме слияния, соответствующий индексу. Номер индекса слияния начинается с 0, и кандидат внутриблочного копирования в режиме слияния сохраняется в области хранения списка mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния. В последующих процессах кандидат слияния индекса слияния, зарегистрированный в списке mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния, будет представлен как mergeIbcCandList [i]. В настоящем варианте осуществления предполагается, что список mergeCandList кандидатов слияния позволяет зарегистрировать по меньшей мере три кандидата внутриблочного копирования в режиме слияния. Более того, переменная numCurrMergeIbcCand, указывающая количество кандидатов внутриблочного копирования в режиме слияния, зарегистрированных в списке mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния, имеет значение 0. The
Блок 371 получения пространственного блочного вектора-кандидата IBC и блок 471 получения пространственного блочного вектора-кандидата IBC получают кандидаты A и B пространственного слияния соседних блоков на левой и верхней сторонах целевого блока из информации кодирования, хранящейся в памяти 111 для хранения информации кодирования устройства для кодирования движущегося изображения или в памяти 205 для хранения информации кодирования устройства для декодирования движущегося изображения, и затем добавляют полученные кандидаты пространственного слияния в список mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния (этап S4701 на фиг.46). В данном документе будет определено N, обозначающее один из кандидатов A и B пространственного слияния. Получаются флаг availableFlagN и блочный вектор mvL, указывающие то, может ли информация предсказания внутририблочного копирования блока N использоваться в качестве кандидата N слияния пространственного блочного вектора. Однако в настоящем варианте осуществления кандидат слияния блочных векторов получается без ссылки на другие блоки кодирования, включенные в блок, включая целевой блок кодирования. Соответственно, не будет получаться кандидат слияния пространственного блочного вектора, включенный в блок, включающий в себя целевой блок кодирования. The IBC spatial block vector
Затем блок 372 получения кандидата блочного вектора IBC на основе истории и блок 472 получения блочного вектора-кандидата IBC на основе истории добавляют кандидаты предиктора блочного вектора на основе истории, зарегистрированные в списке HmvpIbcCandList кандидатов предиктора блочного вектора на основе истории, в список mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния (этап S4702 на фиг.46). В настоящем примере, в случае, когда блочный вектор, уже добавленный в mergeIbcCandList, и блочный вектор кандидата предиктора блочного вектора на основе истории имеют одинаковое значение, не будет выполняться добавление в mergeIbcCandList. Then, the history-based IBC block vector
Затем в случае, когда количество кандидатов numCurrMergeIbcCand слияния, зарегистрированное в списке mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния меньше, чем максимальное количество кандидатов numCurrMergeIbcCand внутриблочного слияния, пополнитель 373 предиктора блочного вектора IBC и пополнитель 473 предиктора блочного вектора IBC получают дополнительный кандидат внутриблочного слияния таким образом, что количество кандидатов numCurrMergeIbcCand слияния, зарегистрированных в списке mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния, находится в пределах верхнего предела максимального количества кандидатов numCurrMergeIbcCand внутриблочного слияния, и добавляют полученный кандидат в список mergeIbcCandList3 кандидатов внутриблочного копирования в режиме слияния (фиг.46). Блочный вектор, имеющий значение (0,0), будет добавлен в список mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния в пределах верхнего предела максимального количества кандидатов numCurrMergeIbcCand внутриблочного слияния. Then, in the case where the number of merge candidates numCurrMergeIbcCand registered in the merge mode in-block copy candidate list mergeIbcCandList is less than the maximum number of in-block merge candidates numCurrMergeIbcCand, the IBC block
Затем селектор 374 кандидатов слияния IBC и селектор 474 кандидатов слияния IBC выбирают один из кандидатов внутриблочного слияния, зарегистрированных в списке mergeIbcCandList кандидатов внутриблочного копирования в режиме слияния (этап S4704 на фиг.46). Селектор 374 кандидатов слияния IBC получает декодированное изображение в опорной позиции из памяти 104 декодированных изображений, вычисляет объем кода и величину искажения, тем самым выбирая кандидат слияния, и затем подает индекс слияния, указывающий выбранный кандидат внутриблочного слияния, в определитель 377 режима предсказания IBC. Определитель 377 режима предсказания IBC вычисляет объем кода и количество искажений, тем самым выбирая режим слияния, и затем подает результат в определитель 105 способа предсказания. С другой стороны, селектор 474 кандидатов слияния IBC на стороне декодирования выбирает кандидата внутриблочного слияния на основе декодированного индекса слияния, и затем передает выбранный кандидат внутриблочного слияния в блок 480 коррекции опорной позиции. Then, the IBC
Затем блок 380 коррекции опорной позиции и блок 480 коррекции опорной позиции выполняют процесс коррекции опорной позиции над кандидатом внутриблочного слияния (этап S4705 на фиг.46). Подробности процессов блока 380 коррекции опорной позиции и блока 480 коррекции опорной позиции будут описаны ниже. Then, the reference
Затем блок 381 коррекции границы опорной области и блок 481 коррекции границы опорной области выполняют процесс коррекции границы опорной области над кандидатом внутриблочного слияния (этап S4706 на фиг.46). Подробности процессов, выполняемых блоком 381 коррекции опорной позиции и блоком 481 коррекции опорной позиции, будут описаны ниже. Then, the reference area
Блок 477 блочного копирования получает декодированное изображение в опорной позиции из памяти 208 декодированных изображений и передает полученное изображение в блок 207 наложения сигнала декодированного изображения. В данном документе блок 477 блочного копирования копирует компонент яркости и компонент цветового различия. The
Вышеупомянутый блочный вектор mvL представляет блочный вектор яркости. Когда формат цветового различия равен 420, блочный вектор mvC цветового различия получается следующим образом: The above block vector mvL represents the luminance block vector. When the color difference format is 420, the mvC block vector of the color difference is obtained as follows:
mvC = ((mvL >> (3 + 2)) * 32mvC = ((mvL >> (3 + 2)) * 32
С помощью приведенного выше уравнения будет обработан каждый из компонентов x и y mvC.The above equation will process each of the x and y components of mvC.
Блок коррекции опорной позицииReference position correction block
На фиг.48 показана блок-схема, иллюстрирующая процесс, выполняемый блоком 380 коррекции опорной позиции и блоком 480 коррекции опорной позиции. В данном документе предполагается, что единицей стандартного блока внутриблочного копирования является блок дерева кодирования (CTU), и его размер не равен 128×128 выборок. FIG. 48 is a flowchart illustrating a process performed by the reference
Сначала вычисляются верхняя левая и нижняя правая позиции опорного блока (S6001). Опорный блок относится к блоку, на который ссылается целевой блок кодирования с использованием блочного вектора. Когда в опорном блоке определено, что верхняя левая позиция имеет координаты (xRefTL, yRefTL), и нижняя правая позиция имеет координаты (xRefBR, yRefBR), будет получено следующее выражение: First, the upper left and lower right positions of the reference block are calculated (S6001). The reference block refers to the block referenced by the target encoding block using the block vector. When it is determined in the reference block that the top left position has coordinates (xRefTL, yRefTL) and the bottom right position has coordinates (xRefBR, yRefBR), the following expression will be obtained:
(xRefTL, yRefTL) = (xCb + (mvL [0] >> 4), yCb + (mvL [1] >> 4))(xRefTL, yRefTL) = (xCb + (mvL[0] >> 4), yCb + (mvL[1] >> 4))
(xRefBR, yRefBR) = (xRefTL + cbWidth - 1, yRefTL + cbHeight - 1)(xRefBR, yRefBR) = (xRefTL + cbWidth - 1, yRefTL + cbHeight - 1)
В данном документе позиция целевого блока кодирования имеет координаты (xCb, yCb), блочный вектор – (mvL [0], mvL [1]), ширина целевого блока кодирования равна cbWidth, и высота равна cbHeight.In this document, the position of the target encoding block has coordinates (xCb, yCb), the block vector is (mvL[0], mvL[1]), the width of the target encoding block is cbWidth, and the height is cbHeight.
Затем определяется то, равен ли размер CTU 128×128 выборок (S6002). В данном документе, так как размер не равен 128×128 выборок (S6002: Нет), вычисляются верхнюю левую и нижнюю правую позиции области (S6003), на которую можно ссылаться. Когда верхняя левая позиции (xAvlTL, yAvlTL) и нижняя правая позиция (xAvlBR, yAvlBR) в области, на которую можно ссылаться, отдельные позиции будут получены следующим образом: It is then determined whether the CTU size is 128×128 samples (S6002). Herein, since the size is not 128×128 samples (S6002: No), the top left and bottom right positions of the area that can be referred to are calculated (S6003). When the top left position (xAvlTL, yAvlTL) and bottom right position (xAvlBR, yAvlBR) are in the area that can be referenced, the individual positions will be obtained as follows:
NL = Min (1, 7-CtbLog2SizeY) - (1 << ((7-CtbLog2SizeY) << 1))NL = Min(1, 7-CtbLog2SizeY) - (1 << ((7-CtbLog2SizeY) << 1))
(xAvlTL, yAvlTL) = (((xCb >> CtbLog2SizeY) + NL) << CtbLog2SizeY,(xAvlTL, yAvlTL) = (((xCb >> CtbLog2SizeY) + NL) << CtbLog2SizeY,
(yCb >> CtbLog2SizeY) << CtbLog2SizeY))(yCb >> CtbLog2SizeY) << CtbLog2SizeY))
(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) -1,(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) -1,
(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) -1)(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) -1)
В данном документе размер CTU равен CtbLog2SizeY.In this document, the CTU size is CtbLog2SizeY.
Затем определяется то, меньше ли опорная позиция опорного блока в направлении x, чем верхний левый участок области (S6004), на которую можно ссылаться. Когда определение является ложным (S6004: Нет), процесс переходит к следующему процессу (S6006). Напротив, когда определение является истинным (S6004: Да), опорная позиция в направлении x будет скорректирована в соответствии с верхним левым участком области (S6005), на которую можно ссылаться. It is then determined whether the reference position of the reference block in the x direction is smaller than the upper left portion of the area that can be referred to. When the determination is false (S6004: No), the process advances to the next process (S6006). On the contrary, when the determination is true (S6004: Yes), the reference position in the x direction will be corrected according to the upper left portion of the area (S6005) that can be referred to.
На фиг.49 показано схематичное представление, иллюстрирующее состояние коррекции опорной позиции. Ссылочная позиция 6001 обозначает целевой блок дерева кодирования, 6002 обозначает целевой блок кодирования, и 6003 обозначает область, на которую можно ссылаться. Теперь, при условии, что опорный блок r2 расположен в позиции 6011, опорная позиция в направлении x меньше, чем верхний левый участок области, на которую можно ссылаться (S6004: Да). Таким образом, опорная позиция корректируется перед позицией 6012, при условии, что xRefTL = xAvlTL (S6005). В данном документе, так как xRefBR = xRefTL + cbWidth-1 сохраняется, как в S6001, xRefBR также будет скорректирован совместно с скоррекцией xRefTL. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [0]. То есть коррекция выполняется следующим образом: Fig. 49 is a schematic diagram illustrating a state of reference position correction.
mvL [0] = (xAvlTL - xCb) << 4.mvL[0] = (xAvlTL - xCb) << 4.
Это удовлетворяет xRefTL = xAvlTL, что позволяет скорректировать опорную позицию.This satisfies xRefTL = xAvlTL, which allows the reference position to be corrected.
Таким образом, в случае, когда опорный блок расположен за пределами области, на которую можно ссылаться, коррекция опорной позиции позволит ссылаться на опорный блок.Thus, in the case where the reference block is located outside the area that can be referred to, the correction of the reference position will allow the reference block to be referenced.
Теперь предполагается, что некоторые блочные векторы в списке блочных векторов-кандидатов, составленном блоком 352 предсказания внутририблочного копирования, находятся за пределами области, на которую можно ссылаться. В случае, когда опорная позиция не подлежит коррекции, на эти блочные вектора невозможно будет ссылаться, запрещая добавление этих блочных векторов к кандидатам для режима слияния IBC. Напротив, в случае, когда опорная позиция должна быть скорректирована в настоящем изобретении, все блочные векторы в составленном списке кандидатов блочных векторов будут находиться внутри области, на которую можно ссылаться. Это сделает все блочные векторы доступными для ссылок, что позволит добавить все блочные векторы к кандидатам для режима слияния IBC. Таким образом, селектор 374 режима слияния IBC может выбрать оптимальный режим предсказания из каждого из кандидатов режима слияния IBC, соответствующих всем блочным векторам, что приводит к повышению эффективности кодирования. It is now assumed that some of the block vectors in the list of block vector candidates compiled by
Теперь предполагается, что некоторые блочные векторы в списке блочных векторов-кандидатов, составленном блоком 362 предсказания внутририблочного копирования, находятся за пределами области, на которую можно ссылаться. В случае, когда опорная позиция не должна корректироваться, к этим блочным векторам будет невозможно обращаться, что приведет отключению декодирования в режиме слияния IBC с использованием этих блочных векторов. В устройстве кодирования, которое не является настоящим изобретением, индекс слияния указывает режим слияния IBC при условии, что эти блочные векторы действуют как некодированные. Однако такой индекс слияния может быть закодирован для выработки битового потока из-за сбоя операции или тому подобного. В других случаях часть битового потока может быть утеряна из-за потери пакета или тому подобного, и результатом декодирования может быть такой индекс слияния. При попытке декодировать такой неполный битовый поток существует возможность обращения к памяти декодированных изображений в неправильной позиции при попытке обратиться за пределами области, на которую можно ссылаться. Таким образом, результат декодирования отличается в зависимости от устройства декодирования, или процесс декодирования останавливается. Напротив, в случае, когда опорная позиция должна быть скорректирована в настоящем изобретении, все блочные векторы в составленном списке кандидатов блочных векторов будут находиться внутри области, на которую можно ссылаться. Таким образом, даже тогда, когда декодируется такой неполный битовый поток, опорная позиция будет скорректирована внутри области, на которую можно ссылаться, что позволяет ей быть опорной. Таким образом, коррекция опорной позиции позволяет гарантировать диапазон обращения к памяти. Это приводит к получению того же результата декодирования устройством декодирования, что позволяет продолжить процесс декодирования, что, в свою очередь, приводит к повышению устойчивости устройства декодирования. It is now assumed that some of the block vectors in the list of block vector candidates compiled by
Кроме того, в случае, когда блочный вектор должен быть скорректирован при коррекции опорной позиции, целью является блочный вектор яркости. В данном документе блочный вектор цветового различия вычисляется из блочного вектора яркости. То есть коррекция блочного вектора яркости также корректирует блочный вектор цветового различия. Таким образом, нет необходимости снова корректировать опорную позицию по цветовому различию. Объем обработки может быть уменьшен по сравнению со случаем, когда коррекция блочного вектора не выполняется и возникает необходимость определять, возможна ли ссылка на основе как яркости, так и цветового различия.In addition, in the case where the block vector is to be corrected when correcting the reference position, the target is the luminance block vector. In this document, a color difference block vector is computed from a luminance block vector. That is, the luminance block vector correction also corrects the color difference block vector. Thus, it is not necessary to correct the reference position for the color difference again. The amount of processing can be reduced compared to the case where no block vector correction is performed and it becomes necessary to determine whether a reference is possible based on both brightness and color difference.
Кроме того, в случае, когда блочный вектор должен быть скорректирован при коррекции опорной позиции, скорректированный блочный вектор будет сохранен в памяти 111 для хранения информации кодирования или памяти 205 для хранения информации кодирования как блочный вектор целевого блока кодирования. То есть скорректированная опорная позиция и позиция, указанная блочным вектором, являются одинаковыми. В данном документе хранение результата декодирования в памяти декодированных изображений иногда включает в себя процесс фильтрации с удалением блочности. В этом процессе фильтрации управление мощностью фильтра осуществляется за счет разницы между блочными векторами двух блоков, находящихся перед границей блока. По сравнению со случаем, когда блочный вектор не скорректирован, и скорректированная опорная позиция отличается от позиции, которую указывает блочный вектор, можно получить дополнительную соответствующую мощность фильтра, которая приводит к повышению эффективности кодирования. In addition, in the case where the block vector needs to be corrected when correcting the reference position, the corrected block vector will be stored in the encoding
Затем определяется то, меньше ли опорная позиция опорного блока в направлении y, чем верхний левый участок области, на которую можно ссылаться (S6006). Когда определение является ложным (S6006: Нет), процесс переходит к следующему процессу (S6008). Напротив, когда определение является истинным (S6006: Да), опорная позиция в направлении y будет скорректирована в соответствии с верхним левым участком области (S6007), на которую можно ссылаться. It is then determined whether the reference position of the reference block in the y direction is smaller than the upper left portion of the area that can be referred to (S6006). When the determination is false (S6006: No), the process advances to the next process (S6008). On the contrary, when the determination is true (S6006: Yes), the reference position in the y direction will be corrected according to the upper left portion of the area (S6007) that can be referred to.
Теперь, при условии, что опорный блок r4 расположен в позиции 6021, опорная позиция в направлении y меньше верхнего левого участка области, на которую можно ссылаться (S6006: Да). Таким образом, опорная позиция корректируется перед позицией 6022, при условии, что yRefTL = yAvlTL (S6007). В данном документе, так как yRefBR = yRefTL + cbHeight-1 выполняется, как в S6001, yRefBR также будет скорректирован вместе с коррекцией yRefTL. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [1]. То есть коррекция выполняется следующим образом: Now, assuming that the reference block r4 is located at
mvL [1] = (yAvlTL - yCb) << 4mvL[1] = (yAvlTL - yCb) << 4
Это удовлетворяет yRefTL = yAvlTL, что позволяет корректировать опорную позицию.This satisfies yRefTL = yAvlTL, which allows the reference position to be corrected.
Затем определяется то, больше ли опорная позиция опорного блока в направлении x, чем нижний правый участок области, на которую можно ссылаться (S6008). Когда определение является ложным (S6008: Нет), процесс переходит к следующему процессу (S6010). Напротив, когда определение является истинным (S6008: Да), опорная позиция в направлении x будет скорректирована в соответствии с нижним правым участком области, на которую можно ссылаться (S6009). It is then determined whether the reference position of the reference block in the x direction is larger than the lower right portion of the area that can be referred to (S6008). When the determination is false (S6008: No), the process advances to the next process (S6010). On the contrary, when the determination is true (S6008: Yes), the reference position in the x direction will be corrected according to the lower right portion of the referenced area (S6009).
Теперь, при условии, что опорный блок r7 расположен в позиции 6031, опорная позиция в направлении x больше, чем нижний правый участок области, на которую можно ссылаться (S6008: Да). Таким образом, опорная позиция корректируется перед позицией 6032, при условии, что xRefBR = xAvlBR (S6009). В данном документе, так как xRefBR = xRefTL + cbWidth-1 выполняется, как в S6001, то есть выполняется xRefTL = xRefBR- (cbWidth-1), xRefTL также будет скорректирован вместе с коррекцией xRefBR. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [0]. То есть коррекция выполняется следующим образом: Now, assuming that the reference block r7 is located at
mvL [0] = (xAvlBR- (xCb + cbWidth-1)) << 4mvL[0]=(xAvlBR-(xCb+cbWidth-1)) << 4
Это удовлетворяет xRefBR = xAvlBR, что позволяет скорректировать опорную позицию.This satisfies xRefBR = xAvlBR, which allows the reference position to be corrected.
Затем определяется то, больше ли опорная позиция опорного блока в направлении y, чем нижний правый участок области, на которую можно ссылаться (S6010). Когда определение является ложным (S6010: Нет), процесс заканчивается. Напротив, когда определение является истинным (S6010: Да), опорная позиция в направлении y будет скорректирована в соответствии с нижним правым участком области, на которую можно ссылаться (S6011). It is then determined whether the reference position of the reference block in the y direction is larger than the lower right portion of the area that can be referred to (S6010). When the determination is false (S6010: No), the process ends. On the contrary, when the determination is true (S6010: Yes), the reference position in the y direction will be adjusted according to the lower right portion of the referenced area (S6011).
Теперь, при условии, что опорный блок r5 расположен в позиции 6041, опорная позиция в направлении y больше правого нижнего участка области, на которую можно ссылаться (S6010: Да). Таким образом, опорная позиция корректируется перед позицией 6042, при условии, что yRefBR = yAvlBR (S6011). В данном документе, так как yRefBR = yRefTL + cbHeight-1 выполняется, как в S6001, то есть выполняется yRefTL = yRefBR- (cbHeight-1), yRefTL также будет скорректирован вместе с коррекцией yRefBR. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [1]. То есть коррекция выполняется следующим образом: Now, assuming that the reference block r5 is located at
mvL [1] = (yAvlBR- (yCb + cbHeitght-1)) << 4mvL[1] = (yAvlBR-(yCb+cbHeitght-1)) << 4
Это удовлетворяет yRefBR = yAvlBR, что позволяет скорректировать опорную позицию.This satisfies yRefBR = yAvlBR, which allows the reference position to be corrected.
В данном документе будет описан случай, когда опорный блок r1 расположен в позиции 6051. В этом случае опорная позиция в направлении x корректируется аналогично случаю, когда опорным блоком является r2. Кроме того, аналогично случаю, когда опорным блоком является r4, опорная позиция в направлении y корректируется. В результате опорный блок r1 будет расположен в позиции 6052 внутри области, на которую можно ссылаться. Herein, the case where the reference block r1 is located at
В случае, когда опорный блок r3 расположен в позиции 6061, где опорный блок r6 расположен в позиции 6062, или где опорный блок r8 расположен в позиции 6063, опорная позиция в каждом из направлений x и y корректируется аналогично вышеуказанному случаю. В результате каждый опорный блок располагается внутри области, на которую можно ссылаться. In the case where the reference block r3 is located at
Вышеупомянутая процедура завершает процесс для случая, когда размер CTU не равен 128×128 выборок. Напротив, в случае, когда размер CTU составляет 128×128 выборок (S6002: Да), вычисляются верхняя левая и нижняя правая позиции, когда область, на которую можно ссылаться, является прямоугольной (S6012). The above procedure terminates the process for the case where the CTU size is not 128×128 samples. On the contrary, in the case where the CTU size is 128×128 samples (S6002: Yes), the top left and bottom right positions are calculated when the area that can be referred to is rectangular (S6012).
На фиг.50 показано схематичное представление, иллюстрирующее верхнюю левую и нижнюю правую позиции, когда область, на которую можно ссылаться, является прямоугольной. В случае, показанном на фиг.50A, целевой блок 6101 дерева кодирования разделен на четыре части, и целевой блок 6102 кодирования расположен сверху слева разделенных позиций. На данном этапе область, на которую можно ссылаться, имеет перевернутую L-образную форму, такую как заштрихованный участок в позиции 6103. В случае, когда область, на которую можно ссылаться, является прямоугольной, диапазоном будет диапазон прямоугольной области 6103. В случае, когда опорная область является прямоугольной, и когда верхняя левая часть опорного блока определена как (xRefTL, yRefTL), и его нижняя правая часть определена как (xRefBR, yRefBR), будет получено следующее выражение: Fig. 50 is a schematic diagram illustrating the top left and bottom right positions when the area that can be referred to is rectangular. In the case shown in FIG. 50A, the target
offset [4] = {0, 64, 128, 128}offset[4] = {0, 64, 128, 128}
NL = -offset [3-blk_idx], NR = offset [blk_idx]NL=-offset[3-blk_idx], NR=offset[blk_idx]
(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY + NL,(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY + NL,
(yCb >> CtbLog2SizeY) << CtbLog2SizeY))(yCb >> CtbLog2SizeY) << CtbLog2SizeY))
(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY)-1 + NR,(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY)-1 + NR,
(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY)-1).(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY)-1).
Здесь blk_idx – индекс, указывающий позицию целевого блока кодирования. В случае, когда целевой блок кодирования расположен в верхней левой позиции после разделения на четыре части целевого блока дерева кодирования, параметр настройку будет представлять собой: blk_idx = 0. Аналогичным образом, в случае, когда целевые блоки кодирования расположены в верхней правой, нижней левой и нижней правой позициях, blk_idx будет установлен в 1, 2 и 3. На фиг.50A показано схематичное представление, иллюстрирующее случай, где blk_idx = 0. Аналогичным образом, на фиг.50B-50D показаны схематичные представления, иллюстрирующие случаи, когда blk_idx = 1 – blk_idx = 3, соответственно. Here, blk_idx is an index indicating the position of the target coding block. In the case where the target coding block is located at the top left position after the division into four parts of the target block of the coding tree, the tuning parameter will be: blk_idx = 0. Similarly, in the case where the target coding blocks are located at the top right, bottom left, and bottom right positions, blk_idx will be set to 1, 2, and 3. FIG. 50A is a schematic diagram illustrating the case where blk_idx = 0. Similarly, FIGS. 50B-50D are schematic diagrams illustrating cases where blk_idx = 1 – blk_idx = 3, respectively.
Затем корректируется опорная позиция непрямоугольной опорной области (S6013). На фиг.51 показана блок-схема алгоритма, иллюстрирующая процесс коррекции опорной позиции участка области, на которую можно ссылаться и которая не является прямоугольной. Сначала вычисляется (S6021) верхняя левая позиции области, на которую можно ссылаться. Так как область, на которую можно ссылаться, представляет собой заштрихованный участок на фиг.50, имеются две верхние левые позиции 6111 и 6112, за исключением случая, когда blk_idx = 3. Когда эти две точки имеют координаты (X1, Y1), (X2, Y2), соответственно, позиции рассчитываются следующим образом: Then, the reference position of the non-rectangular reference area is corrected (S6013). FIG. 51 is a flowchart illustrating a process for correcting the reference position of a portion of an area that can be referenced and is not rectangular. First, the upper left position of the area that can be referred to is calculated (S6021). Since the area that can be referred to is the shaded area in FIG. 50, there are two upper
offset [4] = {64, 128, 64, 0}, NL = offset [blk_idx]offset[4] = {64, 128, 64, 0}, NL = offset[blk_idx]
(X1, Y1) = (xAvlTL, yAvlTL + 64)(X1, Y1) = (xAvlTL, yAvlTL + 64)
(X2, Y2) = (xAvlTL + NL, yAvlTL)(X2, Y2) = (xAvlTL + NL, yAvlTL)
Затем определяется (S6022) то, должна ли быть скорректирована опорная позиция в соответствии с верхним левым участком области, на которую можно ссылаться. В этом определении определяется, что это истина будет в случае, когда blk_idx = 3 не удовлетворяется, и опорный блок расположен в области меньше, чем X2 и Y1 (S6022: Да). В случае ложного определения (S6022: Нет) процесс переходит к следующему процессу (S6026). Then, it is determined (S6022) whether the reference position is to be corrected according to the upper left portion of the referenced area. In this determination, it is determined that it will be true in the case where blk_idx = 3 is not satisfied and the reference block is located in an area smaller than X2 and Y1 (S6022: Yes). In case of a false determination (S6022: No), the process advances to the next process (S6026).
Затем определяется то, меньше ли разница между опорным блоком и областью, на которую можно ссылаться, в направлении x, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6023). В случае, когда определение является истинным (S6023: Да), будет скорректирована (S6024) опорная позиция в направлении x. Напротив, в случае, когда определение является ложным (S6023: Нет), будет скорректирована (S6025) опорная позиция в направлении y. It is then determined whether the difference between the reference block and the referenced area in the x direction is smaller than the difference between the reference block and the referenced area in the y direction (S6023). In the case where the determination is true (S6023: Yes), the reference position in the x direction will be corrected (S6024). On the contrary, in the case where the determination is false (S6023: No), the reference position in the y direction will be corrected (S6025).
На фиг.52A показано схематичное представление, иллюстрирующее состояние коррекции опорной позиции на этапах S6024 и S6025. Теперь blk_idx = 0. При условии, что опорный блок r1 расположен в позиции 6201, blk_idx = 3 не удовлетворяется, и верхний левый опорный блок расположен в области меньше, чем X2 (направление x 6112) и Y1 (направление y 6111) (S6022: Да). Кроме того, разница между опорным блоком и областью, на которую можно ссылаться, в направлении x меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6023: Да). Таким образом, опорная позиция в направлении x будет скорректирована перед позицией 6202, при условии, что xRefTL = xAvlTL + NL (S6024). В данном документе, так как xRefBR = xRefTL + cbWidth-1 сохраняется, как в S6001, xRefBR также будет скорректирован совместно с скоррекцией xRefTL. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [0]. То есть коррекция выполняется следующим образом: 52A is a schematic diagram illustrating the state of the reference position correction in steps S6024 and S6025. Now, blk_idx = 0. Assuming that the reference block r1 is located at
mvL [0] = (xAvlTL + NL-xCb) << 4mvL[0] = (xAvlTL + NL-xCb) << 4
Это удовлетворяет xRefTL = xAvlTL + NL, что позволяет скорректировать опорную позицию.This satisfies xRefTL = xAvlTL + NL, which allows the reference position to be corrected.
Напротив, когда опорный блок r2 расположен в позиции 6203, blk_idx = 3 не удовлетворяется, и верхний левый участок опорного блока расположен в области меньше, чем X2 (6112 направление x) и Y1 (6111 направление y). (S6022: Да). Кроме того, разница между опорным блоком и областью, на которую можно ссылаться, в направлении x не меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6023: Нет). Таким образом, опорная позиция в направлении y корректируется перед позицией 6204, при условии, что yRefTL = yAvlTL + 64 (S6025). В данном документе, так как yRefBR = yRefTL + cbHeight-1 выполняется, как в S6001, yRefBR также будет скорректирован вместе с коррекцией yRefTL. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [0]. То есть коррекция выполняется следующим образом: In contrast, when the reference block r2 is located at
mvL [1] = (yAvlTL + 64-yCb) << 4mvL[1] = (yAvlTL + 64-yCb) << 4
Это удовлетворяет yRefTL = yAvlTL + 64, что позволяет корректировать опорную позицию.This satisfies yRefTL = yAvlTL + 64, which allows the reference position to be corrected.
В данном документе предполагается, что опорный блок r3 расположен в позиции 6205. В этом случае разница между опорным блоком и областью, на которую можно ссылаться, в направлении x меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направление y (S6023: Да). Соответственно, опорная позиция в направлении x корректируется аналогично опорному блоку r1, чтобы находиться в позиции 6206 (S6024). В этот момент контрольный блок находится за пределами области, на которую можно ссылаться. Однако опорная позиция в направлении y корректируется процессами S6006 и S6007, описанными ниже. Таким образом, опорный блок расположен внутри области, на которую можно ссылаться. In this document, reference block r3 is assumed to be located at
Затем вычисляется нижняя правая позиция области, на которую можно ссылаться (S6026). Так как область, на которую можно ссылаться, представляет собой заштрихованный участок на фиг.50, имеются две нижние правые позиции, 6113 и 6114, за исключением случая, когда blk_idx = 0. Когда эти две точки имеют координаты (X3, Y3) и (X4, Y4), соответственно, позиции рассчитываются следующим образом: Then, the lower right position of the area that can be referred to is calculated (S6026). Since the area that can be referred to is the shaded area in Fig. 50, there are two lower right positions, 6113 and 6114, except when blk_idx = 0. When these two points have coordinates (X3, Y3) and ( X4, Y4), respectively, positions are calculated as follows:
offset [4] = {0, 64, 128, 64}, NR = offset [blk_idx]offset[4] = {0, 64, 128, 64}, NR = offset[blk_idx]
(X3, Y3) = (xAvlBR, yAvlBR-64)(X3, Y3) = (xAvlBR, yAvlBR-64)
(X4, Y4) = (xAvlBR-NR, yAvlBR)(X4, Y4) = (xAvlBR-NR, yAvlBR)
Затем определяется, будет ли скорректирована опорная позиция в соответствии с нижним правым участком области, на которую можно ссылаться (S6027). В этом определении определяется, что это истина, когда blk_idx не равно 0 и опорный блок расположен в области, большей, чем X4 и Y3 (S6027: Да). В случае, когда определение является ложным (S6027: Нет), процесс завершается. It is then determined whether the reference position will be corrected according to the bottom right portion of the referenced area (S6027). In this determination, it is determined that it is true when blk_idx is not equal to 0 and the reference block is located in an area larger than X4 and Y3 (S6027: Yes). In the case where the determination is false (S6027: No), the process ends.
Затем определяется то, меньше ли разница между опорным блоком и областью, на которую можно ссылаться, в направлении x, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6028). В случае, когда определение является истинным (S6028: Да), опорная позиция будет скорректирована (S6029) в направлении x. Напротив, в случае, когда определение является ложным (S6028: Нет), опорная позиция будет скорректирована (S6030) в направлении y. It is then determined whether the difference between the reference block and the referenced area in the x direction is smaller than the difference between the reference block and the referenced area in the y direction (S6028). In the case where the determination is true (S6028: Yes), the reference position will be corrected (S6029) in the x direction. On the contrary, in the case where the determination is false (S6028: No), the reference position will be corrected (S6030) in the y direction.
На фиг.52B показано схематичное представление, иллюстрирующее состояние коррекции опорной позиции на этапах S6029 и S6030. Теперь blk_idx = 3. При условии, что опорный блок r1 расположен в позиции 6211, blk_idx = 0 не удовлетворяется, и нижний правый участок опорного блока расположен в области больше, чем X4 (направление x 6114) и Y3 (направление y 6113) (S6027: Да). Кроме того, разница между опорным блоком и областью, на которую можно ссылаться, в направлении x меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6028: Да). Таким образом, опорная позиция в направлении x корректируется перед позицией 6212, при условии, что xRefBR = xAvlBR (S6029). В данном документе, так как xRefBR = xRefTL + cbWidth-1 выполняется, как в S6001, то есть выполняется xRefTL = xRefBR- (cbWidth-1), xRefTL также будет скорректирован вместе с коррекцией xRefBR. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [0]. То есть коррекция выполняется следующим образом: Fig. 52B is a schematic diagram illustrating the state of the reference position correction in steps S6029 and S6030. Now, blk_idx = 3. Assuming that the reference block r1 is located at
mvL [0] = (xAvlBR-NR- (xCb + cbWitdh-1)) << 4mvL[0] = (xAvlBR-NR-(xCb + cbWitdh-1)) << 4
Это удовлетворяет xRefBR = xAvlBR, что позволяет скорректировать опорную позицию.This satisfies xRefBR = xAvlBR, which allows the reference position to be corrected.
Напротив, если предположить, что опорный блок r2 расположен в позиции 6213, blk_idx = 0 не удовлетворяется, и нижний правый участок опорного блока, расположенный в области, больше, чем X4 (направление x 6114) и Y3 (направление y 6113) (S6027: Да). Кроме того, разница между опорным блоком и областью, на которую можно ссылаться, в направлении x не меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6028: Нет). Таким образом, опорная позиция в направлении y корректируется перед позицией 6214, при условии, что yRefBR = yAvlBR (S6030). В данном документе, так как yRefBR = yRefTL + cbHeight-1 выполняется, как в S6001, то есть выполняется yRefTL = yRefBR- (cbHeight-1), yRefTL также будет скорректирован вместе с коррекцией yRefBR. При этой коррекции опорной позиции может быть скорректирован блочный вектор mvL [1]. То есть коррекция выполняется следующим образом: On the contrary, assuming that the reference block r2 is located at the
mvL [1] = (yAvlBR-64- (yCb + cbHeight - 1)) << 4mvL[1] = (yAvlBR-64-(yCb + cbHeight - 1)) << 4
Это удовлетворяет yRefBR = yAvlBR, что позволяет скорректировать опорную позицию.This satisfies yRefBR = yAvlBR, which allows the reference position to be corrected.
В данном документе предполагается, что опорный блок r3 расположен в позиции 6215. В этом случае разница между опорным блоком и областью, на которую можно ссылаться, в направлении x не меньше, чем разница между опорным блоком и областью, на которую можно ссылаться, в направлении y (S6028: Нет). Соответственно, опорная позиция в направлении y корректируется аналогично опорному блоку r2, чтобы быть расположенной в позиции 6216 (S6030). В этот момент контрольный блок находится за пределами области, на которую можно ссылаться. Однако опорная позиция в направлении x корректируется процессами S6008 и S6009, описанными ниже. Таким образом, опорный блок расположен внутри области, на которую можно ссылаться. In this document, reference block r3 is assumed to be located at
На фиг.52 процесс коррекции опорной позиции был описан с использованием примерных случаев, когда blk_idx = 0 и blk_idx = 3. В случае, когда blk_idx = 1 или blk_idx = 2, процесс коррекции опорной позиции выполняется аналогично случаям, когда blk_idx = 0 и blk_idx = 3. 52, the reference position correction process has been described using the exemplary cases where blk_idx=0 and blk_idx=3. = 3.
После процесса коррекции опорной позиции непрямоугольной области, на которую можно ссылаться (S6013), выполняются процессы S6004-S6011. Вышеупомянутая процедура завершает процесс для случая, когда размер CTU составляет 128×128 выборок. After the reference position correction process of the non-rectangular area that can be referenced (S6013), processes S6004 to S6011 are executed. The above procedure terminates the process for the case where the CTU size is 128×128 samples.
Теперь предполагается, что в процессе коррекции опорной позиции непрямоугольной части области, на которую можно ссылаться (S6013), процесс коррекции опорной позиции в направлении x выполняется (S6024) в соответствии с верхним левым участком области, на которую можно ссылаться. В этом случае опорная позиция в направлении x опорного блока не станет меньше верхнего левого участка области, на которую можно ссылаться, и, таким образом, определение на этапе S6004 всегда является ложным (S6004: Нет). Таким образом, в случае, когда процесс S6024 был выполнен, процессы S6004 и S6005 могут быть исключены. Аналогичным образом, в случае, когда была выполнена обработка S6025, процессы S6006 и S6007 могут быть исключены. В случае, когда был выполнен процесс S6029, процессы S6008 и S6009 могут быть исключены. В случае, когда процесс S6030 был выполнен, процессы S6010 и S6011 могут быть исключены. Now, it is assumed that in the process of correcting the reference position of the non-rectangular portion of the referenced area (S6013), the process of correcting the reference position in the x direction is performed (S6024) in accordance with the upper left portion of the referenced area. In this case, the reference position in the x direction of the reference block does not become smaller than the upper left portion of the referenced area, and thus the determination in S6004 is always false (S6004: No). Thus, in the case where process S6024 has been executed, processes S6004 and S6005 can be omitted. Similarly, in the case where processing S6025 has been performed, processes S6006 and S6007 can be omitted. In the case where process S6029 has been executed, processes S6008 and S6009 may be omitted. In the case where process S6030 has been executed, processes S6010 and S6011 may be omitted.
Кроме того, можно использовать конфигурацию, представленную в виде алгоритма, показанного на фиг.51, в котором процесс сравнения на этапе S6023 опущен, и этап S6024 выполняется всегда, или всегда выполняется этап S6025. Аналогичным образом, можно использовать конфигурацию, в которой процесс сравнения на этапе S6028 опущен, и этап S6029 выполняется всегда, или всегда выполняется этап S6030. В такой конфигурации опорную позицию можно скорректировать с помощью простого процесса. Also, the configuration shown in the flowchart shown in FIG. 51 in which the comparison process in step S6023 is omitted and step S6024 is always executed, or step S6025 is always performed can be used. Similarly, a configuration in which the comparison process in step S6028 is omitted and step S6029 is always executed, or step S6030 is always performed can be used. In such a configuration, the reference position can be corrected by a simple process.
На фиг.48 опорная позиция корректируется с использованием процессов S6012, S6013 и S6004-S6011 в случае, когда размер CTU составляет 128×128 выборок. Вместо этого, как показано на фиг.53, это также может быть реализовано посредством процесса разделения области, на которую можно ссылаться, на две области и последующей коррекции каждой из опорных позиций (S6101). 48, the reference position is adjusted using processes S6012, S6013, and S6004-S6011 in the case where the CTU size is 128×128 samples. Instead, as shown in FIG. 53, this can also be realized by a process of dividing the referenced area into two areas and then correcting each of the reference positions (S6101).
На фиг.54 показано схематичное представление, иллюстрирующее состояние разделения области, на которую можно ссылаться, на две области. В отличие от прямоугольной области, на которую можно ссылаться и которая показана на фиг.50, опорная область разделена на две на фиг.54. В случае, когда целевой блок (6102) кодирования расположен в верхней левой позиции после разделения на четыре части целевого блока дерева кодирования (6101 ), параметр настройка будет представлять собой: blk_idx = 0. Аналогичным образом, в случае, когда целевые блоки кодирования расположены в верхней правой, нижней левой и нижней правой позициях, blk_idx будет установлен в 1, 2 и 3. На фиг.54A показано схематичное представление, иллюстрирующее случай, когда blk_idx = 0. Аналогичным образом, на фиг.54B-54D показаны схематичные представления, иллюстрирующие случаи, когда blk_idx = 1, blk_idx = 2 и blk_idx = 3, соответственно. Кроме того, одна область, на которую можно ссылаться (6301), определена как область A, на которую можно ссылаться, и другая область (6302), на которую можно ссылаться, определена как область B, на которую можно ссылаться. Fig. 54 is a schematic diagram illustrating a state of dividing an area that can be referred to into two areas. In contrast to the rectangular area that can be referred to and which is shown in Fig.50, the reference area is divided into two in Fig.54. In the case where the coding target block (6102) is located at the upper left position after the division into four parts of the coding tree target block (6101 ), the tuning parameter will be: blk_idx = 0. Similarly, in the case where the coding target blocks are located in top right, bottom left, and bottom right positions, blk_idx will be set to 1, 2, and 3. FIG. 54A is a schematic diagram illustrating the case where blk_idx = 0. Similarly, FIGS. cases where blk_idx = 1, blk_idx = 2 and blk_idx = 3, respectively. In addition, one area that can be referenced (6301) is defined as area A that can be referred to, and another area that can be referred to (6302) is defined as area B that can be referred to.
На фиг.55 показана блок-схема алгоритма, иллюстрирующая процесс (S6101) разделения области на две области, на которые можно ссылаться, и коррекции каждой из опорных позиций областей, на которые можно ссылаться. На фиг.55 тот же процесс, что и на фиг.48, обозначен теми же номерами этапов, и его описание будет опущено. Сначала вычисляются (S6111) верхняя левая и нижняя правая позиции области A, на которую можно ссылаться. Когда верхний левый участок области A, на которую можно ссылаться, определен как (xAvlTL, yAvlTL), и нижний правый участок определен как (xAvlBR, yAvlBR), получаются следующие выражения: 55 is a flowchart illustrating a process (S6101) of dividing an area into two referenced areas and correcting each of the reference positions of the referenced areas. In Fig. 55, the same process as in Fig. 48 is indicated by the same step numbers, and its description will be omitted. First, the top left and bottom right positions of the referenced area A are calculated (S6111). When the upper left portion of the referenced region A is defined as (xAvlTL, yAvlTL) and the lower right portion is defined as (xAvlBR, yAvlBR), the following expressions are obtained:
xOffsetTL [4] = {-128, -128, -64, 0}, yOffsetTL [4] = {64, 64, 64, 0}xOffsetTL[4] = {-128, -128, -64, 0}, yOffsetTL[4] = {64, 64, 64, 0}
xOffsetBR [4] = {0, 0, 0, 128}, yOffsetBR [4] = {128, 128, 128, 64}xOffsetBR[4] = {0, 0, 0, 128}, yOffsetBR[4] = {128, 128, 128, 64}
(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY
+ xOffsetTL [blk_idx],+xOffsetTL[blk_idx],
(yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL [blk_idx])(yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL[blk_idx])
(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1
+ xOffsetBR [blk_idx],+xOffsetBR[blk_idx],
(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR [blk_idx])(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR[blk_idx])
Затем вычисление относительно того, находится ли опорный блок за пределами области A, на которую можно ссылаться, выполняется следующим образом (S6112):Then, a calculation as to whether the reference block is outside the referenced area A is performed as follows (S6112):
out_xRefTL = xRefTL <xAvlTLout_xRefTL = xRefTL<xAvlTL
out_yRefTL = yRefTL <yAvlTLout_yRefTL = yRefTL<yAvlTL
out_xRefBR = xRefBR> xAvlBRout_xRefBR = xRefBR > xAvlBR
out_yRefBR = yRefBR> yAvlBRout_yRefBR = yRefBR > yAvlBR
Затем вычисляются верхняя левая и нижняя правая позиции области B, на которую можно ссылаться, (S6113). Когда верхний левый участок области B, на которую можно ссылаться, определен как (xAvlTL, yAvlTL), и нижний правый участок определен как (xAvlBR, yAvlBR), получаются следующие выражения: Then, the top left and bottom right positions of the referable area B are calculated (S6113). When the upper left portion of the referenced region B is defined as (xAvlTL, yAvlTL) and the lower right portion is defined as (xAvlBR, yAvlBR), the following expressions are obtained:
xOffsetTL [4] = {-64, 0, 0, 0}, yOffsetTL [4] = {0, 0, 0, 0}xOffsetTL[4] = {-64, 0, 0, 0}, yOffsetTL[4] = {0, 0, 0, 0}
xOffsetBR [4] = {0, 64, 128, 64}, yOffsetBR [4] = {128, 64, 64, 128}xOffsetBR[4] = {0, 64, 128, 64}, yOffsetBR[4] = {128, 64, 64, 128}
(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY(xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY
+ xOffsetTL [blk_idx],+xOffsetTL[blk_idx],
(yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL [blk_idx])(yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL[blk_idx])
(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1(xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1
+ xOffsetBR [blk_idx],+xOffsetBR[blk_idx],
(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR [blk_idx])(((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR[blk_idx])
Затем определяется то, меньше ли опорная позиция опорного блока в направлении x, чем верхний левый участок области A, на которую можно ссылаться, и меньше ли опорная позиция опорного блока в направлении x, чем верхняя левая часть область B, на которую можно ссылаться, (S6114). Когда определение является ложным (S6114: Нет), процесс переходит к следующему процессу (S6116). Напротив, когда определение является истинным (S6114: Да), опорная позиция в направлении x будет скорректирована в соответствии с верхним левым участком области B, на которую можно ссылаться (S6005). Так как процесс S6005 уже был описан, его описание опускается. It is then determined whether the reference block reference position in the x direction is smaller than the upper left portion of the referenced region A, and whether the reference block reference position in the x direction is smaller than the upper left portion of the referenced region B, ( S6114). When the determination is false (S6114: No), the process advances to the next process (S6116). On the contrary, when the determination is true (S6114: Yes), the reference position in the x direction will be corrected according to the upper left portion of the area B that can be referred to (S6005). Since the process S6005 has already been described, its description is omitted.
Затем определяется то, меньше ли опорная позиция опорного блока в направлении y, чем верхний левый участок области A, на которую можно ссылаться, и меньше ли опорная позиция опорного блока в направлении y, чем верхний левый участок области B, на которую можно ссылаться (S6116). Когда определение является ложным (S6116: Нет), обработка переходит к следующему этапу (S6118). Напротив, когда определение является истинным (S6116: Да), опорная позиция в направлении y будет скорректирована в соответствии с верхним левым участком области B, на которую можно ссылаться (S6007). Так как процесс S6007 уже был описан, его описание опускается. It is then determined whether the reference position of the reference block in the y direction is smaller than the upper left portion of the referenced region A, and whether the reference position of the reference block in the y direction is smaller than the upper left portion of the referenced region B (S6116 ). When the determination is false (S6116: No), the processing proceeds to the next step (S6118). On the contrary, when the determination is true (S6116: Yes), the reference position in the y direction will be corrected according to the upper left portion of the area B that can be referred to (S6007). Since the process S6007 has already been described, its description is omitted.
Затем определяется то, больше ли опорная позиция в направлении x опорного блока, чем нижний правый участок области A, на которую можно ссылаться, и больше ли опорная позиция опорного блока в направлении x, чем нижний правый участок области B, на которую можно ссылаться (S6118). Когда определение является ложным (S6118: Нет), процесс переходит к следующему процессу (S6120). Напротив, когда определение является истинным (S6118: Да), опорная позиция в направлении x будет скорректирована в соответствии с нижним правым участком области B, на которую можно ссылаться (S6009). Так как процесс S6009 уже был описан, его описание опускается. It is then determined whether the reference position in the x direction of the reference block is larger than the lower right portion of the referenced area A, and whether the reference position of the reference block in the x direction is greater than the lower right portion of the referenced area B (S6118 ). When the determination is false (S6118: No), the process advances to the next process (S6120). On the contrary, when the determination is true (S6118: Yes), the reference position in the x direction will be corrected according to the lower right portion of the area B that can be referred to (S6009). Since the process S6009 has already been described, its description is omitted.
Затем определяется то, больше ли опорная позиция опорного блока в направлении y, чем нижний правый участок области A, на которую можно ссылаться, и больше ли опорная позиция опорного блока в направлении y, чем нижняя правая области B, на которую можно ссылаться (S6120). Когда определение является ложным (S6120: Нет), процесс завершается. Напротив, когда определение является истинным (S6120: Да), опорная позиция в направлении y будет скорректирована в соответствии с нижним правым участком области B, на которую можно ссылаться (S6011). Так как процесс S6011 уже был описан, его описание опускается. It is then determined whether the reference position of the reference block in the y direction is greater than the lower right portion of the referenced area A, and whether the reference position of the reference block in the y direction is greater than the lower right portion of the referenced region B (S6120) . When the determination is false (S6120: No), the process ends. On the contrary, when the determination is true (S6120: Yes), the reference position in the y direction will be corrected according to the lower right portion of the area B that can be referred to (S6011). Since the process S6011 has already been described, its description is omitted.
Как описано выше, даже в случае, когда опорный блок расположен за пределами области, на которую можно ссылаться, когда размер CTU составляет 128×128 выборок, опорная позиция может быть скорректирована и может стать опорной позицией, на которую можно ссылаться. Кроме того, упростить процесс и уменьшить объем вычислений можно путем разделения области, на которую можно ссылаться, на две части и коррекции каждой из опорных позиций. В данном документе одна область (6301), на которую можно ссылаться, определена как область A, на которую можно ссылаться, в то время как другая область (6302), на которую можно ссылаться, определена как область B, на которую можно ссылаться. В качестве альтернативы, область A, на которую можно ссылаться, и область B, на которую можно ссылаться, могут быть заменены, и одна область (6301), на которую можно ссылаться, может обрабатываться как область B, на которую можно ссылаться, в то время как другая опорная область (6302) может обрабатываться как область A, на которую можно ссылаться. As described above, even in the case where the reference block is located outside the area that can be referred to, when the CTU size is 128×128 samples, the reference position can be adjusted and can become a reference position that can be referred to. In addition, you can simplify the process and reduce the amount of calculations by dividing the area that can be referenced into two parts and correcting each of the reference positions. In this document, one area (6301) that can be referred to is defined as area A that can be referred to, while the other area (6302) that can be referred to is defined as area B that can be referred to. Alternatively, the referenced area A and the referenced area B may be replaced, and one referenced area (6301) may be treated as the referenced area B, while while the other reference area (6302) can be treated as an A area that can be referred to.
В данном примере определяется то, равен ли размер CTU 128×128 выборок (S6002), и процесс переключается соответствующим образом. Это определение может быть заменено определением того, предоставляется ли стандартный блок внутриблочного копирования в единице, полученной путем разделения на четыре части блока дерева кодирования, или определением того, превышает ли размер CTU максимальный размер блока кодирования. In this example, it is determined whether the CTU size is 128×128 samples (S6002) and the process switches accordingly. This determination may be replaced by determining whether an intrablock copy standard unit is provided in a unit obtained by quadrupling a coding tree block, or determining whether the CTU size exceeds the maximum coding unit size.
Блок коррекции границы опорной областиReference area border correction block
На фиг.58 показана блок-схема алгоритма, иллюстрирующая процесс, выполняемый блоком 381 коррекции границы опорной области и блоком 481 коррекции границы опорной области.FIG. 58 is a flowchart illustrating the process performed by the reference area
Сначала определяется верхняя левая позиции опорного блока (этап S1401) следующим образом:First, the upper left position of the reference block is determined (step S1401) as follows:
(xRefTL, yRefTL) = (xCb + (mvL [0] >> 4), yCb + (mvL [1] >> 4))(xRefTL, yRefTL) = (xCb + (mvL[0] >> 4), yCb + (mvL[1] >> 4))
(xRefBR, yRefBR) = (xRefTL + cbWidth - 1, yRefTL + cbHeight - 1)(xRefBR, yRefBR) = (xRefTL + cbWidth - 1, yRefTL + cbHeight - 1)
Так как эта процедура аналогична этапу S6001 на фиг.48, ее описание опускается.Since this procedure is the same as step S6001 in Fig. 48, its description will be omitted.
Затем вычисляются верхняя левая и нижняя правая позиции областей A, B и C, на которые можно ссылаться (этапы S1402-S1403). Здесь предполагается, что область A, на которую можно ссылаться, представляет собой стандартный блок внутриблочного копирования, обрабатываемый непосредственно перед целевым стандартным блоком внутриблочного копирования, область B, на которую можно ссылаться, представляет собой стандартный блок внутриблочного копирования, обрабатываемый непосредственно перед областью A, на которую можно ссылаться, и область C, на которую можно ссылаться, представляет собой стандартный блок внутриблочного копирования, обработанный непосредственно перед областью B, на которую можно ссылаться. На фиг.56 показан пример, в котором единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования. В примере, показанном на фиг.56A, блок 503 дерева кодирования является целевым блоком дерева кодирования. На данном этапе блок 502 дерева кодирования соответствует области A, на которую можно ссылаться, блок 501 дерева кодирования соответствует области B, на которую можно ссылаться, и блок 500 дерева кодирования соответствует области C, на которую можно ссылаться. На фиг.57 показан пример использования единицы, полученной путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования. В примере, показанном на фиг.57A, блок 504 дерева кодирования является целевым стандартным блоком внутриблочного копирования. На данном этапе блок 503 дерева кодирования соответствует области A, на которую можно ссылаться, блок 502 дерева кодирования соответствует области B, на которую можно ссылаться, и блок 501 дерева кодирования соответствует области C, на которую можно ссылаться. Then, the top left and bottom right positions of the regions A, B, and C that can be referred to are calculated (steps S1402 to S1403). Here it is assumed that the region A that can be referenced is an in-block copy building block processed immediately before the target in-block copy building block, the region B that can be referenced is an intra-block copy building block processed immediately before region A, on that can be referenced and the region C that can be referred to is the block copy building block processed immediately before the region B that can be referenced. FIG. 56 shows an example in which a coding tree block unit is used as an intra-block copy standard block. In the example shown in FIG. 56A,
Верхние левые позиции областей A, B и C, на которые можно ссылаться, установлены на (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL) и (xAvlCTL, yAvlCTL), соответственно. Кроме того, нижние правые позиции областей A, B и C, на которые можно ссылаться, установлены на (xAvlABR, yAvlABR), (xAvlBBR, yAvlBBR) и (xAvlCBR, yAvlCBR), соответственно. Когда единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования, каждый из (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL), (xAvlCTL, yAvlCTL), (xAvlABR, yAvlABR), (xAvlBR), (xAvlBR), (xAvlBR), (xAvlBR), yAvlCBR) устанавливаются следующим образом: The top left positions of regions A, B, and C that can be referenced are set to (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL), and (xAvlCTL, yAvlCTL), respectively. In addition, the bottom right positions of regions A, B, and C that can be referenced are set to (xAvlABR, yAvlABR), (xAvlBBR, yAvlBBR), and (xAvlCBR, yAvlCBR), respectively. When the coding tree block unit is used as the standard intrablock copy block, each of (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL), (xAvlCTL, yAvlCTL), (xAvlABR, yAvlABR), (xAvlBR), (xAvlBR), (xAvlBR) , (xAvlBR), yAvlCBR) are set as follows:
(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - (1 << CtbLog2SizeY),(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - (1 << CtbLog2SizeY),
(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))
(xAvlABR, yAvlABR) = (xAvlATL + cbWidth - 1, yAvlATL + cbHeight - 1)(xAvlABR, yAvlABR) = (xAvlATL + cbWidth - 1, yAvlATL + cbHeight - 1)
(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - 2 * (1 << CtbLog2SizeY)),(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - 2 * (1 << CtbLog2SizeY)),
(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))
(xAvlBBR, yAvlBBR) = (xAvlBTL + cbWidth -1, yAvlBTL + cbHeight - 1)(xAvlBBR, yAvlBBR) = (xAvlBTL + cbWidth -1, yAvlBTL + cbHeight - 1)
(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - 3 * (1 << CtbLog2SizeY),(xAvlATL, yAvlATL) = ((xCb >> CtbLog2SizeY) << (CtbLog2SizeY) - 3 * (1 << CtbLog2SizeY),
(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))(yCb >> CtbLog2SizeY) << (CtbLog2SizeY))
(xAvlCBR, yAvlCBR) = (xAvlCTL + cbWidth -1, yAvlCTL + cbHeight - 1)(xAvlCBR, yAvlCBR) = (xAvlCTL + cbWidth -1, yAvlCTL + cbHeight - 1)
Когда единица, полученная путем разделения на четыре части блока дерева кодирования, используется в качестве стандартного блока внутриблочного копирования, каждый из параметров (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL), (xAvlCTL, yAvlCTL) устанавливается следующим образом:When a unit obtained by dividing the coding tree block into four parts is used as an intrablock copy standard block, each of the parameters (xAvlATL, yAvlATL), (xAvlBTL, yAvlBTL), (xAvlCTL, yAvlCTL) is set as follows:
(xAvlATL, yAvlATL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY-1)),(xAvlATL, yAvlATL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY-1)),
(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))
(xAvlABR, yAvlABR) = (xAvlATL + cbWidth - 1, yAvlATL + cbHeight - 1)(xAvlABR, yAvlABR) = (xAvlATL + cbWidth - 1, yAvlATL + cbHeight - 1)
(xAvlBTL, yAvlBTL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY)),(xAvlBTL, yAvlBTL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY)),
(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))
(xAvlBBR, yAvlBBR) = (xAvlBTL + cbWidth -1, yAvlBTL + cbHeight - 1)(xAvlBBR, yAvlBBR) = (xAvlBTL + cbWidth -1, yAvlBTL + cbHeight - 1)
(xAvlCTL, yAvlCTL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY-1)),(xAvlCTL, yAvlCTL) = ((xCb >> (CtbLog2SizeY-1)) << (CtbLog2SizeY-1) - (1 << (CtbLog2SizeY-1)),
(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))(yCb >> (CtbLog2SizeY-1)) << ((CtbLog2SizeY-1)) + (1 << (CtbLog2SizeY-1)))
(xAvlCBR, yAvlCBR) = (xAvlCTL + cbWidth -1, yAvlCTL + cbHeight - 1)(xAvlCBR, yAvlCBR) = (xAvlCTL + cbWidth -1, yAvlCTL + cbHeight - 1)
Затем определяется область, на которую можно ссылаться, включающая в себя верхнюю левую позицию опорного блока (Этап S1405). В частности, верхняя левая и нижняя правая позиции областей A, B, C, на которые можно ссылаться, сравниваются с верхней левой позицией опорного блока, и затем область, на которую можно ссылаться, включающая в себя верхнюю левую позицию опорного блока, определяется как опорная область, включающая в себя опорный блок. Then, an area that can be referred to including the upper left position of the reference block is determined (Step S1405). Specifically, the top left and bottom right positions of the referenced areas A, B, C are compared with the top left position of the reference block, and then the referenced area including the top left position of the reference block is determined to be the reference the area including the reference block.
Затем определяется то, включает ли опорная область, включающая в себя верхнюю левую позицию опорного блока, нижнюю правую позицию опорного блока (этап S1406). В случае, когда опорная область, включающая в себя верхнюю левую позицию опорного блока, включает в себя нижнюю правую позицию опорного блока, алгоритм, показанный на фиг.58, заканчивается. It is then determined whether the reference area including the upper left position of the reference block includes the lower right position of the reference block (step S1406). In the case where the reference area including the upper left position of the reference block includes the lower right position of the reference block, the algorithm shown in FIG. 58 ends.
В случае, когда область, на которую можно ссылаться, включающая в себя верхнюю левую позицию опорного блока, не включает в себя нижнюю правую позицию опорного блока, опорный блок корректируется (этап S1407). Коррекция опорного блока будет описана со ссылкой на фиг.59. На фиг.59 показан пример, в котором единица блока дерева кодирования используется в качестве стандартного блока внутриблочного копирования. На фиг.59A показан случай, когда блочный вектор 507 установлен для целевого блока 505 кодирования. Область B (503), на которую можно ссылаться, включает в себя верхнюю левую позицию опорного блока и не включает в себя нижнюю правую позицию опорного блока. На данном этапе, как показано на фиг.59B, опорный блок 508 разделен на разделенный опорный блок 509 и разделенный опорный блок 510 в пространстве памяти. Разделенный опорный блок 509 представляет собой область, включенную в область B (503), на которую можно ссылаться, которая является областью, на которую можно ссылаться, включающей верхний левый участок опорного блока, в то время как разделенный опорный блок 510 является опорным блоком, включенным в опорную область, отличную от области B (503), на которую можно ссылаться. В данном примере при построении опорного изображения опорного блока 510 для каждой из области, соответствующей разделенному опорному блоку 509, и области, соответствующей разделенному опорному блоку 510, выполняется другой процесс. В частности, что касается области, соответствующей разделенному опорному блоку 509, опорное изображение создается на основе позиции, указанной блочным вектором. Напротив, что касается области, соответствующей разделенному опорному блоку 510, опорное изображение создается путем установки заданного значения без ссылки на пространство 600 памяти. В данном документе заданное значение будет равно MaxPixelValue/2, когда максимальное значение выборки равно MaxPixelValue. Однако, что касается области, соответствующей разделенному опорному блоку 510, можно принять конфигурацию, в которой опорное изображение строится из области 603 памяти, включающей в себя разделенный опорный блок 509, вместо заданного значения. Например, опорное изображение может быть построено путем выполнения копирования в горизонтальном направлении крайней правой выборки разделенного опорного блока 509. In a case where the referenced area including the upper left position of the reference block does not include the lower right position of the reference block, the reference block is corrected (step S1407). Reference block correction will be described with reference to FIG. FIG. 59 shows an example in which a coding tree block unit is used as an intra-block copy standard block. FIG. 59A shows the case where the
На фиг.60 показан пример использования единицы, полученной путем разделения на четыре части блока дерева кодирования, в качестве стандартного блока внутриблочного копирования. На фиг.60A показан случай, когда блочный вектор 508 установлен для целевого блока 509 кодирования. Область C (501), на которую можно ссылаться, включает в себя верхнюю левую позицию опорного блока и не включает в себя нижнюю правую позицию опорного блока. На данном этапе, как показано на фиг.60B, опорный блок 510 разделен на разделенный опорный блок 511 и разделенный опорный блок 512 в пространстве памяти. Разделенный опорный блок 511 представляет собой область, включенную в область C (501), на которую можно ссылаться, которая является опорной областью, включающей в себя верхний левый участок опорного блока, в то время как разделенный опорный блок 512 является опорным блоком, включенным в опорную область, отличную от области C (501), на которую можно ссылаться. В данном примере при построении опорного изображения опорного блока 510 для каждой из области, соответствующей разделенному опорному блоку 511, и области, соответствующей разделенному опорному блоку 512, выполняется другой процесс. В частности, что касается области, соответствующей для разделенного опорного блока 511 опорное изображение создается на основе позиции, указанной блочным вектором. Напротив, для области, соответствующей разделенному опорному блоку 511, опорное изображение создается путем установки заданного значения без ссылки на пространство 602 памяти. В данном документе заданное значение будет равно MaxPixelValue/2, когда максимальное значение выборки равно MaxPixelValue. Однако, что касается области, соответствующей разделенному опорному блоку 512, допустимо использовать конфигурацию, в которой опорное изображение строится из области 601 памяти, включающей в себя опорный блок 511 разделения, вместо заданного значения. Например, опорное изображение может быть построено путем выполнения копирования в вертикальном направлении выборки, расположенной внизу разделенного опорного блока 511. FIG. 60 shows an example of using a unit obtained by quartering a coding tree block as an intra-block copy standard block. On figa shows the case when the
Используя эту конфигурацию, при определении опорного блока внутриблочного копирования можно избежать доступа к разделенному пространству памяти множество раз в случае, когда опорное изображение разделяется и размещается в пространстве памяти. Это позволяет сократить объем обработки при построении опорного блока внутриблочного копирования. By using this configuration, when determining the intra-block copy reference block, access to the divided memory space multiple times in the case where the reference image is divided and allocated to the memory space can be avoided. This allows you to reduce the amount of processing when building an intrablock copy reference block.
Во всех вариантах осуществления, описанных выше, многочисленные технологии могут быть объединены друг с другом.In all of the embodiments described above, multiple technologies may be combined with each other.
Во всех вариантах осуществления, описанных выше, битовый поток, выводимый из устройства для кодирования изображений, имеет определенный формат данных, чтобы быть декодированным в соответствии со способом кодирования, используемым в варианте осуществления. Битовый поток может быть записан и предоставлен на машиночитаемом носителе записи, таком как HDD, SSD, флэш-память, оптический диск и т.п., или битовый поток может быть предоставлен с сервера через проводную или беспроводную сеть. Таким образом, независимо от того, как предоставляется битовый поток, устройство для декодирования изображений, соответствующее устройству для кодирования изображений, выполнено с возможностью декодировать битовый поток конкретного формата данных.In all the embodiments described above, the bitstream output from the image encoding device has a specific data format to be decoded according to the encoding method used in the embodiment. The bitstream may be recorded and provided on a computer-readable recording medium such as an HDD, SSD, flash memory, optical disc, or the like, or the bitstream may be provided from a server via a wired or wireless network. Thus, no matter how the bitstream is provided, the image decoding apparatus corresponding to the image encoding apparatus is configured to decode the bitstream of a specific data format.
В случае, когда для обмена битовым потоком между устройством для кодирования изображения и устройством для декодирования изображения используется проводная или беспроводная сеть, битовый поток может быть преобразован в формат данных, подходящий для формы передачи канала связи при передаче. В этом случае предоставляется устройство передачи, которое преобразует выходной битовый поток из устройства для кодирования изображений в кодированные данные в формате данных, подходящем для формы передачи канала связи, и передает кодированные данные в сеть, и устройство приема, которое принимает кодированные данные из сети, которые необходимо восстановить в битовый поток, и подает битовый поток в устройство для декодирования изображений. Устройство передачи включает в себя память, которая буферизует битовый поток, выводимый из устройства для кодирования изображений, блок обработки пакетов, который пакетирует битовый поток, и передатчик, который передает пакетированные кодированные данные через сеть. Устройство приема включает в себя приемник, который принимает пакетированные кодированные данные через сеть, память, которая буферизует принятые кодированные данные, и блок обработки пакетов, который распаковывает кодированные данные для формирования битового потока и передает сформированный битовый поток в устройство для декодирования изображений.In the case where a wired or wireless network is used to exchange the bit stream between the image encoding apparatus and the image decoding apparatus, the bit stream can be converted to a data format suitable for a transmission form of a communication channel in transmission. In this case, a transmission device is provided that converts an output bitstream from an image encoding device into coded data in a data format suitable for a transmission form of a communication channel, and transmits the coded data to the network, and a reception device that receives the coded data from the network, which needs to be restored to a bitstream, and supplies the bitstream to an image decoding device. The transmission apparatus includes a memory that buffers a bitstream output from the image encoding apparatus, a packet processing unit that packetizes the bitstream, and a transmitter that transmits the packetized encoded data via a network. The receiving device includes a receiver that receives packetized coded data via a network, a memory that buffers the received coded data, and a packet processing unit that decompresses the coded data to form a bitstream and transmits the generated bitstream to an image decoding device.
В случае, когда проводная или беспроводная сеть используется для обмена битовым потоком между устройством для кодирования изображений и устройством для декодирования изображений, в дополнение к передающему устройству и приемному устройству может быть предусмотрено ретрансляционное устройство, которое принимает кодированные данные, переданные передающим устройством, и подает кодированные данные в приемное устройство. Ретрансляционное устройство включает в себя приемник, который принимает пакетированные кодированные данные, переданные передающим устройством, память, которая буферизует принятые кодированные данные, и передатчик, который передает пакетированные кодированные данные в сеть. Ретрансляционное устройство может дополнительно включать в себя блок обработки принимаемых пакетов, который пакетирует пакетированные кодированные данные для создания битового потока, носитель записи, который хранит битовый поток, и блок обработки переданных пакетов, который пакетирует битовый поток.In the case where a wired or wireless network is used to exchange the bit stream between the image encoding apparatus and the image decoding apparatus, a relay apparatus may be provided in addition to the transmitter apparatus and the receiver apparatus, which receives the encoded data transmitted by the transmitter and supplies the encoded data to the receiving device. The relay apparatus includes a receiver that receives packetized coded data transmitted by a transmitter, a memory that buffers the received coded data, and a transmitter that transmits the packetized coded data to a network. The relay apparatus may further include a received packet processing unit that packetizes the packetized encoded data to create a bitstream, a recording medium that stores the bitstream, and a transmitted packet processing unit that packetizes the bitstream.
Более того, в качестве устройства отображения в конфигурацию может быть добавлен блок отображения, который отображает изображение, декодированное устройством для декодирования изображения. В этом случае блок отображения считывает сигнал декодированного изображения, сгенерированный блоком 207 наложения сигналов декодированного изображения и сохраненный в памяти 208 декодированного изображения, и отображает сигнал на экране.Moreover, as a display device, a display unit that displays an image decoded by the image decoding apparatus can be added to the configuration. In this case, the display unit reads the decoded image signal generated by the decoded image
Более того, в конфигурацию может быть добавлен блок формирования изображения, что позволит функционировать в качестве устройства формирования изображения, путем ввода захваченного изображения в устройство для кодирования изображения. В этом случае блок формирования изображения вводит сигнал захваченного изображения в блок 101 разделения блоков.Moreover, an imager can be added to the configuration to function as an imager by inputting the captured image into the image encoder. In this case, the imaging section inputs the captured image signal to the
На фиг.37 показан пример конфигурации аппаратных средств устройства для кодирования-декодирования согласно настоящему варианту осуществления. Устройство для кодирования-декодирования включает в себя конфигурации устройства для кодирования изображений и устройства для декодирования изображений согласно вариантам осуществления настоящего изобретения. Устройство 9000 для кодирования-декодирования включает в себя CPU 9001, кодек IC 9002, интерфейс 9003 ввода/вывода, память 9004, привод 9005 оптических дисков, сетевой интерфейс 9006 и видеоинтерфейс 9009, в которых отдельные блоки соединены посредством шины 9010.FIG. 37 shows an example of a hardware configuration of an encoding/decoding apparatus according to the present embodiment. The encoding/decoding apparatus includes configurations of an image encoding apparatus and an image decoding apparatus according to embodiments of the present invention. The encoder/
Кодер 9007 изображения и декодер 9008 изображения, как правило, реализуются как IC 9002 кодека. Процесс кодирования изображения устройства для кодирования изображения согласно вариантам осуществления настоящего изобретения выполняется кодером 9007 изображения. Процесс декодирования изображения в устройстве для декодирования изображения согласно варианту осуществления настоящего изобретения выполняется декодером 9008 изображения. Интерфейс 9003 ввода/вывода реализован, например, посредством интерфейса USB, и подключается к внешней клавиатуре 9104, мыши 9105 или подобному. CPU 9001 управляет устройством 9000 для кодирования-декодирования на основе ввода операции пользователя через интерфейс 9003 ввода/вывода для выполнения операции пользователя. Операции пользователя на клавиатуре 9104, мыши 9105 и т.п. включают в себя выбор выполняемой функции кодирования или декодирования, установка качества кодирования, назначение ввода/вывода битового потока, назначение ввода/вывода изображения или подобное, аналогичное, похожее.
В случае, когда пользователю требуется операция воспроизведения изображения, записанного на дисковом носителе 9100 записи, привод 9005 оптического диска считывает битовый поток со вставленного носителя 9100 записи диска и передает считанный битовый поток в декодер 9008 изображения кодека IC 9002 через шину 9010. Декодер 9008 изображения выполняет процесс декодирования изображения в устройстве для декодирования изображения согласно вариантам осуществления настоящего изобретения на входном битовом потоке и передает декодированное изображение на внешний монитор 9103 через видео интерфейс 9009. Устройство 9000 для кодирования-декодирования имеет сетевой интерфейс 9006 и может быть подключено к внешнему серверу 9106 распределения и мобильному оконечному устройству 9107 через сеть 9101. В случае, когда пользователь желает воспроизвести изображение, записанное при распределении, сервер 9106 или мобильное оконечное устройство 9107 вместо изображения, записанного на дисковом носителе 9100 записи, сетевой интерфейс 9006 получает битовый поток из сети 9101 вместо считывания битового потока с входного дискового носителя записи 9100. В случае, когда пользователь желает воспроизвести изображение, записанное в памяти 9004, обработка декодирования изображения выполняется устройством для декодирования изображения битового потока, записанного в памяти 9004 согласно вариантам осуществления в настоящем изобретении.In the case where the user requires an operation to reproduce an image recorded on the
В случае, когда пользователь желает выполнить операцию кодирования изображения, захваченного внешней камерой 9102, и записи изображения в память 9004, видеоинтерфейс 9009 вводит изображение с камеры 9102 и передает изображение в кодер 9007 изображения кодека 9002 через шину 9010. Кодер 9007 изображения выполняет процесс кодирования изображения устройством для кодирования изображения согласно варианту осуществления настоящего изобретения на входе изображения через видеоинтерфейс 9009 и, тем самым, формирует битовый поток. Затем битовый поток передается в память 9004 через шину 9010. В случае, когда пользователь желает записать битовый поток на дисковый носитель 9100 записи вместо памяти 9004, дисковод 9005 оптического диска записывает битовый поток на вставленный диск носителя 9100.In the case where the user wishes to perform the operation of encoding an image captured by the
Также возможно реализовать конфигурацию оборудования, имеющую устройство для кодирования изображения и не имеющую устройства для декодирования изображения, или конфигурацию оборудования, имеющую устройство для декодирования изображения и не имеющую устройства для кодирования изображения. Такая конфигурация оборудования реализуется путем замены IC 9002 кодека кодером 9007 изображения или декодером 9008 изображения.It is also possible to realize an equipment configuration having an image encoding device and no image decoding device, or an equipment configuration having an image decoding device and no image encoding device. This hardware configuration is implemented by replacing the codec IC 9002 with an
Вышеописанный процесс, относящийся к кодированию и декодированию, естественно, может быть реализован как устройство передачи, хранения и приема с использованием оборудования, и, в качестве альтернативы, процесс может быть реализован с помощью встроенного программного обеспечения, хранимого в постоянном запоминающем устройстве (ROM), флэш-памяти или тому подобное, или с помощью программного обеспечения, предоставленного для компьютера или подобного. Программа микропрограмм и программное обеспечение могут быть предоставлены путем записи на носителе записи, читаемом компьютером и т.п., могут предоставляться с сервера через проводную или беспроводную сеть, или могут предоставляться посредством широковещательной передачи данных наземным или спутниковым цифровым способом. The above-described process relating to encoding and decoding can naturally be implemented as a transmission, storage, and reception device using hardware, and alternatively, the process can be implemented using firmware stored in read-only memory (ROM) flash memory or the like, or using software provided for a computer or the like. The firmware program and the software may be provided by being recorded on a computer-readable recording medium or the like, may be provided from a server via a wired or wireless network, or may be provided by a digital terrestrial or satellite broadcast.
Настоящее изобретение было описано со ссылкой на настоящие варианты осуществления. Вышеописанный вариант осуществления был описан только для иллюстративных целей. Скорее, специалисты в данной области техники могут легко понять, что различные примеры модификаций могут быть сделаны путем формирования различных комбинаций вышеописанных компонентов или процессов, которые также входят в технический объем настоящего изобретения.The present invention has been described with reference to the present embodiments. The above described embodiment has been described for illustrative purposes only. Rather, those skilled in the art can readily appreciate that various examples of modifications can be made by forming various combinations of the components or processes described above, which are also within the technical scope of the present invention.
Настоящее изобретение может использоваться для способов кодирования и декодирования изображений, которые разделяют изображение на блоки для выполнения предсказания.The present invention can be used for image encoding and decoding methods that divide an image into blocks to perform prediction.
100 – Устройство кодирования изображений100 - Image encoding device
101 – Блок разделения блока101 - Block division block
102 – Блок межкадрового предсказания102 - Block interframe prediction
103 – Блок внутрикадрового предсказания103 - Intra prediction block
104 – Память декодированных изображений104 - Decoded picture memory
105 – Определитель способа предсказания105 - Determinant of the method of prediction
106 – Блок выработки остатка106 - Residue generation unit
107 – Ортогональный преобразователь/квантователь107 - Orthogonal Converter/Quantizer
108 – Блок кодирования битовых строк108 - Bit string encoding block
109 – Обратный квантователь/обратный ортогональный преобразователь109 - Inverse quantizer/inverse orthogonal converter
110 – Блок наложения сигнала декодированного изображения 110 - Decoded image signal overlay block
111 – Память для хранения информации кодирования111 - Memory for storing encoding information
200 – Устройство для декодирования изображений200 - Image decoding device
201 – Блок декодирования битовых строк201 - Bit string decoding block
202 – Блок разделения блока202 - Block division block
203 – Блок межкадрового предсказания203 - Block interframe prediction
204 – Блок внутрикадрового предсказания204 - Intra prediction block
205 – Память для хранения информации кодирования205 - Memory for storing encoding information
206 – Обратный квантователь/обратный ортогональный преобразователь206 - Inverse quantizer/inverse orthogonal converter
207 – Блок наложения сигнала декодированного изображения 207 - Decoded image signal overlay block
208 – Память декодированных изображений.208 - Decoded picture memory.
Claims (34)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-117516 | 2019-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2781517C1 true RU2781517C1 (en) | 2022-10-13 |
Family
ID=
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013128010A9 (en) * | 2012-03-02 | 2014-07-03 | Canon Kabushiki Kaisha | Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream |
RU2547239C2 (en) * | 2010-12-22 | 2015-04-10 | Квэлкомм Инкорпорейтед | Mode-dependent scanning of video data block coefficients |
WO2015106121A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
US20170094271A1 (en) * | 2014-07-07 | 2017-03-30 | Hfi Innovation Inc. | Method of Intra Block Copy Search and Compensation Range |
RU2654129C2 (en) * | 2013-10-14 | 2018-05-16 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Features of intra block copy prediction mode for video and image coding and decoding |
US10027981B2 (en) * | 2014-09-01 | 2018-07-17 | Hfi Innovation Inc. | Method of intra picture block copy for screen content and video coding |
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2547239C2 (en) * | 2010-12-22 | 2015-04-10 | Квэлкомм Инкорпорейтед | Mode-dependent scanning of video data block coefficients |
WO2013128010A9 (en) * | 2012-03-02 | 2014-07-03 | Canon Kabushiki Kaisha | Method and devices for encoding a sequence of images into a scalable video bit-stream, and decoding a corresponding scalable video bit-stream |
RU2654129C2 (en) * | 2013-10-14 | 2018-05-16 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Features of intra block copy prediction mode for video and image coding and decoding |
WO2015106121A1 (en) * | 2014-01-10 | 2015-07-16 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
US20170094271A1 (en) * | 2014-07-07 | 2017-03-30 | Hfi Innovation Inc. | Method of Intra Block Copy Search and Compensation Range |
US10027981B2 (en) * | 2014-09-01 | 2018-07-17 | Hfi Innovation Inc. | Method of intra picture block copy for screen content and video coding |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7287433B2 (en) | Video encoding device, video encoding method, video encoding program, video decoding device, video decoding method, and video decoding program | |
JP7375890B2 (en) | Video encoding device, video encoding method, video encoding program, video decoding device, video decoding method, and video decoding program | |
CN112929674B (en) | Image encoding device and method, image decoding device and method | |
CN113287314A (en) | Moving picture decoding device, moving picture decoding method, moving picture decoding program, moving picture encoding device, moving picture encoding method, and moving picture encoding program | |
JP7063416B2 (en) | Moving image coding device, moving image coding method, and moving image coding program, moving image decoding device, moving image decoding method and moving image decoding program | |
CN112954361B (en) | Image encoding/decoding device, image encoding/decoding method | |
CN112470476A (en) | Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method, and image decoding program | |
RU2767973C1 (en) | Video encoding device, video encoding method, video decoding device and video decoding method | |
RU2781517C1 (en) | Dynamic image encoding device, dynamic image encoding method, dynamic image encoding program, dynamic image decoding device, dynamic image decoding method and dynamic image decoding program | |
RU2779635C1 (en) | Video encoding device, video encoding method, video encoding program, video decoding device, video decoding method and video decoding program | |
CN113068038B (en) | Moving image decoding device, moving image decoding method, and moving image decoding program | |
RU2783841C2 (en) | Video encoding device, video encoding method, video decoding device and video decoding method | |
RU2774908C1 (en) | Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method and image decoding program | |
RU2775838C1 (en) | Video encoding device, video encoding method, video encoding program, video decoding device, video decoding method and video decoding program | |
JP7354610B2 (en) | Image encoding device, image encoding method, and image encoding program | |
JP7338262B2 (en) | Image encoding device, image encoding method and image encoding program |