[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

BR112021008251A2 - método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador - Google Patents

método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador Download PDF

Info

Publication number
BR112021008251A2
BR112021008251A2 BR112021008251-4A BR112021008251A BR112021008251A2 BR 112021008251 A2 BR112021008251 A2 BR 112021008251A2 BR 112021008251 A BR112021008251 A BR 112021008251A BR 112021008251 A2 BR112021008251 A2 BR 112021008251A2
Authority
BR
Brazil
Prior art keywords
block
video
mode
conversion
current
Prior art date
Application number
BR112021008251-4A
Other languages
English (en)
Inventor
Kai Zhang
Li Zhang
Hongbin Liu
Yue Wang
Original Assignee
Beijing Bytedance Network Technology Co., Ltd.
Bytedance 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 Beijing Bytedance Network Technology Co., Ltd., Bytedance Inc. filed Critical Beijing Bytedance Network Technology Co., Ltd.
Publication of BR112021008251A2 publication Critical patent/BR112021008251A2/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/537Motion estimation other than block-based
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/563Motion estimation with padding, i.e. with filling of non-object values in an arbitrarily shaped picture block or region for estimation purposes

Landscapes

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

Abstract

MÉTODO E APARELHO PARA PROCESSAR DADOS DE VÍDEO, E,MEIOS DE ARMAZENAMENTO E DE REGISTRO LEGÍVEIS POR COMPUTADOR NÃO TRANSITÓRIO. São descritos dispositivos, sistemas e métodos para conversão em código de vídeo digital, que inclui interprevisão com refinamento. Um método exemplificativo de processamento de vídeo inclui determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, de um primeiro modelo de otimização linear para a conversão usando um primeiro modo de conversão em código, em que o primeiro modelo de otimização linear é derivado de um segundo modelo de otimização linear que é usado para a conversão, com uso de um segundo modo de conversão em código, e para realizar, com base na determinação, a conversão. Outro método exemplificativo de processamento de vídeo inclui determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, de um algoritmo de computação de valor de gradiente para uma ferramenta de fluxo óptico bidirecional, e para realizar, com base na determinação, a conversão.

Description

1 / 106 MÉTODO E APARELHO PARA PROCESSAR DADOS DE VÍDEO, E,
MEIOS DE ARMAZENAMENTO E DE REGISTRO LEGÍVEIS POR COMPUTADOR NÃO TRANSITÓRIO REFERÊNCIA CRUZADA A PEDIDO RELACIONADO
[001] Sob a lei e/ou regras de patente aplicáveis conforme a Convenção de Paris, este pedido é feito para reivindicar oportunamente a prioridade e benefícios do Pedido de Patente Internacional nº PCT/CN2018/113928, depositado em 5 de novembro de 2018. Para todos os propósitos sob a lei dos EUA, as descrições integrais do pedido supracitado são incorporadas a título de referência como parte da descrição deste pedido.
CAMPO DA TÉCNICA
[002] Este documento de patente se refere a técnicas, dispositivos e sistemas de conversão em código de vídeo.
FUNDAMENTOS
[003] Apesar dos avanços na compactação de vídeo, o vídeo digital ainda é responsável pelo maior uso de largura de banda na internet e outras redes de comunicação digital. À medida que o número de dispositivos de usuário conectados capazes de receber e exibir vídeo aumenta, é esperado que a demanda de largura de banda para utilização de vídeo digital continue a crescer.
SUMÁRIO
[004] Trata-se de dispositivos, sistemas e métodos relacionados à conversão em código de vídeo digital, e especificamente, à harmonização de previsão de modo linear para conversão em código de vídeo. Os métodos descritos podem ser aplicados tanto aos padrões existentes de conversão em código de vídeo (por exemplo, Conversão em Código de Vídeo de Alta Eficiência (HEVC)) quanto a padrões futuros de conversão em código de vídeo ou codecs de vídeo.
[005] Em um aspecto representativo, a tecnologia descrita pode ser
2 / 106 usada para fornecer um método para processar vídeo. Este método inclui determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, um primeiro modelo de otimização linear para a conversão usando um primeiro modo de conversão em código, em que o primeiro modelo de otimização linear é derivado de um segundo modelo de otimização linear que é usado para a conversão usando um segundo modo de conversão em código; e realizar, com base na determinação, a conversão.
[006] Em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui habilitar, com base em uma ou mais parâmetros de contagem de ordem de figuração (POC) associados a uma figuração de um bloco atual de vídeo, um primeiro modo de previsão ou um segundo modo de previsão diferente do primeiro modo de previsão, sendo o primeiro modo de previsão um modo de conversão em código usando fluxo óptico; e realizar, com base no primeiro modo ou no segundo modo, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[007] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui derivar consecutivamente, com base em informações convertidas em código associadas a um bloco atual de vídeo, um ou mais vetores de velocidade (vx, vy) associados a uma figuração de referência do bloco atual; e realizar, com base no um ou mais vetores de velocidade, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo, em que as informações convertidas em código compreendem um valor de um componente horizontal de um vetor de movimento do bloco atual, um valor de um componente vertical do vetor de movimento do bloco atual, ou um tamanho do bloco atual.
[008] Ainda em outro aspecto representativo, a tecnologia descrita
3 / 106 pode ser usada para fornecer um método para processar vídeo. Este método inclui realizar, mediante uma determinação de que um modo de conversão em código usando fluxo óptico foi habilitado para um bloco atual do vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual; e realizar, com base na operação de filtragem, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[009] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui realizar, mediante uma determinação de que um modo de conversão em código usando fluxo óptico foi habilitado para um bloco atual de vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual; realizando, mediante uma determinação de que pelo menos uma amostra do bloco atual está localizada fora de uma faixa predeterminada, uma operação de preenchimento; e realizar, com base na operação de filtragem e na operação de preenchimento, um conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[0010] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, de um algoritmo de computação de valor de gradiente para uma ferramenta de fluxo óptico; e realizar, com base na determinação, a conversão.
[0011] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui tomar uma decisão, com base em um ou mais cálculos de soma de diferença absoluta (SAD) para um sub-bloco de um bloco atual de vídeo, a respeito de uma habilitação seletiva de um modo de conversão em código
4 / 106 usando fluxo óptico para o bloco atual; e realizar, com base na decisão, uma conversão entre o bloco atual e uma representação de corrente de bits do bloco atual.
[0012] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui derivar, com base em uma habilitação seletiva de um processo de aprimoramento de biprevisão generalizado (GBi) para um bloco atual de vídeo, um ou mais parâmetros de um modo de conversão em código usando fluxo óptico para o bloco atual; e realizar, com base no um ou mais parâmetros do modo de conversão em código usando fluxo óptico, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[0013] Ainda em outro aspecto representativo, a tecnologia descrita pode ser usada para fornecer um método para processar vídeo. Este método inclui realizar, para um bloco atual de vídeo convertido em código com um modo de conversão em código usando fluxo óptico, uma operação de recorte em uma saída de previsão final do modo de conversão em código usando fluxo óptico; e realizar, com base na saída de previsão final, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[0014] Ainda em outro aspecto representativo, o método descrito acima é incorporado na forma de código executável por processador e armazenado em uma mídia de programa legível por computador.
[0015] Ainda em outro aspecto representativo, um dispositivo que é configurado ou operável para realizar o método descrito acima é descrito. O dispositivo pode incluir um processador que é programado para implementar este método.
[0016] Ainda em outro aspecto representativo, um aparelho decodificador de vídeo pode implementar um método conforme descrito no presente documento.
5 / 106
[0017] Os aspectos acima e outros aspectos e recursos da tecnologia descrita são descritos em maiores detalhes nos desenhos, na descrição e nas reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0018] A Figura 1 mostra um exemplo de construção de uma lista de candidatos de mescla.
[0019] A Figura 2 mostra um exemplo de posições de candidatos espaciais.
[0020] A Figura 3 mostra um exemplo de pares de candidatos submetidos a uma verificação de redundância de candidatos de mescla espacial.
[0021] As Figuras 4A e 4B mostram exemplos da posição de uma segunda unidade de previsão (PU) com base no tamanho e formato do bloco atual.
[0022] A Figura 5 mostra um exemplo de escalonamento de vetor de movimento para candidatos de mescla temporais.
[0023] A Figura 6 mostra um exemplo de posições de candidato para candidatos de mescla temporais.
[0024] A Figura 7 mostra um exemplo de geração de um candidato de mescla bipreditivo combinado.
[0025] A Figura 8 mostra um exemplo de construção de candidatos de previsão de vetor de movimento.
[0026] A Figura 9 mostra um exemplo de escalonamento de vetor de movimento para candidatos de vetor de movimento espaciais.
[0027] A Figura 10 mostra um exemplo de previsão de movimento usando o algoritmo de previsão de vetor de movimento temporal alternativa (ATMVP) para uma unidade de conversão em código (CU).
[0028] A Figura 11 mostra um exemplo de uma unidade de conversão em código (CU) com sub-blocos e blocos vizinhos usados pelo algoritmo de
6 / 106 previsão de vetor de movimento espacial-temporal (STMVP).
[0029] As Figuras 12A e 12B mostram fotografias exemplificativas de sub-bloco ao usar o algoritmo de compensação de movimento de bloco sobreposta (OBMC).
[0030] A Figura 13 mostra um exemplo de amostras vizinhas usadas para derivar parâmetros para o algoritmo de compensação de iluminação local (LIC).
[0031] A Figura 14 mostra um exemplo de um modelo de movimento afim simplificado.
[0032] A Figura 15 mostra um exemplo de um campo de vetor de movimento afim (MVF) por sub-bloco.
[0033] A Figura 16 mostra um exemplo de previsão de vetor de movimento (MVP) para o modo de movimento afim AF_INTER.
[0034] As Figuras 17A e 17B mostram candidatos exemplificativos para o modo de movimento afim AF_MERGE.
[0035] A Figura 18 mostra um exemplo de correspondência bilateral no modo de derivação de vetor de movimento de correspondência de padrão (PMMVD), que é um modo de mescla especial com base no algoritmo de conversão ascendente de taxa de quadro (FRUC).
[0036] A Figura 19 mostra um exemplo de correspondência de modelo no algoritmo de FRUC.
[0037] A Figura 20 mostra um exemplo de estimativa de movimento unilateral no algoritmo de FRUC.
[0038] A Figura 21 mostra um exemplo de uma trajetória de fluxo óptico usada pelo algoritmo de fluxo óptico bidirecional (BDOF).
[0039] As Figuras 22A e 22B mostram fotografias exemplificativas do uso do algoritmo de fluxo óptico bidirecional (BDOF) sem extensões de bloco.
[0040] A Figura 23 mostra um exemplo das amostras interpoladas
7 / 106 usadas em BDOF.
[0041] A Figura 24 mostra um exemplo do algoritmo de refinamento de vetor de movimento de lado do decodificador (DMVR) com base em correspondência de modelo bilateral.
[0042] A Figura 25 mostra um exemplo das localizações de amostras usadas para a derivação de parâmetros do modelo linear (α e β) em um modo de previsão linear.
[0043] A Figura 26 mostra um exemplo de uma linha reta (representativa de um modelo linear) entre os valores de luma máximo e mínimo.
[0044] A Figura 27 mostra outro exemplo de amostras interpoladas usadas em BDOF.
[0045] As Figuras 28A a 28I mostram fluxogramas de métodos exemplificativos para o processamento de vídeo.
[0046] A Figura 29 é um diagrama de blocos de um exemplo de uma plataforma de hardware para implementar uma técnica de decodificação de mídias visuais ou de codificação de mídias visuais descrita no presente documento.
[0047] A Figura 30 é um diagrama de blocos de um processamento de sistema de vídeo exemplificativo em que as técnicas descritas podem ser implementadas.
DESCRIÇÃO DETALHADA
[0048] Devido à crescente demanda de vídeo de resolução mais alta, os métodos e técnicas de conversão em código de vídeo são ubíquos na tecnologia moderna. Os codecs de vídeo tipicamente incluem um circuito eletrônico ou software que compacta ou descompacta vídeo digital, e estão continuamente sendo aprimorados para fornecer eficiência superior de conversão em código. Um codec de vídeo converte vídeo descompactado em um formato compactado ou vice-versa. Há relações complexas entre a
8 / 106 qualidade de vídeo, a quantidade de dados usados para representar o vídeo (determinado pela taxa de bits), a complexidade dos algoritmos de codificação e decodificação, a sensibilidade a perdas e erros de dados, facilidade de edição, acesso aleatório e atraso de ponta a ponta (latência). O formato compactado geralmente se conforma a uma especificação padrão de compactação de vídeo, por exemplo, o padrão de Conversão em Código de Vídeo de Alta Eficiência (HEVC) (também conhecido como H.265 ou MPEG-H Parte 2), o padrão de Conversão em Código de Vídeo Versátil a ser finalizado, ou outros padrões atuais e/ou futuros de conversão em código de vídeo.
[0049] As modalidades da tecnologia descrita podem ser aplicadas a padrões existentes de conversão em código de vídeo (por exemplo, HEVC, H.265) e padrões futuros para aprimorar o desempenho de compactação. Os cabeçalhos de seção são usados no presente documento para aprimorar a legibilidade da descrição e não limitam, de forma alguma, a discussão ou as modalidades (e/ou implementações) às respectivas seções apenas.
1. Exemplos de interprevisão em hevc/h.265
[0050] Os padrões de conversão em código de vídeo se aprimoraram significativamente ao longo dos anos, e agora fornecem, em parte, alta eficiência de conversão em código e suporte para resoluções superiores. Os padrões recentes como HEVC e H.265 são baseados na estrutura híbrida de conversão em código de vídeo, em que a previsão temporal mais conversão em código de transformada são utilizadas.
1.1 Exemplos de modos de previsão
[0051] Cada PU (unidade de previsão) interprevista tem parâmetros de movimento para uma ou duas listas de figuração de referência. Em algumas modalidades, os parâmetros de movimento incluem um vetor de movimento e um índice de figuração de referência. Em outras modalidades, o uso de uma das duas listas de figuração de referência também pode ser
9 / 106 sinalizado usando inter_pred_idc. Ainda em outras modalidades, os vetores de movimento podem ser explicitamente convertidos em código como deltas relacionados aos preditores.
[0052] Quando uma CU é convertida em código com modo de omissão, uma PU é associada à CU, e não há coeficientes residuais significativos, nem delta de vetor de movimento convertido em código ou índice de figuração de referência. Um modo de mescla é especificado, em que os parâmetros de movimento para a PU atual são obtidos a partir de PUs vizinhas, incluindo candidatos espaciais e temporais. O modo de mescla pode ser aplicado a qualquer PU interprevista, não apenas para o modo de omissão. A alternativa ao modo de mescla é a transmissão explícita de parâmetros de movimento, em que o vetor de movimento, o índice de figuração de referência correspondente para cada lista de figuração de referência e o uso da lista de figuração de referência são sinalizados explicitamente por cada PU.
[0053] Quando a sinalização indica que uma das duas listas de figuração de referência deve ser usada, a PU é produzida a partir de um bloco de amostras. Isso é chamado de “uniprevisão”. A uniprevisão está disponível tanto para fatias P quanto para fatias B.
[0054] Quando a sinalização indica que ambas as listas de figuração de referência devem ser usadas, a PU é produzida a partir de dois blocos de amostras. Isso é chamado de “biprevisão”. A biprevisão está disponível apenas para fatias B.
1.1.1 Modalidades de construção de candidatos para modo de mescla
[0055] Quando uma PU é prevista usando o modo de mescla, um índice apontando para uma entrada na lista de candidatos de mescla é analisada a partir da corrente de bits e usada para recuperar as informações de movimento. A construção desta lista pode ser resumida de acordo com a seguinte sequência de etapas: Etapa 1: Derivação de candidatos iniciais
10 / 106 Etapa 1.1: Derivação de candidatos espaciais Etapa 1.2: Verificação de redundância para candidatos espaciais Etapa 1.3: Derivação de candidatos temporais Etapa 2: Inserção de candidatos adicionais Etapa 2.1: Criação de candidatos bipreditivos Etapa 2.2: Inserção de candidatos de movimento zero
[0056] A Figura 1 mostra um exemplo de construção de uma lista de candidatos de mescla com base na sequência de etapas resumida acima. Para derivação de candidato de mescla espacial, um máximo de quatro candidatos de mescla são selecionados entre candidatos que estão localizados em cinco posições diferentes. Para derivação de candidato de mescla temporal, um máximo de um candidato de mescla é selecionado dentre dois candidatos. Visto que o número constante de candidatos para cada PU é presumido no decodificador, candidatos adicionais são gerados quando o número de candidatos não alcança o número máximo de candidatos de mescla (MaxNumMergeCand) que é sinalizado no cabeçalho de fatia. Visto que o número de candidatos é constante, o índice de melhor candidato de mescla é codificado usando binarização unária truncada (TU). Se o tamanho da CU for igual a 8, todas as PUs da CU atual compartilham uma única lista de candidatos de mescla, que é idêntica à lista de candidatos de mescla da unidade de previsão de 2N*2N.
1.1.2 Construção de candidatos de mescla espaciais
[0057] Na derivação de candidatos de mescla espacial, um máximo de quatro candidatos de mescla são selecionados dentre os candidatos localizados nas posições representadas na Figura 2. A ordem de derivação é A1, B1, B0, A0 e B2. A posição B2 é considerada apenas quando qualquer PU de posição A1, B1, B0, A0 não está disponível (por exemplo, visto que pertence a outra fatia ou ladrilho) ou é intraconvertida em código. Após o
11 / 106 candidato na posição A1 ser adicionado, a adição dos candidatos restantes é submetida a uma verificação de redundância que assegura que os candidatos com as mesmas informações de movimento são excluídos da lista, de modo que a eficiência de conversão em código seja aprimorada.
[0058] Para reduzir a complexidade computacional, nem todos os pares de candidatos possíveis são considerados na verificação de redundância mencionada. Em vez disso, apenas os pares ligados com uma seta na Figura 3 são considerados e um candidato apenas é adicionado à lista se o candidato correspondente usado para a verificação de redundância não tiver as mesmas informações de movimento. Outra fonte de informações de movimento em duplicata é a “secondPU” associada às partições diferentes de 2Nx2N. Como um exemplo, as Figuras 4A e 4B representam a segunda PU para o caso de Nx2N e 2NxN, respectivamente. Quando a PU atual é particionada como Nx2N, o candidato na posição A1 não é considerado para a construção de lista. Em algumas modalidades, adicionar este candidato pode levar a duas unidades de previsão terem as mesmas informações de movimento, o que é redundante para ter apenas uma PU em uma unidade de conversão em código. De modo similar, a posição B1 não é considerada quando a PU atual é particionada como 2NxN.
1.1.3 Construção de candidatos de mescla temporais
[0059] Nesta etapa, apenas um candidato é adicionado à lista. Particularmente, na derivação deste candidato de mescla temporal, um vetor de movimento escalonado é derivado com base na PU colocalizada pertencente à figuração que tem a menor diferença de POC com figuração atual na dada lista de figuração de referência. A lista de figuração de referência a ser usada para a derivação da PU colocalizada é explicitamente sinalizada no cabeçalho de fatia.
[0060] A Figura 5 mostra um exemplo da derivação do vetor de movimento escalonado para um candidato de mescla temporal (como a linha
12 / 106 pontilhada), que é escalonada a partir do vetor de movimento da PU colocalizada usando as distâncias de POC, tb e td, em que tb é definido como sendo a diferença de POC entre a figuração de referência da figuração atual e a figuração atual e td é definido como sendo a diferença de POC entre a figuração de referência da figuração colocalizada e a figuração colocalizada. O índice de figuração de referência do candidato de mescla temporal é definido igual a zero. Para uma fatia B, dois vetores de movimento, um é para a lista de figuração de referência 0 e o outro é para a lista de figuração de referência 1, são obtidos e combinados para fazer o candidato de mescla bipreditivo.
[0061] Na PU colocalizada (Y) pertencente ao quadro de referência, a posição para o temporal candidato é selecionada entre os candidatos C0 e C1, como representado na Figura 6. Se a PU na posição C0 não estiver disponível, estiver intraconvertida em código, ou estiver fora da CTU atual, a posição C1 é usada. De outro modo, a posição C0 é usada na derivação do candidato de mescla temporal.
1.1.4 Construção de tipos adicionais de candidatos de mescla
[0062] Além disso, candidatos de mescla espaço-temporais, há dois tipos adicionais de candidatos de mescla: candidato de mescla bipreditivo combinado e candidato de mescla zero. Os candidatos de mescla bipreditivos combinados são gerados utilizando candidatos de mescla espaço-temporais. O candidato de mescla bipreditivo combinado é usado apenas para fatia B. Os candidatos bipreditivos combinados são gerados combinando os parâmetros de movimento da primeira lista de figuração de referência de um candidato inicial com os parâmetros de movimento da segunda lista de figuração de referência de outro. Se estes dois tuplos proveem hipóteses de movimento diferentes, eles formarão um novo candidato bipreditivo.
[0063] A Figura 7 mostra um exemplo deste processo, em que dois candidatos na lista original (710, na esquerda), que têm mvL0 e refldxL0 ou
13 / 106 mvLl e refldxLl, são usados para criar um candidato de mescla bipreditivo combinado adicionado à lista final (720, na direita).
[0064] Os candidatos de movimento zero são inseridos para preencher as entradas restantes na lista de candidatos de mescla e, portanto, atingem a capacidade de MaxNumMergeCand. Estes candidatos têm deslocamento espacial zero e um índice de figuração de referência que começa a partir de zero e aumenta toda vez que um novo candidato de movimento zero é adicionado à lista. O número de quadros de referência usados por estes candidatos é um e dois for previsão unidirecional e bidirecional, respectivamente. Em algumas modalidades, nenhuma verificação de redundância é realizada nestes candidatos.
1.1.5 Exemplos de regiões de estimativa de movimento para processamento paralelo
[0065] Para acelerar o processo de codificação, a estimativa de movimento pode ser realizada em paralelo, em que os vetores de movimento para todas as unidades de previsão dentro de uma dada região são derivados simultaneamente. A derivação de candidatos de mescla de vizinhança espacial pode interferir com processamento paralelo visto que uma unidade de previsão não pode derivar os parâmetros de movimento de uma PU adjacente até sua estimativa de movimento associada ser concluída. Para atenuar a troca entre eficiência de conversão em código e latência de processamento, uma região de estimativa de movimento (MER) pode ser definida. O tamanho da MER pode ser sinalizado no conjunto de parâmetro de figuração (PPS) usando o elemento de sintaxe “Iog2_parallel_merge_level_minus2”. Quando uma MER é definida, os candidatos de mescla caindo na mesma região são marcados como indisponíveis e, portanto, não considerados na construção de lista.
1.2 Modalidades de previsão de vetor de movimento avançada (AMVP)
[0066] A AMVP explora a correlação espaço-temporal de vetor de
14 / 106 movimento com PUs vizinhas, que é usada para transmissão explícita de parâmetros de movimento. Ela constrói uma lista de vetor de movimento candidato primeiramente verificando a disponibilidade de posições de PU vizinhas temporalmente à esquerda e acima, removendo candidatos redundantes e adicionando vetor zero para fazer com que a lista de candidatos tenha comprimento constante. Então, o codificador pode selecionar o melhor preditor da lista de candidatos e transmitir o índice correspondente indicando o candidato escolhido. De modo similar com a sinalização de índice de mescla, o índice do melhor vetor de movimento candidato é codificado usando unário truncado. O valor máximo a ser codificado neste caso é 2 (consultar a Figura 8) Nas seguintes seções, os detalhes a respeito do processo de derivação de candidato de previsão de vetor de movimento são providos.
1.2.1 Exemplos de construção de candidatos de previsão de vetor de movimento
[0067] A Figura 8 resume o processo de derivação para o candidato de previsão de vetor de movimento, e pode ser implementado para cada lista de figuração de referência com refidx como uma entrada.
[0068] Na previsão de vetor de movimento, dois tipos de candidatos de vetor de movimento são considerados: candidato de vetor de movimento espacial e candidato de vetor de movimento temporal. Para a derivação de candidato de vetor de movimento espacial, dois candidatos de vetor de movimento são eventualmente derivados com base em vetores de movimento de cada PU localizada em cinco posições diferentes como mostrado anteriormente na Figura 2.
[0069] Para a derivação de candidato de vetor de movimento temporal, um vetor de movimento candidato é selecionado a partir de dois candidatos, que são derivados com base em duas posições colocalizadas diferentes. Após a primeira lista de candidatos espaço-temporal ser feita, os candidatos de vetor de movimento duplicados na lista são removidos. Se o
15 / 106 número de candidatos potenciais for maior que dois, os candidatos de vetor de movimento cujo índice de figuração de referência dentro da lista de figuração de referência associada é maior que 1 são removidos da lista. Se o número de candidatos espaço-temporal de vetor de movimento for menor que dois, candidatos de vetor de movimento de zero adicionais são adicionados à lista.
1.2.2 Construção de candidatos de vetor de movimento espacial
[0070] Na derivação de candidatos de vetor de movimento espaciais, um máximo de dois candidatos são considerados entre cinco candidatos potenciais, que são derivados de PUs localizadas em posições conforme mostrado anteriormente na Figura 2, tais posições sendo as mesmas como aquelas de mescla de movimento. A ordem de derivação para o lado esquerdo da PU atual é definida como A0, A1 e A0 escalonado, A1 escalonado. A ordem de derivação para o lado de cima da PU atual é definido como B0, B1, B2, B0 escalonado, B1 escalonado, B2 escalonado. Para cada lado há, portanto, quatro casos que podem ser usados como vetor de movimento candidato, com dois casos não necessários para usar escalonamento espacial, e dois casos em que o escalonamento espacial é usado. Os quatro caos diferentes são resumidos conforme a seguir: -Nenhum escalonamento espacial (1) Mesma lista de figuração de referência, e mesmo índice de figuração de referência (mesma POC) (2) Lista de figuração de referência diferente, porém, mesma figuração de referência (mesma POC) -Escalonamento espacial (3) Mesma lista de figuração de referência, porém, figuração de referência diferente (POC diferente) (4) Lista de figuração de referência diferente, e figuração de referência diferente (POC diferente)
[0071] Os casos sem escalonamento espacial são verificados
16 / 106 primeiros seguidos pelos casos que permitem escalonamento espacial. O escalonamento espacial é considerado quando a POC é diferente entre a figuração de referência da PU vizinha e aquela da PU atual, independentemente da lista de figuração de referência. Se todas as PUs dos candidatos esquerdos não estiverem disponíveis ou forem intraconvertidas em código, o escalonamento para o vetor de movimento acima é permitido para ajudar uma derivação paralela dos candidatos de MV à esquerda e acima. De outro modo, o escalonamento espacial não é permitido para o vetor de movimento acima.
[0072] Conforme mostrado no exemplo na Figura 9, para o caso de escalonamento espacial, o vetor de movimento da PU vizinha é escalonado de uma maneira similar àquela para o escalonamento temporal. Uma diferença é que a lista de figuração de referência e o índice de PU atual são fornecidos como entrada; o processo de escalonamento real é igual àquele para o escalonamento temporal.
1.2.3 Construção de candidatos de vetor de movimento temporais
[0073] Exceto a derivação de índice de figuração de referência, todos os processos para a derivação de candidatos de mescla temporais são iguais àquele para a derivação de candidatos de vetor de movimento espaciais (como mostrado no exemplo na Figura 6) Em algumas modalidades, o índice de figuração de referência é sinalizado para o decodificador.
2. Exemplo de métodos de interprevisão em Modelo de Exploração Conjunta (JEM)
[0074] Em algumas modalidades, as tecnologias futuras de conversão em código de vídeo são exploradas usando um software de referência conhecido como o Modelo de Exploração Conjunta (JEM). No JEM, a previsão baseada em sub-bloco é adotada em várias ferramentas de conversão em código, como previsão afim, previsão de vetor de movimento temporal alternativa (ATMVP), previsão de vetor de movimento espacial-temporal
17 / 106 (STMVP), fluxo óptico bidirecional (BDOF ou BIO), Conversão Ascendente de Taxa de Quadro (FRUC), Resolução de Vetor de Movimento Adaptativa Localmente (LAMVR), Compensação de Movimento de Bloco Sobreposto (OBMC), Compensação de Iluminação Local (LIC) e Refinamento de Vetor de Movimento de lado de Decodificador (DMVR).
2.1 Exemplos de previsão de vetor de movimento baseada em sub-CU
[0075] No JEM com árvores quadráticas mais árvores binárias (QTBT), cada CU pode ter no máximo um conjunto de parâmetros de movimento para cada direção de previsão. Em algumas modalidades, dois métodos de previsão de vetor de movimento de nível de sub-CU são considerados no codificador dividindo uma grande CU em sub- CUs e derivando informações de movimento para todas as sub-CUs da grande CU. O método de previsão de vetor de movimento temporal alternativa (ATMVP) permite que cada CU busque múltiplos conjuntos de informações de movimento a partir de múltiplos blocos menores que a CU atual na figuração de referência colocalizada. No método de previsão de vetor de movimento espacial-temporal (STMVP), vetores de movimento das sub-CUs são derivados recursivamente usando o preditor de vetor de movimento temporal e vetor de movimento vizinho espacial. Em algumas modalidades, e para preservar um campo de movimento mais preciso para previsão de movimento de sub-CU, a compactação de movimento para os quadros de referência pode ser desabilitada.
2.1.1 Exemplos de previsão de vetor de movimento temporal alternativa (ATMVP)
[0076] No método de ATMVP, o método de previsão de vetor de movimento temporal (TMVP) é modificado buscando múltiplos conjuntos de informações de movimento (incluindo vetores de movimento e índices de referência) a partir de blocos menores que a CU atual.
[0077] A Figura 10 mostra um exemplo de processo de previsão de
18 / 106 movimento ATMVP para uma CU 1000. O método de ATMVP prevê os vetores de movimento das sub-CUs 1001 dentro de uma CU 1000 em duas etapas. A primeira etapa é identificar o bloco correspondente 1051 em uma figuração de referência 1050 com um vetor temporal. A figuração de referência 1050 também é chamada de figuração de fonte de movimento. A segunda etapa é dividir a CU atual 1000 em sub-CUs 1001 e obter os vetores de movimento assim como os índices de referência de cada sub-CU do bloco correspondente a cada sub-CU.
[0078] Na primeira etapa, uma figuração de referência 1050 e o bloco correspondente são determinados pelas informações de movimento dos blocos vizinhos espaciais da CU atual 1000. Para evitar o processo de varredura repetitiva de blocos vizinhos, o primeiro candidato de mescla na lista de candidatos de mescla da CU atual 1000 é usado. O primeiro vetor de movimento disponível, assim como seu índice de referência associado são definidos como o vetor temporal e o índice para a figuração de fonte de movimento. Desta forma, o bloco correspondente pode ser mais precisamente identificado, em comparação com TMVP, em que o bloco correspondente (por vezes chamado de bloco colocalizado) está sempre em uma posição à direita inferior ou central em relação à CU atual.
[0079] Na segunda etapa, um bloco correspondente da sub-CU 1051 é identificado pelo vetor temporal na figuração de fonte de movimento 1050, adicionado, à coordenada da CU atual, o vetor temporal. Para cada sub-CU, as informações de movimento de seu bloco correspondente (por exemplo, a grade de menor movimento que cobre a amostra central) é usada para derivar as informações de movimento para a sub-CU. Após as informações de movimento de um bloco de NxN correspondente serem identificadas, elas são convertidas nos vetores de movimento e índices de referência da sub-CU atual, da mesma forma que TMVP de HEVC, em que o escalonamento de movimento e outros procedimentos se aplicam. Por exemplo, o decodificador
19 / 106 verifica se a condição de baixo atraso (por exemplo, as POCs de todas as figurações de referência da figuração atual são menores que a POC da figuração atual) é preenchido e possivelmente usa o vetor de movimento MVx (por exemplo, o vetor de movimento correspondente à lista de figuração de referência X) para prever o vetor de movimento MVy (por exemplo, com X sendo igual a 0 ou 1 e Y sendo igual a 1-X) para cada sub-CU.
2.1.2 Exemplos de previsão de vetor de movimento espacial-temporal (STMVP)
[0080] No método de STMVP, os vetores de movimento das sub-CUs são derivados recursivamente, seguindo a ordem de varredura de raster. A Figura 11 mostra um exemplo de uma CU com quatro sub-blocos e blocos vizinhos. Considerar uma CU de 8 x 8 1100 que inclui quatro sub-CUs de 4 x 4 A (1101), B (1102), C (1103) e D (1104). Os blocos de 4 x 4 vizinhos no quadro atual são identificados como a (1111), b (1112), c (1113) e d (1114).
[0081] A derivação de movimento para sub-CU A começa pela identificação de seus dois vizinhos espaciais. O primeiro vizinho é o bloco de N x N acima da sub-CU A 1101 (bloco c 1113). Se este bloco c (1113) não estiver disponível ou for intraconvertido em código, os outros blocos de N x N acima da sub-CU A (1101) são verificados (da esquerda para a direita, começando no bloco c 1113). O segundo vizinho é um bloco à esquerda da sub-CU A 1101 (bloco b 1112). Se o bloco b (1112) não estiver disponível ou for intraconvertido em código, outros blocos à esquerda da sub-CU A 1101 são verificados (de cima para baixo, começando no bloco b 1112). As informações de movimento obtidas a partir dos blocos vizinhos para cada lista são escalonadas ao primeiro quadro de referência para uma dada lista. Em seguida, o preditor de vetor de movimento temporal (TMVP) de sub-bloco A 1101 é derivado seguindo o mesmo procedimento de derivação de TMVP que é especificado em HEVC. As informações de movimento do bloco colocalizado no bloco D 1104 são buscadas e escalonadas em conformidade.
20 / 106 Por fim, após a recuperação e o escalonamento das informações de movimento, todos os vetores de movimento disponíveis têm a média calculada separadamente para cada lista de referência. O vetor de movimento de média calculada é atribuído como o vetor de movimento da sub-CU atual.
2.1.3 Exemplos de sinalização de modo de previsão de movimento de sub-
CU
[0082] Em algumas modalidades, os modos de sub-CU são habilitados como candidatos de mescla adicionais e não há elemento de sintaxe adicional necessário para sinalizar os modos. Dois candidatos de mescla adicionais são adicionados à lista de candidatos de mescla de cada CU para representar o modo de ATMVP e o modo de STMVP. Em outras modalidades, até sete candidatos de mescla podem ser usados, se o conjunto de parâmetros de sequência indicar que ATMVP e STMVP são habilitadas. A lógica de codificação dos candidatos de mescla adicionais é a mesma que aquela para candidatos de mescla no HM, o que significa, para cada CU na fatia P ou B, que duas verificações de RD a mais podem ser necessárias para os dois candidatos de mescla adicionais. Em algumas modalidades, por exemplo, JEM, todos os bins do índice de mescla são convertidos em código com base em contexto por CABAC (Conversão em Código Aritmética Binária Adaptativa com base em Contexto). Em outras modalidades, por exemplo, HEVC, apenas o primeiro bin é convertido em código com base em contexto e os bins restantes são convertido em código de desvio com base em contexto.
2.2 Exemplos de resolução de diferença de vetor de movimento adaptativo
[0083] Em algumas modalidades, as diferenças de vetor de movimento (MVDs) (entre o vetor de movimento e o vetor de movimento previsto de uma PU) são sinalizadas em unidades de amostras de luma de quarto quando o uso do sinalizador de mv de número inteiro é igual a 0 no
21 / 106 cabeçalho de fatia. No JEM, uma resolução de vetor de movimento adaptativo localmente (LAMVR) é introduzida. No JEM, a MVD pode ser convertida em código em unidades de amostras de luma de quarto, amostras de luma de número inteiro ou amostras de luma de quatro. A resolução de MVD é controlada no nível de unidade de conversão em código (CU), e os sinalizadores de resolução de MVD são condicionalmente sinalizados para cada CU que tem pelo menos um componente de MVD não zero.
[0084] Para uma CU que tem pelo menos um componente de MVD não zero, um primeiro sinalizador é sinalizado para indicar se a precisão de MV de amostra de luma de quarto é usada na CU. Quando o primeiro sinalizador (igual a 1) indica que a precisão de MV de amostra de luma de quarto não é usada, outro sinalizador é sinalizado para indicar se a precisão de MV de amostra de luma de número inteiro ou precisão de MV de amostra de luma de quarto é usada.
[0085] Quando o primeiro sinalizador de resolução de MVD de uma CU for zero, ou não convertido em código para uma CU (que significa que todas as MVDs na CU são zero), a resolução de MV de amostra de luma de quarto é usada para a CU. Quando uma CU usa precisão de MV de amostra de luma de número inteiro ou precisão de MV de amostra de luma de quarto, as MVPs na lista de candidatos de AMVP para a CU são arredondadas para a precisão correspondente.
[0086] No codificador, as verificações de RD de nível de CU são usadas para determinar qual resolução de MVD deve ser usada para uma CU. Ou seja, a verificação de RD de nível de CU é realizada três vezes para cada resolução de MVD. Para acelerar a velocidade de codificador, os seguintes esquemas de codificação são aplicados no JEM: -- Durante a verificação de RD de uma CU com resolução de MVD de amostra de luma de quarto normal, as informações de movimento da CU atual (exatidão de amostra de luma de número inteiro) são armazenadas.
22 / 106 As informações de movimento armazenadas (após o arredondamento) são usadas como o ponto de partida para refinamento de vetor de movimento de faixa pequena adicional durante a verificação de RD para a mesma CU com amostra de luma de número inteiro e resolução de MVD de amostra de luma de 4, de modo que o processo de estimativa de movimento demorado não seja duplicado três vezes.
[0087] -- Verificação de RD de uma CU com resolução de MVD de amostra de luma de 4 é condicionalmente invocada. Para uma CU, quando a resolução de MVD de amostra de luma de número inteiro de custo de RD é muito maior que aquela da resolução de MVD de amostra de luma de quarto, a verificação de RD de resolução de MVD de amostra de luma de 4 para a CU é omitida.
2.3 Exemplos de exatidão de armazenamento de vetor de movimento superior
[0088] Em HEVC, a exatidão de vetor de movimento é pel de um quarto (amostra de luma de um quarto e amostra de croma de um oitavo para vídeo de 4:2:0). No JEM, a exatidão para o armazenamento de vetor de movimento interno e o candidato de mescla aumenta para pel de 1/16. A exatidão de vetor de movimento superior (pel de 1/16) é usada em interprevisão de compensação de movimento para a CU convertida em código com modo de omissão/mescla. Para a CU convertida em código com modo de AMVP normal, o movimento de pel de número inteiro ou pel de quarto é usado.
[0089] Os filtros de interpolação de sobreamostragem de SHVC, que têm o mesmo comprimento de filtro e fator de normalização que os filtros de interpolação de compensação de movimento de HEVC, são usados como filtros de interpolação de compensação de movimento para as posições de pel fracionárias adicionais. A exatidão de vetor de movimento de componente de croma é amostra de 1/32 no JEM, os filtros de interpolação adicionais de
23 / 106 posições fracionárias de pel de 1/32 são derivados usando a média dos filtros das duas posições fracionárias de pel de 1/16 vizinhas.
2.4 Exemplos de compensação de movimento de bloco sobreposta (OBMC)
[0090] No JEM, a OBMC pode ser ligada e desligada usando sintaxe no nível de CU. Quando a OBMC é usada no JEM, a OBMC é realizada para todos os limites de bloco de compensação de movimento (MC), exceto pelos limites direito e inferior de uma CU. Ademais, ela é aplicada tanto para os componentes de luma quanto de croma. No JEM, um bloco de MC corresponde a um bloco de conversão em código. Quando uma CU é convertida em código com modo de sub-CU (inclui modo de mescla de sub- CU, afim e FRUC), cada sub-bloco da CU é um bloco de MC. Para processar limites de CU de uma maneira uniforme, a OBMC é realizada no nível de sub-bloco para todos os limites de bloco de MC, em que o tamanho de sub- bloco é definido igual a 4 x 4, como mostrado nas Figuras 12A e 12B.
[0091] A Figura 12A mostra sub-blocos no limite de CU/PU, e os sub-blocos hachurados são onde a OBMC se aplica. De modo similar, a Figura 12B mostra as sub-Pus no modo de ATMVP.
[0092] Quando a OBMC se aplica ao sub-bloco atual, além dos vetores de movimento atuais, os vetores de movimento de quatro sub-blocos vizinhos conectados, se disponíveis e não idênticos ao vetor de movimento atual, também são usados para derivar o bloco de previsão para o sub-bloco atual. Estes múltiplos blocos de previsão com base em múltiplos vetores de movimento são combinados para gerar o sinal de previsão final do sub-bloco atual.
[0093] O bloco de previsão com base em vetores de movimento de um sub-bloco vizinho é denotado como PN, com N indicando um índice para os sub-blocos vizinhos acima, abaixo, à esquerda e à direita e o bloco de previsão baseado em vetores de movimento do sub-bloco atual é denotado
24 / 106 como PC. Quando PN baseia-se nas informações de movimento de um sub- bloco vizinho que contém informações de movimento iguais ao sub-bloco atual, a OBMC não é realizada a partir de PN. De outro modo, toda amostra de PN é adicionada à mesma amostra em PC, isto é, quatro fileiras/colunas de PN são adicionadas a PC. Os fatores de ponderação {1/4, 1/8, 1/16, 1/32} são usados para PN e os fatores de ponderação {3/4, 7/8, 15/16, 31/32} são usados para PC. A exceção consiste em blocos MC pequenos, (isto é, quando a altura ou largura do bloco de conversão em código é igual a 4 ou uma CU é convertida em código com modo de sub-CU), para a qual apenas duas fileiras/colunas de PN são adicionadas a PC. Neste caso, os fatores de ponderação {1/4, 1/8} são usados para PN e fatores de ponderação {3/4, 7/8} são usados para PC. Para PN gerado com base em vetores de movimento de sub-bloco vizinho verticalmente (horizontalmente), amostras na mesma fileira (coluna) de PN são adicionadas a PC com um mesmo fator de ponderação.
[0094] No JEM, para uma CU com tamanho menor ou igual a 256 amostras de luma, um sinalizador de nível de CU é sinalizado para indicar se OBMC é aplicada ou não para a CU atual. Para as CUs com tamanho maior que 256 amostras de luma ou não convertidas em código com modo de AMVP, a OBMC é aplicada por predefinição. No codificador, quando a OBMC é aplicada para uma CU, seu impacto é levado em consideração durante o estágio de estimativa de movimento. O sinal de previsão formado por OBMC usando informações de movimento do bloco vizinho superior e do bloco vizinho esquerdo é usado para compensar os limites superior e esquerdo do sinal original da CU atual e, então, o processo de estimativa de movimento normal é aplicado.
2.5 exemplos de compensação de iluminação local (LIC)
[0095] A LIC baseia-se em um modelo linear para alterações de iluminação, usando um fator de escalonamento a e um deslocamento b. E é habilitado ou desabilitado adaptativamente para cada unidade de conversão
25 / 106 em código (CU) convertida em código intermodo.
[0096] Quando LIC se aplica a uma CU, um método de erro de quadrados mínimos é empregado para derivar os parâmetros a e b usando as amostras vizinhas da CU atual e suas amostras de referência correspondentes. A Figura 13 mostra um exemplo de amostras vizinhas usadas para derivar parâmetros do algoritmo de IC. Especificamente, e como mostrado na Figura 13, as amostras vizinhas subamostradas (subamostragem de 2:1) da CU e as amostras correspondentes (identificadas por informações de movimento da CU atual ou sub-CU) na figuração de referência são usadas. Os parâmetros de IC são derivados e aplicados para cada direção de previsão separadamente.
[0097] Quando uma CU é convertida em código com modo de mescla, o sinalizador de LIC é copiado a partir de blocos vizinhos, de uma forma similar à cópia de informações de movimento no modo de mescla; de outro modo, um sinalizador de LIC é sinalizado para que a CU indique se LIC se aplica ou não.
[0098] Quando LIC é habilitada para uma figuração, uma verificação de RD de nível de CU adicional é necessária para determinar se LIC é aplicada ou não para uma CU. Quando LIC é habilitada para uma CU, a soma removida por média da diferença absoluta (MR-SAD) e a soma removida por média da diferença de transformada de Hadamard absoluta (MR-SATD) são usadas, em vez de SAD e SATD, para busca de movimento de pel número inteiro e busca de movimento de pel fracionário, respectivamente.
[0099] Para reduzir a complexidade de codificação, o seguinte esquema de codificação é aplicado no JEM: -- LIC é desabilitado para toda a figuração quando não há alteração de iluminação óbvia entre uma figuração atual e suas figurações de referência. Parta identificar esta situação, histogramas de uma figuração atual e toda figuração de referência da figuração atual são calculados no codificador. Se a diferença de histograma entre a figuração atual e toda
26 / 106 figuração de referência da figuração atual for menor que um dado limiar, LIC é desabilitado para a figuração atual; de outro modo, LIC é habilitada para a figuração atual.
2.6 Exemplos de previsão de compensação de movimento afim
[00100] Em HEVC, apenas um modelo de movimento de translação é aplicado para previsão de compensação de movimento (MCP). Entretanto, a câmera e objetos podem ter muitos tipos de movimento, por exemplo, aproximação/afastamento, rotação, movimentos de perspectiva e/ou outros movimentos irregulares. JEM, por outro lado, aplica uma previsão de compensação de movimento de transformada afim simplificada. A Figura 14 mostra um exemplo de um campo de movimento afim de um bloco 1400 descrito por dois vetores de movimento de ponto de controle V0 e V1. O campo de vetor de movimento (MVF) do bloco 1400 pode ser descrito pela seguinte equação: Eq. (1)
[00101] Conforme mostrado na Figura 14, (v0x, v0y) é vetor de movimento do ponto de controle de canto esquerdo superior, e (v1x, v1y) é vetor de movimento do ponto de controle de canto direito superior. Para simplificar a previsão de compensação de movimento, a previsão de transformada afim baseada em sub-bloco pode ser aplicada. O tamanho de sub-bloco de MxN é derivado conforme a seguir: Eq. (2)
[00102] Aqui, MvPre é a exatidão de fração de vetor de movimento (por exemplo, 1/16 em JEM). (v2x, V2y) é vetor de movimento do ponto de controle esquerdo inferior, calculado de acordo com a Eq. (1). M e N podem ser ajustados descendentemente se for necessário para tornar os mesmos
27 / 106 divisores de w e h, respectivamente.
[00103] A Figura 15 mostra um exemplo de MVF por sub-bloco afim para um 1500. Para derivar o vetor de movimento de cada sub-bloco de M N, o vetor de movimento da amostra central de cada sub-bloco pode ser calculado de acordo com a Eq. (1), e arredondado à exatidão de fração de vetor de movimento (por exemplo, 1/16 em JEM). Então, os filtros de interpolação de compensação de movimento podem ser aplicados para gerar a previsão de cada sub-bloco com vetor de movimento derivado. Após a MCP, o vetor de movimento de alta exatidão de cada sub-bloco é arredondado e salvo como a mesma exatidão que o vetor de movimento normal.
2.6.1 Modalidades do modo AF_INTER
[00104] No JEM, há dois modos de movimento afins: O modo AF_INTER e o modo AF_MERGE. Para CUs tanto com largura quanto altura maiores que 8, o modo AF_INTER pode ser aplicado. Um sinalizador afim no nível de CU é sinalizado na corrente de bits para indicar se o modo AF_INTER é usado. No modo AF_INTER, uma lista de candidatos com par de vetor de movimento {(v0, v1)|v0 = {vA, vB, vC}, v1 = (vD,vE}} é construído usando os blocos vizinhos.
[00105] A Figura 16 mostra um exemplo de previsão de vetor de movimento (MVP) para um bloco 1600 no modo AF_INTER. Conforme mostrado na Figura 16, v0 é selecionado a partir dos vetores de movimento do sub-bloco A, B ou C. Os vetores de movimento dos blocos vizinhos podem ser escalonados de acordo com a lista de referência. Os vetores de movimento também podem ser escalonados de acordo com a relação entre a Contagem de Ordem de Figuração (POC) da referência para o bloco vizinho, a POC da referência para a CU atual e a POC da CU atual. A abordagem para selecionar v1 a partir do sub-bloco vizinho D e E é similar. Se o número da lista de candidatos for menor que 2, a lista é preenchida pelo par de vetor de movimento composto duplicando cada um dos candidatos de AMVP. Quando
28 / 106 a lista de candidatos é maior que 2, os candidatos podem ser primeiramente classificados de acordo com os vetores de movimento vizinhos (por exemplo, com base na similaridade dos dois vetores de movimento em um candidato de par). Em algumas implementações, os primeiros dois candidatos são mantidos. Em algumas modalidades, uma verificação de custo de Distorção de Taxa (RD) é usada para determinar qual candidato de par de vetor de movimento é selecionado como a previsão de vetor de movimento de ponto de controle (CPMVP) da CU atual. Um índice indicando a posição da CPMVP na lista de candidatos pode ser sinalizado na corrente de bits. Após a CPMVP da CU afim atual é determinada, estimativa de movimento afim é aplicada e o vetor de movimento de ponto de controle (CPMV) é encontrado. Então, a diferença do CPMV e da CPMVP é sinalizada na corrente de bits.
2.6.3 Modalidades do modo AF_MERGE
[00106] Quando uma CU é aplicada no modo AF_MERGE, ela obtém o primeiro bloco convertido em código com um modo afim a partir de blocos reconstruídos vizinhos válidos. A Figura 17A mostra um exemplo da ordem de seleção de blocos candidatos para uma CU atual 1700. Conforme mostrado na Figura 17A, a ordem de seleção pode ser da esquerda (1701), acima (1702), direita acima (1703), esquerda inferior (1704) à esquerda acima (1705) da CU atual 1700. A Figura 17B mostra outro exemplo de blocos candidatos para uma CU atual 1700 no modo AF_MERGE. Se o bloco esquerdo inferior vizinho 1801 for convertido em código em modo afim, como mostrado na Figura 17B, os vetores de movimento v2, v3 e v4 do canto esquerdo superior, canto direito acima e canto esquerdo inferior da CU contendo o sub-bloco 1701 são derivados. O vetor de movimento v0 do canto esquerdo superior na CU atual 1700 é calculado com base em v2, v3 e v4. O vetor de movimento vl da direita acima da CU atual pode ser calculado em conformidade.
[00107] Após o CPMV da CU atual v0 e vl ser computado de acordo
29 / 106 com o modelo de movimento afim na Eq. (1), o MVF da CU atual pode ser gerado. A fim de identificar se a CU atual é convertida em código com modo de AF_MERGE, um sinalizador afim pode ser sinalizado na corrente de bits quando há pelo menos um bloco vizinho que é convertido em código no modo afim.
2.7 Exemplos de derivação de vetor de movimento correspondente ao padrão (PMMVD)
[00108] O modo de PMMVD é um modo de mescla especial baseado no método de Conversão Ascendente de Taxa de Quadro (FRUC). Com este modo, as informações de movimento de um bloco não são sinalizadas, mas derivadas no lado do decodificador.
[00109] Um sinalizador de FRUC pode ser sinalizado para uma CU quando seu sinalizador de mescla for verdadeiro. Quando o sinalizador de FRUC for falso, um índice de mescla pode ser sinalizado e o modo de mescla regular é usado. Quando o sinalizador de FRUC for verdadeiro, um sinalizador de modo de FRUC adicional pode ser sinalizado para indicar qual método (por exemplo, correspondência bilateral ou correspondência de modelo) deve ser usado para derivar informações de movimento para o bloco.
[00110] No lado do codificador, a decisão quanto a usar o modo de mescla de FRUC para uma CU baseia-se na seleção de custo de RD como feito para um candidato de mescla normal. Por exemplo, múltiplos modos de correspondência (por exemplo, correspondência bilateral e correspondência de modelo) são verificados para uma CU usando seleção de custo de RD. Aquele levando ao custo mínimo é adicionalmente comparado com outros modos de CU. Se um modo de correspondência de FRUC for o mais eficiente, o sinalizador de FRUC é definido como verdadeiro para a CU e o modo de correspondência relacionado é usado.
[00111] Tipicamente, processo de derivação de movimento no modo de mescla de FRUC tem duas etapas: uma busca de movimento de nível de
30 / 106 CU é primeiramente realizada, então, seguida por um refinamento de movimento de nível de Sub-CU. No nível de CU, um vetor de movimento inicial é derivado para toda a CU com base na correspondência bilateral ou correspondência de modelo. Primeiro, uma lista de candidatos de MV é gerada e o candidato que leva ao custo de correspondência mínimo é selecionado como o ponto de partida para o refinamento adicional de nível de CU. Então, uma busca local baseada em correspondência bilateral ou correspondência de modelo ao redor do ponto de partida é realizada. O MV que resulta no custo de correspondência mínimo é tomado como o MV para toda a CU. Subsequentemente, as informações de movimento são adicionalmente refinadas no subnível de CU com os vetores de movimento de CU derivados como os pontos de partida.
[00112] Por exemplo, o seguinte processo de derivação é realizado para uma derivação de informações de movimento de CU de W X H. No primeiro estágio, o MV para toda a CU de W x H é derivado. No segundo estágio, a CU é adicionalmente dividida em sub-CUs de M x M. O valor de M é calculado como na Eq. (3), D é uma profundidade de divisão predefinida que é definida como 3 por predefinição no JEM. Então, o MV para cada sub- CU é derivado.
Eq. (3)
[00113] A Figura 18 mostra um exemplo de correspondência bilateral usado no método de Conversão Ascendente de Taxa de Quadro (FRUC). A correspondência bilateral é usada para derivar informações de movimento do CU atual encontrando a correspondência mais próxima entre dois blocos ao longo da trajetória de movimento da CU atual (1800) em duas figurações de referência diferentes (1810, 1811). Sob a suposição de trajetória de movimento contínua, os vetores de movimento MV0 (1801) e MV1 (1802) apontando para os dois blocos de referência são proporcionais às distâncias temporais, por exemplo, TD0 (1803) e TD1 (1804), entre a figuração atual e
31 / 106 as duas figurações de referência. Em algumas modalidades, quando a figuração atual 1800 é temporalmente entre as duas figurações de referência (1810, 1811) e a distância temporal da figuração atual para as duas figurações de referência é igual, a correspondência bilateral se torna MV bidirecional à base de espelho.
[00114] A Figura 19 mostra um exemplo de correspondência de modelo usado no método de Conversão Ascendente de Taxa de Quadro (FRUC). A correspondência de modelo pode ser usada para derivar informações de movimento da CU atual 1900 encontrando a correspondência mais próxima entre um modelo (por exemplo, blocos vizinhos superior e/ou esquerdo da CU atual) na figuração atual e um bloco (por exemplo, mesmo tamanho do modelo) em uma figuração de referência 1910. Exceto pelo modo de mescla de FRUC supracitado, a correspondência de modelo também pode ser aplicada ao modo de AMVP. Tanto em JEM quanto em HEVC, AMVP tem dois candidatos. Com o método de correspondência de modelo, um novo candidato pode ser derivado. Se o candidato recém-derivado por correspondência de modelo for diferente do primeiro candidato de AMVP existente, ele é inserido bem no início da lista de candidatos de AMVP e, então, o tamanho da lista é definido como dois (por exemplo, removendo o segundo candidato de AMVP existente). Quando aplicada ao modo de AMVP, apenas a busca de nível de CU é aplicada.
[00115] O candidato de MV definido no nível de CU pode incluir o seguinte: (1) candidatos de AMVP originais se a CU atual estiver no modo de AMVP, (2) todos os candidatos de mescla, (3) vários MVs no campo de MV interpolado (descrito posteriormente), e vetores de movimento vizinhos superior e esquerdo.
[00116] Ao usar correspondência bilateral, cada MV válido de um candidato de mescla pode ser usado como uma entrada para gerar um par de MV com a suposição de correspondência bilateral. Por exemplo, um MV
32 / 106 válido de um candidato de mescla é (MVa, refa) na lista de referência A. Então, a figuração de referência reftb de seu MV bilateral emparelhado é encontrado na outra lista de referência B, de modo que refta e reftb estejam temporalmente em lados diferentes da figuração atual. Se tal reft não estiver disponível na lista de referência B, reftb é determinado como uma referência que é diferente de reft e sua distância temporal até a figuração atual é a mínima na lista B. Após reftb ser determinado, MVb é derivado por escalonamento MVa com base na distância temporal entre a figuração atual e refta, reftb.
[00117] Em algumas implementações, quatro MVs do campo de MV interpolado também podem ser adicionadas à lista de candidatos de nível de CU. Mais especificamente, os MVs interpolados na posição (0, 0), (W/2, 0), (0, H/2) e (W/2, H/2) da CU atual são adicionados. Quando FRUC é aplicada no modo de AMVP, os candidatos de AMVP originais também são adicionados ao conjunto de candidatos de MV de nível de CU. Em algumas implementações, no nível de CU, 15 MVs para CUs de AMVP e 13 MVs para CUs de mescla podem ser adicionados à lista de candidatos.
[00118] O conjunto de candidatos de MV no subnível de CU inclui um MV determinado a partir da busca de nível de CU, (2) MVs vizinhos superior, esquerdo, esquerdo superior e direito superior, (3) versões escalonadas de MVs colocalizados das figurações de referência, (4) um ou mais candidatos de ATMVP (por exemplo, até quatro) e (5) um ou mais candidatos de STMVP (por exemplo, até quatro). Os MVs escalonados das figurações de referência são derivados conforme a seguir. As figurações de referência em ambas as listas são atravessadas. Os MVs em uma posição colocalizada da sub-CU em uma figuração de referência são escalonados à referência do MV de nível de CU de inicial. Os candidatos de ATMVP e STMVP podem ser os quatro primeiros. No subnível de CU, um ou mais MVs (por exemplo, até 17) são adicionados à lista de candidatos.
33 / 106
[00119] Geração de um campo de MV interpolado. Antes da conversão em código de um quadro, o campo de movimento interpolado é gerado para a figuração integral com base em ME unilateral. Então, o campo de movimento pode ser usado posteriormente como candidatos de MV de nível de CU ou subnível de CU.
[00120] Em algumas modalidades, o campo de movimento de cada uma das figurações de referência em ambas as listas de referência é atravessado no nível de bloco de 4 x 4. A Figura 20 mostra um exemplo de Estimativa de Movimento (ME) unilateral 2000 no método de FRUC. Para cada bloco de 4 x 4, se o movimento associado ao bloco passando através de um bloco de 4 x 4 na figuração atual e o bloco não foi atribuído a qualquer movimento interpolado, o movimento do bloco de referência é escalonado à figuração atual de acordo com a distância temporal TD0 e TD1 (da mesma forma que aquele do escalonamento de MV de TMVP em HEVC) e o movimento escalonado é atribuído ao bloco no quadro atual. Se nenhum MV escalonado é atribuído a um bloco de 4 x 4, o movimento do bloco é marcado como indisponível no campo de movimento interpolado.
[00121] Custo de correspondência e interpolação. Quando um vetor de movimento aponta para uma posição de amostra fracionária, interpolação compensada por movimento é necessária. Para reduzir a complexidade, a interpolação bilinear em vez de interpolação de HEVC de 8 derivações regular pode ser usada tanto para a correspondência bilateral quanto para a correspondência de modelo.
[00122] O cálculo de custo de correspondência é um pouco diferente em etapas diferentes. Ao selecionar o candidato a partir do conjunto de candidatos no nível de CU, o custo de correspondência pode ser a diferença de soma absoluta (SAD) de correspondência bilateral ou correspondência de modelo. Após o MV de partida ser determinado, o custo de correspondência C de correspondência bilateral na busca de nível de sub-CU é calculado
34 / 106 conforme a seguir: Eq. (4)
[00123] Aqui, w é um fator de ponderação. Em algumas modalidades, w pode ser empiricamente definido como 4. MV e MVS indicam o MV atual e o MV de partida, respectivamente. SAD ainda pode ser usado como o custo de correspondência de correspondência de modelo na busca de nível de sub-CU.
[00124] No modo de FRUC, MV é derivado usando apenas amostras de luma. O movimento derivado será usado tanto para luma quanto croma para interprevisão de MC. Após o MV ser decidido, o MC final é realizado usando filtro de interpolação de 8 derivações para luma e filtro de interpolação de 4 derivações para croma.
[00125] O refinamento de MV é uma busca de MV baseada em padrão com o critério de custo de correspondência bilateral ou custo de correspondência de modelo. No JEM, dois padrões de busca são suportados - uma busca de diamante com tendência para o centro irrestrita (UCBDS) e uma busca cruzada adaptativa para refinamento de MV no nível de CU e subnível de CU, respectivamente. Tanto para refinamento de MV de CU quanto de subnível de CU, o MV é diretamente buscado em exatidão de MV de amostra de luma de quarto, e isso é seguido por refinamento de MV de amostra de luma de um oitavo. A faixa de busca de refinamento de MV para a etapa de CU e sub-CU é definida igual a 8 amostras de luma.
[00126] No modo de mescla de correspondência bilateral, a biprevisão é aplicada visto que as informações de movimento de um CU são derivadas com base na correspondência mais próxima entre dois blocos ao longo da trajetória de movimento da CU atual em duas figurações de referência diferentes. No modo de mescla de correspondência de modelo, o codificador pode escolher entre uniprevisão da list0, uniprevisão da list1 ou biprevisão para uma CU. A seleção pode ser baseada em um custo de correspondência de
35 / 106 modelo conforme a seguir: Se costBi <= fator * min (cost0, cost1) biprevisão é usada; De outro modo, se cost0 <= cost1 uniprevisão da list0 é usada; De outro modo, a uniprevisão de list1 é usada; Aqui, cost0 é a SAD of list0 correspondência de modelo, cost1 é a SAD de correspondência de modelo de list1 e costBi é a SAD de correspondência de modelo de biprevisão. Por exemplo, quando o valor de fator é igual a 1,25, isso significa que o processo de seleção é tendencioso para biprevisão. A seleção de direção de interprevisão pode ser aplicada ao processo de correspondência de modelo de nível de CU.
2.8 Exemplos de aprimoramento de biprevisão generalizada (GBi)
[00127] O aprimoramento de biprevisão generalizada (GBi) é adotado em VTM-3.0. O GBi aplica ponderações desiguais a preditores de L0 e LI no modo de biprevisão. No modo de interprevisão, múltiplos pares de ponderações incluindo o par de ponderações iguais (1/2, 1/2) são avaliados com base na otimização de distorção de taxa (RDO) e o índice de GBi do par de ponderações selecionado é sinalizado para o decodificador. No modo de mescla, o índice de GBi é herdado a partir de uma CU vizinha. A fórmula de geração de preditor é mostrada como na Equação (5). Eq. (5)
[00128] No presente documento, PGBI é o preditor final de GBi, w0 e w1 são as ponderações de GBi selecionadas aplicadas aos preditores (PL0 e PL1) da lista 0 (L0) e da lista 1 (L1), respectivamente. RoundingOffsetGBi e shiftNumoBi são usados para normalizar o preditor final em GBi. O conjunto de ponderações de wi suportado é {-1/4, 3/8, 1/2, 5/8, 5/4}, em que as cinco ponderações correspondem a um par de ponderações iguais e quatro pares de
36 / 106 ponderações desiguais. O ganho de mescla, isto é, soma de w1 e w0, é fixado a
1.0. Portanto, o conjunto de ponderação de w0 correspondente é {5/4, 5/8, 1/2, 3/8, -1/4}. A seleção de par de ponderações é no nível de CU.
[00129] Para figurações de atraso não baixos, o tamanho de conjunto de ponderações é reduzido de cinco a três, em que o conjunto de ponderação de w1 é {3/8, 1/2, 5/8} e o conjunto de ponderação de w0 é {5/8, 1/2, 3/8}. A redução de tamanho de conjunto de ponderações para figurações de atraso não baixos é aplicada ao GBi de BMS2.1 e todos os testes de GBi nesta contribuição.
2.8.1 correção de erro (bug) de codificador de GBi
[00130] Para reduzir o tempo de codificação de GBi, no projeto de codificador atual, o codificador irá armazenar os vetores de movimento de uniprevisão estimados a partir da ponderação de GBi igual a 4/8, e reutilizar os mesmos para busca de uniprevisão de outras ponderações de GBi. Este método de codificação rápida é aplicado tanto ao modelo de movimento de translação quanto ao modelo de movimento afim. Em VTM2.0, o modelo afim de 6 parâmetros foi adotado juntamente com o modelo afim de 4 parâmetros. O codificador de BMS2.1 não diferencia o modelo afim de 4 parâmetros e o modelo afim de 6 parâmetros quando armazena os MVs afins de uniprevisão quando a ponderação de GBi é igual a 4/8. Consequentemente, MVs afins de 4 parâmetros podem ser sobrescritos por MVs afins de 6 parâmetros após a codificação com ponderação de GBi de 4/8. Os MVs afins de 6 parâmetros armazenados podem ser usados para ME afim de 4 parâmetros para outras ponderações de GBi, ou os MVs afins de 4 parâmetros armazenados podem ser usados para ME afim de 6 parâmetros. A correção de erros de codificador de GBi proposta é para separar o armazenamento de MVs afins de 4 parâmetros e 6 parâmetros. O codificador armazena aqueles MVs afins com base no tipo de modelo afim quando a ponderação de GBi é igual a 4/8, e reutiliza os MVs afins correspondentes com base no tipo de
37 / 106 modelo afim para outras ponderações de GBi.
2.8.2 Aceleração de codificador de GBi
[00131] Nesta implementação existente, cinco métodos de aceleração de codificador são propostos para reduzir o tempo de codificação quando GBi é habilitado.
[00132] (1) Omitir a estimativa de movimento afim para algumas ponderações de GBi condicionalmente Em BMS2.1, ME afim incluindo ME afim de 4 parâmetros e 6 parâmetros é realizado para todas as ponderações de GBi. É proposto omitir ME afim para aquelas ponderações de GBi desiguais (ponderações desiguais a 4/8) condicionalmente. Especificamente, ME afim será realizada para outras ponderações de GBi se, e apenas se, o modo afim for selecionado como o melhor modo atual e não for modo afim de mescla após avaliar a ponderação de GBi de 4/8. Se a figuração atual for figuração de atraso não baixo, a ME de biprevisão para modelo de translação será omitida para ponderações de GBi desiguais quando ME afim for realizada. Se o modo afim não for selecionado como o melhor modo atual ou se mescla afim for selecionada como o melhor modo atual, ME afim será omitida para todas as outras ponderações de GBi.
[00133] (2) Reduzir o número de ponderações para verificação de custo de RD para figurações de atraso baixo na codificação para precisão de MVD de 1-pel e 4-pel Para figurações de atraso baixo, há cinco ponderações para verificação de custo de RD para todas as precisões de MVD incluindo 1/4-pel, 1-pel e 4-pel. O codificador irá verificar o custo de RD para precisão de MVD de 1/4-pel primeiro. Propõe-se omitir uma porção de ponderações de GBi para verificação de custo de RD para precisões de MVD de 1-pel e 4-pel. Tais ponderações desiguais são ordenadas de acordo com seu custo de RD em precisão de MVD de 1/4-pel. Apenas as primeiras duas ponderações com os menores custos de RD, juntamente com a ponderação de GBi 4/8, serão
38 / 106 avaliadas durante a codificação em precisões de MVD de 1-pel e 4-pel. Portanto, três ponderações no máximo serão avaliadas para precisões de MVD de 1-pel e 4-pel para figurações de atraso baixo.
[00134] (3) Omitir condicionalmente a busca de biprevisão quando as figurações de referência de L0 e L1 são iguais Para algumas figurações em RA, a mesma figuração pode ocorrer em ambas as listas de figuração de referência (lista-0 e lista-1). Por exemplo, para configuração de conversão em código de acesso aleatório em CTC, a estrutura de figuração de referência para o primeiro grupo de figurações (GOP) é listada conforme a seguir.
[00135] POC: 16, TL:0, [L0: 0] [L1:0] POC: 8, TL:1, [L0: 0 16] [L1: 16 0] POC: 4, TL:2, [L0: 0 8] [L1: 8 16] POC: 2, TL:3, [L0: 0 4] [L1: 4 8] POC: 1, TL:4, [L0: 0 2] [L1: 2 4] POC: 3, TL:4, [L0: 2 0] [L1: 4 8] POC: 6, TL:3, [L0: 4 0] [L1: 8 16] POC: 5, TL:4, [L0: 4 0] [L1: 6 8] POC: 7, TL:4, [L0: 6 4] [L1: 8 16] POC: 12, TL:2, [L0: 8 0] [L1: 16 8] POC: 10, TL:3, [L0: 8 0] [L1: 12 16] POC: 9, TL:4, [L0: 8 0] [L1: 10 12] POC: 11, TL:4, [L0: 10 8] [L1: 12 16] POC: 14, TL:3, [L0: 12 8] [LI: 12 16] POC: 13, TL:4, [L0: 12 8] [LI: 14 16] POC: 15, TL:4, [L0: 14 12; | [L1: 16 14] Observa-se que as figurações 16, 8, 4, 2, 1, 12, 14 e 15 têm a(s) mesma(s) figuração(ões) de referência em ambas as listas. Para biprevisão para tais figurações, é possível que as figurações de referência de
39 / 106 L0 e L1 sejam iguais. É proposto que o codificador omita ME de biprevisão para ponderações de GBi desiguais quando 1) duas figurações de referência em biprevisão são iguais e 2) a camada temporal é maior que 1 e 3) a precisão de MVD é 1/4-pel. Para ME de biprevisão afim, este método de omissão rápida é aplicado apenas a ME afim de 4 parâmetros.
[00136] (4) Omitir verificação de custo de RD para ponderação de GBi desigual com base na camada temporal e na distância de POC entre a figuração de referência e a figuração atual É proposta a omissão de tais avaliações de custo de RD para aquelas ponderações de GBi desiguais quando a camada temporal é igual a 4 (camada temporal mais alta em RA) ou a distância de POC entre a figuração de referência (lista-0 ou lista-1) e a figuração atual é igual a 1 e o QP de conversão em código é maior que 32.
[00137] (5) Alterar o cálculo de ponto flutuante para cálculo de ponto fixo para ponderação de GBi desigual durante ME Para a busca de biprevisão existente, o codificador irá corrigir o MV de uma lista e refinar o MV em outra lista. O alvo é modificado antes de ME para reduzir a complexidade de computação. Por exemplo, se o MV da lista-1 for corrigido e o codificador precisar refinar o MV da lista-0, o alvo para refinamento de MV de lista-0 é modificado com a Equação (6). O é o sinal original e P1 é o sinal de previsão da lista-1. w é a ponderação de GBi para a lista-1. T = ((0 « 3) - w*P1) * (1/(8 - w)) (6) No presente documento, o termo (1/(8 -w)) é armazenado em precisão de ponto flutuante, que aumenta a complexidade de computação. É proposta a alteração da Equação (6) para o ponto fixo como na Equação (7). T =(O*a1-P1*a2 + round) » N (7) em que a1 e a2 são fatores de escalonamento e eles são calculados como:
40 / 106 y = (1 « N)/(8 -w); a1 = = y « 3; a2 = y * w; round = 1 « ( N – 1)
2.8.3 Restrição de tamanho de CU para GBi
[00138] Neste método, GBi é desabilitada para CUs pequenas. No modo de interprevisão, se a biprevisão for usada e a área de CU for menor que 128 amostras de luma, GBi é desabilitado sem nenhuma sinalização.
2.9 Exemplos de fluxo óptico bidirecional (BDOF)
[00139] No fluxo óptico bidirecional (BDOF ou BIO), a compensação de movimento é primeiramente realizada para gerar as primeiras previsões (em cada direção de previsão) do bloco atual. As primeiras previsões são usadas para derivar o gradiente espacial, o gradiente temporal e o fluxo óptico de cada sub-bloco ou pixel dentro do bloco, que são, então, usados para gerar a segunda previsão, por exemplo, a previsão final do sub-bloco ou pixel. Os detalhes são descritos conforme a seguir.
[00140] BDOF é um refinamento de movimento em amostra realizado no topo da compensação de movimento em bloco para biprevisão. Em algumas implementações, o refinamento de movimento de amostra não usa sinalização.
[00141] Considera-se I(k) o valor de luma da referência k (K = 0, 1) após a compensação de movimento de bloco, e denota-se dl(k)/dx e dl(k)/dy como os componentes horizontal e vertical do gradiente I(k), respectivamente. Presumindo que o fluxo óptico seja válido, o campo de vetor de movimento (vx, vy) é fornecido por: dI(k)/dt + vxdI(k)/dx + vydI(k)/dy = 0. Eq. (5)
[00142] Combinar esta equação de fluxo óptico com a interpolação de Hermite para a trajetória de movimento de cada amostra resulta em um polinômio de terceira ordem exclusivo que corresponde a ambos os valores da função I(k) e derivados dl(k)/dx e dl(k)/dy nas extremidades. O valor deste polinômio em t=0 é a previsão de BDOF: Eq. (6)
41 / 106
[00143] A Figura 24 mostra uma trajetória de fluxo óptico exemplificativa no método de fluxo óptico bidirecional (BDOF). Aqui, 0 e 1 denotam as distâncias dos quadros de referência. As distâncias 0 e 1 são calculadas com base em POC para Ref0 e Ref1: o=POC(atual) - POC(Ref0), 1= POC(Refi) - POC(atual). Se ambas as previsões forem provenientes da mesma direção de tempo (ambas do passado ou ambas do futuro), então, os sinais são diferentes (por exemplo, 0 ⋅ 1 < 0). Neste caso, BDOF é aplicada se a previsão não for do mesmo momento no tempo (por exemplo, 0≠ 1)- Ambas as regiões mencionadas têm movimento não zero (por exemplo, ) e os vetores de movimento de bloco são proporcionais à distância de tempo (por exemplo, ).
[00144] O campo de vetor de movimento (vx, vy) é determinado minimizando a diferença entre valores nos pontos A e B. As Figuras 9A a 9B mostram um exemplo de interseção de planos de trajetória de movimento e quadro de referência. O modelo usa apenas o primeiro termo linear de uma expansão de Taylor local para : Eq. (7)
[00145] Todos os valores na equação acima dependem da localização de amostra, denotada como (i',j' ). Presumindo que o movimento seja consistente na área circundante local, ∆ pode ser minimizada dentro da janela quadrada de (2M+l)x(2M+l), Ω centralizada no ponto atualmente previsto (i,j), em que M é igual a 2: Eq. (8)
[00146] Para este problema de otimização, o JEM usa uma abordagem simplificada realizando primeiro uma minimização na direção vertical e, então, na direção horizontal. Isto resulta no seguinte:
42 / 106 Eq. (9) Eq. (10) em que, Eq. (11)
[00147] A fim de evitar a divisão por zero ou um valor muito pequeno, os parâmetros de regularização r e m podem ser introduzidos em Eq. (9) e Eq. (10), em que: r = 500 • 4d-8 Eq. (12) m = 700 • 4d-8 Eq. (13)
[00148] Aqui, d consiste em profundidade de bit das amostras de vídeo.
[00149] A fim de manter o acesso à memória para BDOF igual para compensação de movimento bipreditiva regular, todos os valores de previsão e gradientes, , são calculados para posições dentro do bloco atual. A Figura 22A mostra um exemplo de posições de acesso fora de um bloco 2200. Conforme mostrado na Figura 22A, na Eq. (9), janela quadrada de (2M+l)x(2M+l), Ω centralizada no ponto atualmente previsto em um limite de bloco previsto precisa acessar posições fora do bloco. No JEM, os valores de fora do bloco são definidos como sendo iguais ao valor disponível mais próximo dentro do bloco. Por exemplo, isso pode ser implementado como uma área de preenchimento 2201, como mostrado na Figura 22B.
[00150] Com BDOF, é possível que o campo de movimento possa ser refinado para cada amostra. Para reduzir a complexidade computacional, um projeto à base de bloco de BDOF é usado no JEM. O refinamento de movimento pode ser calculado com base em um bloco de 4 x 4. Na BDOF à
43 / 106 base de bloco, os valores de sn na Eq. (9) de todas as amostras em um bloco de 4 x 4 podem ser agregados e, então, os valores agregados de Sn são usados para deslocamento de vetores de movimento de BDOF derivado para o bloco de 4 x 4. Mais especificamente, a seguinte fórmula pode ser usada para derivação de BDOF à base de bloco: Eq. (14)
[00151] Aqui, bk denota o conjunto de amostras pertencentes ao k- ésimo bloco de 4 x 4 do bloco previsto. sn em Eq (9) e Eq (10) são substituídos por ((sn,bk) » 4 ) para derivar os deslocamentos de vetor de movimento associados.
[00152] Em alguns cenários, o regime de MV de BIO pode ser inconfiável devido ao ruído ou movimento irregular. Portanto, em BDOF, a magnitude do regime de MV é recortada em um valor de limiar. O valor de limiar é determinado com base na possibilidade de as figurações de referência da figuração atual serem todas de uma direção. Por exemplo, se todas as figurações de referência da figuração atual forem de uma direção, o valor do limiar é definido como 12 X 214-d; de outro modo, é definido como 12 X 213-d.
[00153] Os gradientes para BDOF podem ser calculados ao mesmo tempo que a interpolação de compensação de movimento usando operações consistentes com processo de compensação de movimento de HEVC (por exemplo, Resposta de Impulso Finito (FIR) separável 2D). Em algumas modalidades, a entrada para a FIR separável 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 com a parte fracionária do vetor de movimento de bloco. Para o gradiente horizontal dl/dx, um sinal é primeiramente interpolado verticalmente usando BlOfilterS correspondente à
44 / 106 posição fracionária fracY com deslocamento de desescalonamento d-8. O filtro de gradiente BIOfilterG é, então, aplicado na direção horizontal correspondente à posição fracionária fracX com deslocamento de desescalonamento por 18-d.
Para o gradiente vertical dl/dy, um filtro de gradiente é aplicado verticalmente usando BIOfilterG correspondente à posição fracionária fracY com deslocamento de desescalonamento d-8. O deslocamento de sinal é, então, realizado usando BlOfilterS na direção horizontal correspondente à posição fracionária fracX com deslocamento de desescalonamento por 18-d.
O comprimento do filtro de interpolação para cálculo de gradientes BIOfilterG e deslocamento de sinal BIOfilterF pode ser mais curto (por exemplo, 6 derivações) para manter a complexidade razoável.
A Tabela 1 mostra filtros exemplificativos que podem ser usados para o cálculo de gradientes de posições fracionárias diferentes de vetor de movimento de bloco em BDOF.
A Tabela 2 mostra filtros de interpolação exemplificativos que podem ser usados para geração de sinal de previsão em BIO.
Tabela 1: Filtros exemplificativos para cálculos de gradiente em BDOF (ou BIO) Posição de pel fracionária Filtro de interpolação para gradiente (BIOfilterG) 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 exemplificativos para geração de sinal de previsão em BDOF (ou BIO) Posição de pel fracionária Filtro de interpolação para sinal de previsão(BIOfilterS) 0 { 0, 0, 64, 0, 0, 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} 7/16 { 3, -11, 44, 35, -10, 3}
45 / 106 Posição de pel fracionária Filtro de interpolação para sinal de previsão(BIOfilterS) 1/2 { 3, -10, 35, 44, -11, 3}
[00154] No JEM, BDOF pode ser aplicada a todos os blocos biprevistos quando as duas previsões são de figurações de referência diferentes. Quando a Compensação de Iluminação Local (LIC) é habilitada para uma CU, BDOF pode ser desabilitada.
[00155] Em algumas modalidades, OBMC é aplicada para um bloco após o processo de MC normal. Para reduzir a complexidade computacional, BDOF pode não ser aplicada durante o processo de OBMC. Isto significa que BDOF é aplicada no processo de MC para um bloco ao usar seu próprio MV e não é aplicado no processo de MC quando o MV de um bloco vizinho é usado durante o processo de OBMC.
2.9.1 Exemplos de BDOF em VTM-3.0
[00156] Etapa 1: Julgar se BIO é aplicável (W/H são largura/altura do bloco atual) BIO não é aplicável se ○ Bloco de vídeo atual é convertido em código afim ou convertido em código de ATMVP ○ (iPOC - iPOC0) x (iPOC - iPOC1) ≥ 0 ○ H==4 ou (W==4 e H==8) ○ com Previsão Ponderada ○ Ponderações de GBi não são (1,1) BDOF não é usada se SAD total entre os dois blocos de referência (denotado como R0 e R1) for menor que um limiar, em que Etapa 2: Preparação de dados Para um bloco de WxH, amostras de (W+2)x(H+2) são interpoladas.
[00157] As amostras de WxH internas são interpoladas com o filtro de interpolação de 8 derivações como em compensação de movimento normal.
46 / 106
[00158] As quatro linhas externas laterais de amostras (círculos pretos na Figura 23) são interpoladas com o filtro bilinear.
[00159] Para cada posição, os gradientes são calculados nos dois blocos de referência (R0 e R1).
[00160] Gx0(x,y)=(R0(x+1 ,y)-R0(x-1 ,y))»4 Gy0(x,y)=(R0(x, y+l)-R0(x, y-l))»4 Gxl (x,y)=(Rl (x+1 ,y)-Rl (x-1 ,y))»4 Gyl(x,y)=(Rl(x, y+l)-Rl(x, y-l))»4
[00161] Para cada posição, os valores internos são calculados como: Tl= (R0(x,y)»6)-(Rl(x,y)»6), T2=(GxO(x,y)+Gxl(x,y))»3, T3=(Gy0(x,y)+Gyl(x,y))»3; e Bl(x,y) = T2*T2, B2(x,y)=T2*T3, B3(x,y)=-T1*T2, B5(x,y)=T3*T3, B6(x,y)=- T1*T3 Etapa 3: Calcular previsão para cada bloco BDOF é omitida para um bloco de 4 x 4 se SAD entre os dois blocos de referência de 4x4 for menor que um limiar.
[00162] Calcular Vx e Vy.
[00163] Calcular a previsão final para cada posição no bloco de 4 x 4: b (x,y)=(Vx(Gx0 (x,y)-Gx1 (x,y))+Vy(Gy0(x,y)-Gy1 (x,y))+1) »1 P(x,y)=(R0(x,y)+R1 (x,y)+b(x,y)+deslocamento) » deslocamento No presente documento, b(x,y) é conhecido como um item de correção.
2.9.2 Exemplos alternativos de BDOF (ou BIO) em VTM-3.0
[00164] 8.3.4 Processo de decodificação para interblocos -- Se predFlagL0 e predFlagL1 forem iguais a 1, DiffPicOrderCnt( currPic, refPicList0[ refldx0 ] ) * DiffPicOrderCnt( currPic, refPicListl[ refldxl ]) < 0, MotionModelIdc[ xCb ][ yCb ] é igual a 0 e
47 / 106 MergeModeList[ merge_idx[ xCb ][ yCb ] ] não é igual a SbCol, definir o valor de bioAvailableFlag como VERDADEIRO.
[00165] -- De outro modo, definir o valor de bioAvailableFlag como FALSO.
[00166] -- Se bioAvailableFlag for igual a VERDADEIRO, o seguinte é aplicado: -- O deslocamento variável é definido igual a Max( 2, 14 - bitDepth ).
[00167] -- As variáveis cuLevelAbsDiffThres e subCuLevelAbsDiffThres são definidas iguais a (l«(bitDepth - 8 + deslocamento)) *cbWidth* cbHeight e l«(bitDepth - 3 + deslocamento). A variável cuLevelSumAbsoluteDiff é definida como 0.
[00168] -- Para xSbIdx=0.. (cbWidth»2)-l e ySbIdx=0.. (cbHeight»2)-l, a variável subCuLevelSumAbsoluteDiff[xSbIdx] [ySbldx] e o sinalizador de utilização de fluxo óptico bidirecional bioUtilizationFlag[ xSbldx ][ySbIdx] do sub-bloco atual são derivados como: subCuLevelSumAbsoluteDiff[ xSbldx ][ ySbldx ] = Abs(predSamplesL0L[(xSbIdx«2)+l+i][(ySbIdx«2)+l+j] - predSamplesLlL[(xSbIdx«2)+l+i][ (ySbIdx«2)+l+j]) com i, j = 0..3 bioUtilizationFlag [ xSbldx ][ ySbldx ] = subCuLevelSumAbsoluteDiff[xSbIdx] [ySbldx] >= subCuLevelAbsDiffThres cuLevelSumAbsoluteDiff += subCuLevelSumAbsoluteDiff[ xSbldx ][ ySbldx ] -- Se cuLevelSumAbsoluteDiff for menor que cuLevelAbsDiffThres, definir bioAvailableFlag como FALSO.
[00169] -- Se bioAvailableFlag for igual a VERDADEIRO, as amostras de previsão dentro do sub-bloco de conversão em código de luma atual, predSamplesL[ xL + xSb ][ yL + ySb ] com xL = 0..sbWidth - 1 e yL = O..sbHeight - 1, são derivados invocando o processo de previsão de amostra
48 / 106 de fluxo óptico bidirecional especificado na cláusula 8.3.4.5 com a largura de sub-bloco de conversão em código de luma sbWidth, a altura de sub-bloco de conversão em código de luma sbHeight e as matrizes de amostra predSamplesL0L e predSamplesLIL, e as variáveis predFlagL0, predFlagL1, refldxL0, refldxLl.
8.3.4.3 Processo de interpolação de amostra fracionária
8.3.4.3.1 Geral
[00170] Entradas neste processo são: - uma localização de luma (xSb, ySb ) especificando a amostra esquerda superior do sub-bloco de conversão em código atual em relação à amostra de luma esquerda superior da figuração atual, - uma variável sbWidth especificando a largura do sub-bloco de conversão em código atual em amostras de luma, - uma variável sbHeight especificando a altura do sub-bloco de conversão em código atual em amostras de luma, - um vetor de movimento de luma mvLX fornecido em unidades de amostra de luma e 1/16, - um vetor de movimento de croma mvCLX fornecido em unidades de amostra de croma e 1/32, - a matriz de amostra de figuração de referência selecionada refPicLXL e as matrizes refPicLXCb e refPicLXCr.
[00171] - O sinalizador de habilitação de fluxo óptico bidirecional bioAvailableFlag.
[00172] Saídas deste processo são: - uma matriz de (sbWidth)x(sbHeight), predSamplesLXL de valores de amostra de luma de previsão quando bioAvailableFlag é FALSO, ou uma matriz de (sbWidth+2)x(sbHeight+2), predSamplesLXL de valores de amostra de luma de previsão quando bioAvailableFlag é VERDADEIRO.
[00173] - Duas matrizes de (sbWidth / 2)x(sbHeight / 2),
49 / 106 predSamplesLXCb e predSamplesLXCr de valores de amostra de croma de previsão.
[00174] Considera-se (xlntL, ylntL ) como uma localização de luma fornecida em unidades de amostra completa e ( xFracL, yFracL ) como um deslocamento fornecido em unidades de amostra de 1/16. Estas variáveis são usadas apenas nesta cláusula para especificar localizações de amostra fracionária dentro das matrizes de amostra de referência refPicLXL, refPicLXCb e refPicLXCr.
[00175] Quando bioAvailableFlag é igual a VERDADEIRO, para cada localização de amostra de luma (xL = - 1..sbWidth, yL = -1..sbHeight) dentro da matriz de amostra de luma de previsão predSamplesLXL, o valor de amostra de luma de previsão correspondente predSamplesLXL[ xL ][ yL ] é derivado conforme a seguir: - As variáveis xlntL, ylntL, xFracL e yFracL são derivadas conforme a seguir: xlntL = xSb - 1 + ( mvLX[ 0 ] » 4 ) + xL ylntL = ySb - 1 + ( mvLX[ 1 ] » 4 ) + yL xFracL = mvLX[ 0 ] & 15 yFracL = mvLX[ 1 ] & 15 - O valor de bilinearFiltEnabledFlag é derivado conforme a seguir: - Se xL for igual a -1 ou sbWidth, ou yL for igual a -1 ou sbHeight, definir o valor de bilinearFiltEnabledFlag como VERDADEIRO.
[00176] - Ou então, definir o valor de bilinearFiltEnabledFlag como
FALSO - O valor de amostra de luma de previsão predSamplesLXL[ xL ][ yL ] é derivado invocando o processo especificado na cláusula 8.3.4.3.2 com (xlntL, ylntL ), (xFracL, yFracL ), refPicLXL e bilinearFiltEnabledFlag como entradas.
50 / 106
[00177] Quando bioAvailableFlag é igual a FALSO, para cada localização de amostra de luma ( xL = 0...sbWidth - 1, yL = O..sbHeight - 1 ) dentro da matriz de amostra de luma de previsão predSamplesLXL, o valor de amostra de luma de previsão correspondente predSamplesLXL[ xL ][ yL ] é derivado conforme a seguir: - As variáveis xlntL, ylntL, xFracL e yFracL são derivadas conforme a seguir: xlntL = xSb + ( mvLX[ 0 ] » 4 ) + xL ylntL = ySb + ( mvLX[ 1 ] » 4 ) + yL xFracL = mvLX[ 0 ] & 15 yFracL = mvLX[ 1 ] & 15 - A variável bilinearFiltEnabledFlag é definida como FALSO.
[00178] - O valor de amostra de luma de previsão predSamplesLXL[ xL ][ yL ] é derivado invocando o processo especificado na cláusula 8.3.4.3.2 com (xlntL, ylntL ), (xFracL, yFracL ), e refPicLXL e bilinearFiltEnabledFlag como entradas.
8.3.4.5 Processo de previsão de fluxo óptico de (BDOF ou BIO) bidirecional Entradas neste processo são: - duas variáveis nCbW e nCbH especificando a largura e a altura do bloco de conversão em código atual, - duas matrizes de amostra de predição de luma de (nCbW+2)x(nCbH+2), predSamplesL0 e predSamplesLl, - os sinalizadores de utilização de lista de previsão, predFlagL0 e predFlagL1, - os índices de referência refldxL0 e refldxLl, - os sinalizadores de utilização de fluxo óptico bidirecional bioUtilizationFlag[ xSbldx ][ ySbldx ] com xSbldx = O..(nCbW»2) - 1, ySbldx = 0 .. (nCbH»2) - 1 A saída deste processo é a matriz de (nCbW)x(nCbH),
51 / 106 pbSamples de valores de amostra de predição de luma.
[00179] A variável bitDepth é definida igual a BitDepthY.
[00180] A variável shift2 é definida igual a Max( 3,15- bitDepth) e a variável offset2 é definida igual a 1 « ( shift2 - 1 ).
[00181] A variável mvRefineThres é definida igual a 1 « ( 13 - bitDepth).
[00182] Para xSbldx = 0..( nCbW » 2 ) - 1 e ySbldx = 0..( nCbH » 2 ) - 1, - Se bioUtilizationFlag[ xSbldx ][ ySbldx ] é FALSO, para x=xSb..xSb+3,y=ySb.. ySb+3, os valores de amostra de previsão da unidade de previsão atual são derivados conforme a seguir: pbSamples [ x ][ y ] = Clip3( 0, ( 1 « bitDepth) - 1, (predSamplesL0[ x ][ y ] + predSamplesLl[ x ][ y ] + offset2 ) » shift2 ) - De outro modo, os valores de amostra de previsão da unidade de previsão atual são derivados conforme a seguir: - A localização (xSb, ySb ) especificando a amostra esquerda superior do sub-bloco atual em relação à amostra esquerda superior de matrizes de amostra de previsão predSamplesL0 e predSampleLl é derivada conforme a seguir: xSb = (xSb!dx«2) + 1 ySb = (ySbIdx«2) + 1 - Para x=xSb-l..xSb+4,y=ySb-l.. ySb+4, os seguintes são aplicados: - As localizações ( hx, vy) para cada uma das amostras correspondentes (x, y ) dentro das matrizes de amostra de previsão são derivadas conforme a seguir: hx = Chp3( 1, nCbW, x) vy = Clip3( 1, nCbH, y)
52 / 106
- As variáveis gradientHL0[x][y], gradientVL0[x][y], gradientHLl [x][y] e gradientVLl[x][y] são derivadas conforme a seguir: gradientHL0[x][y] = (predSamplesL0[hx +l][vy] - predSampleL0[hx-l][vy])»4 gradientVL0[x][y] = (predSampleL0[hx][vy+l] - predSampleL0 [hx] [vy-1 ])»4 gradientHL1 [x][y] = (predSampleL1 [hx-1 ] [vy]) predSampleLl [hx][vy-l])»4 gradientVL1 [x][y] = (predSampleL1 [hx-1 ] [vy]) predSampleLl [hx][vy-l])»4 - As variáveis temp, tempX e tempY são derivadas conforme a seguir: Temp [x] [y] = (predSamplesL0 [hx][vy]»6)- (predSamplesL1[hx][vy]»6) tempX[x][y] = (gradientHL0[x][y] +gradientHLl [x] [y])»3 tempY[x][y] = (gradientVL0[x][y] + gradientVLl [x] [y])»3 - As variáveis sGx2, sGy2, sGxGy, sGxdl e sGydl são derivadas conforme a seguir: sGx2 = x y (tempX[xSb+x][ySb+y] * tempX[xSb+x][ySb+y]) com x, y = -1..4 sGy2 = x y (tempY[xSb+x][ySb+y] * tempY[xSb+x][ySb+y]) com x, y = -1..4 sGxGy = x y (tempX[xSb+x][ySb+y] * tempY[xSb+x][ySb+y]) com x, y = -1..4 sGxdl = x y (-tempX[xSb+x][ySb+y] * temp[xSb+x][ySb+y]) com x, y = -1..4 sGydl = x y (-tempY[xSb+x] [ySb+y] * temp[xSb+x][ySb+y]) com x, y = -1..4 - Os refinamentos de movimento horizontal e vertical do sub-
53 / 106 bloco atual são derivados conforme: vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, - (sGxdI«3)»Floor(Log2(sGx2))) : 0 vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, ((sGydI«3) - ((vx*sGxGym)«12 + vx*sGxGys)»l)»Floor(Log2(sGy2))) : 0 sGxGym = sGxGy»12; sGxGys = sGxGy & ((1«12)-1) Para x=xSb-l..xSb+2,y=ySb-l.. ySb+2, os seguintes são aplicados: sampleEnh = Round( (vx* (gradientHLl [x+l][y+l]- gradientHL0[x+l][y+l]) )»1 ) + Round((vy*(gradientVLl[x+l][y+l]- gradientVL0[x+l][y+l]))»l) pbSamples[ x ][ y ] = Clip3( 0, ( 1 « bitDepth) - 1, ( predSamplesL0[ x+1 ][ y+1 ] + predSamplesLl[ x+1 ][ y+1 ] +sampleEnh + offset2 ) » shift2 )
2.10 Exemplos de refinamento de vetor de movimento de lado de decodificador (DMVR)
[00183] Em uma operação de biprevisão, para a previsão de uma região de bloco, dois blocos de previsão, formados usando um vetor de movimento (MV) de list0 e um MV de list1, respectivamente, são combinados para formar um sinal de previsão único. No método de refinamento de vetor de movimento de lado do decodificador (DMVR), os dois vetores de movimento da biprevisão são adicionalmente refinados por um processo bilateral de correspondência de modelo. A correspondência de modelo bilateral aplicada no decodificador para realizar uma busca à base de distorção entre um modelo bilateral e as amostras de reconstrução nas figurações de referência a fim de obter um MV refinado sem transmissão de informações de movimento adicionais.
54 / 106
[00184] Em DMVR, um modelo bilateral é gerado como a combinação ponderada (isto é, média) dos dois blocos de previsão, a partir de MV0 inicial da list0 e MV1 da list1, respectivamente, como mostrado na Figura 24. A operação de correspondência de modelo consiste no cálculo de medidas de custo entre o modelo gerado e a região de amostra (ao redor do bloco de previsão inicial) na figuração de referência. Para cada uma das duas figurações de referência, o MV que produz o custo de modelo mínimo é considerado como o MV atualizado de tal lista para substituir o original. No JEM, nove candidatos de MV são buscados para cada lista. Os nove candidatos de MV incluem o MV original e 8 MVs circundantes com um deslocamento de amostra de luma para o MV original na direção horizontal ou vertical, ou ambas. Por fim, os dois novos MVs, isto é, MV0' e MV1' como mostrado na Figura 24, são usados para gerar os resultados de biprevisão finais. Uma soma de diferenças absolutas (SAD) é usada como a medida de custo. Observa-se que, ao calcular o custo de um bloco de previsão gerado por um MV circundante, o MV arredondado (ao pel de número inteiro) é realmente usado para obter o bloco de previsão em vez do MV real.
[00185] A DMVR é aplicada para o modo de mescla de biprevisão com um MV de uma figuração de referência no passado e outro de uma figuração de referência no futuro, sem a transmissão de elementos de sintaxe adicionais. No JEM, quando LIC, movimento afim, FRUC ou candidato de mescla de sub-CU é habilitado para uma CU, DMVR não é aplicada.
3. Modalidades exemplificativas relacionadas à tecnologia descrita
3.1 Exemplos de previsão de modelo linear de componente cruzado (CCLM)
[00186] Para reduzir a redundância de componente cruzado, um modo de previsão de CCLM, também conhecido como LM, é usado no JEM, para o qual as amostras de croma são previstas com base nas amostras de luma reconstruídas da mesma CU usando um modelo linear conforme a seguir:
55 / 106 predc(i,j) = • recL'(i,j) + β
[00187] No presente documento, predc (i,j) representa as amostras de croma previstas em uma CU e recL'(i,j) representa as amostras de luma reconstruídas subamostradas da mesma CU para formatos de cor 4:2:0 ou 4:2:2 enquanto recL'(i,j) representa as amostras de luma reconstruídas da mesma CU para o formato de cor 4:4:4. Os parâmetros de CCLM a e P são derivados minimizando o erro de regressão entre as amostras de luma e croma reconstruídas vizinhas ao redor do bloco atual conforme a seguir:
[00188] No presente documento, L(n) representa as amostras de luma reconstruídas vizinhas subamostradas (para formatos de cor 4:2:0 ou 4:2:2) ou originais (para formato de cor 4:4:4) superior e esquerda, C(n) representa as amostras de croma reconstruídas vizinhas superior e esquerda e o valor de /Vis igual a duas vezes o mínimo da largura e altura do bloco de conversão em código de croma atual. Para um bloco de conversão em código com um formato quadrado, as duas equações acima são aplicadas diretamente. Para um bloco de conversão em código não quadrado, as amostras vizinhas do limite mais longo são primeiramente subamostradas para terem o mesmo número de amostras conforme o limite mais curto. A Figura 25 mostra a localização das amostras reconstruídas esquerdas e acima e a amostra do bloco atual envolvida no modo de CCLM.
[00189] Esta computação de minimização de erro de regressão é realizada como parte do processo de decodificação, não apenas como uma operação de busca de codificador, portanto, nenhuma sintaxe é usada para transmitir os valores de a e 0. O modo de previsão de CCLM também inclui previsão entre os dois componentes de croma, isto é, o componente de Cr é previsto a partir do componente de Cb. Em vez de usar o sinal de amostra reconstruída, a previsão de Cb para Cr de CCLM é aplicada no domínio
56 / 106 residual. Isso é implementado adicionando um resíduo de Cb reconstruído ponderado à intraprevisão de Cr original para formar a previsão de Cr final: pred*cr (i,j) = predCr(i,j) + a • resicb'(i,j) No presente documento, resicb'(i,j) apresenta a amostra residual de Cb reconstruída na posição (i,j).
[00190] O fator de escalonamento a é derivado de uma forma similar àquela da previsão de luma para croma de CCLM. A única diferença é uma adição de um custo de regressão relativo a um valor predefinido de a na função de erro, de modo que o fator de escalonamento derivado seja tendencioso para um valor predefinido de - 0,5 conforme a seguir:
[00191] No presente documento, Cb(n) representa as amostras de Cb reconstruídas vizinhas, Cr(n) representa as amostras de Cr reconstruídas vizinhas e A é igual a (Cb(n) • Cb(n)) » 9.
[00192] O modo de previsão de luma para croma de CCLM é adicionado como um modo de intraprevisão de croma adicional. No lado do codificador, mais uma verificação de custo de RD para os componentes de croma é adicionada para selecionar o modo de intraprevisão de croma. Quando os modos de intraprevisão além do modo de previsão de luma para croma de CCLM são usados para os componentes de croma de uma CU, a previsão de Cb para Cr de CCLM é usada para a previsão de componente de Cr.
3.2 Exemplos de CCLM simplificada
[00193] Em algumas implementações existentes, o algoritmo de LMS dos parâmetros de modelo linear e β é substituído por uma equação de linha reta. Os 2 pontos (par de Luma e Croma) (A, B) são os valores mínimo e máximo dentro do conjunto de amostras de Luma vizinhas conforme representado na Figura 26. No presente documento, os parâmetros de modelo linear e β são obtidos de acordo com:
57 / 106
[00194] A divisão pode ser evitada e substituída por uma multiplicação e um deslocamento.
[00195] Para derivar o preditor de Croma, conforme à implementação de VTM atual, a multiplicação é substituída por uma operação de número inteiro como a seguir: predc(i, j) = (a • recL´(i,j))» S + β
[00196] Contudo, a implementação também é mais simples que a implementação de VTM atual, visto que o deslocamento S sempre tem o mesmo valor. Em termo de complexidade, o algoritmo proposto reduz o número de operações conforme representado na seguinte tabela: Operações Número de operações (LMS) Número de operações (tecnologia descrita) Multiplicações 2N+2+2 1 Somas 7N+3 3 “Divisões” 2 1 Comparações 2N
[00197] O número de operações é reduzido, porém, o método proposto precisa de várias comparações para obter os valores de luma mínimo e máximo da amostra vizinha.
4. Desvantagens de implementações existentes
[00198] Algumas implementações existentes sofrem das seguintes desvantagens: (1) Tanto BIO quanto CCLM precisam de regressão linear, porém, de formas simplificadas diferentes.
[00199] (2) Implementação de BIO em VTM não considera a distância de POC.
[00200] (3) As velocidades em Ref 0 são denotadas como vx°^ e Vy°\ As velocidades em Ref 1 são denotadas como vx^ e Vy1’. No projeto de BIO atual, presume-se que as velocidades nas duas figurações de referência são espelhadas de modo que v(xr> = —v^ = vx e Vy^ = —vy0> = vy (ou vx^ = v® = vx e = v® = vy). Entretanto, esta suposição pode não ser verdadeira.
58 / 106
[00201] (4) A derivação de velocidades vx e vy em BIO é supersimplificada.
[00202] (5) A derivação de vx e vy em BIO pode ser combinado com DMVR ou derivação de movimento de lado do decodificador.
[00203] (6) Sabendo vx e vy, as previsões/gradientes em Ref0/Ref1 podem ser adicionalmente refinados.
[00204] (7) Um filtro de interpolação adicional (filtro bilinear) é introduzido para interpolar pixels e limites.
[00205] (8) Algumas operações de arredondamento e recorte estão ausentes no procedimento de BIO.
[00206] (9) Precisões de operações internas podem ser adicionalmente rebaixadas.
[00207] (10) O cálculo de SAD para BIO pode ser simplificado.
[00208] (11) Quando GBi é aplicado, os valores de ponderação não são considerados apropriadamente no procedimento de derivação de BIO.
5. Métodos exemplificativos para interprevisão com refinamento
[00209] As modalidades da tecnologia descrita atualmente superam as desvantagens de implementações existentes, harmonizam o procedimento de regressão linear em BIO e CCLM e propõem modificações de BIO, fornecendo, assim, conversão em código de vídeo com eficiências de conversão em código superiores. A harmonização de previsão de modo linear, com base na tecnologia descrita, pode aprimorar tanto padrões existentes quanto futuros de conversão em código de vídeo, é elucidado nos seguintes exemplos descritos para várias implementações. Os exemplos da tecnologia descrita fornecidos abaixo explicam conceitos gerais, e não se destinam a serem interpretados como limitação. Em um exemplo, exceto se indicado explicitamente em contrário, os vários recursos descritos nestes exemplos podem ser combinados.
[00210] Denota-se a figuração de referência da figuração atual a partir
59 / 106 da lista 0 e da lista 1 por Ref0 e Ref1 respectivamente, denota-se t0=POC(atual) - POC(Ref0), t1= POC(Ref1) - POC(atual), e denota-se bloco de referência do bloco atual de Ref0 e Ref1 por refb1k0 e refb1k1, respectivamente. Para um sub-bloco no bloco atual, o MV de seu sub-bloco correspondente em refb1k0 apontando para refb1k1 é denotado por (vx, vy). Os MVs do sub-bloco em Ref0 e Ref1 são denotados por (mvL0x, mvL0y) e (mvLlx, mvLly), respectivamente.
[00211] Shift(x, s) é definido como Shift(x, s) = (x + off) » s SignShift(x, s) é definido como
[00212] No presente documento, off representa um deslocamento que é um número inteiro, por exemplo, 0 ou 2s-1.
[00213] Clip3( x, min, max) é definido como
[00214] Exemplo 1. É proposto que o módulo de otimização linear usado em BIO pode ser usado por outras ferramentas de conversão em código em um sistema de conversão em código de vídeo.
[00215] (a) O módulo de otimização linear envolve um grupo de amostras (uk, Vk, Wk) com k de 0 a N-l como entrada, dois parâmetros a e b como saída, de modo que possa ser minimizado, ou aproximadamente minimizado. A partir de Eq. (9) e Eq. (10), sabe-se que em BIO:
[00216] No presente documento, Gx(x,y) e Gy(x,y) representam
60 / 106 gradientes horizontal e vertical, respectivamente.
[00217] (b) Em um exemplo, o módulo de otimização linear usado em BIO é usado para derivar os parâmetros para CCLM. A partir de Eq. (18), Eq.(19), as notações podem ser gravadas como:
[00218] (c) Alternativamente, o módulo de otimização linear usado em outra ferramenta de conversão em código como CCLM pode ser usado para derivar vx e vy em BIO.
[00219] Exemplo 2. É proposto que, a possibilidade de e como aplicar o procedimento de BIO depende das distâncias de POC.
[00220] (a) Procedimento de BIO não é aplicado se abs(τ0) ≥ T0 ou abs(τ1) ≥ Tl. T0 e T1 são números inteiros, por exemplo, T0=T1=4. T0 e Tl podem ser números fixos ou sinalizados a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00221] (b) Procedimento de BIO não é aplicado se abs(τ0) ≥ T0 e abs(τ1) ≥ Tl. T0 e Tl são números inteiros, por exemplo, T0=T1=4. T0 e Tl podem ser números fixos ou sinalizados a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00222] (c) Procedimento de BIO não é aplicado se abs(τ0) + abs(τ1) ≥ T. T é um número inteiro, por exemplo, T = 8. T pode ser um número fixo ou sinalizado a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00223] (d) Procedimento de BIO não é aplicado se abs(abs(τ0) -
61 / 106 abs(τ1)) > T. T é um número inteiro, por exemplo, T = 8. T pode ser um número fixo ou sinalizado a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00224] (e) Procedimento de BIO não é aplicado se abs(τ0) ≥ T*abs(τ1) ou abs(τ1) ≥ T*abs(τ0). T é um número inteiro, por exemplo, T = 4. T pode ser um número fixo ou sinalizado a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00225] Exemplo 3. É proposto que os vetores de velocidade usados para refinar o valor de previsão no processo de BIO dependem de distâncias de POC. A previsão após o procedimento de BIO é calculada como em que G(0)x e G(0)y representam os gradientes horizontal e vertical em Ref0 e G(0)x e G(0)y representam os gradientes horizontal e vertical em Ref0.
[00226] (i) No projeto de BIO em VTM-3.0, e , em que vx e vy são derivados. Então, Eq. (22) é idêntico a Eq. (9).
[00227] (ii) Em um exemplo:
[00228] No presente documento, as divisões podem ser implementadas como multiplicação e deslocamento como operação de escalonamento de MV em HEVC.
[00229] Exemplo 4. Em vez de sempre presumir, primeiramente, vy igual a 0 para derivar vx, é proposto primeiramente derivar vy e, com base em
62 / 106 vy derivar vx. Alternativamente, independentemente de derivar vy ou vx, primeiramente pode depender de informações convertidas em código, por exemplo, valores dos componentes horizontal e vertical dos vetores de movimento, tamanhos de bloco, etc.
[00230] Exemplo 5. É proposto que vx e vy são derivados de uma forma iterativa.
[00231] a. Em um exemplo, vx derivado na i-ésima etapa é usado para derivar vy na i-ésima etapa, e o vy derivado na i-ésima etapa é usado para derivar vx derivado na z+1-ésima etapa. A derivação é feita iterativamente.
[00232] b. Alternativamente, vy derivado na i-ésima etapa é usado para derivar vx na i-ésima etapa e o vx derivado no i-ésima etapa é usado para derivar vy derivado na z+1-ésima etapa. A derivação é feita iterativamente.
[00233] c. A possibilidade de usar vx para derivar vy ou vy para derivar vx na mesma etapa pode depender das informações convertidas em código, como valores dos componentes horizontal e vertical dos vetores de movimento, tamanhos de bloco, etc. al.
[00234] d. Em um exemplo, vy = , em que s2, s5, s6 são definidos como em (13). é um número inteiro ou número fracionário como 1 /2 ou 1/4.
[00235] i. A operação de divisão pode ser simplificada, por exemplo, substituindo pelo deslocamento de MSB como em JEM-3.0.
[00236] ii. A operação de recorte pode ser após a operação de divisão.
[00237] e. Em um exemplo vx = , em que s1, s2 e s3 são definidos como em (13). £ é um número inteiro ou número fracionário como. 1 /2 ou 1/4.
[00238] i. A operação de divisão pode ser simplificada, por exemplo, substituindo pelo deslocamento de MSB como em JEM-3.0.
[00239] ii. A operação de recorte pode ser após a operação de divisão.
63 / 106
[00240] f. A derivação é feita iterativamente até que i alcance um número prefixado como 2.
[00241] g. Alternativamente, a derivação é feita iterativamente até que a diferença absoluta entre vx e/ou vy antes e após uma rodada de derivação seja menor que um limiar.
[00242] Exemplo 6. A derivação de vx e vy em BIO pode ser combinada com DMVR, correspondência bilateral ou outros métodos de derivação de movimento de lado do decodificador.
[00243] a. vx e vy derivados em BIO para um bloco ou sub-bloco (como um bloco de 4 x 4) podem ser usados para derivar o ponto inicial de busca de DMVR, a correspondência bilateral ou outros métodos de derivação de movimento de lado do decodificador. Supõe-se que os MVs originais para Ref0 e Ref1 são MV0 e MV1, os MVs notados como MV0’ e MV1’ como o ponto inicial de DMVR, correspondência bilateral ou outros métodos de derivação de movimento de lado do decodificador podem ser calculados como: i. em um exemplo, MV0’ = MV0+ (vx, vy), MVl’=MVl-(vx, vy); ii. em um exemplo, MV0’ = MV0- (vx, vy), MV1 ’=MVl+(vx, vy); iii. em um exemplo, MV0’ = MV0 + Escla(vx, vy), MV1 ’= MV1 - Escla(vx, Vy); iv. em um exemplo, MV0’ = MV0 - Escla(vx, vy), MV1 ’=MV1 + Escla(vx, Vy); v. em um exemplo, MV0’ = Clipe( MV0 + Escla(vx, vy)), MV1 ’= Clipe( MV1 - Escla(vx, vy)); vi. em um exemplo, MV0’ = Clipe( MV0 - Escla(vx, vy)), MV1 ’= Clipe( MV1 + Escla (vx, vy)); b. Alternativamente, os MVs de saída de DMVR,
64 / 106 correspondência bilateral ou outros métodos de derivação de movimento de lado do decodificador para um bloco ou sub-bloco (como um bloco de 4 x 4) podem ser usados para derivar vx e vy usados em BIO. Supõe-se que os MVs originais para Ref0 e Ref1 são MV0 e MV1, os MVs de saída são MV0’ e MV1’, então, vx e vy podem ser calculados como i. em um exemplo, (vx, vy)= Escla (MV0’ - MV0); ii. em um exemplo, (vx, vy)= Escla (MV0 - MV0’); iii. em um exemplo, (vx, vy)= Escla (MV1’ - MV1); iv. em um exemplo, (vx, vy)= Escla (MV1 - MV1’); v. em um exemplo, (vx, vy)= (Escla (MV0’ - MV0)+ Escla (MV1’ - MVl))/2; vi. em um exemplo, (vx, vy)= (Escla (MV0 - MV0’)+ Escla (MV1 - MVl’))/2;
[00244] Exemplo 7. É proposto que o vx e vy derivados podem ser usados para refinar as previsões e gradientes em Ref0 e Ref1. Então, as previsões e gradientes refinados são usados para derivar novos vx e vy.
[00245] a. O procedimento de derivação e refinamento pode ser realizado iterativamente até que a diferença absoluta entre vx ou vy antes e após uma rodada de derivação seja menor que um limiar. Alternativamente, o procedimento de derivação e refinamento pode ser feito iterativamente até que a iteração alcance um número predefinido de vezes. Por exemplo, o número é 2.
[00246] b. Supõe-se que os MVs originais para Ref0 e Ref1 sejam MV0 e MV1, os MVs notados como MV0’ e MV1’ para obter as previsões e gradientes refinados podem ser calculados como i. em um exemplo, MV0’ = MV0+ (vx, vy), MVl’=MVl-(vx, vy); ii. em um exemplo, MV0’ = MV0- (vx, vy), MVl’=MVl+(vx, vy);
65 / 106 iii. em um exemplo, MV0’ = MV0 + Escla(vx, vy), MV1’=MV1 - Escla (vx, Vy); iv. em um exemplo, MV0’ = MV0 - Escla (vx, vy), MV1’=MV1 + Escla (vx, Vy); v. em um exemplo, MV0’ = Clipe( MV0 + Escla(vx, vy)), MV1’= Clipe( MV1 - Escla (vx, vy)); vi. em um exemplo, MV0’ = Clipe( MV0 - Escla (vx, vy)), MV1’= Clipe( MV1 + Escla (vx, vy));
[00247] Exemplo 8. É proposto que BIO possa ser aplicado a amostras parciais dentro de um bloco ou um sub-bloco. Em um exemplo, para amostras localizadas na primeira/última fileira/primeira/última coluna, BIO não é aplicado.
[00248] Exemplo 9. É proposto que apenas um tipo de filtro de interpolação seja usado para um componente de cor quando BIO é aplicado.
[00249] a. Em um exemplo, apenas o filtro de interpolação de 8 derivações é usado no componente de luma quando BIO é aplicado.
[00250] b. Alternativamente, ademais, para reduzir a largura de banda de memória, é proposto restringir o tamanho/a faixa de amostras para ser buscada menos do que aquela exigida por filtros de interpolação.
[00251] c. Alternativamente, ademais, o preenchimento pode ser aplicado se algumas amostras estiverem localizadas em posições fora de um dado tamanho/dada faixa.
[00252] d. Supõe-se que o bloco atual seja M*N, o tamanho exigido de subamostras seja (M+G)*(N+G), o tamanho exigido por filtro de interpolação de L derivações deve ser (M+G + L-l)x(N+G+L-l). É proposto que o tamanho permitido de amostras de luma de número inteiro a ser buscado com o procedimento de BIO seja (M+L-l+k)x(N+L-l+k). Por exemplo, k é 0, ou 1 e k é menor que G. Se uma amostra de luma de número inteiro for exigida pelo processo de interpolação, mas não tiver permissão para ser buscada, então,
66 / 106 deve ser preenchida por uma amostra de luma adjacente.
[00253] i. A Figura 27 mostra um exemplo de filtragem de interpolação no procedimento de BIO. O tamanho de bloco atual é M x N, M = N = 8 no exemplo. O tamanho exigido de subamostras é (M+2)x(N+2) devido ao cálculo de gradiente. Portanto, as amostras de número inteiro exigidas pelo filtro de interpolação são (M+2+7)x(N+2+7) que é igual a 17 x 17 no exemplo. Entretanto, apenas (M+7)x(N+7), que é igual a 15 x 15 no exemplo, é exigido que amostras de número inteiro sejam buscadas. Outras amostras (círculos pretos no filtro) exigidas pelo filtro de interpolação são preenchidas pelas amostras buscadas adjacentes.
[00254] e. Em um exemplo, os gradientes de posições (x,y) em que x=- l ou y=-l ou x=W ou y=H não são calculados e BIO não é aplicado nestas posições. Supõe-se a esquerda superior do bloco atual é (0,0) e a largura/altura do bloco atual é W/H.
[00255] f. Em um exemplo, os gradientes de posições (x,y) em que x=- l ou y=-l ou x=W ou y=H são calculados de uma forma diferente. Por exemplo, º gradientHL0[x][y] = (predSamplesL0[hx +l][vy] - predSampleL0[hx][vy])»4 se hx==l, (predSamplesL0[hx][vy] - predSampleL0[hx-l][vy])»4 se hx== nCbW, (predSamplesL0[hx+l][vy] - predSampleL0[hx-l][vy])»4 De outro modo.
[00256] º gradientVL0[x][y] = (predSampleL0[hx] [vy+1 ] - predSampleL0[hx] [vy])»4 se vy ==1, (predSampleL0[hx] [vy] - predSampleL0[hx] [vy-1 ])»4 se vy ==nCbH, (predSampleL0[hx][vy+l] - predSampleL0[hx][vy-l])»4 de outro modo.
[00257] º gradientHLl[x][y] = (predSamplesLl[hx +l][vy] - predSampleLl[hx][vy])»4 se hx=l, (predSamplesLl[hx][vy] -
67 / 106 predSampleLl[hx-l][vy])»4 se hx== nCbW, (predSamplesL0[hx+l][vy] - predSampleLl[hx-l][vy])»4 De outro modo.
[00258] º gradientVLl[x][y] = (predSampleLl [hx] [vy+1 ] - predSampleLl [hx][vy])»4 se vy ==1, (predSampleLl [hx] [vy] - predSampleLl [hx][vy-1 ])»4 se vy ==nCbH, (predSampleLl [hx] [vy+1 ] - predSampleLl [hx][vy-1 ])»4 de outro modo.
[00259] Em outro exemplo, º gradientHL0[x][y] = (predSamplesL0[hx +l][vy] - predSampleL0[hx][vy])»3 se hx=l, (predSamplesL0[hx][vy] - predSampleL0[hx-l][vy])»3 se hx==nCbW, (predSamplesL0[hx+l][vy] - predSampleL0[hx-l][vy])»4 De outro modo.
[00260] º gradientVL0[x][y] = (predSampleL0[hx] [vy+1 ] - predSampleL0[hx] [vy])»3 se vy ==1, (predSampleL0[hx] [vy] - predSampleL0[hx] [vy-1 ])»3 se vy ==nCbH, (predSampleL0[hx][vy+l] - predSampleL0[hx][vy-l])»4 de outro modo.
[00261] º gradientHLl[x][y] = (predSamplesLl[hx +l][vy] - predSampleLl[hx][vy])»3 se hx=l, (predSamplesLl[hx][vy] - predSampleLl[hx-l][vy])»3 se hx==nCbW, (predSamplesL0[hx+l][vy] - predSampleLl[hx-l][vy])»4 De outro modo.
[00262] º gradientVLl[x][y] = (predSampleLl [hx] [vy+1 ] - predSampleLl [hx][vy])»3 se vy ==1, (predSampleLl [hx] [vy] - predSampleLl [hx][vy-1 ])»3 se vy ==nCbH, (predSampleLl [hx] [vy+1 ] - predSampleLl [hx][vy-1 ])»4 de outro modo.
[00263] g. Em um exemplo, antes de calcular gradientes, as amostras
68 / 106 externas (círculos pretos na Figura 23) não são interpoladas por preenchimento.
[00264] i. Por exemplo, predSampleL0[0][vy]= predSampleL0[l][vy], predSampleL0 [nCbW+1 ] [vy]= predSampleL0 [nCbW] [vy], predSampleL0[hx] [0]= predSampleL0[hx] [1], predSampleL0[hx][nCbH+l]= predSampleL0[hx][nCbH] e predSampleL 1 [0] [vy]= predSampleL 1 [1] [vy], predSampleLl [nCbW+l][vy]= predSampleLl [nCbW][vy], predSampleLl [hx][0]= predSampleLl [hx][l], predSampleLl [hx][nCbH+l]= predSampleLl[hx][nCbH] para todo hx e vy válidos.
[00265] h. Em um exemplo, o método de cálculo de gradientes em BIO e o método de cálculo de gradientes em Filtro em laço adaptativo (ALF) é o mesmo método.
[00266] i. Em um exemplo, o método de cálculo de gradientes para BIO em VTM-3 também é usado para calcular gradientes para ALF.
[00267] ii. Em um exemplo, o método de cálculo de gradientes para ALF em VTM-3 também é usado para calcular gradientes para BIO.
[00268] Exemplo 10. Após as alterações serem propostas ao processo de previsão de fluxo óptico bidirecional.
[00269] a. Os valores de gradiente podem ser deslocados por um valor diferente de 4. Em um exemplo, as variáveis gradientHL0[x][y], gradientVL0[x][y], gradientHLl[x][y] e gradientVLl[x][y] são derivadas conforme a seguir: gradientHL0[x][y] = SignShift (predSamplesL0[hx +l][vy] - predSampleL0 [hx- l][vy],S) gradientVL0[x][y] = SignShift (predSampleL0[hx][vy+l] - predSampleL0[hx][vy-l], S) gradientHLl[x][y] = SignShift (predSamplesLl[hx+l][vy] - predSampleLl [hx- l][vy],S) gradientVLl[x][y] = SignShift (predSampleLl[hx][vy+l] -
69 / 106 predSampleLl[hx][vy-l], S) i. Em um exemplo, S é um número fixo como 4 ou 5.
[00270] ii. Em um exemplo, S depende da profundidade de bit de amostra. Por exemplo, S é igual a B-P em que B é a profundidade de bit de amostra como 8, 10 ou 12, e P é um número inteiro como 6.
[00271] b. Valores de gradiente devem estar em uma faixa. Em um exemplo, as variáveis gradientHL0[x][y], gradientVL0[x][y], gradientHLl[x][y] e gradientVLl[x][y] devem ser garantidas de serem representadas por i, bit de K de número inteiro, por exemplo, K = 8 ou 16.
[00272] i. Por exemplo, após a derivação, os gradientes são recortados como gradientHL0[x][y] = Clip3(-2K_1, 2K4-1, gradientHL0[x][y]) gradientVL0[x][y] = Clip3(-2K_1, 2K4-1, gradientVL0[x][y]) gradientHLl[x][y] = Clip3(-2K_1, 2K4-1, gradientHLl[x][y]) gradientVLl[x][y] = Clip3(-2K_1, 2K4-1, gradientVLl[x][y]) c. As variáveis internas temp, tempX e tempY são derivadas conforme a seguir: temp[x][y] = SignShift(predSamplesL0[hx][vy] - predSamplesLl[hx][vy], SI) tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHLl[x][y], S2) tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVLl[x][y], S3) i. Em um exemplo, S1, S2 e S3 são números fixos como SI =6, S2=S3=3.
[00273] ii. Em um exemplo, S1, S2 e S3 dependem da profundidade de bit de amostra. Por exemplo, S1=B-P1, S2=B-P2 e S3=B-P3 em que B é a profundidade de bits de amostra como 8, 10 ou 12, e Pl, P2 e P3 are números inteiros, por exemplo, Pl =4, P2=P3=7.
[00274] d. As variáveis internas temp, tempX e tempY devem ser garantidas de serem representadas por um bit de número inteiro de bit de K1, um número inteiro de bit de K2 e um número inteiro de bit de K3, por exemplo, K1 = 8 ou 16, K2 = 8 ou 16, K3 = 8 ou 16.
70 / 106
[00275] i. Por exemplo, as variáveis internas são recortadas após serem derivadas como temp [x][y] = Clip3(-2K1-1, 2K1-1-1, gradientHL0[x][y]) tempX [x][y] = Clip3(-2K2-1, 2K2-1-1, gradientVL0[x][y]) tempY [x][y] = Clip3(-2K3-1, 2K3-1-1, gradientHLl[x][y]) e. As variáveis internas sGx2, sGy2, sGxGy, sGxdl e sGydl devem estar dentro de uma faixa. Em um exemplo, estas variáveis devem ser garantidas como sendo representadas por um bit de número inteiro de bit de K1, um número inteiro de bit de K2, um número inteiro de bit de K3, um número inteiro de bit de K4 e um número inteiro de bit de K5, por exemplo, K1 = 8 ou 16, K2 = 8 ou l6, K3 = 8 ou 16.
[00276] i. Por exemplo, as variáveis internas são deslocadas para a direita após serem derivadas como sGx2 = Shift(sGx2, SI) sGy2 = Shift(sGy2, S2) sGxGy = SignShift (sGxGy, S3) sGxdl = SignShift (sGxdl, S4) sGydl = SignShift (sGydl, S5) Em um exemplo, S1, S2, S3, S4 e S5 são números fixos como 4 ou 5.
[00277] Alternativamente, S1, S2, S3, S4 e S5 dependem da profundidade de bit de amostra. . Por exemplo, S1=B-P1, S2=B-P2, S3=B-P3, S4=B-P4 e S5=B-P5, em que B é a profundidade de bit de amostra como 8, 10 ou 12, e Pl, P2, P3, P4 e P5 são números inteiros.
[00278] ii. Por exemplo, as variáveis internas são recortadas após serem derivadas como sGx2 = Clip3(0, 2K1-1, sGx2) sGy2 = Clip3(0, 2K2-1, sGy2) sGxGy = ClipSk3-1, 2K3-1-1, sGxGy) sGxdl = Chp3(-2K4-1, 2K4-1-1, sGxdl) sGydl = Clip3(-2k5-1, 2K5-1-1, sGydl)
71 / 106 f. As variáveis gradientHL0[x][y], gradientVL0[x][y], gradientHLl [x][y] e gradientVLl[x][y] são derivadas apenas para posições selecionadas.
[00279] i. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com x%Q==0. Por exemplo, Q= 2 ii. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com x%Q=l. Por exemplo, Q= 2 iii. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==0. Por exemplo, Q= 2 iv. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==l. Por exemplo, Q= 2 v. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==0 ou y%Q==3. Por exemplo, Q = 4; g. As variáveis internas temp[x][y], tempX[x][y] e tempY[x][y] são derivadas apenas para posições selecionadas: i. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com x%Q==0. Por exemplo, Q= 2 ii. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com x%Q=l. Por exemplo, Q= 2 iii. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==0. Por exemplo, Q= 2 iv. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==l. Por exemplo, Q= 2 v. Em um exemplo, elas são calculadas apenas para amostras na posição (x, y) com y%Q==0 ou y%Q==3. Por exemplo, Q = 4; vi. Em um exemplo, temp[x][y], tempX[x][y], tempY[x][y] e gradientHL0[x][y], gradientVL0[x][y], gradientHLl[x][y], gradientVLl[x][y] são calculadas para amostras nas mesmas posições, por exemplo, posições nos Exemplos g.i~g.v.
72 / 106
[00280] h. As variáveis internas sGx2, sGy2, sGxGy, sGxdl e sGydl são calculadas apenas com acúmulo de amostras nas posições selecionadas. Em uma maneira de formulação , em que S é o conjunto de posições selecionadas.
[00281] i. Em um exemplo, as posições selecionadas são x=0, 1, 2, 3 e y = 0, 1, 2, 3; ii. Em um exemplo, as posições selecionadas são x=0, 2 e y = 0, 1, 2, 3; iii. Em um exemplo, as posições selecionadas são x=1, 2 e y = 0, 1, 2, 3; iv. Em um exemplo, as posições selecionadas são x=1, 3 e y = 0, 1, 2, 3; v. Em um exemplo, as posições selecionadas são x=2, 3 e y = 0, 1, 2, 3; vi. Em um exemplo, as posições selecionadas são x=0, 3 e y = 0, 1, 2, 3; vii. Em um exemplo, as posições selecionadas são y=0, 2 e x = 0, 1, 2, 3; viii. Em um exemplo, as posições selecionadas são y=l, 2 e x = 0, 1, 2, 3; ix. Em um exemplo, as posições selecionadas são y=l, 3 e x = 0, 1, 2, 3; x. Em um exemplo, as posições selecionadas são y=2, 3 e x = 0, 1, 2, 3; xi. Em um exemplo, as posições selecionadas são y=0, 3 e x =
73 / 106
0, 1, 2, 3; xii.
Em um exemplo, as posições selecionadas são x=-l, 4 e y = -1, 0, 1, 2, 3, 4; xiii.
Em um exemplo, as posições selecionadas são x=0, 3 e y = -1, 0, 1, 2, 3, 4; xiv.
Em um exemplo, as posições selecionadas são x=l, 2 e y = -1, 0, 1, 2, 3, 4; xv.
Em um exemplo, as posições selecionadas são x=-l, 1, 3 e y = -1, 0, 1, 2, 3, 4; xvi.
Em um exemplo, as posições selecionadas são x=0, 2, 4 e y = -1, 0, 1, 2, 3, 4; xvii.
Em um exemplo, as posições selecionadas são x=-l, 1, 2, 4 e y = -1, 0, 1, 2, 3 4 xviii.
Em um exemplo, as posições selecionadas são x=0, 1, 2, 3 e y = -1, 0, 1, 2, 3 4 xix.
Em um exemplo, as posições selecionadas são y=-l, 4 e x = -1, 0, 1, 2, 3, 4; xx.
Em um exemplo, as posições selecionadas são y=0, 3 e x = -1, 0, 1, 2, 3, 4; xxi.
Em um exemplo, as posições selecionadas são y=l, 2 e x = -1, 0, 1, 2, 3, 4; xxii.
Em um exemplo, as posições selecionadas são y=-l, 1, 3 e x = -1, 0, 1, 2, 3, 4; xxiii.
Em um exemplo, as posições selecionadas são y=0, 2, 4 e x = -1, 0, 1, 2, 3, 4; xxiv.
Em um exemplo, as posições selecionadas são y=-l, 1, 2, 4 e x = -1, 0, 1,2, 3, 4; xxv.
Em um exemplo, as posições selecionadas são y=0, 1, 2, 3 e x = -1, 0, 1, 2, 3, 4;
74 / 106 i. A operação de divisão usada para derivar vx e vy é substituído em uma forma mais sofisticadas.
[00282] i. Em um exemplo, vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -(sGxdI«3)»M): 0. M pode ser Floor(Log2(sGx2)) ou Ceiling(Log2(sGx2)), dependendo do valor de sGx2. Por exemplo, M é Ceiling (Log2(sGx2)) se 3*sGx2 for maior que 2Floor(Log2(sGx2ir23 de outro modo, M é Floor(Log2(sGx2)). Em outro exemplo, M é Ceiling (Log2(sGx2)) se sGx2 for maior que T, de outro modo, M é Floor(Log2(sGx2)). Por exemplo, T=( Floor(Log2(sGx2))+ Ceiling (Log2(sGx2)))/2. Em outro exemplo, M é Ceiling (Log2(sGx2)) se sGx2*sGx2 for maior que 2 Floor(Log2 sGx2 +1 2 * ( » , de outro modo, M é Floor(Log2(sGx2)).
[00283] 1. Alternativamente, vx = sGx2 >0 7 Clip3 (-mvRefineThres, mvRefineThres, -((sGxdI«3)+Deslocamento)»M): 0. Deslocamento é um número inteiro, como 1«(M-1).
[00284] a. Deslocamento pode depender de sGx2.
[00285] ii. Em um exemplo, vy = sGy2 > 0 ? Clip3 (-mvRefineThres, mvRefineThres, ((sGydI«3) - ((vx*sGxGym)«12 + vx*sGxGys)»l)»M : 0. M pode ser Floor(Log2(sGy2)) ou Ceiling(Log2(sGy2)), dependendo do valor de sGy2. Por exemplo, M é Ceiling (Log2(sGy2)) se 3*sGy2 for maior que 2Fioor(Log2(sGy2))+2, de outro modo, M é Floor(Log2(sGy2)). Em outro exemplo, M é Ceiling (Log2(sGy2)) se sGy2 for maior que T, de outro modo, M é Floor(Log2(sGy2)). Por exemplo, T=(Floor(Log2(sGy2))+Ceiling (Log2(sGy2)))/2. Em outro exemplo, M é Ceiling (Log2(sGy2)) se sGy2*sGy2 for maior que 22*Floor(Log2(sGy2))+1, de outro modo, M é Floor(Log2(sGy2)).
[00286] 1. Alternativamente, vy = sGy2 >07 Clip3 (-mvRefineThres, mvRefineThres, (((sGydI«3) - ((vx*sGxGym) «12 + vx*sGxGys)»l)+Deslocamento)»M: 0. Deslocamento é um número inteiro como 1«(M-1).
75 / 106
[00287] a. Deslocamento pode depender de sGy2.
[00288] iii. sGxGym e sGxGys são calculados dependendo do sinal de sGxGy. Supõe-se que sign(x)=l se x >=0 e sign(x)=-l se x <0, então, sGxGym = sign(sGxGy) *|sGxGy|»W; sGxGys = sign(sGxGy) *(| sGxGy| & ((1«W)- 1)).
[00289] 1. W pode ser um número fixo como 12. Ou pode depender da profundidade de bit de amostra.
[00290] iv. A operação de divisão no procedimento de BIO é calculada por uma tabela de consulta.
[00291] (i) A mesma tabela de consulta também é usada em CCLM para substituir a operação de divisão.
[00292] Exemplo 11. A decisão de ligar/desligar BIO com base em cálculos de SAD de bloco inteiro e sub-bloco pode ser simplificada calculando apenas o cálculo de SAD de sub-bloco. Alternativamente, o cálculo de SAD pode ser substituído por outras regras, como MR-SAD.
[00293] Exemplo 12. o cálculo de SAD em BIO é feito apenas com amostras em posições selecionadas.
[00294] a. subCuLevelSumAbsoluteDiff[ xSbldx ][ ySbldx ]= SiSj Abs(predSamplesL0L[(xSbIdx«2)+l+i][(ySbIdx«2)+l+j] - predSamplesLlL[(xSbIdx«2)+l+i][ (ySbIdx«2)+l+j]) com i, j G S em que S é o conjunto de posições selecionadas.
[00295] i. Em um exemplo, as posições selecionadas são i = 0,2 e j = 0, 1, 2, 3; ii. Em um exemplo, as posições selecionadas são i=l, 2 e j = 0, 1, 2, 3; iii. Em um exemplo, as posições selecionadas são i=l, 3 e j = 0, 1, 2, 3; iv. Em um exemplo, as posições selecionadas são i=2, 3 e j =0, 1, 2, 3;
76 / 106 v. Em um exemplo, as posições selecionadas são i=0, 3 e j =0, 1, 2, 3; vi. Em um exemplo, as posições selecionadas são j=0, 2 e i = 0, 1, 2, 3; vii. Em um exemplo, as posições selecionadas são j=l, 2 e i = 0, 1, 2, 3; viii. Em um exemplo, as posições selecionadas são j=l, 3 e i = 0, 1, 2, 3; ix. Em um exemplo, as posições selecionadas são j=2, 3 e i = 0, 1, 2, 3; x. Em um exemplo, as posições selecionadas são j=0, 3 e i = 0, 1, 2, 3; xii. Em um exemplo, as posições selecionadas são i=l, 2 e j = 1,2;
[00296] b. Alternativamente, subCuLevelSumAbsoluteDiff[ xSbldx ][ ySbldx ]= maxij Abs(predSamplesL0L[(xSbIdx«2)+l+i][(ySbIdx«2)+l+j] - predSamplesLlL[(xSbIdx«2)+l+i][ (ySbIdx«2)+l+j]) com i, j G S em que S é o conjunto de posições selecionadas.
[00297] c. Alternativamente, subCuLevelSumAbsoluteDiff[ xSbldx ][ ySbldx ]= min,., Abs(predSamplesL0L[(xSbIdx«2)+l+i][(ySbIdx«2)+l+j] - predSamplesLlL[(xSbIdx«2)+l+i][ (ySbIdx«2)+l+j]) com i, j G S, em que S é o conjunto de posições selecionadas.
[00298] d. O valor de limiar subCuLevelAbsDiffThres pode ser adaptativo.
[00299] i. Pode depender de informações de conversão em código como QP e distância de POC ii. Pode ser sinalizado a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
77 / 106
[00300] Exemplo 13. O cálculo de SAD em BIO é realizado apenas com amostras em sub-blocos selecionados.
[00301] a. Alternativamente, ademais, o cálculo de SAD para cada sub- bloco pode envolver apenas parciais de amostras dentro de um sub-bloco.
[00302] b. cuLevelSumAbsoluteDiff = S xsbidx S ysbidx subCuLevelSumAbsoluteDiff[ xSbldx ] [ ySbldx ] com xSbldx, ySbldx G S, em que S é o conjunto de sub-blocos selecionados.
[00303] i. Em um exemplo, as posições selecionadas são xSbldx % 2 == 0; ii. Em um exemplo, as posições selecionadas são xSbldx % 2 == 1; iii. Em um exemplo, as posições selecionadas são xSbldx % 4 == 0; iv. Em um exemplo, as posições selecionadas são xSbldx ==0 ou xSbIdx== (cbWidth»2)-l; v. Em um exemplo, as posições selecionadas são xSbldy % 2 == 0; vi. Em um exemplo, as posições selecionadas são xSbldy % 2 == 1; vii. Em um exemplo, as posições selecionadas são xSbldy % 4 == 0; viii. Em um exemplo, as posições selecionadas são xSbldy =0 ou xSbIdy== (cbHeight»2)-l; ix. Em um exemplo, as posições selecionadas são (xSbldy =0 ou xSbIdy== (cbHeight»2)-l), e (xSbIdy==0 ou xSbIdy== (cbHeight»2)-l); c. cuLevelSumAbsoluteDiff = Max xsbidx, ysbidx subCuLevelSumAbsoluteDiff[ xSbldx ] [ ySbldx ] com xSbldx, ySbldx G S d. cuLevelSumAbsoluteDiff = Min xSbidx, ySbidx subCuLevelSumAbsoluteDiff[ xSbldx ] [ ySbidx ] com xSbidx, ySbidx 6 S
78 / 106 e. O valor de limiar cuLevelAbsDiffThres pode ser adaptativo.
[00304] i. Pode depender de informações de conversão em código como QP e distância de POC ii. Pode depender do modo de conversão em código como o modo de AMVP, modo de mescla ou modo de MMVD (mescla com MV diferença).
[00305] iii. Pode ser sinalizado a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/CTU/CU.
[00306] Exemplo 14. Para os Exemplos 12 e 13, os métodos propostos também podem ser aplicáveis a outros casos em que SAD é substituído por outras regras. Ou seja, apenas parte das amostras dentro de um sub-bloco, e/ou parte dos sub-blocos podem ser considerados para decidir a utilização de BIO.
[00307] Exemplo 15. A forma como derivar as variáveis no procedimento de BIO pode ser diferente quando GBi é aplicado ou não.
[00308] a. Alternativamente, ademais, a derivação pode ser diferente para GBi com diferentes valores de ponderação.
[00309] b. Supõe-se que os valores de ponderação sejam W0 e W1 para Ref0 e Ref1 no processo de GBi, então, os blocos de previsão são primeiramente ponderados antes da derivação das variáveis usadas no procedimento de BIO, como cálculo de SAD, cálculo de gradiente.
[00310] i. Denotados, os dois blocos de previsão por predSamplesL0[x] [y] e predSamplesLl[x][y], W0* predSamplesL0[x][y] e predSamplesLl[x][y] e Wl* predSamplesLl[x][y] são usados como as entradas para BIO.
[00311] c. Alternativamente, predSamplesL0[x][y] é pré-calculada como Shift(W0* predSamplesL0[x][y], SO) e predSamplesLl[x][y] é pré- calculada como Shift(Wl* predSamplesLl[x][y], SI) antes da derivação das
79 / 106 variáveis usadas no procedimento de BIO.
[00312] i. S0 e S1 podem depender da profundidade de bit de amostra.
[00313] ii. S0 e S1 podem depender de W0 e W1.
[00314] iii. S0 e S1 podem ser números fixos como 2.
[00315] d. Alternativamente, os valores do item de correção também podem ser ponderados ao gerar o bloco de previsão final de um bloco.
[00316] i. Ao derivar parâmetros usados no procedimento de BIO, os dois blocos de previsão sem serem ponderados são usados como entradas para BIO como técnica anterior. Entretanto, os blocos de previsão final são gerados por valores ponderados de blocos de previsão e valores ponderados de item de correção.
[00317] ii. As ponderações aplicadas ao item de correção podem ser iguais àquelas usadas para blocos de previsão. Alternativamente, diferentes ponderações podem ser aplicadas ao item de correção.
[00318] Exemplo 16. É proposto que o valor do item de correção deva estar em uma faixa específica.
[00319] (a) Por exemplo, o item de correção é recortado para [minCorrection, maxCorrection].
[00320] i. minCorrection e maxCorrection podem ser fixos, por exemplo, - 32 e 32; ii. minCorrection e maxCorrection podem depender da profundidade de bit de amostra. Por exemplo, minCorrection = - (32«(BitDepth-8)), maxCorrection=32«(BitDepth- 8)).
[00321] iii. minCorrection e maxCorrection podem depender da largura e/ou altura de bloco.
[00322] iv. minCorrection e maxCorrection podem ser sinalizadas a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/linha de CTU/CTU/CU.
[00323] (b) Por exemplo, item de correção é dividido por um fator ou
80 / 106 deslocado para a direita se estiver fora da faixa.
[00324] Exemplo 17. É proposto que a saída de previsão final em BIO deva estar em uma faixa específica.
[00325] (a) Por exemplo, a saída de previsão final em BIO é recortada a [minPred, maxPred], i. minPred e maxPred podem ser números fixos como -32 e 32; ii. minPred e maxPred podem depender da profundidade de bit de amostra. Por exemplo, minPred = -(32«(BitDepth-8)), maxCorrection=32«(BitDepth-8)).
[00326] iii. minPred e maxPred podem depender da largura e/ou altura de bloco.
[00327] iv. minPred e maxPred podem ser sinalizadas a partir do codificador para o decodificador em VPS/SPS/PPS/cabeçalho de fatia/cabeçalho de grupo de ladrilho/ladrilho/linha de CTU/CTU/CU.
[00328] Os exemplos descritos acima podem ser incorporados no contexto do método descrito abaixo, por exemplo, métodos 2810, 2820, 2830, 2840, 2850 e 2860, que podem ser implementados em um decodificador de vídeo ou um codificador de vídeo.
[00329] A Figura 28A mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2810 inclui, na etapa 2812, determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, um primeiro modelo de otimização linear para a conversão usando um primeiro modo de conversão em código, em que o primeiro modelo de otimização linear é derivado de um segundo modelo de otimização linear que é usado para a conversão usando um segundo modo de conversão em código.
[00330] O método 2810 inclui, na etapa 2814, realizar, com base na determinação, a conversão.
[00331] A Figura 28B mostra um fluxograma de um método
81 / 106 exemplificativo para processamento de vídeo. O método 2820 inclui, na etapa 2822, habilitar, com base em um ou mais parâmetros de contagem de ordem de figuração (POC) associados a uma figuração de um bloco atual de vídeo, um primeiro modo de previsão ou um segundo modo de previsão diferente do primeiro modo de previsão, sendo o primeiro modo de previsão um modo de conversão em código usando fluxo óptico.
[00332] O método 2820 inclui, na etapa 2824, realizar, com base no primeiro modo ou no segundo modo, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00333] A Figura 28C mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2830 inclui, na etapa 2832, derivar consecutivamente, com base em informações convertidas em código associadas a um bloco atual de vídeo, um ou mais vetores de velocidade (vx, vy) associados a uma figuração de referência do bloco atual.
[00334] O método 2830 inclui, na etapa 2834, realizar, com base em um ou mais vetores de velocidade, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo, em que as informações convertidas em código compreendem um valor de um componente horizontal de um vetor de movimento do bloco atual, um valor de um componente vertical do vetor de movimento do bloco atual, ou um tamanho do bloco atual.
[00335] A Figura 28D mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2840 inclui, na etapa 2842, realizar, mediante uma determinação de que um modo de conversão em código usando fluxo óptico foi habilitado para um bloco atual de vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual.
[00336] O método 2840 inclui, na etapa 2844, realizar, com base na operação de filtragem, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
82 / 106
[00337] A Figura 28E mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2850 inclui, na etapa 2852, determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, um algoritmo de computação de valor de gradiente para uma ferramenta de fluxo óptico.
[00338] O método 2850 inclui, na etapa 2854, realizar, com base na determinação, a conversão.
[00339] A Figura 28F mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2860 inclui, na etapa 2862, realizar uma decisão, com base em um ou mais cálculos de soma de diferença absoluta (SAD) para um sub-bloco de um bloco atual de vídeo, a respeito de uma habilitação seletiva de um modo de conversão em código usando fluxo óptico para o bloco atual.
[00340] O método 2860 inclui, na etapa 2864, realizar, com base na decisão, uma conversão entre o bloco atual e uma representação de corrente de bits do bloco atual.
[00341] A Figura 28G mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2870 inclui, na etapa 2872, derivar, com base em uma habilitação seletiva de um processo aprimoramento de biprevisão generalizado (GBi) para um bloco atual de vídeo, um ou mais parâmetros de um modo de conversão em código usando fluxo óptico para o bloco atual.
[00342] O método 2870 inclui, na etapa 2874, realizar, com base no um ou mais parâmetros do modo de conversão em código usando fluxo óptico, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00343] A Figura 28H mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2880 inclui, na etapa 2882, realizar, para um bloco atual de vídeo convertido em código com um
83 / 106 modo de conversão em código usando fluxo óptico, uma operação de recorte em um termo de correção de uma saída de previsão final do modo de conversão em código usando fluxo óptico.
[00344] O método 2880 inclui, na etapa 2884, realizar, com base na saída de previsão final, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00345] A Figura 28I mostra um fluxograma de um método exemplificativo para processamento de vídeo. O método 2890 inclui, na etapa 2892, realizar, mediante uma determinação de que um modo de conversão em código usando fluxo óptico foi habilitado para um bloco atual de vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual.
[00346] O método 2890 inclui, na etapa 2894, realizar, mediante uma determinação de que pelo menos uma amostra do bloco atual está localizada fora de uma faixa predeterminada, uma operação de preenchimento.
[00347] O método 2890 inclui, na etapa 2896, realizar, com base na operação de filtragem e na operação de preenchimento, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00348] Em algumas modalidades, as soluções técnicas seguintes podem ser implementadas: A1. Um método para processar vídeo compreendendo: determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, um primeiro modelo de otimização linear para a conversão usando um primeiro modo de conversão em código, em que o primeiro modelo de otimização linear é derivado de um segundo modelo de otimização linear que é usado para a conversão usando um segundo modo de conversão em código; e realizar, com base na determinação, a conversão.
[00349] A2. O método da solução Al, em que o segundo modo de
84 / 106 conversão em código é um modo de previsão de fluxo óptico bidirecional (BDOF).
[00350] A3. O método da solução A2, em que o segundo modelo de otimização linear compreende N grupos de amostras (uk, vk, wk) como um parâmetro de entrada e dois parâmetros de saída, a e b, e em que o segundo modelo de otimização linear minimiza ou minimiza aproximadamente
[00351] A4. O método da solução A3, em que uk = , e b = vy, em que representa uma amostra de luma na localização de pixel (%, y) no quadro de referência z, e em que e representam um gradiente horizontal e um gradiente vertical da amostra de luma, respectivamente.
[00352] A5. O método da solução A3, em que uk = , e b = β, em que C(n) representam uma amostra de croma reconstruída vizinha superior e uma esquerda, em que L(n) representa uma amostra de luma reconstruída vizinha superior e uma esquerda, e em que α e β representam parâmetros do segundo modelo de otimização linear.
[00353] A6. O método da solução Al, em que o segundo modo de conversão em código é um modo de previsão linear de modelo de componente cruzado.
[00354] A7. Um método para processar vídeo compreendendo: habilitar, com base em uma ou mais parâmetros de contagem de ordem de figuração (POC) associados a uma figuração de um bloco atual de vídeo, um primeiro modo de previsão ou um segundo modo de previsão diferente do primeiro modo de previsão, em que o primeiro modo de previsão é um modo
85 / 106 de conversão em código usando fluxo óptico; e realizar, com base no primeiro modo ou no segundo modo, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00355] A8. O método da solução A7 compreendendo adicionalmente: evitar a habilitação do modo de conversão em código usando fluxo óptico, em que uma primeira figuração de referência (R0) e uma segunda figuração de referência (R1) são associadas a uma figuração atual compreendendo o bloco atual, em que τ0 é uma diferença entre uma contagem de ordem de figuração da figuração atual e uma contagem de ordem de figuração da primeira figuração de referência (τ 0 = POC(atual) -POC(R0)), e em que τ1 é uma diferença entre uma contagem de ordem de figuração da segunda figuração de referência e a contagem de ordem de figuração da figuração atual (τ1 = POC(R1) -POC(atual)).
[00356] A9. O método da solução A8, em que abs(τ0) ≥ To ou abs(τ1) ≥ T1, em que T0 e T1 are números inteiros.
[00357] A10. O método da solução A8, em que abs(τ0) ≥ To e abs(τ1) ≥ T1, em que T0 e T1 são números inteiros.
[00358] A11. O método da solução A9 ou A10, em que T0 = T1 = 4.
[00359] A12. O método da solução A8, em que abs(τ0) + abs(τ1) ≥ To, em que T0 é um número inteiro.
[00360] A13. O método da solução Al2, em que T0 = 8.
[00361] A14. O método da solução A8, em que abs(abs(τ0) - abs(τ1)) ≥ To, em que T0 é um número inteiro.
[00362] A15. O método da solução A14, em que T0 = 0.
[00363] A16. O método de solução A8, abs(τ0) ≥ abs(τ1) X To e abs(τ0) ≥ abs(τ0) x To, em que T0 é um número inteiro.
[00364] A17. O método da solução Al 6, em que T0 = 8.
[00365] A18. O método de qualquer uma das soluções A9 a A17, em que T0 é sinalizado em um conjunto de parâmetro de vídeo (VPS), um
86 / 106 conjunto de parâmetro de sequência (SPS), um conjunto de parâmetro de figuração (PPS), um cabeçalho de fatia, um cabeçalho de grupo de ladrilho, um ladrilho, uma unidade de conversão em código (CU) ou uma unidade de árvore de conversão em código (CTU).
[00366] A19. O método de solução A7, em que o modo de conversão em código usando fluxo óptico é habilitado, em que um ou mais vetores de velocidade (vx, vy) para uma figuração atual compreendendo o bloco atual são baseados na uma ou mais distâncias de POC, e em que uma primeira figuração de referência (R0) e uma segunda figuração de referência (R1) são associadas com à figuração atual.
[00367] A20. O método da solução A19, em que τ0 é uma diferença entre uma contagem de ordem de figuração da figuração atual e uma contagem de ordem de figuração da primeira figuração de referência (τ0 = POC(atual) -POC(R0)), em que τ1 é uma diferença entre uma contagem de ordem de figuração da segunda figuração de referência e a contagem de ordem de figuração da figuração atual (τ1 = POC(R1) -POC(atual)), em que em que (vx(0),vy(0)) são vetores de velocidade para a primeira figuração de referência e (vx(1),vy(1)) são vetores de velocidade para a segunda figuração de referência.
[00368] A21. O método da solução A19, em que o um ou mais vetores de velocidade são derivados de uma maneira iterativa.
[00369] A22. O método da solução A19, em que o um ou mais vetores de velocidade são baseados em um terceiro modo de previsão, e em que o terceiro modo de previsão é DMVR ou correspondência bilateral.
[00370] A23. O método da solução A22, em que MV0 e MV1 são vetores de movimento para a primeira e a segunda figurações de referência,
87 / 106 respectivamente, e em queMV0' andMV1’ são vetores de movimento iniciais para o terceiro modo de previsão.
[00371] A24. O método da solução A23, em queMV0' =MV0 + (vx, vy) e Ml7/' =MV1 - (vx, vy).
[00372] A25. O método da solução A23, em queMV0' =MV0 - (vx, vy) e Ml7/' =MV1 + (vx, vy).
[00373] A26. O método da solução A7, em que o modo de conversão em código usando fluxo óptico é habilitado e aplicado a um subconjunto de amostras do bloco atual, em que o subconjunto de amostras exclui todas as amostras do bloco atual.
[00374] A27. O método da solução A26, em que o subconjunto de amostras exclui amostras em uma primeira fileira, última fileira, primeira coluna ou última coluna do bloco atual.
[00375] A28. O método da solução A7, em que o modo de conversão em código usando fluxo óptico é habilitado e aplicado a um subconjunto de amostras de um sub-bloco do bloco atual, em que o subconjunto de amostras não é equivalente a todas as amostras do sub-bloco do bloco atual.
[00376] A29. O método da solução A28, em que o subconjunto de amostras exclui amostras em uma primeira fileira, última fileira, primeira coluna ou última coluna do sub-bloco do bloco atual.
[00377] A30. O método de qualquer uma das soluções A1 a A29, em que o modo de conversão em código usando fluxo óptico é um modo de previsão de fluxo óptico bidirecional (BDOF).
[00378] A31. Um método para processar vídeo compreendendo: derivar consecutivamente, com base em informações convertidas em código associadas a um bloco atual de vídeo, um ou mais vetores de velocidade (vx, vy) associados a uma figuração de referência do bloco atual; e realizar, com base no um ou mais vetores de velocidade, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo, em que as informações
88 / 106 convertidas em código compreendem um valor de um componente horizontal de um vetor de movimento do bloco atual, um valor de um componente vertical do vetor de movimento do bloco atual, ou um tamanho do bloco atual.
[00379] A32. O método de A31, em que vy é derivado primeiro, e em que vx é derivado com base em um valor de vy.
[00380] A33. O método da solução A31 compreendendo adicionalmente: refinar, com base no um ou mais vetores de velocidade, pelo menos uma previsão ou pelo menos um gradiente da figuração de referência; e derivar, subsequente à refinação, o um ou mais vetores de velocidade com base na figuração de referência.
[00381] A34. O método da solução A33, em que a refinação e derivação são realizadas múltiplas vezes até que uma diferença entre valores consecutivos de um dentre o um ou mais vetores de velocidade seja menor que um limiar predeterminado.
[00382] A35. O método de qualquer uma das soluções A1 a A34, em que a conversão gera o bloco atual a partir da representação de corrente de bits.
[00383] A36. O método de qualquer uma das soluções Al a A34, em que a conversão gera a representação de corrente de bits do bloco atual.
[00384] A37. Um aparelho em um sistema de vídeo compreendendo um processador e uma memória não transitória com instruções na mesma, em que as instruções mediante a execução pelo processador, fazem com que o processador implemente o método em qualquer uma das soluções Al a A36.
[00385] A38. Um produto de programa de computador armazenado em mídias legíveis por computador não transitórias, em que o produto de programa de computador inclui código de programa para executar o método em qualquer uma das soluções Al a A36.
[00386] Em algumas modalidades, as soluções técnicas seguintes podem ser implementadas:
89 / 106 B1. Um método para processar vídeo compreendendo: realizar, mediante uma determinação de que um modo de conversão em código usando fluxo óptico foi habilitado para um bloco atual do vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual; e realizar, com base na operação de filtragem, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00387] B2. O método da solução Bl, em que o componente de cor compreende um componente de luma e o tipo único de filtro de interpolação compreende um filtro de interpolação de 8 derivações.
[00388] B3. O método da solução B1, em que um primeiro número de amostras do bloco atual usado na operação de filtragem é menor que um segundo número de amostras exigidas pelo tipo único de filtro de interpolação, reduzindo, assim, uma largura de banda de memória da operação de filtragem.
[00389] B4. O método da solução B3, em que o segundo número de amostras é igual a um número de amostras do bloco atual usado na operação de filtragem quando o modo de conversão em código usando fluxo óptico não é aplicado.
[00390] B5. O método da solução Bl, em que inúmeras amostras do bloco atual são usadas na operação de filtragem, e em que o método compreende adicionalmente: realizar uma operação de preenchimento mediante uma determinação de que o modo de conversão em código usando fluxo óptico é aplicado.
[00391] B6. O método da solução Bl, em que um tamanho do bloco atual é M N, em que um primeiro número de amostras exigido por um cálculo de gradiente é (M+G)*(N+G), em que o tipo único de filtro de interpolação compreende L derivações, em que um segundo número de amostras exigido pela operação de filtragem é (M+G+L-l)x(N+G+L-l), em
90 / 106 que um terceiro número de amostras usado na operação de filtragem é (M+L- l+k)x(N+L-l+k), em que M, N, G e L são números inteiros positivos, em que k é um número inteiro menor que G, e em que um quarto número de amostras que compreende uma diferença entre o segundo número de amostras e o terceiro número de amostras são preenchidos.
[00392] B7. O método da solução B6, em que M = N = 8, L = 8 e G = 2.
[00393] B8. O método da solução B6 ou B7, em que k = 0 ou k = 1.
[00394] B9. O método da solução Bl, em que uma coordenada de um pixel superior esquerdo do bloco atual é (0,0), e em que o método compreende adicionalmente: evitar calcular um valor de gradiente e aplicar o modo de conversão em código usando fluxo óptico a um pixel em uma posição predeterminada.
[00395] B10. O método da solução B9, em que uma coordenada x da posição predeterminada é -1 ou W, em que W é uma largura do bloco atual, e em que W é um número inteiro positivo.
[00396] B11. O método da solução B9, em que uma coordenada y da posição predeterminada é -1 ou H, em que H é uma altura do bloco atual, e em que H é um número inteiro positivo.
[00397] B12. O método da solução Bl, em que uma coordenada de um pixel superior esquerdo do bloco atual é (0,0), e em que o método compreende adicionalmente: modificar um cálculo de um valor de gradiente para um pixel em uma posição predeterminada.
[00398] B13. O método da solução B12, em que uma coordenada x da posição predeterminada é -1 ou W, em que W é uma largura do bloco atual, e em que W é um número inteiro positivo.
[00399] B14. O método da solução B12, em que uma coordenada y da posição predeterminada é -1 ou H, em que H é uma altura do bloco atual, e em que H é um número inteiro positivo.
91 / 106
[00400] Bl5. O método da solução B13 ou B14, em que o cálculo do valor de gradiente compreende: gradientHL0 [%] [y] em que W é uma largura do bloco atual, em que predSampleL0 é uma matriz compreendendo amostras de predição de luma para o bloco atual a partir da lista de referência L0, em que gradientHL0 é um componente horizontal do valor de gradiente derivado da lista de referência L0, e em que hx e vy são índices de coordenada de número inteiro.
[00401] B16. O método da solução B13 ou B14, em que o cálculo do valor de gradiente compreende: gradientVL0[x] [y] em que W é uma largura do bloco atual, em que predSampleL0 é uma matriz compreendendo amostras de predição de luma do bloco atual, em que gradientVL0 é um componente vertical do valor de gradiente derivado da lista de referência L0, e em que hx e vy são índices de coordenada de número inteiro.
[00402] B17. O método da solução Bl compreendendo adicionalmente: preenchimento, antes do cálculo do valor de gradiente, uma ou mais amostras externas do bloco atual em vez de interpolação da uma ou mais amostras externas.
[00403] B18. O método da solução Bl, em que um ou mais cálculos de gradiente usados no modo de conversão em código com fluxo óptico são idênticos àqueles usados em um filtro em laço adaptativo (ALF).
[00404] B19. Um método para processar vídeo compreendendo: realizar, mediante uma determinação de que um modo de conversão em
92 / 106 código usando fluxo óptico foi habilitado para um bloco atual de vídeo, uma operação de filtragem usando um tipo único de filtro de interpolação para cada componente de cor do bloco atual; realizando, mediante uma determinação de que pelo menos uma amostra do bloco atual está localizada fora de uma faixa predeterminada, uma operação de preenchimento; e realizar, com base na operação de filtragem e na operação de preenchimento, um conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00405] B20. O método da solução Bl9, em que a operação de preenchimento é realizada antes da realização de um cálculo de gradiente.
[00406] B21. O método da solução Bl9, em que a faixa predeterminada baseia-se em uma altura ou uma largura do bloco atual.
[00407] B22. O método de qualquer uma das soluções Bl a B21, em que o modo de conversão em código usando fluxo óptico compreende um modo de previsão de fluxo óptico bidirecional (BDOF).
[00408] B23. O método de qualquer uma das soluções B1 a B22, em que a conversão gera o bloco atual a partir da representação de corrente de bits.
[00409] B24. O método de qualquer uma das soluções B1 a B22, em que a conversão gera a representação de corrente de bits do bloco atual.
[00410] B25. Um aparelho em um sistema de vídeo compreendendo um processador e uma memória não transitória com instruções na mesma, em que as instruções mediante a execução pelo processador, fazem com que o processador implemente o método em qualquer uma das soluções Bl a B24.
[00411] B26. Um produto de programa de computador armazenado em mídias legíveis por computador não transitórias, em que o produto de programa de computador inclui código de programa para executar o método em qualquer uma das soluções Bl a B24.
[00412] Em algumas modalidades, as soluções técnicas seguintes
93 / 106 podem ser implementadas: Cl. Um método para processar vídeo compreendendo: determinar o uso, para uma conversão entre um bloco atual de um vídeo e uma representação de corrente de bits do vídeo, um algoritmo de computação de valor de gradiente para uma ferramenta de fluxo óptico; e realizar, com base na determinação, a conversão, em que o algoritmo de computação de valor de gradiente difere de um algoritmo de computação de valor de gradiente de herdado que compreende: gradientHL0[x][y] = (predSampleL0[hx+l][vy]- predSampleL0[hx-l][vy]) » 4, gradientVL0[x][y] = (predSampleL0[hx][vy+l]- predSampleL0[hx][vy-l]) »4, gradientHLl[x][y] = (predSampleLl[hx+l][vy]- predSampleLl[hx-l][vy]) »4, e gradientVLl[x][y] = (predSampleLl[hx][vy+l]- predSampleLl[hx][vy-l]) » 4, em que gradientHL0 é um componente horizontal do valor de gradiente derivado da lista de referência L0, em que gradientVL0 é um componente vertical do valor de gradiente derivado da lista de referência L0, em que gradientHL1 é um componente horizontal do valor de gradiente derivado da lista de referência L1, em que gradientVLl é um componente vertical do valor de gradiente derivado da lista de referência L1, em que predSampleL0 é uma matriz compreendendo amostras de predição de luma para o bloco atual da lista de referência L0, em que predSampleLl é uma matriz que compreende amostras de predição de luma para o bloco atual da lista de referência LI, e em que hx e vy são índices de coordenada de número inteiro.
[00413] C2. O método da solução Cl, em que modificar a computação de valor de gradiente compreende o deslocamento de um valor de gradiente
94 / 106 por um número inteiro positivo predeterminado (S), e em que S ≠ 4.
[00414] C3. O método da solução C2, em que S = 6.
[00415] C4. O método da solução C2, em que S = B - P, em que B é uma profundidade de bit de uma amostra do bloco atual, e em que P é um número inteiro positivo.
[00416] C5. O método da solução C4, em que P = 6, e em que B = 8 ou 12.
[00417] C6. O método da solução Cl, em que modificar a computação de valor de gradiente compreende recortar um valor de gradiente, de modo que o valor de gradiente seja representável como um bit de K de número inteiro, e em que K é um número inteiro positivo.
[00418] C7. O método da solução C6, em que K = 8 ou 16.
[00419] C8. O método da solução Cl, em que o algoritmo de computação de valor de gradiente para a ferramenta de fluxo óptico compreende uma computação de uma primeira variável interna (temp), um segundo variável de intervalo (tempX) e uma terceira variável interna (tempY) e em que a computação é definida como: temp[x][y] = SignShift(predSampleL0[hx][vy] - predSampleLl[hx][vy], SI), tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHLl[x][y], S2), e tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVLl[x][y], S3), em que S1, S2 e S3 são números inteiros, e em que SignShift(x, s) é definido como: em que off é um número inteiro.
[00420] C9. O método da solução C8, em que S1 = 6 e S2 = S3 = 3.
[00421] C10. O método da solução C8, em que S1, S2 e S3 são
95 / 106 baseados em uma profundidade de bit de uma amostra do bloco atual (B).
[00422] C11. O método da solução CIO, em que SI = B - Pl, S2 = B - P2 e S3 = B - P3, em que Pl, P2 e P3 são números inteiros.
[00423] C12. O método da solução C11, em que B = 8, 10 ou 12, e em que P1 = 4 e P2 = P3 = 7.
[00424] C13. O método da solução Cl, em que o algoritmo de computação de valor de gradiente para a ferramenta de fluxo óptico compreende uma computação de uma primeira variável interna (temp), uma segunda variável de intervalo (tempX) e uma terceira variável interna (tempY) são representáveis por um bit de número inteiro de bit de K1, um número inteiro de bit de K2 e um número inteiro de bit de K3, respectivamente, e em que K1, K2 e K3 são números inteiros positivos.
[00425] C14. O método da solução C13, em que K1 = 8 ou 16, K2 = 8 ou 16 e K3 = 8 ou 16.
[00426] C15. O método da solução C13 ou Cl4, em que a computação de temp, tempX e tempY é seguido por uma operação de recorte definida como: temp[x][y] = Clip3(-2K1_1, 2K1_1-1, gradientHL0[x][y]), tempX[x][y] = Clip3(-2K2_1, 2K2_1-1, gradientVL0[x][y]), e
[00427] tempY[x][y] = Clip3(-2K3_1, 2K3_1-1, gradientHLl[x][y]), em que Clip3(x, min, max) é definido como:
[00428] C16. O método da solução C1, em que o algoritmo de computação de valor de gradiente para a ferramenta de fluxo óptico compreende uma computação de uma pluralidade de variáveis internas compreendendo sGx2, sGy2, sGxGy, sGxdl e sGydl que são representáveis por um bit de número inteiro de bit de K1, um número inteiro de bit de K2, um número inteiro de bit de K3, um número inteiro de bit de K4 e um número
96 / 106 inteiro de bit de K5, respectivamente, e em que K1, K2, K3, K4 e K5 são números inteiros positivos.
[00429] C17. O método da solução Cl 6, em que KI = 8 ou 16, K2 = 8 ou 16, K3 = 8 ou 16, K4 = 8 ou 16 e K5 = 8 ou 16.
[00430] C18. O método da solução Cl6 e Cl7, em que a computação de sGx2, sGy2, sGxGy, sGxdl e sGydl é seguida por uma operação de deslocamento definida como: sGx2 = Shift(sGx2, SI), sGy2 = Shift(sGy2, S2), sGxGy = SignShift(sGxGy, S3), sGxdl = SignShift(sGxdI, S4), e sGydl = SignShift(sGydI, S5), em que S1, S2, S3, S4 e S5 são números inteiros positivos, em que Shift(x, s) = (x + off) » s, e em que SignShift(x, s) é definido como: em que off é um número inteiro.
[00431] C19. O método da solução C18, em que S1, S2, S3, S4 e S5 são iguais a 4 ou 5.
[00432] C20. O método da solução C18, em que S1, S2, S3, S4 e S5 são baseados em uma profundidade de bit de uma amostra do bloco atual (B).
[00433] C21. O método da solução C8, em que S1=B-P1,S2 = B-P2, S3=B-P3, S4 = B-P4 e S5 = B - P5, em que Pl, P2, P3, P4 e P5 são números inteiros.
[00434] C22. O método da solução C21, em que B = 8, 10 ou 12.
[00435] C23. O método da solução Cl6 e Cl7, em que a computação de sGx2, sGy2, sGxGy, sGxdl e sGydl é seguida por uma operação de recorte definida como: sGx2 = Clip3(0, 2K1-1, sGx2), sGy2 = Clip3(0, 2K2-1, sGy2),
97 / 106 sGxGy = Clip3(-2K3_1, 2K3_1-1, sGxGy), sGxdl = Clip3(-2K4_1, 2K4_1-1, sGxdl), e sGydl = ClipS^5’1, 2K5_1-1, sGydl), em que Clip3(x, min, max) é definido como:
[00436] C24. O método de qualquer uma das soluções Cl a C23, em que a ferramenta de fluxo óptico compreende uma ferramenta de fluxo óptico bidirecional (BDOF).
[00437] C25. Um método para processar vídeo compreendendo: tomar uma decisão, com base em um ou mais cálculos de soma de diferença absoluta (SAD) para um sub-bloco de um bloco atual de vídeo, a respeito de uma habilitação seletiva de um modo de conversão em código usando fluxo óptico para o bloco atual; e realizar, com base na decisão, uma conversão entre o bloco atual e uma representação de corrente de bits do bloco atual.
[00438] C26. O método da solução C25, em que os cálculos de SAD compreendem uma soma removida por média de cálculo de diferença absoluta (MR-SAD).
[00439] C27. O método da solução C25 ou C26, em que os cálculos de SAD são realizados em amostras em localizações predeterminadas no bloco atual.
[00440] C28. O método da solução C25 ou C26, em que os cálculos de SAD são realizados em amostras em localizações predeterminadas no sub- bloco do bloco atual.
[00441] C29. Um método para processar vídeo compreendendo: derivar, com base em uma habilitação seletiva de um processo aprimoramento de biprevisão generalizado (GBi) para um bloco atual de vídeo, um ou mais parâmetros de um modo de conversão em código usando fluxo óptico para o bloco atual; e realizar, com base no um ou mais parâmetros do modo de
98 / 106 previsão de BDOF, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00442] C30. Um método para processar vídeo compreendendo: realizar, para um bloco atual de vídeo convertido em código com um modo de conversão em código usando fluxo óptico, uma operação de recorte em um termo de correção de uma saída de previsão final do modo de conversão em código usando fluxo óptico; e realizar, com base na saída de previsão final, uma conversão entre o bloco atual e uma representação de corrente de bits do vídeo.
[00443] C31. O método de acordo com uma reivindicação C30, em que o termo de correção é recortado a uma faixa [minCorrection, maxCorrection], em que minCorrection e maxCorrection são números inteiros.
[00444] C32. O método da solução C31, em que minCorrection = -32 e maxCorrection = 32.
[00445] C33. O método da solução C31, em que minCorrection e maxCorrection são baseadas em uma profundidade de bit de amostra.
[00446] C34. O método da solução C31, em que minCorrection e maxCorrection são baseadas em uma altura ou uma largura do bloco de vídeo atual.
[00447] C35. O método da solução C31, em que minCorrection e maxCorrection são sinalizados em um conjunto de parâmetro de vídeo (VPS), um conjunto de parâmetro de sequência (SPS), um conjunto de parâmetro de figuração (PPS), um cabeçalho de fatia, um cabeçalho de grupo de ladrilho, um ladrilho, uma unidade de conversão em código (CU) ou uma unidade de árvore de conversão em código (CTU).
[00448] C36. O método da solução C30, em que a saída de previsão final é recortada a uma faixa [minPred, maxPred], em que minPred e maxPred são números inteiros.
[00449] C37. O método da solução C36, em que minPred = -32 e
99 / 106 maxPred = 32.
[00450] C38. O método da solução C36, em que midPred e maxPred são baseados em uma profundidade de bits de amostra.
[00451] C39. O método da solução C36, em que midPred e maxPred são baseados em uma altura ou uma largura do bloco de vídeo atual.
[00452] C40. O método da solução C36, em que midPred e maxPred são sinalizados em um conjunto de parâmetro de vídeo (VPS), um conjunto de parâmetro de sequência (SPS), um conjunto de parâmetro de figuração (PPS), um cabeçalho de fatia, um cabeçalho de grupo de ladrilho, um ladrilho, uma unidade de conversão em código (CU) ou uma unidade de árvore de conversão em código (CTU).
[00453] C41. O método de qualquer uma das soluções C30 a C40, em que o termo de correção compreende um deslocamento de previsão derivado para uma amostra baseada no modo de conversão em código usando fluxo óptico.
[00454] C42. O método de qualquer uma das soluções C25 a C41, em que o modo de conversão em código usando fluxo óptico compreende um modo de previsão de fluxo óptico bidirecional (BDOF).
[00455] C43. O método de qualquer uma das soluções C1 a C42, em que a conversão gera o bloco atual a partir da representação de corrente de bits.
[00456] C44. O método de qualquer uma das soluções C1 a C42, em que a conversão gera a representação de corrente de bits do bloco atual.
[00457] C45. Um aparelho em um sistema de vídeo compreendendo um processador e uma memória não transitória com instruções na mesma, em que as instruções mediante a execução pelo processador, fazem com que o processador implemente o método em qualquer uma das soluções C1 a C44.
[00458] C46. Um produto de programa de computador armazenado em mídias legíveis por computador não transitórias, em que o produto de
100 / 106 programa de computador inclui código de programa para executar o método em qualquer uma das soluções C1 a C44.
6. Implementações exemplificativas da tecnologia descrita
[00459] A Figura 29 é um diagrama de blocos de um aparelho de processamento de vídeo 2900. O aparelho 2900 pode ser usado para implementar um ou mais dos métodos descritos no presente documento. O aparelho 2900 pode ser incorporado em um telefone inteligente, computador tipo tablet, computador, receptor de Internet das Coisas (IoT) e assim por diante. O aparelho 2900 pode incluir um ou mais processadores 2902, uma ou mais memórias 2904 e hardware de processamento de vídeo 2906. O(s) processador(es) 2902 pode(m) ser configurado(s) para implementar um ou mais métodos (incluindo, mas sem limitações, o método 2800) descrito no presente documento. A memória (memórias) 2904 pode(m) ser usada(s) para armazenar dados e código usados para implementar os métodos e técnicas descritos no presente documento. O hardware de processamento de vídeo 2906 pode ser usado para implementar, em conjunto de circuitos de hardware, algumas técnicas descritas no presente documento.
[00460] Em algumas modalidades, os métodos de conversão em código de vídeo podem ser implementados usando um aparelho que é implementado em uma plataforma de hardware conforme descrito em relação à Figura 29.
[00461] Algumas modalidades da tecnologia descrita incluem tomar uma decisão ou determinação para habilitar uma ferramenta ou modo de processamento de vídeo. Em um exemplo, quando a ferramenta ou o modo de processamento de vídeo for habilitado, o codificador usará ou implementará a ferramenta ou o modo no processamento de um bloco de vídeo, porém, pode não modificar necessariamente a corrente de bits resultante com base na utilização da ferramenta ou modo. Ou seja, uma conversão do bloco de vídeo para a representação de corrente de bits do vídeo usará a ferramenta ou modo de processamento de vídeo quando for habilitada com base na decisão ou
101 / 106 determinação. Em outro exemplo, quando a ferramenta ou o modo de processamento de vídeo for habilitado, o decodificador processará a corrente de bits com o conhecimento de que a corrente de bits foi modificada com base na ferramenta ou no modo de processamento de vídeo. Ou seja, uma conversão da representação de corrente de bits do vídeo para o bloco de vídeo será realizada usando a ferramenta ou o modo de processamento de vídeo que foi habilitado com base na decisão ou determinação.
[00462] Algumas modalidades da tecnologia descrita incluem tomar uma decisão ou determinação para desabilitar uma ferramenta ou modo de processamento de vídeo. Em um exemplo, quando a ferramenta ou o modo de processamento de vídeo for desabilitado, o codificador não usará a ferramenta ou o modo na conversão do bloco de vídeo para a representação de corrente de bits do vídeo. Em outro exemplo, quando a ferramenta ou o modo de processamento de vídeo for desabilitada, o decodificador processará a corrente de bits com o conhecimento de que a corrente de bits não foi modificada usando a ferramenta ou o modo de processamento de vídeo que foi habilitado com base na decisão ou determinação.
[00463] A Figura 30 é um diagrama de blocos mostrando um processamento de sistema de vídeo exemplificativo 3000, em que várias técnicas descritas no presente documento podem ser implementadas. Várias implementações podem incluir alguns ou todos os componentes do sistema
3000. O sistema 3000 pode incluir a entrada 3002 para receber conteúdo de vídeo. O conteúdo de vídeo pode ser recebido em um formato bruto ou não compactado, por exemplo, valores de pixel de múltiplos componentes de 8 ou 10 bits, ou pode estar em um formato compactado ou codificado. A entrada 3002 pode representar uma interface de rede, uma interface de barramento periférico, ou uma interface de armazenamento. Os exemplos de interface de rede incluem interfaces com fio como Ethernet, rede óptica passiva (PON), etc. e interfaces sem fio como Wi-Fi ou interfaces celulares.
102 / 106
[00464] O sistema 3000 pode incluir um componente de conversão em código 3004 que pode implementar os vários métodos de conversão em código ou codificação descritos no presente documento. O componente de conversão em código 3004 pode reduzir a taxa de bits média do vídeo da entrada 3002 para a saída do componente de conversão em código 3004 para produzir uma representação convertida em código do vídeo. As técnicas de conversão em código são, portanto, por vezes, chamadas de técnicas de compactação de vídeo ou transcodificação de vídeo. A saída do componente de conversão em código 3004 pode ser armazenada ou transmitida por meio de uma comunicação conectada, conforme representado pelo componente
3006. A representação de corrente de bits armazenada ou comunicada (ou convertida em código) do vídeo recebido na entrada 3002 pode ser usada pelo componente 3008 para gerar valores de pixel ou vídeo exibível que é enviado para uma interface de exibição 3010. O processo de geração de vídeo visualizável de usuário a partir da representação de corrente de bits é, por vezes, chamado de descompactação de vídeo. Ademais, embora certas operações de processamento de vídeo sejam chamadas de operações ou ferramentas de “conversão em código”, será reconhecido que as ferramentas ou operações de conversão em código são usadas em um codificador e ferramentas ou operações de decodificação correspondentes que invertem os resultados da conversão em código serão realizadas por um decodificador.
[00465] Os exemplos de uma interface de barramento periférico ou uma interface de exibição podem incluir barramento serial universal (USB) ou interface de multimídia de alta definição (HDMI) ou Displayport, e assim por diante. Os exemplos de interfaces de armazenamento incluem SATA (acessório de tecnologia avançada serial), PCI, IDE interface e similares. As técnicas descritas no presente documento podem ser incorporadas em vários dispositivos eletrônicos como telefones móveis, computadores tipo laptop, telefones inteligentes ou outros dispositivos que são capazes de realizar
103 / 106 processamento de dados digitais e/ou exibição de vídeo.
[00466] A partir do supracitado, será reconhecido que modalidades específicas da tecnologia descrita atualmente foram descritas no presente documento para propósitos de ilustração, porém, que várias modificações podem ser feitas sem se desviar do escopo da invenção. Consequentemente, a tecnologia descrita atualmente não é limitada, exceto pelas reivindicações anexas.
[00467] As implementações da matéria e as operações funcionais descritas neste documento de patente podem ser implementadas em vários sistemas, conjunto de circuitos eletrônicos digitais, ou em software, firmware ou hardware de computador, incluindo as estruturas reveladas neste relatório descritivo e seus equivalentes estruturais, ou em combinações de um ou mais dos mesmos. As implementações da matéria descrita neste relatório específico podem ser implementadas como um ou mais produtos de programa de computador, isto é, um ou mais módulos de instruções de programa de computador codificados em uma mídia legível por computador tangível e não transitória para execução por, ou para controlar a operação de aparelho de processamento de dados. A mídia legível por computador pode ser um dispositivo de armazenamento legível por máquina, um substrato de armazenamento legível por máquina, um dispositivo de memória, uma composição de matéria efetuando um sinal propagado legível por máquina ou uma combinação de um ou mais dos mesmos. O termo “unidades de processamento de dados” ou “aparelho de processamento de dados” engloba todo aparelho, dispositivos e máquinas para processamento de dados, incluindo, a título de exemplo, um processador programável, um computador ou múltiplos processadores ou computadores. O aparelho pode incluir, em adição ao hardware, código que cria um ambiente de execução para o programa de computador em questão, por exemplo, código que constitui firmware de processador, uma pilha de protocolo, um sistema de
104 / 106 gerenciamento de banco de dados, um sistema operacional ou uma combinação de um ou mais dos mesmos.
[00468] Um programa de computador (também conhecido como um programa, software, aplicativo de software, roteiro ou código) pode ser gravado em qualquer forma de linguagem de programação, incluindo linguagens compiladas ou interpretadas, e pode ser implantado de qualquer forma, incluindo como um programa autônomo ou como um módulo, componente, sub-rotina ou outra unidade adequada para uso em um ambiente de computação. Um programa de computador não corresponde necessariamente a um arquivo em um sistema de arquivos. Um programa pode ser armazenado em uma porção de um arquivo que retém outros programas ou dados (por exemplo, um ou mais roteiros armazenados em um documento de linguagem de marcação), em um único arquivo dedicado ao programa em questão, ou em múltiplos arquivos coordenados (por exemplo, arquivos que armazenam um ou mais módulos, subprogramas ou porções de código). Um programa de computador pode ser implantado para ser executado em um computador ou em múltiplos computadores que são localizados em um local ou distribuído através de múltiplos locais e interconectados por uma rede de comunicação.
[00469] Os processos e fluxos de lógica descritos neste relatório específico podem ser realizado por um ou mais processadores programáveis executando um ou mais programas de computador para realizar funções operando em dados de entrada e gerando saída. Os processos e fluxos de lógica também podem ser realizados por, e o aparelho também pode ser implementado como, conjunto de circuitos de lógica de propósito especial, por exemplo, um FPGA (arranjo de porta programável em campo) ou um ASIC (circuito integrado específico de aplicação).
[00470] Os processadores adequados para a execução de um programa de computador incluem, a título de exemplo, tanto microprocessadores de
105 / 106 propósito geral ou especial, e qualquer um ou mais processadores de qualquer tipo de computador digital. Geralmente, um processador receberá instruções e dados de uma memória somente de leitura ou uma memória de acesso aleatório ou ambas. Os elementos essenciais de um computador são um processador para realizar instruções e um ou mais dispositivos de memória para armazenar instruções e dados. Geralmente, um computador também incluirá, ou será acoplado operacionalmente para receber dados de ou transferir dados para, ou ambos, um ou mais dispositivos de armazenamento em massa para armazenar dados, por exemplo, discos magnéticos, discos óptico magnéticos ou discos ópticos. Entretanto, um computador não precisa ter tais dispositivos. As mídias legíveis por computador adequadas para armazenar instruções de programa de computador e dados incluem todas as formas de memória não volátil, mídias e dispositivos de memória, incluindo, a título de exemplo, dispositivos de memória semicondutores, por exemplo, dispositivos de EPROM, EEPROM e memória flash. O processador e a memória podem ser suplementados por, ou incorporados em conjunto de circuitos de lógica de propósito especial.
[00471] Pretende-se que o relatório descritivo, juntamente com os desenhos, seja considerado apenas exemplificativo, em que exemplificativo significa um exemplo. Conforme usado no presente documento, o uso de “ou” é destinado a incluir “e/ou”, exceto se o contexto indicar claramente de outro modo.
[00472] Embora este documento de patente contenha muitas especificidades, elas não devem ser consideradas como limitações do escopo de qualquer invenção ou do que pode ser reivindicado, mas, em vez disso, como descrições de recursos que podem ser específicas a modalidades particulares de invenções particulares. Certos recursos que são descritos neste documento de patente no contexto de modalidades separadas também podem ser implementados em combinação em uma modalidade única. Por outro lado,
106 / 106 vários recursos que são descritos no contexto de uma única modalidade também podem ser implementados em múltiplas modalidades separadamente ou em qualquer subcombinação adequada. Ademais, embora recursos possam ser descritos acima como atuando em certas combinações e, atém mesmo inicialmente reivindicados como tal, um ou mais recursos de uma combinação reivindicada podem, em alguns casos, ser excisados da combinação, e a combinação reivindicada pode ser direcionada a uma subcombinação ou variação de uma subcombinação.
[00473] De modo similar, embora as operações sejam representadas nos desenhos em uma ordem particular, isso não deve ser entendido de modo a exigir que tais operações sejam realizadas na ordem particular mostrada ou em ordem sequencial, ou que todas as operações ilustradas sejam realizadas, para alcançar resultados desejáveis. Ademais, a separação de vários componentes de sistema nas modalidades descritas neste documento de patente não deve ser entendida como exigindo tal separação em todas as modalidades.
[00474] Apenas algumas implementações e exemplos são descritos e outras implementações, aprimoramentos e variações podem ser feitos com base no que é descrito e ilustrado neste documento de patente.

