BR112019017252A2 - derivando informação de vetor de movimento em um decodificador de vídeo - Google Patents

derivando informação de vetor de movimento em um decodificador de vídeo Download PDF

Info

Publication number
BR112019017252A2
BR112019017252A2 BR112019017252A BR112019017252A BR112019017252A2 BR 112019017252 A2 BR112019017252 A2 BR 112019017252A2 BR 112019017252 A BR112019017252 A BR 112019017252A BR 112019017252 A BR112019017252 A BR 112019017252A BR 112019017252 A2 BR112019017252 A2 BR 112019017252A2
Authority
BR
Brazil
Prior art keywords
block
pixel
video
current block
motion
Prior art date
Application number
BR112019017252A
Other languages
English (en)
Inventor
Chuang Hsiao-Chiang
Chen Jianle
Karczewicz Marta
Chien Wei-Jung
Li Xiang
Chen Yi-Wen
Sun Yu-Chen
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BR112019017252A2 publication Critical patent/BR112019017252A2/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/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/124Quantisation
    • 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/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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
    • H04N19/51Motion estimation or motion compensation
    • 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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • 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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/583Motion compensation with overlapping blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

um dispositivo ilustrativo para decodificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo, e um decodificador de vídeo implementado em sistemas de circuitos e configurado para determinar que a informação de movimento de um bloco atual dos dados de vídeo é para ser derivada utilizando derivação de vetor de movimento no lado do decodificador (dmvd), determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixels obtidos a partir de um ou mais grupos de pixels decodificados anteriormente, derivar a informação de movimento para o bloco atual de acordo coma dmvd a partir do indício de pixels, e decodificar o bloco atual utilizando a informação de movimento. o decodificador de vídeo pode gerar o indicio de pixel utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado. o decodificador de vídeo pode determinar uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre direções de predição diferentes. o decodificador de vídeo pode refinar a informação de movimento utilizando um custo de correspondência calculado para o indício de pixels.

Description

