BR112021013444A2 - Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento - Google Patents

Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento Download PDF

Info

Publication number
BR112021013444A2
BR112021013444A2 BR112021013444-1A BR112021013444A BR112021013444A2 BR 112021013444 A2 BR112021013444 A2 BR 112021013444A2 BR 112021013444 A BR112021013444 A BR 112021013444A BR 112021013444 A2 BR112021013444 A2 BR 112021013444A2
Authority
BR
Brazil
Prior art keywords
current node
block
mode
prediction
node
Prior art date
Application number
BR112021013444-1A
Other languages
English (en)
Inventor
Yin Zhao
Haitao Yang
Jianle Chen
Lian Zhang
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201910696741.0A external-priority patent/CN111669583A/zh
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Priority claimed from PCT/CN2020/070976 external-priority patent/WO2020143684A1/zh
Publication of BR112021013444A2 publication Critical patent/BR112021013444A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)
  • Color Television Image Signal Generators (AREA)
  • Studio Devices (AREA)

Abstract

método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazenamento. um método, aparelho e sistema de predição de imagem, um dispositivo e uma mídia de armazenamento são fornecidos. o método inclui: (401) obter um modo de divisão de um nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; (402) determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição; e (403) quando for determinado que o nó atual satisfaz a primeira condição, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual. de acordo com o método anterior, predição intra é realizada em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. isso melhora desempenho de processamento de predição de imagem, e aumenta uma velocidade de processamento de codificação.

Description