Claims (14)

REIVINDICAÇÕES
1. Método para processar dados de vídeo, caracterizado pelo fato de que compreende: determinar que um modo de conversão em código usando fluxo óptico é habilitado para um bloco de vídeo atual de um vídeo; derivar, com uma operação de preenchimento em vez de uma primeira operação de filtragem de interpolação, uma ou mais amostras externas do bloco de vídeo atual; realizar uma segunda operação de filtragem de interpolação para o bloco de vídeo atual; e realizar, com base na operação de preenchimento e na segunda operação de filtragem de interpolação, uma conversão entre o bloco de vídeo atual e uma representação de corrente de bits do vídeo.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que um filtro bilinear é usado na primeira operação de filtragem de interpolação.
3. Método de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que apenas um filtro de interpolação de 8 derivações é usado na segunda operação de filtragem de interpolação para um componente de luma do bloco de vídeo atual.
4. Método de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o tamanho do bloco de vídeo atual é M×N, em que um primeiro número de amostras exigido por um cálculo de gradiente é (M+G)×(N+G), em que um filtro de interpolação usado na segunda operação de filtragem de interpolação para um componente de luma do bloco de vídeo atual compreende L derivações, em que um segundo número de amostras exigido pela segunda operação de filtragem de interpolação sem habilitação do modo de conversão em código usando fluxo óptico é (M+G+L- l)×(N+G+L-l), em que um terceiro número de amostras exigido pela segunda operação de filtragem de interpolação com habilitação do modo de conversão em código usando fluxo óptico é (M+k+L-l)×(N+k+L-1), em que M, N, G e L são números inteiros positivos, e em que k é um número inteiro menor que G.
5. Método de acordo com a reivindicação 4, caracterizado pelo fato de que um quarto número de amostras que compreende uma diferença entre o segundo número de amostras e o terceiro número de amostras são preenchidos na operação de preenchimento.
6. Método de acordo com a reivindicação 4 ou 5, caracterizado pelo fato de que L = 8 e G = 2.
7. Método de acordo com qualquer uma das reivindicações 4 a 6, caracterizado pelo fato de que k = 0.
8. Método de acordo com qualquer uma das reivindicações 4 a 7, caracterizado pelo fato de que M é igual a 8 ou 16, e N é igual a 8 ou 16.
9. Método de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o modo de codificação usando fluxo óptico compreende um modo de previsão de fluxo óptico bidirecional (BDOF).
10. Método de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que a conversão inclui codificação do bloco de vídeo na corrente de bits.
11. Método de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que a conversão inclui decodificação do bloco de vídeo atual a partir da corrente de bits.
12. Aparelho para processar dados de vídeo, caracterizado pelo fato de que compreende um processador e uma memória não transitória com instruções na mesma, em que as instruções mediante a execução pelo processador, fazem com que o processador: determine que um modo de conversão em código usando fluxo óptico é habilitado para um bloco de vídeo atual de um vídeo; derive, com uma operação de preenchimento em vez de uma primeira operação de filtragem de interpolação, uma ou mais amostras externas do bloco de vídeo atual; realize uma segunda operação de filtragem de interpolação para o bloco de vídeo atual; e realize, com base na operação de preenchimento e na segunda operação de filtragem de interpolação, uma conversão entre o bloco de vídeo atual e uma corrente de bits do vídeo.
13. Meio de armazenamento legível por computador não transitório, caracterizado pelo fato de que armazena instruções que fazem com que um processador: determine que um modo de conversão em código usando fluxo óptico é habilitado para um bloco de vídeo atual de um vídeo; derive, com uma operação de preenchimento em vez de uma primeira operação de filtragem de interpolação, uma ou mais amostras externas do bloco de vídeo atual; realize uma segunda operação de filtragem de interpolação para o bloco de vídeo atual; e realize, com base na operação de preenchimento e na segunda operação de filtragem de interpolação, uma conversão entre o bloco de vídeo atual e uma corrente de bits do vídeo.
14. Meio de registro legível por computador não-transitório, caracterizado pelo fato de que armazena uma corrente de bits de um vídeo, que é gerado por um método realizado por um aparelho de processamento de vídeo, em que o método compreende: determinar que um modo de conversão em código usando fluxo óptico é habilitado para um bloco de vídeo atual de um vídeo; derivar, com uma operação de preenchimento em vez de uma primeira operação de filtragem de interpolação, uma ou mais amostras externas do bloco de vídeo atual;
realizar uma segunda operação de filtragem de interpolação para o bloco de vídeo atual; e gerar a corrente de bits a partir do bloco de vídeo atual com base na operação de preenchimento e na segunda operação de filtragem de interpolação.
BR112021008251-4A 2018-11-05 2019-11-05 método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador BR112021008251A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2018113928 2018-11-05
CNPCT/CN2018/113928 2018-11-05
PCT/CN2019/115697 WO2020094000A1 (en) 2018-11-05 2019-11-05 Interpolation for inter prediction with refinement