DERIVANDO INFORMAÇÃO DE VETOR DE MOVIMENTO EM UM DECODIFICADOR DE VÍDEO [0001] Este Pedido de Patente reivindica o benefício do Pedido de Patente Provisório U.S. N° 62/461,729, depositado em 21 de fevereiro de 2017; do Pedido de Patente Provisório U.S. N° 62/463,266, depositado em 24 de Fevereiro de 2017; e do Pedido de Patente Provisório U.S. N° 62/472,919 depositado em 17 de Março de 2017, cujos conteúdos em sua totalidade são incorporados neste documento por referência.
CAMPO TÉCNICO [0002] Esta revelação se refere à codificação de video.
ANTECEDENTES [0003] As capacidades de video digital podem ser incorporadas em uma ampla variedade de dispositivos, incluindo televisores digitais, sistemas de broadcast direto digital, sistemas de broadcast não cabeados, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitores de e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos, consoles de jogos, telefone celular ou radiotelefones via satélite, os chamados smartphones, dispositivos de videoconferência, dispositivos de streaming de vídeo, dentre outros. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como estas descritas nos padrões estabelecidos pelo ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10,
Petição 870190080478, de 19/08/2019, pág. 10/150
2/100
Codificação Avançada de Video (AVC), ITU-T
H. 265c/Codificação de Video de Alta Eficiência (HEVC), e extensões de tais padrões, tais como extensões de Codificação de Video Escalonável (SVC) e de Codificação de Video de Multivisão (MVC). Os dispositivos de video podem transmitir receber, codificar, decodificar e/ou armazenar informações de video digital de forma mais eficiente por implementar tais técnicas de codificação de video.
[0004] As técnicas de codificação de video incluem a predição espacial (intra imagem) e/ou temporal (entre imagens) para reduzir ou remover a redundância inerente nas sequências de video. Para codificação de video baseada em blocos, uma fração de video (por exemplo, uma imagem de video ou uma parte de uma imagem de video) pode ser divida em blocos de video, os quais também podem ser referidos como unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de video em uma fração codificada intra (I) de uma imagem são codificados utilizando a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de video em uma fração codificada inter (P ou B) de uma imagem podem utilizar a predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem ou à predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os
Petição 870190080478, de 19/08/2019, pág. 11/150
3/100 dados residuais representam diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco codificado inter é codificado de acordo com um vetor de movimento que salienta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado intra é codificado de acordo com um modo de codificação intra e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais de transformada, os quais então podem ser quantizados. Os coeficientes quantizados de transformada, inicialmente dispostos em um arranjo bidimensional, podem ser varridos de modo a produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada para obter ainda mais compactação.
SUMÁRIO [0006] Em geral, esta revelação descreve técnicas relacionadas com a derivação de vetor de movimento no lado do decodificador (DMVD). Estas técnicas podem ser aplicadas a qualquer um dos codecs de vídeo existentes, tais como HEVC (Codificação de Vídeo de Alta Eficiência) , e/ou podem ser uma ferramenta de codificação eficiente em quaisquer padrões futuros de codificação de vídeo.
[0007] Em um exemplo, um método de decodificação de dados de vídeo inclui determinar que a informação de movimento de um bloco atual de dados de vídeo deve ser derivada utilizando derivação de vetor de movimento no lado do decodificador (DMVD), determinar um
Petição 870190080478, de 19/08/2019, pág. 12/150
4/100 indicio de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels, e decodificar o bloco atual utilizando a informação de movimento.
[0008] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo, e um decodificador de vídeo implementado em sistema de circuitos e configurado para determinar que a informação de movimento de um bloco atual dos dados de vídeo deve ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD), determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo em dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels e decodificar o bloco atual utilizando a informação de movimento.
[0009] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui meio para determinar que
a informação de movimento de um bloco atual de dados de
vídeo é para ser derivada utilizando a derivação de vetor
de movimento no lado do decodificador (DMVD) , meio para
determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, meio para derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício
Petição 870190080478, de 19/08/2019, pág. 13/150
5/100 de pixels, e meio para decodificar o bloco atual utilizando a informação de movimento.
[0010] Em outro exemplo, um meio de armazenamento legível por computador armazenou no mesmo instruções que, quando executadas, fazem com que um processador determine que a informação de movimento de um bloco atual de dados de vídeo deve ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD), determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels e decodificar o bloco atual utilizando a informação de movimento.
[0011] Os detalhes de um ou mais exemplos são expostos nos desenhos acompanhantes e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e desenhos e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS [0012] A FIG. 1 é um diagrama de blocos lustrando um sistema de codificação e de decodificação de vídeo ilustrativo que pode utilizar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação.
[0013] A FIG. 2 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode implementar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação.
Petição 870190080478, de 19/08/2019, pág. 14/150
6/100 [0014] A FIG. 3 é um diagrama de blocos ilustrando um exemplo de um decodificador de video que pode implementar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação.
[0015] As FIGS. 4A e 4B são diagramas conceituais ilustrando candidatos de vetor de movimento espacial derivados a partir de blocos vizinhos.
[0016] As FIGS. 5A e 5B são diagramas conceituais ilustrando uma localização de bloco principal para um candidato de preditor de vetor de movimento temporal (TMVP).
[0017] A FIG. 6 é um diagrama conceituai ilustrando conceitos relacionados com correspondência bilateral para derivar informação de movimento de um bloco atual.
[0018] A FIG. 7 é um diagrama conceituai ilustrando conceitos relacionados com correspondência de modelo para derivar a informação de movimento de um bloco atual.
[0019] A FIG. 8 é um fluxograma ilustrando um processo de correspondência de modelos de conversão ascendente de taxa de quadros (FRUC) ilustrativo.
[0020] A FIG. 9 é um fluxograma ilustrando alterações propostas ilustrativas para o processo de correspondência de modelos FRUC da FIG. 8.
[0021] A FIG. 10 é um diagrama conceituai ilustrando conceitos relacionados com o fluxo óptico bidirecional no Modelo de Exploração Conjunta (JEM) para um padrão de codificação de video proposto a ser apresentado.
[0022] A FIG. 11 é um diagrama conceituai
Petição 870190080478, de 19/08/2019, pág. 15/150
7/100 ilustrando um exemplo de cálculo de gradiente para um bloco 8x4.
[0023] A FIG. 12 é um diagrama conceituai ilustrando conceitos relacionados com a derivação de vetor de movimento no lado do decodificador (DMVD) proposta baseada na correspondência bilateral de modelos.
[0024] As FIGS. 13A e 13B são diagramas conceituais ilustrando conceitos relacionados a movimento compensado de bloco sobreposto (OBMC) no JEM.
[0025] As FIGS. 14A até 14D são diagramas conceituais ilustrando as ponderações OBMC.
[0026] As FIGS. 15A e 15B são diagramas conceituais ilustrando áreas estendidas ilustrativas para um indicio de pixel de acordo com as técnicas desta revelação.
[0027] A FIG. 16 é um diagrama conceituai ilustrando outra área estendida ilustrativa para um indicio de pixel onde a área estendida é irregular de acordo com as técnicas desta revelação.
[0028] As FIGS. 17A até 17C são diagramas conceituais ilustrando ponderações ilustrativas atribuídas a vários pixels de acordo com as técnicas desta revelação.
[0029] A FIG. 18 é um diagrama conceituai ilustrando outro exemplo de valores de peso atribuídos a vários pixels de acordo com as técnicas desta revelação.
[0030] As FIGS. 19A e 19B são diagramas conceituais ilustrando um filtro ilustrativo aplicado a pixels de acordo com as técnicas desta revelação.
[0031] A FIG. 20 é um fluxograma ilustrando um método ilustrativo para codificar dados de vídeo de acordo
Petição 870190080478, de 19/08/2019, pág. 16/150
8/100 com as técnicas desta revelação.
[0032] A FIG. 21 é um fluxograma ilustrando um método ilustrativo para decodificar dados de video de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA [0033] Em geral, as técnicas desta revelação se referem à derivação de vetor de movimento no lado do decodificador (DMVD). Isto é, ao invés de sinalizar explicitamente um vetor de movimento ou outra informação de movimento, um decodificador de video pode derivar o vetor de movimento de acordo com qualquer uma ou todas as técnicas desta revelação, sozinhas ou em qualquer combinação.
[0034] Em geral, um decodificador de video pode derivar informação de movimento para um bloco atual de dados de video, isto é, um bloco sendo decodificado atualmente. Para derivar a informação de movimento, o decodificador de video pode primeiro, determinar um indicio de pixels para o bloco atual. O indicio de pixels geralmente corresponde aos dados de pixel obtidos a partir de um ou mais grupos dos pixels previamente decodificados. O indicio de pixels pode ser, por exemplo, um ou mais blocos que possuem uma alta probabilidade de serem identificados por um vetor de movimento. O decodificador de video pode determinar tais blocos de acordo com a correspondência de modelos bilateral. Adicionalmente ou alternativamente, o decodificador de video pode determinar tais blocos a partir de pixels vizinhos para o bloco atual e pixels vizinhos correspondentes mais próximos para os blocos de referência, de modo que os blocos de referência
Petição 870190080478, de 19/08/2019, pág. 17/150
9/100 formem o indício de pixels.
[0035] Em alguns exemplos, o decodificador de vídeo pode gerar o indício de pixels utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado. Por exemplo, o decodificador de vídeo pode calcular uma média ponderada dos vários blocos com movimento compensado. Adicionalmente ou alternativamente, o decodificador de vídeo pode executar movimento compensado de bloco sobreposto para gerar o indício de pixels. Ainda como outro exemplo, o decodificador de vídeo pode adicionar deslocamentos para um ou mais vetores de movimento do bloco atual, e derivar os vários blocos com movimento compensado a partir dos vetores de movimento deslocados (bem como dos vetores de movimento originais do bloco atual).
[0036] Em alguns exemplos, o decodificador de vídeo pode calcular um custo correspondente entre um primeiro bloco de referência e um segundo bloco de referência identificados pela informação de movimento derivada para o bloco atual. O decodificador de vídeo pode calcular o custo correspondente por aplicar os respectivos valores de pese às medições de custo para os pixels correspondentes dos blocos de referência, por exemplo, um primeiro peso para uma primeira medição de custo e um segundo peso para uma segunda medição de custo, onde as ponderações e as medições de custo podem ser diferentes uns dos outros. O decodificador de vídeo pode então refinar a informação de movimento baseado no custo correspondente. Além disso, o decodificador de vídeo pode determinar as ponderações baseado nas distâncias entre os pixels
Petição 870190080478, de 19/08/2019, pág. 18/150
10/100 correspondentes e os pontos específicos do bloco atual, nas distâncias entre os pixels correspondentes e os pontos específicos do indício de pixels, em uma fileira ou coluna que inclui os pixels correspondentes e/ou em regiões que incluem os pixels correspondentes.
[0037] Um novo padrão de codificação de vídeo, denominado Codificação de Vídeo de Alta Eficiência (HEVC) (também referido como ITU-T H.265), incluindo sua extensão de alcance, a extensão multivisão (MV-HEVC) e a extensão dimensionável (SHVC), foi recentemente desenvolvido pela Equipe de Colaboração Conjunta na Codificação de Vídeo (JCT-VC) bem como pela Equipe de Colaboração Conjunta no Desenvolvimento de Extensão de Codificação de Vídeo 3D (JCT-3V) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e do Grupo de Especialistas em Imagens em Movimento ISO/IEC (MPEG). A especificação HEVC, referida como HEVC WD daqui para frente, está disponível em phenix.intevry.fr/j ct/doc_end_user/documents/14_Vienna/wgll/JCTVCN1003-VÍ. zip.
[0038] Os membros do ITU-T VCEG (Q6/16) e do ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando a necessidade potencial de padronização da tecnologia de codificação de vídeo futura com uma capacidade de compactação que excede significativamente a do padrão HEVC atual (incluindo suas extensões atuais e suas extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica) . Os grupos estão trabalhando juntos nessa atividade de exploração em um esforço conjunto de colaboração conhecido como Equipe
Petição 870190080478, de 19/08/2019, pág. 19/150
11/100
Conjunta de Exploração de Videos (JVET) para avaliar projetos de tecnologia de compactação propostos por seus especialistas nessa área. A JVET se reuniu pela primeira vez entre 19 e 21 de outubro de 2015. Uma versão do software de referência, isto é, Modelo de Exploração Conjunta 5 (JEM 5), está disponível em j vet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6JEM-5.0. Uma descrição do algoritmo do JEM 5 está disponível em phenix.it-sudparis.eu/j vet/doc_end_user/current_document. php?id=2714.
[0039] Em HEVC, a maior unidade de codificação em uma fração é chamada de bloco de árvore de codificação (CTB) ou unidade de árvore de codificação (CTU) . Um CTB contém uma árvore quaternária, cujos nós são unidades de codificação. O tamanho de um CTB pode estar em uma variação de 16 x 16 a 64 x 64 no perfil principal da HEVC (embora tecnicamente os tamanhos CTB de 8 x 8 possam ser suportados). Uma unidade de codificação (CU) podería ter o mesmo tamanho de um CTB, embora seja tão pequena quanto 8 x
8. Cada unidade de codificação é codificada com um modo. Quando uma CU é codificada inter, ela pode ser dividida em 2 ou 4 unidades de predição (PUs) ou se tornar apenas uma PU quando a divisão adicional não se aplica. Quando duas PUs estão presentes em uma CU, elas podem ser retângulos com metade do tamanho ou dois tamanhos de retângulo com 1/4 ou 3/4 do tamanho da CU. Quando a CU é codificada inter, um conjunto de informações de movimento está presente para cada PU. Adicionalmente, cada PU é codificada com um modo de predição inter único para derivar o conjunto de informações de movimento.
Petição 870190080478, de 19/08/2019, pág. 20/150
12/100 [0040] No padrão HEVC, existem dois modos de predição inter, denominados modo de mesclagem (saltar é considerado como um caso especial de mesclagem) e de predição avançada de vetor de movimento (AMVP), respectivamente, para uma unidade de predição (PU) . No modo AMVP ou no modo de mesclagem, uma lista de candidatos a vetor de movimento (MV) é mantida para vários preditores de vetor de movimento. O vetor (vetores) de movimento, bem como os indícios de referência no modo de mesclagem da PU atual são gerados por obter um candidato da lista de candidatos a MV.
[0041] A lista de candidatos a MV contém até 5 candidatos para o modo de mesclagem e somente dois candidatos para o modo AMVP. Um candidato de mesclagem pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes a ambas as listas de imagens de referência (lista 0 e lista 1) e aos indícios de referência. Se um candidato de mesclagem for identificado por um indício de mesclagem, as imagens de referência são utilizadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. Entretanto, no modo AMVP para cada direção de predição potencial a partir da lista 0 ou da lista 1, um indício de referência precisa ser explicitamente sinalizado, junto com um indício do preditor MV (MVP) para a lista de candidatos a MV, já que o candidato AMVP contém apenas um vetor de movimento. No modo AMVP, os vetores de movimento preditos podem ser mais refinados. Como pode ser visto acima, um candidato de mesclagem corresponde a um conjunto completo de informações de movimento, enquanto um
Petição 870190080478, de 19/08/2019, pág. 21/150
13/100 candidato à AMVP contém apenas um vetor de movimento para uma direção de predição especifica e o indicio de referência. Os candidatos para ambos os modos são derivados de forma similar dos mesmos blocos vizinhos espaciais e temporais.
[0042] A FIG. 1 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação de video ilustrativo 10 que pode utilizar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação. Como apresentado na FIG. 1, o sistema 10 inclui um dispositivo fonte 12 que proporciona dados de video codificados para serem decodificados mais tarde por um dispositivo destino 14. Em particular, o dispositivo fonte 12 proporciona os dados de video para o dispositivo destino 14 via um meio legível por computador 16. O dispositivo fonte 12 e o dispositivo destino 14 podem compreender em qualquer um de uma ampla variedade de dispositivos, incluindo computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, decodificadores de sinais, aparelhos monofônicos, tais como os chamados smartphones, os chamados smartpads, televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digital, consoles de jogos, dispositivo de streaming de vídeo, dentre outros. Em alguns casos, o dispositivo fonte 12 e o dispositivo destino 14 podem ser equipados para comunicação não cabeada.
[0043] O dispositivo destino 14 pode receber os dados de vídeo codificados para serem decodificados via um meio legível por computador 16. O meio legível por
Petição 870190080478, de 19/08/2019, pág. 22/150
14/100 computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de video codificados do dispositivo fonte 12 para o dispositivo destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação não cabeada, e transmitidos para o dispositivo destino 14. O meio de comunicação pode compreender qualquer meio de comunicação não cabeada ou cabeada, tal como um espectro de radio frequência (RF) ou um ou mais linhas físicas de transmissão. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de longa distância ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo fonte 12 para o dispositivo destino 14.
[0044] Em alguns exemplos, os dados codificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento. Similarmente, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer uma dentre várias mídias de armazenamento de dados distribuídas ou acessadas localmente, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outra mídia de
Petição 870190080478, de 19/08/2019, pág. 23/150
15/100 armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou a outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento via streaming ou transferência. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados codificados para o dispositivo destino 14. Os servidores de arquivos ilustrativos incluem um servidor web (por exemplo, para um site da web), um servidor FTP, dispositivos de armazenamento conectado à rede (NAS) ou uma unidade de disco local. O dispositivo destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal não cabeado (por exemplo, uma conexão WiFi), uma conexão cabeada (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de transferência ou uma combinação das mesmas.
[0045] As técnicas desta revelação não são necessariamente limitadas a aplicações ou configurações não cabeadas. As técnicas podem ser aplicadas codificação de vídeo em suporte a qualquer uma dentre várias aplicações de
Petição 870190080478, de 19/08/2019, pág. 24/150
16/100 multimídia, tais como broadcast ao vivo, transmissões de televiso por cabo, transmissões de televisão via satélite, transmissões de vídeo de streaming de Internet, tais como streaming adaptativo dinâmico via HTTP (DASH) , vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tal como streaming de vídeo, reprodução de vídeo, broadcasting de vídeo e/ou telefonia de vídeo.
[0046] No exemplo da FIG. 1, o dispositivo fonte 12 inclui a fonte de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. O dispositivo destino 14 inclui interface de entrada 28, o decodificador de vídeo 30 e o dispositivo de vídeo 32. De acordo com esta revelação, o codificador de vídeo 20 do dispositivo fonte 12 pode ser configurado para aplicar as técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação. Em outros exemplos, um dispositivo fonte e um dispositivo destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma forma, o dispositivo destino 14 pode executar interface com um dispositivo de vídeo externo, ao invés de incluir um dispositivo de vídeo integrado.
[0047] O sistema ilustrado 10 da FIG. 1 é apenas um exemplo. As técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta
Petição 870190080478, de 19/08/2019, pág. 25/150
17/100 revelação podem ser executadas por qualquer dispositivo de codificação e/ou de decodificação de video digital. Embora, geralmente, as técnicas desta revelação sejam executadas por um dispositivo de codificação de video, as técnicas também podem ser executadas por um codificador / decodificador de video, tipicamente referido como um CODEC. Além disso, as técnicas desta revelação também podem ser executadas por um pré-processador de video. O dispositivo fonte 12 e o dispositivo destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de video codificados para transmissão para o dispositivo destino 14. Em alguns exemplos, os dispositivos 12 e 14 podem operar de uma maneira substancialmente simétrica, de modo que cada um dos dispositivos 12 e 14 inclua componentes de codificação e decodificação de video. Assim, o sistema 10 pode suportar transmissão de video unidirecional ou bidirecional entre dispositivos de video 12 e 14, por exemplo, para streaming de video, reprodução de video, broadcasting de video ou telefonia de video.
[0048] A fonte de video 18 do dispositivo fonte 12 pode incluir um dispositivo de captura de video, tal como uma câmera de video, um arquivo de video contendo video capturado anteriormente e/ou uma interface de alimentação de video para receber video a partir de um provedor de conteúdo de video. Como alternativa adicional, a fonte de video 18 pode gerar dados baseados em computação gráfica como a fonte de video, ou uma combinação de video ao vivo, video arquivado e video gerado por computador. Em alguns casos, se a fonte de video 18 for uma câmera de
Petição 870190080478, de 19/08/2019, pág. 26/150
18/100 vídeo, o dispositivo fonte 12 e o dispositivo destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Entretanto, como mencionado acima, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações não cabeadas e/ou cabeadas. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificado pode então ser emitida pela interface de saída 22 para um meio legível por computador
16.
[0049] O meio legível por computador 16 pode incluir mídia temporária, tal como um broadcast não cabeado ou transmissão de rede cabeada, ou mídia de armazenamento (isto é, mídia de armazenamento não temporária), tal como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não apresentado) pode receber dados de vídeo codificados a partir do dispositivo fonte 12 e proporcionar os dados de vídeo codificados para o dispositivo destino 14, por exemplo, via a transmissão de rede. Similarmente, um dispositivo de computação de uma instalação produção de meio, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados a partir do dispositivo fonte 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, pode ser entendido que o meio legível por computador 16 inclui uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.
Petição 870190080478, de 19/08/2019, pág. 27/150
19/100 [0050] A interface de entrada 28 do dispositivo destino 14 recebe informação a partir de um meio legível por computador 16. A informação de meio legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, a qual também é utilizada pelo decodificador de vídeo 30, a qual inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas. O dispositivo de vídeo 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um de uma variedade de dispositivos de vídeo, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), um vídeo de plasma, um vídeo de diodo emissor de luz orgânico (OLED), ou outro tipo de dispositivo de vídeo.
[0051] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, tal como o padrão Codificação de Vídeo de Alta Eficiência (HEVC), também referido como ITU-T H.265. Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou industriais, tais como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10 e Codificação Avançada de Vídeo (AVC), ou extensões de tais padrões. Entretanto, as técnicas desta revelação não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não sejam apresentados na FIG. 1, em alguns aspectos, cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser integrado com um
Petição 870190080478, de 19/08/2019, pág. 28/150
20/100 codificador e decodificador de áudio, e pode incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação tanto de áudio como de video em um fluxo de dados comuns ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223 ou com outros protocolos, tal como o protocolo de datagrama do usuário (UDP).
[0052] Cada um dentre o codificador de video 20 e o decodificador de video 30 pode ser implementado como qualquer um dos vários sistemas de circuitos de codificador adequados, tais como um ou mais microprocessadores, sistema de circuitos de processamento (incluindo sistema de circuitos de função fixa e/ou sistema de circuitos de processamento programável), processadores de sinal digital (DSPs), circuitos integrados específicos de aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação destes. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio não temporário legível por computador adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais podem ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo.
[0053] Em geral, de acordo com o ITU-T H.265,
Petição 870190080478, de 19/08/2019, pág. 29/150
21/100 uma imagem de video pode ser dividida em uma sequência de unidades de árvore de codificação (CTUs) (ou unidades de codificação maiores (LCUs)) que podem incluir ambas as amostras de luma e de cruza. Alternativamente, as CTUs podem incluir dados monocromáticos (isto é, somente amostras de luma). Dados de sintaxe dentro de um fluxo de bits podem definir um tamanho para a CTU, a qual é a maior unidade de codificação em termos do número de pixels. Uma fração inclui várias CTUs consecutivas na ordem de codificação. Uma imagem de video pode ser dividida em uma ou mais frações. Cada CTU pode ser dividida em unidades de codificação (CUs) de acordo com uma árvore quaternária. Em geral, uma estrutura de dados de árvore quaternária inclui um nó por CU, com um nó raiz correspondente à CTU. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós de folha, cada um dos quais corresponde a uma das sub-CUs.
[0054] Cada nó da estrutura de dados da árvore quaternária pode proporcionar dados de sintaxe para a CU correspondente. Por exemplo, um nó na árvore quaternária pode incluir um sinalizador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser estabelecidos recursivamente e podem depender se a CU é dividida em subCUs. Se uma CU não for adicionalmente dividida, ela é referida como uma CU-folha. Nesta revelação, quatro subCUs de uma CU-folha também serão referidas como CUs-folhas, mesmo se não existir uma separação explicita da CU-folha original. Por exemplo, se uma CU do tamanho 16 x 16 não for adicionalmente dividida, as quatro sub-CUs 8x8 também
Petição 870190080478, de 19/08/2019, pág. 30/150
22/100 serão referidas como Cus-folha, embora a CU 16 x 16 nunca tenha sido dividida.
[0055] Uma CU tem um propósito similar a um macrobloco do padrão H.264, exceto pelo fato de que uma CU não possui uma distinção de tamanho. Por exemplo, uma CTU pode ser dividida em quatro nós filhos (também referidos como sub-CUs), e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em outros quatro nós filhos. Um nó filho final não dividido, referido como um nó folha da árvore quaternária compreende um nó de codificação, também referido como uma CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que uma CTU pode ser dividida, referida como uma profundidade máxima de CU, e também podem definir um tamanho mínimo dos nós de codificação. Consequentemente, um fluxo de bits também pode definir uma unidade de codificação menor (SCU). Esta revelação utiliza o termo bloco para referir-se a qualquer CU, unidade de predição (PU) ou unidade de transformada (TU), no contexto de HEVC, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub-blocos destes em H.264 / AVC).
[0056] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformação (TUs) associadas com o nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e é geralmente de formato quadrático. O tamanho da CU pode variar a partir de 8 x 8 pixels até o tamanho da CTU com um tamanho máximo, por exemplo, de 64 x 64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os
Petição 870190080478, de 19/08/2019, pág. 31/150
23/100 dados de sintaxe associados a uma CU podem descrever, por exemplo, a divisão da CU em uma ou mais PUs. Os modos de divisão podem diferir entre se a CU é codificada por modo direto ou por modo de salto, codificada por modo de predição intra ou codificada por modo de predição inter. As PUs podem ser divididas para serem em formato que não é quadrático. Os dados de sintaxe associados com a uma CU também podem descrever, por exemplo, a divisão da CU em uma ou mais TUs de acordo com uma árvore quaternária. Uma TU pode ser quadrática ou não quadrática (por exemplo, retangular) no formato.
[0057] O padrão HEVC permite transformadas de acordo com as TUs, as quais podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas baseado no tamanho das PUs (ou divisões de uma CU) dentro de uma dada CU definida para uma CTU dividida, embora isso nem sempre seja o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs (ou divisões de uma CU, por exemplo, no caso de predição intra). Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de árvore quaternária conhecida como uma árvore quaternária residual (RQT) . Os nós de folha da RQT podem ser referidos como unidades de transformação (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformação, os quais podem ser quantizados.
[0058] Uma CU-folha pode incluir uma ou mais unidades de predição (PUs) quando predita utilizando predição inter. Em geral, uma PU representa uma área
Petição 870190080478, de 19/08/2019, pág. 32/150
24/100 espacial correspondente a toda ou a uma parte da CU correspondente e pode incluir dados para recuperar e/ou gerar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Quando a CU é codificada no modo inter, uma ou mais PUs da CU podem incluir dados que definem informação de movimento, tal como um ou mais vetores de movimento, ou as PUs podem ser codificadas no modo de salto. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência para a qual o vetor de movimento salienta e/ou uma lista de imagens de referência (por exemplo, Lista 0 ou Lista 1) para o vetor de movimento.
[0059] As Cus-folha também podem ser preditas no modo intra. Em geral, a predição intra envolve predizer uma CU-folha (ou divisões desta) utilizando um modo intra. Um codificador de vídeo pode selecionar um conjunto de pixels vizinhos codificados previamente para a CU-folha utilizar para predizer a CU-folha (ou divisões dela).
[0060] Uma CU-folha também pode incluir uma ou mais unidades de transformação (TUs). As unidades de transformação podem ser especificadas utilizando uma RQT (também referida como uma estrutura árvore quaternária TU), como discutido acima. Por exemplo, um sinalizador de divisão pode indicar se uma CU-folha é dividida em quatro unidades de transformação. Então, cada TU pode ser adicionalmente dividida sub-TUs. Quando uma TU não é
Petição 870190080478, de 19/08/2019, pág. 33/150
25/100 adicionalmente dividida, ela pode ser chamada de TU-folha. Geralmente, para a codificação intra, todas as TU-folhas pertencentes a uma CU-folha compartilham o mesmo modo de predição intra. Isto é, o mesmo modo de predição intra é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU-folha. Para a codificação intra, um codificador de video pode calcular um valor residual para cada TU-folha utilizando o modo de predição intra, como uma diferença entre a parte da CU correspondente à TU e ao bloco original. Uma TU não está necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser maiores ou menores do que uma PU. Para a codificação intra, as divisões de uma CU, ou a própria CU, podem estar colocalizadas com uma TU-folha correspondente para a CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0061] Além disso, as TUs de CUs-folhas também podem ser associadas com as respectivas estruturas de dados da árvore quaternária, denominadas árvores quaternárias residuais (RQTs) . Isto é, uma CU-folha pode incluir uma árvore quaternária indicando como a CU-folha é dividida em TUs. O nó raiz de uma árvore quaternária TU geralmente corresponde a uma CU-folha, enquanto o nó raiz de uma árvore quaternária CU geralmente corresponde a uma CTU (ou LCU). As TUs da RQT que não são divididas são chamadas de TUs-folhas. Em geral, esta revelação utiliza os termos CU e TU para se referir a CU-folha e TU-folha, respectivamente, exceto quando indicado do contrário.
[0062] Embora algumas técnicas sejam explicadas em relação à HEVC, deve ser entendido que as
Petição 870190080478, de 19/08/2019, pág. 34/150
26/100 técnicas desta revelação não estão limitadas à HEVC. Por exemplo, em vez de utilizar divisão de árvore quaternária de acordo com HEVC, as técnicas desta revelação podem ser aplicadas quando as CTUs são divididas de acordo com outros esquemas de divisão, como a divisão de árvore binária de árvore quaternária (QTBT), onde uma estrutura de dados de árvore pode incluir uma árvore de regiões dividida de acordo com a divisão da árvore quaternária, e os nós folha da árvore de regiões podem servir como nós raiz das respectivas árvores de predição que podem ser divididas de acordo com a árvore binária e/ou a divisão de árvore tripla lateral central.
[0063] Uma sequência de video tipicamente inclui uma série de quadros ou imagens de video, iniciando com uma imagem de ponto de acesso aleatório (RAP) . Uma sequência de video pode incluir dados de sintaxe em um conjunto de parâmetros de sequência (SPS) que caracterizam a sequência de video. Cada fração de uma imagem pode incluir dados de sintaxe de fração que descrevem um modo de codificação para a respectiva fração. O codificador de video 20 opera tipicamente em blocos de vídeo dentro de frações de vídeo individuais para codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem possuir tamanhos fixos ou variados e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0064] Como um exemplo, a predição pode ser executada para PUs de vários tamanhos. Assumindo que o tamanho de uma CU particular é 2N x 2N, a predição intra
Petição 870190080478, de 19/08/2019, pág. 35/150
27/100 pode ser executada em tamanhos de PU de 2N x 2N ou N x N, e a predição inter pode ser executada em tamanhos simétricos de PU de 2N x 2N, 2N x N, N x 2N ou N x N. A divisão assimétrica para predição inter também pode ser executada para tamanhos de PU de 2N x nU, 2N x nD, nL x 2N e nR x 2N. Na divisão assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à divisão de 25% é indicada por um n seguido de uma indicação de Para cima, Para baixo, Esquerda ou Direita. Assim, por exemplo, 2N x nU refere-se a uma CU 2N x 2N que é dividida horizontalmente com uma PU 2N x 0,5N na parte superior e uma PU 2N x 1,5N na parte inferior.
[0065] Nesta revelação, N x N e N por N podem ser utilizados de forma intercambiável para referir às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16 x 16 pixels ou 16 por 16 pixels. Em geral, um bloco 16 x 16 possuirá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma forma, um bloco N x N geralmente possui N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Além disso, os blocos não precisam necessariamente possuir o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem incluir pixels N x M, onde M não é necessariamente igual a N.
[0066] Seguindo uma codificação preditiva intra ou a codificação preditiva inter utilizando as PUs de
Petição 870190080478, de 19/08/2019, pág. 36/150
28/100 uma CU, o codificador de video 20 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe descrevendo um método ou um modo de gerar dados de pixel preditivos no dominio espacial (também referido como dominio de pixel) e as TUs podem compreender coeficientes no dominio de transformada após a aplicação de uma transformada, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de ondaleta ou uma transformada conceitualmente similar para dados de video residuais. Os dados residuais podem corresponder a diferenças de pixels entre os pixels da imagem não codificada e os valores de predição correspondentes às PUs. O codificador de video 20 pode formar as TUs para incluir coeficientes de transformada quantizados representativos dos dados residuais para a CU. Isto é, o codificador de video 20 pode calcular os dados residuais (na forma de um bloco residual), transformar o bloco residual para produzir um bloco de coeficientes de transformada e então quantizar os coeficientes de transformada para formar coeficientes de transformada quantizados. O codificador de video 20 pode formar uma TU, incluindo os coeficientes de transformada quantizados, bem como outras informações de sintaxe (por exemplo, informação de divisão para a TU).
[0067] Como citado acima, após quaisquer
transformadas para produzir coeficientes de transformada, o
codificador de video 20 pode executar a quantização dos
coeficientes de transformada. A quantiz ação geralmente se
refere a um processo no qual os coeficientes de
transformada são quantizados para possivelmente reduzir a
Petição 870190080478, de 19/08/2019, pág. 37/150
29/100 quantidade de dados utilizados para representar os coeficientes, proporcionando compactação adicional. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou com todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante a quantização, em que n é maior do que m.
[0068] Após a quantização, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de energia mais alta (e, portanto, de menor frequência) na frente do arranjo, e colocar coeficientes de energia mais baixa (e, portanto, maior frequência) na parte de trás do arranjo. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode executar uma varredura adaptativa. Após a varredura dos coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa ao contexto (CAVLC), a codificação aritmética binária adaptativa ao contexto (CABAC), a codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), a codificação por Entropia de Divisão por Intervalo de Probabilidade (PIPE) ou outra
Petição 870190080478, de 19/08/2019, pág. 38/150
30/100 metodologia de codificação por entropia. O codificador de vídeo 20 também pode codificar por entropia os elementos de sintaxe associados aos dados de vídeo codificados para a utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0069] Para executar CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode relacionar, por exemplo, se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar a CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras-código em VLC podem ser construídas de modo que os códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto os códigos mais longos correspondam aos símbolos menos prováveis. Desta forma, a utilização de VLC pode efetuar uma economia de bits excedente, por exemplo, utilizando palavras-código de comprimento igual para cada símbolo a ser transmitido. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0070] Em geral, o decodificador de vídeo 30 executa um processo substancialmente similar, embora recíproco, ao executado pelo codificador de vídeo 20 para decodificar os dados codificados. Por exemplo, o decodificador de vídeo 30 quantiza inversamente e transforma inversamente os coeficientes de uma TU recebida para reproduzir um bloco residual. O decodificador de vídeo 30 utiliza um modo de predição sinalizado (predição intra ou inter) para formar um bloco predito. Então, o
Petição 870190080478, de 19/08/2019, pág. 39/150
31/100 decodificador de video 30 combina o bloco predito e o bloco residual (em uma base pixel-a-pixel) para reproduzir o bloco original. Processamento adicional pode ser executado, tal como executar um processo de desagrupamento para reduzir os artefatos visuais ao longo dos limites do bloco. Adicionalmente, o decodificador de video 30 pode decodificar os elementos de sintaxe utilizando CABAC em um modo substancialmente similar, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 20.
[0071] O codificador de vídeo 20 pode adicionalmente enviar dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe baseados em imagem e dados de sintaxe baseados em sequência para o decodificador de vídeo 30, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fração ou em outros dados de sintaxe, tal como um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) ou um conjunto de parâmetros de vídeo (VPS).
[0072] Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser implementado como qualquer um dos vários sistemas de circuitos adequados de codificador ou decodificador, conforme aplicável, tal como um ou mais microprocessadores, sistema de circuitos de processamento (incluindo sistema de circuitos de função fixa e/ou sistema de circuitos de processamento programável), processadores de sinais digitais (DSPs), circuitos integrados aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), sistema de circuitos de lógica discreta, software, hardware, firmware ou quaisquer combinações destes. Cada um dentre o
Petição 870190080478, de 19/08/2019, pág. 40/150
32/100 codificador de video 20 e o decodificador de video 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo (CODEC) combinado. Um dispositivo incluindo o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação não cabeada, tal como um telefone celular.
[0073] De acordo com as técnicas desta revelação, um codificador de vídeo, tal como o codificador de vídeo 20 e o decodificador de vídeo 30, pode executar DMVD para derivar a informação de movimento para um bloco atual de dados de vídeo. Em particular, estas técnicas podem incluir qualquer um ou todos os seguintes, sozinhos ou em qualquer combinação.
[0074] Um dos conceitos principais desta revelação é aprimorar a derivação de vetor de movimento no lado do decodificador (DMVD). As técnicas são elaboradas em vários aspectos diferentes detalhados conforme discutido abaixo. As seguintes técnicas para aprimorar a DMVD podem ser aplicadas individualmente. Alternativamente, qualquer combinação das mesmas pode ser aplicada.
[0075] O conceito de abordagens DMVD é para o codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) para derivar informações de movimento, tais como vetores de movimento e direções de predição, utilizando informações previamente decodificadas. Nas abordagens atuais, os grupos de pixels são primeiramente derivados e a informação de movimento é adicionalmente derivada utilizando os grupos de pixels.
Petição 870190080478, de 19/08/2019, pág. 41/150
33/100
Essa revelação refere-se a esses grupos de pixels como o indício de pixels. Por exemplo, na Correspondência de Modelo FRUC, os modelos do bloco atual e dos blocos de referência são o indício de pixels; a correspondência FRUC Bilateral, os pares-espelho ao longo das trajetórias de movimento dos blocos de referência são o indício de pixels; na Correspondência Bilateral de Modelos, o modelo gerado por bi-predição e os blocos de referência são o indício de pixels; e na BIO, os blocos de referência são o indício de pixels.
[0076] Um codificador de vídeo pode aplicar filtros para o indício de pixels. Os filtros podem ser qualquer filtro de retirada de ruído, como o filtro Guiado, o filtro Bilateral, o filtro mediano e assim por diante. Os filtros também podem ser qualquer filtro de suavização, tal como filtro de média. Além disso, se um processo de filtragem é aplicado (ou não) ao indício de pixels para a DMVD abordada pode ser sinalizado no cabeçalho SPS / PPS / da fração.
[0077] O codificador de vídeo (por exemplo, codificador de vídeo 20 ou o decodificador de vídeo 30) pode aplicar quaisquer métodos de refinamento de movimento para a geração do indício de pixels. Os métodos de refinamento de movimento podem conter, mas não se limitam aos métodos existentes, incluindo BIO, correspondência de Modelo FRUC, Correspondência FRUC Bilateral. Em um exemplo, quando o indício de pixels é gerado por vários blocos com movimento compensado (MC), a BIO pode ser aplicada ao indício de pixels para aprimorar ainda mais a qualidade do indício de pixels. Por exemplo, na abordagem
Petição 870190080478, de 19/08/2019, pág. 42/150
34/100 de Correspondência de Modelo Bilateral, o Modelo Bilateral é gerado pela média dos blocos MC L0 e LI. O codificador de video pode simplesmente aplicar a BIO para refinar o Modelo Bilateral e utilizar o Modelo Bilateral refinado para executar refinamentos de MV. Um algoritmo rápido pode ser aplicado para evitar possíveis operações redundantes. Após o refinamento do MV de Correspondência de Modelo Bilateral, se o MV for idêntico ao original, o codificador de vídeo não precisa executar outra BIO e MC. Como o Modelo Bilateral será idêntico ao preditor final, o codificador de vídeo pode utilizar diretamente o Modelo Bilateral como o preditor final.
[0078] Quando o indício de pixels é gerado por blocos com movimento compensado (MC), o codificador de vídeo pode adicionalmente aprimorar o indício de pixels utilizando várias predições de hipótese, como a média ponderada de vários blocos MC. Por exemplo, A OBMC pode ser aplicada para gerar o indício de pixels. Em outro exemplo, os vários blocos MC podem ser derivados utilizando os vetores de movimento do bloco atual adicionado por deslocamentos (isto é, +1 ou -1) para o componente X ou Y do MV atual ou ambos os componentes X e Y do MV atual.
[0079] O codificador de vídeo pode aprimorar o indício de pixels iterativamente utilizando os MVs refinados. Por exemplo, no método de Correspondência de Modelos Bilaterais, após o MV refinado ser derivado, o Modelo Bilateral pode ser gerado novamente utilizando o MV refinado e o codificador de vídeo pode executar outro refinamento de MV e a iteração de refinamento de MV pode ser repetida até que algum critério preestabelecido seja
Petição 870190080478, de 19/08/2019, pág. 43/150
35/100 alcançado. Em um exemplo, o número de iteração é fixo e preestabelecido para o codificador de vídeo 20 e o decodificador de vídeo 30. Por exemplo, a derivação de MV é iterada por N vezes (N é fixo e pré-estabelecido) e para cada iteração o indício de pixels é refinado de acordo com os resultados de iterações anteriores e o indício de pixels refinado é então utilizado para executar a derivação de MV. Em outro exemplo, as iterações são finalizadas quando o custo de correspondência é menor que (ou igual a) um limite pré-estabelecido. Ainda em outro exemplo, as iterações são encerradas quando o custo de correspondência é menor que (ou igual a) um limite pré-estabelecido ou o número de iterações atinge um número preestabelecido.
[0080] Além do indício de pixels do mesmo componente de cor, o codificador de vídeo pode utilizar o indício de pixels de qualquer um ou de todos os outros componentes para executar a derivação MV. Além disso, o indício de pixels do outro componente podem ser os pixels reconstruídos, os quais são os pixels preditos do residual sinalizado associado.
[0081] De modo a gerar dados de referência, o codificador de vídeo 20 decodifica dados de vídeo codificados e armazena os dados de vídeo decodificados em um armazenamento (buffer) de imagem decodificada (DPB), por exemplo, uma parte de memória do codificador de vídeo 20. Assim, o codificador de vídeo 20 pode utilizar os dados do DPB para referência quando codificar de forma preditiva os dados de vídeo subsequentes. Devido ao codificador de vídeo 20 incluir elementos para decodificar dados de vídeo codificados, pode dizer-se que o codificador de vídeo 20
Petição 870190080478, de 19/08/2019, pág. 44/150
36/100 inclui um decodificador de vídeo. [0082] 0 codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode derivar informação de movimento para um bloco atual de dados de vídeo, isto é, um bloco sendo atualmente decodificado. Para derivar a informação de movimento, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode primeiro determinar um indício de pixels para o bloco atual. O indício de pixels geralmente corresponde aos dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados. O indício de pixels pode ser, por exemplo, um ou mais blocos que possuem uma alta probabilidade de serem identificados por um vetor de movimento. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar tais blocos de acordo com a correspondência bilateral de modelos. Adicionalmente ou alternativamente, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar tais blocos a partir de pixels vizinhos para o bloco atual e pixels vizinhos correspondentes mais proximamente aos blocos de referência, de modo que os blocos de referência formam o indício de pixels.
[0083] Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem gerar o indício de pixels utilizando várias predições de hipótese a partir de vários blocos com movimento compensado. Por exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem calcular uma média ponderada dos vários blocos com movimento compensado. Adicionalmente ou alternativamente, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem executar uma movimento
Petição 870190080478, de 19/08/2019, pág. 45/150
37/100 compensado de bloco sobreposto para gerar o indicio de pixels. Ainda como outro exemplo, o codificador de video 20 e/ou o decodificador de video 30 podem adicionar deslocamentos para um ou mais vetores de movimento do bloco atual e derivar os vários blocos com movimento compensado a partir dos vetores de movimento deslocados (bem como os vetores de movimento originais do bloco atual).
[0084] Em alguns exemplos, o codificador de video 20 e/ou o decodificador de video 30 podem calcular um custo de correspondência entre um primeiro bloco de referência e um segundo bloco de referência identificado pela informação de movimento derivada para o bloco atual. O codificador de video 20 e/ou o decodificador de video 30 podem calcular o custo de correspondência por aplicar os respectivos valores de peso para as medições de custo para os pixels correspondentes dos blocos de referência, por exemplo, um primeiro peso para uma primeira medição de custo e um segundo peso para uma segunda medição de custo, onde os pesos e as medições de custo podem ser diferentes uns dos outros. O codificador de video 20 e/ou o decodificador de video 30 podem então refinar a informação de movimento baseado no custo de correspondência. Adicionalmente, o codificador de video 20 e/ou o decodificador de video 30 podem determinar as ponderação baseado nas distâncias entre os pixels correspondentes e pontos específicos do bloco atual, nas distâncias entre os pixels correspondentes e pontos específicos do indício de pixels, em uma fileira ou coluna que inclui os pixels correspondentes e/ou nas regiões que incluem os pixels correspondentes.
Petição 870190080478, de 19/08/2019, pág. 46/150
38/100 [0085] A FIG. 2 é um diagrama de blocos ilustrando um exemplo de codificador de video 20 que pode implementar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação. Em particular, o codificador de video 20 pode executar as técnicas DMVD desta revelação durante um loop de decodificação, o qual inclui processos executados pela unidade de quantização inversa 58, pela unidade de transformada inversa 60 e pelo somador 62. Adicionalmente, como discutido acima, o codificador de video 20 pode sinalizar alguns valores que podem auxiliar um decodificador de video, como o decodificador de video 30, na execução da DMVD.
[0086] O Codificador de video 20 pode executar codificação intra e inter de blocos de vídeo dentro de frações de vídeo. A codificação intra conta com predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de um dado quadro ou imagem de vídeo. A codificação inter conta com a predição temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O modo intra (modo I) pode referir-se a qualquer um dos vários modos de codificação baseados em espaço. Os modos inter, tais como predição unidirecional (modo P) ou bipredição (modo B) , podem se referir a qualquer um dos vários modos de codificação baseados em tempo.
[0087] Como apresentado na FIG. 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da FIG. 2, o codificador de vídeo 20 inclui a unidade de
Petição 870190080478, de 19/08/2019, pág. 47/150
39/100 seleção de modo 40, a memória de imagem de referência 64 (a qual também pode ser referida como um armazenamento de imagem decodificada (DPB)), o somador 50, a unidade de processamento de transformada 52, a unidade de quantização 54 e unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade predição intra 46 e unidade de divisão 48. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformada inversa 60, e o somador 62. Um filtro de desagrupamento (não apresentado na FIG. 2) também pode ser incluído para filtrar limites de bloco para remover artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desagrupamento tipicamente filtraria a saída do somador 62. Filtros adicionais (em loop ou pós-loop) também podem ser utilizados adicionalmente ao filtro de desagrupamento. Esses filtros não são apresentados por brevidade, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro em loop).
[0088] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fração de vídeo para ser codificado. O quadro ou fração pode ser dividido em vários blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 executam a codificação preditiva inter do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para proporcionar a predição temporal. A unidade de predição intra 46 pode em
Petição 870190080478, de 19/08/2019, pág. 48/150
40/100 alternativa a executar a codificação de predição intra do bloco de video recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou na fração que o bloco a ser codificado para proporcionar predição espacial. O codificador de video 20 pode executar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de video.
[0089] Além disso, a unidade de divisão 48 pode dividir blocos de dados de video em sub-blocos, baseado na avaliação de esquemas de divisão anteriores de divisão em passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fração em CTUs e dividir cada uma das CTUs em sub-CUs baseado na análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode adicionalmente produzir uma estrutura de dados de árvore quaternária indicativa de divisão de uma CTU em sub-CUs. As CUs do nó de folha da de árvore quaternária podem incluir uma ou mais PUs e uma ou mais TUs.
[0090] A unidade de seleção de modo 40 pode selecionar um dos modos de predição, intra ou inter, por exemplo, baseado nos resultados de erro, e proporcionar o bloco predito resultante para o somador 50 para gerar dados residuais e para o somador 62 para reconstruir o bloco codificado para utilização como um quadro de referência. A unidade de seleção de modo 40 também proporciona elementos de sintaxe, tais como vetores de movimento, indicadores de modo intra, informação de divisão e outras tais informações de sintaxe, para a unidade de codificação por entropia 56.
Petição 870190080478, de 19/08/2019, pág. 49/150
41/100 [0091] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para propósitos conceituais. A estimação de movimento, executada pela unidade de estimativa de movimento 42, é o processo de gerar vetores de movimento, os quais estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo atual relativo a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) relativo ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que corresponde proximamente ao bloco a ser codificado, em termos de diferença de pixel, o qual pode ser determinado pela soma das diferenças absolutas (SAD), soma da diferença quadrada (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel sub-inteiros de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo pixel ou outras posições de pixels fracionárias da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode executar uma pesquisa de movimento relativa às posições de pixel inteiro e posições de pixel fracionário e emitir um vetor de movimento com precisão de pixel fracionário.
[0092] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de
Petição 870190080478, de 19/08/2019, pág. 50/150
42/100 video em uma fração codificada inter, comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou de uma segunda lista de imagens de referência (Lista 1), cada uma das qual identificando uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para unidade de codificação por entropia 56 e para a unidade de compensação de movimento 44.
[0093] A movimento compensado, executada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo baseado no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 pode ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco atual de video, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento salienta em uma das listas de imagens de referência. O somador 50 forma um bloco de video residual por subtrair os valores de pixel do bloco preditivo a partir dos valores de pixel do bloco de video atual sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa de movimento 42 executa a estimativa de movimento em relação aos componentes de luma, e a unidade de compensação de movimento 44 utiliza vetores de movimento calculados
Petição 870190080478, de 19/08/2019, pág. 51/150
43/100 baseado nos componentes de luma para componentes de croma e componentes de luma. A unidade de seleção de modo 4 0 também pode gerar elementos de sintaxe associados com os blocos de vídeo e com a fração de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fração de vídeo.
[0094] De acordo com as técnicas desta revelação, a unidade de seleção de modo 40 pode determinar que a unidade de compensação de movimento 44 deva derivar a informação de movimento para um bloco atual de dados de vídeo utilizando as técnicas de derivação de vetor de movimento no lado do decodificador. Consequentemente, a unidade de compensação de movimento 44 pode utilizar qualquer uma ou todas as técnicas desta revelação, como discutido em maiores detalhes acima e abaixo, para gerar informação de movimento para o bloco atual. Assim, ao invés de utilizar apenas informação de movimento determinada pela unidade de estimativa de movimento 42, a unidade de compensação de movimento 44 pode derivar a informação de movimento para blocos de dados de vídeo, por exemplo, utilizando um indício de pixels, como discutido neste documento.
[0095] A unidade de compensação de movimento 44 pode determinar o indício de pixels a partir de dados de pixel de um ou mais grupos de pixels de pixels previamente decodificados, por exemplo, de imagens previamente decodificadas armazenadas na memória de imagem de referência 64. Em alguns exemplos, a unidade de compensação de movimento 44 pode gerar o indício pixels utilizando várias predições de hipótese a partir de vários
Petição 870190080478, de 19/08/2019, pág. 52/150
44/100 blocos com movimento compensado das imagens previamente decodificadas.
[0096] Em alguns exemplos, para derivar a informação de movimento, a unidade de compensação de movimento 44 pode determinar uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre diferentes direções de predição. A direção de predição inter pode geralmente corresponder a se a informação de movimento derivada se refere às imagens de referência na lista O, na lista 1 ou tanto na lista O como na lista 1 (isto é, bi-predição).
[0097] Em alguns exemplos, a unidade de compensação de movimento 44 pode calcular um custo de correspondência entre um primeiro bloco de referência e um segundo bloco de referência. Para calcular o custo de correspondência, a unidade de compensação de movimento 44 pode calcular uma média ponderada de duas ou mais técnicas de medição de custos. Por exemplo, a unidade de compensação de movimento 44 pode executar uma primeira medição de custo das diferenças entre o primeiro e o segundo blocos de referência e, em seguida, uma segunda medição de custo diferente destas diferenças. A unidade de compensação de movimento 44 pode então ponderar as medições de custo, por exemplo, por aplicar os valores de ponderação às medições de custo. A unidade de compensação de movimento 44 pode então acumular (isto é, adicionar) as medições de custo ponderadas para obter um custo de correspondência final e, em seguida, refinar a informação de movimento utilizando o custo de correspondência.
[0098] Em alguns exemplos, a unidade de
Petição 870190080478, de 19/08/2019, pág. 53/150
45/100 compensação de movimento 44 pode determinar se deve ou não utilizar um ou mais vetores de movimento de informação de movimento derivada, por exemplo, baseado em se os vetores de movimento são similares a outros candidatos a vetor de movimento em uma lista de candidatos a vetor de movimento em um bloco atual. Se um ou mais dos vetores de movimento forem similares o suficiente para um candidato a vetor de movimento existente, a unidade de compensação de movimento 44 pode descartar um ou mais vetores de movimento.
[0099] A unidade predição intra 46 pode predizer intra um bloco atual, como uma alternativa para a predição inter executada pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de predição intra 4 6 pode determinar um modo de predição intra para utilizar para codificar um bloco atual. Em alguns exemplos, a unidade de predição intra 46 pode codificar um bloco atual utilizando vários modos predição intra, por exemplo, durante passagens de codificação separadas, e a unidade de predição intra 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de predição intra apropriado para utilizar a partir dos modos testados.
[00100] Por exemplo, a unidade de predição intra 46 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos predição intra testados, e selecionar o modo predição intra possuindo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não
Petição 870190080478, de 19/08/2019, pág. 54/150
46/100 codificado, que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) utilizada para produzir o bloco codificado. A unidade predição intra 46 pode calcular proporções a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra apresenta o melhor valor de distorção de taxa para o bloco.
[00101] Após selecionar um modo predição intra para um bloco, a unidade de predição intra 46 pode proporcionar informação indicativa do modo predição intra selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de predição intra selecionado. O codificador de video 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, os quais podem incluir várias tabelas de indícios de modo de predição intra e várias tabelas de indícios de modo predição intra modificadas (também referidas como tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, e indicações de um modo predição intra mais provável, uma tabela de indício de modo predição intra e uma tabela de indício de modo predição intra modificada para utilização para cada um dos contextos.
[00102] O codificador de vídeo 20 forma um bloco de vídeo residual por subtrair os dados de predição a partir da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que executam essa operação de subtração. A unidade de processamento de
Petição 870190080478, de 19/08/2019, pág. 55/150
47/100 transformada 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada. As transformadas de ondaletas, transformadas de número inteiros, transformadas de sub bandas, transformadas de seno discretas (DSTs) ou outros tipos de transformadas poderíam ser utilizadas ao invés de uma DCT. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada. A transformada pode converter a informação residual de um domínio de pixel em um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para adicionalmente reduzir a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou com todos os coeficientes. O grau de quantização pode ser modificado por ajustar um parâmetro de quantização.
[00103] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode executar a codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), codificação por
Petição 870190080478, de 19/08/2019, pág. 56/150
48/100 entropia por divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação por entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, o decodificador de video 30) ou arquivado para posterior transmissão ou recuperação.
[00104] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel. Em particular, o somador 62 adiciona o bloco residual reconstruído ao bloco de predição com movimento compensado anteriormente produzido pela unidade de compensação de movimento 44 ou pela unidade de predição intra 46 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para codificar inter um bloco em um quadro de vídeo subsequente.
[00105] A FIG. 3 é um diagrama de blocos ilustrando um exemplo de decodificador de vídeo 30 que pode implementar técnicas para executar a derivação de vetor de movimento no lado do decodificador (DMVD) desta revelação. No exemplo da FIG. 3, o decodif icador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, uma unidade de predição
Petição 870190080478, de 19/08/2019, pág. 57/150
49/100 intra 74, uma unidade de quantização inversa 76, uma unidade de transformada inversa 78, uma memória de imagem de referência 82 e um somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma etapa de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 (FIG. 2) . A unidade de compensação de movimento 72 pode gerar dados de predição baseada nos vetores de movimento recebidos a partir da unidade de decodificação por entropia 70, enguanto a unidade de predição intra 74 pode gerar dados de predição baseada em indicadores de modo predição intra recebidos a partir da unidade de decodificação por entropia 70.
[00106] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fração de vídeo codificada e elementos de sintaxe associados a partir do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de predição intra e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe em nível de fração de vídeo e/ou em nível de bloco de vídeo.
[00107] Quando a fração de vídeo é codificada como uma fração codificada intra (I), a unidade de predição intra 74 pode gerar dados de predição para um bloco de
Petição 870190080478, de 19/08/2019, pág. 58/150
50/100 video da fração de video atual baseado em um modo de predição intra sinalizado e em dados a partir de blocos decodificados anteriormente do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fração codificada inter (isto é, B ou P) , a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fração de vídeo atual baseado nos vetores de movimento e em outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, a Lista 0 e a Lista 1, utilizando técnicas de construção predefinidas baseado nas imagens de referência armazenadas na memória de imagem de referência 82.
[00108] A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fração de vídeo atual por analisar os vetores de movimento e outros elementos de sintaxe, e utiliza a informação de predição para produzir os blocos preditivos para o bloco de vídeo atual que está sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) utilizado para codificar os blocos de vídeo da fração de vídeo, um tipo de fração de predição inter (por exemplo, fração B ou fração P) , informação de construção para uma ou mais das listas de imagens de referência para a fração, vetores de movimento para cada bloco de vídeo
Petição 870190080478, de 19/08/2019, pág. 59/150
51/100 codificado inter da fração, status de predição inter para cada bloco de vídeo codificado inter da fração, e outras informações para decodificar os blocos de vídeo na fração de video atual.
[00109] A unidade de compensação de movimento 72 também pode executar interpolação baseada em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizados pelo codificador de video 20 durante a codificação dos blocos de vídeo para calcular valores interpelados para pixels subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[00110] De acordo com as técnicas desta revelação, a unidade de compensação de movimento 72 pode determinar derivar informação de movimento para um bloco atual de dados de vídeo utilizando técnicas de derivação de vetor de movimento no lado do decodificador. Consequentemente, a unidade de compensação de movimento 72 pode utilizar qualquer uma ou todas as técnicas desta revelação, como discutido em maiores detalhes acima e abaixo, para gerar informação de movimento para o bloco atual. Assim, em vez de utilizar somente a informação de movimento decodificada pela unidade de decodificação por entropia 70, a unidade de compensação de movimento 72 pode derivar a informação de movimento para blocos de dados de vídeo, por exemplo, utilizando um indício de pixels, como discutido neste documento.
Petição 870190080478, de 19/08/2019, pág. 60/150
52/100 [00111] A unidade de compensação de movimento 72 pode determinar o indício de pixels a partir de dados de pixel de um ou mais grupos de pixels de pixels previamente decodificados, por exemplo, de imagens previamente decodificadas armazenadas na memória de imagem de referência 82. Em alguns exemplos, a unidade de compensação de movimento 72 pode gerar o indício de pixels utilizando várias predições de hipótese de vários blocos com movimento compensado das imagens previamente decodificadas.
[00112] Em alguns exemplos, para derivar a informação de movimento, a unidade de compensação de movimento 72 pode determinar uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre as diferentes direções de predição. A direção de predição inter pode geralmente corresponder a se a informação de movimento derivada se refere a imagens de referência na lista O, na lista 1 ou tanto na lista O como na lista 1 (isto é, bi-predição).
[00113] Em alguns exemplos, a unidade de compensação de movimento 72 pode calcular um custo de correspondência entre um primeiro bloco de referência e um segundo bloco de referência. Para calcular o custo correspondente, a unidade de compensação de movimento 72 pode calcular uma média ponderada de duas ou mais técnicas de medição de custos. Por exemplo, a unidade de compensação de movimento 72 pode executar uma primeira medição de custo das diferenças entre o primeiro e o segundo blocos de referência e, em seguida, uma segunda medição de custo diferente dessas diferenças. A unidade de
Petição 870190080478, de 19/08/2019, pág. 61/150
53/100 compensação de movimento 72 pode então ponderar as medições de custo, por exemplo, por aplicar valores de ponderação às medições de custo. A unidade de compensação de movimento 72 pode então acumular (isto é, adicionar) as medições de custo ponderadas para obter um custo de correspondência final e, em seguida, refinar a informação de movimento utilizando o custo de correspondência.
[00114] Em alguns exemplos, a unidade de compensação de movimento 72 pode determinar se utiliza ou não um ou mais vetores de movimento de informação de movimento derivada, por exemplo, baseado em se os vetores de movimento são similares a outros candidatos a vetores de movimento em uma lista de candidatos a vetores de movimento para um bloco atual. Se um ou mais dos vetores de movimento forem similares o suficiente a um candidato a vetor de movimento existente, a unidade de compensação de movimento 72 pode descartar o um ou mais vetores de movimento.
[00115] A unidade de quantização inversa 76 quantiza inversamente, isto é, dequantiza, os coeficientes de transformada quantizados proporcionados no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY calculado pelo decodificador de video 30 para cada bloco de vídeo na fração de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[00116] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT
Petição 870190080478, de 19/08/2019, pág. 62/150
54/100 inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada de modo a produzir blocos residuais no domínio de pixel.
[00117] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual baseado nos vetores de movimento e nos outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado por somar os blocos residuais a partir da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam essa operação de soma. Se desejado, um filtro de desagrupamento também pode ser aplicado para filtrar os blocos decodificados, de modo a remover artefatos de blocagem. Outros filtros de loop (no loop de codificação ou após o loop de codificação) também podem ser utilizados para suavizar as transições de pixel ou aprimorar a qualidade do vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de imagens de referência 82, a qual armazena imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagem de referência 82 também armazena vídeo decodificado para apresentação posterior em um dispositivo de vídeo, tal como o dispositivo de vídeo 32 da FIG. 1.
[00118] As FIGS. 4A e 4B são diagramas conceptuais ilustrando candidatos a vetor de movimento espacial derivados a partir de blocos vizinhos. O codificador de vídeo 20 e/ou o decodificador de vídeo 30
Petição 870190080478, de 19/08/2019, pág. 63/150
55/100 podem derivar candidatos MV espaciais a partir dos blocos vizinhos, por exemplo, como apresentado nas FIGS. 4A e 4B, para uma PU específica (por exemplo, a PUO 102 da FIG. 4A e a PUO 122 da FIG. 4B, as quais estão incluídas nas mesmas CUs correspondentes como a PU1 104 e a PU1 124, respectivamente), embora os métodos para gerar os candidatos a partir dos blocos diferem para os modos de mesclagem e AMVP. No modo de mesclagem, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem derivar até quatro candidatos a MV espacial de acordo com a ordem apresentada na FIG. 4A com números, como se segue: esquerda (bloco 112), acima (bloco 106), acima à direita (bloco 108), abaixo à esquerda (bloco 114) e acima à esquerda (bloco 110).
[00119] No modo AVMP, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 dividem os blocos vizinhos em dois grupos: o grupo à esquerda (incluindo os blocos 132 e 134) e o grupo acima (incluindo os blocos 130, 126 e 128), como apresentado na FIG. 4B. Para cada grupo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 determinam o candidato em potencial em um bloco vizinho, referindo-se à mesma imagem de referência como a indicada pelo indício de referência sinalizado que possui a maior prioridade para formar um candidato final do grupo. É possível que nenhum bloco vizinho contenha um vetor de movimento apontando para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem dimensionar o primeiro candidato disponível para formar o candidato final e, assim, as diferenças de
Petição 870190080478, de 19/08/2019, pág. 64/150
56/100 distância temporal podem ser compensadas.
[00120] As FIGs. 5A e 5B são diagramas conceituais ilustrando uma localização de bloco principal para um candidato a preditor de vetor de movimento temporal (TMVP) . O codificador de vídeo 20 e o decodifleader de vídeo 30 podem adicionar os candidatos a preditor de vetor de movimento temporal (TMVP), se capacitados e disponíveis, na lista de candidatos a vetor de movimento (MV) seguindo candidatos a vetor de movimento espacial na lista de candidatos MV. O processo de derivação de vetor de movimento para candidatos TMVP é o mesmo para ambos os modos de mesclagem e AMVP. Entretanto, o indício de referência alvo para o candidato TMVP no modo de mesclagem pode ser estabelecido para 0.
[00121]
Localização de bloco principal do bloco para derivação de candidato a TMVP para uma PU é o bloco inferior direito fora da PU co-localizada, por exemplo, a PU0 140. Localização principal para a derivação de candidato a TMVP como apresentado na FIG. 5A é o bloco T 142, para compensar a tendência para s blocos acima e à esquerda utilizados para gerar candidatos vizinhos espaciais. Entretanto, se esse bloco estiver localizado fora da fileira CTB atual, ou a informação de movimento não estiver disponível, o bloco é substituído por um bloco central da PU, por exemplo, o bloco 144.
[00122]
O codificador de vídeo e
decodificador de vídeo 30 podem derivar um vetor de movimento para o candidato a TMVP a partir da PU colocalizada da imagem co-localizada, indicada no nível de fração. O vetor de movimento para a PU co-localizada é
Petição 870190080478, de 19/08/2019, pág. 65/150
57/100 chamado de MV co-localizado. Similar ao modo direto temporal no AVC, para derivar o vetor de movimento candidato TMVP, o MV co-localizado precisa ser dimensionado para compensar as diferenças de distância temporal, como apresentado na FIG. 5B.
[00123] No modo de mesclagem e/ou no AMVP, o codificador de video 20 e/ou o decodificador de video 30 podem dimensionar vetores de movimento de referência. A FIG. 5B ilustra distâncias temporais entre imagens, por exemplo, uma distância temporal atual entre a imagem atual 150 e a imagem de referência atual 152 e uma distância temporal co-localizada entre a imagem co-localizada 154 e a imagem de referência co-localizada 156. É assumido que o valor de vetores de movimento é proporcional à distância de imagens no tempo de apresentação. Um vetor de movimento associa duas imagens: a imagem de referência e a imagem contendo o vetor de movimento (isto é, a imagem que contém). Quando o codificador de video 20 ou o decodificador de video 30 utiliza um vetor de movimento para predizer outro vetor de movimento, o codificador de video 20 ou o decodificador de video 30 calcula a distância entre a imagem que contém e a imagem de referência baseado nos valores de Contagem de Ordem de Imagem (POC) destas imagens.
[00124] Para que um vetor de movimento seja predito, sua imagem que contém e a imagem de referência associada podem ser diferentes. Portanto, o codificador de video 20 e/ou o decodificador de video 30 podem calcular uma nova distância (baseado na POC) . O codificador de video 20 e/ou o decodificador de video 30 podem dimensionar
Petição 870190080478, de 19/08/2019, pág. 66/150
58/100 o vetor de movimento baseado nestas duas distâncias de POC. Para um candidato vizinho espacial, as imagens que contêm para os dois vetores de movimento são as mesmas, enquanto as imagens de referência são diferentes. Em HEVC, o dimensionamento de vetor de movimento se aplica tanto ao TMVP quanto ao AMVP para candidatos vizinhos espaciais e temporais.
[00125] Em alguns exemplos, o codificador de video 20 e o decodificador de video 30 podem executar a geração de candidato a vetor de movimento artificial. Se uma lista de candidatos a vetor de movimento não estiver completa, o codificador de video 20 e o decodificador de video 30 podem gerar candidatos a vetor de movimento artificial e inserir os candidatos no final da lista, até que a lista tenha todos os candidatos necessários.
[00126] No modo de mesclagem, existem dois tipos de candidatos MV artificiais: o candidato combinado derivado apenas para frações B e candidatos zero utilizados apenas para AMVP se o primeiro tipo não proporcionar candidatos artificiais suficientes.
[00127] Para cada par de candidatos que já estão na lista de candidatos e possuem informações de movimento necessárias, os candidatos de vetor de movimento combinados bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato referindo-se a uma imagem na lista 0 e o vetor de movimento de um segundo candidato referindo-se a uma imagem na lista 1.
[00128] Em alguns casos, o codificador de video 20 e o decodificador de video 30 podem executar um processo de remoção após a inserção do candidato. Os candidatos de
Petição 870190080478, de 19/08/2019, pág. 67/150
59/100 blocos diferentes podem ser os mesmos, o que diminui a eficiência de uma lista de candidatos de mesclagem / AMVP. O processo de remoção pode resolver esse problema. De acordo com o processo de remoção, o codificador de video 20 e o decodificador de video 30 podem comparar um candidato com os outros na lista de candidatos atual para evitar candidatos idênticos, até certo ponto. Para reduzir a complexidade, apenas números limitados de processos de remoção são aplicados, ao invés de comparar cada candidato em potencial com todos os outros candidatos existentes.
[00129] No software de referência JEM, existem várias ferramentas de codificação inter que derivam ou refinam o vetor de movimento (MV) para um bloco atual no lado do decodificador. Essas abordagens de derivação MV no lado do usuário (DMVD) são elaboradas como abaixo.
[00130] As FIGs. 6 e 7 são diagramas conceituais ilustrando conceitos para derivação de vetor de movimento correspondentes de padrão (PMMVD). O modo PMMVD é um modo de mesclagem especial baseado em técnicas de Conversão Ascendente de Taxa de Quadro (FRUC) . Com este modo, a informação de movimento de um bloco não é sinalizada, mas derivada no lado do decodif icador (por exemplo, durante um processo de decodificação executado pelo codificador de video 20 e pelo decodificador de video 30) . Essa tecnologia foi incluída no JEM.
[00131] O codificador de vídeo 20 pode sinalizar um sinalizador FRUC para uma CU quando um sinalizador de mesclagem da CU é verdadeiro. Quando o sinalizador FRUC for falso, o codificador de vídeo 20 sinaliza um indício de mesclagem e, em resposta a detectar
Petição 870190080478, de 19/08/2019, pág. 68/150
60/100 o indício de mesclagem após um valor falso para ο sinalizador FRUC, o decodificador de video 30 utiliza o modo de mesclagem normal. Quando o sinalizador FRUC for verdadeiro, o codificador de video 20 pode sinalizar um sinalizador de modo FRUC adicional para indicar qual método (correspondência bilateral ou correspondência de modelo) deve ser utilizado para derivar informações de movimento para o bloco. Por consequência, o decodificador de vídeo 30 pode utilizar o valor de falso para o sinalizador FRUC para determinar que o sinalizador do modo FRUC estará presente e determinar o modo FRUC a partir do sinalizador do modo FRUC, por exemplo, a correspondência bilateral ou a correspondência de modelos.
[00132] Durante o processo de derivação de movimento, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem primeiro derivar um vetor de movimento inicial para toda a CU baseado na correspondência bilateral ou na correspondência de modelos (de acordo com o sinalizador de modo FRUC). Em primeiro lugar, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem verificar a lista de mesclagem da CU, ou denominadas sementes PMMVD, e depois selecionar o candidato que conduz ao custo mínimo de correspondência como ponto de partida. Então, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem conduzir uma pesquisa local baseada na correspondência bilateral ou na correspondência de modelos em torno do ponto de partida e selecionar o MV resultando no custo mínimo de correspondência como o MV para toda a CU. Subsequentemente, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem adicionalmente refinar a
Petição 870190080478, de 19/08/2019, pág. 69/150
61/100 informação de movimento em nivel do sub-bloco com os vetores de movimento CU derivados como os pontos de partida.
[00133] A
FIG. 6 é um diagrama conceituai ilustrando conceitos relacionados com correspondência bilateral para derivar informação de movimento do bloco atual 160 na imagem atual 180. Como apresentado na FIG. 6, a correspondência bilateral utilizada para derivar informação de movimento do bloco atual 160 por encontrar a melhor correspondência entre dois blocos de referência (por exemplo, entre o bloco R0 162 e o bloco RI 164 e/ou entre o bloco R'0 166 e o bloco R'l 168) ao longo das trajetórias de movimento correspondentes do bloco atual 160 em duas imagens de referência diferentes 182 e 184. Em particular, o vetor de movimento 170 define uma localização do bloco R0 162 na imagem de referência 182 em relação à posição do bloco atual 160, enquanto o vetor de movimento 172 define uma localização do bloco RI 164 na imagem de referência 184 relativa à posição do bloco atual 160. De modo similar, o vetor de movimento 174 define a localização do bloco R'0 166 na imagem de referência 182 em relação à posição do bloco de atual 160, enquanto o vetor de movimento 176 define a localização do bloco R'1 168 na imagem de referência 184 em relação à posição do bloco atual 160.
[00134]
De acordo com correspondência bilateral, os vetores de movimento 170 e 172 possuem magnitudes proporcionais às distâncias POC entre a imagem atual 180 e as imagens de referência 182 e 184, e o vetor de movimento 170 está em uma trajetória oposta ao vetor de movimento 172. Similarmente, os vetores de movimento 174 e
Petição 870190080478, de 19/08/2019, pág. 70/150
62/100
176 possuem grandezas proporcionais às distâncias POC entre a imagem atual 180 e as imagens de referência 182 e 184, e o vetor de movimento 174 possui uma trajetória oposta ao vetor de movimento 17 6. Isto é, se um vetor de movimento possuir componentes x- e y- {x0, yO}, um vetor de movimento possuindo uma magnitude igual em um diretório oposto pode ser estabelecido pelos componentes x- e y- {-x0, -yO}. Em outras palavras, sob o pressuposto da trajetória de movimento contínuo, os vetores de movimento 170 e 174 e os vetores de movimento correspondentes 172 e 176 (respectivamente) apontando para blocos de referência respectivos devem ser proporcionais às distâncias temporais entre a imagem atual 180 e as imagens de referência 182 e 184. Como um caso especial, quando a imagem atual 180 está temporariamente entre as imagens de referência 182 e 184, e a distância temporal da imagem atual 180 até as imagens de referência 182 e 184 é a mesma, a correspondência bilateral torna-se MV bidirecional baseado em espelho.
[00135] A FIG. 7 é um diagrama conceituai ilustrando conceitos relacionado com correspondência de modelo para derivar informação de movimento do bloco atual 190. Como apresentado na FIG. 7, a correspondência de modelo é utilizada para derivar informação de movimento do bloco atual 190 por encontrar a melhor correspondência entre um modelo 216 (incluindo os blocos vizinhos superiores e/ou à esquerda ao bloco atual 190) na imagem atual 210 e um ou mais modelos de referência 218, 220, 222 e 224 (cada um possuindo o mesmo tamanho como o modelo 216) em uma ou mais imagens de referências 212 e 214. O codificador de vídeo 20 e o decodificador de vídeo 30 podem
Petição 870190080478, de 19/08/2019, pág. 71/150
63/100 utilizar um dos blocos de referência 192, 194, 196 e 198 para predizer o bloco atual 190 (de acordo com os vetores de movimento respectivos 200, 202, 204 e 206) para o qual o modelo correspondente dos modelos de referência 218, 220, 222 e 224 corresponde mais proximamente ao modelo 216. Em vários exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem utilizar dois dos vetores
de movimento 200, 202, 204 e 206, por exemplo, para bi-
predição. [00136] 0 codificador de vídeo 20 pode
determinar se deve utilizar o modo de mesclagem FRUC para
uma CU de acordo com uma seleção de custo de distorção de taxa (RD), como feito para o candidato a mesclagem normal. Isto é, o codificador de vídeo 20 pode comparar que os dois modos de correspondência (correspondência bilateral e correspondência de modelos) que são ambos verificados para uma CU utilizando a seleção de custo de RD. O codificador de vídeo 20 pode selecionar o modo levando ao custo mínimo de RD e adicionalmente comparar o custo de RD para este modo com os custos para outros modos CU. Se um modo de correspondência FRUC for o mais eficiente, o codificador de vídeo 20 pode estabelecer o sinalizador FRUC como verdadeiro para a CU, e sinalizar o modo de correspondência relacionado. Do mesmo modo, o decodificador de vídeo 30 pode determinar um modo de predição de acordo com se o sinalizador FRUC está estabelecido como verdadeiro e, em caso afirmativo, qual dentre a correspondência bilateral ou a correspondência de modelos é sinalizada.
[00137] A FIG. 8 é um fluxograma ilustrando um processo de correspondência de modelos de conversão
Petição 870190080478, de 19/08/2019, pág. 72/150
64/100 ascendente de taxa de quadros (FRUC) ilustrativo. Na 5reunião JVET, o JVET-E0035 foi proposto para adicionalmente aprimorar a correspondência de Modelos FRUC. Um fluxograma do modo de correspondência de modelos FRUC existente é apresentado na FIG. 8. Na primeira etapa, um modelo To (e sua informação de movimento correspondentes MVO) é encontrado para corresponder com o modelo atual Tc do bloco atual a partir das imagens de referência da lista O (230). Na segunda etapa, o modelo Ti (e sua informação de movimento correspondente MV1) é encontrado a partir de imagens de referência da lista 1 (232). As informações de movimento obtidas MVO e MV1 são utilizadas para executar bi-predição para gerar o preditor do bloco atual (234) .
[00138] A FIG. 9 é um fluxograma ilustrando as alterações propostas ilustrativas para o processo de correspondência de modelo FRUC da FIG. 8. O codificador de video 20 e/ou o decodificador de video 30 podem executar as etapas da FIG. 9 como apresentado. O modo de correspondência de modelos FRUC existente pode ser aprimorado por introduzir a correspondência bidirecional de modelos e seleção adaptativa entre a predição unidirecional e a bi-predição. As modificações propostas relativas à FIG. 8 são destacadas com sombreado cinzento claro na FIG. 9 [00139] A correspondência de modelo bidirecional proposta é implementada baseada na correspondência de modelo unidirecional existente. Como apresentado na FIG. 9, um modelo correspondente To é primeiramente encontrado na primeira etapa da correspondência de modelos a partir de imagens de
Petição 870190080478, de 19/08/2019, pág. 73/150
65/100 referência da lista O (Nota-se que a lista O aqui é tomada somente como um exemplo) (240) . De fato, se a lista O ou a lista 1 utilizada na primeira etapa é adaptável ao custo de distorção inicial entre o modelo atual e o modelo inicial na figura de referência correspondente. O modelo inicial pode ser determinado com informação inicial de movimento do bloco atual que está disponível antes de executar a primeira correspondência de modelos. A lista de imagens de referência correspondente ao custo de distorção de modelo inicial mínimo será utilizada na primeira etapa da correspondência de modelos. Por exemplo, se o custo de distorção do modelo inicial correspondente à lista O não for maior do que o custo correspondente da lista 1, a lista O é utilizada na primeira etapa de correspondência de modelo e a lista 1 é utilizada na segunda etapa, então, o modelo atual Tc do bloco atual é atualizado (242) da seguinte maneira:
Tc-2*Tc-To [00140] Ao invés do modelo atual Tc, o modelo atual atualizado T'c é utilizado para encontrar outro modelo correspondente Ti a partir das imagens de referência da lista 1 na segunda correspondência de modelo. Como resultado, o modelo correspondente Ti é encontrado pela utilização conjunta das imagens de referência da lista 0 e da lista 1 (244) . Este processo de correspondência é chamado de correspondência de modelo bi-direcional.
[00141] A seleção proposta entre predição unidirecional e bi-predição para predição de compensação de movimento (MCP) é baseada na distorção de correspondência de modelo. Como apresentado na FIG. 9, durante a
Petição 870190080478, de 19/08/2019, pág. 74/150
66/100 correspondência de modelo, a distorção entre o modelo To e o modelo Tc (o modelo atual) pode ser calculada como custo 0, e a distorção entre o modelo Ti e o modelo T'c (o modelo atual atualizado) pode ser calculada como custo 1. Se o custo 0 é menor do que 0,5*custo 1 (ramificação SIM de 246), a predição unilateral baseada no MVO é aplicada para o modo de correspondência de modelo FRUC (250); de outro modo (ramificação NÃO de 246), o modelo de bi-predição baseado no MV 0 e no MV 1 é aplicado (248) . Note que o custo 0 é comparado com o 0,5*custo 1 já que o custo 1 indica diferença entre o modelo Ti e T'c (o modelo atual atualizado) , o qual é duas vezes a diferença entre Tc (o modelo atual) e sua predição de 0,5* (To + Ti) . Nota-se que os métodos propostos são somente aplicados para refinamento de movimento em nível PU. O refinamento de movimento em nível Sub-PU é mantido inalterado.
[00142] A FIG. 10 é um diagrama conceituai ilustrando conceitos relacionados com fluxo óptico bidirecional no JEM. O fluxo Óptico Bi-direcional (BIO) é um refinamento de movimento no tocante a pixels o qual é executado na parte de cima da compensação de movimento no tocante a bloco em um caso de bi-predição. Já que o mesmo é utilizado para compensar movimento refinado dentro de um bloco, permitir BIO pode resultar em ampliar o tamanho de bloco para compensação de movimento. O refinamento de movimento em nível de amostra não requer busca ou sinalização exaustiva, já que existe uma equação explicita que dá o vetor de movimento refinado para cada amostra.
[00143] Seja Τ(λ) um valor de luminância a partir da referencia k(k=0,l) após a compensação de
Petição 870190080478, de 19/08/2019, pág. 75/150
67/100 aw/a-, movimento do bloco, e ' são componentes horizontal e vertical do gradiente I<k) respectivamente. Assumindo que o fluxo óptico é valido, o campo de vetor de movimento (vx, vy) é dado por uma equação aw/a+v.aw/ar+r^/w (i) [00144] Combinando a equação de fluxo óptico com a interpelação de Hermite para a trajetória de movimento de cada amostra, obtém-se um polinômio único de terceira ordem que corresponde tanto aos valores de função I(k) e como às derivadas Λ- > <· nas extremidades. O valor deste polinômio em t = 0 é a predição BIO:
preíL· * 1/2·(/^ +/í0 +·κ/24^ί11/&“^/άϊ)+ν * iMiJ i \ .5-f \ J i U f f Kj \ l í · U f jf (2) [00145] Aqui Tq e Ti denotam a distância para quadros de referência como apresentado na FIG. 10. As distâncias To e Ti são calculadas utilizando valores POC relativos à imagem B 260 para a imagem RefO 262 e a imagem de Refl 264: To = POC (atual) - POC (RefO), Ti = POC (Refl) - POC (atual) . Se ambas as predições vierem a partir da mesma direção do tempo (tanto a partir do passado quanto a partir do futuro), então os sinais são diferentes To · Ti < 0. Neste caso, o BIO é aplicado somente se a predição não vier do mesmo momento de tempo (το Ti) , ambas as regiões referenciadas possuírem movimento diferente de zero (MVx o, MVy o, MVx i, MVy i Φ 0) , e os vetores de movimento do bloco forem proporcionais à distância de tempo (MVx ο/MVx i = MVy 0/MVy ! = - To/τι) ·
Petição 870190080478, de 19/08/2019, pág. 76/150
68/100 [00146] O campo do vetor de movimento (vx, vy) é determinado por minimizar a diferença Ά entre os valores nos pontos A e B (intersecção da trajetória de movimento e os planos de referência na Fig. 6) . O modelo utiliza apenas o primeiro termo linear da expansão local de Taylor para Δ:
Δ ~(/ - “A+1 f Φ'| [00147] Todos os valores em (1) dependem da localização da amostra (i’ , j' ) , a qual foi omitida até o momento. Assumindo que o movimento é consistente no circundante, minimizamos Δ dentro da (2M + 1) x (2M + 1) janela quadrada Ω centrada no ponto atualmente predito (i, j) :
(vvs?J-argtmn (4) [00148] Para este problema de otimização, uma solução, uma solução simplificada é utilizada, fazendo a primeira minimização na vertical e, em seguida, nas direções horizontais. Isso resulta em
Vj. s ($! f r) > m? cUp3 thBIO, ; θ (5)
- (% + r) > m? ctip3 (.-thBÍO, thBÍO, - : 0 (6) onde,
Petição 870190080478, de 19/08/2019, pág. 77/150
69/100 ·*ι = Σ(ν/!,,/&+«. - yÚ - /(“T,a */&+r>’7&) ' i.S>
’1» Σ^ϊ*^+h 01'Ήη'7’/Φ+r. h'h« «, - Σ(η a»/^« £(?· +
[.-:·+ [t>
(7) [00149] De modo a evitar a divisão por zero ou por um valor muito pequeno, os parâmetros de regularização r e m são introduzidos nas equações (2), (3).
r = 500-4tí-8 (8) m ~ 700 4d8 (9) [00150] Aqui D é a profundidade de bit interna do video de entrada.
[00151] Em alguns casos, o regimento MV da BIO pode não ser confiável devido ao ruído ou ao movimento irregular. Portanto, na BIO, a magnitude do regimento MV é cortada para um algum limite thBIO. O valor limite é determinado baseado em se de todas as imagens de referência da imagem atual são todas a partir de uma direção. Se todas as imagens de referência das imagens atuais da imagem atual forem a partir de uma direção, o valor do limite é estabelecido para 12 x 214~d, caso contrário, será estabelecido para 12 x 213~d.
[00152] Os gradientes para BIO são calculados ao mesmo tempo com a interpolação de compensação de movimento utilizando operações consistentes com o processo de compensação de movimento HEVC (FIR separável em 2D). A entrada para esta FIR separável em 2D é a mesma amostra de quadro de referência que para o processo de compensação de movimento e a posição fracionária (fracX, fracY) de acordo
Petição 870190080478, de 19/08/2019, pág. 78/150
70/100 com a parte fracionária do vetor de movimento do bloco. No caso do sinal de gradiente horizontal 31/dx primeiro interpelado verticalmente utilizando BlOfílterS correspondente à posição fracionária fracY com deslocamento de retirada de dimensionamento d-8, então o filtro de gradiente BIOfílterG é aplicado na direção horizontal correspondente à posição fracionária fracX com deslocamento de retirada de dimensionamento por 18-d. No caso do gradiente vertical o primeiro filtro de gradiente é aplicado verticalmente utilizando BIOfílterG correspondente à posição fracionária fracY com deslocamento de retirada de dimensionamento d-8, então o deslocamento de sinal é executado utilizando BlOfílterS na direção horizontal correspondente à posição fracionária fracX com deslocamento de retirada de dimensionamento por 18-d. O comprimento do filtro de interpelação para cálculo de gradientes BIOfílterG e deslocamento de sinal BIOfilterF é mais curto (6 derivações) de modo a manter uma complexidade razoável. A Tabela 1 apresenta os filtros utilizados para cálculo de gradientes para diferentes posições fracionárias do vetor de movimento de bloco em ΒΙΟ. A Tabela 2 apresenta os filtros de interpelação utilizados para geração de sinal de predição em BIO.
[00153] A FIG. 11 é um diagrama conceituai ilustrando um exemplo de cálculo de gradiente para um bloco 8x4. Para um bloco atual 8 x 4 270, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) busca os preditores com movimento compensado e calcula os gradientes horizontais / verticais (HOR / VER) de todos os pixels dentro do bloco
Petição 870190080478, de 19/08/2019, pág. 79/150
71/100
270 atual, bem como as duas linhas externas de pixels, porque resolver vx e vy para cada pixel precisa dos valores de gradiente HOR / VER e os preditores com movimento compensado dos pixels dentro da janela Ω centrada em cada pixel, como apresentado na equação (4) . Além disso, no JEM, o tamanho dessa janela é estabelecido para 5 x 5. Portanto, o codificador de video busca os preditores com movimento compensado e calcula os gradientes para as duas linhas externas de pixels em torno dos pontos A 272 e B 274 .
Tabela 1: Filtros para cálculo de gradientes na BIO
Posição Fracionária Filtro de Interpolação para gradiente (BlOfilterG)
0 { 8, -39, -3, 46, -17, 5}
1/16 {8, -32, -13, 50, -18, 5}
1/8 { 7, -27, -20, 54, -19, 5}
3/16 { 6, -21, -29, 57, -18, 5}
1/4 { 4, -17, -36, 60, -15, 4}
5/16 { 3, -9, -44, 61, -15, 4}
3/8 { 1, -4, -48, 61, -13, 3 }
7/16 { 0, 1, -54, 60, -9, 2 }
1/2 { 1, 4, -57, 57, -4, 1 }
Tabela 2: Filtros de Interpolação para geração de sinal de predição na BIO
Posição Fracionár ia Filtro de Interpolação para sinal de predição (BlOfilterS)
{ o, o, 64, o, o, 0}
1/16 { 1, -3, 64, 4, -2, 0}
1/8 { 1, -6, 62, 9, -3, 1 }
3/16 { 2, -8, 60, 14, -5, 1 }
1/4 { 2, -9, 57, 19, -7, 2}
5/16 { 3, -10, 53, 24, -8, 2}
3/8 { 3, -11, 50, 29, -9, 2}
Petição 870190080478, de 19/08/2019, pág. 80/150
72/100
7/16 { 3, -11, 44, 35, -10, 3 }
1/2 { 1, -7, 38, 38, -7, 1 }
[00154] No JEM, a BIO é aplicada para todos os blocos preditos bidirecionais quando as duas predições são a partir de imagens de referência diferentes. Quando o LIC é permitido para uma CU, a BIO está desativada.
[00155] A FIG. 12 é um diagrama conceituai ilustrando conceitos relacionados com a derivação de vetor de movimento no lado do decodificador (DMVD) proposta baseada na correspondência bilateral de modelos. Um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode gerar o modelo bilateral 308 como a combinação ponderada de dois blocos de predição 292 e 298, a partir do MV inicial 300 da lista O e do MV 302 da lista 1, respectivamente, como apresentado na FIG. 12 .
[00156] O codificador de vídeo (codificador de vídeo 20 ou o decodificador de vídeo 30) pode continuar a operação de correspondência de modelo, a qual inclui calcular as medidas de custo entre o modelo gerado 308 e a região de amostra (ao redor do bloco de predição inicial) nas imagens de referência 312 e 314. Para cada uma das imagens de referência 312 e 314, o codificador de vídeo pode determinar que o MV que produz o custo mínimo do modelo é o MV atualizado dessa lista para substituir o original. Finalmente, o codificador de vídeo utiliza os dois novos MVs, isto é, o MV 304 e o MV 306, como apresentado na FIG. 12, para bi-predição regular a partir dos blocos correspondentes 294 e 296. Como é comumente
Petição 870190080478, de 19/08/2019, pág. 81/150
73/100 utilizado na estimativa de movimento de correspondência de blocos, a soma das diferenças absolutas (SAD) pode ser utilizada como medida de custo.
[00157] O codificador de vídeo 20 e o codificador de vídeo 30 podem aplicar a derivação de vetor de movimento no lado do decodificador (DMVD) para modo de mesclagem de bi-predição, com uma a partir da imagem de referência no passado e a outra a partir da imagem de referência no futuro, sem a transmissão de elemento de sintaxe adicional a partir do codificador de vídeo 20 para o decodificador de vídeo 30. Em JEM4.0, quando LIC, afinidade, candidato de mesclagem sub-CU ou FRUC é selecionado para uma CU, DMVD não é aplicada.
[00158] As FIGs. 13A e 13B são diagramas conceituais ilustrando conceitos relacionados com a compensação de movimento de bloco sobreposto (OBMC) no JEM. A OBMC tem sido utilizada para as primeiras gerações de padrões de vídeo, por exemplo, como em H.2 63. No JEM, a OBMC é executada para todos os limites de bloco com movimento compensado (MC), exceto os limites à direita e inferior de uma CU. Além disso, é aplicado para os componentes de luma e de croma. No JEM, um bloco MC corresponde a um bloco de codificação. Quando uma CU é codificada com o modo sub-CU (inclui o modo de mesclagem de sub-CU, Afim e modo FRUC, cada sub-bloco da CU é um bloco MC) . Para processar os limites da CU de maneira uniforme, a OBMC é executada em nível de sub-bloco para todos os limites do bloco MC, onde o tamanho do sub-bloco estabelecido igual a 4 x 4, como ilustrado na Figura 13. Por exemplo, um codificador de vídeo, tal como o
Petição 870190080478, de 19/08/2019, pág. 82/150
74/100 codificador de video 20 ou o decodificador de video 30, pode executar a OBMC no sub-bloco atual 322 da FIG. 3A utilizando vetores de movimento do sub-bloco vizinho acima 324 e/ou do sub-bloco vizinho esquerdo 326.
[00159] Quando a OBMC é aplicada ao sub-bloco atual, além de vetores de movimento atuais, dos vetores de movimento de quatro sub-blocos vizinhos conectados, se disponíveis e não idênticos ao vetor de movimento do subbloco atual, também são utilizados para derivar o bloco de predição para o sub-bloco atual. Estes vários blocos de predição baseados em vários vetores de movimento são combinados para gerar o sinal de predição final do subbloco atual.
[00160] Como apresentado na FIG. 13B, um bloco de predição baseado em vetores de movimento de um sub-bloco vizinho é denotado como PN, com N indicando um indicio para o sub-bloco vizinho acima 332, sub-bloco abaixo 338, o subbloco à esquerda 336 e o sub-bloco à direita 334, e um bloco de predição baseado em vetores de movimento do subbloco atual 330 denominado como Pc. Quando PN é baseado na informação de movimento de um sub-bloco vizinho que contém a mesma informação de movimento para o sub-bloco atual, a OBMC não é executada a partir do PN. Caso contrário, cada pixel de PN é adicionado ao mesmo pixel no PC, isto é, quatro fileiras / colunas de PN são adicionadas ao Pc. Os fatores de ponderação {1/4, 1/8, 1/16, 1/32} são utilizados para PN e os fatores de ponderação {3/4, 7/8, 15/16, 31/32} são utilizados para Pc. As exceções são pequenos blocos MC, (isto é, quando a altura ou largura do bloco de codificação é igual a 4 ou uma CU é codificada com o modo
Petição 870190080478, de 19/08/2019, pág. 83/150
75/100 sub-CU), para os quais apenas duas fileiras / colunas de PN são adicionadas ao Pc. Neste caso, os fatores de ponderação {1/4, 1/8} são utilizados para PN e os fatores de ponderação {3/4, 7/8} são utilizados para o Pc. Para PN gerado baseado em vetores de movimento de sub-bloco verticalmente (horizontalmente) vizinho, os pixels na mesma fileira (coluna) de PN são adicionados ao Pc com um mesmo fator de ponderação. Nota-se que a BIO também é aplicada para a derivação do bloco de predição PN.
[00161] As FIGS. 14A e 14D são diagramas conceituais ilustrando as ponderações OBMC. Em particular, a FIG. 14A ilustra um sub-bloco acima para predição estendida, a FIG. 14B ilustra um sub-bloco à esquerda para predição estendida, a FIG. 14C ilustra um sub-bloco abaixo para predição estendida, e a FIG. 14D ilustra um sub-bloco à direita para predição estendida.
[00162] No JEM, para uma CU com tamanho menor ou igual a 256 amostras de luma, um sinalizador em nivel de CU é sinalizado para indicar se a OBMC é aplicada ou não para a CU atual. Para as CUs com tamanho maior do que 256 amostras de luma ou não codificadas com o modo AMVP, a OBMC é aplicada por padrão. O codificador de video 20 pode levar em conta o impacto da OBMC em uma CU durante o estágio de estimativa de movimento, conforme discutido acima. O codificador de video 20 pode utilizar o sinal de predição pro utilizar as informações de movimento do bloco vizinho superior e do bloco vizinho à esquerda para compensar os limites superior e à esquerda do sinal original da CU atual, e ,depois aplicar o processo de estimativa de movimento normal.
Petição 870190080478, de 19/08/2019, pág. 84/150
76/100 [00163] Os métodos convencionais relacionados com a DMVD (BIO, Correspondência Bilateral FRUC, Correspondência de Modelos FRUC, Correspondência de Modelos Bilaterais, dentre outros) proporcionam reduções significativas na taxa de bits. Entretanto, algumas informações podem não ser utilizadas em abordagens convencionais. Esta revelação descreve várias técnicas e isso pode adicionalmente aprimorar a DMVD, a qual pode ser executada pelo codificador de vídeo 20 e/ou pelo decodificador de vídeo 30.
[00164] As FIGS. 15A e 15B são diagramas conceituais ilustrando exemplos de áreas estendidas 352 e 356 para um indício de pixels de blocos atuais 350 e 354, respectivamente. Quando um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) gera um indício de pixels a partir de blocos com movimento compensado (MC), o codificador de vídeo pode estender o tamanho do indício de pixels por buscar e obter mais pixels de referência. Por exemplo, se o tamanho do bloco atual for Μ x N, o codificador de vídeo pode derivar (Μ + I) x (N + J) blocos MV como o indício de pixels. Além disso, a área estendida pode ser de qualquer forma. Por exemplo, como apresentado na FIG. 15A, a área estendida 352 é a área ao redor do bloco atual 350. Como outro exemplo, a área estendida pode ser assimétrica. Por exemplo, como apresentado na FIG. 15B, a área estendida 356 é assimétrica ao bloco atual 354.
[00165] Além disso, a área estendida também pode ser irregular, como apresentado na FIG. 16. A FIG. 16 é um diagrama conceituai ilustrando outro exemplo da área
Petição 870190080478, de 19/08/2019, pág. 85/150
77/100 estendida 360 para o bloco atual 358.
[00166] As áreas estendidas das FIGS. 15 e 16 podem servir ao propósito dos modelos utilizados pelo método de Correspondência de Modelo FRUC como discutido acima. Nota-se que quando o codificador de vídeo (por exemplo, codificador de vídeo 20 ou o decodificador de vídeo 30) deriva o indício de pixels a partir da imagem
atual, os pixels dentro da área estendida podem ser os
pixels reconstruídos vizinhos ou os pixels de predição com
movimento compensado.
[00167] Em outro exemplo, o codificador de
vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode decidir incluir uma área estendida específica a partir de cima/à direita/e baixo/à esquerda. Se a oclusão de objeto ocorrer em uma direção específica, o codificador de vídeo utiliza um valor QP diferente a partir de blocos vizinhos específicos, ou quando um bloco vizinho tem a iluminação compensada sem resíduo, o codificador de vídeo pode detectar esses eventos por calcular um valor SAD (ou SAD com média removida) com e sem o modelo específico. Se o valor SAD acumulado por incluir o modelo específico exceder um limite préestabelecido, o codificador de vídeo pode optar por não incluir o modelo específico no indício de pixel. Alternativamente, a seleção da área estendida específica pode ser sinalizada a partir do lado do codificador para proporcionar um melhor equilíbrio entre a complexidade do decodificador e o desempenho da codificação.
[00168] Em outro exemplo, devido à natureza da forma flexível do bloco de predição, quando a proporção
Petição 870190080478, de 19/08/2019, pág. 86/150
78/100 entre a largura e a altura ou a proporção entre altura e largura é maior que um limite preestabelecido, a utilização do modelo pode ser restrito ao lado mais longo para uma predição mais estável. Este limite também pode ser sinalizado no fluxo de bits (por exemplo, pelo codificador de video 20 e recuperado/decodifiçado pelo decodificador de video 30).
[00169] O codificador de video 20 pode derivar qualquer informação adicional que possa ser útil para o decodificador de video 30 para aprimorar a derivação MV utilizando o indicio de pixels. Por exemplo, o codificador de video 20 pode sinalizar os deslocamentos residuais ou de pixels para o decodif icador de video 30, e o indicio de pixels pode ser aprimorado pelos deslocamentos residuais ou de pixel sinalizados para executar uma melhor derivação de MV.
[00170] Nas abordagens DMVD existentes, os vetores de movimento e direções de predição (L0, LI ou Bipredições) para um bloco ou sub-bloco são derivados tanto no lado do codificador como do decodificador com os mesmos métodos, de modo que a informação não precisa ser sinalizada no fluxo de bits. As técnicas desta revelação podem adicionalmente aprimorar estas abordagens de derivação e estender o âmbito da abordagem DMVD existente para determinar mais informação de predição no lado do decodificador (por exemplo, no decodificador de video 30 e/ou durante um processo de decodificação executado pelo codificador de video 20).
[00171] Em algumas abordagens DMVD, o codificador de video 20 e o decodificador de video 30 podem
Petição 870190080478, de 19/08/2019, pág. 87/150
79/100 determinar as direções de predição inter (L0, LI ou Bipredição) de acordo com os custos de correspondência entre diferentes direções de predição. Por exemplo, supondo que os custos de correspondência para L0, LI e Bi-predição sejam CostLO, CostLl e CostBi, respectivamente, as direções de predição podem ser determinadas por escolher a direção de predição com custo mínimo (baseado na suposição de que menor custo significa melhor resultado de correspondência). Como mencionado abaixo, o custo de correspondência pode ser a soma da diferença absoluta (SAD), a soma da soma quadrática da diferença (SSD) da diferença de transformada absoluta (SATD) ou quaisquer outros métodos de medição de custo.
[00172] Baseado em observações durante o desenvolvimento das técnicas desta revelação, verificou-se que a bi-predição geralmente proporciona resultados de predição mais estáveis. Portanto, de acordo com as técnicas desta revelação, o codificador de vídeo (por exemplo, codificador de vídeo 20 ou o decodificador de vídeo 30) pode adicionar um valor de tendência aos custos de correspondência de modo que a bi-predição seja preferencialmente selecionada. Em um exemplo, os custos para predição unidirecional da lista 0 (L0) e da lista 1 (LI) são dimensionados por um valor de dimensionamento (por exemplo, igual a 1,25) e os custos dimensionados de L0 e LI são então comparados aos custos de bi-predição para selecionar a melhor direção de predição. Em outro exemplo, os custos de bi-predição são reduzidos por um valor de dimensionamento (por exemplo, igual a 0,75) e o custo de bi-predição dimensionado é então comparado aos custos de L0
Petição 870190080478, de 19/08/2019, pág. 88/150
80/100 e de LI para selecionar a melhor direção de predição. Ο valor de dimensionamento pode ser pré-estabelecido tanto no codificador de video 20 como no decodificador de video 30 (por exemplo, como informação de configuração) ou, alternativamente, o codificador de vídeo 20 pode sinalizar o valor de dimensionamento no fluxo de bits (e o decodificador de vídeo 30 pode decodificar o valor de dimensionamento).
[00173] O codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode utilizar o indício de pixels para determinar divisões de movimento (por exemplo, 2N x 2N, 2N x N, N x 2N, N x N, dentre outros) para um bloco. Um bloco atual é dividido em sub-blocos de acordo com diferentes divisões de movimento e o custo de cada sub-bloco é calculado utilizando seu indício de pixels associado. E então, todos os custos entre as diferentes divisões de movimento são comparados entre si para determinar a melhor divisão de movimento para o bloco atual. Os deslocamentos de custo diferentes podem ser adicionados para diferentes divisões de movimento para ajustar a precisão da determinação da divisão de movimento.
[00174] As FIGs. 17A até 17C são diagramas conceituais ilustrando ponderações ilustrativas dadas a vários pixels de acordo com técnicas desta revelação. Ao calcular os custos de correspondência, a soma da diferença absoluta (SAD), a soma da diferença quadrática (SSD), a soma da diferença absoluta de transformada (SATD), a diferença absoluta média (MAD), a diferença quadrática média (MSD) ou quaisquer outros métodos de medição de custo pode ser utilizado. De acordo com as técnicas desta
Petição 870190080478, de 19/08/2019, pág. 89/150
81/100 revelação, o codificador de vídeo pode aplicar ponderações ao cálculo de custos para diferentes pixels. Exemplos são apresentados nas FIGS. 17A até 17C. Na FIG. 17A, as ponderações diferentes são dadas para diferentes fileiras e colunas do modelo 372 utilizado para o bloco atual 370 nas Correspondência de Modelo FRUC. Na FIG. 17B, a parte inferior à direita 376 do bloco atual 374 e a parte restante 378 do bloco atual 374 podem utilizar diferentes ponderações (W1 e WO, respectivamente). Nota-se que os padrões de ponderação não se restringem a estes dois exemplos das FIGS. 17A e 17B.
[00175] Além disso, as ponderações podem ser adaptáveis de acordo com as informações codificadas, tais como o tamanho de bloco e os modos codificados. Em um exemplo, a SAD ponderada, como apresentado na FIG. 17A é aplicado à Correspondência de Modelo FRUC. Para blocos com largura e altura igual ou maior do que 32, os fatores de ponderação wO = 1/2, wl = 1/4, w2 = 1/8 e w3 = 1/8 são utilizados. Para os outros blocos, são utilizados os fatores de ponderação wO = 1, wl = 1/2, w2 = 1/4 e w3 = 1/8.
[00176] Adicionalmente, as ponderações podem ser adaptáveis de acordo com o pixel reconstruído no modelo. Dependendo da variação do valor do pixel ou da estrutura de borda no modelo, as ponderações poderíam ser projetadas e aplicadas.
[00177] Em outro exemplo, a ponderação SAD (ou SAD ponderada), como apresentada na FIG. 17B é aplicada a Correspondência Bilateral FRUC ou Correspondência de Modelo Bilateral com wO = 1 e w2 = 2.
Petição 870190080478, de 19/08/2019, pág. 90/150
82/100 [00178]
Quando um codificador de vídeo, como o codificador de vídeo 20 ou o decodificador de vídeo 30, executa a derivação de vetor de movimento no lado do decodif icador (DMVD) em mais de um candidato a MV, o codificador de vídeo pode seletivamente aplicar a DMVD a conjuntos parciais de candidatos a MV de acordo com a informação codificada, tal como informações de movimento, informação de pixel, tamanho de bloco, dentre outros. Em um exemplo, quando um candidato a MV é similar ou idêntico aos candidatos a MV previamente derivados, o codificador de vídeo desativa a Correspondência de Modelos Bilateral para este candidato a MV (ou remove este candidato a MV da lista de candidatos a MV) . Mais especificamente, em alguns exemplos, quando a diferença de MV entre um candidato a MV e qualquer um dos candidatos a MV anteriormente derivados é menor do que um limite pré-estabelecido (por exemplo, 1 pixel), o codificador de vídeo desabilita a Correspondência de Modelos Bilateral para este candidato a MV (ou remove este candidato a MV a partir da lista de candidatos a MV). Observe que o codificador de vídeo pode executar o exame de diferença de MV nos componentes X e Y dos MVs L0 e LI.
[00179]
Em outro exemplo, quando a diferença de
MV entre um candidato a MV e qualquer um dos candidatos a MV previamente derivados é menor que um limite préestabelecido, o codificador de vídeo pode desabilitar Correspondência de Modelo bilateral para este candidato a MV (ou pode remover este candidato a MV a partir da lista de candidatos a MV) . Os limites para a diferença de MV podem ser diferentes para o tamanho de bloco diferente. Por exemplo, para blocos os quais são menores que amostras
Petição 870190080478, de 19/08/2019, pág. 91/150
83/100 de 64 pixels, o limite pode ser estabelecido para 1/4 de pixel; para os blocos que são menores que amostras de 256 pixels e maiores ou iguais do que amostras de 64 pixels, o limite pode ser estabelecido como pixel; para os blocos de outros tamanhos, o limite pode ser estabelecido como 1 pixel. Nota-se que o codificador de vídeo pode executar o exame de diferença de MV nos componentes X e Y dos MVs L0 e LI.
[00180] Em alguns exemplos, quando um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30, calcula os custos de correspondência, o codificador de vídeo pode calcular, por exemplo, qualquer ou todos dentre: soma de diferença absoluta (SAD), soma da soma quadrática da diferença (SSD) da diferença de transformada absoluta (SATD), a remoção média SAD, remoção média SSD ou qualquer outro método de medição de custo. De acordo com as técnicas desta revelação, o codificador de vídeo pode aplicar as ponderações ao cálculo de custos para diferentes pixels. Desta maneira, o codificador de vídeo pode ser configurado com o peso associado para cada pixel no indício de pixels para calcular o custo ponderado (o custo pode ser a diferença absoluta, a diferença quadrada, a diferença de transformada absoluta, a diferença absoluta de remoção média ou a diferença quadrada de remoção média, por exemplo). O codificador de vídeo então utiliza a soma de todo o custo ponderado dos pixels dentro do indício de Pixels para determinar as informações de movimento, tal como vetores de movimento, imagens de referência, dentre outros. Existem várias maneiras de determinar os pesos
Petição 870190080478, de 19/08/2019, pág. 92/150
84/100 conforme ilustrado abaixo. O codificador de vídeo pode aplicar uma ou todas as seguintes técnicas ilustrativas, sozinhas ou em qualquer combinação:
1. O codificador de vídeo pode determinar pesos associados de acordo com a distância entre os pixels e qualquer ponto específico (por exemplo, pontos centróides ou de canto) de um bloco atual de dados de vídeo. Em um exemplo, o codificador de vídeo atribui pesos relativamente menores aos pixels que possuem distâncias maiores a partir do ponto especificado, ou vice-versa. O codificador de vídeo pode classificar os pixels em grupos e atribuir os pontos específicos para cada grupo. Assim, o codificador de vídeo pode determinar pesos associadas para os pixel em cada grupo de acordo com a distância entre os pixels no grupo e o ponto específico do grupo do bloco atual.
2. O codificador de vídeo pode determinar pesos associados, de acordo com a distância entre os pixels e qualquer ponto específico (por exemplo, pontos centróides ou de canto) do indício de pixels, tal como o modelo utilizado na Correspondência de Modelo FRUC. Em um exemplo, o codificador de vídeo atribui pesos maiores para as distâncias maiores, ou vice-versa. Em alguns exemplos, o codificador de vídeo pode classificar os pixels em grupos e atribuir pontos específicos para cada grupo. Assim, o codificador de vídeo pode determinar pesos associados para os pixels em cada grupo de acordo com a distância entre os
Petição 870190080478, de 19/08/2019, pág. 93/150
85/100 pixels no grupo e o ponto específico do grupo do indício de pixels.
3. O codificador de vídeo pode utilizar pesos baseados em linha, como apresentadas nas FIGS. 17A e 17C, por simplificação. A FIG. 17C representa o bloco atual 380 e o indício de pixels 382. O codificador de vídeo pode ser configurado com pesos (WO até W3 na FIG. 17 A; WO até W7 na FIG. 17C) para cada linha vertical ou horizontal. Para simplicidade adicional, o codificador de vídeo pode ser configurado com o mesmo peso para várias linhas vizinhas. O tamanho do bloco atual pode ser definido como M x N, onde M e N são valores de número inteiro que podem ser, mas não são necessariamente iguais (no exemplo da Figura 17C, o bloco atual é 8 x 8) . Em um exemplo, cada linha (M / O) compartilha o mesmo peso ao longo do lado horizontal, e toda linha (N / O) compartilha o mesmo peso ao longo do lado vertical. Neste exemplo, Μ, N e O são qualquer número inteiro positivo. Em um exemplo, se O = 4, como no exemplo da FIG. 17C, WO e W1 são os mesmos; W2 e W3 são os mesmos; W4 e W5 são os mesmos; e W6 e W7 são os mesmos. Nota-se que vários pesos baseados em linha podem ser aplicados juntos. Por exemplo, o codificador de vídeo pode determinar o peso associado para cada pixel aplicando ambos os pesos baseados em linha como apresentado nas FIGS. 17A e 17C.
4. Para pesos baseados em linha, os pesos de linhas
Petição 870190080478, de 19/08/2019, pág. 94/150
86/100 vizinhas podem estar em ordem de forma monotônica crescente ou decrescente. Por exemplo, os pesos podem ser limitados como WO <= W1 = W2 <= W3 <= W4 <= W5 <= W6 <= W7 ou w0> = W1 >= W2 >= W3 >= W4 >= W5 >= W6 >= W7, para o exemplo da FIG. 17B.
5. Para alcançar simplificações adicionais, podem ser utilizados pesos baseados me região, como apresentadas na FIG. 17B. O codificador de video pode dividir os pixels em um indicio de pixels para o bloco atual 374 em várias regiões. O codificador de video pode ser configurado com um peso associado para cada região. No exemplo da FIG. 17C, é atribuída para uma primeira região 378 (região 0), um primeiro peso (WO) , onde a primeira região inclui os pixels brancos, enquanto é atribuída para uma segunda região 376 (região 1), um segundo peso (Wl), onde a segunda região inclui os pixels sombreados em cinza e delineados com uma linha tracejada.
6. As ponderações podem ser adaptativas dependendo das informações de codificação, tal como o tamanho do bloco, os modos de bloco e os pixels reconstruídos. Por exemplo, os blocos de tamanhos diferentes podem possuir conjuntos de pesos diferentes. Assim, o codificador de vídeo pode determinar as ponderações adaptativamente baseadas em qualquer um ou em todos esses fatores para um bloco atual e/ou blocos de referência utilizados na DMVD. [00181] A FIG. 18 é um diagrama conceptual
Petição 870190080478, de 19/08/2019, pág. 95/150
87/100 ilustrando outro exemplo de valores de peso aplicados ao indício de pixels 386 para o bloco atual 384. Um exemplo específico utilizando uma combinação de algumas das técnicas acima é como se segue. O bloco atual 384 é um bloco M x N neste exemplo. Neste exemplo, os pesos baseados em linha horizontal e os pesos baseados em linha vertical são ambos utilizados. Além disso, toda linha vertical (M/4) compartilha o mesmo peso ao longo do lado horizontal, e todas as linhas (N/4) compartilham o mesmo peso ao longo do lado vertical, neste exemplo. Como apresentado na FIG. 18, para os blocos com a largura e a altura igual ou maior que 8, são utilizados os fatores de ponderação wO = 1, wl = 1, w2 = 1/2 e w3 = 1/4, enquanto w'0 = 1, w ' 1 = 1/2, w'2 = 1/2 e w'3 = 0. Para os outros blocos, são utilizados os fatores de ponderação wO = 1, wl = 1/2, w2 = 1/4 e w3 = 0, enquanto w'0 = 1, w '1 = 1, w'2 = 1 e w'3 = 1.
[00182] O codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode executar um processo de filtragem (por exemplo, o filtro passa-baixa) para o indício de pixels 386 e/ou uma predição para o indício de pixels 386, para aprimorar a estabilidade de derivação. As FIGS. 19A e 19B são diagramas conceituais ilustrando um exemplo de um filtro para tal processo de filtragem. A FIG. 19A ilustra um exemplo de um filtro 3-por-3 392. Antes de aplicar o filtro 392, o codificador de vídeo (por exemplo, O codificador de vídeo 20 ou o decodificador de vídeo 30) pode preencher valores de pixels fora do indício de pixels 394, como apresentado na FIG. 19B. Ou seja, no exemplo da
Petição 870190080478, de 19/08/2019, pág. 96/150
88/100
FIG. 19B, o codificador de vídeo pode determinar os valores de preenchimento para os pixels do bloco atual 390 sombreado em cinza (os quais são o indício de pixels externos 394), com o propósito de aplicar o filtro para filtrar os valores do indício de pixels. Como apresentado na FIG. 19B, o filtro 392 é aplicado aos valores do indício de pixels 394 e os valores de preenchimento fora do indício de pixels 394 para filtrar os valores do indício de pixels 394. 0 codificador de vídeo pode combinar o filtro com o custo ponderado. Os pesos podem estar em ordem monotonicamente crescente ou decrescente. Por exemplo, os pesos podem ser limitados como W1 <= W2 <= W3, W4 <= W5 <= W6, W7 <= W8 <= W9, W1 <= W4 <= W7, W2 <= W5 <= W8, W3 <= W6 <= W9, W1 >= W2 >= W3, W4 >= W5 >= W6, W7 >= W8 >= W9, W1 >= W4 >= W7, W2 >= W5 >= W8, ou W3 >= W6 >= W9.
[00183] A FIG. 20 é um fluxograma ilustrando um método ilustrativo para codificar dados de vídeo de acordo com as técnicas desta revelação. O codificador de vídeo 20 é descrito como executando as técnicas da FIG. 20, para propósitos de exemplo, embora deva ser entendido que em outros exemplos, outros dispositivos de codificação de vídeo podem executar este ou um método similar.
[00184] Neste método, assume-se que o codificador de vídeo 20 codificou anteriormente uma ou mais imagens e recebeu um bloco atual de uma imagem atual a ser codificada. A imagem atual pode ser uma imagem P, uma imagem B ou outra imagem para a qual a predição inter esteja ativada. A unidade de seleção de modo 40 do codificador de vídeo 20 pode calcular os custos de distorção de taxa (RD) de executar vários modos de predição
Petição 870190080478, de 19/08/2019, pág. 97/150
89/100 para o bloco atual (400). A unidade de seleção de modo 40 pode então determinar que a derivação de vetor de movimento no lado do decodificador (DMVD) rende o melhor custo RD entre os modos testados e, portanto, determina a utilização da DMVD para o bloco atual (402) . Desta maneira, o codificador de vídeo 20 pode determinar que a informação de movimento do bloco atual de dados de vídeo é para ser derivada utilizando DMVD.
[00185] A unidade de seleção de modo 40 pode então sinalizar para a unidade de compensação de movimento 44 que A DMVD deve ser utilizada para predizer o bloco atual. Em resposta, a unidade de compensação de movimento 44 pode determinar um indício de pixels para o bloco atual (404) . Por exemplo, a unidade de compensação de movimento 44 pode determinar o indício de pixels utilizando uma dentre a correspondência de modelos, correspondência bilateral, correspondência de modelos bilateral, correspondência de modelos FRUC, dentre outras, como discutido acima. Em alguns exemplos, a unidade de compensação de movimento 44 pode gerar o indício de pixels utilizando várias predições de hipótese a partir de vários blocos com movimento compensado. Por exemplo, a unidade de compensação de movimento 44 pode calcular uma média ponderada dos vários blocos com movimento compensado, aplicar a compensação de movimento de bloco sobreposto (OBMC) ao indício de pixels e/ou adicionar deslocamentos aos vetores de movimento para o bloco atual e derivar os vários blocos com movimento compensado a partir dos vetores de movimento deslocados. Os vetores de movimento para o bloco atual podem ser, por exemplo, candidatos a MV
Petição 870190080478, de 19/08/2019, pág. 98/150
90/100 determinados de acordo com os modos de mesclagem e/ou AMVP (por exemplo, a partir de blocos vizinhos que são preditos utilizando a predição inter). Desta maneira, o codificador de vídeo 20 pode determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados.
[00186] A unidade de compensação de movimento 44 pode, em última instância, derivar informação de movimento utilizando o indício de pixels (406). Em geral, a informação de movimento pode incluir um ou mais vetores de movimento que se referem a um ou mais blocos de referência correspondentes ao indício de pixels. Em alguns exemplos, a unidade de compensação de movimento 44 pode determinar uma direção de predição inter (por exemplo, a predição da lista 0, da lista 1 ou a bi-predição) para a informação de movimento derivada de acordo com os custos de correspondência entre as diferentes direções de predição. Por exemplo, a unidade de compensação de movimento 44 pode selecionar uma direção de predição inter possuindo um custo de correspondência testado mais baixo. Em alguns exemplos, como discutido acima, a unidade de compensação de movimento 44 pode ponderar os custos de correspondência resultantes de modo que os custos de correspondência sejam tendidos em favor da bi-predição, por exemplo, por utilizar um peso que reduza o custo de correspondência de bi-predição e/ou utilizando pesos que aumentam o custo de correspondência da predição unidirecional. Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 pode calcular custos de correspondência entre dois ou mais
Petição 870190080478, de 19/08/2019, pág. 99/150
91/100 blocos de referência utilizando dois ou mais processos de medição de custos diferentes, e então refinar a informação de movimento derivada baseada em um custo de correspondência agregado calculado a partir dos custos de correspondência calculados utilizando os vários processos de medição de custo. Desta maneira, o codificador de vídeo 20 pode derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels.
[00187] Por fim, a unidade de compensação de movimento 44 pode predizer o bloco atual utilizando a informação de movimento derivada (408), para formar um bloco de predição para o bloco atual. A unidade de compensação de movimento 44 pode passar este bloco de predição para o somador 50, o qual subtrai o bloco de predição a partir da versão original não codificada do bloco atual (em uma base pixel a pixel), para calcular um bloco residual incluindo dados residuais para o bloco atual (410) . A unidade de processamento de transformada 52 pode então transformar o bloco residual em um domínio de transformada (por exemplo, um domínio de frequência), formando coeficientes de transformada e a unidade de quantização 54 pode quantizar os coeficientes de transformada para transformar e quantizar os dados residuais (412) . Em última análise, a unidade de codificação por entropia 56 pode codificar dados POR entropia representativos do modo de predição (por exemplo, um sinalizador FRUC e um sinalizador de modo de correspondência), bem como os coeficientes de transformada quantizados (414) .
[00188] Deve ser entendido que, embora descrito
Petição 870190080478, de 19/08/2019, pág. 100/150
92/100 como parte de um processo de codificação de vídeo, o codificador de vídeo 20 também executa um processo de decodificação. Isto é, depois de transformar e quantizar os dados residuais, a unidade de quantização inversa 58 quantiza inversamente os coeficientes de transformada quantizados para reproduzir os coeficientes de transformada. Então, a unidade de transformada inversa 60 transforma inversamente os coeficientes de transformada, para reproduzir o bloco residual. O somador 62 combina então o bloco residual com o bloco de predição, formando um bloco decodificado que pode ser armazenado em um armazenamento de imagem decodificada da memória de imagem de referência 64. Consequentemente, o processo executado pelo codificador de vídeo 20 pode ser dito como incluindo decodificação de dados de vídeo. Da mesma forma, desta maneira, o codificador de vídeo 20 pode decodificar o bloco atual utilizando a informação de movimento derivada de acordo com a DMVD.
[00189] Desta maneira, o método da FIG. 20 representa um exemplo de um método de decodificar dados de vídeo, o método incluindo determinar que a informação de movimento de um bloco atual de dados de vídeo deve ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD), determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels, e decodificar o bloco atual utilizando a informação de movimento.
Petição 870190080478, de 19/08/2019, pág. 101/150
93/100 [00190] A FIG. 21 é um fluxograma ilustrando um método ilustrativo para decodificar dados de video de acordo com as técnicas desta revelação. O decodificador de video 30 é descrito como executando as técnicas da FIG. 21, para propósitos de exemplo, embora deva ser entendido que em outros exemplos, outros dispositivos de codificação de video podem executar este ou um método similar.
[00191] Neste método, assume-se que o decodificador de video 30 decodificou anteriormente uma ou mais imagens e recebeu um bloco atual de uma imagem atual a ser decodificada. A imagem atual pode ser uma imagem P, uma imagem B ou outra imagem para a qual a predição inter está ativada. A unidade de decodificação por entropia 70 pode decodificar por entropia uma indicação de modo de predição para o bloco atual, bem como os coeficientes de transformada quantizados para o bloco atual (420). A unidade de decodificação por entropia 70 pode passar a indicação do modo de predição para a unidade de compensação de movimento 72 e os coeficientes de transformada quantizados para a unidade de quantização inversa 76. A unidade de compensação de movimento 72 pode então determinar que a derivação de vetor de movimento no lado do decodif icador (DMVD) é para ser utilizada para o bloco atual a partir da indicação do modo de predição (422) . Desta maneira, o decodificador de video 30 pode determinar que a informação de movimento do bloco atual de dados de vídeo é para ser derivada utilizando a DMVD.
[00192] A unidade de compensação de movimento 72 pode então determinar um indício de pixels para o bloco atual (424) . Por exemplo, a unidade de compensação de
Petição 870190080478, de 19/08/2019, pág. 102/150
94/100 movimento 72 pode determinar o indício de pixels utilizando um dentre a correspondência de modelo, a correspondência bilateral, a correspondência de modelos bilateral, a correspondência de modelos FRUC, dentre outros, como discutido acima. Em alguns exemplos, a unidade de compensação de movimento 72 pode gerar o indício de pixels utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado. Por exemplo, a unidade de compensação de movimento 72 pode calcular uma média ponderada dos vários blocos com movimento compensado, aplicar compensação de movimento de bloco sobreposto (OBMC) para o indício de pixels e/ou adicionar deslocamentos aos vetores de movimento para o bloco atual e derivar os vários blocos com movimento compensado a partir dos vetores de movimento deslocados. Os vetores de movimento para o bloco atual podem ser, por exemplo, candidatos a MV determinados de acordo com os modos de mesclagem e/ou AMVP (por exemplo, a partir de blocos vizinhos que são preditos utilizando predição inter). Deste modo, o decodificador de vídeo 30 pode determinar um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados.
[00193] A unidade de compensação de movimento 72 pode, em última instância, derivar informação de movimento utilizando o indício de pixels (426). Em geral, a informação de movimento pode incluir um ou mais vetores de movimento que se referem a um ou mais blocos de referência correspondentes ao indício de pixels. Em alguns exemplos, a unidade de compensação de movimento 72 pode
Petição 870190080478, de 19/08/2019, pág. 103/150
95/100 determinar uma direção de predição inter (por exemplo, predição a partir da lista 0, da lista 1 ou de bi-predição) para a informação de movimento derivada de acordo com os custos de correspondência entre as diferentes direções de predição. Por exemplo, a unidade de compensação de movimento 72 pode selecionar uma direção predição inter possuindo um menor custo de correspondência testado. Em alguns exemplos, como discutido acima, a unidade de compensação de movimento 72 pode ponderar os custos de correspondência resultantes de modo que os custos de correspondência sejam tendidos em favor da bi-predição, por exemplo, por utilizar um peso que reduza o custo de correspondência de bi-predição e/ou utilizando pesos que aumentam o custo de correspondência da predição unidirecional. Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode calcular os custos de correspondência entre dois ou mais blocos de referência utilizando dois ou mais processos de medição de custos diferentes e, então, refinar a informação de movimento derivada baseada em um custo de correspondência agregado calculado a partir dos custos de correspondência calculados utilizando os vários processos de medição de custo. Desta maneira, o decodificador de vídeo 30 pode derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels.
[00194] Por fim, a unidade de compensação de movimento 72 pode predizer o bloco atual utilizando a informação de movimento derivada (428), para formar um bloco de predição para o bloco atual. A unidade de compensação de movimento 72 pode passar este bloco de
Petição 870190080478, de 19/08/2019, pág. 104/150
96/100 predição para o somador 80. Enquanto isso, a unidade de quantização inversa 76 quantiza inversamente os coeficientes de transformada quantizados para reproduzir coeficientes de transformada para o bloco atual, e a unidade de transformada inversa 78 transforma inversamente os coeficientes de transformada para reproduzir um bloco residual para o bloco atual (430) . A unidade de transformada inversa 78 passa o bloco residual para o somador 80, o qual adiciona o bloco de predição ao bloco residual (em uma base de pixel a pixel) (432), para decodificar o bloco atual.
[00195] Desta maneira, o método da FIG. 21 representa um exemplo de um método de decodificação de dados de vídeo, o método incluindo determinar que a informação de movimento de um bloco atual de dados de vídeo é para ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD), determinar um indício de pixels para o bloco atual, o indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados, derivar a informação de movimento para o bloco atual de acordo com a DMVD do indício de pixels, e decodificar o bloco atual utilizando a informação de movimento.
[00196] É para ser reconhecido que, dependendo do exemplo, alguns atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser executados em uma sequência diferente, podem ser adicionados, mesclados ou deixados de lado completamente (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática
Petição 870190080478, de 19/08/2019, pág. 105/150
97/100 das técnicas) . Além disso, em alguns exemplos, atos ou eventos podem ser executados concorrentemente, por exemplo, através de processamento multitarefa, processamento de interrupção ou vários processadores, ao invés de sequencialmente.
[00197] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação das mesmas. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, a qual corresponde a um meio tangível, tal como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, a mídia legível por computador pode geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que não é temporária ou (2) um meio de comunicação, tal como um sinal ou uma onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[00198] A título de exemplo, e não de
Petição 870190080478, de 19/08/2019, pág. 106/150
98/100 limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que pode ser utilizado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que possa ser acessadas por um computador. Além disso, qualquer conexão é apropriadamente denominada um meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um website, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias não cabeadas tais como infravermelho, rádio e microondas, então o cabo coaxial, o cabo de fibra ótica, par trançado, a linha de assinante digital (DSL), ou as tecnologias não cabeadas tais como infravermelho, rádio e microondas estão incluídos na definição de meio. 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, ondas portadoras, sinais e outra mídia temporária, mas ao invés disso, são direcionadas para mídia não temporária de armazenamento tangível. Disco magnético e disco ótico, como utilizado neste documento, incluem disco ótico compacto (CD), disco ótico a laser, disco ótico, disco ótico versátil digital (DVD), disco ótico flexível e disco ótico Blu-ray, onde discos magnéticos normalmente reproduzem dados magneticamente, enquanto disco óticos reproduzem dados opticamente com lasers. Combinações do dito acima também devem ser incluídas no
Petição 870190080478, de 19/08/2019, pág. 107/150
99/100 escopo de mídia legível por computador.
[00199] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, sistemas de circuitos de processamento (incluindo sistemas de circuitos de função fixa e/ou sistemas de circuitos de processamento programáveis), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs) ou outros sistemas de circuitos lógicos ou discretos integrados equivalentes. Portanto, o termo processador, como utilizado neste documento, pode referir-se a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para implementação das técnicas descritas. Adicionalmente, em alguns aspectos, a funcionalidade descrita neste documento pode ser proporcionada dentro de módulos dedicados de hardware e/ou de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas poderíam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00200] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone não cabeado, 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 nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, mas não necessariamente requerem realização por diferentes unidades de hardware. Pelo contrário, como descrito acima, as várias unidades
Petição 870190080478, de 19/08/2019, pág. 108/150
100/100 podem ser combinadas em uma unidade de hardware de codec ou proporcionadas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequados.
[00201] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações seguintes.

