BR112019027261A2 - refinamento de vetor de movimento para previsão de multirreferências - Google Patents

refinamento de vetor de movimento para previsão de multirreferências Download PDF

Info

Publication number
BR112019027261A2
BR112019027261A2 BR112019027261-5A BR112019027261A BR112019027261A2 BR 112019027261 A2 BR112019027261 A2 BR 112019027261A2 BR 112019027261 A BR112019027261 A BR 112019027261A BR 112019027261 A2 BR112019027261 A2 BR 112019027261A2
Authority
BR
Brazil
Prior art keywords
motion vector
reference image
image
estimate
block
Prior art date
Application number
BR112019027261-5A
Other languages
English (en)
Inventor
Semih ESENLIK
Anand Meher KOTRA
Zhijie ZHAO
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112019027261A2 publication Critical patent/BR112019027261A2/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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes

Landscapes

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

Abstract

A presente invenção diz respeito ao desempenho de refinamento de vetor de movimento em um espaço de busca para interprevisão de multirreferências. Duas ou mais figuras de referência são selecionadas, uma delas usada para refinamento de vetor de movimento. Com base em uma estimativa inicial de um vetor de movimento para a figura de referência para refinamento de vetor de movimento, um espaço de busca nesta imagem de referência é construído. Usando correspondência de modelo, o primeiro vetor de movimento é refinado. O segundo vetor de movimento para outra figura de referência é calculado usando sua estimativa inicial, a estimativa inicial do primeiro vetor de movimento e o primeiro vetor de movimento refinado.

Description

