BR112018006266B1 - Fluxo ótico bidirecional avançado para codificação de vídeo - Google Patents

Fluxo ótico bidirecional avançado para codificação de vídeo Download PDF

Info

Publication number
BR112018006266B1
BR112018006266B1 BR112018006266-9A BR112018006266A BR112018006266B1 BR 112018006266 B1 BR112018006266 B1 BR 112018006266B1 BR 112018006266 A BR112018006266 A BR 112018006266A BR 112018006266 B1 BR112018006266 B1 BR 112018006266B1
Authority
BR
Brazil
Prior art keywords
block
image
reference image
video
bio
Prior art date
Application number
BR112018006266-9A
Other languages
English (en)
Other versions
BR112018006266A2 (pt
Inventor
Xiang Li
Jianle Chen
Wei-Jung Chien
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018006266A2 publication Critical patent/BR112018006266A2/pt
Publication of BR112018006266B1 publication Critical patent/BR112018006266B1/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/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/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

Landscapes

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

Abstract

FLUXO ÓTICO BIDIRECIONAL AVANÇADO PARA CODIFICAÇÃO DE VÍDEO. A presente invenção se refere a um dispositivo exemplificativo para decodificar dados de vídeo, incluindo um processador configurado para decodificar as primeira e segunda imagens de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes ou devem ser ambas exibidas após a imagem em curso; determinar um primeiro vetor de movimento (MVo) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinar um segundo vetor de movimento (MVi) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinar uma primeira distância temporal (TDo) a partir da imagem em curso para a primeira imagem de referência; determinar uma segunda distância temporal (TDi) a partir da imagem em curso para a segunda imagem de referência; e decodificar o bloco em curso de acordo com o fluxo óptico bidirecional (BIO) usando MVo, MVi, Todo e TDi.

Description

[0001] Este pedido de patente reivindica o benefício do Pedido de Patente US provisório n° 62/233,846; depositado em 28 de setembro de 2015, cujo conteúdo é aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta invenção refere-se à codificação de vídeo.
FUNDAMENTOS DA INVENÇÃO
[0003] As funcionalidades de vídeo digital podem ser incorporadas a uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores portáteis ou de mesa, computadores tablet, leitores de livros eletrônicos, câmeras digitais, dispositivos de gravação digital, leitores de mídia digital, dispositivos de jogos eletrônicos, consoles de jogos eletrônicos, telefones celulares ou de rádio via satélite, os chamados “telefones inteligentes”, dispositivos de vídeo- teleconferência, dispositivos de transmissão de vídeo e similares. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU- T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ITU-T H.265 / Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e / ou armazenar informações de vídeo digital de forma mais eficiente, implementando essas técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem predição espacial (intraimagem) e / ou temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser chamados de treeblocks, unidades de codificação (CUs) e / ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem podem ser codificados usando a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para maior compressão, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, que então podem ser quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em um arranjo bidimensional, podem ser escaneados para produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para obter ainda mais compressão.
SUMÁRIO DA INVENÇÃO
[0006] Em geral, esta invenção descreve técnicas para codificação (por exemplo, codificação ou decodificação) de dados de vídeo. Mais particularmente, esta invenção descreve vários avanços para técnicas de processamento de fluxo óptico bidirecional (BIO). Em particular, esta invenção descreve técnicas pelas quais um bloco é predito bidirecionalmente a partir de imagens de referência que ocorrem na mesma direção (por exemplo, ambas as imagens de referência tendo valores de ordem de exibição antes de uma imagem em curso ou após a imagem em curso) a serem preditas usando BIO. Por exemplo, um codificador de vídeo pode determinar se os vetores de movimento que se referem a blocos de referência nas imagens de referência estão em proporção, ou quase em proporção, às distâncias temporais correspondentes entre a imagem em curso e as imagens de referência. Além disso, ou em alternativa, o codificador de vídeo pode evitar o uso de BIO quando pelo menos um dos vetores de movimento é de valor zero e / ou o bloco em curso ocorre em uma região de mudança de iluminação.
[0007] Em um exemplo, um método de decodificação de dados de vídeo inclui a decodificação de uma primeira imagem de referência e uma segunda imagem de referência, sendo a segunda imagem de referência diferente da primeira imagem de referência; adição da primeira imagem de referência a uma lista de imagens de referência para uma imagem em curso, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou ambas devem ser exibidas após a imagem em curso; determinação de um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência, determinação de um segundo vetor de movimento (MV1) a partir do bloco em curso com um segundo bloco de referência da segunda imagem de referência; determinação de uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinação de uma segunda distância temporal (TD1) da imagem em curso para a segunda imagem de referência; e decodificação do bloco em curso de acordo com fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0008] Em outro exemplo, um método de codificação de dados de vídeo inclui a decodificação de uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou ambas devem ser exibidas após a imagem em curso; determinação de um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinação de um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinação de uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinação de uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência, e codificação do bloco em curso de acordo com fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0009] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e um ou mais processadores configurados para decodificar uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; determinar um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinar um segundo vetor de movimento (MV1) do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinar uma primeira distância temporal (TD0) da imagem em curso para a primeira imagem de referência; determinar uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência; e decodificar o bloco em curso de acordo com o fluxo ótico bidirecional (BIO) utilizando MV0, MV1, TD0 e TD1.
[0010] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui meios de decodificar uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; meios de determinar que um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; meios de determinar que um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência; meios de determinar que uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; meios de determinar que uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência; e meios de decodificar o bloco em curso de acordo com o fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0011] Em outro exemplo, um meio de armazenamento legível por computador tem nele armazenadas instruções que, quando executadas, levam um processador de um dispositivo a decodificar dados de vídeo para decodificar uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; determinar um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinar um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinar uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinar uma segunda distância temporal (TD1) da imagem em curso para a segunda imagem de referência, e decodificar o bloco em curso de acordo com o fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0012] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0013] A FIG. 1 é um diagrama em blocos ilustrando um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar técnicas para fluxo óptico bidirecional.
[0014] A FIG. 2 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento unilateral (ME) como um algoritmo de correspondência de blocos (BMA) realizado para conversão ascendente de taxa de quadros compensada por movimento (MC-FRUC).
[0015] A FIG. 3 é um diagrama conceitual que ilustra um exemplo da ME bilateral como um BMA realizado para MC-FRUC.
[0016] A FIG. 4 é um diagrama conceitual que ilustra um avanço exemplificativo para o fluxo óptico bidirecional (BIO) de acordo com as técnicas desta invenção.
[0017] A FIG. 5 é um diagrama em blocos que ilustra um exemplo de um codificador de vídeo.
[0018] A FIG. 6 é um diagrama em blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas para fluxo óptico bidirecional.
[0019] A FIG. 7 é um fluxograma que ilustra um método exemplificativo para predizer um bloco de dados de vídeo de acordo com as técnicas desta invenção.
[0020] A FIG. 8 é um fluxograma que ilustra um método exemplificativo de decodificação de um bloco de dados de vídeo de acordo com as técnicas desta invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0021] Em geral, as técnicas desta invenção estão relacionadas a avanços do fluxo óptico bidirecional (BIO). BIO pode ser aplicado durante a compensação de movimento. Em geral, o BIO é usado para modificar um vetor de movimento em uma base por pixel para um bloco em curso, de forma que os pixels do bloco em curso sejam preditos usando valores de deslocamento correspondentes aplicados ao vetor de movimento. As várias técnicas desta invenção podem ser aplicadas, sozinhas ou em qualquer combinação, para determinar quando e se o BIO deve ser executado ao predizer blocos de dados de vídeo, por exemplo, durante a compensação de movimento. Em um exemplo, as técnicas desta invenção incluem a realização do BIO quando vetores de movimento usados para interpredizer um bloco de dados de vídeo de uma imagem em curso em relação a blocos de referência de imagens de referência em uma direção de predição comum estão em proporção, ou quase em proporção, a distâncias temporais entre a imagem em curso e as imagens de referência, e para evitar a execução do BIO de outra forma. Além disso, ou alternativamente, o BIO pode ser executado somente quando o bloco não estiver em uma região de mudança de iluminação. Além disso, as técnicas pelas quais BIO são executadas geralmente incluem o cálculo de gradientes para os blocos. De acordo com as técnicas desta invenção, os gradientes podem ser modificados de acordo com as distâncias temporais entre a imagem em curso e as imagens de referência.
[0022] As técnicas desta invenção podem ser aplicadas a qualquer codec de vídeo existente, tais como aqueles em conformidade com ITU-T H.264/AVC (Codificação de Vídeo Avançada) ou Codificação de Vídeo de Alta Eficiência (HEVC), também referida como ITU- T H.265. H.264 é descrita na União Internacional de Telecomunicações, “Codificação de vídeo avançada para serviços audiovisuais genéricos”, SÉRIE H: SISTEMAS AUDIOVISUAIS E MULTIMÍDIA, Infraestrutura de serviços audiovisuais - Codificação de vídeos em movimento, H.264, junho de 2011; e H.265 é descrita na União Internacional de Telecomunicações, “Codificação de vídeo de alta eficiência”, SÉRIE H: SISTEMAS AUDIOVISUAIS E MULTIMÍDIA, Infraestrutura de serviços audiovisuais - Codificação de vídeo em movimento, abril de 2015. As técnicas desta invenção também podem ser aplicadas a quaisquer outros padrões de codificação de vídeo anteriores ou futuros como uma ferramenta de codificação eficiente.
[0023] Outros padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e as extensões Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC) do H.264, bem como as extensões do HEVC, como a extensão de alcance, extensão multivista (MV-HEVC) e extensão escalável (SHVC). Em abril de 2015, o Grupo de Especialistas em Codificação de Vídeo (VCEG) iniciou um novo projeto de pesquisa que visa uma nova geração de padrões de codificação de vídeo. O software de referência é chamado HM-KTA.
[0024] Certas técnicas de codificação de vídeo, como aquelas de H.264 e HEVC, que estão relacionadas com as técnicas desta invenção, são descritas abaixo.
[0025] A discussão a seguir refere-se a informações de movimento. Em geral, uma imagem é dividida em blocos, cada um deles pode ser codificado preditivamente. A predição de um bloco em curso pode geralmente ser realizada usando técnicas de intrapredição (usando dados da imagem incluindo o bloco em curso) ou técnicas de interpredição (usando dados de uma imagem codificada anteriormente relativa à imagem incluindo o bloco em curso). Interpredição inclui predição unidirecional e predição bidirecional.
[0026] Para cada bloco interpredito, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento pode conter informações de movimento para direções de predição para frente e para trás. Aqui, as direções de predição para frente e para trás são duas direções de predição de um modo de predição bidirecional e os termos “para frente” e “para trás” não têm necessariamente um significado de geometria. Em vez disso, eles geralmente correspondem a se as imagens de referência devem ser exibidas antes (“para trás”) ou depois (“para frente”) da imagem em curso. Em alguns exemplos, as direções de predição “para frente” e “para trás” podem corresponder à lista de imagens de referência 0 (RefPicList0) e à lista de imagens de referência 1 (RefPicList1) de uma imagem em curso. Quando apenas uma lista de imagens de referência está disponível para uma imagem ou fatia, apenas a RefPicList0 está disponível e a informação de movimento de cada bloco de uma fatia sempre se refere a uma imagem da RefPicList0 (por exemplo, é para frente).
[0027] Em alguns casos, um vetor de movimento junto com seu índice de referência é usado em um processo de decodificação. Esse vetor de movimento com seu índice de referência associado é denotado como um conjunto unipreditivo de informações de movimento.
[0028] Para cada direção de predição, a informação de movimento contém um índice de referência e um vetor de movimento. Em alguns casos, por uma questão de simplicidade, um vetor de movimento em si pode ser referido de uma maneira em que se supõe que ele tenha um índice de referência associado. Um índice de referência pode ser usado para identificar uma imagem de referência na lista de imagens de referência em curso (RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal (x) e um vertical (y). Em geral, o componente horizontal indica um deslocamento horizontal dentro de uma imagem de referência, em relação à posição de um bloco em curso em uma imagem em curso, necessário para localizar uma coordenada x de um bloco de referência, enquanto o componente vertical indica um deslocamento vertical dentro da imagem de referência, em relação à posição do bloco em curso, necessária para localizar uma coordenada y do bloco de referência.
[0029] Os valores da contagem de ordem de imagem (POC) são amplamente utilizados em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora haja casos em que duas imagens dentro de uma sequência de vídeo codificada podem ter o mesmo valor da POC, isso normalmente não acontece dentro de uma sequência de vídeo codificada. Assim, os valores da POC de imagens são geralmente únicos e, portanto, podem identificar exclusivamente as imagens correspondentes. Quando várias sequências de vídeo codificadas estão presentes em um fluxo de bits, as imagens que têm o mesmo valor de POC podem estar mais próximas umas das outras em termos de ordem de decodificação. Os valores de POC das imagens são normalmente usados para a construção da lista de imagens de referência, derivação de conjuntos de imagens de referência como em HEVC e dimensionamento de vetor de movimento.
[0030] H. Liu, R. Xiong, D. Zhao, S. Ma e W. Gao, “Multiple Hypotyheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations” transações IEEE quanto a circuitos e sistemas para tecnologia de vídeo, volume 22, n° 8, agosto de 2012; W.H. Lee, K. Choi, J.B. Ra, “Frame rate up conversion based on variational image fusion”, transações IEEE quanto a processamento de imagem, volume 23, n° 1, janeiro de 2014; e U.S. Kim e M.H. Sunwoo, “New frame rate up-conversion algorithms with low computational complexity”, transações IEEE quanto a circuitos e sistemas para tecnologia de vídeo, volume 24, número 3, março de 2014 descrevem um processo denominado conversão ascendente da taxa de quadros (FRUC). A tecnologia FRUC pode ser usada para gerar vídeos com alta taxa de quadros baseados em vídeos de baixa taxa de quadros. A FRUC tem sido amplamente utilizada na indústria de exibições.
[0031] Algoritmos FRUC podem ser divididos em dois tipos. Um tipo de método pode ser executado para interpolar quadros intermediários por repetição ou média de quadros simples. No entanto, esse método fornece resultados impróprios em uma imagem que contém muito movimento. O outro tipo de método, chamado FRUC com movimento compensado (MC-FRUC), considera o movimento do objeto quando ele gera quadros intermediários e inclui duas etapas: estimativa de movimento (ME) e interpolação compensada por movimento (MCI). Os dispositivos de codificação de vídeo executam ME para gerar vetores de movimento (MVs), que representam o movimento do objeto usando vetores, enquanto os dispositivos de codificação de vídeo executam MCI usando MVs para gerar (por exemplo, interpolar) quadros intermediários.
[0032] O algoritmo de correspondência de blocos (BMA) é amplamente utilizado para ME em MC-FRUC, porque é simples de implementar. Um dispositivo de codificação de vídeo que aplica BMA divide uma imagem em blocos e detecta o movimento desses blocos. Dois tipos de ME são usados principalmente para BMA: ME unilateral e ME bilateral. Exemplos de ambos os tipos de ME estão descritos em maiores detalhes abaixo.
[0033] Li et al., “VIDEO CODING TOOL BASED ON FRAME-RATE UP-CONVERSION”, Pedido Provisório US n° 62/139, 572, depositado em 27 de março de 2015, e Li et al., “VIDEO CODING TOOL BASED ON FRAME-RATE UP-CONVERSION”, Pedido Provisório US n° 62/182,367, apresentado em 19 de junho de 2015, propôs um método de codificação baseado no método de conversão ascendente de taxa de quadros (FRUC). O método foi bastante eficiente e foi adotado no software HM-KTA- 2.0.
[0034] E. Alshina, A. Alshin, J.-H. Min., K. Choi, A. Saxena, M. Budagavi, “Known tools performance investigation for next generation video coding”, ITU - Sector de Normalização de Telecomunicações, GRUPO DE ESTUDO 16, Pergunta 6, Grupo de Especialistas em Codificação de Vídeo (VCEG), VCEG-AZ05, Junho de 2015, Varsóvia, Polônia (doravante, “Alshina 1”), e A. Alshina, E. Alshina, T. Lee, “Bi-directional optical flow for improving motion compensation”, Simpósio de Codificação de Imagens (PCS), Nagoya, Japão, 2010 (doravante, “Alshina 2”) descreveu um método chamado fluxo óptico bidirecional (BIO). BIO baseia- se em fluxo óptico em nível de pixel. De acordo com Alshina 1 e Alshina 2, BIO é aplicado apenas aos blocos que possuem predição para frente e para trás. BIO, como descrito em Alshina 1 e Alshina 2, está resumido abaixo:
[0035] Dado um valor de pixel lt no tempo t, sua expansão de primeira ordem Taylor é:
[0036]lt0 Está na trajetória de movimento de lt. Ou seja, o movimento de lt0 para lt é considerado na fórmula.
[0037] Sob a hipótese do fluxo óptico: deixar (gradiente), e a equação (1) se torna
[0038] A respeito de e como a velocidade de movimento, é possível usar Vx0 eVy0 para representá-los.
[0039] Então a equação (2) se torna
[0040] Suponha que se tem uma referência para frente em t0 e uma referência para trás em t1, e
[0041] Tem-se:
[0042] Assume-se ainda , visto que o movimento é ao longo da trajetória. Então (4) se torna onde pode ser calculado com base em Referências reconstruídas. Uma vez que é a bipredição regular, é chamada de desvio de BIO daqui por diante, por conveniência.
[0043] Vx e Vy são derivados tanto no codificador quanto no decodificador, minimizando a seguinte distorção:
[0044] Com Vx e Vy derivados, a predição final do bloco é calculada com (5). Vx e Vy são chamados “movimento BIO” por conveniência.
[0045] Em geral, um codificador de vídeo executa BIO durante a compensação de movimento. Ou seja, depois que o codificador de vídeo determina um vetor de movimento para um bloco em curso, o codificador de vídeo produz um bloco predito para o bloco em curso usando compensação de movimento em relação ao vetor de movimento. Em geral, o vetor de movimento identifica a localização de um bloco de referência em relação ao bloco em curso em uma imagem de referência. Ao executar BIO, um codificador de vídeo modifica o vetor de movimento em uma base por pixel para o bloco em curso. Ou seja, em vez de recuperar cada pixel do bloco de referência como uma unidade de bloco, de acordo com BIO, o codificador de vídeo determina modificações por pixel ao vetor de movimento para o bloco em curso, e constrói o bloco de referência de tal forma que o bloco de referência inclua pixels de referência identificados pelo vetor de movimento e a modificação por pixel para o pixel correspondente do bloco em curso. Assim, BIO pode ser usado para produzir um bloco de referência mais preciso para o bloco em curso.
[0046] Esta invenção descreve técnicas que podem melhorar técnicas relacionadas com BIO de acordo com, por exemplo, Alshina 1 e Alshina 2. Por exemplo, esta invenção descreve técnicas que podem melhorar ainda mais a eficiência de codificação de codecs de vídeo, por exemplo, em relação ao desempenho de BIO. Por exemplo, de acordo com Alshina 1 e Alshina 2, o BIO só pode ser aplicado a um bloco que tenha predição para frente e para trás. Além disso, BIO pode levar a perdas quando há uma mudança de iluminação. Além disso, BIO pode não ser estável, especialmente para sequências barulhentas. As técnicas desta invenção podem superar esses problemas e melhorar o desempenho do BIO.
[0047] A FIG. 1 é um diagrama em blocos que ilustra um sistema de codificação e decodificação de vídeo 10 exemplificativo que pode utilizar técnicas para fluxo óptico bidirecional. Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados para serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo ao dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla gama de dispositivos, incluindo computadores de mesa, computadores portáteis (isto é, laptops), tablets, decodificadores, telefones portáteis como os chamados telefones “inteligentes”, os chamados dispositivos “inteligentes”, televisões, câmeras, dispositivos de exibição, leitores de mídia digital, consoles de jogos eletrônicos, dispositivo de transmissão de vídeo ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0048] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através do meio legível por computador 16. O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente ao dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, como uma rede local, uma rede de longa distância ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0049] Em alguns exemplos, os dados codificados podem ser emitidos da interface de saída 22 para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequados para armazenamento de dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que possa armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados ao dispositivo de destino 14. Exemplos de servidores de arquivos incluem um servidor de rede (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento conectado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma ligação à Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de download ou uma combinação dos mesmos.
[0050] As técnicas desta invenção não são necessariamente limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer uma dentre uma variedade de aplicações multimídia, como transmissões televisivas over- the-air, transmissões televisivas a cabo, transmissões televisivas via satélite, transmissões de vídeo via streaming da Internet, como streaming adaptativo dinâmico via HTTP (DASH), vídeo digital codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como transmissão contínua de vídeo, reprodução de vídeo, radiodifusão de vídeo, e / ou videotelefonia.
[0051] No exemplo da FIG. 1, o dispositivo de origem 12 inclui a fonte de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. O dispositivo de destino 14 inclui a interface de entrada 28, o decodificador de vídeo 30 e o dispositivo de visualização 32. De acordo com esta invenção, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para fluxo óptico bidirecional. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode interagir com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0052] O sistema ilustrado 10 da FIG. 1 é meramente um exemplo. Técnicas para fluxo óptico bidirecional podem ser realizadas por qualquer dispositivo de codificação e / ou decodificação de vídeo digital. Embora geralmente as técnicas desta invenção sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador / decodificador de vídeo, normalmente chamado de “CODEC”. Além disso, as técnicas desta invenção também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação, nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão ao dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma maneira substancialmente simétrica, de tal modo que cada um dos dispositivos 12, 14 inclui componentes de codificação e decodificação de vídeo. Assim, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, radiodifusão de vídeo ou videotelefonia.
[0053] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente e / ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em computação gráfica como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 poderão formar os chamados telefones com câmera ou videofone. Como mencionado acima, no entanto, as técnicas descritas nesta invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e / ou com fio. Em cada caso, o vídeo capturado, pré- capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser enviada pela interface de saída 22 para um meio legível por computador 16.
[0054] O meio legível por computador 16 pode incluir meios temporários, como radiodifusão de rede sem fio ou transmissão de rede com fio, ou meios de armazenamento (ou seja, meios de armazenamento não transitório), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outros meios legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, via transmissão de rede. Da mesma forma, um dispositivo de computação de uma unidade de produção de meio, tal como uma unidade de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Por conseguinte, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0055] A interface de entrada 28 do dispositivo de destino 14 recebe informação do meio legível por computador 16. A informação do meio legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que é também utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e / ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode incluir qualquer um dentre uma variedade de dispositivos de exibição, como um tubo de raios catódicos (CRT), um visor de cristal líquido (LCD), um monitor de plasma, um visor de diodo emissor de luz orgânico (OLED), ou outro tipo de dispositivo de exibição.
[0056] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como o padrão Codificação de Vídeo de Alta Eficiência (HEVC), também conhecido como ITU-T H.265. Em alternativa, o codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com outros padrões proprietários ou industriais, como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões desses padrões. As técnicas desta invenção, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223, ou outros protocolos como o protocolo de datagrama do usuário (UDP).
[0057] Em geral, de acordo com ITU-T H.265, um quadro ou imagem de vídeo pode ser dividido em uma sequência de treeblocks ou unidades de codificação maiores (LCU) que incluem amostras de luminância e de crominância. Dados de sintaxe dentro de um fluxo de bits podem definir um tamanho para a LCU, que é a maior unidade de codificação em termos do número de pixels. Uma fatia inclui um número de treeblocks consecutivos na ordem de codificação. Um quadro ou imagem de vídeo pode ser dividido em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (CUs) de acordo com uma quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó raiz correspondente ao treeblock. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós- folha, cada um deles corresponde a uma das sub-CUs.
[0058] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode incluir um sinalizador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e pode depender se a CU é dividida em sub-CUs. Se uma CU não for dividida ainda mais, ela é referida como uma CU-folha. Nesta invenção, quatro sub-CUs de uma CU-folha serão também referidas como CUs- folha, mesmo se não houver divisão explícita da CU-folha original. Por exemplo, se uma CU em tamanho 16x16 não for dividida ainda mais, as quatro sub-CUs 8x8 também serão referidas como CUs-folha, embora a CU 16x16 nunca tenha sido dividida.
[0059] Uma CU tem uma finalidade similar a um macrobloco do padrão H.264, exceto que uma CU não possui uma distinção de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós secundários (também chamados de sub-CUs), e cada nó secundário pode, por sua vez, ser um nó original e ser dividido em outros quatro nós secundários. Um nó secundário final não dividido, referido como um nó- folha da quadtree, compreende um nó de codificação, também referido como uma CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que um treeblock pode ser dividido, referido como uma profundidade máxima de CU, e também podem definir um tamanho mínimo dos nós de codificação. Consequentemente, um fluxo de bits também pode definir uma unidade de codificação menor (SCU). Esta invenção usa o termo “bloco” para se referir a qualquer dentre uma CU, unidade de predição (PU) ou unidade de transformada (TU), no contexto da HEVC, ou estruturas de dados semelhantes no contexto de outros padrões (por exemplo, seus macroblocos e sub-blocos em H.264/AVC).
[0060] Uma CU inclui um nó de codificação e pode incluir uma ou mais unidades de predição (PUs) e / ou unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e é geralmente de forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um tamanho máximo de, por exemplo, 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e / ou uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, a divisão da CU em sub-CUs, divisões ou uma ou mais PUs. Os modos de divisão podem diferir entre se a CU é ignorada ou codificada em modo direto, codificada em modo de intrapredição ou modo de interpredição. PUs podem ser divididas para que não sejam de forma quadrada. Os dados de sintaxe associados a uma CU também podem descrever, por exemplo, a divisão da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser de forma quadrada ou não quadrada (por exemplo, retangular).
[0061] O padrão HEVC permite transformadas de acordo com as TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida para uma LCU dividida, embora isso nem sempre seja o caso. As TUs são tipicamente do mesmo tamanho ou menores que as PUs. Em alguns exemplos, amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores usando uma estrutura quadtree conhecida como “quadtree residual” (RQT). Os nós-folha da RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantificados.
[0062] Uma CU-folha pode incluir uma ou mais PUs. Em geral, uma PU representa uma área espacial correspondente a toda ou uma parte da CU correspondente, e pode incluir dados para recuperar e / ou gerar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Por exemplo, quando a PU é codificada em modo intra, os dados para a PU podem ser incluídos em uma quadtree residual (RQT), que pode incluir dados descrevendo um modo de intrapredição para uma TU correspondente à PU. A RQT também pode ser referida como uma árvore de transformada. Em alguns exemplos, o modo de intrapredição pode ser sinalizado na sintaxe da CU-folha, em vez da RQT. Como outro exemplo, quando a PU é codificada em modo inter, a PU pode incluir dados que definem informações de movimento, como um ou mais vetores de movimento, para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência para a qual o vetor de movimento aponta e / ou uma lista de imagens de referência (por exemplo, Lista 0 ou Lista 1) para o vetor de movimento.
[0063] Uma CU-folha também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas usando uma RQT (também referida como uma estrutura em quadtree da TU), como discutido acima. Por exemplo, um sinalizador de divisão pode indicar se uma CU-folha é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ainda ser dividida em sub-TUs adicionais. Quando uma TU não é dividida, ela pode ser chamada de TU-folha. Geralmente, para intracodificação, todas as TUs-folha pertencentes a uma CU-folha compartilham o mesmo modo de intrapredição. Ou seja, o mesmo modo de intrapredição é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU-folha. Para intracodificação, um codificador de vídeo pode calcular um valor residual para cada TU-folha usando o modo intrapredição, como uma diferença entre a parte da CU correspondente à TU e ao bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser maiores ou menores que uma PU. Para intracodificação, uma PU pode ser justaposta com uma TU-folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0064] Além disso, TUs de CUs-folha também podem ser associadas com as respectivas estruturas de dados quadtree, referidas como quadtrees residuais (RQTs). Ou seja, uma CU-folha pode incluir uma quadtree indicando como a CU-folha é dividida em TUs. O nó raiz de uma quadtree TU geralmente corresponde a uma CU-folha, enquanto o nó raiz de uma quadtree CU geralmente corresponde a um bloco em árvoro (ou LCU). As TUs da RQT que não estão divididas são chamadas de TUs-folha. Em geral, esta invenção usa os termos CU e TU para se referir a CU-folha e TU-folha, respectivamente, salvo indicação em contrário.
[0065] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descreve um modo de codificação para a respectiva fatia. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais para codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variados e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0066] Como exemplo, a predição pode ser realizada para PUs de vários tamanhos. Assumindo que o tamanho de uma determinada CU é de 2Nx2N, a intrapredição pode ser realizada em tamanhos de PU de 2Nx2N ou NxN, e a interpredição pode ser realizada em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. A divisão assimétrica para interpredição também pode ser realizada para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na divisão assimétrica, uma direção de uma UC não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à divisão de 25% é indicada por um “n” seguido por uma indicação de “Acima”, “Abaixo”, “Esquerda” ou “Direita”. Assim, por exemplo, “2NxnU” refere-se a uma CU 2Nx2N que é dividida horizontalmente com uma PU 2Nx0,5N acima e uma PU 2Nx1,5N abaixo.
[0067] Nesta invenção, “NxN” e “N por N” podem ser usados indistintamente para fazer referência às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma forma, um bloco NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não-negativo. Os pixels em um bloco podem ser organizados em linhas e colunas. Além disso, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal do que na direção vertical. Por exemplo, os blocos podem compreender pixels NxM, onde M não é necessariamente igual a N.
[0068] Seguindo a codificação intrapreditiva ou interpreditiva usando as PUs de uma CU, o codificador de vídeo 20 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de geração de dados de pixel preditivos no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, por exemplo, uma transformada discreta de cosseno (DCT), uma transformada de inteiros, uma transformada wavelet ou uma transformada conceitualmente semelhante para dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixels entre pixels da imagem não codificada e valores de predição correspondentes às divisões PU ou CU. O codificador de vídeo 20 pode formar as TUs para incluir coeficientes de transformada quantificados representativos dos dados residuais para a CU. Ou seja, o codificador de vídeo 20 pode calcular os dados residuais (na forma de um bloco residual), transformar o bloco residual para produzir um bloco de coeficientes de transformada e depois quantificar os coeficientes de transformada para formar coeficientes de transformada quantificados. O codificador de vídeo 20 pode formar um TU incluindo os coeficientes de transformada quantificados, bem como outras informações de sintaxe (por exemplo, informações de divisão para a TU).
[0069] Como observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantificação dos coeficientes de transformada. A quantificação geralmente refere-se a um processo no qual os coeficientes de transformada são quantificados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, fornecendo uma compressão adicional. O processo de quantificação pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante a quantificação, onde n é maior que m.
[0070] Após a quantificação, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, incluindo os coeficientes de transformada quantificados. A varredura pode ser concebida para colocar coeficientes de energia mais alta (e, portanto, menor frequência) na frente da matriz e colocar coeficientes de energia mais baixa (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantificados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Após varrer os coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação por comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), codificação de Entropia de Divisão por Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 também pode codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0071] Para executar a CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para realizar a CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras-código em VLC podem ser construídas de tal modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desta forma, o uso de VLC pode alcançar uma economia de bits em relação, por exemplo, ao uso de palavras-código de comprimento igual para cada símbolo a ser transmitido. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0072] Em geral, o decodificador de vídeo 30 realiza um processo substancialmente similar, embora recíproco, àquele realizado pelo codificador de vídeo 20 para decodificar dados codificados. Por exemplo, o decodificador de vídeo 30 quantifica inversamente os coeficientes de transformada inversa de uma TU recebida para reproduzir um bloco residual. O decodificador de vídeo 30 utiliza um modo de predição sinalizado (intra- ou interpredição) para formar um bloco predito. Em seguida, o decodificador de vídeo 30 combina o bloco predito e o bloco residual (em uma base pixel a pixel) para reproduzir o bloco original. Processamento adicional pode ser executado, como a execução de um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco. Além disso, o decodificador de vídeo 30 pode decodificar elementos de sintaxe utilizando CABAC de um modo substancialmente semelhante, embora recíproco, ao processo de codificação CABAC do codificador de vídeo 20.
[0073] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, como dados de sintaxe baseados em bloco, dados de sintaxe baseados em quadro e dados de sintaxe baseados em GOP, ao decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho GOP. Os dados de sintaxe do GOP podem descrever uma série de quadros no respectivo GOP, e os dados de sintaxe do quadro podem indicar um modo de codificação / predição usado para codificar o quadro correspondente.
[0074] De acordo com as técnicas desta invenção, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ainda realizar técnicas de fluxo óptico bidirecional (BIO) durante a compensação de movimento, como discutido em maiores detalhes abaixo. Em geral, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode aplicar BIO a blocos com duas imagens de referência diferentes na mesma lista de imagens de referência (por exemplo, ambas as imagens de referência na Lista 0 (RefPicList0) ou Lista 1 (RefPicList1). Além disso ou em alternativa, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode aplicar processos especiais durante BIO realizado para blocos em uma região de mudança de iluminação. Além disso ou em alternativa, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 podem ser configurados de acordo com certas restrições para evitar impactos negativos que podem ser causados pelo ruído durante o BIO.
[0075] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados como qualquer um dos vários circuitos codificadores ou decodificadores adequados, se aplicável, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos para aplicativos (ASICs), matrizes de portas programáveis em campo (FPGAs), circuitos lógicos discretos, software, hardware, firmware ou quaisquer combinações deles. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um deles pode ser integrado como parte de um codificador / decodificador de vídeo combinado (CODEC). Um dispositivo incluindo o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e / ou um dispositivo de comunicação sem fios, como um telefone celular.
[0076] A figura 2 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento unilateral (ME) como um algoritmo de correspondência de blocos (BMA) realizado para a conversão ascendente da taxa de quadros compensada por movimento (MC-FRUC). Em geral, um codificador de vídeo (como o codificador de vídeo 20 ou o decodificador de vídeo 30) realiza ME unilateral para obter vetores de movimento (MVs), como o MV 112, buscando o melhor bloco correspondente (por exemplo, bloco de referência 108) do quadro de referência 102 para o bloco em curso 106 do quadro em curso 100. Em seguida, o codificador de vídeo interpola um bloco interpolado 110 ao longo da trajetória de movimento do vetor de movimento 112 no quadro interpolado 104. Ou seja, no exemplo da FIG.2, o vetor de movimento 112 passa através dos pontos médios do bloco em curso 106, bloco de referência 108 e bloco interpolado 110.
[0077] Como mostrado na FIG. 2, três blocos em três quadros estão envolvidos após a trajetória de movimento. Embora o bloco em curso 106 no quadro em curso 100 pertença a um bloco codificado, o melhor bloco correspondente no quadro de referência 102 (isto é, o bloco de referência 108) não precisa pertencer completamente a um bloco codificado (ou seja, o melhor bloco correspondente pode não situar-se em um limite de bloco codificado, mas em vez disso, pode sobrepor tal limite). Da mesma forma, o bloco interpolado 110 no quadro interpolado 104 não precisa pertencer totalmente a um bloco codificado. Consequentemente, regiões sobrepostas dos blocos e regiões não preenchidas (buracos) podem ocorrer no quadro interpolado 104.
[0078] Para lidar com sobreposições, algoritmos FRUC simples envolvem apenas calcular a média e sobrescrever os pixels sobrepostos. Além disso, os buracos podem ser cobertos pelos valores de pixel de um quadro de referência ou em curso. No entanto, esses algoritmos podem resultar em artefatos de bloqueio e desfoque. Portanto, segmentação de campo de movimento, extrapolação sucessiva usando a transformada discreta de Hartley e retoque (inpainting) de imagem podem ser usados para manipular furos e sobreposições sem aumentar artefatos de bloqueio e desfoque.
[0079] A FIG.3 é um diagrama conceitual ilustrando um exemplo de ME bilateral como um BMA realizado para MC-FRUC. A ME bilateral é outra solução (em MC-FRUC) que pode ser usada para evitar os problemas causados por sobreposições e furos. Um codificador de vídeo (tal como o codificador de vídeo 20 e / ou o decodificador de vídeo 30) que realiza ME bilateral obtém MVs 132, 134 passando através do bloco interpolado 130 do quadro interpolado 124 (que é intermediário para o quadro em curso 120 e o quadro de referência 122) usando simetria temporal entre o bloco em curso 126 do quadro em curso 120 e o bloco de referência 128 do quadro de referência 122. Como resultado, o codificador de vídeo não gera sobreposições e furos no quadro interpolado 124. Uma vez que se assume que o bloco em curso 126 é um bloco que o codificador de vídeo processa em uma determinada ordem, por exemplo, como no caso da codificação de vídeo, uma sequência de tais blocos cobriria toda a imagem intermediária sem sobreposição. Por exemplo, no caso da codificação de vídeo, os blocos podem ser processados na ordem de decodificação. Portanto, esse método pode ser mais adequado se as ideias da FRUC puderem ser consideradas em uma estrutura de codificação de vídeo.
[0080] S.-F. Tu, O.C. Au, Y. Wu, E. Luo e C.-H. Yeun, “A Novel Framework for Frame Rate Up Conversion by Predictive Variable Block-Size Motion Estimated Optical Flow”, Congresso Internacional sobre Processamento de Sinais de Imagem (CISP), 2009 descreveram uma estimativa de movimento em nível de bloco híbrido e método de fluxo óptico em nível de pixel para conversão ascendente da taxa de quadros. Tu afirmou que o cenário híbrido era melhor que qualquer método individual.
[0081] A FIG. 4 é um diagrama conceitual que ilustra um exemplo de avanço para BIO de acordo com as técnicas desta invenção. Um exemplo de técnica desta invenção envolve aplicar BIO a blocos que têm duas imagens de referência diferentes que são, ambas, temporalmente anteriores à imagem em curso ou são, ambas, temporalmente posteriores à imagem em curso (por exemplo, que estão na mesma lista de imagens de referência, como Lista 0 ou Lista 1) e têm dois vetores de movimento que estão em proporção, ou quase em proporção, à distância temporal entre a imagem em curso e as imagens de referência. “Em proporção à distância temporal” e “quase em proporção à distância temporal” pode ser definido como a seguir: deixar TD0 e TD1 serem a distância temporal entre a imagem em curso e Ref0 e Ref1, respectivamente, como mostrado na FIG.4.
[0082] “Em proporção à distância temporal” pode ser definido como mostrado na fórmula (6) abaixo:
[0083] “Quase em proporção à distância temporal” pode ser definido como mostrado na fórmula (7) abaixo:
[0084] Th representa um valor limite, que pode ser pré-definido ou sinalizado no fluxo de bits. Por exemplo, Th pode ser sinalizado em um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), um cabeçalho de fatia, dados de sintaxe em nível de bloco ou semelhantes. Deixar “Cur” representar a imagem em curso, “Ref0” representar uma primeira imagem de referência e “Ref1” representar uma segunda imagem de referência. MV0x e MV0y representam o componente x e o componente y, respectivamente, de um vetor de movimento (MV0) de um bloco em curso de Cur para Ref0. MV1x e MV1y representam o componente x e o componente y, respectivamente, de um vetor de movimento (MV1) do bloco em curso para Ref1. TD0 representa a distância temporal entre Cur e Ref0 (por exemplo, a diferença entre um valor de POC para Cur e um valor de POC para Ref0). TD1 representa uma distância temporal entre Cur e Ref1 (por exemplo, a diferença entre o valor de POC para Cur e um valor de POC para Ref1).
[0085] Além disso, a fórmula (4) acima pode ser modificada de tal forma que (t - t0) é substituído por TD0, como discutido acima, e (t - t1) é substituído por TD1, como discutido acima. Assim, a fórmula (4) acima pode ser substituída pela fórmula (4’) como mostrado abaixo:
[0086] Em particular, o exemplo da FIG. 4 ilustra a imagem em curso 144 incluindo o bloco em curso 150. O bloco em curso 150 é predito a partir do bloco de referência 148 da imagem de referência 142 utilizando o vetor de movimento 154, e a partir do bloco de referência 146 da imagem de referência 140 utilizando o vetor de movimento 152. A imagem de referência 140 e a imagem de referência 142 ocorrem na mesma direção temporal em relação à imagem em curso 144. Ou seja, neste exemplo, a imagem de referência 140 e a imagem de referência 142 são, cada uma, exibidas antes da imagem em curso 144. Em outros exemplos, duas imagens de referência podem ocorrer após (isto é, serem exibidas após) uma imagem em curso, ainda que as técnicas desta invenção possam ainda ser aplicadas em tais exemplos. Além disso, a imagem de referência 140 tem uma distância temporal de TD1 158 da imagem em curso 144. TD1 158 pode ser igual a uma diferença entre um valor da contagem de ordem de imagem (POC) para a imagem em curso 144 e um valor de POC para a imagem de referência 140. Similarmente, a imagem de referência 142 tem uma distância temporal de TD0 156 da imagem em curso 144. Isto é, TD0 156 pode ser igual a uma diferença entre o valor de POC para a imagem em curso 144 e um valor de POC para a imagem de referência 142.
[0087] De acordo com as técnicas desta invenção, no exemplo da FIG. 4, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode determinar se os vetores de movimento 154, 152 estão em proporção ou quase em proporção a, TD0 156 e TD1 158, respectivamente. Por exemplo, o codificador de vídeo pode executar as fórmulas (6) e / ou (7) acima usando os valores x e y dos vetores de movimento 152, 154 e valores para as distâncias temporais TD0 156 e TD1 158. Em resposta à determinação de que os vetores de movimento 154, 152 estão em proporção a TD0 156 e TD1 158 (por exemplo, usando a fórmula (6)) ou quase em proporção a TD0 156 e TD1 158 (por exemplo, usando a fórmula (7)), o codificador de vídeo pode executar BIO ao predizer o bloco em curso 150. Alternativamente, em resposta à determinação de que os vetores de movimento 154, 152 não estão em proporção a TD0 156 e TD1 158 (por exemplo, usando a fórmula (6)) ou não quase em proporção a TD0 156 e TD1 158 (por exemplo, usando a fórmula (7)), o codificador de vídeo pode evitar a execução da BIO ao prever o bloco em curso 150.
[0088] A FIG. 5 é um diagrama em blocos ilustrando um exemplo do codificador de vídeo 20 que pode implementar técnicas para fluxo óptico bidirecional. O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação baseia-se na predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um determinado quadro ou imagem de vídeo. A intercodificação depende da predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O modo intra (modo I) pode se referir a qualquer um dos vários modos de codificação de base espacial. Modos inter, como predição unidirecional (modo P) ou bipredição (modo B), podem se referir a qualquer um dos vários modos de codificação baseados em tempo.
[0089] Como mostrado na FIG. 5, o codificador de vídeo 20 recebe um bloco de vídeo em curso dentro de um quadro de vídeo a ser codificado. No exemplo da FIG. 5, o codificador de vídeo 20 inclui a unidade de seleção de modo 40, memória de imagem de referência 64 (que também pode ser referida como um buffer de imagem decodificado (DPB)), somador 50, unidade de processamento de transformada 52, unidade de quantificação 54, e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, unidade de intrapredição 46 e unidade de divisão 48. Para a reconstrução de blocos de vídeo, o codificador de vídeo 20 também inclui a unidade de quantificação inversa 58, unidade de transformada inversa 60 e o somador 62. Um filtro de desbloqueio (não mostrado na FIG. 5) também pode ser incluído para filtrar limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio normalmente filtraria a saída do somador 62. Filtros adicionais (em loop ou pós-loop) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, mas se desejado, podem filtrar a saída do somador 50 (como um filtro em loop).
[0090] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em vários blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 executam a codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer a predição temporal. A unidade de intrapredição 46 pode alternativamente intrapredizer o bloco de vídeo recebido utilizando pixels de um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para proporcionar predição espacial. O codificador de vídeo 20 pode executar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0091] Além disso, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de divisão anteriores em passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em LCUs, e dividir cada uma das LCUs em sub-UCs com base na análise da distorção de taxa (por exemplo, otimização da distorção de taxa). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados quadtree indicativa da divisão de uma LCU em sub-UCs. As CUs de nó-folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0092] A unidade de seleção de modo 40 pode selecionar um dos modos de predição, intra ou inter, por exemplo, com base nos resultados de erro, e fornece o bloco predito resultante ao somador 50 para gerar dados residuais e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de modo intra, informação de divisão e outras informações de sintaxe, para a unidade de codificação de entropia 56.
[0093] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo em curso em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco em curso sendo codificado dentro do quadro em curso (ou outra unidade codificada). Um bloco preditivo é um bloco que corresponde ao bloco a ser codificado, em termos de diferença de pixel, que pode ser determinado pela soma da diferença absoluta (SAD), soma da diferença quadradática (SSD) ou outros indicadores de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiras de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel completas e posições de pixel fracionárias e produzir um vetor de movimento com precisão de pixel fracionária.
[0094] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada, comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma identificando uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e a unidade de compensação de movimento 44.
[0095] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Mais uma vez, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo em curso, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco preditivo a partir dos valores de pixel do bloco de vídeo em curso que está sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza estimativa de movimento em relação aos componentes de luminância, e a unidade de compensação de movimento 44 usa os vetores de movimento calculados com base nos componentes de luminância para ambos os componentes de crominância e os componentes de luminância. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0096] Além disso, a unidade de compensação de movimento 44 pode ser configurada para realizar qualquer uma ou todas as técnicas desta invenção (sozinha ou em qualquer combinação). Embora discutido em relação à unidade de compensação de movimento 44, deve ser entendido que a unidade de seleção de modo 40, a unidade de estimativa de movimento 42, a unidade de divisão 48 e / ou a unidade de codificação de entropia 56 também podem ser configuradas para executar determinadas técnicas desta invenção, sozinhas ou em combinação com a unidade de compensação de movimento 44. Em um exemplo, a unidade de compensação de movimento 44 pode ser configurada para executar as técnicas de BIO discutidas acima em relação à FIG. 4, e como discutido em maiores detalhes abaixo.
[0097] Por exemplo, a unidade de compensação de movimento 44 pode ser configurada para aplicar BIO a blocos que têm duas imagens de referência diferentes que estão ou temporalmente antes da imagem em curso (por exemplo, ambas na Lista de Imagens de Referência 0) ou ambas temporariamente após a imagem em curso (por exemplo, ambas na Lista de Imagens de Referência 1), onde os blocos têm dois vetores de movimento que são pelo menos quase em proporção a (por exemplo, em proporção a ou quase em proporção a) as distâncias temporais entre a imagem em curso e as imagens de referência.
[0098] Em um exemplo, a unidade de compensação de movimento 44 pode ser configurada com um limite (Th) ou pode determinar um valor representante de Th, e codificar o valor no fluxo de bits de vídeo (por exemplo, em uma SPS, uma PPS, um cabeçalho de fatia, ou sintaxe de nível de bloco). A unidade de compensação de movimento 44 pode então executar a fórmula (7) para determinar se os vetores de movimento para um bloco em curso de uma imagem em curso estão quase em proporção às distâncias temporais para as imagens de referência correspondentes. Quando os vetores de movimento para o bloco em curso estão quase em proporção às distâncias temporais para as imagens de referência correspondentes ao bloco em curso, a unidade de compensação de movimento 44 pode aplicar as técnicas de BIO discutidas acima ao bloco. Em particular, a unidade de compensação de movimento 44 pode aplicar as técnicas de BIO ao formar um bloco predito para o bloco em curso, que a unidade de compensação de movimento 44 forneceria então, por exemplo, ao somador 50 e ao somador 62.
[0099] Como outro exemplo (que pode ser em adição ou em alternativa ao exemplo discutido acima usando a fórmula (7)), a unidade de compensação de movimento 44 pode ser configurada para executar a fórmula (6) para determinar se os vetores de movimento para um bloco em curso estão em proporção às distâncias temporais para as imagens de referência correspondentes. Quando os vetores de movimento para o bloco em curso estão em proporção às distâncias temporais para as imagens de referência correspondentes para o bloco em curso, a unidade de compensação de movimento 44 pode aplicar as técnicas de BIO discutidas acima ao bloco.
[0100] Em alguns exemplos, a unidade de compensação de movimento 44 pode ser limitada de tal modo que, para qualquer uma das técnicas discutidas acima (relativas às fórmulas (6) e (7)), as técnicas são realizadas somente quando os dois vetores de movimento são diferentes de zero. Isto é, a unidade de compensação de movimento 44 pode determinar se os dois vetores de movimento (por exemplo, vetores de movimento recebidos da unidade de estimativa de movimento 42) são diferentes de zero. Se ambos os vetores de movimento forem diferentes de zero, a unidade de compensação de movimento 44 pode seguir para execução das técnicas de BIO discutidas acima ao predizer o bloco. No entanto, se pelo menos um dos vetores de movimento tiver valor zero, a unidade de compensação de movimento 44 pode evitar a execução das técnicas de BIO ao predizer o bloco. A unidade de compensação de movimento 44 pode realizar esta determinação em adição ou em alternativa às determinações quanto a se os vetores de movimento estão em proporção, ou quase em proporção, às distâncias temporais, como discutido acima.
[0101] Em alguns exemplos, a unidade de compensação de movimento 44 pode ainda levar em conta as distâncias temporais ao calcular os gradientes Gx e Gy. Em particular, a unidade de compensação de movimento 44 pode calcular gradientes modificados Gx’ e Gy’ a partir dos gradientes normalmente calculados Gx e Gy, onde tais modificações são baseadas nas respectivas distâncias temporais. Por exemplo, a unidade de compensação de movimento 44 pode calcular o gradiente modificado Gx’ e Gy’ como o produto do gradiente verdadeiro Gx e Gy e a distância temporal TD0 e TD1, como Gx’ = Gx • TD0 e Gy’ = Gy • TD1. A unidade de compensação de movimento 44 também pode calcular o gradiente modificado como o produto do gradiente verdadeiro e um fator relacionado à distância temporal entre as imagens de referência e em curso.
[0102] Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 (ou a unidade de seleção de modo 40) pode determinar se um bloco está em uma região de mudança de iluminação, por exemplo, onde o codificador de vídeo 20 define um valor de “verdadeiro” para um sinalizador de compensação de iluminação (ic_flag). A unidade de compensação de movimento 44 pode aplicar um processo especial para BIO a um bloco que esteja em uma região de mudança de iluminação. Em alguns exemplos, a unidade de compensação de movimento 44 não aplica BIO a um bloco quando o bloco está em uma região de mudança de compensação de iluminação. Em alternativa, a unidade de compensação de movimento 44 pode aplicar BIO após compensação de iluminação e, além disso, a compensação de iluminação pode também ser aplicada ao calcular gradientes de bloco para BIO. Alternativamente, outro sinalizador pode ser sinalizado para um bloco para indicar se o BIO é aplicado ao bloco se a ferramenta de codificação de compensação de iluminação não estiver ativada.
[0103] Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 pode ser restrita em relação a BIO, por exemplo, para evitar impactos negativos causados por ruído de sinal. Por exemplo, a unidade de compensação de movimento 44 pode ser configurada com uma ou ambas as seguintes restrições. O intervalo de um deslocamento de BIO (definido abaixo da expressão (5), acima) pode ser restrito. Os valores máximo e / ou mínimo podem ser pré-definidos ou determinados e então sinalizados (por exemplo, em uma SPS, PPS, cabeçalho de fatia ou sintaxe em nível de bloco). Alternativamente, os valores máximo e mínimo relativos à bipredição regular na expressão (5) podem ser pré-definidos ou determinados, e então sinalizados. Além disso, ou alternativamente, o intervalo do gradiente calculado durante o processo BIO pode ser restrito com base em valores predefinidos ou valores determinados e depois sinalizados.
[0104] Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 pode primeiro avaliar a confiabilidade de vetores de movimento derivados como parte do processo BIO. Quando a confiabilidade dos vetores de movimento BIO para um pixel ou um bloco é baixa, a unidade de compensação de movimento 44 pode evitar adicionar o deslocamento de BIO, ou pode aplicar um peso menor ao deslocamento de BIO ao adicionar o deslocamento de BIO. A unidade de compensação de movimento 44 pode deduzir a confiabilidade de um vetor de movimento para um pixel analisando a relação de seu movimento de BIO e o movimento de BIO de seus pixels vizinhos. Por exemplo, quando um ou mais desvios entre o movimento de BIO para um pixel em curso e o movimento de BIO para pixels vizinhos ao pixel em curso são grandes, a unidade de compensação de movimento 44 pode determinar que a confiabilidade do movimento de BIO para o pixel em curso é baixa. Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 pode deduzir a confiabilidade de um bloco analisando o movimento de BIO dos pixels dentro do bloco. Por exemplo, quando o desvio do movimento de BIO dentro de um bloco é grande, a confiabilidade do movimento de BIO em curso pode ser considerada baixa. Adicionalmente ou alternativamente, a unidade de compensação de movimento 44 pode deduzir a confiabilidade do movimento de BIO com base na análise dos valores de amostra de pixel. Por exemplo, a unidade de compensação de movimento 44 pode estimar o nível de ruído e, em seguida, determinar que a confiabilidade do movimento de BIO é baixa quando o nível de ruído é alto. A unidade de compensação de movimento 44 pode aplicar vários métodos (que podem incluir qualquer um ou todos os métodos discutidos acima) juntos, em qualquer combinação, para deduzir a confiabilidade do movimento de BIO.
[0105] Em resposta à determinação de aplicar BIO a um bloco (de acordo com qualquer uma ou todas as técnicas discutidas acima, sozinhas ou em qualquer combinação), a unidade de compensação de movimento 44 pode aplicar as técnicas discutidas acima (por exemplo, em relação às fórmulas (1) a (5) acima) para predizer o bloco de acordo com BIO.
[0106] A unidade de intrapredição 46 pode intrapredizer um bloco em curso, como uma alternativa para a interpredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição a usar para codificar um bloco em curso. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco em curso usando vários modos de intrapredição, por exemplo, durante passagens de codificação separadas, e a unidade de intrapredição 46 (ou a unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado para usar a partir dos modos testados.
[0107] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição com as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (ou seja, um número de bits) usada para produzir o bloco codificado. A unidade de intrapredição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo intrapredição apresenta o melhor valor de distorção de taxa para o bloco.
[0108] Após selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informação indicativa do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação indicando o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir dados de configuração no fluxo de bits transmitido, que podem incluir uma pluralidade de tabelas de índices de modo de intrapredição e uma pluralidade de tabelas de índices de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavras-código), definições de contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição e uma tabela de índice de modo de intrapredição modificada a usar para cada um dos contextos.
[0109] O codificador de vídeo 20 forma um bloco de vídeo residual, subtraindo os dados de predição da unidade de seleção de modo 40 a partir do bloco de vídeo original que está sendo codificado. O somador 50 representa o componente ou componentes que executam essa operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente semelhante, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada. Transformadas Wavelet, transformadas de inteiros, transformadas de sub-bandas, transformadas discretas de seno (DSTs) ou outros tipos de transformadas podem ser usados em vez de uma DCT. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada. A transformada pode converter a informação residual de um domínio de pixel em um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes à unidade de quantificação 54. A unidade de quantificação 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantificação pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes. O grau de quantificação pode ser modificado ajustando um parâmetro de quantificação.
[0110] Após a quantificação, a unidade de codificação de entropia codifica por entropia os coeficientes de transformada quantificados. Por exemplo, a unidade de codificação de entropia 56 pode executar codificação por comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), codificação por divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. No caso da codificação de entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Seguindo a codificação de entropia por unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido a outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivado para posterior transmissão ou recuperação.
[0111] Unidade de quantificação inversa 58 e a unidade de transformada inversa 60 aplicam quantificação inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel. Em particular, o somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento anteriormente produzido pela unidade de compensação de movimento 44 ou pela unidade de intrapredição 46 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
[0112] A FIG. 6 é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implementar técnicas para fluxo óptico bidirecional. No exemplo da FIG. 6, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de intrapredição 74, unidade de quantificação inversa 76, unidade de transformada inversa 78, memória de imagem de referência 82 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 (FIG. 5) ou codificador de vídeo 20’ (FIG. 5B). A unidade de compensação de movimento 72 pode gerar dados de predição baseados em vetores de movimento recebidos da unidade de decodificação de entropia 70, enquanto a unidade de intrapredição 74 pode gerar dados de predição baseados em indicadores do modo de intrapredição recebidos da unidade de decodificação de entropia 70.
[0113] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação de entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantificados, vetores de movimento ou indicadores do modo de intrapredição e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e / ou no nível de bloco de vídeo.
[0114] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo em curso com base em um modo de intrapredição sinalizado e dados de blocos anteriormente decodificados do quadro ou imagem em curso. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo em curso com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, utilizando técnicas de construção padrão baseadas em imagens de referência armazenadas na memória de imagens de referência 82.
[0115] A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fatia de vídeo em curso, analisando os vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos preditivos para o bloco de vídeo em curso sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, status de interpredição para cada bloco de vídeo intercodificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo em curso.
[0116] A unidade de compensação de movimento 72 também pode executar interpolação com base em filtros de interpolação para precisão de subpixel. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação, como utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0117] Além disso, a unidade de compensação de movimento 72 pode ser configurada para realizar qualquer ou todas as técnicas desta invenção (sozinhas ou em qualquer combinação). Por exemplo, a unidade de compensação de movimento 72 pode ser configurada para executar as técnicas de BIO discutidas acima em relação à FIG. 4, e como discutidas em maiores detalhes abaixo.
[0118] Por exemplo, a unidade de compensação de movimento 72 pode ser configurada para aplicar BIO a blocos que têm duas imagens de referência diferentes que são ambas temporalmente antes da imagem em curso (por exemplo, ambas na Lista de Imagens de Referência 0) ou ambas temporalmente após a imagem em curso (por exemplo, ambas na Lista de Imagens de Referência 1), onde os blocos têm dois vetores de movimento que estão pelo menos quase em proporção (por exemplo, em proporção ou quase em proporção a) às distâncias temporais entre a imagem em curso e as imagens de referência.
[0119] Em um exemplo, a unidade de compensação de movimento 72 pode ser configurada com um limite (Th), ou pode decodificar um valor representativo de Th a partir do fluxo de bits (por exemplo, em uma sintaxe SPS, PPS, cabeçalho de fatia ou nível de bloco). A unidade de compensação de movimento 72 pode então executar a fórmula (7) para determinar se os vetores de movimento para um bloco em curso estão quase em proporção às distâncias temporais para as imagens de referência correspondentes. Quando os vetores de movimento para o bloco em curso estão quase em proporção às distâncias temporais para as imagens de referência correspondentes para o bloco em curso, a unidade de compensação de movimento 72 pode aplicar as técnicas de BIO discutidas acima ao bloco. Em particular, a unidade de compensação de movimento 72 pode aplicar as técnicas de BIO ao formar um bloco predito para o bloco em curso, que a unidade de compensação de movimento 44 forneceria, por exemplo, ao somador 80.
[0120] Como outro exemplo, a unidade de compensação de movimento 72 pode ser configurada para executar a fórmula (6) para determinar se os vetores de movimento para um bloco em curso estão em proporção às distâncias temporais para as imagens de referência correspondentes. Quando os vetores de movimento para o bloco em curso estão em proporção às distâncias temporais para as imagens de referência correspondentes para o bloco em curso, a unidade de compensação de movimento 72 pode aplicar as técnicas de BIO discutidas acima ao bloco.
[0121] Em alguns exemplos, a unidade de compensação de movimento 72 pode ser restrita de tal modo que, para qualquer uma das técnicas discutidas acima (relativas às fórmulas (6) e (7)), as técnicas são executadas somente quando os dois vetores de movimento são diferentes de zero. Isto é, a unidade de compensação de movimento 72 pode determinar se os dois vetores de movimento decodificados pela unidade de decodificação de entropia 70 são diferentes de zero. Se ambos os vetores de movimento forem diferentes de zero, a unidade de compensação de movimento 72 pode seguir para execução das técnicas de BIO discutidas acima ao predizer o bloco. No entanto, se pelo menos um dos vetores de movimento tiver valor zero, a unidade de compensação de movimento 72 pode evitar a execução das técnicas de BIO ao predizer o bloco. A unidade de compensação de movimento 72 pode realizar esta determinação em adição ou em alternativa às determinações quanto a se os vetores de movimento estão em proporção, ou quase em proporção, às distâncias temporais, como discutido acima.
[0122] Em alguns exemplos, a unidade de compensação de movimento 72 pode considerar ainda levar em conta as distâncias temporais ao aplicar BIO. Na fórmula (4), as distâncias temporais TD0 e TD1 são assumidas como iguais, o que nem sempre é verdade. Uma maneira particular de levar em conta as distâncias temporais é que a unidade de compensação de movimento 72 pode calcular gradientes modificados Gx’ e Gy’ a partir dos gradientes normalmente calculados Gx e Gy, onde tais modificações são baseadas nas respectivas distâncias temporais. Por exemplo, a unidade de compensação de movimento 72 pode calcular o gradiente modificado Gx’ e Gy’ como o produto do verdadeiro gradiente Gx e Gy e a distância temporal TD0 e TD1, como Gx’ = Gx • TD0 e Gy’ = Gy • TD1. Em particular, das equações acima, TD0 pode ser calculado como t0 - t, enquanto TD1 pode ser calculado como t - t1. Assim, em vez de assumir que Δt é igual a 1 tanto para TD0 como para TD1, as distâncias temporais verdadeiras entre a imagem em curso e as imagens de referência podem ser usadas, por exemplo, como mostrado na fórmula (4’). A unidade de compensação de movimento 72 também pode calcular o gradiente modificado como o produto do gradiente verdadeiro e um fator relacionado à distância temporal entre as imagens de referência e a em curso.
[0123] Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode aplicar um processo especial para BIO a um bloco que é indicado como estando em uma região de mudança de iluminação, como quando o bloco inclui um sinalizador de compensação de iluminação (ic_flag) com um valor de verdade. Em alguns exemplos, a unidade de compensação de movimento 72 não aplica BIO a um bloco quando o bloco está em uma região de mudança de compensação de iluminação. Em alternativa, a unidade de compensação de movimento 72 pode aplicar BIO após compensação de iluminação e, além disso, a compensação de iluminação pode também ser aplicada ao calcular gradientes de bloco para BIO.
[0124] Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode ser restrita em relação a BIO, por exemplo, para evitar impactos negativos causados por ruído de sinal. Por exemplo, a unidade de compensação de movimento 72 pode ser configurada com uma ou ambas as seguintes restrições. O intervalo de um deslocamento de BIO (definido abaixo da expressão (5), acima) pode ser restrito. Os valores máximo e / ou mínimo podem ser pré-definidos ou sinalizados (por exemplo, em uma sintaxe SPS, PPS, cabeçalho de fatia ou nível de bloco). Alternativamente, os valores máximo e mínimo relativos à bipredição regular na expressão (5) podem ser pré-definidos ou sinalizados. Adicionalmente ou alternativamente, o intervalo do gradiente calculado durante o processo BIO pode ser restrito com base em valores predefinidos ou valores sinalizados.
[0125] Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode primeiro avaliar a confiabilidade de vetores de movimento derivados por BIO. Quando a confiabilidade dos vetores de movimento de BIO para um pixel ou um bloco for baixa, a unidade de compensação de movimento 72 pode evitar a adição do deslocamento de BIO, ou pode aplicar um peso menor ao deslocamento de BIO ao adicionar o deslocamento de BIO. A unidade de compensação de movimento 72 pode deduzir a confiabilidade de um vetor de movimento para um pixel analisando a relação de seu movimento de BIO e o movimento de BIO de seus pixels vizinhos. Por exemplo, quando o desvio entre o movimento de BIO em curso e o movimento de BIO vizinho é grande, a confiabilidade do movimento de BIO em curso pode ser considerada baixa. Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode deduzir a confiabilidade de um bloco analisando o movimento de BIO dos pixels dentro do bloco. Por exemplo, quando o desvio do movimento de BIO dentro de um bloco é grande, a confiabilidade do movimento de BIO em curso pode ser considerada baixa. Adicionalmente ou alternativamente, a unidade de compensação de movimento 72 pode deduzir a confiabilidade do movimento de BIO com base na análise dos valores de amostra de pixel. Por exemplo, o nível de ruído deve ser estimado e, em seguida, a confiabilidade do movimento de BIO pode ser considerada baixa quando o nível de ruído é alto. Vários métodos (que podem incluir qualquer um ou todos os métodos discutidos acima) podem ser aplicados juntos, em qualquer combinação, para deduzir a confiabilidade do movimento de BIO.
[0126] Em resposta à determinação de aplicar BIO a um bloco (de acordo com qualquer uma ou todas as técnicas discutidas acima, sozinhas ou em qualquer combinação), a unidade de compensação de movimento 72 pode aplicar as técnicas discutidas acima (por exemplo, com relação às fórmulas (1) a (5) acima) para predizer o bloco de acordo com BIO.
[0127] A unidade de quantificação inversa 76 quantifica inversamente, isto é, desquantifica, os coeficientes de transformada quantificados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 70. O processo de quantificação inversa pode incluir o uso de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantificação e, da mesma forma, um grau de quantificação inversa que deve ser aplicado.
[0128] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiros inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada para produzir blocos residuais no domínio de pixel.
[0129] Após a unidade de compensação de movimento 72 gerar o bloco preditivo para o bloco de vídeo em curso com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam essa operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados, a fim de remover artefatos de bloqueio. Outros filtros em loop (no loop de codificação ou após o loop de codificação) também podem ser usados para suavizar as transições de pixel, ou melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de imagens de referência 82, que armazena imagens de referência usadas para compensação de movimento subsequente. A memória de imagens de referência 82 também armazena vídeo decodificado para posterior apresentação em um dispositivo de exibição, tal como o dispositivo de exibição 32 da FIG. 1. Por exemplo, a memória de imagens de referência 82 pode armazenar imagens decodificadas.
[0130] A FIG.7 é um fluxograma que ilustra um método exemplificativo para predizer um bloco de dados de vídeo de acordo com as técnicas desta invenção. O método da FIG.7 é explicado em relação ao codificador de vídeo 20 das FIGS. 1 e 5. No entanto, deve ser entendido que, em outros exemplos, outros dispositivos podem ser configurados para executar o método da FIG. 7.
[0131] Presume-se que o codificador de vídeo 20 inicialmente codifica, e depois subsequentemente decodifica, imagens para uso como imagens de referência, armazenadas na memória de imagens de referência 64 (FIG.5), embora essas etapas não estejam ilustradas no exemplo da FIG. 7. O codificador de vídeo 20 recebe então um bloco de dados de vídeo (170). O bloco pode ser, por exemplo, uma unidade de predição (PU) de uma unidade de codificação (CU) de uma imagem em curso (ou uma fatia da imagem) de dados de vídeo. O codificador de vídeo 20 pode determinar quais dentre uma variedade de modos de predição usar para predizer o bloco, como intrapredição ou interpredição, e se a interpredição foi determinada, quanto ao uso da interpredição unidirecional ou bidirecional. No exemplo da FIG. 7, o codificador de vídeo 20 determina predizer o bloco usando bipredição (172). Por exemplo, o codificador de vídeo 20 (em particular, a unidade de seleção de modo 40 da FIG. 5) pode calcular indicadores da taxa de distorção para vários modos possíveis de predição (por exemplo, um ou mais modos de intrapredição e predição unidirecional ou bidirecional a partir das várias imagens de referência decodificadas armazenadas na memória de imagens de referência 64) e determinar que a bipredição gera os melhores indicadores da taxa de distorção para o bloco.
[0132] O codificador de vídeo 20 (em particular, a unidade de estimativa de movimento 42 da FIG. 5) pode ainda calcular vetores de movimento para o bloco de acordo com a bipredição (174). Esses vetores de movimento podem referir-se a imagens de referência que devem ser ambas exibidas antes da imagem em curso, devem ser ambas exibidas após a imagem em curso, ou uma a ser exibida antes da imagem em curso e outra a ser exibida após a imagem em curso. Por exemplo, as imagens de referência podem ocorrer ambas na lista de imagens de referência 0, ocorrer ambas na lista de imagens de referência 1, ou uma pode ocorrer na lista de imagens de referência 0 e a outra pode ocorrer na lista de imagens de referência 1.
[0133] Neste exemplo, o codificador de vídeo 20 determina se os vetores de movimento para o bloco apontam em uma direção temporal comum (176). Isto é, o codificador de vídeo 20 determina se os vetores de movimento referem-se a imagens de referência que devem ser ambas exibidas antes ou após a imagem em curso, por exemplo, se as imagens de referência ocorrem na mesma lista de imagens de referência (como lista 0 ou lista 1).
[0134] Se os dois vetores de movimento apontam em uma direção temporal comum (ramificação “SIM” de 176), o codificador de vídeo 20 pode ainda determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais entre a imagem em curso e as imagens de referência correspondentes (178). As distâncias temporais podem corresponder a diferenças entre os valores da contagem de ordem de imagem (POC) para a imagem em curso e as duas imagens de referência. ”Pelo menos quase em proporção” geralmente refere-se a estar quase em proporção às distâncias temporais, ou em proporção às distâncias temporais. O codificador de vídeo 20 pode executar as fórmulas (6) e / ou (7) como discutido acima para determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais.
[0135] Por exemplo, o codificador de vídeo 20 pode determinar uma primeira diferença de POC entre um valor de POC para a imagem em curso e um valor de POC para uma primeira imagem de referência, à qual um primeiro vetor de movimento (MV0) se refere, como uma primeira distância temporal TD0, e uma segunda diferença de POC entre o valor de POC para a imagem em curso e um valor de POC para uma segunda imagem de referência, à qual um segundo vetor de movimento (MV1) se refere, como uma segunda distância temporal TD0. MV0 e MV1 podem incluir os respectivos componentes x e y. Por exemplo, MV0 pode incluir os componentes MV0x e MV0y, onde MV0x descreve um deslocamento horizontal e MV0y descreve um deslocamento vertical relativo à posição do bloco na imagem em curso, para determinar uma posição na qual localizar um bloco de referência na primeira imagem de referência. Da mesma forma, MV1 pode incluir os componentes MV1x e MV1y, onde MV1x descreve um deslocamento horizontal e MV1y descreve um deslocamento vertical em relação à posição do bloco na imagem em curso para determinar uma posição na qual localizar um bloco de referência na segunda imagem de referência. O codificador de vídeo 20 pode então usar estes valores para executar uma ou ambas as fórmulas (6) e / ou (7), ou outras fórmulas semelhantes, para determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais.
[0136] Se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais (ramificação “SIM” de 178), o codificador de vídeo 20 pode ainda determinar se os vetores de movimento são ambos diferentes de zero (180). Isto é, o codificador de vídeo 20 pode determinar se pelo menos um dentre o componente x ou o componente y de cada um dos vetores de movimento tem um valor absoluto maior que zero. Embora a determinação quanto a se os vetores de movimento são diferentes de zero (etapa 180) seja mostrada como uma etapa separada da determinação quanto a se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais (etapa 178) no exemplo da FIG. 7, deve ser entendido que as etapas 178 e 180 podem ser realizadas como uma única etapa, em outros exemplos.
[0137] Se os vetores de movimento forem ambos diferentes de zero (ramificação “SIM” de 180), ou se os vetores de movimento não apontarem em uma direção temporal comum (ramificação “NÃO” de 176), o codificador de vídeo 20 também pode determinar se o bloco está em uma região de mudança de iluminação (182). Se o bloco não estiver em uma região de mudança de iluminação (ramificação “NÃO” de 182), o codificador de vídeo 20 pode continuar a predizer o bloco usando BIO (184), por exemplo, de acordo com as fórmulas (1)-(5) conforme discutido acima. Alternativamente, ao predizer o bloco usando BIO, o codificador de vídeo 20 pode modificar os cálculos de gradiente de acordo com as distâncias temporais TD0 e / ou TD1. Por exemplo, o codificador de vídeo 20 pode calcular os gradientes modificados Gx’ e Gy’ a partir dos gradientes normalmente calculados Gx e Gy, tal como através do cálculo Gx’ = Gx • TD0 e Gy’ = Gy • TD1. O codificador de vídeo 20 pode então usar Gx’ e Gy’ em vez de Gx e Gy na fórmula (5).
[0138] Por outro lado, neste exemplo, se os vetores de movimento apontaram em uma direção temporal comum, mas não estavam pelo menos quase em proporção às distâncias temporais (ramificação “NÃO” de 178), pelo menos um dos vetores de movimento era de valor zero (ramificação “NÃO” de 180), ou o bloco está numa região de mudança de iluminação (ramificação “SIM” de 182), o codificador de vídeo 20 pode predizer o bloco usando bipredição padrão, sem usar BIO (186). Deve ser entendido que as determinações quanto a se os vetores de movimento apontam em uma direção temporal comum, se os vetores de movimento são ambos diferentes de zero, e se o bloco está em uma região de mudança de iluminação podem ser realizadas em qualquer ordem, ou em paralelo, em vários exemplos, de tal modo que a ordem das determinações não é limitada ao exemplo mostrado na FIG. 7.
[0139] Em qualquer caso, após predizer o bloco, seja usando BIO ou não usando BIO, o codificador de vídeo 20 pode seguir para os elementos de sintaxe de codificação de entropia para o bloco (188). Em particular, o codificador de vídeo 20 pode determinar diferenças pixel-a- pixel entre o bloco original bruto e o bloco predito para formar um bloco residual. O codificador de vídeo 20 pode então transformar o bloco residual em um domínio de frequência para formar coeficientes de transformada, depois quantificar os coeficientes de transformada. O codificador de vídeo 20 pode então codificar por entropia os coeficientes de transformada quantificados. O codificador de vídeo 20 pode ainda codificar por entropia outros elementos de sintaxe, como uma indicação de que o bloco é predito usando bipredição, os vetores de movimento (por exemplo, usando o modo de mesclagem ou predição avançada de vetor de movimento (AMVP)), ic_flag) representando se o bloco está em uma região de mudança de iluminação, e assim por diante.
[0140] Desta maneira, o método da FIG.7 representa um exemplo de um método de codificação de dados de vídeo incluindo a decodificação de uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso, determinando um primeiro vetor de movimento (MV0) de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinação de um segundo vetor de movimento (MV1) do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinação de uma primeira distância temporal (TD0) da imagem em curso para a primeira imagem de referência; determinação de uma segunda distância temporal (TD1) da imagem em curso para a segunda imagem de referência, e codificação do bloco em curso de acordo com o fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0141] A FIG.8 é um fluxograma que ilustra um método exemplificativo de decodificação de um bloco de dados de vídeo de acordo com as técnicas desta invenção. O método da FIG.8 é explicado em relação ao decodificador de vídeo 30 das FIGS. 1 e 6. No entanto, deve ser entendido que, em outros exemplos, outros dispositivos podem ser configurados para executar o método da FIG. 8.
[0142] Presume-se que o decodificador de vídeo 30 decodifica inicialmente as imagens para uso como imagens de referência para uma imagem em curso, onde as imagens de referência são armazenadas na memória de imagens de referência 82 (FIG. 6), embora essas etapas não estejam ilustradas no exemplo da FIG. 8. O decodificador de vídeo 30 então decodifica por entropia elementos de sintaxe para um bloco em curso da imagem em curso (200). Por exemplo, o decodificador de vídeo 30 pode decodificar por entropia os elementos de sintaxe indicando um modo de predição (por exemplo, modo de intra- ou interpredição), e elementos de sintaxe correspondentes para o modo de predição como, para interpredição, elementos de sintaxe relacionados ao modo de mesclagem ou AMVP, bem como coeficientes residuais quantificados a serem usados para reproduzir um bloco residual para o bloco em curso.
[0143] No exemplo da FIG.8, o decodificador de vídeo 30 determina a predição do bloco em curso usando bipredição (202), por exemplo, com base nos elementos de sintaxe decodificados por entropia para o bloco em curso. Consequentemente, utilizando novamente os elementos de sintaxe decodificados por entropia para o bloco em curso, o decodificador de vídeo 30 decodifica os vetores de movimento para o bloco (204). Os vetores de movimento podem referir-se a imagens de referência armazenadas na memória de imagens de referência 82, que podem ambas ocorrer antes da imagem em curso na ordem de exibição, ambas ocorrerem após a imagem em curso na ordem de exibição, ou uma pode ocorrer antes da imagem em curso na ordem de exibição e a outra pode ocorrer após a imagem em curso na ordem de exibição.
[0144] Neste exemplo, o decodificador de vídeo 30 determina se os vetores de movimento para o bloco apontam em uma direção temporal comum (206). Isto é, o decodificador de vídeo 30 determina se os vetores de movimento referem-se a imagens de referência que devem ser ambas exibidas antes ou depois da imagem em curso, por exemplo, se as imagens de referência ocorrem na mesma lista de imagens de referência (como lista 0 ou lista 1).
[0145] Se os dois vetores de movimento apontarem em uma direção temporal comum (ramificação “SIM” de 206), o decodificador de vídeo 30 pode ainda determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais entre a imagem em curso e a imagem de referência correspondente (208). As distâncias temporais podem corresponder a diferenças entre os valores da contagem de ordem de imagem (POC) para a imagem em curso e as duas imagens de referência. ”Pelo menos quase em proporção” geralmente refere-se a estar quase em proporção às distâncias temporais, ou em proporção às distâncias temporais. O decodificador de vídeo 30 pode executar as fórmulas (6) e / ou (7) como discutido acima, para determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais.
[0146] Por exemplo, o decodificador de vídeo 30 pode determinar uma primeira diferença de POC entre um valor de POC para a imagem em curso e um valor de POC para uma primeira imagem de referência, à qual se refere um primeiro vetor de movimento (MV0), como uma primeira distância temporal TD0, e uma segunda diferença de POC entre o valor de POC para a imagem em curso e um valor de POC para uma segunda imagem de referência, à qual se refere um segundo vetor de movimento (MV1), como uma segunda distância temporal TD0. MV0 e MV1 podem incluir os respectivos componentes x e y. Por exemplo, MV0 pode incluir os componentes MV0x e MV0y, onde MV0x descreve um deslocamento horizontal e MV0y descreve um deslocamento vertical em relação à posição do bloco na imagem em curso para determinar uma posição na qual localizar um bloco de referência na primeira imagem de referência. Da mesma forma, MV1 pode incluir os componentes MV1x e MV1y, onde MV1x descreve um deslocamento horizontal e MV1y descreve um deslocamento vertical em relação à posição do bloco na imagem em curso para determinar uma posição na qual localizar um bloco de referência na segunda imagem de referência. O decodificador de vídeo 30 pode então utilizar estes valores para executar uma ou ambas as fórmulas (6) e / ou (7), ou outras fórmulas semelhantes, para determinar se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais.
[0147] Embora não seja mostrado no exemplo da FIG. 8, como discutido acima, o cálculo das fórmulas (6) e / ou (7) pode envolver o uso de um valor limite Th. O decodificador de vídeo 30 pode armazenar dados de configuração que definem um valor para Th. Adicionalmente ou alternativamente, o decodificador de vídeo 30 pode decodificar um valor para um elemento de sintaxe representante de Th. Por exemplo, o decodificador de vídeo 30 pode receber este valor como parte de qualquer ou de todos os conjuntos de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), um cabeçalho de fatia e / ou dados de sintaxe em nível de bloco.
[0148] Se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais (ramificação “SIM” de 208), o decodificador de vídeo 30 pode ainda determinar se os vetores de movimento são ambos diferentes de zero (210). Isto é, o decodificador de vídeo 30 pode determinar se pelo menos um dentre o componente x ou o componente y de cada um dos vetores de movimento tem um valor absoluto maior que zero. Embora a determinação quanto a se os vetores de movimento são diferentes de zero (etapa 210) seja mostrada como uma etapa separada da determinação quanto a se os vetores de movimento estão pelo menos quase em proporção às distâncias temporais (etapa 208) no exemplo da FIG. 8, deve ser entendido que as etapas 208 e 210 podem ser realizadas como uma única etapa, em outros exemplos.
[0149] Se os vetores de movimento forem ambos diferentes de zero (ramificação “SIM” de 210) ou se os vetores de movimento não apontarem em uma direção temporal comum (ramificação “NÃO” de 206), o decodificador de vídeo 30 também pode determinar se o bloco está em uma região de mudança de iluminação (212). Por exemplo, o decodificador de vídeo 30 pode determinar um valor para um sinalizador de compensação de iluminação (ic_flag) para determinar se o bloco está em uma região de mudança de iluminação. Em particular, em um exemplo, se o valor do ic_flag for verdadeiro, o decodificador de vídeo 30 determina que o bloco está em uma região de mudança de iluminação. Se o bloco não estiver em uma região de mudança de iluminação (ramificação “NÃO” de 212), o decodificador de vídeo 30 pode continuar a predizer o bloco usando BIO (214), por exemplo, de acordo com as fórmulas (1)-(5) conforme discutido acima. Alternativamente, ao predizer o bloco usando BIO, o decodificador de vídeo 30 pode modificar os cálculos de gradiente de acordo com as distâncias temporais TD0 e / ou TD1. Por exemplo, o decodificador de vídeo 30 pode calcular gradientes modificados Gx‘ e Gy‘ a partir dos gradientes normalmente calculados Gx e Gy, tal como através do cálculo Gx’ = Gx • TD0 e Gy’ = Gy • TD1. O decodificador de vídeo 30 pode então usar no lugar de Gx’ e Gy’ no lugar de Gx e Gy na fórmula (5).
[0150] Por outro lado, neste exemplo, se os vetores de movimento apontassem em uma direção temporal comum, mas não estivessem pelo menos quase em proporção às distâncias temporais (ramificação “NÃO” de 208), pelo menos um dos vetores de movimento fosse diferente de zero (ramificação “NÃO” de 210), ou o bloco está em uma região de mudança de iluminação (ramificação “SIM” de 212), o decodificador de vídeo 30 pode predizer o bloco usando bipredição padrão, sem usar BIO (216). Deve ser entendido que as determinações quanto a se os vetores de movimento apontam em uma direção temporal comum, se os vetores de movimento são ambos diferentes de zero, e se o bloco está em uma região de mudança de iluminação podem ser realizadas em qualquer ordem, ou em paralelo, em vários exemplos, de tal modo que a ordem das determinações não é limitada ao exemplo mostrado na FIG. 7.
[0151] Em qualquer caso, após a predição do bloco ou usando BIO ou não usando BIO, o decodificador de vídeo 30 pode continuar a reproduzir o bloco (218). Em particular, o decodificador de vídeo 30 pode quantificar inversamente os coeficientes de transformada quantificados para reproduzir os coeficientes de transformada. O decodificador de vídeo 30 pode então transformar inversamente os coeficientes de transformada para reproduzir um bloco residual para o bloco em curso. Então, o decodificador de vídeo 30 pode combinar o bloco residual com o bloco predito (em uma base pixel a pixel) para reproduzir o bloco em curso. Este bloco em curso reproduzido também pode ser referido como um bloco decodificado.
[0152] Desta maneira, o método da FIG.8 representa um exemplo de um método de decodificação de dados de vídeo incluindo a decodificação de uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência; adição da primeira imagem de referência a uma lista de imagens de referência para uma imagem em curso, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; determinação de um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência; determinação de um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência; determinação de uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinação de uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência, e decodificação do bloco em curso de acordo com o fluxo óptico bidirecional (BIO) usando MV0, MV1, TD0 e TD1.
[0153] Deve ser reconhecido que, dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de lado (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser executados simultaneamente, por exemplo, através de processamento multi-threaded, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0154] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, como meios de armazenamento de dados ou meios de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, os meios legíveis por computador podem geralmente corresponder a (1) meios de armazenamento legíveis por computador, tangíveis, que não sejam transitórios, ou (2) meios de comunicação, como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e / ou estruturas de dados para implementação das técnicas descritas nesta invenção. Um produto de programa de computador pode incluir um meio legível por computador.
[0155] A título de exemplo, e não de limitação, essas meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser usado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados, e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada um meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site, servidor ou outra origem remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionados para meios de armazenamento tangíveis, não transitórios. Disco (disk) e disco (disc), como usados aqui, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados opticamente com lasers. Combinações dos itens acima também devem ser incluídas no escopo de meios legívels por computador.
[0156] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados específicos para aplicativos (ASICs), arranjos de portas programáveis em campo (FPGAs) ou outros circuitos lógicos discretos ou equivalentes integrados. Por conseguinte, o termo “processador”, como aqui utilizado, pode referir-se a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e / ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0157] As técnicas desta invenção podem ser implementadas em uma ampla variedade de dispositivos ou dispositivos, incluindo um telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta invenção para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Pelo contrário, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou proporcionadas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e / ou firmware adequados.
[0158] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (15)