Claims (13)

  1. REIVINDICAÇÕES
    1. Método de decodificação de dados de vídeo, o método compreendendo:
    determinar que a informação de movimento de um
    bloco atual de dados de vídeo é para ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD); determinar um indício de pixels para o bloco
    atual, o indício de pixels compreende dados de pixels obtidos a partir de um ou mais grupos de pixels previamente decodificados;
    derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels; e decodificar o bloco atual utilizando a informação de movimento.
  2. 2. Método, de acordo com a reivindicação 1, em que determinar o indício de pixels compreende gerar o indício de pixels utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado.
  3. 3. Método, de acordo com a reivindicação 2, em que gerar o indício de pixels compreende calcular uma média ponderada dos vários blocos com movimento compensado.
    4 . Método, de acordo com a reivindicação 2, em que gerar o indício de pixels compreende aplicar a compensação de movimento de bloco sobreposto para gerar o
    indício de pixels.
    5. Método, de acordo com a reivindicação 2, adicionalmente compreendendo:
    adicionar deslocamentos aos vetores de movimento do bloco atual; e
    Petição 870190080478, de 19/08/2019, pág. 110/150
    2/13 derivar os vários blocos com movimento compensado a partir dos vetores de movimento deslocados.
    6. Método, de acordo com a reivindicação 1, adicionalmente compreendendo determinar uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre diferentes direções de predição, em que derivar a informação de movimento compreende derivar a informação de movimento de acordo com a DMVD de modo que a informação de movimento possui a direção de predição inter determinada.
    7. Método, de acordo com a reivindicação 6, em que determinar a direção de predição inter compreende a selecionar a direção de predição inter possuindo o menor custo de correspondência.
    8. Método, de acordo com a reivindicação 6, em que determinar a direção de predição inter compreende selecionar uma dentre a predição a partir da lista 0, predição a partir da lista 1, ou a bi-predição.
    9. 0 método, de acordo com a reivindicação 6, adicionalmente compreendendo tender os custos correspondentes em favor da bi-predição.
    10. Método, de acordo com a reivindicação 9, em que tender compreende dimensionar custos de ponderação associados à predição unidirecional para cima por um valor de dimensionamento.
    11. Método, de acordo com a reivindicação 10, em que o valor de dimensionamento compreende 1,25.
    12. 0 método, de acordo com a reivindicação 9, em que tender compreende dimensionar para baixo um custo de ponderação associado com a bi-predição para baixo por um
    Petição 870190080478, de 19/08/2019, pág. 111/150
    3/13 valor de dimensionamento.
    13. Método, de acordo com a reivindicação 12, em que o valor de dimensionamento compreende 0,75.
    14. Método, de acordo com a reivindicação 1, em que o indício de pixels compreende dados de pixel obtidos a partir de um primeiro bloco de uma primeira imagem de referência e de um segundo bloco de uma segunda imagem de referência, em que a primeira imagem de referência é diferente da segunda imagem de referência, e em que derivar as informações de movimento compreende:
    calcular um custo de correspondência entre o primeiro bloco e o segundo bloco, em que o calcular os custos de correspondência compreende:
    aplicar um primeiro peso a uma primeira medição de custo para um primeiro conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e aplicar um segundo peso, diferente do primeiro peso, a uma segunda medição de custo para um segundo conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e refinar a informação de movimento baseado no custo de correspondência.
    15. Método, de acordo com a reivindicação 14, adicionalmente compreendendo:
    determinar o primeiro peso baseado na distância entre o primeiro conjunto de pixels correspondentes e um primeiro ponto específico do bloco atual; e determinar o segundo peso baseado em uma distância entre o segundo conjunto de pixels correspondentes e um segundo ponto específico do bloco
    Petição 870190080478, de 19/08/2019, pág. 112/150
  4. 4/13 atual.
    16. Método, de acordo com a reivindicação 15, em que o ponto específico compreende um dentre um centróide do bloco atual ou um canto do bloco atual.
    17. Método, de acordo com a reivindicação 14, adicionalmente compreendendo:
    determinar o primeiro peso baseado em uma distância entre o primeiro conjunto de pixels correspondentes e um primeiro ponto específico do indício de pixels; e determinar o segundo peso baseado em uma distância entre o segundo conjunto de pixels correspondentes e um segundo ponto específico do indício de pixels.
    18. Método, de acordo com a reivindicação 17, em que o ponto específico compreende um dentre um centróide do bloco atual ou um canto do bloco atual.
    19. Método, de acordo com a reivindicação 14, adicionalmente compreendendo:
    determinar o primeiro peso baseado em pelo menos uma dentre uma primeira fileira que inclui o primeiro conjunto de pixels correspondentes ou uma primeira coluna que inclui o primeiro conjunto de pixels correspondentes; e determinar o segundo peso baseado em pelo menos uma dentre uma segunda fileira que inclui o segundo conjunto de pixels correspondentes ou uma segunda coluna que inclui o segundo conjunto de pixels correspondentes.
    20. Método, de acordo com a reivindicação 14, adicionalmente compreendendo:
    determinar o primeiro peso baseado em uma
    Petição 870190080478, de 19/08/2019, pág. 113/150
  5. 5/13 primeira região que inclui o primeiro conjunto de pixels correspondentes; e determinar o segundo peso baseado em uma segunda região que inclui o segundo conjunto de pixels correspondentes.
    21. Método, de acordo com a reivindicação 1, em que derivar a informação de movimento compreende aplicar seletivamente a DMVD para um conjunto parcial de candidatos a vetor de movimento em uma lista de candidatos a vetor de movimento para o bloco atual, o método adicionalmente compreendendo determinar que um vetor de movimento da informação de movimento derivada utilizando a DMVD difere
    de pelo menos um candidato a vetor de movimento na lista de candidatos a vetor de movimento para o bloco atual por um limite antes de decodificar o bloco atual utilizando a informação de 22 . movimento. Método, de acordo com a reivindicação 1, adicionalmente compreendendo refinar iterativamente o
    indício de pixels utilizando os vetores de movimento refinados, em que refinar iterativamente compreende:
    após derivar um vetor de movimento refinado, regenerar movimento movimento um modelo refinado; e executar um utilizando o 23. Método, bilateral utilizando o vetor de refinamento adicional de vetor de modelo bilateral regenerado. de acordo com a reivindicação 1,
    adicionalmente compreendendo aplicar um ou mais filtros para o indício de pixels antes de derivar a informação de movimento do indício de pixels, em que um ou mais filtros compreendem um ou mais dentre um filtro guiado, um filtro
    Petição 870190080478, de 19/08/2019, pág. 114/150
  6. 6/13 bilateral, filtro mediano, um filtro de suavização ou um filtro de média.
    24. Método, de acordo com a reivindicação 1, em que determinar o indicio de pixels compreende gerar o indício de pixels utilizando refinamento de movimento, em que o refinamento de movimento compreende um ou mais dentre o fluxo ópticos bidirecional (BIO), a correspondência de modelos de conversão ascendente de taxa de quadros (FRUC) ou a correspondência bilateral FRUC.
    25. Método, de acordo com a reivindicação 1, em que derivar a informação de movimento compreende derivar a informação de movimento para um primeiro componente de cor do bloco atual, e em que determinar o indício de pixels compreende gerar o indício de pixels utilizando o primeiro componente de cor e um segundo componente de cor.
    26. Método, de acordo com a reivindicação 1, em que determinar o indício de pixels compreende gerar o indício de pixels para possuir um tamanho maior que um tamanho do bloco atual, em que quando um tamanho do bloco atual é M x N, onde M e N são valores de números inteiros, gerar o indício de pixels compreende gerar o indício de pixels a partir de (Μ + I) x (N + J) blocos com movimento compensado, em que I e J são valores de números inteiros.
    27. Método, de acordo com a reivindicação 1, em que decodificar o bloco atual compreende:
    predizer o bloco atual utilizando a informação de movimento para formar um bloco predito;
    decodificar os coeficientes de transformada quantizados do bloco atual;
    quantizar inversamente os coeficientes de
    Petição 870190080478, de 19/08/2019, pág. 115/150
  7. 7/13 transformada quantizados para produzir coeficientes de transformada;
    transformar inversamente os coeficientes de transformada para produzir um bloco de dados residuais; e combinar o bloco predito e o bloco de dados residuais para formar um bloco decodificado.
    28. Método, de acordo com a reivindicação 1, adicionalmente compreendendo codificar o bloco atual antes de decodificar o bloco atual.
    29. Dispositivo para decodificar dados de video, o dispositivo compreendendo:
    uma memória configurada para armazenar dados de video; e um decodificador de video implementado em sistemas de circuitos e configurado para: determinar que a informação de movimento de um bloco atual dos dados de video é para ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD); determinar um indicio de pixels para o bloco atual, o indicio de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados;
    derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indicio de pixels; e decodificar o bloco atual utilizando a informação de movimento.
    30. Dispositivo, de acordo com a reivindicação 29, em que o decodif icador de video é configurado para
    Petição 870190080478, de 19/08/2019, pág. 116/150
  8. 8/13 gerar o indício de pixels utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado.
    31. Dispositivo, de acordo com a reivindicação 29, em que o decodificador de vídeo é adicionalmente configurado para determinar uma direção de predição inter para a informação de movimento de acordo com os custos correspondência entre diferentes direções de predição, e para derivar a informação de movimento de acordo com a DMVD de modo que a informação de movimento possua a direção de predição inter determinada.
    32. Dispositivo, de acordo com a reivindicação 29, em que o indício de pixels compreende dados de pixel obtidos a partir de um primeiro bloco de uma primeira imagem de referência e de um segundo bloco de uma segunda imagem de referência, em que a primeira imagem de referência é diferente da segunda imagem de referência, e em que para derivar a informação de movimento, o decodificador de vídeo é configurado para:
    calcular um custo de correspondência entre o primeiro bloco e o segundo bloco, em que, para calcular os custos de correspondência, o decodificador de vídeo é configurado para:
    aplicar um primeiro peso para uma primeira medição de custo para um primeiro conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e aplicar um segundo peso, diferente do primeiro peso, para uma segunda medição de custo para um segundo conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e
    Petição 870190080478, de 19/08/2019, pág. 117/150
  9. 9/13 refinar a informação de movimento baseado no custo de correspondência.
    33. Dispositivo, de acordo com a reivindicação 29, em que o decodificador de video é adicionalmente configurado para determinar que um vetor de movimento da informação de movimento derivada utilizando a DMVD difere de outros candidatos a vetor de movimento em uma lista de candidatos a vetor de movimento para a lista atual por um limite antes de decodificar o bloco atual utilizando a informação de movimento.
    34. Dispositivo, de acordo com a reivindicação 29, adicionalmente compreendendo um codificador de video incluindo o decodificador de video, o codificador de video implementado no sistema de circuitos.
    35. Dispositivo, de acordo com a reivindicação 29, adicionalmente compreendendo uma video configurado para exibir os dados de video decodificados.
    36. Dispositivo, de acordo com a reivindicação 29, em que o dispositivo compreende uma ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de broadcast ou um decodificador de sinais.
    37. Dispositivo para decodificar dados de video, o dispositivo compreendendo:
    meio para determinar que a informação de movimento de um bloco atual de dados de video é para ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD);
    meio para determinar um indicio de pixels para o bloco atual, o indicio de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels
    Petição 870190080478, de 19/08/2019, pág. 118/150
  10. 10/13 previamente decodificados;
    meio para derivar a informação de movimento para o bloco atual de acordo com a DMVD a partir do indício de pixels; e meio para decodificar o bloco atual utilizando a informação de movimento.
    38. Dispositivo, de acordo com a reivindicação 37, em que o meio para determinar o indício de pixels compreendem meio para gerar o indício de pixels utilizando as várias predições de hipóteses a partir de vários blocos com movimento compensado.
    39. Dispositivo, de acordo com a reivindicação 37, adicionalmente compreendendo meio para determinar uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre as diferentes direções de predição, em que o meio para derivar a informação de movimento compreende meio para derivar a informação de movimento de acordo com a DMVD de modo que a informação de movimento possua a direção de predição inter determinada.
    40. Dispositivo, de acordo com a reivindicação 37, em que o indício de pixels compreende dados de pixel obtidos a partir de um primeiro bloco de uma primeira imagem de referência e de um segundo bloco de uma segunda imagem de referência, em que a primeira imagem de referência é diferente da segunda imagem de referência, e em que o meio para derivar a informação de movimento compreende:
    meio para calcular um custo de correspondência entre o primeiro bloco e o segundo bloco, em que os meio
    Petição 870190080478, de 19/08/2019, pág. 119/150
  11. 11/13 para calcular os custos de correspondência compreende:
    meio para aplicar um primeiro peso para uma primeira medição de custo para um primeiro conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e meio para aplicar um segundo peso, diferente do primeiro peso, para uma segunda medição de custo para um segundo conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e meio para refinar a informação de movimento baseado no custo de correspondência.
    41. Meio de armazenamento legível por computador tendo armazenado nele instruções que, quando executadas, fazem com que um processador:
    determine que a informação de movimento de um bloco atual de dados de vídeo é para ser derivada utilizando a derivação de vetor de movimento no lado do decodificador (DMVD);
    determine um indício de pixels para o bloco atual, o indício de pixels compreendendo dados de pixel obtidos a partir de um ou mais grupos de pixels previamente decodificados;
    derive a informação de movimento para o bloco atual de acordo com a DMVD do indício de pixels; e decodifique o bloco atual utilizando a informação de movimento.
    42. Meio de armazenamento legível por computador, de acordo com a reivindicação 41, em que as instruções que fazem com que o processador determine o indício de pixels compreendem instruções que fazem com que o processador gere
    Petição 870190080478, de 19/08/2019, pág. 120/150
  12. 12/13 o indício de pixels utilizando várias predições de hipóteses a partir de vários blocos com movimento compensado.
    43. Meio de armazenamento legível por computador, de acordo com a reivindicação 41, adicionalmente compreendendo instruções que fazem com que o processador determine uma direção de predição inter para a informação de movimento de acordo com os custos de correspondência entre diferentes direções de predição, em que as instruções que fazem com que o processador derive a informação de movimento compreendem instruções que fazem com que o processador derive a informação de movimento de acordo com a DMVD de modo que a informação de movimento possua a direção de predição inter determinada.
    44. Meio de armazenamento legível por computador, de acordo com a reivindicação 41, em que o indício de pixels compreende os dados de pixel obtidos a partir de um primeiro bloco de uma primeira imagem de referência e de um segundo bloco de uma segunda imagem de referência, em que a primeira imagem de referência é diferente da segunda imagem de referência, e em que as instruções que fazem com que o processador obtenha a informação de movimento compreendem instruções que fazem com que o processador:
    calcule um custo de correspondência entre o primeiro bloco e o segundo bloco, em que as instruções que fazem com que o processador calcule os custos de correspondência compreendem instruções que fazem com que o processador:
    aplique um primeiro peso para uma primeira medição de custo para um primeiro conjunto de pixels
    Petição 870190080478, de 19/08/2019, pág. 121/150
  13. 13/13 correspondentes do primeiro bloco e do segundo bloco; e aplique um segundo peso, diferente do primeiro peso, para uma segunda medição de custo para um segundo conjunto de pixels correspondentes do primeiro bloco e do segundo bloco; e refine a informação de movimento baseado no custo de correspondência.