“MÉTODO, APARELHO E SISTEMA DE PREDIÇÃO DE IMAGEM, DISPOSITIVO, E MÍDIA DE ARMAZENAMENTO” CAMPO TÉCNICO
[0001] As modalidades deste pedido referem-se ao campo das tecnologias de codificação de vídeo e, em particular, a um método, aparelho e sistema de predição de imagem, a um dispositivo e a uma mídia de armazenamento.
FUNDAMENTOS
[0002] As capacidades de vídeo digital podem ser incorporadas em uma ampla variedade de aparelhos, incluindo televisões digitais, sistemas de transmissão ao vivo digital, sistemas de transmissão sem fio, assistente digital pessoal (PDA), computadores laptop ou de área de trabalho, computadores tablet, leitores de e-book, câmeras digitais, aparelhos de gravação digital, reprodutores de mídia digital, aparelhos de videogame, consoles de videogame, telefones celulares ou de rádio por satélite (também referidos como “telefones inteligentes”), aparelhos de videoconferência, aparelhos de transmissão de vídeo e semelhantes. Os aparelhos de vídeo digital implementam as tecnologias de compressão de vídeo, por exemplo, as tecnologias de compressão de vídeo descritas em padrões definidos por codificação de vídeo avançada (AVC) MPEG-2, MPEG-4, ITU-T H.263 e ITU-T H.264/MPEG-4 parte 10, a codificação de vídeo padrão H.265/codificação de vídeo de alta eficiência padrão (HEVC) e extensões de tais padrões. Os aparelhos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital, de forma mais eficiente, implementando as tecnologias de compressão de vídeo.
[0003] Com o desenvolvimento das tecnologias de informações, os serviços de vídeo, tais como televisão de alta definição, conferência na web, IPTV e televisão 3D, se desenvolvem rapidamente. Os sinais de vídeo, em virtude de vantagens, tais como intuitividade e alta eficiência, tornam-se a forma mais importante de obter informações no dia a dia das pessoas. Os sinais de vídeo contêm uma grande quantidade de dados e, portanto, ocupam grande largura de banda de transmissão e espaço de armazenamento. Para transmitir e armazenar eficazmente os sinais de vídeo, os sinais de vídeo precisam ser comprimidos e codificados. Uma tecnologia de compressão de vídeo tem se tornado cada vez mais uma tecnologia-chave indispensável no campo da aplicação de vídeo.
[0004] Um processo de codificação inclui principalmente os seguintes estágios: predição intra (Intra Prediction), predição inter (Inter Prediction), transformada (Transform), quantização (Quantization), codificação de entropia (Entropia encode), filtragem in-loop (in-loop filtering) (que é principalmente filtragem de desblocagem, de-blocking filtering) e semelhantes. Predição intra ou predição inter é realizada depois que uma imagem é dividida em blocos de codificação. Em seguida, transformada e quantização são realizadas depois que um residual é obtido. Finalmente, a codificação de entropia é realizada para emitir um fluxo de bits. Neste relatório, um bloco de codificação é um arranjo com um tamanho de M×N pixels (onde M pode ser igual ou diferente de N). Além disso, um valor de um pixel em cada localização de pixel é conhecido. A decodificação de vídeo é um processo inverso da codificação de vídeo. Por exemplo, decodificação de entropia, desquantização e transformada inversa são realizadas primeiro para obter informações residuais; e se predição intra ou predição inter for realizada em um bloco atual são determinadas pela decodificação de um fluxo de bits. Se a codificação intra for realizada, um bloco de predição é construído com base em um valor de pixel de um pixel em uma região reconstruída em torno de uma imagem atual por meio de uso de um método de predição intra. Se a codificação inter for realizada, as informações de movimento precisam ser obtidas através de análise, um bloco de referência é determinado em uma imagem reconstruída com base nas informações de movimento obtidas através de análise e um valor de pixel de um pixel no bloco de referência é usado como um bloco de predição (tal processo é referido como compensação de movimento (Motion compensation, MC)). O bloco de predição e as informações residuais são adicionados e uma operação de filtragem é realizada para obter informações reconstruídas.
[0005] Atualmente, dois nós filhos, cada um com um tamanho de 4×M (ou M×4) são gerados pela divisão de um nó com um tamanho de 8×M (ou M×8) através de divisão de árvore binária vertical (ou divisão de árvore binária horizontal). Similarmente, dois nós filhos, cada um com um tamanho de 4×M (ou M×4) e um nó filho com um tamanho de 8×M (ou M×8) são gerados pela divisão de um nó com um tamanho de 16×M (ou M×16) através de divisão de árvore ternária vertical (ou divisão de árvore ternária horizontal). Para um formato de dados de YUV 4:2:0, uma resolução de um componente de croma é 1/2 de uma resolução de um componente de luma. Em outras palavras, um nó 4×M inclui um bloco de luma 4×M e dois blocos de croma 2×(M/2). Portanto, um bloco de croma pequeno com um tamanho, tal como 2×2, 2×4 ou 4×2, pode ser gerado pela divisão um nó atual em um modo de divisão pré-ajustado. É relativamente complexo para um decodificador de hardware processar o bloco de croma pequeno. A complexidade se reflete, especificamente, nos seguintes três aspectos.
[0006] (1) Predição intra: Para aumentar uma velocidade de processamento, hardware é projetado para geralmente processar 16 pixels por vez durante a predição intra. Entretanto, o bloco de croma pequeno com o tamanho, tal como 2×2, 2×4 ou 4×2, inclui menos do que 16 pixels. Como um resultado, o desempenho do processamento de predição intra se deteriora.
[0007] (2) Codificação de coeficiente: Em HEVC, a codificação do coeficiente de transformada é realizada com base em um grupo de coeficientes (coefficient group, CG) incluindo 16 coeficientes. Entretanto, o bloco de croma pequeno com o tamanho, tal como 2×2, 2×4 ou 4×2, inclui quatro ou oito coeficientes de transformada. Como um resultado, um grupo de coeficientes incluindo quatro coeficientes ou oito coeficientes precisa ser adicionado para suportar a codificação de coeficiente para estes pequenos blocos. Como um resultado, a complexidade da implementação é aumentada.
[0008] (3) Predição inter: Predição inter para os blocos de croma pequenos tem um requisito relativamente alto na largura de banda dos dados.
Como um resultado, uma velocidade no processamento de decodificação é afetada.
SUMÁRIO
[0009] Este pedido fornece um método, aparelho e sistema de predição de imagem, um dispositivo e uma mídia de armazenamento para melhorar o desempenho do processamento de predição de imagem e aumentar a velocidade de processamento de codificação.
[0010] Um primeiro aspecto deste pedido fornece um método de predição de imagem. O método inclui: obter um modo de divisão de um nó atual; e determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, onde o bloco de imagem inclui um bloco de luma ou um bloco de croma; e quando for determinado que o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0011] Opcionalmente, o bloco de imagem com o tamanho predefinido pode ser um bloco de luma com um tamanho menor do que um limite. O limite pode ser uma quantidade de amostras de luma, tais como 128, 64 ou 32, ou uma quantidade de amostras de croma, tais como 32, 16 ou 8. Um tamanho do nó atual pode ser maior do que ou igual ao limite.
[0012] Opcionalmente, realizar a predição intra pode ser a realização de predição por meio de uso de um modo de predição intra comum (modo intra) ou um modo IBC (cópia intra bloco).
[0013] Opcionalmente, todos os blocos de codificação cobertos pelo nó atual são todos os blocos de codificação localizados em uma região correspondente ao nó atual. O bloco de codificação pode ser, alternativamente, uma unidade de codificação (coding unit).
[0014] Opcionalmente, quando um tipo (slice type) de uma fatia em que o nó atual está localizado é um tipo intra (Intra), predição intra, em vez de predição inter, é realizada em todos os blocos de codificação cobertos pelo nó atual.
[0015] Os efeitos benéficos das modalidades deste pedido são como a seguir: Neste pedido, é considerado que um bloco de luma ou um bloco de croma com o tamanho predefinido é obtido por divisão do bloco de imagem correspondente ao nó atual. Se o caso anterior existir, um lado de codificador ou um lado de decodificador realiza predição intra ou predição inter em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual servindo como um nó raiz, para implementar o processamento paralelo para blocos de luma ou blocos de croma com o tamanho predefinido. Isto melhora o desempenho do processamento da predição de imagem e melhora adicionalmente o desempenho de codificação.
[0016] Opcionalmente, os seguintes dois casos referem-se ao bloco de imagem com o tamanho predefinido: um bloco de luma com um primeiro tamanho predefinido e um bloco de croma com um segundo tamanho predefinido. Realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: determinar se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual; ou quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0017] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual pode incluir: quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0018] Com referência ao primeiro aspecto, em uma primeira implementação possível do primeiro aspecto, o bloco de imagem com o tamanho predefinido inclui o bloco de luma com o primeiro tamanho predefinido, e determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão inclui: determinar, com base em um tamanho do nó atual e no modo de divisão do nó atual, se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0019] Opcionalmente, o bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×4 ou 8×8 ou um bloco de luma com uma área de 16 pixels ou 32 pixels.
[0020] Opcionalmente, quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma com o tamanho de pixel de 4×4 ou a área de 16 pixels, a determinação, com base em um tamanho do nó atual e no modo de divisão do nó atual, de se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, pode ser realizada com base em uma das seguintes condições: uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de quadtree; uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore ternária; ou uma quantidade de amostras do bloco de luma do nó atual é 32 e o modo de divisão é a divisão de árvore binária.
[0021] Com referência à primeira implementação possível do primeiro aspecto, opcionalmente, quando for determinado que o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0022] Com referência à primeira implementação possível do primeiro aspecto, opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, o método inclui adicionalmente: determinar se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão; e quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0023] Em conclusão, na primeira implementação anterior, é determinado que predição intra ou predição inter é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual servindo como um nó raiz, de modo que o processamento paralelo para os blocos de luma ou blocos de croma com o tamanho predefinido possam ser implementados. Isto melhora o desempenho do processamento de predição de imagem e melhora adicionalmente o desempenho de codificação.
[0024] Opcionalmente, o bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma 4×4 ou um bloco de luma com uma área de 16 pixels. Quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma 4×4, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de croma com um tamanho de pixel de 2×4 ou 4×2 ou um bloco de croma com uma área de 8 pixels, excluindo um bloco de croma com um tamanho de pixel de 2×2 ou com uma área de 4 pixels.
[0025] Opcionalmente, o bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma 4×4 ou um bloco de luma com uma área de 16 pixels. Quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma 4×4, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×8 ou 8×4 ou um bloco de luma com uma área de 32 pixels, excluindo um bloco de luma com um tamanho de pixel de 4×4 ou com uma área de 16 pixels.
[0026] Opcionalmente, quando o bloco de croma com o segundo tamanho predefinido é um bloco de croma com um tamanho de pixel de 2×4 ou 4×2 ou um bloco de croma com uma área de 8 pixels, ou um bloco de croma com um tamanho de pixel de 4×8 ou 8×4 ou um bloco de luma com uma área de 32 pixels, determinar se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore binária; ou (2) uma quantidade de amostras do bloco de luma do nó atual é 128 e o modo de divisão é a divisão de árvore ternária.
[0027] Com referência ao primeiro aspecto, em uma segunda implementação possível do primeiro aspecto, o bloco de imagem com o tamanho predefinido inclui o bloco de croma com o segundo tamanho predefinido, e determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão inclui: determinar, com base no tamanho do nó atual e no modo de divisão do nó atual, se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0028] Opcionalmente, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de croma com um tamanho de pixel de 2×2, 2×4 ou 4×2, ou um bloco de croma com uma área de 4 pixels ou 8 pixels.
[0029] Opcionalmente, determinar, com base no tamanho do nó atual e no modo de divisão do nó atual, se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode incluir: determinar, com base no tamanho do nó atual e no modo de divisão do nó atual, se um bloco de luma com um terceiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0030] Opcionalmente, o bloco de luma com o terceiro tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×4, 4×8 ou 8×4, ou um bloco de luma com uma área de 16 pixels ou 32 pixels.
[0031] Opcionalmente, determinar se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de quadtree; (2) uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore ternária; (3) uma quantidade de amostras do bloco de luma do nó atual é 32 e o modo de divisão é a divisão de árvore binária; (4) uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore binária; ou (5) uma quantidade de amostras do bloco de luma do nó atual é 128 e o modo de divisão é a divisão de árvore ternária.
[0032] Opcionalmente, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de croma com um tamanho de pixel de 2×4 ou 4×2 ou um bloco de croma com uma área de 8 pixels, excluindo um bloco de croma com um tamanho de pixel de 2×2 ou um bloco de croma com uma área de 4 pixels. Similarmente, o bloco de luma com o terceiro tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×8 ou 8×4 ou um bloco de luma com uma área de 32 pixels, excluindo um bloco de luma com um tamanho de pixel de 4×4 ou um bloco de luma com uma área de 16 pixels.
Correspondentemente, determinar se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore binária; ou (2) uma quantidade de amostras do bloco de luma do nó atual é 128 e o modo de divisão é a divisão de árvore ternária.
[0033] Com referência à primeira implementação ou à segunda implementação, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor,
realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
Esta implementação é usada para um decodificador de vídeo. Um modo de predição usado para todos os blocos de codificação obtidos por divisão ou não divisão do nó atual servindo como um nó raiz é determinado analisando a flag de status de modo de predição a partir de um fluxo de bits. Em comparação à tecnologia convencional, a análise precisa ser realizada apenas uma vez, de modo que uma velocidade de processamento de decodificação de vídeo seja aumentada.
[0034] Opcionalmente, o tipo (slice type) da fatia em que o nó atual está localizado não é o tipo intra (Intra).
[0035] Com referência à primeira implementação ou à segunda implementação, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual é predição inter, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição intra, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual. Opcionalmente, qualquer bloco de codificação é um 1o bloco de codificação de todos os blocos de codificação cobertos pelo nó atual em uma ordem de decodificação. Esta implementação é usada para o decodificador de vídeo. O modo de predição usado para qualquer bloco de codificação do nó atual é analisado a partir do fluxo de bits, e o modo de predição obtido através de análise é usado para predição de todos os blocos de codificação obtidos por divisão ou não divisão do nó atual servindo como um nó raiz. Em comparação à tecnologia convencional, a análise precisa ser realizada apenas uma vez, de modo que a velocidade de processamento de decodificação de vídeo seja aumentada.
[0036] Com referência à segunda implementação, opcionalmente, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: determinar se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual. Nesta implementação, é determinado que predição intra é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual servindo como um nó raiz, de modo que processamento paralelo para o bloco de luma com o primeiro tamanho predefinido e o bloco de croma com o segundo tamanho predefinido possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e melhora adicionalmente o desempenho de codificação.
[0037] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual. Esta implementação é usada para o decodificador de vídeo. Um modo de predição usado para todos os blocos de codificação obtidos por divisão ou não divisão do nó atual servindo como um nó raiz é determinado analisando a flag de status de modo de predição a partir do fluxo de bits. Em comparação à tecnologia convencional, a análise precisa ser realizada apenas uma vez, de modo que a velocidade de processamento de decodificação de vídeo seja aumentada.
[0038] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual é predição inter, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição intra, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual. Esta implementação é usada para o decodificador de vídeo. O modo de predição usado para qualquer bloco de codificação do nó atual é analisado a partir do fluxo de bits, e o modo de predição obtido através de análise é usado para predição de todos os blocos de codificação obtidos por divisão ou não divisão do nó atual servindo como um nó raiz. Em comparação à tecnologia convencional, a análise precisa ser realizada apenas uma vez, de modo que a velocidade de processamento de decodificação de vídeo seja aumentada.
[0039] Opcionalmente, qualquer bloco de codificação é um 1o bloco de codificação de todos os blocos de codificação cobertos pelo nó atual em uma ordem de decodificação.
[0040] Com referência a qualquer um do primeiro aspecto ou das implementações possíveis do primeiro aspecto, em uma terceira implementação possível do primeiro aspecto, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: dividir, no modo de divisão,
o bloco de luma incluído no nó atual, para obter blocos de luma obtidos através de divisão, realizar predição intra nos blocos de luma obtidos através de divisão, usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma; ou dividir, no modo de divisão, o bloco de luma incluído no nó atual, para obter blocos de luma obtidos através de divisão, realizar predição inter nos blocos de luma obtidos através de divisão, dividir, no modo de divisão, o bloco de croma incluído no nó atual, para obter blocos de croma obtidos através de divisão, e realizar predição inter nos blocos de croma obtido através de divisão. Nesta implementação, independente se predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, o bloco de luma do nó atual é sempre dividido; e o bloco de croma do nó atual pode ser dividido no caso do modo de predição inter, mas o bloco de croma do nó atual não é dividido no caso do modo de predição intra. Nesta implementação, o bloco de croma, com o segundo tamanho predefinido, em que predição intra é realizada, não é gerado e, portanto, um caso em que predição intra é realizada em um bloco de croma pequeno é evitado. Isto aumenta uma velocidade de processamento de codificação de vídeo.
[0041] Com referência a qualquer um entre o primeiro aspecto ou as implementações possíveis do primeiro aspecto, em uma quarta implementação possível do primeiro aspecto, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: dividir, no modo de divisão, o bloco de luma incluído no nó atual, para obter blocos de luma obtidos através de divisão, realizar predição intra nos blocos de luma obtidos através de divisão, usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma; ou dividir, no modo de divisão, o bloco de luma incluído no nó atual, para obter blocos de luma obtidos através de divisão, realizar predição inter nos blocos de luma obtidos através de divisão, usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter no bloco de codificação de croma.
Nesta implementação, independente se predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, o bloco de croma do nó atual não é dividido, e o bloco de luma é dividido no modo de divisão do bloco de luma. Nesta implementação, o bloco de croma, com o segundo tamanho predefinido, em que predição intra é realizada, não é gerado e, portanto, um caso em que predição intra é realizada no bloco de croma pequeno é evitado. Isto aumenta a velocidade de processamento de codificação de vídeo.
[0042] Com referência a qualquer um entre o primeiro aspecto ou as implementações possíveis do primeiro aspecto, em uma quinta implementação possível do primeiro aspecto, quando predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual inclui: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente. Nesta implementação, o bloco de luma com o primeiro tamanho predefinido não é gerado no caso de predição inter.
[0043] O nó filho pode ser obtido por divisão do nó atual uma vez, ou pode ser obtido por divisão do nó atual por N vezes, onde N é um número inteiro maior do que 1.
[0044] A política de divisão pode incluir: não realizar a divisão ou, realizar a divisão uma vez ou realizar a divisão por N vezes, onde N é um número inteiro maior do que 1.
[0045] Um segundo aspecto deste pedido fornece um aparelho de predição de imagem. O aparelho inclui: um módulo de obtenção, configurado para obter um modo de divisão de um nó atual; um módulo de julgamento, configurado para determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão, onde o bloco de imagem inclui um bloco de luma ou um bloco de croma; e um módulo de execução, configurado para: quando for determinado que o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0046] Um terceiro aspecto deste pedido fornece um dispositivo de codificação de vídeo, incluindo um processador e uma memória que é configurada para armazenar uma instrução executável do processador. O processador realiza o método, de acordo com o primeiro aspecto deste pedido.
[0047] Um quarto aspecto deste pedido fornece um dispositivo de decodificação de vídeo, incluindo um processador e uma memória que é configurada para armazenar uma instrução executável do processador. O processador realiza o método, de acordo com o primeiro aspecto deste pedido.
[0048] Um quinto aspecto deste pedido fornece um sistema de predição de imagem, incluindo um dispositivo de coleta de vídeo, o dispositivo de codificação de vídeo, de acordo com o terceiro aspecto deste pedido, o dispositivo de decodificação de vídeo, de acordo com o quarto aspecto deste pedido e um dispositivo de exibição. O dispositivo de codificação de vídeo é conectado tanto ao dispositivo de coleta de vídeo quanto ao dispositivo de decodificação de vídeo. O dispositivo de decodificação de vídeo é conectado ao dispositivo de exibição.
[0049] Um sexto aspecto deste pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena um programa de computador, e o programa de computador é executado por um processador para implementar o método, de acordo com o primeiro aspecto deste pedido.
[0050] Um sétimo aspecto deste pedido fornece um método de predição de imagem. O método inclui: obter um modo de divisão de um nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição; e quando for determinado que o nó atual satisfaz a primeira condição, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual.
[0051] O tamanho do nó atual é determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e ao modo de divisão que é usado para obter o nó atual.
[0052] Um tipo de uma fatia (slice) em que o nó atual está localizado é um tipo B ou um tipo P. Deve ser entendido que quando o tipo da fatia (slice) em que o nó atual está localizado é um tipo I, predição intra deve ser realizada, por padrão, em todos os blocos de codificação cobertos pelo nó atual.
[0053] Opcionalmente, determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição pode ser realizada quando o tamanho do nó atual é menor do que ou igual a um limite superior de um tamanho predefinido. O limite superior do tamanho predefinido pode ser 256, 128 ou 64.
[0054] A primeira condição pode incluir:
(1) uma quantidade de amostras de um bloco de luma do nó atual é 64 e o modo de divisão é a divisão de quadtree; (2) uma quantidade de amostras de um bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore ternária; ou (3) uma quantidade de amostras de um bloco de luma do nó atual é 32 e o modo de divisão é a divisão de árvore binária.
[0055] Com referência ao sétimo aspecto, em uma primeira implementação possível do sétimo aspecto, quando for determinado que o nó atual não satisfaz a primeira condição, o método inclui adicionalmente: determinar, com base no modo de divisão do nó atual e no tamanho do nó atual, se o nó atual satisfaz uma segunda condição; e quando for determinado que o nó atual satisfaz a segunda condição, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual, onde o modo de predição é predição intra ou predição inter.
[0056] Determinar, com base no modo de divisão do nó atual e no tamanho do nó atual, se o nó atual satisfaz uma segunda condição pode incluir: determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a segunda condição.
[0057] A segunda condição pode incluir: (1) a quantidade de amostras do bloco de luma do nó atual é 64 e o modo de divisão é a divisão de árvore binária; (2) a quantidade de amostras do bloco de luma do nó atual é 128 e o modo de divisão é a divisão de árvore ternária; (3) a quantidade de amostras do bloco de luma do nó atual é 64, o modo de divisão é a divisão de árvore binária e o formato de croma é 4:2:0; (4) a quantidade de amostras do bloco de luma do nó atual é 128, o modo de divisão é a divisão de árvore ternária e o formato de croma é 4:2:0; ou (5) a largura de um bloco de croma de um nó filho do nó atual é 2.
[0058] Com referência à primeira implementação possível do sétimo aspecto, em uma segunda implementação possível do sétimo aspecto, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual inclui: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
[0059] A flag de status de modo de predição pode ser um elemento de sintaxe analisado durante a divisão de bloco, isto é, um elemento de sintaxe analisado durante a divisão de uma árvore de codificação (coding tree). Quando o elemento de sintaxe é analisado, uma flag de status de modo de predição de unidade de codificação (cu_pred_mode) de uma unidade de codificação em uma região de cobertura do nó atual não pode ser realizado, e um valor da flag de status de modo de predição de unidade de codificação é um valor padrão correspondente ao valor da flag de status de modo de predição.
[0060] Com referência à primeira ou à segunda implementação possível do sétimo aspecto, em uma terceira implementação possível do sétimo aspecto, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual inclui: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual e realizar predição inter no bloco de codificação correspondente.
[0061] Se for restrito que apenas predição inter é realizada no nó filho e uma quantidade de amostras de luma do nó filho é 32 (ou um produto da largura e da altura do nó é 32), divisão de árvore binária (incluindo divisão de árvore binária horizontal ou divisão de árvore binária vertical) não é permitida para o nó filho. Se for restrito que apenas predição inter é realizada no nó filho e uma quantidade de amostras de luma do nó filho é 64 (ou um produto da largura e da altura do nó é 64), divisão de árvore ternária (incluindo divisão de árvore ternária horizontal ou divisão de árvore ternária vertical) não é permitida para o nó filho. Tal método de determinação é aplicável tanto aos formatos de dados de vídeo de YUV 4:2:0 quanto de YUV 4:2:2.
[0062] Por exemplo, se o tamanho do nó atual for 8×8 e dois nós 8×4 (ou 4×8) forem gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, a divisão de árvore binária vertical (ou divisão de árvore binária horizontal) não é permitida para o nó 8×4 (ou 4×8) ou o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido. Para outro exemplo, se a quantidade de amostras do bloco de luma do nó atual for 128, e o modo de divisão for a divisão de árvore ternária horizontal ou divisão de árvore ternária vertical, pode ser obtido que a quantidade de amostras do bloco de luma é 64. Entretanto, se divisão de árvore ternária horizontal ou divisão de árvore ternária vertical para um nó filho for usada para o nó de luma com a quantidade de amostras de 64, blocos de luma 4×4 são obtidos. Portanto, quando for restrito que apenas predição inter é realizada, divisão de árvore ternária horizontal ou divisão de árvore ternária vertical não é permitida para o nó com a quantidade de amostras de 64 ou o nó com a quantidade de amostras de 64 não é permitido ser adicionalmente dividido.
[0063] Com referência a qualquer um do sétimo aspecto ou às implementações possíveis anteriores do sétimo aspecto, em um quarta implementação possível do sétimo aspecto, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual inclui: dividir um bloco de luma incluído no nó atual no modo de divisão, para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar um bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
[0064] Um oitavo aspecto deste pedido fornece um método de predição de imagem. O método inclui: obter um modo de divisão de um nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma condição predefinida; e quando for determinado que o nó atual satisfaz a condição predefinida, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual, onde o modo de predição é predição intra ou predição inter.
[0065] O tamanho do nó atual pode ser determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e ao modo de divisão que é usado para obter o nó atual.
[0066] Determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma condição predefinida pode incluir: determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a condição predefinida.
[0067] A condição predefinida pode incluir: (1) uma quantidade de amostras de um bloco de luma do nó atual é
64 e o modo de divisão é a divisão de árvore binária; ou (2) uma quantidade de amostras de um bloco de luma do nó atual é 128 e o modo de divisão é a divisão de árvore ternária.
[0068] Com referência ao oitavo aspecto, em uma primeira implementação possível do oitavo aspecto, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual inclui: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
[0069] Com referência ao oitavo aspecto ou à primeira implementação possível do oitavo aspecto, em uma segunda implementação possível do oitavo aspecto, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual inclui: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente.
[0070] Se for restrito que apenas predição inter é realizada no nó filho e uma quantidade de amostras de luma do nó filho é 32 (ou um produto da largura e da altura do nó é 32), divisão de árvore binária (incluindo divisão de árvore binária horizontal ou divisão de árvore binária vertical) não é permitida para o nó filho. Se for restrito que apenas predição inter é realizada no nó filho e uma quantidade de amostras de luma do nó filho é 64 (ou um produto da largura e da altura do nó é 64), divisão de árvore ternária (incluindo divisão de árvore ternária horizontal ou divisão de árvore ternária vertical) não é permitida para o nó filho. Tal método de determinação é aplicável tanto aos formatos de dados de vídeo de YUV 4:2:0 quanto de YUV 4:2:2.
[0071] Por exemplo, se o tamanho do nó atual for 8×8 e dois nós 8×4 (ou 4×8) forem gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, divisão de árvore binária vertical (ou divisão de árvore binária horizontal) não é permitida para o nó 8×4 (ou 4×8) ou o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido. Para outro exemplo, se a quantidade de amostras do bloco de luma do nó atual for 128, e o modo de divisão for a divisão de árvore ternária horizontal ou divisão de árvore ternária vertical, pode ser obtido que a quantidade de amostras do bloco de luma é 64. Entretanto, se divisão de árvore ternária horizontal ou divisão de árvore ternária vertical para um nó filho for usada para o nó de luma com a quantidade de amostras de 64, blocos de luma 4×4 são obtidos. Portanto, quando for restrito que apenas predição inter é realizada, divisão de árvore ternária horizontal ou divisão de árvore ternária vertical não é permitida para o nó com a quantidade de amostras de 64 ou o nó com a quantidade de amostras de 64 não é permitido ser adicionalmente dividido.
[0072] Um nono aspecto deste pedido fornece um método de predição de imagem. O método inclui: determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, um modo de divisão que não é permitido para o nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unidade) em uma imagem atual; determinar uma política de divisão de bloco do nó atual com base no modo de divisão que não é permitido para o nó atual; e obter, de acordo com a política de divisão de bloco do nó atual, um bloco de codificação correspondente ao nó atual, e realizar predição inter no bloco de codificação correspondente.
[0073] O tamanho do nó atual pode ser determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e ao modo de divisão que é usado para obter o nó atual.
[0074] Com referência ao nono aspecto, em uma primeira implementação possível do nono aspecto, determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, o modo de divisão que não é permitido para o nó atual inclui: determinar se apenas um modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se uma quantidade de amostras de um bloco de luma do nó atual é 32; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e é determinado que a quantidade de amostras do bloco de luma do nó atual é 32, determinar que a divisão de árvore binária é o modo de divisão que não é permitido para o nó atual.
[0075] Com referência ao nono ou à primeira implementação possível do nono aspecto, em uma segunda implementação possível do nono aspecto, determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, o modo de divisão que não é permitido para o nó atual inclui: determinar se apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se a quantidade de amostras do bloco de luma do nó atual é 64; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e é determinado que a quantidade de amostras do bloco de luma do nó atual é 64, determinar que a divisão de árvore ternária é o modo de divisão que não é permitido para o nó atual.
[0076] Um décimo aspecto deste pedido fornece um aparelho de predição de imagem. O aparelho inclui: um módulo de obtenção, configurado para obter um modo de divisão de um nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; um módulo de julgamento, configurado para determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição; e um módulo de execução, configurado para: quando for determinado que o nó atual satisfaz a primeira condição, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual.
[0077] Com referência ao décimo aspecto, em uma primeira implementação possível do décimo aspecto, o módulo de julgamento é adicionalmente configurado para: quando for determinado que o nó atual não satisfaz a primeira condição, determinar, com base no modo de divisão do nó atual e no tamanho do nó atual, se o nó atual satisfaz uma segunda condição; e o módulo de execução é adicionalmente configurado para: quando for determinado que o nó atual satisfaz a segunda condição, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual, onde o modo de predição é predição intra ou predição inter.
[0078] O módulo de julgamento pode ser configurado para: determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a segunda condição.
[0079] Com referência à primeira implementação possível do décimo aspecto, em uma segunda implementação possível do décimo aspecto, o módulo de execução é configurado para: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
[0080] Com referência à primeira ou à segunda implementação possível do décimo aspecto, em uma terceira implementação possível do décimo aspecto, o módulo de execução é configurado para: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente.
[0081] Com referência a qualquer um do décimo aspecto ou às implementações possíveis do décimo aspecto, em uma quarta implementação possível do décimo aspecto, o módulo de execução é configurado para: dividir, no modo de divisão, um bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar um bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
[0082] Um décimo primeiro aspecto deste pedido fornece um aparelho de predição de imagem. O aparelho inclui: um módulo de obtenção, configurado para obter um modo de divisão de um nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; um módulo de julgamento, configurado para determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma condição predefinida; e um módulo de execução, configurado para: quando for determinado que o nó atual satisfaz a condição predefinida, realizar, por meio de uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual para obter preditores de todos os blocos de codificação pertencentes ao nó atual, onde o modo de predição é predição intra ou predição inter.
[0083] O módulo de julgamento pode ser configurado para determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a condição predefinida.
[0084] Com referência ao décimo primeiro aspecto, em uma primeira implementação possível do décimo primeiro aspecto, o módulo de execução é configurado para: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
[0085] Com referência ao décimo primeiro aspecto ou à primeira implementação possível do décimo primeiro aspecto, em uma segunda implementação possível do décimo primeiro aspecto, o módulo de execução é configurado para: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente.
[0086] Um décimo segundo aspecto deste pedido fornece um aparelho de predição de imagem. O aparelho inclui: uma unidade de determinação, configurada para determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, um modo de divisão que não é permitido para o nó atual, onde o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual, onde a unidade de determinação é adicionalmente configurada para: determinar uma política de divisão de bloco do nó atual com base no modo de divisão que não é permitido para o nó atual; e uma unidade de predição, configurada para obter, de acordo com a política de divisão de bloco do nó atual, um bloco de codificação correspondente ao nó atual, e realizar predição inter no bloco de codificação correspondente.
[0087] Com referência ao décimo segundo aspecto, em uma primeira implementação possível do décimo segundo aspecto, a unidade de determinação é configurada para: determinar se apenas um modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se uma quantidade de amostras de um bloco de luma do nó atual é 32; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e é determinado que a quantidade de amostras do bloco de luma do nó atual é 32, determinar que a divisão de árvore binária é o modo de divisão que não é permitido para o nó atual.
[0088] Com referência ao décimo segundo aspecto ou à primeira implementação possível do décimo segundo aspecto, em uma segunda implementação possível do décimo segundo aspecto, a unidade de determinação é configurada para: determinar se apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se a quantidade de amostras do bloco de luma do nó atual é 64; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e é determinado que a quantidade de amostras do bloco de luma do nó atual é 64, determinar que a divisão de árvore ternária é o modo de divisão que não é permitido para o nó atual.
[0089] Para padrões e implementações do sétimo aspecto, o oitavo aspecto e o nono aspecto deste pedido, referem-se aos padrões e implementações do método no primeiro aspecto.
[0090] O método no sétimo aspecto deste pedido pode ser realizado pelo aparelho no décimo aspecto deste pedido. Para funcionalidades do aparelho e diferentes implementações do aparelho no décimo aspecto deste pedido, consultar os padrões e implementações do método no sétimo aspecto deste pedido.
[0091] O método no oitavo aspecto deste pedido pode ser realizado pelo aparelho no décimo primeiro aspecto deste pedido. Para funcionalidades do aparelho e diferentes implementações do aparelho no décimo primeiro aspecto deste pedido, consultar os padrões e implementações do método no oitavo aspecto deste pedido.
[0092] O método no nono aspecto deste pedido pode ser realizado pelo aparelho no décimo segundo aspecto deste pedido. Para funcionalidades do aparelho e diferentes implementações do aparelho no décimo segundo aspecto deste pedido, consultar os padrões e implementações do método no nono aspecto deste pedido.
[0093] Um décimo terceiro aspecto deste pedido fornece um aparelho de decodificação de fluxo de vídeo, incluindo um processador e uma memória.
A memória armazena uma instrução e a instrução permite que o processador realize o método, de acordo com o sétimo aspecto, o oitavo aspecto ou o nono aspecto.
[0094] Um décimo quarto aspecto deste pedido fornece um aparelho de codificação de fluxo de vídeo, incluindo um processador e uma memória. A memória armazena uma instrução e a instrução permite que o processador realize o método, de acordo com o sétimo aspecto, o oitavo aspecto ou o nono aspecto.
[0095] Um décimo quinto aspecto deste pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena uma instrução e quando a instrução é executada, um ou mais processadores são habilitados para codificar dados de vídeo. A instrução permite que um ou mais processadores realize qualquer um do sétimo aspecto, do oitavo aspecto, do nono aspecto ou as implementações possíveis do sétimo aspecto, do oitavo aspecto ou do nono aspecto.
[0096] Um décimo sexto aspecto deste pedido fornece um programa de computador incluindo código de programa. Quando o código de programa é executado em um computador, o método em qualquer um do sétimo aspecto, do oitavo aspecto, do nono aspecto ou as implementações possíveis do sétimo aspecto, do oitavo aspecto ou do nono aspecto é realizado.
[0097] Um décimo sétimo aspecto deste pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena um fluxo de bits e o fluxo de bits porta uma flag de status de modo de predição de um nó atual de uma árvore de codificação atual. Quando um valor da flag de status de modo de predição for um primeiro valor, isto indica que um modo de predição inter é usado para todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, isto indica que um modo de predição intra é usado para todos os blocos de codificação pertencentes ao nó atual.
[0098] Deve ser entendido que as soluções técnicas no segundo aspecto ao décimo sétimo aspecto deste pedido são compatíveis com a solução técnica no primeiro aspecto deste pedido e os efeitos benéficos obtidos pelos aspectos e implementações viáveis correspondentes são similares. Os detalhes não são descritos novamente.
[0099] Os detalhes de uma ou mais modalidades são descritos nos desenhos anexos e nas seguintes descrições.
[0100] Este pedido fornece o método, aparelho e sistema de predição de imagem, o dispositivo e a mídia de armazenamento. O método inclui: obter o modo de divisão do nó atual, e determinar se o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, onde o bloco de imagem inclui o bloco de luma ou o bloco de croma. Quando o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra ou predição inter é realizada em todos os blocos de codificação do nó atual, de modo que processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
BREVE DESCRIÇÃO DOS DESENHOS
[0101] A FIG. 1A é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo 10 para implementar uma modalidade deste pedido;
[0102] A FIG. 1B é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo 40 para implementar uma modalidade deste pedido;
[0103] A FIG. 2 é um diagrama de bloco de uma estrutura de exemplo de um codificador 20 para implementar uma modalidade deste pedido;
[0104] A FIG. 3 é um diagrama de bloco de uma estrutura de exemplo de um decodificador 30 para implementar uma modalidade deste pedido;
[0105] A FIG. 4 é um diagrama de bloco de um exemplo de um dispositivo de codificação de vídeo 400 para implementar uma modalidade deste pedido;
[0106] A FIG. 5 é um diagrama de bloco de outro exemplo de um aparelho de codificação ou um aparelho de decodificação para implementar uma modalidade deste pedido;
[0107] A FIG. 6(a) à FIG. 6(g) são diagramas de blocos esquemáticos de modos de divisão de bloco para implementar uma modalidade deste pedido;
[0108] A FIG. 7 é um diagrama de bloco esquemático de predição intra para implementar uma modalidade deste pedido;
[0109] A FIG. 8 é um diagrama de bloco esquemático de um sistema de comunicações de vídeo para implementar uma modalidade deste pedido;
[0110] A FIG. 9 é um fluxograma esquemático de um primeiro método de predição de imagem, de acordo com uma modalidade deste pedido;
[0111] A FIG. 10 é um fluxograma esquemático de um segundo método de predição de imagem, de acordo com uma modalidade deste pedido;
[0112] A FIG. 11 é um fluxograma esquemático de um terceiro método de predição de imagem, de acordo com uma modalidade deste pedido;
[0113] A FIG. 12 é um fluxograma esquemático de um quarto método de predição de imagem, de acordo com uma modalidade deste pedido;
[0114] A FIG. 13 é um fluxograma esquemático de um quinto método de predição de imagem, de acordo com uma modalidade deste pedido;
[0115] A FIG. 14 é um fluxograma esquemático de um sexto método de predição de imagem, de acordo com uma modalidade deste pedido;
[0116] A FIG. 15 é um diagrama estrutural esquemático de funções de um aparelho de predição de imagem, de acordo com uma modalidade deste pedido;
[0117] A FIG. 16 é um diagrama estrutural esquemático de hardware de um dispositivo de codificação de vídeo, de acordo com uma modalidade deste pedido;
[0118] A FIG. 17 é um diagrama estrutural esquemático de hardware de um dispositivo de decodificação de vídeo, de acordo com uma modalidade deste pedido; e
[0119] A FIG. 18 é um diagrama estrutural esquemático de um sistema de predição de imagem, de acordo com uma modalidade deste pedido.
DESCRIÇÃO DAS MODALIDADES
[0120] O seguinte descreve as modalidades deste pedido com referência aos desenhos anexos nas modalidades deste pedido. Nas seguintes descrições, a referência será feita aos desenhos anexos que constituem uma parte desta revelação e mostram, através de ilustração, aspectos específicos das modalidades deste pedido ou específico aspectos em que as modalidades deste pedido podem ser usadas. Deve ser entendido que as modalidades deste pedido podem ser usadas em outros aspectos, e pode incluir alterações estruturais ou lógicas não representadas nos desenhos anexos. Portanto, as seguintes descrições detalhadas não devem ser interpretadas como limitativas, e o escopo deste pedido é definido pelas reivindicações anexas. Por exemplo, deve ser entendido que o conteúdo revelado com referência a um método descrito também pode ser verdadeiro para um dispositivo correspondente ou sistema configurado para realizar o método e vice-versa. Por exemplo, se uma ou mais etapas do método específico forem descritas, um dispositivo correspondente pode incluir uma ou mais unidades, tais como unidades funcionais para realizar uma ou mais etapas do método descrito (por exemplo, uma unidade realiza uma ou mais etapas; ou cada uma de uma pluralidade de unidades realiza uma ou mais da pluralidade de etapas), mesmo se tal ou mais unidades não forem explicitamente descritas ou ilustradas nos desenhos anexos.
Além disso, por exemplo, se um aparelho específico for descrito com base em uma ou mais unidades, tais como um unidade funcional, um método correspondente pode incluir uma etapa usada para realizar uma funcionalidade ou as funcionalidades de uma ou mais unidades (por exemplo, uma etapa usada para realizar uma funcionalidade ou as funcionalidades de uma ou mais unidades; ou cada uma de uma pluralidade de etapas é usada para realizar uma funcionalidade ou as funcionalidades de uma ou mais unidades em uma pluralidade de unidades), mesmo se tal ou uma pluralidade de etapas não são for explicitamente descrita ou ilustrada nos desenhos anexos. Além disso, deve ser entendido que as características das várias modalidades de exemplo e/ou aspectos descritos neste relatório descritivo podem ser combinadas entre si, a menos que de outro modo especificado.
[0121] A codificação de vídeo, tipicamente, se refere ao processamento de uma sequência de imagens, onde a sequência de imagens forma um vídeo ou uma sequência de vídeos. No campo da codificação de vídeo, os termos “fotografia (picture)”, “quadro (frame)” e “imagem (image)” podem ser usados como sinônimos. A codificação de vídeo usada neste relatório descritivo se refere à codificação de vídeo ou à decodificação de vídeo. A codificação de vídeo é realizada em um lado de origem e, tipicamente, inclui o processamento (por exemplo, por compressão) uma imagem de vídeo original para reduzir uma quantidade de dados para representar a imagem de vídeo, para armazenamento e/ou transmissão mais eficaz. A decodificação de vídeo é realizada em um lado de destino e, tipicamente, inclui o processamento inverso em comparação ao processamento do codificador, para reconstruir a imagem de vídeo.
“Codificação” de uma imagem de vídeo nas modalidades deve ser entendida como “codificação” ou “decodificação” de uma sequência de vídeos. Uma combinação de uma parte de codificação e uma parte de decodificação também é referida como CODEC (encoding e decoding).
[0122] Uma sequência de vídeos inclui uma série de imagens (picture), a imagem é dividida adicionalmente em fatias (slice), e a fatia é dividida adicionalmente em blocos (block). O processamento de codificação de vídeo é realizado por blocos. Em alguns novos padrões de codificação de vídeo, o conceito “bloco” é estendido adicionalmente. Por exemplo, um macrobloco pode ser adicionalmente dividido em uma pluralidade de blocos de predição (partição) para codificação de predição. Alternativamente, os conceitos básicos, tais como uma unidade de codificação (coding unit, CU), uma unidade de predição (prediction unit, PU) e uma unidade de transformada (transform unit, TU), são usados, uma pluralidade de unidades de bloco é obtida através de divisão funcional, e uma nova estrutura com base em árvore é usada para descrição.
Por exemplo, uma CU pode ser dividida em menores CUs através de divisão de quadtree, e a menor CU pode ser dividida adicionalmente para formar uma estrutura de quadtree. Uma CU é uma unidade básica para divisão e codificação de uma imagem de codificação. Para a PU e a TU, também pode haver estruturas de árvore similares. A PU pode corresponder a um bloco de predição, e é uma unidade básica para codificação de predição. A CU é particionada adicionalmente em uma pluralidade de PUs em um modo de partição. A TU pode corresponder a um bloco de transformada, e é uma unidade básica para transformar um residual de predição. Entretanto, todas as CU, PU e TU são conceitos de blocos (ou blocos de imagens) em essência.
[0123] Uma CTU é dividida em uma pluralidade de CUs por meio de uso de uma estrutura de quadtree representada como uma árvore de codificação. Uma decisão em codificar uma região de imagem através de predição imagem inter (temporal) ou imagem intra (espacial) é feita em uma profundidade de CU. Cada CU pode ser particionada adicionalmente em uma, duas ou quatro PUs em um padrão de particionamento de PU. Dentro de uma PU, um mesmo processo de predição é aplicado e informações relacionadas são transmitidas para um decodificador em uma base de PU. Depois de obter um bloco residual aplicando o processo de predição com base no padrão de particionamento de PU, a CU pode ser particionada em unidades de transformada (transform unit, TU) com base em outra estrutura de quadtree similar à árvore de codificação usada para a CU. No desenvolvimento recente de tecnologias de compressão de vídeo, um quadro de partição de quadtree mais árvore binária (Quad-tree and binary tree, QTBT) é usado para particionar um bloco de codificação. Em uma estrutura de bloco de QTBT, a CU pode ser quadrada ou retangular.
[0124] Neste relatório descritivo, para facilidade da descrição e entendimento, um bloco de imagem a ser codificado em uma imagem de codificação atual pode ser referido como um bloco atual. Por exemplo, na codificação, o bloco atual é um bloco que está sendo codificado atualmente; e na decodificação, o bloco atual é um bloco que está sendo decodificado atualmente. Um bloco de imagem decodificado, em uma imagem de referência, usada para predizer o bloco atual é referido como um bloco de referência. Em outras palavras, o bloco de referência é um bloco que fornece um sinal de referência para o bloco atual, e o sinal de referência representa um valor de pixel no bloco de imagem. Um bloco que fornece um sinal de predição para o bloco atual na imagem de referência pode ser referido como um bloco de predição e o sinal de predição representa um valor de pixel, um valor de amostra ou um sinal de amostra no bloco de predição. Por exemplo, um bloco de referência ideal é encontrado depois de uma pluralidade de blocos de referência ser atravessada, o bloco de referência ideal fornece predição para o bloco atual e este bloco é referido como um bloco de predição.
[0125] Em um caso de codificação de vídeo sem perdas, uma imagem de vídeo original pode ser reconstruída. Em outras palavras, uma imagem de vídeo reconstruída tem a mesma qualidade que a imagem de vídeo original (assumindo que nenhuma perda de transmissão ou outra perda de dados ocorra durante o armazenamento ou transmissão). Em um caso de codificação de vídeo com perdas, a compressão adicional é realizada através de, por exemplo, quantização, para reduzir uma quantidade de dados necessária para representar uma imagem de vídeo, e a imagem de vídeo não pode ser completamente reconstruída em um lado de decodificador. Em outras palavras, a qualidade de uma imagem de vídeo reconstruída é menor ou pior do que a da imagem de vídeo original.
[0126] Vários padrões de codificação de vídeo H.261 são usados para “codificação de vídeo híbrida com perdas” (isto é, predição espacial e temporal em um domínio de amostra é combinada com codificação de transformada 2D para aplicar quantização em um domínio de transformada). Cada imagem de uma sequência de vídeos é, tipicamente, particionada em um conjunto de blocos não sobrepostos, e a codificação é, tipicamente, realizada em um bloco nível.
Em outras palavras, em um lado de codificador, um vídeo é, tipicamente, processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por meio de uso de predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição de um bloco atual (um bloco que está sendo processado atual ou a ser processado) para obter um bloco residual, e transformar o bloco residual e quantizar o bloco residual no domínio de transformada para reduzir uma quantidade de dados a ser transmitido (comprimida), enquanto no lado de decodificador, o processamento inverso em comparação ao processamento do codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica um loop de processamento de decodificador, de modo que o codificador e o decodificador gerem predição idêntica (por exemplo, predição intra e predição inter) e/ou reconstrução para processamento, isto é, codificação, de blocos de subsequentes.
[0127] O seguinte descreve uma arquitetura de sistema à qual uma modalidade deste pedido é aplicada. A FIG. 1A é um diagrama de bloco esquemático de um exemplo de um sistema de codificação de vídeo 10 ao qual uma modalidade deste pedido é aplicada. Como mostrado em FIG. 1A, o sistema de codificação de vídeo 10 pode incluir um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados e, portanto, o dispositivo de origem 12 pode ser referido como um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de origem 12 e, portanto, o dispositivo de destino 14 pode ser referido como um aparelho de decodificação de vídeo. O dispositivo de origem 12, o dispositivo de destino 14 ou várias soluções de implementação do dispositivo de origem 12 ou do dispositivo de destino 14, pode incluir um ou mais processadores e uma memória acoplada a um ou mais processadores. A memória pode incluir, mas não é limitada a uma RAM, uma ROM, uma EEPROM, uma memória flash ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado em uma forma de uma instrução ou uma estrutura de dados acessível por um computador, como descrito neste relatório descritivo. O dispositivo de origem 12 e o dispositivo de destino 14 pode incluir vários aparelhos, incluindo um computador de área de trabalho, um aparelho de computação móvel, um computador notebook (por exemplo, um laptop), um computador tablet, um conversor de televisão, um telefone portátil, tal como um “telefone inteligente”, um conjunto de televisões, uma câmera, um aparelho de exibição, um reprodutor de mídia digital, um console videogame, um computador no veículo, um dispositivo de comunicações sem fio ou um aparelho similar.
[0128] Embora a FIG. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem incluir ambas as funcionalidades: o dispositivo de origem 12 ou uma funcionalidade correspondente e o dispositivo de destino 14 ou uma funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados por meio de uso do mesmo hardware e/ou software ou por meio de uso de hardware e/ou software separado ou qualquer combinação do mesmo.
[0129] Uma conexão de comunicação entre o dispositivo de origem 12 e o dispositivo de destino 14 pode ser implementada através de um enlace 13, e o dispositivo de destino 14 pode receber os dados de vídeo codificados do dispositivo de origem 12 através do enlace 13. O enlace 13 pode incluir uma ou mais mídias ou aparelhos capazes de mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o enlace 13 pode incluir uma ou mais mídias de comunicações que permitem que o dispositivo de origem 12 transmita diretamente os dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados, de acordo com um padrão de comunicação (por exemplo, um protocolo de comunicação sem fio), e pode transmitir dados de vídeo modulados para o dispositivo de destino 14. Uma ou mais mídias de comunicações podem incluir uma mídia de comunicações sem fio e/ou uma mídia de comunicações com fio, por exemplo, um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. Uma ou mais mídias de comunicações podem constituir uma parte de uma rede com base em pacote, e a rede com base em pacote é, por exemplo, uma rede de área local, uma rede de área ampla ou uma rede geral (por exemplo, a internet). Uma ou mais mídias de comunicações podem incluir um roteador, um comutador, uma estação base ou outro dispositivo que facilite a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0130] O dispositivo de origem 12 inclui um codificador 20 e, opcionalmente, o dispositivo de origem 12 pode incluir adicionalmente uma fonte de imagem 16, um pré-processador de imagem 18 e uma interface de comunicações 22. Em uma forma de implementação específica, o codificador 20, a fonte de imagem 16, o pré-processador de imagem 18 e a interface de comunicações 22 podem ser componentes de hardware no dispositivo de origem 12 ou podem ser programas de software no dispositivo de origem 12. As descrições separadas são como a seguir.
[0131] A fonte de imagem 16 pode incluir ou ser qualquer tipo de dispositivo de captura de imagem configurado para, por exemplo, captura de uma imagem do mundo real; e/ou qualquer tipo de dispositivo para gerar uma imagem ou comentário (para codificação de conteúdo de display, algum texto em um display também é considerado como uma parte de uma fotografia ou imagem a ser processada), por exemplo, um processador de gráfico de computador configurado para gerar uma imagem de animação por computador; ou qualquer tipo de dispositivo configurado para obter e/ou fornecer uma imagem do mundo real ou uma imagem de animação por computador (por exemplo, conteúdo de display ou uma imagem de realidade virtual (virtual reality, VR)); e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (augmented reality, AR)). A fonte de imagem 16 pode ser uma câmera configurada para capturar uma imagem ou uma memória configurada para armazenar uma imagem. A fonte de imagem 16 pode incluir adicionalmente qualquer tipo de inferface (interna ou externa) para armazenar uma imagem previamente capturada ou gerada e/ou para obter ou receber uma imagem.
Quando a fonte de imagem 16 é uma câmera, a fonte de imagem 16 pode ser, por exemplo, uma câmera local ou uma câmera integrada, integrada no dispositivo de origem. Quando a fonte de imagem 16 é uma memória, a fonte de imagem 16 pode ser, por exemplo, uma memória local ou uma memória integrada, integrada no dispositivo de origem. Quando a fonte de imagem 16 inclui uma interface, a interface pode ser, por exemplo, uma interface externa para receber uma imagem de uma fonte de vídeo externa. A fonte de vídeo externa é, por exemplo, um dispositivo de captura de imagem externo, tal como uma câmera, uma memória externa ou um dispositivo de geração de imagem externo. O dispositivo de geração de imagem externo é, por exemplo, um processador de gráfico de computador externo, um computador ou um servidor.
A interface pode ser qualquer tipo de interface, por exemplo, uma interface com fio ou sem fio ou uma interface óptica, de acordo com qualquer protocolo de interface patenteado ou padronizado.
[0132] Uma imagem pode ser considerada como um arranjo bidimensional ou matriz de elementos de imagem (picture element). O elemento de imagem no arranjo também pode ser referido como uma amostra. Uma quantidade de amostras nas direções horizontal e vertical (ou eixos) do arranjo ou da imagem define um tamanho e/ou uma resolução da imagem. Para a representação de uma cor, três componentes de cor são, tipicamente, usados.
Por exemplo, a imagem pode ser representada como ou incluir três arranjos de amostra. Por exemplo, em um formato RGB ou um espaço de cor, uma imagem inclui arranjos de amostra vermelho, verde e azul correspondentes. Entretanto, na codificação de vídeo, cada pixel é, tipicamente, representado em um formato de luminância/crominância ou um espaço de cor. Por exemplo, uma imagem em um formato YUV inclui um componente de luminância indicado por Y (às vezes L é usado no lugar) e dois componentes de crominância indicados por U e V. O componente de luminância (luma) Y representa a intensidade do nível de brilho ou cinzo (por exemplo, os dois são idênticos em uma imagem em escala de cinza), enquanto os dois componentes de crominância (croma) U e V representam a cromaticidade ou componentes de informações de cor.
Consequentemente, a imagem no formato YUV inclui um arranjo de amostra de luma de valores de amostra de luma (Y) e dois arranjos de amostra de croma de valores de croma (U e V). Uma imagem no formato RGB pode ser convertida ou transformada em uma imagem no formato YUV e vice-versa, e o processo também é conhecido como transformação ou conversão de cor. Se uma imagem for monocromática, a imagem pode incluir apenas um arranjo de amostra de luma. Nesta modalidade deste pedido, uma imagem transmitida pela fonte de imagem 16 para um processador de imagem também pode ser referida como dados de imagem brutos 17.
[0133] O pré-processador de imagem 18 é configurado para receber os dados de imagem brutos 17 e pré-processar os dados de imagem brutos 17, para obter uma imagem pré-processada 19 ou dados de imagem pré- processados 19. Por exemplo, o pré-processamento realizado pelo pré- processador de imagem 18 pode incluir corte, conversão de formato de cor (por exemplo, de um formato RGB para um formato YUV), correção de cor ou eliminação de ruído.
[0134] O codificador 20 (também referido como um codificador de vídeo 20) é configurado para receber os dados de imagem pré-processados 19,
e processar os dados de imagem pré-processados 19 por meio de uso de um modo de predição relacionado (tal como um modo de predição em cada modalidade desta especificação), para fornecer dados de imagem codificados 21 (os detalhes estruturais do codificador 20 são descritos adicionalmente abaixo com base na FIG. 2, FIG. 4 ou FIG. 5). Em algumas modalidades, o codificador 20 pode ser configurado para realizar as modalidades descritas abaixo, para implementar a aplicação do método no lado de codificador descrito neste pedido.
[0135] A interface de comunicações 22 pode ser configurada para receber os dados de imagem codificados 21, e transmitir os dados de imagem codificados 21 para o dispositivo de destino 14 ou qualquer outro dispositivo (por exemplo, uma memória) através do enlace 13 para armazenamento ou reconstrução direta. Qualquer outro dispositivo pode ser qualquer dispositivo usado para decodificação ou armazenamento. A interface de comunicações 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, um pacote de dados, para transmissão através do enlace 13.
[0136] O dispositivo de destino 14 inclui um decodificador 30 e, opcionalmente, o dispositivo de destino 14 pode incluir adicionalmente uma interface de comunicações 28, um pós-processador de imagem 32 e um dispositivo de exibição 34. As descrições separadas são como a seguir.
[0137] A interface de comunicações 28 pode ser configurada para receber os dados de imagem codificados 21 a partir do dispositivo de origem 12 ou qualquer outra fonte. Qualquer outra fonte é, por exemplo, um dispositivo de armazenamento e o dispositivo de armazenamento é, por exemplo, um dispositivo de armazenamento de dados de imagem codificados. A interface de comunicações 28 pode ser configurada para transmitir ou receber os dados de imagem codificados 21 através do enlace 13 entre o dispositivo de origem 12 e o dispositivo de destino 14 ou através de qualquer tipo de rede. O enlace 13 é,
por exemplo, uma conexão direta com fio ou sem fio e qualquer tipo de rede é, por exemplo, uma rede com fio ou sem fio ou qualquer combinação da mesma, ou qualquer tipo de rede privada ou pública ou qualquer combinação da mesma.
A interface de comunicações 28 pode ser, por exemplo, configurada para desempacotar o pacote de dados transmitido através da interface de comunicações 22, para obter os dados de imagem codificados 21.
[0138] Tanto a interface de comunicações 28 quanto a interface de comunicações 22 podem ser configuradas como interfaces de comunicações unidirecionais ou interfaces de comunicações bidirecionais, e podem ser configuradas para, por exemplo, enviar e receber mensagens para configurar uma conexão e reconhecer e trocar quaisquer outras informações relacionadas a um enlace de comunicação e/ou transmissão de dados, tal como transmissão de dados de imagem codificados.
[0139] O decodificador 30 (também referido como o decodificador 30) é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (os detalhes estruturais do decodificador 30 são descritos adicionalmente abaixo com base na FIG. 3, FIG. 4, ou FIG. 5). Em algumas modalidades, o decodificador 30 pode ser configurado para realizar as modalidades descritas abaixo, para implementar a aplicação do método no lado de decodificador descrito neste pedido.
[0140] O pós-processador de imagem 32 é configurado para pós- processar os dados de imagem decodificados 31 (também referidos como dados de imagem reconstruídos), para obter dados de imagem pós-processados 33. O pós-processamento realizado pelo pós-processador de imagem 32 pode incluir conversão de formato de cor (por exemplo, de um formato YUV para um formato RGB), correção de cor, corte, reamostragem ou qualquer outro processamento.
O pós-processador de imagem 32 pode ser adicionalmente configurado para transmitir os dados de imagem pós-processados 33 para o dispositivo de exibição 34.
[0141] O dispositivo de exibição 34 é configurado para receber os dados de imagem pós-processados 33 para exibir uma imagem, por exemplo, para um usuário ou um observador. O dispositivo de exibição 34 pode ser ou incluir qualquer tipo de display configurado para apresentar uma imagem reconstruída, por exemplo, pode ser um display ou monitor integrado ou externo.
Por exemplo, o display pode incluir um display de cristal líquido (liquid crystal display, LCD), um display de diodo orgânico emissor de luz (organic light emitting diode, OLED), um display de plasma, um projetor, um display de micro LED, um display de cristal líquido em silício (liquid crystal on silicon, LCoS), um processador de luz digital (digital light processor, DLP) ou qualquer outro tipo de dispaly.
[0142] Embora a FIG. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem incluir ambas as funcionalidades: o dispositivo de origem 12 ou uma funcionalidade correspondente e o dispositivo de destino 14 ou uma funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados por meio de uso do mesmo hardware e/ou software ou por meio de uso de hardware e/ou software separados ou qualquer combinação do mesmo.
[0143] Um técnico no assunto pode aprender que, com base nas descrições, a existência e divisão (exata) nas funcionalidades das diferentes unidades ou funcionalidades do dispositivo de origem 12 e/ou do dispositivo de destino 14 mostradas na FIG. 1A podem variar dependendo de um dispositivo e aplicação reais. O dispositivo de origem 12 e o dispositivo de destino 14, cada um, podem ser qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivo portátil ou fixo, por exemplo, um computador notebook ou laptop, um telefone móvel, um telefone inteligente, um pad ou um computador tablet, uma câmera de vídeo, um computador de área de trabalho, um conversor de televisão, uma televisão, uma câmera, um dispositivo montado no veículo, um dispositivo de exibição, um reprodutor de mídia digital, um console de videogame, um dispositivo de transmissão de vídeo (tal como um servidor de serviço de conteúdo ou um servidor de distribuição de conteúdo), um dispositivo de recebimento de transmissão ou um dispositivo transmissor de transmissão, e podem não usar ou podem usar qualquer tipo de sistema operacional.
[0144] O codificador 20 e o decodificador 30, cada um, podem ser implementados como qualquer um de vários circuitos apropriados, por exemplo, um ou mais microprocessadores, processadores de sinal digital (digital signal processor, DSP), circuitos integrados de aplicação específica (application- specific integrated circuit, ASIC), arranjos de portas programáveis em campo (field-programmable gate array, FPGA), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as tecnologias forem implementadas parcialmente por meio de uso de software, um dispositivo pode armazenar uma instrução de software em uma mídia de armazenamento legível por computador apropriada e não transitória e pode executar uma instrução por meio de uso de hardware, tal como um ou mais processadores, para realizar as tecnologias desta revelação. Qualquer um do anterior (incluindo hardware, software, uma combinação de hardware e software e semelhantes) pode ser considerado como um ou mais processadores.
[0145] Em alguns casos, o sistema de codificação de vídeo 10 mostrado na FIG. 1A é meramente um exemplo e as tecnologias neste pedido são aplicáveis às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre o dispositivo de codificação e o dispositivo de decodificação. Em outros exemplos, os dados podem ser recuperados de uma memória local, transmitidos em uma rede ou semelhantes.
Um dispositivo de codificação de vídeo pode codificar dados e armazenar dados codificados na memória e/ou um dispositivo de decodificação de vídeo pode recuperar dados da memória e decodificar os dados. Em alguns exemplos, codificação e decodificação são realizadas pelos dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam dados da memória e decodificam os dados.
[0146] A FIG. 1B é um diagrama ilustrativo de um exemplo de um sistema de codificação de vídeo 40, incluindo o codificador 20 na FIG. 2 e/ou o decodificador 30 na FIG. 3, de acordo com uma modalidade de exemplo. O sistema de codificação de vídeo 40 pode implementar uma combinação de várias tecnologias nas modalidades deste pedido. Em uma implementação ilustrada, o sistema de codificação de vídeo 40 pode incluir um dispositivo de geração de imagem 41, o codificador 20, o decodificador 30 (e/ou um codificador/decodificador de vídeo implementado por um circuito lógico 47 de uma unidade de processamento 46), uma antena 42, um ou mais processadores 43, uma ou mais memórias 44 e/ou um dispositivo de exibição 45.
[0147] Como mostrado na FIG. 1B, o dispositivo de geração de imagem 41, a antena 42, a unidade de processamento 46, o circuito lógico 47, o codificador 20, o decodificador 30, o processador 43, a memória 44 e/ou o dispositivo de exibição 45 podem se comunicar entre si. Como descrito, embora o sistema de codificação de vídeo 40 seja ilustrado por meio de uso do codificador 20 e do decodificador 30, o sistema de codificação de vídeo 40 pode incluir apenas o codificador 20 ou apenas o decodificador 30 em diferentes exemplos.
[0148] Em alguns exemplos, a antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificado de dados de vídeo. Além disso,
em alguns exemplos, o dispositivo de exibição 45 pode ser configurado para apresentar os dados de vídeo. Em alguns exemplos, o circuito lógico 47 pode ser implementado pela unidade de processamento 46. A unidade de processamento 46 pode incluir lógica de circuito integrado de aplicação específica (application-specific integrated circuit, ASIC), um processador gráfico, um processador de uso geral ou semelhantes. O sistema de codificação de vídeo 40 pode incluir alternativamente o processador opcional 43. O processador opcional 43 pode incluir similarmente lógica de circuito integrado de aplicação específica (application-specific integrated circuit, ASIC), um processador gráfico, um processador de uso geral ou semelhantes. Em alguns exemplos, o circuito lógico 47 pode ser implementado por hardware, por exemplo, hardware dedicado de codificação de vídeo, e o processador 43 pode ser implementado por software de uso geral, um sistema operacional ou semelhantes. Além disso, a memória 44 pode ser qualquer tipo de memória, por exemplo, uma memória volátil (por exemplo, uma memória de acesso aleatório estática (Static Random Access Memory, SRAM), uma memória de acesso aleatório dinâmica (Dynamic Random Access Memory, DRAM)), ou uma memória não volátil (por exemplo, uma memória flash). Em um exemplo não limitante, a memória 44 pode ser implementada por uma memória cache. Em alguns exemplos, o circuito lógico 47 pode acessar a memória 44 (por exemplo, para implementação de um buffer de imagem). Em outros exemplos, o circuito lógico 47 e/ou a unidade de processamento 46 pode incluir uma memória (por exemplo, um cache) para implementação de um buffer de imagem ou semelhantes.
[0149] Em alguns exemplos, o codificador 20 implementado pelo circuito lógico pode incluir um buffer de imagem (por exemplo, implementado pela unidade de processamento 46 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implementada pela unidade de processamento 46). A unidade de processamento gráfico pode ser comunicativamente acoplada ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador 20 implementado pelo circuito lógico 47, para implementar vários módulos que são descritos com referência à FIG. 2 e/ou qualquer outro codificador sistema ou subsistema descrito neste relatório descritivo. O circuito lógico pode ser configurado para realizar várias operações descritas neste relatório descritivo.
[0150] Em alguns exemplos, o decodificador 30 pode ser implementado pelo circuito lógico 47 em uma maneira similar, para implementar vários módulos que são descritos com referência ao decodificador 30 na FIG. 3 e/ou qualquer outro sistema ou subsistema de decodificador descrito neste relatório descritivo. Em alguns exemplos, o decodificador 30 implementado pelo circuito lógico pode incluir um buffer de imagem (por exemplo, implementado pela unidade de processamento 2820 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implementado pela unidade de processamento 46). A unidade de processamento gráfico pode ser comunicativamente acoplada à imagem tampão. A unidade de processamento gráfico pode incluir o decodificador 30 implementado pelo circuito lógico 47, para implementar vários módulos que são descritos com referência à FIG. 3 e/ou qualquer outro sistema ou subsistema de decodificador descrito neste relatório descritivo.
[0151] Em alguns exemplos, a antena 42 pode ser configurada para receber um fluxo de bits codificado de dados de vídeo. Como descrito, o fluxo de bits codificado pode incluir dados, um indicador, um valor de índice, dados de seleção de modo ou semelhantes relacionados à codificação de quadro de vídeo descrita neste relatório descritivo, por exemplo, dados relacionados ao particionamento de codificação (por exemplo, um coeficiente de transformada ou um coeficiente de transformada quantizado, um indicador opcional (como descrito), e/ou dados definindo o particionamento de codificação). O sistema de codificação de vídeo 40 pode incluir adicionalmente o decodificador 30 que é acoplado à antena 42 e que é configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 45 é configurado para apresentar um quadro de vídeo.
[0152] Deve ser entendido que nesta modalidade deste pedido, para o exemplo descrito com referência ao codificador 20, o decodificador 30 pode ser configurado para realizar um processo reverso. Com relação a um elemento de sintaxe de sinalização, o decodificador 30 pode ser configurado para receber e analisar tal elemento de sintaxe e decodificar correspondentemente os dados de vídeo relacionados. Em alguns exemplos, o codificador 20 pode codificar com entropia o elemento de sintaxe em um fluxo de bits de vídeo codificado. Em tais exemplos, o decodificador 30 pode analisar tal elemento de sintaxe e decodificar correspondentemente os dados de vídeo relacionados.
[0153] Deve ser observado que o método de decodificação descrito nesta modalidade deste pedido é principalmente usado em um processo de decodificação. Este processo existe tanto no codificador 20 quanto no decodificador 30.
[0154] A FIG. 2 é um diagrama de bloco esquemático/conceitual de um exemplo de um codificador 20 configurado para implementar uma modalidade deste pedido. No exemplo da FIG. 2, o codificador 20 inclui uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210, uma unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, um buffer 216, uma unidade de filtro loop 220, um buffer de imagem decodificado (decoded picture buffer, DPB) 230, uma unidade de processamento de predição 260 e uma unidade de codificação de entropia 270. A unidade de processamento de predição 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de seleção de modo 262. A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento e uma unidade de compensação de movimento (não mostradas na figura). O codificador 20 mostrado na FIG. 2 também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo com base em um codec de vídeo híbrido.
[0155] Por exemplo, a unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de processamento de predição 260 e a unidade de codificação de entropia 270 formam um caminho de sinal direto do codificador 20, enquanto, por exemplo, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificado (decoded picture buffer, DPB) 230 e a unidade de processamento de predição 260 formam um caminho de sinal indireto do codificador. O caminho de sinal indireto do codificador corresponde a um caminho de sinal de um decodificador (consultar o decodificador 30 na FIG.
3).
[0156] O codificador 20 recebe, por exemplo, através de uma entrada 202, uma imagem 201 ou um bloco de imagem 203 de uma imagem 201, por exemplo, uma imagem em uma sequência de imagens formando um vídeo ou uma sequência de vídeos. O bloco de imagem 203 também pode ser referido como um bloco de imagem atual ou um bloco de imagem a ser codificado. A imagem 201 pode ser referida como uma imagem atual ou uma imagem a ser codificada (particularmente na codificação de vídeo, para distinguir a imagem atual de outras imagens, as outras imagens são, por exemplo, imagens previamente codificadas e/ou decodificadas em uma mesma sequência de vídeos, isto é, a sequência de vídeos que também inclui a imagem atual).
[0157] Uma modalidade do codificador 20 pode incluir uma unidade de particionamento (não mostrada na FIG. 2), configurada para particionar a imagem 201 em uma pluralidade de blocos, tais como o bloco de imagem 203.
A imagem 201 é usualmente particionada em uma pluralidade de blocos não sobrepostos. A unidade de particionamento pode ser configurada para usar um mesmo tamanho de bloco para todas as imagens em uma sequência de vídeos e uma grade correspondente definindo o tamanho de bloco ou, mudar um tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens e particionar cada imagem em blocos correspondentes.
[0158] Em um exemplo, a unidade de processamento de predição 260 do codificador 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas acima.
[0159] Como a imagem 201, o bloco de imagem 203 também é ou pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de amostra, embora um tamanho do bloco de imagem 203 seja menor do que o da imagem 201. Em outras palavras, o bloco de imagem 203 pode incluir, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma em um caso de uma imagem monocromática 201), três arranjos de amostra (por exemplo, um arranjo de luma e dois arranjos de croma em um caso de uma imagem colorida), ou qualquer outra quantidade e/ou tipo de arranjos dependendo de um formato de cor aplicado. Uma quantidade de amostras nas direções horizontal e vertical (ou eixos) do bloco de imagem 203 define o tamanho de o bloco de imagem 203.
[0160] O codificador 20 mostrado na FIG. 2 é configurado para codificar a imagem 201, bloco por bloco, por exemplo, codificar e predizer cada bloco de imagem 203.
[0161] A unidade de cálculo residual 204 é configurada para calcular um bloco residual 205 com base no bloco de imagem 203 e em um bloco de predição 265 (os detalhes adicionais sobre o bloco de predição 265 são fornecidos abaixo), por exemplo, obter o bloco residual 205 em um domínio de amostra subtraindo um valor de amostra do bloco de predição 265 a partir de um valor de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel).
[0162] A unidade de processamento de transformada 206 é configurado para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (discrete cosine transform, DCT) ou uma transformada de seno discreta (discrete sine transform, DST), aos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0163] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma aproximação inteira de DCT/DST, tal como transformações especificadas em AVS, AVS2 ou AVS3. Em comparação a uma transformada DCT ortogonal, tal aproximação inteira é, tipicamente, dimensionada por um fator específico. Para preservar uma norma de um bloco residual que é processado através de transformadas direta e inversa, aplicar um fator de escala adicional é uma parte de um processo de transformada. O fator de escala é, tipicamente, escolhido com base em algumas restrições. Por exemplo, o fator de escala é uma potência de dois para uma operação de deslocamento, uma profundidade de bits do coeficiente de transformada, uma compensação entre precisão e custos de implementação e semelhantes. Um fator de escala específico é, por exemplo, especificado para uma transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 no lado de decodificador 30 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 212 no lado de codificador 20), e um fator de escala correspondente para a transformada direta, por exemplo, pela unidade de processamento de transformada 206 no lado de codificador 20 pode ser especificado consequentemente.
[0164] A unidade de quantização 208 é configurado para quantizar os coeficientes de transformada 207 para obter coeficientes de transformada quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial.
Os coeficientes de transformada quantizados 209 também podem ser referidos como coeficientes residuais quantizados 209. Um processo de quantização pode reduzir uma profundidade de bits associada a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, onde n é maior do que m.
Um grau de quantização pode ser modificado ajustando um parâmetro de quantização (quantization parameter, QP). Por exemplo, para quantização escalar, diferentes escalas podem ser aplicadas para obter quantização mais fina ou grosseira.
Uma menor etapa de quantização corresponde à quantização mais fina, enquanto uma maior etapa de quantização corresponde à quantização grosseira.
Um tamanho de etapa de quantização apropriado pode ser indicado pelo parâmetro de quantização (quantization parameter, QP). O parâmetro de quantização pode ser, por exemplo, um índice para um conjunto predefinido de tamanhos de etapa de quantização apropriados.
Por exemplo, um menor parâmetro de quantização pode corresponder à quantização mais fina (um menor tamanho de etapa de quantização) e um maior parâmetro de quantização pode corresponder à quantização grosseira (um maior tamanho de etapa de quantização) ou vice-versa.
A quantização pode incluir divisão por um tamanho de etapa de quantização e quantização correspondente e/ou quantização inversa, por exemplo, realizada pela unidade de quantização inversa 210, ou pode incluir multiplicação pelo tamanho de etapa de quantização.
Nas modalidades, de acordo com alguns padrões, tais como AVS, AVS2 e AVS3, um parâmetro de quantização pode ser usado para determinar o tamanho de etapa de quantização.
Geralmente, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização por meio de uso de uma aproximação de ponto fixo de uma equação incluindo divisão. Um fator de escala adicional pode ser introduzido para quantização e desquantização para armazenar novamente a norma do bloco residual, onde a norma do bloco residual pode ser modificada por causa de uma escala usada na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e o parâmetro de quantização. Em uma implementação de exemplo, as escalas da transformada inversa e da desquantização podem ser combinadas.
Alternativamente, uma tabela de quantização padronizada pode ser usada e sinalizada a partir do codificador para o decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, onde uma perda aumenta com um aumento do tamanho de etapa de quantização.
[0165] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 aos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicar, com base ou por meio de uso de um mesmo tamanho de etapa de quantização que a unidade de quantização 208, um esquema de quantização inversa de um esquema de quantização aplicado pela unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem, embora, tipicamente, não idênticos aos coeficientes de transformada devido à perda por quantização, aos coeficientes de transformada 207.
[0166] A unidade de processamento de transformada inversa 212 é configurada para aplicar uma transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta inversa (discrete cosine transform, DCT) ou uma transformada de seno discreta inversa (discrete sine transform, DST), para obter um bloco de transformada inversa 213 no domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como um bloco desquantizado de transformada inversa 213 ou um bloco residual de transformada inversa 213.
[0167] A unidade de reconstrução 214 (por exemplo, um somador 214) é configurada para adicionar o bloco de transformada inversa 213 (isto é, um bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando um valor de amostra do bloco residual reconstruído 213 e o valor de amostra do bloco de predição 265.
[0168] Opcionalmente, uma unidade de buffer 216 (“buffer” 216, para abreviação), por exemplo, de um buffer de linha 216, é configurada para bufferizar ou armazenar o bloco reconstruído 215 e um valor de amostra correspondente, por exemplo, para predição intra. Em outras modalidades, o codificador pode ser configurado para usar um bloco reconstruído não filtrado e/ou um valor de amostra correspondente que são/é armazenado na unidade de buffer 216, para qualquer tipo de estimação e/ou predição, por exemplo, predição intra.
[0169] Por exemplo, uma modalidade do codificador 20 pode ser configurada, de modo que a unidade de buffer 216 não seja apenas usada para armazenar o bloco reconstruído 215 para a unidade de predição intra 254, mas também usada para a unidade de filtro loop 220 (não mostrada na FIG. 2), e/ou de modo que, por exemplo, a unidade de buffer 216 e a unidade de buffer de imagem decodificada 230 formem um buffer. Em outras modalidades, um bloco filtrado 221 e/ou um bloco ou uma amostra do buffer de imagem decodificado 230 (o bloco ou amostra não é mostrado na FIG. 2) são/é usado como uma entrada ou uma base para a unidade de predição intra 254.
[0170] A unidade de filtro loop 220 (brevemente referida como um “filtro loop” 220) é configurada para filtrar o bloco reconstruído 215 para obter o bloco filtrado 221, para suavizar a transição de pixel ou melhorar a qualidade de vídeo. A unidade de filtro loop 220 é destinada a representar um ou mais filtros loop incluindo, por exemplo, um filtro de desblocagem, um filtro de deslocamento adaptativo à amostra (sample-adaptive offset, SAO) ou outro filtro, tal como um filtro bilateral, um filtro loop adaptativo (adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro colaborativo. Embora a unidade de filtro loop 220 seja mostrada na FIG. 2 como um filtro in-loop, em outra configuração, a unidade de filtro loop 220 pode ser implementada como um filtro de post-loop. O bloco filtrado 221 também pode ser referido como um bloco reconstruído filtrado
221. O buffer de imagem decodificado 230 pode armazenar um bloco codificado reconstruído depois da unidade de filtro loop 220 realizar uma operação de filtragem no bloco codificado reconstruído.
[0171] Em uma modalidade, o codificador 20 (correspondentemente, a unidade de filtro loop 220) pode ser configurado para emitir um parâmetro de filtro loop (tal como informações de deslocamento adaptativo à amostra), por exemplo, diretamente ou depois da codificação de entropia realizada pela unidade de codificação de entropia 270 ou qualquer outra unidade de codificação de entropia, de modo que, por exemplo, o decodificador 30 possa receber o mesmo parâmetro de filtro loop e aplicar o mesmo parâmetro de filtro loop para decodificação.
[0172] O buffer de imagem decodificado (decoded picture buffer, DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para codificar dados de vídeo pelo codificador 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, tais como uma memória de acesso aleatório dinâmica (dynamic random access memory, DRAM) (incluindo uma DRAM síncrona (synchronous DRAM, SDRAM), uma RAM magneto resistiva (magnetoresistive RAM, MRAM), e uma RAM resistiva (resistive RAM, RRAM)), ou outro tipo de dispositivo de memória. O DPB 230 e o buffer 216 pode ser fornecido por um mesmo dispositivo de memória ou dispositivos de memória separados. Em um exemplo, o buffer de imagem decodificado (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco filtrado 221. O buffer de imagem decodificado 230 pode ser adicionalmente configurado para armazenar outro bloco previamente filtrado, por exemplo, previamente reconstruído e bloco filtrado 221, da mesma imagem atual ou de uma imagem diferente, por exemplo, uma imagem previamente reconstruída, e pode fornecer uma imagem decodificada completa previamente reconstruída, isto é, (e um bloco de referência e amostra correspondentes) e/ou uma imagem atual parcialmente reconstruída (e um bloco de referência e amostra correspondentes), por exemplo, para predição inter. Em um exemplo, se o bloco reconstruído 215 for reconstruído sem a filtragem in-loop, o buffer de imagem decodificado (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[0173] A unidade de processamento de predição 260, também referida como uma unidade de processamento de predição de bloco 260, é configurada para receber ou obter o bloco de imagem 203 (um bloco de imagem atual 203 da imagem atual 201) e dados de imagem reconstruídos, por exemplo, amostras de referência de uma mesma imagem (atual) do buffer 216 e/ou dados de imagem de referência 231 de uma ou mais imagens previamente decodificadas a partir do buffer de imagem decodificado 230; e processar tais dados para predição, isto é, fornecer o bloco de predição 265 que pode ser um bloco de predição inter 245 ou um bloco de predição intra 255.
[0174] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo de predição intra ou um modo de predição inter) e/ou o bloco de predição correspondente 245 ou 255 a ser usado como o bloco de predição 265, para calcular o bloco residual 205 e reconstruir o bloco reconstruído 215.
[0175] Em uma modalidade, a unidade de seleção de modo 262 pode ser configurada para selecionar o modo de predição (por exemplo, a partir dos modos de predição suportados pela unidade de processamento de predição 260), onde o modo de predição fornece uma correspondência ideal ou um residual menor (o residual menor significa melhor compressão para transmissão ou armazenamento), ou fornece menores sobrecargas de sinalização (as menores sobrecargas de sinalização significam melhor compressão para transmissão ou armazenamento), ou considera ou equilibra ambos. A unidade de seleção de modo 262 pode ser configurada para determinar o modo de predição com base na otimização de distorção de taxa (rate distortion optimization, RDO), isto é, selecionar um modo de predição que fornece distorção de taxa mínima ou selecionar um modo de predição para o qual a distorção de taxa relacionada pelo menos satisfaça um critério de seleção de modo de predição.
[0176] No seguinte, o processamento de predição realizado (por exemplo, por meio de uso da unidade de processamento de predição 260) e a seleção de modo realizada (por exemplo, por meio de uso da unidade de seleção de modo 262), de acordo com um exemplo do codificador 20 são descritos em detalhes.
[0177] Como descrito acima, o codificador 20 é configurado para determinar ou selecionar um modo de predição ótimo ou ideal a partir de um conjunto de modos de predição (pré-determinado). O conjunto de modos de predição pode incluir, por exemplo, um modo de predição intra e/ou um modo de predição inter.
[0178] Um conjunto de modos de predição intra pode incluir 35 diferentes modos de predição intra, por exemplo, modos não direcionais, tais como um modo DC (ou meio) e um modo planar, ou modos direcionais definidos em H.265, ou pode incluir 67 diferentes modos de predição intra, por exemplo,
modos não direcionais, tais como um modo DC (ou meio) e um modo planar, ou modos direcionais definidos no desenvolvimento H.266.
[0179] Em uma implementação possível, um conjunto de modos de predição inter depende das imagens de referência disponíveis (isto é, pelo menos algumas imagens decodificadas armazenadas no DBP 230 como descrito acima) e outros parâmetros de predição inter, por exemplo, dependendo se uma imagem de referência inteira for usada ou apenas uma parte de uma imagem de referência for usada, por exemplo, um bloco de referência correspondido ideal que é encontrado em uma região de janela de pesquisa em torno de uma região de um bloco atual, e/ou, por exemplo, dependendo se a interpolação de pixel, tal como interpolação de metade pixel e/ou um quarto de pixel for aplicada. O conjunto de modos de predição inter pode incluir, por exemplo, um modo de vetor de movimento avançado (Advanced Motion Vector Prediction, AMVP) e um modo de mesclagem (merge). Na implementação específica, o conjunto de modos de predição inter pode incluir um modo AMVP com base no ponto de controle melhorado e um modo de mesclagem com base no ponto de controle melhorado nesta modalidade deste pedido. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação da seguinte tecnologia de predição inter descrita.
[0180] Além dos modos de predição anteriores, um modo de salto e/ou um modo direto também pode ser usado nesta modalidade deste pedido.
[0181] A unidade de processamento de predição 260 pode ser adicionalmente configurada para particionar o bloco de imagem 203 em menores partições de bloco ou sub-blocos, por exemplo, por meio de uso iterativamente de particionamento de quadtree (quad-tree, QT), particionamento de árvore binária (binary-tree, BT), particionamento de árvore tripla (ternary tree, TT), particionamento de quadtree estendido (EQT, Extended Quad-Tree) ou qualquer combinação dos mesmos e para realizar, por exemplo, predição em cada uma das partições de bloco ou sub-blocos, onde a seleção de modo inclui a seleção de uma estrutura de árvore do bloco de imagem particionado 203 e a seleção de um modo de predição aplicado a cada uma das partições de bloco ou sub-blocos.
[0182] A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento (motion estimation, ME) (não mostrada na FIG. 2) e uma unidade de compensação de movimento (motion compensation, MC) (não mostrada na FIG. 2). A unidade de estimação de movimento é configurada para receber ou obter o bloco de imagem 203 (o bloco de imagem atual 203 da imagem atual 201) e uma imagem decodificada 231, ou pelo menos um ou mais blocos previamente reconstruídos, por exemplo, um bloco reconstruído de um ou mais outras/diferentes imagens previamente decodificadas 231, para estimação de movimento. Por exemplo, uma sequência de vídeos pode incluir a imagem atual e uma imagem previamente decodificada 31. Em outras palavras, a imagem atual e a imagem previamente decodificada 31 pode ser uma parte ou forma de uma sequência de imagens formando uma sequência de vídeos.
[0183] Por exemplo, o codificador 20 pode ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência de uma mesma imagem ou diferentes imagens de uma pluralidade de outras imagens e fornecer, para a unidade de estimação de movimento (não mostrada na FIG. 2), uma imagem de referência e/ou fornecer um deslocamento (um deslocamento espacial) entre uma localização (coordenadas X e Y) do bloco de referência e uma localização do bloco atual como um parâmetro de predição inter. Este deslocamento também é referido como um vetor de movimento (motion vector, MV).
[0184] A unidade de compensação de movimento é configurada para obter o parâmetro de predição inter, e realizar predição inter com base ou por meio de uso do parâmetro de predição inter, para obter o bloco de predição inter
245. A compensação de movimento realizada pela unidade de compensação de movimento (não mostrada na FIG. 2) pode incluir buscar ou gerar o bloco de predição com base em um vetor de movimento/bloco determinado através da estimação de movimento (possivelmente realizar interpolações para a precisão de sub-pixel). A filtragem de interpolação pode gerar uma amostra de pixel adicional a partir de uma amostra de pixel conhecida, aumentando potencialmente, desse modo, uma quantidade de blocos de predição candidatos que pode ser usada para codificar um bloco de imagem. Após o recebimento de um vetor de movimento para uma PU do bloco de imagem atual, a unidade de compensação de movimento 246 pode localizar um bloco de predição para o qual o vetor de movimento aponta em uma lista de imagens de referência. A unidade de compensação de movimento 246 pode gerar adicionalmente um elemento de sintaxe associado a um bloco e a uma fatia de vídeo, para decodificar um bloco de imagem da fatia de vídeo pelo decodificador 30.
[0185] Especificamente, a unidade de predição inter 244 pode transmitir o elemento de sintaxe para a unidade de codificação de entropia 270, onde o elemento de sintaxe inclui um parâmetro de predição inter (por exemplo, informações de indicação de um modo de predição inter que são selecionadas para predição para o bloco atual depois de uma pluralidade de modos de predição inter ser atravessada). Em um possível cenário de aplicação, se houver apenas um modo de predição inter, o parâmetro de predição inter não pode ser portado no elemento de sintaxe. Neste caso, o lado de decodificador 30 pode usar diretamente o padrão para decodificação. Pode ser entendido que a unidade de predição inter 244 pode ser configurada para realizar qualquer combinação de tecnologias de predição inter.
[0186] A unidade de predição intra 254 é configurada para obter, por exemplo, receber o bloco de imagem 203 (o bloco de imagem atual) e um ou mais blocos previamente reconstruídos, por exemplo, blocos vizinhos reconstruídos, de uma mesma imagem para estimação intra. Por exemplo, o codificador 20 pode ser configurado para selecionar um modo de predição intra a partir de uma pluralidade de modos de predição intra (pré-determinados).
[0187] Em uma modalidade, o codificador 20 pode ser configurado para selecionar um modo de predição intra, de acordo com um critério de otimização, por exemplo, com base em um residual menor (por exemplo, um modo de predição intra que fornece um bloco de predição 255 mais similar ao bloco de imagem atual 203) ou distorção de taxa de bits mínima.
[0188] A unidade de predição intra 254 é adicionalmente configurada para determinar o bloco de predição intra 255 com base em, por exemplo, um parâmetro de predição intra do modo de predição intra selecionado. Em qualquer caso, depois de selecionar um modo de predição intra para um bloco, a unidade de predição intra 254 é adicionalmente configurada para fornecer um parâmetro de predição intra, isto é, informações indicando o modo de predição intra selecionado para o bloco, para a unidade de codificação de entropia 270. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação das tecnologias de predição intra.
[0189] Especificamente, a unidade de predição intra 254 pode transmitir um elemento de sintaxe para a unidade de codificação de entropia 270, onde o elemento de sintaxe inclui um parâmetro de predição intra (por exemplo, informações de indicação de um modo de predição intra que são selecionadas para predição para o bloco atual depois de uma pluralidade de modos de predição intra ser atravessada). Em um possível cenário de aplicação, se houver um modo de predição intra, o parâmetro de predição intra não pode ser portado no elemento de sintaxe. Neste caso, o lado de decodificador 30 pode usar diretamente o modo de predição padrão para decodificação.
[0190] A unidade de codificação de entropia 270 é configurada para aplicar (ou desviar) um algoritmo de codificação de entropia ou um esquema (por exemplo, um esquema de codificação de comprimento variável (variable length coding, VLC), um esquema VLC adaptativo ao contexto (context adaptive VLC, CAVLC), um esquema de codificação aritmética, uma codificação aritmética binária adaptativa ao contexto (context adaptive binary arithmetic coding, CABAC), codificação aritmética binária adaptativa ao contexto com base em sintaxe (syntax-based context-adaptive binary arithmetic coding, SBAC), codificação de entropia de particionamento de intervalo de probabilidade (probability interval partitioning entropy, PIPE), ou outra metodologia ou técnica de codificação de entropia) em um ou todos do seguinte: os coeficientes quantizados 209, o parâmetro de predição inter, o parâmetro de predição intra e/ou o parâmetro de filtro loop, para obter os dados de imagem codificados 21 que podem ser emitidos através de uma saída 272, por exemplo, em uma forma de um fluxo de bits codificado 21. O fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30, ou arquivado para transmissão ou recuperação posterior pelo decodificador de vídeo 30. A unidade de codificação de entropia 270 pode ser adicionalmente configurada para codificar com entropia outro elemento de sintaxe para uma fatia de vídeo atual que está sendo codificada.
[0191] Outras variações estruturais do codificador de vídeo 20 podem ser configuradas para codificar um fluxo de vídeo. Por exemplo, um codificador 20 não baseado em transformada pode quantizar um sinal residual diretamente sem a unidade de processamento de transformada 206 para alguns blocos ou quadros. Em outra implementação, o codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 que são combinadas em uma única unidade.
[0192] Especificamente, nesta modalidade deste pedido, o codificador 20 pode ser configurado para implementar um método de codificação de vídeo descrito na seguinte modalidade.
[0193] Deve ser entendido que outras variações estruturais do codificador de vídeo 20 podem ser configuradas para codificar um fluxo de vídeo.
Por exemplo, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 20 pode diretamente quantizar o sinal residual sem o processamento pela unidade de processamento de transformada 206 e, consequentemente, sem o processamento pela unidade de processamento de transformada inversa 212. Alternativamente, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 20 não gera dados residuais e, consequentemente, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 não precisa realizar o processamento. Alternativamente, o codificador de vídeo 20 pode diretamente armazenar um bloco de imagem reconstruído como um bloco de referência, sem o processamento pelo filtro 220. Alternativamente, a unidade de quantização 208 e a unidade de quantização inversa 210 no codificador de vídeo 20 podem ser combinadas juntas. O filtro loop 220 é opcional, e em um caso de codificação de compressão sem perdas, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 são opcionais. Deve ser entendido que, de acordo com diferentes cenários de aplicação, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser ativadas seletivamente.
[0194] A FIG. 3 é um diagrama de bloco esquemático/conceitual de um exemplo de um decodificador 30 configurado para implementar uma modalidade deste pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados (por exemplo, um fluxo de bits codificado) 21, por exemplo, obtidos através de codificação por um codificador 20, para obter uma imagem decodificada 231. Durante a codificação, o decodificador de vídeo 30 recebe dados de vídeo do codificador de vídeo 20, por exemplo, um fluxo de bits de vídeo codificado que representa um bloco de imagem de uma fatia de vídeo codificada e um elemento de sintaxe associado.
[0195] No exemplo da FIG. 3, o decodificador 30 inclui uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um buffer 316, um filtro loop 320, um buffer de imagem decodificado 330 e uma unidade de processamento de predição 360. A unidade de processamento de predição 360 pode incluir uma unidade de predição inter 344, uma unidade de predição intra 354 e uma unidade de seleção de modo 362. Em alguns exemplos, o decodificador de vídeo 30 pode realizar um processo de decodificação que é aproximadamente inverso ao processo de codificação descrito com referência ao codificador de vídeo 20 na FIG. 2.
[0196] A unidade de decodificação de entropia 304 é configurada para decodificar com entropia os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na FIG. 3), por exemplo, qualquer um ou todos de um parâmetro de predição inter, um parâmetro de predição intra, um parâmetro de filtro loop e/ou outro elemento de sintaxe (que são decodificados). A unidade de decodificação de entropia 304 é adicionalmente configurada para encaminhar o parâmetro de predição inter, o parâmetro de predição intra e/ou o outro elemento de sintaxe para a unidade de processamento de predição 360. O decodificador de vídeo 30 pode receber os elementos de sintaxe em um nível de fatia de vídeo e/ou um nível de bloco de vídeo.
[0197] A unidade de quantização inversa 310 pode ter uma mesma função que a unidade de quantização inversa 110. A unidade de processamento de transformada inversa 312 pode ter uma mesma função que a unidade de processamento de transformada inversa 212. A unidade de reconstrução 314 pode ter uma mesma função que a unidade de reconstrução 214. O buffer 316 pode ter uma mesma função que o buffer 216. O filtro loop 320 pode ter uma mesma função que o filtro loop 220. O buffer de imagem decodificado 330 pode ter uma mesma função que o buffer de imagem decodificado 230.
[0198] A unidade de processamento de predição 360 pode incluir a unidade de predição inter 344 e a unidade de predição intra 354. A unidade de predição inter 344 pode ser similar à unidade de predição inter 244 em funções e a unidade de predição intra 354 pode ser similar à unidade de predição intra 254 em funções. A unidade de processamento de predição 360 é usualmente configurada para realizar predição de bloco e/ou obter um bloco de predição 365 a partir dos dados codificados 21, e receber ou obter (explícita ou implicitamente) um parâmetro e/ou informações relacionadas à predição sobre um modo de predição selecionado, por exemplo, a partir da unidade de decodificação de entropia 304.
[0199] Quando uma fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de processamento de predição 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados que são de um bloco previamente decodificado de um quadro ou imagem atual. Quando um quadro de vídeo é codificado como uma fatia codificada de modo inter (B ou P), a unidade de predição inter 344 (por exemplo, uma unidade de compensação de movimento) da unidade de processamento de predição 360 é configurada para gerar o bloco de predição 365 para um bloco de vídeo da fatia de vídeo atual com base em um vetor de movimento e outro elemento de sintaxe que é recebido a partir da unidade de decodificação de entropia 304. Para predição inter, o bloco de predição pode ser gerado a partir de uma das imagens de referência em uma lista de imagens de referência. O decodificador de vídeo 30 pode construir a lista de quadros de referência: uma lista 0 e uma lista 1, por meio de uso de uma técnica de construção padrão com base em uma imagem de referência armazenada no DPB 330.
[0200] A unidade de processamento de predição 360 é configurada para determinar o bloco de predição para o bloco de vídeo da fatia de vídeo atual analisando o vetor de movimento e o outro elemento de sintaxe, e usar o bloco de predição para gerar um bloco de predição para um bloco de vídeo atual que está sendo decodificado. Em um exemplo deste pedido, a unidade de processamento de predição 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou predição inter) usado para codificar o bloco de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, uma fatia B, uma fatia P ou uma fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, um vetor de movimento para cada bloco de vídeo da fatia codificado de modo inter, um estado de predição inter para cada bloco de vídeo da fatia codificada de modo inter, e outras informações para decodificar o bloco de vídeo da fatia de vídeo atual. Em outro exemplo desta revelação, os elementos de sintaxe recebidos pelo decodificador de vídeo 30 de um fluxo de bits incluem elementos de sintaxe em um ou mais de um conjunto de parâmetros adaptativos (adaptive parameter set, APS), um conjunto de parâmetros de sequência (sequence parameter set, SPS), um conjunto de parâmetros de imagem (picture parameter set, PPS) ou um cabeçalho de fatia.
[0201] A unidade de quantização inversa 310 pode ser configurada para quantizar inversamente (isto é, desquantizar) um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação de entropia 304. Um processo de quantização inverso pode incluir: usar um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo, para determinar um grau de quantização que deve ser aplicado e, do mesmo modo, determinar um grau de quantização inversa que deve ser aplicado.
[0202] A unidade de processamento de transformada inversa 312 é configurada para aplicar uma transformada inversa (por exemplo, uma DCT inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente similar) ao coeficiente de transformada para gerar um bloco residual em um domínio de pixel.
[0203] A unidade de reconstrução 314 (por exemplo, o somador 314) é configurada para adicionar um bloco de transformada inversa 313 (isto é, um bloco residual reconstruído 313) ao bloco de predição 365 para obter um bloco reconstruído 315 em um domínio de amostra, por exemplo, adicionando um valor de amostra do bloco residual reconstruído 313 e um valor de amostra do bloco de predição 365.
[0204] A unidade de filtro loop 320 (durante um loop de codificação ou depois de um loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, para suavizar a transição de pixel ou melhorar a qualidade de vídeo. Em um exemplo, a unidade de filtro loop 320 pode ser configurada para realizar qualquer combinação de técnicas de filtragem descritas abaixo. A unidade de filtro loop 320 é destinada a representar um ou mais filtros loop incluindo, por exemplo, um filtro de desblocagem, um filtro de deslocamento adaptativo à amostra (sample-adaptive offset, SAO) ou outro filtro, tal como um filtro bilateral, um filtro loop adaptativo (adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro colaborativo. Embora a unidade de filtro loop 320 seja mostrada na FIG. 3 como um filtro in-loop, em outra configuração, a unidade de filtro loop 320 pode ser implementada como um filtro de post-loop.
[0205] O bloco de vídeo decodificado 321 em um determinado quadro ou imagem é, em seguida, armazenado no buffer de imagem decodificado 330 que armazena uma imagem de referência usada para compensação de movimento subsequente.
[0206] O decodificador 30 é configurado para, por exemplo, emitir uma imagem decodificada 31 através de uma saída 332, para apresentação para um usuário ou visualização por um usuário.
[0207] Outras variações do decodificador de vídeo 30 podem ser configuradas para decodificar um fluxo de bits comprimido. Por exemplo, o decodificador 30 pode gerar um fluxo de vídeo emitido sem o processamento pela unidade de filtro loop 320. Por exemplo, um decodificador 30 não baseado em transformada pode quantizar inversamente um sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para alguns blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 que são combinadas em uma única unidade.
[0208] Especificamente, nesta modalidade deste pedido, o decodificador 30 é configurado para implementar um método de decodificação descrito na seguinte modalidade.
[0209] Deve ser entendido que uma operação de divisão de bloco pode ser realizada pela unidade de processamento de predição 360 ou uma unidade independente (não mostrada na figura). A unidade de processamento de predição 360 pode ser configurada para: particionar o bloco de imagem 203 em menores partições de bloco ou sub-blocos, por exemplo, por meio de uso iterativamente de particionamento de quadtree (quad-tree, QT), particionamento de árvore binária (binary-tree, BT), particionamento de árvore tripla (triple-tree, TT), particionamento de quadtree estendido (EQT, Extended Quad-Tree) ou qualquer combinação dos mesmos e para realizar, por exemplo, predição em cada uma das partições de bloco ou sub-blocos, onde um modo de particionamento pode ser determinado, de acordo com uma regra predefinida, ou determinado com base em um elemento de sintaxe analisado que é usado para indicar o modo de particionamento; e configurado para, por exemplo, predizer cada partição de bloco ou sub-bloco. A seleção de modo inclui a seleção de uma estrutura de árvore do bloco de imagem particionado 203 e a seleção de um modo de predição aplicado a cada uma das partições de bloco ou sub-blocos.
[0210] Deve ser entendido que outras variações estruturais do decodificador de vídeo 30 podem ser configuradas para decodificar o fluxo de bits de vídeo codificado. Por exemplo, o decodificador de vídeo 30 pode gerar um fluxo de vídeo emitido sem o processamento pelo filtro 320. Alternativamente, para alguns blocos de imagem ou quadros de imagem, a unidade de decodificação de entropia 304 do decodificador de vídeo 30 não obtém um coeficiente quantizado através de decodificação e, consequentemente, a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 não precisam realizar o processamento. O filtro loop 320 é opcional. Em um caso de compressão sem perdas, a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 são opcionais. Deve ser entendido que, de acordo com diferentes cenários de aplicação, a unidade de predição inter e a unidade de predição intra podem ser ativadas seletivamente.
[0211] Deve ser entendido que, no codificador 20 e no decodificador 30 neste pedido, um resultado de processamento para um estágio pode ser emitido para um próximo estágio depois de ser processado adicionalmente. Por exemplo, depois de um estágio, tal como filtragem de interpolação, a derivação de vetor de movimento ou filtragem loop, uma operação, tal como corte ou deslocamento, é realizada adicionalmente em um resultado de processamento do estágio correspondente.
[0212] Por exemplo, um vetor de movimento de um ponto de controle de um bloco de imagem atual ou um vetor de movimento de um sub-bloco de um bloco de imagem atual derivado de um vetor de movimento de um bloco codificado afim vizinho pode ser processado. Isto não é limitado neste pedido.
Por exemplo, um valor de um vetor de movimento é restrito a estar dentro de uma faixa de largura de bit específica. Assumindo que uma largura de bit permitida de um vetor de movimento é bitDepth, um valor do vetor de movimento varia de -2^(bitDepth-1) a 2^(bitDepth-1)-1, onde o símbolo “^” representa exponenciação. Se bitDepth for 16, a faixa de valor é de -32768 a 32767. Se bitDepth for 18, a faixa de valor é de -131072 a 131071. Para outro exemplo, os valores dos vetores de movimento (por exemplo, vetores de movimento MV de quatro sub-blocos 4×4 em um bloco de imagem 8×8) são restritos, de modo que uma diferença máxima entre partes inteiras dos MVs dos quatro sub-blocos 4×4 não exceda N pixels, por exemplo, não exceda um pixel.
[0213] As seguintes duas maneiras podem ser usadas para restringir o vetor de movimento a estar dentro de uma largura de bit específica.
[0214] Maneira 1: Um bit de estouro mais significante do vetor de movimento é removido: ux=(vx+2bitDepth) % 2bitDepth vx=(ux >= 2bitDepth-1) ? (ux−2bitDepth) : ux uy=(vy+2bitDepth) % 2bitDepth vy=(uy >= 2bitDepth-1) ? (uy−2bitDepth) : uy
[0215] vx representa um componente horizontal do vetor de movimento do bloco de imagem ou do sub-bloco do bloco de imagem, vy representa um componente vertical do vetor de movimento do bloco de imagem ou do sub-bloco do bloco de imagem, ux e uy representam valores intermediários e bitDepth representa uma largura de bit.
[0216] Por exemplo, um valor de vx é -32769, e 32767 é derivado, de acordo com as seguintes fórmulas. Um valor é armazenado em um computador em uma representação de complemento de dois, uma representação de complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), e o processamento realizado por um computador para o estouro é descartar um bit mais significante. Portanto, um valor de vx é 0111,1111,1111,1111, isto é, 32767.
Este valor é compatível com o resultado derivado através de processamento, de acordo com as fórmulas.
[0217] Maneira 2: O corte é realizado no vetor de movimento, como mostrado nas seguintes fórmulas: vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
[0218] vx representa um componente horizontal do vetor de movimento do bloco de imagem ou do sub-bloco do bloco de imagem; vy representa um componente vertical do vetor de movimento do bloco de imagem ou do sub-bloco do bloco de imagem; x, y e z correspondem aos três valores de entrada de um processo de fixação de MV clip3; e clip3 é definido para indicar o corte de um valor de z para uma faixa [x, y]. x ; z<x Clip3(x, y, z) = �y ; z>y z ; de outro modo
[0219] A FIG. 4 é um diagrama estrutural esquemático de um dispositivo de codificação de vídeo 400 (por exemplo, um dispositivo de codificação de vídeo 400 ou um dispositivo de decodificação de vídeo 400), de acordo com uma modalidade deste pedido. O dispositivo de codificação de vídeo 400 é adequado para implementar uma modalidade descrita neste relatório descritivo. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador de vídeo (por exemplo, o decodificador 30 na FIG. 1A) ou um codificador de vídeo (por exemplo, o codificador 20 na FIG. 1A). Em outra modalidade, o dispositivo de codificação de vídeo 400 pode ser um ou mais componentes do decodificador 30 na FIG. 1A ou do codificador 20 na FIG. 1A.
[0220] O dispositivo de codificação de vídeo 400 inclui: portas de ingresso 410 e uma unidade de receptor (Rx) 420 que são configuradas para receber dados; um processador, uma unidade lógica ou uma unidade de processamento central (CPU) 430 que é configurada para processar dados; uma unidade de transmissor (Tx) 440 e portas de egresso 450 que são configuradas para transmitir dados; e uma memória 460 configurada para armazenar dados.
O dispositivo de codificação de vídeo 400 pode incluir adicionalmente um componente óptico para elétrico e um componente elétrico para óptico (EO) que são acoplados às portas de ingresso 410, à unidade de receptor 420, à unidade de transmissor 440 e às portas de egresso 450, para o egresso ou ingresso de um sinal óptica ou um sinal elétrico.
[0221] O processador 430 é implementado por hardware e software.
O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, processadores de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 se comunica com as portas de ingresso 410, a unidade de receptor 420, a unidade de transmissor 440, as portas de egresso 450 e a memória 460. O processador 430 inclui um módulo de codificação 470 (por exemplo, um módulo de codificação 470 ou um módulo de decodificação 470). O módulo de codificação/decodificação 470 implementa as modalidades reveladas neste relatório descritivo, para implementar o método fornecido nas modalidades deste pedido. Por exemplo, o módulo de codificação/decodificação 470 implementa, processa ou fornece várias operações de codificação. Portanto, a inclusão do módulo de codificação/decodificação 470 fornece uma melhora substancial para funções do dispositivo de codificação de vídeo 400 e afeta a comunicação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação/decodificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0222] A memória 460 inclui um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de estouro, para armazenar programas quando tais programas são seletivamente executados e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser volátil e/ou não volátil e pode ser uma memória somente de leitura (ROM), uma memória de acesso aleatório (RAM), uma memória endereçável por conteúdo ternário (ternary content-addressable memory, TCAM) e/ou uma memória de acesso aleatório estática (SRAM).
[0223] A FIG. 5 é o diagrama de bloco simplificado de um aparelho 500 que pode ser usado como um ou dois do dispositivo de origem 12 e do dispositivo de destino 14 na FIG. 1A, de acordo com uma modalidade de exemplo. O aparelho 500 pode implementar as tecnologias deste pedido. Em outras palavras, a FIG. 5 é um diagrama de bloco esquemático de uma implementação de um dispositivo de codificação ou um dispositivo de decodificação (um dispositivo de codificação 500, para abreviação), de acordo com uma modalidade deste pedido. O dispositivo de codificação 500 pode incluir um processador 510, uma memória 530 e um sistema de barramento 550. O processador e a memória são conectados através do sistema de barramento. A memória é configurada para armazenar uma instrução. O processador é configurado para executar a instrução armazenada na memória. A memória do dispositivo de codificação armazena o código de programa e o processador pode invocar o código de programa armazenado na memória para realizar vários métodos de codificação ou decodificação de vídeo descritos neste pedido e, em particular, vários novos métodos de decodificação. Para evitar a repetição, os detalhes não são descritos neste relatório.
[0224] Nesta modalidade deste pedido, o processador 510 pode ser uma unidade de processamento central (Central Processing Unit, “CPU”, para abreviação), ou o processador 510 pode ser outro processador de uso geral, um processador de sinal digital (DSP), um circuito integrado de aplicação específica
(ASIC), um arranjo de portas programáveis em campo (FPGA) ou outro dispositivo lógico programável, uma porta discreta ou dispositivo lógico transistor, um componente de hardware discreto ou semelhantes. O processador de uso geral pode ser um microprocessador ou pode ser qualquer processador convencional ou semelhantes.
[0225] A memória 530 pode incluir um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM). Qualquer outro tipo de dispositivo de armazenamento apropriado pode ser alternativamente usado como a memória 530. A memória 530 pode incluir código e dados 531 acessados pelo processador 510 através do barramento
550. A memória 530 pode incluir adicionalmente um sistema operacional 533 e programas de aplicativo 535. Os programas de aplicativo 535 incluem pelo menos um programa que permite que o processador 510 realize o método de codificação ou decodificação de vídeo (em particular, o método de decodificação descrito neste pedido) descrito neste pedido. Por exemplo, os programas de aplicativo 535 podem incluir aplicativos 1 a N, e inclui adicionalmente um aplicativo de codificação ou decodificação de vídeo (um aplicativo de codificação de vídeo, para abreviação) que é usado para realizar o método de codificação ou decodificação de vídeo descrito neste pedido.
[0226] O sistema de barramento 550 pode não incluir apenas um barramento de dados, mas também incluir um barramento de força, um barramento de controle, um barramento de sinal de estado e semelhantes.
Entretanto, para a descrição clara, vários tipos de barramentos na figura são marcados como o sistema de barramento 550.
[0227] Opcionalmente, o dispositivo de codificação 500 pode incluir adicionalmente um ou mais dispositivos de saída, por exemplo, um display 570.
Em um exemplo, o display 570 pode ser um display sensível ao toque que combina um display e um elemento sensível ao toque que detecta de maneira operável a entrada de toque. O display 570 pode ser conectada ao processador 510 através do barramento 550.
[0228] O seguinte descreve em detalhes as soluções nas modalidades deste pedido.
[0229] Em um padrão de codificação de vídeo, um quadro de imagem é particionado em unidades de árvore de codificação (CTU) que não se sobrepõem. Um tamanho de um CTU pode ser definido como 64×64 (o tamanho da CTU pode ser alternativamente definido para outro valor, por exemplo, o tamanho da CTU é aumentado para 128×128 ou 256×256). Uma CTU 64×64 é uma matriz de pixel retangular com 64 linhas das quais cada linha inclui 64 pixels, e cada pixel inclui um componente de luma e/ou um componente de croma. Uma CTU representa uma unidade de árvore de codificação (coding tree unit). Uma imagem inclui uma pluralidade de CTUs e uma CTU geralmente corresponde a uma região de imagem quadrada, e inclui um pixel de luma e um pixel de croma (ou pode incluir apenas um pixel de luma, ou pode incluir apenas um pixel de croma) na região da imagem. A CTU inclui adicionalmente os elementos de sintaxe. Estes elementos de sintaxe indicam como dividir a CTU em pelo menos uma unidade de codificação (coding unit, CU), e um método para decodificação cada unidade de codificação para obter uma imagem reconstruída.
[0230] Uma CU representa uma unidade de codificação. A CU geralmente corresponde a uma região retangular A×B, e inclui pixels de luma A×B e os pixels de croma correspondentes aos pixels de luma A×B. A representa a largura do retângulo, B representa a altura do retângulo, e A e B podem ser iguais ou diferentes. Os valores de A e B são geralmente 2 elevado à potência de um número inteiro, por exemplo, 256, 128, 64, 32, 16, 8 e 4. O processamento de decodificação pode ser realizado em uma unidade de codificação para obter uma imagem reconstruída da região retangular A×B. O processamento de decodificação geralmente inclui o processamento, tal como predição,
desquantização e transformada inversa, para gerar uma imagem de predição e um residual. A imagem de predição e o residual são adicionados para obter uma imagem reconstruída.
[0231] Uma quadtree (QT, Quad-Tree) é uma estrutura de árvore. Um nó pode ser dividido em quatro nós filhos. Em um padrão de codificação de vídeo, um modo de divisão de CTU com base em quadtree é usado. A CTU serve como um nó raiz, e cada nó corresponde a uma região quadrada. Para ser específico, a região quadrada é dividida em quatro regiões quadradas com um mesmo tamanho (o comprimento e a largura da região quadrada obtida através de divisão são, respectivamente, a metade do comprimento e da largura da região antes da divisão). Cada região corresponde a um nó, como mostrado na FIG. 6(a). Um nó não pode ser adicionalmente dividido (neste caso, uma região correspondente ao nó é uma CU) ou o nó é adicionalmente dividido em nós de nível inferior através de QT, BT, TT ou EQT.
[0232] Uma árvore binária (BT, Binary Tree) é uma estrutura de árvore. Um nó pode ser dividido em dois nós filhos. A divisão em dois nós filhos pode ser realizada em uma das seguintes duas maneiras: (1) divisão de árvore binária horizontal: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho: uma região superior e uma região inferior, onde cada região corresponde a um nó, como mostrado na FIG. 6(b); ou (2) divisão de árvore binária vertical: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho: uma região esquerda e uma região direita, onde cada região corresponde a um nó, como mostrado na FIG. 6(c). No método de codificação de divisão de árvore binária, um nó na estrutura de árvore binária não pode ser dividido (neste caso, uma região correspondente ao nó é uma CU), ou o nó é adicionalmente dividido em nós de nível inferior através de BT, TT ou EQT.
[0233] Uma árvore ternária (Ternary Tree, TT para abreviação) é uma estrutura de árvore. Um nó pode ser dividido em três nós filhos. Em um método de codificação com base em árvore ternária existente, um nó na estrutura de árvore ternária não pode ser dividido, ou o nó é dividido em três nós de nível inferior. A divisão nos três nós pode ser realizada em uma das seguintes duas maneiras: (1) divisão de árvore ternária horizontal: divisão de uma região correspondente ao nó em três regiões: uma região superior, uma região média e uma região inferior, onde cada região corresponde a um nó, e as alturas das três regiões são, respectivamente, 1/4, 1/2 e 1/4 da altura do nó, como mostrado na FIG. 6(d); ou (2) divisão de árvore ternária vertical: divisão de uma região correspondente ao nó em três regiões: uma região esquerda, uma região média e uma região direita, onde cada região corresponde a um nó, e as larguras das três regiões são, respectivamente, 1/4, 1/2 e 1/4 da altura do nó, como mostrado na FIG. 6(e). No método de codificação de divisão de árvore ternária, um nó na estrutura de árvore ternária não pode ser dividido (neste caso, uma região correspondente ao nó é uma CU), ou o nó é adicionalmente dividido em nós de nível inferior através de BT, TT ou EQT.
[0234] Uma quadtree estendida (EQT, Extended Quad-Tree) é uma estrutura de divisão em forma de “I”. Um nó pode ser dividido em quatro nós filhos. A divisão em três nós pode ser realizada em uma das seguintes duas maneiras: (1) divisão de quadtree horizontal: divisão de uma região correspondente ao nó em três regiões: uma região superior, uma região média e uma região inferior, onde cada região corresponde a um nó, as alturas das três regiões da região superior, da região média esquerda, da região média direita e da região inferior são, respectivamente, 1/4, 1/2, 1/2 e 1/4 da altura do nó, e a largura da região média esquerda e a largura da região média direita são, respectivamente, 1/2 e 1/2 da altura do nó, como mostrado na FIG. 6(f); ou (2) divisão de quadtree vertical: divisão de uma região correspondente ao nó em três regiões: uma região esquerda, uma região média superior, uma região média inferior e uma região direita, onde cada região corresponde a um nó, as larguras das três regiões da região esquerda, da região média e da região direita são, respectivamente, 1/4, 1/2, 1/2 e 1/4 da altura do nó, e a largura da região média superior e a largura da região média inferior são, respectivamente, 1/2 e 1/2 da altura do nó, como mostrado na FIG. 6(g). No método de codificação de quadtree estendida, um nó na estrutura de quadtree estendida não pode ser dividido ou o nó é adicionalmente dividido em nós de nível inferior através de BT, TT ou EQT.
[0235] A decodificação de vídeo (video decoding) é um processo de processamento de rearmazenamento um fluxo de bits de vídeo para uma imagem reconstruída, de acordo com uma regra de sintaxe específica e um método de processamento.
[0236] A codificação de vídeo (video coding) é um processo de processamento de compressão de uma sequência de imagens em um fluxo de bits.
[0237] A codificação de vídeo (video coding) é um termo abrangente de codificação de vídeo e decodificação de vídeo. Uma tradução chinesa de codificação de vídeo é a mesma que uma tradução chinesa de codificação de vídeo.
[0238] VTM é um novo software de referência de codec desenvolvido pelo JVET.
[0239] Em um padrão de codificação de vídeo, um quadro de imagem é particionado em unidades de árvore de codificação (CTU) que não se sobrepõem. Um tamanho de uma CTU pode ser definido como 64×64 (o tamanho da CTU pode ser alternativamente definido para outro valor, por exemplo, o tamanho da CTU é aumentado para 128×128 ou 256×256). Uma CTU 64×64 é uma matriz de pixel retangular com 64 linhas das quais cada linha inclui 64 pixels, e cada pixel inclui um componente de luma e/ou um componente de croma.
[0240] Um método de divisão de CTU com base em quadtree (quad- tree, QT para abreviação) é usado, a CTU serve como um nó raiz (root) de uma quadtree, e a CTU é dividida recursivamente em vários nós folhas (leaf node) no modo de divisão de quadtree. Um nó corresponde a uma região de imagem. Se o nó não for dividido, o nó é referido como um nó folha, e uma região de imagem correspondente ao nó forma uma CU. Se o nó for adicionalmente dividido, uma região de imagem correspondente ao nó é dividida em quatro regiões com um mesmo tamanho (os comprimentos e as larguras das quatro regiões são, respectivamente, metade do comprimento e da largura da região antes da divisão), e cada região corresponde a um nó. Se estes nós forem divididos adicionalmente precisam ser determinados separadamente. Se um nó for adicionalmente dividido é indicado por uma flag de divisão split_cu_flag que está em um fluxo de bits e que corresponde ao nó. Uma profundidade de quadtree (qtDepth) de um nó raiz é 0, e uma profundidade de quadtree de um nó filho é uma profundidade de quadtree de um nó pai mais 1. Para brevidade da descrição, no seguinte, um tamanho e um formato de um nó são um tamanho e um formato de uma região de imagem correspondente ao nó.
[0241] Mais especificamente, para um nó de CTU 64×64 (a profundidade de quadtree é 0), o nó de CTU 64×64 não pode ser dividido com base em split_cu_flag correspondente ao nó de CTU 64×64, e o nó de CTU forma uma CU 64×64; ou o nó de CTU 64×64 é dividido em quatro nós 32×32 (a profundidade de quadtree é 1). Cada um dos quatro nós 32×32 pode ser adicionalmente dividido ou não adicionalmente dividido com base em split_cu_flag correspondente ao nó. Se um nó 32×32 for adicionalmente dividido, quatro nós 16×16 são gerados (a profundidade de quadtree é 2). Em analogia, a divisão termina até que todos os nós não sejam adicionalmente dividido, e tal CTU é dividida em um grupo de CUs. Um tamanho mínimo (size) de uma CU é identificado em uma SPS, por exemplo, 8×8 representa o tamanho mínimo da CU. No processo de divisão recursivo anterior, se um tamanho de um nó for igual ao tamanho de CU mínimo (minimum CU size), o nó não é adicionalmente dividido por padrão e uma flag de divisão do nó não precisa ser incluído em um fluxo de bits.
[0242] Depois de ser aprendido, através de análise, que um nó é um nó folha, o nó folha é uma CU, e informações de codificação (incluindo informações, tais como um modo de predição e um coeficiente de transformada da CU, por exemplo, uma estrutura de sintaxe coding_unit()) correspondente à CU são analisadas adicionalmente. Em seguida, o processamento de decodificação, tal como predição, desquantização, transformada inversa e filtragem loop são realizadas na CU com base nas informações de codificação, para gerar uma imagem reconstruída correspondente à CU. Uma CTU pode ser dividida em um grupo de CUs com tamanhos apropriados com base em uma característica de imagem local por meio de uso da estrutura de quadtree. Por exemplo, uma região de suavização é dividida em CUs maiores e uma região com textura rica é dividida em CUs menores.
[0243] Um modo de divisão em que uma CTU é dividida em um grupo de CUs corresponde a uma árvore de codificação (coding tree). Uma árvore de codificação específica que deve ser usada para uma CTU é usualmente determinada com base em uma tecnologia de otimização de distorção de taxa (rate distortion optimization, RDO) de um codificador. O codificador tenta usar uma pluralidade de modos de divisão de CTU, onde cada modo de divisão corresponde a um custo de distorção de taxa (custo de RD). O codificador compara os custos de RD de vários modos de divisão que foram tentados usar, e usa um modo de divisão com um custo de RD menor como um modo de divisão ideal da CTU para codificação real da CTU. Os modos de divisão CTU que o codificador foi tentado usar precisam estar em conformidade com uma regra de divisão especificada por um decodificador, de modo que o decodificador possa identificar corretamente os modos de divisão de CTU.
[0244] Em um vídeo de conteúdo de display, uma imagem usualmente inclui o mesmo conteúdo. Por exemplo, em uma imagem incluindo dígitos ou gráficos, dígitos iguais ou gráficos iguais podem ser encontrados em torno de um bloco atual, como mostrado na FIG. 7. Portanto, se um bloco que pode ser referenciado pode ser encontrado em torno do bloco atual durante a codificação do bloco atual, um pixel do bloco reconstruído é diretamente referenciado. Desta maneira, uma taxa de compressão de codificação é bastante aumentada. Uma tecnologia de cópia intra bloco (Intra Block Copy, IBC) é uma tecnologia de predição intra por meio de uso de que um mesmo bloco é pesquisado no conteúdo de display atual. Por exemplo, um elemento de sintaxe pred_mode_ibc_flag na Tabela 2 pode ser usado para indicar se um modo de predição IBC é usado para uma unidade de codificação atual.
[0245] Com base em divisão de quadtree, o modo de divisão de árvore binária (binary tree, BT para abreviação) e o modo de divisão e quadtree estendida (Extended Quad-Tree, EQT para abreviação) podem ser usados adicionalmente.
[0246] Um nó é dividido em dois nós filhos através de divisão de árvore binária. Especificamente, existem dois modos de divisão de árvore binária: (1) divisão de árvore binária horizontal: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho (isto é, a largura permanece inalterada, e as altura torna-se a metade da altura da região antes da divisão), onde cada região corresponde a um nó, como mostrado na FIG. 6(b); e (2) divisão de árvore binária vertical: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho: uma região esquerda e uma região direita (isto é, as alturas permanecem inalterada e as larguras se tornam metade da largura da região antes da divisão), como mostrado na FIG. 6(c).
[0247] Um nó é dividido em quatro nós filhos através de divisão de quadtree estendida. Especificamente, existem dois modos de divisão de quadtree estendida: (1) divisão de quadtree horizontal: divisão de uma região correspondente ao nó em três regiões: uma região superior, uma região média e uma região inferior, onde cada região corresponde a um nó, as alturas da região superior, da região media esquerda, da região média direita e da região inferior são, respectivamente, 1/4, 1/2, 1/2 e 1/4 da altura do nó, e a largura da região média esquerda e a largura da região média direita são, respectivamente, 1/2 e 1/2 da altura do nó, como mostrado na FIG. 6(f); e (2) divisão de quadtree vertical: divisão de uma região correspondente ao nó em três regiões: uma região esquerda, uma região média superior, uma região média inferior e uma região direita, onde cada região corresponde a um nó, as larguras da região esquerda, da região média e da região direita são, respectivamente, 1/4, 1/2, 1/2 e 1/4 da altura do nó, e a largura da região média superior e a largura da região média inferior são, respectivamente, 1/2 e 1/2 da altura do nó, como mostrado na FIG. 6(g).
[0248] Um modo de divisão QT mais BT/EQT significa que um nó em uma árvore de codificação de primeiro nível pode ser dividido em nós filhos apenas através de QT, que um nó folha na árvore de codificação de primeiro nível é um nó raiz de uma árvore de codificação de segundo nível, que um nó na árvore de codificação de segundo nível pode ser dividido em nós filhos através de BT ou EQT, e que um nó folha na árvore de codificação de segundo nível é uma unidade de codificação. Deve ser observado que quando o modo de divisão BT ou EQT é usado para um nó folha, apenas o modo de divisão BT ou EQT é usado para o nó folha, mas o modo de divisão QT não é permitido ser usado para o nó folha.
[0249] Alternativamente, com base em divisão de quadtree, o modo de divisão de árvore binária (binary tree, BT para abreviação) e o modo de divisão de árvore ternária (ternary tree, TT para abreviação) podem ser usados adicionalmente.
[0250] Um nó é dividido em dois nós filhos através de divisão de árvore binária. Especificamente, existem dois modos de divisão de árvore binária: (1) divisão de árvore binária horizontal: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho (isto é, a largura permanece inalterada, e as alturas tornam-se metade da altura da região antes da divisão), onde cada região corresponde a um nó, como mostrado na FIG. 6(b); e (2) divisão de árvore binária vertical: divisão de uma região correspondente ao nó em duas regiões com um mesmo tamanho: uma região esquerda e uma região direita (isto é, as alturas permanecem inalteradas, e as larguras tornam-se metade da largura da região antes da divisão), como mostrado na FIG. 6(c).
[0251] Um nó é dividido em dois nós filhos através de divisão de árvore ternária. Especificamente, existem dois modos de divisão de árvore binária: (1) divisão de árvore ternária horizontal: divisão de uma região correspondente ao nó em três regiões: uma região superior, uma região média, e uma região inferior, onde cada região corresponde a um nó, e as alturas da região superior, da região média e da região inferior são, respectivamente, 1/4, 1/2 e 1/4 da altura do nó, como mostrado na FIG. 6(d); e (2) divisão de árvore ternária vertical: divisão de uma região correspondente ao nó em três regiões: uma região esquerda, uma região média, e uma região direita, onde cada região corresponde a um nó, e as larguras da região esquerda, da região média e da região direita são, respectivamente, 1/4, 1/2 e 1/4 da altura do nó, como mostrado na FIG. 6(e).
[0252] Um modo de divisão de QT mais BT/TT, brevemente referido como QT-BTT, significa que um nó em um árvore de codificação de primeiro nível pode ser dividido em nós filhos apenas através de QT; que um nó folha na árvore de codificação de primeiro nível é um nó raiz de um árvore de codificação de segundo nível; que um nó na árvore de codificação de segundo nível pode ser dividido em nós filhos através de um dos quatro modos de divisão: divisão de árvore binária horizontal, divisão de árvore binária vertical, divisão de árvore ternária horizontal e divisão de árvore ternária vertical; e que um nó folha no árvore de codificação de segundo nível é uma unidade de codificação.
[0253] Uma parte de uma estrutura de sintaxe de nível de CU pode ser mostrada na Tabela 1. Se um nó atual não for adicionalmente dividido em nós filhos, o nó atual é uma unidade de codificação, e um bloco de predição da unidade de codificação é analisado com base na seguinte estrutura de sintaxe.
[0254] skip_flag representa uma flag de um modo de salto. Quando um valor de skip_flag for 1, indica que o modo de salto é usado para uma CU atual, ou quando um valor de skip_flag for 0, indica que o modo de salto não é usado para uma CU atual.
[0255] merge_flag representa uma flag de um modo direto. Quando um valor de merge_flag for 1, indica que o modo de mesclagem é usado para a CU atual, ou quando um valor de merge_flag for 0, indica que o modo de mesclagem não é usado para a CU atual.
[0256] cu_pred_mode representa uma flag de modo de predição de unidade de codificação. Quando um valor de cu_pred_mode for 1, indica que um modo de predição intra é usado para uma unidade de predição atual, ou quando um valor de cu_pred_mode for 0, indica que um modo de predição inter comum é usado para uma unidade de predição atual.
Tabela 1 coding_unit( x0, y0, uiDepth, uiWidth, uiHeight ) { … skip_flag … if ( ! skipFlag ) { merge_flag … } if ( ! mergeFlag ) cu_pred_mode … }
[0257] Uma parte de uma estrutura de sintaxe de nível de CU pode ser alternativamente mostrada na Tabela 2. A Tabela 2 é meramente um exemplo. Um significado de cu_skip_flag na Tabela 2 é o mesmo que o significado de skip_flag na Tabela 1, e um significado de pred_mode_flag na Tabela 2 é o mesmo como o significado de cu_pred_mode na Tabela 1.
[0258] cu_skip_flag representa uma flag de um modo de salto.
Quando um valor de cu_skip_flag for 1, indica que o modo de salto é usado para uma CU atual, ou quando um valor de cu_skip_flag for 0, indica que o modo de salto não é usado para uma CU atual.
[0259] general_merge_flag representa uma flag de um modo de mesclagem. Quando um valor de general_merge_flag for 1, indica que o modo de mesclagem é usado para a CU atual, ou quando um valor de general_merge_flag for 0, indica que o modo de mesclagem não é usado para a CU atual.
[0260] pred_mode_flag representa uma flag de modo de predição de unidade de codificação. Quando um valor de pred_mode_flag for 1, indica que um modo de predição intra é usado para a unidade de codificação atual, ou quando um valor de pred_mode_flag for 0, indica que um modo de predição inter comum é usado para a unidade de codificação atual. Se o valor de pred_mode_flag for 1, CuPredMode[x0][y0] é MODE_INTRA. Se o valor de pred_mode_flag for 0, CuPredMode[x0][y0] é MODE_INTER.
[0261] Quando um valor de pred_mode_ibc_flag for 1, indica que o modo de predição IBC é usado para a unidade de codificação atual, ou quando um valor de pred_mode_ibc_flag for 0, indica que o modo de predição IBC não é usado para a unidade de codificação atual. Se o valor de pred_mode_ibc_flag for 1, CuPredMode[x0][y0] é MODE_IBC.
[0262] CuPredMode[x0][y0] representa um modo de predição da unidade de codificação atual, e (x0, y0) representa uma localização da unidade de codificação atual em uma imagem atual.
Tabela 2 coding_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor if(slice_type != I || sps_ibc_enabled_flag ) { if( treeType != DUAL_TREE_CHROMA ) cu_skip_flag[x0][y0] ae(v) if( cu_skip_flag[x0][y0] == 0 && slice_type != I ) pred_mode_flag ae(v) if( ( ( slice_type == I && cu_skip_flag[x0][y0] ==0 ) || ( slice_type != I && ( CuPredMode[x0][y0] != MODE_INTRA || ( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[x0][y0] == 0 ) ) ) ) && sps_ibc_enabled_flag && ( cbWidth != 128 || cbHeight != 128 ) ) pred_mode_ibc_flag ae(v) … } if( CuPredMode[x0][y0] == MODE_INTRA ) { … } else if( treeType != DUAL_TREE_CHROMA ) { /* MODE_INTER or MODE_IBC */ if( cu_skip_flag[x0][y0] ==0 ) general_merge_flag [x0][y0] ae(v) … }
coding_unit(x0,y0,cbWidth,cbHeight,treeType) { Descritor }
[0263] Dois nós filhos, cada um com um tamanho de 4×M (ou M×4) são gerados pela divisão de um nó com um tamanho de 8×M (ou M×8) através de divisão de árvore binária vertical (ou divisão de árvore binária horizontal).
Similarmente, quatro nós filhos, cada um com um tamanho de 4×M (ou M×4) e um nó filho com um tamanho de 8×N (ou N×8) são gerados pela divisão de um nó com um tamanho de 16×M (ou M×16) através de divisão de quadtree vertical estendida (ou divisão de quadtree horizontal estendida). Similarmente, dois nós filhos, cada um com um tamanho de 4×M (ou M×4) e um nó filho com um tamanho de 8×M (ou M×8) são gerados pela divisão de um nó com um tamanho de 16×M (ou M×16) através de divisão de árvore ternária vertical (ou divisão de árvore ternária horizontal). Para um formato de dados de YUV 4:2:0, uma resolução de um componente de croma é 1/2 de uma resolução de um componente de luma. Em outras palavras, um nó 4×M inclui um bloco de luma 4×M e dois blocos de croma 2×(M/2). Para um decodificador de hardware, os custos de processamento de um bloco pequeno (especialmente um bloco pequeno com um tamanho de 2×2, 2×4 ou 2×8) são relativamente altos.
Entretanto, o bloco pequeno com o tamanho de 2×2 ou 2×4 é gerado em tal modo de divisão. Isto é desfavorável para a implementação do decodificador de hardware. É relativamente complexo para o decodificador de hardware processar o bloco pequeno. A complexidade se reflete especificamente nos seguintes três aspectos.
[0264] (1) Predição intra: Para aumentar uma velocidade de processamento, o hardware é projetado para geralmente processar 16 pixels por vez durante predição intra. Entretanto, um bloco pequeno com um tamanho, tal como 2×2, 2×4 ou 4×2 inclui menos do que 16 pixels. Como um resultado, o desempenho do processamento de predição intra se deteriora.
[0265] (2) Codificação de coeficiente: Em HEVC, a codificação de coeficiente de transformada é realizada com base em um grupo de coeficientes (coefficients group, CG) incluindo 16 coeficientes. Entretanto, o bloco pequeno com o tamanho, tal como 2×2, 2×4 ou 4×2 inclui quatro ou oito coeficientes de transformada. Como um resultado, um grupo de coeficientes incluindo quatro coeficientes ou oito coeficientes precisa ser adicionado para suportar a codificação de coeficiente para estes blocos pequenos. Como um resultado, a complexidade de implementação é aumentada.
[0266] (3) Predição inter: Predição inter para o bloco pequeno tem um requisito relativamente alto na largura de banda de dados. Como um resultado, uma velocidade de processamento de decodificação é afetada.
[0267] Quando um nó filho inclui um bloco de croma com um comprimento lateral de 2 em nós filhos que são gerados adicionalmente dividido um nó em um modo de divisão, um bloco de luma incluído no nó filho é adicionalmente dividido no modo de divisão, e o bloco de croma incluído no nó filho não é adicionalmente dividido. Desta maneira, um bloco de croma com o comprimento lateral de 2 não é gerado. Isto reduz um a taxa de transferência máxima do decodificador, e é favorável para implementação do decodificador.
Além disso, um método para determinar um modo de predição de bloco de croma com base em um modo de predição de bloco de luma é fornecido, de modo que a eficiência de codificação seja eficazmente melhorada.
[0268] Um método de predição de imagem fornecido neste pedido pode ser usado para um codificador de vídeo 18 ou um decodificador de vídeo 24 mostrado na FIG. 8. Deve ser observado que uma ou mais etapas nas seguintes várias modalidades são realizadas apenas no decodificador de vídeo 24 e são especialmente descritas em uma parte correspondente no seguinte.
[0269] O seguinte descreve o método de predição de imagem neste pedido em detalhes por meio de uso de modalidades específicas. Deve ser observado que as seguintes várias modalidades específicas podem ser combinadas entre si e o conteúdo igual ou similar não é descrito repetidamente em diferentes modalidades.
[0270] A FIG. 9 é um fluxograma esquemático de um primeiro método de predição de imagem, de acordo com uma modalidade deste pedido. Com referência à FIG. 9, o método de predição de imagem fornecido nesta modalidade inclui as seguintes etapas.
[0271] Etapa 101: Obter um modo de divisão de um nó atual.
[0272] Nesta modalidade, as informações de divisão do nó atual são analisadas primeiro, onde as informações de divisão são usadas para indicar a divisão ou não divisão do nó atual. Se as informações de divisão indicarem a divisão do nó atual, o modo de divisão do nó atual é obtido. O modo de divisão do nó atual inclui pelo menos uma da divisão de quadtree, divisão de árvore binária vertical, divisão de árvore binária horizontal, divisão de árvore ternária vertical e divisão de árvore ternária horizontal. Certamente, pode haver outro modo de divisão. Isto não é especificamente limitado nesta modalidade.
[0273] As informações de divisão do nó atual podem ser transmitidas em um fluxo de bits. As informações de divisão do nó atual podem ser analisadas de um elemento de sintaxe correspondente no fluxo de bits, e o modo de divisão específico pode ser determinado. O modo de divisão do nó atual pode ser alternativamente determinado, de acordo com outra regra predefinida. Isto não é especificamente limitado nesta modalidade.
[0274] Nesta modalidade, se as informações de divisão que são do nó atual e que são obtidas através de análise forem usadas para indicar a divisão do nó atual, as informações de divisão especificamente incluem um modo de divisão de um bloco de luma incluído no nó atual, e/ou um modo de divisão de um bloco de croma incluído no nó atual. O modo de divisão do bloco de luma incluído no nó atual pode ser igual ou diferente do modo de divisão do bloco de croma incluído no nó atual. Isto não é especificamente limitado nesta modalidade. Por exemplo, as informações de divisão são usadas para indicar que a divisão de quadtree é usada tanto para o bloco de luma quanto para o bloco de croma do nó atual. Alternativamente, as informações de divisão são usadas para indicar que a divisão de quadtree é usada para o bloco de luma do nó atual e a divisão de árvore binária vertical é usada para o bloco de croma do nó atual.
[0275] Etapa 102: Determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0276] O bloco de imagem com o tamanho predefinido pode ser um bloco de luma com um tamanho menor do que um limite. O limite pode ser uma quantidade de amostras de luma, tal como 128, 64 ou 32, ou uma quantidade de amostras de croma, tal como 32, 16 ou 8. Um tamanho do nó atual pode ser maior do que ou igual ao limite.
[0277] Quando for determinado que o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 103 é realizada. Quando for determinado que o bloco de imagem com o tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 104 é realizada.
[0278] Etapa 103: Realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0279] Deve ser observado que o nó atual nesta modalidade pode ser entendido como uma região de imagem ou bloco de imagem correspondente a um nó a ser processado ou nó a ser dividido. Todos os blocos de codificação cobertos pelo nó atual podem ser entendido como todos os blocos de codificação localizados em uma região correspondente ao nó atual. Todos os blocos de codificação nesta modalidade incluem um bloco de codificação de luma e um bloco de codificação de croma que são obtidos por divisão ou não divisão do nó atual. O bloco de codificação pode ser alternativamente uma unidade de codificação (coding unit).
[0280] Opcionalmente, a predição intra realizada pode ser um modo de predição intra comum (modo intra) ou um modo IBC (cópia intra bloco).
[0281] Opcionalmente, quando um tipo (slice type) de uma fatia em que o nó atual está localizado é um tipo intra (Intra), predição intra, em vez de predição inter, é realizada em todos os blocos de codificação cobertos pelo nó atual.
[0282] Em uma implementação, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual pode incluir: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
[0283] Em outras palavras, se for determinado que predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual não é dividido, para obter um bloco de codificação de croma (CB de croma para abreviação).
[0284] Pode ser restrito que os N nós de árvore de codificação de luma não são divididos adicionalmente ou isto não é restrito. Se o nó de árvore de codificação de luma for adicionalmente dividido, um modo de divisão do nó de árvore de codificação de luma é analisado para divisão recursiva. Quando o nó de árvore de codificação de luma não é adicionalmente dividido, o nó de árvore de codificação de luma corresponde a um bloco de codificação de luma (CB de luma para abreviação). Predição intra é realizada no CB de luma para obter um bloco de predição de luma correspondente ao CB de luma.
[0285] Predição intra é realizada no CB de croma para obter um bloco de predição de croma correspondente ao CB de croma. O bloco de predição de croma e o CB de croma têm um mesmo tamanho.
[0286] Em uma implementação, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual pode incluir: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição inter nos blocos de luma obtidos através de divisão; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter no bloco de codificação de croma.
[0287] Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual não é dividido, para obter um bloco de codificação de croma (CB de croma para abreviação).
[0288] Nesta modalidade, quando for determinado que predição intra é realizada em todos os blocos de codificação do nó atual, ou quando for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma incluído no nó atual é dividido no modo de divisão do nó atual, e o bloco de croma do nó atual não é adicionalmente dividido. De acordo com o método anterior, um bloco de croma pequeno em que predição intra é realizada não é gerado e, portanto, um caso em que predição intra é realizada no bloco de croma pequeno é evitado.
[0289] Em uma implementação, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual pode incluir: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição inter nos blocos de luma obtidos através de divisão; e dividir, no modo de divisão, o bloco de croma incluído no nó atual para obter blocos de croma obtidos através de divisão, e realizar predição inter nos blocos de croma obtidos através de divisão.
[0290] Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual é dividido no modo de divisão do bloco de croma, para obter M nós de árvore de codificação de croma.
N e M são inteiros positivos, e N e M podem ser iguais ou diferentes. Pode ser restrito que os N nós de árvore de codificação de luma e os M nós de árvore de codificação de croma não são divididos adicionalmente, ou isto não é restrito.
Quando nenhuma divisão adicional é realizada, os N nós de árvore de codificação de luma correspondem aos N CBs de luma do nó atual e os M nós de árvore de codificação de croma correspondem aos M CBs de croma do nó atual. Predição inter é realizada nos N CBs de luma para obter blocos de predição de luma correspondente, e predição inter é realizada nos M CBs de croma para obter blocos de predição de croma correspondentes.
[0291] Opcionalmente, quando predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual pode incluir: obter um sub-modo de divisão de um nó filho do nó atual, onde o nó filho inclui um bloco de luma e um bloco de croma; determinar se um bloco de luma com um primeiro tamanho predefinido é obtido por divisão do nó filho do nó atual no sub-modo de divisão; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó filho do nó atual no sub-modo de divisão, a divisão do nó filho do nó atual em um modo de divisão exceto no sub-modo de divisão, para obter um bloco de codificação correspondente, e realizar predição inter no bloco de codificação correspondente; ou usar o nó filho do nó atual como um bloco de codificação e realizar predição inter no nó filho do nó atual.
[0292] Em outras palavras, se o bloco de luma com o primeiro tamanho predefinido (4×4) for gerado pela divisão do nó filho do nó atual no sub- modo de divisão, o sub-modo de divisão do nó filho não é permitido, ou o nó filho não é permitido ser adicionalmente dividido, ou o nó filho é dividido no modo de divisão exceto no sub-modo de divisão. Por exemplo, se o tamanho do nó atual for 8×8 e dois nós 8×4 (ou 4×8) forem gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido.
[0293] Etapa 104: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0294] Especificamente, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma do nó atual e o bloco de croma do nó atual é dividido no modo de divisão do bloco de croma do nó atual.
[0295] Deve ser observado que, pelo fato de que “um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito” na etapa 104 pode ser entendido como: Todos os blocos de codificação cobertos pelo nó atual não podem ser preditos em um mesmo modo de predição, isto é, um modo de predição de cada bloco de codificação é analisado, e cada bloco de codificação é predito no modo de predição obtido através de análise.
[0296] Opcionalmente, depois da etapa 103 ou etapa 104, o método inclui adicionalmente:
[0297] Etapa 105: Analisar os blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0298] Etapa 106: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0299] Deve ser observado que as duas etapas anteriores podem ser usadas para o decodificador de vídeo 24 mostrado na FIG. 8.
[0300] O bloco de predição inclui um modo de predição (indicando o modo de predição intra ou um modo de não predição intra), o modo de predição intra, o modo de predição inter, informações de movimento e semelhantes. As informações de movimento podem incluir informações, tais como uma direção de predição (uma direção direta, indireta ou bidirecional), um índice de quadro de referência (índice de referência) e um vetor de movimento (motion vector).
[0301] As informações residuais incluem: uma flag de bloco codificado (coded block flag, cbf), um coeficiente de transformada, um tipo de transformada (tal como DCT-2, DST-7 ou DCT-8) e semelhantes. O tipo de transformada pode ser DCT-2 por padrão.
[0302] Se for restrito que apenas predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual, a análise de um bloco de predição do CB de luma obtido por divisão do nó atual inclui: ajustar respectivamente um valor de skip_flag, um valor de merge_flag e um valor de cu_pred_mode para 0, 0 e 1 por padrão (isto é, skip_flag, merge_flag e cu_pred_mode estão todos ausentes a partir do fluxo de bits), ou ajustar respectivamente um valor de skip_flag e um valor de cu_pred_mode para 0 e 1 por padrão (isto é, skip_flag e cu_pred_mode estão ambos ausentes a partir do fluxo de bits); e informações de análise sobre o modo de predição intra do CB de luma. A análise de um bloco de predição do CB de croma obtido por divisão do nó atual inclui: analisar o modo de predição intra do CB de croma. O modo de predição intra do CB de croma pode ser analisado, de acordo com o seguinte método: (1) analisar um elemento de sintaxe no fluxo de bits para obter o modo de predição intra; ou (2) ajustar diretamente o modo de predição intra para um modo de predição intra em um conjunto de modos de predição intra de croma, tal como um modo do modelo linear, um modo DM (modo derivado de croma,
DM), um modo IBC e semelhantes.
[0303] Se for restrito que apenas predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, a análise de um modo de predição de uma CU obtida por divisão do nó atual inclui: analisar skip_flag e/ou merge_flag, ajustar um valor de cu_pred_mode para 0 por padrão, e analisar um bloco de predição inter, tal como um índice de mesclagem (merge index), uma inter-direção (inter dir), um índice de referência (reference index), um índice de preditor de vetor de movimento (motion vector predictor index) e uma diferença de vetor de movimento (motion vector difference).
[0304] skip_flag é uma flag de um modo de salto. Quando o valor de skip_flag é 1, indica que o modo de salto é usado para uma CU atual, ou quando o valor de skip_flag for 0, indica que o modo de salto não é usado para uma CU atual. merge_flag é uma flag de um modo de mesclagem. Quando o valor de merge_flag é 1, indica que o modo de mesclagem é usado para a CU atual, ou quando o valor de merge_flag for 0, indica que o modo de mesclagem não é usado para a CU atual. cu_pred_mode representa uma flag de modo de predição de unidade de codificação. Quando o valor de cu_pred_mode é 1, indica que predição intra é realizada em uma unidade de predição atual, ou quando o valor de cu_pred_mode for 0, indica que predição inter comum (informações de identificação, tais como uma inter-direção, um índice de referência, um índice de preditor de vetor de movimento e uma diferença de vetor de movimento no fluxo de bits) é realizada em uma unidade de predição atual.
[0305] Opcionalmente, se for restrito que apenas predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, a análise de um bloco de predição do CB de luma obtido por divisão do nó atual inclui: analisar skip_flag e/ou merge_flag, ajustar um valor cu_pred_mode para 0 por padrão, e analisar um bloco de predição inter, tal como um índice de mesclagem (merge index), um inter-direção (inter dir), um índice de referência (reference index), um índice de preditor de vetor de movimento (motion vector predictor index), e uma diferença de vetor de movimento (motion vector difference). As informações de movimento de cada sub-bloco 4×4 no CB de luma são derivadas com base no bloco de predição inter obtido através de análise. Se for restrito que apenas predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, um bloco de predição do CB de croma obtido por divisão do nó atual não precisa ser analisado. O CB de croma é dividido em sub-blocos de 2×2 (o modo de divisão pode ser um modo de divisão S). As informações de movimento de cada sub-bloco de croma 2×2 são informações de movimento de uma região de luma 4×4 correspondente a cada sub-bloco de croma 2×2. No modo de divisão anterior, um bloco de croma pequeno em que predição intra é realizada não é gerado, e um bloco de transformada com um tamanho menor do que 16 pixels não é gerado. Portanto, o problema descrito anteriormente na predição inter e o problema na codificação de coeficiente é superado.
[0306] Opcionalmente, se for restrito que apenas predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, um bloco de predição do CB de croma obtido por divisão do nó atual não precisa ser analisado. O bloco de predição de croma e o bloco de codificação de croma têm um mesmo tamanho. As informações de movimento do CB de croma são informações de movimento de uma localização predefinida em uma região de luma (por exemplo, o centro, o canto inferior direito ou o canto superior esquerdo da região de luma) correspondente ao CB de croma. No modo de divisão anterior, um bloco de croma pequeno em que predição intra é realizada não é gerado, um bloco de transformada pequeno não é gerado e um bloco de croma pequeno em que predição inter é realizada não é gerado.
[0307] Deve ser observado que, nesta modalidade, o modo de predição intra é um modo de predição em que um preditor de um bloco de codificação é gerado por meio de uso de um pixel de referência de domínio espacial de uma imagem em que o bloco de codificação está localizado. Por exemplo, o modo de predição intra é um modo de corrente contínua (direct current mode, modo DC), um modo planar (Planar mode), um modo angular (angular mode), um modo de correspondência de modelo (template matching mode) ou um modo IBC. O modo de predição inter é um modo de predição em que um preditor de um bloco de codificação é gerado por meio de uso de um pixel de referência de domínio temporal em uma imagem de referência do bloco de codificação. Por exemplo, o modo de predição inter é um modo de salto (skip mode), um modo de mesclagem (merge mode) ou um modo AMVP (advanced motion vector prediction) (que também é referido como um modo inter comum).
[0308] Predição inter ou predição intra é realizada em cada bloco de codificação com base no bloco de predição do bloco de codificação, para obter uma imagem de predição inter ou uma imagem de predição intra do bloco de codificação. Em seguida, com base em informações residuais de cada bloco de codificação, o processo de desquantização e transformada inversa é realizado no coeficiente de transformada para obter uma imagem residual, e a imagem residual é adicionada à imagem de predição da região correspondente para gerar uma imagem reconstruída.
[0309] Opcionalmente, em uma implementação possível, o bloco de imagem com o tamanho predefinido inclui o bloco de luma com o primeiro tamanho predefinido e, consequentemente, a etapa 102 inclui: determinar se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma do nó atual, onde o bloco de luma com o primeiro tamanho predefinido é um bloco de luma com um tamanho de pixel de 4×4.
[0310] Quando o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do bloco de luma do nó atual no modo de divisão do bloco de luma do nó atual, consequentemente, a etapa 103 inclui: realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0311] Quando o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do bloco de luma do nó atual no modo de divisão do bloco de luma do nó atual, consequentemente, a etapa 104 inclui: dividir o bloco de luma do nó atual no modo de divisão do bloco de luma do nó atual, e dividir o bloco de croma do nó atual no modo de divisão do bloco de croma do nó atual, onde o modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0312] Opcionalmente, em outra implementação possível, o bloco de imagem com o tamanho predefinido inclui um bloco de croma com um segundo tamanho predefinido e, consequentemente, a etapa 102 inclui: determinar se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de croma do nó atual, onde o bloco de croma com o segundo tamanho predefinido é um bloco de croma com um tamanho de pixel de 2×2, 2×4 ou 4×2.
[0313] Quando o bloco de croma com o segundo tamanho predefinido é obtido por divisão o bloco de croma do nó atual no modo de divisão do bloco de croma do nó atual, consequentemente, a etapa 103 inclui: realizar predição intra ou predição inter para todos os blocos de codificação cobertos pelo nó atual.
[0314] Quando o bloco de croma com o segundo tamanho predefinido não é obtido por divisão o bloco de croma do nó atual no modo de divisão do bloco de croma do nó atual, consequentemente, a etapa 104 inclui: dividir o bloco de croma do nó atual no modo de divisão do bloco de croma do nó atual, e dividir o bloco de luma do nó atual no modo de divisão do bloco de luma do nó atual, onde o modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0315] De acordo com o método de predição de imagem fornecido nesta modalidade, o modo de divisão do nó atual é obtido, e é determinado se o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, onde o bloco de imagem inclui o bloco de luma ou o bloco de croma. Quando o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão do nó atual, predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra ou predição inter é realizada em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
[0316] Com base na modalidade mostrado na FIG. 9, um processo de determinação, de acordo com um método de predição de imagem fornecido na seguinte modalidade, se um bloco de luma com um primeiro tamanho predefinido for obtido por divisão de um nó atual em um modo de divisão do bloco de luma do nó atual é descrito em detalhes. Um conjunto de condições para determinar se o bloco de luma com o primeiro tamanho predefinido é obtido é especificamente revelado.
[0317] A FIG. 10 é um fluxograma esquemático de um segundo método de predição de imagem, de acordo com uma modalidade deste pedido.
Como mostrado na FIG. 10, o método de predição de imagem fornecido nesta modalidade inclui as seguintes etapas.
[0318] Etapa 201: Obter um modo de divisão de um nó atual.
[0319] Especificamente, as informações de divisão do nó atual são analisadas. Se as informações de divisão indicarem para dividir um bloco de luma do nó atual, um modo de divisão do bloco de luma do nó atual é adicionalmente determinado. O modo de divisão do bloco de luma inclui pelo menos uma da divisão de quadtree, divisão de árvore binária vertical, divisão de árvore binária horizontal, divisão de árvore ternária vertical e divisão de árvore ternária horizontal. Certamente, pode haver outro modo de divisão. Isto não é especificamente limitado nesta modalidade.
[0320] Etapa 202: Determinar, com base em um tamanho do nó atual e no modo de divisão do nó atual, se um bloco de luma com um primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0321] O bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×4 ou 8×8.
[0322] Quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 203 é realizada. Quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 204 é realizada.
[0323] Especificamente, é determinado, com base no tamanho do nó atual e no modo de divisão do bloco de luma do nó atual, se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma.
[0324] Nesta modalidade, o tamanho do nó atual pode ser entendido como um tamanho de pixel de um bloco de imagem correspondente ao nó atual.
O tamanho do nó atual pode ser determinado com base na largura e na altura do bloco de imagem correspondente ao nó atual, ou pode ser determinado com base em uma área do bloco de imagem correspondente ao nó atual, ou pode ser determinado com base em uma quantidade de pixels de luma do bloco de imagem correspondente ao nó atual. Por exemplo, pelo fato de que o nó atual inclui 128 pixels de luma pode ser descrito que uma área do nó atual é 128, ou pode ser descrito que um produto da largura e da altura do nó atual é 128.
[0325] Determinar, com base no tamanho do nó atual e no modo de divisão do bloco de luma do nó atual, o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma é realizado com base em uma ou mais condições do seguinte primeiro conjunto: (1) o nó atual inclui M1 pixels, e o modo de divisão do nó atual é a divisão de quadtree, onde, por exemplo, M1 é 64; (2) o nó atual inclui M2 pixels, e o modo de divisão do nó atual é a divisão de árvore ternária, onde, por exemplo, M2 é 64; (3) o nó atual inclui M3 pixels, e o modo de divisão do nó atual é a divisão de árvore binária, onde, por exemplo, M3 é 32; (4) o nó atual inclui 64 pixels de luma e a divisão de árvore ternária (divisão de árvore ternária vertical ou divisão de árvore ternária horizontal) ou divisão de quadtree é usada para o nó atual; ou o nó atual inclui 32 pixels de luma e a divisão de árvore binária (divisão de árvore binária vertical ou divisão de árvore binária horizontal) é usada para o nó atual; (5) a largura do nó atual é quatro vezes um segundo limite, a altura do nó atual é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore ternária vertical; (6) a largura do nó atual é igual a um segundo limite, a altura do nó atual é quatro vezes o segundo limite e o modo de divisão do nó atual é a divisão de árvore ternária horizontal; (7) a largura do nó atual é duas vezes um segundo limite, a altura do nó atual é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária vertical; (8) a altura do nó atual é duas vezes um segundo limite, a largura do nó atual é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária horizontal; ou (9) a largura e/ou a altura do nó atual é/são duas vezes um segundo limite e o modo de divisão do nó atual é a divisão de quadtree.
[0326] No primeiro conjunto anterior, a largura do nó atual é a largura do bloco de luma correspondente ao nó atual, e a altura do nó atual é a altura do bloco de luma correspondente ao nó atual. Em uma implementação específica, por exemplo, o segundo limite pode ser 4.
[0327] O primeiro conjunto anterior é aplicável a um formato de dados de vídeo de YUV 4:2:0 ou YUV 4:2:2.
[0328] Opcionalmente, quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma com o tamanho de pixel de 4×4, determinar, com base em um tamanho do nó atual e no modo de divisão do nó atual, se um bloco de luma com um primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64, e o modo de divisão é a divisão de quadtree; (2) uma quantidade de amostras do bloco de luma do nó atual é 64, e o modo de divisão é a divisão de árvore ternária; ou (3) uma quantidade de amostras do bloco de luma do nó atual é 32, e o modo de divisão é a divisão de árvore binária.
[0329] A quantidade de amostras do bloco de luma do nó atual é uma quantidade de pixels de luma (tamanho de pixel) do bloco de imagem correspondente ao nó atual.
[0330] Etapa 203: Realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0331] Em uma maneira alternativa da etapa 203, predição intra pode ser realizada apenas em um bloco de codificação do bloco de luma com o primeiro tamanho predefinido, e um modo de predição para outro bloco de codificação coberto pelo nó atual não é restrito.
[0332] Realizar predição intra em todos os blocos de codificação cobertos pelo nó atual pode incluir: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usando um bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
[0333] Em outras palavras, se for determinado que predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual não é dividido, para obter um bloco de codificação de croma (CB de croma para abreviação).
[0334] Pode ser restrito que os N nós de árvore de codificação de luma não são divididos adicionalmente ou isto não é restrito. Se o nó de árvore de codificação de luma for adicionalmente dividido, um modo de divisão do nó de árvore de codificação de luma é analisado para divisão recursiva. Quando o nó de árvore de codificação de luma não é adicionalmente dividido, o nó de árvore de codificação de luma corresponde a um bloco de codificação de luma (CB de luma para abreviação). Predição intra é realizada no CB de luma para obter um bloco de predição de luma correspondente ao CB de luma.
[0335] Predição intra é realizada no CB de croma para obter um bloco de predição de croma correspondente ao CB de croma. O bloco de predição de croma e o CB de croma têm um mesmo tamanho.
[0336] Opcionalmente, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual pode incluir: usar o bloco de luma incluído no nó atual como um bloco de codificação de luma e realizar predição intra no bloco de codificação de luma; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma e realizar predição intra no bloco de codificação de croma. Em outras palavras, tanto o bloco de luma quanto o bloco de croma do nó atual não podem ser divididos adicionalmente.
[0337] Etapa 204: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0338] A etapa 204 nesta modalidade é a mesma que a etapa 104 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior.
Os detalhes não são descritos neste relatório novamente.
[0339] Opcionalmente, depois da etapa 203 ou etapa 204, o método inclui adicionalmente:
[0340] Etapa 205: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0341] Etapa 206: Decodificar cada bloco de codificação para obter um sinal reconstruído do bloco de imagem correspondente ao nó atual.
[0342] A etapa 205 e a etapa 206 nesta modalidade são as mesmas que a etapa 105 e a etapa 106 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0343] De acordo com o método de predição de imagem fornecido nesta modalidade, o modo de divisão do nó atual é obtido; se o bloco de luma com o primeiro tamanho predefinido for obtido por divisão do nó atual no modo de divisão do bloco de luma é determinado com base no tamanho do nó atual e no modo de divisão do bloco de luma; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma, predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra é realizada em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
[0344] A FIG. 11 é um fluxograma esquemático de um terceiro método de predição de imagem, de acordo com uma modalidade deste pedido. Com base na modalidade mostrada na FIG. 10, como mostrado na FIG. 11, deve ser observado que uma solução mostrada na FIG. 11 pode ser uma solução usada em um caso de um formato de dados de vídeo de YUV 4:2:0 ou YUV 4:2:2 ou em um caso de um formato de dados de vídeo do único YUV 4:2:0. Quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 204 pode incluir as seguintes etapas.
[0345] Etapa 2041: Determinar se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0346] Quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 2042 é realizada. Quando for determinado que o bloco de croma com o segundo tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 2043 é realizada.
[0347] Especificamente, a etapa 2041 inclui: determinar, com base no tamanho do nó atual e em um modo de divisão do bloco de croma, se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de croma. O bloco de croma com o segundo tamanho predefinido pode ser um bloco de croma com um tamanho de pixel de 2×2, 2×4 ou 4×2.
[0348] Determinar, com base no tamanho do nó atual e em um modo de divisão do bloco de croma, o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de croma é realizado com base em uma ou mais condições do seguinte segundo conjunto.
[0349] Quando o formato de dados de vídeo é YUV 4:2:2, o segundo conjunto inclui: (1) um tamanho de um bloco de croma de pelo menos um nó filho do nó atual é 2×2, 2×4 ou 4×2; (2) a largura ou a altura de um bloco de croma de pelo menos um nó filho do nó atual é 2; (3) o nó atual inclui 64 pixels de luma e o modo de divisão do nó atual é a divisão de árvore ternária ou a divisão de quadtree; (4) o nó atual inclui 32 pixels de luma e o modo de divisão do nó atual é a divisão de árvore binária ou a divisão de árvore ternária; ou (5) uma área (ou um produto da largura e da altura) do nó atual é S, onde S/2 < th1, e o modo de divisão do nó atual é a divisão de árvore binária vertical ou a divisão de árvore binária horizontal; ou uma área (ou um produto da largura e da altura) do nó atual é S, onde S/4 < th1, e o modo de divisão do nó atual é a divisão de árvore ternária vertical, a divisão de árvore ternária horizontal ou a divisão de quadtree. O limite th1 é 32.
[0350] Quando o formato de dados de vídeo é YUV 4:2:0, o segundo conjunto inclui: (1) um tamanho de um bloco de croma de pelo menos um nó filho do nó atual é 2×2, 2×4 ou 4×2; (2) a largura ou a altura de um bloco de croma de pelo menos um nó filho do nó atual é 2; (3) o nó atual inclui 128 pixels de luma e a divisão de árvore ternária é usada para o nó atual; ou o nó atual inclui 64 pixels de luma e a divisão de árvore binária, a divisão de quadtree ou a divisão de árvore ternária é usada para o nó atual; (4) o nó atual inclui 256 pixels de luma e a divisão de árvore ternária ou a divisão de quadtree é usada para o nó; ou o nó atual inclui 128 pixels de luma e a divisão de árvore binária é usada para o nó; (5) o nó atual inclui N1 pixels de luma e a divisão de árvore ternária é usada para o nó atual, onde N1 é 64, 128 ou 256; (6) o nó atual inclui N2 pixels de luma e a divisão de quadtree é usada para o nó atual, onde N2 é 64 ou 256; (7) o nó atual inclui N3 pixels de luma e a divisão de árvore binária é usada para o nó atual, onde N3 é 64, 128 ou 256; ou (8) uma área (ou um produto da largura e da altura) do nó atual é S, onde S/2 < th1, e o modo de divisão do nó atual é a divisão de árvore binária vertical ou a divisão de árvore binária horizontal; ou uma área (ou um produto da largura e da altura) do nó atual é S, onde S/4 < th1, e o modo de divisão do nó atual é a divisão de árvore ternária vertical, a divisão de árvore ternária horizontal ou a divisão de quadtree. O limite th1 é 64.
[0351] Opcionalmente, o bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma 4×4. Quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma 4×4, o bloco de croma com o segundo tamanho predefinido pode ser um tamanho de pixel de bloco de croma 2×4 ou um tamanho de pixel de bloco de croma 4×2, excluindo um bloco de croma 2×2.
[0352] Opcionalmente, o bloco de luma com o primeiro tamanho predefinido pode ser um bloco de luma 4×4. Quando o bloco de luma com o primeiro tamanho predefinido é o bloco de luma 4×4, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de luma 4×8 ou um bloco de luma 8×4, excluindo um bloco de luma 4×4.
[0353] Opcionalmente, quando o bloco de croma com o segundo tamanho predefinido é um bloco de croma 2×4, um bloco de croma 4×2, um bloco de luma 4×8 ou um bloco de luma 8×4, determinar se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64, e o modo de divisão é a divisão de árvore binária; ou (2) uma quantidade de amostras do bloco de luma do nó atual é 128, e o modo de divisão é a divisão de árvore ternária.
[0354] Etapa 2042: Realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0355] Se predição intra ou predição inter for realizada em todos os blocos de codificação cobertos pelo nó atual podem ser determinados, de acordo com o seguinte método.
[0356] Método 1: Analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0357] Neste método, um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual é realmente determinado com base em uma flag em uma tabela de sintaxe. Especificamente, uma flag de status de modo de predição cons_pred_mode_flag é analisado a partir de um fluxo de bits.
Quando o primeiro valor de cons_pred_mode_flag é definido como 0, indica que predição inter é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual, e o segundo valor de cons_pred_mode_flag é definido como 1, indica que predição intra é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual.
Opcionalmente, quando o primeiro valor de cons_pred_mode_flag é definido como 1, indica que predição inter é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual, e quando o segundo valor de cons_pred_mode_flag é definido como 0, indica que predição intra é realizada em todos os blocos de codificação que são obtidos por divisão ou não divisão do nó atual. Um significado de cons_pred_mode_flag pode ser alternativamente indicado por outra flag (por exemplo, mode_cons_flag). Isto não é limitado nesta modalidade.
[0358] cons_pred_mode_flag pode ser um elemento de sintaxe que precisa ser analisado durante a divisão de bloco. Quando o elemento de sintaxe é analisado, uma flag de modo de predição de unidade de codificação cu_pred_mode de uma unidade de codificação em uma região de cobertura do nó atual não pode ser analisado adicionalmente, e um valor de cu_pred_mode é um valor padrão correspondente ao valor de cons_pred_mode_flag.
[0359] O elemento de sintaxe cons_pred_mode_flag é descrito semanticamente como: Quando o valor de cons_pred_mode_flag for 0, indica que apenas predição inter é realizada nas unidades de codificação cobertas pelo nó atual; ou quando o valor de cons_pred_mode_flag for 1, indica que apenas predição intra é realizada nos blocos de codificação cobertos pelo nó atual.
[0360] Se o nó atual estiver localizado em uma região de imagem intra (isto é, um tipo de uma imagem ou uma fatia (slice_type) em que o nó atual está localizado é um tipo intra ou um tipo I), e um modo IBC é permitido ser usado, o valor de cu_pred_mode é derivado como 1, e o valor de cu_pred_mode é obtido sem precisar analisar o fluxo de bits. Se o nó atual estiver localizado em uma região de imagem intra, mas um modo IBC não é permitido ser usado, o valor de cu_pred_mode é derivado como 1, um valor de cu_skip_flag é 0, e o valor de cu_pred_mode é obtido sem precisa analisar o fluxo de bits.
[0361] Se o nó atual estiver localizado em uma região de imagem inter (isto é, um tipo de uma imagem ou uma fatia (slice_type) em que o nó atual está localizado é um tipo inter ou um tipo B), um valor de cu_pred_mode é derivado como 0, e o valor de cu_pred_mode é obtido sem precisar analisar o fluxo de bits.
[0362] O modo de predição IBC pode ser considerado como um modo de predição intra pelo fato de que um pixel de referência de predição de IBC é um pixel reconstruído em uma imagem atual. Portanto, nesta modalidade deste pedido, predição intra pode incluir o modo IBC. Em outras palavras, nesta modalidade deste pedido, o modo IBC, um modo de predição intra comum, ou o modo IBC + o modo de predição intra comum, podem ser usados para predição intra. Portanto, nesta modalidade deste pedido, pode ser entendido de forma conclusiva que predição intra não é predição inter.
[0363] Opcionalmente, o tipo (slice type) da fatia em que o nó atual está localizado não é o tipo intra (Intra).
[0364] Método 2: Quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição inter, predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual; ou quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição intra, predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual.
[0365] Neste método, o modo de predição usado para todos os blocos de codificação cobertos pelo nó atual é realmente determinado com base no modo de predição usado para qualquer bloco de codificação coberto pelo nó atual.
[0366] Opcionalmente, qualquer bloco de codificação é um 1o bloco de codificação de todos os blocos de codificação cobertos pelo nó atual em uma ordem de decodificação. Especificamente, um modo de predição de um 1o bloco de codificação B0 na região do nó atual é analisado, e o modo de predição do 1o bloco de codificação B0 não é limitado nesta modalidade. Quando for aprendido, através de análise, que o modo de predição do bloco de codificação B0 é predição intra, predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual. Quando for aprendido, através de análise, que o modo de predição do bloco de codificação B0 é predição inter, predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual.
[0367] Deve ser observado que as etapas realizadas, de acordo com o método anterior 1 e o método 2 podem ser usadas para o decodificador de vídeo 24 mostrado na FIG. 8.
[0368] Etapa 2043: Dividir o nó atual no modo de divisão do nó atual, onde o modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0369] Opcionalmente, depois da etapa 203 ou da etapa 2042 ou da etapa 2043, o método inclui adicionalmente as seguintes etapas.
[0370] Etapa 205: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0371] Etapa 206: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0372] A etapa 205 e a etapa 206 nesta modalidade são as mesmas que a etapa 105 e a etapa 106 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0373] De acordo com o método de predição de imagem fornecido nesta modalidade, o modo de divisão do nó atual é obtido; se o bloco de luma com o primeiro tamanho predefinido for obtido por divisão do nó atual no modo de divisão do bloco de luma é determinado com base no tamanho do nó atual e no modo de divisão do bloco de luma; quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma, se o bloco de croma com o segundo tamanho predefinido for obtido por divisão do nó atual no modo de divisão do bloco de croma é adicionalmente determinado; e quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de croma, predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra ou predição inter é realizada em todos os blocos de codificação do nó atual, de modo que processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
[0374] O seguinte descreve, com referência aos dois exemplos específicos, o método de predição de imagem fornecido na modalidade mostrada na FIG. 11.
[0375] O primeiro exemplo é aplicável ao formato de dados de vídeo de YUV 4:2:0 ou YUV 4:2:2, ou é aplicável apenas ao formato de dados de vídeo de YUV 4:2:0.
[0376] O método de predição de imagem neste exemplo inclui as seguintes etapas.
[0377] Etapa 1: Obter um modo de divisão de um nó atual.
[0378] Etapa 2: Determinar se uma área do nó atual e o modo de divisão do nó atual satisfazem pelo menos uma condição das seguintes condições A: (1) a área do nó atual é igual a 32, e o modo de divisão do nó atual é a divisão de árvore binária vertical ou a divisão de árvore binária horizontal; ou (2) a área do nó atual é igual a 64, e o modo de divisão do nó atual é a divisão de árvore ternária vertical, a divisão de árvore ternária horizontal ou a divisão de quadtree.
[0379] Se a área do nó atual e o modo de divisão do nó atual satisfizerem pelo menos uma condição das condições A, a etapa 3 é realizada.
[0380] Etapa 3: Restringir que predição intra seja realizada em todos os blocos de codificação cobertos pelo nó atual.
[0381] Opcionalmente, um valor de cons_pred_mode_flag é definido como 1.
[0382] Se a área do nó atual e o modo de divisão do nó atual não satisfizerem as condições A, a etapa 4 é realizada.
[0383] Etapa 4: Determinar se a área do nó atual e o modo de divisão do nó atual satisfazem pelo menos uma condição das seguintes condições B: (1) a área S do nó atual satisfaz S/2 < th1, e o modo de divisão do nó atual é a divisão de árvore binária vertical ou a divisão de árvore binária horizontal; ou (2) a área S do nó atual satisfaz S/4 < th1, e o modo de divisão do nó atual é a divisão de árvore ternária vertical, a divisão de árvore ternária horizontal ou a divisão de quadtree.
[0384] O limite th1 é relacionado a um formato de dados de vídeo. Por exemplo, quando o formato de dados de vídeo for YUV 4:2:0, o limite th1 é 64; ou quando o formato de dados de vídeo for YUV 4:2:2, o limite th1 é 32.
[0385] Se a área do nó atual e o modo de divisão do nó atual satisfizerem pelo menos uma condição das condições B, a etapa 5 é realizada.
[0386] Etapa 5: Analisar uma flag cons_pred_mode_flag a partir de um fluxo de bits, e determinar, com base em um valor de cons_pred_mode_flag, que predição inter ou predição intra é realizada em todas as unidades de codificação em uma região de cobertura do nó atual.
[0387] Se a área do nó atual e o modo de divisão do nó atual não satisfizerem a condição B, a etapa 6 é realizada.
[0388] Etapa 6: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0389] Opcionalmente, depois da etapa 6, o método inclui adicionalmente as seguintes etapas.
[0390] Etapa 7: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0391] Etapa 8: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0392] O segundo exemplo é aplicável ao formato de dados de vídeo de YUV 4:2:0.
[0393] O método de predição de imagem neste exemplo inclui as seguintes etapas.
[0394] Etapa 1: Obter um modo de divisão de um nó atual.
[0395] Etapa 2: Determinar se uma área do nó atual e o modo de divisão do nó atual satisfazem uma condição C: a área do nó atual é igual a 64, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal, a divisão de árvore ternária vertical ou a divisão de quadtree.
[0396] Se a área do nó atual e o modo de divisão do nó atual satisfizerem a condição C, a etapa 3 é realizada.
[0397] Etapa 3: Predição intra é realizada em todas as unidades de codificação em uma região de cobertura do nó atual.
[0398] Opcionalmente, um valor de cons_pred_mode_flag é definido como 1.
[0399] Se a área do nó atual e o modo de divisão do nó atual não satisfizerem a condição C, a etapa 4 é realizada.
[0400] Etapa 4: Determinar se a área do nó atual e o modo de divisão do nó atual satisfazem pelo menos uma condição das seguintes condições D: (1) a área do nó atual é igual a 64, e o modo de divisão do nó atual é a divisão de árvore binária horizontal ou a divisão de árvore binária vertical; ou
(2) a área do nó atual é igual a 128, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical.
[0401] Se a área do nó atual e o modo de divisão do nó atual satisfizerem pelo menos uma condição das condições D, a etapa 5 é realizada.
[0402] Etapa 5: Analisar a flag cons_pred_mode_flag a partir de um fluxo de bits, e determinar, com base no valor do cons_pred_mode_flag, que predição inter ou predição intra é realizada em todas as unidades de codificação na região de cobertura do nó atual.
[0403] Se a área do nó atual e o modo de divisão do nó atual não satisfizerem a condição D, a etapa 6 é realizada.
[0404] Etapa 6: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0405] Opcionalmente, depois da etapa 6, o método inclui adicionalmente as seguintes etapas.
[0406] Etapa 7: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0407] Etapa 8: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0408] A FIG. 12 é um fluxograma esquemático de um quarto método de predição de imagem, de acordo com uma modalidade deste pedido. Como mostrado na FIG. 12, o método de predição de imagem fornecido nesta modalidade inclui as seguintes etapas.
[0409] Etapa 301: Obter um modo de divisão de um nó atual.
[0410] Especificamente, as informações de divisão do nó atual são analisadas. Se as informações de divisão indicarem para dividir um bloco de croma do nó atual, um modo de divisão do bloco de croma do nó atual é adicionalmente determinado. O modo de divisão do bloco de croma inclui pelo menos uma da divisão de quadtree, da divisão de árvore binária vertical, da divisão de árvore binária horizontal, da divisão de árvore ternária vertical e da divisão de árvore ternária horizontal. Certamente, pode haver outro modo de divisão. Isto não é especificamente limitado nesta modalidade.
[0411] Etapa 302: Determinar, com base em um tamanho do nó atual e no modo de divisão do nó atual, se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0412] Quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 303 é realizada. Quando for determinado que o bloco de croma com o segundo tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 304 é realizada.
[0413] A etapa 302 nesta modalidade é a mesma que a etapa 2041 na modalidade mostrada na FIG. 11. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0414] Opcionalmente, a etapa 302 pode incluir: determinar, com base no tamanho do nó atual e no modo de divisão do nó atual, se um bloco de luma com um terceiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0415] Opcionalmente, o bloco de luma com o terceiro tamanho predefinido pode ser um bloco de luma 4×4, 4×8 ou 8×4.
[0416] Opcionalmente, determinar se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras de um bloco de luma do nó atual é 64, e o modo de divisão é a divisão de quadtree; (2) uma quantidade de amostras de um bloco de luma do nó atual é 64, e o modo de divisão é a divisão de árvore ternária;
(3) uma quantidade de amostras de um bloco de luma do nó atual é 32, e o modo de divisão é a divisão de árvore binária; (4) uma quantidade de amostras de um bloco de luma do nó atual é 64, e o modo de divisão é a divisão de árvore binária; ou (5) uma quantidade de amostras de um bloco de luma do nó atual é 128, e o modo de divisão é a divisão de árvore ternária.
[0417] Opcionalmente, o bloco de croma com o segundo tamanho predefinido pode ser um bloco de croma com um tamanho de pixel de 2×4 ou 4×2, excluindo um bloco de croma com um tamanho de pixel de 2×2.
Similarmente, o bloco de luma com o terceiro tamanho predefinido pode ser um bloco de luma com um tamanho de pixel de 4×8 ou 8×4, excluindo um bloco de luma com um tamanho de pixel de 4×4. Correspondentemente, determinar se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão pode ser realizado com base em uma das seguintes condições: (1) uma quantidade de amostras do bloco de luma do nó atual é 64, e o modo de divisão é a divisão de árvore binária; ou (2) uma quantidade de amostras do bloco de luma do nó atual é 128, e o modo de divisão é a divisão de árvore ternária.
[0418] Etapa 303: Realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0419] Se predição intra ou predição inter for realizada em todos os blocos de codificação cobertos pelo nó atual pode ser determinado com base na etapa 2042 na modalidade mostrada na FIG. 11. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0420] Etapa 304: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0421] A etapa 304 nesta modalidade é a mesmo que a etapa 104 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior.
Os detalhes não são descritos neste relatório novamente.
[0422] Opcionalmente, depois da etapa 303 ou da etapa 304, o método inclui adicionalmente as seguintes etapas.
[0423] Etapa 305: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0424] Etapa 306: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0425] A etapa 305 e a etapa 306 nesta modalidade são as mesmas que a etapa 105 e a etapa 106 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0426] De acordo com o método de predição de imagem fornecido nesta modalidade, o modo de divisão do nó atual é obtido, se o bloco de croma com o segundo tamanho predefinido for obtido por divisão do nó atual no modo de divisão é determinado com base no tamanho do nó atual e no modo de divisão do nó atual; e quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, predição intra ou predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra ou predição inter é realizada em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
[0427] A FIG. 13 é um fluxograma esquemático de um quinto método de predição de imagem, de acordo com uma modalidade deste pedido. Com base na modalidade mostrada na FIG. 12, como mostrado na FIG. 13, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 304 pode incluir as seguintes etapas.
[0428] Etapa 3041: Determinar se um bloco de luma com um primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0429] Quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, a etapa 3042 é realizada. Quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, a etapa 3043 é realizada.
[0430] Especificamente, é determinado, com base no tamanho do nó atual e em um modo de divisão do bloco de luma, se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão do bloco de luma. O bloco de luma com o primeiro tamanho predefinido é um bloco de luma com um tamanho de pixel de 4×4. Um processo de determinação específico é o mesmo que o da etapa 202 na modalidade mostrada na FIG. 10, e a referência pode ser feita à modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0431] Etapa 3042: Realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0432] Etapa 3043: Dividir o nó atual no modo de divisão do nó atual, onde um modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0433] Opcionalmente, depois da etapa 303 ou da etapa 3042 ou da etapa 3043, o método inclui adicionalmente as seguintes etapas.
[0434] Etapa 305: Analisar blocos de predição e informações residuais de todos os blocos de codificação cobertos pelo nó atual.
[0435] Etapa 306: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0436] A etapa 305 e a etapa 306 nesta modalidade são as mesmas que a etapa 105 e a etapa 106 na modalidade mostrada na FIG. 9. Para detalhes, consultar a modalidade anterior. Os detalhes não são descritos neste relatório novamente.
[0437] De acordo com o método de predição de imagem fornecido nesta modalidade, o modo de divisão do nó atual é obtido; se o bloco de croma com o segundo tamanho predefinido for obtido por divisão do nó atual no modo de divisão é determinado com base no tamanho do nó atual e no modo de divisão do nó atual; quando for determinado que o bloco de croma com o segundo tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, se o bloco de luma com o primeiro tamanho predefinido for obtido por divisão do nó atual no modo de divisão é adicionalmente determinado; e quando for determinado que bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual. De acordo com o método anterior, predição intra ou predição inter é realizada em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de codificação.
[0438] A FIG. 14 é um fluxograma esquemático de um sexto método de predição de imagem, de acordo com uma modalidade deste pedido. O método de predição de imagem fornecido nesta modalidade é usado para o codificador de vídeo 18 mostrado na FIG. 8. Como mostrado na FIG. 14, o método nesta modalidade inclui as seguintes etapas.
[0439] Etapa 401: Obter um modo de divisão de um nó atual.
[0440] Um tipo de uma fatia (slice) em que o nó atual está localizado é um tipo B ou um tipo P. Deve ser entendido que quando o tipo da fatia (slice) em que o nó atual está localizado é um tipo I, a predição intra deve ser realizada, por padrão, em todos os blocos de codificação cobertos pelo nó atual.
[0441] Um lado de decodificador pode obter o modo de divisão do nó atual analisando um fluxo de bits ou com base em um parâmetro obtido.
[0442] Um lado de codificador geralmente determina primeiro um modo de divisão que é permitido para o nó atual e, em seguida, determina um modo de divisão ideal como o modo de divisão do nó atual, de acordo com um método de distorção de taxa (rate-distortion optimization, RDO). Esta etapa pertence à tecnologia convencional e os detalhes não são descritos neste relatório.
[0443] Etapa 402: Determinar se um tamanho do nó atual e o modo de divisão do nó atual satisfazem uma condição de uma primeira condição predefinida.
[0444] A primeira condição predefinida pode incluir: (1) uma quantidade de amostras de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de quadtree; (2) uma quantidade de amostras de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore ternária; ou (3) uma quantidade de amostras de um bloco de luma do nó atual é 32, e o modo de divisão do nó atual é a divisão de árvore binária.
[0445] A quantidade de amostras do bloco de luma do nó atual é uma quantidade de pixels de luma (tamanho de pixel) de um bloco de imagem correspondente ao nó atual. A quantidade de amostras pode ser obtida com base em um produto da largura e da altura do nó atual.
[0446] Em outra implementação, a primeira condição predefinida inclui adicionalmente a seguinte condição (4):
(4) um bloco de luma com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão, onde o tamanho predefinido é 4×4 ou 8×8.
[0447] Deve ser observado que um bloco de luma com um primeiro tamanho predefinido (4×4 ou 8×8) e um bloco de croma com um segundo tamanho predefinido (2×4 ou 4×2) pode ser obtido quando uma condição da primeira condição predefinida é atendida.
[0448] Nesta etapa, se o tamanho do nó atual e o modo de divisão do nó atual satisfizerem uma condição da primeira predefinida, a etapa 403 é realizada. Se o tamanho do nó atual e o modo de divisão do nó atual satisfizerem uma das primeiras condições predefinidas, a etapa 404 é realizada.
[0449] Etapa 403: Realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0450] Opcionalmente, quando for determinado que predição intra é realizada em todos os blocos de codificação cobertos pelo nó atual, um valor de mode_constraint_flag não precisa ser escrito em um fluxo de bits, e o valor de mode_constraint_flag pode ser definido como 1. Correspondentemente, o lado de decodificador também pode derivar, de acordo com o mesmo método, que o valor de mode_constraint_flag é 1.
[0451] Etapa 404: Determinar se o tamanho do nó atual e o modo de divisão do nó atual satisfazem uma condição de uma segunda condição predefinida.
[0452] A segunda condição predefinida inclui: (1) a quantidade de amostras do bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore binária vertical ou a divisão de árvore binária horizontal; ou (2) a quantidade de amostras do bloco de luma do nó atual é 128, e o modo de divisão do nó atual é a divisão de árvore ternária vertical ou a divisão de árvore ternária horizontal.
[0453] Em outra implementação, a segunda condição predefinida inclui adicionalmente a seguinte condição (3): (3) um bloco de croma com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão, onde o tamanho predefinido é 2×4 ou 4×2.
[0454] Nesta etapa, se o tamanho do nó atual e o modo de divisão do nó atual satisfizerem uma condição das segundas condições predefinidas, a etapa 405 é realizada. Se o tamanho do nó atual e o modo de divisão do nó atual satisfizerem uma das segundas condições predefinidas, a etapa 406 é realizada.
[0455] Etapa 405: Realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0456] Nesta modalidade, um modo de predição usado para todos os blocos de codificação do nó atual pode ser determinado das seguintes várias maneiras.
[0457] Em uma implementação, se um tipo de uma imagem ou a fatia (slice) em que o nó atual está localizado for o tipo I, um codificador ou o lado de codificador determina que apenas predição intra (não predição inter) é aplicável a todos os blocos de codificação do nó atual. Opcionalmente, o codificador ou o lado de codificador não precisa escrever o mode_constraint_flag no fluxo de bits, e pode definir o valor de mode_constraint_flag para 1.
[0458] Se o tipo da imagem ou a fatia (slice) em que o nó atual está localizado não for o tipo I, o codificador ou o lado de codificador determina o valor de mode_constraint_flag, de acordo com o método de otimização de distorção de taxa (rate-distortion optimization, RDO) ou outro método.
[0459] O método RDO é especificamente como a seguir: O codificador separadamente calcula os custos de distorção de taxa (custo de RD) gerados nos casos de realização de predição inter e predição intra em todos os blocos de codificação cobertos pelo nó atual, compara valores dos custos de distorção de taxa gerados nos casos dos dois modos de predição, e determina um modo de predição com um custo de distorção de menor como um modo de predição final.
Se o modo de predição com o menor custo de distorção de taxa for predição intra, o codificador define o valor de mode_constraint_flag para 1. Se o modo de predição com o menor custo de distorção de taxa for predição inter, o codificador define o valor de mode_constraint_flag para 0, e escreve o valor de mode_constraint_flag no fluxo de bits.
[0460] Por exemplo, o codificador primeiro calcula o custo de RD gerado no caso de realizar predição inter em todos os blocos de codificação cobertos pelo nó atual e, em seguida, calcula o custo de RD gerado no caso de realizar predição intra. Se não houver residual no caso de realizar predição inter em todos os blocos de codificação cobertos pelo nó atual (por exemplo, um modo de salto é usado), o codificador determina que predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, define o valor de mode_constraint_flag para 0, e não precisa calcular o custo de RD gerado no caso de predição intra. O codificador pode alternativamente calcular primeiro o custo de RD gerado no caso de realizar predição intra em todos os blocos de codificação cobertos pelo nó atual, em seguida, calcular o custo de RD gerado no caso de realizar predição inter, e determinar um modo de predição com um custo de RD menor como um modo de predição final.
[0461] Deve ser observado que, se o nó atual estiver localizado em uma região de imagem intra (isto é, o tipo da imagem ou a fatia (slice_type) em que o nó atual está localizado é um tipo intra ou o tipo I), e um modo IBC é permitido ser usado, um valor de pred_mode_flag é 1 por padrão. Se o nó atual estiver localizado em uma região de imagem intra, mas um modo IBC não é permitido ser usado, um valor de pred_mode_flag é 1 por padrão, e um valor de cu_skip_flag é 0 por padrão (indicando que o modo de salto não é usado para um bloco atual). Se o nó atual estiver localizado em uma região de imagem intra (isto é, o tipo da imagem ou a fatia (slice_type) em que o nó atual está localizado é um tipo intra ou o tipo I), o valor de mode_constraint_flag é 1 por padrão.
[0462] Em uma implementação, o lado de decodificador ou um decodificador pode analisar uma flag de status de modo de predição (mode_constraint_flag) do nó atual; e quando o valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando o valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
[0463] Etapa 406: Dividir o nó atual no modo de divisão do nó atual, onde o modo de predição usado para todos os blocos de codificação cobertos pelo nó atual não é restrito.
[0464] Opcionalmente, depois da etapa 403, etapa 405 ou etapa 406, o método pode incluir adicionalmente as seguintes etapas.
[0465] Etapa 407: Determinar, com base em um modo de predição do nó atual, se o bloco de luma e um bloco de croma do nó atual são divididos adicionalmente.
[0466] Quando for determinado que apenas predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma incluído no nó atual é dividido no modo de divisão, para obter blocos de luma obtidos através de divisão, e predição intra é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é usado como um bloco de codificação de croma, e predição intra é realizada no bloco de codificação de croma. Em outras palavras, se for determinado que predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido em um modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual não é dividido, para obter um bloco de codificação de croma (CB de croma para abreviação). Pode ser restrito que os N nós de árvore de codificação de luma não são divididos adicionalmente, ou isto não é restrito. Se o nó de árvore de codificação de luma for adicionalmente dividido, um modo de divisão do nó de árvore de codificação de luma é analisado para divisão recursiva. Quando o nó de árvore de codificação de luma não é adicionalmente dividido, o nó de árvore de codificação de luma corresponde a um bloco de codificação de luma (CB de luma para abreviação). Predição intra é realizada no CB de luma para obter um bloco de predição de luma correspondente ao CB de luma. Predição intra é realizada no CB de croma para obter um bloco de predição de croma correspondente ao CB de croma. O bloco de predição de croma e o CB de croma têm um mesmo tamanho.
[0467] Quando for determinado que apenas predição intra é realizada em todos os blocos de codificação do nó atual, em outra implementação, o bloco de luma e o bloco de croma que são incluídos no nó atual são divididos no modo de divisão, para obter nós obtidos através de divisão. Quando um nó de árvore de codificação não é adicionalmente dividido, o nó de árvore de codificação corresponde a uma unidade de codificação e inclui uma unidade de codificação de luma e uma unidade de codificação de croma. Predição intra é realizada em unidades de codificação de luma e unidades de codificação de croma, onde as unidades de codificação de luma e as unidades de codificação de croma são obtidas através de divisão.
[0468] Quando for determinado que apenas predição inter é realizada em todos os blocos de codificação do nó atual, em uma implementação, o bloco de luma incluído no nó atual é dividido no modo de divisão para obter blocos de luma obtidos através de divisão, e predição inter é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é dividido no modo de divisão para obter blocos de croma obtidos através de divisão, e predição inter é realizada nos blocos de croma obtido através de divisão. Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual é dividido em um modo de divisão do bloco de croma, para obter M nós de árvore de codificação de croma. N e M são inteiros positivos, e N e M podem ser iguais ou diferentes. Pode ser restrito que os N nós de árvore de codificação de luma e os M nós de árvore de codificação de croma não são divididos adicionalmente, ou isto não é restrito. Quando nenhuma divisão adicional é realizada, os N nós de árvore de codificação de luma correspondem aos N CBs de luma do nó atual e os M nós de árvore de codificação de croma correspondem aos M CBs de croma do nó atual. Predição inter é realizada nos N CBs de luma para obter blocos de predição de luma correspondentes, e predição inter é realizada nos M CBs de croma para obter correspondente blocos de predição de croma.
[0469] Quando for determinado que apenas predição inter é realizada em todos os blocos de codificação do nó atual, em uma implementação, o bloco de luma incluído no nó atual é dividido no modo de divisão para obter blocos de luma obtidos através de divisão, e predição inter é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é dividido no modo de divisão para obter blocos de croma obtidos através de divisão, e predição inter é realizada nos blocos de croma obtidos através de divisão. Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual é dividido em um modo de divisão do bloco de croma, para obter M nós de árvore de codificação de croma. N e M são inteiros positivos, e N e M podem ser iguais ou diferentes. Pode ser restrito que os N nós de árvore de codificação de luma e os M nós de árvore de codificação de croma não são divididos adicionalmente, ou isto não é restrito. Quando nenhuma divisão adicional é realizada, os N nós de árvore de codificação de luma correspondem aos N CBs de luma do nó atual e os M nós de árvore de codificação de croma correspondem aos M CBs de croma do nó atual. Predição inter é realizada nos N CBs de luma para obter blocos de predição de luma correspondentes, e predição inter é realizada nos M CBs de croma para obter correspondente blocos de predição de croma.
[0470] Particularmente, se apenas predição inter for realizada em todos os blocos de codificação do nó atual, os nós filhos são obtidos por divisão do nó atual no modo de divisão, o nó filho precisa ser adicionalmente dividido, e um bloco de luma com um tamanho predefinido é obtido através de divisão em um modo de divisão do nó filho onde, por exemplo, o tamanho predefinido é 4×4 (isto é, tanto a largura quanto a altura são 4), o modo de divisão do nó filho não é permitido ou o nó filho não é permitido ser adicionalmente dividido.
Especificamente, se for restrito que apenas predição inter é realizada em um nó, e uma quantidade de amostras de luma do nó for 32 (ou um produto da largura e da altura do nó é 32), a divisão de árvore binária (incluindo divisão de árvore binária horizontal ou divisão de árvore binária vertical) não é permitida para o nó.
Se for restrito que apenas predição inter é realizada em um nó, e uma quantidade de amostras de luma do nó for 64 (ou um produto da largura e da altura do nó é 64), a divisão de árvore ternária (incluindo divisão de árvore ternária horizontal ou divisão de árvore ternária vertical) não é permitida para o nó. Tal método de determinação é aplicável tanto ao formato de dados de vídeos de YUV 4:2:0 quanto de YUV 4:2:2.
[0471] Por exemplo, se o tamanho do nó atual for 8×8 e dois nós 8×4 (ou 4×8) forem gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), blocos 4×4 são gerados se o nó 8×4 (ou 4×8)
for adicionalmente dividido. Neste caso, a divisão de árvore binária vertical (ou divisão de árvore binária horizontal) não é permitida para o nó 8×4 (ou 4×8) ou o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido. Para outro exemplo, se a quantidade de amostras do bloco de luma do nó atual for 128, e o modo de divisão for a divisão de árvore ternária horizontal ou divisão de árvore ternária vertical, pode ser obtido que a quantidade de amostras do bloco de luma é 64. Entretanto, se a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical para um nó filho for usada para o nó de luma com a quantidade de amostras de 64, os blocos de luma 4×4 são obtidos. Portanto, quando for restrito que apenas predição inter é realizada, a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical não é permitida para o nó com a quantidade de amostras de 64 ou o nó com a quantidade de amostras de 64 não é permitido ser adicionalmente dividido.
[0472] Etapa 408: Predizer um bloco de codificação de uma CU obtida por divisão do nó atual, para obter um preditor do bloco de codificação.
[0473] Se apenas predição intra for realizada em todos os blocos de codificação do nó atual, o codificador ou o lado de codificador determina, de acordo com o método de otimização de distorção de taxa (Rate-distortion optimization, RDO) ou outro método, um modo de predição intra ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição intra correspondente, para obter um preditor do bloco atual.
[0474] Se apenas predição inter for realizada em todos os blocos de codificação do nó atual, o codificador ou o lado de codificador determina, de acordo com o método de otimização de distorção de taxa ou outro método, um modo de predição inter ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição inter correspondente, para obter um preditor do bloco atual.
[0475] Além disso, o codificador atribui os valores aos elementos de sintaxe relacionados à profundidade CU, e escreve o valor de cada elemento de sintaxe em um fluxo de bits, de acordo com um critério para uma definição de sintaxe de nível de CU. Por exemplo, se apenas predição intra for realizada em todos os blocos de codificação do nó atual, o valor de pred_mode_flag é definido como 1 e pred_mode_flag não é escrito no fluxo de bits, isto é, pred_mode_flag é ausente a partir do fluxo de bits. Se apenas predição intra for realizada em todos os blocos de codificação do nó atual e for determinado que o modo IBC não é usado, o valor de cu_skip_flag (ou skip_flag) é 0, e cu_skip_flag não é escrito no fluxo de bits. De outro modo, cu_skip_flag preciso ser escrito no fluxo de bits depois do valor de cu_skip_flag ser determinado, e é transmitido ao lado de decodificador.
[0476] Se apenas predição inter for realizada em todos os blocos de codificação do nó atual, o valor de pred_mode_flag é definido como 0, e pred_mode_flag não é escrito no fluxo de bits, isto é, pred_mode_flag é ausente a partir do fluxo de bits. Se um valor de pred_mode_ibc_flag for definido como 0, pred_mode_ibc_flag não é escrito no fluxo de bits, isto é, pred_mode_ibc_flag é ausente a partir do fluxo de bits.
[0477] Se apenas predição intra for realizada em todos os blocos de codificação do nó atual, o decodificador ou o lado de decodificador pode determinar, analisando o fluxo de bits ou com base em um parâmetro obtido, um modo de predição intra ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição intra correspondente, para obter um preditor do bloco atual.
[0478] Se apenas predição inter for realizada em todos os blocos de codificação do nó atual, o decodificador ou o lado de decodificador pode determinar, analisando o fluxo de bits ou com base em um parâmetro obtido, um modo de predição inter ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição inter correspondente, para obter um preditor do bloco atual.
[0479] Etapa 409: Obter um sinal reconstruído de um bloco de imagem no nó atual.
[0480] Depois de obter as informações de predição através de predição intra ou predição inter, o codificador ou o lado de codificador obtém informações residuais subtraindo as informações de predição correspondentes (ou o preditor) de um valor de pixel de um pixel no bloco de codificação atual, as transformações das informações residuais por meio de uso de um método, tais como transformada de cosseno discreta (Discrete Cosine Transformation, DCT), obtém um fluxo de bits através de quantização e codificação de entropia, e transmite as informações residuais para o lado de decodificador. Depois de adicionar um sinal predito e um sinal residual reconstruído, o lado de codificador precisa adicionalmente realizar uma operação de filtragem, para obter um sinal reconstruído, e usar o sinal reconstruído como um sinal de referência para codificação subsequente. Particularmente, se o modo de salto for usado para um bloco de codificação, não há informações residuais, e o lado de codificador não precisa realizar a transformada, onde o preditor é um valor de reconstrução final.
[0481] Depois de adicionar um sinal predito e um sinal residual reconstruído, o decodificador ou o lado de decodificador precisa adicionalmente realizar uma operação de filtragem, para obter um sinal reconstruído. Além disso, o lado de decodificador usa o sinal reconstruído obtido como um sinal de referência para decodificação subsequente. Particularmente, se o modo de salto for usado para um bloco de codificação, não há informações residuais, e o decodificador ou o lado de decodificador não precisa realizar transformada, onde o preditor é um valor de reconstrução final.
[0482] Por exemplo, o processamento de predição inter ou o processamento de predição intra é realizado em cada CU com base em um bloco de predição da CU, para obter uma imagem de predição inter ou uma imagem de predição intra da CU. Em seguida, com base em informações residuais de cada CU, o processamento de desquantização e transformada inversa é realizado em um coeficiente de transformada para obter uma imagem residual, e a imagem residual é adicionada à imagem de predição da região correspondente para gerar uma imagem reconstruída.
[0483] Nesta modalidade, o método de predição de imagem é descrito a partir de uma perspectiva do lado de decodificador de vídeo. O decodificador de vídeo determina, com base no tamanho do nó atual e no modo de divisão do nó atual, se deve realizar predição intra ou predição inter em todos os blocos de codificação do nó atual, de modo que o processamento paralelo para todos os blocos de codificação do nó atual possa ser implementado. Isto melhora o desempenho do processamento de predição de imagem e aumenta uma velocidade de processamento de decodificação.
[0484] Um método de predição de imagem fornecido em uma modalidade é usado para o codificador de vídeo 18 e/ou o decodificador de vídeo 24 mostrado na FIG. 8. Esta modalidade inclui as seguintes etapas.
[0485] Etapa 501: Obter um modo de divisão de um nó atual.
[0486] A etapa 501 nesta modalidade é a mesma que a etapa 101 na modalidade mostrada FIG. 9 e os detalhes não são descritos neste relatório novamente.
[0487] Etapa 502: Derivar um valor de uma variável modeTypeCondition, de acordo com o seguinte método.
[0488] Se uma ou mais condições das seguintes primeiras condições predefinidas forem verdadeiras, o valor de modeTypeCondition é um primeiro valor, por exemplo, 0: (1) um tipo de uma imagem ou uma fatia (Slice) em que o nó atual está localizado é um tipo I (slice_type == I) e um valor de qtbtt_dual_tree_intra_flag é 1; (2) um tipo de modo de predição do nó atual é apenas predição intra ou predição inter, isto é, é restrito que apenas predição inter ou predição intra (não predição inter) seja realizada; ou (3) um formato de croma é um formato monocromático (Monochrome) ou um formato 4:4:4 onde, por exemplo, um valor de chroma_format_idc é 0 ou
3.
[0489] Em outra implementação, as primeiras condições predefinidas incluem adicionalmente a seguinte condição (4): (4) um formato de croma é um formato monocromático (Monochrome), um formato 4:4:4 ou um formato 4:2:2 onde, por exemplo, um valor de chroma_format_idc é 0, 3, ou 2.
[0490] De outro modo, se uma ou mais condições das seguintes segundas condições predefinidas forem verdadeiras, o valor de modeTypeCondition é um segundo valor, por exemplo, 1: (1) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de quadtree; (2) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical; ou (3) um produto da largura e da altura de um bloco de luma do nó atual é 32, e o modo de divisão do nó atual é a divisão de árvore binária horizontal ou a divisão de árvore binária vertical.
[0491] De outro modo, se uma ou mais condições das seguintes terceiras condições predefinidas forem verdadeiras, e o formato de croma é um formato 4:2:0 (o valor de chroma_format_idc é 1), o valor de modeTypeCondition é derivado, de acordo com a seguinte fórmula: 1 + (slice_type != I? 1: 0): (1) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore binária horizontal ou a divisão de árvore binária vertical; ou (2) um produto da largura e da altura de um bloco de luma do nó atual é 128, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical.
[0492] Deve ser observado que a Tabela 3 mostra uma correspondência entre o formato de croma e chroma_format_idc.
Tabela 3 chroma_format_idc separate_colour_plane_flag Formato de SubWidthC SubHeightC croma 0 0 Monocromático 1 1 1 0 4:2:0 2 2 2 0 4:2:2 2 1 3 0 4:4:4 1 1 3 1 4:4:4 1 1
[0493] Na amostragem monocromática (Monochrome), não há o formato de componente de croma, e há apenas uma sequência de componentes de luma.
[0494] Na amostragem 4:2:0, as larguras de dois componentes de croma são metade das larguras de componentes de luma correspondentes, e as alturas dos componentes de croma são metade das alturas dos componentes de luma.
[0495] Na amostragem 4:2:2, as alturas de dois componentes de croma são as mesmas que as alturas de componentes de luma correspondentes, e as larguras dos componentes de croma são metade das larguras dos componentes de luma correspondentes.
[0496] Na amostragem 4:4:4, as alturas e as larguras de dois componentes de croma dependem de um valor de separate_colour_plane_flag.
Se o valor de separate_colour_plane_flag for igual a 0, as larguras e as alturas dos dois componentes de croma são, respectivamente, as mesmas que as larguras e as alturas de componentes de luma correspondentes. De outro modo (o valor de separate_colour_plane_flag é igual a 1), três componentes são codificados separadamente como imagens experimentadas monocromáticas.
[0497] separate_colour_plane_flag igual a 1 especifica que os três componentes de coloração do formato de croma 4:4:4 são codificados separadamente. separate_colour_plane_flag igual a 0 especifica que os componentes de coloração não são codificados separadamente.
[0498] qtbtt_dual_tree_intra_flag igual a 1 especifica que para as fatias I, cada CTU é dividida em unidades de codificação com amostras de luma 64x64 usando uma divisão de quadtree implícita e que estas unidades de codificação são a raiz de duas estruturas de sintaxe coding_tree separadas para luma e croma. qtbtt_dual_tree_intra_flag igual a 0 especifica que a estrutura de sintaxe coding_tree separada não é usada para as fatias I. Quando qtbtt_dual_tree_intra_flag não está presente, é inferido para ser igual a 0.
[0499] Etapa 503: Determinar um tipo de modo de predição de todas as unidades de codificação do nó atual com base no valor de modeTypeCondition.
[0500] Especificamente, se o valor de modeTypeCondition for 1, é restrito que predição intra (MODE_INTRA) é realizada em todos as unidades de codificação do nó atual. Se o valor de modeTypeCondition for 2, um valor de um elemento de sintaxe mode_constraint_flag é analisado a partir de um fluxo de bits. Se o valor de mode_constraint_flag for 0, predição inter (MODE_INTER) é realizado em todos as unidades de codificação do nó atual. Se o valor mode_constraint_flag for 1, predição intra (não predição inter/MODE_INTRA) é realizada em todas as unidades de codificação do nó atual.
[0501] De outro modo, o tipo de modo de predição de todas as unidades de codificação do nó atual não é restrito e é o mesmo que um tipo de modo de predição do nó atual.
[0502] Etapa 504: Determinar se um bloco de croma e o bloco de luma que correspondem ao nó atual são divididos adicionalmente, para obter uma unidade de codificação de croma e uma unidade de codificação de luma.
[0503] (A etapa 504 é a mesma que a etapa 407).
[0504] Quando for determinado que apenas predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma incluído no nó atual é dividido no modo de divisão, para obter blocos de luma obtidos através de divisão, e predição intra é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é usado como um bloco de codificação de croma, e predição intra é realizada no bloco de codificação de croma. Em outras palavras, se for determinado que predição intra é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido em um modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual não é dividido, para obter um bloco de codificação de croma (CB de croma para abreviação). Pode ser restrito que os N nós de árvore de codificação de luma não são divididos adicionalmente, ou isto não é restrito. Se o nó de árvore de codificação de luma for adicionalmente dividido, um modo de divisão do nó de árvore de codificação de luma é analisado para divisão recursiva. Quando o nó de árvore de codificação de luma não é adicionalmente dividido, o nó de árvore de codificação de luma corresponde a um bloco de codificação de luma (CB de luma para abreviação). A predição intra é realizada no CB de luma para obter um bloco de predição de luma correspondente ao CB de luma. A predição intra é realizada no CB de croma para obter um bloco de predição de croma correspondente ao CB de croma. O bloco de predição de croma e o CB de croma têm um mesmo tamanho.
[0505] Quando for determinado que apenas predição intra é realizada em todos os blocos de codificação do nó atual, em outra implementação, o bloco de luma e o bloco de croma que são incluídos no nó atual são divididos no modo de divisão, para obter nós obtidos através de divisão. Quando um nó de árvore de codificação não é adicionalmente dividido, o nó de árvore de codificação corresponde a uma unidade de codificação e inclui uma unidade de codificação de luma e uma unidade de codificação de croma. A predição intra é realizada em unidades de codificação de luma e unidades de codificação de croma, onde as unidades de codificação de luma e as unidades de codificação de croma são obtidas através de divisão.
[0506] Quando for determinado que apenas predição inter é realizada em todos os blocos de codificação do nó atual, em uma implementação, o bloco de luma incluído no nó atual é dividido no modo de divisão para obter blocos de luma obtidos através de divisão, e predição inter é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é dividido no modo de divisão para obter blocos de croma obtidos através de divisão, e predição inter é realizada nos blocos de croma obtido através de divisão. Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual é dividido em um modo de divisão do bloco de croma, para obter M nós de árvore de codificação de croma. N e M são inteiros positivos, e N e M podem ser iguais ou diferentes. Pode ser restrito que os N nós de árvore de codificação de luma e os M nós de árvore de codificação de croma não são divididos adicionalmente, ou isto não é restrito. Quando nenhuma divisão adicional é realizada, os N nós de árvore de codificação de luma correspondem aos N CBs de luma do nó atual e os M nós de árvore de codificação de croma correspondem aos M CBs de croma do nó atual. A predição inter é realizada nos N CBs de luma para obter blocos de predição de luma correspondentes, e predição inter é realizada nos M CBs de croma para obter blocos de predição de croma correspondentes.
[0507] Quando for determinado que apenas predição inter é realizada em todos os blocos de codificação do nó atual, em uma implementação, o bloco de luma incluído no nó atual é dividido no modo de divisão para obter blocos de luma obtidos através de divisão, e predição inter é realizada nos blocos de luma obtidos através de divisão; e o bloco de croma incluído no nó atual é dividido no modo de divisão para obter blocos de croma obtidos através de divisão, e predição inter é realizada nos blocos de croma obtido através de divisão. Em outras palavras, se for determinado que predição inter é realizada em todos os blocos de codificação do nó atual, o bloco de luma do nó atual é dividido no modo de divisão do bloco de luma, para obter N nós de árvore de codificação de luma; e o bloco de croma do nó atual é dividido em um modo de divisão do bloco de croma, para obter M nós de árvore de codificação de croma. N e M são inteiros positivos, e N e M podem ser iguais ou diferentes. Pode ser restrito que os N nós de árvore de codificação de luma e os M nós de árvore de codificação de croma não são divididos adicionalmente, ou isto não é restrito. Quando nenhuma divisão adicional é realizada, os N nós de árvore de codificação de luma correspondem aos N CBs de luma do nó atual e os M nós de árvore de codificação de croma correspondem aos M CBs de croma do nó atual. A predição inter é realizada nos N CBs de luma para obter blocos de predição de luma correspondentes, e predição inter é realizada nos M CB de croma para obter blocos de predição de croma correspondentes.
[0508] Particularmente, se apenas predição inter for realizada em todos os blocos de codificação do nó atual, os nós filhos são obtidos por divisão do nó atual no modo de divisão, o nó filho precisa ser adicionalmente dividido, e um bloco de luma com um tamanho predefinido é obtido através de divisão em um modo de divisão do nó filho onde, por exemplo, o tamanho predefinido é 4×4 (isto é, tanto a largura quanto a altura são 4), o modo de divisão do nó filho não é permitido ou o nó filho não é permitido ser adicionalmente dividido.
Especificamente, se for restrito que apenas predição inter é realizada em um nó, e uma quantidade de amostras de luma do nó for 32 (ou um produto da largura e da altura do nó é 32), a divisão de árvore binária (incluindo divisão de árvore binária horizontal ou divisão de árvore binária vertical) não é permitida para o nó.
Se for restrito que apenas predição inter é realizada em um nó, e uma quantidade de amostras de luma do nó for 64 (ou um produto da largura e da altura do nó é 64), a divisão de árvore ternária (incluindo divisão de árvore ternária horizontal ou divisão de árvore ternária vertical) não é permitida para o nó. Tal método de determinação é aplicável tanto ao formato de dados de vídeos de YUV 4:2:0 quanto de YUV 4:2:2.
[0509] Por exemplo, se o tamanho do nó atual for 8×8 e dois nós 8×4 (ou 4×8) são gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), os blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, a divisão de árvore binária vertical (ou divisão de árvore binária horizontal) não é permitida para o nó 8×4 (ou 4×8) ou o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido. Para outro exemplo, se a quantidade de amostras do bloco de luma do nó atual for 128, e o modo de divisão for a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical, pode ser obtido que a quantidade de amostras do bloco de luma é 64. Entretanto, se a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical para um nó filho for usada para o nó de luma com a quantidade de amostras de 64, os blocos de luma 4×4 são obtidos. Portanto, quando for restrito que apenas predição inter é realizada, a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical não é permitida para o nó com a quantidade de amostras de 64 ou o nó com a quantidade de amostras de 64 não é permitido ser adicionalmente dividido.
[0510] Etapa 505: Analisar uma unidade de codificação para obter informações de modo de predição.
[0511] Um elemento de sintaxe relacionado à predição intra ou predição inter é analisado com base em um tipo de um modo de predição da unidade de codificação, para obter um modo de predição final da unidade de codificação. A predição é realizada no modo de predição correspondente, para obter um preditor.
[0512] Se o nó atual for localizado em uma região de imagem intra (isto é, um tipo de uma imagem ou uma fatia (slice_type) em que o nó atual está localizado é um tipo intra ou um tipo I) e um modo IBC é permitido ser usado, um valor de cu_pred_mode é derivado como 1, e o valor de cu_pred_mode é obtido sem precisar analisar o fluxo de bits. Se o nó atual estiver localizado em uma região de imagem intra, mas um modo IBC não for permitido ser usado, um valor de cu_pred_mode é derivado como 1, um valor de cu_skip_flag é 0, e o valor de cu_pred_mode é obtido sem precisar analisar o fluxo de bits.
[0513] Se o nó atual estiver localizado em uma região de imagem inter (isto é, um tipo de uma imagem ou uma fatia (slice_type) em que o nó atual está localizado é um tipo inter ou um tipo B), um valor de cu_pred_mode é derivado como 0, e o valor de cu_pred_mode é obtido sem precisar analisar o fluxo de bits.
[0514] Etapa 506: Decodificar cada bloco de codificação para obter um sinal reconstruído de um bloco de imagem correspondente ao nó atual.
[0515] Por exemplo, o processamento de predição inter ou o processamento de predição intra é realizado em cada CU com base em um bloco de predição da CU, para obter uma imagem de predição inter ou uma imagem de predição intra da CU. Em seguida, com base nas informações residuais de cada CU, o processamento de desquantização e transformada inversa é realizado em um coeficiente de transformada para obter uma imagem residual, e a imagem residual é adicionada à imagem de predição da região correspondente para gerar uma imagem reconstruída.
[0516] Um método correspondente a um lado de codificador:
[0517] Um método de predição de imagem fornecido em uma modalidade é usado para o codificador de vídeo 18 mostrado na FIG. 8. Esta modalidade inclui as seguintes etapas.
[0518] Etapa 601: Obter um modo de divisão de um nó atual.
[0519] A etapa 601 nesta modalidade é a mesmo que a etapa 501 e os detalhes não são descritos neste relatório novamente.
[0520] Etapa 602: Derivar um valor de uma variável modeTypeCondition, de acordo com o seguinte método.
[0521] Se uma ou mais condições das seguintes primeiras condições predefinidas forem verdadeiras, o valor de modeTypeCondition é um primeiro valor, por exemplo, 0: (1) um tipo de uma imagem ou uma fatia (Slice) em que o nó atual está localizado é um tipo I (slice_type == I) e um valor de qtbtt_dual_tree_intra_flag é 1; (2) um tipo de modo de predição do nó atual é apenas predição intra ou predição inter, isto é, é restrito que apenas predição inter ou predição intra (não predição inter) seja realizada; ou (3) um formato de croma é um formato monocromático (Monochrome) ou um formato 4:4:4 onde, por exemplo, um valor de chroma_format_idc é 0 ou
3.
[0522] Em outra implementação, as primeiras condições predefinidas incluem adicionalmente a seguinte condição (4): (4) um formato de croma é um formato monocromático (Monochrome), um formato 4:4:4 ou um formato 4:2:2 onde, por exemplo, um valor de chroma_format_idc é 0, 3 ou 2.
[0523] De outro modo, se uma ou mais condições das seguintes segundas condições predefinidas forem verdadeiras, o valor de modeTypeCondition é um segundo valor, por exemplo, 1: (1) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de quadtree; (2) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical; ou (3) um produto da largura e da altura de um bloco de luma do nó atual é 32, e o modo de divisão do nó atual é a divisão de árvore binária horizontal ou a divisão de árvore binária vertical.
[0524] De outro modo, se uma ou mais condições das seguintes terceiras condições predefinidas forem verdadeiras, e o formato de croma for um formato 4:2:0 (o valor de chroma_format_idc é 1), o valor de modeTypeCondition é derivado, de acordo com a seguinte fórmula: 1 + (slice_type != I? 1: 0): (1) um produto da largura e da altura de um bloco de luma do nó atual é 64, e o modo de divisão do nó atual é a divisão de árvore binária horizontal ou a divisão de árvore binária vertical; ou (2) um produto da largura e da altura de um bloco de luma do nó atual é 128, e o modo de divisão do nó atual é a divisão de árvore ternária horizontal ou a divisão de árvore ternária vertical.
[0525] Etapa 603: Determinar um tipo de modo de predição de todas as unidades de codificação do nó atual com base no valor de modeTypeCondition.
[0526] Especificamente, se o valor de modeTypeCondition for 1, é restrito que a predição intra (MODE_INTRA) é realizada em todas as unidades de codificação do nó atual. Opcionalmente, um valor de mode_constraint_flag é definido como 1.
[0527] Se o valor de modeTypeCondition for 2, o valor do elemento de sintaxe mode_constraint_flag é determinado por meio de uso de um método RDO. Por exemplo, um custo de RD gerado em um caso de realizar predição inter em todas as unidades de codificação do nó atual é calculado primeiro; em seguida, um custo de RD gerado em um caso de realizar predição intra é calculado; e se não houver residual no caso de realizar predição inter em todas as unidades de codificação do nó atual (por exemplo, um modo de salto é usado), é determinado que predição inter é realizada em todas as unidades de codificação do nó atual, o valor de mode_constraint_flag é definido como 0, e o custo de RD gerado no caso de predição intra não precisar ser calculada.
Alternativamente, um custo de RD gerado em um caso de realizar predição intra em todas as unidades de codificação do nó atual pode ser calculado primeiro; em seguida, um custo de RD gerado em um caso de realizar predição inter é calculado; e um modo de predição com um custo de RD menor é determinado como um modo de predição final.
[0528] De outro modo, o tipo de modo de predição de todas as unidades de codificação do nó atual não é restrito, e é o mesmo que um tipo de modo de predição do nó atual.
[0529] Particularmente, se o nó atual estiver localizado em uma região de imagem intra (isto é, um tipo de uma imagem ou uma fatia (slice_type) em que o nó atual é um tipo intra ou um tipo I), e um modo IBC é permitido ser usado, um valor de pred_mode_flag é 1 por padrão. Se o nó atual estiver localizado em uma região de imagem intra, mas um modo IBC não é permitido ser usado, um valor de pred_mode_flag é 1 por padrão, e um valor de cu_skip_flag é 0.
[0530] Etapa 604: Determinar um modo de divisão de um bloco de croma e um modo de divisão de um bloco de luma que correspondem ao nó atual, para obter uma unidade de codificação de croma e uma unidade de codificação de luma.
[0531] (A etapa 604 é a mesma que a etapa 504).
[0532] Etapa 605: Predizer um bloco de codificação de uma CU obtido por divisão do nó atual, para obter um preditor do bloco de codificação.
[0533] Se apenas predição intra for realizada em todos os blocos de codificação do nó atual, um lado de codificador determina, de acordo com o método de distorção de taxa (Rate-distortion optimization, RDO) ou outro método, um modo de predição intra ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição intra correspondente, para obter um preditor do bloco atual.
[0534] Se apenas predição inter é realizada em todos os blocos de codificação do nó atual, o lado de codificador determina, de acordo com o método de otimização de distorção de taxa ou outro método, um modo de predição inter ideal usado para um bloco de codificação atual; e prediz o bloco de codificação atual por meio de uso do modo de predição inter correspondente, para obter um preditor do bloco atual.
[0535] Além disso, o codificador atribui valores aos elementos de sintaxe relacionados à profundidade de CU, e escreve o valor de cada elemento de sintaxe em um fluxo de bits, de acordo com um critério para uma definição de sintaxe de nível de CU. Por exemplo, se apenas predição intra for realizada em todos os blocos de codificação do nó atual, o valor de pred_mode_flag é definido como 1 e pred_mode_flag não é escrito no fluxo de bits, isto é, pred_mode_flag é ausente a partir do fluxo de bits. Se apenas predição intra for realizada em todos os blocos de codificação do nó atual e for determinado que o modo IBC não é usado, o valor de cu_skip_flag (ou skip_flag) é 0, e cu_skip_flag não é escrito no fluxo de bits. De outro modo, cu_skip_flag precisa ser escrito no fluxo de bits depois do valor de cu_skip_flag é determinado, e é transmitido para um lado de decodificador.
[0536] Se apenas predição inter for realizada em todos os blocos de codificação do nó atual, o valor de pred_mode_flag é definido como 0, e pred_mode_flag não é escrito no fluxo de bits, isto é, pred_mode_flag é ausente a partir do fluxo de bits. Se um valor de pred_mode_ibc_flag for definido como 0, pred_mode_ibc_flag não é escrito no fluxo de bits, isto é, pred_mode_ibc_flag é ausente a partir do fluxo de bits.
[0537] Etapa 606: Obter um sinal reconstruído de um bloco de imagem no nó atual.
[0538] Depois de obter informações de predição através de predição intra ou predição inter, o lado de codificador obtém informações residuais subtraindo as informações de predição correspondentes (ou o preditor) de um valor de pixel de um pixel no bloco de codificação atual, as transformações das informações residuais por meio de uso de um método, tais como transformada de cosseno discreta (Discrete Cosine Transformation, DCT), obtém um fluxo de bits através de quantização e codificação de entropia, e transmite as informações residuais para o lado de decodificador. Depois de adicionar um sinal predito e um sinal residual reconstruído, o lado de codificador precisa adicionalmente realizar uma operação de filtragem, para obter um sinal reconstruído, e usar o sinal reconstruído como um sinal de referência para codificação subsequente.
Particularmente, se o modo de salto for usado para um bloco de codificação, não há informações residuais, e o lado de codificador não precisa realizar transformada, onde o preditor é um valor de reconstrução final.
[0539] A FIG. 15 é um diagrama estrutural esquemático de funções de um aparelho de predição de imagem, de acordo com uma modalidade deste pedido. Como mostrado na FIG. 15, um aparelho de predição de imagem 40 fornecido nesta modalidade inclui: um módulo de obtenção 41, configurado para obter um modo de divisão de um nó atual; um módulo de julgamento 42, configurado para determinar se um bloco de imagem com um tamanho predefinido é obtido por divisão do nó atual no modo de divisão, onde o bloco de imagem inclui um bloco de luma ou um bloco de croma; e um módulo de execução 43, configurado para: quando for determinado que o bloco de imagem com o tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0540] Opcionalmente, o bloco de imagem com o tamanho predefinido inclui um bloco de luma com um primeiro tamanho predefinido, e o módulo de julgamento 42 é especificamente configurado para: determinar, com base em um tamanho do nó atual e no modo de divisão do nó atual, se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0541] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0542] Opcionalmente, quando o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, o módulo de julgamento 42 é adicionalmente configurado para: determinar se um bloco de croma com um segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão; e quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: realizar predição intra ou predição inter em todos os blocos de codificação cobertos pelo nó atual.
[0543] Opcionalmente, o bloco de imagem com o tamanho predefinido inclui o bloco de croma com o segundo tamanho predefinido, e o módulo de julgamento 42 é especificamente configurado para: determinar, com base no tamanho do nó atual e no modo de divisão do nó atual, se o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão.
[0544] Opcionalmente, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0545] Opcionalmente, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição inter, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição intra, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0546] Opcionalmente, qualquer bloco de codificação é um 1o bloco de codificação de todos os blocos de codificação cobertos pelo nó atual em uma ordem de decodificação.
[0547] Opcionalmente, quando for determinado que o bloco de croma com o segundo tamanho predefinido é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: determinar se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó atual no modo de divisão, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0548] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0549] Opcionalmente, quando for determinado que o bloco de luma com o primeiro tamanho predefinido não é obtido por divisão do nó atual no modo de divisão, o módulo de execução 43 é especificamente configurado para: quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição inter, realizar predição inter em todos os blocos de codificação cobertos pelo nó atual; ou quando um modo de predição usado para qualquer bloco de codificação coberto pelo nó atual for predição intra, realizar predição intra em todos os blocos de codificação cobertos pelo nó atual.
[0550] Opcionalmente, o módulo de execução 43 é especificamente configurado para: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma; ou dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição inter nos blocos de luma obtidos através de divisão; e dividir, no modo de divisão, o bloco de croma incluído no nó atual para obter blocos de croma obtidos através de divisão, e realizar predição inter nos blocos de croma obtido através de divisão.
[0551] Opcionalmente, o módulo de execução 43 é especificamente configurado para: dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma; ou dividir, no modo de divisão, o bloco de luma incluído no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição inter nos blocos de luma obtidos através de divisão; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter no bloco de codificação de croma.
[0552] Opcionalmente, quando predição inter é realizada em todos os blocos de codificação cobertos pelo nó atual, o módulo de obtenção 41 é adicionalmente configurado para obter um sub-modo de divisão de um nó filho do nó atual, onde o nó filho inclui um bloco de luma e um bloco de croma; e o módulo de julgamento 42 é adicionalmente configurado para determinar se o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó filho do nó atual no sub-modo de divisão; e quando for determinado que o bloco de luma com o primeiro tamanho predefinido é obtido por divisão do nó filho do nó atual no sub-modo de divisão, o módulo de execução 43 é especificamente configurado para: dividir o nó filho do nó atual em um modo de divisão exceto no sub-modo de divisão, para obter um bloco de codificação correspondente, e realizar predição inter no bloco de codificação correspondente; ou usar o nó filho do nó atual como um bloco de codificação, e realizar predição inter no bloco de codificação.
[0553] O aparelho de predição de imagem fornecido nesta modalidade deste pedido pode realizar as soluções técnicas no método anterior modalidades. Os princípios de implementação e efeitos técnicos são similares e os detalhes não são descritos neste relatório novamente.
[0554] A FIG. 16 é um diagrama estrutural esquemático de hardware de um dispositivo de codificação de vídeo, de acordo com uma modalidade deste pedido. Como mostrado na FIG. 16, um dispositivo de codificação de vídeo 50 fornecido nesta modalidade inclui um processador 51 e uma memória 52 que são configurados para armazenar uma instrução executável do processador 51.
O processador 51 pode realizar o método de predição de imagem correspondente ao dispositivo de codificação de vídeo nas modalidades do método anterior. Os princípios de implementação e os efeitos técnicos são similares e os detalhes não são descritos neste relatório novamente.
[0555] Opcionalmente, a memória 52 pode ser independente, ou pode ser integrada ao processador 51.
[0556] Quando a memória 52 é um componente independente do processador 51, o dispositivo de codificação de vídeo 50 inclui adicionalmente um barramento 53, configurado para conectar a memória 52 e o processador 51.
[0557] A FIG. 17 é um diagrama estrutural esquemático de hardware de um dispositivo de decodificação de vídeo, de acordo com uma modalidade deste pedido. Como mostrado na FIG. 17, um dispositivo de decodificação de vídeo 60 fornecido nesta modalidade inclui um processador 61 e uma memória 62 que são configurados para armazenar uma instrução executável do processador 61. O processador 61 pode realizar o método de predição de imagem correspondente ao dispositivo de decodificação de vídeo nas modalidades do método anterior. Os princípios de implementação e os efeitos técnicos são similares e os detalhes não são descritos neste relatório novamente.
[0558] Opcionalmente, a memória 62 pode ser independente ou pode ser integrada ao processador 61.
[0559] Quando a memória 62 é um componente independente do processador 61, o dispositivo de decodificação de vídeo 60 inclui adicionalmente um barramento 63, configurado para conectar a memória 62 e o processador 61.
[0560] A FIG. 18 é um diagrama estrutural esquemático de um sistema de predição de imagem, de acordo com uma modalidade deste pedido.
Como mostrado na FIG. 18, o sistema de predição de imagem fornecido nesta modalidade inclui um dispositivo de coleta de vídeo 70, o dispositivo de codificação de vídeo 50 na modalidade mostrada na FIG. 16, o dispositivo de decodificação de vídeo 60 na modalidade mostrada na FIG. 17 e um dispositivo de exibição 80.
[0561] O dispositivo de codificação de vídeo 50 é conectado tanto ao dispositivo de coleta de vídeo 70 quanto ao dispositivo de decodificação de vídeo 60, e o dispositivo de decodificação de vídeo 60 é conectado ao dispositivo de exibição 80.
[0562] Especificamente, o dispositivo de codificação de vídeo 50 recebe informações de vídeo ou imagem enviadas pelo dispositivo de coleta de vídeo 70. O dispositivo de codificação de vídeo 50 pode realizar o método de predição de imagem correspondente ao dispositivo de codificação de vídeo 50 nas modalidades do método anterior. O dispositivo de codificação de vídeo 50 envia as informações de vídeo ou imagem codificadas para o dispositivo de decodificação de vídeo 60. O dispositivo de decodificação de vídeo 60 pode realizar o método de predição de imagem correspondente ao dispositivo de decodificação de vídeo 60 nas modalidades do método anterior. O dispositivo de decodificação de vídeo 60 envia informações de vídeo ou imagem decodificadas ao dispositivo de exibição 80 para exibição.
[0563] O sistema de predição de imagem fornecido nesta modalidade deste pedido inclui o dispositivo de codificação de vídeo que pode realizar as modalidades do método anterior e o dispositivo de decodificação de vídeo que pode realizar as modalidades do método anterior. Os princípios de implementação e os efeitos técnicos são similares e os detalhes não são descritos neste relatório novamente.
[0564] Uma modalidade deste pedido fornece adicionalmente uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena um programa de computador, e o programa de computador é executado por um processador para implementar as etapas nas modalidades do método anterior.
[0565] Uma modalidade deste pedido fornece adicionalmente um método de decodificação de vídeo, onde o método inclui: obter um modo de divisão de um nó atual, onde o nó atual inclui um bloco de luma e um bloco de croma; determinar se um bloco de croma pequeno é obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, onde o bloco de croma pequeno é um bloco de croma com uma quantidade de pixel menor do que ou igual a um primeiro valor predefinido ou o bloco de croma pequeno é um bloco de croma, em blocos, com uma quantidade de pixel menor do que ou igual a um segundo valor predefinido; e se o bloco de croma pequeno for obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz, para obter informações de predição do bloco de codificação obtido através de divisão.
[0566] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em todos os blocos de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em todos os blocos de codificação (coding block) obtidos por divisão do nó atual servindo como um nó raiz.
[0567] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em todos os blocos de croma pequenos obtido por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em todos os blocos de croma pequenos obtidos por divisão do nó atual servindo como um nó raiz.
[0568] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em uma unidade de codificação (coding unit) obtido por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em uma unidade de codificação (coding unit) obtido por divisão do nó atual servindo como um nó raiz.
[0569] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: analisar uma flag de modo de predição de nó (cons_pred_mode_flag)
do nó atual; e quando um valor da flag de modo de predição de nó for um primeiro valor, realizar predição inter no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz; ou quando um valor da flag de modo de predição de nó for um segundo valor, realizar predição intra no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz.
[0570] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: quando um modo de predição usado para qualquer bloco de codificação obtido por divisão do nó atual servindo como um nó raiz é predição inter, realizar predição inter no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz; ou quando um modo de predição usado para qualquer bloco de codificação obtido por divisão do nó atual servindo como um nó raiz é predição intra, realizar predição intra no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz.
[0571] Opcionalmente, o primeiro valor predefinido é 2 ou 4, ou o segundo valor predefinido é 16, 8 ou 32.
[0572] Opcionalmente, realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: dividir, no modo de divisão do nó, o bloco de luma incluído no nó atual, para obter um bloco de codificação de luma; realizar predição intra no bloco de codificação de luma; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma e realizar predição intra no bloco de codificação de croma.
[0573] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: dividir, no modo de divisão do nó, o bloco de luma incluído no nó atual, para obter um bloco de codificação de luma; realizar predição inter ou predição intra no bloco de codificação de luma; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma e realizar predição inter ou predição intra no bloco de codificação de croma.
[0574] Opcionalmente, usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter ou predição intra no bloco de codificação de croma inclui: usar o bloco de codificação de croma como um bloco de predição de croma, e realizar predição intra no bloco de predição de croma; ou dividir o bloco de codificação de croma para obter um bloco de predição de croma e realizar predição inter no bloco de predição de croma obtido através de divisão.
[0575] Uma modalidade deste pedido fornece adicionalmente um método de decodificação de vídeo, onde o método inclui: obter um modo de divisão de um nó atual, onde o nó atual inclui um bloco de luma e um bloco de croma; determinar se um bloco de luma com um tamanho predefinido é obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual; e se o bloco de luma com o tamanho predefinido for obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, realizar predição intra em todos os blocos de codificação (coding block) obtidos por divisão do nó atual servindo como um nó raiz, para obter blocos de predição dos blocos de codificação obtidos através de divisão.
[0576] Opcionalmente, o método inclui adicionalmente: se o bloco de luma com o tamanho predefinido não for obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, determinar se um bloco de croma pequeno é obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, onde o bloco de croma pequeno é um bloco de croma com uma quantidade de pixel menor do que ou igual a um primeiro valor predefinido ou o bloco de croma pequeno é um bloco de croma, em blocos, com uma quantidade de pixel menor do que ou igual a um segundo valor predefinido; e se o bloco de croma pequeno for obtido por divisão adicionalmente do nó atual no modo de divisão do nó atual, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz, para obter um bloco de predição do bloco de codificação obtido através de divisão.
[0577] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em todos os blocos de codificação (coding block) obtidos por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em todos os blocos de codificação (coding block) obtidos por divisão do nó atual servindo como um nó raiz.
[0578] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em todos os blocos de croma pequenos obtidos por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block)
obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em todos os blocos de croma pequenos obtidos por divisão do nó atual servindo como um nó raiz.
[0579] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição inter em uma unidade de codificação (coding unit) obtida por divisão do nó atual servindo como um nó raiz; ou realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: realizar predição intra em uma unidade de codificação (coding unit) obtida por divisão do nó atual servindo como um nó raiz.
[0580] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: analisar uma flag de modo de predição de nó (cons_pred_mode_flag) do nó atual; e quando um valor da flag de modo de predição de nó for um primeiro valor, realizar predição inter no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz; e quando um valor da flag de modo de predição de nó for um segundo valor, realizar predição intra no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz.
[0581] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtida por divisão do nó atual servindo como um nó raiz inclui: quando um modo de predição usado para qualquer bloco de codificação obtido por divisão do nó atual servindo como um nó raiz é predição inter, realizar predição inter no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz; e quando um modo de predição usado para qualquer bloco de codificação obtido por divisão do nó atual servindo como um nó raiz é predição intra, realizar predição intra no bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz.
[0582] Opcionalmente, o primeiro valor predefinido é 2 ou 4, ou o segundo valor predefinido é 16, 8 ou 32.
[0583] Opcionalmente, realizar predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: dividir, no modo de divisão do nó, o bloco de luma incluído no nó atual, para obter um bloco de codificação de luma; realizar predição intra no bloco de codificação de luma; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
[0584] Opcionalmente, realizar predição inter ou predição intra em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: dividir, no modo de divisão do nó, o bloco de luma incluído no nó atual, para obter um bloco de codificação de luma; realizar predição inter ou predição intra no bloco de codificação de luma; e usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter ou predição intra no bloco de codificação de croma.
[0585] Opcionalmente, usar o bloco de croma incluído no nó atual como um bloco de codificação de croma, e realizar predição inter ou predição intra no bloco de codificação de croma inclui:
usar o bloco de codificação de croma como um bloco de predição de croma, e realizar predição intra no bloco de predição de croma; ou dividir o bloco de codificação de croma para obter um bloco de predição de croma, e realizar predição inter no bloco de predição de croma obtido através de divisão.
[0586] Opcionalmente, realizar predição inter em um bloco de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz inclui: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; obter um sub-modo de divisão do nó filho do nó atual, onde o nó filho inclui um bloco de luma e um bloco de croma; determinar se um bloco de luma com um tamanho predefinido é obtido por divisão adicional do nó filho do nó atual no sub-modo de divisão; e se o bloco de luma com o tamanho predefinido for obtido por divisão adicional do nó filho do nó atual no sub-modo de divisão, dividir o nó filho do nó atual em um modo de divisão exceto no sub-modo de divisão, para obter uma unidade de codificação correspondente, e realizar predição inter na unidade de codificação correspondente; ou usar o nó filho do nó atual como uma unidade de codificação, e realizar predição inter na unidade de codificação.
[0587] Opcionalmente, o tamanho predefinido pode ser 4×4, 4×8, 8×4, 2×4 ou 4×2.
[0588] Uma modalidade deste pedido fornece adicionalmente um método de decodificação de vídeo, onde o método inclui: obter um modo de divisão de um nó atual, onde o nó atual inclui um bloco de luma e um bloco de croma; quando um modo de predição usado para todos os blocos de codificação (coding block) obtido por divisão do nó atual servindo como um nó raiz é um modo de predição inter, dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; obter um sub-modo de divisão do nó filho do nó atual, onde o nó filho inclui um bloco de luma e um bloco de croma; determinar se um bloco de luma com um tamanho predefinido é obtido por divisão adicional do nó filho do nó atual no sub-modo de divisão; e se o bloco de luma com o tamanho predefinido for obtido por divisão adicional do nó filho do nó atual no sub-modo de divisão, dividir o nó filho do nó atual em um modo de divisão exceto no sub-modo de divisão, para obter uma unidade de codificação correspondente, e realizar predição inter na unidade de codificação correspondente; ou usar o nó filho do nó atual como uma unidade de codificação, e realizar predição inter na unidade de codificação.
[0589] O primeiro método de decodificação de vídeo fornecido nesta modalidade deste pedido refere-se a um bloco modo de divisão na decodificação de vídeo. Um formato de dados de vídeo nesta modalidade é um formato YUV 4:2:0. Uma maneira similar pode ser usada para os dados em um formato YUV 4:2:2.
[0590] Etapa 1: Analisar um modo de divisão S de um nó A. Se o nó A for adicionalmente dividido, a etapa 2 é realizada. Se o nó atual não for adicionalmente dividido em nós filhos, o nó atual corresponde a uma unidade de codificação e as informações sobre a unidade de codificação são analisadas.
[0591] O modo de divisão do nó A pode ser pelo menos uma da divisão de quadtree, divisão de árvore binária vertical, divisão de árvore binária horizontal, divisão de árvore ternária vertical e divisão de árvore ternária horizontal. O modo de divisão pode ser outro modo de divisão. Isto não é limitado neste pedido. As informações sobre o modo de divisão do nó atual podem ser transmitidas em um fluxo de bits. O modo de divisão do nó atual pode ser obtido analisando um elemento de sintaxe correspondente no fluxo de bits. O modo de divisão do nó atual pode ser alternativamente determinado, de acordo com uma regra predefinida. Isto não é limitado neste pedido.
[0592] Etapa 2: Determinar se um bloco de croma de pelo menos um nó filho B em nós filhos obtidos por divisão do nó A no modo de divisão S é um bloco pequeno (determinar se a largura e a altura do nó A, e/ou o modo de divisão do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição das seguintes condições). Se o bloco de croma de pelo menos um nó filho B nos nós filhos obtidos por divisão do nó A for um bloco pequeno, a etapa 3 à etapa 6 são realizadas.
[0593] Especificamente, se o bloco de croma de pelo menos um nó filho B do nó A for um bloco pequeno pode ser determinado, de acordo com um dos seguintes métodos: (1) se um tamanho do bloco de croma de pelo menos um nó filho B do nó A é 2×2, 2×4 ou 4×2, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; (2) se a largura ou a altura do bloco de croma de pelo menos um nó filho B do nó A for 2, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; (3) se o nó A incluir 128 pixels de luma e a divisão de árvore ternária for usada para o nó A, ou se o nó A incluir 64 pixels de luma e divisão de árvore binária, divisão de quadtree ou divisão de árvore ternária é usada para o nó A, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; (4) se o nó A incluir 256 pixels de luma e divisão de árvore ternária ou divisão de quadtree for usada para o nó A, ou se o nó A incluir 128 pixels de luma e divisão de árvore binária for usada para o nó A, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; (5) se o nó A incluir N1 pixels de luma e divisão de árvore ternária for usada para o nó A, onde N1 é 64, 128 ou 256, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; (6) se o nó A incluir N2 pixels de luma e divisão de quadtree for usada para o nó A, onde N2 é 64 ou 256, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno; ou (7) se o nó A incluir N3 pixels de luma e divisão de árvore binária for usada para o nó A, onde N3 é 64, 128 ou 256, o bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno.
[0594] Deve ser observado que, o nó A inclui 128 pixels de luma também pode ser descrito como uma área do nó atual é 128, ou um produto da largura e da altura do nó A é 128. Os detalhes não são descritos neste relatório.
[0595] Etapa 3: A restrição da predição intra é realizada em todas as unidades de codificação em uma região de cobertura do nó A, ou a restrição da predição inter é realizada em todas as unidades de codificação em uma região de cobertura do nó A. Predição intra ou predição inter é realizada em todas as unidades de codificação na região de cobertura do nó A, de modo que o processamento paralelo de pequenos blocos por hardware possa ser implementado, melhorando, desse modo, o desempenho de codificação.
[0596] Se predição intra ou predição inter for realizada em todas as unidades de codificação na região de cobertura do nó A pode ser determinada, de acordo com um dos seguintes métodos.
[0597] Método 1: Determinar se predição intra ou predição inter é realizada com base em uma flag em uma tabela de sintaxe.
[0598] Se o bloco de croma de pelo menos um nó filho B obtido por divisão do nó A no modo de divisão S for um bloco pequeno (e um bloco de croma do nó A não for um bloco pequeno), uma flag cons_pred_mode_flag é analisado a partir do fluxo de bits. Quando um valor de cons_pred_mode_flag for 0, indica que predição inter é realizada em todas as unidades de codificação na região de cobertura do nó A, ou quando um valor de cons_pred_mode_flag for
1, indica que predição intra é realizada em todas as unidades de codificação na região de cobertura do nó A. cons_pred_mode_flag pode ser um elemento de sintaxe que precisa ser analisado durante a divisão de bloco. Quando o elemento de sintaxe é analisado, cu_pred_mod da unidade de codificação na região de cobertura do nó A não pode ser realizado, e um valor de cu_pred_mode é um valor padrão correspondente ao valor de cons_pred_mode_flag.
[0599] Deve ser observado que, se apenas o modo de predição intra for usado para o nó filho do nó A, por exemplo, se o nó A estiver localizado em uma imagem intra (isto é, um tipo da imagem em que o nó A está localizado é um tipo intra ou um tipo I), ou se o nó A estiver localizado em uma imagem intra e uma tecnologia IBC não for usada para uma sequência, o valor de cons_pred_mode_flag é 1 por padrão, isto é, cons_pred_mode_flag é ausente a partir do fluxo de bits. A tecnologia IBC pode pertencer à predição inter ou predição intra.
[0600] Método 2: Determinar, com base em um modo de predição de um 1o nó em uma região do nó A, se predição intra ou predição inter for realizada.
[0601] Um modo de predição de uma 1a unidade de codificação B0 na região do nó A (o modo de predição da 1a unidade de codificação B0 não é restrito) é analisado. Se o modo de predição da 1a unidade de codificação B0 for predição intra, predição intra é realizada em todas as unidades de codificação na região de cobertura do nó A. Se o modo de predição da 1a unidade de codificação B0 for predição inter, predição inter é realizada em todas as unidades de codificação na região de cobertura do nó A.
[0602] Etapa 4: Determinar um modo de divisão de um bloco de croma e um modo de divisão de um bloco de luma do nó A com base no modo de predição usado para a unidade de codificação na região de cobertura do nó A.
[0603] Se o modo de predição intra for usado para todas as unidades de codificação na região de cobertura do nó A, o bloco de luma do nó A é dividido no modo de divisão S para obter N nós de árvore de codificação de luma. O bloco de croma do nó A não é adicionalmente dividido, e corresponde a um bloco de codificação de croma (CB de croma para abreviação). Pode ser restrito que os N nós de árvore de codificação de luma não são divididos adicionalmente, ou isto não é restrito. Se o nó filho de luma for adicionalmente dividido, um modo de divisão do nó filho de luma é analisado para a divisão recursiva. Quando o nó de árvore de codificação de luma não é adicionalmente dividido, o nó de árvore de codificação de luma corresponde a um bloco de codificação de luma (CB de luma para abreviação). Um bloco de transformada de croma correspondente ao CB de croma e ao bloco de codificação de croma têm um mesmo tamanho, e um bloco de predição de croma e o bloco de codificação de croma têm um mesmo tamanho.
[0604] Se o modo de predição inter for usado para todas as unidades de codificação na região de cobertura do nó A, o bloco de luma e o bloco de croma do nó A são divididos adicionalmente, no modo de divisão S, em N nós de árvore de codificação que incluem blocos de luma e blocos de croma. Os N nós de árvore de codificação podem ser ou não podem ser divididos adicionalmente. No caso de nenhuma divisão adicional, os N nós de árvore de codificação correspondem às unidades de codificação que incluem blocos de luma e blocos de croma.
[0605] Etapa 5: Analisar informações de predição e informações residuais de uma CU obtida por divisão do nó A.
[0606] As informações de predição incluem um modo de predição (indicando o modo de predição intra ou um modo de não predição intra), o modo de predição intra, o modo de predição inter, informações de movimento e semelhantes. As informações de movimento podem incluir informações, tais como uma direção de predição (direta, indireta ou direção bidirecional), um índice de referência (reference index) e um vetor de movimento (motion vector).
[0607] As informações residuais incluem: uma flag de bloco codificado (coded block flag, cbf), um coeficiente de transformada, um tipo de transformada (tal como DCT-2, DST-7 ou DCT-8) e semelhantes. O tipo de transformada pode ser DCT-2 por padrão.
[0608] Se for restrito que apenas predição intra é realizada em todas as CUs obtidas por divisão do nó A, a análise de informações de predição do CB de luma obtido por divisão do nó A inclui: ajustar respectivamente um valor de skip_flag, um valor de merge_flag, e um valor de cu_pred_mode para 0, 0 e 1 por padrão (isto é, skip_flag, merge_flag e cu_pred_mode são todos ausente a partir do fluxo de bits), ou ajustar respectivamente um valor de skip_flag e um valor de cu_pred_mode para 0 e 1 por padrão (isto é, skip_flag e cu_pred_mode são ambos ausentes a partir do fluxo de bits); e informações de análise sobre o modo de predição intra do CB de luma. A análise de informações de predição do CB de croma obtido por divisão do nó A inclui: analisar o modo de predição intra do CB de croma. O modo de predição intra do CB de croma pode ser analisado, de acordo com o seguinte método: (1) analisar um elemento de sintaxe no fluxo de bits para obter o modo de predição intra; ou (2) ajustar diretamente o modo de predição intra para um modo de predição intra em um conjunto de modos de predição intra de croma, tais como um modo de modelo linear, um modo DM (modo derivado de croma, DM), um modo IBC e semelhantes.
[0609] Se for restrito que apenas predição inter é realizada em todas as CUs obtidas por divisão do nó A, a análise de um modo de predição da CU obtida por divisão do nó A inclui: analisar skip_flag e/ou merge_flag, ajustar um valor de cu_pred_mode para 0 por padrão, e analisar as informações de predição inter, tais como um índice de mesclagem (merge index), uma inter-direção (inter dir), um índice de referência (reference index), um índice de preditor de vetor de movimento (motion vector predictor index) e uma diferença de vetor de movimento (motion vector difference).
[0610] skip_flag representa uma flag de um modo de salto. Quando o valor de skip_flag for 1, indica que o modo de salto é usado para uma CU atual, ou quando o valor de skip_flag for 0, indica que o modo de salto não é usado para uma CU atual. merge_flag é uma flag de um modo de mesclagem. Quando o valor de merge_flag for 1, indica que o modo de mesclagem é usado para a CU atual, ou quando o valor de merge_flag for 0, indica que o modo de mesclagem não é usado para a CU atual. cu_pred_mode representa uma flag de modo de predição de unidade de codificação. Quando o valor de cu_pred_mode for 1, indica que predição intra é realizada em uma unidade de predição atual, ou quando o valor de cu_pred_mode for 0, indica que predição inter comum (informações de identificação, tais como uma inter-direção, um índice de referência, um índice de preditor de vetor de movimento e uma diferença de vetor de movimento no fluxo de bits) é realizada em uma unidade de predição atual.
[0611] Deve ser observado que, nesta modalidade, o modo de predição intra é um modo de predição em que um preditor de um bloco de codificação é gerado por meio de uso de um pixel de referência de domínio espacial de uma imagem em que o bloco de codificação está localizado. Por exemplo, o modo de predição intra é um modo de corrente contínua (direct current mode, modo DC), um modo planar (Planar mode), um modo angular (angular mode), um modo de correspondência de modelo (template matching mode) ou um modo IBC.
[0612] O modo de predição inter é um modo de predição em que um preditor de um bloco de codificação é gerado por meio de uso de um pixel de referência de domínio temporal em uma imagem de referência do bloco de codificação. Por exemplo, o modo de predição inter é um modo de salto (Skip mode), um modo de mesclagem (Merge mode), um modo AMVP (advanced motion vector prediction) (que também é referido como um modo inter comum)
ou um modo IBC.
[0613] Etapa 6: Decodificar cada CU para obter um sinal reconstruído de um bloco de imagem correspondente ao nó A.
[0614] Por exemplo, o processamento de predição inter ou o processamento de predição intra é realizado em cada CU com base nas informações de predição da CU, para obter uma imagem de predição inter ou uma imagem de predição intra da CU. Em seguida, com base nas informações residuais de cada CU, o processamento de desquantização e transformada inversa é realizado em um coeficiente de transformada para obter uma imagem residual, e a imagem residual é adicionada à imagem de predição da região correspondente para gerar uma imagem reconstruída.
[0615] No modo de divisão nesta modalidade, um bloco de croma pequeno em que predição intra é realizada não é gerado e, portanto, um caso em que predição intra é realizada no bloco de croma pequeno é evitado.
[0616] Em um segundo método de decodificação de vídeo fornecido em uma modalidade deste pedido, etapa 1, etapa 2, etapa 3 e etapa 6 são, respectivamente, as mesmas que a etapa 1, etapa 2, etapa 3 e etapa 6 no primeiro método de decodificação. As diferenças são como a seguir:
[0617] Etapa 4: Determinar um modo de divisão de um bloco de croma e um modo de divisão de um bloco de luma do nó A.
[0618] O bloco de luma do nó A é adicionalmente dividido no modo de divisão S, para gerar N nós de árvore de codificação de luma. O bloco de croma do nó A não é adicionalmente dividido, e corresponde a um bloco de codificação de croma (CB de croma). Um bloco de transformada de croma correspondente ao CB de croma e ao bloco de codificação de croma têm um mesmo tamanho.
[Nota: Em comparação à primeira modalidade, nesta modalidade, independente se for restrito que o modo de predição inter ou o modo de predição intra é usado, o bloco de croma não é adicionalmente dividido, o bloco de luma é sempre dividido no modo de divisão S. Isto é irrelevante para um modo de predição de uma região de cobertura do nó A.]
[0619] Etapa 5: Analisar informações de predição e informações residuais de uma CU obtida por divisão do nó A.
[0620] Se for restrito que apenas predição intra é realizada em todas as CUs obtidas por divisão do nó A, o processamento é o mesmo que o processamento na primeira modalidade.
[0621] Se for restrito que apenas predição inter é realizada em todas as CUs obtidas por divisão do nó A, a análise de informações de predição de um CB de luma obtido por divisão do nó A inclui: analisar skip_flag e/ou merge_flag, ajustar um valor de cu_pred_mode para 0 por padrão, e analisar informações de predição inter, tais como um índice de mesclagem (merge index), uma inter- direção (inter dir), um índice de referência (reference index), um índice de preditor de vetor de movimento (motion vector predictor index) e uma diferença de vetor de movimento (motion vector difference). As informações de movimento de cada sub-bloco 4×4 no CB de luma são derivadas com base nas informações de predição inter obtidas através de análise.
[0622] Se for restrito que apenas predição inter é realizada em todas as CUs obtidas por divisão do nó A, informações de predição de um CB de croma obtidas por divisão do nó A não precisam ser analisadas. O CB de croma é dividido em sub-blocos de croma 2×2 (o modo de divisão pode ser o modo de divisão S). As informações de movimento de cada 2×2 sub-bloco de croma são informações de movimento de uma região de luma 4×4 correspondente ao sub- bloco de croma 2×2.
[0623] No modo de divisão nesta modalidade, um bloco de croma pequeno em que predição intra é realizada não é gerado, e um bloco de transformada com um tamanho menor do que 16 pixels não é gerado. Portanto, a complexidade do processamento descrita anteriormente em predição intra e codificação de coeficiente é evitada.
[0624] Em um terceiro método de decodificação de vídeo fornecido em uma modalidade deste pedido, a etapa 1, etapa 2, etapa 3, etapa 4 e etapa 6 são as mesmas que a etapa 1, etapa 2, etapa 3, etapa 4 e etapa 6 no segundo método de decodificação. Uma diferença é como a seguir.
[0625] Etapa 5: Analisar informações de predição e informações residuais de uma CU obtida por divisão do nó A.
[0626] Se for restrito que apenas predição intra é realizada em todas as CUs obtidas por divisão do nó A, o processamento é o mesmo que o processamento na segunda modalidade.
[0627] Se for restrito que apenas predição inter é realizada em todas as CUs obtidas por divisão do nó A, a análise de informações de predição de um CB de luma obtido por divisão do nó A é a mesma que a análise na segunda modalidade.
[0628] Se for restrito que apenas predição inter é realizada em todas as CUs obtidas por divisão do nó A, informações de predição de um CB de croma obtidas por divisão do nó A não precisam ser analisadas. Um bloco de predição de croma e um bloco de codificação de croma têm um mesmo tamanho. As informações de movimento do CB de croma são informações de movimento de uma localização predefinida em uma região de luma (por exemplo, o centro, o canto direito inferior ou o canto esquerdo superior da região de luma) correspondente ao CB de croma.
[0629] No modo de divisão nesta modalidade, um bloco de croma pequeno em que predição intra é realizada não é gerado, um bloco de transformada pequeno não é gerado, e um bloco de croma pequeno em que predição inter é realizada não é gerado.
[0630] Uma modalidade deste pedido fornece um quarto método de decodificação de vídeo, onde o método inclui as seguintes etapas.
[0631] Etapa 1: Esta etapa é a mesma que a etapa 1 no primeiro método anterior de decodificação de vídeo.
[0632] Etapa 2: Determinar se há um bloco de luma 4×4 de pelo menos um nó filho B em nós filhos obtidos por divisão do nó A no modo de divisão S (determinar se a largura e a altura do nó A, e/ou o modo de divisão do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição no Caso 1).
[0633] Se um tamanho (a largura e a altura) e/ou o modo de divisão S que são/é do nó A satisfazerem/satisfizer pelo menos uma condição no Caso 1, é restrito que predição intra é realizada em todas as unidades de codificação em uma região de cobertura do nó A. De outro modo, se for determinado que um bloco de croma de pelo menos um nó filho B nos nós filhos obtidos por divisão do nó A no modo de divisão S é um bloco pequeno (determinar se o tamanho do nó A, e/ou o modo de divisão S do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição no Caso 2), a etapa 3 à etapa 6 são realizadas.
[0634] Especificamente, há os seguintes dois casos para um método para determinar se um bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno.
[0635] Caso 1:
[0636] Se uma ou mais condições das seguintes primeiras condições predefinidas forem verdadeiras, os blocos de luma 4×4 são obtidos por divisão do nó A no modo de divisão S: (1) o nó A inclui M1 pixels e o modo de divisão do nó A é a divisão de quadtree onde, por exemplo, M1 é 64; (2) o nó A inclui M2 pixels e o modo de divisão do nó A é a divisão de árvore ternária onde, por exemplo, M2 é 64; (3) o nó A inclui M3 pixels e o modo de divisão do nó A é a divisão de árvore binária onde, por exemplo, M3 é 32; (4) a largura do nó A é quatro vezes um segundo limite, a altura do nó A é igual ao segundo limite e o modo de divisão do nó A é a divisão de árvore ternária vertical; (5) a largura do nó A é igual a um segundo limite, a altura do nó A é quatro vezes o segundo limite e o modo de divisão do nó A é a divisão de árvore ternária horizontal; (6) a largura do nó A é duas vezes um segundo limite, a altura do nó A é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária vertical; (7) a altura do nó A é duas vezes um segundo limite, a largura do nó A é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária horizontal; ou (8) a largura e/ou a altura do nó A é/são duas vezes um segundo limite e o modo de divisão do nó A é a divisão de quadtree.
[0637] O tamanho pode ser a largura e a altura de uma região de imagem correspondente ao nó A, uma quantidade de pixels de luma incluída em uma região de imagem correspondente ao nó A, ou uma área de uma região de imagem correspondente ao nó A.
[0638] Geralmente, a largura do nó atual é a largura do bloco de luma correspondente ao nó atual, e a altura do nó atual é a altura do bloco de luma correspondente ao nó atual. Em uma implementação específica, por exemplo, o segundo limite pode ser 4.
[0639] Caso 2: (1) um tamanho do bloco de croma de pelo menos um nó filho B do nó A é 2×4 ou 4×2; (2) a largura ou a altura do bloco de croma de pelo menos um nó filho B do nó A é 2;
(3) o nó A inclui 128 pixels de luma e a divisão de árvore ternária é usada para o nó A; ou o nó A inclui 64 pixels de luma e divisão de árvore binária, divisão de quadtree, ou divisão de árvore ternária é usada para o nó A; (4) o nó A inclui 256 pixels de luma e a divisão de árvore ternária ou divisão de quadtree é usada para o nó A, ou o nó A inclui 128 pixels de luma e a divisão de árvore binária é usada para o nó A; (5) o nó A inclui N1 pixels de luma e a divisão de árvore ternária é usada para o nó A, onde N1 é 64, 128 ou 256; (6) o nó A inclui N2 pixels de luma e a divisão de quadtree é usada para o nó A, onde N2 é 64 ou 256; ou (7) o nó A inclui N3 pixels de luma e a divisão de árvore binária é usada para o nó A, onde N3 é 64, 128 ou 256.
[0640] Deve ser observado que o nó A que inclui 128 pixels de luma também pode ser descrito como uma área do nó atual é 128 ou um produto da largura e da altura do nó A é 128. Os detalhes não são descritos neste relatório.
[0641] Etapa 3: Esta etapa é a mesma que a etapa 3 no primeiro método anterior de decodificação de vídeo.
[0642] Etapa 4: Determinar um modo de divisão de um bloco de croma e um modo de divisão de um bloco de luma do nó A com base no modo de predição usado para a unidade de codificação na região de cobertura do nó A.
[0643] Se o modo de predição inter for usado para todas as unidades de codificação na região de cobertura do nó A, o bloco de luma e o bloco de croma do nó A são divididos no modo de divisão S, para obter um nó filho do nó A e/ou na região de cobertura do nó A. Se um bloco de luma 4×4 for gerado em um modo de divisão do nó filho do nó A e/ou na região de cobertura do nó A, o modo de divisão do nó filho não é permitido ou o nó filho não é permitido ser adicionalmente dividido. Por exemplo, se o tamanho do nó A for 8×8 e dois nós 8×4 (ou 4×8) são gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), os blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido.
[0644] Se o modo de predição intra for usado para todas as unidades de codificação na região de cobertura do nó A, o primeiro, segundo ou terceiro método de decodificação de vídeo anterior pode ser usado para implementação.
Os detalhes não são descritos neste relatório novamente. Por exemplo, o bloco de luma do nó A é dividido e o bloco de croma do nó A não é dividido.
[0645] Etapa 5: Analisar um bloco de predição e informações residuais de uma CU obtida por divisão do nó A.
[0646] Esta etapa é a mesma que a etapa 5 no primeiro método de decodificação de vídeo anterior e os detalhes não são descritos neste relatório novamente.
[0647] Etapa 6: Decodificar cada CU para obter um sinal reconstruído de um bloco de imagem correspondente ao nó A.
[0648] Esta etapa pode ser realizada na maneira da etapa 6 no primeiro método de decodificação de vídeo anterior e os detalhes não são descritos neste relatório novamente.
[0649] Uma modalidade deste pedido fornece um quinto método de decodificação de vídeo, onde o método inclui as seguintes etapas.
[0650] Etapa 1: Esta etapa é a mesma que a etapa 1 no primeiro método de decodificação de vídeo anterior.
[0651] Etapa 2: Determinar se há um bloco de luma 4×4 de pelo menos um nó filho B em nós filhos obtidos por divisão do nó A no modo de divisão S (determinar se a largura e a altura do nó A, e/ou o modo de divisão do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição no Caso 1). Se um tamanho (a largura e a altura) e/ou o modo de divisão S que são/é do nó A satisfizerem/satisfizer pelo menos uma condição no Caso 1, é restrito que predição intra é realizada em todas as unidades de codificação em uma região de cobertura do nó A.
[0652] Alternativamente, se for determinado que um bloco de croma de pelo menos um nó filho B nos nós filhos obtidos por divisão do nó A no modo de divisão S é um bloco pequeno (determinar se o tamanho do nó A, e/ou o modo de divisão S do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição no Caso 2), a etapa 3 à etapa 6 são realizadas.
[0653] Especificamente, há os seguintes dois casos para um método para determinar um bloco de croma de pelo menos um nó filho B do nó A é um bloco pequeno.
[0654] Caso 1:
[0655] Se uma ou mais condições das seguintes primeiras condições predefinidas forem verdadeiras, os blocos de luma 4×4 são obtidos por divisão do nó A no modo de divisão S: (1) o nó A inclui M1 pixels e o modo de divisão do nó A é a divisão de quadtree onde, por exemplo, M1 é 64; (2) o nó A inclui M2 pixels e o modo de divisão do nó A é a divisão de árvore ternária onde, por exemplo, M2 é 64; (3) o nó A inclui M3 pixels e o modo de divisão do nó A é a divisão de árvore binária onde, por exemplo, M3 é 32; (4) a largura do nó A é quatro vezes um segundo limite, a altura do nó A é igual ao segundo limite e o modo de divisão do nó A é a divisão de árvore ternária vertical; (5) a largura do nó A é igual a um segundo limite, a altura do nó A é quatro vezes o segundo limite e o modo de divisão do nó A é a divisão de árvore ternária horizontal; (6) a largura do nó A é duas vezes um segundo limite, a altura do nó A é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária vertical; (7) a altura do nó A é duas vezes um segundo limite, a largura do nó A é igual ao segundo limite e o modo de divisão do nó atual é a divisão de árvore binária horizontal; ou (8) a largura e/ou a altura do nó A é/são duas vezes um segundo limite e o modo de divisão do nó A é a divisão de quadtree.
[0656] O tamanho pode ser a largura e a altura de uma região de imagem correspondente ao nó A, uma quantidade de pixels de luma incluída em uma região de imagem correspondente ao nó A, ou uma área de uma região de imagem correspondente ao nó A.
[0657] Geralmente, a largura do nó atual é a largura do bloco de luma correspondente ao nó atual, e a altura do nó atual é a altura do bloco de luma correspondente ao nó atual. Em uma implementação específica, por exemplo, o segundo limite pode ser 4.
[0658] Caso 2: (1) um tamanho do bloco de croma de pelo menos um nó filho B do nó A é 2×4 ou 4×2; (2) a largura ou a altura do bloco de croma de pelo menos um nó filho B do nó A é 2; (3) o nó A inclui 128 pixels de luma e a divisão de árvore ternária é usada para o nó A, ou o nó A inclui 64 pixels de luma e divisão de árvore binária, divisão de quadtree ou divisão de árvore ternária é usada para o nó A; (4) o nó A inclui 256 pixels de luma e divisão de árvore ternária ou a divisão de quadtree é usada para o nó A, ou o nó A inclui 128 pixels de luma e a divisão de árvore binária é usada para o nó A; (5) o nó A inclui N1 pixels de luma e a divisão de árvore ternária é usada para o nó A, onde N1 é 64, 128 ou 256; (6) o nó A inclui N2 pixels de luma e a divisão de quadtree é usada para o nó A, onde N2 é 64 ou 256; ou (7) o nó A inclui N3 pixels de luma e a divisão de árvore binária é usada para o nó A, onde N3 é 64, 128 ou 256.
[0659] Deve ser observado que, o nó A que inclui 128 pixels de luma também pode ser descrito como uma área do nó atual é 128, ou um produto da largura e da altura do nó A é 128. Os detalhes não são descritos neste relatório.
[0660] Etapa 3: Esta etapa é a mesma que a etapa 3 no primeiro método de decodificação de vídeo anterior.
[0661] Etapa 4: Determinar um modo de divisão de um bloco de croma e um modo de divisão de um bloco de luma do nó A com base no modo de predição usado para a unidade de codificação na região de cobertura do nó A.
[0662] Se o modo de predição inter for usado para todas as unidades de codificação na região de cobertura do nó A, o bloco de luma e o bloco de croma do nó A são divididos no modo de divisão S, para obter um nó filho do nó A e/ou na região de cobertura do nó A. Se um bloco de luma 4×4 for gerado em um modo de divisão do nó filho do nó A e/ou na região de cobertura do nó A, o modo de divisão do nó filho não é permitido ou o nó filho não é permitido ser adicionalmente dividido. Por exemplo, se o tamanho do nó A for 8×8 e dois nós 8×4 (ou 4×8) forem gerados através de divisão de árvore binária horizontal (ou divisão de árvore binária vertical), os blocos 4×4 são gerados se o nó 8×4 (ou 4×8) for adicionalmente dividido. Neste caso, o nó 8×4 (ou 4×8) não é permitido ser adicionalmente dividido.
[0663] Se o modo de predição intra for usado para todas as unidades de codificação na região de cobertura do nó A, o primeiro, segundo ou terceiro método de decodificação de vídeo anterior pode ser usado para implementação.
Os detalhes não são descritos neste relatório novamente. Por exemplo, o bloco de luma do nó A é dividido, e o bloco de croma do nó A não é dividido.
[0664] Etapa 5: Analisar um bloco de predição e informações residuais de uma CU obtida por divisão do nó A.
[0665] Esta etapa é a mesma que a etapa 5 no primeiro método de decodificação de vídeo anterior e os detalhes não são descritos neste relatório novamente.
[0666] Etapa 6: Decodificar cada CU para obter um sinal reconstruído de um bloco de imagem correspondente ao nó A.
[0667] Esta etapa pode ser realizada na maneira da etapa 6 no primeiro método de decodificação de vídeo anterior e os detalhes não são descritos neste relatório novamente.
[0668] Em algumas modalidades, se uma região atual for dividida uma vez, um bloco de luma 4×4 é gerado (por exemplo, divisão de QT é usada para uma região com 64 pixels de luma, ou divisão de TT é usada para uma região com 128 pixels de luma), é restrito que apenas o modo de predição intra é permitido ser usado para a região atual por padrão.
[0669] De outro modo, uma flag é transmitida para indicar que apenas o modo de predição inter ou o modo de predição intra é permitido ser usado para a região atual.
[0670] Se for restrito que apenas o modo de predição inter é permitido ser usado para a região atual, tanto o bloco de luma quanto o bloco de croma são divididos. Se um nó na região atual for dividido para gerar um bloco de luma 4×4, tal divisão não é permitida. Por exemplo, se o nó atual for um nó 8×8 e dos nós 8×4 forem gerados através de divisão HBT (ou VBT), CUs 4×4 são geradas se estes nós forem divididos adicionalmente. Neste caso, estes nós 8×4 não são permitidos serem divididos adicionalmente.
[0671] Se for restrito que apenas o modo de predição intra é permitido ser usado para a região, uma implementação neste caso é a mesma que a implementação (isto é, o bloco de luma é dividido e o bloco de croma não é dividido) na primeira modalidade.
[0672] Os efeitos benéficos das soluções técnicas deste pedido são como a seguir: Um método de divisão de bloco é fornecido nas modalidades deste pedido e, portanto, um caso em que o modo de predição intra usado para um bloco de croma com uma área relativamente pequena é evitado. Isto conduz ao processamento em tubulação de hardware e implementação de um decodificador. Além disso, na predição inter, um processo de análise de elementos de sintaxe de alguns modos de predição pode ser pulado, reduzindo, desse modo, a complexidade de codificação. A complexidade de processamento descrita anteriormente na codificação de coeficiente é evitada, reduzindo, desse modo, a complexidade de codificação.
[0673] O método de divisão de bloco pode ser como a seguir: analisar um modo de divisão de um nó A; determinar se um bloco de croma de pelo menos um nó filho B obtido por divisão do nó A no modo de divisão S é um bloco pequeno (determinar se a largura e a altura do nó A, e/ou o modo de divisão do nó A, e/ou a largura e a altura do nó B satisfazem/satisfaz pelo menos uma condição das condições anteriores); se sim, é restrito que apenas um modo de predição intra ou apenas um modo de predição inter é usado para todas as unidades de codificação em uma região de cobertura do nó A; e determinar se um bloco de croma e um bloco de luma do nó A são divididos adicionalmente.
[0674] Se predição intra for realizada em todas as unidades de codificação na região de cobertura do nó A, o bloco de luma do nó A é adicionalmente dividido no modo de divisão S, e o bloco de croma do nó A não é adicionalmente dividido. Se predição inter for realizada em todas as unidades de codificação na região de cobertura do nó A, o bloco de luma e o bloco de croma do nó A são divididos adicionalmente, no modo de divisão S, em N nós de árvore de codificação que incluem blocos de luma e blocos de croma.
[0675] O bloco de luma do nó A é adicionalmente dividido no modo de divisão S e o bloco de croma do nó A não é adicionalmente dividido. Um bloco de transformada de croma e um bloco de codificação de croma têm um mesmo tamanho.
[0676] Quando predição intra é realizada em todas as unidades de codificação na região de cobertura do nó A, um bloco de predição de croma e o bloco de codificação de croma têm um mesmo tamanho. Quando predição inter é realizada em todas as unidades de codificação na região de cobertura do nó A, o bloco de predição de croma é dividido em sub-blocos (um tamanho do sub- bloco é menor do que um tamanho do bloco de codificação de croma), e um vetor de movimento de cada sub-bloco é um vetor de movimento em uma região de luma correspondente ao sub-bloco.
[0677] O bloco de luma do nó A é adicionalmente dividido no modo de divisão S, e o bloco de croma do nó A não é adicionalmente dividido. Um bloco de transformada de croma correspondente ao bloco de codificação de croma e ao bloco de codificação de croma têm um mesmo tamanho, o bloco de predição de croma e o bloco de codificação de croma têm um mesmo tamanho, e informações de movimento do CB de croma são informações de movimento de uma localização predefinida em uma região de luma correspondente ao CB de croma.
[0678] Um técnico no assunto pode entender que, as funções descritas com referência aos vários blocos lógicos ilustrativos, módulos e etapas de algoritmo revelados e descritos neste relatório descritivo podem ser implementadas por hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas por software, as funções descritas com referência aos blocos lógicos ilustrativos, módulos e etapas podem ser armazenadas ou transmitidas em uma mídia legível por computador como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir uma mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como uma mídia de armazenamento de dados, ou uma mídia de comunicações incluindo qualquer mídia que facilite a transferência de um programa de computador de uma placa para outra (por exemplo, de acordo com um protocolo de comunicação). Desta maneira, a mídia legível por computador pode, em geral, corresponder a: (1) uma mídia de armazenamento legível por computador tangível não transitória, ou (2) uma mídia de comunicações, tais como um sinal ou uma portadora. A mídia de armazenamento de dados pode ser qualquer mídia utilizável que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementar as tecnologias descritas neste pedido. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0679] Por meio de exemplo, mas não de limitação, tal mídia de armazenamento legível por computador pode incluir uma RAM, uma ROM, uma EEPROM, um CD-ROM ou outro aparelho de armazenamento de disco compacto, um aparelho de armazenamento de disco magnético ou outro aparelho de armazenamento magnético, uma memória flash, ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado em uma forma de uma instrução ou uma estrutura de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é apropriadamente denominada como uma mídia legível por computador. Por exemplo, se uma instrução for transmitida de um website, um servidor, ou outra fonte remota através de um cabo coaxial, uma fibra óptica, um par trançado, uma linha de assinante digital (DSL), ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, o cabo coaxial, o cabo de fibra óptica, o par trançado, o DSL, ou as tecnologias sem fio, tais como infravermelho, rádio, e micro-ondas são incluídas em uma definição da mídia. Entretanto, deve ser entendido que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, portadores, sinais ou outra mídia transitória, mas na verdade significam mídia de armazenamento tangível não transitória.
Disquetes e discos usados neste relatório descritivo incluem um disco compacto (CD), um disco a laser, um disco óptico, um disco versátil digital (DVD) e um disco Blu-ray. Os disquetes usualmente reproduzem dados magneticamente, enquanto os discos reproduzem dados opticamente com lasers. As combinações do anterior também devem ser incluídas no escopo da mídia legível por computador.
[0680] Uma instrução pode ser executada por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSP), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos de portas programáveis em campo (FPGA) ou outro circuito integrado equivalente ou circuitos lógicos discretos. Portanto, o termo “processador” usado neste relatório descritivo pode ser qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para implementar as tecnologias descritas neste relatório descritivo. Além disso, em alguns aspectos, as funções descritas com referência aos blocos lógicos ilustrativos, módulos e etapas descritos neste relatório descritivo podem ser fornecidas dentro dos módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou podem ser incorporadas em um codec combinado. Além disso, as tecnologias podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0681] As tecnologias neste pedido podem ser implementadas em vários aparelhos ou dispositivos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos neste pedido para enfatizar aspectos funcionais dos aparelhos configurados para realizar as tecnologias reveladas, mas não são necessariamente implementados por unidades de hardware diferentes. Na verdade, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec em combinação com software e/ou firmware apropriado, ou podem ser fornecidas por unidades de hardware interoperáveis (incluindo um ou mais processadores descritos acima).
[0682] Na modalidade anterior, as descrições nas modalidades têm respectivos focos. Para uma parte que não é descrita em detalhes em uma modalidade, consultar as descrições relacionadas em outras modalidades.
[0683] As descrições anteriores são meramente implementações específicas deste pedido, mas não são destinadas a limitar o escopo de proteção deste pedido. Qualquer variação ou substituição prontamente percebida por um técnico no assunto dentro do escopo técnico revelado neste pedido deve estar dentro do escopo de proteção deste pedido. Portanto, o escopo de proteção deste pedido deve estar sujeito ao escopo de proteção das reivindicações.

