BR122025007928A2 - VIDEO DECODING METHOD AND VIDEO CODING METHOD - Google Patents
VIDEO DECODING METHOD AND VIDEO CODING METHODInfo
- Publication number
- BR122025007928A2 BR122025007928A2 BR122025007928-6A BR122025007928A BR122025007928A2 BR 122025007928 A2 BR122025007928 A2 BR 122025007928A2 BR 122025007928 A BR122025007928 A BR 122025007928A BR 122025007928 A2 BR122025007928 A2 BR 122025007928A2
- Authority
- BR
- Brazil
- Prior art keywords
- block
- prediction
- current block
- mode
- merge candidate
- Prior art date
Links
Abstract
Trata-se de um método de decodificação de imagem de acordo com a presente invenção que pode compreender as etapas de: determinar se um modo de previsão combinado é aplicado a um bloco atual; quando o modo de previsão combinado é aplicado ao bloco atual, obter primeiro e segundo blocos de previsão em relação ao bloco atual; e, com base em um cálculo de uma soma ponderada do primeiro e segundo blocos de previsão, obter um terceiro bloco de previsão em relação ao bloco atual.An image decoding method according to the present invention may comprise the steps of: determining whether a combined prediction mode is applied to a current block; when the combined prediction mode is applied to the current block, obtaining first and second prediction blocks relative to the current block; and, based on a calculation of a weighted sum of the first and second prediction blocks, obtaining a third prediction block relative to the current block.
Description
[001] A presente invenção refere-se a um método de codificação e decodificação de sinal de vídeo e um aparelho para o mesmo.[001] The present invention relates to a method of encoding and decoding video signal and an apparatus for the same.
[002] À medida que os painéis de exibição ficam cada vez maiores, os serviços de vídeo de qualidade ainda mais alta se tornam cada vez mais necessários. O maior problema dos serviços de vídeo de alta definição é o aumento significativo do volume de dados e, para resolver esse problema, estudos para melhorar a taxa de compressão de vídeo são realizados ativamente. Como um exemplo representativo, o Grupo de Especialistas em Cinema (MPEG) e o Grupo de Especialistas em Codificação de Vídeo (VCEG) sob a União Internacional de Telecomunicações-Telecomunicações (ITU-T) formou a Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) em 2009. A JCT-VC propôs a Codificação de Vídeo de Alta Eficiência (HEVC), que é um padrão de compressão de vídeo com um desempenho de compressão cerca de duas vezes maior do que o desempenho de compressão de H.264/AVC, aprovado como padrão em 25 de janeiro de 2013. Com o rápido avanço nos serviços de vídeo de alta definição, o desempenho da HEVC gradualmente revela suas limitações.[002] As display panels become increasingly larger, even higher-quality video services become increasingly necessary. The biggest challenge facing high-definition video services is the significant increase in data volume, and to address this issue, research is underway to improve video compression. As a representative example, the Motion Picture Experts Group (MPEG) and the Video Coding Experts Group (VCEG) under the International Telecommunication Union-Telecommunications (ITU-T) formed the Joint Collaboration Team on Video Coding (JCT-VC) in 2009. JCT-VC proposed High Efficiency Video Coding (HEVC), which is a video compression standard with a compression performance about twice that of H.264/AVC, and was approved as a standard on January 25, 2013. With the rapid advancement of high-definition video services, the performance of HEVC gradually reveals its limitations.
[003] Um objetivo da presente invenção é fornecer um método de previsão combinado que combina uma pluralidade de métodos de previsão na codificação/decodificação de um sinal de vídeo, e um aparelho para realizar o método.[003] An object of the present invention is to provide a combined prediction method that combines a plurality of prediction methods in encoding/decoding a video signal, and an apparatus for performing the method.
[004] Um objetivo da presente invenção é fornecer um método de particionamento de um bloco de codificação em uma pluralidade de unidades de previsão na codificação/decodificação de um sinal de vídeo, e um aparelho para realizar o método.[004] An object of the present invention is to provide a method of partitioning a coding block into a plurality of prediction units in encoding/decoding a video signal, and an apparatus for performing the method.
[005] Os problemas técnicos a serem alcançados na presente invenção não estão limitados aos problemas técnicos mencionados acima, e outros problemas não mencionados podem ser claramente compreendidos por aquelas pessoas versadas na técnica a partir da descrição a seguir.[005] The technical problems to be achieved in the present invention are not limited to the technical problems mentioned above, and other problems not mentioned can be clearly understood by those skilled in the art from the following description.
[006] Um método de decodificação/codificação de um sinal de vídeo de acordo com a presente invenção inclui as etapas de: determinar se deve ou não aplicar um modo de previsão combinado a um bloco atual; obter um primeiro bloco de previsão e um segundo bloco de previsão para o bloco atual quando o modo de previsão combinado é aplicado ao bloco atual; e obter um terceiro bloco de previsão para o bloco atual com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. Neste ponto, o primeiro bloco de previsão pode ser obtido com base nas informações de movimento de um candidato a mesclagem do bloco atual, e o segundo bloco de previsão pode ser obtido com base em um modo de intraprevisão do bloco atual.[006] A method of decoding/encoding a video signal according to the present invention includes the steps of: determining whether or not to apply a combined prediction mode to a current block; obtaining a first prediction block and a second prediction block for the current block when the combined prediction mode is applied to the current block; and obtaining a third prediction block for the current block based on a weighted sum operation of the first prediction block and the second prediction block. At this point, the first prediction block may be obtained based on the motion information of a merge candidate of the current block, and the second prediction block may be obtained based on an intra-prediction mode of the current block.
[007] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, pode-se configurar que a aplicação de particionamento triangular ao bloco atual não seja permitida quando o modo de previsão combinado é aplicado ao bloco atual.[007] In the video signal encoding and decoding method according to the present invention, it can be configured that applying triangular partitioning to the current block is not allowed when the combined prediction mode is applied to the current block.
[008] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, o modo de intraprevisão do bloco atual pode ser definido como um modo plano.[008] In the video signal encoding and decoding method according to the present invention, the intraprediction mode of the current block can be set as a flat mode.
[009] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, o segundo bloco de previsão pode ser obtido com base em uma linha de amostra de referência incluída em uma linha de amostra de referência adjacente.[009] In the video signal encoding and decoding method according to the present invention, the second prediction block can be obtained based on a reference sample line included in an adjacent reference sample line.
[010] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, ao realizar a operação de soma ponderada, valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados com base nos modos de codificação de previsão de blocos vizinhos adjacentes ao bloco atual.[010] In the video signal encoding and decoding method according to the present invention, when performing the weighted sum operation, weighting values applied to the first prediction block and the second prediction block can be determined based on the prediction coding modes of neighboring blocks adjacent to the current block.
[011] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, quando pelo menos uma dentre a largura e a altura do bloco atual é maior que um valor limítrofe, o modo de previsão combinado pode não ser aplicado ao bloco atual.[011] In the video signal encoding and decoding method according to the present invention, when at least one of the width and height of the current block is greater than a threshold value, the combined prediction mode may not be applied to the current block.
[012] No método de codificação e decodificação de sinal de vídeo de acordo com a presente invenção, pode ser configurado o modo de previsão combinado para ser aplicável ao bloco atual quando um sinalizador indicando que um modo de mesclagem é aplicado ao bloco atual é verdadeiro.[012] In the video signal encoding and decoding method according to the present invention, the blended prediction mode can be configured to be applicable to the current block when a flag indicating that a blending mode is applied to the current block is true.
[013] As características resumidas brevemente acima em relação à presente invenção são aspectos meramente exemplificativos da descrição detalhada da presente invenção que serão descritos abaixo e não limitam o escopo da presente invenção.[013] The features briefly summarized above in relation to the present invention are merely exemplary aspects of the detailed description of the present invention that will be described below and do not limit the scope of the present invention.
[014] De acordo com a presente invenção, a eficiência de interprevisão pode ser melhorada fornecendo um método de previsão combinado que combina uma pluralidade de métodos de previsão.[014] According to the present invention, interforecasting efficiency can be improved by providing a combined forecasting method that combines a plurality of forecasting methods.
[015] De acordo com a presente invenção, a eficiência de interprevisão pode ser melhorada propondo um método de particionamento de um bloco de codificação em uma pluralidade de blocos de previsão, e derivando informações de movimento de cada um dos blocos de previsão.[015] According to the present invention, interprediction efficiency can be improved by proposing a method of partitioning a coding block into a plurality of prediction blocks, and deriving motion information from each of the prediction blocks.
[016] Os efeitos que podem ser obtidos a partir da presente invenção não estão limitados aos efeitos mencionados acima, e outros efeitos não mencionados podem ser claramente compreendidos por aquelas pessoas versadas na técnica a partir da descrição a seguir.[016] The effects that can be obtained from the present invention are not limited to the effects mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the following description.
[017] A Figura 1 é um diagrama de bloco que mostra um codificador de vídeo de acordo com uma modalidade da presente invenção.[017] Figure 1 is a block diagram showing a video encoder in accordance with an embodiment of the present invention.
[018] A Figura 2 é um diagrama de bloco que mostra um decodificador de vídeo de acordo com uma modalidade da presente invenção.[018] Figure 2 is a block diagram showing a video decoder in accordance with an embodiment of the present invention.
[019] A Figura 3 é uma vista que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente invenção.[019] Figure 3 is a view showing a basic coding tree unit in accordance with an embodiment of the present invention.
[020] A Figura 4 é uma vista que mostra vários tipos de particionamento de um bloco de codificação.[020] Figure 4 is a view showing various types of partitioning of a coding block.
[021] A Figura 5 é uma vista que mostra um padrão de particionamento de uma unidade de árvore de codificação.[021] Figure 5 is a view showing a partitioning pattern of a coding tree unit.
[022] A Figura 6 é uma vista que mostra o formato de uma unidade básica de dados.[022] Figure 6 is a view showing the shape of a basic data unit.
[023] As Figuras 7 e 8 são vistas que mostram exemplos de particionamento de um bloco de codificação em uma pluralidade de sub-blocos.[023] Figures 7 and 8 are views showing examples of partitioning a coding block into a plurality of sub-blocks.
[024] A Figura 9 é um fluxograma que ilustra um método de interprevisão de acordo com uma modalidade da presente invenção.[024] Figure 9 is a flowchart illustrating an interprediction method in accordance with an embodiment of the present invention.
[025] A Figura 10 é um fluxograma que ilustra um processo de derivar informações de movimento de um bloco atual usando um modo de mesclagem.[025] Figure 10 is a flowchart illustrating a process of deriving motion information from a current block using a blending mode.
[026] A Figura 11 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.[026] Figure 11 is a view showing an example of candidate blocks used to derive a merge candidate.
[027] A Figura 12 é uma vista que mostra exemplos de particionamento de um bloco de codificação em uma pluralidade de unidades de previsão usando uma linha diagonal.[027] Figure 12 is a view showing examples of partitioning a coding block into a plurality of prediction units using a diagonal line.
[028] A Figura 13 é uma vista que mostra exemplos de particionamento de um bloco de codificação em duas unidades de previsão.[028] Figure 13 is a view showing examples of partitioning a coding block into two prediction units.
[029] A Figura 14 é uma vista que mostra exemplos de particionamento de um bloco de codificação em uma pluralidade de blocos de previsão de tamanhos diferentes.[029] Figure 14 is a view showing examples of partitioning a coding block into a plurality of prediction blocks of different sizes.
[030] A Figura 15 é uma vista que mostra um exemplo de aplicação de particionamento diagonal a uma unidade de transformada.[030] Figure 15 is a view showing an example of applying diagonal partitioning to a transform unit.
[031] A Figura 16 é uma vista que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.[031] Figure 16 is a view showing neighboring blocks used to derive a triangular merge candidate.
[032] A Figura 17 é uma vista para descrever exemplos de determinação de disponibilidade de um bloco vizinho para cada unidade de previsão triangular.[032] Figure 17 is a view to describe examples of determining availability of a neighboring block for each triangular forecast unit.
[033] As Figuras 18 e 19 são vistas que mostram exemplos de derivação de uma amostra de previsão com base em uma operação de soma ponderada de uma primeira amostra de previsão e uma segunda amostra de previsão.[033] Figures 18 and 19 are views showing examples of deriving a forecast sample based on a weighted sum operation of a first forecast sample and a second forecast sample.
[034] A Figura 20 é um fluxograma que ilustra um método de intraprevisão de acordo com uma modalidade da presente invenção.[034] Figure 20 is a flowchart illustrating an intraforecast method in accordance with an embodiment of the present invention.
[035] A Figura 21 é uma vista que mostra modos de intraprevisão.[035] Figure 21 is a view showing intraprediction modes.
[036] As Figuras 22 e 23 são vistas que mostram um exemplo de uma matriz unidimensional organizando amostras de referência em uma linha.[036] Figures 22 and 23 are views showing an example of a one-dimensional array arranging reference samples in a row.
[037] A Figura 24 é uma vista que mostra um exemplo de ângulos formados entre modos de intraprevisão angulares e uma linha reta paralela ao eixo x.[037] Figure 24 is a view showing an example of angles formed between angular intraprediction modes and a straight line parallel to the x-axis.
[038] A Figura 25 é uma vista que mostra uma modalidade de adquirir amostras de previsão quando o bloco atual tem um formato não quadrado.[038] Figure 25 is a view showing an embodiment of acquiring prediction samples when the current block has a non-square shape.
[039] A Figura 26 é uma vista que mostra modos de intraprevisão de ângulo amplo.[039] Figure 26 is a view showing wide-angle intraprediction modes.
[040] A Figura 27 é uma vista que mostra uma modalidade de aplicação de PDPC.[040] Figure 27 is a view showing an embodiment of PDPC application.
[041] A Figura 28 é uma vista que mostra aplicação de exemplos de valores de ponderação.[041] Figure 28 is a view showing application of examples of weighting values.
[042] A Figura 29 é uma vista que mostra exemplos de atribuição de um valor de ponderação diferente a um sub- bloco de acordo com se um candidato a mesclagem tem informações de movimento bidirecional.[042] Figure 29 is a view showing examples of assigning a different weighting value to a sub-block according to whether a merge candidate has bidirectional motion information.
[043] A Figura 30 é uma vista que mostra exemplos de atribuição de um valor de ponderação diferente a um sub- bloco de acordo com o modo de intraprevisão do bloco atual.[043] Figure 30 is a view showing examples of assigning a different weighting value to a sub-block according to the intraprediction mode of the current block.
[044] A Figura 31 é uma vista que mostra um exemplo em que um segundo candidato a mesclagem é especificado considerando a ordem de pesquisa de blocos candidatos.[044] Figure 31 is a view showing an example where a second merge candidate is specified considering the search order of candidate blocks.
[045] A Figura 32 é uma vista que mostra um exemplo em que um primeiro candidato a mesclagem e um segundo candidato a mesclagem são selecionados entre candidatos a mesclagem derivados de blocos não vizinhos.[045] Figure 32 is a view showing an example in which a first merge candidate and a second merge candidate are selected from merge candidates derived from non-neighboring blocks.
[046] A Figura 33 é uma vista para descrever um exemplo de determinação de um segundo candidato a mesclagem.[046] Figure 33 is a view to describe an example of determining a second merge candidate.
[047] A Figura 34 é uma vista que mostra um exemplo em que valores de ponderação aplicados aos blocos de previsão são determinados com base no formato de blocos candidatos.[047] Figure 34 is a view showing an example where weighting values applied to prediction blocks are determined based on the shape of candidate blocks.
[048] A Figura 35 é uma vista que mostra um exemplo em que um candidato a mesclagem é substituído.[048] Figure 35 is a view showing an example where a merge candidate is replaced.
[049] As Figuras 36 e 37 são vistas que mostram um sub-bloco em que uma segunda transformada será realizada.[049] Figures 36 and 37 are views showing a sub-block in which a second transform will be performed.
[050] A Figura 38 é uma vista para descrever exemplos de determinação de um tipo de transformada do bloco atual.[050] Figure 38 is a view to describe examples of determining a transform type of the current block.
[051] A Figura 39 é um fluxograma que ilustra um processo de determinação de resistência de bloco.[051] Figure 39 is a flowchart illustrating a block strength determination process.
[052] A Figura 40 é uma vista que mostra candidatos de filtro predefinidos.[052] Figure 40 is a view showing predefined filter candidates.
[053] Daqui em diante, uma modalidade da presente invenção será descrita em detalhes com referência aos desenhos anexos.[053] Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings.
[054] A codificação e decodificação de um vídeo é realizada pela unidade de bloco. Por exemplo, um processo de codificação/decodificação como transformada, quantização, previsão, filtragem em loop, reconstrução ou semelhantes pode ser realizado em um bloco de codificação, um bloco de transformada, ou um bloco de previsão.[054] The encoding and decoding of a video is performed by the block unit. For example, an encoding/decoding process such as transform, quantization, prediction, loop filtering, reconstruction, or the like can be performed in a coding block, a transform block, or a prediction block.
[055] Em seguida, um bloco para ser codificado/decodificado será denominado como um “bloco atual”. Por exemplo, o bloco atual pode representar um bloco de codificação, um bloco de transformada ou um bloco de previsão de acordo com uma etapa de processo de codificação/decodificação atual.[055] Next, a block to be encoded/decoded will be referred to as a “current block”. For example, the current block may represent an encoding block, a transform block, or a prediction block according to a current encoding/decoding process step.
[056] Além disso, pode ser entendido que o termo “unidade” usado neste relatório descritivo indica uma unidade básica para realizar um processo de codificação/decodificação específico, e o termo “bloco” indica uma matriz de amostra de um tamanho predeterminado. Salvo indicação em contrário, o “bloco” e “unidade” podem ser usados para ter o mesmo significado. Por exemplo, em uma modalidade descrita abaixo, pode ser entendido que um bloco de codificação e uma unidade de codificação têm o mesmo significado.[056] Furthermore, it may be understood that the term “unit” used in this specification indicates a basic unit for performing a specific encoding/decoding process, and the term “block” indicates a sample matrix of a predetermined size. Unless otherwise indicated, “block” and “unit” may be used to have the same meaning. For example, in an embodiment described below, it may be understood that a coding block and a coding unit have the same meaning.
[057] A Figura 1 é um diagrama de bloco que mostra um codificador de vídeo de acordo com uma modalidade da presente invenção.[057] Figure 1 is a block diagram showing a video encoder in accordance with an embodiment of the present invention.
[058] Com referência à Figura 1, um aparelho de codificação de vídeo 100 pode incluir uma parte de particionamento de imagem 110, uma parte de previsão 120 e 125, uma parte de transformada 130, uma parte de quantização 135, uma parte de rearranjo 160, uma parte de codificação por entropia 165, uma parte de quantização inversa 140, uma parte de transformada inversa 145, uma parte de filtro 150, e uma memória 155.[058] Referring to Figure 1, a video coding apparatus 100 may include a picture partitioning part 110, a prediction part 120 and 125, a transform part 130, a quantization part 135, a rearrangement part 160, an entropy coding part 165, an inverse quantization part 140, an inverse transform part 145, a filter part 150, and a memory 155.
[059] Cada um dos componentes mostrados na Figura 1 é mostrado independentemente para representar funções características diferentes umas das outras em um aparelho de codificação de vídeo, e isso não significa que cada componente é formado pela unidade de configuração de hardware separado ou software único. Ou seja, cada componente é incluído para ser listado como um componente por conveniência de explicação e pelo menos dois dos componentes podem ser combinados para formar um único componente, ou um componente pode ser dividido em uma pluralidade de componentes para executar uma função. As modalidades integradas e as modalidades separadas dos componentes também estão incluídas no escopo da presente invenção, se não se afastarem da essência da presente invenção.[059] Each of the components shown in Figure 1 is shown independently to represent characteristic functions different from each other in a video encoding apparatus, and this does not mean that each component is formed by the separate hardware configuration unit or single software. That is, each component is included to be listed as a component for convenience of explanation, and at least two of the components can be combined to form a single component, or a component can be divided into a plurality of components to perform a function. Integrated embodiments and separate embodiments of the components are also included in the scope of the present invention, if they do not depart from the essence of the present invention.
[060] Além disso, alguns dos componentes não são componentes essenciais que desempenham funções essenciais na presente invenção, mas podem ser componentes opcionais apenas para melhorar o desempenho. A presente invenção pode ser implementada incluindo apenas componentes essenciais para implementar a essência da presente invenção, excluindo componentes usados para melhorar o desempenho, e uma estrutura incluindo apenas os componentes essenciais, excluindo os componentes opcionais usados para melhorar o desempenho também está incluída no escopo da presente invenção.[060] Furthermore, some of the components are not essential components that perform essential functions in the present invention, but may be optional components only for improving performance. The present invention may be implemented by including only essential components for implementing the essence of the present invention, excluding components used for improving performance, and a structure including only essential components, excluding optional components used for improving performance, is also included in the scope of the present invention.
[061] A parte de particionamento de imagem 110 pode particionar uma imagem de entrada em pelo menos uma unidade de processamento. Neste ponto, a unidade de processamento pode ser uma unidade de previsão (PU), uma unidade de transformada (TU), ou uma unidade de codificação (CU). A parte de particionamento de imagem 110 pode particionar uma imagem em uma combinação de uma pluralidade de unidades de codificação, unidades de previsão, e unidades de transformada, e codificar uma imagem selecionando uma combinação de uma unidade de codificação, uma unidade de previsão, e uma unidade de transformada com base em um critério predeterminado (por exemplo, uma função de custo).[061] The image partitioning part 110 may partition an input image into at least one processing unit. At this point, the processing unit may be a prediction unit (PU), a transform unit (TU), or a coding unit (CU). The image partitioning part 110 may partition an image into a combination of a plurality of coding units, prediction units, and transform units, and encode an image by selecting a combination of a coding unit, a prediction unit, and a transform unit based on a predetermined criterion (e.g., a cost function).
[062] Por exemplo, uma imagem pode ser particionada em uma pluralidade de unidades de codificação. De modo a particionar as unidades de codificação em uma imagem, uma estrutura de árvore recursiva como uma estrutura de árvore quádrupla pode ser usada. Um vídeo ou uma unidade de codificação particionada em diferentes unidades de codificação usando a maior unidade de codificação como uma raiz pode ser particionada para ter tantos nós filhos quanto o número de unidades de codificação particionadas. Uma unidade de codificação que não é mais particionada de acordo com uma restrição predeterminada torna-se um nó folha. Isto é, quando se assume que apenas a partição quadrada é possível para uma unidade de codificação, a unidade de codificação pode ser particionada em até quatro unidades de codificação diferentes.[062] For example, an image may be partitioned into a plurality of coding units. In order to partition the coding units in an image, a recursive tree structure such as a quad tree structure may be used. A video or a coding unit partitioned into different coding units using the largest coding unit as a root may be partitioned to have as many child nodes as the number of partitioned coding units. A coding unit that is no longer partitioned according to a predetermined constraint becomes a leaf node. That is, when it is assumed that only square partitioning is possible for a coding unit, the coding unit may be partitioned into up to four different coding units.
[063] Em seguida, em uma modalidade da presente invenção, a unidade de codificação pode ser usada como um significado de uma unidade que realiza codificação ou um significado de uma unidade que realiza decodificação.[063] Next, in one embodiment of the present invention, the coding unit may be used as a meaning of a unit that performs encoding or a meaning of a unit that performs decoding.
[064] A unidade de previsão pode ser uma que é particionada em um formato de pelo menos um quadrado, retângulo ou semelhantes do mesmo tamanho dentro de uma unidade de codificação, ou pode ser qualquer uma unidade de previsão, entre as unidades de previsão particionadas dentro de uma unidade de codificação, que é particionada para ter um formato e/ou tamanho diferente daqueles de outra unidade de previsão.[064] The prediction unit may be one that is partitioned into a shape of at least one square, rectangle, or the like of the same size within a coding unit, or it may be any one prediction unit, among the prediction units partitioned within a coding unit, that is partitioned to have a shape and/or size different from those of another prediction unit.
[065] Se a unidade de codificação não for uma unidade de codificação menor quando uma unidade de previsão que realiza intraprevisão com base na unidade de codificação é gerada, intraprevisão pode ser realizada sem particionamento de uma imagem em uma pluralidade de unidades de previsão N x N.[065] If the coding unit is not a smaller coding unit when a prediction unit that performs intraprediction based on the coding unit is generated, intraprediction can be performed without partitioning an image into a plurality of N x N prediction units.
[066] A parte de previsão 120 e 125 pode incluir uma parte de interprevisão 120 que realiza interprevisão e uma parte de intraprevisão 125 que realiza intraprevisão. Pode ser determinado se usar interprevisão ou realizar intraprevisão para uma unidade de previsão, e determinar informações específicas (por exemplo, modo de intraprevisão, vetor de movimento, imagem de referência, etc.) de acordo com cada método de previsão. Neste ponto, uma unidade de processamento para realizar previsão pode ser diferente de uma unidade de processamento para determinar um método de previsão e conteúdo específico. Por exemplo, um método de previsão e um modo de previsão podem ser determinados em uma unidade de previsão, e previsão pode ser realizada em uma unidade de transformada. Um coeficiente residual (bloco residual) entre o bloco de previsão gerado e o bloco original pode ser inserido na parte de transformada 130. Além disso, informações de modo de previsão, informações de vetor de movimento e semelhantes usadas para previsão podem ser codificadas pela parte de codificação por entropia 165 junto com o coeficiente residual e transferido para um decodificador. Quando um modo de codificação específico é usado, um bloco original pode ser codificado como está e transmitido para um decodificador sem gerar um bloco de previsão através da parte de previsão 120 e 125.[066] The prediction portions 120 and 125 may include an inter-prediction portion 120 that performs inter-prediction and an intra-prediction portion 125 that performs intra-prediction. It may be determined whether to use inter-prediction or perform intra-prediction for a prediction unit, and specific information (e.g., intra-prediction mode, motion vector, reference image, etc.) may be determined according to each prediction method. At this point, a processing unit for performing prediction may be different from a processing unit for determining a prediction method and specific content. For example, a prediction method and a prediction mode may be determined in a prediction unit, and prediction may be performed in a transform unit. A residual coefficient (residual block) between the generated prediction block and the original block may be input to the transform portion 130. Furthermore, prediction mode information, motion vector information, and the like used for prediction may be encoded by the entropy coding portion 165 together with the residual coefficient and passed to a decoder. When a specific encoding mode is used, an original block may be encoded as is and transmitted to a decoder without generating a prediction block through prediction part 120 and 125.
[067] A parte de interprevisão 120 pode prever uma unidade de previsão com base nas informações em pelo menos uma imagem entre imagens antes ou depois da imagem atual, e em alguns casos, pode prever uma unidade de previsão com base nas informações em uma área parcial que foi codificada na imagem atual. A parte de interprevisão 120 pode incluir uma parte de interpolação de imagem de referência, uma parte de previsão de movimento, e uma parte de compensação de movimento.[067] The interprediction part 120 may predict a prediction unit based on information in at least one picture among pictures before or after the current picture, and in some cases, may predict a prediction unit based on information in a partial area that has been encoded in the current picture. The interprediction part 120 may include a reference picture interpolation part, a motion prediction part, and a motion compensation part.
[068] A parte de interpolação de imagem de referência pode receber informações de imagem de referência a partir da memória 155 e gerar informações de pixel de um número inteiro de pixels ou menos a partir da imagem de referência. No caso de um pixel de luminância, um filtro de interpolação de 8 coeficientes com base em DCT com um coeficiente de filtro variável pode ser usado para gerar informações de pixel de um número inteiro de pixels ou menos pela unidade de 1/4 pixels. No caso de um sinal croma, um filtro de interpolação de 4 coeficientes com base em DCT com um coeficiente de filtro variável pode ser usado para gerar informações de pixel de um número inteiro de pixels ou menos pela unidade de 1/8 pixels.[068] The reference image interpolation part may receive reference image information from memory 155 and generate pixel information of an integer number of pixels or less from the reference image. In the case of a luminance pixel, a DCT-based 8-coefficient interpolation filter with a variable filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/4 pixels. In the case of a chroma signal, a DCT-based 4-coefficient interpolation filter with a variable filter coefficient may be used to generate pixel information of an integer number of pixels or less by the unit of 1/8 pixels.
[069] A parte de previsão de movimento pode realizar previsão de movimento com base na imagem de referência interpolada pela parte de interpolação de imagem de referência. Vários métodos como um algoritmo de correspondência de bloco baseado em pesquisa completa (FBMA), uma pesquisa em três etapas (TSS) e um novo algoritmo de pesquisa em três etapas (NTS), podem ser usados como um método de cálculo de um vetor de movimento. O vetor de movimento pode ter um valor de vetor de movimento de uma unidade de 1/2 ou 1/4 pixels com base em pixels interpolados. A parte de previsão de movimento pode prever uma unidade de previsão atual variando o método de previsão de movimento. Vários métodos como um modo de salto, um modo de mesclagem, um modo de previsão de vetor de movimento avançado (AMVP), um modo de cópia intrabloco e semelhantes podem ser usados como o modo de previsão de movimento.[069] The motion prediction part may perform motion prediction based on the reference image interpolated by the reference image interpolation part. Various methods, such as a full-search-based block matching algorithm (FBMA), a three-step search (TSS), and a novel three-step search (NTS) algorithm, may be used as a motion vector calculation method. The motion vector may have a motion vector value of a 1/2 or 1/4 pixel unit based on interpolated pixels. The motion prediction part may predict a current prediction unit by varying the motion prediction method. Various methods, such as a skip mode, a blend mode, an advanced motion vector prediction (AMVP) mode, an intra-block copy mode, and the like, may be used as the motion prediction mode.
[070] A parte de intraprevisão 125 pode gerar uma unidade de previsão com base nas informações sobre pixels de referência na vizinhança do bloco atual, que são informações de pixel na imagem atual. Quando um bloco na vizinhança da unidade de previsão atual é um bloco em que a interprevisão foi realizada e, assim o pixel de referência é um pixel em que a interprevisão foi realizada, o pixel de referência incluído no bloco em que a interprevisão foi realizada pode ser usado no lugar de informações de pixel de referência de um bloco na vizinhança em que a intraprevisão foi realizada. Isto é, quando um pixel de referência não está disponível, pelo menos um pixel de referência entre pixels de referência disponíveis pode ser usado no lugar de informações de pixel de referência indisponível.[070] The intraprediction part 125 may generate a prediction unit based on information about reference pixels in the neighborhood of the current block, which is pixel information in the current image. When a block in the neighborhood of the current prediction unit is a block on which interprediction has been performed, and thus the reference pixel is a pixel on which interprediction has been performed, the reference pixel included in the block on which interprediction has been performed may be used in place of reference pixel information of a block in the neighborhood on which intraprediction has been performed. That is, when a reference pixel is not available, at least one reference pixel among available reference pixels may be used in place of unavailable reference pixel information.
[071] Na intraprevisão, o modo de previsão pode ter um modo de previsão angular que usa informações de pixel de referência de acordo com uma direção de previsão e um modo de previsão não angular que não usa informações direcionais ao realizar a previsão. Um modo para prever informações de luminância pode ser diferente de um modo para prever informações de croma, e informações de modo de intraprevisão usadas para prever informações de luminância ou informações de sinal de luminância previstas podem ser usadas para prever as informações de croma.[071] In intraprediction, the prediction mode may have an angular prediction mode that uses reference pixel information according to a prediction direction and a non-angular prediction mode that does not use directional information when performing prediction. A mode for predicting luminance information may be different from a mode for predicting chroma information, and intraprediction mode information used to predict luminance information or predicted luminance signal information may be used to predict the chroma information.
[072] Se o tamanho da unidade de previsão for igual ao tamanho da unidade de transformada quando a intraprevisão é realizada, a intraprevisão pode ser realizada para a unidade de previsão com base em um pixel no lado esquerdo, um pixel no lado esquerdo superior, e um pixel na parte superior da unidade de previsão. Entretanto, se o tamanho da unidade de previsão for diferente do tamanho da unidade de transformada quando a intraprevisão é realizada, a intraprevisão pode ser realizada usando um pixel de referência com base na unidade de transformada. Além disso, a intraprevisão usando particionamento N x N pode ser usado apenas para a unidade de codificação menor.[072] If the size of the prediction unit is equal to the size of the transform unit when intraprediction is performed, intraprediction can be performed for the prediction unit based on a pixel on the left side, a pixel on the top left side, and a pixel on the top of the prediction unit. However, if the size of the prediction unit is different from the size of the transform unit when intraprediction is performed, intraprediction can be performed using a reference pixel based on the transform unit. Furthermore, intraprediction using N x N partitioning can be used only for the smallest coding unit.
[073] O método de intraprevisão pode gerar um bloco de previsão após a aplicação de um filtro de suavização intra-adaptativa (AIS) para o pixel de referência de acordo com um modo de previsão. O tipo do filtro de AIS aplicado ao pixel de referência pode variar. De modo a realizar o método de intraprevisão, o modo de intraprevisão da unidade de previsão atual pode ser previsto a partir do modo de intraprevisão da unidade de previsão existente na vizinhança da unidade de previsão atual. Quando um modo de previsão da unidade de previsão atual é previsto usando as informações de modo previstas a partir da unidade de previsão vizinha, se os modos de intraprevisão da unidade de previsão atual são iguais aos da unidade de previsão na vizinhança, informações que indicam que os modos de previsão da unidade de previsão atual são iguais aos da unidade de previsão na vizinhança podem ser transmitidas usando informações de sinalizador predeterminadas, e se os modos de previsão da unidade de previsão atual e a unidade de previsão na vizinhança são diferentes um do outro, informações de modo de previsão do bloco atual podem ser codificadas realizando codificação por entropia.[073] The intra-prediction method may generate a prediction block after applying an intra-adaptive smoothing (AIS) filter to the reference pixel according to a prediction mode. The type of the AIS filter applied to the reference pixel may vary. In order to perform the intra-prediction method, the intra-prediction mode of the current prediction unit may be predicted from the intra-prediction mode of the prediction unit existing in the neighborhood of the current prediction unit. When a prediction mode of the current prediction unit is predicted using the mode information predicted from the neighboring prediction unit, if the intra-prediction modes of the current prediction unit are the same as those of the neighboring prediction unit, information indicating that the prediction modes of the current prediction unit are the same as those of the neighboring prediction unit may be transmitted using predetermined flag information, and if the prediction modes of the current prediction unit and the neighboring prediction unit are different from each other, prediction mode information of the current block may be encoded by performing entropy encoding.
[074] Além disso, um bloco residual incluindo uma unidade de previsão que realizou previsão com base na unidade de previsão gerada pela parte de previsão 120 e 125 e informações de coeficiente residual, que é um valor de diferença da unidade de previsão com o bloco original, pode ser gerado. O bloco residual gerado pode ser inserido na parte de transformada 130.[074] Further, a residual block including a prediction unit that performed prediction based on the prediction unit generated by the prediction part 120 and 125 and residual coefficient information, which is a difference value of the prediction unit with the original block, may be generated. The generated residual block may be input to the transform part 130.
[075] A parte de transformada 130 pode transformar o bloco residual incluindo o bloco original e as informações de coeficiente residual da unidade de previsão gerada através da parte de previsão 120 e 125 usando um método de transformada como Transformada de Cosseno Discreta (DCT) ou Transformada de Seno Discreta (DST). Aqui, o núcleo de transformada de DCT inclui pelo menos um entre DCT2 e DCT8, e o núcleo de transformada de DST inclui DST7. Se deve ou não aplicar DCT ou DST à transformada o bloco residual pode ser determinado com base nas informações de modo de intraprevisão de uma unidade de previsão usada para gerar o bloco residual. A transformada no bloco residual pode ser saltada. Um sinalizador indicando se deve ou não saltar a transformada no bloco residual pode ser codificado. O salto de transformada pode ser deixado para um bloco residual que tem um tamanho menor ou igual a um limítrofe, um componente luma, ou um componente croma sob o formato 4:4:4.[075] The transform part 130 may transform the residual block including the original block and the residual coefficient information of the prediction unit generated through the prediction part 120 and 125 using a transform method such as Discrete Cosine Transform (DCT) or Discrete Sine Transform (DST). Here, the DCT transform kernel includes at least one of DCT2 and DCT8, and the DST transform kernel includes DST7. Whether or not to apply DCT or DST to the transform of the residual block may be determined based on the intraprediction mode information of a prediction unit used to generate the residual block. The transform in the residual block may be skipped. A flag indicating whether or not to skip the transform in the residual block may be encoded. The transform skip may be left for a residual block that has a size less than or equal to a threshold, a luma component, or a chroma component under the 4:4:4 format.
[076] A parte de quantização 135 pode quantizar valores transformados no domínio de frequência pela parte de transformada 130. Coeficientes de quantização podem variar de acordo com o bloco ou a importância de um vídeo. Um valor calculado pela parte de quantização 135 pode ser fornecido para a parte de quantização inversa 140 e a parte de rearranjo 160.[076] Quantization part 135 may quantize values transformed into the frequency domain by transform part 130. Quantization coefficients may vary depending on the block or importance of a video. A value calculated by quantization part 135 may be provided to inverse quantization part 140 and rearrangement part 160.
[077] A parte de rearranjo 160 pode rearranjar valores de coeficiente para os coeficientes residuais quantizados.[077] The rearrangement part 160 may rearrange coefficient values for the quantized residual coefficients.
[078] A parte de rearranjo 160 pode mudar coeficientes de um formato de bloco bidimensional em um formato de vetor unidimensional por meio de um método de varredura de coeficiente. Por exemplo, a parte de rearranjo 160 pode varrer coeficientes de DC até coeficientes de domínio de alta frequência usando um método de varredura em zigue-zague, e mudar os coeficientes em um formato de vetor unidimensional. De acordo com o tamanho da unidade de transformada e o modo de intraprevisão, uma varredura vertical de varredura dos coeficientes de um formato de bloco bidimensional na direção da coluna e uma varredura horizontal de varredura os coeficientes de um formato de bloco bidimensional na direção da linha podem ser usados em vez da varredura em zigue-zague. Isto é, de acordo com o tamanho da unidade de transformada e o modo de intraprevisão, um método de varredura que será usado pode ser determinado entre a varredura em zigue-zague, a varredura na direção vertical, e a varredura na direção horizontal.[078] The rearrangement portion 160 may shift coefficients of a two-dimensional block format into a one-dimensional vector format by means of a coefficient sweep method. For example, the rearrangement portion 160 may sweep coefficients from DC to high-frequency domain coefficients using a zigzag sweep method, and shift the coefficients into a one-dimensional vector format. According to the size of the transform unit and the intraprediction mode, a vertical sweep of sweeping the coefficients of a two-dimensional block format in the column direction and a horizontal sweep of sweeping the coefficients of a two-dimensional block format in the row direction may be used instead of the zigzag sweep. That is, according to the size of the transform unit and the intraprediction mode, a sweep method to be used may be determined among the zigzag sweep, the sweep in the vertical direction, and the sweep in the horizontal direction.
[079] A parte de codificação por entropia 165 pode realizar codificação por entropia com base nos valores calculados pela parte de rearranjo 160. Codificação por entropia pode usar vários métodos de codificação como Golomb Exponencial, Codificação de Comprimento Variável Adaptável ao Contexto (CAVLC), Codificação Aritmética Binária Adaptável ao Contexto (CABAC) e semelhantes.[079] The entropy coding part 165 may perform entropy coding based on the values calculated by the rearrangement part 160. Entropy coding may use various coding methods such as Exponential Golomb, Context Adaptive Variable Length Coding (CAVLC), Context Adaptive Binary Arithmetic Coding (CABAC), and the like.
[080] A parte de codificação por entropia 165 pode codificar várias informações como informações de coeficiente residual e informações de tipo de bloco de uma unidade de codificação, informações de modo de previsão, informações de unidade de particionamento, informações de unidade de previsão e informações de unidade de transmissão, informações de vetor de movimento, informações de quadro de referência, informações de interpolação de bloco, e entrada de informações de filtragem a partir da parte de rearranjo 160 e das partes de previsão 120 e 125.[080] The entropy coding part 165 may encode various information such as residual coefficient information and block type information of a coding unit, prediction mode information, partitioning unit information, prediction unit information and transmission unit information, motion vector information, reference frame information, block interpolation information, and filtering information input from the rearrangement part 160 and the prediction parts 120 and 125.
[081] A parte de codificação por entropia 165 pode codificar por entropia o valor de coeficiente de uma entrada de unidade de codificação a partir da parte de rearranjo 160.[081] The entropy encoding part 165 may entropy encode the coefficient value of a coding unit input from the rearrangement part 160.
[082] A parte de quantização inversa 140 e a parte de transformada inversa 145 quantizam inversamente os valores quantizados pela parte de quantização 135 e transformam inversamente os valores transformados pela parte de transformada 130. O coeficiente residual gerado pela parte de quantização inversa 140 e pela parte de transformada inversa 145 podem ser combinados com a unidade de previsão prevista por meio de uma parte de estimativa de movimento, uma parte de compensação de movimento, e uma parte de intraprevisão incluída na parte de previsão 120 e 125 para gerar um bloco reconstruído.[082] The inverse quantization part 140 and the inverse transform part 145 inversely quantize the values quantized by the quantization part 135 and inversely transform the values transformed by the transform part 130. The residual coefficient generated by the inverse quantization part 140 and the inverse transform part 145 may be combined with the predicted prediction unit via a motion estimation part, a motion compensation part, and an intraprediction part included in the prediction part 120 and 125 to generate a reconstructed block.
[083] A parte de filtro 150 pode incluir pelo menos um dentre um filtro de desbloqueio, uma unidade de correção de deslocamento, e um filtro de loop adaptativo (ALF).[083] The filter portion 150 may include at least one of a deblocking filter, an offset correction unit, and an adaptive loop filter (ALF).
[084] O filtro de desbloqueio pode remover distorção de bloco gerada pelo limite entre blocos na imagem reconstruída. De modo a determinar se deve ou não realizar o desbloqueio, se deve ou não aplicar o filtro de desbloqueio ao bloco atual pode ser determinado com base nos pixels incluídos em várias colunas ou linhas incluídas no bloco. Um filtro forte ou um filtro fraco pode ser aplicado de acordo com a força de filtragem de desbloqueio necessária quando o filtro de desbloqueio é aplicado a um bloco. Além disso, quando a filtragem de direção vertical e a filtragem de direção horizontal são realizadas na aplicação do filtro de desbloqueio, a filtragem de direção horizontal e a filtragem de direção vertical podem ser processadas em paralelo.[084] The deblocking filter can remove block distortion generated by the boundary between blocks in the reconstructed image. In order to determine whether or not to perform deblocking, whether or not to apply the deblocking filter to the current block can be determined based on the pixels included in multiple columns or rows included in the block. A strong filter or a weak filter can be applied according to the required deblocking filtering strength when the deblocking filter is applied to a block. Furthermore, when vertical direction filtering and horizontal direction filtering are performed when applying the deblocking filter, the horizontal direction filtering and vertical direction filtering can be processed in parallel.
[085] A unidade de correção de deslocamento pode corrigir um deslocamento para a imagem original pela unidade de pixel para uma imagem em que o desbloqueio foi realizado. De modo a realizar correção de deslocamento para uma imagem específica, é possível usar um método de divisão de pixels incluídos na imagem em um certo número de áreas, determinando uma área para realizar o deslocamento, e aplicando o deslocamento à área, ou um método de aplicação de um deslocamento considerando informações de borda de cada pixel.[085] The displacement correction unit can correct a displacement to the original image by the pixel unit for an image on which deblocking has been performed. In order to perform displacement correction for a specific image, it is possible to use a method of dividing pixels included in the image into a certain number of areas, determining an area to perform the displacement, and applying the displacement to the area, or a method of applying a displacement considering edge information of each pixel.
[086] A Filtragem de Loop Adaptativo (ALF) pode ser realizada com base em um valor obtido comparando a imagem reconstruída filtrada com a imagem original. Após dividir os pixels incluídos na imagem em grupos predeterminados, um filtro a ser aplicado a um grupo correspondente pode ser determinado, e filtragem pode ser realizada diferentemente para cada grupo. Um sinal de luminância, que são as informações relacionadas à aplicação ou não de ALF, pode ser transmitido para cada unidade de codificação (CU), e o formato e coeficiente de filtro de um filtro de ALF a ser aplicado pode variar de acordo com cada bloco. Além disso, um filtro de ALF do mesmo tipo (tipo fixo) pode ser aplicado independentemente da característica de um bloco a ser aplicado.[086] Adaptive Loop Filtering (ALF) can be performed based on a value obtained by comparing the filtered reconstructed image with the original image. After dividing the pixels included in the image into predetermined groups, a filter to be applied to a corresponding group can be determined, and filtering can be performed differently for each group. A luminance signal, which is the information related to whether or not ALF is applied, can be transmitted to each coding unit (CU), and the shape and filter coefficient of an ALF filter to be applied can vary according to each block. Furthermore, an ALF filter of the same type (fixed type) can be applied regardless of the characteristic of a block to be applied.
[087] A memória 155 pode armazenar o bloco reconstruído ou imagem calculada através da parte de filtro 150, e o bloco reconstruído e armazenado ou imagem pode ser fornecido para a parte de previsão 120 e 125 quando a interprevisão é realizada.[087] The memory 155 may store the reconstructed block or image calculated through the filter part 150, and the reconstructed and stored block or image may be provided to the prediction part 120 and 125 when interprediction is performed.
[088] A Figura 2 é um diagrama de bloco que mostra um decodificador de vídeo de acordo com uma modalidade da presente invenção.[088] Figure 2 is a block diagram showing a video decoder in accordance with an embodiment of the present invention.
[089] Com referência à Figura 2, um decodificador de vídeo 200 pode incluir uma parte de decodificação por entropia 210, uma parte de rearranjo 215, uma parte de quantização inversa 220, uma parte de transformada inversa 225, uma parte de previsão 230 e 235, uma parte de filtro 240, e uma memória 245.[089] Referring to Figure 2, a video decoder 200 may include an entropy decoding part 210, a rearrangement part 215, an inverse quantization part 220, an inverse transform part 225, a prediction part 230 and 235, a filter part 240, and a memory 245.
[090] Quando um fluxo de bits de vídeo é inserido de um codificador de vídeo, o fluxo de bits de entrada pode ser decodificado em um procedimento oposto ao do codificador de vídeo.[090] When a video bitstream is input from a video encoder, the input bitstream may be decoded in a procedure opposite to that of the video encoder.
[091] A parte de decodificação por entropia 210 pode realizar decodificação por entropia em um procedimento oposto ao que realiza codificação por entropia na parte de decodificação por entropia do codificador de vídeo. Por exemplo, vários métodos correspondentes ao método realizado pelo codificador de vídeo, como Golomb Exponencial, Codificação de Comprimento Variável Adaptável ao Contexto (CAVLC) e Codificação Aritmética Binária Adaptável ao Contexto (CABAC), podem ser aplicados.[091] The entropy decoding part 210 may perform entropy decoding in a procedure opposite to that which performs entropy coding in the entropy decoding part of the video encoder. For example, various methods corresponding to the method performed by the video encoder, such as Exponential Golomb, Context Adaptive Variable Length Coding (CAVLC), and Context Adaptive Binary Arithmetic Coding (CABAC), may be applied.
[092] A parte de decodificação por entropia 210 pode decodificar informações relacionadas à intraprevisão e interprevisão realizada pelo codificador.[092] The entropy decoding part 210 can decode information related to the intraprediction and interprediction performed by the encoder.
[093] A parte de rearranjo 215 pode realizar rearranjo na entropia de fluxo de bits decodificada pela parte de decodificação por entropia 210 com base no método de rearranjo realizado pelo codificador. Os coeficientes expressos em uma forma de vetor unidimensional podem ser reconstruídos e reorganizados como coeficientes de forma de bloco bidimensional. A parte de rearranjo 215 pode receber informações relacionadas à varredura de coeficiente realizada pela parte de codificação e realizar a reconstrução por meio de um método de varredura inversa com base na ordem de varredura realizada pela parte de codificação correspondente.[093] The rearrangement part 215 may perform rearrangement on the bit stream entropy decoded by the entropy decoding part 210 based on the rearrangement method performed by the encoder. The coefficients expressed in a one-dimensional vector form may be reconstructed and rearranged as two-dimensional block form coefficients. The rearrangement part 215 may receive information related to the coefficient scan performed by the coding part and perform reconstruction by a backward scan method based on the scan order performed by the corresponding coding part.
[094] A parte de quantização inversa 220 pode realizar quantização inversa com base em um parâmetro de quantização fornecido pelo codificador e um valor de coeficiente do bloco rearranjado.[094] The inverse quantization part 220 may perform inverse quantization based on a quantization parameter provided by the encoder and a coefficient value of the rearranged block.
[095] A parte de transformada inversa 225 pode realizar transformada inversa na transformada, isto é, DCT ou DST, realizada pela parte de transformada em um resultado da quantização realizada pelo codificador de vídeo, isto é, DCT inversa ou DST inversa. Aqui, o núcleo de transformada de DCT pode incluir pelo menos um dentre DCT2 e DCT8, e o núcleo de transformada de DST pode incluir DST7. Alternativamente, quando a transformada é saltada no codificador de vídeo, mesmo a parte de transformada inversa 225 pode não realizar a transformada inversa. A transformada inversa pode ser realizada com base em uma unidade de transmissão determinada pelo codificador de vídeo. A parte de transformada inversa 225 do decodificador de vídeo pode seletivamente realizar uma técnica de transformada (por exemplo, DCT ou DST) de acordo com uma pluralidade de informações como um método de previsão, um tamanho de um bloco atual, uma direção de previsão e semelhantes.[095] The inverse transform part 225 may perform inverse transform on the transform, i.e., DCT or DST, performed by the transform part on a result of quantization performed by the video encoder, i.e., inverse DCT or inverse DST. Here, the DCT transform kernel may include at least one of DCT2 and DCT8, and the DST transform kernel may include DST7. Alternatively, when the transform is skipped in the video encoder, even the inverse transform part 225 may not perform inverse transform. The inverse transform may be performed based on a transmission unit determined by the video encoder. The inverse transform part 225 of the video decoder may selectively perform a transform technique (e.g., DCT or DST) according to a plurality of information such as a prediction method, a size of a current block, a prediction direction, and the like.
[096] A parte de previsão 230 e 235 pode gerar um bloco de previsão com base nas informações relacionadas à geração de um bloco de previsão fornecido pelo decodificador por entropia 210 e informações sobre um bloco ou imagem anteriormente decodificado fornecida pela memória 245.[096] The prediction part 230 and 235 may generate a prediction block based on information related to generating a prediction block provided by the entropy decoder 210 and information about a previously decoded block or image provided by the memory 245.
[097] Como descrito acima, se o tamanho da unidade de previsão e o tamanho da unidade de transformada forem os mesmos quando a intraprevisão é realizada na mesma maneira como a operação do codificador de vídeo, a intraprevisão é realizada na unidade de previsão com base no pixel existente no lado esquerdo, o pixel no lado esquerdo superior, e o pixel na parte superior da unidade de previsão. Entretanto, se o tamanho da unidade de previsão e o tamanho da unidade de transformada forem diferentes quando a intraprevisão é realizada, a intraprevisão pode ser realizada usando um pixel de referência com base em uma unidade de transformada. Além disso, a intraprevisão usando particionamento N x N pode ser usada apenas para a unidade de codificação menor.[097] As described above, if the size of the prediction unit and the size of the transform unit are the same when intraprediction is performed in the same manner as the video encoder operation, intraprediction is performed on the prediction unit based on the pixel on the left side, the pixel on the upper left side, and the pixel on the top of the prediction unit. However, if the size of the prediction unit and the size of the transform unit are different when intraprediction is performed, intraprediction can be performed using a reference pixel based on a transform unit. Furthermore, intraprediction using N x N partitioning can be used only for the smaller coding unit.
[098] A parte de previsão 230 e 235 pode incluir uma parte de determinação de unidade de previsão, uma parte de interprevisão, e uma parte de intraprevisão. A parte de determinação de unidade de previsão pode receber várias informações como entrada de informações de unidade de previsão a partir da parte de decodificação por entropia 210, informações de modo de previsão do método de intraprevisão, informações relacionadas à previsão de movimento de um método de interprevisão, e semelhantes, identificar a unidade de previsão a partir da unidade de codificação atual, e determinar se a unidade de previsão realiza interprevisão ou intraprevisão. A parte de interprevisão 230 pode realizar interprevisão na unidade de previsão atual com base nas informações incluídas em pelo menos uma imagem entre imagens antes ou depois da imagem atual incluindo a unidade de previsão atual usando informações necessárias para interprevisão da unidade de previsão atual fornecida pelo codificador de vídeo. Alternativamente, a parte de interprevisão 230 pode realizar interprevisão com base nas informações em uma área parcial anteriormente reconstruída na imagem atual incluindo a unidade de previsão atual.[098] The prediction part 230 and 235 may include a prediction unit determination part, an inter-prediction part, and an intra-prediction part. The prediction unit determination part may receive various information as input—prediction unit information from the entropy decoding part 210, prediction mode information from the intra-prediction method, motion prediction-related information from an inter-prediction method, and the like, identify the prediction unit from the current coding unit, and determine whether the prediction unit performs inter-prediction or intra-prediction. The inter-prediction part 230 may perform inter-prediction on the current prediction unit based on information included in at least one picture among pictures before or after the current picture including the current prediction unit using information necessary for inter-prediction of the current prediction unit provided by the video encoder. Alternatively, the inter-prediction part 230 may perform inter-prediction based on information in a previously reconstructed partial area in the current picture including the current prediction unit.
[099] De modo a realizar interprevisão, pode ser determinado, com base na unidade de codificação, se o método de previsão de movimento da unidade de previsão incluída em uma unidade de codificação correspondente é um modo de salto, um modo de mesclagem, um modo de previsão de vetor de movimento avançado (modo de AMVP), ou um modo de cópia intrabloco.[099] In order to perform inter-prediction, it may be determined, based on the coding unit, whether the motion prediction method of the prediction unit included in a corresponding coding unit is a skip mode, a merge mode, an advanced motion vector prediction mode (AMVP mode), or an intra-block copy mode.
[100] A parte de intraprevisão 235 pode gerar um bloco de previsão com base nas informações sobre o pixel na imagem atual. Quando a unidade de previsão é uma unidade de previsão que realizou intraprevisão, a intraprevisão pode ser realizada com base nas informações de modo de intraprevisão da unidade de previsão fornecidas pelo codificador de vídeo. A parte de intraprevisão 235 pode incluir um filtro de suavização intra-adaptativa (AIS), uma parte de interpolação de pixel de referência, e um filtro de DC. O filtro de AIS é uma parte que realiza filtragem no pixel de referência do bloco atual, e pode determinar se deve ou não aplicar o filtro de acordo com o modo de previsão da unidade de previsão atual e aplicar o filtro. A filtragem de AIS pode ser realizada no pixel de referência do bloco atual usando o modo de previsão e informações de filtro de AIS da unidade de previsão fornecida pelo codificador de vídeo. Quando o modo de previsão do bloco atual é um modo que não realiza filtragem de AIS, o filtro de AIS pode não ser aplicado.[100] The intra-prediction part 235 may generate a prediction block based on information about the pixel in the current picture. When the prediction unit is a prediction unit that has performed intra-prediction, the intra-prediction may be performed based on the prediction unit's intra-prediction mode information provided by the video encoder. The intra-prediction part 235 may include an intra-adaptive smoothing (AIS) filter, a reference pixel interpolation part, and a DC filter. The AIS filter is a part that performs filtering on the reference pixel of the current block, and may determine whether or not to apply the filter according to the prediction mode of the current prediction unit and apply the filter. AIS filtering may be performed on the reference pixel of the current block using the prediction mode and AIS filter information of the prediction unit provided by the video encoder. When the prediction mode of the current block is a mode that does not perform AIS filtering, the AIS filter may not be applied.
[101] Quando o modo de previsão da unidade de previsão é uma unidade de previsão que realiza intraprevisão com base em um valor de pixel obtido interpolando o pixel de referência, a parte de interpolação de pixel de referência pode gerar um pixel de referência de uma unidade de pixel que tem um número inteiro valor ou um valor menor que o valor de número inteiro interpolando o pixel de referência. Quando o modo de previsão da unidade de previsão atual é um modo de previsão que gera um bloco de previsão sem interpolar o pixel de referência, o pixel de referência pode não ser interpolado. O filtro de DC pode gerar um bloco de previsão através da filtragem quando o modo de previsão do bloco atual é o Modo de Dc.[101] When the prediction mode of the prediction unit is a prediction unit that performs intraprediction based on a pixel value obtained by interpolating the reference pixel, the reference pixel interpolation part may generate a reference pixel of a pixel unit that has an integer value or a value less than the integer value by interpolating the reference pixel. When the prediction mode of the current prediction unit is a prediction mode that generates a prediction block without interpolating the reference pixel, the reference pixel may not be interpolated. The DC filter may generate a prediction block through filtering when the prediction mode of the current block is DC Mode.
[102] O bloco reconstruído ou imagem pode ser fornecido à parte de filtro 240. A parte de filtro 240 pode incluir um filtro de desbloqueio, uma unidade de correção de deslocamento, e uma ALF.[102] The reconstructed block or image may be provided to the filter portion 240. The filter portion 240 may include a deblocking filter, an offset correction unit, and an ALF.
[103] Informações sobre se um filtro de desbloqueio é aplicado a um bloco ou imagem correspondente e informações sobre se um filtro forte ou um filtro fraco é aplicado quando um filtro de desbloqueio é aplicado pode ser fornecido pelo codificador de vídeo. O filtro de desbloqueio do decodificador de vídeo pode ser fornecido com informações relacionadas ao filtro de desbloqueio fornecido pelo codificador de vídeo, e o decodificador de vídeo pode realizar filtragem de desbloqueio em um bloco correspondente.[103] Information about whether a deblocking filter is applied to a corresponding block or picture and information about whether a strong filter or a weak filter is applied when a deblocking filter is applied may be provided by the video encoder. The deblocking filter of the video decoder may be provided with information related to the deblocking filter provided by the video encoder, and the video decoder may perform deblocking filtering on a corresponding block.
[104] A unidade de correção de deslocamento pode realizar correção de deslocamento na imagem reconstruída com base no tipo de correção de deslocamento e nas informações de valor de deslocamento aplicadas ao vídeo quando a codificação é realizada.[104] The shift correction unit can perform shift correction on the reconstructed image based on the shift correction type and shift value information applied to the video when encoding is performed.
[105] A ALF pode ser aplicada a uma unidade de codificação com base nas informações sobre se deve ou não aplicar a ALF e informações sobre os coeficientes de ALF fornecidas pelo codificador. As informações de ALF podem ser fornecidas para serem incluídas em um conjunto de parâmetros específicos.[105] ALF may be applied to a coding unit based on information about whether or not to apply ALF and information about ALF coefficients provided by the encoder. ALF information may be provided to be included in a specific parameter set.
[106] A memória 245 pode armazenar a imagem reconstruída ou bloco e usá-lo como uma imagem de referência ou um bloco de referência e pode fornecer a imagem reconstruída a uma unidade de saída.[106] Memory 245 may store the reconstructed image or block and use it as a reference image or a reference block and may provide the reconstructed image to an output unit.
[107] A Figura 3 é uma vista que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente invenção.[107] Figure 3 is a view showing a basic coding tree unit in accordance with an embodiment of the present invention.
[108] Um bloco de codificação de um tamanho máximo pode ser definido como um bloco de árvore de codificação. Uma imagem é particionada em uma pluralidade de Unidades de Árvore de Codificação (CTUs). A unidade de árvore de codificação é uma unidade de codificação que tem um tamanho máximo e pode ser denominado como uma Unidade de Codificação Grande (LCU). A Figura 3 mostra um exemplo em que uma imagem é particionada em uma pluralidade de unidades de árvore de codificação.[108] A coding block of a maximum size can be defined as a coding tree block. An image is partitioned into a plurality of Coding Tree Units (CTUs). A coding tree unit is a coding unit that has a maximum size and can be termed as a Large Coding Unit (LCU). Figure 3 shows an example where an image is partitioned into a plurality of coding tree units.
[109] O tamanho da unidade de árvore de codificação pode ser definido em um nível de imagem ou um nível de sequência. Para este fim, as informações que indicam o tamanho da unidade de árvore de codificação podem ser sinalizadas por meio de um conjunto de parâmetro de imagem ou um conjunto de parâmetro de sequência.[109] The size of the coding tree unit may be set at a picture level or a sequence level. To this end, information indicating the size of the coding tree unit may be signaled via a picture parameter set or a sequence parameter set.
[110] Por exemplo, o tamanho da unidade de árvore de codificação para toda a imagem em uma sequência pode ser definido para 128 x 128. Alternativamente, no nível de imagem, qualquer um dentre 128 x 128 e 256 x 256 pode ser determinado como o tamanho da unidade de árvore de codificação. Por exemplo, o tamanho da unidade de árvore de codificação pode ser definido para 128 x 128 em uma primeira imagem, e o tamanho da unidade de árvore de codificação pode ser definido para 256 x 256 em uma segunda imagem.[110] For example, the coding tree unit size for the entire image in a sequence may be set to 128 x 128. Alternatively, at the image level, any of 128 x 128 and 256 x 256 may be determined as the coding tree unit size. For example, the coding tree unit size may be set to 128 x 128 on a first image, and the coding tree unit size may be set to 256 x 256 on a second image.
[111] Os blocos de codificação podem ser gerados particionando uma unidade de árvore de codificação. O bloco de codificação indica uma unidade básica para realizar codificação/decodificação. Por exemplo, a previsão ou transformada pode ser realizada para cada bloco de codificação, ou um modo de codificação de previsão pode ser determinado para cada bloco de codificação. Aqui, o modo de codificação de previsão indica um método de geração de uma imagem de previsão. Por exemplo, o modo de codificação de previsão pode incluir previsão dentro de uma imagem (intraprevisão), previsão entre imagens (interprevisão), referência de imagem atual (CPR) ou cópia intrabloco (IBC), ou previsão combinada. Para o bloco de codificação, um bloco de previsão pode ser gerado usando pelo menos um modo de codificação de previsão entre a intraprevisão, a interprevisão, a referência de imagem atual, e a previsão combinada.[111] Coding blocks can be generated by partitioning a coding tree unit. The coding block indicates a basic unit for performing encoding/decoding. For example, prediction or transform can be performed for each coding block, or a prediction coding mode can be determined for each coding block. Here, the prediction coding mode indicates a method of generating a prediction image. For example, the prediction coding mode can include prediction within an image (intra-prediction), prediction between images (inter-prediction), current image reference (CPR) or intra-block copy (IBC), or combined prediction. For the coding block, a prediction block can be generated using at least one prediction coding mode among intra-prediction, inter-prediction, current image reference, and combined prediction.
[112] As informações que indicam o modo de codificação de previsão do bloco atual podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações podem ser um sinalizador de 1 bit indicando se o modo de codificação de previsão é um modo intra ou um modo inter. Apenas quando o modo de codificação de previsão do bloco atual é determinado como o modo inter, a referência de imagem atual ou a previsão combinada podem ser usadas.[112] Information indicating the prediction coding mode of the current block may be signaled via a bit stream. For example, the information may be a 1-bit flag indicating whether the prediction coding mode is an intra mode or an inter mode. Only when the prediction coding mode of the current block is determined to be the inter mode can either the current picture reference or the combined prediction be used.
[113] A referência de imagem atual é para definir a imagem atual como uma imagem de referência e obter um bloco de previsão do bloco atual de uma área que já foi codificado/decodificado na imagem atual. Aqui, a imagem atual significa uma imagem incluindo o bloco atual. Informações que indicam se a referência de imagem atual é aplicada ao bloco atual podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações podem ser um sinalizador de 1 bit. Quando o sinalizador é verdadeiro, o modo de codificação de previsão do bloco atual pode ser determinado como a imagem atual referência, e quando o sinalizador é falso, o modo de previsão do bloco atual pode ser determinado como interprevisão.[113] The current picture reference is to set the current picture as a reference picture and obtain a prediction block of the current block from an area that has already been coded/decoded in the current picture. Here, the current picture means a picture including the current block. Information indicating whether the current picture reference is applied to the current block can be signaled via a bit stream. For example, the information can be a 1-bit flag. When the flag is true, the prediction coding mode of the current block can be determined as the current picture reference, and when the flag is false, the prediction mode of the current block can be determined as interprediction.
[114] Alternativamente, o modo de codificação de previsão do bloco atual pode ser determinado com base em um índice de imagem de referência. Por exemplo, quando o índice de imagem de referência indica a imagem atual, o modo de codificação de previsão do bloco atual pode ser determinado como a referência de imagem atual. Quando o índice de imagem de referência indica uma imagem exceto a imagem atual, o modo de codificação de previsão do bloco atual pode ser determinado como interprevisão. Isto é, a referência de imagem atual é um método de previsão usando as informações em uma área em que codificação/decodificação foi concluída na imagem atual, e interprevisão é um método de previsão usando as informações em uma outra imagem em que a codificação/decodificação foi concluída.[114] Alternatively, the prediction coding mode of the current block can be determined based on a reference picture index. For example, when the reference picture index indicates the current picture, the prediction coding mode of the current block can be determined as the current picture reference. When the reference picture index indicates a picture other than the current picture, the prediction coding mode of the current block can be determined as interprediction. That is, the current picture reference is a prediction method using the information in an area where encoding/decoding has been completed in the current picture, and interprediction is a prediction method using the information in another picture where encoding/decoding has been completed.
[115] A previsão combinada representa um modo de codificação no qual dois ou mais entre a intraprevisão, a interprevisão, e a referência de imagem atual são combinados. Por exemplo, quando a previsão combinada é aplicada, um primeiro bloco de previsão pode ser gerado com base em um entre a intraprevisão, a interprevisão, e a referência de imagem atual, e um segundo bloco de previsão pode ser gerado com base em outro. Quando o primeiro bloco de previsão e o segundo bloco de previsão são gerados, um bloco de previsão final pode ser gerado por meio de uma operação média ou uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. As informações que indicam sea previsão combinada é ou não aplicada podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit.[115] Combined prediction represents a coding mode in which two or more of the intra prediction, the inter prediction, and the current picture reference are combined. For example, when combined prediction is applied, a first prediction block may be generated based on one of the intra prediction, the inter prediction, and the current picture reference, and a second prediction block may be generated based on another. When the first prediction block and the second prediction block are generated, a final prediction block may be generated through an average operation or a weighted sum operation of the first prediction block and the second prediction block. Information indicating whether or not combined prediction is applied may be signaled through a bit stream. The information may be a 1-bit flag.
[116] A Figura 4 é uma vista que mostra vários tipos de particionamento de um bloco de codificação.[116] Figure 4 is a view showing various types of partitioning of a coding block.
[117] O bloco de codificação pode ser particionado em uma pluralidade de blocos de codificação com base em particionamento de árvore quádrupla, particionamento de árvore binária, ou particionamento de árvore ternária. O bloco de codificação particionado pode ser particionado novamente em uma pluralidade de blocos de codificação com base no particionamento de árvore quádrupla, no particionamento de árvore binária, ou no particionamento de árvore ternária.[117] The coding block may be partitioned into a plurality of coding blocks based on quad tree partitioning, binary tree partitioning, or ternary tree partitioning. The partitioned coding block may be partitioned again into a plurality of coding blocks based on quad tree partitioning, binary tree partitioning, or ternary tree partitioning.
[118] O particionamento de árvore quádrupla se refere a uma técnica de particionamento que particiona um bloco atual em quatro blocos. Como um resultado do particionamento de árvore quádrupla, o bloco atual pode ser particionado em quatro partições em formato quadrado (consultar, “SPLIT_QT” da Figura 4 (a)).[118] Quad-tree partitioning refers to a partitioning technique that partitions a current block into four blocks. As a result of quad-tree partitioning, the current block can be partitioned into four square-shaped partitions (see, “SPLIT_QT” of Figure 4(a)).
[119] O particionamento de árvore binária se refere a uma técnica de particionamento que particiona um bloco atual em dois blocos. O particionamento de um bloco atual em dois blocos ao longo da direção vertical (isto é, usando uma linha vertical cruzando o bloco atual) pode ser denominado como particionamento de árvore binária de direção vertical, e particionamento de um bloco atual em dois blocos ao longo da direção horizontal (isto é, usando uma linha horizontal cruzando o bloco atual) pode ser denominado como particionamento de árvore binária de direção horizontal. Como um resultado do particionamento de árvore binária, o bloco atual pode ser particionado em duas partições em formato não quadrado. “SPLIT_BT_VER” da Figura 4 (b) mostra um resultado do particionamento de árvore binária de direção vertical, e “SPLIT_BT_HOR” da Figura 4 (c) mostra um resultado do particionamento de árvore binária de direção horizontal.[119] Binary tree partitioning refers to a partitioning technique that partitions a current block into two blocks. Partitioning a current block into two blocks along the vertical direction (i.e., using a vertical line crossing the current block) can be termed as vertical-direction binary tree partitioning, and partitioning a current block into two blocks along the horizontal direction (i.e., using a horizontal line crossing the current block) can be termed as horizontal-direction binary tree partitioning. As a result of binary tree partitioning, the current block can be partitioned into two non-square-shaped partitions. “SPLIT_BT_VER” of Figure 4(b) shows a result of vertical-direction binary tree partitioning, and “SPLIT_BT_HOR” of Figure 4(c) shows a result of horizontal-direction binary tree partitioning.
[120] O particionamento de árvore ternária se refere a uma técnica de particionamento que particiona um bloco atual em três blocos. O particionamento de um bloco atual em três blocos ao longo da direção vertical (isto é, usando dois linhas verticais cruzando o bloco atual) pode ser denominado como particionamento de árvore ternária de direção vertical, e particionamento de um bloco atual em três blocos ao longo da direção horizontal (isto é, usando duas linhas horizontais cruzando o bloco atual) pode ser denominado como particionamento de árvore ternária de direção horizontal. Como um resultado do particionamento de árvore ternária, o bloco atual pode ser particionado em três partições em formato não quadrado. Neste ponto, a largura/altura de uma partição posicionada no centro do bloco atual pode ser duas vezes maior que a largura/altura das outras partições. “SPLIT_TT_VER” da Figura 4 (d) mostra um resultado do particionamento de árvore ternária de direção vertical, e “SPLIT_TT_HOR” da Figura 4 (e) mostra um resultado do particionamento de árvore ternária de direção horizontal.[120] Ternary tree partitioning refers to a partitioning technique that partitions a current block into three blocks. Partitioning a current block into three blocks along the vertical direction (i.e., using two vertical lines crossing the current block) can be termed as vertical-direction ternary tree partitioning, and partitioning a current block into three blocks along the horizontal direction (i.e., using two horizontal lines crossing the current block) can be termed as horizontal-direction ternary tree partitioning. As a result of ternary tree partitioning, the current block can be partitioned into three non-square-shaped partitions. At this point, the width/height of a partition positioned at the center of the current block can be twice as large as the width/height of the other partitions. “SPLIT_TT_VER” of Figure 4(d) shows a result of vertical direction ternary tree partitioning, and “SPLIT_TT_HOR” of Figure 4(e) shows a result of horizontal direction ternary tree partitioning.
[121] O número de vezes de particionamento de uma unidade de árvore de codificação pode ser definido como uma profundidade de particionamento. A profundidade máxima de particionamento de uma unidade de árvore de codificação pode ser determinada no nível de sequência ou imagem. Consequentemente, a profundidade máxima de partição de uma unidade de árvore de codificação pode ser diferente para cada sequência ou imagem.[121] The number of times a coding tree unit is partitioned can be defined as a partitioning depth. The maximum partitioning depth of a coding tree unit can be determined at the sequence or image level. Consequently, the maximum partition depth of a coding tree unit can be different for each sequence or image.
[122] Alternativamente, a profundidade de particionamento máxima para cada técnica de particionamento pode ser determinada individualmente. Por exemplo, a profundidade de particionamento máxima permitida para o particionamento de árvore quádrupla pode ser diferente da profundidade de particionamento máxima permitida para o particionamento de árvore binária e/ou particionamento de árvore ternária.[122] Alternatively, the maximum partitioning depth for each partitioning technique may be determined individually. For example, the maximum allowable partitioning depth for quad tree partitioning may be different from the maximum allowable partitioning depth for binary tree partitioning and/or ternary tree partitioning.
[123] O codificador pode sinalizar informações que indicam pelo menos um dentre o tipo de particionamento e a profundidade de particionamento do bloco atual por meio de um fluxo de bits. O decodificador pode determinar o tipo de particionamento e a profundidade de particionamento de uma unidade de árvore de codificação com base nas informações analisadas a partir do fluxo de bits.[123] The encoder may signal information indicating at least one of the partitioning type and partitioning depth of the current block via a bit stream. The decoder may determine the partitioning type and partitioning depth of a coding tree unit based on information parsed from the bit stream.
[124] A Figura 5 é uma vista que mostra um padrão de particionamento de uma unidade de árvore de codificação.[124] Figure 5 is a view showing a partitioning pattern of a coding tree unit.
[125] O particionamento de um bloco de codificação usando uma técnica de particionamento como particionamento de árvore quádrupla, particionamento de árvore binária, e/ou particionamento de árvore ternária pode ser denominado como particionamento de múltiplas árvores.[125] Partitioning a cipher block using a partitioning technique such as quad tree partitioning, binary tree partitioning, and/or ternary tree partitioning can be termed as multi-tree partitioning.
[126] Os blocos de codificação gerados aplicando o particionamento de múltiplas árvores a um bloco de codificação pode ser denominado como blocos de codificação inferiores. Quando a profundidade de particionamento de um bloco de codificação é k, a profundidade de particionamento dos blocos de codificação inferiores é definida para k + 1.[126] The coding blocks generated by applying multi-tree partitioning to a coding block can be termed as lower coding blocks. When the partitioning depth of a coding block is k, the partitioning depth of the lower coding blocks is set to k + 1.
[127] Ao contrário, para blocos de codificação que tem uma profundidade de particionamento de k + 1, um bloco de codificação que tem uma profundidade de particionamento de k pode ser denominado como um bloco de codificação superior.[127] Conversely, for coding blocks that have a partitioning depth of k + 1, a coding block that has a partitioning depth of k can be termed as an upper coding block.
[128] O tipo de particionamento do bloco de codificação atual pode ser determinado com base em pelo menos um dentre um tipo de particionamento de um bloco de codificação superior e um tipo de particionamento de um bloco de codificação vizinho. Aqui, o bloco de codificação vizinho é um bloco de codificação adjacente ao bloco de codificação atual e pode incluir pelo menos um dentre um bloco vizinho superior e um bloco vizinho esquerdo do bloco de codificação atual e um bloco vizinho adjacente ao canto superior esquerdo. Aqui, o tipo de particionamento pode incluir pelo menos um dentre um particionamento de árvore quádrupla ou não, seja um particionamento de árvore binária ou não, direção de particionamento de árvore binária, seja ou não um particionamento de árvore ternário e direção de particionamento de árvore ternária.[128] The partitioning type of the current coding block may be determined based on at least one of a partitioning type of a top coding block and a partitioning type of a neighboring coding block. Here, the neighboring coding block is a coding block adjacent to the current coding block, and may include at least one of a top neighboring block and a left neighboring block of the current coding block, and a top-left adjacent neighboring block. Here, the partitioning type may include at least one of a quad tree partitioning or not, whether or not it is a binary tree partitioning, binary tree partitioning direction, whether or not it is a ternary tree partitioning, and ternary tree partitioning direction.
[129] De modo a determinar um tipo de particionamento de um bloco de codificação, informações que indicam se o bloco de codificação pode ou não ser particionado podem ser sinalizadas por meio de um fluxo de bits. As informações são um sinalizador de 1 bit de “split_cu_flag”, e quando o sinalizador é verdadeiro, indicam que o bloco de codificação é particionado por um particionamento de árvore quádrupla técnica.[129] In order to determine a partitioning type of a cipher block, information indicating whether or not the cipher block can be partitioned can be signaled via a bit stream. The information is a 1-bit flag “split_cu_flag”, and when the flag is true, it indicates that the cipher block is partitioned by a quad-tree partitioning technique.
[130] Quando split_cu_flag é verdadeiro, informações que indicam se o bloco de codificação é particionado em árvore quádrupla podem ser sinalizadas por meio de um fluxo de bits. As informações são um sinalizador de 1 bit de split_qt_flag, e quando o sinalizador é verdadeiro, o bloco de codificação pode ser particionado em quatro blocos.[130] When split_cu_flag is true, information indicating whether the cipher block is quad-tree partitioned can be signaled via a bit stream. The information is a 1-bit flag of split_qt_flag, and when the flag is true, the cipher block can be partitioned into four blocks.
[131] Por exemplo, no exemplo mostrado na Figura 5, como uma unidade de árvore de codificação é particionada em árvore quádrupla, quatro blocos de codificação que tem uma profundidade de particionamento de 1 são gerados. Além disso, é mostrado que o particionamento de árvore quádrupla é aplicado novamente ao primeiro e quarto blocos de codificação entre os quatro blocos de codificação gerada como um resultado do particionamento de árvore quádrupla. Como um resultado, quatro blocos de codificação que tem uma profundidade de particionamento de 2 podem ser gerados.[131] For example, in the example shown in Figure 5, as a coding tree unit is quad-tree partitioned, four coding blocks that have a partitioning depth of 1 are generated. Furthermore, it is shown that quad-tree partitioning is applied again to the first and fourth coding blocks among the four coding blocks generated as a result of quad-tree partitioning. As a result, four coding blocks that have a partitioning depth of 2 can be generated.
[132] Além disso, os blocos de codificação que tem uma profundidade de particionamento de 3 podem ser gerados aplicando o particionamento de árvore quádrupla novamente a um bloco de codificação que tem uma profundidade de particionamento de 2.[132] Furthermore, cipher blocks that have a partitioning depth of 3 can be generated by applying quad-tree partitioning again to a cipher block that has a partitioning depth of 2.
[133] Quando o particionamento de árvore quádrupla não é aplicado ao bloco de codificação, se particionamento de árvore binária ou particionamento de árvore ternária é realizado no bloco de codificação pode ser determinado considerando pelo menos um dentre o tamanho do bloco de codificação, se o bloco de codificação é posicionado no limite da imagem, a profundidade de particionamento máxima, e o tipo de particionamento de um bloco vizinho. Quando é determinado realizar o particionamento de árvore binária ou particionamento de árvore ternária no bloco de codificação, informações que indicam a direção de particionamento podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit de mtt_split_cu_vertical_flag. Com base no sinalizador, se a direção de particionamento é uma direção vertical ou uma direção horizontal pode ser determinada. Além disso, as informações que indicam se particionamento de árvore binária ou particionamento de árvore ternária é aplicado ao bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit de mtt_split_cu_binary_flag. Com base no sinalizador, se particionamento de árvore binária ou particionamento de árvore ternária é aplicado ao bloco de codificação pode ser determinado.[133] When quad-tree partitioning is not applied to the coding block, whether binary tree partitioning or ternary tree partitioning is performed on the coding block can be determined by considering at least one of the coding block size, whether the coding block is positioned on the image boundary, the maximum partitioning depth, and the partitioning type of a neighboring block. When it is determined to perform binary tree partitioning or ternary tree partitioning on the coding block, information indicating the partitioning direction can be signaled via a bit stream. The information can be a 1-bit flag of mtt_split_cu_vertical_flag. Based on the flag, whether the partitioning direction is a vertical direction or a horizontal direction can be determined. Furthermore, information indicating whether binary tree partitioning or ternary tree partitioning is applied to the coding block can be signaled via a bit stream. The information can be a 1-bit flag from mtt_split_cu_binary_flag. Based on the flag, whether binary tree partitioning or ternary tree partitioning is applied to the cipher block can be determined.
[134] Por exemplo, no exemplo mostrado na Figura 5, é mostrado que o particionamento de árvore binária de direção vertical é aplicado a um bloco de codificação que tem uma profundidade de particionamento de 1, o particionamento de árvore ternária de direção vertical é aplicado ao bloco de codificação no lado esquerdo entre os blocos de codificação gerada como um resultado do particionamento, e o particionamento de árvore binária de direção vertical é aplicado ao bloco de codificação do lado direito.[134] For example, in the example shown in Figure 5, it is shown that vertical-directed binary tree partitioning is applied to a coding block that has a partitioning depth of 1, vertical-directed ternary tree partitioning is applied to the coding block on the left side among the coding blocks generated as a result of the partitioning, and vertical-directed binary tree partitioning is applied to the coding block on the right side.
[135] Quando um aparelho para codificação ou decodificação de um vídeo é implementado, há um problema em que uma região maior que um valor limítrofe é difícil de processar devido ao desempenho do hardware. Por exemplo, há um problema em que quando é possível processar simultaneamente até 4.096 amostras com base no desempenho do hardware, as unidades de dados de tamanho 64 x 64 devem ser acessadas e processadas de forma redundante, e os dados não podem ser processados simultaneamente para as regiões que têm amostras de mais de 4.096. Assim, uma unidade básica de processamento de dados pode ser definida como uma unidade básica de dados baseada em pipeline (Unidade de Dados de Processamento Virtual, VPDU, doravante, denominada como uma unidade básica de dados).[135] When implementing a video encoding or decoding device, there is a problem where a region larger than a threshold value is difficult to process due to hardware performance. For example, when it is possible to simultaneously process up to 4,096 samples based on hardware performance, data units of size 64 x 64 must be accessed and processed redundantly, and data cannot be processed simultaneously for regions with samples larger than 4,096. Thus, a basic data processing unit can be defined as a pipeline-based basic data unit (Virtual Processing Data Unit, VPDU, hereinafter referred to as a basic data unit).
[136] A unidade básica de dados pode ser classificada como do tipo quadrado, não quadrado ou não retangular.[136] The basic data unit can be classified as square, non-square, or non-rectangular.
[137] A Figura 6 é uma vista que mostra o formato de uma unidade básica de dados.[137] Figure 6 is a view showing the shape of a basic data unit.
[138] Unidades básicas de dados podem incluir amostras tantas ou menores do que o número máximo de amostras que podem ser processadas simultaneamente. Por exemplo, como mostrado no exemplo da Figura 6 (a), blocos quadrados com um tamanho de 64 x 64 podem ser definidos como unidades básicas de dados. Alternativamente, blocos não quadrados podem ser definidos como unidades básicas de dados. Por exemplo, como mostrado no exemplo da Figura 6 (b) ou 6 (c), um bloco que tem um tamanho de 32 x 128 ou um bloco que tem um tamanho de 64 x 32 pode ser definido como uma unidade básica de dados.[138] Basic data units may include samples as large as or smaller than the maximum number of samples that can be processed simultaneously. For example, as shown in the example in Figure 6(a), square blocks with a size of 64 x 64 can be defined as basic data units. Alternatively, non-square blocks can be defined as basic data units. For example, as shown in the example in Figure 6(b) or 6(c), a block that has a size of 32 x 128 or a block that has a size of 64 x 32 can be defined as a basic data unit.
[139] Embora não mostrado, unidades básicas de dados triangulares, em formato de L e poligonais podem ser definidas.[139] Although not shown, basic triangular, L-shaped, and polygonal data units can be defined.
[140] As informações para determinar uma unidade básica de dados podem ser sinalizadas por meio de um fluxo de bits. As informações podem determinar pelo menos um dentre o tamanho e o formato da unidade básica de dados. Com base nas informações, pode-se determinar se deve ou não permitir uma unidade básica de dados não quadrada ou se deve permitir uma unidade básica de dados não retangular.[140] Information for determining a basic data unit may be signaled via a bit stream. The information may determine at least one of the size and shape of the basic data unit. Based on the information, it may be determined whether or not to allow a non-square basic data unit or whether to allow a non-rectangular basic data unit.
[141] Alternativamente, pelo menos um dentre o tamanho e o formato de uma unidade básica de dados pode ser predefinido no codificador e no decodificador.[141] Alternatively, at least one of the size and format of a basic unit of data may be predefined in the encoder and decoder.
[142] Permitir ou não um tipo de particionamento de um bloco de codificação pode ser determinado considerando o tamanho de uma unidade básica de dados. Por exemplo, quando um bloco de codificação gerado como resultado do particionamento de um bloco de codificação é maior do que a unidade básica de dados, o particionamento pode não ser permitido. Alternativamente, quando um bloco de codificação não quadrado gerado como resultado do particionamento de um bloco de codificação é maior do que a unidade básica de dados, o particionamento pode não ser permitido. Por exemplo, quando a largura ou a altura de um bloco de codificação é maior que um valor limítrofe ou quando o número de amostras incluídas em um bloco de codificação é maior que um valor limítrofe, árvore binária ou particionamento de árvore ternária podem não ser permitidos. Consequentemente, a codificação de informações relacionadas à árvore binária ou particionamento da árvore ternária pode ser omitida.[142] Whether or not a type of coding block partitioning is allowed can be determined by considering the size of a basic data unit. For example, when a coding block generated as a result of coding block partitioning is larger than the basic data unit, the partitioning may not be allowed. Alternatively, when a non-square coding block generated as a result of coding block partitioning is larger than the basic data unit, the partitioning may not be allowed. For example, when the width or height of a coding block is greater than a threshold value, or when the number of samples included in a coding block is greater than a threshold value, binary tree or ternary tree partitioning may not be allowed. Consequently, encoding information related to binary tree or ternary tree partitioning may be omitted.
[143] Alternativamente, pode ser definido para necessariamente particionar um bloco de codificação maior do que a unidade básica de dados. Alternativamente, ele pode ser configurado para executar necessariamente o particionamento da árvore binária ou o particionamento da árvore ternária em um bloco de codificação maior que a unidade básica de dados. Por conseguinte, para um bloco de codificação maior que a unidade básica de dados, embora o sinalizador split_flag indicando se deve ou não particionar um bloco de codificação não seja codificado, o valor do sinalizador pode ser derivado como 1.[143] Alternatively, it may be set to necessarily partition a coding block larger than the basic data unit. Alternatively, it may be set to necessarily perform binary tree partitioning or ternary tree partitioning on a coding block larger than the basic data unit. Therefore, for a coding block larger than the basic data unit, although the split_flag flag indicating whether or not to partition a coding block is not encoded, the value of the flag may be derived as 1.
[144] Como um outro exemplo, um bloco de codificação maior que a unidade básica de dados pode ser particionada em uma pluralidade de sub-blocos. Aqui, o sub- bloco pode ser definido como uma unidade de previsão, que é uma unidade básica para previsão, ou uma unidade de transformada, que é uma unidade básica para transformada e/ou quantização. Neste ponto, o particionamento de um bloco de codificação em uma pluralidade de unidades de previsão pode ser definido como particionamento de unidade de previsão VPDU, e particionamento de um bloco de codificação em uma pluralidade de unidades de transformada pode ser definido como particionamento de unidade de transformada VPDU.[144] As another example, a coding block larger than the basic data unit may be partitioned into a plurality of subblocks. Here, the subblock may be defined as a prediction unit, which is a basic unit for prediction, or a transform unit, which is a basic unit for transform and/or quantization. At this point, partitioning a coding block into a plurality of prediction units may be defined as VPDU prediction unit partitioning, and partitioning a coding block into a plurality of transform units may be defined as VPDU transform unit partitioning.
[145] Pelo menos um dentre o particionamento de unidade de previsão VPDU e o particionamento de unidade de transformada VPDU pode ser aplicado a um bloco de codificação. O tipo de particionamento de um bloco de codificação de acordo com aplicação do particionamento de unidade de previsão VPDU pode ser definido para ser igual ao tipo de particionamento de um bloco de codificação de acordo com aplicação do particionamento de unidade de transformada VPDU.[145] At least one of VPDU prediction unit partitioning and VPDU transform unit partitioning may be applied to a coding block. The partitioning type of a coding block according to the application of VPDU prediction unit partitioning may be set to be the same as the partitioning type of a coding block according to the application of VPDU transform unit partitioning.
[146] Quando apenas o particionamento de unidade de previsão VPDU é aplicado a um bloco de codificação, a previsão é realizada para cada sub-bloco, mas transformada e/ou quantização podem ser realizadas para um bloco de codificação. Neste ponto, um modo de previsão como um modo de codificação de previsão, um modo de intraprevisão, ou um modo de interprevisão pode ser determinado para um bloco de codificação.[146] When only VPDU prediction unit partitioning is applied to a coding block, prediction is performed for each sub-block, but transform and/or quantization may be performed for a coding block. At this point, a prediction mode such as a prediction coding mode, an intra-prediction mode, or an inter-prediction mode may be determined for a coding block.
[147] Quando apenas o particionamento de unidade de transformada VPDU é aplicado a um bloco de codificação, a previsão é realizada para um sub-bloco, mas transformada e/ou quantização pode ser realizada para cada sub-bloco.[147] When only VPDU transform unit partitioning is applied to a coding block, prediction is performed for a sub-block, but transform and/or quantization may be performed for each sub-block.
[148] As Figuras 7 e 8 são vistas que mostram exemplos de particionamento de um bloco de codificação em uma pluralidade de sub-blocos.[148] Figures 7 and 8 are views showing examples of partitioning a coding block into a plurality of sub-blocks.
[149] A Figura 7 é uma vista que mostra um padrão de particionamento quando apenas uma unidade básica de dados quadrada é permitida, e a Figura 8 é uma vista que mostra um padrão de particionamento quando uma unidade básica de dados quadrada e uma unidade básica de dados não quadrada são permitidas.[149] Figure 7 is a view showing a partitioning pattern when only one square basic data unit is allowed, and Figure 8 is a view showing a partitioning pattern when one square basic data unit and one non-square basic data unit are allowed.
[150] Quando é considerado que apenas unidades básicas de dados quadradas são permitidas, nas Figuras 7 (a) e 7 (b), CU0 e CU2 são definidas como duas diferentes VPDUs, e CU1 é definida como quatro diferentes VPDUs. Consequentemente, a CU0 e CU2 podem ser particionadas em dois sub-blocos, e a CU1 pode ser particionada em quatro sub-blocos.[150] When it is considered that only square basic data units are allowed, in Figures 7(a) and 7(b), CU0 and CU2 are defined as two different VPDUs, and CU1 is defined as four different VPDUs. Consequently, CU0 and CU2 can be partitioned into two sub-blocks, and CU1 can be partitioned into four sub-blocks.
[151] Quando é considerado que unidades básicas de dados quadradas e unidades básicas de dados não quadradas são permitidas, nas Figuras 8 (a) e 8 (b), a CU0 e CU2 podem ser definidas como uma VPDU, enquanto a CU1 pode ser definida usando duas diferentes VPDUs. Consequentemente, a CU0 e CU2 não são particionadas em sub-blocos, enquanto a CU1 pode ser particionada em dois sub-blocos.[151] When it is considered that square basic data units and non-square basic data units are allowed, in Figures 8(a) and 8(b), CU0 and CU2 can be defined as one VPDU, while CU1 can be defined using two different VPDUs. Consequently, CU0 and CU2 are not partitioned into sub-blocks, while CU1 can be partitioned into two sub-blocks.
[152] Neste ponto, a CU1 pode ser particionada em sub-blocos quadrados ou sub-blocos não quadrados. Por exemplo, a CU1 pode ser particionada em dois sub-blocos quadrados com base em uma linha horizontal que particiona a CU1 para cima e para baixo. Alternativamente, a CU1 pode ser particionada em dois sub-blocos não quadrados com base em uma linha vertical que particiona a CU1 à esquerda e à direita.[152] At this point, CU1 can be partitioned into square subblocks or non-square subblocks. For example, CU1 can be partitioned into two square subblocks based on a horizontal line that partitions CU1 up and down. Alternatively, CU1 can be partitioned into two non-square subblocks based on a vertical line that partitions CU1 left and right.
[153] Quando há uma pluralidade de candidatos de tipo de particionamento aplicáveis a um bloco de codificação, informações que indicam qualquer uma dentre a pluralidade de candidatos de tipo de particionamento podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações podem indicar se um bloco de codificação é particionado em sub-blocos quadrados ou se um bloco de codificação é particionado em sub- blocos não quadrados.[153] When there are a plurality of partitioning type candidates applicable to a coding block, information indicating any of the plurality of partitioning type candidates may be signaled via a bit stream. For example, the information may indicate whether a coding block is partitioned into square subblocks or whether a coding block is partitioned into non-square subblocks.
[154] Alternativamente, o particionamento de um bloco de codificação em sub-blocos quadrados pode ser definido para ter uma prioridade mais alta que de particionamento de um bloco de codificação em sub-blocos não quadrados. Por exemplo, o particionamento de um bloco de codificação em sub-blocos não quadrados pode ser permitido quando não é permitido particionar um bloco de codificação em sub-blocos quadrados.[154] Alternatively, partitioning a coding block into square subblocks may be set to have a higher priority than partitioning a coding block into non-square subblocks. For example, partitioning a coding block into non-square subblocks may be allowed when partitioning a coding block into square subblocks is not allowed.
[155] Alternativamente, o tipo de particionamento de um bloco de codificação pode ser determinado com base no tipo de particionamento de um bloco de codificação de nó pai. Por exemplo, pode ser configurado particionar um bloco de codificação em sub-blocos quadrados quando o bloco de codificação de nó pai é particionado com base em uma árvore ternária. Por outro lado, pode ser configurado particionar um bloco de codificação em sub-blocos não quadrados quando o bloco de codificação de nó pai é particionado com base em uma árvore binária ou uma árvore ternária.[155] Alternatively, the partitioning type of a cipher block may be determined based on the partitioning type of a parent node cipher block. For example, it may be configured to partition a cipher block into square subblocks when the parent node cipher block is partitioned based on a ternary tree. Conversely, it may be configured to partition a cipher block into non-square subblocks when the parent node cipher block is partitioned based on a binary tree or a ternary tree.
[156] A interprevisão é um modo de codificação de previsão que prevê um bloco atual usando informações de uma imagem anterior. Por exemplo, um bloco na mesma posição que o bloco atual na imagem anterior (em seguida, um bloco colocado) pode ser definido como o bloco de previsão do bloco atual. Em seguida, um bloco de previsão gerado com base em um bloco na mesma posição que o bloco atual será denominado como um bloco de previsão colocado.[156] Interprediction is a prediction coding mode that predicts a current block using information from a previous image. For example, a block at the same position as the current block in the previous image (then a placed block) can be defined as the prediction block of the current block. Then, a prediction block generated based on a block at the same position as the current block will be termed as a placed prediction block.
[157] Por outro lado, quando um objeto existente na imagem anterior moveu para uma outra posição na imagem atual, o bloco atual pode ser eficazmente previsto usando um movimento do objeto. Por exemplo, quando a direção de movimento e o tamanho de um objeto podem ser conhecidos comparando a imagem anterior e a imagem atual, um bloco de previsão (ou uma imagem de previsão) do bloco atual pode ser gerado considerando as informações de movimento do objeto. Em seguida, o bloco de previsão gerado usando as informações de movimento pode ser denominado como um bloco de previsão de movimento.[157] On the other hand, when an object existing in the previous image has moved to another position in the current image, the current block can be effectively predicted using a motion of the object. For example, when the motion direction and size of an object can be known by comparing the previous image and the current image, a prediction block (or a prediction image) of the current block can be generated considering the motion information of the object. Then, the prediction block generated using the motion information can be termed as a motion prediction block.
[158] Um bloco residual pode ser gerado subtraindo o bloco de previsão a partir do bloco atual. Neste ponto, quando existe um movimento de um objeto, a energia do bloco residual pode ser reduzida usando o bloco de previsão de movimento em vez do bloco de previsão colocado e, portanto, o desempenho de compressão do bloco residual pode ser melhorado.[158] A residual block can be generated by subtracting the prediction block from the current block. At this point, when there is a motion of an object, the energy of the residual block can be reduced by using the motion prediction block instead of the placed prediction block, and therefore the compression performance of the residual block can be improved.
[159] Como descrito acima, a geração de um bloco de previsão usando informações de movimento pode ser denominada como previsão de compensação de movimento. Na maioria interprevisão, um bloco de previsão pode ser gerado com base na previsão de compensação de movimento.[159] As described above, generating a prediction block using motion information can be referred to as motion compensation prediction. In most interprediction, a prediction block can be generated based on motion compensation prediction.
[160] As informações de movimento podem incluir pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão, e um índice de peso bidirecional. O vetor de movimento representa a direção de movimento e o tamanho de um objeto. O índice de imagem de referência especifica uma imagem de referência do bloco atual entre imagens de referência incluídas em uma lista de imagem de referência. A direção de previsão indica qualquer um dentre previsão L0 unidirecional, previsão L1 unidirecional, e previsão bidirecional (previsão L0 e previsão L1). De acordo com a direção de previsão do bloco atual, pelo menos uma dentre informações de movimento na direção L0 e informações de movimento na direção L1 pode ser usada. O índice de peso bidirecional especifica um valor de ponderação aplicado a um bloco de previsão L0 e um valor de ponderação aplicado a um bloco de previsão L1.[160] The motion information may include at least one of a motion vector, a reference picture index, a prediction direction, and a bidirectional weight index. The motion vector represents the motion direction and size of an object. The reference picture index specifies a reference picture of the current block among reference pictures included in a reference picture list. The prediction direction indicates any one of unidirectional L0 prediction, unidirectional L1 prediction, and bidirectional prediction (L0 prediction and L1 prediction). According to the prediction direction of the current block, at least one of motion information in the L0 direction and motion information in the L1 direction may be used. The bidirectional weight index specifies a weighting value applied to an L0 prediction block and a weighting value applied to an L1 prediction block.
[161] A Figura 9 é um fluxograma que ilustra um método de interprevisão de acordo com uma modalidade da presente invenção.[161] Figure 9 is a flowchart illustrating an interprediction method in accordance with an embodiment of the present invention.
[162] Com referência à Figura 9, o método de interprevisão inclui as etapas de determinação de um modo de interprevisão de um bloco atual (S901), adquirir informações de movimento do bloco atual de acordo com o modo de interprevisão determinado (S902), e realizar previsão de compensação de movimento para o bloco atual com base nas informações de movimento adquiridas (S903).[162] Referring to Figure 9, the interprediction method includes the steps of determining an interprediction mode of a current block (S901), acquiring motion information of the current block according to the determined interprediction mode (S902), and performing motion compensation prediction for the current block based on the acquired motion information (S903).
[163] Aqui, o modo de interprevisão representa várias técnicas para determinar informações de movimento do bloco atual, e pode incluir um modo de interprevisão que usa informações de movimento de translação e um modo de interprevisão que usa informações de movimento afim. Por exemplo, o modo de interprevisão usando informações de movimento de translação pode incluir um modo de mesclagem e um modo de previsão de vetor de movimento avançado, e o modo de interprevisão usando informações de movimento afim pode incluir um modo de mesclagem afim e um modo de previsão de vetor de movimento afim. As informações de movimento do bloco atual podem ser determinadas com base em um bloco vizinho adjacente ao bloco atual ou informações analisadas de um fluxo de bits de acordo com o modo de interprevisão.[163] Here, the interprediction mode represents various techniques for determining motion information of the current block, and may include an interprediction mode that uses translational motion information and an interprediction mode that uses affine motion information. For example, the interprediction mode using translational motion information may include a blending mode and an advanced motion vector prediction mode, and the interprediction mode using affine motion information may include an affine blending mode and an affine motion vector prediction mode. The motion information of the current block may be determined based on a neighboring block adjacent to the current block or information analyzed from a bit stream according to the interprediction mode.
[164] As informações de movimento do bloco atual podem ser derivadas de informações de movimento de um outro bloco. Aqui, um outro bloco pode ser um bloco codificado/decodificado pela interprevisão antes do bloco atual. A definição das as informações de movimento do bloco atual como iguais às informações de movimento de um outro bloco pode ser definida como um modo de mesclagem. Além disso, definir o vetor de movimento de um outro bloco como o valor de previsão do vetor de movimento do bloco atual pode ser definido como um modo de previsão de vetor de movimento avançado.[164] The motion information of the current block may be derived from the motion information of another block. Here, another block may be a block encoded/decoded by interprediction before the current block. Setting the motion information of the current block to be equal to the motion information of another block may be defined as a blending mode. Furthermore, setting the motion vector of another block to be the prediction value of the motion vector of the current block may be defined as an advanced motion vector prediction mode.
[165] A Figura 10 é um fluxograma que ilustra um processo de derivação de informações de movimento de um bloco atual usando um modo de mesclagem.[165] Figure 10 is a flowchart illustrating a process of deriving motion information from a current block using a blending mode.
[166] Um candidato a mesclagem do bloco atual pode ser derivado (S1001). O candidato a mesclagem do bloco atual pode ser derivado de um bloco codificado/decodificado pela interprevisão antes do bloco atual.[166] A merge candidate of the current block may be derived (S1001). The merge candidate of the current block may be derived from a block encoded/decoded by interprediction before the current block.
[167] A Figura 11 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.[167] Figure 11 is a view showing an example of candidate blocks used to derive a merge candidate.
[168] Os blocos candidatos podem incluir pelo menos um dentre blocos vizinhos incluindo uma amostra adjacente ao bloco atual ou blocos não vizinhos incluindo uma amostra não adjacente ao bloco atual. Em seguida, amostras para determinar blocos candidatos são definidas como amostras de referência. Além disso, uma amostra de referência adjacente ao bloco atual é denominada como uma amostra de referência vizinha, e uma amostra de referência não adjacente ao bloco atual é denominada como uma amostra de referência não vizinha.[168] Candidate blocks may include at least one of neighboring blocks including a sample adjacent to the current block or non-neighboring blocks including a sample not adjacent to the current block. Then, samples for determining candidate blocks are defined as reference samples. Furthermore, a reference sample adjacent to the current block is referred to as a neighboring reference sample, and a reference sample not adjacent to the current block is referred to as a non-neighboring reference sample.
[169] A amostra de referência vizinha pode ser incluída em uma coluna vizinha da coluna mais à esquerda do bloco atual ou uma linha vizinha da linha mais alta do bloco atual. Por exemplo, quando as coordenadas da amostra superior esquerda do bloco atual são (0, 0), pelo menos uma entre um bloco incluindo uma amostra de referência na posição de (-1, H-1), um bloco incluindo uma amostra de referência na posição de (W-1, -1), um bloco incluindo uma amostra de referência na posição de (W, -1), um bloco incluindo uma amostra de referência na posição de (-1, H), e um bloco incluindo uma amostra de referência na posição de (-1, -1) pode ser usado como um bloco candidato. Com referência ao desenho, blocos vizinhos de índice 0 a 4 podem ser usados como blocos candidatos.[169] The neighboring reference sample may be included in a neighboring column of the leftmost column of the current block or a neighboring row of the topmost row of the current block. For example, when the coordinates of the top-left sample of the current block are (0, 0), at least one of a block including a reference sample at the position of (-1, H-1), a block including a reference sample at the position of (W-1, -1), a block including a reference sample at the position of (W, -1), a block including a reference sample at the position of (-1, H), and a block including a reference sample at the position of (-1, -1) may be used as a candidate block. With reference to the drawing, neighboring blocks of index 0 to 4 may be used as candidate blocks.
[170] A amostra de referência não vizinha representa uma amostra do qual pelo menos uma dentre uma distância do eixo x e uma distância do eixo y de uma amostra de referência adjacente ao bloco atual tem um valor predefinido. Por exemplo, pelo menos um entre um bloco incluindo uma amostra de referência da qual a distância do eixo x da amostra de referência esquerda é um valor predefinido, um bloco incluindo uma amostra não vizinha da qual a distância do eixo y da amostra de referência superior é um valor predefinido e um bloco incluindo uma amostra não vizinha da qual a distância do eixo x e a distância do eixo y da amostra de referência superior esquerda são valores predefinidos pode ser usado como um bloco candidato. Os valores predefinidos podem ser um número natural, como 4, 8, 12, 16 ou semelhantes. Com referência ao desenho, pelo menos um entre os blocos do índice 5 a 26 pode ser usado como um bloco candidato.[170] The non-neighboring reference sample represents a sample of which at least one of an x-axis distance and a y-axis distance of a reference sample adjacent to the current block has a predefined value. For example, at least one of a block including a reference sample of which the x-axis distance of the left reference sample is a predefined value, a block including a non-neighboring sample of which the y-axis distance of the top reference sample is a predefined value, and a block including a non-neighboring sample of which the x-axis distance and the y-axis distance of the top left reference sample are predefined values can be used as a candidate block. The predefined values can be a natural number such as 4, 8, 12, 16, or the like. Referring to the drawing, at least one of the blocks of index 5 to 26 can be used as a candidate block.
[171] Alternativamente, um bloco candidato que não pertence à mesma unidade de árvore de codificação como o bloco atual pode ser definido para ser indisponível como um candidato a mesclagem. Por exemplo, quando uma amostra de referência desvia a partir do limite superior de uma unidade de árvore de codificação à qual o bloco atual pertence, um bloco candidato incluindo a amostra de referência pode ser definido para ser indisponível como um candidato a mesclagem.[171] Alternatively, a candidate block that does not belong to the same coding tree unit as the current block may be set to be unavailable as a merge candidate. For example, when a reference sample deviates from the upper bound of a coding tree unit to which the current block belongs, a candidate block including the reference sample may be set to be unavailable as a merge candidate.
[172] Um candidato a mesclagem também pode ser derivado de um bloco vizinho temporalmente incluído em uma imagem diferente a partir do bloco atual. Por exemplo, um candidato a mesclagem pode ser derivado de um bloco colocado incluído em uma imagem colocada. Qualquer uma dentre as imagens de referência incluídas na lista de imagem de referência pode ser definida como uma imagem colocada. Informações de índice para identificar a imagem colocada entre as imagens de referência podem ser sinalizadas por meio de um fluxo de bits. Alternativamente, uma imagem de referência que tem um índice predefinido entre as imagens de referência pode ser determinada como a imagem colocada.[172] A merge candidate may also be derived from a temporally neighboring block included in a different picture from the current block. For example, a merge candidate may be derived from a placed block included in a placed picture. Any of the reference pictures included in the reference picture list may be defined as a placed picture. Index information to identify the placed picture among the reference pictures may be signaled via a bitstream. Alternatively, a reference picture that has a predefined index among the reference pictures may be determined as the placed picture.
[173] As informações de movimento do candidato a mesclagem podem ser definidas como iguais às informações de movimento do bloco candidato. Por exemplo, pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão, e um índice de peso bidirecional do bloco candidato pode ser definido como as informações de movimento do candidato a mesclagem.[173] The motion information of the merge candidate may be set to be the same as the motion information of the candidate block. For example, at least one of a motion vector, a reference image index, a prediction direction, and a bidirectional weight index of the candidate block may be set to the motion information of the merge candidate.
[174] Uma lista de candidato a mesclagem incluindo candidatos a mesclagem pode ser gerada (S1002).[174] A merge candidate list including merge candidates may be generated (S1002).
[175] Índices de candidatos a mesclagem na lista de candidato a mesclagem podem ser atribuídos de acordo com uma ordem predeterminada. Por exemplo, os índices podem ser atribuídos na ordem de um candidato a mesclagem derivado de um bloco vizinho esquerdo, um candidato a mesclagem derivado de um bloco vizinho superior, um candidato a mesclagem derivado de um bloco vizinho superior direito, um candidato a mesclagem derivado de um bloco vizinho inferior esquerdo, um candidato a mesclagem derivado de um bloco vizinho superior esquerdo e um candidato a mesclagem derivado de um bloco vizinho temporariamente.[175] Merge candidate indices in the merge candidate list may be assigned according to a predetermined order. For example, indices may be assigned in the order of a merge candidate derived from a left neighboring block, a merge candidate derived from an upper neighboring block, a merge candidate derived from an upper right neighboring block, a merge candidate derived from a lower left neighboring block, a merge candidate derived from an upper left neighboring block, and a merge candidate derived from a temporarily neighboring block.
[176] Quando uma pluralidade de candidatos a mesclagem é incluída na lista de candidato a mesclagem, pelo menos uma dentre a pluralidade de candidatos a mesclagem pode ser selecionado (S1003). Especificamente, informações para especificar qualquer uma dentre uma pluralidade de candidatos a mesclagem podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações merge_idx indicando um índice de qualquer um dentre os candidatos a mesclagem incluídos na lista de candidato a mesclagem podem ser sinalizadas por meio de um fluxo de bits.[176] When a plurality of merge candidates are included in the merge candidate list, at least one of the plurality of merge candidates may be selected (S1003). Specifically, information for specifying any of the plurality of merge candidates may be signaled via a bit stream. For example, merge_idx information indicating an index of any of the merge candidates included in the merge candidate list may be signaled via a bit stream.
[177] Quando o número de candidatos a mesclagem incluídos na lista de candidato a mesclagem é menor que um valor limítrofe, o candidato a mesclagem incluído na lista de informações de movimento inter-regiões pode ser adicionado à lista de candidatos a mesclagem. Aqui, o valor limítrofe pode ser o número máximo de candidatos a mesclagem que a lista de candidatos a mesclagem pode incluir ou um valor obtido subtraindo um deslocamento do número máximo de candidatos a mesclagem. O deslocamento pode ser um número natural, como 1, 2 ou semelhante. A lista de informações de movimento inter- regiões pode incluir um candidato a mesclagem derivado com base em um bloco codificado/decodificado antes do bloco atual.[177] When the number of merge candidates included in the merge candidate list is less than a threshold value, the merge candidate included in the inter-region movement information list may be added to the merge candidate list. Here, the threshold value may be the maximum number of merge candidates that the merge candidate list can include, or a value obtained by subtracting an offset from the maximum number of merge candidates. The offset may be a natural number such as 1, 2, or similar. The inter-region movement information list may include a merge candidate derived based on a block encoded/decoded before the current block.
[178] A lista de informações de movimento inter- região inclui um candidato a mesclagem derivado de um bloco codificado/decodificado com base na interprevisão na imagem atual. Por exemplo, as informações de movimento de um candidato a mesclagem incluído na lista de informação de movimento inter- região podem ser definidas como às informações de movimento de um bloco codificado/decodificado com base na interprevisão. Aqui, as informações de movimento podem incluir pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão, e um índice de peso bidirecional.[178] The inter-region motion information list includes a merge candidate derived from an inter-prediction-based encoded/decoded block in the current picture. For example, the motion information of a merge candidate included in the inter-region motion information list may be defined as the motion information of an inter-prediction-based encoded/decoded block. Here, the motion information may include at least one of a motion vector, a reference picture index, a prediction direction, and a bidirectional weight index.
[179] Um bloco de codificação pode ser particionado em uma pluralidade de unidades de previsão, e a previsão pode ser realizada em cada uma das unidades de previsão particionadas. Aqui, uma unidade de previsão representa uma unidade básica para realizar a previsão.[179] A coding block may be partitioned into a plurality of prediction units, and prediction may be performed on each of the partitioned prediction units. Here, a prediction unit represents a basic unit for performing prediction.
[180] Um bloco de codificação pode ser particionado usando pelo menos uma dentre uma linha vertical, uma linha horizontal, uma linha oblíqua, e uma linha diagonal. Informações para determinar pelo menos um dentre o número, os ângulos, e as posições de linhas que particionam um bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações que indicam qualquer um dentre os candidatos do tipo de partição de um bloco de codificação podem ser sinalizadas através de um fluxo de bits, ou as informações que especificam qualquer uma dentre uma pluralidade de candidatos de linha para particionar um bloco de codificação podem ser sinalizadas através de um fluxo de bits. Alternativamente, as informações para determinar o número ou tipos de linhas candidatas que particionam um bloco de codificação podem ser sinalizadas através do fluxo de bits. Por exemplo, se uma linha oblíqua com um ângulo maior do que o de uma linha diagonal e/ou uma linha oblíqua com um ângulo menor do que o de uma linha diagonal pode ser usada como um candidato de linha pode ser determinado usando um sinalizador de 1 bit.[180] A coding block may be partitioned using at least one of a vertical line, a horizontal line, an oblique line, and a diagonal line. Information for determining at least one of the number, angles, and positions of lines that partition a coding block may be signaled via a bit stream. For example, information indicating any of the candidates for the partition type of a coding block may be signaled via a bit stream, or information specifying any of a plurality of line candidates for partitioning a coding block may be signaled via a bit stream. Alternatively, information for determining the number or types of candidate lines that partition a coding block may be signaled via the bit stream. For example, whether an oblique line with an angle greater than that of a diagonal line and/or an oblique line with an angle less than that of a diagonal line may be used as a line candidate may be determined using a 1-bit flag.
[181] Alternativamente, pelo menos um dentre o número, os ângulos, e as posições de linhas que particionam um bloco de codificação podem ser determinados de forma adaptativa com base em pelo menos um dentre o modo de intraprevisão do bloco de codificação, o modo de interprevisão do bloco de codificação, a posição de um candidato a mesclagem do bloco de codificação disponível, e um padrão de particionamento de um bloco vizinho.[181] Alternatively, at least one of the number, angles, and positions of lines partitioning a coding block may be adaptively determined based on at least one of the intraprediction mode of the coding block, the interprediction mode of the coding block, the position of a merge candidate of the available coding block, and a partitioning pattern of a neighboring block.
[182] Quando um bloco de codificação é particionado em uma pluralidade de unidades de previsão, a intraprevisão ou a interprevisão pode ser realizada em cada uma das unidades de previsão particionadas.[182] When a coding block is partitioned into a plurality of prediction units, intraprediction or interprediction may be performed on each of the partitioned prediction units.
[183] A Figura 12 é uma vista que mostra exemplos de particionamento de um bloco de codificação em uma pluralidade de unidades de previsão usando uma linha diagonal.[183] Figure 12 is a view showing examples of partitioning a coding block into a plurality of prediction units using a diagonal line.
[184] Como mostrado nos exemplos das Figuras 12 (a) e 12 (b), um bloco de codificação pode ser particionado em duas unidades de previsão triangulares usando uma linha diagonal.[184] As shown in the examples in Figures 12(a) and 12(b), a coding block can be partitioned into two triangular prediction units using a diagonal line.
[185] Nas Figuras 12 (a) e 12 (b), é mostrado que um bloco de codificação é particionado em duas unidades de previsão usando uma linha diagonal que conecta dois vértices do bloco de codificação. Entretanto, o bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, pelo menos uma extremidade da qual não passa por um vértice do bloco de codificação.[185] In Figures 12(a) and 12(b), it is shown that a coding block is partitioned into two prediction units using a diagonal line connecting two vertices of the coding block. However, the coding block can be partitioned into two prediction units using an oblique line, at least one end of which does not pass through a vertex of the coding block.
[186] A Figura 13 é uma vista que mostra exemplos de particionamento de um bloco de codificação em duas unidades de previsão.[186] Figure 13 is a view showing examples of partitioning a coding block into two prediction units.
[187] Como mostrado nos exemplos das Figuras 13 (a) e 13 (b), um bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, ambas as extremidades das quais estão em contato com o limite superior e o limite inferior do bloco de codificação, respectivamente.[187] As shown in the examples of Figures 13(a) and 13(b), a coding block can be partitioned into two prediction units using an oblique line, both ends of which are in contact with the upper boundary and the lower boundary of the coding block, respectively.
[188] Alternativamente, como mostrado nos exemplos das Figuras 13 (c) e 13 (d), um bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, ambas as extremidades das quais estão em contato com o limite esquerdo e o limite direito do bloco de codificação, respectivamente.[188] Alternatively, as shown in the examples of Figures 13(c) and 13(d), a coding block can be partitioned into two prediction units using an oblique line, both ends of which are in contact with the left boundary and the right boundary of the coding block, respectively.
[189] Alternativamente, um bloco de codificação pode ser particionado em dois blocos de previsão de tamanhos diferentes. Por exemplo, um bloco de codificação pode ser particionado em duas unidades de previsão de tamanho diferente definindo uma linha oblíqua particionamento o bloco de codificação para contatar duas superfícies de limite que formam um vértice.[189] Alternatively, a coding block can be partitioned into two prediction blocks of different sizes. For example, a coding block can be partitioned into two prediction units of different size by defining an oblique line partitioning the coding block to contact two boundary surfaces that form a vertex.
[190] A Figura 14 é uma vista que mostra exemplos de particionamento de um bloco de codificação em uma pluralidade de blocos de previsão de tamanhos diferentes.[190] Figure 14 is a view showing examples of partitioning a coding block into a plurality of prediction blocks of different sizes.
[191] Como mostrado nos exemplos das Figuras 14 (a) e 14 (b), como uma linha diagonal que conecta os cantos superior esquerdo e inferior direito do bloco de codificação é definida para passar pelo limite esquerdo, o limite direito, o limite superior ou o limite inferior, em vez de passar pelo canto superior esquerdo ou pelo canto inferior direito do bloco de codificação, o bloco de codificação pode ser dividido em duas unidades de previsão com tamanhos diferentes.[191] As shown in the examples of Figures 14(a) and 14(b), since a diagonal line connecting the upper-left and lower-right corners of the coding block is set to pass through the left boundary, the right boundary, the upper boundary, or the lower boundary, instead of passing through the upper-left corner or the lower-right corner of the coding block, the coding block can be divided into two prediction units with different sizes.
[192] Alternativamente, como mostrado nos exemplos das Figuras 14 (c) e 14 (d), como uma linha diagonal que conecta os cantos superior direito e inferior esquerdo do bloco de codificação é definida para passar pelo limite esquerdo, o limite direito, o limite superior ou o limite inferior, em vez de passar pelo canto superior esquerdo ou pelo canto inferior direito do bloco de codificação, o bloco de codificação pode ser dividido em duas unidades de previsão com tamanhos diferentes.[192] Alternatively, as shown in the examples of Figures 14(c) and 14(d), since a diagonal line connecting the upper-right and lower-left corners of the coding block is defined to pass through the left boundary, the right boundary, the upper boundary, or the lower boundary, instead of passing through the upper-left corner or the lower-right corner of the coding block, the coding block can be divided into two prediction units with different sizes.
[193] Cada uma das unidades de previsão gerada particionando um bloco de codificação será denominado como uma “enésima unidade de previsão”. Por exemplo, nos exemplos mostrados nas Figuras 12 a 14, a PU1 pode ser definida como uma primeira unidade de previsão, e a PU2 pode ser definida como uma segunda unidade de previsão. A primeira unidade de previsão significa uma unidade de previsão incluindo uma amostra posicionada na parte inferior esquerda ou uma amostra posicionada na parte superior esquerda no bloco de codificação, e o segundo unidade de previsão significa uma unidade de previsão incluindo uma amostra posicionada na parte superior direita ou uma amostra posicionada na parte inferior direita no bloco de codificação.[193] Each of the prediction units generated by partitioning a coding block will be referred to as an “nth prediction unit”. For example, in the examples shown in Figures 12 to 14, PU1 may be defined as a first prediction unit, and PU2 may be defined as a second prediction unit. The first prediction unit means a prediction unit including a sample positioned in the bottom left or a sample positioned in the top left in the coding block, and the second prediction unit means a prediction unit including a sample positioned in the top right or a sample positioned in the bottom right in the coding block.
[194] Ao contrário, uma unidade de previsão incluindo uma amostra posicionada na parte superior direita ou uma amostra posicionada na parte inferior direita no bloco de codificação pode ser definida como uma primeira unidade de previsão, e uma unidade de previsão incluindo uma amostra posicionada na parte inferior esquerda ou uma amostra posicionada na parte superior esquerda no bloco de codificação pode ser definida como uma segunda unidade de previsão.[194] Conversely, a prediction unit including a sample positioned in the upper right or a sample positioned in the lower right in the coding block may be defined as a first prediction unit, and a prediction unit including a sample positioned in the lower left or a sample positioned in the upper left in the coding block may be defined as a second prediction unit.
[195] As modalidades abaixo são descritas com foco nos exemplos de particionamento de um bloco de codificação usando uma linha diagonal. Particularmente, o particionamento de um bloco de codificação em duas unidades de previsão usando uma linha diagonal é denominado como particionamento diagonal ou particionamento triangular, e uma unidade de previsão gerada com base no particionamento diagonal é denominada como uma unidade de previsão triangular. Entretanto, também é possível aplicar as modalidades descritas abaixo aos exemplos de particionamento de um bloco de codificação usando uma linha oblíqua de um ângulo diferente daquele de uma linha vertical, uma linha horizontal, ou uma linha diagonal.[195] The embodiments below are described with a focus on examples of partitioning a coding block using a diagonal line. In particular, partitioning a coding block into two prediction units using a diagonal line is referred to as diagonal partitioning or triangular partitioning, and a prediction unit generated based on diagonal partitioning is referred to as a triangular prediction unit. However, it is also possible to apply the embodiments described below to examples of partitioning a coding block using an oblique line of an angle other than that of a vertical line, a horizontal line, or a diagonal line.
[196] Se deve ou não aplicar o particionamento diagonal a um bloco de codificação pode ser determinado com base em pelo menos um dentre um tipo de fatia, o número máximo de candidatos a mesclagem que a lista de candidato a mesclagem pode incluir, o tamanho do bloco de codificação, o formato do bloco de codificação, o modo de codificação de previsão do bloco de codificação, e o padrão de particionamento do nó pai.[196] Whether or not to apply diagonal partitioning to a coding block may be determined based on at least one of a slice type, the maximum number of merge candidates that the merge candidate list may include, the size of the coding block, the format of the coding block, the prediction coding mode of the coding block, and the partitioning pattern of the parent node.
[197] Por exemplo, se deve ou não aplicar o particionamento diagonal a um bloco de codificação pode ser determinado com base em se a fatia atual é tipo B. O particionamento diagonal pode ser permitido apenas quando a fatia atual é tipo B.[197] For example, whether or not to apply diagonal partitioning to a coding block can be determined based on whether the current slice is type B. Diagonal partitioning may be allowed only when the current slice is type B.
[198] Alternativamente, se deve ou não aplicar o particionamento diagonal a um bloco de codificação pode ser determinado com base em se o número máximo de candidatos a mesclagem incluída na lista de candidato a mesclagem é dois ou mais. O particionamento diagonal pode ser permitido apenas quando o número máximo de candidatos a mesclagem incluída na lista de candidato a mesclagem é dois ou mais.[198] Alternatively, whether or not to apply diagonal partitioning to a cipher block may be determined based on whether the maximum number of merge candidates included in the merge candidate list is two or more. Diagonal partitioning may be allowed only when the maximum number of merge candidates included in the merge candidate list is two or more.
[199] Alternativamente, quando pelo menos uma dentre a largura e a altura é maior que 64 na implementação de hardware, há um problema em que uma unidade de processamento de dados de tamanho 64 x 64 é acessada de forma redundante. Consequentemente, quando pelo menos uma dentre a largura e a altura do bloco de codificação é maior que um valor limítrofe, particionamento de um bloco de codificação em uma pluralidade de blocos de previsão pode não ser permitido. Por exemplo, quando pelo menos uma dentre a largura e a altura de um bloco de codificação é maior que 64 (por exemplo, quando pelo menos uma dentre a largura e a altura é 128), particionamento diagonal pode não ser usado.[199] Alternatively, when at least one of the width and height is greater than 64 in the hardware implementation, there is an issue where a data processing unit of size 64 x 64 is accessed redundantly. Consequently, when at least one of the width and height of the coding block is greater than a threshold value, partitioning of a coding block into a plurality of prediction blocks may not be allowed. For example, when at least one of the width and height of a coding block is greater than 64 (e.g., when at least one of the width and height is 128), diagonal partitioning may not be used.
[200] Alternativamente, o particionamento diagonal pode não ser permitido para um bloco de codificação do qual o número de amostras é maior que um valor limítrofe, considerando o número máximo de amostras que pode ser simultaneamente processado em implementação de hardware. Por exemplo, o particionamento diagonal pode não ser permitido para um bloco de árvore de codificação do qual o número de amostras é maior que 4.096.[200] Alternatively, diagonal partitioning may not be allowed for a coding block of which the number of samples is greater than a threshold value, considering the maximum number of samples that can be simultaneously processed in the hardware implementation. For example, diagonal partitioning may not be allowed for a coding tree block of which the number of samples is greater than 4,096.
[201] Alternativamente, o particionamento diagonal pode não ser permitido para um bloco de codificação do qual o número de amostras incluídas no bloco de codificação é menor que um valor limítrofe. Por exemplo, pode ser configurado para não aplicar o particionamento diagonal a um bloco de codificação quando o número de amostras incluída no bloco de codificação é menor que 64.[201] Alternatively, diagonal partitioning may not be allowed for a coding block where the number of samples included in the coding block is less than a threshold value. For example, diagonal partitioning may be configured to not apply to a coding block when the number of samples included in the coding block is less than 64.
[202] Alternativamente, se deve ou não aplicar o particionamento diagonal a um bloco de codificação pode ser determinado com base em se a relação largura para altura do bloco de codificação é menor que um primeiro valor limítrofe ou se a relação largura para altura do bloco de codificação é maior que um segundo valor limítrofe. Aqui, a relação largura para altura whRatio do bloco de codificação pode ser determinado como uma razão da largura CbW para a altura CbH do bloco de codificação como mostrado na Equação 1. [EQUAÇÃO 1] [202] Alternatively, whether or not to apply diagonal partitioning to a coding block can be determined based on whether the width-to-height ratio of the coding block is less than a first threshold value or whether the width-to-height ratio of the coding block is greater than a second threshold value. Here, the width-to-height ratio whRatio of the coding block can be determined as a ratio of the width CbW to the height CbH of the coding block as shown in Equation 1. [EQUATION 1]
[203] O segundo valor limítrofe pode ser um número inverso do primeiro valor limítrofe. Por exemplo, quando o primeiro valor limítrofe é k, o segundo valor limítrofe pode ser 1/k.[203] The second boundary value may be an inverse of the first boundary value. For example, when the first boundary value is k, the second boundary value may be 1/k.
[204] O particionamento diagonal pode ser aplicado a um bloco de codificação apenas quando a relação largura para altura do bloco de codificação está entre o primeiro valor limítrofe e o segundo valor limítrofe.[204] Diagonal partitioning can be applied to a coding block only when the width-to-height ratio of the coding block is between the first boundary value and the second boundary value.
[205] Alternativamente, o particionamento triangular pode ser usado apenas quando a relação largura para altura do bloco de codificação é menor que o primeiro valor limítrofe ou maior que o segundo valor limítrofe. Por exemplo, quando o primeiro valor limítrofe é 16, o particionamento diagonal pode não ser permitido para um bloco de codificação de um tamanho de 64 x 4 ou 4 x 64.[205] Alternatively, triangular partitioning may be used only when the width-to-height ratio of the coding block is less than the first threshold value or greater than the second threshold value. For example, when the first threshold value is 16, diagonal partitioning may not be allowed for a coding block of a size of 64 x 4 or 4 x 64.
[206] Alternativamente, se deve ou não permitir o particionamento diagonal pode ser determinado com base no padrão de particionamento do nó pai. Por exemplo, quando um bloco de codificação de nó pai é particionado com base no particionamento de árvore quádrupla, o particionamento diagonal pode ser aplicado a um bloco de codificação de nó folha. Por outro lado, pode ser configurado para não permitir o particionamento diagonal para o bloco de codificação do nó folha quando o bloco de codificação do nó pai é particionado com base na árvore binária ou particionamento da árvore ternária.[206] Alternatively, whether or not to allow diagonal partitioning can be determined based on the partitioning pattern of the parent node. For example, when a parent node's coding block is partitioned based on quad-tree partitioning, diagonal partitioning can be applied to a leaf node's coding block. Conversely, it can be configured to disallow diagonal partitioning for the leaf node's coding block when the parent node's coding block is partitioned based on binary tree or ternary tree partitioning.
[207] Alternativamente, se deve ou não permitir o particionamento diagonal pode ser determinado com base no modo de codificação de previsão de um bloco de codificação. Por exemplo, o particionamento diagonal pode ser permitido apenas quando o bloco de codificação é codificado pela intraprevisão, quando o bloco de codificação é codificado pela interprevisão, ou quando o bloco de codificação é codificado por um modo de interprevisão predefinido. Aqui, o modo de interprevisão predefinido pode representar pelo menos um dentre um modo de mesclagem, um modo de previsão de vetor de movimento avançado, um modo de mesclagem afim, e um modo de previsão de vetor de movimento afim.[207] Alternatively, whether or not to allow diagonal partitioning may be determined based on the prediction coding mode of a coding block. For example, diagonal partitioning may be allowed only when the coding block is encoded by intra-prediction, when the coding block is encoded by inter-prediction, or when the coding block is encoded by a predefined inter-prediction mode. Here, the predefined inter-prediction mode may represent at least one of a blending mode, an advanced motion vector prediction mode, an affine blending mode, and an affine motion vector prediction mode.
[208] Alternativamente, se deve ou não permitir o particionamento diagonal pode ser determinado com base no tamanho de uma região de processamento paralela. Por exemplo, quando o tamanho de um bloco de codificação é maior que o tamanho de uma região de processamento paralela, o particionamento diagonal pode não ser usado.[208] Alternatively, whether or not to allow diagonal partitioning may be determined based on the size of a parallel processing region. For example, when the size of a coding block is larger than the size of a parallel processing region, diagonal partitioning may not be used.
[209] Se deve ou não aplicar o particionamento diagonal a um bloco de codificação pode ser determinado considerando duas ou mais das condições listadas acima.[209] Whether or not to apply diagonal partitioning to a coding block can be determined by considering two or more of the conditions listed above.
[210] Como um outro exemplo, as informações que indicam se deve ou não aplicar o particionamento diagonal a um bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser sinalizadas em uma sequência, imagem, fatia, ou nível de bloco. Por exemplo, o sinalizador triangle_partition_flag indicando se o particionamento triangular é aplicado a um bloco de codificação pode ser sinalizado em um nível de bloco de codificação.[210] As another example, information indicating whether or not to apply diagonal partitioning to a coding block may be signaled via a bit stream. The information may be signaled at a sequence, image, slice, or block level. For example, the flag triangle_partition_flag indicating whether triangular partitioning is applied to a coding block may be signaled at a coding block level.
[211] Quando é determinado aplicar o particionamento diagonal a um bloco de codificação, informações que indicam o número de linhas que particionam o bloco de codificação ou as posições das linhas podem ser sinalizadas através de um fluxo de bits.[211] When it is determined to apply diagonal partitioning to a coding block, information indicating the number of lines that partition the coding block or the positions of the lines may be signaled via a bit stream.
[212] Por exemplo, quando um bloco de codificação é particionado por uma linha diagonal, as informações que indicam a direção da linha diagonal que particiona o bloco de codificação podem ser sinalizadas através de um fluxo de bits. Por exemplo, o sinalizador triangle_partition_type_flag indicando a direção da linha diagonal pode ser sinalizado por meio de um fluxo de bits. O sinalizador indica se o bloco de codificação é particionado por uma linha diagonal que conecta o canto esquerdo superior e o canto direito inferior ou se o bloco de codificação é particionado por uma linha diagonal que conecta o canto direito superior e o canto esquerdo inferior. O particionamento de um bloco de codificação por uma linha diagonal que conecta o canto esquerdo superior e o canto direito inferior pode ser denominado como um tipo de partição triangular esquerda, e particionamento de um bloco de codificação por uma linha diagonal que conecta o canto direito superior e o canto esquerdo inferior pode ser denominado como um tipo de partição triangular direita. Por exemplo, quando o valor do sinalizador é 0, pode indicar que o tipo de partição do bloco de codificação é o tipo de partição triangular esquerda, e quando o valor do sinalizador é 1, pode indicar que o tipo de partição do bloco de codificação é o tipo de partição triangular direita.[212] For example, when a coding block is partitioned by a diagonal line, information indicating the direction of the diagonal line partitioning the coding block can be signaled via a bit stream. For example, the triangle_partition_type_flag flag indicating the direction of the diagonal line can be signaled via a bit stream. The flag indicates whether the coding block is partitioned by a diagonal line connecting the upper left corner and the lower right corner, or whether the coding block is partitioned by a diagonal line connecting the upper right corner and the lower left corner. Partitioning a coding block by a diagonal line connecting the upper left corner and the lower right corner can be termed a left triangular partition type, and partitioning a coding block by a diagonal line connecting the upper right corner and the lower left corner can be termed a right triangular partition type. For example, when the value of the flag is 0, it may indicate that the partition type of the coding block is the left triangular partition type, and when the value of the flag is 1, it may indicate that the partition type of the coding block is the right triangular partition type.
[213] Além disso, as informações que indicam se as unidades de previsão têm o mesmo tamanho ou informações que indicam a posição de uma linha diagonal para particionar o bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, quando as informações que indicam os tamanhos das unidades de previsão indicam que os tamanhos das unidades de previsão são os mesmos, codificação das informações que indicam a posição da diagonal são omitidas, e o bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha diagonal passam através de dois vértices do bloco de codificação. Por outro lado, quando as informações que indicam os tamanhos das unidades de previsão indicam que os tamanhos das unidades de previsão não são os mesmos, a posição da linha diagonal que particiona o bloco de codificação pode ser determinada com base nas informações que indicam a posição da linha diagonal. Por exemplo, quando o tipo de partição triangular esquerda é aplicado a um bloco de codificação, as informações de posição podem indicar se a linha diagonal está em contato com o limite esquerdo e o limite inferior ou o limite superior e o limite direito do bloco de codificação. Alternativamente, quando o tipo de partição triangular direita é aplicado a um bloco de codificação, as informações de posição podem indicar se a linha diagonal está em contato com o limite direito e o limite inferior ou o limite superior e o limite esquerdo do bloco de codificação.[213] Additionally, information indicating whether the prediction units are the same size or information indicating the position of a diagonal line for partitioning the coding block may be signaled via a bit stream. For example, when the information indicating the sizes of the prediction units indicates that the sizes of the prediction units are the same, encoding of the information indicating the position of the diagonal is omitted, and the coding block may be partitioned into two prediction units using a diagonal line passing through two vertices of the coding block. Conversely, when the information indicating the sizes of the prediction units indicates that the sizes of the prediction units are not the same, the position of the diagonal line that partitions the coding block may be determined based on the information indicating the position of the diagonal line. For example, when the left triangular partition type is applied to a coding block, the position information may indicate whether the diagonal line touches the left boundary and the lower boundary or the upper boundary and the right boundary of the coding block. Alternatively, when the right triangular partition type is applied to a coding block, the position information can indicate whether the diagonal line is in contact with the right boundary and the lower boundary or the upper boundary and the left boundary of the coding block.
[214] As informações que indicam o tipo de partição de um bloco de codificação podem ser sinalizadas em um nível de bloco de codificação. Consequentemente, o tipo de partição pode ser determinado para cada bloco de codificação ao qual o particionamento diagonal é aplicado.[214] Information indicating the partition type of a coding block may be signaled at a coding block level. Consequently, the partition type may be determined for each coding block to which diagonal partitioning is applied.
[215] Como um outro exemplo, as informações que indicam o tipo de partição podem ser sinalizadas para uma sequência, uma imagem, uma fatia, um bloco, ou uma unidade de árvore de codificação. Neste caso, tipos de partição de blocos de codificação aos quais o particionamento diagonal é aplicado em uma sequência, uma imagem, uma fatia, um bloco, ou uma unidade de árvore de codificação podem ser definidos para serem os mesmos.[215] As another example, information indicating the partition type may be flagged for a sequence, an image, a slice, a block, or a coding tree unit. In this case, partition types of coding blocks to which diagonal partitioning is applied in a sequence, an image, a slice, a block, or a coding tree unit may be defined to be the same.
[216] Alternativamente, as informações para determinar o tipo de partição podem ser codificadas e sinalizadas para a primeira unidade de codificação à qual o particionamento diagonal é aplicado na unidade de árvore de codificação, e a segunda e subsequente unidades de codificação às quais o particionamento diagonal é aplicado podem ser definidas para usar um tipo de partição igual ao da primeira unidade de codificação.[216] Alternatively, information for determining the partition type may be encoded and signaled for the first coding unit to which diagonal partitioning is applied in the coding tree unit, and the second and subsequent coding units to which diagonal partitioning is applied may be set to use a partition type equal to that of the first coding unit.
[217] Como um outro exemplo, o tipo de partição de um bloco de codificação pode ser determinado com base no tipo de partição de um bloco vizinho. Aqui, o bloco vizinho pode incluir pelo menos um dentre um bloco vizinho adjacente ao canto esquerdo superior do bloco de codificação, um bloco vizinho adjacente ao canto direito superior, um bloco vizinho adjacente ao canto esquerdo inferior, um bloco vizinho posicionado na parte superior, e um bloco vizinho posicionado no lado esquerdo. Por exemplo, o tipo de partição do bloco atual pode ser definido para ser igual ao tipo de partição de um bloco vizinho. Alternativamente, o tipo de partição do bloco atual pode ser determinado com base em se o tipo de partição triangular esquerda é aplicado ao bloco vizinho esquerdo superior ou se o tipo de partição triangular direita é aplicado ao bloco vizinho direito superior ou ao bloco vizinho esquerdo inferior.[217] As another example, the partition type of a coding block may be determined based on the partition type of a neighboring block. Here, the neighboring block may include at least one of a neighboring block adjacent to the top-left corner of the coding block, a neighboring block adjacent to the top-right corner, a neighboring block adjacent to the bottom-left corner, a neighboring block positioned on the top, and a neighboring block positioned on the left side. For example, the partition type of the current block may be set to be the same as the partition type of a neighboring block. Alternatively, the partition type of the current block may be determined based on whether the left triangular partition type is applied to the top-left neighboring block or whether the right triangular partition type is applied to the top-right neighboring block or the bottom-left neighboring block.
[218] O tamanho de uma unidade de previsão pode ser definido para não ser maior que de uma unidade de transformada. Além disso, pode ser configurado para necessariamente incluir uma unidade de previsão em uma unidade de transformada. Consequentemente, quando o particionamento de unidade de transformada VPDU é aplicado a um bloco de codificação, o particionamento diagonal pode ser aplicado à unidade de transformada em vez de aplicar o particionamento diagonal ao bloco de codificação.[218] The size of a prediction unit may be set to be no larger than that of a transform unit. Furthermore, it may be configured to necessarily include a prediction unit in a transform unit. Consequently, when VPDU transform unit partitioning is applied to a coding block, diagonal partitioning may be applied to the transform unit instead of applying diagonal partitioning to the coding block.
[219] A Figura 15 é uma vista que mostra um exemplo de aplicação de particionamento diagonal a uma unidade de transformada.[219] Figure 15 is a view showing an example of applying diagonal partitioning to a unit transform.
[220] Como mostrado no exemplo da Figura 15, quando um bloco de codificação é particionado em uma pluralidade de unidades de transformada, se deve ou não aplicar o particionamento diagonal a cada unidade de transformada pode ser determinado. Alternativamente, pode ser determinado se o particionamento diagonal é aplicado pela unidade de bloco que tem um tamanho menor que da unidade de transformada.[220] As shown in the example of Figure 15, when a coding block is partitioned into a plurality of transform units, whether or not to apply diagonal partitioning to each transform unit can be determined. Alternatively, it can be determined whether diagonal partitioning is applied by the block unit that has a size smaller than the transform unit.
[221] Alternativamente, quando o particionamento de unidade de transformada VPDU é aplicado a um bloco de codificação, se deve ou não aplicar o particionamento diagonal ao bloco de codificação é determinado, e todas as unidades de transformada incluídas no bloco de codificação podem ser definidas para seguir a determinação. Por exemplo, quando é determinado aplicar o particionamento diagonal a um bloco de codificação, todas as unidades de transformada incluídas no bloco de codificação podem ser particionadas em duas unidades de previsão.[221] Alternatively, when VPDU transform unit partitioning is applied to a coding block, whether or not to apply diagonal partitioning to the coding block is determined, and all transform units included in the coding block may be set to follow the determination. For example, when it is determined to apply diagonal partitioning to a coding block, all transform units included in the coding block may be partitioned into two prediction units.
[222] De modo a realizar a compensação de previsão de movimento em uma primeira unidade de previsão triangular e uma segunda unidade de previsão triangular, informações de movimento de cada uma da primeira unidade de previsão triangular e da segunda unidade de previsão triangular pode ser derivada. Neste ponto, as informações de movimento da primeira unidade de previsão triangular e da segunda unidade de previsão triangular podem ser derivadas de candidatos a mesclagem incluídos na lista de candidato a mesclagem. Para distinguir uma lista de candidato a mesclagem geral de uma lista de candidato a mesclagem usada para derivar as informações de movimento das unidades de previsão triangulares, a lista de candidato a mesclagem para derivar as informações de movimento das unidades de previsão triangulares são denominadas como uma lista de candidato a mesclagem triangular, e um candidato a mesclagem incluído na lista de candidato a mesclagem triangular será denominado como um candidato a mesclagem triangular. Entretanto, usando o método de derivação de um candidato a mesclagem e o método de construção de uma lista de candidato a mesclagem descrito acima por causa dos candidatos a mesclagem triangulares e o método de construção da lista de candidato a mesclagem triangular está incluído no espírito da presente invenção.[222] In order to perform motion prediction compensation in a first triangular prediction unit and a second triangular prediction unit, motion information of each of the first triangular prediction unit and the second triangular prediction unit can be derived. At this point, the motion information of the first triangular prediction unit and the second triangular prediction unit can be derived from merge candidates included in the merge candidate list. To distinguish a general merge candidate list from a merge candidate list used to derive the motion information of triangular prediction units, the merge candidate list for deriving the motion information of triangular prediction units is referred to as a triangular merge candidate list, and a merge candidate included in the triangular merge candidate list will be referred to as a triangular merge candidate. However, using the method of deriving a merge candidate and the method of constructing a merge candidate list described above because of triangular merge candidates and the method of constructing the triangular merge candidate list is included in the spirit of the present invention.
[223] Informações para determinar o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular pode incluir podem ser sinalizadas por meio de um fluxo de bits. As informações podem indicar uma diferença entre o número máximo de candidatos a mesclagem que a lista de candidato a mesclagem pode incluir e o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular pode incluir.[223] Information for determining the maximum number of triangular merge candidates that the triangular merge candidate list can include may be signaled via a bit stream. The information may indicate a difference between the maximum number of merge candidates that the merge candidate list can include and the maximum number of triangular merge candidates that the triangular merge candidate list can include.
[224] Os candidatos a mesclagem triangulares podem ser derivados de um bloco vizinho espacialmente e um bloco vizinho temporalmente de um bloco de codificação.[224] Triangular merge candidates can be derived from a spatially neighboring block and a temporally neighboring block of a coding block.
[225] A Figura 16 é uma vista que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.[225] Figure 16 is a view showing neighboring blocks used to derive a triangular merge candidate.
[226] Um candidato a mesclagem triangular pode ser derivado usando pelo menos um dentre um bloco vizinho posicionado na parte superior de um bloco de codificação, um bloco vizinho posicionado no lado esquerdo do bloco de codificação, e um bloco colocado incluído em uma imagem diferente a partir do bloco de codificação. O bloco vizinho superior pode incluir pelo menos um dentre um bloco incluindo uma amostra (xCb + CbW-1, yCb-1) posicionada na parte superior do bloco de codificação, um bloco incluindo uma amostra (xCb + CbW, yCb-1) posicionada na parte superior do bloco de codificação, e um bloco incluindo uma amostra (xCb-1, yCb-1) posicionada na parte superior do bloco de codificação. O bloco vizinho esquerdo pode incluir pelo menos um dentre um bloco incluindo uma amostra (xCb-1, yCb + CbH-1) posicionada no lado esquerdo do bloco de codificação e um bloco incluindo uma amostra (xCb-1, yCb + CbH) posicionada no lado esquerdo do bloco de codificação. O bloco colocado pode ser determinado como qualquer um dentre um bloco incluindo uma amostra (xCb + CbW, yCb + CbH) adjacente ao canto direito superior do bloco de codificação e um bloco incluindo uma amostra (xCb/2, yCb/2) posicionado no centro do bloco de codificação, em uma imagem colocada.[226] A triangular merge candidate may be derived using at least one of a neighboring block positioned at the top of a coding block, a neighboring block positioned at the left side of the coding block, and a block placed included in a different picture from the coding block. The top neighboring block may include at least one of a block including a sample (xCb + CbW-1, yCb-1) positioned at the top of the coding block, a block including a sample (xCb + CbW, yCb-1) positioned at the top of the coding block, and a block including a sample (xCb-1, yCb-1) positioned at the top of the coding block. The left neighboring block may include at least one of a block including a sample (xCb-1, yCb + CbH-1) positioned at the left side of the coding block and a block including a sample (xCb-1, yCb + CbH) positioned at the left side of the coding block. The placed block can be determined as any one of a block including a sample (xCb + CbW, yCb + CbH) adjacent to the upper right corner of the coding block and a block including a sample (xCb/2, yCb/2) positioned at the center of the coding block, in a placed image.
[227] Os blocos vizinhos podem ser pesquisados em uma ordem predefinida, e candidatos a mesclagem triangulares podem ser construídos como uma lista de candidato a mesclagem triangular de acordo com uma ordem predefinida. Por exemplo, a lista de candidato a mesclagem triangular pode ser construída pesquisando os candidatos a mesclagem triangulares na ordem de B1, A1, B0, A0, C0, B2 e C1.[227] Neighboring blocks can be searched in a predefined order, and triangular merge candidates can be constructed as a triangular merge candidate list according to a predefined order. For example, the triangular merge candidate list can be constructed by searching the triangular merge candidates in the order of B1, A1, B0, A0, C0, B2, and C1.
[228] As informações de movimento das unidades de previsão triangulares podem ser derivadas com base na lista de candidato a mesclagem triangular. Isto é, as unidades de previsão triangulares podem compartilhar uma lista de candidato a mesclagem triangular.[228] The motion information of the triangular prediction units can be derived based on the triangular merge candidate list. That is, the triangular prediction units can share a triangular merge candidate list.
[229] De modo a derivar informações de movimento da unidade de mesclagem triangular, informações para especificar pelo menos um dentre os candidatos a mesclagem triangulares incluídos na lista de candidato a mesclagem triangular podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações de índice merge_triangle_idx para especificar pelo menos um dentre os candidatos a mesclagem triangulares podem ser sinalizadas por meio de um fluxo de bits.[229] In order to derive motion information of the triangular merge unit, information for specifying at least one of the triangular merge candidates included in the triangular merge candidate list may be signaled via a bit stream. For example, the index information merge_triangle_idx for specifying at least one of the triangular merge candidates may be signaled via a bit stream.
[230] As informações de índice podem especificar uma combinação de um candidato a mesclagem da primeira unidade de previsão triangular e um candidato a mesclagem da segunda unidade de previsão triangular. Por exemplo, a Tabela 1 mostra um exemplo de uma combinação de candidatos a mesclagem de acordo com informações de índice merge_triangle_idx. [TABELA 1] [230] The index information may specify a combination of a merge candidate from the first triangular prediction unit and a merge candidate from the second triangular prediction unit. For example, Table 1 shows an example of a combination of merge candidates according to index information merge_triangle_idx. [TABLE 1]
[231] Quando o valor de informações de índice merge_triangle_idx é 1, indica que as informações de movimento da primeira unidade de previsão triangular são derivadas de um candidato a mesclagem que tem um índice de 1, e as informações de movimento da segunda unidade de previsão triangular são derivadas de um candidato a mesclagem que tem um índice de 0. Um candidato a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular e um candidato a mesclagem triangular para derivar informações de movimento da segunda unidade de previsão triangular pode ser determinado através de informações de índice merge_triangle_idx.[231] When the merge_triangle_idx index information value is 1, it indicates that the motion information of the first triangular prediction unit is derived from a merge candidate that has an index of 1, and the motion information of the second triangular prediction unit is derived from a merge candidate that has an index of 0. A triangular merge candidate for deriving motion information of the first triangular prediction unit and a triangular merge candidate for deriving motion information of the second triangular prediction unit can be determined through merge_triangle_idx index information.
[232] Um tipo de partição de um bloco de codificação a qual o particionamento diagonal é aplicado pode ser determinado com base nas informações de índice. Isto é, as informações de índice podem especificar uma combinação de um candidato a mesclagem da primeira unidade de previsão triangular, um candidato a mesclagem da segunda unidade de previsão triangular, e uma direção de particionamento do bloco de codificação. Quando um tipo de partição do bloco de codificação é determinado com base nas informações de índice, informações triangle_partition_type_flag indicando a direção de uma linha diagonal que particiona o bloco de codificação pode não ser codificada. A Tabela 2 expressa tipos de partição de um bloco de codificação com respeito às informações de índice merge_triangle_idx. [TABELA 2] [232] A partition type of a coding block to which diagonal partitioning is applied may be determined based on index information. That is, the index information may specify a combination of a merge candidate from the first triangular prediction unit, a merge candidate from the second triangular prediction unit, and a partitioning direction of the coding block. When a partition type of the coding block is determined based on index information, triangle_partition_type_flag information indicating the direction of a diagonal line partitioning the coding block may not be encoded. Table 2 expresses partition types of a coding block with respect to the merge_triangle_idx index information. [TABLE 2]
[233] Quando a variável TriangleDir é 0, indica que o tipo de partição de triângulo esquerdo é aplicado ao bloco de codificação, e quando a variável TriangleDir é 1, indica que o tipo de partição de triângulo direito é aplicado ao bloco de codificação. Ao combinar a Tabela 1 e a Tabela 2, pode ser definido para especificar uma combinação do candidato a mesclagem da primeira unidade de previsão triangular, o candidato a mesclagem da segunda unidade de previsão triangular e a direção de partição do bloco de codificação por informações de índice merge_triangle_idx.[233] When the TriangleDir variable is 0, it indicates that the left triangle partition type is applied to the coding block, and when the TriangleDir variable is 1, it indicates that the right triangle partition type is applied to the coding block. When combining Table 1 and Table 2, it can be set to specify a combination of the merge candidate of the first triangular prediction unit, the merge candidate of the second triangular prediction unit, and the partition direction of the coding block by index information merge_triangle_idx.
[234] Como um outro exemplo, as informações de índice apenas para qualquer uma dentre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular podem ser sinalizadas, e um índice de um candidato a mesclagem triangular para o outro uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser determinado com base nas informações de índice. Por exemplo, um candidato a mesclagem triangular da primeira unidade de previsão triangular pode ser determinado com base nas informações de índice merge_triangle_idx indicando um índice de qualquer um dentre os candidatos a mesclagem triangulares. Além disso, um candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser especificado com base em merge_triangle_idx. Por exemplo, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um deslocamento para ou das informações de índice merge_triangle_idx. O deslocamento pode ser um número inteiro como 1 ou 2. Por exemplo, um candidato a mesclagem triangular que tem um valor obtido adicionando 1 a merge_traingle_idx como um índice pode ser determinado como o candidato a mesclagem triangular da segunda unidade de previsão triangular. Quando merge_triangle_idx indica um candidato a mesclagem triangular que tem o maior valor de índice entre os candidatos a mesclagem triangulares, informações de movimento da segunda unidade de previsão triangular podem ser derivadas de um candidato a mesclagem triangular que tem um índice de 0 ou um candidato a mesclagem triangular que tem um valor obtido subtraindo 1 de merge_triangle_idx como um índice.[234] As another example, index information only for any one of the first triangular prediction unit and the second triangular prediction unit may be flagged, and an index from one triangular merge candidate to the other one of the first triangular prediction unit and the second triangular prediction unit may be determined based on the index information. For example, a triangular merge candidate of the first triangular prediction unit may be determined based on the index information merge_triangle_idx indicating an index of any one of the triangular merge candidates. Furthermore, a triangular merge candidate of the second triangular prediction unit may be specified based on merge_triangle_idx. For example, the triangular merge candidate of the second triangular prediction unit may be derived by adding or subtracting an offset to or from the index information merge_triangle_idx. The offset can be an integer such as 1 or 2. For example, a triangular merge candidate that has a value obtained by adding 1 to merge_triangle_idx as an index can be determined as the triangular merge candidate of the second triangular prediction unit. When merge_triangle_idx indicates a triangular merge candidate that has the largest index value among the triangular merge candidates, the movement information of the second triangular prediction unit can be derived from a triangular merge candidate that has an index of 0 or a triangular merge candidate that has a value obtained by subtracting 1 from merge_triangle_idx as an index.
[235] Alternativamente, as informações de movimento da segunda unidade de previsão triangular podem ser derivadas de um candidato a mesclagem triangular que tem uma imagem de referência igual à do candidato a mesclagem triangular da primeira unidade de previsão triangular especificada pelas informações de índice. Aqui, o candidato a mesclagem triangular que tem uma imagem de referência igual àquela do candidato a mesclagem triangular da primeira unidade de previsão triangular pode indicar um candidato a mesclagem triangular que tem pelo menos um dentre imagem de referência L0 e imagem de referência L1 igual àquela do candidato a mesclagem triangular da primeira unidade de previsão triangular. Quando há uma pluralidade de candidatos a mesclagem triangulares que tem uma imagem de referência igual à do candidato a mesclagem triangular da primeira unidade de previsão triangular, pelo menos um dentre os candidatos a mesclagem triangulares pode ser selecionado com base em se o candidato a mesclagem inclui informações de movimento bidirecional ou um valor de diferença entre o índice do candidato a mesclagem e as informações de índice.[235] Alternatively, the motion information of the second triangular prediction unit may be derived from a triangular merge candidate that has a reference image equal to that of the triangular merge candidate of the first triangular prediction unit specified by the index information. Here, the triangular merge candidate that has a reference image equal to that of the triangular merge candidate of the first triangular prediction unit may indicate a triangular merge candidate that has at least one of L0 reference image and L1 reference image equal to that of the triangular merge candidate of the first triangular prediction unit. When there are a plurality of triangular merge candidates that have a reference image equal to that of the triangular merge candidate of the first triangular prediction unit, at least one of the triangular merge candidates may be selected based on whether the merge candidate includes bidirectional motion information or a difference value between the index of the merge candidate and the index information.
[236] Como um outro exemplo, as informações de índice podem ser sinalizadas para cada uma da primeira unidade de previsão triangular e da segunda unidade de previsão triangular. Por exemplo, as primeiras informações de índice 1st_merge_idx para determinar um candidato a mesclagem triangular da primeira unidade de previsão triangular e as segundas informações de índice 2nd_merge_idx para determinar um candidato a mesclagem triangular da segunda unidade de previsão triangular podem ser sinalizadas por meio de um fluxo de bits. As informações de movimento da primeira unidade de previsão triangular podem ser derivadas a partir do candidato a mesclagem triangular determinado com base nas primeiras informações de índice 1st_merge_idx, e as informações de movimento da segunda unidade de previsão triangular podem ser derivadas a partir do candidato a mesclagem triangular determinado com base nas segundas informações de índice 2nd_merge_idx.[236] As another example, index information may be signaled for each of the first triangular prediction unit and the second triangular prediction unit. For example, the first index information 1st_merge_idx for determining a triangular merge candidate of the first triangular prediction unit and the second index information 2nd_merge_idx for determining a triangular merge candidate of the second triangular prediction unit may be signaled via a bit stream. The motion information of the first triangular prediction unit may be derived from the triangular merge candidate determined based on the first index information 1st_merge_idx, and the motion information of the second triangular prediction unit may be derived from the triangular merge candidate determined based on the second index information 2nd_merge_idx.
[237] Primeiras informações de índice 1st_merge_idx podem indicar um índice de qualquer um dentre os candidatos a mesclagem triangulares incluídos na lista de candidato a mesclagem triangular. O candidato a mesclagem triangular da primeira unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular indicado pelas primeiras informações de índice 1st_merge_idx.[237] First index information 1st_merge_idx may indicate an index of any of the triangular merge candidates included in the triangular merge candidate list. The triangular merge candidate of the first triangular prediction unit may be determined as a triangular merge candidate indicated by the first index information 1st_merge_idx.
[238] O candidato a mesclagem triangular indicado pelas primeiras informações de índice 1st_merge_idx podem ser definidas para não ser usadas como um candidato a mesclagem triangular da segunda unidade de previsão triangular. Consequentemente, as segundas informações de índice 2nd_merge_idx da segunda unidade de previsão triangular podem indicar um índice de qualquer um dentre os candidatos a mesclagem triangulares remanescentes excluindo o candidato a mesclagem triangular indicado pelas primeiras informações de índice. Quando o valor de segundas informações de índice 2nd_merge_idx é menor que o valor das primeiras informações de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular tendo as informações de índice indicadas pelas segundas informações de índice 2nd_merge_idx. Por outro lado, quando o valor das segundas informações de índice 2nd_merge_idx é igual ou maior que o valor das primeiras informações de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular que tem um valor obtido adicionando 1 para o valor das segundas informações de índice 2nd_merge_idx como um índice.[238] The triangular merge candidate indicated by the first index information 1st_merge_idx may be set to not be used as a triangular merge candidate of the second triangular prediction unit. Accordingly, the second index information 2nd_merge_idx of the second triangular prediction unit may indicate an index of any one of the remaining triangular merge candidates excluding the triangular merge candidate indicated by the first index information. When the value of the second index information 2nd_merge_idx is less than the value of the first index information 1st_merge_idx, the triangular merge candidate of the second triangular prediction unit may be determined as a triangular merge candidate having the index information indicated by the second index information 2nd_merge_idx. On the other hand, when the value of the second index information 2nd_merge_idx is equal to or greater than the value of the first index information 1st_merge_idx, the triangular merge candidate of the second triangular prediction unit can be determined as a triangular merge candidate that has a value obtained by adding 1 to the value of the second index information 2nd_merge_idx as an index.
[239] Alternativamente, a sinalização ou não das segundas informações de índice pode ser determinada de acordo com o número de candidatos a mesclagem triangulares incluídos na lista de candidato a mesclagem triangular. Por exemplo, quando o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular pode incluir não excede 2, a sinalização das segundas informações de índice pode ser omitida. Quando a sinalização das segundas informações de índice é omitida, um segundo candidato a mesclagem triangular pode ser derivado adicionando ou subtraindo um deslocamento para ou a partir das primeiras informações de índice. Por exemplo, quando o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular pode incluir é 2 e as primeiras informações de índice indicam índice 0, o segundo candidato a mesclagem triangular pode ser derivado adicionando 1 às primeiras informações de índice. Alternativamente, quando o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular pode incluir é 2 e as primeiras informações de índice indica 1, o segundo candidato a mesclagem triangular pode ser derivada subtraindo 1 a partir das primeiras informações de índice.[239] Alternatively, whether or not the second index information is signed may be determined according to the number of triangular merge candidates included in the triangular merge candidate list. For example, when the maximum number of triangular merge candidates that the triangular merge candidate list can include does not exceed 2, the sign of the second index information may be omitted. When the sign of the second index information is omitted, a second triangular merge candidate may be derived by adding or subtracting an offset to or from the first index information. For example, when the maximum number of triangular merge candidates that the triangular merge candidate list can include is 2 and the first index information indicates index 0, the second triangular merge candidate may be derived by adding 1 to the first index information. Alternatively, when the maximum number of triangular merge candidates that the triangular merge candidate list can include is 2 and the first index information indicates 1, the second triangular merge candidate can be derived by subtracting 1 from the first index information.
[240] Alternativamente, quando a sinalização das segundas informações de índice é omitida, as segundas informações de índice podem ser definidas para um valor padrão. Aqui, o valor padrão pode ser 0. O segundo candidato a mesclagem triangular pode ser derivado comparando as primeiras informações de índice e as segundas informações de índice. Por exemplo, quando as segundas informações de índice são menores que as primeiras informações de índice, um candidato a mesclagem tendo índice 0 pode ser definido como o segundo candidato a mesclagem triangular, e quando as segundas informações de índice são iguais ou maiores que as primeiras informações de índice, um candidato a mesclagem tendo índice 1 pode ser definido como o segundo candidato a mesclagem triangular.[240] Alternatively, when the flag of the second index information is omitted, the second index information may be set to a default value. Here, the default value may be 0. The second triangular merge candidate can be derived by comparing the first index information and the second index information. For example, when the second index information is less than the first index information, a merge candidate having index 0 may be defined as the second triangular merge candidate, and when the second index information is equal to or greater than the first index information, a merge candidate having index 1 may be defined as the second triangular merge candidate.
[241] Quando o candidato a mesclagem triangular tem informações de movimento unidirecional, as informações de movimento unidirecional do candidato a mesclagem triangular podem ser definidas como as informações de movimento da unidade de previsão triangular. Por outro lado, quando o candidato a mesclagem triangular tem informações de movimento bidirecional, apenas uma entre informações de movimento L0 e informações de movimento L1 pode ser definida como as informações de movimento da unidade de previsão triangular. Quais dentre as informações de movimento L0 e as informações de movimento L1 serão obtidas pode ser determinado com base no índice do candidato a mesclagem triangular ou informações de movimento de uma outra unidade de previsão triangular.[241] When the triangular merge candidate has unidirectional motion information, the unidirectional motion information of the triangular merge candidate can be defined as the motion information of the triangular prediction unit. Conversely, when the triangular merge candidate has bidirectional motion information, only one of L0 motion information and L1 motion information can be defined as the motion information of the triangular prediction unit. Which of the L0 motion information and L1 motion information will be obtained can be determined based on the index of the triangular merge candidate or motion information of another triangular prediction unit.
[242] Por exemplo, quando o índice do candidato a mesclagem triangular é um número par, as informações de movimento L0 da unidade de previsão triangular podem ser definidas como 0, e as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 da unidade de previsão triangular. Por outro lado, quando o índice do candidato a mesclagem triangular é um número ímpar, informações de movimento L1 da unidade de previsão triangular podem ser definidas como 0, e informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como 0. Ao contrário, quando o índice do candidato a mesclagem triangular é um número par, informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como informações de movimento L0 da unidade de previsão triangular, e quando o índice do candidato a mesclagem triangular é um número ímpar, informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 da unidade de previsão triangular. Alternativamente, quando o candidato a mesclagem triangular é um número par para a primeira unidade de previsão triangular, informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como informações de movimento L0 da primeira unidade de previsão triangular, enquanto quando o candidato a mesclagem triangular é um número ímpar para a segunda unidade de previsão triangular, informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 da segunda unidade de previsão triangular.[242] For example, when the index of the triangular merge candidate is an even number, the L0 motion information of the triangular prediction unit can be set to 0, and the L1 motion information of the triangular merge candidate can be set to the L1 motion information of the triangular prediction unit. Conversely, when the index of the triangular merge candidate is an odd number, the L1 motion information of the triangular prediction unit can be set to 0, and the L0 motion information of the triangular merge candidate can be set to 0. Conversely, when the index of the triangular merge candidate is an even number, the L0 motion information of the triangular merge candidate can be set to the L0 motion information of the triangular prediction unit, and when the index of the triangular merge candidate is an odd number, the L1 motion information of the triangular merge candidate can be set to the L1 motion information of the triangular prediction unit. Alternatively, when the triangular merge candidate is an even number for the first triangular prediction unit, L0 motion information of the triangular merge candidate can be defined as L0 motion information of the first triangular prediction unit, while when the triangular merge candidate is an odd number for the second triangular prediction unit, L1 motion information of the triangular merge candidate can be defined as L1 motion information of the second triangular prediction unit.
[243] Alternativamente, quando a primeira unidade de previsão triangular tem informações de movimento L0, informações de movimento L0 da segunda unidade de previsão triangular podem ser definidas como 0, e informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 da segunda unidade de previsão triangular. Por outro lado, quando a primeira unidade de previsão triangular tem informações de movimento L1, informações de movimento L1 da segunda unidade de previsão triangular podem ser definidas como 0, e informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como informação de movimento L0 da segunda unidade de previsão triangular.[243] Alternatively, when the first triangular prediction unit has L0 motion information, L0 motion information of the second triangular prediction unit may be set to 0, and L1 motion information of the triangular merge candidate may be set to L1 motion information of the second triangular prediction unit. Conversely, when the first triangular prediction unit has L1 motion information, L1 motion information of the second triangular prediction unit may be set to 0, and L0 motion information of the triangular merge candidate may be set to L0 motion information of the second triangular prediction unit.
[244] Uma lista de candidato a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular e uma lista de candidato a mesclagem triangular para derivar informações de movimento da segunda unidade de previsão triangular pode ser definida diferentemente.[244] A triangular merge candidate list for deriving motion information from the first triangular prediction unit and a triangular merge candidate list for deriving motion information from the second triangular prediction unit may be defined differently.
[245] Por exemplo, quando um candidato a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular na lista de candidato a mesclagem triangular é especificado com base nas informações de índice para a primeira unidade de previsão triangular, informações de movimento da segunda unidade de previsão triangular podem ser derivadas usando a lista de candidato a mesclagem triangular incluindo os candidatos a mesclagem triangulares remanescentes excluindo o candidato a mesclagem triangular indicado pelas informações de índice. Especificamente, as informações de movimento da segunda unidade de previsão triangular podem ser derivadas de qualquer um dentre os candidatos a mesclagem triangulares remanescentes.[245] For example, when a triangular merge candidate for deriving motion information of the first triangular prediction unit in the triangular merge candidate list is specified based on the index information for the first triangular prediction unit, motion information of the second triangular prediction unit may be derived using the triangular merge candidate list including the remaining triangular merge candidates excluding the triangular merge candidate indicated by the index information. Specifically, motion information of the second triangular prediction unit may be derived from any of the remaining triangular merge candidates.
[246] Consequentemente, o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular da primeira unidade de previsão triangular inclui e o número máximo de candidatos a mesclagem triangulares que a lista de candidato a mesclagem triangular da segunda unidade de previsão triangular inclui pode ser diferente. Por exemplo, quando a lista de candidato a mesclagem triangular da primeira unidade de previsão triangular inclui candidatos a mesclagem M, a lista de candidato a mesclagem triangular da segunda unidade de previsão triangular pode incluir candidatos a mesclagem M-1 excluindo o candidato a mesclagem triangular indicado pelas informações de índice da primeira unidade de previsão triangular.[246] Consequently, the maximum number of triangular merge candidates that the triangular merge candidate list of the first triangular prediction unit includes and the maximum number of triangular merge candidates that the triangular merge candidate list of the second triangular prediction unit includes may be different. For example, when the triangular merge candidate list of the first triangular prediction unit includes M merge candidates, the triangular merge candidate list of the second triangular prediction unit may include M-1 merge candidates excluding the triangular merge candidate indicated by the index information of the first triangular prediction unit.
[247] Como um outro exemplo, um candidato a mesclagem de cada unidade de previsão triangular é derivada com base nos blocos vizinhos adjacentes a um bloco de codificação, e disponibilidade dos blocos vizinhos pode ser determinado considerando o formato ou a posição da unidade de previsão triangular.[247] As another example, a merge candidate of each triangular prediction unit is derived based on the neighboring blocks adjacent to a coding block, and availability of the neighboring blocks can be determined by considering the shape or position of the triangular prediction unit.
[248] A Figura 17 é uma vista para descrever exemplos de determinação de disponibilidade de um bloco vizinho para cada unidade de previsão triangular.[248] Figure 17 is a view to describe examples of determining availability of a neighboring block for each triangular forecast unit.
[249] Um bloco vizinho não adjacentes à primeira unidade de previsão triangular pode ser definido como indisponível para a primeira unidade de previsão triangular, e um bloco vizinho não adjacente à segunda unidade de previsão triangular pode ser definido como indisponível para a segunda unidade de previsão triangular.[249] A neighboring block not adjacent to the first triangular prediction unit may be defined as unavailable to the first triangular prediction unit, and a neighboring block not adjacent to the second triangular prediction unit may be defined as unavailable to the second triangular prediction unit.
[250] Por exemplo, como mostrado no exemplo da Figura 17 (a), quando o tipo de partição triangular esquerda é aplicado a um bloco de codificação, pode ser determinado que blocos A1, A0 e A2 adjacentes à primeira unidade de previsão triangular entre os blocos vizinhos adjacentes ao bloco de codificação estão disponíveis para a primeira unidade de previsão triangular, enquanto blocos B0 e B1 estão indisponíveis para a primeira unidade de previsão triangular. Consequentemente, a lista de candidato a mesclagem triangular para a primeira unidade de previsão triangular pode incluir candidatos a mesclagem triangulares derivados de blocos A1, A0 e A2 e pode não incluir candidatos a mesclagem triangulares derivados de blocos B0 e B1.[250] For example, as shown in the example of Figure 17(a), when the left triangular partition type is applied to a coding block, it may be determined that blocks A1, A0, and A2 adjacent to the first triangular prediction unit among neighboring blocks adjacent to the coding block are available to the first triangular prediction unit, while blocks B0 and B1 are unavailable to the first triangular prediction unit. Consequently, the triangular merge candidate list for the first triangular prediction unit may include triangular merge candidates derived from blocks A1, A0, and A2, and may not include triangular merge candidates derived from blocks B0 and B1.
[251] Como mostrado no exemplo da Figura 17 (b), quando o tipo de partição triangular esquerda é aplicado a um bloco de codificação, pode ser determinado que blocos B0 e B1 adjacentes à segunda unidade de previsão triangular estão disponíveis para a segunda unidade de previsão triangular, enquanto blocos A1, A0 e A2 estão indisponíveis para a segunda unidade de previsão triangular. Consequentemente, a lista de candidato a mesclagem triangular para a segunda unidade de previsão triangular pode incluir candidatos a mesclagem triangulares derivados de blocos B0 e B1 e pode não incluir candidatos a mesclagem triangulares derivados de blocos A1, A0 e A2.[251] As shown in the example of Figure 17(b), when the left triangular partition type is applied to a coding block, it can be determined that blocks B0 and B1 adjacent to the second triangular prediction unit are available to the second triangular prediction unit, while blocks A1, A0, and A2 are unavailable to the second triangular prediction unit. Consequently, the triangular merge candidate list for the second triangular prediction unit may include triangular merge candidates derived from blocks B0 and B1, and may not include triangular merge candidates derived from blocks A1, A0, and A2.
[252] Consequentemente, o número de candidatos a mesclagem triangulares ou a faixa de candidatos a mesclagem triangulares que a unidade de previsão triangular pode usar pode ser determinada com base em pelo menos uma dentre a posição da unidade de previsão triangular ou o tipo de partição do bloco de codificação.[252] Accordingly, the number of triangular merge candidates or the range of triangular merge candidates that the triangular prediction unit can use can be determined based on at least one of the position of the triangular prediction unit or the partition type of the coding block.
[253] Como um outro exemplo, o modo de mesclagem pode ser aplicado a apenas uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. Além disso, as informações de movimento da outra uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular podem ser definidas como iguais às informações de movimento da unidade de previsão triangular para que o modo de mesclagem seja aplicado, ou pode ser derivada refinando as informações de movimento da unidade de previsão triangular para que o modo de mesclagem seja aplicado.[253] As another example, the blending mode may be applied to only one of the first triangular prediction unit and the second triangular prediction unit. Furthermore, the motion information of the other of the first triangular prediction unit and the second triangular prediction unit may be set equal to the motion information of the triangular prediction unit so that the blending mode is applied, or may be derived by refining the motion information of the triangular prediction unit so that the blending mode is applied.
[254] Por exemplo, um vetor de movimento e um índice de imagem de referência da primeira unidade de previsão triangular podem ser derivados com base em um candidato a mesclagem triangular, e um vetor de movimento da segunda unidade de previsão triangular pode ser derivado refinando o vetor de movimento da primeira unidade de previsão triangular. Por exemplo, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um vetor de movimento refinado {Rx, Ry} para ou a partir do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de previsão triangular. o índice de imagem de referência da segunda unidade de previsão triangular pode ser definido para ser igual ao índice de imagem de referência da primeira unidade de previsão triangular.[254] For example, a motion vector and a reference image index of the first triangular prediction unit may be derived based on a triangular merge candidate, and a motion vector of the second triangular prediction unit may be derived by refining the motion vector of the first triangular prediction unit. For example, the motion vector of the second triangular prediction unit may be derived by adding or subtracting a refined motion vector {Rx, Ry} to or from the motion vector {mvD1LXx, mvD1LXy} of the first triangular prediction unit. The reference image index of the second triangular prediction unit may be set to be equal to the reference image index of the first triangular prediction unit.
[255] As informações para determinar um vetor de movimento refinado indicando a diferença entre o vetor de movimento da primeira unidade de previsão triangular e o vetor de movimento da segunda unidade de previsão triangular podem ser sinalizadas por meio de um fluxo de bits. As informações podem incluir pelo menos uma dentre informações que indicam o tamanho do vetor de movimento refinado e informações que indicam o sinal do vetor de movimento refinado.[255] Information for determining a refined motion vector indicating the difference between the motion vector of the first triangular prediction unit and the motion vector of the second triangular prediction unit may be signaled via a bit stream. The information may include at least one of information indicating the size of the refined motion vector and information indicating the sign of the refined motion vector.
[256] Alternativamente, o sinal do vetor de movimento refinado pode ser derivado com base em pelo menos uma dentre a posição da unidade de previsão triangular, o índice da unidade de previsão triangular, e o tipo de partição aplicado ao bloco de codificação.[256] Alternatively, the refined motion vector signal may be derived based on at least one of the position of the triangular prediction unit, the index of the triangular prediction unit, and the partition type applied to the coding block.
[257] Como um outro exemplo, o vetor de movimento e o índice de imagem de referência de qualquer uma dentre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser sinalizada. O vetor de movimento da outra uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser derivada refinando o vetor de movimento sinalizado.[257] As another example, the motion vector and reference image index of either of the first triangular prediction unit and the second triangular prediction unit may be signed. The motion vector of the other of the first triangular prediction unit and the second triangular prediction unit may be derived by refining the signed motion vector.
[258] Por exemplo, o vetor de movimento e o índice de imagem de referência da primeira unidade de previsão triangular podem ser determinados com base nas informações sinalizadas de um fluxo de bits. Além disso, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado refinando o vetor de movimento da primeira unidade de previsão triangular. Por exemplo, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um vetor de movimento refinado {Rx, Ry} para ou a partir do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de previsão triangular. O índice de imagem de referência da segunda unidade de previsão triangular pode ser definido para ser igual ao índice de imagem de referência da primeira unidade de previsão triangular.[258] For example, the motion vector and reference picture index of the first triangular prediction unit may be determined based on the signed information of a bit stream. Further, the motion vector of the second triangular prediction unit may be derived by refining the motion vector of the first triangular prediction unit. For example, the motion vector of the second triangular prediction unit may be derived by adding or subtracting a refined motion vector {Rx, Ry} to or from the motion vector {mvD1LXx, mvD1LXy} of the first triangular prediction unit. The reference picture index of the second triangular prediction unit may be set to be equal to the reference picture index of the first triangular prediction unit.
[259] Previsão de compensação de previsão de movimento para cada bloco de codificação pode ser realizada com base nas informações de movimento da primeira unidade de previsão triangular e nas informações de movimento da segunda unidade de previsão triangular. Neste ponto, a degradação de qualidade de vídeo pode ocorrer no limite entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. Por exemplo, continuidade de qualidade de vídeo pode ser degradada na vizinhança de uma borda existente no limite entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. De modo a reduzir a degradação de qualidade de vídeo no limite, uma amostra de previsão pode ser derivada por meio de um filtro de suavização ou uma previsão ponderada.[259] Motion prediction compensation prediction for each coding block may be performed based on the motion information of the first triangular prediction unit and the motion information of the second triangular prediction unit. At this point, video quality degradation may occur at the boundary between the first triangular prediction unit and the second triangular prediction unit. For example, video quality continuity may be degraded in the vicinity of an edge existing at the boundary between the first triangular prediction unit and the second triangular prediction unit. In order to reduce video quality degradation at the boundary, a prediction sample may be derived via a smoothing filter or a weighted prediction.
[260] As amostras de previsão em um bloco de codificação ao qual o particionamento diagonal é aplicado podem ser derivadas com base em uma operação de soma ponderada de uma primeira amostra de previsão obtida com base nas informações de movimento da primeira unidade de previsão triangular e uma segunda amostra de previsão obtida com base nas informações de movimento da segunda unidade de previsão triangular. Alternativamente, uma amostra de previsão da primeira unidade de previsão triangular é derivada de um primeiro bloco de previsão determinado com base nas informações de movimento da primeira unidade de previsão triangular, e uma amostra de previsão da segunda unidade de previsão triangular é derivada de um segundo bloco de previsão determinado com base nas informações de movimento da segunda unidade de previsão triangular, e uma amostra de previsão posicionado no limite região da primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser derivada com base em uma operação de soma ponderada da primeira amostra de previsão incluída no primeiro bloco de previsão e na segunda amostra de previsão incluída no segundo bloco de previsão. Por exemplo, a Equação 2 mostra um exemplo de derivar amostras de previsão da primeira unidade de previsão triangular e a segunda unidade de previsão triangular. [EQUAÇÃO 2] [260] Prediction samples in a coding block to which diagonal partitioning is applied may be derived based on a weighted sum operation of a first prediction sample obtained based on the motion information of the first triangular prediction unit and a second prediction sample obtained based on the motion information of the second triangular prediction unit. Alternatively, a prediction sample of the first triangular prediction unit is derived from a first prediction block determined based on the motion information of the first triangular prediction unit, and a prediction sample of the second triangular prediction unit is derived from a second prediction block determined based on the motion information of the second triangular prediction unit, and a prediction sample positioned in the boundary region of the first triangular prediction unit and the second triangular prediction unit may be derived based on a weighted sum operation of the first prediction sample included in the first prediction block and the second prediction sample included in the second prediction block. For example, Equation 2 shows an example of deriving prediction samples from the first triangular prediction unit and the second triangular prediction unit. [EQUATION 2]
[261] Na Equação 2, P1 denota uma primeira amostra de previsão, e P2 denota uma segunda amostra de previsão. w1 denota um valor de ponderação aplicado à primeira amostra de previsão, e (1-w1) denota um valor de ponderação aplicado à segunda amostra de previsão. Como mostrado no exemplo da Equação 2, o valor de ponderação aplicado à segunda amostra de previsão pode ser derivado subtraindo o valor de ponderação aplicado à primeira amostra de previsão de um valor constante.[261] In Equation 2, P1 denotes a first forecast sample, and P2 denotes a second forecast sample. w1 denotes a weighting value applied to the first forecast sample, and (1-w1) denotes a weighting value applied to the second forecast sample. As shown in the example in Equation 2, the weighting value applied to the second forecast sample can be derived by subtracting the weighting value applied to the first forecast sample from a constant value.
[262] Quando o tipo de partição triangular esquerda é aplicado a um bloco de codificação, a região limite pode incluir amostras de previsão das quais a coordenada de eixo x e a coordenada de eixo y são iguais. Por outro lado, quando o tipo de partição triangular direita é aplicado a um bloco de codificação, a região limite pode incluir amostras de previsão das quais a soma da coordenada de eixo x e da coordenada de eixo y é maior ou igual a um primeiro valor limítrofe e menor que um segundo valor limítrofe.[262] When the left triangular partition type is applied to a coding block, the boundary region may include prediction samples of which the x-axis coordinate and the y-axis coordinate are equal. Conversely, when the right triangular partition type is applied to a coding block, the boundary region may include prediction samples of which the sum of the x-axis coordinate and the y-axis coordinate is greater than or equal to a first boundary value and less than a second boundary value.
[263] Um tamanho da região limite pode ser determinado com base em pelo menos um dentre o tamanho do bloco de codificação, o formato do bloco de codificação, informações de movimento das unidades de previsão triangulares, um valor de diferença entre os vetores de movimento das unidades de previsão triangulares, uma ordem de saída de imagens de referência, e um valor de diferença entre a primeira amostra de previsão e a segunda amostra de previsão no limite diagonal.[263] A size of the boundary region may be determined based on at least one of the coding block size, the coding block shape, motion information of the triangular prediction units, a difference value between the motion vectors of the triangular prediction units, an output order of reference images, and a difference value between the first prediction sample and the second prediction sample at the diagonal boundary.
[264] As Figuras 18 e 19 são vistas que mostram exemplos de derivação de uma amostra de previsão com base em uma operação de soma ponderada de uma primeira amostra de previsão e uma segunda amostra de previsão. A Figura 18 mostra um exemplo de aplicação do tipo de partição triangular esquerda a um bloco de codificação, e a Figura 19 mostra um exemplo de aplicação do tipo de partição triangular direita a um bloco de codificação. Além disso, as Figuras 18 (a) e 19 (a) são vistas que mostram padrões de previsão para um componente luma, e as Figuras 18 (b) e 19 (b) são vistas que mostram padrões de previsão para um componente croma.[264] Figures 18 and 19 are views showing examples of deriving a prediction sample based on a weighted sum operation of a first prediction sample and a second prediction sample. Figure 18 shows an example of applying the left triangular partition type to a coding block, and Figure 19 shows an example of applying the right triangular partition type to a coding block. In addition, Figures 18(a) and 19(a) are views showing prediction patterns for a luma component, and Figures 18(b) and 19(b) are views showing prediction patterns for a chroma component.
[265] Nos desenhos, os números marcados nas amostras de previsão posicionadas perto do limite entre a primeira unidade de previsão e a segunda unidade de previsão indicam valores de ponderação aplicados à primeira amostra de previsão. Por exemplo, quando um número marcado em uma amostra de previsão é N, a amostra de previsão pode ser derivada aplicando um valor de ponderação de N/8 à primeira amostra de previsão e aplicando um valor de ponderação de (1-(N/8)) à segunda amostra de previsão.[265] In the drawings, numbers marked on the forecast samples positioned near the boundary between the first forecast unit and the second forecast unit indicate weighting values applied to the first forecast sample. For example, when a number marked on a forecast sample is N, the forecast sample can be derived by applying a weighting value of N/8 to the first forecast sample and applying a weighting value of (1-(N/8)) to the second forecast sample.
[266] Em uma região não limite, a primeira amostra de previsão ou a segunda amostra de previsão pode ser determinada como uma amostra de previsão. Com referência ao exemplo da Figura 18, em uma região pertencente à primeira unidade de previsão triangular entre as regiões em que o valor absoluto da diferença entre a coordenada de eixo x e a coordenada de eixo y é maior que um valor limítrofe, a primeira amostra de previsão derivada com base nas informações de movimento da primeira unidade de previsão triangular pode ser determinada como uma amostra de previsão. Por outro lado, em uma região pertencente à segunda unidade de previsão triangular entre as regiões em que o valor de diferença entre a coordenada de eixo x e a coordenada de eixo y é maior que um valor limítrofe, a segunda amostra de previsão derivada com base nas informações de movimento da segunda unidade de previsão triangular pode ser determinada como uma amostra de previsão.[266] In a non-threshold region, either the first prediction sample or the second prediction sample may be determined as a prediction sample. Referring to the example in Figure 18, in a region belonging to the first triangular prediction unit among regions in which the absolute value of the difference between the x-axis coordinate and the y-axis coordinate is greater than a threshold value, the first prediction sample derived based on the motion information of the first triangular prediction unit may be determined as a prediction sample. Conversely, in a region belonging to the second triangular prediction unit among regions in which the difference value between the x-axis coordinate and the y-axis coordinate is greater than a threshold value, the second prediction sample derived based on the motion information of the second triangular prediction unit may be determined as a prediction sample.
[267] Com referência ao exemplo da Figura 19, em uma região em que a soma da coordenada de eixo x e a coordenada de eixo y é menor que um primeiro valor limítrofe, a primeira amostra de previsão derivada com base nas informações de movimento da primeira unidade de previsão triangular pode ser determinada como uma amostra de previsão. Por outro lado, em uma região em que a soma da coordenada de eixo x e a coordenada de eixo y é maior que um segundo valor limítrofe, a segunda amostra de previsão derivada com base nas informações de movimento da segunda unidade de previsão triangular pode ser determinada como uma amostra de previsão.[267] Referring to the example of Figure 19, in a region where the sum of the x-axis coordinate and the y-axis coordinate is less than a first threshold value, the first prediction sample derived based on the motion information of the first triangular prediction unit may be determined as a prediction sample. Conversely, in a region where the sum of the x-axis coordinate and the y-axis coordinate is greater than a second threshold value, the second prediction sample derived based on the motion information of the second triangular prediction unit may be determined as a prediction sample.
[268] Um valor limítrofe para determinar uma região não limite pode ser determinado com base em pelo menos um dentre o tamanho de um bloco de codificação, o formato do bloco de codificação, e um componente de cor. Por exemplo, quando o valor limítrofe para um componente luma é definida para N, o valor limítrofe para um componente croma pode ser definida para N/2.[268] A threshold value for determining a non-threshold region may be determined based on at least one of the size of a coding block, the format of the coding block, and a color component. For example, when the threshold value for a luma component is set to N, the threshold value for a chroma component may be set to N/2.
[269] As amostras de previsão incluídas na região limite podem ser derivadas com base em uma operação de soma ponderada da primeira amostra de previsão e da segunda amostra de previsão. Neste ponto, os valores de ponderação aplicados à primeira amostra de previsão e a segunda amostra de previsão pode ser determinado com base em pelo menos uma dentre a posição de uma amostra de previsão, o tamanho de um bloco de codificação, o formato do bloco de codificação, e um componente de cor.[269] The prediction samples included in the boundary region may be derived based on a weighted sum operation of the first prediction sample and the second prediction sample. At this point, the weighting values applied to the first prediction sample and the second prediction sample may be determined based on at least one of the position of a prediction sample, the size of a coding block, the format of the coding block, and a color component.
[270] Por exemplo, como mostrado no exemplo da Figura 18 (a), amostras de previsão na posição da mesma coordenada de eixo x e coordenada de eixo y podem ser derivadas aplicando o mesmo valor de ponderação à primeira amostra de previsão e a segunda amostra de previsão. As amostras de previsão das quais o valor absoluto da diferença entre a coordenada de eixo x e a coordenada de eixo y é 1 pode ser derivado definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (3:1) ou (1:3). Além disso, as amostras de previsão do qual o valor absoluto da diferença da coordenada de eixo x e a coordenada de eixo y é 2 pode ser derivada definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (7:1) ou (1:7).[270] For example, as shown in the example of Figure 18(a), prediction samples at the position of the same x-axis coordinate and y-axis coordinate can be derived by applying the same weighting value to the first prediction sample and the second prediction sample. The prediction samples of which the absolute value of the difference between the x-axis coordinate and the y-axis coordinate is 1 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (3:1) or (1:3). Furthermore, the prediction samples of which the absolute value of the difference of the x-axis coordinate and the y-axis coordinate is 2 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (7:1) or (1:7).
[271] Alternativamente, como mostrado no exemplo da Figura 18 (b), as amostras de previsão na posição da mesma coordenada de eixo x e coordenada de eixo y podem ser derivadas aplicando o mesmo valor de ponderação à primeira amostra de previsão e à segunda amostra de previsão, e as amostras de previsão das quais o valor absoluto da diferença entre a coordenada de eixo x e a coordenada de eixo y é 1 pode ser derivado definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (7:1) ou (1:7).[271] Alternatively, as shown in the example of Figure 18(b), the prediction samples at the position of the same x-axis coordinate and y-axis coordinate can be derived by applying the same weighting value to the first prediction sample and the second prediction sample, and the prediction samples of which the absolute value of the difference between the x-axis coordinate and the y-axis coordinate is 1 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (7:1) or (1:7).
[272] Por exemplo, como mostrado no exemplo da Figura 19 (a), as amostras de previsão das quais a soma da coordenada de eixo x e a coordenada de eixo y é menor que a largura ou a altura de um bloco de codificação por 1 pode ser derivada aplicando o mesmo valor de ponderação à primeira amostra de previsão e à segunda amostra de previsão. As amostras de previsão das quais a soma da coordenada de eixo x e a coordenada de eixo y é igual ou menor que a largura ou a altura do bloco de codificação por 2 pode ser derivada definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (3:1) ou (1:3). As amostras previstas das quais a soma da coordenada de eixo xs e a coordenada de eixo ys é maior ou menor que a largura ou a altura do bloco de codificação por 1 ou 3 podem ser derivadas definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (7:1) ou (1:7).[272] For example, as shown in the example of Figure 19(a), the prediction samples of which the sum of the x-axis coordinate and the y-axis coordinate is less than the width or the height of a coding block by 1 can be derived by applying the same weighting value to the first prediction sample and the second prediction sample. The prediction samples of which the sum of the x-axis coordinate and the y-axis coordinate is equal to or less than the width or the height of the coding block by 2 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (3:1) or (1:3). The predicted samples of which the sum of the x-axis coordinate and the y-axis coordinate is greater than or less than the width or the height of the coding block by 1 or 3 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (7:1) or (1:7).
[273] Alternativamente, como mostrado no exemplo da Figura 19 (b), as amostras de previsão das quais a soma da coordenada de eixo x e a coordenada de eixo y é menor que a largura ou a altura do bloco de codificação por 1 podem ser derivadas aplicando o mesmo valor de ponderação à primeira amostra de previsão e à segunda amostra de previsão. As amostras de previsão das quais a soma da coordenada de eixo x e a coordenada de eixo y é igual ou menor que a largura ou a altura do bloco de codificação por 2 podem ser derivadas definindo a razão de valor de ponderação aplicado à primeira amostra de previsão e à segunda amostra de previsão para (7:1) ou (1:7).[273] Alternatively, as shown in the example of Figure 19(b), prediction samples of which the sum of the x-axis coordinate and the y-axis coordinate is less than the width or the height of the coding block by 1 can be derived by applying the same weighting value to the first prediction sample and the second prediction sample. Prediction samples of which the sum of the x-axis coordinate and the y-axis coordinate is equal to or less than the width or the height of the coding block by 2 can be derived by setting the ratio of the weighting value applied to the first prediction sample and the second prediction sample to (7:1) or (1:7).
[274] Como um outro exemplo, o valor de ponderação pode ser determinado considerando a posição de uma amostra de previsão ou o formato de um bloco de codificação. As Equações 3 a 5 mostram um exemplo de derivação de um valor de ponderação quando o tipo de partição triangular esquerda é aplicado a um bloco de codificação. A Equação 3 mostra um exemplo de derivação de um valor de ponderação aplicado à primeira amostra de previsão quando o bloco de codificação tem um formato quadrado. [EQUAÇÃO 3] [274] As another example, the weight value can be determined by considering the position of a prediction sample or the shape of a coding block. Equations 3 through 5 show an example of deriving a weight value when the left triangular partition type is applied to a coding block. Equation 3 shows an example of deriving a weight value applied to the first prediction sample when the coding block has a square shape. [EQUATION 3]
[275] Na Equação 3, x e y denota a posição de uma amostra de previsão. Quando um bloco de codificação tem um formato não quadrado, um valor de ponderação aplicado à primeira amostra de previsão pode ser derivado como mostrado na Equação 4 ou 5. A Equação 4 mostra um caso em que a largura de um bloco de codificação é maior que a altura, e a Equação 5 mostra um caso em que a largura de um bloco de codificação é menor que a altura. [EQUAÇÃO 4] [275] In Equation 3, x and y denote the position of a prediction sample. When a coding block has a non-square shape, a weighting value applied to the first prediction sample can be derived as shown in Equation 4 or 5. Equation 4 shows a case where the width of a coding block is greater than the height, and Equation 5 shows a case where the width of a coding block is less than the height. [EQUATION 4]
[276] Quando o tipo de partição triangular direita é aplicado a um bloco de codificação, um valor de ponderação aplicado à primeira amostra de previsão pode ser determinado como mostrado nas Equações 6 a 8. A Equação 6 mostra um exemplo de derivar um valor de ponderação aplicado à primeira amostra de previsão quando o bloco de codificação tem um formato quadrado. [EQUAÇÃO 6] [276] When the right triangular partition type is applied to a coding block, a weighting value applied to the first prediction sample can be determined as shown in Equations 6 through 8. Equation 6 shows an example of deriving a weighting value applied to the first prediction sample when the coding block has a square shape. [EQUATION 6]
[277] Na Equação 6, CbW denota a largura de um bloco de codificação. Quando o bloco de codificação tem um formato não quadrado, o valor de ponderação aplicado à primeira amostra de previsão pode ser derivado como mostrado na Equação 7 ou Equação 8. A Equação 7 mostra um caso em que a largura de um bloco de codificação é maior que a altura, e a Equação 8 mostra um caso em que a largura de um bloco de codificação é menor que a altura. [EQUAÇÃO 7] [277] In Equation 6, CbW denotes the width of a coding block. When the coding block has a non-square shape, the weighting value applied to the first prediction sample can be derived as shown in Equation 7 or Equation 8. Equation 7 shows a case where the width of a coding block is greater than the height, and Equation 8 shows a case where the width of a coding block is less than the height. [EQUATION 7]
[278] Na Equação 7, CbH denota a altura do bloco de codificação.[278] In Equation 7, CbH denotes the height of the coding block.
[279] Como mostrado no exemplo, entre as amostras de previsão na região limite, as amostras de previsão incluídas na primeira unidade de previsão triangular são derivadas atribuindo um valor de ponderação maior que o da segunda amostra de previsão para a primeira amostra de previsão, e as amostras de previsão incluídas na segunda unidade de previsão triangular são derivadas atribuindo um valor de ponderação maior que o da primeira amostra de previsão para a segunda amostra de previsão.[279] As shown in the example, among the forecast samples in the boundary region, the forecast samples included in the first triangular forecast unit are derived by assigning a weighting value greater than that of the second forecast sample to the first forecast sample, and the forecast samples included in the second triangular forecast unit are derived by assigning a weighting value greater than that of the first forecast sample to the second forecast sample.
[280] Quando o particionamento diagonal é aplicado a um bloco de codificação, pode ser configurado para não aplicar um modo de previsão combinado combinando o modo de intraprevisão e o modo de mesclagem ao bloco de codificação.[280] When diagonal partitioning is applied to a coding block, it can be configured to not apply a combined prediction mode by combining the intraprediction mode and the blending mode to the coding block.
[281] A intraprevisão é para prognosticar um bloco atual usando amostras reconstruídas que foram codificadas/decodificadas na vizinhança do bloco atual. Neste ponto, as amostras reconstruídas antes de um filtro in loop ser aplicado podem ser usadas para intraprevisão do bloco atual.[281] Intraprediction is to predict a current block using reconstructed samples that were encoded/decoded in the neighborhood of the current block. At this point, the reconstructed samples before an in-loop filter was applied can be used for intraprediction of the current block.
[282] A técnica de intraprevisão inclui intraprevisão com base em matriz, e intraprevisão geral considerando direcionalidade em relação a amostras reconstruídas vizinhas. Informações que indicam a técnica de intraprevisão do bloco atual podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Alternativamente, a técnica de intraprevisão do bloco atual pode ser determinada com base em pelo menos uma dentre a posição do bloco atual, o tamanho do bloco atual, o formato do bloco atual, e uma técnica de intraprevisão de um bloco vizinho. Por exemplo, quando o bloco atual existe através de um limite da imagem, pode ser configurado para não aplicar a intraprevisão com base em matriz de intraprevisão ao bloco atual.[282] The intraprediction technique includes matrix-based intraprediction, and general intraprediction considering directionality relative to neighboring reconstructed samples. Information indicating the intraprediction technique of the current block may be signaled via a bit stream. The information may be a 1-bit flag. Alternatively, the intraprediction technique of the current block may be determined based on at least one of the position of the current block, the size of the current block, the shape of the current block, and an intraprediction technique of a neighboring block. For example, when the current block exists across an image boundary, it may be configured to not apply the matrix-based intraprediction to the current block.
[283] A intraprevisão com base em matriz de intraprevisão é um método de aquisição de um bloco de previsão do bloco atual por um codificador e um decodificador com base em um produto de matriz entre uma matriz anteriormente armazenada e amostras reconstruídas na vizinhança do bloco atual. As informações para especificar qualquer uma dentre uma pluralidade de matrizes anteriormente armazenadas podem ser sinalizadas por meio de um fluxo de bits. O decodificador pode determinar uma matriz para intraprevisão do bloco atual com base nas informações e no tamanho do bloco atual.[283] Intraprediction based on intraprediction matrix is a method of acquiring a prediction block of the current block by an encoder and a decoder based on a matrix product between a previously stored matrix and reconstructed samples in the neighborhood of the current block. Information for specifying any of a plurality of previously stored matrices may be signaled via a bit stream. The decoder may determine a matrix for intraprediction of the current block based on the information and size of the current block.
[284] A intraprevisão geral é um método de aquisição de um bloco de previsão para o bloco atual com base em um modo de intraprevisão não angular ou um modo de intraprevisão angular. Em seguida, um processo de realização de intraprevisão com base em intraprevisão geral será descrito em mais detalhes com referência aos desenhos.[284] General intraprediction is a method of acquiring a prediction block for the current block based on a non-angular intraprediction mode or an angular intraprediction mode. Next, a process of performing intraprediction based on general intraprediction will be described in more detail with reference to the drawings.
[285] A Figura 20 é um fluxograma que ilustra um método de intraprevisão de acordo com uma modalidade da presente invenção.[285] Figure 20 is a flowchart illustrating an intraforecast method in accordance with an embodiment of the present invention.
[286] Uma linha de amostra de referência do bloco atual pode ser determinada (S2001). A linha de amostra de referência significa um conjunto de amostras de referência incluídas em uma k-ésima linha além da parte superior e/ou do lado esquerdo do bloco atual. As amostras de referência podem ser derivadas de amostras reconstruídas que foram codificadas/decodificadas na vizinhança do bloco atual.[286] A reference sample line of the current block may be determined (S2001). The reference sample line means a set of reference samples included in a k-th line beyond the top and/or left side of the current block. The reference samples may be derived from reconstructed samples that were encoded/decoded in the neighborhood of the current block.
[287] As informações de índice para identificar a linha de amostra de referência do bloco atual entre uma pluralidade de linha de amostra de referências podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações de índice intra_luma_ref_idx para especificar a linha de amostra de referência do bloco atual podem ser sinalizadas por meio de um fluxo de bits. As informações de índice podem ser sinalizadas pela unidade de bloco de codificação.[287] Index information for identifying the reference sample line of the current block among a plurality of reference sample lines may be signaled via a bit stream. For example, index information intra_luma_ref_idx for specifying the reference sample line of the current block may be signaled via a bit stream. The index information may be signaled by the coding block unit.
[288] A pluralidade de linha de amostra de referências pode incluir pelo menos uma dentre uma primeira linha, uma segunda linha, uma terceira linha, e uma quarta linha na parte superior e/ou lado esquerdo do bloco atual. Uma linha de amostra de referência configurada de uma linha adjacente à parte superior do bloco atual e uma coluna adjacente ao lado esquerdo do bloco atual entre a pluralidade de linhas de amostra de referência é denominada como uma linha de amostra de referência adjacente, e as outras linhas de amostra de referência podem ser denominadas como linhas de amostra de referência não adjacentes.[288] The plurality of reference sample rows may include at least one of a first row, a second row, a third row, and a fourth row at the top and/or left side of the current block. A reference sample row configured from a row adjacent to the top of the current block and a column adjacent to the left side of the current block among the plurality of reference sample rows is referred to as an adjacent reference sample row, and the other reference sample rows may be referred to as non-adjacent reference sample rows.
[289] Apenas algumas da pluralidade de linhas de amostra de referência podem ser selecionadas como a linha de amostra de referência do bloco atual. Por exemplo, as linhas de amostra de referência remanescentes excluindo uma terceira linha de amostra de referência não adjacente entre a pluralidade de linhas de amostra de referência pode ser definida como linhas de amostra de referência candidatas. Tabela 3 mostra índices respectivamente atribuídos às linhas de amostra de referência candidatas. [TABELA 3] [289] Only some of the plurality of reference sample lines may be selected as the reference sample line of the current block. For example, the remaining reference sample lines excluding a third non-adjacent reference sample line among the plurality of reference sample lines may be defined as candidate reference sample lines. Table 3 shows indexes respectively assigned to the candidate reference sample lines. [TABLE 3]
[290] Um número maior de linhas de amostra de referência candidatas ou um número menor de linhas de amostra de referência candidatas do que as linhas de amostra de referência candidatas descritas acima podem ser definidas. Além disso, o número ou posições de linhas de amostra de referência não adjacentes definido como linhas de amostra de referência candidatas não é limitado ao exemplo descrito acima. Por exemplo, uma primeira linha de amostra de referência não adjacente e uma terceira linha de amostra de referência não adjacente podem ser definidas como linhas de amostra de referência candidatas, ou uma segunda linha de amostra de referência não adjacente e uma terceira linha de amostra de referência não adjacente podem ser definidas como linhas de amostra de referência candidatas. Alternativamente, toda a primeira linha de amostra de referência não adjacente, a segunda linha de amostra de referência não adjacente, e a terceira linha de amostra de referência não adjacente podem ser definidas como linhas de amostra de referência candidatas.[290] A greater number of candidate reference sample lines or a smaller number of candidate reference sample lines than the candidate reference sample lines described above may be defined. Furthermore, the number or positions of non-adjacent reference sample lines defined as candidate reference sample lines is not limited to the example described above. For example, a first non-adjacent reference sample line and a third non-adjacent reference sample line may be defined as candidate reference sample lines, or a second non-adjacent reference sample line and a third non-adjacent reference sample line may be defined as candidate reference sample lines. Alternatively, the entire first non-adjacent reference sample line, the second non-adjacent reference sample line, and the third non-adjacent reference sample line may be defined as candidate reference sample lines.
[291] O número ou tipos de linhas de amostra de referência candidatas podem ser determinados com base em pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, a posição do bloco atual, se ou não o bloco atual é particionado em sub-blocos, e o modo de intraprevisão do bloco atual.[291] The number or types of candidate reference sample lines may be determined based on at least one of the size of the current block, the format of the current block, the position of the current block, whether or not the current block is partitioned into sub-blocks, and the intraprediction mode of the current block.
[292] A linha de amostra de referência do bloco atual pode ser determinada com base em pelo menos uma dentre a posição do bloco atual, o tamanho do bloco atual, o formato do bloco atual, e um modo de codificação de previsão de um bloco vizinho. Por exemplo, quando o bloco atual está em contato com o limite de uma imagem, um bloco, uma fatia, ou uma unidade de árvore de codificação, a linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.[292] The reference sample line of the current block may be determined based on at least one of the position of the current block, the size of the current block, the format of the current block, and a predictive coding mode of a neighboring block. For example, when the current block is in contact with the boundary of a picture, a block, a slice, or a coding tree unit, the adjacent reference sample line may be determined as the reference sample line of the current block.
[293] Alternativamente, quando o bloco atual tem um formato não quadrado, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual. Alternativamente, quando a relação largura para altura do bloco atual é maior ou igual a um valor limítrofe, a linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.[293] Alternatively, when the current block has a non-square shape, an adjacent reference sample line may be determined as the reference sample line of the current block. Alternatively, when the width to height ratio of the current block is greater than or equal to a threshold value, the adjacent reference sample line may be determined as the reference sample line of the current block.
[294] A linha de amostra de referência pode incluir amostras de referência superiores posicionadas na parte superior do bloco atual e amostras de referência esquerdas posicionadas no lado esquerdo do bloco atual. As amostras de referência superiores e as amostras de referência esquerdas podem ser derivadas de amostras reconstruídas na vizinhança do bloco atual. As amostras reconstruídas podem estar em um estado antes do filtro in loop ser aplicado.[294] The reference sample line may include top reference samples positioned at the top of the current block and left reference samples positioned at the left side of the current block. The top reference samples and left reference samples may be derived from reconstructed samples in the neighborhood of the current block. The reconstructed samples may be in a state before the in-loop filter is applied.
[295] Em seguida, o modo de intraprevisão do bloco atual pode ser determinado (S2002). Como para o modo de intraprevisão do bloco atual, pelo menos um dentre um modo de intraprevisão não angular e um modo de intraprevisão angular pode ser determinado como o modo de intraprevisão do bloco atual. O modo de intraprevisão não angular inclui um modo plano e um modo de Dc, e o modo de intraprevisão angular inclui 33 ou 65 modos entre a direção diagonal esquerda inferior e a direção diagonal direita superior.[295] Then, the intraprediction mode of the current block can be determined (S2002). As for the intraprediction mode of the current block, at least one of a non-angular intraprediction mode and an angular intraprediction mode can be determined as the intraprediction mode of the current block. The non-angular intraprediction mode includes a planar mode and a Dc mode, and the angular intraprediction mode includes 33 or 65 modes between the lower left diagonal direction and the upper right diagonal direction.
[296] A Figura 21 é uma vista que mostra modos de intraprevisão.[296] Figure 21 is a view showing intraprediction modes.
[297] A Figura 21 (a) mostra 35 modos de intraprevisão, e a Figura 21 (b) mostra 67 modos de intraprevisão.[297] Figure 21(a) shows 35 intraforecast modes, and Figure 21(b) shows 67 intraforecast modes.
[298] Um número maior ou menor de modos de intraprevisão do que os mostrados na Figura 21 podem ser definidos.[298] A greater or lesser number of intraforecast modes than those shown in Figure 21 can be defined.
[299] Um Modo Mais Provável (MPM) pode ser definido com base no modo de intraprevisão de um bloco vizinho adjacente ao bloco atual. Aqui, o bloco vizinho pode incluir um bloco vizinho esquerdo adjacente ao lado esquerdo do bloco atual e um bloco vizinho superior adjacente à parte superior do bloco atual.[299] A Most Likely Mode (MPM) can be defined based on the intraprediction mode of a neighboring block adjacent to the current block. Here, the neighboring block may include a left neighboring block adjacent to the left side of the current block and an upper neighboring block adjacent to the top of the current block.
[300] O número de MPMs incluído em uma lista de MPM pode ser anteriormente definido no codificador e no decodificador. O número de MPMs incluído na lista de MPM pode ser predefinido no codificador e no decodificador. Por exemplo, o número de MPMs pode ser 3, 4, 5 ou 6. Alternativamente, as informações que indicam o número de MPMs podem ser sinalizadas por meio de um fluxo de bits. Alternativamente, o número de MPMs pode ser determinado com base em pelo menos um dentre o modo de codificação de previsão de um bloco vizinho, e o tamanho, o formato, e a linha de amostra de referência índice do bloco atual. Por exemplo, quando uma linha de amostra de referência adjacente é determinada como a linha de amostra de referência do bloco atual, N MPMs podem ser usados, enquanto quando uma linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual, M MPMs pode ser usado. M é um número natural menor que N, e por exemplo, N pode ser 6, e M pode ser 5, 4 ou 3. Consequentemente, quando o índice da linha de amostra de referência do bloco atual é 0 e o sinalizador de MPM é verdadeiro, qualquer um dentre 6 modos de intraprevisão candidatos pode ser determinado como o modo de intraprevisão do bloco atual, enquanto quando o índice da linha de amostra de referência do bloco atual é maior que 0 e o sinalizador de MPM é verdadeiro, qualquer um dentre 5 modos de intraprevisão candidatos pode ser determinado como o modo de intraprevisão do bloco atual.[300] The number of MPMs included in an MPM list may be predefined in the encoder and decoder. The number of MPMs included in the MPM list may be predefined in the encoder and decoder. For example, the number of MPMs may be 3, 4, 5, or 6. Alternatively, information indicating the number of MPMs may be signaled via a bit stream. Alternatively, the number of MPMs may be determined based on at least one of the prediction coding mode of a neighboring block, and the size, format, and reference sample line index of the current block. For example, when an adjacent reference sample line is determined as the reference sample line of the current block, N MPMs may be used, while when a non-adjacent reference sample line is determined as the reference sample line of the current block, M MPMs may be used. M is a natural number less than N, and for example, N can be 6, and M can be 5, 4, or 3. Consequently, when the reference sample line index of the current block is 0 and the MPM flag is true, any one of 6 candidate intraprediction modes can be determined as the intraprediction mode of the current block, while when the reference sample line index of the current block is greater than 0 and the MPM flag is true, any one of 5 candidate intraprediction modes can be determined as the intraprediction mode of the current block.
[301] Alternativamente, um número fixo (por exemplo, 6 ou 5) de candidatos de MPM pode ser usado independentemente do índice da linha de amostra de referência do bloco atual.[301] Alternatively, a fixed number (e.g., 6 or 5) of MPM candidates may be used regardless of the index of the current block's reference sample line.
[302] Uma lista de MPM incluindo uma pluralidade de MPMs é gerada, e informações que indicam se um MPM que é o mesmo que o modo de intraprevisão do bloco atual está incluído na lista de MPM podem ser sinalizadas por meio de um fluxo de bits. As informações é um sinalizador de 1 bit e podem ser denominadas como um sinalizador de MPM. Quando o sinalizador de MPM indica que um MPM igual ao do bloco atual está incluído na lista de MPM, as informações de índice identificando um dentre os MPMs podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações de índice mpm_idx especificando qualquer uma dentre a pluralidade de MPMs podem ser sinalizadas por meio de um fluxo de bits. O MPM especificado pelas informações de índice pode ser definido como o modo de intraprevisão do bloco atual. Quando o sinalizador de MPM indica que um MPM igual ao do bloco atual não está incluído na lista de MPM, informações de modo residual indicando qualquer um dentre modos de intraprevisão residuais exceto MPMs podem ser sinalizadas por meio de um fluxo de bits. As informações de modo residual indicam um valor de índice correspondente ao modo de intraprevisão do bloco atual quando índices são reatribuídos aos modos de intraprevisão residuais excluindo os MPMs. O decodificador pode organizar os MPMs em ordem ascendente e determinar o modo de intraprevisão do bloco atual comparando as informações de modo residual com os MPMs. Por exemplo, quando as informações de modo residual são iguais ou menores que o MPM, o modo de intraprevisão do bloco atual pode ser derivado adicionando 1 às informações de modo residual.[302] An MPM list including a plurality of MPMs is generated, and information indicating whether an MPM that is the same as the intraprediction mode of the current block is included in the MPM list may be signaled via a bit stream. The information is a 1-bit flag and may be referred to as an MPM flag. When the MPM flag indicates that an MPM that is the same as that of the current block is included in the MPM list, index information identifying one of the MPMs may be signaled via a bit stream. For example, index information mpm_idx specifying any one of the plurality of MPMs may be signaled via a bit stream. The MPM specified by the index information may be set as the intraprediction mode of the current block. When the MPM flag indicates that an MPM equal to that of the current block is not included in the MPM list, residual mode information indicating any of the residual intraprediction modes other than MPMs can be signaled via a bitstream. The residual mode information indicates an index value corresponding to the current block's intraprediction mode when indices are reassigned to the residual intraprediction modes excluding MPMs. The decoder can arrange the MPMs in ascending order and determine the current block's intraprediction mode by comparing the residual mode information with the MPMs. For example, when the residual mode information is equal to or less than the MPM, the current block's intraprediction mode can be derived by adding 1 to the residual mode information.
[303] Quando o modo de intraprevisão do bloco atual é derivado, a comparação entre alguns dos MPMs e as informações de modo residual pode ser omitida. Por exemplo, entre os MPMs, MPMs de modo de intraprevisão não angular podem ser excluídos de alvos de comparação. Quando modos de intraprevisão não angulares são definidos como MPMs, é claro que as informações de modo residual indicam o modo de intraprevisão angular e, assim, o modo de intraprevisão do bloco atual pode ser derivado por meio de comparação entre os MPMs residuais excluindo os modos de intraprevisão não angulares e as informações de modo residual. Em vez de excluir os modos de intraprevisão não angulares a partir dos alvos de comparação, o número dos modos de intraprevisão não angulares é adicionado às informações de modo residual e, então, um valor de resultado da comparação pode ser comparado com os MPMs residuais.[303] When the intraprediction mode of the current block is derived, the comparison between some of the MPMs and the residual mode information may be omitted. For example, among the MPMs, non-angular intraprediction mode MPMs may be excluded from comparison targets. When non-angular intraprediction modes are defined as MPMs, it is clear that the residual mode information indicates the angular intraprediction mode, and thus the intraprediction mode of the current block can be derived by comparing the residual MPMs excluding the non-angular intraprediction modes and the residual mode information. Instead of excluding the non-angular intraprediction modes from the comparison targets, the number of the non-angular intraprediction modes is added to the residual mode information, and then a comparison result value can be compared with the residual MPMs.
[304] Em vez de definir o modo padrão para MPM, informações que indicam se o modo de intraprevisão do bloco atual é ou não o modo padrão podem ser sinalizadas por meio de um fluxo de bits. As informações são um sinalizador de 1 bit, e o sinalizador pode ser denominado como um sinalizador de modo padrão. O sinalizador de modo padrão pode ser sinalizado apenas quando o sinalizador de MPM indica que um MPM igual ao do bloco atual está incluído na lista de MPM. Como descrito acima, o modo padrão pode incluir pelo menos um dentre um modo plano, um modo de Dc, um modo de direção vertical, e um modo de direção horizontal. Por exemplo, quando o modo plano é definido como o modo padrão, o sinalizador de modo padrão pode indicar se ou não o modo de intraprevisão do bloco atual é um modo plano. Quando o sinalizador de modo padrão indica que o modo de intraprevisão do bloco atual não é o modo padrão, um entre os MPMs indicados pelas informações de índice pode ser definido como o modo de intraprevisão do bloco atual.[304] Instead of setting the default mode for the MPM, information indicating whether or not the current block's intraprediction mode is the default mode may be signaled via a bit stream. The information is a 1-bit flag, and the flag may be referred to as a default mode flag. The default mode flag may be signaled only when the MPM flag indicates that an MPM equal to that of the current block is included in the MPM list. As described above, the default mode may include at least one of a flat mode, a Dc mode, a vertical direction mode, and a horizontal direction mode. For example, when the flat mode is set as the default mode, the default mode flag may indicate whether or not the current block's intraprediction mode is a flat mode. When the default mode flag indicates that the current block's intraprediction mode is not the default mode, one of the MPMs indicated by the index information may be set as the current block's intraprediction mode.
[305] Quando o sinalizador de modo padrão é usado, pode ser configurado para não definir um modo de intraprevisão igual ao modo padrão como um MPM. Por exemplo, quando o sinalizador de modo padrão indica se o modo de intraprevisão do bloco atual é um modo plano, o modo de intraprevisão do bloco atual pode ser derivado usando 5 MPMs excluindo o MPM correspondente ao modo plano.[305] When the default mode flag is used, it can be configured to not define an intraprediction mode equal to the default mode as an MPM. For example, when the default mode flag indicates whether the current block's intraprediction mode is a flat mode, the current block's intraprediction mode can be derived using 5 MPMs excluding the MPM corresponding to the flat mode.
[306] Quando uma pluralidade de modos de intraprevisão é definido como modos padrão, informações de índice que indicam qualquer um dentre os modos padrão podem ser adicionalmente sinalizadas. O modo de intraprevisão do bloco atual pode ser definido como o modo padrão indicado pelas informações de índice.[306] When a plurality of intraprediction modes are defined as default modes, index information indicating any of the default modes may be additionally signaled. The intraprediction mode of the current block may be defined as the default mode indicated by the index information.
[307] Quando o índice da linha de amostra de referência do bloco atual não é 0, pode ser configurado para não usar o modo padrão. Por exemplo, pode ser configurado para não usar um modo de intraprevisão não angular como um modo de Dc ou um modo plano quando uma linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual. Consequentemente, quando o índice da linha de amostra de referência não é 0, o sinalizador de modo padrão não é sinalizado, e o valor do sinalizador de modo padrão pode ser definido para um valor predefinido (isto é, falso).[307] When the current block's reference sample line index is not 0, it may be configured to not use the default mode. For example, it may be configured to not use a non-angular intraprediction mode such as a Dc mode or a planar mode when a non-adjacent reference sample line is determined to be the current block's reference sample line. Consequently, when the reference sample line index is not 0, the default mode flag is not flagged, and the default mode flag value may be set to a predefined value (i.e., false).
[308] Quando o modo de intraprevisão do bloco atual é determinado, as amostras de previsão podem ser adquiridas para o bloco atual com base no modo de intraprevisão determinado (S2003).[308] When the intraprediction mode of the current block is determined, prediction samples may be acquired for the current block based on the determined intraprediction mode (S2003).
[309] Quando o modo de Dc é selecionado, as amostras de previsão são geradas para o bloco atual com base em um valor médio de amostras de referência. Especificamente, valores de todos as amostras em um bloco de previsão podem ser gerados com base em um valor médio das amostras de referência. O valor médio pode ser derivado usando pelo menos uma dentre amostras de referência superiores posicionadas na parte superior do bloco atual e amostras de referência esquerdas posicionadas no lado esquerdo do bloco atual.[309] When Dc mode is selected, prediction samples are generated for the current block based on an average value of reference samples. Specifically, values of all samples in a prediction block may be generated based on an average value of the reference samples. The average value may be derived using at least one of top reference samples positioned at the top of the current block and left reference samples positioned at the left side of the current block.
[310] Dependendo do formato do bloco atual, o número ou faixa das amostras de referência usados para derivar o valor médio pode variar. Por exemplo, quando o bloco atual é um bloco em formato não quadrado do qual a largura é maior que a altura, o valor médio pode ser calculado usando apenas as amostras de referência superiores. Por outro lado, quando o bloco atual é um bloco em formato não quadrado do qual a largura é menor que a altura, o valor médio pode ser calculado usando apenas as amostras de referência esquerdas. Isto é, quando a largura e a altura do bloco atual são diferentes, o valor médio pode ser calculado usando apenas amostras de referência adjacentes ao mais longo. Alternativamente, com base na razão de largura para altura do bloco atual, se calcula ou não o valor médio usando apenas as amostras de referência superiores ou se calcula ou não o valor médio usando apenas as amostras de referência esquerdas pode ser determinado.[310] Depending on the shape of the current block, the number or range of reference samples used to derive the mean value may vary. For example, when the current block is a non-square block whose width is greater than the height, the mean value can be calculated using only the top reference samples. Conversely, when the current block is a non-square block whose width is less than the height, the mean value can be calculated using only the left reference samples. That is, when the width and height of the current block are different, the mean value can be calculated using only reference samples adjacent to the longest one. Alternatively, based on the width-to-height ratio of the current block, whether or not to calculate the mean value using only the top reference samples or whether or not to calculate the mean value using only the left reference samples can be determined.
[311] Quando o modo plano é selecionado, uma amostra de previsão pode ser adquirida usando uma amostra de previsão de direção horizontal e uma amostra de previsão de direção vertical. Aqui, a amostra de previsão de direção horizontal é adquirida com base em uma amostra de referência esquerda e uma amostra de referência direita posicionadas em uma linha horizontal igual à da amostra de previsão, e a amostra de previsão de direção vertical é adquirida com base em uma amostra de referência superior e uma amostra de referência inferior posicionadas em uma linha vertical igual à da amostra de previsão. Aqui, a amostra de referência direita pode ser gerada copiando uma amostra de referência adjacente ao canto direito superior do bloco atual, e a amostra de referência inferior pode ser gerada copiando uma amostra de referência adjacente ao canto esquerdo inferior do bloco atual. A amostra de previsão de direção horizontal pode ser adquirida com base em uma operação de soma ponderada da amostra de referência esquerda e a amostra de referência direita, e a amostra de previsão de direção vertical podem ser adquiridas com base em uma operação de soma ponderada da amostra de referência superior e da amostra de referência inferior. Neste ponto, um valor de ponderação atribuído a cada amostra de referência pode ser determinado de acordo com a posição da amostra de previsão. A amostra de previsão pode ser adquirida com base em uma operação média ou uma operação de soma ponderada da amostra de previsão de direção horizontal e da amostra de previsão de direção vertical. Quando a operação de soma ponderada é realizada, os valores de ponderação aplicados à amostra de previsão de direção horizontal e à amostra de previsão de direção vertical pode ser determinado com base na posição da amostra de previsão.[311] When planar mode is selected, a prediction sample can be acquired using a horizontal direction prediction sample and a vertical direction prediction sample. Here, the horizontal direction prediction sample is acquired based on a left reference sample and a right reference sample positioned on a horizontal line equal to that of the prediction sample, and the vertical direction prediction sample is acquired based on a top reference sample and a bottom reference sample positioned on a vertical line equal to that of the prediction sample. Here, the right reference sample can be generated by copying a reference sample adjacent to the top right corner of the current block, and the bottom reference sample can be generated by copying a reference sample adjacent to the bottom left corner of the current block. The horizontal direction prediction sample can be acquired based on a weighted summation operation of the left reference sample and the right reference sample, and the vertical direction prediction sample can be acquired based on a weighted summation operation of the top reference sample and the bottom reference sample. At this point, a weighting value can be assigned to each reference sample based on the position of the forecast sample. The forecast sample can be acquired based on an average operation or a weighted sum operation of the horizontal forecast sample and the vertical forecast sample. When the weighted sum operation is performed, the weighting values applied to the horizontal forecast sample and the vertical forecast sample can be determined based on the position of the forecast sample.
[312] Quando um modo de previsão angular é selecionado, um parâmetro indicando a direção de previsão (ou ângulo de previsão) do modo de previsão angular selecionado pode ser determinado. Tabela 4 mostra parâmetro de direção intra intraPredAng de cada modo de intraprevisão. [TABELA 4] [312] When an angular prediction mode is selected, a parameter indicating the prediction direction (or prediction angle) of the selected angular prediction mode can be determined. Table 4 shows the intra direction parameter intraPredAng of each intraprediction mode. [TABLE 4]
[313] Quando 35 modos de intraprevisão são definidos, a Tabela 4 mostra o parâmetro de direção intra de cada modo de intraprevisão que tem um índice de qualquer um dentre 2 a 34. Quando mais que 33 modos de intraprevisão angulares são definidos, a Tabela 4 é ainda subdividida para definir o parâmetro de direção intra de cada modo de intraprevisão angular.[313] When 35 intraforecast modes are defined, Table 4 shows the intra direction parameter of each intraforecast mode that has an index of any one of 2 to 34. When more than 33 angular intraforecast modes are defined, Table 4 is further subdivided to define the intra direction parameter of each angular intraforecast mode.
[314] Após organizar as amostras de referência superiores e as amostras de referência esquerdas do bloco atual em uma linha, uma amostra de previsão pode ser adquirida com base no valor do parâmetro de direção intra. Neste ponto, quando o valor do parâmetro de direção intra é um valor negativo, as amostras de referência esquerdas e as amostras de referência superiores podem ser organizadas em uma linha.[314] After arranging the top reference samples and left reference samples of the current block into a row, a prediction sample can be acquired based on the value of the intra direction parameter. At this point, when the value of the intra direction parameter is a negative value, the left reference samples and top reference samples can be arranged into a row.
[315] As Figuras 22 e 23 são vistas que mostram um exemplo de uma matriz unidimensional organizando amostras de referência em uma linha.[315] Figures 22 and 23 are views showing an example of a one-dimensional array arranging reference samples in a row.
[316] A Figura 22 é uma vista que mostra um exemplo de uma matriz unidimensional de direção vertical organizando amostras de referência na direção vertical, e a Figura 23 é uma vista que mostra um exemplo de uma matriz unidimensional de direção horizontal organizando amostras de referência na direção horizontal. As modalidades da Figuras 22 e 23 serão descritas na suposição que 35 modos de intraprevisão são definidos.[316] Figure 22 is a view showing an example of a one-dimensional vertically directed array arranging reference samples in the vertical direction, and Figure 23 is a view showing an example of a one-dimensional horizontally directed array arranging reference samples in the horizontal direction. The embodiments of Figures 22 and 23 will be described on the assumption that 35 intraprediction modes are defined.
[317] Quando o índice de modo de intraprevisão é qualquer um dentre 11 a 18, uma matriz unidimensional de direção horizontal em que amostras de referência superiores são giradas no sentido anti-horário pode ser aplicado, e quando o índice de modo de intraprevisão é qualquer um dentre 19 a 25, uma matriz unidimensional de direção vertical em que amostras de referência esquerdas são giradas no sentido horário pode ser aplicado. Ao organizar as amostras de referência em uma linha, um ângulo de modo de previsão intra pode ser considerado.[317] When the intra-forecast mode index is any one of 11 to 18, a one-dimensional horizontally directed array in which top reference samples are rotated counterclockwise can be applied, and when the intra-forecast mode index is any one of 19 to 25, a one-dimensional vertically directed array in which left reference samples are rotated clockwise can be applied. By arranging the reference samples in a row, an intra-forecast mode angle can be considered.
[318] Um parâmetro de determinação de amostra de referência pode ser determinado com base em um parâmetro de direção intra. O parâmetro de determinação de amostra de referência pode incluir um índice de amostra de referência para especificar uma amostra de referência e um parâmetro de valor de ponderação para determinar um valor de ponderação aplicado à amostra de referência.[318] A reference sample determination parameter may be determined based on an intra-direction parameter. The reference sample determination parameter may include a reference sample index for specifying a reference sample and a weighting value parameter for determining a weighting value applied to the reference sample.
[319] Índice de amostra de referência iIdx e parâmetro de valor de ponderação ifact podem ser adquiridos por meio das Equações 9 e 10 mostradas abaixo, respectivamente. [EQUAÇÃO 9] [319] Reference sample index iIdx and weighting value parameter ifact can be acquired through Equations 9 and 10 shown below, respectively. [EQUATION 9]
[320] Nas Equações 9 e 10, Pang denota um parâmetro de direção intra. A amostra de referência especificada pelo índice de amostra de referência iIdx corresponde a um pel inteiro.[320] In Equations 9 and 10, Pang denotes an intra-direction parameter. The reference sample specified by the reference sample index iIdx corresponds to an integer pel.
[321] Pelo menos uma ou mais amostras de referência podem ser especificadas para derivar uma amostra de previsão. Especificamente, a posição de uma amostra de referência usada para derivar uma amostra de previsão pode ser especificado considerando a inclinação do modo de previsão. Por exemplo, uma amostra de referência usada para derivar uma amostra de previsão pode ser especificada usando índice de amostra de referência iIdx.[321] At least one or more reference samples may be specified to derive a prediction sample. Specifically, the position of a reference sample used to derive a prediction sample may be specified by considering the slope of the prediction mode. For example, a reference sample used to derive a prediction sample may be specified using reference sample index iIdx.
[322] Neste ponto, quando a inclinação do modo de intraprevisão não é expressa por uma amostra de referência, uma amostra de previsão pode ser gerada interpolando uma pluralidade de amostras de referência. Por exemplo, quando a inclinação do modo de intraprevisão é um valor entre uma inclinação entre uma amostra de previsão e uma primeira amostra de referência e uma inclinação entre uma amostra de previsão e uma segunda amostra de referência, a amostra de previsão pode ser adquirida interpolando a primeira amostra de referência e a segunda amostra de referência. Isto é, quando uma linha angular seguindo um ângulo de previsão intra não passa por uma amostra de referência posicionada em um pel inteiro, a amostra de previsão pode ser adquirida por interpolação de amostras de referência adjacentes aos lados esquerdo e direito ou para cima e para baixo de uma posição onde a linha angular passa.[322] At this point, when the slope of the intra-prediction mode is not expressed by a reference sample, a prediction sample can be generated by interpolating a plurality of reference samples. For example, when the slope of the intra-prediction mode is a value between a slope between a prediction sample and a first reference sample and a slope between a prediction sample and a second reference sample, the prediction sample can be acquired by interpolating the first reference sample and the second reference sample. That is, when an angled line following an intra-prediction angle does not pass through a reference sample positioned within a whole pel, the prediction sample can be acquired by interpolating reference samples adjacent to the left and right sides or up and down from a position where the angled line passes.
[323] A Equação 11 mostra um exemplo de aquisição de uma amostra de previsão com base em amostras de referência. [EQUAÇÃO 11] [323] Equation 11 shows an example of acquiring a prediction sample based on reference samples. [EQUATION 11]
[324] Na Equação 11, P denota uma amostra de previsão, e Ref_1D denota qualquer uma dentre as amostras de referência organizadas unidimensionalmente. Neste ponto, a posição de uma amostra de referência pode ser determinada pela posição (x, y) da amostra de previsão e índice iIdx da amostra de referência.[324] In Equation 11, P denotes a prediction sample, and Ref_1D denotes any one of the one-dimensionally arranged reference samples. At this point, the position of a reference sample can be determined by the position (x, y) of the prediction sample and index iIdx of the reference sample.
[325] Quando a inclinação do modo de intraprevisão pode ser expressa como uma amostra de referência, o parâmetro de valor de ponderação ifacté definido para 0. Consequentemente, a Equação 11 pode ser simplificada como mostrado na Equação 12. [EQUAÇÃO 12] [325] When the intraforecast mode slope can be expressed as a reference sample, the weighting value parameter ifact is set to 0. Consequently, Equation 11 can be simplified as shown in Equation 12. [EQUATION 12]
[326] A intraprevisão para o bloco atual pode ser realizada com base em uma pluralidade de modos de intraprevisão. Por exemplo, um modo de intraprevisão pode ser derivado para cada amostra de previsão, e a amostra de previsão pode ser derivada com base em um modo de intraprevisão atribuído a cada amostra de previsão.[326] The intraprediction for the current block may be performed based on a plurality of intraprediction modes. For example, an intraprediction mode may be derived for each prediction sample, and the prediction sample may be derived based on an intraprediction mode assigned to each prediction sample.
[327] Alternativamente, um modo de intraprevisão pode ser derivada para cada região, e intraprevisão para cada região pode ser realizada com base no modo de intraprevisão atribuído a cada região. Aqui, a região pode incluir pelo menos uma amostra. Pelo menos um dentre o tamanho e o formato da região pode ser determinado de forma adaptativa com base em pelo menos um dentre o tamanho o bloco atual, o formato o bloco atual, e o modo de intraprevisão do bloco atual. Alternativamente, pelo menos um dentre o tamanho e o formato da região pode ser predefinido no codificador e no decodificador para ser independente a partir do tamanho ou o formato do bloco atual.[327] Alternatively, an intraprediction mode may be derived for each region, and intraprediction for each region may be performed based on the intraprediction mode assigned to each region. Here, the region may include at least one sample. At least one of the size and shape of the region may be adaptively determined based on at least one of the size of the current block, the shape of the current block, and the intraprediction mode of the current block. Alternatively, at least one of the size and shape of the region may be predefined in the encoder and decoder to be independent from the size or shape of the current block.
[328] Alternativamente, intraprevisão pode ser realizada com base em cada uma de uma pluralidade de intraprevisões, e uma amostra de previsão final pode ser derivada com base em uma operação média ou uma operação de soma ponderada de uma pluralidade de amostras de previsão adquiridas por meio da pluralidade de intraprevisões. Por exemplo, uma primeira amostra de previsão pode ser adquirida realizando intraprevisão com base em um primeiro modo de intraprevisão, e uma segunda amostra de previsão pode ser adquirida realizando intraprevisão com base em um segundo modo de intraprevisão. Depois disso, uma amostra de previsão final pode ser adquirida com base em uma operação média ou uma operação de soma ponderada da primeira amostra de previsão e da segunda amostra de previsão. Neste ponto, um valor de ponderação atribuído a cada uma da primeira amostra de previsão e da segunda amostra de previsão pode ser determinado considerando pelo menos um dentre a possibilidade de o primeiro modo de intraprevisão ser um modo de previsão angular/não angular, a possibilidade de o segundo modo de intraprevisão ser um modo de previsão angular/não angular, e um modo de intraprevisão de um bloco vizinho.[328] Alternatively, intraprediction may be performed based on each of a plurality of intrapredictions, and a final prediction sample may be derived based on an average operation or a weighted sum operation of a plurality of prediction samples acquired via the plurality of intrapredictions. For example, a first prediction sample may be acquired by performing intraprediction based on a first intraprediction mode, and a second prediction sample may be acquired by performing intraprediction based on a second intraprediction mode. Thereafter, a final prediction sample may be acquired based on an average operation or a weighted sum operation of the first prediction sample and the second prediction sample. At this point, a weighting value assigned to each of the first prediction sample and the second prediction sample may be determined by considering at least one of the possibility of the first intraprediction mode being an angular/non-angular prediction mode, the possibility of the second intraprediction mode being an angular/non-angular prediction mode, and an intraprediction mode of a neighboring block.
[329] A pluralidade de modos de intraprevisão pode ser uma combinação de um modo de intraprevisão não angular e um modo de previsão angular, uma combinação de modos de previsão angulares, ou uma combinação de modos de previsão não angulares.[329] The plurality of intraprediction modes may be a combination of a non-angular intraprediction mode and an angular prediction mode, a combination of angular prediction modes, or a combination of non-angular prediction modes.
[330] A Figura 24 é uma vista que mostra um exemplo de ângulos formados entre modos de intraprevisão angulares e uma linha reta paralela ao eixo x.[330] Figure 24 is a view showing an example of angles formed between angular intraprediction modes and a straight line parallel to the x-axis.
[331] Como mostrado no exemplo da Figura 24, os modos de previsão angulares podem existir entre a direção diagonal esquerda inferior e a direção diagonal direita superior. Descrevendo em termos de um ângulo formado pelo eixo x e o modo de previsão angular, os modos de previsão angulares podem existir entre 45 graus (direção diagonal esquerda inferior) e -135 graus (direção diagonal direita superior).[331] As shown in the example in Figure 24, angular prediction modes can exist between the lower left diagonal direction and the upper right diagonal direction. Describing in terms of an angle formed by the x-axis and the angular prediction mode, angular prediction modes can exist between 45 degrees (lower left diagonal direction) and -135 degrees (upper right diagonal direction).
[332] Quando o bloco atual tem um formato não quadrado, de acordo com o modo de intraprevisão do bloco atual, pode ser um caso de derivação de uma amostra de previsão usando uma amostra de referência mais distante a partir da amostra de previsão, em vez de uma amostra de referência ainda mais perto da amostra de previsão, entre as amostras de referência posicionadas na linha angular seguindo o ângulo de previsão intra.[332] When the current block has a non-square shape, according to the intra-prediction mode of the current block, it may be a case of deriving a prediction sample using a reference sample farther from the prediction sample, instead of a reference sample even closer to the prediction sample, among the reference samples positioned on the angular line following the intra-prediction angle.
[333] A Figura 25 é uma vista que mostra uma modalidade de adquirir amostras de previsão quando o bloco atual tem um formato não quadrado.[333] Figure 25 is a view showing an embodiment of acquiring prediction samples when the current block has a non-square shape.
[334] Por exemplo, como mostrado no exemplo da Figura 25 (a), é considerado que o bloco atual tem um formato não quadrado do qual a largura é maior que a altura, e o modo de intraprevisão do bloco atual é um modo de intraprevisão angular que tem um ângulo entre 0 e 45 graus. No caso acima, quando a amostra de previsão A perto da coluna direita do bloco atual é derivada, pode haver um caso de usar a amostra de referência esquerda L longe da amostra de previsão, em vez da amostra de referência superior T perto da amostra de previsão, entre as amostras de referência posicionadas em um modo angular seguindo o ângulo.[334] For example, as shown in the example of Figure 25(a), it is assumed that the current block has a non-square shape of which the width is greater than the height, and the intraprediction mode of the current block is an angular intraprediction mode that has an angle between 0 and 45 degrees. In the above case, when the prediction sample A near the right column of the current block is derived, there may be a case of using the left reference sample L far from the prediction sample, instead of the top reference sample T near the prediction sample, among the reference samples positioned in an angular mode following the angle.
[335] Como um outro exemplo, como mostrado no exemplo da Figura 25 (b), é considerado que o bloco atual tem um formato não quadrado do qual a altura é maior que a largura, e o modo de intraprevisão do bloco atual é um modo de intraprevisão angular que tem um ângulo entre -90 e -135 graus. No caso acima, quando a amostra de previsão A perto da linha inferior do bloco atual é derivada, pode haver um caso de usar a amostra de referência superior T longe da amostra de previsão, em vez da amostra de referência esquerda L perto da amostra de previsão, entre as amostras de referência posicionadas em um modo angular seguindo o ângulo.[335] As another example, as shown in the example of Figure 25(b), it is considered that the current block has a non-square shape of which the height is greater than the width, and the intraprediction mode of the current block is an angular intraprediction mode that has an angle between -90 and -135 degrees. In the above case, when the prediction sample A near the bottom row of the current block is derived, there may be a case of using the top reference sample T far from the prediction sample, instead of the left reference sample L near the prediction sample, among the reference samples positioned in an angular mode following the angle.
[336] Para resolver o problema descrito acima, quando o bloco atual tem um formato não quadrado, o modo de intraprevisão do bloco atual pode ser substituído com um modo de intraprevisão da direção oposta. Consequentemente, os modos de previsão angulares que tem um ângulo maior ou menor que dos modos de previsão angulares mostrados na Figura 21 podem ser usados para um bloco em formato não quadrado. O modo de intraprevisão angular como este pode ser definido como um modo de intraprevisão de ângulo amplo. O modo de intraprevisão de ângulo amplo representa um modo de intraprevisão angular que não pertence à faixa de 45 a -135 graus.[336] To solve the problem described above, when the current block has a non-square shape, the intraprediction mode of the current block can be replaced with an intraprediction mode of the opposite direction. Consequently, angular prediction modes that have an angle larger or smaller than the angular prediction modes shown in Figure 21 can be used for a non-square shaped block. The angular intraprediction mode like this can be defined as a wide-angle intraprediction mode. The wide-angle intraprediction mode represents an angular intraprediction mode that does not belong to the range of 45 to -135 degrees.
[337] A Figura 26 é uma vista que mostra modos de intraprevisão de ângulo amplo.[337] Figure 26 is a view showing wide-angle intraprediction modes.
[338] No exemplo mostrado na Figura 26, os modos de intraprevisão com um índice de -1 a -14 e os modos de intraprevisão com um índice de 67 a 80 representam modos de intraprevisão de ângulo amplo.[338] In the example shown in Figure 26, intraprediction modes with an index of -1 to -14 and intraprediction modes with an index of 67 to 80 represent wide-angle intraprediction modes.
[339] Na Figura 26, embora 14 modos de intraprevisão de ângulo amplo (-1 a -14) que tem um ângulo maior que 45 graus e 14 modos de intraprevisão de ângulo amplo (67 a 80) que tem um ângulo menor que -135 graus são mostrados, um número maior ou menor de modos de intraprevisão de ângulo amplo pode ser definido.[339] In Figure 26, although 14 wide-angle intraprediction modes (-1 to -14) that have an angle greater than 45 degrees and 14 wide-angle intraprediction modes (67 to 80) that have an angle less than -135 degrees are shown, a greater or lesser number of wide-angle intraprediction modes can be defined.
[340] Quando um modo de intraprevisão de ângulo amplo é usado, o comprimento de amostras de referência superiores pode ser definido para 2W + 1, e o comprimento de amostras de referência esquerdas pode ser definido para 2H + 1.[340] When a wide-angle intraprediction mode is used, the length of top reference samples can be set to 2W + 1, and the length of left reference samples can be set to 2H + 1.
[341] Como um modo de intraprevisão de ângulo amplo é usado, amostra A mostrada na Figura 25 (a) pode ser prevista usando amostra de referência T, e amostra A mostrada na Figura 25 (b) pode ser prevista usando amostra de referência L.[341] Since a wide-angle intraprediction mode is used, sample A shown in Figure 25(a) can be predicted using reference sample T, and sample A shown in Figure 25(b) can be predicted using reference sample L.
[342] Ao adicionar modos de intraprevisão existentes e N modos de intraprevisão de ângulo amplo, um total de 67 + N modos de intraprevisão pode ser usado. Por exemplo, a Tabela 5 mostra parâmetros de direção intra de modos de intraprevisão quando 20 modos de intraprevisão de ângulo amplo são definidos. [TABELA 5] [342] By adding existing intraprediction modes and N wide-angle intraprediction modes, a total of 67+N intraprediction modes can be used. For example, Table 5 shows intra-steering parameters of intraprediction modes when 20 wide-angle intraprediction modes are defined. [TABLE 5]
[343] Quando o bloco atual tem um formato não quadrado e o modo de intraprevisão do bloco atual adquirido na etapa S2002 pertence a uma faixa de transformada, o modo de intraprevisão do bloco atual pode ser transformado em um modo de intraprevisão de ângulo amplo. A faixa de transformada pode ser determinada com base em pelo menos um dentre o tamanho, o formato, e a razão do bloco atual. Aqui, a razão pode representar uma razão de largura para altura do bloco atual.[343] When the current block has a non-square shape and the intraprediction mode of the current block acquired in step S2002 belongs to a transform range, the intraprediction mode of the current block may be transformed into a wide-angle intraprediction mode. The transform range may be determined based on at least one of the size, shape, and aspect ratio of the current block. Here, the ratio may represent a ratio of width to height of the current block.
[344] Quando o bloco atual tem um formato não quadrado do qual a largura é maior que a altura, a faixa de transformada pode ser definida de um índice de modo de intraprevisão (por exemplo, 66) da direção diagonal direita superior (um índice do modo de intraprevisão na direção diagonal direita superior - N). Aqui, N pode ser determinado com base na razão do bloco atual. Quando o modo de intraprevisão do bloco atual pertence à faixa de transformada, o modo de intraprevisão pode ser transformado em um modo de intraprevisão de ângulo amplo. A transformada pode ser subtração de um valor predefinido a partir do modo de intraprevisão, e o valor predefinido pode ser o número total (por exemplo, 67) de modos de intraprevisão excluindo os modos de intraprevisão de ângulo amplo.[344] When the current block has a non-square shape of which the width is greater than the height, the transform range can be defined from an intraprediction mode index (e.g., 66) of the upper right diagonal direction (an index of the intraprediction mode in the upper right diagonal direction - N). Here, N can be determined based on the ratio of the current block. When the intraprediction mode of the current block belongs to the transform range, the intraprediction mode can be transformed into a wide-angle intraprediction mode. The transform can be subtraction of a predefined value from the intraprediction mode, and the predefined value can be the total number (e.g., 67) of intraprediction modes excluding the wide-angle intraprediction modes.
[345] De acordo com a modalidade descrita acima, 66° a 53° modos de intraprevisão podem ser transformados em - 1° a -14° modos de intraprevisão de ângulo amplo, respectivamente.[345] According to the embodiment described above, 66° to 53° intraprediction modes can be transformed into -1° to -14° wide-angle intraprediction modes, respectively.
[346] Quando o bloco atual tem um formato não quadrado do qual a altura é maior que a largura, a faixa de transformada pode ser definida de um índice de modo de intraprevisão (por exemplo, 2) da direção diagonal esquerda inferior (um índice do modo de intraprevisão na direção diagonal esquerda inferior + M). Aqui, M pode ser determinado com base na razão do bloco atual. Quando o modo de intraprevisão do bloco atual pertence à faixa de transformada, o modo de intraprevisão pode ser transformado em um modo de intraprevisão de ângulo amplo. A transformada pode ser a adição de um valor predefinido ao modo de intraprevisão, e o valor predefinido pode ser o número total (por exemplo, 65) de modos de intraprevisão angulares excluindo os modos de intraprevisão de ângulo amplo.[346] When the current block has a non-square shape of which the height is greater than the width, the transform range can be defined from an intraprediction mode index (e.g., 2) of the lower left diagonal direction (an index of the intraprediction mode in the lower left diagonal direction + M). Here, M can be determined based on the ratio of the current block. When the intraprediction mode of the current block belongs to the transform range, the intraprediction mode can be transformed into a wide-angle intraprediction mode. The transform can be the addition of a preset value to the intraprediction mode, and the preset value can be the total number (e.g., 65) of angular intraprediction modes excluding the wide-angle intraprediction modes.
[347] De acordo com a modalidade descrito acima, 2° a 15° de modos de intraprevisão podem ser transformados em 67° a 80° de modos de intraprevisão de ângulo amplo, respectivamente.[347] According to the embodiment described above, 2° to 15° of intraprediction modes can be transformed into 67° to 80° of wide-angle intraprediction modes, respectively.
[348] Em seguida, os modos de intraprevisão pertencentes à faixa de transformada serão denominados como modos de previsão de substituição intra ângulo amplo.[348] Next, the intra-prediction modes belonging to the transform range will be referred to as wide-angle intra-substitution prediction modes.
[349] A faixa de transformada pode ser determinada com base na razão do bloco atual. Por exemplo, as Tabelas 6 e 7 mostram uma faixa de transformada quando 35 modos de intraprevisão e 67 modos de intraprevisão são definidos excluindo os modos de intraprevisão de ângulo amplo, respectivamente. [TABELA 6] [TABELA 7] [349] The transform range can be determined based on the current block ratio. For example, Tables 6 and 7 show a transform range when 35 intraprediction modes and 67 intraprediction modes are defined excluding the wide-angle intraprediction modes, respectively. [TABLE 6] [TABLE 7]
[350] Como mostrado nos exemplos de Tabelas 6 e 7, o número de modos de previsão de substituição intra ângulo amplo pertencentes à faixa de transformada pode variar de acordo com a razão do bloco atual.[350] As shown in the examples of Tables 6 and 7, the number of intra-wide-angle substitution prediction modes belonging to the transform range can vary according to the current block ratio.
[351] Uma faixa de transformada como mostrado na Tabela 8 pode ser definida subdividindo a razão do bloco atual. [TABELA 8] [351] A transform range as shown in Table 8 can be defined by subdividing the ratio of the current block. [TABLE 8]
[352] Pode ser configurado não para usar o modo de intraprevisão de ângulo amplo quando uma linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual ou quando um método de codificação de intraprevisão multilinha de selecionar qualquer uma dentre uma pluralidade de linhas de amostra de referência é usada. Isto é, embora o bloco atual tenha um formato não quadrado e o modo de intraprevisão do bloco atual pertence à faixa de transformada, o modo de intraprevisão do bloco atual pode não ser transformado no modo de intraprevisão de ângulo amplo.[352] It may be configured not to use the wide-angle intraprediction mode when a non-adjacent reference sample line is determined as the reference sample line of the current block or when a multi-line intraprediction coding method of selecting any one of a plurality of reference sample lines is used. That is, although the current block has a non-square shape and the intraprediction mode of the current block belongs to the transform range, the intraprediction mode of the current block may not be transformed to the wide-angle intraprediction mode.
[353] Alternativamente, pode ser configurado linhas de amostra de referência não adjacentes como não sendo disponíveis como a linha de amostra de referência do bloco atual ou pode ser configurado para não usar o método de codificação de intraprevisão multilinha de selecionar qualquer uma dentre uma pluralidade de linhas de amostra de referência, quando o modo de intraprevisão do bloco atual é determinado como o modo de intraprevisão de ângulo amplo. Quando o método de codificação de intraprevisão multilinha não é usado, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.[353] Alternatively, non-adjacent reference sample lines may be configured as not being available as the reference sample line of the current block, or may be configured to not use the multi-line intraprediction coding method of selecting any one of a plurality of reference sample lines when the intraprediction mode of the current block is determined as the wide-angle intraprediction mode. When the multi-line intraprediction coding method is not used, an adjacent reference sample line may be determined as the reference sample line of the current block.
[354] Quando o modo de intraprevisão de ângulo amplo não é usado, a soma de nTbW e nTbH pode ser definida como refW e refH. Consequentemente, excluindo a amostra de referência superior esquerda, uma amostra de referência não adjacente com uma distância de i do bloco atual pode incluir tantas (nTbW + nTbH + offsetX [i]) amostras de referência superior e até (nTbW + nTbH + offsetY [i]) amostras de referência à esquerda. Ou seja, uma amostra de referência não adjacente com uma distância de i do bloco atual pode incluir até (2nTbW + 2nTbH + offsetX [i] + offsetY [i] + 1) amostras de referência. Por exemplo, quando o valor de whRatio é maior que 1, o valor de offsetX pode ser definido para ser maior que o valor de offsetY. Por exemplo, o valor de offsetX pode ser definido como 1 e o valor de offsetY pode ser definido como 0. Por outro lado, quando o valor de whRatio é menor que 1, o valor de offsetY pode ser definido como maior que o valor de offsetX. Por exemplo, o valor de offsetX pode ser definido como 0 e o valor de offsetY pode ser definido como 1.[354] When the wide-angle intraprediction mode is not used, the sum of nTbW and nTbH can be set to refW and refH. Consequently, excluding the top-left reference sample, a non-adjacent reference sample with a distance of i from the current block can include as many (nTbW + nTbH + offsetX[i]) top reference samples and as many as (nTbW + nTbH + offsetY[i]) left reference samples. That is, a non-adjacent reference sample with a distance of i from the current block can include up to (2nTbW + 2nTbH + offsetX[i] + offsetY[i] + 1) reference samples. For example, when the value of whRatio is greater than 1, the value of offsetX can be set to be greater than the value of offsetY. For example, the offsetX value can be set to 1 and the offsetY value can be set to 0. Conversely, when the whRatio value is less than 1, the offsetY value can be set to be greater than the offsetX value. For example, the offsetX value can be set to 0 and the offsetY value can be set to 1.
[355] Como os modos de intraprevisão de ângulo amplo são usados além dos modos de intraprevisão existentes, recursos necessários para codificar os modos de intraprevisão de ângulo amplo aumentam e, assim, eficiência de codificação pode ser diminuída. Consequentemente, a eficiência de codificação pode ser melhorada codificando modos de intraprevisão de substituição para os modos de intraprevisão de ângulo amplo, em vez de codificar os modos de intraprevisão de ângulo amplo como eles são.[355] As wide-angle intraprediction modes are used in addition to existing intraprediction modes, resources required to encode the wide-angle intraprediction modes increase, and thus coding efficiency may be decreased. Consequently, coding efficiency may be improved by coding replacement intraprediction modes for the wide-angle intraprediction modes, rather than coding the wide-angle intraprediction modes as they are.
[356] Por exemplo, quando o bloco atual é codificado usando o 67° modo de intraprevisão de ângulo amplo, o 2° modo de intraprevisão, que é o modo de intraprevisão de substituição do 67° modo de intraprevisão de ângulo amplo, pode ser codificado usando o modo de intraprevisão do bloco atual. Além disso, quando o bloco atual é codificado usando o -1° modo de intraprevisão de ângulo amplo, o 66° modo de intraprevisão, que é o modo de intraprevisão de substituição do -1° modo de intraprevisão de ângulo amplo, pode ser codificado usando o modo de intraprevisão do bloco atual.[356] For example, when the current block is coded using the 67th wide-angle intraprediction mode, the 2nd intraprediction mode, which is the replacement intraprediction mode of the 67th wide-angle intraprediction mode, can be coded using the current block's intraprediction mode. Furthermore, when the current block is coded using the -1st wide-angle intraprediction mode, the 66th intraprediction mode, which is the replacement intraprediction mode of the -1st wide-angle intraprediction mode, can be coded using the current block's intraprediction mode.
[357] O decodificador pode decodificar o modo de intraprevisão do bloco atual e determinar se o modo de intraprevisão decodificado pertence à faixa de transformada. Quando o modo de intraprevisão decodificado é um modo de intraprevisão de substituição de ângulo amplo, o modo de intraprevisão pode ser transformado no modo de intraprevisão de ângulo amplo.[357] The decoder may decode the intraprediction mode of the current block and determine whether the decoded intraprediction mode belongs to the transform range. When the decoded intraprediction mode is a wide-angle substitution intraprediction mode, the intraprediction mode may be transformed into the wide-angle intraprediction mode.
[358] Alternativamente, quando o bloco atual é codificado usando o modo de intraprevisão de ângulo amplo, o modo de intraprevisão de ângulo amplo pode ser codificado como é.[358] Alternatively, when the current block is encoded using the wide-angle intraprediction mode, the wide-angle intraprediction mode may be encoded as is.
[359] Codificar o modo de intraprevisão pode ser realizado com base na lista de MPM descrita acima. Especificamente, quando um bloco vizinho é codificado usando um modo de intraprevisão de ângulo amplo, o MPM pode ser definido com base em um modo de intraprevisão de substituição de ângulo amplo correspondente ao modo de intraprevisão de ângulo amplo.[359] Encoding the intraprediction mode may be performed based on the MPM list described above. Specifically, when a neighboring block is coded using a wide-angle intraprediction mode, the MPM may be set based on a wide-angle replacement intraprediction mode corresponding to the wide-angle intraprediction mode.
[360] Quando um bloco de previsão é gerado como um resultado de realizar a intraprevisão, amostras de previsão podem ser atualizadas com base na posição de cada uma das amostras de previsão incluídas no bloco de previsão. O método de atualização como este pode ser denominado como um método de previsão intraponderada com base em uma posição de amostra ou Combinação de Intraprevisão Dependente de Posição (PDPC).[360] When a forecast block is generated as a result of performing intraforecasting, forecast samples may be updated based on the position of each of the forecast samples included in the forecast block. The update method like this may be termed as an intraweighted forecast method based on a sample position or Position Dependent Intraforecast Combination (PDPC).
[361] Se deve usar ou não a PDPC pode ser determinado considerando o modo de intraprevisão do bloco atual, a linha de amostra de referência do bloco atual, o tamanho do bloco atual, ou um componente de cor. Por exemplo, quando o modo de intraprevisão do bloco atual é pelo menos um dentre de um modo plano, um modo de Dc, um modo de direção vertical, um modo de direção horizontal, um modo que tem um valor de índice menor que do modo de direção vertical, e um modo que tem um valor de índice maior que do modo de direção horizontal, a PDPC pode ser usada. Alternativamente, apenas quando pelo menos uma dentre a largura e a altura do bloco atual é maior que 4, a PDPC pode ser usada. Alternativamente, apenas quando o índice da linha de imagem de referência do bloco atual é 0, a PDPC pode ser usada. Alternativamente, apenas quando o índice da linha de imagem de referência do bloco atual é igual ou maior que um valor predefinido, a PDPC pode ser usada. Alternativamente, a PDPC pode ser usada apenas para um componente luminância. Alternativamente, dependendo da possibilidade de duas ou mais das condições listado acima serem satisfeitas, se deve usar ou não a PDPC pode ser determinada.[361] Whether or not to use PDPC can be determined by considering the current block's intraprediction mode, the current block's reference sample line, the current block's size, or a color component. For example, when the current block's intraprediction mode is at least one of a planar mode, a Dc mode, a vertical direction mode, a horizontal direction mode, a mode that has a smaller index value than the vertical direction mode, and a mode that has a larger index value than the horizontal direction mode, PDPC can be used. Alternatively, only when at least one of the current block's width and height is greater than 4 can PDPC be used. Alternatively, only when the current block's reference picture line index is 0 can PDPC be used. Alternatively, only when the current block's reference picture line index is equal to or greater than a predefined value can PDPC be used. Alternatively, PDPC can be used only for a luminance component. Alternatively, depending on whether two or more of the conditions listed above are met, whether or not to use PDPC can be determined.
[362] Como um outro exemplo, informações que indicam se a PDPC é aplicada ou não podem ser sinalizadas por meio de um fluxo de bits.[362] As another example, information indicating whether PDPC is applied or not can be signaled via a bit stream.
[363] Quando uma amostra de previsão é adquirida por meio da amostra de intraprevisão, uma amostra de referência usada para corrigir a amostra de previsão pode ser determinada com base na posição da amostra de previsão adquirida. Para conveniência de explicação, na modalidade descrita abaixo, uma amostra de referência usada para corrigir uma amostra de previsão é denominada como uma amostra de referência de PDPC. Além disso, uma amostra de previsão adquirida por meio de intraprevisão é denominada como uma primeira amostra de previsão, e uma amostra de previsão adquirida corrigindo a primeira amostra de previsão é denominada como uma segunda amostra de previsão.[363] When a forecast sample is acquired via intra-forecast sampling, a reference sample used to correct the forecast sample can be determined based on the position of the acquired forecast sample. For convenience of explanation, in the embodiment described below, a reference sample used to correct a forecast sample is referred to as a PDPC reference sample. Furthermore, a forecast sample acquired via intra-forecasting is referred to as a first forecast sample, and a forecast sample acquired by correcting the first forecast sample is referred to as a second forecast sample.
[364] A Figura 27 é uma vista que mostra uma modalidade de aplicação de PDPC.[364] Figure 27 is a view showing an embodiment of PDPC application.
[365] A primeira amostra de previsão pode ser corrigida usando pelo menos uma amostra de referência de PDPC. A amostra de referência de PDPC pode incluir pelo menos uma dentre uma amostra de referência adjacente ao canto esquerdo superior do bloco atual, uma amostra de referência superior posicionado na parte superior do bloco atual, e uma amostra de referência esquerda posicionada no lado esquerdo do bloco atual.[365] The first prediction sample may be corrected using at least one PDPC reference sample. The PDPC reference sample may include at least one of a reference sample adjacent to the top left corner of the current block, a top reference sample positioned at the top of the current block, and a left reference sample positioned at the left side of the current block.
[366] Pelo menos uma dentre as amostras de referência pertencentes à linha de amostra de referência do bloco atual pode ser definida como a amostra de referência de PDPC. Alternativamente, independentemente da linha de amostra de referência do bloco atual, pelo menos uma dentre as amostras de referência pertencentes à linha de amostra de referência tendo índice 0 pode ser definida como a amostra de referência de PDPC. Por exemplo, embora a primeira amostra de previsão seja adquirida usando uma amostra de referência incluída em uma linha de amostra de referência de índice 1 ou índice 2, a segunda amostra de previsão pode ser adquirida usando uma amostra de referência incluída na linha de amostra de referência de índice 0.[366] At least one of the reference samples belonging to the reference sample line of the current block may be defined as the PDPC reference sample. Alternatively, regardless of the reference sample line of the current block, at least one of the reference samples belonging to the reference sample line having index 0 may be defined as the PDPC reference sample. For example, although the first prediction sample is acquired using a reference sample included in a reference sample line of index 1 or index 2, the second prediction sample may be acquired using a reference sample included in the reference sample line of index 0.
[367] O número ou posições das amostras de referência de PDPC usadas para corrigir a primeira amostra de previsão podem ser determinados considerando pelo menos um dentre o modo de intraprevisão do bloco atual, o tamanho do bloco atual, o formato do bloco atual, e a posição da primeira amostra de previsão.[367] The number or positions of the PDPC reference samples used to correct the first prediction sample may be determined by considering at least one of the intraprediction mode of the current block, the size of the current block, the shape of the current block, and the position of the first prediction sample.
[368] Por exemplo, quando o modo de intraprevisão do bloco atual é um modo plano ou um modo de Dc, a segunda amostra de previsão pode ser adquirida usando uma amostra de referência superior e uma amostra de referência esquerda. Neste ponto, a amostra de referência superior pode ser uma amostra de referência vertical à primeira amostra de previsão (por exemplo, uma amostra de referência da mesma coordenada x), e a amostra de referência esquerda pode ser uma amostra de referência horizontal à primeira amostra de previsão (por exemplo, uma amostra de referência da mesma coordenada y).[368] For example, when the intraprediction mode of the current block is a flat mode or a Dc mode, the second prediction sample may be acquired using a top reference sample and a left reference sample. At this point, the top reference sample may be a vertical reference sample to the first prediction sample (e.g., a reference sample of the same x-coordinate), and the left reference sample may be a horizontal reference sample to the first prediction sample (e.g., a reference sample of the same y-coordinate).
[369] Quando o modo de intraprevisão do bloco atual é um modo de direção horizontal de intraprevisão, a segunda amostra de previsão pode ser adquirida usando uma amostra de referência superior. Neste ponto, a amostra de referência superior pode ser uma amostra de referência vertical à primeira amostra de previsão.[369] When the intra-forecast mode of the current block is a horizontal intra-forecast direction mode, the second forecast sample may be acquired using an upper reference sample. At this point, the upper reference sample may be a vertical reference sample to the first forecast sample.
[370] Quando o modo de intraprevisão do bloco atual é um modo de direção vertical de intraprevisão, a segunda amostra de previsão pode ser adquirida usando uma amostra de referência esquerda. Neste ponto, a amostra de referência esquerda pode ser uma amostra de referência horizontal à primeira amostra de previsão.[370] When the intra-forecast mode of the current block is a vertical direction intra-forecast mode, the second forecast sample may be acquired using a left reference sample. At this point, the left reference sample may be a horizontal reference sample to the first forecast sample.
[371] Quando o modo de intraprevisão do bloco atual é um modo de intraprevisão de direção diagonal esquerda inferior ou um modo de intraprevisão de direção diagonal direita superior, a segunda amostra de previsão pode ser adquirida com base em uma amostra de referência esquerda superior, uma amostra de referência superior, e uma amostra de referência esquerda. A amostra de referência esquerda superior pode ser uma amostra de referência adjacente ao canto esquerdo superior do bloco atual (por exemplo, uma amostra de referência na posição de (-1, -1)). A amostra de referência superior pode ser uma amostra de referência posicionada na direção diagonal direita superior da primeira amostra de previsão, e a amostra de referência esquerda pode ser uma amostra de referência posicionada na direção diagonal esquerda inferior da primeira amostra de previsão.[371] When the intraprediction mode of the current block is a lower left diagonal direction intraprediction mode or an upper right diagonal direction intraprediction mode, the second prediction sample may be acquired based on an upper left reference sample, an upper reference sample, and a left reference sample. The upper left reference sample may be a reference sample adjacent to the upper left corner of the current block (e.g., a reference sample at the position of (-1, -1)). The upper reference sample may be a reference sample positioned in the upper right diagonal direction of the first prediction sample, and the left reference sample may be a reference sample positioned in the lower left diagonal direction of the first prediction sample.
[372] Em resumo, quando a posição da primeira amostra de previsão é (x, y), R(-1, -1) pode ser definida como a amostra de referência esquerda superior, e R(x + y + 1, -1) ou R(x, -1) pode ser definida como a amostra de referência superior. Além disso, R(-1, x + y + 1) ou R(-1, y) pode ser definido como a amostra de referência esquerda.[372] In summary, when the position of the first prediction sample is (x, y), R(-1, -1) can be set as the upper left reference sample, and either R(x + y + 1, -1) or R(x, -1) can be set as the upper reference sample. Furthermore, R(-1, x + y + 1) or R(-1, y) can be set as the left reference sample.
[373] Um modo de previsão pode ser aplicado ao bloco atual uma pluralidade de vezes, ou uma pluralidade de modos de previsão podem ser redundantemente aplicados ao bloco atual. Assim, um método de previsão usando um modo de previsão homogêneo ou heterogêneo pode ser denominado como um modo de previsão combinado (ou Modo de Previsão de Multi-hipótes).[373] A prediction mode may be applied to the current block a plurality of times, or a plurality of prediction modes may be redundantly applied to the current block. Thus, a prediction method using a homogeneous or heterogeneous prediction mode may be termed as a combined prediction mode (or Multi-hypothesis Prediction Mode).
[374] O modo de previsão combinado inclui pelo menos um dentre um modo combinando um modo de mesclagem e um modo de mesclagem, um modo combinando interprevisão e intraprevisão, um modo combinando um modo de mesclagem e um modo de previsão de vetor de movimento avançado, e um modo combinando um modo de mesclagem e intraprevisão.[374] The combined forecast mode includes at least one of a mode combining a blending mode and a blending mode, a mode combining interforecast and intraforecast, a mode combining a blending mode and an advanced motion vector forecast mode, and a mode combining a blending mode and intraforecast.
[375] No modo de previsão combinado, um primeiro bloco de previsão pode ser gerado com base no primeiro modo de previsão, e um segundo bloco de previsão pode ser gerado com base no segundo modo de previsão. Então, um terceiro bloco de previsão pode ser gerado com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. O terceiro bloco de previsão pode ser definido como o bloco de previsão final do bloco atual.[375] In the combined prediction mode, a first prediction block may be generated based on the first prediction mode, and a second prediction block may be generated based on the second prediction mode. Then, a third prediction block may be generated based on a weighted sum operation of the first prediction block and the second prediction block. The third prediction block may be set as the final prediction block of the current block.
[376] Se deve usar ou não o modo de previsão combinado pode ser determinado com base no tamanho ou o formato do bloco atual. Por exemplo, se deve usar ou não o modo de previsão combinado pode ser determinado com base em pelo menos um dentre o tamanho do bloco de codificação, o número de amostras incluídas no bloco de codificação, a largura do bloco de codificação, e a altura do bloco de codificação. Por exemplo, quando pelo menos uma dentre a largura e a altura do bloco de codificação é maior ou igual a 128, ou quando o número de amostras incluídas no bloco de codificação é menor ou igual a 64, o modo de previsão combinado pode não ser aplicado ao bloco de codificação.[376] Whether or not to use combined prediction mode may be determined based on the size or format of the current block. For example, whether or not to use combined prediction mode may be determined based on at least one of the coding block size, the number of samples included in the coding block, the width of the coding block, and the height of the coding block. For example, when at least one of the width and height of the coding block is greater than or equal to 128, or when the number of samples included in the coding block is less than or equal to 64, combined prediction mode may not be applied to the coding block.
[377] Além disso, as informações que indicam se o modo de previsão combinado é aplicado ao bloco atual podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações podem ser um sinalizador de 1 bit. Por exemplo, sinalizador mh_intra_flag indicando se o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é usada pode ser sinalizada por meio de um fluxo de bits. Quando mh_intra_flag é 1, indica que o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é usada, e quando mh_intra_flag é 0, indica que o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é não usada.[377] Additionally, information indicating whether the combined prediction mode is applied to the current block may be signaled via a bit stream. For example, the information may be a 1-bit flag. For example, flag mh_intra_flag indicating whether the combined prediction mode combining the merge mode and intraprediction is used may be signaled via a bit stream. When mh_intra_flag is 1, it indicates that the combined prediction mode combining the merge mode and intraprediction is used, and when mh_intra_flag is 0, it indicates that the combined prediction mode combining the merge mode and intraprediction is not used.
[378] Apenas quando o modo de codificação de previsão do bloco atual é o modo de interprevisão e o modo de mesclagem é aplicado ao bloco atual, o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão pode ser aplicado ao bloco atual. Isto é, mh_intra_flag pode ser sinalizado quando o valor de sinalizador merge_flag indicando se o modo de mesclagem é aplicado ao bloco atual é 1.[378] Only when the prediction coding mode of the current block is interprediction mode and merge mode is applied to the current block, the combined prediction mode combining merge mode and intraprediction can be applied to the current block. That is, mh_intra_flag can be flagged when the value of flag merge_flag indicating whether merge mode is applied to the current block is 1.
[379] No modo de previsão combinado combinando o modo de mesclagem e a intraprevisão, o modo de intraprevisão do bloco atual pode ser definido como um modo de intraprevisão predefinido. Por exemplo, quando o modo de previsão combinado é usado, o modo de intraprevisão do bloco atual pode ser definido como um modo plano.[379] In the combined forecast mode combining blending mode and intraforecast, the current block's intraforecast mode can be set to a predefined intraforecast mode. For example, when the combined forecast mode is used, the current block's intraforecast mode can be set to a flat mode.
[380] Como um outro exemplo, quando o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é usado, um dentre os modos de intraprevisão candidatos pode ser determinado como o modo de intraprevisão do bloco atual. Aqui, o modo de intraprevisão candidato pode incluir pelo menos um dentre um modo de intraprevisão não angular e um modo de intraprevisão angular de uma direção específica. Aqui, o modo de intraprevisão não angular inclui pelo menos um dentre o modo de Dc e o modo plano, e o modo de intraprevisão angular inclui pelo menos um dentre o modo de intraprevisão da direção horizontal, o modo de intraprevisão da direção vertical, e o modo de intraprevisão de uma direção diagonal. Por exemplo, quando o modo de previsão combinado é usado, apenas o modo de Dc, o modo plano, o modo de intraprevisão da direção horizontal, ou o modo de intraprevisão da direção vertical pode ser definido como o modo de intraprevisão do bloco atual. Alternativamente, quando o modo de previsão combinado é usado, apenas o modo plano, o modo de intraprevisão da direção horizontal, ou o modo de intraprevisão da direção vertical pode ser definido como o modo de intraprevisão do bloco atual. Alternativamente, quando o modo de previsão combinado é usado, apenas o modo de Dc, o modo plano, ou o modo de intraprevisão da direção vertical pode ser definido como o modo de intraprevisão do bloco atual. Alternativamente, quando o modo de previsão combinado é usado, apenas o modo de Dc, o modo plano, ou o modo de intraprevisão da direção horizontal pode ser definido como o modo de intraprevisão do bloco atual.[380] As another example, when the combined prediction mode combining the blending mode and the intraprediction is used, one of the candidate intraprediction modes may be determined as the intraprediction mode of the current block. Here, the candidate intraprediction mode may include at least one of a non-angular intraprediction mode and an angular intraprediction mode of a specific direction. Here, the non-angular intraprediction mode includes at least one of the Dc mode and the planar mode, and the angular intraprediction mode includes at least one of the intraprediction mode of the horizontal direction, the intraprediction mode of the vertical direction, and the intraprediction mode of a diagonal direction. For example, when the combined prediction mode is used, only the Dc mode, the planar mode, the intraprediction mode of the horizontal direction, or the intraprediction mode of the vertical direction may be set as the intraprediction mode of the current block. Alternatively, when using the combined forecast mode, only the flat mode, the horizontal direction intraforecast mode, or the vertical direction intraforecast mode can be set as the current block's intraforecast mode. Alternatively, when using the combined forecast mode, only the Dc mode, the flat mode, or the vertical direction intraforecast mode can be set as the current block's intraforecast mode. Alternatively, when using the combined forecast mode, only the Dc mode, the flat mode, or the horizontal direction intraforecast mode can be set as the current block's intraforecast mode.
[381] As informações de índice para especificar qualquer um dentre os modos de intraprevisão candidatos podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, índice mh_intra_idx especificando qualquer um dentre os modos de intraprevisão candidatos pode ser sinalizada por meio de um fluxo de bits. As Tabelas 9 e 10 mostram modos de intraprevisão de acordo com o valor de mh_intra_idx. Um modo de intraprevisão indicado por mh_intra_idx pode ser determinado como o modo de intraprevisão do bloco atual. [TABELA 9] [TABELA 101[381] Index information for specifying any of the candidate intraprediction modes may be signaled via a bit stream. For example, index mh_intra_idx specifying any of the candidate intraprediction modes may be signaled via a bit stream. Tables 9 and 10 show intraprediction modes according to the value of mh_intra_idx. An intraprediction mode indicated by mh_intra_idx may be determined as the intraprediction mode of the current block. [TABLE 9] [TABLE 101
[382] O número de modos de intraprevisão candidatos pode ter um valor fixo no codificador e no decodificador. Alternativamente, o número ou tipos de modos de intraprevisão candidatos pode variar de acordo com pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, e se um bloco vizinho é codificado por intraprevisão.[382] The number of candidate intraprediction modes may have a fixed value in the encoder and decoder. Alternatively, the number or types of candidate intraprediction modes may vary according to at least one of the current block size, the current block format, and whether a neighboring block is intraprediction coded.
[383] Como um outro exemplo, quando o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é aplicado, o modo de intraprevisão do bloco atual pode ser determinado com base em MPMs. Neste ponto, o número de MPMs que a lista de MPM inclui quando intraprevisão geral é aplicada pode ser diferente a partir do número de MPMs que a lista de MPM inclui quando o modo de previsão combinado é aplicado. Por exemplo, quando o modo de previsão combinado não é aplicado, a lista de MPM pode incluir 6 ou 5 MPMs, enquanto quando o modo de previsão combinado é aplicado, a lista de MPM pode incluir 4 ou 3 MPMs. Isto é, quando a intraprevisão geral é realizada, N MPMs são usadas, enquanto quando o modo de previsão combinado é aplicado, MPMs menores que N podem ser usados.[383] As another example, when the combined forecast mode combining the merge mode and intraforecast is applied, the intraforecast mode of the current block can be determined based on MPMs. At this point, the number of MPMs that the MPM list includes when general intraforecast is applied may be different from the number of MPMs that the MPM list includes when the combined forecast mode is applied. For example, when the combined forecast mode is not applied, the MPM list may include 6 or 5 MPMs, while when the combined forecast mode is applied, the MPM list may include 4 or 3 MPMs. That is, when general intraforecast is performed, N MPMs are used, while when the combined forecast mode is applied, MPMs less than N may be used.
[384] Por exemplo, é considerado que quando um modo de intraprevisão geral é aplicado, MPMs derivados com base no modo de intraprevisão de um bloco vizinho adjacente ao bloco atual são modo plano, modo de Dc, INTRA_MODE32, INTRA_MODE31, INTRA_MODE33, e INTRA_MODE30. Quando o modo de previsão combinado é aplicado ao bloco atual, o modo de intraprevisão do bloco atual pode ser determinado usando apenas alguns dos 6 MPMs. Por exemplo, o modo de intraprevisão do bloco atual pode ser determinado usando uma lista de MPM incluindo 3 MPMs tendo os menores índices entre os MPMs, isto é, o modo plano, o modo de Dc, e INTRA_MODE32. Alternativamente, qualquer um que tem um índice predefinido valor entre os MPMs pode ser determinado como o modo de intraprevisão do bloco atual.[384] For example, it is considered that when a general intraprediction mode is applied, MPMs derived based on the intraprediction mode of a neighboring block adjacent to the current block are Flat mode, Dc mode, INTRA_MODE32, INTRA_MODE31, INTRA_MODE33, and INTRA_MODE30. When the combined prediction mode is applied to the current block, the intraprediction mode of the current block can be determined using only some of the 6 MPMs. For example, the intraprediction mode of the current block can be determined using an MPM list including 3 MPMs having the smallest indexes among the MPMs, i.e., Flat mode, Dc mode, and INTRA_MODE32. Alternatively, any one that has a predefined index value among the MPMs can be determined as the intraprediction mode of the current block.
[385] Como um outro exemplo, é possível definir igualmente o número de MPMs usado para determinar o modo de intraprevisão do bloco atual quando uma intraprevisão geral é aplicada, e o número de MPMs usado para determinar o modo de intraprevisão do bloco atual quando o modo de previsão combinado é aplicado.[385] As another example, it is possible to equally define the number of MPMs used to determine the intraforecast mode of the current block when an overall intraforecast is applied, and the number of MPMs used to determine the intraforecast mode of the current block when the combined forecast mode is applied.
[386] Quando o modo de previsão combinado é aplicado, a codificação do sinalizador de MPM pode ser omitida, e o sinalizador de MPM pode ser considerado como sendo verdadeiro. Isto é, quando o modo de previsão combinado é aplicado, qualquer um dentre os MPMs pode ser determinado como o modo de intraprevisão do bloco atual.[386] When the combined prediction mode is applied, the MPM flag encoding may be omitted, and the MPM flag may be assumed to be true. That is, when the combined prediction mode is applied, any one of the MPMs may be determined as the intraprediction mode of the current block.
[387] Pode ser configurado para não usar o método de codificação de intraprevisão multilinha quando o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é aplicado ao bloco atual. Quando o método de codificação de intraprevisão multilinha não é usado, uma linha de amostra de referência adjacente pode ser usada para a intraprevisão do bloco atual.[387] It can be configured not to use the multi-line intraprediction coding method when the combined prediction mode combining the blending mode and intraprediction is applied to the current block. When the multi-line intraprediction coding method is not used, an adjacent reference sample line can be used for the intraprediction of the current block.
[388] Alternativamente, pode ser configurado usar o método de codificação de intraprevisão multilinha quando o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é aplicado ao bloco atual. As informações para determinar a linha de amostra de referência do bloco atual entre uma pluralidade de linhas de amostra de referência podem ser sinalizadas por meio de um fluxo de bits. Alternativamente, a linha de amostra de referência do bloco atual pode ser determinada considerando pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, o modo de intraprevisão do bloco atual, e a linha de amostra de referência de um bloco vizinho.[388] Alternatively, it may be configured to use the multi-line intraprediction coding method when the blended prediction mode combining the blending mode and intraprediction is applied to the current block. Information for determining the reference sample line of the current block among a plurality of reference sample lines may be signaled via a bit stream. Alternatively, the reference sample line of the current block may be determined by considering at least one of the size of the current block, the format of the current block, the intraprediction mode of the current block, and the reference sample line of a neighboring block.
[389] O número de modos de intraprevisão candidatos disponíveis pode ser definido diferentemente de acordo com a linha de amostra de referência do bloco atual. Por exemplo, quando uma linha de amostra de referência adjacente é usada, o modo de intraprevisão candidato pode incluir pelo menos um dentre o modo plano, o modo de Dc, o modo de intraprevisão da direção horizontal, o modo de intraprevisão da direção vertical, o modo de intraprevisão da direção diagonal esquerda inferior, e o modo de intraprevisão da direção diagonal direita superior. Por outro lado, quando uma linha de amostra de referência não adjacente é usada, o modo de intraprevisão candidato pode incluir pelo menos um dentre o modo de intraprevisão da direção horizontal, o modo de intraprevisão da direção vertical, o modo de intraprevisão da direção diagonal esquerda inferior, e o modo de intraprevisão da direção diagonal direita superior.[389] The number of available candidate intraprediction modes may be set differently according to the reference sample line of the current block. For example, when an adjacent reference sample line is used, the candidate intraprediction mode may include at least one of the planar mode, the Dc mode, the horizontal direction intraprediction mode, the vertical direction intraprediction mode, the lower left diagonal direction intraprediction mode, and the upper right diagonal direction intraprediction mode. Conversely, when a non-adjacent reference sample line is used, the candidate intraprediction mode may include at least one of the horizontal direction intraprediction mode, the vertical direction intraprediction mode, the lower left diagonal direction intraprediction mode, and the upper right diagonal direction intraprediction mode.
[390] Um primeiro bloco de previsão pode ser gerado usando um candidato a mesclagem selecionado no modo de mesclagem, e um segundo bloco de previsão pode ser gerado usando o modo de intraprevisão. Neste ponto, pode ser configurado não aplicar particionamento triangular ao bloco atual quando o primeiro bloco de previsão é gerado. Isto é, particionamento triangular pode não ser permitido no modo de previsão combinado combinando o modo de mesclagem e a intraprevisão. Além disso, pode ser configurado não aplicar PDPC ao bloco atual quando o segundo bloco de previsão é gerado. Isto é, PDPC pode não ser permitida no modo de previsão combinado combinando o modo de mesclagem e a intraprevisão.[390] A first prediction block can be generated using a merge candidate selected in merge mode, and a second prediction block can be generated using intraprediction mode. At this point, it can be configured to not apply triangular partitioning to the current block when the first prediction block is generated. That is, triangular partitioning may not be allowed in the combined prediction mode combining merge mode and intraprediction. Furthermore, it can be configured to not apply PDPC to the current block when the second prediction block is generated. That is, PDPC may not be allowed in the combined prediction mode combining merge mode and intraprediction.
[391] Um terceiro bloco de previsão pode ser gerado com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. Por exemplo, Equação 13 mostra um exemplo de gerar um terceiro bloco de previsão com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. [EQUAÇÃO 13] [391] A third prediction block may be generated based on a weighted sum operation of the first prediction block and the second prediction block. For example, Equation 13 shows an example of generating a third prediction block based on a weighted sum operation of the first prediction block and the second prediction block. [EQUATION 13]
[392] Na Equação 13, Pmerge denota um primeiro bloco de previsão obtido com base no modo de mesclagem, e Pintra denota um segundo bloco de previsão obtido com base na intraprevisão. Pcomb denota um terceiro bloco de previsão obtido combinando o primeiro bloco de previsão e o segundo bloco de previsão. w denota um primeiro valor de ponderação aplicado ao primeiro bloco de previsão. Um segundo valor de ponderação aplicado ao segundo bloco de previsão pode ser derivado subtraindo o primeiro valor de ponderação w da constante N. Aqui, N pode ter um valor predefinido no codificador e no decodificador. Por exemplo, N pode ser 4 ou 8. Alternativamente, a constante N pode ser derivada com base em pelo menos um dentre o tamanho, o formato, e o modo de intraprevisão do bloco atual.[392] In Equation 13, Pmerge denotes a first prediction block obtained based on the merge mode, and Pintra denotes a second prediction block obtained based on the intraprediction. Pcomb denotes a third prediction block obtained by combining the first prediction block and the second prediction block. w denotes a first weighting value applied to the first prediction block. A second weighting value applied to the second prediction block can be derived by subtracting the first weighting value w from the constant N. Here, N can have a predefined value at both the encoder and the decoder. For example, N can be 4 or 8. Alternatively, the constant N can be derived based on at least one of the size, the format, and the intraprediction mode of the current block.
[393] Ao contrário de exemplo mostrado na Equação 13, w pode ser definido como o segundo valor de ponderação, e um valor obtido subtraindo o segundo valor de ponderação da constante N predeterminada pode ser definido como o primeiro valor de ponderação.[393] Unlike the example shown in Equation 13, w can be set as the second weight value, and a value obtained by subtracting the second weight value from the predetermined constant N can be set as the first weight value.
[394] Os valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados com base em pelo menos um dentre o modo de intraprevisão do bloco atual e se o modo de mesclagem tem informações de movimento bidirecional. Por exemplo, o primeiro valor de ponderação w quando o modo de intraprevisão do bloco atual é modo de previsão angular pode ser maior que o primeiro valor de ponderação w quando o modo de intraprevisão do bloco atual é modo de previsão não angular. Alternativamente, o primeiro valor de ponderação w quando a previsão bidirecional é realizada pelo candidato a mesclagem pode ser maior que o primeiro valor de ponderação w quando a previsão unidirecional é realizada pelo candidato a mesclagem.[394] The weighting values applied to the first prediction block and the second prediction block may be determined based on at least one of the current block's intraprediction mode and whether the merge mode has bidirectional motion information. For example, the first weighting value w when the current block's intraprediction mode is angular prediction mode may be greater than the first weighting value w when the current block's intraprediction mode is non-angular prediction mode. Alternatively, the first weighting value w when bidirectional prediction is performed by the merge candidate may be greater than the first weighting value w when unidirectional prediction is performed by the merge candidate.
[395] Como um outro exemplo, os valores de ponderação podem ser determinados considerando modos de codificação de previsão de blocos vizinhos adjacentes ao bloco atual. Aqui, o bloco vizinho pode incluir pelo menos um dentre um bloco vizinho superior adjacente à parte superior do bloco atual, um bloco vizinho esquerdo adjacente ao lado esquerdo do bloco atual, e um bloco vizinho esquerdo superior adjacente ao canto esquerdo superior do bloco atual. Um valor de ponderação pode ser determinado com base no número de blocos vizinhos codificados por intraprevisão entre os blocos vizinhos adjacentes ao bloco atual. Por exemplo, como o número de blocos vizinhos codificados por intraprevisão entre os blocos vizinhos adjacentes ao bloco atual aumenta, o primeiro valor de ponderação pode ter um valor menor, e o segundo valor de ponderação pode ter um valor maior. Por outro lado, como o número de blocos vizinhos codificados por não intraprevisão entre os blocos vizinhos adjacentes ao bloco atual diminui, o primeiro valor de ponderação pode ter um valor maior, e o segundo valor de ponderação pode ter um valor menor. Por exemplo, quando tanto o bloco vizinho esquerdo quanto o bloco vizinho superior são codificados por intraprevisão, o segundo valor de ponderação pode ser definido para n. Quando apenas um entre o bloco vizinho esquerdo e o bloco vizinho superior é codificado por intraprevisão, o segundo valor de ponderação pode ser definido para n/2. Quando nem o bloco vizinho esquerdo nem o bloco vizinho superior é codificado por intraprevisão, o segundo valor de ponderação pode ser definido para n/4. Aqui, n representa um número inteiro igual ou menor que N.[395] As another example, weight values may be determined by considering prediction coding modes of neighboring blocks adjacent to the current block. Here, the neighboring block may include at least one of a top neighbor block adjacent to the top of the current block, a left neighbor block adjacent to the left side of the current block, and an top left neighbor block adjacent to the top left corner of the current block. A weight value may be determined based on the number of intraprediction-coded neighboring blocks among neighboring blocks adjacent to the current block. For example, as the number of intraprediction-coded neighboring blocks among neighboring blocks adjacent to the current block increases, the first weight value may have a smaller value, and the second weight value may have a larger value. Conversely, as the number of non-intraprediction-coded neighboring blocks among neighboring blocks adjacent to the current block decreases, the first weight value may have a larger value, and the second weight value may have a smaller value. For example, when both the left neighbor block and the upper neighbor block are intraprediction encoded, the second weighting value can be set to n. When only one of the left neighbor blocks and the upper neighbor blocks is intraprediction encoded, the second weighting value can be set to n/2. When neither the left neighbor block nor the upper neighbor block is intraprediction encoded, the second weighting value can be set to n/4. Here, n represents an integer equal to or less than N.
[396] O valor de ponderação pode ser determinado pela unidade de amostra ou sub-bloco no bloco atual. Por exemplo, o bloco atual pode ser particionado em uma pluralidade de sub-blocos, e um valor de ponderação aplicado a cada sub- bloco pode ser definido para ter um valor diferente. Neste ponto, o número de sub-blocos pode ter um valor fixo no codificador e no decodificador. Alternativamente, o número de sub-blocos pode ser determinado de forma adaptativa com base em pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, o modo de intraprevisão do bloco atual, e o modo de codificação de previsão de um bloco vizinho.[396] The weighting value may be determined by the sample unit or sub-block in the current block. For example, the current block may be partitioned into a plurality of sub-blocks, and a weighting value applied to each sub-block may be set to have a different value. At this point, the number of sub-blocks may have a fixed value in the encoder and decoder. Alternatively, the number of sub-blocks may be adaptively determined based on at least one of the current block size, the current block format, the current block intra-prediction mode, and the predictive coding mode of a neighboring block.
[397] A Figura 28 é uma vista que mostra aplicação de exemplos de valores de ponderação.[397] Figure 28 is a view showing application of examples of weighting values.
[398] O bloco atual pode ser particionado em uma pluralidade de sub-blocos, e um valor de ponderação aplicado a cada sub-bloco pode ser definido para um valor diferente. Por exemplo, como mostrado nos exemplos das Figuras 28 (a) e (b), para um sub-bloco incluindo uma amostra posicionada no canto esquerdo superior do bloco atual, o segundo valor de ponderação é definido para ser maior que o primeiro valor de ponderação. Por outro lado, para um sub-bloco incluindo uma amostra posicionada no canto direito inferior do bloco atual, o primeiro valor de ponderação pode ser definido para ser maior que o segundo valor de ponderação.[398] The current block may be partitioned into a plurality of sub-blocks, and a weighting value applied to each sub-block may be set to a different value. For example, as shown in the examples of Figures 28(a) and (b), for a sub-block including a sample positioned in the upper left corner of the current block, the second weighting value is set to be greater than the first weighting value. Conversely, for a sub-block including a sample positioned in the lower right corner of the current block, the first weighting value may be set to be greater than the second weighting value.
[399] Um terceiro sub-bloco de previsão para um sub-bloco pode ser obtido realizando previsão ponderada no primeiro sub-bloco de previsão e no segundo sub-bloco de previsão correspondentes ao sub-bloco. Neste ponto, como mostrado no exemplo da Figura 28, os valores de ponderação usados para a previsão ponderada podem ser definidos diferentemente para cada sub-bloco.[399] A third prediction sub-block for a sub-block can be obtained by performing weighted prediction on the first prediction sub-block and the second prediction sub-block corresponding to the sub-block. At this point, as shown in the example of Figure 28, the weighting values used for the weighted prediction can be set differently for each sub-block.
[400] Um valor de ponderação atribuído a um sub- bloco pode ser determinado diferentemente de acordo com se o candidato a mesclagem tem informações de movimento bidirecional.[400] A weight value assigned to a sub-block may be determined differently depending on whether the merge candidate has bidirectional motion information.
[401] A Figura 29 é uma vista que mostra exemplos de atribuição de um valor de ponderação diferente a um sub- bloco de acordo com se um candidato a mesclagem tem informações de movimento bidirecional.[401] Figure 29 is a view showing examples of assigning a different weighting value to a sub-block according to whether a merge candidate has bidirectional motion information.
[402] Quando um candidato a mesclagem tem informações de movimento bidirecional, o primeiro valor de ponderação w atribuído a pelo menos um dentre os sub-blocos pode ser definido para um valor maior comparado com um caso em que o candidato a mesclagem tem informações de movimento unidirecional. Por exemplo, nas Figuras 29 (a) e (b), é mostrado que para todos os sub-blocos, o valor de ponderação w aplicado quando a previsão bidirecional é aplicada tem um valor maior que o valor de ponderação w aplicado quando a previsão unidirecional é aplicada.[402] When a merge candidate has bidirectional motion information, the first weight value w assigned to at least one of the sub-blocks may be set to a larger value compared to a case where the merge candidate has unidirectional motion information. For example, in Figures 29(a) and (b), it is shown that for all sub-blocks, the weight value w applied when bidirectional prediction is applied has a larger value than the weight value w applied when unidirectional prediction is applied.
[403] Alternativamente, um valor de ponderação aplicado a um sub-bloco pode ser determinado com base no modo de intraprevisão do bloco atual.[403] Alternatively, a weighting value applied to a sub-block may be determined based on the intraprediction mode of the current block.
[404] A Figura 30 é uma vista que mostra exemplos de atribuição de um valor de ponderação diferente a um sub- bloco de acordo com o modo de intraprevisão do bloco atual.[404] Figure 30 is a view showing examples of assigning a different weighting value to a sub-block according to the intraprediction mode of the current block.
[405] Quando o modo de intraprevisão do bloco atual está na direção vertical, o segundo valor de ponderação de um sub-bloco posicionado na parte superior do bloco atual pode ser definido para ser maior que o segundo valor de ponderação de um sub-bloco posicionado na parte inferior do bloco atual.[405] When the intraprediction mode of the current block is in the vertical direction, the second weighting value of a sub-block positioned at the top of the current block may be set to be greater than the second weighting value of a sub-block positioned at the bottom of the current block.
[406] Por exemplo, o segundo valor de ponderação pode ser definido para ser maior que o primeiro valor de ponderação para um sub-bloco posicionado na parte superior do bloco atual, enquanto o primeiro valor de ponderação e o segundo valor de ponderação podem ser definidos igualmente ou o primeiro valor de ponderação pode ser definido para ser maior que o segundo valor de ponderação para um sub-bloco posicionado na parte inferior do bloco atual.[406] For example, the second weighting value may be set to be greater than the first weighting value for a sub-block positioned at the top of the current block, while the first weighting value and the second weighting value may be set equally, or the first weighting value may be set to be greater than the second weighting value for a sub-block positioned at the bottom of the current block.
[407] Quando o modo de intraprevisão do bloco atual está na direção horizontal, o segundo valor de ponderação de um sub-bloco posicionado no lado esquerdo do bloco atual pode ser definido para ser maior que o segundo valor de ponderação de um sub-bloco posicionado no lado direito do bloco atual.[407] When the intraprediction mode of the current block is in the horizontal direction, the second weighting value of a sub-block positioned on the left side of the current block may be set to be greater than the second weighting value of a sub-block positioned on the right side of the current block.
[408] Por exemplo, o segundo valor de ponderação é definido para ser maior que o primeiro valor de ponderação para um sub-bloco posicionado no lado esquerdo do bloco atual, enquanto o primeiro valor de ponderação e o segundo valor de ponderação podem ser definidos igualmente ou o primeiro valor de ponderação pode ser definido para ser maior que o segundo valor de ponderação para um sub-bloco posicionado no lado direito do bloco atual.[408] For example, the second weight value is set to be greater than the first weight value for a sub-block positioned on the left side of the current block, while the first weight value and the second weight value may be set equally, or the first weight value may be set to be greater than the second weight value for a sub-block positioned on the right side of the current block.
[409] Como um outro exemplo, quando o modo de intraprevisão do bloco atual está na direção vertical, o primeiro valor de ponderação de um sub-bloco posicionado na parte superior do bloco atual pode ser definido para ser maior que o primeiro valor de ponderação do sub-bloco posicionado na parte inferior do bloco atual, ou quando o modo de intraprevisão do bloco está na direção horizontal, o primeiro valor de ponderação de um sub-bloco posicionado no lado esquerdo do bloco atual pode ser definido para ser maior que o primeiro valor de ponderação de um sub-bloco posicionado no lado direito do bloco atual.[409] As another example, when the intraprediction mode of the current block is in the vertical direction, the first weight value of a sub-block positioned at the top of the current block may be set to be greater than the first weight value of the sub-block positioned at the bottom of the current block, or when the intraprediction mode of the block is in the horizontal direction, the first weight value of a sub-block positioned at the left side of the current block may be set to be greater than the first weight value of a sub-block positioned at the right side of the current block.
[410] Como um outro exemplo, um valor de ponderação atribuído a cada sub-bloco pode ser determinado com base nos modos de codificação de previsão de blocos vizinhos adjacentes ao bloco atual. Por exemplo, quando o bloco vizinho superior do bloco atual é codificado por intraprevisão e o bloco vizinho esquerdo do bloco atual não é codificado por intraprevisão, o segundo valor de ponderação de um sub-bloco posicionado na parte superior do bloco atual pode ser definido para ser maior que o segundo valor de ponderação de um sub- bloco posicionado na parte inferior do bloco atual. Por outro lado, quando o bloco vizinho superior do bloco atual não é codificado por intraprevisão e o bloco vizinho esquerdo do bloco atual é codificado por intraprevisão, o segundo valor de ponderação de um sub-bloco posicionado no lado esquerdo do bloco atual pode ser definido para ser maior que o segundo valor de ponderação de um sub-bloco posicionado no lado direito do bloco atual.[410] As another example, a weight value assigned to each sub-block may be determined based on the prediction coding modes of neighboring blocks adjacent to the current block. For example, when the current block's top neighboring block is intra-prediction coded and the current block's left neighboring block is not intra-prediction coded, the second weight value of a sub-block positioned at the top of the current block may be set to be greater than the second weight value of a sub-block positioned at the bottom of the current block. Conversely, when the current block's top neighboring block is not intra-prediction coded and the current block's left neighboring block is intra-prediction coded, the second weight value of a sub-block positioned at the left side of the current block may be set to be greater than the second weight value of a sub-block positioned at the right side of the current block.
[411] Para pelo menos uma dentre uma pluralidade de sub-blocos, o primeiro valor de ponderação ou o segundo valor de ponderação pode ser definido para 0. Isto é, para pelo menos uma dentre a pluralidade de sub-blocos, o primeiro sub-bloco de previsão ou o segundo sub-bloco de previsão pode ser definido como o terceiro sub-bloco de previsão. Consequentemente, a previsão combinada pode não ser realizada em pelo menos uma dentre a pluralidade de sub-blocos. Por exemplo, para pelo menos uma dentre a pluralidade de sub- blocos, o primeiro valor de ponderação w pode ser definido para 0, ou o primeiro valor de ponderação w pode ser definido para constante N.[411] For at least one of the plurality of subblocks, the first weight value or the second weight value may be set to 0. That is, for at least one of the plurality of subblocks, the first prediction subblock or the second prediction subblock may be set to the third prediction subblock. Consequently, combined prediction may not be performed on at least one of the plurality of subblocks. For example, for at least one of the plurality of subblocks, the first weight value w may be set to 0, or the first weight value w may be set to constant N.
[412] Um bloco ao qual o modo de previsão combinado combinando o modo de mesclagem e a intraprevisão é aplicado pode ser considerado como sendo codificado por interprevisão. Consequentemente, o modo de intraprevisão de um bloco codificado no modo de previsão combinado pode ser definido para ser indisponível para derivar um modo de intraprevisão de um bloco que será codificado/decodificado depois disso. Quando um MPM é derivado, o modo de intraprevisão de um bloco indisponível pode ser considerado como o modo plano.[412] A block to which the combined prediction mode combining the blending mode and intraprediction is applied can be considered as being interprediction coded. Consequently, the intraprediction mode of a block encoded in the combined prediction mode can be set to be unavailable for deriving an intraprediction mode of a block that will be coded/decoded after that. When an MPM is derived, the intraprediction mode of an unavailable block can be considered as the flat mode.
[413] Por outro lado, informações de movimento de um bloco codificado pelo modo de previsão combinado podem ser definidas como disponíveis para derivar informações de movimento de um bloco que será codificado/decodificado depois disso.[413] On the other hand, motion information of a block encoded by the combined prediction mode can be defined as available to derive motion information of a block that will be encoded/decoded thereafter.
[414] No modo combinando um modo de mesclagem e um modo de mesclagem, a previsão de compensação de movimento pode ser realizada usando uma pluralidade de candidatos a mesclagem. Especificamente, um primeiro bloco de previsão pode ser gerado usando um primeiro candidato a mesclagem, e um segundo bloco de previsão pode ser gerado usando um segundo candidato a mesclagem. Um terceiro bloco de previsão pode ser gerado com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão.[414] In the mode combining a blending mode and a merging mode, motion compensation prediction may be performed using a plurality of merging candidates. Specifically, a first prediction block may be generated using a first merging candidate, and a second prediction block may be generated using a second merging candidate. A third prediction block may be generated based on a weighted sum operation of the first prediction block and the second prediction block.
[415] As informações para especificar o primeiro candidato a mesclagem e o segundo candidato a mesclagem podem ser sinalizadas por meio de um fluxo de bits, respectivamente. Por exemplo, as informações de índice merge_idx para especificar o primeiro candidato a mesclagem e as informações de índice merge_2nd_idx para especificar o segundo candidato a mesclagem podem ser sinalizadas por meio de um fluxo de bits. O segundo candidato a mesclagem pode ser determinado com base nas informações de índice merge_2nd_idx e nas informações de índice merge_idx.[415] The information for specifying the first merge candidate and the second merge candidate may be signaled via a bit stream, respectively. For example, the merge_idx index information for specifying the first merge candidate and the merge_2nd_idx index information for specifying the second merge candidate may be signaled via a bit stream. The second merge candidate may be determined based on the merge_2nd_idx index information and the merge_idx index information.
[416] As informações de índice merge_idx especificam qualquer um dentre candidatos a mesclagem incluída na lista de candidato a mesclagem.[416] The merge_idx index information specifies any of the merge candidates included in the merge candidate list.
[417] As informações de índice merge_2nd_idx podem especificar qualquer um dentre os candidatos a mesclagem remanescentes excluindo o candidato a mesclagem especificado por merge_idx. Consequentemente, quando o valor de merge_2nd_idx é menor que de merge_idx, um candidato a mesclagem do qual o índice é o valor de merge_2nd_idx pode ser definido como o segundo candidato a mesclagem. Quando o valor de merge_2nd_idx é igual ou maior que o valor de merge_idx, um candidato a mesclagem que tem um valor obtido adicionando 1 ao valor de merge_2nd_idx como um índice pode ser definido como o segundo candidato a mesclagem.[417] The merge_2nd_idx index information may specify any of the remaining merge candidates excluding the merge candidate specified by merge_idx. Consequently, when the value of merge_2nd_idx is less than merge_idx, a merge candidate whose index is the value of merge_2nd_idx may be set as the second merge candidate. When the value of merge_2nd_idx is equal to or greater than the value of merge_idx, a merge candidate that has a value obtained by adding 1 to the value of merge_2nd_idx as an index may be set as the second merge candidate.
[418] Alternativamente, o segundo candidato a mesclagem pode ser especificado considerando a ordem de pesquisa de blocos candidatos.[418] Alternatively, the second merge candidate can be specified by considering the search order of candidate blocks.
[419] A Figura 31 é uma vista que mostra um exemplo em que um segundo candidato a mesclagem é especificado considerando a ordem de pesquisa de blocos candidatos.[419] Figure 31 is a view showing an example where a second merge candidate is specified considering the search order of candidate blocks.
[420] No exemplo mostrado na Figura 31, índices marcados em amostras vizinhas e amostras não vizinhas indicam a ordem de pesquisa de blocos candidatos. Por exemplo, os blocos candidatos podem ser sequencialmente pesquisados da posição A0 para posição A14.[420] In the example shown in Figure 31, marked indices on neighboring samples and non-neighboring samples indicate the search order of candidate blocks. For example, candidate blocks can be sequentially searched from position A0 to position A14.
[421] Quando bloco A4 é selecionado como o primeiro candidato a mesclagem, um candidato a mesclagem derivado de um bloco candidato que tem uma ordem de pesquisa próximo a A4 pode ser especificado como o segundo candidato a mesclagem. Por exemplo, um candidato a mesclagem derivado de A5 pode ser selecionado como o segundo candidato a mesclagem. Quando o bloco candidato na posição A5 não pode ser usado como um candidato a mesclagem, um candidato a mesclagem derivado de um próximo bloco candidato pode ser selecionado como o segundo candidato a mesclagem.[421] When block A4 is selected as the first merge candidate, a merge candidate derived from a candidate block that has a search order close to A4 can be specified as the second merge candidate. For example, a merge candidate derived from A5 can be selected as the second merge candidate. When the candidate block at position A5 cannot be used as a merge candidate, a merge candidate derived from a nearby candidate block can be selected as the second merge candidate.
[422] O primeiro candidato a mesclagem e o segundo candidato a mesclagem podem ser selecionados entre candidatos a mesclagem derivados de blocos não vizinhos.[422] The first merge candidate and the second merge candidate may be selected from merge candidates derived from non-neighboring blocks.
[423] A Figura 32 é uma vista que mostra um exemplo em que um primeiro candidato a mesclagem e um segundo candidato a mesclagem são selecionados entre candidatos a mesclagem derivados de blocos não vizinhos.[423] Figure 32 is a view showing an example where a first merge candidate and a second merge candidate are selected from merge candidates derived from non-neighboring blocks.
[424] Como mostrado no exemplo da Figura 32, candidatos a mesclagem derivados de um primeiro bloco candidato e um segundo bloco candidato que não são adjacentes ao bloco atual podem ser selecionados como o primeiro candidato a mesclagem e o segundo candidato a mesclagem, respectivamente. Neste ponto, a linha de bloco à qual a primeiro bloco candidato pertence e a linha de bloco à qual o segundo bloco candidato pertence podem ser diferentes. Por exemplo, o primeiro candidato a mesclagem pode ser derivado de qualquer um dentre blocos candidatos A5 a A10, e o segundo candidato a mesclagem pode ser derivado de qualquer um dentre blocos candidatos A11 a A15.[424] As shown in the example in Figure 32, merge candidates derived from a first candidate block and a second candidate block that are not adjacent to the current block can be selected as the first merge candidate and the second merge candidate, respectively. At this point, the block row to which the first candidate block belongs and the block row to which the second candidate block belongs may be different. For example, the first merge candidate can be derived from any of candidate blocks A5 through A10, and the second merge candidate can be derived from any of candidate blocks A11 through A15.
[425] Alternativamente, pode ser configurado tal que o primeiro bloco candidato e o segundo bloco candidato não são incluídos na mesma linha (por exemplo, linha ou coluna).[425] Alternatively, it may be configured such that the first candidate block and the second candidate block are not included in the same row (e.g., line or column).
[426] Como um outro exemplo, o segundo candidato a mesclagem pode ser especificado com base no primeiro candidato a mesclagem. Neste ponto, o primeiro candidato a mesclagem pode ser especificado pelas informações de índice merge_idx sinalizadas de um fluxo de bits. Por exemplo, um candidato a mesclagem adjacente ao primeiro candidato a mesclagem pode ser especificado como o segundo candidato a mesclagem. Aqui, o candidato a mesclagem adjacente ao primeiro candidato a mesclagem pode significar um candidato a mesclagem que tem uma diferença de índice de 1 em relação ao primeiro candidato a mesclagem. Por exemplo, um candidato a mesclagem que tem um valor de índice de merge_idx + 1 pode ser definido como o segundo candidato a mesclagem. Neste ponto, quando o valor de merge_idx + 1 é maior que o valor de índice máximo (ou quando o valor de índice do primeiro candidato a mesclagem é o índice máximo), um candidato a mesclagem que tem um valor de índice de merge_idx-1 ou um candidato a mesclagem que tem um valor de índice de um valor predefinido (por exemplo, 0) pode ser definido como o segundo candidato a mesclagem.[426] As another example, the second merge candidate can be specified based on the first merge candidate. At this point, the first merge candidate can be specified by the signed merge_idx index information of a bitstream. For example, a merge candidate that is adjacent to the first merge candidate can be specified as the second merge candidate. Here, the merge candidate that is adjacent to the first merge candidate can mean a merge candidate that has an index difference of 1 from the first merge candidate. For example, a merge candidate that has an index value of merge_idx + 1 can be defined as the second merge candidate. At this point, when the value of merge_idx+1 is greater than the maximum index value (or when the index value of the first merge candidate is the maximum index), a merge candidate that has an index value of merge_idx-1 or a merge candidate that has an index value of a predefined value (e.g., 0) can be set as the second merge candidate.
[427] Alternativamente, o candidato a mesclagem adjacente ao primeiro candidato a mesclagem pode significar um candidato a mesclagem derivado de um bloco candidato espacialmente adjacente a um bloco candidato usado para derivar o primeiro candidato a mesclagem. Aqui, o bloco candidato vizinho do bloco candidato pode significar um bloco adjacente ao bloco candidato na direção esquerda, direita, superior, inferior ou diagonal.[427] Alternatively, the merge candidate adjacent to the first merge candidate may mean a merge candidate derived from a candidate block spatially adjacent to a candidate block used to derive the first merge candidate. Here, the candidate block's neighboring candidate block may mean a block adjacent to the candidate block in the left, right, top, bottom, or diagonal direction.
[428] Como um outro exemplo, o segundo candidato a mesclagem pode ser especificado com base nas informações de movimento do primeiro candidato a mesclagem. Por exemplo, um candidato a mesclagem compartilhando a mesma imagem de referência com o primeiro candidato a mesclagem pode ser selecionado como o segundo candidato a mesclagem. Quando há uma pluralidade de candidatos a mesclagem compartilhando a mesma imagem de referência com o primeiro candidato a mesclagem, um candidato a mesclagem tendo o menor índice entre a pluralidade de candidatos a mesclagem, um candidato a mesclagem tendo a menor diferença de índice a partir do primeiro candidato a mesclagem, ou um candidato a mesclagem tendo a menor diferença de vetor de movimento a partir do primeiro candidato a mesclagem pode ser selecionado como o segundo candidato a mesclagem. Alternativamente, o segundo candidato a mesclagem pode ser selecionado com base nas informações de índice especificando qualquer uma dentre a pluralidade de candidatos a mesclagem.[428] As another example, the second merge candidate may be specified based on the motion information of the first merge candidate. For example, a merge candidate sharing the same reference image with the first merge candidate may be selected as the second merge candidate. When there are a plurality of merge candidates sharing the same reference image with the first merge candidate, a merge candidate having the smallest index among the plurality of merge candidates, a merge candidate having the smallest index difference from the first merge candidate, or a merge candidate having the smallest motion vector difference from the first merge candidate may be selected as the second merge candidate. Alternatively, the second merge candidate may be selected based on the index information specifying any one of the plurality of merge candidates.
[429] Alternativamente, quando o primeiro candidato a mesclagem é previsão unidirecional de uma primeira direção, um candidato a mesclagem incluindo as informações de movimento em uma segunda direção pode ser definido como o segundo candidato a mesclagem. Por exemplo, quando o primeiro candidato a mesclagem com informações de movimento de direção L0, um candidato a mesclagem tendo informações de movimento de direção L1 pode ser selecionado como o segundo candidato a mesclagem. Quando há uma pluralidade de candidatos a mesclagem tendo informações de movimento de direção L1, um candidato a mesclagem tendo o menor índice ou um candidato a mesclagem tendo a menor diferença de índice a partir do primeiro candidato a mesclagem entre a pluralidade de candidatos a mesclagem pode ser definido como o segundo candidato a mesclagem. Alternativamente, o segundo candidato a mesclagem pode ser selecionado com base nas informações de índice especificando qualquer uma dentre a pluralidade de candidatos a mesclagem.[429] Alternatively, when the first merge candidate is unidirectional prediction of a first direction, a merge candidate including motion information in a second direction may be defined as the second merge candidate. For example, when the first merge candidate has L0 direction motion information, a merge candidate having L1 direction motion information may be selected as the second merge candidate. When there are a plurality of merge candidates having L1 direction motion information, a merge candidate having the smallest index or a merge candidate having the smallest index difference from the first merge candidate among the plurality of merge candidates may be defined as the second merge candidate. Alternatively, the second merge candidate may be selected based on the index information specifying any one among the plurality of merge candidates.
[430] Como um outro exemplo, um entre os candidatos a mesclagem derivados de blocos vizinhos adjacentes ao bloco atual pode ser definido como o primeiro candidato a mesclagem, e um entre os candidatos a mesclagem derivados de blocos não vizinhos não adjacentes ao bloco atual pode ser definido como o segundo candidato a mesclagem.[430] As another example, one among the merge candidates derived from neighboring blocks adjacent to the current block may be set as the first merge candidate, and one among the merge candidates derived from non-neighboring blocks non-adjacent to the current block may be set as the second merge candidate.
[431] Como um outro exemplo, um entre os candidatos a mesclagem derivados de blocos candidatos posicionado na parte superior do bloco atual pode ser definido como o primeiro candidato a mesclagem, e um entre os candidatos a mesclagem derivados de blocos candidatos posicionados no lado esquerdo pode ser definido como o segundo candidato a mesclagem.[431] As another example, one among the merge candidates derived from candidate blocks positioned at the top of the current block may be set as the first merge candidate, and one among the merge candidates derived from candidate blocks positioned at the left side may be set as the second merge candidate.
[432] No modo de previsão combinado combinando um modo de mesclagem e um modo de mesclagem como descrito acima, o modo de mesclagem pode significar um modo de mesclagem com base em um modelo de movimento de translação (em seguida, denominado como um modo de mesclagem de translação) ou um modo de mesclagem com base em um modelo de movimento afim (em seguida, denominado como um modo de mesclagem afim). Isto é, a previsão de compensação de movimento pode ser realizada combinando um modo de mesclagem de translação e um modo de mesclagem de translação ou combinando um modo de mesclagem afim e um modo de mesclagem afim.[432] In the combined prediction mode combining a blending mode and a blending mode as described above, the blending mode may mean a blending mode based on a translational motion model (hereinafter referred to as a translational blending mode) or a blending mode based on an affine motion model (hereinafter referred to as an affine blending mode). That is, motion compensation prediction may be performed by combining a translational blending mode and a translational blending mode or by combining an affine blending mode and an affine blending mode.
[433] Como um outro exemplo, quando um bloco vizinho usado para derivar o primeiro candidato a mesclagem é codificada com base nas informações de movimento afim, um candidato a mesclagem derivado a partir do bloco vizinho codificado com base nas informações de movimento afim pode ser definido como um segundo candidato a mesclagem. Por exemplo, quando o primeiro candidato a mesclagem é um candidato a mesclagem afim, ou quando o primeiro candidato a mesclagem é derivado com base nas informações de movimento de um sub-bloco em um bloco de codificação codificado com base nas informações de movimento afim, o candidato a mesclagem afim ou o candidato a mesclagem derivado com base nas informações de movimento de um sub-bloco em um bloco de codificação codificado com base nas informações de movimento afim pode ser selecionado como um segundo candidato a mesclagem. Aqui, o segundo candidato a mesclagem pode incluir pelo menos um dentre um candidato a mesclagem mais próximo ao primeiro candidato a mesclagem na ordem de pesquisa, um candidato a mesclagem tendo a menor diferença de índice a partir do primeiro candidato a mesclagem, um candidato a mesclagem tendo o menor índice, e um candidato a mesclagem tendo a menor diferença de vetor de movimento a partir do primeiro candidato a mesclagem, entre os candidatos a mesclagem que satisfazem as condições acima.[433] As another example, when a neighboring block used to derive the first merge candidate is encoded based on affine motion information, a merge candidate derived from the neighboring block encoded based on the affine motion information may be defined as a second merge candidate. For example, when the first merge candidate is an affine merge candidate, or when the first merge candidate is derived based on the motion information of a sub-block in a coding block encoded based on the affine motion information, the affine merge candidate or the merge candidate derived based on the motion information of a sub-block in a coding block encoded based on the affine motion information may be selected as a second merge candidate. Here, the second merge candidate may include at least one of a merge candidate closest to the first merge candidate in the search order, a merge candidate having the smallest index difference from the first merge candidate, a merge candidate having the smallest index, and a merge candidate having the smallest motion vector difference from the first merge candidate, among the merge candidates that satisfy the above conditions.
[434] Ao contrário do exemplo descrito acima, quando um bloco vizinho usado para derivar o primeiro candidato a mesclagem é codificado com base nas informações de movimento de translação (isto é, informações de movimento não afim), um candidato a mesclagem derivado a partir do bloco vizinho codificado com base nas informações de movimento de translação pode ser definido como um segundo candidato a mesclagem. Por exemplo, quando o primeiro candidato a mesclagem é um candidato a mesclagem não afim, um candidato a mesclagem não afim pode ser selecionado como o segundo candidato a mesclagem. Aqui, o segundo candidato a mesclagem pode incluir pelo menos um dentre um candidato a mesclagem mais próximo ao primeiro candidato a mesclagem na ordem de pesquisa, um candidato a mesclagem tendo a menor diferença de índice a partir do primeiro candidato a mesclagem, um candidato a mesclagem tendo o menor índice, e um candidato a mesclagem tendo a menor diferença de vetor de movimento a partir do primeiro candidato a mesclagem, entre os candidatos a mesclagem não afins.[434] Unlike the example described above, when a neighboring block used to derive the first merge candidate is encoded based on translational motion information (i.e., non-affine motion information), a merge candidate derived from the neighboring block encoded based on translational motion information may be defined as a second merge candidate. For example, when the first merge candidate is a non-affine merge candidate, a non-affine merge candidate may be selected as the second merge candidate. Here, the second merge candidate may include at least one of a merge candidate closest to the first merge candidate in the search order, a merge candidate having the smallest index difference from the first merge candidate, a merge candidate having the smallest index, and a merge candidate having the smallest motion vector difference from the first merge candidate, among the non-affine merge candidates.
[435] Alternativamente, o segundo candidato a mesclagem é derivado adicionando ou subtraindo um deslocamento para ou a partir do índice do primeiro candidato a mesclagem, e quando os métodos de codificação de blocos vizinhos usados para derivar o primeiro candidato a mesclagem e o segundo candidato a mesclagem são diferentes, o segundo candidato a mesclagem pode ser redefinida para uma outra candidato a mesclagem.[435] Alternatively, the second merge candidate is derived by adding or subtracting an offset to or from the index of the first merge candidate, and when the neighboring block encoding methods used to derive the first merge candidate and the second merge candidate are different, the second merge candidate may be redefined to another merge candidate.
[436] A Figura 33 é uma vista para descrever um exemplo de determinação de um segundo candidato a mesclagem.[436] Figure 33 is a view to describe an example of determining a second merge candidate.
[437] Quando o primeiro candidato a mesclagem é selecionado, um candidato a mesclagem que tem um índice derivado adicionando ou subtraindo um deslocamento para ou a partir do índice do primeiro candidato a mesclagem pode ser selecionado como o segundo candidato a mesclagem. Por exemplo, um candidato a mesclagem que tem um valor indicado por merge_idx sinalizado de um fluxo de bits como um índice pode ser selecionado como o primeiro candidato a mesclagem, e um candidato a mesclagem tendo merge_idx + 1 como um índice pode ser selecionado como o segundo candidato a mesclagem.[437] When the first merge candidate is selected, a merge candidate that has an index derived by adding or subtracting an offset to or from the index of the first merge candidate may be selected as the second merge candidate. For example, a merge candidate that has a value indicated by a bitstream's signed merge_idx as an index may be selected as the first merge candidate, and a merge candidate having merge_idx + 1 as an index may be selected as the second merge candidate.
[438] Neste ponto, quando o primeiro candidato a mesclagem é um candidato a mesclagem afim ou é derivado de um sub-bloco pertencente a um bloco de codificação codificado por um modelo de movimento afim, um candidato a mesclagem afim ou um candidato a mesclagem derivado de um sub-bloco pertencente a um bloco de codificação codificado por um modelo de movimento afim deve ser definido como o segundo candidato a mesclagem. Quando um candidato a mesclagem tendo merge_idx + 1 como um índice não é um candidato a mesclagem afim ou não é derivado de um sub-bloco pertencente a um bloco de codificação codificado por um modelo de movimento afim, um outro candidato a mesclagem pode ser definido como o segundo candidato a mesclagem. Aqui, um outro candidato a mesclagem pode ser o primeiro candidato a mesclagem ou um candidato a mesclagem tendo a menor diferença de merge_idx + 1, entre os candidatos a mesclagem afins ou os candidatos a mesclagem derivados de um sub-bloco pertencente a um bloco de codificação codificado por um modelo de movimento afim.[438] At this point, when the first merge candidate is an affine merge candidate or is derived from a sub-block belonging to a coding block encoded by an affine motion model, an affine merge candidate or a merge candidate derived from a sub-block belonging to a coding block encoded by an affine motion model shall be defined as the second merge candidate. When a merge candidate having merge_idx + 1 as an index is not an affine merge candidate or is not derived from a sub-block belonging to a coding block encoded by an affine motion model, another merge candidate may be defined as the second merge candidate. Here, another merge candidate may be the first merge candidate or a merge candidate having the smallest difference of merge_idx + 1 among the affine merge candidates or the merge candidates derived from a sub-block belonging to a coding block encoded by an affine motion model.
[439] Ao contrário, quando o primeiro candidato a mesclagem é um candidato a mesclagem não afim, um candidato a mesclagem não afim deve ser definido como o segundo candidato a mesclagem. Quando um candidato a mesclagem tendo merge_idx + 1 como um índice é um candidato a mesclagem afim ou é derivado de um sub-bloco pertencente a um bloco de codificação codificado por um modelo de movimento afim, um outro candidato a mesclagem pode ser definido como o segundo candidato a mesclagem. Aqui, um outro candidato a mesclagem pode ser o primeiro candidato a mesclagem ou um candidato a mesclagem tendo a menor diferença de merge_idx + 1, entre os candidatos a mesclagem não afins. Por exemplo, no exemplo mostrado na Figura 33, é mostrado que candidato a mesclagem A3 tendo merge_idx + 2 como um índice é definido como o segundo candidato a mesclagem.[439] Conversely, when the first merge candidate is a non-affine merge candidate, a non-affine merge candidate should be set as the second merge candidate. When a merge candidate having merge_idx + 1 as an index is an affine merge candidate or is derived from a sub-block belonging to a coding block encoded by an affine motion model, another merge candidate may be set as the second merge candidate. Here, another merge candidate may be the first merge candidate or a merge candidate having the smallest difference of merge_idx + 1 among the non-affine merge candidates. For example, in the example shown in Figure 33, it is shown that merge candidate A3 having merge_idx + 2 as an index is set as the second merge candidate.
[440] Como um outro exemplo, a previsão de compensação de movimento pode ser realizada combinando um modo de mesclagem de translação e um modo de mesclagem afim. Isto é, qualquer um dentre o primeiro candidato a mesclagem e o segundo candidato a mesclagem pode ser um candidato a mesclagem afim, e o outro um pode ser um candidato a mesclagem não afim.[440] As another example, motion compensation prediction can be performed by combining a translational blending mode and an affine blending mode. That is, either one of the first blending candidate and the second blending candidate can be an affine blending candidate, and the other one can be a non-affine blending candidate.
[441] Um bloco de previsão combinado pode ser adquirido por meio de uma operação de soma ponderada do primeiro bloco de previsão derivado a partir do primeiro candidato a mesclagem e do segundo bloco de previsão derivados com base no segundo candidato a mesclagem. Neste ponto, o valor de ponderação aplicado ao primeiro bloco de previsão pode ser definido para ser maior que o valor de ponderação aplicado ao segundo bloco de previsão.[441] A combined prediction block may be acquired through a weighted sum operation of the first prediction block derived from the first merge candidate and the second prediction block derived based on the second merge candidate. At this point, the weighting value applied to the first prediction block may be set to be greater than the weighting value applied to the second prediction block.
[442] Alternativamente, os valores de ponderação podem ser determinados com base nas informações de movimento do primeiro candidato a mesclagem e nas informações de movimento do segundo candidato a mesclagem. Por exemplo, os valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados com base na diferença na ordem de saída da imagem de referência e da imagem atual. Especificamente, como a diferença na ordem de saída da imagem de referência e a imagem atual aumenta, o valor de ponderação aplicado ao bloco de previsão pode ser definido para um valor menor.[442] Alternatively, the weighting values may be determined based on the motion information of the first merge candidate and the motion information of the second merge candidate. For example, the weighting values applied to the first prediction block and the second prediction block may be determined based on the difference in the output order of the reference image and the current image. Specifically, as the difference in the output order of the reference image and the current image increases, the weighting value applied to the prediction block may be set to a smaller value.
[443] Alternativamente, os valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados considerando os tamanhos ou os formatos do bloco candidato usado para derivar o primeiro candidato a mesclagem (em seguida, denominado como o primeiro bloco candidato) e o bloco candidato usado para derivar o segundo candidato a mesclagem (em seguida, denominado como o segundo bloco candidato). Por exemplo, um valor de ponderação aplicado a um bloco de previsão derivado a partir do primeiro bloco candidato ou do segundo bloco candidato que tem um formato semelhante ao do bloco atual pode ser definida para um valor maior. Por outro lado, um valor de ponderação aplicado a um bloco de previsão derivado a partir do primeiro bloco candidato ou do segundo bloco candidato que tem um formato não semelhante ao do bloco atual pode ser definido para um valor menor.[443] Alternatively, the weighting values applied to the first prediction block and the second prediction block may be determined by considering the sizes or shapes of the candidate block used to derive the first merge candidate (then referred to as the first candidate block) and the candidate block used to derive the second merge candidate (then referred to as the second candidate block). For example, a weighting value applied to a prediction block derived from the first candidate block or the second candidate block that has a similar shape to the current block may be set to a larger value. Conversely, a weighting value applied to a prediction block derived from the first candidate block or the second candidate block that has a dissimilar shape to the current block may be set to a smaller value.
[444] A Figura 34 é uma vista que mostra um exemplo em que valores de ponderação aplicados aos blocos de previsão são determinados com base no formato de blocos candidatos.[444] Figure 34 is a view showing an example where weighting values applied to prediction blocks are determined based on the shape of candidate blocks.
[445] É considerado que o bloco atual tem um formato não quadrado do qual a largura é maior que a altura.[445] The current block is considered to have a non-square shape in which the width is greater than the height.
[446] Um primeiro bloco de previsão e um segundo bloco de previsão podem ser derivados com base no primeiro candidato a mesclagem e o segundo candidato a mesclagem, e um bloco de previsão combinado pode ser gerado com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. Neste ponto, os valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados com base nos formatos do primeiro bloco candidato e do segundo bloco candidato.[446] A first prediction block and a second prediction block may be derived based on the first merge candidate and the second merge candidate, and a combined prediction block may be generated based on a weighted sum operation of the first prediction block and the second prediction block. At this point, the weighting values applied to the first prediction block and the second prediction block may be determined based on the shapes of the first candidate block and the second candidate block.
[447] Por exemplo, no exemplo mostrado na Figura 34, o primeiro bloco candidato tem um formato quadrado, e o segundo bloco candidato tem um formato não quadrado do qual a largura é maior que a altura. Visto que, o formato do segundo bloco candidato é igual ao do bloco atual, o valor de ponderação aplicado ao segundo bloco de previsão pode ser definido para ser maior que o valor de ponderação aplicado ao primeiro bloco de previsão. Por exemplo, um valor de ponderação de 5/8 pode ser aplicado ao segundo bloco de previsão, e um valor de ponderação de 3/8 pode ser aplicado ao primeiro bloco de previsão. A Equação 14 mostra um exemplo de derivação de um bloco de previsão combinado com base em uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. [EQUAÇÃO 14] [447] For example, in the example shown in Figure 34, the first candidate block has a square shape, and the second candidate block has a non-square shape of which the width is greater than the height. Since the shape of the second candidate block is the same as that of the current block, the weighting value applied to the second prediction block can be set to be greater than the weighting value applied to the first prediction block. For example, a weighting value of 5/8 can be applied to the second prediction block, and a weighting value of 3/8 can be applied to the first prediction block. Equation 14 shows an example of deriving a combined prediction block based on a weighted sum operation of the first prediction block and the second prediction block. [EQUATION 14]
[448] P(x, y) denota um bloco de previsão combinado, P1(x, y) denota um primeiro bloco de previsão, e P2(x, y) denota um segundo bloco de previsão.[448] P(x, y) denotes a combined prediction block, P1(x, y) denotes a first prediction block, and P2(x, y) denotes a second prediction block.
[449] Como um outro exemplo, os valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser determinados com base no formato do bloco atual. Por exemplo, quando o bloco atual tem um formato não quadrado do qual a largura é maior que a altura, um valor maior de ponderação pode ser aplicado a um bloco de previsão gerado com base em um candidato a mesclagem derivado com base em um bloco candidato posicionado na parte superior do bloco atual entre o primeiro candidato a mesclagem e o segundo candidato a mesclagem. Quando tanto o primeiro candidato a mesclagem quanto o segundo candidato a mesclagem são derivados a partir dos blocos candidatos posicionados na parte superior do bloco atual, valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser definidos igualmente. Por outro lado, quando o bloco atual tem um formato não quadrado do qual a altura é maior que a largura, um valor maior de ponderação pode ser aplicado a um bloco de previsão gerado com base em um candidato a mesclagem derivado com base em um bloco candidato posicionado no lado esquerdo do bloco atual entre o primeiro candidato a mesclagem e o segundo candidato a mesclagem. Quando tanto o primeiro candidato a mesclagem quanto o segundo candidato a mesclagem são derivados a partir dos blocos candidatos posicionados no lado esquerdo do bloco atual, valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser definidos igualmente. Quando o bloco atual tem um formato quadrado, valores de ponderação aplicados ao primeiro bloco de previsão e ao segundo bloco de previsão podem ser definidos igualmente.[449] As another example, the weighting values applied to the first prediction block and the second prediction block may be determined based on the shape of the current block. For example, when the current block has a non-square shape of which the width is greater than the height, a greater weighting value may be applied to a prediction block generated based on a merge candidate derived based on a candidate block positioned at the top of the current block between the first merge candidate and the second merge candidate. When both the first merge candidate and the second merge candidate are derived from candidate blocks positioned at the top of the current block, weighting values applied to the first prediction block and the second prediction block may be set equally. Conversely, when the current block has a non-square shape of which the height is greater than the width, a greater weighting value may be applied to a prediction block generated based on a merge candidate derived based on a candidate block positioned at the left side of the current block between the first merge candidate and the second merge candidate. When both the first merge candidate and the second merge candidate are derived from candidate blocks positioned to the left of the current block, weighting values applied to the first prediction block and the second prediction block can be set equally. When the current block is square-shaped, weighting values applied to the first prediction block and the second prediction block can be set equally.
[450] Como um outro exemplo, um valor de ponderação aplicado a cada bloco de previsão pode ser determinado com base na distância entre o bloco atual e um bloco candidato. Aqui, a distância pode ser derivada com base em uma diferença de coordenada de eixo x, uma diferença de coordenada de eixo y a partir do bloco atual, ou um valor mínimo entre eles. Um valor de ponderação aplicado a um bloco de previsão derivado de um candidato a mesclagem que tem uma pequena distância a partir do bloco atual pode ser definido para ser maior que um valor de ponderação aplicado a um bloco de previsão derivado de um candidato a mesclagem que tem uma grande distância a partir do bloco atual. Por exemplo, no exemplo mostrado na Figura 31, o primeiro candidato a mesclagem é derivado de um bloco vizinho adjacente ao bloco atual, e o segundo candidato a mesclagem é derivado de um bloco não vizinho que não é adjacente ao bloco atual. Neste caso, visto que, a distância de eixo x entre o primeiro bloco candidato e o bloco atual é menor que a distância de eixo x entre o segundo bloco candidato e o bloco atual, o valor de ponderação aplicado ao primeiro bloco de previsão pode ser definido para ser maior que o valor de ponderação aplicado ao segundo bloco de previsão.[450] As another example, a weighting value applied to each prediction block can be determined based on the distance between the current block and a candidate block. Here, the distance can be derived based on an x-axis coordinate difference, a y-axis coordinate difference from the current block, or a minimum value between them. A weighting value applied to a prediction block derived from a merge candidate that has a small distance from the current block can be set to be greater than a weighting value applied to a prediction block derived from a merge candidate that has a large distance from the current block. For example, in the example shown in Figure 31, the first merge candidate is derived from a neighboring block adjacent to the current block, and the second merge candidate is derived from a non-neighboring block that is not adjacent to the current block. In this case, since the x-axis distance between the first candidate block and the current block is smaller than the x-axis distance between the second candidate block and the current block, the weighting value applied to the first prediction block can be set to be larger than the weighting value applied to the second prediction block.
[451] Alternativamente, quando tanto o primeiro candidato a mesclagem quanto o segundo candidato a mesclagem são derivados de blocos não vizinhos, um valor maior de ponderação pode ser atribuído a um bloco de previsão derivado de um bloco não vizinho em uma distância mais próxima ao bloco atual entre os blocos não vizinhos. Por exemplo, no exemplo mostrado na Figura 32, visto que a distância de eixo y entre o primeiro bloco candidato e o bloco atual é menor que a distância de eixo y entre o segundo bloco candidato e o bloco atual, o valor de ponderação aplicado ao primeiro bloco de previsão pode ser definido para ser maior que o valor de ponderação aplicado ao segundo bloco de previsão.[451] Alternatively, when both the first merge candidate and the second merge candidate are derived from non-neighboring blocks, a larger weighting value may be assigned to a prediction block derived from a non-neighboring block at a closer distance to the current block among the non-neighboring blocks. For example, in the example shown in Figure 32, since the y-axis distance between the first candidate block and the current block is smaller than the y-axis distance between the second candidate block and the current block, the weighting value applied to the first prediction block may be set to be larger than the weighting value applied to the second prediction block.
[452] As informações de movimento integrado podem ser derivadas com base no primeiro candidato a mesclagem e o segundo candidato a mesclagem, e a previsão de compensação de movimento para o bloco atual pode ser realizada com base nas informações de movimento integrado. Por exemplo, um vetor de movimento do bloco atual pode ser derivado com base em uma operação média ou uma operação de soma ponderada do vetor de movimento do primeiro candidato a mesclagem e do vetor de movimento do segundo candidato a mesclagem. Neste ponto, o valor de ponderação aplicado ao vetor de movimento do primeiro candidato a mesclagem e o valor de ponderação aplicado ao vetor de movimento do segundo candidato a mesclagem podem ser determinados pelas modalidades descritas acima.[452] Integrated motion information may be derived based on the first merge candidate and the second merge candidate, and motion compensation prediction for the current block may be performed based on the integrated motion information. For example, a motion vector of the current block may be derived based on an average operation or a weighted sum operation of the motion vector of the first merge candidate and the motion vector of the second merge candidate. At this point, the weighting value applied to the motion vector of the first merge candidate and the weighting value applied to the motion vector of the second merge candidate may be determined by the embodiments described above.
[453] Quando o primeiro candidato a mesclagem é um candidato a mesclagem não afim e o segundo candidato a mesclagem afim é um candidato a mesclagem afim, um vetor de movimento do bloco atual pode ser derivado escalando o vetor de movimento do segundo candidato a mesclagem. A Equação 15 mostra um exemplo de derivar um vetor de movimento do bloco atual. [EQUAÇÃO 15] [453] When the first merge candidate is a non-affine merge candidate and the second affine merge candidate is an affine merge candidate, a motion vector of the current block can be derived by scaling the motion vector of the second merge candidate. Equation 15 shows an example of deriving a motion vector of the current block. [EQUATION 15]
[454] Na Equação 15, (mvX, mvY) denota o vetor de movimento do bloco atual, (mv0x, mv0y) denota o vetor de movimento do primeiro candidato a mesclagem, e (mv1x, mv1y) denota o vetor de movimento do segundo candidato a mesclagem. M denota um parâmetro de escala. M pode ser predefinido no codificador e no decodificador. Alternativamente, o valor do parâmetro de escala M pode ser determinado de acordo com o tamanho do bloco atual ou um bloco candidato. Por exemplo, quando a largura ou a altura do segundo bloco candidato é maior que 32, M pode ser definida para 3, e em outros casos, M pode ser definido para 2.[454] In Equation 15, (mvX, mvY) denotes the motion vector of the current block, (mv0x, mv0y) denotes the motion vector of the first merge candidate, and (mv1x, mv1y) denotes the motion vector of the second merge candidate. M denotes a scale parameter. M can be preset in both the encoder and decoder. Alternatively, the value of the scale parameter M can be determined according to the size of the current block or a candidate block. For example, when the width or height of the second candidate block is greater than 32, M can be set to 3, and in other cases, M can be set to 2.
[455] As informações de movimento do primeiro candidato a mesclagem ou do segundo candidato a mesclagem podem ser armazenadas como as informações de movimento de um bloco ao qual o modo de previsão combinado combinando um modo de mesclagem e um modo de mesclagem é aplicado. As informações de movimento armazenadas podem ser usadas para derivar informações de movimento de um bloco que será codificado/decodificado depois disso.[455] The motion information of the first merge candidate or the second merge candidate may be stored as the motion information of a block to which the combined prediction mode combining a merge mode and a blend mode is applied. The stored motion information may be used to derive motion information of a block that will be encoded/decoded thereafter.
[456] Alternativamente, o bloco pode ser particionado em uma pluralidade de sub-blocos, e qualquer uma dentre as informações de movimento do primeiro candidato a mesclagem e as informações de movimento do segundo candidato a mesclagem pode ser armazenada como a informações de movimento de cada sub-bloco. Neste ponto, as informações de movimento de uma parte da pluralidade de sub-blocos podem ser definidas como as informações de movimento do primeiro candidato a mesclagem, e as informações de movimento da outra parte podem ser definidas como as informações de movimento do segundo candidato a mesclagem.[456] Alternatively, the block may be partitioned into a plurality of sub-blocks, and any one of the motion information of the first merge candidate and the motion information of the second merge candidate may be stored as the motion information of each sub-block. At this point, the motion information of one part of the plurality of sub-blocks may be defined as the motion information of the first merge candidate, and the motion information of the other part may be defined as the motion information of the second merge candidate.
[457] Alternativamente, as informações de movimento integrado derivadas com base nas informações de movimento do primeiro candidato a mesclagem e o segundo candidato a mesclagem podem ser armazenadas como as informações de movimento de um bloco ao qual o modo de previsão combinado combinando um modo de mesclagem e um modo de mesclagem é aplicado.[457] Alternatively, the integrated motion information derived based on the motion information of the first merge candidate and the second merge candidate may be stored as the motion information of a block to which the combined prediction mode combining a merge mode and a blend mode is applied.
[458] No modo de previsão em que um modo de mesclagem e um modo de previsão de vetor de movimento avançado são combinados, um primeiro bloco de previsão é gerado usando as informações de movimento derivadas de um candidato a mesclagem, e um segundo bloco de previsão é gerado usando um vetor de movimento derivado de um candidato a previsão de vetor de movimento.[458] In the prediction mode in which a blending mode and an advanced motion vector prediction mode are combined, a first prediction block is generated using the motion information derived from a blending candidate, and a second prediction block is generated using a motion vector derived from a motion vector prediction candidate.
[459] No modo de previsão de vetor de movimento avançado, um candidato a previsão de vetor de movimento pode ser derivado de um bloco vizinho adjacente ao bloco atual ou um bloco colocado em uma imagem colocada. Depois disso, qualquer uma dentre uma pluralidade de candidatos a previsão de vetor de movimento podem ser especificados, e o candidato a previsão de vetor de movimento especificado pode ser definido como o preditor de vetor de movimento do bloco atual. Depois disso, um vetor de movimento do bloco atual pode ser derivado adicionando o preditor de vetor de movimento do bloco atual e um valor de diferença de vetor de movimento.[459] In the advanced motion vector prediction mode, a motion vector prediction candidate may be derived from a neighboring block adjacent to the current block or a placed block in a placed image. Thereafter, any one of a plurality of motion vector prediction candidates may be specified, and the specified motion vector prediction candidate may be set as the motion vector predictor of the current block. Thereafter, a motion vector of the current block may be derived by adding the motion vector predictor of the current block and a motion vector difference value.
[460] No modo de previsão em que um modo de mesclagem e um modo de previsão de vetor de movimento avançado são combinados, o candidato a mesclagem e o candidato a previsão de vetor de movimento podem ser derivados a partir do mesmo bloco candidato. Por exemplo, quando o candidato a mesclagem é especificado por merge_idx, um vetor de movimento de um bloco candidato usado para derivar o candidato a mesclagem especificado pode ser definido como o preditor de vetor de movimento. Alternativamente, quando o candidato a previsão de vetor de movimento é especificado por mvp_flag, um candidato a mesclagem derivado de um bloco candidato usado para derivar o candidato a mesclagem especificado pode ser selecionado.[460] In prediction mode where a merge mode and an advanced motion vector prediction mode are combined, the merge candidate and the motion vector prediction candidate may be derived from the same candidate block. For example, when the merge candidate is specified by merge_idx, a motion vector from a candidate block used to derive the specified merge candidate may be set as the motion vector predictor. Alternatively, when the motion vector prediction candidate is specified by mvp_flag, a merge candidate derived from a candidate block used to derive the specified merge candidate may be selected.
[461] Alternativamente, o bloco candidato usado para derivar o candidato a mesclagem e o bloco candidato usado para derivar o candidato a previsão de vetor de movimento podem ser diferentes. Por exemplo, quando um candidato a mesclagem derivado de um bloco candidato posicionado na parte superior do bloco atual é selecionado, pode ser configurado para selecionar um candidato a previsão de vetor de movimento derivada de um bloco candidato posicionado no lado esquerdo do bloco atual.[461] Alternatively, the candidate block used to derive the merge candidate and the candidate block used to derive the motion vector prediction candidate may be different. For example, when a merge candidate derived from a candidate block positioned on top of the current block is selected, it may be configured to select a motion vector prediction candidate derived from a candidate block positioned on the left side of the current block.
[462] Alternativamente, quando o candidato a mesclagem selecionado pela informações de índice e o candidato a previsão de vetor de movimento selecionado pelas informações de índice são derivados a partir do mesmo bloco candidato, o candidato a previsão de vetor de movimento pode ser substituído com um candidato a previsão de vetor de movimento derivado de um bloco candidato vizinho adjacente ao bloco candidato, ou o candidato a mesclagem pode ser substituído com um candidato a mesclagem derivado de um bloco candidato adjacente ao bloco candidato.[462] Alternatively, when the merge candidate selected by the index information and the motion vector prediction candidate selected by the index information are derived from the same candidate block, the motion vector prediction candidate may be replaced with a motion vector prediction candidate derived from a neighboring candidate block adjacent to the candidate block, or the merge candidate may be replaced with a merge candidate derived from a candidate block adjacent to the candidate block.
[463] A Figura 35 é uma vista que mostra um exemplo em que um candidato a mesclagem é substituído.[463] Figure 35 is a view showing an example where a merge candidate is replaced.
[464] No exemplo mostrado na Figura 35 (a), é mostrado que um candidato a mesclagem e um candidato a previsão de vetor de movimento derivados a partir do bloco candidato na posição A2 são selecionados. Como mostrado na figura, quando um candidato a mesclagem e um candidato a previsão de vetor de movimento são derivados a partir do mesmo bloco candidato, um candidato a mesclagem ou um candidato a previsão de vetor de movimento derivado de um bloco candidato adjacente ao bloco candidato pode ser usado em vez do candidato a mesclagem ou do candidato a previsão de vetor de movimento. Por exemplo, como mostrado no exemplo da Figura 35 (b), um candidato a mesclagem na posição A1 pode ser usado em vez do candidato a mesclagem na posição A2.[464] In the example shown in Figure 35(a), it is shown that a merge candidate and a motion vector prediction candidate derived from the candidate block at position A2 are selected. As shown in the figure, when a merge candidate and a motion vector prediction candidate are derived from the same candidate block, a merge candidate or a motion vector prediction candidate derived from a candidate block adjacent to the candidate block may be used instead of the merge candidate or the motion vector prediction candidate. For example, as shown in the example in Figure 35(b), a merge candidate at position A1 may be used instead of the merge candidate at position A2.
[465] Um primeiro bloco de previsão pode ser derivado com base no candidato a mesclagem do bloco atual, e um segundo bloco de previsão pode ser derivado com base no candidato a previsão de vetor de movimento. Depois disso, um bloco de previsão combinado pode ser derivado por meio de uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. Neste ponto, o valor de ponderação aplicado ao segundo bloco de previsão gerado usando o modo de previsão de vetor de movimento avançado pode ser definido para ser maior que o valor de ponderação aplicado ao primeiro bloco de previsão gerado usando o modo de mesclagem.[465] A first prediction block may be derived based on the current block's merge candidate, and a second prediction block may be derived based on the motion vector prediction candidate. Thereafter, a combined prediction block may be derived via a weighted sum operation of the first prediction block and the second prediction block. At this point, the weighting value applied to the second prediction block generated using the advanced motion vector prediction mode may be set to be greater than the weighting value applied to the first prediction block generated using the merge mode.
[466] Uma imagem residual derivada pode ser derivada subtraindo um vídeo de previsão de um vídeo original. Neste ponto, quando o vídeo residual é alterado para o domínio da frequência, a qualidade subjetiva do vídeo não é significativamente reduzida, embora os componentes de alta frequência entre os componentes de frequência sejam removidos. Por conseguinte, quando os valores dos componentes de alta frequência são convertidos para pequenos ou os valores dos componentes de alta frequência são definidos como 0, há um efeito de aumento da eficiência de compressão sem gerar distorção visual significativa. Ao refletir esta característica, o bloco atual pode ser transformado para decompor um vídeo residual em componentes de frequência bidimensionais. A transformada pode ser realizada usando uma transformada técnica como Transformada de Cosseno Discreta (DCT) ou Transformada de Seno Discreta (DST).[466] A derived residual image can be derived by subtracting a prediction video from an original video. At this point, when the residual video is shifted to the frequency domain, the subjective quality of the video is not significantly reduced, although the high-frequency components between the frequency components are removed. Therefore, when the values of the high-frequency components are converted to small or the values of the high-frequency components are set to 0, there is an effect of increasing compression efficiency without generating significant visual distortion. By reflecting this characteristic, the current block can be transformed to decompose a residual video into two-dimensional frequency components. The transform can be performed using a transform technique such as Discrete Cosine Transform (DCT) or Discrete Sine Transform (DST).
[467] A DCT decompõe (ou transforma) um vídeo residual em componentes de frequência bidimensionais usando uma transformada de cosseno, e a DST decompõe (ou transforma) um vídeo residual em componentes de frequência bidimensionais usando uma transformada de seno. Como um resultado da transformada do vídeo residual, os componentes de frequência podem ser expressos como um vídeo base. Por exemplo, quando a transformada DCT é realizada em um bloco de tamanho N x N, tantos componentes de padrão básico quanto N2 podem ser adquiridos. O tamanho de cada um dos componentes do padrão básico incluídos em um bloco de tamanho N x N pode ser adquirido por meio da transformada. De acordo com uma técnica de transformada usada para isso, o tamanho do componente de padrão básico pode ser denominado como um coeficiente de DCT ou um coeficiente de DST.[467] DCT decomposes (or transforms) a residual video into two-dimensional frequency components using a cosine transform, and DST decomposes (or transforms) a residual video into two-dimensional frequency components using a sine transform. As a result of the residual video transform, the frequency components can be expressed as a basis video. For example, when the DCT transform is performed on a block of size N x N, as many basic pattern components as N2 can be acquired. The size of each of the basic pattern components included in a block of size N x N can be acquired through the transform. Depending on a transform technique used for this, the size of the basic pattern component can be referred to as a DCT coefficient or a DST coefficient.
[468] A técnica de transformada de DCT é usada principalmente para transformar um vídeo no qual muitos componentes de baixa frequência diferentes de zero são distribuídos. A técnica de transformada de DST é usada principalmente para vídeos nos quais muitos componentes de alta frequência são distribuídos.[468] The DCT transform technique is mainly used to transform a video in which many non-zero low-frequency components are distributed. The DST transform technique is mainly used for videos in which many high-frequency components are distributed.
[469] O vídeo residual pode ser transformado usando uma técnica de transformada exceto a DCT ou a DST.[469] The residual video can be transformed using a transform technique other than DCT or DST.
[470] Em seguida, transformada de um vídeo residual em componentes de frequência bidimensionais será denominada como transformada de vídeo bidimensional. Além disso, o tamanho dos componentes básicos do padrão adquiridos como resultado da transformada é denominado como um coeficiente de transformada. Por exemplo, o coeficiente de transformada pode significar um coeficiente de DCT ou um coeficiente de DST. Quando a primeira transformada e a segunda transformada descritas abaixo são aplicadas, o coeficiente de transformada pode significar o tamanho de um componente de padrão básico gerado como resultado da segunda transformada.[470] In the following, the transform of a residual video into two-dimensional frequency components will be referred to as the two-dimensional video transform. In addition, the size of the basic pattern components acquired as a result of the transform is referred to as a transform coefficient. For example, the transform coefficient can mean a DCT coefficient or a DST coefficient. When the first transform and the second transform described below are applied, the transform coefficient can mean the size of a basic pattern component generated as a result of the second transform.
[471] A técnica de transformada pode ser determinada para cada bloco. A técnica de transformada pode ser determinada com base em pelo menos um dentre o modo de codificação de previsão do bloco atual, o tamanho do bloco atual, e o formato do bloco atual. Por exemplo, quando o bloco atual é codificado no modo de intraprevisão e o tamanho do bloco atual é menor que N x N, a transformada pode ser realizada usando a técnica de transformada de DST. Por outro lado, quando as condições acima não são satisfeitas, a transformada pode ser realizada usando a técnica de transformada de DCT.[471] The transform technique may be determined for each block. The transform technique may be determined based on at least one of the current block's prediction coding mode, the current block size, and the current block format. For example, when the current block is coded in intraprediction mode and the current block size is less than N x N, the transform may be performed using the DST transform technique. On the other hand, when the above conditions are not satisfied, the transform may be performed using the DCT transform technique.
[472] A transformada de vídeo bidimensional pode não ser realizada para alguns blocos do vídeo residual. Não realizar a transformada de vídeo bidimensional pode ser denominado como um salto de transformada. Quando o salto de transformada é aplicado, a quantização pode ser aplicada aos coeficientes residuais que não foram transformados.[472] The two-dimensional video transform may not be performed for some blocks of the residual video. Not performing the two-dimensional video transform can be termed as a transform skip. When the transform skip is applied, quantization can be applied to the residual coefficients that were not transformed.
[473] Após o bloco atual ser transformado usando DCT ou DST, o bloco atual transformado pode ser transformado novamente. Neste ponto, a transformada com base em DCT ou DST pode ser definida como uma primeira transformada, e transformando novamente um bloco ao qual a primeira transformada é aplicada pode ser definido como uma segunda transformada.[473] After the current block is transformed using DCT or DST, the current transformed block can be transformed again. At this point, the DCT- or DST-based transform can be defined as a first transform, and transforming again a block to which the first transform is applied can be defined as a second transform.
[474] A primeira transformada pode ser realizada usando qualquer uma dentre uma pluralidade de candidatos a núcleo de transformada. Por exemplo, a primeira transformada pode ser realizada usando qualquer uma dentre DCT2, DCT8 ou DCT7.[474] The first transform may be performed using any of a plurality of transform kernel candidates. For example, the first transform may be performed using any of DCT2, DCT8, or DCT7.
[475] Núcleos de transformada diferentes podem ser usados para a direção horizontal e a direção vertical. Informações que indicam combinação de um núcleo de transformada da direção horizontal e um núcleo de transformada da direção vertical podem ser sinalizadas por meio de um fluxo de bits.[475] Different transform kernels may be used for the horizontal direction and the vertical direction. Information indicating a combination of a transform kernel from the horizontal direction and a transform kernel from the vertical direction may be signaled via a bit stream.
[476] Unidades para realizar a primeira transformada e a segunda transformada podem ser diferentes. Por exemplo, a primeira transformada pode ser realizada em um bloco de 8 x 8, e a segunda transformada pode ser realizada em um sub-bloco de um tamanho de 4 x 4 entre o bloco 8 x 8 transformado. Neste ponto, os coeficientes de transformada das regiões residuais que não foram realizadas na segunda transformada podem ser definidos para 0.[476] Units for performing the first transform and the second transform may be different. For example, the first transform may be performed on an 8 x 8 block, and the second transform may be performed on a sub-block of a size of 4 x 4 among the transformed 8 x 8 block. At this point, the transform coefficients of the residual regions that were not performed in the second transform may be set to 0.
[477] Alternativamente, a primeira transformada pode ser realizada em um bloco 4 x 4, e a segunda transformada pode ser realizada em uma região de um tamanho de 8 x 8 incluindo o bloco 4 x 4 transformado.[477] Alternatively, the first transform can be performed on a 4 x 4 block, and the second transform can be performed on a region of size 8 x 8 including the transformed 4 x 4 block.
[478] Informações que indicam se a segunda transformada foi realizada ou não podem ser sinalizadas por meio de um fluxo de bits.[478] Information indicating whether the second transform has been performed or not can be signaled by means of a bit stream.
[479] Alternativamente, se ou não realizar a segunda transformada pode ser determinado com base em se o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são os mesmos. Por exemplo, a segunda transformada pode ser realizada apenas quando o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são os mesmos. Alternativamente, a segunda transformada pode ser realizada apenas quando o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são diferentes um do outro.[479] Alternatively, whether or not to perform the second transform can be determined based on whether the horizontal direction transform kernel and the vertical direction transform kernel are the same. For example, the second transform can be performed only when the horizontal direction transform kernel and the vertical direction transform kernel are the same. Alternatively, the second transform can be performed only when the horizontal direction transform kernel and the vertical direction transform kernel are different from each other.
[480] Alternativamente, a segunda transformada pode ser permitida apenas quando a transformada da direção horizontal e a transformada da direção vertical usam um núcleo de transformada predefinido. Por exemplo, quando um núcleo de transformada de DCT2 é usado para transformada da direção horizontal e transformada da direção vertical, a segunda transformada pode ser permitida.[480] Alternatively, the second transform may be allowed only when both the horizontal direction transform and the vertical direction transform use a predefined transform kernel. For example, when a DCT2 transform kernel is used for both the horizontal direction transform and the vertical direction transform, the second transform may be allowed.
[481] Alternativamente, se ou não realizar a segunda transformada pode ser determinado com base no número de coeficientes de transformada diferentes de zero do bloco atual. Por exemplo, pode ser configurado para não usar a segunda transformada quando o número de coeficientes de transformada diferentes de zero do bloco atual é menor ou igual a um valor limítrofe, e pode ser configurado para usar a segunda transformada quando o número de coeficiente de transformada diferente de zero do bloco atual é maior que o valor limítrofe. Pode ser configurado para usar a segunda transformada apenas quando o bloco atual é codificado por intraprevisão.[481] Alternatively, whether or not to perform the second transform may be determined based on the number of non-zero transform coefficients of the current block. For example, it may be configured to not use the second transform when the number of non-zero transform coefficients of the current block is less than or equal to a threshold value, and it may be configured to use the second transform when the number of non-zero transform coefficients of the current block is greater than the threshold value. It may be configured to use the second transform only when the current block is intraprediction encoded.
[482] Com base no formato do bloco atual, o tamanho ou o formato de um sub-bloco em que a segunda transformada será realizada pode ser determinado.[482] Based on the current block shape, the size or shape of a sub-block on which the second transform will be performed can be determined.
[483] As Figuras 36 e 37 são vistas que mostram um sub-bloco em que uma segunda transformada será realizada.[483] Figures 36 and 37 are views showing a sub-block in which a second transform will be performed.
[484] Quando o bloco atual tem um formato quadrado, a segunda transformada pode ser realizada em um sub- bloco que tem um N x N tamanho na parte esquerda superior do bloco atual após a primeira transformada ser realizada. Por exemplo, quando o bloco atual é um bloco de codificação de um tamanho de 8 x 8, a segunda transformada pode ser realizada em um sub-bloco que tem um tamanho de 4 x 4 na parte esquerda superior do bloco atual após a primeira transformada ser realizada no bloco atual (consultar a Figura 36).[484] When the current block has a square shape, the second transform can be performed on a sub-block that has a size of N x N in the upper left part of the current block after the first transform is performed. For example, when the current block is a coding block of a size of 8 x 8, the second transform can be performed on a sub-block that has a size of 4 x 4 in the upper left part of the current block after the first transform is performed on the current block (see Figure 36).
[485] Quando o bloco atual tem um formato não quadrado do qual a largura é pelo menos 4 vezes maior que a altura, a segunda transformada pode ser realizada em um sub- bloco de um tamanho (kN) x (4kN) na parte esquerda superior do bloco atual após a primeira transformada ser realizada. Por exemplo, quando o bloco atual tem um formato não quadrado de um tamanho de 16 x 4, a segunda transformada pode ser realizada em um sub-bloco de um tamanho de 2 x 8 na parte esquerda superior do bloco atual após a primeira transformada ser realizada no bloco atual (consultar a Figura 37 (a)).[485] When the current block has a non-square shape of which the width is at least 4 times greater than the height, the second transform can be performed on a sub-block of a size (kN) x (4kN) in the upper left part of the current block after the first transform is performed. For example, when the current block has a non-square shape of a size of 16 x 4, the second transform can be performed on a sub-block of a size of 2 x 8 in the upper left part of the current block after the first transform is performed on the current block (see Figure 37(a)).
[486] Quando o bloco atual tem um formato não quadrado do qual a altura é pelo menos 4 vezes maior que a largura, a segunda transformada pode ser realizada em um sub- bloco de um tamanho (4kN) x (kN) na parte esquerda superior do bloco atual após a primeira transformada ser realizada. Por exemplo, quando o bloco atual tem um formato não quadrado de um tamanho de 16 x 4, a segunda transformada pode ser realizada em um sub-bloco de um tamanho de 2 x 8 na parte esquerda superior do bloco atual após a primeira transformada ser realizada no bloco atual (consultar a Figura 37 (b)).[486] When the current block has a non-square shape of which the height is at least 4 times greater than the width, the second transform can be performed on a sub-block of a size (4kN) x (kN) in the upper left part of the current block after the first transform is performed. For example, when the current block has a non-square shape of a size of 16 x 4, the second transform can be performed on a sub-block of a size of 2 x 8 in the upper left part of the current block after the first transform is performed on the current block (see Figure 37(b)).
[487] O decodificador pode realizar a transformada inversa da segunda transformada (segunda transformada inversa) e pode realizar transformada inversa da primeira transformada (primeira transformada inversa) em um resultado da segunda transformada inversa. Como um resultado da realização da segunda transformada inversa e da primeira transformada inversa, sinais residuais para o bloco atual podem ser adquiridos.[487] The decoder may perform inverse transform of the second transform (second inverse transform) and may perform inverse transform of the first transform (first inverse transform) on a result of the second inverse transform. As a result of performing the second inverse transform and the first inverse transform, residual signals for the current block may be acquired.
[488] Informações que indicam o tipo de transformada do bloco atual podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser informações de índice tu_mts_idx indicando uma entre combinações de um tipo de transformada para a direção horizontal e um tipo de transformada para a direção vertical.[488] Information indicating the transform type of the current block may be signaled via a bit stream. The information may be tu_mts_idx index information indicating one of a combination of a transform type for the horizontal direction and a transform type for the vertical direction.
[489] Um núcleo de transformada para a direção vertical e um núcleo de transformada para a direção horizontal pode ser determinado com base nos candidatos de tipo de transformada especificados pelas informações de índice tu_mts_idx. As Tabelas 11 e 12 mostram combinações de tipo de transformada de acordo com tumtsidx. [TABELA 11] [TABELA 12] [489] A transform kernel for the vertical direction and a transform kernel for the horizontal direction can be determined based on the transform type candidates specified by the tu_mts_idx index information. Tables 11 and 12 show transform type combinations according to tumtsidx. [TABLE 11] [TABLE 12]
[490] O tipo de transformada pode ser determinado como qualquer uma dentre DCT2, DST7, DCT8, e transformada de salto. Alternativamente, um candidato de combinação de tipo de transformada pode ser configurado usando apenas cores de transformada exceto o salto de transformada.[490] The transform type can be determined as any one of DCT2, DST7, DCT8, and jump transform. Alternatively, a transform type combination candidate can be configured using only transform colors other than the jump transform.
[491] No caso em que a Tabela 11 é usada, quando tu_mts_idx é 0, salto de transformada pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 1, DCT2 pode ser aplicada na direção horizontal e na direção vertical. Quando tu_mts_idx é 3, DCT8 pode ser aplicada na direção horizontal, e DCT7 pode ser aplicada na direção vertical.[491] In the case where Table 11 is used, when tu_mts_idx is 0, jump transform can be applied in the horizontal direction and in the vertical direction. When tu_mts_idx is 1, DCT2 can be applied in the horizontal direction and in the vertical direction. When tu_mts_idx is 3, DCT8 can be applied in the horizontal direction, and DCT7 can be applied in the vertical direction.
[492] No caso em que a Tabela 12 é usada, quando tu_mts_idx é 0, DCT2 pode ser aplicada na direção horizontal e na direção vertical. Quando tu_mts_idx é 1, salto de transformada pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 3, DCT8 pode ser aplicada na direção horizontal, e DCT7 pode ser aplicado na direção vertical.[492] In the case where Table 12 is used, when tu_mts_idx is 0, DCT2 can be applied in the horizontal direction and in the vertical direction. When tu_mts_idx is 1, jump transform can be applied in the horizontal direction and in the vertical direction. When tu_mts_idx is 3, DCT8 can be applied in the horizontal direction, and DCT7 can be applied in the vertical direction.
[493] A codificação ou não das informações de índice pode ser determinada com base em pelo menos um dentre o tamanho, o formato e o número de coeficientes diferentes de zero do bloco atual. Por exemplo, quando o número de coeficientes diferentes de zero é igual ou menor que um valor limítrofe, as informações de índice não são sinalizadas, e um tipo de transformada padrão pode ser aplicado ao bloco atual. Aqui, o tipo de transformada padrão pode ser DST7. Alternativamente, o modo padrão pode variar de acordo com o tamanho, o formato, ou o modo de intraprevisão do bloco atual.[493] Whether or not to encode index information may be determined based on at least one of the size, format, and number of non-zero coefficients of the current block. For example, when the number of non-zero coefficients is equal to or less than a threshold value, index information is not flagged, and a default transform type may be applied to the current block. Here, the default transform type may be DST7. Alternatively, the default mode may vary depending on the size, format, or intraprediction mode of the current block.
[494] O valor limítrofe pode ser determinado com base no tamanho ou no formato do bloco atual. Por exemplo, quando o tamanho do bloco atual é menor ou igual a 32 x 32, o valor limítrofe pode ser definido para 2, e quando o bloco atual é maior que 32 x 32 (por exemplo, quando o bloco atual é um bloco de codificação de um tamanho de 32 x 64 ou 64 x 32), o valor limítrofe pode ser definido para 4.[494] The threshold value may be determined based on the current block size or format. For example, when the current block size is less than or equal to 32 x 32, the threshold value may be set to 2, and when the current block is greater than 32 x 32 (for example, when the current block is a coding block of a size of 32 x 64 or 64 x 32), the threshold value may be set to 4.
[495] Uma pluralidade de tabelas de pesquisa podem ser anteriormente armazenadas no codificador/decodificador. Na pluralidade de tabelas de pesquisa, pelo menos um dentre o valor de índice atribuído aos candidatos de combinação de tipo de transformada, o tipo dos candidatos de combinação de tipo de transformada, e o número de candidatos de combinação de tipo de transformada pode ser diferente.[495] A plurality of lookup tables may be previously stored in the encoder/decoder. In the plurality of lookup tables, at least one of the index value assigned to the transform type combination candidates, the type of the transform type combination candidates, and the number of transform type combination candidates may be different.
[496] Uma tabela de consulta para o bloco atual pode ser selecionada com base em pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, o modo de codificação de previsão do bloco atual, o modo de intraprevisão do bloco atual, se a segunda transformada é aplicada, e se salto de transformada é aplicado a um bloco vizinho.[496] A lookup table for the current block may be selected based on at least one of the current block size, the current block format, the current block prediction coding mode, the current block intraprediction mode, whether the second transform is applied, and whether transform hopping is applied to a neighboring block.
[497] Por exemplo, quando o tamanho do bloco atual é 4 x 4 ou menor ou quando o bloco atual é codificado por interprevisão, a tabela de consulta da Tabela 11 pode ser usada, e quando o tamanho do bloco atual é maior que 4 x 4 ou quando o bloco atual é codificado por intraprevisão, a tabela de consulta da Tabela 12 pode ser usada.[497] For example, when the current block size is 4 x 4 or smaller or when the current block is interprediction encoded, the lookup table in Table 11 can be used, and when the current block size is larger than 4 x 4 or when the current block is intraprediction encoded, the lookup table in Table 12 can be used.
[498] Alternativamente, informações que indicam qualquer uma dentre a pluralidade de tabelas de pesquisa podem ser sinalizadas por meio de um fluxo de bits. O decodificador pode selecionar uma tabela de consulta para o bloco atual com base nas informações.[498] Alternatively, information indicating any of the plurality of lookup tables may be signaled via a bit stream. The decoder may select a lookup table for the current block based on the information.
[499] Como um outro exemplo, o índice atribuído ao candidato de combinação de tipo de transformada pode ser determinado de forma adaptativa com base em pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, o modo de codificação de previsão do bloco atual, o modo de intraprevisão do bloco atual, se a segunda transformada é aplicada, e se salto de transformada é aplicado a um bloco vizinho. Por exemplo, quando o tamanho do bloco atual é 4 x 4, o índice atribuído ao salto de transformada pode ter um valor menor que do índice atribuído ao salto de transformada quando o tamanho do bloco atual é maior que 4 x 4. Especificamente, quando o tamanho do bloco atual é 4 x 4, índice 0 pode ser atribuído ao salto de transformada, e quando o bloco atual é maior que 4 x 4 e menor ou igual a 16 x 16, um índice maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformada. Quando o bloco atual é maior que 16 x 16, um valor máximo (por exemplo, 5) pode ser atribuído ao índice do salto de transformada.[499] As another example, the index assigned to the transform type matching candidate may be adaptively determined based on at least one of the current block size, the current block format, the current block prediction coding mode, the current block intraprediction mode, whether the second transform is applied, and whether transform jumping is applied to a neighboring block. For example, when the current block size is 4 x 4, the index assigned to the transform jumping may have a value less than the index assigned to the transform jumping when the current block size is greater than 4 x 4. Specifically, when the current block size is 4 x 4, index 0 may be assigned to the transform jumping, and when the current block is greater than 4 x 4 and less than or equal to 16 x 16, an index greater than 0 (e.g., index 1) may be assigned to the transform jumping. When the current block is larger than 16 x 16, a maximum value (e.g. 5) can be assigned to the transform jump index.
[500] Alternativamente, quando o bloco atual é codificado por interprevisão, índice 0 pode ser atribuído ao salto de transformada. Quando o bloco atual é codificado por intraprevisão, um índice maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformada.[500] Alternatively, when the current block is interprediction encoded, index 0 may be assigned to the transform jump. When the current block is intraprediction encoded, an index greater than 0 (e.g., index 1) may be assigned to the transform jump.
[501] Alternativamente, quando o bloco atual é um bloco de um tamanho de 4 x 4 codificado por interprevisão, índice 0 pode ser atribuído ao salto de transformada. Por outro lado, quando o bloco atual não é codificado por interprevisão ou o bloco atual é maior que 4 x 4, um índice de um valor maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformada.[501] Alternatively, when the current block is an interprediction-encoded block of size 4 x 4, index 0 may be assigned to the transform jump. Conversely, when the current block is not interprediction-encoded or the current block is larger than 4 x 4, an index of a value greater than 0 (e.g., index 1) may be assigned to the transform jump.
[502] Candidatos de combinação de tipo de transformada diferentes a partir dos candidatos de combinação de tipo de transformada listados nas Tabelas 11 e 12 podem ser definidos e usados. Por exemplo, um candidato de combinação de tipo de transformada pode ser usado, em que salto de transformada é aplicado a qualquer uma dentre a transformada de direção horizontal e a transformada de direção vertical, e um núcleo de transformada como DCT7, DCT8, ou DST2 é aplicado ao outro. Neste momento, se deve ou não usar o salto de transformada como um candidato de tipo de transformada para a direção horizontal ou para a direção vertical pode ser determinado com base em pelo menos um dentre o tamanho (por exemplo, largura e/ou altura), o formato, o modo de codificação de previsão, e o modo de intraprevisão do bloco atual.[502] Transform type combination candidates other than the transform type combination candidates listed in Tables 11 and 12 can be defined and used. For example, a transform type combination candidate can be used in which transform jump is applied to either of the horizontal direction transform and the vertical direction transform, and a transform kernel such as DCT7, DCT8, or DST2 is applied to the other. At this time, whether or not to use transform jump as a transform type candidate for the horizontal direction or for the vertical direction can be determined based on at least one of the size (e.g., width and/or height), the format, the prediction encoding mode, and the intraprediction mode of the current block.
[503] Alternativamente, as informações que indicam se um candidato de tipo de transformada específico está disponível podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, um sinalizador indicando se o salto de transformada pode ser usado como um candidato de tipo de transformada para a direção horizontal e a direção vertical pode ser sinalizado. De acordo com o sinalizador, se um candidato de combinação de tipo de transformada específico está incluído em uma pluralidade de candidatos de combinação de tipo de transformada pode ser determinado.[503] Alternatively, information indicating whether a particular transform type candidate is available may be signaled via a bit stream. For example, a flag indicating whether the transform jump can be used as a transform type candidate for the horizontal direction and the vertical direction may be signaled. Based on the flag, whether a particular transform type combination candidate is included in a plurality of transform type combination candidates may be determined.
[504] Alternativamente, se um candidato de tipo de transformada específico é aplicado ao bloco atual pode ser sinalizado por meio de um fluxo de bits. Por exemplo, sinalizador cu_mts_flag indicando se deve ou não aplicar DCT2 para a direção horizontal e para a direção vertical pode ser sinalizado. Quando o valor de cu_mts_flag é 1, DCT2 pode ser definido como um núcleo de transformada para a direção vertical e para a direção horizontal. Quando o valor de cu_mts_flag é 0, DCT8 ou DST7 pode ser definido como um núcleo de transformada para a direção vertical e para a direção horizontal. Alternativamente, quando o valor de cu_mts_flag é 0, as informações tu_mts_idx especificando qualquer uma dentre a pluralidade de candidatos de combinação de tipo de transformada podem ser sinalizadas.[504] Alternatively, whether a specific transform type candidate is applied to the current block may be signaled via a bit stream. For example, flag cu_mts_flag indicating whether or not to apply DCT2 for the horizontal direction and for the vertical direction may be flagged. When the value of cu_mts_flag is 1, DCT2 may be set as a transform core for both the vertical direction and for the horizontal direction. When the value of cu_mts_flag is 0, DCT8 or DCT7 may be set as a transform core for both the vertical direction and for the horizontal direction. Alternatively, when the value of cu_mts_flag is 0, the tu_mts_idx information specifying any of the plurality of transform type combination candidates may be flagged.
[505] Quando o bloco atual tem um formato não quadrado do qual a largura é maior que a altura ou um formato não quadrado do qual a altura é maior que a largura, a codificação de cu_mts_flag pode ser omitida, e o valor de cu_mts_flag pode ser considerado como 0.[505] When the current block has a non-square shape of which the width is greater than the height or a non-square shape of which the height is greater than the width, the encoding of cu_mts_flag may be omitted, and the value of cu_mts_flag may be assumed to be 0.
[506] O número de candidatos de combinação de tipo de transformada disponíveis pode ser definido diferentemente de acordo com o tamanho, o formato, ou o modo de intraprevisão do bloco atual. Por exemplo, quando o bloco atual tem um formato quadrado, três ou mais candidatos de combinação de tipo de transformada pode ser usado, e quando o bloco atual tem um formato não quadrado, dois candidatos de combinação de tipo de transformada pode ser usado. Alternativamente, quando o bloco atual tem um formato quadrado, apenas candidatos de combinação de tipo de transformada do qual o tipo de transformada para a direção horizontal é diferente a partir do tipo de transformada para a direção vertical podem ser usados entre os candidatos de combinação de tipo de transformada.[506] The number of available transform type combination candidates may be set differently according to the size, shape, or intraprediction mode of the current block. For example, when the current block has a square shape, three or more transform type combination candidates may be used, and when the current block has a non-square shape, two transform type combination candidates may be used. Alternatively, when the current block has a square shape, only transform type combination candidates of which the transform type for the horizontal direction is different from the transform type for the vertical direction may be used among the transform type combination candidates.
[507] Quando existem três ou mais candidatos de combinação de tipo de transformada que o bloco atual pode usar, informações de índice tu_mts_idx indicando um entre os candidatos de combinação de tipo de transformada podem ser sinalizadas. Por outro lado, quando existem dois candidatos de combinação de tipo de transformada que o bloco atual pode usar, sinalizador mts_flag indicando qualquer um dentre os candidatos de combinação de tipo de transformada pode ser sinalizada. A Tabela 13 mostra um processo de informações de codificação para especificar candidatos de combinação de tipo de transformada de acordo com o formato do bloco atual. [TABELA 13] [507] When there are three or more transform type combination candidates that the current block can use, index information tu_mts_idx indicating one among the transform type combination candidates may be flagged. Conversely, when there are two transform type combination candidates that the current block can use, flag mts_flag indicating any one among the transform type combination candidates may be flagged. Table 13 shows a process of encoding information for specifying transform type combination candidates according to the current block format. [TABLE 13]
[508] Índices dos candidatos de combinação de tipo de transformada podem ser rearranjados (ou reordenados) de acordo com o formato do bloco atual. Por exemplo, os índices atribuídos aos candidatos de combinação de tipo de transformada quando o bloco atual tem um formato quadrado podem ser diferentes a partir dos índices atribuídos aos candidatos de combinação de tipo de transformada quando o bloco atual tem um formato não quadrado. Por exemplo, quando o bloco atual tem um formato quadrado, uma combinação de tipo de transformada pode ser selecionada com base na Tabela 14 mostrada abaixo, e quando o bloco atual tem formato não quadrado, uma combinação de tipo de transformada pode ser selecionada com base na Tabela 15 mostrado abaixo. [TABELA 14] [TABELA 15] [508] Indices of transform type combination candidates may be rearranged (or reordered) according to the shape of the current block. For example, the indices assigned to transform type combination candidates when the current block has a square shape may be different from the indices assigned to transform type combination candidates when the current block has a non-square shape. For example, when the current block has a square shape, a transform type combination may be selected based on Table 14 shown below, and when the current block has a non-square shape, a transform type combination may be selected based on Table 15 shown below. [TABLE 14] [TABLE 15]
[509] Um tipo de transformada pode ser determinado com base no número de coeficientes diferentes de zero de direção horizontal ou o número de coeficientes diferentes de zero de direção vertical do bloco atual. Aqui, o número de coeficientes diferentes de zero de direção horizontal indica o número de coeficientes diferentes de zero incluído em um bloco 1 x N (onde N é a largura do bloco atual), e o número de coeficientes diferentes de zero de direção vertical indica o número de coeficientes diferentes de zero incluído em um bloco N x 1 (onde N é a altura do bloco atual). Quando o valor máximo do coeficiente diferente de zero de direção horizontal é menor ou igual a um valor limítrofe, um primeiro tipo de transformada pode ser aplicado na direção horizontal, e quando o valor máximo do coeficiente diferente de zero de direção horizontal é maior que o valor limítrofe, um segundo tipo de transformada pode ser aplicado na direção horizontal. Quando o valor máximo do coeficiente diferente de zero de direção vertical é menor ou igual a um valor limítrofe, o primeiro tipo de transformada pode ser aplicado na direção vertical, e quando o valor máximo do coeficiente diferente de zero de direção vertical é maior que o valor limítrofe, o segundo tipo de transformada pode ser aplicado na direção vertical.[509] A transform type can be determined based on the number of horizontal direction nonzero coefficients or the number of vertical direction nonzero coefficients of the current block. Here, the number of horizontal direction nonzero coefficients indicates the number of nonzero coefficients included in a 1 x N block (where N is the width of the current block), and the number of vertical direction nonzero coefficients indicates the number of nonzero coefficients included in an N x 1 block (where N is the height of the current block). When the maximum value of the horizontal direction nonzero coefficient is less than or equal to a threshold value, a first transform type can be applied in the horizontal direction, and when the maximum value of the horizontal direction nonzero coefficient is greater than the threshold value, a second transform type can be applied in the horizontal direction. When the maximum value of the vertical direction non-zero coefficient is less than or equal to a threshold value, the first type of transform can be applied in the vertical direction, and when the maximum value of the vertical direction non-zero coefficient is greater than the threshold value, the second type of transform can be applied in the vertical direction.
[510] A Figura 38 é uma vista para descrever exemplos de determinação de um tipo de transformada do bloco atual.[510] Figure 38 is a view to describe examples of determining a transform type of the current block.
[511] Por exemplo, quando o bloco atual é codificado por intraprevisão e o valor máximo do coeficiente diferente de zero de direção horizontal do bloco atual é 2 ou menos (consultar a Figura 38 (a)), o tipo de transformada da direção horizontal pode ser determinado como DST7.[511] For example, when the current block is intraprediction encoded and the maximum value of the horizontal direction nonzero coefficient of the current block is 2 or less (see Figure 38(a)), the transform type of the horizontal direction can be determined as DST7.
[512] Quando o bloco atual é codificado por intraprevisão e o valor máximo do coeficiente diferente de zero de direção vertical do bloco atual é maior que 2 (consultar a Figura 38 (b)), DCT2 ou DCT8 pode ser determinado como o tipo de transformada da direção vertical.[512] When the current block is intraprediction coded and the maximum value of the vertical direction nonzero coefficient of the current block is greater than 2 (see Figure 38(b)), DCT2 or DCT8 can be determined as the transform type of the vertical direction.
[513] As informações que indicam se deve ou não determinar explicitamente o tipo de transformada do bloco atual com base nas informações sinalizadas de um fluxo de bits podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações sps_explicit_intra_mts_flag indicando se a determinação de tipo de transformada explícita é permitida para um bloco codificado por intraprevisão e/ou as informações sps_explicit_inter_mts_flag indicando se a determinação de tipo de transformada explícita é permitida para um bloco codificado por interprevisão podem ser sinalizadas em um nível de sequência.[513] Information indicating whether or not to explicitly determine the transform type of the current block based on the flagged information of a bit stream may be flagged via a bit stream. For example, the sps_explicit_intra_mts_flag information indicating whether explicit transform type determination is allowed for an intraprediction-encoded block and/or the sps_explicit_inter_mts_flag information indicating whether explicit transform type determination is allowed for an interprediction-encoded block may be flagged at a sequence level.
[514] Quando a determinação de tipo de transformada explícita é permitida, um tipo de transformada do bloco atual pode ser determinado com base nas informações de índice tu_mts_idx sinalizadas de um fluxo de bits. Por outro lado, quando a determinação de tipo de transformada explícita não é permitida, o tipo de transformada pode ser determinado com base em pelo menos um dentre o tamanho do bloco atual, o formato do bloco atual, se a transformada de uma unidade de sub-bloco é permitida, e a posição de um sub-bloco incluindo um coeficiente de transformada diferente de zero. Por exemplo, o tipo de transformada de direção horizontal do bloco atual pode ser determinado com base na largura do bloco atual, e o tipo de transformada de direção vertical do bloco atual pode ser determinado com base na altura do bloco atual. Por exemplo, quando a largura do bloco atual é menor que 4 ou maior que 16, o tipo de transformada da direção horizontal pode ser determinado como DCT2. De outro modo, o tipo de transformada da direção horizontal pode ser determinado como DST7. Quando a altura do bloco atual é menor que 4 ou maior que 16, o tipo de transformada da direção vertical pode ser determinado como DCT2. De outro modo, o tipo de transformada da direção vertical pode ser determinado como DST7. Aqui, de modo a determinar o tipo de transformada da direção horizontal e o tipo de transformada da direção vertical, valores limítrofes comparados com a largura e a altura podem ser determinados com base em pelo menos um dentre o tamanho, o formato, e o modo de intraprevisão do bloco atual.[514] When explicit transform type determination is allowed, a transform type of the current block may be determined based on the signed tu_mts_idx index information of a bitstream. Conversely, when explicit transform type determination is not allowed, the transform type may be determined based on at least one of the current block size, the current block format, whether transform of a sub-block unit is allowed, and the position of a sub-block including a non-zero transform coefficient. For example, the horizontal direction transform type of the current block may be determined based on the current block width, and the vertical direction transform type of the current block may be determined based on the current block height. For example, when the current block width is less than 4 or greater than 16, the horizontal direction transform type may be determined as DCT2. Otherwise, the horizontal direction transform type may be determined as DST7. When the height of the current block is less than 4 or greater than 16, the vertical transform type can be determined as DCT2. Otherwise, the vertical transform type can be determined as DST7. Here, in order to determine the horizontal transform type and the vertical transform type, threshold values compared to the width and height can be determined based on at least one of the size, shape, and intraprediction mode of the current block.
[515] Alternativamente, quando o bloco atual tem um formato quadrado do qual a altura e a largura são iguais, o tipo de transformada de direção horizontal e o tipo de transformada de direção vertical são definidos para serem iguais, enquanto quando o bloco atual tem um formato não quadrado do qual a altura e a largura são diferentes, o tipo de transformada de direção horizontal e a transformada vertical, o tipo de transformada pode ser definido para ser diferente um do outro. Por exemplo, quando a largura do bloco atual é maior que a altura, o tipo de transformada de direção horizontal pode ser determinado como DST7, e o tipo de transformada de direção vertical pode ser determinado como DCT2. Quando a altura do bloco atual é maior que a largura, o tipo de transformada de direção vertical pode ser determinado como DST7, e o tipo de transformada de direção horizontal pode ser determinado como DCT2.[515] Alternatively, when the current block has a square shape of which the height and width are equal, the horizontal direction transform type and the vertical direction transform type are set to be the same, while when the current block has a non-square shape of which the height and width are different, the horizontal direction transform type and the vertical direction transform type can be set to be different from each other. For example, when the width of the current block is greater than the height, the horizontal direction transform type can be determined as DST7, and the vertical direction transform type can be determined as DCT2. When the height of the current block is greater than the width, the vertical direction transform type can be determined as DST7, and the horizontal direction transform type can be determined as DCT2.
[516] O número e/ou o tipo de candidatos de tipo de transformada ou o número e/ou o tipo de candidatos de combinação de tipo de transformada podem variar de acordo com se a determinação de tipo de transformada explícita é permitida. Por exemplo, quando a determinação de tipo de transformada explícita é permitido, DCT2, DST7, e DCT8 pode ser usada como candidatos de tipo de transformada. Consequentemente, cada um do tipo de transformada de direção horizontal e do tipo de transformada de direção vertical pode ser definido para DCT2, DST8, ou DCT8. Quando a determinação de tipo de transformada explícita não é permitida, apenas DCT2 e DST7 podem ser usados como candidatos de tipo de transformada. Consequentemente, cada um do tipo de transformada de direção horizontal e do tipo de transformada de direção vertical pode ser determinado como DCT2 ou DST7.[516] The number and/or type of transform type candidates or the number and/or type of combination transform type candidates may vary according to whether explicit transform type determination is allowed. For example, when explicit transform type determination is allowed, DCT2, DST7, and DCT8 may be used as transform type candidates. Consequently, each of the horizontal direction transform type and the vertical direction transform type may be set to DCT2, DST8, or DCT8. When explicit transform type determination is not allowed, only DCT2 and DST7 may be used as transform type candidates. Consequently, each of the horizontal direction transform type and the vertical direction transform type may be determined to be DCT2 or DST7.
[517] Quando o codificador realiza transformada e quantização, o decodificador pode adquirir um bloco residual por meio de quantização inversa e transformada inversa. O decodificador pode adquirir um bloco reconstruído para o bloco atual adicionando um bloco de previsão e o bloco residual.[517] When the encoder performs transform and quantization, the decoder can acquire a residual block through inverse quantization and inverse transform. The decoder can acquire a reconstructed block for the current block by adding a prediction block and the residual block.
[518] Quando um bloco reconstruído do bloco atual é adquirido, a perda de informações ocorre no processo de quantização e codificação pode ser reduzida por meio de filtragem em loop. Um filtro in loop pode incluir pelo menos um dentre um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO), e um filtro de loop adaptativo (ALF). Em seguida, um bloco reconstruído antes do filtro in loop ser aplicado é denominado como um primeiro bloco reconstruído, e um bloco reconstruído após o filtro in loop ser aplicado é denominado como um segundo bloco reconstruído.[518] When a reconstructed block of the current block is acquired, information loss occurring in the quantization and coding process can be reduced through in-loop filtering. An in-loop filter may include at least one of a deblocking filter, an adaptive sample shift (SAO) filter, and an adaptive loop filter (ALF). Then, a block reconstructed before the in-loop filter is applied is referred to as a first reconstructed block, and a block reconstructed after the in-loop filter is applied is referred to as a second reconstructed block.
[519] O segundo bloco reconstruído pode ser adquirido aplicando pelo menos um dentre o filtro de desbloqueio, o SAO, e a ALF ao primeiro bloco reconstruído. Neste ponto, o SAO ou a ALF pode ser aplicado após o filtro de desbloqueio ser aplicado.[519] The second reconstructed block can be acquired by applying at least one of the deblocking filter, the SAO, and the ALF to the first reconstructed block. At this point, either the SAO or the ALF can be applied after the deblocking filter is applied.
[520] O filtro de desbloqueio é para mitigar a degradação de qualidade de vídeo (artefato de bloqueio) no limite de um bloco, que ocorre como quantização é realizada em blocos individuais. De modo a aplicar o filtro de desbloqueio, uma resistência de bloco (BS) entre o primeiro bloco reconstruído e um bloco reconstruído vizinho pode ser determinado.[520] The deblocking filter is to mitigate video quality degradation (blocking artifact) at the boundary of a block, which occurs as quantization is performed on individual blocks. In order to apply the deblocking filter, a block resistance (BS) between the first reconstructed block and a neighboring reconstructed block can be determined.
[521] A Figura 39 é um fluxograma que ilustra um processo de determinação de resistência de bloco.[521] Figure 39 is a flowchart illustrating a block strength determination process.
[522] No exemplo mostrado na Figura 39, P denota um primeiro bloco reconstruído, e Q denota um bloco reconstruído vizinho. Aqui, o bloco reconstruído vizinho pode ser um bloco adjacente ao lado esquerdo ou ao lado superior do bloco atual.[522] In the example shown in Figure 39, P denotes a first reconstructed block, and Q denotes a neighboring reconstructed block. Here, the neighboring reconstructed block can be a block adjacent to the left side or the top side of the current block.
[523] No exemplo mostrado na Figura 39, é mostrado que a resistência de bloco é determinada considerando os modos de codificação de previsão de P e Q, se um coeficiente de transformada diferente de zero é incluído, se interprevisão é realizada usando a mesma imagem de referência, e se o valor de diferença de vetores de movimento é maior ou igual a um valor limítrofe.[523] In the example shown in Figure 39, it is shown that the block resistance is determined by considering the P- and Q-prediction coding modes, whether a non-zero transform coefficient is included, whether interprediction is performed using the same reference image, and whether the difference value of motion vectors is greater than or equal to a threshold value.
[524] Se deve ou não aplicar o filtro de desbloqueio pode ser determinado com base na resistência de bloco. Por exemplo, quando a resistência de bloco é 0, a filtragem não pode ser realizada.[524] Whether or not to apply the deblocking filter can be determined based on the block resistance. For example, when the block resistance is 0, filtering cannot be performed.
[525] O SAO é para mitigar um fenômeno de toque (artefato de toque) que ocorre quando a quantização é realizada no domínio de frequência. O SAO pode ser realizado adicionando ou subtraindo um deslocamento determinado considerando o padrão do primeiro vídeo reconstruído. O método de determinar o deslocamento inclui um deslocamento de borda (EO) ou um deslocamento de banda (BO). EO denota um método de determinação de um deslocamento de uma amostra atual de acordo com o padrão de pixels circundantes. BO denota um método de aplicação de um deslocamento comum a um conjunto de pixels com valores de brilho semelhantes em uma região. Especificamente, o brilho do pixel pode ser dividido em 32 seções iguais e os pixels com valores de brilho semelhantes podem ser definidos como um conjunto. Por exemplo, quatro bandas adjacentes entre 32 bandas podem ser definidas como um grupo e o mesmo valor de deslocamento pode ser aplicado às amostras pertencentes às quatro bandas.[525] SAO is intended to mitigate a ringing artifact that occurs when quantization is performed in the frequency domain. SAO can be performed by adding or subtracting an offset determined by considering the pattern of the first reconstructed video. The method for determining the offset includes an edge offset (EO) or a band offset (BO). EO denotes a method of determining an offset of a current sample based on the pattern of surrounding pixels. BO denotes a method of applying a common offset to a set of pixels with similar brightness values within a region. Specifically, the pixel brightness can be divided into 32 equal sections, and the pixels with similar brightness values can be defined as a group. For example, four adjacent bands among 32 bands can be defined as a group, and the same offset value can be applied to the samples belonging to all four bands.
[526] A ALF é um método de geração de um segundo vídeo reconstruído aplicando um filtro que tem um tamanho/formato predefinido ao primeiro vídeo reconstruído ou um vídeo reconstruído ao qual um filtro de desbloqueio foi aplicado. A Equação 16 mostra um exemplo de aplicação da ALF. [EQUAÇÃO 16] [526] ALF is a method of generating a second reconstructed video by applying a filter that has a predefined size/shape to the first reconstructed video or a reconstructed video to which a deblocking filter has been applied. Equation 16 shows an example application of ALF. [EQUATION 16]
[527] Qualquer um dentre os candidatos de filtro predefinidos pode ser selecionado pela unidade de uma imagem, uma unidade de árvore de codificação, um bloco de codificação, um bloco de previsão, ou um bloco de transformada. Cada um dos candidatos de filtro pode ser diferente no tamanho ou no formato.[527] Any of the predefined filter candidates can be selected by an image unit, a coding tree unit, a coding block, a prediction block, or a transform block. Each of the filter candidates can be different in size or shape.
[528] A Figura 40 é uma vista que mostra candidatos de filtro predefinidos.[528] Figure 40 is a view showing predefined filter candidates.
[529] Como mostrado no exemplo da Figura 40, pelo menos um dentre os formatos de diamante de 5 x 5, 7 x 7 e 9 x 9 podem ser selecionados.[529] As shown in the example of Figure 40, at least one of the diamond shapes of 5 x 5, 7 x 7, and 9 x 9 can be selected.
[530] Apenas um formato de diamante de um tamanho de 5 x 5 pode ser usado para um componente croma.[530] Only a diamond shape of a size of 5 x 5 can be used for a chroma component.
[531] A aplicação das modalidades descritas acima com foco em um processo de decodificação ou um processo de codificação para um processo de codificação ou um processo de decodificação está incluída no escopo da presente invenção. A alteração das modalidades descritas em uma ordem predeterminada em uma ordem diferente da ordem descrita também está incluída no escopo da presente invenção.[531] Applying the above-described embodiments focusing on a decoding process or an encoding process to an encoding process or a decoding process is included within the scope of the present invention. Changing the described embodiments in a predetermined order into an order different from the described order is also included within the scope of the present invention.
[532] Embora as modalidades acima tenham sido descritas com base em uma série de etapas ou fluxogramas, isso não limita a ordem da série temporal da presente invenção e pode ser realizada simultaneamente ou em uma ordem diferente, conforme necessário. Além disso, cada um dos componentes (por exemplo, unidades, módulos, etc.) que constituem o diagrama de blocos nas modalidades descritas acima podem ser implementados como um dispositivo de hardware ou software, ou uma pluralidade de componentes podem ser combinados para serem implementados como um único dispositivo de hardware ou software. As modalidades descritas acima podem ser implementadas na forma de comandos de programa que podem ser executados por meio de vários componentes de computador e gravados em uma mídia de gravação legível por computador. O meio de gravação legível por computador pode incluir comandos de programa, arquivos de dados, estruturas de dados e semelhantes, independentemente ou em combinação. O meio de gravação legível por computador inclui, por exemplo, mídia magnética, como um disco rígido, um disquete e uma fita magnética, mídia de gravação óptica, como um CD-ROM e um DVD, mídia magneto-óptica, como um disco flexível, e dispositivos de hardware especialmente configurados para armazenar e executar comandos de programa, como ROM, RAM, memória flash e semelhantes. Os dispositivos de hardware descritos acima podem ser configurados para operar usando um ou mais módulos de software para realizar o processo da presente invenção e vice-versa.[532] Although the above embodiments have been described based on a series of steps or flowcharts, this does not limit the order of the time series of the present invention, and they may be performed simultaneously or in a different order as needed. Furthermore, each of the components (e.g., units, modules, etc.) that constitute the block diagram in the embodiments described above may be implemented as a hardware or software device, or a plurality of components may be combined to be implemented as a single hardware or software device. The embodiments described above may be implemented in the form of program commands that can be executed by multiple computer components and recorded on a computer-readable recording medium. The computer-readable recording medium may include program commands, data files, data structures, and the like, independently or in combination. Computer-readable recording media include, for example, magnetic media such as hard disks, floppy disks, and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floppy disks, and hardware devices specifically configured to store and execute program commands, such as ROM, RAM, flash memory, and the like. The hardware devices described above may be configured to operate using one or more software modules to perform the method of the present invention, and vice versa.
[533] A presente invenção pode ser aplicada a um dispositivo eletrônico que codifica e decodifica um vídeo.[533] The present invention can be applied to an electronic device that encodes and decodes a video.
Claims (8)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR10-2018-0136256 | 2018-11-08 | ||
| KR10-2018-0148948 | 2018-11-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| BR122025007928A2 true BR122025007928A2 (en) | 2025-07-15 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2948265T3 (en) | Image signal encoding/decoding method and apparatus for the same | |
| ES2972076T3 (en) | Image signal encoding/decoding procedure and device for the same | |
| ES2984701T3 (en) | Method for encoding and decoding video signals and apparatus therefor | |
| BR112021008625A2 (en) | video decoding and encoding method and video encoding and decoding apparatus | |
| BR112021008720A2 (en) | video encoding method and video decoding method | |
| BR112021008091A2 (en) | video signal encoding and decoding method and video decoding apparatus | |
| BR112021005175A2 (en) | video decoding method, video encoding method, video decoding apparatus and video encoding apparatus | |
| BR122025007926A2 (en) | VIDEO DECODING METHOD AND VIDEO CODING METHOD | |
| BR122025007928A2 (en) | VIDEO DECODING METHOD AND VIDEO CODING METHOD | |
| BR122025007930A2 (en) | VIDEO DECODING METHOD AND VIDEO CODING METHOD | |
| BR122025007924A2 (en) | VIDEO DECODING METHOD AND VIDEO CODING METHOD | |
| BR122025007573A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122025007578A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122025007560A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122024024714A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122024024712A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122024024710A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122024024709A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122025007564A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODING DEVICE AND VIDEO CODING DEVICE | |
| BR122025000821A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODER AND VIDEO ENCODER | |
| BR122025000828A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODER AND VIDEO ENCODER | |
| BR122025000817A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODER AND VIDEO ENCODER | |
| BR122025000829A2 (en) | VIDEO DECODING METHOD, VIDEO CODING METHOD, VIDEO DECODER AND VIDEO ENCODER |