BR112019017252A 2017-02-21 2018-02-21 derivando informação de vetor de movimento em um decodificador de vídeo BR112019017252A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762461729P 2017-02-21 2017-02-21
US201762463266P 2017-02-24 2017-02-24
US201762472919P 2017-03-17 2017-03-17
US15/900,649 US10701366B2 (en) 2017-02-21 2018-02-20 Deriving motion vector information at a video decoder
PCT/US2018/019018 WO2018156628A1 (en) 2017-02-21 2018-02-21 Deriving motion vector information at a video decoder

Publications (1)

Publication Number Publication Date
BR112019017252A2 true BR112019017252A2 (pt) 2020-04-14

Family

ID=63166227

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019017252A BR112019017252A2 (pt) 2017-02-21 2018-02-21 derivando informação de vetor de movimento em um decodificador de vídeo

Country Status (7)

Country Link
US (1) US10701366B2 (pt)
EP (1) EP3586512A1 (pt)
CN (1) CN110301135B (pt)
BR (1) BR112019017252A2 (pt)
SG (1) SG11201906286QA (pt)
TW (1) TWI717586B (pt)
WO (1) WO2018156628A1 (pt)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102270228B1 (ko) * 2016-07-12 2021-06-28 한국전자통신연구원 영상 부호화/복호화 방법 및 이를 위한 기록 매체
US10750203B2 (en) * 2016-12-22 2020-08-18 Mediatek Inc. Method and apparatus of adaptive bi-prediction for video coding
FR3066873A1 (fr) 2017-05-29 2018-11-30 Orange Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image
WO2018225593A1 (ja) 2017-06-05 2018-12-13 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法および復号方法
US11184636B2 (en) * 2017-06-28 2021-11-23 Sharp Kabushiki Kaisha Video encoding device and video decoding device
CN115118992B (zh) * 2017-08-22 2024-02-06 松下电器(美国)知识产权公司 图像编码器、图像解码器、和比特流生成设备
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
WO2019072370A1 (en) * 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. MEMORY ACCESS WINDOW AND FILLING FOR VECTOR MOVEMENT REFINEMENT
CN111201792B (zh) * 2017-10-09 2022-06-14 华为技术有限公司 指向分数像素点位置的运动矢量的修正运动矢量
EP3682637A1 (en) 2017-10-09 2020-07-22 ARRIS Enterprises LLC Adaptive unequal weight planar prediction
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
EP3713236A4 (en) * 2017-12-14 2021-04-21 LG Electronics Inc. METHOD AND DEVICE FOR DECODING IMAGE ACCORDING TO INTER-PREDICTION IN AN IMAGE CODING SYSTEM
WO2020065520A2 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Extended merge prediction
EP3777176A4 (en) * 2018-03-30 2022-08-17 Hulu, LLC TEMPLATE REFINED BI PREDICTION FOR VIDEO CODING
US11317085B2 (en) * 2018-03-30 2022-04-26 Vid Scale, Inc. Template-based inter prediction techniques based on encoding and decoding latency reduction
US10375422B1 (en) * 2018-03-30 2019-08-06 Tencent America LLC Method and apparatus for motion field based tree splitting
CN116684594A (zh) * 2018-04-30 2023-09-01 寰发股份有限公司 照度补偿方法及相应的电子装置
WO2019216710A1 (ko) * 2018-05-10 2019-11-14 삼성전자주식회사 영상의 부호화 및 복호화를 위한 영상의 분할 방법 및 장치
EP3804325A1 (en) * 2018-05-28 2021-04-14 InterDigital VC Holdings, Inc. Data dependency in coding/decoding
US10469869B1 (en) * 2018-06-01 2019-11-05 Tencent America LLC Method and apparatus for video coding
WO2019234598A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Interaction between ibc and stmvp
WO2019234669A1 (en) 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Signaled mv precision
KR101997681B1 (ko) * 2018-06-11 2019-07-08 광운대학교 산학협력단 양자화 파라미터 기반의 잔차 블록 부호화/복호화 방법 및 장치
KR20210022617A (ko) 2018-06-21 2021-03-03 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 칼라 컴포넌트 간의 서브 블록 mv 상속
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
CA3104570C (en) * 2018-06-28 2023-05-23 Huawei Technologies Co., Ltd. Memory access window and padding for motion vector refinement and motion compensation
TWI728390B (zh) 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
CN114125450B (zh) 2018-06-29 2023-11-17 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
TWI752331B (zh) 2018-06-29 2022-01-11 大陸商北京字節跳動網絡技術有限公司 當向Merge/AMVP添加HMVP候選時的部分/完全修剪
CN114466197A (zh) 2018-06-29 2022-05-10 北京字节跳动网络技术有限公司 用于查找表更新的编码的运动信息的选择
KR102627814B1 (ko) 2018-06-29 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 룩업 테이블의 업데이트: fifo, 제약된 fifo
EP3794824A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Conditions for updating luts
KR20240007298A (ko) 2018-06-29 2024-01-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut에서의 모션 후보들의 검사 순서
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
TWI719526B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 查找表的更新
US10911768B2 (en) * 2018-07-11 2021-02-02 Tencent America LLC Constraint for template matching in decoder side motion derivation and refinement
US10511852B1 (en) * 2018-07-13 2019-12-17 Tencent America LLC Method and apparatus for video coding
WO2020031062A1 (en) 2018-08-04 2020-02-13 Beijing Bytedance Network Technology Co., Ltd. Interaction between different dmvd models
SG11202102183YA (en) * 2018-09-05 2021-04-29 Huawei Tech Co Ltd Method and apparatus for coding image of video sequence, and terminal device
TWI820211B (zh) 2018-09-12 2023-11-01 大陸商北京字節跳動網絡技術有限公司 取決於總數減去k的開始檢查hmvp候選的條件
WO2020061082A1 (en) * 2018-09-21 2020-03-26 Vid Scale, Inc. Complexity reduction and bit-width control for bi-directional optical flow
WO2020058954A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Representation of affine model
SG11202102219YA (en) * 2018-09-24 2021-04-29 B1 Institute Of Image Technology Inc Image encoding/decoding method and device
TW202029755A (zh) * 2018-09-26 2020-08-01 美商Vid衡器股份有限公司 視訊編碼雙預測
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
CN112956197A (zh) * 2018-10-22 2021-06-11 北京字节跳动网络技术有限公司 基于编解码信息的解码器侧运动矢量推导的限制
WO2020084475A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Utilization of refined motion vector
WO2020084460A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation in the presence of multi-hypothesis prediction
WO2020084470A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode
WO2020089822A1 (en) 2018-10-31 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Overlapped block motion compensation with derived motion information from neighbors
CN117241017A (zh) * 2018-11-05 2023-12-15 北京字节跳动网络技术有限公司 数字视频编解码的方法、设备和系统
EP3857890A4 (en) 2018-11-06 2021-09-22 Beijing Bytedance Network Technology Co. Ltd. SIGNALING PAGE INFORMATION FOR INTERPREDICTION WITH GEOMETRIC PARTITIONING
WO2020094149A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in triangular prediction mode
EP3857879A4 (en) 2018-11-12 2022-03-16 Beijing Bytedance Network Technology Co., Ltd. SIMPLIFICATION OF COMBINED INTER-INTRA PREDICTION
CN112970253B (zh) * 2018-11-13 2024-05-07 北京字节跳动网络技术有限公司 用于预测的运动候选列表构建
KR20210091161A (ko) 2018-11-20 2021-07-21 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 부분적 위치에 기반한 차분 계산
WO2020103877A1 (en) * 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coding and decoding of video coding modes
CN111263147B (zh) * 2018-12-03 2023-02-14 华为技术有限公司 帧间预测方法和相关装置
US20220150511A1 (en) * 2018-12-21 2022-05-12 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium having bitstream stored therein
CN113170166B (zh) 2018-12-30 2023-06-09 北京字节跳动网络技术有限公司 具有几何分割的帧间预测在视频处理中有条件的应用
CN113273210B (zh) * 2019-01-01 2024-04-16 Lg电子株式会社 用于编译关于合并数据的信息的方法和装置
CN113597760A (zh) 2019-01-02 2021-11-02 北京字节跳动网络技术有限公司 视频处理的方法
JP7275286B2 (ja) 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
US11153590B2 (en) * 2019-01-11 2021-10-19 Tencent America LLC Method and apparatus for video coding
CN113348669A (zh) * 2019-01-13 2021-09-03 北京字节跳动网络技术有限公司 交织预测和其他编解码工具之间的交互
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
JP7201906B2 (ja) * 2019-01-15 2023-01-11 日本電信電話株式会社 参照領域決定装置及びプログラム
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
CN113475075B (zh) * 2019-02-13 2023-09-08 北京字节跳动网络技术有限公司 基于共享Merge列表的运动预测
JP7263529B2 (ja) * 2019-02-14 2023-04-24 北京字節跳動網絡技術有限公司 デコーダ側精緻化ツールのサイズ選択アプリケーション
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
EP3935852A1 (en) * 2019-03-08 2022-01-12 Interdigital VC Holdings France Motion vector derivation in video encoding and decoding
US11985324B2 (en) 2019-03-14 2024-05-14 Hfi Innovation Inc. Methods and apparatuses of video processing with motion refinement and sub-partition base padding
CN117478876A (zh) * 2019-03-17 2024-01-30 北京字节跳动网络技术有限公司 基于光流的预测细化的计算
CN113615193B (zh) 2019-03-22 2024-06-25 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
US11962796B2 (en) 2019-04-01 2024-04-16 Qualcomm Incorporated Gradient-based prediction refinement for video coding
KR20230169434A (ko) 2019-04-02 2023-12-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
CN113661708B (zh) 2019-04-02 2023-12-15 北京字节跳动网络技术有限公司 基于双向光流的视频编解码和解码
CN113796084B (zh) * 2019-04-14 2023-09-15 北京字节跳动网络技术有限公司 运动矢量和预测样点细化
CN113728630B (zh) 2019-04-19 2023-11-17 北京字节跳动网络技术有限公司 不同运动矢量细化中的基于区域的梯度计算
WO2020211867A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Delta motion vector in prediction refinement with optical flow process
CN113767637B (zh) 2019-04-28 2023-09-22 北京字节跳动网络技术有限公司 对称运动矢量差编解码
CN113812155B (zh) * 2019-05-11 2023-10-27 北京字节跳动网络技术有限公司 多种帧间编解码方法之间的交互
US11076169B2 (en) * 2019-05-14 2021-07-27 Qualcomm Incorporated Switchable interpolation filtering (SIF) for video coding
JP7431253B2 (ja) 2019-05-16 2024-02-14 北京字節跳動網絡技術有限公司 動き情報精緻化のサブ領域に基づいた決定
CN112135141A (zh) * 2019-06-24 2020-12-25 华为技术有限公司 视频编码器、视频解码器及相应方法
US11438623B2 (en) * 2019-07-08 2022-09-06 Hyundai Motor Company Method and device for encoding and decoding video using inter-prediction
US11272203B2 (en) 2019-07-23 2022-03-08 Tencent America LLC Method and apparatus for video coding
KR20220066045A (ko) 2019-09-19 2022-05-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩의 스케일링 윈도우
KR20220061108A (ko) 2019-09-19 2022-05-12 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 레퍼런스 샘플 위치 유도
WO2020251418A2 (en) * 2019-10-01 2020-12-17 Huawei Technologies Co., Ltd. Method and apparatus of slice-level signaling for bi-directional optical flow and decoder side motion vector refinement
EP4026336A4 (en) 2019-10-05 2022-12-07 Beijing Bytedance Network Technology Co., Ltd. LEVEL-BASED SIGNALING OF VIDEO CODING TOOLS
WO2021068955A1 (en) 2019-10-12 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Use and signaling of refining video coding tools
CN117376557A (zh) 2019-10-13 2024-01-09 北京字节跳动网络技术有限公司 参考图片重采样与视频编解码工具之间的相互作用
WO2021129866A1 (en) 2019-12-27 2021-07-01 Beijing Bytedance Network Technology Co., Ltd. Signaling of slice types in video pictures headers
WO2022253320A1 (en) * 2021-06-04 2022-12-08 Beijing Bytedance Network Technology Co., Ltd. Method, device, and medium for video processing
US20230079743A1 (en) * 2021-09-16 2023-03-16 Qualcomm Incorporated Multiple inter predictors with decoder side motion vector derivation for video coding
US20230093043A1 (en) * 2021-09-22 2023-03-23 Tencent America LLC Method and apparatus for adaptive reordering for reference frames
US20230209060A1 (en) * 2021-12-29 2023-06-29 Mediatek Inc. Method and Apparatus for Multiple Hypothesis Prediction in Video Coding System
WO2024012396A1 (en) * 2022-07-14 2024-01-18 Mediatek Inc. Method and apparatus for inter prediction using template matching in video coding systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539058B1 (en) * 1998-04-13 2003-03-25 Hitachi America, Ltd. Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
EP2269379B1 (en) 2008-04-11 2019-02-27 InterDigital Madison Patent Holdings Methods and apparatus for template matching prediction (tmp) in video encoding and decoding
US8873626B2 (en) 2009-07-02 2014-10-28 Qualcomm Incorporated Template matching for video coding
KR101422422B1 (ko) * 2010-12-21 2014-07-23 인텔 코오퍼레이션 Dmvd 처리 향상을 위한 시스템 및 방법
US9729873B2 (en) * 2012-01-24 2017-08-08 Qualcomm Incorporated Video coding using parallel motion estimation
US9491460B2 (en) * 2013-03-29 2016-11-08 Qualcomm Incorporated Bandwidth reduction for video coding prediction
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
WO2017197146A1 (en) * 2016-05-13 2017-11-16 Vid Scale, Inc. Systems and methods for generalized multi-hypothesis prediction for video coding