“REFINAMENTO DE VETOR DE MOVIMENTO PARA PREVISÃO DE MULTIRREFERÊNCIAS”
[0001] A presente invenção se refere ao campo de codificação de vídeo e em particular para estimativa de vetor de movimento aplicável em uma interprevisão de multirreferências. O pedido reivindica a prioridade ao PCT/EP2017/066342 depositado em 30 de junho de 2017, cujo conteúdo é aqui incorporado por referência.
FUNDAMENTOS
[0002] Os codecs de vídeo híbridos atuais empregam codificação prevista. Uma imagem de uma sequência de vídeo é subdividida em blocos de pixels e esses blocos são codificados. Em vez de codificar um bloco pixel por pixel, o bloco inteiro é previsto usando pixels já codificados na proximidade espacial ou temporal do bloco. O codificador adicionalmente processa apenas as diferenças entre o bloco e sua previsão. O processamento adicional normalmente inclui uma transformação dos pixels de bloco em coeficientes em um domínio de transformação. Os coeficientes podem então ser adicionalmente comprimidos por meio de quantização e adicionalmente compactados por codificação de entropia para formar um fluxo de bits. O fluxo de bits adicionalmente inclui quaisquer informações de sinalização que permitam ao decodificador decodificar o vídeo codificado. Por exemplo, a sinalização pode incluir configurações relativas às definições de codificador, como tamanho da imagem de entrada, taxa de quadros, indicação de passo de quantização, previsão aplicada aos blocos das imagens ou semelhantes.
[0003] A previsão temporal explora a correlação temporal entre as imagens, também conhecidas como quadros, de um vídeo. A previsão temporal também é chamada de interprevisão, pois é uma previsão usando as dependências entre (inter) diferentes quadros de vídeo. Por conseguinte, um bloco sendo codificado, também referido como um bloco atual, é previsto a partir de (uma ou) mais imagens codificadas anteriormente, referidas como uma imagem de referência. A imagem de referência não é necessariamente uma imagem que precede a imagem atual na qual o bloco atual está localizado na ordem de exibição da sequência de vídeo. O codificador pode codificar as imagens em uma ordem de codificação diferente da ordem de exibição. Como uma previsão do bloco atual, um bloco colocalizado em uma imagem de referência pode ser determinado. O bloco colocalizado é um bloco localizado na imagem de referência na mesma posição que o bloco atual na imagem atual. Essa previsão é precisa para regiões de imagem sem movimento, ou seja, regiões de imagem sem movimento de uma imagem para outra.
[0004] Para obter um previsor que leva em consideração o movimento, ou seja, um previsor de movimento compensado, a estimativa de movimento é normalmente empregada ao determinar a previsão do bloco atual. Por conseguinte, o bloco atual é previsto por um bloco na imagem de referência, que está localizado a uma distância dada por um vetor de movimento a partir da posição do bloco colocalizado. Para permitir que um decodificador determine a mesma previsão do bloco atual, o vetor de movimento pode ser sinalizado no fluxo de bits. A fim de reduzir adicionalmente a sobrecarga de sinalização causada pela sinalização do vetor de movimento para cada um dos blocos, o próprio vetor de movimento pode ser estimado. A estimativa de vetor de movimento pode ser realizada com base nos vetores de movimento dos blocos vizinhos no domínio espacial e/ou temporal.
[0005] A previsão do bloco atual pode ser calculada usando uma imagem de referência ou ponderando-se as previsões obtidas a partir de duas ou mais imagens de referência. A imagem de referência pode ser uma imagem adjacente, ou seja, uma imagem imediatamente anterior e/ou a imagem imediatamente posterior a imagem atual na ordem de exibição, pois é provável que as imagens adjacentes sejam semelhantes à imagem atual. No entanto, em geral, a imagem de referência também pode ser qualquer outra imagem anterior ou posterior à imagem atual na ordem de exibição e anterior à imagem atual no fluxo de bits (ordem de decodificação). Isso pode oferecer vantagens, por exemplo, no caso de oclusões e/ou movimento não linear no conteúdo do vídeo. A imagem de referência também pode ser sinalizada no fluxo de bits.
[0006] Um modo especial da interprevisão é a chamada biprevisão, na qual duas imagens de referência são usadas para gerar a previsão do bloco atual. Em particular, duas previsões determinadas nas duas imagens de referência respectivas são combinadas em um sinal de previsão do bloco atual. A biprevisão pode resultar em uma previsão mais precisa do bloco atual do que a uniprevisão, ou seja, previsão usando apenas uma única imagem de referência. A previsão mais precisa leva a diferenças menores entre os pixels do bloco atual e a previsão (também conhecida como "resíduos"), que podem ser codificadas com mais eficiência, ou seja, compactadas em um fluxo de bits mais curto. Em geral, mais de duas imagens de referência podem ser usadas para encontrar os respectivos mais de dois blocos de referência para prever o bloco atual, isto é, uma interprevisão de múltiplas referências pode ser aplicada. O termo previsão de múltiplas referências inclui, assim, a biprevisão, bem como previsões usando mais de duas imagens de referência.
[0007] Para fornecer uma estimativa de movimento mais precisa, a resolução da imagem de referência pode ser aprimorada interpolando-se amostras entre pixels. A interpolação de pixels fracionária pode ser realizada pela média ponderada dos pixels mais próximos. No caso de resolução de meio pixel, por exemplo, uma interpolação bilinear é normalmente usada. Outros pixels fracionários são calculados como uma média dos pixels mais próximos ponderados pelo inverso da distância entre os respectivos pixels mais próximos do pixel previsto.
[0008] A estimativa de vetor de movimento é uma tarefa computacionalmente complexa na qual uma similaridade é calculada entre o bloco atual e os blocos de previsão correspondentes apontados pelos vetores de movimento candidatos na imagem de referência. Para reduzir a complexidade, o número de vetores de movimento candidatos é geralmente reduzido, limitando- se os vetores de movimento candidatos a um determinado espaço de busca. O espaço de busca pode ser, por exemplo, definido por um número e/ou posições de pixels ao redor da posição na imagem de referência correspondente à posição do bloco atual na imagem atual. Por outro lado, os vetores de movimento candidatos podem ser definidos por uma lista de vetores de movimento candidatos formados por vetores de movimento de blocos vizinhos.
[0009] Os vetores de movimento são geralmente pelo menos parcialmente determinados no lado de codificador e sinalizados para o decodificador dentro do fluxo de bits codificados. No entanto, os vetores de movimento também podem ser derivados no decodificador. Nesse caso, o bloco atual não está disponível no decodificador e não pode ser usado para calcular a semelhança com os blocos para os quais os vetores de movimento candidatos apontam na imagem de referência. Portanto, em vez do bloco atual, é usado um modelo que é construído com pixels de blocos já decodificados. Por exemplo,
pixels já decodificados adjacentes ao bloco atual (na figura atual ou na imagem de referência) podem ser usados. Essa estimativa de movimento fornece uma vantagem de reduzir a sinalização: o vetor de movimento é derivado da mesma maneira no codificador e no decodificador e, portanto, nenhuma sinalização é necessária. Por outro lado, a precisão dessa estimativa de movimento pode ser menor.
[0010] A fim de fornecer uma troca entre a precisão e a sobrecarga de sinalização, a estimativa de vetor de movimento pode ser dividida em dois passos: derivação de vetor de movimento e refinamento de vetor de movimento. Por exemplo, uma derivação de vetor de movimento pode incluir a seleção de um vetor de movimento a partir da lista de candidatos. Esse vetor de movimento selecionado pode ser adicionalmente refinado, por exemplo, por uma busca dentro de um espaço de busca. A busca no espaço de busca é baseada no cálculo da função de custo para cada vetor de movimento candidato, ou seja, para cada posição candidata do bloco para a qual o vetor de movimento candidato aponta.
[0011] Documento JVET-DO0029: Refinamento de vetor de movimento de lado de decodificador com base na correspondência de modelo bilateral, X. Chen, J. An, J. Zheng (O documento pode ser encontrado em: http://phenix.it- sudparis.eu/jvet/ site) mostra o refinamento de vetor de movimento no qual um primeiro vetor de movimento na resolução de pixels inteiros é encontrado e refinado adicionalmente por uma busca com resolução de meio pixel em um espaço de busca em torno do primeiro vetor de movimento.
SUMÁRIO
[0012] Quando a previsão de múltiplas referências é aplicada, os vetores de movimento em uma pluralidade de imagens de referência devem ser determinados. Mesmo que os vetores de movimento sejam sinalizados no primeiro estágio para que o decodificador não precise realizar nenhuma busca adicional, o refinamento de vetor de movimento ainda requer uma busca adicional entre os vetores de movimento de um espaço de busca correspondente. Essa pode ser uma tarefa complexa que requer recursos computacionais bem como memória.
[0013] A presente divulgação fornece uma técnica na qual um primeiro vetor de movimento em uma primeira imagem de referência e um segundo vetor de movimento em uma segunda imagem de referência são determinados. A complexidade pode assim ser reduzida. Inicialmente, o primeiro vetor de movimento e o segundo vetor de movimento são estimados aproximadamente. Em seguida, o primeiro vetor de movimento é refinado realizando-se uma busca em um espaço de busca fornecido pela estimativa aproximada do primeiro vetor de movimento. O segundo vetor de movimento é determinado pelo cálculo com base em sua estimativa aproximada, bem como com base no primeiro vetor de movimento refinado. O primeiro e o segundo vetores de movimento podem ser aplicados em interprevisão do bloco atual em uma imagem atual, usada no decodificador no lado de codificação e/ou decodificação.
[0014] De acordo com um primeiro aspecto, a invenção se refere a um aparelho para determinar um primeiro vetor de movimento em uma primeira imagem de referência e um segundo vetor de movimento em uma segunda imagem de referência, o primeiro e o segundo vetores de movimento a serem aplicados em interprevisão de um bloco de imagem em uma imagem atual, o aparelho compreende uma unidade de refinamento de vetor de movimento e uma unidade de cálculo de vetor de movimento. A unidade de refinamento de vetor de movimento é configurada para obter uma estimativa do primeiro vetor de movimento. Um espaço de busca é especificado com base na estimativa do primeiro vetor de movimento. Dentro do espaço de busca, a unidade de refinamento de vetor de movimento realiza busca para determinar o primeiro vetor de movimento. A unidade de cálculo de vetor de movimento obtém uma estimativa do segundo vetor de movimento. Com base na estimativa do segundo vetor de movimento e do primeiro vetor de movimento, a unidade de cálculo de vetor de movimento calcula o segundo vetor de movimento.
[0015] Assim, a determinação de vetor de movimento pode ser realizada com menos complexidade, enquanto mantendo a precisão dada pelo refinamento do primeiro vetor de movimento e com base no mesmo estimar a quantidade de refinamento para o segundo vetor de movimento.
[0016] Em uma possível forma de implementação do aparelho, de acordo com o primeiro aspecto como tal, o segundo vetor de movimento é calculado adicionando-se à estimativa do segundo vetor de movimento uma função de uma diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento. Esta função pode incluir escalonamento e/ou recorte. Quando o parâmetro de escalonamento é determinado, seu valor pode depender da razão entre as respectivas distâncias da primeira imagem de referência e da segunda imagem de referência para a imagem atual.
[0017] O cálculo do segundo vetor de movimento em função do refinamento realizado no primeiro vetor de movimento é uma estimativa de baixa complexidade. Além disso, modificando-o adicionalmente (por exemplo, escalonando dependendo da distância entre as respectivas imagens de referência), a estimativa pode se tornar adicionalmente precisa.
[0018] O aparelho, vantajosamente, contém adicionalmente uma unidade de seleção de imagem de referência para obter imagens de referência e selecionar qual delas é a primeira imagem de referência e a segunda imagem de referência. Após essa seleção, determina se a primeira imagem de referência ou a segunda imagem de referência deve ser usada para o refinamento do vetor de movimento. Uma lista de imagens de referência associa um índice a ser incluído no fluxo de bits com a posição de uma imagem de referência em relação à imagem atual. A unidade de seleção de imagem de referência é configurada para selecionar a primeira imagem de referência e a segunda imagem de referência com base em se for referida ou não no fluxo de bits por um índice na lista predefinida de imagens de referência.
[0019] Em outras palavras, a unidade de seleção de imagem de referência é configurada para selecionar a primeira ou a segunda imagem, com base em se a primeira ou a segunda imagem for referida em um fluxo de bits incluindo também o bloco de imagem codificado do vídeo por um índice relacionado a uma lista predefinida de imagens de referência entre pelo menos duas listas de imagens de referência, em que uma lista de imagens de referência associa um índice à posição de uma imagem de referência em relação à imagem atual.
[0020] Se as duas imagens de referência forem referidas no fluxo de bits por um índice na mesma lista predefinida de imagens de referência, a unidade de seleção de imagens de referência pode selecionar a imagem de referência a ser usada para o refinamento do vetor de movimento como a imagem com a posição mais alta na dita lista de imagens de referência.
[0021] Alternativamente, a imagem de referência a ser usada para o refinamento do vetor de movimento pode ser selecionada como a imagem, que possui a menor camada temporal entre as duas imagens.
[0022] A imagem de referência a ser usada para o refinamento do vetor de movimento pode ser selecionada como a imagem, que possui o menor valor de quantização de base, ou como a imagem, que também possui a menor distância para a imagem atual.
[0023] Como uma abordagem adicional, a imagem de referência a ser usada para o refinamento do vetor de movimento pode ser selecionada de modo que a magnitude da estimativa de vetor de movimento apontando para a imagem de referência a ser usada para o refinamento do vetor de movimento seja menor que a magnitude da estimativa do outro vetor de movimento.
[0024] O aparelho pode compreender adicionalmente uma unidade de determinação de vetor de movimento para determinar a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento. Essa determinação é realizada pela seleção deles a partir de um conjunto de candidatos de vetor de movimento com base em similaridade de um modelo com uma porção da respectiva imagem referida pelo candidato de vetor de movimento.
[0025] Um codificador de vídeo para codificar uma pluralidade de imagens em um fluxo de bits compreende uma unidade de interprevisão, um formador de fluxo de bits e uma unidade de reconstrução. A unidade de interprevisão inclui o aparelho para determinar o primeiro vetor de movimento e o segundo vetor de movimento, bem como uma unidade de previsão. A unidade de previsão determina o bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento. O formador de fluxo de bits inclui no fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento. À unidade de reconstrução reconstrói o bloco atual de acordo com o bloco de previsão e armazena o bloco reconstruído em uma memória.
[0026] Um decodificador de vídeo para decodificar uma pluralidade de imagens de um fluxo de bits compreende uma unidade de interprevisão, um analisador de fluxo de bits e uma unidade de reconstrução. A unidade de interprevisão inclui o aparelho para determinar o primeiro vetor de movimento e o segundo vetor de movimento, bem como uma unidade de previsão. A unidade de previsão determina o bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento. O analisador de fluxo de bits obtém a partir do fluxo de bits uma estimativa do primeiro vetor de movimento e uma estimativa do segundo vetor de movimento. A unidade de reconstrução reconstrói o bloco atual, de acordo com o bloco de previsão.
[0027] O método compreende refinamento de vetor de movimento e cálculo de vetor de movimento. Uma estimativa do primeiro vetor de movimento é obtida. Um espaço de busca é especificado com base na estimativa do primeiro vetor de movimento. Dentro do espaço de busca, é realizada uma busca para determinar o primeiro vetor de movimento. Uma estimativa do segundo vetor de movimento é obtida. Com base na estimativa do segundo vetor de movimento e do primeiro vetor de movimento, o segundo vetor de movimento é calculado. O segundo vetor de movimento é calculado adicionando-se à estimativa do segundo vetor de movimento uma função de uma diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento. Esta função inclui escalonamento e/ou recorte. O valor do parâmetro de escalonamento depende da razão entre as distâncias respectivas da primeira imagem de referência e da segunda imagem de referência para a imagem atual.
[0028] O método adicionalmente compreende uma seleção de imagem de referência para obter imagens de referência e selecionar qual delas é a primeira imagem de referência e a segunda imagem de referência. Após essa seleção, determina se a primeira imagem de referência ou a segunda imagem de referência deve ser usada para o refinamento do vetor de movimento. Uma lista de imagens de referência associa um índice a ser incluído no fluxo de bits com a posição de uma imagem de referência em relação à imagem atual. À seleção da imagem de referência é realizada para selecionar a primeira imagem de referência e a segunda imagem de referência com base em se for referida ou não no fluxo de bits por um índice na lista predefinida de imagens de referência. Se as duas imagens de referência são referidas no fluxo de bits por um índice na mesma lista predefinida de imagens de referência, a imagem de referência a ser usada para o refinamento de vetor de movimento é selecionada como a imagem com a posição mais alta na dita lista de imagens de referência. Alternativamente, a imagem de referência a ser usada para o refinamento de vetor de movimento pode ser selecionada como a imagem, que possui a menor camada temporal entre as duas imagens. A imagem de referência a ser usada para o refinamento de vetor de movimento pode ser selecionada como a imagem, que possui o menor valor de quantização de base, ou como a imagem, que também possui a menor distância da imagem atual. Como uma abordagem adicional, a imagem de referência a ser usada para o refinamento de vetor de movimento pode ser selecionada de modo que a magnitude da estimativa de vetor de movimento apontando para a imagem de referência a ser usada para o refinamento de vetor de movimento seja menor que a magnitude da estimativa do outro vetor de movimento.
[0029] O método pode adicionalmente determinar a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento. Essa determinação é realizada pela seleção deles a partir de um conjunto de candidatos de vetor de movimento com base em similaridade de um modelo com uma porção da respectiva imagem referida pelo candidato de vetor de movimento.
[0030] Um método de codificação de vídeo para codificar uma pluralidade de imagens em um fluxo de bits compreende realizar interprevisão, formação de fluxo de bits e reconstrução de bloco. A interprevisão inclui determinar o primeiro vetor de movimento e o segundo vetor de movimento, bem como uma previsão de bloco. A previsão inclui determinar o bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento. A formação de fluxo de bits inclui no fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento. A reconstrução inclui reconstruir o bloco atual de acordo com o bloco de previsão e armazenar o bloco reconstruído em uma memória.
[0031] Um método de decodificação de vídeo para decodificar uma pluralidade de imagens a partir de um fluxo de bits compreende realizar interprevisão, análise de fluxo de bits e reconstrução de bloco. A interprevisão inclui determinar o primeiro vetor de movimento e o segundo vetor de movimento,
bem como uma previsão de bloco. A previsão determina o bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento.
[0032] A análise de fluxo de bits obtém do fluxo de bits uma estimativa do primeiro vetor de movimento e uma estimativa do segundo vetor de movimento. A reconstrução inclui a reconstrução do bloco atual, de acordo com o bloco de previsão.
[0033] A presente invenção pode reduzir o número de candidatos de busca no processo de refinamento de vetor de movimento sem nenhum impacto no desempenho de codificação, ao mesmo tempo em que fornece qualidade de imagem semelhante. Isso é obtido realizando-se uma busca para o refinamento de vetor de movimento apenas em uma imagem de referência para um bloco atual, enquanto outro vetor de movimento para outra imagem de referência do mesmo bloco atual é calculado com base no vetor de movimento refinado.
BREVE DESCRIÇÃO DOS DESENHOS
[0034] Nas seguintes modalidades exemplares, são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais:
[0035] A Figura 1 é um diagrama de blocos que mostra uma estrutura exemplar de um codificador no qual a derivação e o refinamento de vetor de movimento podem ser empregados;
[0036] A Figura 2 é um diagrama de blocos que mostra uma estrutura exemplar de um decodificador no qual a derivação e o refinamento de vetor de movimento podem ser empregados;
[0037] A Figura 3 é um desenho esquemático que ilustra o refinamento de vetor de movimento de um primeiro vetor de movimento;
[0038] A Figura 4 é um desenho esquemático que ilustra o refinamento de vetor de movimento do segundo vetor de movimento com base no primeiro vetor de movimento refinado;
[0039] A Figura 5 é um diagrama de blocos que ilustra um aparelho de refinamento de vetor de movimento;
[0040] A Figura 6 é um desenho esquemático que ilustra várias configurações dos espaços de busca;
[0041] A Figura 7 é um desenho esquemático que ilustra um método para determinar vetores de movimento de acordo com uma modalidade; e
[0042] A Figura 8 é um diagrama de blocos que ilustra uma unidade de interprevisão para determinar vetores de movimento e realizar intraprevisão de acordo com uma modalidade.
DESCRIÇÃO DAS MODALIDADES
[0043] A presente divulgação se refere à determinação de vetores de movimento para uma previsão de múltiplas referências. Pode ser empregada na estimativa de movimento realizada durante a codificação e decodificação de vídeo. No seguinte, codificador e decodificador exemplares que podem implementar a estimativa de movimento que emprega a construção do espaço de busca da presente divulgação são descritos a seguir.
[0044] A Figura 1 mostra um codificador 100 que compreende uma entrada para receber blocos de entrada de quadros ou imagens de um fluxo de vídeo e uma saída para gerar um fluxo de bits de vídeo codificado. O termo "quadro" nesta divulgação é usado como sinônimo de imagem. No entanto, note que a presente divulgação também é aplicável aos campos caso oO entrelaçamento seja aplicado. Em geral, uma imagem inclui m vezes n pixels. Isso corresponde a amostras de imagens e pode compreender um ou mais componentes de cores. Por uma questão de simplicidade, a descrição a seguir se refere a pixels significando amostras de luminância. No entanto, note que a busca de vetores de movimento da invenção pode ser aplicada a qualquer componente de cor, incluindo crominância ou componentes de um espaço de busca, como RGB ou semelhantes. Por outro lado, pode ser benéfico realizar apenas a estimativa de vetor de movimento para um componente e aplicar o vetor de movimento determinado a mais (ou todos) componentes.
[0045] Os blocos de entrada a serem codificados não têm necessariamente o mesmo tamanho. Uma imagem pode incluir blocos de tamanhos diferentes e a varredura de blocos de imagens diferentes também pode ser diferente.
[0046] Em uma realização explicativa, o codificador 100 é configurado para aplicar previsão, transformação, quantização e codificação de entropia ao fluxo de vídeo. A transformação, quantização e codificação de entropia são realizadas respectivamente por uma unidade de transformada 101, uma unidade de quantização 102 e uma unidade de codificação de entropia 103, de modo a gerar como saída o fluxo de bits de vídeo codificado.
[0047] O fluxo de vídeo pode incluir uma pluralidade de quadros, em que cada quadro é dividido em blocos de um determinado tamanho que são intra ou intercodificados. Os blocos de, por exemplo, o primeiro quadro do fluxo de vídeo são intracodificados por meio de uma unidade de intraprevisão 109. Um intraquadro é codificado usando apenas as informações dentro do mesmo quadro, para que possa ser decodificado de forma independente e possa fornecer um ponto de entrada no fluxo de bits para acesso aleatório. Blocos de outros quadros do fluxo de vídeo podem ser codificados por meio de uma unidade de previsão 110: informações de quadros previamente codificados (quadros de referência) são usadas para reduzir a redundância temporal, de modo que cada bloco de um quadro intercodificado seja previsto a partir de um bloco em um quadro de referência. Uma unidade de seleção de modo 108 é configurada para selecionar se um bloco de um quadro deve ser processado pela unidade de intraprevisão 109 ou pela unidade interprevisão 110. Este bloco também controla os parâmetros de intraprevisão. Para permitir a atualização das informações da imagem, o bloco intracodificado pode ser fornecido dentro de quadros intercodificados. Além disso, intraquadros que contêm apenas blocos intracodificados podem ser regularmente inseridos na sequência de vídeo para fornecer pontos de entrada para decodificação, isto é, pontos onde o decodificador pode começar a decodificar sem ter informações dos quadros anteriormente codificados.
[0048] A unidade de intraprevisão 109 é uma unidade de previsão de bloco. Para realizar a previsão espacial ou temporal, os blocos codificados podem ser processados adicionalmente por uma unidade de quantização inversa 104 e uma unidade de transformada inversa 105. Após a reconstrução do bloco, uma unidade de filtragem de loop 106 é aplicada para melhorar adicionalmente a qualidade da imagem decodificada. Os blocos filtrados formam então os quadros de referência que são então armazenados em um armazenamento temporário de quadro 107. Esse loop de decodificação (decodificador) no lado de codificador fornece a vantagem de produzir quadros de referência que são os mesmos que as imagens de referência reconstruídas no lado de decodificador. Por conseguinte, o lado de codificador e decodificador operam de maneira correspondente. O termo "reconstrução" aqui se refere à obtenção do bloco reconstruído adicionando-se ao bloco residual decodificado o bloco de previsão.
[0049] A unidade de interprevisão 110 recebe como entrada um bloco de um quadro ou imagem atual a ser codificado e um ou vários quadros ou imagens de referência a partir do armazenamento temporário de quadro 107. À estimativa de movimento e a compensação de movimento são aplicadas pela unidade de interprevisão 110. A estimativa de movimento é usada para obter um vetor de movimento e um quadro de referência com base em determinada função de custo. A compensação de movimento descreve então um bloco atual do quadro atual em termos da translação de um bloco de referência do quadro de referência para o quadro atual, ou seja, por um vetor de movimento. A unidade de interprevisão 110 emite o bloco de previsão para o bloco atual, em que o referido bloco de previsão minimiza a função de custo. Por exemplo, a função de custo pode ser uma diferença entre o bloco atual a ser codificado e seu bloco de previsão, ou seja, a função de custo minimiza o bloco residual. A minimização do bloco residual é baseada, por exemplo, no cálculo de uma soma de diferenças absolutas (SAD) entre todos os pixels (amostras) do bloco atual e o bloco candidato na imagem de referência candidata. No entanto, em geral, qualquer outra métrica de similaridade pode ser empregada, como erro quadrático médio (MSE) ou métrica de similaridade estrutural (SSIM).
[0050] No entanto, a função de custo também pode ser o número de bits necessários para codificar tal interbloco e/ou distorção resultante dessa codificação. Assim, o procedimento de otimização de distorção de taxa pode ser usado para decidir sobre a seleção do vetor de movimento e/ou em geral sobre os parâmetros de codificação, como usar inter ou intraprevisão para um bloco e com quais configurações.
[0051] A unidade de intraprevisão 109 recebe como entrada um bloco de um quadro ou imagem atual a ser intracodificado e uma ou várias amostras de referência de uma área já reconstruída do quadro atual. A intraprevisão então descreve os pixels de um bloco atual do quadro atual em termos de uma função de amostras de referência do quadro atual. A unidade de intraprevisão 109 gera um bloco de previsão para o bloco atual, em que o referido bloco de previsão minimiza vantajosamente a diferença entre o bloco atual a ser codificado e seu bloco de previsão, isto é, minimiza o bloco residual. A minimização do bloco residual pode ser baseada, por exemplo, em um procedimento de otimização de distorção de taxa. Em particular, o bloco de previsão é obtido como uma interpolação direcional das amostras de referência. A direção pode ser determinada pela otimização de distorção de taxa e/ou calculando uma medida de similaridade como mencionado acima em conexão com a interprevisão.
[0052] A diferença entre o bloco atual e sua previsão, ou seja, o bloco residual, é então transformada pela unidade de transformada 101. Os coeficientes de transformada são quantificados pela unidade de quantização 102 e a entropia codificada pela unidade de codificação de entropia 103. O fluxo de bits de vídeo codificado assim gerado compreende blocos intracodificados e blocos intercodificados e a sinalização correspondente (como a indicação de modo, indicação do vetor de movimento e/ou direção de intraprevisão). À unidade de transformada 101 pode aplicar uma transformação linear, como uma transformação de cosseno discreto ou Fourier (DFT/FFT ou DCT). Essa transformação para o domínio da frequência espacial fornece a vantagem de que os coeficientes resultantes têm valores tipicamente mais altos nas frequências mais baixas. Assim, após uma varredura eficaz do coeficiente (como ziguezague), e quantização, a sequência resultante de valores geralmente possui alguns valores maiores no início e termina com uma sequência de zeros. Isso permite uma codificação adicionalmente eficiente. A unidade de quantização 102 realiza a compressão com perdas real, reduzindo a resolução dos valores de coeficiente. A unidade de codificação de entropia 103 então atribui aos valores de coeficiente palavras de código binárias para produzir um fluxo de bits. A unidade de codificação de entropia 103 também codifica as informações de sinalização (não mostrada na Figura 1).
[0053] A Figura 2 mostra um decodificador de vídeo 200. O decodificador de vídeo 200 compreende particularmente um armazenamento temporário de imagem de referência 207 e uma unidade de intraprevisão 209, que é uma unidade de previsão de bloco. O armazenamento temporário de imagem de referência 207 é configurado para armazenar pelo menos um quadro de referência reconstruído a partir do fluxo de bits de vídeo codificado, o referido quadro de referência sendo diferente de um quadro atual (quadro atualmente decodificado) do fluxo de bits de vídeo codificado. A unidade de intraprevisão 209 é configurada para gerar um bloco de previsão, que é uma estimativa do bloco a ser decodificado. A unidade de intraprevisão 209 é configurada para gerar esta previsão com base em amostras de referência que são obtidas a partir do armazenamento temporário de imagem de referência 207.
[0054] O decodificador 200 é configurado para decodificar o fluxo de bits de vídeo codificado gerado pelo codificador de vídeo 100 e, de preferência, o decodificador 200 e o codificador 100 geram previsões idênticas para o respectivo bloco a ser codificado/decodificado. As características do armazenamento temporário de imagem de referência 207 e da unidade de intraprevisão 209 são semelhantes às características do armazenamento temporário de imagem de referência 107 e da unidade de intraprevisão 109 da Figura 1.
[0055] O decodificador de vídeo 200 compreende outras unidades que também estão presentes no codificador de vídeo 100 como, por exemplo, uma unidade de quantização inversa 204, uma unidade de transformada inversa 205 e uma unidade de filtragem de loop 206, que correspondem respectivamente à unidade de quantização inversa 104, a unidade de transformada inversa 105 e a unidade de filtragem de loop 106 do codificador de vídeo 100.
[0056] Uma unidade de decodificação de entropia 203 é configurada para decodificar o fluxo de bits de vídeo codificado recebido e para obter correspondentemente coeficientes de transformada residuais quantificados e informações de sinalização. Os coeficientes de transformada residuais quantificados são alimentados à unidade de quantização inversa 204 e a uma unidade de transformada inversa 205 para gerar um bloco residual. O bloco residual é adicionado a um bloco de previsão e a adição é alimentada à unidade de filtragem de loop 206 para obter o vídeo decodificado. Os quadros do vídeo decodificado podem ser armazenados no armazenamento temporário de imagem de referência 207 e servem como um quadro de referência para interprevisão.
[0057] Geralmente, as unidades de intraprevisão 109 e 209 das Figuras 1 e 2 podem usar amostras de referência de uma área já codificada para gerar sinais de previsão para blocos que precisam ser codificados ou precisam ser decodificados.
[0058] A unidade de decodificação de entropia 203 recebe como entrada o fluxo de bits codificados. Em geral, o fluxo de bits é analisado primeiro, ou seja, os parâmetros de sinalização e os resíduos são extraídos do fluxo de bits. Normalmente, a sintaxe e a semântica do fluxo de bits são definidas por um padrão, para que os codificadores e decodificadores possam trabalhar de maneira interoperável. Conforme descrito na seção de Fundamentos acima, o fluxo de bits codificados não inclui apenas os resíduos de previsão. No caso de previsão de movimento compensado, uma indicação de vetor de movimento também é codificada no fluxo de bits e analisada a partir dele no decodificador. A indicação de vetor de movimento pode ser dada por meio de uma imagem de referência na qual o vetor de movimento é fornecido e por meio das coordenadas de vetor de movimento. Até agora, a codificação dos vetores de movimento completos foi considerada. No entanto, também apenas a diferença entre o vetor de movimento atual e o vetor de movimento anterior no fluxo de bits pode ser codificada. Essa abordagem permite explorar a redundância entre vetores de movimento de blocos vizinhos.
[0059] Para codificar com eficiência a imagem de referência, o codec H.265 (ITU-T, H265, Série H: Sistemas audiovisuais e multimídia: codificação de vídeo de alta eficiência) fornece uma lista de imagens de referência atribuídas aos Índices dos respectivos quadros de referência. O quadro de referência é então sinalizado no fluxo de bits incluindo no mesmo o índice de lista atribuído correspondente. Essa lista pode ser definida no padrão ou sinalizada no início do vídeo ou em um conjunto de vários quadros. Note que no H.265 existem duas listas de imagens de referência definidas, chamadas LO e L1. A imagem de referência é então sinalizada no fluxo de bits, indicando a lista (LO ou Li) e indicando um índice nessa lista associado à imagem de referência desejada. O fornecimento de duas ou mais listas pode ter vantagens para uma melhor compactação. Por exemplo, LO pode ser usada para ambas fatias interprevistas unidirecionalmente quanto fatias interprevistas bidirecionalmente, enquanto L1 pode ser usada apenas para fatias interprevistas bidirecionalmente. No entanto, em geral, a presente divulgação não se limita a qualquer conteúdo das listas LO eLi.
[0060] As listas LO e L1 podem ser definidas no padrão e fixadas. No entanto, mais flexibilidade na codificação/decodificação pode ser alcançada sinalizando-as no início da sequência de vídeo. Por conseguinte, o codificador pode configurar as listas LO e L1 com imagens de referência particulares ordenadas de acordo com o índice. As listas LO e L1 podem ter o mesmo tamanho fixo. Pode haver mais de duas listas em geral. O vetor de movimento pode ser sinalizado diretamente pelas coordenadas na imagem de referência. Alternativamente, como também especificado em H.265, uma lista de vetores de movimento candidatos pode ser construída e um índice associado na lista com o vetor de movimento específico pode ser transmitida.
[0061] Os vetores de movimento do bloco atual são geralmente correlacionados com os vetores de movimento dos blocos vizinhos na imagem atual ou nas imagens codificadas anteriormente. Isso ocorre porque os blocos vizinhos provavelmente correspondem ao mesmo objeto em movimento com movimento semelhante e o movimento do objeto provavelmente não mudará abruptamente ao longo do tempo. Consequentemente, o uso dos vetores de movimento nos blocos vizinhos como previsores reduz o tamanho da diferença do vetor de movimento sinalizado. As MVPs são geralmente derivadas de vetores de movimento já decodificados de blocos vizinhos espaciais ou de blocos vizinhos temporalmente na imagem colocalizada. Em H.264/AVC, isso é feito medindo-se uma componente mediana de três vetores de movimento espacialmente vizinhos. Usando essa abordagem, nenhuma sinalização do previsor é necessária. As MVPs temporais de uma imagem colocalizada são consideradas apenas no chamado modo direto temporal do H.264/AVC. Os modos diretos H.264/AVC também são usados para derivar outros dados de movimento além dos vetores de movimento. Portanto, eles se relacionam mais ao conceito de fusão de blocos no HEVC. Em HEVC, a abordagem de derivar implicitamente a MVP foi substituída por uma técnica conhecida como competição de vetores de movimento, que sinaliza explicitamente qual MVP de uma lista de MVPs é usada para derivação de vetores de movimento. A estrutura de blocos de árvore quadrática de codificação variável em HEVC pode resultar em um bloco tendo vários blocos vizinhos com vetores de movimento como possíveis candidatos de MVP. Tomando o vizinho esquerdo como exemplo, no pior dos casos, um bloco de previsão de 64x64 luma pode ter 16 blocos de previsão de 4x4 luma para a esquerda quando um bloco de árvore de codificação de 64x64 luma não é adicionalmente dividido e o esquerdo é dividido na profundidade máxima.
[0062] A Previsão de Vetor de Movimento Avançada (AMVP) foi introduzida para modificar a competição de vetor de movimento para explicar tal uma estrutura de bloco flexível. Durante o desenvolvimento de HEVC, o projeto inicial da AMVP foi significativamente simplificado para fornecer uma boa troca entre a eficiência de codificação e um projeto de fácil implementação. O projeto inicial de AMVP incluiu cinco MVPs a partir de três classes diferentes de previsores: três vetores de movimento a partir de vizinhos espaciais, a mediana dos três previsores espaciais e um vetor de movimento escalonado de um bloco temporariamente colocalizado. Além disso, a lista de previsores foi modificada por reordenação para colocar o previsor de movimento mais provável na primeira posição e por remover candidatos redundantes para garantir uma sobrecarga de sinalização mínima. O projeto final da construção de lista de candidatos de AMVP inclui os seguintes dois candidatos de MVP: a) até duas MVPs candidatas espaciais derivados de cinco blocos vizinhos espaciais; b) uma MVP candidata temporal derivada de dois blocos temporais colocalizados quando ambas as MVPs candidatas espaciais não estão disponíveis ou são idênticas; e c) vetores de movimento zero quando o candidato espacial, o candidato temporal ou ambos não estiverem disponíveis. Detalhes sobre a determinação de vetor de movimento podem ser encontrados no livro de V. Sze et al (Ed.), Codificação de Vídeo de Alta Eficiência (HEVC): Algoritmos e Arquitetura, Springer, 2014, em particular no Capítulo 5, incorporado aqui por referência.
[0063] A fim de melhorar adicionalmente a estimativa de vetor de movimento sem aumentar adicionalmente a sobrecarga de sinalização, pode ser benéfico refinar adicionalmente o vetor de movimento derivado no lado de codificador e fornecido no fluxo de bits. O refinamento de vetor de movimento pode ser realizado no decodificador sem a assistência do codificador. O codificador em seu loop de decodificador pode empregar o mesmo refinamento para obter imagens de referência correspondentes. O refinamento é realizado por determinar um modelo, determinar um espaço de busca e encontrar no espaço de busca uma parte da imagem de referência que melhor corresponda ao modelo. A melhor posição de porção correspondente determina o melhor vetor de movimento que é usado para obter o previsor do bloco atual, ou seja, o bloco atual sendo reconstruído.
[0064] A Figura 3 ilustra um espaço de busca (região de busca) 310 que inclui posições de pixel inteiro (pontos completos) e posições de pixel fracionário (pontos vazios) de uma imagem de referência. Neste exemplo, as posições de pixel fracionário são posições de meio pixel. Como descrito acima, as posições de pixel fracionário podem ser obtidas a partir das posições inteiras (pixel inteiro) por interpolação, como interpolação bilinear.
[0065] Em uma biprevisão do bloco atual, dois blocos de previsão obtidos usando o respectivo primeiro vetor de movimento da lista LO e o segundo vetor de movimento da lista L1 são combinados para um único sinal de previsão, que pode fornecer uma melhor adaptação ao sinal original do que uniprevisão, resultando em menos informações residuais e possivelmente em uma compressão mais eficiente. A Figura 3 adicionalmente ilustra um bloco atual 320 da imagem atual. Como no decodificador, o bloco atual não está disponível, pois está sendo decodificado, para fins de refinamento do vetor de movimento, um modelo é utilizado, que é uma estimativa do bloco atual e que é construído com base nas porções de imagem já processada (ou seja, codificadas no lado de codificador e decodificadas no lado de decodificador).
[0066] O modelo pode ser construído, por exemplo, com base em amostras pertencentes à imagem atual que já foi decodificada, ou seja, que é decodificada antes do bloco atual. Adicional ou alternativamente, essas amostras podem pertencer a qualquer uma das imagens de referência decodificadas anteriormente. Como exemplo, as amostras a serem usadas na construção do modelo podem pertencer à imagem de referência que é decodificada antes da imagem atual e precede a imagem atual na ordem de exibição. Alternativamente, as amostras podem pertencer à imagem de referência que é decodificada antes da imagem atual e que segue a imagem atual na ordem de exibição. Finalmente, o modelo pode ser construído com base em uma combinação de amostras de duas imagens de referência diferentes. Como é evidente para o especialista na técnica, o modelo pode ser obtido usando métodos diferentes, de modo que o bloco atual possa ser estimado com o modelo construído.
[0067] Primeiro, uma estimativa do primeiro vetor de movimento MVO e uma estimativa do segundo vetor de movimento MV1 são recebidas como entrada no decodificador 200, como ilustrado na Figura 3. No lado de codificador 100, as estimativas de vetores de movimento MVO e MV1 podem ser obtidas por correspondência de bloco e/ou busca em uma lista de candidatos (como lista de mesclagem) formada por vetores de movimento dos blocos vizinhos ao bloco atual (na mesma figura ou em figuras adjacentes). O MVO e o MV1 são então vantajosamente sinalizados para o lado de decodificador dentro do fluxo de bits. No entanto, note que, em geral, também o primeiro estágio de determinação no codificador pode ser realizado por correspondência de modelo, o que proporcionaria a vantagem de reduzir a sobrecarga de sinalização.
[0068] No lado de decodificador 200, os vetores de movimento MVO e MV1 são obtidos vantajosamente com base em informações no fluxo de bits. O MVO e o MV1 são sinalizados diretamente, ou diferencialmente, e/ou um índice na lista de vetores de movimento (lista de mesclagem) é sinalizado. No entanto, a presente divulgação não se limita à sinalização de vetores de movimento no fluxo de bits. Em vez disso, o vetor de movimento pode ser determinado pela correspondência de modelo já no primeiro estágio, correspondendo à operação do codificador. A correspondência de modelo do primeiro estágio (derivação de vetor de movimento) pode ser realizada com base em um espaço de busca diferente do espaço de busca do segundo estágio de refinamento. Em particular, o refinamento pode ser realizado em um espaço de busca com maior resolução (ou seja, menor distância entre as posições de busca).
[0069] Uma indicação das duas imagens de referência, para as quais os respectivos MVO e MV1 apontam, também é fornecida ao decodificador. As imagens de referência são armazenadas no armazenamento temporário de imagem de referência no lado de codificador e decodificador como resultado do processamento anterior, ou seja, a respectiva codificação e decodificação. Uma dessas imagens de referência é selecionada para refinamento de vetor de movimento por busca. Uma unidade de seleção de imagem de referência do aparelho para a determinação de vetores de movimento é configurada para selecionar a primeira imagem de referência para a qual MVO aponta e a segunda imagem de referência para a qual MV1 aponta. Após a seleção, a unidade de seleção de imagem de referência determina se a primeira imagem de referência ou a segunda imagem de referência é usada para a execução do refinamento de vetor de movimento. Na Figura 3, a primeira imagem de referência para a qual o vetor de movimento MVO aponta é selecionada para a busca. Para realizar o refinamento de vetor de movimento, a região de busca 310 na primeira imagem de referência é definida em torno da posição candidata à qual o vetor de movimento MVO aponta. As posições de espaço de busca candidatas na região de busca 310 são analisadas para encontrar um bloco mais semelhante a um bloco de modelo, realizando-se a correspondência de modelo dentro do espaço de busca e determinando uma métrica de similaridade, como a soma das diferenças absolutas (SAD). Como mencionado acima, em uma implementação, o modelo é construído com base em uma combinação de amostras de duas imagens de referência diferentes com o respectivo vetor de movimento de MVO e MV1. A correspondência de modelo é realizada para encontrar um bloco com base no ponto na região de busca 310 que é mais semelhante ao modelo. Alternativamente, em outra implementação, o modelo é construído para encontrar a similaridade entre um bloco de previsão PO gerado com base em MVO em LO e um bloco de previsão P1 gerado com base em MV1 em L1. Para realizar o refinamento para MVO, a correspondência de modelo compreende encontrar um bloco com base no ponto na região de busca 310 que é determinado por uma métrica de similaridade (como SAD, por exemplo) entre PO e P1. As posições do espaço de busca 310 indicam as posições nas quais o canto superior esquerdo do modelo 320 é correspondido. Como já mencionado acima, o canto superior esquerdo é uma mera convenção e qualquer ponto do espaço de busca, como o ponto central 330, pode em geral ser usado para indicar a posição correspondente.
[0070] A posição do candidato com o menor valor de SAD é determinada como o vetor de movimento MVO". Na Figura 3, a posição para a qual MVO” aponta é uma posição de meio pel e difere do MVO de estimativa inicial em 1,5 posições de pixel na direção vertical, enquanto a direção horizontal permanece a mesma.
[0071] De acordo com a presente divulgação, para previsão de biprevisão ou múltiplas referências, pelo menos um vetor de movimento do bloco atual é refinado por cálculo com base em outro vetor de movimento refinado do bloco atual, em vez de realizando-se a correspondência de modelo. A Figura 4 ilustra esse refinamento. Em particular, o vetor de movimento MV1” é calculado com base na estimativa de vetor de movimento MV1 e uma função de MVO" - MVO em vez de realizar uma segunda correspondência de modelo. No exemplo da Figura 4, a determinação e o refinamento do primeiro vetor de movimento MVO” são realizados conforme descrito acima com referência à Figura 3. Além disso, o vetor de movimento MV1” é calculado subtraindo a partir da segunda estimativa de vetor de movimento MV1” a diferença entre o MVO0” e o MVO.
[0072] Essa abordagem explora o fato de que a maior parte do movimento em uma sequência de vídeo se enquadra na categoria de "movimento translacional". No movimento translacional, um objeto está se movendo a uma velocidade constante (pelo menos entre os quadros que estão próximos uns dos outros no tempo de amostragem). Isso significa que um objeto é deslocado em quadros consecutivos pela mesma distância de pixel nas direções x e y (se o período de amostragem temporal não estiver variando ao longo do tempo). A invenção utiliza o princípio do movimento translacional até certo ponto.
[0073] No exemplo acima, um primeiro vetor de movimento MVO” foi refinado por correspondência de modelo, enquanto um segundo vetor de movimento foi refinado por cálculo. No entanto, de acordo com a presente divulgação, um processo de seleção pode ser realizado adicionalmente para definir quais vetores de movimento devem ser refinados por correspondência de modelo e quais devem ser determinados por cálculo. A Figura 5 mostra um diagrama de blocos de um exemplo de um refinador de vetor de movimento 500.
[0074] O refinador de vetor de movimento 500 pode ser incluído dentro de um aparelho para determinar os vetores de movimento 810, como ilustrado na Figura 8. O aparelho pode ser incluído na unidade de interprevisão 800 que pode substituir a unidade de interprevisão 110 mostrada na Figura 1 e/ou na unidade de interprevisão 210 mostrada na Figura 2.
[0075] Mais especificamente, é fornecido um aparelho 810 para determinar um primeiro vetor de movimento em uma primeira imagem de referência e um segundo vetor de movimento em uma segunda imagem de referência. O primeiro e o segundo vetores de movimento podem ser aplicados em interprevisão de um bloco de imagem em uma imagem atual.
[0076] O aparelho 810 compreende um refinador de vetor de movimento 500 que, como mostrado em detalhes na Figura 5, adicionalmente compreende uma unidade de refinamento de vetor de movimento 530 configurada para obter um MVO de estimativa de um primeiro vetor de movimento MVO” e determinar o primeiro vetor de movimento MVO0”' realizando-se uma busca em um espaço de busca especificado com base no MVO de estimativa. O aparelho adicionalmente compreende uma unidade de cálculo de vetor de movimento 550 configurada para obter um MV1 de estimativa de um segundo vetor de movimento MV1” e calcular o segundo vetor de movimento MV1” com base no MV1 de estimativa do segundo vetor de movimento MV1” e com base no primeiro vetor de movimento MVO”.
[0077] No exemplo, o aparelho compreende uma primeira ramificação que compreende a unidade de cálculo de vetor de movimento 530 e a unidade de cálculo de vetor de movimento 550 e uma segunda ramificação que compreende a unidade de cálculo de vetor de movimento 540 e a unidade de cálculo de vetor de movimento 560, e um comutador 520 para ativar uma das duas ramificações e desativar a outra. A segunda ramificação é semelhante à primeira ramificação e difere dela principalmente porque emite um primeiro vetor de movimento MV1"” e um segundo vetor de movimento MVO”, processando-se MV1 como uma estimativa do primeiro vetor de movimento e MVO como uma estimativa do segundo vetor de movimento.
[0078] Mais especificamente, a unidade de refinamento de vetor de movimento 540 é configurada para obter uma MV1 de estimativa de um primeiro vetor de movimento MV1” e determinar o primeiro vetor de movimento MV1” realizando-se uma busca dentro de um espaço de busca especificado com base na estimativa MV1. O aparelho adicionalmente compreende uma unidade de cálculo de vetor de movimento 560 configurada para obter um MVO de estimativa de um segundo vetor de movimento MVO” e calcular o segundo vetor de movimento MVO0” com base na MVO de estimativa do segundo vetor de movimento MVO0” e com base no primeiro vetor de movimento MV1 ".
[0079] A Figura 5 mostra a aplicação da invenção à biprevisão em que existem dois vetores de movimento em duas respectivas imagens de referência determinadas, a saber, vetores de movimento MVO” e MV1". Consequentemente, também a seleção de imagem para refinamento por correspondência de modelo também é realizada simplesmente utilizando um de MVO e MV1 para correspondência de modelo e mantendo o outro MV1 ou MVO, respectivamente, para cálculo.
[0080] Este processo de refinamento de vetor de movimento de decodificador (DMVR) é realizado pelo aparelho 500. A unidade de refinamento de vetor de movimento 530 ou 540 (dependendo de qual das respectivas estimativas de vetor de movimento MVO e MV1 a busca de modelo deve ser realizada) recebe em uma entrada 505 a respectiva estimativa de vetor de movimento MVO ou MV1 a partir do estimador de vetor de movimento 820 e define uma região de busca 310 em torno do MVO ou MV1. O tamanho da região de busca nas Figuras 3 e 4 é 3 x 3 pixels inteiros, meio pixel interpolado para 7 x 7, portanto, 49 posições no total. Em geral, a forma e/ou tamanho da região de busca pode ser diferente e a presente invenção funciona independentemente do tamanho e forma da região de busca. A região de busca pode ter um tamanho predeterminado ou predefinido. Em outras palavras, a forma e o tamanho do espaço de busca podem ser fixados e especificados em um padrão. Alternativamente, uma das várias formas e tamanhos possíveis pode ser selecionada manualmente pelo usuário nas definições de codificador e/ou automaticamente com base no conteúdo do vídeo.
[0081] Alguns exemplos de tamanhos e formas de um espaço de busca são mostrados na Figura 6. O triângulo completo marca o pixel central do espaço de busca, enquanto os círculos completos marcam as posições restantes do espaço de busca. Note que o espaço de busca pode ser estendido adicionalmente por interpolação fracionária (meio pixel, quarto de pixel ou semelhantes). A presente divulgação geralmente não se limita a nenhum padrão de pixel específico.
[0082] Para cada uma das posições ou posições fracionárias na região de busca, é realizada a correspondência de modelo usando o modelo que se aproxima do bloco atual, fornecendo um valor de SAD para cada coordenada do espaço de busca. Note que aqui a resolução de pixel inteiro e a resolução de meio pixel descrevem a resolução do espaço de busca, isto é, o deslocamento das posições buscadas para o vetor de movimento não refinado que é inserido no processo. Como resultado, as coordenadas de busca não coincidem necessariamente com as coordenadas de pixel reais no plano de imagem. Em outras palavras, a resolução de pixel inteiro (amostra) do espaço de busca não significa necessariamente que as posições de espaço de busca estejam localizadas em pixels inteiros da imagem de referência. As posições inteiras do espaço de busca podem coincidir com os pixels fracionários da imagem de referência, especialmente se o vetor de movimento inicial MVO, MV1 apontou para um pixel fracionário na imagem de referência.
[0083] Uma comparação dos valores de SAD das posições na região de busca é realizada, determinando a posição com o valor de SAD mínimo. À posição com o valor de SAD mínimo é determinada como o vetor de movimento MVO”. Conforme mencionado na seção de Fundamentos, o SAD é apenas um exemplo e qualquer outra métrica como MSE, SSIM, coeficiente de correlação ou semelhantes pode ser usada em geral. O primeiro vetor de movimento determinado MVO”, juntamente com uma estimativa do segundo vetor de movimento MV1, são passados para a unidade de cálculo de vetor de movimento 550, onde a determinação (refinamento) do vetor de movimento MV1” é realizada por cálculo.
[0084] Como uma primeira abordagem exemplar, como já descrito acima com referência à Figura 4, a unidade de cálculo de vetor de movimento 550 é configurada para calcular o segundo vetor de movimento adicionando-se à estimativa do segundo vetor de movimento uma diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento ou uma função de uma diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento.
[0085] A adição da diferença pode ser calculada da seguinte forma: MV1"” = MV1 + (MVO - MVO0”) (equação 1)
[0086] Esta equação 1 (com adição de diferença negativa MVO" - MVO) funciona para o caso mostrado na Figura 4, quando as duas imagens de referência estão localizadas uma antes e a outra depois da imagem atual. Como pode ser visto na Figura 4, para extrapolar o movimento regular, a diferença entre o vetor de movimento atual e o primeiro vetor de movimento em uma imagem anterior é projetada para a imagem após a imagem atual com o sinal invertido.
[0087] Se os dois quadros de referência para MVO e MV1 estiverem localizados após ou antes da imagem atual, a diferença será adicionada diretamente sem alterar o sinal, resultando em: MV1"” = MV1 + (MVO” - MVO) (equação 2)
[0088] O local antes/depois mencionado acima deve estar em ordem de exibição. A ordem de exibição das imagens em um vídeo pode diferir da ordem de codificação/decodificação, ou seja, da ordem em que as imagens codificadas são incorporadas no fluxo de bits. A ordem de exibição das imagens pode ser dada por Contagem de Ordem de Imagem (POC). Em particular, a POC em H.265/HEVC é sinalizada no cabeçalho de fatia de cada fatia que é uma imagem ou sua porção.
[0089] A condição usada para determinar se as duas imagens de referência são ou não uma seguinte e uma que precede a imagem atual pode ser implementada usando o parâmetro POC da seguinte maneira: (POCI-POCO) * (POCi-POC1) < O (equação 3) em que POCi é uma ordem de exibição (número de sequência) da imagem atual, POCO é uma ordem de exibição da primeira imagem de referência, e POC1 é uma ordem de exibição da segunda imagem de referência. Se a condição na equação 3 for verdadeira, a primeira imagem de referência é anterior e a segunda imagem de referência segue a imagem atual ou vice-versa. Se, por outro lado, a condição da equação 3 não for verdadeira, as duas imagens de referência são anteriores ou as seguintes da imagem atual. No entanto, observe que a condição pode ser implementada de qualquer maneira que permita verificar se os sinais das duas expressões de diferença (POCi-POCO) e (POCi- POC1) são iguais. A equação 3 acima é apenas um exemplo de multiplicação “” para sua implementação relativamente simples.
[0090] A adição da função de uma diferença pode ser calculada da seguinte forma no caso de uma previsão bidirecional na qual uma das imagens de referência precede e a outra segue a imagem atual (a condição na equação 3 é verdadeira): MV1” = MV1 - f (MVO” - MVO) (equação 4)
[0091] Novamente, se as duas imagens de referência eram anteriores ou ambas seguiam a figura atual na ordem de exibição (a condição na equação 3 é falsa), o cálculo adicionaria a diferença sem reverter o sinal: MV1" = MV1 + f (MVO” - MVO) (equação 5)
[0092] Por exemplo, a função pode incluir escalonamento e/ou recorte.
[0093] Se a função é escalonamento, o cálculo de vetor de movimento pode ser o seguinte: MV1” = MV1 - k * (MVO0” - MVO) = MV1 + k * (MVO - MVO”) (equação 6) em que "“" significa multiplicação (escalonamento) e k é um parâmetro de escalonamento. Se k = 1, a equação 1 é obtida. Com um k fixo (predefinido), a equação 6 é aplicável aos casos em que uma das imagens de referência precede e a outra segue a imagem atual. Para o caso em que ambas as imagens de referência estão precedendo ou ambas estão seguindo a imagem atual, o sinal precisaria ser revertido: MV1" = MV1 + k* (MVO” - MVO) = MV1 - k * (MVO - MVO0”) (equação 7)
[0094] De acordo com uma modalidade, o valor do parâmetro de escalonamento depende de uma razão entre as respectivas distâncias da primeira imagem e da segunda imagem para a imagem atual. Assim, o valor de k não é predefinido nem fixo, mas pode variar dependendo das imagens de referência nas quais os vetores de movimento são definidos. Por exemplo, o fator de escalonamento k pode ser dado por: k = - (POCi-POC1)/(POCIi-POCO) (equação 8)
[0095] Note que a equação 8 acima já leva em consideração a alteração do sinal, pois o parâmetro de escalonamento muda sinal dependendo se as duas imagens de referência estão no mesmo lado (anterior ou seguinte) da imagem atual ou em lados diferentes da imagem atual na ordem de exibição.
[0096] Embora possa ser benéfico levar em consideração a distância entre a primeira e a segunda imagens de referência correspondentes à imagem atual, mesmo que essas distâncias sejam mutuamente diferentes, a configuração k = 1, como nas equações 1 e 2, ainda pode ser aplicada. É mais simples e a qualidade do vetor de movimento refinado ainda pode ser substancialmente mais alta do que a não aplicação do refinamento.
[0097] Após a operação de escalonamento, podem ser aplicadas operações de arredondamento ou recorte. Aqui, o arredondamento se refere a fornecer um número inteiro ou real com uma precisão predefinida mais próxima ao valor de entrada. O recorte se refere à remoção de dígitos com precisão maior que uma precisão predefinida a partir do valor de entrada. Isso pode ser particularmente benéfico em vista de uma aritmética de ponto fixo aplicada em sistemas de computação típicos.
[0098] Como o refinamento de vetor de movimento é realizado apenas em uma das duas imagens de referência, o espaço de busca para realizar a correspondência de modelo é reduzido em 50%.
[0099] Após o processamento descrito acima para o bloco atual na imagem atual, duas imagens de referência e seus respectivos vetores de movimento MVO0” e MV1” associados são fornecidos na saída 580. Esses vetores de movimento são usados para determinar o previsor para o bloco atual,
por exemplo, calculando a média de dois previsores respectivos obtidos por pegar respectivas porções das imagens de referência correspondentes em tamanho e forma ao bloco atual e apontadas pelos vetores de movimento MVO” e MV1". Isso é realizado por uma unidade de previsão 890.
[0100] Em palavras gerais, a unidade de previsão 890 determina o bloco de previsão combinando-se uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento MVO” e uma porção da segunda imagem de referência referida pelo segundo vetor de movimento MV1”.
[0101] O sinal de previsão combinado pode fornecer uma melhor adaptação ao sinal original do que a uniprevisão, resultando em menos informações residuais e possivelmente em uma compressão mais eficiente.
[0102] Como explicado no parágrafo anterior, os vetores de movimento de saída MVO” e MV1” do aparelho 500 podem resultar em informações residuais mais baixas. Portanto, usá-los pode melhorar o desempenho de previsão em comparação com os vetores de movimento iniciais MVO e MV1. Note que o aparelho 500 pode ser empregado várias vezes para melhorar adicionalmente o desempenho de previsão. Neste caso, a saída da primeira aplicação do aparelho 500 é considerada como a entrada da segunda aplicação e a igualdade entre os vetores de movimento (equações 1 a 8) se mantém após cada aplicação. Neste caso, uma vez que os vetores de movimento MVO” e MV1” fornecem uma melhor estimativa do bloco atual após a primeira aplicação do aparelho 500, o modelo usado na unidade de refinação de MV 530 é construído com base nas amostras apontadas por MVO” ou amostras apontadas por MV1” na segunda aplicação.
[0103] De acordo com uma modalidade exemplar, o aparelho 500 adicionalmente compreende uma unidade de seleção de imagem de referência 510 configurada para obter duas imagens de referência e selecionar qual delas deve ser a primeira imagem de referência e a segunda imagem de referência.
[0104] Em outras palavras, a unidade de seleção de imagem de referência 510 controla um bloco atual, qual de seus vetores de movimento deve ser refinado por correspondência de modelo e qual deve ser refinado por cálculo com base em um refinamento de outro vetor de movimento refinado. A seguir, vários exemplos são fornecidos sobre como o processo de seleção pode ser realizado pela unidade de seleção de imagem de referência 510.
[0105] A Figura 7 mostra um diagrama esquemático que ilustra um método 700 para determinar um primeiro vetor de movimento em uma primeira imagem de referência e um segundo vetor de movimento em uma segunda imagem de referência de acordo com uma modalidade. Por exemplo, um codificador ou decodificador 200 de vídeo digital 100, descritos acima, particularmente a unidade de interprevisão 110 ou 210, pode usar o processo 700 para obter o primeiro e segundo vetores de movimento a serem aplicados em interprevisão de um bloco de imagem em uma imagem atual. O método 700 compreende um passo 701 de obter uma estimativa do primeiro vetor de movimento, um passo 703 de determinar o primeiro vetor de movimento realizando-se uma busca dentro de um espaço de busca especificado com base na estimativa do primeiro vetor de movimento, um passo 705 de obter uma estimativa do segundo vetor de movimento e um passo 707 de calcular o segundo vetor de movimento com base na estimativa do segundo vetor de movimento e com base no primeiro vetor de movimento.
Exemplo 1
[0106] Em um primeiro exemplo, a unidade de seleção de imagem de referência 510 decide qual do vetor de movimento deve ser determinado por busca em um espaço de busca com base na lista de a partir de qual a imagem de referência pertencente ao respectivo vetor de movimento foi referida. Em particular, para sinalizar as informações de previsor que foram usadas pelo decodificador para recuperar o mesmo previsor usado no codificador no fluxo de bits, alguns codecs sinalizam a imagem de referência ao incluir no fluxo de bits um Índice associado a uma lista de imagens de referência com uma imagem de referência particular. Por exemplo, a lista de imagens de referência (lista de imagens de referência) pode ser uma tabela disponível no codificador e decodificador e associar um Índice a uma posição relativa de uma respectiva imagem de referência em relação a uma imagem atual.
[0107] Pode haver mais de uma lista de imagens de referência. Por exemplo, a lista de imagens de referência LO e a imagem de referência L1, como normalmente usado em H.265/HEVC. Para sinalizar no fluxo de bits a imagem de referência, primeiro uma lista de imagens de referência é sinalizada seguido pelo índice dentro da lista de imagens de referência sinalizada.
[0108] A unidade de seleção de imagem de referência 510 é então vantajosamente configurada para selecionar ou a primeira imagem de referência ou a segunda imagem de referência com base em se for referida ou não no fluxo de bits por um índice em uma lista predefinida de imagens de referência. Nesse contexto, o termo "predefinido" significa definido de forma fixa, por exemplo, em um padrão ou definido para todo o vídeo em uma sinalização. Por exemplo, a lista predefinida pode ser a lista LO. Então, se a primeira imagem de referência foi referida na lista de imagens de referência LO, enquanto a segunda lista foi referida na lista de imagens de referência L1, o primeiro vetor de movimento apontando para a primeira imagem de referência será refinado pela correspondência de modelo, uma vez que foi referido a partir de LO, enquanto o segundo vetor de movimento será calculado, pois não foi referido em LO. No entanto, observe que a lista predefinida não se limita à lista LO. Qualquer uma das listas de imagens de referência usadas pode ser predefinida. Normalmente, LO listaria imagens de referência em uma vizinhança mais próxima que L1. Alternativamente, LO pode incluir mais imagens de referência que precedem a imagem atual na ordem de exibição, enquanto L1 pode incluir mais imagens que seguem a imagem atual na ordem de exibição. No entanto, a presente invenção funciona independentemente de qual diferença específica existe entre as duas ou mais listas de imagens de referência.
[0109] Note que pode ocorrer uma situação em que tanto a primeira imagem de referência e a segunda imagem de referência apontadas pelos respectivos primeiro e segundo vetores de movimento são referidas a partir da mesma lista de imagens de referência. Por exemplo, tanto a primeira imagem de referência quanto a segunda imagem de referência podem ser referidas a partir da imagem na lista predefinida LO. Alternativamente, se um bloco de codificação atual aplicar biprevisão, uma imagem de referência a partir da lista LO e uma imagem de referência a partir da lista L1 devem ser indicadas, onde as duas imagens de referência podem ser incluídas juntas em uma (ou ambas) das listas de referência. O motivo é que uma imagem de referência pode estar presente nas duas listas (lista LO e lista L1).
[0110] Se a primeira imagem de referência e a segunda imagem de referência estiverem ambas incluídas na lista predefinida (como LO), a imagem com a posição mais alta na lista (LO) será selecionada como a imagem de referência usada para o refinamento de vetor de movimento pela correspondência de modelo do vetor de movimento correspondente apontado para ela.
[0111] A mesma seleção pode ser realizada se as duas imagens de referência forem incluídas em uma lista de imagens de referência que não seja predefinida (como L1, se LO for predefinida). Em outras palavras, se as imagens de referência forem referidas a partir de uma lista de imagens de referência que não seja a lista predefinida de imagens de referência, a imagem de referência com a posição mais alta na lista será selecionada para o refinamento de vetor de movimento baseado em correspondência de modelo.
[0112] Em resumo, a unidade de seleção de imagem de referência 510 é configurada para, se as duas imagens de referência forem referidas no fluxo de bits por um índice na mesma lista predefinida de imagens de referência, selecionar a primeira imagem de referência como a imagem com a posição mais alta na dits lista de imagens de referência.
[0113] Este exemplo fornece uma implementação simples sem nenhum processo de seleção inteligente adicional. Em particular, a unidade de seleção de imagem de referência 510 controla um comutador 520 e 570 para selecionar a ramificação superior ou inferior no diagrama de blocos da Figura 5 quando a lista de imagens de referência analisada é a lista predefinida (como LO) e, se ambas as imagens estão na mesma lista, também com base no valor do índice da imagem de referência.
Exemplo 2
[0114] De acordo com um segundo exemplo, a unidade de seleção de imagem de referência 510 é configurada para selecionar como a primeira imagem de referência (que deve ser refinada pela correspondência de modelo) uma imagem que tem a menor camada temporal entre as duas (ou mais) imagens de referência para o bloco atual. Em outras palavras, a unidade de seleção de imagem de referência 510 controla os comutadores 520 e 580 para selecionar a ramificação superior (530, 550) ou a ramificação inferior (540, 560) de acordo com a camada temporal das imagens de referência nas quais os vetores de movimento MVO e MV1 estão relacionados.
[0115] Note que na Figura 5, as ramificações superior e inferior não precisam necessariamente ser implementadas de maneira dupla. Em geral, em qualquer uma das modalidades e exemplos da presente divulgação, uma unidade de refinamento de vetor de movimento única 530 e uma unidade de cálculo de vetor de movimento única 550 são fornecidas e apenas a entrada para a ramificação única é comutada de acordo com o controle da unidade de seleção de imagem de referência 210.
[0116] Em particular, as camadas temporais das duas (ou mais) imagens de referência são determinadas. A camada temporal de uma imagem de referência indica o número de imagens que precisam ser decodificadas antes que a imagem de referência possa ser decodificada. A camada temporal é geralmente definida no decodificador que codifica a imagem de movimento de filme em diferentes camadas temporais. Pode ser incluída no fluxo de bits. Assim, o decodificador pode, com base nas informações de sinalização do fluxo de bits, determinar quais imagens de referência pertencem a qual camada temporal. Por conseguinte, a primeira imagem de referência ou a segunda imagem de referência com a camada temporal mais baixa é selecionada como a imagem de referência usada para o refinamento de vetor de movimento por correspondência de modelo. Essa abordagem pode fornecer a vantagem de selecionar o modelo correspondente à imagem de referência, que depende de imagens menos decodificadas anteriormente e, portanto, com menor probabilidade de erros e artefatos. Consequentemente, o procedimento de refinamento de vetor de movimento se torna mais resiliente.
Exemplo 3
[0117] Em um terceiro exemplo, a unidade de seleção de imagem de referência 510 é configurada para selecionar como a primeira imagem de referência (a ser refinada pela correspondência de modelo) a imagem que tem o menor valor de quantização de base. Em outras palavras, a unidade de seleção de imagem de referência 510 controla os comutadores 520 e 580 para selecionar a ramificação superior (530, 550) ou a ramificação inferior (540, 560) de acordo com o parâmetro de quantização das imagens de referência para as quais os vetores de movimento MVO e MV1 estão relacionados.
[0118] Valor de quantização ou parâmetro de quantização neste contexto são informações fornecidas no fluxo de bits que permitem determinar o passo de quantização. Nos codecs conhecidos como H.264/AVC e H.265/HEVC, o parâmetro de quantização permite determinar o valor pelo qual os coeficientes a serem quantificados devem ser divididos. Quanto maior o valor da quantização,
mais grosseira é a quantização, que normalmente leva a uma pior qualidade de imagem após a reconstrução. Assim, um valor mais baixo de quantização significa que uma maior qualidade da imagem reconstruída pode ser fornecida. A seleção de imagem de referência com um parâmetro de quantização mais baixo significa que uma imagem de referência com melhor qualidade é usada para o refinamento de vetor de movimento, o que também leva a melhores resultados de refinamento.
[0119] O termo valor de quantização de "base" se refere a um valor de quantização comum a uma fatia de imagem e usado como base para todos os blocos. Normalmente, esse valor é sinalizado, por exemplo, no cabeçalho de fatia. Então, tipicamente, uma diferença a partir do valor base é sinalizada em uma base de bloco ou unidade de processamento.
[0120] No entanto, a presente invenção não se limita a qualquer sinalização particular ou mesmo a existência de tal valor. O mesmo efeito pode ser alcançado determinando o valor de quantização de base para uma imagem de acordo com os valores de quantização dos elementos na imagem, para os quais o valor de quantização é sinalizado. Em outras palavras, o termo valor de quantização de base denota um valor geral de quantização para uma imagem.
Exemplo 4
[0121] De acordo com um quarto exemplo, a unidade de seleção de imagem de referência 510 é configurada para selecionar como a primeira imagem de referência a imagem que tem a menor distância para a imagem atual. Em outras palavras, a unidade de seleção de imagem de referência 510 controla os comutadores 520 e 580 para selecionar a ramificação superior (530, 550) ou a ramificação inferior (540, 560) de acordo com a distância das imagens de referência relacionadas aos respectivos vetores de movimento MVO e MV1 para a imagem atual.
[0122] Por exemplo, são determinadas as diferenças entre os valores de contagem de ordem de imagem (POC) POCO e POC1 das imagens de referência respectivas relacionadas aos respectivos vetores de movimento MVO e MV1 e o valor de POC POCIi da imagem atual. O valor de POC especifica a ordem de exibição das imagens em vez de codificação/decodificação. Portanto, uma imagem com POC = 2 é exibida antes de uma imagem com POC = 8. No entanto, note que, como a invenção não se limita à aplicação em codecs conhecidos como H.264/AVC e H.265/HEVC, a diferença entre a imagem de referência e a imagem atual pode ser determinada de qualquer outra maneira, não dependendo do parâmetro POC específico.
[0123] A primeira imagem de referência relacionada ao vetor de movimento MVO ou a segunda imagem de referência relacionada ao vetor de movimento MV1 que possui a menor diferença absoluta de POC (entre a imagem de referência e a imagem atual) é selecionada como a imagem de referência a ser usada para o refinamento de vetor de movimento, uma vez que se espera que os vetores de movimento das imagens de referência mais próximas sejam mais precisos e/ou o bloco de referência apontado pelos vetores de movimento seja mais semelhante ao bloco atual. Isso pode levar a uma melhor qualidade do refinamento.
Exemplo 5
[0124] De acordo com um quinto exemplo, a unidade de seleção de imagem de referência é configurada para selecionar a primeira imagem de referência e a segunda imagem de referência de modo que a magnitude da estimativa do primeiro vetor seja inferior à magnitude da estimativa do segundo vetor de movimento. Em outras palavras, a unidade de seleção de imagem de referência 510 controla os comutadores 520 e 580 para selecionar a ramificação superior (530, 550) ou a ramificação inferior (540, 560) de acordo com o comprimento (magnitude) dos vetores de movimento MVO e MV1 relacionados às respectivas imagens de referência.
[0125] As magnitudes absolutas dos vetores de movimento MVO e MV1 apontando para a primeira imagem de referência e a segunda imagem de referência são determinadas usando procedimentos padrão para a determinação de um valor absoluto de um vetor. Por exemplo, os valores ao quadrado de cada componente vetorial de um vetor de movimento são somados. Ou essa soma ou sua raiz quadrada pode ser usada como a magnitude do vetor de movimento, mas o cálculo de uma raiz quadrada tem custos computacionais mais altos. Tomar o vetor de movimento com menor magnitude para o refinamento oferece a vantagem de uma maior probabilidade ser determinada corretamente, assumindo que o movimento entre as imagens seja tipicamente pequeno.
[0126] Algumas informações sobre uma estimativa do primeiro vetor de movimento MVO, uma estimativa do segundo vetor de movimento MV1 e
Índices das imagens de referência às quais MVO e MV1 se referem podem ser recebidas no decodificador como entrada. As informações de vetor de movimento são normalmente sinalizadas em uma base de bloco, os blocos podem ter tamanhos diferentes. O mesmo vale para a indicação da imagem de referência. Um analisador de fluxo de bits implementado como parte da unidade de decodificação de entropia 203 obtém as informações do vetor de movimento a partir do fluxo de bits. As informações de movimento podem ser diretamente as coordenadas de vetor de movimento (coordenadas em relação ao ponto (0, O) fornecido pela localização de um bloco na imagem de referência, igual à localização do bloco atual na imagem atual). Alternativamente, uma diferença para um vetor de movimento de um bloco que precede o bloco atual na ordem de decodificação pode ser sinalizada. Isso pode ser vantajosamente um dos vizinhos espaciais ou temporais do bloco atual.
[0127] De acordo com outro exemplo, um aparelho para determinação de vetor de movimento que também inclui o refinador de vetor de movimento 500, adicionalmente inclui uma unidade de estimativa de vetor de movimento 820 configurada para determinar a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento, pela seleção deles a partir de um conjunto de candidatos de vetor de movimento com base em similaridade de um modelo com uma porção da respectiva imagem referida pelo candidato de vetor de movimento. Em outras palavras, a determinação de vetor de movimento (de MVO e MV1) não é necessariamente baseada na correspondência de modelo em um espaço de busca definido na imagem de referência. O espaço de busca pode ser fornecido por uma lista (mesclagem) que lista índices em associação com os respectivos vetores de movimento dos blocos adjacentes espacial ou temporalmente ou blocos na proximidade do bloco atual. Isto quer dizer que a presente invenção não é limitada pela maneira pela qual as estimativas de vetor de movimento MVO e MV1 são derivadas antes de serem fornecidas para refinamento.
[0128] Em resumo, a operação de biprevisão de um bloco de codificação, os dois blocos de previsão, a partir dos vetores de movimento (MV) da lista LO e MV da lista L1, respectivamente, são combinados a um único sinal de previsão, o que pode fornecer uma melhor adaptação para o sinal original do que uniprevisão, resultando em menos informações residuais e possivelmente em uma compressão mais eficiente. O processamento de decodificação de biprevisão para o bloco atual na imagem atual contém os seguintes passos de processamento.
[0129] Primeiro, uma estimativa do primeiro vetor de movimento MVO e uma estimativa do segundo vetor de movimento MV1 são recebidas como entrada no lado de decodificador. Duas imagens de referência, para as quais o MVO e o MV1 apontam, estão no armazenamento temporário de imagem do decodificador, pois já foram decodificadas antes do processamento da imagem atual. Uma dessas imagens de referência é selecionada para refinamento de vetor de movimento por correspondência de modelo, para ilustrar a imagem de referência à qual o MVO aponta. Para realizar o refinamento de vetor de movimento, uma região de busca na imagem de referência para a qual MVO aponta é definida em torno do ponto candidato para o qual o MVO selecionado aponta. As posições de espaço de busca candidatas na região de busca são analisadas realizando-se a correspondência de modelo com o espaço de bloco atual e determinando uma medida de similaridade. A posição de espaço de busca candidata com o menor valor de dissimilaridade é determinada como o vetor de movimento MVO0”. O vetor de movimento MV1” é calculado com base no MV1 e uma função de MVO” - MVO em vez de realizar uma segunda correspondência de modelo.
[0130] De acordo com uma modalidade da invenção, a comparação de similaridade é realizada comparando as amostras apontadas por MVO0” e as amostras apontadas por MV1”. De acordo com a figura 4, qualquer ponto apontado por MVO” no espaço de busca 310 tem um vetor de movimento de contrapartida MV1” dado por uma ou mais das equações 1 a 8. Para comparar a similaridade entre os blocos de amostra no processo de correspondência de modelo o bloco de amostra apontado por MVO” e o bloco de amostra apontado por MV1” podem ser usados em uma função como uma função de SAD. Nesse caso, o modelo consiste apenas em amostras que pertencem à imagem de referência referida pelo MV1, e a operação de refinamento de vetor de movimento é realizada no MVO. Além disso, o modelo é ligeiramente alterado para cada ponto no espaço de busca 310.
[0131] Mais especificamente, de acordo com a modalidade, os seguintes passos são aplicados:
[0132] Passo 1: A similaridade entre as amostras apontadas pelo vetor de movimento de entrada MVO e as amostras apontadas pelo vetor de movimento de entrada MV1 é calculada. O vetor de movimento de entrada MVO aponta para o ponto 330 no espaço de busca.
[0133] Passo 2: Um segundo ponto no espaço de busca 310 é selecionado, que é diferente do ponto 330. O segundo ponto é indicado por MVO”.
[0134] Passo 3: o vetor de movimento MV1” é calculado usando uma ou mais das equações 1 a 8, com base em MVO0”, MVO e MV1.
[0135] Passo 4: A similaridade entre as amostras apontadas pelo vetor de movimento de entrada MVO” e as amostras apontadas pelo vetor de movimento de entrada MV1” é calculada. Se a similaridade for maior que o valor calculado no Passo 1, o par MVO0” e MV1” será selecionado como os vetores de movimento refinados. Caso contrário, o par MVO e MV1 (ou seja, o par do vetor de movimento inicial) é selecionado como vetores de movimento refinados.
[0136] Os passos 2, 3 e 4 podem ser repetidos para avaliar mais pontos candidatos no espaço de busca 310. Se nenhum ponto de busca for deixado no espaço de busca, os vetores de movimento refinados serão exibidos como os vetores de movimento refinados finais.
[0137] No passo 4, é claro que se a métrica de similaridade (como SAD, SSIM etc.) puder resultar na maior similaridade no ponto inicial 330, que é apontado pelo vetor de movimento inicial MVO, cuja contrapartida é o vetor de movimento inicial MV1, de acordo com uma ou mais das equações 1 a 8. Se esse for o caso, os vetores de movimento refinados resultam na saída do processo de refinamento de vetor de movimento como MVO e MV1.
[0138] Qualquer par de vetores de movimento MVO0” e MV1”, que é a saída do aparelho 500, deve obedecer às regras descritas em uma ou mais das equações 1-8. Os detalhes específicos da construção do modelo e a métrica de similaridade usada na operação de correspondência de modelo podem mudar sem afetar a invenção e seu benefício, que é a redução dos pontos de busca a serem verificados pelo pareamento de dois vetores de movimento.
[0139] De acordo com uma modalidade da presente invenção, além do processamento de biprevisão realizado na unidade de interprevisão como descrito acima, os outros passos de processamento para codificação e decodificação seguem o padrão H.265/HEVC.
[0140] Contudo, em geral, a presente invenção é aplicável a qualquer decodificador de vídeo para decodificar uma pluralidade de imagens a partir de um fluxo de bits. Esse decodificador pode então compreender uma unidade de interprevisão incluindo o aparelho de acordo com qualquer uma das reivindicações 1 a 11 e uma unidade de previsão para determinar um bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento. O decodificador pode compreender adicionalmente um analisador de fluxo de bits. O analisador de fluxo de bits pode ser implementado, por exemplo, como parte da unidade de decodificação de entropia 203 e configurado para obter a partir do fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento. O decodificador de vídeo pode compreender adicionalmente uma unidade de reconstrução 211 configurada para reconstruir o bloco atual de acordo com o bloco de previsão.
[0141] Por outro lado, um codificador de vídeo para codificar uma pluralidade de imagens em um fluxo de bits pode compreender uma unidade de interprevisão incluindo o aparelho de acordo com qualquer uma das reivindicações 1 a 12 e uma unidade de previsão para determinar o bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento, um formador de fluxo de bits que é implementado como parte da unidade de codificação de entropia 103 e configurado para incluir no fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento, e uma unidade de reconstrução 111 configurada para reconstruir o bloco atual de acordo com o bloco de previsão e armazenar o bloco reconstruído em uma memória.
[0142] O processamento de decodificação interprevisão descrito acima não se limita ao uso de duas imagens de referência. Alternativamente, mais de duas imagens de referência e os vetores de movimento associados podem ser considerados. Nesse caso, a unidade de seleção de imagem de referência seleciona mais de duas imagens de referência das quais uma imagem de referência é usada para o refinamento de vetor de movimento. A seleção de imagem de referência que é usada para o refinamento de vetor de movimento está usando uma das abordagens descritas nos exemplos 1 a 5 discutidos acima. Os demais vetores de movimento são ajustados usando a estimativa do respectivo vetor de movimento e o vetor de movimento resultante do refinamento de vetor de movimento. Por outras palavras, a presente invenção, como descrita acima, também pode funcionar, se for realizada uma previsão com várias referências. Por exemplo, se houver três imagens de referência e três vetores de movimento respectivos, um dos três vetores de movimento pode ser determinado por refinamento por correspondência de modelo e outros dois calculados. Isso fornece redução de complexidade. Alternativamente, dois dos vetores de movimento são determinados por refinamento por correspondência de modelo e um é calculado com base em um ou nos dois vetores de movimento refinados. Como é claro para os especialistas na técnica, a presente invenção é extensível a qualquer número de imagens de referência e aos vetores de movimento correspondentes usados para construir previsores para o bloco atual.
[0143] A invenção tem o efeito de tornar possível realizar biprevisão em um decodificador com carga de processamento e requisitos de memória reduzidos. Pode ser aplicada em qualquer decodificador, pode ser incluída em um dispositivo de codificação e/ou em um dispositivo de decodificação, ou seja, no lado de codificador ou no lado de decodificador.
[0144] O refinamento de vetor de movimento, como descrito acima, pode ser implementado como parte da codificação e/ou decodificação de um sinal de vídeo (imagem em movimento). No entanto, o refinamento de vetor de movimento também pode ser usado para outros fins no processamento de imagens, como detecção de movimento, análise de movimento ou semelhantes.
[0145] O refinamento de vetor de movimento pode ser implementado como um aparelho. Esse aparelho pode ser uma combinação de software e hardware. Por exemplo, o refinamento de vetor de movimento pode ser realizado por um chip, como um processador de propósito geral, ou um processador de sinal digital (DSP), ou uma matriz de portas de campo programável (FPGA), ou semelhantes. No entanto, a presente invenção não se limita à implementação em um hardware programável. Pode ser implementada em um circuito integrado de aplicação específica (ASIC) ou por uma combinação dos componentes de hardware mencionados acima.
[0146] O refinamento de vetor de movimento também pode ser implementado por instruções de programa armazenadas em uma mídia legível por computador. O programa, quando executado, faz com que o computador execute os passos de obter estimativas dos vetores de movimento, determinar a primeira imagem de referência e a segunda imagem de referência com base nas estimativas, realizar o refinamento de vetor de movimento do primeiro vetor de movimento, calcular o segundo vetor de movimento com base nas estimativas dos vetores de movimento e o primeiro vetor de movimento após o refinamento. A mídia legível por computador pode ser qualquer mídia no qual o programa esteja armazenado, como um DVD, CD, unidade USB (flash), disco rígido, armazenamento de servidor disponível via rede, etc.
[0147] O codificador e/ou decodificador podem ser implementados em vários dispositivos, incluindo um aparelho de TV, decodificador, PC, tablet, telefone inteligente ou semelhantes. Pode ser um aplicativo de software que implementa os passos de método.

Claims (15)

REIVINDICAÇÕES
1. Aparelho, CARACTERIZADO pelo fato de que determina um primeiro vetor de movimento (MVO0”) em uma primeira imagem de referência de um vídeo e um segundo vetor de movimento (MV1”) em uma segunda imagem de referência do vídeo, o primeiro e segundo vetores de movimento a serem aplicados em interprevisão de um bloco de imagem do vídeo em uma imagem atual, o aparelho compreendendo: uma unidade de refinamento de vetor de movimento (530) configurada para obter uma estimativa (MVO) do primeiro vetor de movimento e determinar o primeiro vetor de movimento realizando-se uma busca dentro de um espaço de busca (310) especificado com base na estimativa do primeiro vetor de movimento, e uma unidade de cálculo de vetor de movimento (550) configurada para obter uma estimativa (MV1) do segundo vetor de movimento e calcular o segundo vetor de movimento com base na estimativa do segundo vetor de movimento e com base no primeiro vetor de movimento.
2. Aparelho, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a unidade de cálculo de vetor de movimento (550, 560) é configurada para calcular o segundo vetor de movimento adicionando-se à estimativa do segundo vetor de movimento uma diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento ou uma função da diferença entre o primeiro vetor de movimento e a estimativa do primeiro vetor de movimento.
3. Aparelho, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a função inclui escalonar por um fator de escalonamento e/ou recorte.
4. Aparelho, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que o valor do fator de escalonamento depende de uma razão entre as respectivas distâncias da primeira imagem de referência e da segunda imagem de referência para a imagem atual.
5. Aparelho, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que compreende adicionalmente uma unidade de seleção de imagem de referência (510) configurada para obter duas imagens de referência e selecionar a primeira imagem de referência dentre as duas imagens de referência e selecionar a segunda imagem de referência dentre as duas imagens de referência.
6. Aparelho, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para selecionar ou a primeira imagem ou a segunda imagem com base em se a respectiva primeira ou segunda imagem for referida em um fluxo de bits incluindo também o bloco de imagem codificado do vídeo por um índice relacionado a uma lista predefinida de imagens de referência dentre pelo menos duas listas de imagens de referência, em que uma lista de imagens de referência associa um índice à posição de uma imagem de referência em relação à imagem atual.
7. Aparelho, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para, se as duas imagens de referência forem referidas no fluxo de bits por um Índice na mesma lista predefinida de imagens de referência, selecionar como a primeira imagem de referência a imagem com a posição mais alta na dita lista de imagens de referência.
8. Aparelho, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para selecionar como a primeira imagem de referência a imagem que tem a menor camada temporal dentre as duas imagens.
9. Aparelho, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para selecionar, como a primeira imagem de referência, a imagem que tem o menor valor de quantização de base.
10. Aparelho, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para selecionar como a primeira imagem de referência a imagem que tem a menor distância para a imagem atual.
11. Aparelho, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que a unidade de seleção de imagem de referência (510) é configurada para selecionar a primeira imagem de referência e a segunda imagem de referência de modo que a estimativa do primeiro vetor de movimento seja inferior em magnitude à estimativa do segundo vetor de movimento.
12. Aparelho, de acordo com qualquer uma das reivindicações 1 a 11, CARACTERIZADO pelo fato de que compreende adicionalmente: um estimador de vetor de movimento (820) configurado para determinar a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento pela seleção deles a partir de um conjunto de candidatos de vetor de movimento com base em similaridade de um modelo com uma porção da imagem referida pelo candidato de vetor de movimento respectivo.
13. Decodificador de vídeo (200), CARACTERIZADO pelo fato de que decodifica uma pluralidade de imagens de um fluxo de bits, compreendendo: uma unidade de interprevisão (210) incluindo o aparelho conforme definido em qualquer uma das reivindicações 1 a 12 e uma unidade de previsão configurada para determinar um bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento, um analisador de fluxo de bits (203) configurado para obter a partir do fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento, e uma unidade de reconstrução (211) configurada para reconstruir o bloco atual de acordo com o bloco de previsão.
14. Codificador de vídeo (100), CARACTERIZADO pelo fato de que codifica uma pluralidade de imagens em um fluxo de bits, compreendendo: uma unidade de interprevisão (110) incluindo o aparelho conforme definido em qualquer uma das reivindicações 1 a 12 e uma unidade de previsão configurada para determinar um bloco de previsão de acordo com uma porção da primeira imagem de referência referida pelo primeiro vetor de movimento e com uma porção da segunda imagem de referência referida pelo segundo vetor de movimento, um formador de fluxo de bits (103) configurado para incluir no fluxo de bits a estimativa do primeiro vetor de movimento e a estimativa do segundo vetor de movimento, uma unidade de reconstrução (111) configurada para reconstruir o bloco atual de acordo com o bloco de previsão e armazenar o bloco reconstruído em uma memória.
15. Método (700), CARACTERIZADO pelo fato de que determina um primeiro vetor de movimento (MVO0”) em uma primeira imagem de referência de um vídeo e um segundo vetor de movimento (MV1”) em uma segunda imagem de referência do vídeo, o primeiro e segundo vetores de movimento a serem aplicados em interprevisão de um bloco de imagem em uma imagem atual do vídeo, o método compreendendo: obter (701) uma estimativa (MVO) do primeiro vetor de movimento, determinar (703) o primeiro vetor de movimento realizando-se uma busca dentro de um espaço de busca (310) especificado com base na estimativa do primeiro vetor de movimento, obter (705) uma estimativa (MV1) do segundo vetor de movimento, e calcular (707) o segundo vetor de movimento (MV1”) com base na estimativa (MV1) do segundo vetor de movimento e com base no primeiro vetor de movimento (MVO0”).
BR112019027261-5A 2017-06-30 2018-03-29 refinamento de vetor de movimento para previsão de multirreferências BR112019027261A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EPPCT/EP2017/066342 2017-06-30
PCT/EP2017/066342 WO2019001741A1 (en) 2017-06-30 2017-06-30 MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
PCT/EP2018/058203 WO2019001786A1 (en) 2017-06-30 2018-03-29 MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION

Publications (1)

Publication Number Publication Date
BR112019027261A2 true BR112019027261A2 (pt) 2020-07-14

Family

ID=59258246

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019027261-5A BR112019027261A2 (pt) 2017-06-30 2018-03-29 refinamento de vetor de movimento para previsão de multirreferências

Country Status (19)

Country Link
US (4) US11463726B2 (pt)
EP (3) EP3635956A1 (pt)
JP (3) JP6977068B2 (pt)
KR (4) KR102344430B1 (pt)
CN (3) CN110809887B (pt)
AU (1) AU2018294206B2 (pt)
BR (1) BR112019027261A2 (pt)
CA (1) CA3068332C (pt)
CL (1) CL2019003880A1 (pt)
ES (1) ES2963978T3 (pt)
FI (1) FI3632104T3 (pt)
HU (1) HUE064054T2 (pt)
IL (1) IL271762B2 (pt)
MX (1) MX2019015871A (pt)
PL (1) PL3632104T3 (pt)
PT (1) PT3632104T (pt)
SG (1) SG11201911978TA (pt)
UA (1) UA126919C2 (pt)
WO (3) WO2019001741A1 (pt)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019001741A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
CN117615153A (zh) * 2017-08-29 2024-02-27 株式会社Kt 视频解码和编码方法及用于存储压缩视频数据的装置
CN117336504A (zh) * 2017-12-31 2024-01-02 华为技术有限公司 图像预测方法、装置以及编解码器
WO2019191717A1 (en) 2018-03-30 2019-10-03 Hulu, LLC Template refined bi-prediction for video coding
WO2019234673A1 (en) * 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
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
US11095900B2 (en) * 2018-12-19 2021-08-17 Sony Group Corporation Point cloud coding structure
KR20210094664A (ko) 2019-01-02 2021-07-29 텔레폰악티에볼라겟엘엠에릭슨(펍) 비디오 인코딩/디코딩 시스템의 사이드 모션 정교화
CA3128112A1 (en) 2019-02-22 2020-08-27 Huawei Technologies Co., Ltd. Early termination for optical flow refinement
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
EP3912354A4 (en) * 2019-03-08 2022-03-16 Huawei Technologies Co., Ltd. SEARCH REGION FOR MOTION VECTOR REFINEMENT
CN117014634A (zh) * 2019-03-11 2023-11-07 阿里巴巴集团控股有限公司 用于对视频数据进行编码的帧间预测方法
CN112954329B (zh) * 2019-03-11 2022-08-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
EP3939310A4 (en) * 2019-03-11 2022-07-27 Telefonaktiebolaget LM Ericsson (publ) MOTION REFINING AND WEIGHTED PREDICTION
WO2020200269A1 (en) 2019-04-02 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation
US11736720B2 (en) 2019-09-03 2023-08-22 Tencent America LLC Motion vector refinement methods for video encoding
EP4118835A4 (en) * 2020-03-31 2023-05-10 Beijing Dajia Internet Information Technology Co., Ltd. HIGH LEVEL SYNTAX METHODS AND DEVICES IN VIDEO CODING
WO2021203039A1 (en) * 2020-04-03 2021-10-07 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for high-level syntax in video coding
US20220295090A1 (en) * 2021-03-12 2022-09-15 Lemon Inc. Motion candidate derivation
US11936899B2 (en) 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
CN117337567A (zh) * 2021-04-21 2024-01-02 抖音视界有限公司 用于视频处理的方法、设备和介质
US11895302B2 (en) * 2021-06-29 2024-02-06 Qualcomm Incorporated Adaptive bilateral matching for decoder side motion vector refinement
CN114161197B (zh) * 2021-12-22 2023-09-15 中国科学技术大学 一种偏心工件自动校正方法、系统、设备及存储介质
WO2023136655A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024076220A1 (ko) * 2022-10-07 2024-04-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110022133A (ko) * 2009-08-27 2011-03-07 삼성전자주식회사 영상의 움직임 추정방법 및 영상처리장치
JP5248632B2 (ja) * 2010-01-14 2013-07-31 インテル コーポレイション 動き推定のための技術
US20120281759A1 (en) * 2010-03-31 2012-11-08 Lidong Xu Power efficient motion estimation techniques for video encoding
JP5786498B2 (ja) * 2011-06-30 2015-09-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム
EP3198872A1 (en) * 2014-09-26 2017-08-02 VID SCALE, Inc. Intra block copy coding with temporal block vector prediction
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
CA2995507C (en) * 2015-09-02 2021-05-25 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
KR102577599B1 (ko) * 2017-04-13 2023-09-12 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법
US20190007699A1 (en) * 2017-06-28 2019-01-03 Futurewei Technologies, Inc. Decoder Side Motion Vector Derivation in Video Coding
WO2019001741A1 (en) 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION

Also Published As

Publication number Publication date
CA3068332A1 (en) 2019-01-03
US11463726B2 (en) 2022-10-04
CN116248898A (zh) 2023-06-09
CL2019003880A1 (es) 2020-10-02
WO2019001785A1 (en) 2019-01-03
KR102450443B1 (ko) 2022-09-30
WO2019001741A1 (en) 2019-01-03
AU2018294206A1 (en) 2020-01-23
CN110809887B (zh) 2022-12-27
JP2023174703A (ja) 2023-12-08
MX2019015871A (es) 2020-08-06
KR20220136509A (ko) 2022-10-07
JP2022022228A (ja) 2022-02-03
JP6977068B2 (ja) 2021-12-08
EP3632104A1 (en) 2020-04-08
EP4319154A3 (en) 2024-02-28
FI3632104T3 (fi) 2023-11-09
US10856006B2 (en) 2020-12-01
KR102570488B1 (ko) 2023-08-23
IL271762B2 (en) 2023-11-01
ES2963978T3 (es) 2024-04-03
NZ780051A (en) 2023-09-29
KR20220000917A (ko) 2022-01-04
EP3632104B1 (en) 2023-10-04
SG11201911978TA (en) 2020-01-30
AU2018294206A8 (en) 2020-01-30
HUE064054T2 (hu) 2024-02-28
US20200137416A1 (en) 2020-04-30
AU2018294206B2 (en) 2022-12-01
WO2019001786A1 (en) 2019-01-03
CN110809887A (zh) 2020-02-18
KR20230125348A (ko) 2023-08-29
EP4319154A2 (en) 2024-02-07
IL271762B1 (en) 2023-07-01
KR102344430B1 (ko) 2021-12-27
US20220046274A1 (en) 2022-02-10
NZ760521A (en) 2021-09-24
PT3632104T (pt) 2023-12-07
CA3068332C (en) 2023-10-03
JP2020526109A (ja) 2020-08-27
US11683520B2 (en) 2023-06-20
EP3635956A1 (en) 2020-04-15
US20230353778A1 (en) 2023-11-02
UA126919C2 (uk) 2023-02-22
US20200137414A1 (en) 2020-04-30
KR20200015734A (ko) 2020-02-12
PL3632104T3 (pl) 2024-02-12
JP7358436B2 (ja) 2023-10-10
IL271762A (en) 2020-02-27
CN116233463A (zh) 2023-06-06

Similar Documents

Publication Publication Date Title
BR112019027261A2 (pt) refinamento de vetor de movimento para previsão de multirreferências
JP7171770B2 (ja) 動きベクトル精密化および動き補償のためのメモリアクセスウィンドウおよびパディング
KR102642784B1 (ko) 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
US20200236389A1 (en) Memory access window and padding for motion vector refinement
CN115052162A (zh) 用于解码端运动矢量修正的基于误差面的子像素精确修正方法
NZ780051B2 (en) Motion vector refinement for multi-reference prediction
NZ760521B2 (en) Motion vector refinement for multi-reference prediction

Legal Events

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