1. Método de decodificação de dados de vídeo, o método caracterizado pelo fato de que compreende: decodificar uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; determinar um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência, em que MV0 inclui um componente x (MV0x) e um componente y (MV0y); determinar um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência, em que MV1 inclui um componente x (MV1x) e um componente y (MV1y); determinar uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinar uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência; e determinar um valor limite (Th); e determinar que MV0 e MV1 estão quase em proporção a TD0 e TD1 quando (|MV0x * TD1 - MV1x * TD0| <= Th && |MV0y * TD1 - MV1y * TD0| <= Th), e decodificar o bloco em curso de acordo com um fluxo ótico bidirecional (BIO) usando MV0, MV1, TD0 e TD1 quando MV0 e MV1 estão quase em proporção à TD0 e TD1.
2. Método de codificação de dados de vídeo, o método caracterizado pelo fato de que compreende: decodificar uma primeira imagem de referência e uma segunda imagem de referência, a segunda imagem de referência sendo diferente da primeira imagem de referência, em que a primeira imagem de referência e a segunda imagem de referência devem ser ambas exibidas antes de uma imagem em curso ou devem ser ambas exibidas após a imagem em curso; determinar um primeiro vetor de movimento (MV0) a partir de um bloco em curso da imagem em curso para um primeiro bloco de referência da primeira imagem de referência, em que MV0 inclui um componente x (MV0x) e um componente y (MV0y); determinar um segundo vetor de movimento (MV1) a partir do bloco em curso para um segundo bloco de referência da segunda imagem de referência, em que MV1 inclui um componente x (MV1x) e um componente y (MV1y); determinar uma primeira distância temporal (TD0) a partir da imagem em curso para a primeira imagem de referência; determinar uma segunda distância temporal (TD1) a partir da imagem em curso para a segunda imagem de referência; e determinar um valor limite (Th); e determinar que MV0 e MV1 estão quase em proporção a TD0 e TD1 quando (|MV0x * TD1 - MV1x * TD0| <= Th && |MV0y * TD1 - MV1y * TD0| <= Th), e decodificar o bloco em curso de acordo com um fluxo ótico bidirecional (BIO) usando MV0, MV1, TD0 e TD1 quando MV0 e MV1 estão quase em proporção à TD0 e TD1.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar Th compreende recuperar dados de configuração que definem Th.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar Th compreende decodificar um elemento de sintaxe que define Th.
5. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que codificar um valor para um elemento de sintaxe definindo Th.
6. Método, de acordo com a reivindicação 4 ou 5, caracterizado pelo fato de que decodificar ou codificar o elemento de sintaxe compreende decodificar ou codificar pelo menos um dentre um conjunto de parâmetros de sequência (SPS) incluindo o elemento de sintaxe, um conjunto de parâmetros de imagem (PPS) incluindo o elemento de sintaxe, um cabeçalho de fatia incluindo o elemento de sintaxe ou sintaxe em nível de bloco incluindo o elemento de sintaxe.
7. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que decodificar ou codificar o bloco em curso de acordo com BIO compreende decodificar o bloco em curso de acordo com BIO quando MV0 e MV1 estão em proporção a TD0 e TD1, em que MV0 inclui um componente x (MV0x) e um componente y (MV0y), em que MV1 inclui um componente x (MV1x) e um componente y (MV1y), compreendendo adicionalmente: determinar que MV0 e MV1 estão em proporção a TD0 e TD1 quando (|MV0x * TD1 - MV1x * TD0| == 0 && |MV0y * TD1 - MV1y * TD0| == 0); ou em que decodificar ou codificar o bloco em curso de acordo com BIO compreende decodificar o bloco em curso de acordo com BIO apenas quando MV0 e MV1 são diferentes de zero.
8. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que decodificar ou codificar o bloco em curso de acordo com BIO compreende decodificar o bloco em curso de acordo com BIO apenas quando um sinalizador de compensação de iluminação (ic_flag) do bloco em curso da imagem em curso tem um valor indicando que o bloco em curso não está em uma região de mudança de iluminação; ou em que decodificar ou codificar o bloco em curso de acordo com BIO compreende decodificar o bloco em curso de acordo com a fórmula:
9. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que decodificar ou codificar o bloco em curso de acordo com BIO compreende decodificar o bloco em curso com base, pelo menos em parte, em um gradiente em relação à primeira imagem de referência (Gx), um gradiente em relação à segunda imagem de referência (Gy), TD0 e TD1; ou em que decodificar ou codificar o bloco em curso compreende decodificar o bloco em curso utilizando Gx’ e Gy’, em que Gx’ = Gx • TDo e Gy’ = Gy • TDi.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que decodificar ou codificar o bloco em curso compreende decodificar o bloco em curso utilizando Gx’ e GY’, em que Gx’ é calculado a partir de Gx e um fator relacionado a TD0, e Gy’ é calculado a partir de Gy e um fator relacionado a TDi.
11. Método, de acordo com a reivindicação i ou 2, caracterizado pelo fato de que compreende adicionalmente: adicionar a primeira imagem de referência a uma Lista de Imagens de Referência 0 para a imagem em curso; e adicionar a segunda imagem de referência à Lista de Imagens de Referência 0 para a imagem em curso; ou compreendendo adicionalmente: adicionar a primeira imagem de referência a uma Lista de Imagens de Referência i para a imagem em curso; e adicionar a segunda imagem de referência à Lista de Imagens de Referência i para a imagem em curso.
12. Método, de acordo com a reivindicação i ou 2, caracterizado pelo fato de que: determinar TD0 compreende calcular TD0 como sendo igual a uma primeira diferença entre um valor da contagem de ordem de imagem (POC) atual para a imagem em curso e um primeiro valor de POC para a primeira imagem de referência, e em que determinar TDi compreende calcular TDi como sendo igual a uma segunda diferença entre o valor de POC atual para a imagem em curso e um segundo valor de POC para a segunda imagem de referência.
13. Dispositivo para decodificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores configurados para realizar as etapas do método decodificador conforme definido em qualquer uma das reivindicações 1 a 12.
14. Dispositivo, de acordo com a reivindicação 13, caracterizado pelo fato de que o dispositivo compreende um monitor configurado para exibir uma imagem incluindo o bloco em curso decodificado; ou em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de radiodifusão ou um set-top box.
15. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executáveis por um computador para realizar as etapas de método conforme definido em qualquer uma das reivindicações 1 a 12.
BR112018006266-9A 2015-09-28 2016-09-28 Fluxo ótico bidirecional avançado para codificação de vídeo BR112018006266B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562233846P 2015-09-28 2015-09-28
US62/233,846 2015-09-28
US15/277,433 2016-09-27
US15/277,433 US10375413B2 (en) 2015-09-28 2016-09-27 Bi-directional optical flow for video coding
PCT/US2016/054158 WO2017058899A1 (en) 2015-09-28 2016-09-28 Improved bi-directional optical flow for video coding