Claims (24)

REIVINDICAÇÕES
1. Método de predição de imagem, CARACTERIZADO pelo fato de que o método compreende: obter um modo de divisão de um nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição; e quando for determinado que o nó atual satisfaz a primeira condição, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que quando for determinado que o nó atual não satisfaz a primeira condição, o método compreende adicionalmente: determinar, com base no modo de divisão do nó atual e no tamanho do nó atual, se o nó atual satisfaz uma segunda condição; e quando for determinado que o nó atual satisfaz a segunda condição, realizar, por meio do uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual, em que o modo de predição é predição intra ou predição inter.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a determinação, com base no modo de divisão do nó atual e no tamanho do nó atual, de se o nó atual satisfaz uma segunda condição compreende: determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a segunda condição.
4. Método, de acordo com a reivindicação 2 ou 3, CARACTERIZADO pelo fato de que a realização, por meio do uso de um mesmo modo de predição, de predição em todos os blocos de codificação pertencentes ao nó atual compreende: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
5. Método, de acordo com qualquer uma das reivindicações 2 a 4, CARACTERIZADO pelo fato de que a realização de predição inter em todos os blocos de codificação pertencentes ao nó atual compreende: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente.
6. Método, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que a realização de predição intra em todos os blocos de codificação pertencentes ao nó atual compreende: dividir, no modo de divisão, um bloco de luma compreendido no nó atual para obter blocos de luma obtidos através de divisão, e realizar predição intra nos blocos de luma obtidos através de divisão; e usar um bloco de croma compreendido no nó atual como um bloco de codificação de croma, e realizar predição intra no bloco de codificação de croma.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que o tamanho do nó atual é determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e no modo de divisão que é usado para obter o nó atual.
8. Método de predição de imagem, CARACTERIZADO pelo fato de que o método compreende: obter um modo de divisão de um nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma condição predefinida; e quando for determinado que o nó atual satisfaz a condição predefinida, realizar, por meio do uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual, em que o modo de predição é predição intra ou predição inter.
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que a determinação, com base no modo de divisão do nó atual e em um tamanho do nó atual, de se o nó atual satisfaz uma condição predefinida compreende: determinar, com base no modo de divisão do nó atual, no tamanho do nó atual, e em um formato de croma (Chroma format) atual, se o nó atual satisfaz a condição predefinida.
10. Método, de acordo com a reivindicação 8 ou 9, CARACTERIZADO pelo fato de que a realização, por meio do uso de um mesmo modo de predição, de predição em todos os blocos de codificação pertencentes ao nó atual compreende: analisar uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, realizar predição inter em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual.
11. Método, de acordo com qualquer uma das reivindicações 8 a 10, CARACTERIZADO pelo fato de que a realização de predição inter em todos os blocos de codificação pertencentes ao nó atual compreende: dividir o nó atual no modo de divisão do nó atual, para obter um nó filho do nó atual; determinar, com base em um tamanho do nó filho do nó atual, um modo de divisão que não é permitido para o nó filho do nó atual; determinar uma política de divisão de bloco do nó filho do nó atual com base no modo de divisão que não é permitido para o nó filho do nó atual; e obter, de acordo com a política de divisão de bloco do nó filho do nó atual, um bloco de codificação correspondente ao nó filho do nó atual, e realizar predição inter no bloco de codificação correspondente.
12. Método, de acordo com qualquer uma das reivindicações 8 a 11, CARACTERIZADO pelo fato de que o tamanho do nó atual é determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e no modo de divisão que é usado para obter o nó atual.
13. Método de predição de imagem, CARACTERIZADO pelo fato de que o método compreende: determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, um modo de divisão que não é permitido para o nó atual,
em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; determinar uma política de divisão de bloco do nó atual com base no modo de divisão que não é permitido para o nó atual; e obter, de acordo com a política de divisão de bloco do nó atual, um bloco de codificação correspondente ao nó atual, e realizar predição inter no bloco de codificação correspondente.
14. Método, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que a determinação, com base em um tamanho de um nó atual e em um modo de predição do nó atual, de um modo de divisão que não é permitido para o nó atual compreende: determinar se apenas um modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se uma quantidade de amostras de um bloco de luma do nó atual é 32; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e for determinado que a quantidade de amostras do bloco de luma do nó atual é 32, determinar que divisão de árvore binária é o modo de divisão que não é permitido para o nó atual.
15. Método, de acordo com a reivindicação 13 ou 14, CARACTERIZADO pelo fato de que a determinação, com base em um tamanho de um nó atual e em um modo de predição do nó atual, de um modo de divisão que não é permitido para o nó atual compreende: determinar se apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e determinar se a quantidade de amostras do bloco de luma do nó atual é 64; e quando for determinado que apenas o modo de predição inter é usado para predição de todos os blocos de codificação pertencentes ao nó atual, e for determinado que a quantidade de amostras do bloco de luma do nó atual é 64, determinar que divisão de árvore ternária é o modo de divisão que não é permitido para o nó atual.
16. Método, de acordo com qualquer uma das reivindicações 13 a 15, CARACTERIZADO pelo fato de que o tamanho do nó atual é determinado com base em um tamanho de um nó de árvore de codificação correspondente ao nó atual e em um modo de divisão que é usado para obter o nó atual.
17. Aparelho de predição de imagem, CARACTERIZADO pelo fato de que compreende: um módulo de obtenção, configurado para obter um modo de divisão de um nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; um módulo de julgamento, configurado para determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma primeira condição; e um módulo de execução, configurado para: quando for determinado que o nó atual satisfaz a primeira condição, realizar predição intra em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual.
18. Aparelho de predição de imagem, CARACTERIZADO pelo fato de que o aparelho compreende: um módulo de obtenção, configurado para obter um modo de divisão de um nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual; um módulo de julgamento, configurado para determinar, com base no modo de divisão do nó atual e em um tamanho do nó atual, se o nó atual satisfaz uma condição predefinida; e um módulo de execução, configurado para: quando for determinado que o nó atual satisfaz a condição predefinida, realizar, por meio do uso de um mesmo modo de predição, predição em todos os blocos de codificação pertencentes ao nó atual, para obter preditores de todos os blocos de codificação pertencentes ao nó atual, em que o modo de predição é predição intra ou predição inter.
19. Aparelho de predição de imagem, CARACTERIZADO pelo fato de que o aparelho compreende: uma unidade de determinação, configurada para determinar, com base em um tamanho de um nó atual e em um modo de predição do nó atual, um modo de divisão que não é permitido para o nó atual, em que o nó atual é um bloco de imagem em uma unidade de árvore de codificação (coding tree unit) em uma imagem atual, em que a unidade de determinação é adicionalmente configurada para: determinar uma política de divisão de bloco do nó atual com base no modo de divisão que não é permitido para o nó atual; e uma unidade de predição, configurada para: obter, de acordo com a política de divisão de bloco do nó atual, um bloco de codificação correspondente ao nó atual, e realizar predição inter no bloco de codificação correspondente.
20. Dispositivo de codificação de vídeo, CARACTERIZADO pelo fato de que compreende um processador e uma memória que é configurada para armazenar uma instrução executável do processador, em que o processador realiza o método conforme definido em qualquer uma das reivindicações 1 a 16.
21. Dispositivo de decodificação de vídeo, CARACTERIZADO pelo fato de que compreende um processador e uma memória que é configurada para armazenar uma instrução executável do processador, em que o processador realiza o método conforme definido em qualquer uma das reivindicações 1 a 16.
22. Sistema de predição de imagem, CARACTERIZADO pelo fato de que compreende: um dispositivo de coleta de vídeo, o dispositivo de codificação de vídeo conforme definido na reivindicação 20, o dispositivo de decodificação de vídeo conforme definido na reivindicação 21, e um dispositivo de exibição, em que o dispositivo de codificação de vídeo é conectado tanto ao dispositivo de coleta de vídeo quanto ao dispositivo de decodificação de vídeo, e o dispositivo de decodificação de vídeo é conectado ao dispositivo de exibição.
23. Mídia de armazenamento legível por computador, CARACTERIZADA pelo fato de que a mídia de armazenamento legível por computador armazena um programa de computador, e o programa de computador é executado por um processador para implementar o método conforme definido em qualquer uma das reivindicações 1 a 16.
24. Mídia de armazenamento não transitória, CARACTERIZADA pelo fato de que inclui um fluxo de bits codificado, o fluxo de bits sendo gerado por meio de divisão de uma imagem atual em uma pluralidade de nós, e que compreende uma flag de status de modo de predição do nó atual; e quando um valor da flag de status de modo de predição for um primeiro valor, predição inter é realizada em todos os blocos de codificação pertencentes ao nó atual; ou quando um valor da flag de status de modo de predição for um segundo valor, predição intra é realizada em todos os blocos de codificação pertencentes ao nó atual.
BR112021013444-1A 2019-01-08 2020-01-08 Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento BR112021013444A2 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
CN201910016466 2019-01-08
CN201910016466.3 2019-01-08
CN201910173454 2019-03-07
CN201910173454.1 2019-03-07
CN201910219440.9 2019-03-21
CN201910219440 2019-03-21
CN201910696741.0 2019-07-30
CN201910696741.0A CN111669583A (zh) 2019-03-07 2019-07-30 图像预测方法、装置、设备、系统及存储介质
PCT/CN2020/070976 WO2020143684A1 (zh) 2019-01-08 2020-01-08 图像预测方法、装置、设备、系统及存储介质