Also Published As

Publication number Publication date
CN110301135B (zh) 2023-06-30
WO2018156628A1 (en) 2018-08-30
US20180241998A1 (en) 2018-08-23
CN110301135A (zh) 2019-10-01
SG11201906286QA (en) 2019-09-27
TW201842766A (zh) 2018-12-01
EP3586512A1 (en) 2020-01-01
US10701366B2 (en) 2020-06-30
TWI717586B (zh) 2021-02-01

Similar Documents

Publication Publication Date Title
BR112019017252A2 (pt) derivando informação de vetor de movimento em um decodificador de vídeo
US10375413B2 (en) Bi-directional optical flow for video coding
RU2705428C2 (ru) Вывод информации движения для подблоков при видеокодировании
BR112019019210A2 (pt) informação de vetor de movimento de restrição derivada por derivação de vetor de movimento de lado de decodificador
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
KR102616711B1 (ko) 인터 예측 방법 및 장치
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
BR112020006588A2 (pt) predição afim em codificação de vídeo
JP2023145503A (ja) ビデオコーディングのための動きベクトル予測のためのマージ候補
BR112019018689A2 (pt) refinamento de inter-predição baseado em fluxo ótico bidirecional (bio)
BR112019013684A2 (pt) reconstruções de vetor de movimento para fluxo ótico bidirecional (bio)
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
WO2018200960A1 (en) Gradient based matching for motion search and derivation
BR112020014522A2 (pt) Derivação aprimorada de vetor de movimento no lado de decodificador
BR112021015658A2 (pt) Restrições no refinamento de vetor de movimento no lado do decodificador
JP2019534626A (ja) ビデオコーディングのための適応的な動きベクトル精度
BR112019025566A2 (pt) Predição de vetor de movimento
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112016015998B1 (pt) Sinalização de resolução de vetor de movimento adaptativa para codificação de vídeo
BR112016023406B1 (pt) Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador
JP2015536118A (ja) 3dビデオのためのインタ・ビュー予測動きベクトル
JP2016533119A (ja) サブpuレベル高度残差予測
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo
BR112017020632B1 (pt) Métodos e dispositivo para processar dados de vídeo e memória legível por computador

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]