Publications (2)

Publication Number Publication Date
BR112018006266A2 BR112018006266A2 (pt) 2018-10-16
BR112018006266B1 true BR112018006266B1 (pt) 2023-12-12

Family

ID=58406055

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112018006266-9A BR112018006266B1 (pt) 2015-09-28 2016-09-28 Fluxo ótico bidirecional avançado para codificação de vídeo

Country Status (9)

Country Link
US (1) US10375413B2 (pt)
EP (1) EP3357241B1 (pt)
JP (1) JP6676156B2 (pt)
KR (1) KR102136973B1 (pt)
CN (1) CN108028929B (pt)
BR (1) BR112018006266B1 (pt)
CA (1) CA3000391A1 (pt)
TW (1) TW201715891A (pt)
WO (1) WO2017058899A1 (pt)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180249172A1 (en) * 2015-09-02 2018-08-30 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques
MY201069A (en) * 2016-02-05 2024-02-01 Hfi Innovation Inc Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding
US11095898B2 (en) * 2016-03-28 2021-08-17 Lg Electronics Inc. Inter-prediction mode based image processing method, and apparatus therefor
KR20180129860A (ko) * 2016-04-25 2018-12-05 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
CN116708831A (zh) * 2017-04-24 2023-09-05 Sk电信有限公司 编解码视频数据的方法、发送编码视频数据比特流的方法
KR102409430B1 (ko) * 2017-04-24 2022-06-15 에스케이텔레콤 주식회사 움직임 보상을 위한 옵티컬 플로우 추정 방법 및 장치
CN117014632A (zh) * 2017-04-27 2023-11-07 松下电器(美国)知识产权公司 解码装置、编码装置以及非暂时性记录介质
JP2018191136A (ja) * 2017-05-02 2018-11-29 キヤノン株式会社 符号化装置、符号化方法およびプログラム
WO2018212111A1 (ja) * 2017-05-19 2018-11-22 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
EP3410717A1 (en) * 2017-05-31 2018-12-05 Thomson Licensing Methods and apparatus for candidate list pruning
WO2018221631A1 (ja) * 2017-06-02 2018-12-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法および復号方法
JPWO2018225594A1 (ja) * 2017-06-05 2020-02-06 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 符号化装置、復号装置、符号化方法及び復号方法
US10904565B2 (en) * 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
EP3649780A1 (en) * 2017-07-03 2020-05-13 Vid Scale, Inc. Motion-compensation prediction based on bi-directional optical flow
WO2019009567A1 (ko) * 2017-07-03 2019-01-10 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측에 따른 영상 디코딩 방법 및 장치
US10757442B2 (en) * 2017-07-05 2020-08-25 Qualcomm Incorporated Partial reconstruction based template matching for motion vector derivation
US11917128B2 (en) 2017-08-22 2024-02-27 Google Llc Motion field estimation based on motion trajectory derivation
US10659788B2 (en) 2017-11-20 2020-05-19 Google Llc Block-based optical flow estimation for motion compensated prediction in video coding
KR102400078B1 (ko) * 2017-08-22 2022-05-18 구글 엘엘씨 비디오 코딩에서 모션 보상 예측을 위한 광흐름 추정
US11284107B2 (en) 2017-08-22 2022-03-22 Google Llc Co-located reference frame interpolation using optical flow estimation
KR102580910B1 (ko) * 2017-08-29 2023-09-20 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
CN116744018A (zh) * 2017-08-29 2023-09-12 Sk电信有限公司 视频编码方法、视频解码方法和传输比特流的方法
KR102595689B1 (ko) * 2017-09-29 2023-10-30 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019066523A1 (ko) * 2017-09-29 2019-04-04 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102625609B1 (ko) * 2017-12-08 2024-01-16 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 이미지 인코딩 장치, 이미지 디코딩 장치, 이미지 인코딩 방법 및 이미지 디코딩 방법
CN111630859B (zh) 2017-12-14 2024-04-16 Lg电子株式会社 根据图像编码系统中的帧间预测进行图像解码的方法和装置
CN108040217B (zh) * 2017-12-20 2020-01-24 深圳岚锋创视网络科技有限公司 一种视频解码的方法、装置及相机
EP3518543A1 (en) * 2018-01-26 2019-07-31 Thomson Licensing Illumination compensation flag in frame rate up-conversion with template matching
BR112020013554A2 (pt) * 2018-02-06 2020-12-01 Panasonic Intellectual Property Corporation Of America codificador, decodificador, método de codificação, e método de decodificação
CN110324623B (zh) * 2018-03-30 2021-09-07 华为技术有限公司 一种双向帧间预测方法及装置
JP2021520710A (ja) 2018-04-06 2021-08-19 ヴィド スケール インコーポレイテッド 簡易化された勾配導出による双方向オプティカルフロー方法
US10958928B2 (en) * 2018-04-10 2021-03-23 Qualcomm Incorporated Decoder-side motion vector derivation for video coding
EP3554080A1 (en) 2018-04-13 2019-10-16 InterDigital VC Holdings, Inc. Methods and devices for picture encoding and decoding
US10841575B2 (en) * 2018-04-15 2020-11-17 Arris Enterprises Llc Unequal weight planar motion vector derivation
CN110392282B (zh) * 2018-04-18 2022-01-07 阿里巴巴(中国)有限公司 一种视频插帧的方法、计算机存储介质及服务器
JP7104186B2 (ja) * 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
WO2019238008A1 (en) * 2018-06-11 2019-12-19 Mediatek Inc. Method and apparatus of bi-directional optical flow for video coding
EP4307671A3 (en) 2018-06-21 2024-02-07 Beijing Bytedance Network Technology Co., Ltd. Sub-block mv inheritance between color components
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
TWI730380B (zh) * 2018-08-17 2021-06-11 聯發科技股份有限公司 在視訊編解碼系統中利用雙向預測處理視訊的方法、設備和可讀介質
US11665365B2 (en) 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
WO2020065518A1 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction with weights in video coding and decoding
TW202029755A (zh) * 2018-09-26 2020-08-01 美商Vid衡器股份有限公司 視訊編碼雙預測
CN111010569B (zh) * 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
WO2020089822A1 (en) 2018-10-31 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Overlapped block motion compensation with derived motion information from neighbors
WO2020093999A1 (en) * 2018-11-05 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Inter prediction with refinement in video processing
CN112997495B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 当前图片参考中的取整
CN111436228A (zh) 2018-11-12 2020-07-21 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
WO2020103872A1 (en) * 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Prediction refinement for combined inter intra prediction mode
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
US11394989B2 (en) * 2018-12-10 2022-07-19 Tencent America LLC Method and apparatus for video coding
WO2020119525A1 (zh) * 2018-12-13 2020-06-18 华为技术有限公司 一种帧间预测的方法及装置
WO2020130710A1 (ko) * 2018-12-21 2020-06-25 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
EP3900343A1 (en) * 2018-12-21 2021-10-27 VID SCALE, Inc. Symmetric motion vector difference coding
KR20210094664A (ko) 2019-01-02 2021-07-29 텔레폰악티에볼라겟엘엠에릭슨(펍) 비디오 인코딩/디코딩 시스템의 사이드 모션 정교화
KR20220025301A (ko) * 2019-01-06 2022-03-03 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 양방향 광학 흐름을 위한 비트 폭 제어
CN113661704A (zh) * 2019-01-09 2021-11-16 北京达佳互联信息技术有限公司 用于改进帧间帧内联合预测的系统和方法
CN113542748B (zh) * 2019-01-09 2023-07-11 北京达佳互联信息技术有限公司 视频编解码方法、设备和非暂时性计算机可读存储介质
CN113366831B (zh) * 2019-01-13 2024-04-05 北京字节跳动网络技术有限公司 重叠块运动补偿和其他工具之间的协调
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
KR20240000636A (ko) 2019-03-08 2024-01-02 후아웨이 테크놀러지 컴퍼니 리미티드 인터 예측을 위한 인코더, 디코더 및 대응하는 방법
CN117014634A (zh) * 2019-03-11 2023-11-07 阿里巴巴集团控股有限公司 用于对视频数据进行编码的帧间预测方法
HUE062990T2 (hu) 2019-03-12 2023-12-28 Lg Electronics Inc DMVR és BDOF alapú inter predikciós eljárás és készülék
CN113557721A (zh) * 2019-03-12 2021-10-26 北京达佳互联信息技术有限公司 组合帧间和帧内预测模式的受约束和调节的应用
KR20220112864A (ko) 2019-03-15 2022-08-11 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 양방향 광 흐름을 위한 비트-폭 제어를 위한 방법 및 디바이스
WO2020200269A1 (en) 2019-04-02 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation
US11039150B2 (en) * 2019-04-19 2021-06-15 Tencent America LLC Method and apparatus for video coding
CN113170130A (zh) * 2019-05-02 2021-07-23 株式会社 Xris 图像信号编码/解码方法及其装置
EP3970363B1 (en) * 2019-05-15 2023-05-17 Huawei Technologies Co., Ltd. Handling of bi-directional optical flow (bio) coding tool for reference picture resampling in video coding
KR102662616B1 (ko) * 2019-05-21 2024-04-30 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드를 위한 적응적 모션 벡터 차이 해상도
US11089328B2 (en) * 2019-05-22 2021-08-10 Qualcomm Incorporated Bi-directional optical flow in video coding
CN113411593B (zh) * 2019-06-21 2022-05-27 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
EP4030760A4 (en) * 2019-09-10 2023-09-06 LG Electronics Inc. IMAGE CODING/DECODING METHOD AND APPARATUS FOR PERFORMING BDOF AND METHOD FOR TRANSMITTING A BIT STREAM
EP4032298A4 (en) * 2019-09-17 2023-08-16 Beijing Dajia Internet Information Technology Co., Ltd. METHODS AND APPARATUS FOR PREDICTION REFINEMENT WITH OPTICAL FLOW
WO2021056438A1 (zh) * 2019-09-27 2021-04-01 深圳市大疆创新科技有限公司 点云数据处理方法及其装置、激光雷达、可移动平台
CN110572677B (zh) * 2019-09-27 2023-10-24 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
WO2021073630A1 (en) 2019-10-18 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN112135145B (zh) * 2019-11-14 2022-01-25 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN111970517B (zh) * 2020-07-29 2023-07-28 浙江大华技术股份有限公司 基于双向光流的帧间预测方法、编码方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1982517A4 (en) * 2006-01-12 2010-06-16 Lg Electronics Inc MULTIVATE VIDEO PROCESSING
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
CN102934444A (zh) * 2010-04-06 2013-02-13 三星电子株式会社 用于对视频进行编码的方法和设备以及用于对视频进行解码的方法和设备
WO2012108181A1 (en) 2011-02-08 2012-08-16 Panasonic Corporation Methods and apparatuses for encoding and decoding video using multiple reference pictures
US20130208795A1 (en) * 2012-02-09 2013-08-15 Google Inc. Encoding motion vectors for video compression
KR20140089486A (ko) * 2013-01-04 2014-07-15 삼성전자주식회사 스케일러블 비디오의 부호화 및 복호화를 위한 움직임 보상 방법 및 장치
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US20180249172A1 (en) * 2015-09-02 2018-08-30 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques

Also Published As

Publication number Publication date
JP6676156B2 (ja) 2020-04-08
US20170094305A1 (en) 2017-03-30
CN108028929A (zh) 2018-05-11
US10375413B2 (en) 2019-08-06
EP3357241B1 (en) 2021-03-10
KR20180061281A (ko) 2018-06-07
KR102136973B1 (ko) 2020-07-23
CN108028929B (zh) 2021-04-20
CA3000391A1 (en) 2017-04-06
TW201715891A (zh) 2017-05-01
BR112018006266A2 (pt) 2018-10-16
JP2018536320A (ja) 2018-12-06
WO2017058899A1 (en) 2017-04-06
EP3357241A1 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
RU2705428C2 (ru) Вывод информации движения для подблоков при видеокодировании
CN112956190B (zh) 仿射运动预测
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
JP6552923B2 (ja) ビデオコード化における動きベクトル予測
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
BR112019017252A2 (pt) derivando informação de vetor de movimento em um decodificador de vídeo
BR112018006408B1 (pt) Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112020006588A2 (pt) predição afim em codificação de vídeo
BR112019018689A2 (pt) refinamento de inter-predição baseado em fluxo ótico bidirecional (bio)
BR112019013684A2 (pt) reconstruções de vetor de movimento para fluxo ótico bidirecional (bio)
BR112020014654A2 (pt) compensação de movimento afim em codificação de vídeo
BR112016023406B1 (pt) Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112016007360B1 (pt) Previsão ponderada explícita de alta precisão para codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
TW202308389A (zh) 用於解碼器側運動向量細化的自我調整雙邊匹配
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 28/09/2016, OBSERVADAS AS CONDICOES LEGAIS