Publications (1)

Publication Number Publication Date
BR112021008251A2 true BR112021008251A2 (pt) 2021-08-03

Family

ID=70610813

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021008251-4A BR112021008251A2 (pt) 2018-11-05 2019-11-05 método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador

Country Status (9)

Country Link
US (6) US11064206B2 (pt)
EP (2) EP4300965A3 (pt)
JP (2) JP7231727B2 (pt)
KR (2) KR20230158645A (pt)
CN (5) CN118694931A (pt)
BR (1) BR112021008251A2 (pt)
MX (1) MX2021004715A (pt)
SG (1) SG11202104480RA (pt)
WO (3) WO2020093999A1 (pt)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3788787A1 (en) 2018-06-05 2021-03-10 Beijing Bytedance Network Technology Co. Ltd. Interaction between ibc and atmvp
WO2019234671A1 (en) 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Improved pmmvd
WO2019244051A1 (en) 2018-06-19 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Selected mvd precision without mvp truncation
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
GB2589223B (en) 2018-06-21 2023-01-25 Beijing Bytedance Network Tech Co Ltd Component-dependent sub-block dividing
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
WO2020049540A1 (en) 2018-09-08 2020-03-12 Beijing Bytedance Network Technology Co., Ltd. Affine mode in video coding and decoding
TWI827681B (zh) 2018-09-19 2024-01-01 大陸商北京字節跳動網絡技術有限公司 具有自適應運動矢量分辨率的仿射模式的語法重用
CN110944181B (zh) 2018-09-23 2023-03-10 北京字节跳动网络技术有限公司 仿射模型的多个假设
WO2020058957A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. General applications related to affine motion
TWI835864B (zh) 2018-09-23 2024-03-21 大陸商北京字節跳動網絡技術有限公司 簡化的空時運動矢量預測
CN110944182B (zh) 2018-09-23 2023-06-09 北京字节跳动网络技术有限公司 仿射模式中的子块的运动矢量推导
CN110944193B (zh) 2018-09-24 2023-08-11 北京字节跳动网络技术有限公司 视频编码和解码中的加权双向预测
WO2020084473A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Multi- iteration motion vector refinement
CN111083485B (zh) 2018-10-22 2024-08-02 北京字节跳动网络技术有限公司 仿射模式的运动信息的利用
BR112021008251A2 (pt) 2018-11-05 2021-08-03 Beijing Bytedance Network Technology Co., Ltd. método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador
US11197005B2 (en) * 2018-11-08 2021-12-07 Qualcomm Incorporated Cross-component prediction for video coding
CN116886926A (zh) 2018-11-10 2023-10-13 北京字节跳动网络技术有限公司 成对平均候选计算中的取整
WO2020098643A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Simplification of combined inter-intra prediction
WO2020098802A1 (en) 2018-11-15 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with mvd for affine
WO2020098814A1 (en) 2018-11-16 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. History-based affine parameters inheritance
CN113039796B (zh) 2018-11-17 2023-09-19 北京字节跳动网络技术有限公司 视频处理中的广义双向预测模式
WO2020103877A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coding and decoding of video coding modes
CN113056914B (zh) 2018-11-20 2024-03-01 北京字节跳动网络技术有限公司 基于部分位置的差计算
WO2020122130A1 (ja) * 2018-12-12 2020-06-18 シャープ株式会社 予測画像生成装置、動画像復号装置、動画像符号化装置および予測画像生成方法
CN113196773B (zh) 2018-12-21 2024-03-08 北京字节跳动网络技术有限公司 具有运动矢量差的Merge模式中的运动矢量精度
SG11202103292TA (en) * 2018-12-28 2021-04-29 Sony Corp Image processing device and method
WO2020143774A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Merge with mvd based on geometry partition
US20220109871A1 (en) * 2019-01-14 2022-04-07 InterDigitai VC Holdings, Inc. Method and apparatus for video encoding and decoding with bi-directional optical flow adapted to weighted prediction
WO2020156516A1 (en) 2019-01-31 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Context for coding affine mode adaptive motion vector resolution
WO2020156517A1 (en) 2019-01-31 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Fast algorithms for symmetric motion vector difference coding mode
CN113383548A (zh) 2019-02-03 2021-09-10 北京字节跳动网络技术有限公司 Mv精度和mv差编解码之间的相互作用
CN113424533B (zh) 2019-02-14 2024-09-10 北京字节跳动网络技术有限公司 复杂度降低的解码器侧运动推导
WO2020169109A1 (en) 2019-02-22 2020-08-27 Beijing Bytedance Network Technology Co., Ltd. Sub-table for history-based affine mode
PL3928519T3 (pl) * 2019-02-22 2024-08-12 Huawei Technologies Co., Ltd. Sposób i aparat do predykcji inter podbloków chrominancji na podstawie afinicznej
US11632563B2 (en) * 2019-02-22 2023-04-18 Qualcomm Incorporated Motion vector derivation in video coding
CN113545085A (zh) 2019-03-03 2021-10-22 北京字节跳动网络技术有限公司 基于图片头中的信息启用dmvr
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
KR20210135502A (ko) 2019-03-08 2021-11-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 처리에서 변형 정보의 시그널링
WO2020187198A1 (en) 2019-03-17 2020-09-24 Beijing Bytedance Network Technology Co., Ltd. Prediction refinement based on optical flow
KR20230165888A (ko) * 2019-04-02 2023-12-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 양방향 광학 흐름 기반 비디오 코딩 및 디코딩
KR20230169434A (ko) 2019-04-02 2023-12-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
WO2020211863A1 (en) 2019-04-18 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Selective use of cross component mode in video coding
WO2020211866A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Applicability of prediction refinement with optical flow process
CN113711609B (zh) 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
WO2020211864A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Region based gradient calculation in different motion vector refinements
JP7317991B2 (ja) 2019-04-23 2023-07-31 北京字節跳動網絡技術有限公司 クロスコンポーネント依存性を低減するための方法
KR102399229B1 (ko) * 2019-04-25 2022-05-17 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 광학 흐름에 의한 예측 미세화 방법 및 장치
EP3949395A4 (en) 2019-05-08 2022-06-29 Beijing Bytedance Network Technology Co., Ltd. Conditions for applicability of cross-component coding
CN110225339A (zh) * 2019-05-10 2019-09-10 上海德衡数据科技有限公司 一种hevc视频序列编解码加速方法
CN117692630A (zh) 2019-05-11 2024-03-12 北京字节跳动网络技术有限公司 视频处理中编解码工具的选择性使用
KR20220006055A (ko) * 2019-05-11 2022-01-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 다중 인트라 코딩 방법 사이의 상호 작용
KR102647582B1 (ko) 2019-05-16 2024-03-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 모션 정보 개선의 서브영역 기반 결정
WO2020233662A1 (en) 2019-05-21 2020-11-26 Beijing Bytedance Network Technology Co., Ltd. Syntax signaling for optical-flow based inter coding
BR112021025255A2 (pt) 2019-06-14 2022-03-15 Lg Electronics Inc Método e dispositivo decodificador de imagens para derivar informações de índice de peso para a geração de uma amostra de previsão
CN113411595B (zh) * 2019-06-21 2022-05-31 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
WO2020259427A1 (en) 2019-06-22 2020-12-30 Beijing Bytedance Network Technology Co., Ltd. Syntax element for chroma residual scaling
US20220264146A1 (en) * 2019-07-01 2022-08-18 Interdigital Vc Holdings France, Sas Bi-prediction refinement in affine with optical flow
CN117395396A (zh) 2019-07-07 2024-01-12 北京字节跳动网络技术有限公司 色度残差缩放的信令通知
US11272203B2 (en) * 2019-07-23 2022-03-08 Tencent America LLC Method and apparatus for video coding
CN117560490A (zh) 2019-07-27 2024-02-13 北京字节跳动网络技术有限公司 根据参考图片类型使用工具的限制
KR20220044271A (ko) 2019-08-10 2022-04-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 비트스트림들에서의 서브픽처 의존적 시그널링
JP7482218B2 (ja) 2019-10-12 2024-05-13 北京字節跳動網絡技術有限公司 ビデオコーディングにおける予測タイプシグナリング
JP2022552511A (ja) 2019-10-12 2022-12-16 北京字節跳動網絡技術有限公司 ビデオコーディングツールのための高レベルシンタックス
CN117676135A (zh) 2019-10-18 2024-03-08 北京字节跳动网络技术有限公司 子图片与环路滤波之间的相互影响
US11425405B2 (en) * 2019-11-15 2022-08-23 Qualcomm Incorporated Cross-component adaptive loop filter in video coding
WO2021129866A1 (en) 2019-12-27 2021-07-01 Beijing Bytedance Network Technology Co., Ltd. Signaling of slice types in video pictures headers
BR112022020366A2 (pt) 2020-04-07 2022-11-29 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho para processamento de dados de vídeo e meios de armazenamento e de gravação não transitórios legíveis por computador
JP7506175B2 (ja) 2020-04-09 2024-06-25 北京字節跳動網絡技術有限公司 映像コーディングにおけるデブロッキング信号通知
WO2021204251A1 (en) 2020-04-10 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Use of header syntax elements and adaptation parameter set
CN115868159A (zh) 2020-04-17 2023-03-28 抖音视界有限公司 自适应参数集单元的存在
CN115552802A (zh) 2020-04-26 2022-12-30 字节跳动有限公司 加权预测信息的条件信令通知
US12113987B2 (en) * 2020-12-22 2024-10-08 Qualcomm Incorporated Multi-pass decoder-side motion vector refinement
US20230336772A1 (en) * 2022-04-18 2023-10-19 Tencent America LLC Mmvd candidate refinement methods
WO2023250115A1 (en) * 2022-06-23 2023-12-28 Beijing Dajia Internet Information Technology Co., Ltd Method and apparatus for cross-component prediction for video coding
WO2024006409A1 (en) * 2022-06-29 2024-01-04 Beijing Dajia Internet Information Technology Co., Ltd Method and apparatus for cross-component prediction for video coding
WO2024081291A1 (en) * 2022-10-12 2024-04-18 Beijing Dajia Internet Information Technology Co., Ltd Method and apparatus for cross-component prediction for video coding
WO2024151645A1 (en) * 2023-01-10 2024-07-18 Bytedance Inc. Method, apparatus, and medium for video processing
US20240314343A1 (en) * 2023-03-13 2024-09-19 Tencent America LLC Block based weighting factor for joint motion vector difference coding mode
WO2024215910A1 (en) * 2023-04-11 2024-10-17 Bytedance Inc. Method, apparatus, and medium for video processing

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101768207B1 (ko) 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US9313519B2 (en) * 2011-03-11 2016-04-12 Google Technology Holdings LLC Interpolation filter selection using prediction unit (PU) size
JP5649523B2 (ja) 2011-06-27 2015-01-07 日本電信電話株式会社 映像符号化方法,装置,映像復号方法,装置およびそれらのプログラム
US20130177084A1 (en) 2012-01-10 2013-07-11 Qualcomm Incorporated Motion vector scaling in video coding
US10200709B2 (en) 2012-03-16 2019-02-05 Qualcomm Incorporated High-level syntax extensions for high efficiency video coding
US9420280B2 (en) * 2012-06-08 2016-08-16 Qualcomm Incorporated Adaptive upsampling filters
US9538180B2 (en) 2012-12-17 2017-01-03 Qualcomm Incorporated Motion vector prediction in video coding
US9374581B2 (en) 2013-01-07 2016-06-21 Qualcomm Incorporated Signaling of picture order count to timing information relations for video timing in video coding
US9380305B2 (en) 2013-04-05 2016-06-28 Qualcomm Incorporated Generalized residual prediction in high-level syntax only SHVC and signaling and management thereof
US9900605B2 (en) * 2013-10-14 2018-02-20 Qualcomm Incorporated Device and method for scalable coding of video information
US10880565B2 (en) 2014-03-24 2020-12-29 Qualcomm Incorporated Use of specific HEVC SEI messages for multi-layer video codecs
US9918105B2 (en) 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US10055674B2 (en) * 2015-03-20 2018-08-21 Texas Instruments Incorporated Confidence estimation for optical flow
CN107925775A (zh) * 2015-09-02 2018-04-17 联发科技股份有限公司 基于双向预测光流技术的视频编解码的运动补偿方法及装置
US10375413B2 (en) * 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
US10368083B2 (en) 2016-02-15 2019-07-30 Qualcomm Incorporated Picture order count based motion vector pruning
WO2017188566A1 (ko) * 2016-04-25 2017-11-02 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
EP3456049B1 (en) * 2016-05-13 2022-05-04 VID SCALE, Inc. Systems and methods for generalized multi-hypothesis prediction for video coding
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US20170374369A1 (en) * 2016-06-24 2017-12-28 Mediatek Inc. Methods and Apparatuses of Decoder Side Intra Mode Derivation
US10390015B2 (en) * 2016-08-26 2019-08-20 Qualcomm Incorporated Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction
US10462462B2 (en) 2016-09-29 2019-10-29 Qualcomm Incorporated Motion vector difference coding technique for video coding
US11356693B2 (en) 2016-09-29 2022-06-07 Qualcomm Incorporated Motion vector coding for video coding
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
WO2018097078A1 (ja) * 2016-11-22 2018-05-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
WO2018097700A1 (ko) * 2016-11-28 2018-05-31 한국전자통신연구원 필터링을 위한 방법 및 장치
US11503286B2 (en) 2016-11-28 2022-11-15 Electronics And Telecommunications Research Institute Method and device for filtering
US10965955B2 (en) 2016-12-22 2021-03-30 Mediatek Inc. Method and apparatus of motion refinement for video coding
US10931969B2 (en) 2017-01-04 2021-02-23 Qualcomm Incorporated Motion vector reconstructions for bi-directional optical flow (BIO)
US12063387B2 (en) * 2017-01-05 2024-08-13 Hfi Innovation Inc. Decoder-side motion vector restoration for video coding
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10701366B2 (en) * 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder
US10523964B2 (en) 2017-03-13 2019-12-31 Qualcomm Incorporated Inter prediction refinement based on bi-directional optical flow (BIO)
WO2018166357A1 (en) 2017-03-16 2018-09-20 Mediatek Inc. Method and apparatus of motion refinement based on bi-directional optical flow for video coding
US10595035B2 (en) * 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US10491917B2 (en) * 2017-03-22 2019-11-26 Qualcomm Incorporated Decoder-side motion vector derivation
CN116708831A (zh) * 2017-04-24 2023-09-05 Sk电信有限公司 编解码视频数据的方法、发送编码视频数据比特流的方法
WO2018230493A1 (ja) * 2017-06-14 2018-12-20 シャープ株式会社 動画像復号装置、動画像符号化装置、予測画像生成装置及び動きベクトル導出装置
US11363293B2 (en) 2017-07-03 2022-06-14 Vid Scale, Inc. Motion-compensation prediction based on bi-directional optical flow
CN116744018A (zh) 2017-08-29 2023-09-12 Sk电信有限公司 视频编码方法、视频解码方法和传输比特流的方法
US10986360B2 (en) * 2017-10-16 2021-04-20 Qualcomm Incorproated Various improvements to FRUC template matching
US11750832B2 (en) 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
US20190141320A1 (en) 2017-11-07 2019-05-09 Qualcomm Incorporated Enhanced reference picture management in video coding
CN112272952B (zh) * 2018-06-11 2022-07-01 寰发股份有限公司 用于视频编解码的双向光流的方法以及装置
US11470308B2 (en) * 2018-09-21 2022-10-11 Vid Scale, Inc. Complexity reduction and bit-width control for bi-directional optical flow
BR112021008251A2 (pt) 2018-11-05 2021-08-03 Beijing Bytedance Network Technology Co., Ltd. método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador

Also Published As

Publication number Publication date
US11089310B2 (en) 2021-08-10
US20220038714A1 (en) 2022-02-03
US20210160511A1 (en) 2021-05-27
MX2021004715A (es) 2021-06-04
US20240089464A1 (en) 2024-03-14
CN112997485A (zh) 2021-06-18
CN117241017A (zh) 2023-12-15
US11706421B2 (en) 2023-07-18
US20200396453A1 (en) 2020-12-17
EP3861731A4 (en) 2021-11-24
WO2020094000A1 (en) 2020-05-14
CN112970259B (zh) 2024-06-28
EP3861731A1 (en) 2021-08-11
JP7231727B2 (ja) 2023-03-01
WO2020093999A1 (en) 2020-05-14
WO2020094010A1 (en) 2020-05-14
US20220086458A1 (en) 2022-03-17
KR20230158645A (ko) 2023-11-20
JP2022506161A (ja) 2022-01-17
CN118694931A (zh) 2024-09-24
EP4300965A2 (en) 2024-01-03
JP2023062073A (ja) 2023-05-02
US11902535B2 (en) 2024-02-13
JP7529827B2 (ja) 2024-08-06
SG11202104480RA (en) 2021-05-28
KR102607097B1 (ko) 2023-11-29
KR20210084474A (ko) 2021-07-07
CN112970261A (zh) 2021-06-15
US11064206B2 (en) 2021-07-13
EP4300965A3 (en) 2024-01-17
US20200382795A1 (en) 2020-12-03
CN112970259A (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
BR112021008251A2 (pt) método para processar vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador
US11831884B2 (en) Interaction between IBC and BIO
US11653020B2 (en) Fast algorithms for adaptive motion vector resolution in affine mode
US11889108B2 (en) Gradient computation in bi-directional optical flow
US11956465B2 (en) Difference calculation based on partial position
US20210160525A1 (en) Affine inheritance method in intra block copy mode
US11641467B2 (en) Sub-block based prediction
US11729377B2 (en) Affine mode in video coding and decoding
WO2020156525A1 (en) Multiple syntax elements for adaptive motion vector resolution
RU2808586C2 (ru) Интерполяция для внешнего предсказания с уточнением