Publications (1)

Publication Number Publication Date
BR112021013444A2 true BR112021013444A2 (pt) 2021-10-19

Family

ID=73655717

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021013444-1A BR112021013444A2 (pt) 2019-01-08 2020-01-08 Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento

Country Status (8)

Country Link
US (3) US11388399B2 (pt)
EP (1) EP3907988A4 (pt)
JP (2) JP7317973B2 (pt)
KR (2) KR20240005108A (pt)
CN (4) CN114173114B (pt)
BR (1) BR112021013444A2 (pt)
CA (1) CA3125904A1 (pt)
MX (1) MX2021008340A (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3907988A4 (en) * 2019-01-08 2022-06-29 Huawei Technologies Co., Ltd. Image prediction method, device, apparatus and system and storage medium
US10958904B2 (en) 2019-02-01 2021-03-23 Tencent America LLC Method and apparatus for video coding
AU2019201649A1 (en) * 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
CN114258674A (zh) * 2019-07-19 2022-03-29 Lg 电子株式会社 使用ibc的图像编码/解码方法和装置,以及发送比特流的方法
EP4005215A4 (en) * 2019-08-15 2022-10-26 Beijing Dajia Internet Information Technology Co., Ltd. LOW CHROMINANCE BLOCK SIZE RESTRICTION IN VIDEO CODING

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100525454C (zh) 2004-09-14 2009-08-05 华为技术有限公司 帧间预测模式的选择方法
JP4724061B2 (ja) * 2006-07-06 2011-07-13 株式会社東芝 動画像符号化装置
JP4921239B2 (ja) 2007-05-09 2012-04-25 キヤノン株式会社 画像処理装置およびその方法
CN101394565B (zh) 2008-10-20 2011-08-17 成都九洲电子信息系统有限责任公司 一种帧内预测方法
US8380860B2 (en) * 2010-11-09 2013-02-19 International Business Machines Corporation Reducing carbon footprint and providing power savings in session initiated protocol conferencing
US9848197B2 (en) 2011-03-10 2017-12-19 Qualcomm Incorporated Transforms in video coding
CN103748877B (zh) * 2011-08-17 2017-05-10 联发科技(新加坡)私人有限公司 帧内预测方法和装置
DK2763414T3 (da) 2011-09-29 2020-11-30 Sharp Kk Billedafkodningsindretning og fremgangsmåde til billedafkodning til udførelse af konvertering af bi-forudsigelse til uni-forudsigelse
US9807401B2 (en) 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
US9462275B2 (en) * 2012-01-30 2016-10-04 Qualcomm Incorporated Residual quad tree (RQT) coding for video coding
US9467701B2 (en) * 2012-04-05 2016-10-11 Qualcomm Incorporated Coded block flag coding
US10136143B2 (en) * 2012-12-07 2018-11-20 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
KR101749855B1 (ko) * 2013-04-05 2017-06-21 미쓰비시덴키 가부시키가이샤 컬러 화상 부호화 장치, 컬러 화상 복호 장치, 컬러 화상 부호화 방법 및 컬러 화상 복호 방법
CN103237216B (zh) 2013-04-12 2017-09-12 华为技术有限公司 深度图像的编解码方法和编解码装置
CN103347187B (zh) * 2013-07-23 2016-08-10 北京师范大学 一种基于自适应方向预测离散小波变换的遥感影像压缩方法
CN103491369B (zh) 2013-09-18 2016-09-28 华为技术有限公司 一种帧间预测编码方法和编码器
BR112016010796B1 (pt) * 2013-11-14 2023-11-28 Hfi Innovation Inc. Método de sinalização de modo de codificação referência a pedidos de patente correlatos
KR101737861B1 (ko) 2014-01-20 2017-05-19 한국전자통신연구원 변환 깊이 기반 dct 사이즈 결정 장치 및 방법
CN103914527B (zh) * 2014-03-28 2017-02-15 西安电子科技大学 一种基于新编码方式的遗传规划算法的图形图像识别与匹配方法
US10623747B2 (en) 2014-06-20 2020-04-14 Hfi Innovation Inc. Method of palette predictor signaling for video coding
CN104202602B (zh) * 2014-08-18 2018-03-02 三星电子(中国)研发中心 执行视频编码的装置及方法
CN106797478B (zh) * 2014-11-06 2019-09-24 联发科技股份有限公司 调色板编码的方法
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016154963A1 (en) * 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec
WO2016203981A1 (ja) * 2015-06-16 2016-12-22 シャープ株式会社 画像復号装置及び画像符号化装置
US10404992B2 (en) * 2015-07-27 2019-09-03 Qualcomm Incorporated Methods and systems of restricting bi-prediction in video coding
WO2017030260A1 (ko) * 2015-08-19 2017-02-23 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US10602138B2 (en) * 2015-08-27 2020-03-24 Lg Electronics Inc. Method and device for chroma sample intra prediction in video coding system
US11223852B2 (en) 2016-03-21 2022-01-11 Qualcomm Incorporated Coding video data using a two-level multi-type-tree framework
US10623774B2 (en) * 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10284845B2 (en) * 2016-05-25 2019-05-07 Arris Enterprises Llc JVET quadtree plus binary tree (QTBT) structure with multiple asymmetrical partitioning
CN116828178A (zh) 2016-06-24 2023-09-29 世宗大学校产学协力团 视频信号解码和编码方法、比特流的传输方法
WO2018037853A1 (ja) * 2016-08-26 2018-03-01 シャープ株式会社 画像復号装置及び画像符号化装置
US10721468B2 (en) 2016-09-12 2020-07-21 Nec Corporation Intra-prediction mode determination method, intra-prediction mode determination device, and storage medium for storing intra-prediction mode determination program
CN109923866B (zh) 2016-11-08 2023-07-21 株式会社Kt 视频解码方法、编码方法
EP3577898A4 (en) 2017-01-31 2020-06-24 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING A VIDEO BLOCK IMAGE FOR VIDEO CODING
CN114513665B (zh) * 2017-01-31 2023-10-27 夏普株式会社 基于平面预测模式导出帧内预测数据的系统和方法
WO2018164505A1 (ko) * 2017-03-09 2018-09-13 주식회사 케이티 영상 부호화 또는 복호화 방법 및 장치
US10820017B2 (en) * 2017-03-15 2020-10-27 Mediatek Inc. Method and apparatus of video coding
CN108668136A (zh) * 2017-03-28 2018-10-16 华为技术有限公司 图像编/解码方法、视频编/解码器及视频编解码系统
JP6914722B2 (ja) * 2017-05-11 2021-08-04 キヤノン株式会社 動画像符号化装置、動画像符号化方法及びプログラム
US20180367818A1 (en) * 2017-06-15 2018-12-20 Futurewei Technologies, Inc. Block Partition Structure in Video Compression
CN109151468B (zh) * 2017-06-28 2020-12-08 华为技术有限公司 一种图像数据的编码、解码方法及装置
CN109151477B (zh) * 2017-06-28 2020-08-07 华为技术有限公司 一种图像数据的编码、解码方法及装置
EP3732880A4 (en) * 2017-12-29 2021-04-28 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING VIDEO BLOCKS TO ONE FRAME LIMIT FOR VIDEO ENCODING
US10687071B2 (en) * 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding
US11012715B2 (en) * 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
US11190790B2 (en) * 2018-04-01 2021-11-30 Lg Electronics Inc. Parallel processing method for color component of video signal, and device therefor
WO2019210857A1 (en) 2018-04-30 2019-11-07 Mediatek Inc. Method and apparatus of syntax interleaving for separate coding tree in video coding
TWI725456B (zh) 2018-06-21 2021-04-21 大陸商北京字節跳動網絡技術有限公司 交錯區塊的自動劃分
WO2020035022A1 (en) * 2018-08-17 2020-02-20 Mediatek Inc. Method and apparatus of simplified merge candidate list for video coding
WO2020056757A1 (en) * 2018-09-21 2020-03-26 Alibaba Group Holding Limited Method, apparatus, and computer-readable storage medium for block partitioning tree separation under separation node
KR20210050572A (ko) * 2018-09-21 2021-05-07 캐논 가부시끼가이샤 비디오 샘플들의 블록들의 트리를 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템
EP3907988A4 (en) * 2019-01-08 2022-06-29 Huawei Technologies Co., Ltd. Image prediction method, device, apparatus and system and storage medium
CN111416975B (zh) * 2019-01-08 2022-09-16 华为技术有限公司 预测模式确定方法和装置

Also Published As

Publication number Publication date
KR102616713B1 (ko) 2023-12-20
KR20240005108A (ko) 2024-01-11
JP7317973B2 (ja) 2023-07-31
CN114245113B (zh) 2023-04-07
CA3125904A1 (en) 2020-07-16
JP2022518378A (ja) 2022-03-15
JP2023134742A (ja) 2023-09-27
US11388399B2 (en) 2022-07-12
AU2020205376A1 (en) 2021-08-12
US20220329788A1 (en) 2022-10-13
EP3907988A4 (en) 2022-06-29
US20210344910A1 (en) 2021-11-04
US11849109B2 (en) 2023-12-19
CN114245113A (zh) 2022-03-25
KR20210107131A (ko) 2021-08-31
CN114157864B (zh) 2022-10-28
CN112075077B (zh) 2022-01-11
CN114173114A (zh) 2022-03-11
EP3907988A1 (en) 2021-11-10
MX2021008340A (es) 2021-09-30
CN114157864A (zh) 2022-03-08
CN114173114B (zh) 2022-09-23
US20240146909A1 (en) 2024-05-02
CN112075077A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
BR112021013444A2 (pt) Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento
BR112021013163A2 (pt) Método e aparelho de predição de bloco de croma
CN111327904B (zh) 图像重建方法和装置
BR112021007919A2 (pt) método e aparelho de predição de imagem de vídeo
BR112021004124A2 (pt) método de decodificação de vídeo e decodificador de vídeo
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
BR112021011723A2 (pt) Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits
BR112021013565A2 (pt) Codificador, decodificador, meio legível por computador não transitório e método de codificação de vídeo de um bloco de uma imagem
ES2966509T3 (es) Método y dispositivo de partición de imagen
BR112021011307A2 (pt) Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória
AU2020205376B2 (en) Image prediction method, device, apparatus and system and storage medium
CN111327894A (zh) 块划分方法、视频编解码方法、视频编解码器
RU2797723C2 (ru) Способ прогнозирования изображения, оборудование, система, устройство для прогнозирования изображения и носитель для хранения информации
WO2020143684A1 (zh) 图像预测方法、装置、设备、系统及存储介质
US20230336725A1 (en) Video encoder, video decoder, and corresponding method
CN111355961B (zh) 一种帧间预测的方法和装置
WO2020119742A1 (zh) 块划分方法、视频编解码方法、视频编解码器
CN111669583A (zh) 图像预测方法、装置、设备、系统及存储介质