BR112020006969A2 - janela de acesso à memória limitada para refinamento de vetor de movimento - Google Patents

janela de acesso à memória limitada para refinamento de vetor de movimento Download PDF

Info

Publication number
BR112020006969A2
BR112020006969A2 BR112020006969-8A BR112020006969A BR112020006969A2 BR 112020006969 A2 BR112020006969 A2 BR 112020006969A2 BR 112020006969 A BR112020006969 A BR 112020006969A BR 112020006969 A2 BR112020006969 A2 BR 112020006969A2
Authority
BR
Brazil
Prior art keywords
motion vector
window
block
samples
search space
Prior art date
Application number
BR112020006969-8A
Other languages
English (en)
Inventor
Semih ESENLIK
Anand Meher KOTRA
Zhijie ZHAO
Han Gao
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 BR112020006969A2 publication Critical patent/BR112020006969A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/207Analysis of motion for motion estimation over a hierarchy of resolutions
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Computing Systems (AREA)
  • Image Analysis (AREA)

Abstract

A presente divulgação refere-se a refinamento de vetor de movimento. Como uma primeira etapa, um vetor de movimento inicial e um modelo para o bloco de predições são obtidos. Então, o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo em um espaço de busca. O espaço de busca é localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionárias, em que cada uma dentre as posições de amostras fracionárias que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.

Description

“JANELA DE ACESSO À MEMÓRIA LIMITADA PARA REFINAMENTO DE VETOR DE MOVIMENTO”
[0001] A presente invenção refere-se a determinação e refinamento de vetor de movimento que podem ser empregados durante codificação e decodificação de vídeos.
FUNDAMENTOS
[0002] Codecs de vídeo híbridos atuais empregam codificação preditiva. Uma imagem de uma sequência de vídeo é subdividida em blocos de píxeis e estes blocos são então codificados. Ao invés de codificar um bloco píxel por píxel, o bloco todo é previsto usando píxeis já codificados na proximidade espacial ou temporal do bloco. O codificador adicionalmente processa apenas as diferenças entre o bloco e sua predição. O processamento adicional tipicamente inclui uma transformação dos píxeis 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 compactado por codificação por entropia para formar um fluxo de bits. O fluxo de bits adicionalmente inclui quaisquer informações de sinalização que habilitam o decodificador a decodificar o vídeo codificado. Por exemplo, a sinalização pode incluir configurações referentes às configurações de codificador tal como tamanho da imagem de entrada, taxa de quadro, indicação de etapa de quantização, predição aplicada aos blocos das imagens, ou semelhantes.
[0003] Predição temporal explora correlação temporal entre imagens, também referidas como quadros, de um vídeo. A predição temporal é também chamada interpredição, como é uma predição usando as dependências entre (inter) quadros de vídeo diferentes. Consequentemente, um bloco sendo codificado, também referido como um bloco atual, é previsto a partir de uma ou mais imagemí(ns) codificadas anteriormente referidas como imagem(ns) de referência. Uma imagem de referência não é necessariamente uma imagem precedente a imagem atual em que 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 predição do bloco atual, um bloco colocalizado em uma imagem de referência pode ser determinado. O bloco colocalizado é um bloco que está localizado na imagem de referência na mesma posição que está o bloco atual na imagem atual. Tal predição é precisa para regiões de imagem sem movimento, p.ex. regiões de imagem sem movimento de uma imagem a outra.
[0004] De modo a obter um preditor que leva em conta o movimento, p.ex. um preditor compensado em movimento, estimação de movimento é tipicamente empregada ao determinar a predição do bloco atual. Consequentemente, o bloco atual é predito por um bloco na imagem de referência, que está localizado em uma dada distância por um vetor de movimento a partir da posição do bloco colocalizado. De modo a habilitar um decodificador a determinar a mesma predição do bloco atual, o vetor de movimento pode ser sinalizado no fluxo de bits. De modo a adicionalmente reduzir a sobrecarga de sinalização causada pela sinalização do vetor de movimento para cada dos blocos, o vetor de movimento mesmo pode ser estimado. A estimação de vetor de movimento pode ser realizada com base nos vetores de movimento dos blocos vizinhos em domínio espacial e/ou temporal.
[0005] A predição do bloco atual pode ser computada usando uma imagem de referência ou por predições de ponderação obtidas de duas ou mais imagens de referência. A imagem de referência pode ser uma imagem adjacente, p.ex. uma imagem imediatamente precedente e/ou a imagem imediatamente seguinte à imagem atual na ordem de exibição uma vez que as imagens adjacentes são mais prováveis a serem semelhantes à imagem atual. Entretanto, em geral, a imagem de referência pode também ser qualquer outra imagem precedente ou seguinte à imagem atual na ordem de exibição e precedendo à imagem atual no fluxo de bits (ordem de decodificação). Isto pode fornecer vantagens por exemplo em caso de oclusões e/ou movimento não-linear no conteúdo de vídeo. A identificação de imagem de referência pode então ser também sinalizada no fluxo de bits.
[0006] Um modo especial da interpredição é uma chamada bipredição em que duas imagens de referência são usadas para gerar a predição do bloco atual. Em particular, duas predições determinadas nas duas respectivas imagens de referência são combinadas em um sinal de predição do bloco atual. À bipredição pode resultar em uma predição mais precisa do bloco atual que a unipredição, p.ex. predição usando apenas uma única imagem de referência. À predição mais precisa leva a menores diferenças entre os píxeis do bloco atual e a predição (referida também como “residuais”), que pode ser codificada mais eficientemente, p.ex. comprimida em um fluxo de bits mais curto. Em geral, mais que duas imagens de referência podem ser usadas para encontrar respectivos mais que dois blocos de referência para prever o bloco atual, p.ex. uma interpredição de multireferência pode ser aplicada. O termo predição de multireferência então inclui bipredição bem como predições usando mais que duas imagens de referência,
[0007] De modo a fornecer estimação de movimento mais precisa, a resolução da imagem de referência pode ser melhorada por amostras de interpolação entre píxeis. Interpolação de píxel fracionado pode ser realizada por média ponderada dos píxeis mais próximos. Em caso de resolução de meio- píxel, por exemplo uma interpolação bi linear é tipicamente usada. Outros píxeis fracionais são calculados como uma média dos píxeis mais próximos ponderados pelo inverso da distância entre os píxeis mais próximos respectivos ao píxel sendo predito.
[0008] A estimação de vetor de movimento é uma tarefa computacionalmente complexa em que uma similaridade é calculada entre o bloco atual e os blocos de predição correspondentes apontados pelos vetores de movimento candidatos na imagem de referência. Tipicamente, a região de busca inclui M x M amostras da imagem e cada da posição de amostra das MxM posições candidatas é testada. O teste inclui cálculo de uma medição de similaridade entre o bloco de referência N x N C e um bloco R, localizados na posição candidata testada da região de busca. Para simplicidade, a soma das diferenças absolutas (SAD) é uma medição frequentemente usada para este fim e dada por:
NH NI SAD(x,y) = DD &y)-C,|
[0009] Na fórmula acima, x e y definem a posição candidata dentro da região de busca, enquanto índices i e j denotam amostras dentro do bloco de referência C e bloco candidato R. A posição candidata é geralmente referida como deslocamento ou desvio, que reflete a representação de correspondência de bloco como desvio do bloco de referência dentro da região de busca e calcular uma similaridade entre o bloco de referência C e a porção sobreposta da região de busca. De modo a reduzir a complexidade, o número de vetores de movimento candidatos é usualmente reduzido limitandoOse os vetores de movimento candidatos a um certo espaço de busca. O espaço de busca pode ser, por exemplo, definido por um número e/ou posições de píxeis circundando a posição na imagem de referência correspondendo à posição do bloco atual na imagem atual. Após calcular SAD para todas as M x M posições candidatas x e y, o melhor bloco de correspondência R é o bloco na posição resultando na SAD mais baixa, correspondendo à maior similaridade com bloco de referência C. 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.
[0010] Vetores de movimento são usualmente pelo menos parcialmente determinados no lado codificador e sinalizados para o decodificador dentro do fluxo de bits codificado. Entretanto, os vetores de movimento podem também ser derivados no decodificador. Em tal caso, o bloco atual não está disponível no decodificador e não pode ser usado para calcular a similaridade para os blocos para os quais os vetores de movimento candidatos apontam na imagem de referência. Entretanto, ao invés do bloco atual, um modelo é usado que é construído de píxeis de blocos já decodificados. Por exemplo, píxeis já decodificados adjacentes ao bloco atual podem ser usados. Tal estimação de movimento fornece uma vantagem de redução de sinalização: o vetor de movimento é derivado na mesma maneira em ambos o codificador e o decodificador e assim, nenhuma sinalização é necessária. Por outro lado, a precisão de tal estimação de movimento pode ser menor.
[0011] De modo a fornecer uma troca entre a precisão e sobrecarga de sinalização, a estimação de vetor de movimento pode ser dividida em duas etapas: derivação de vetor de movimento e refinamento de vetor de movimento. Por exemplo, uma derivação de vetor de movimento pode incluir seleção de um vetor de movimento a partir da lista de candidatos. Tal um 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 custo para cada vetor de movimento, p.ex. para cada posição candidata de bloco para o qual o vetor de movimento candidato aponta.
[0012] Documento — JVET-DO029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, X. Chen, J. An, J. Zheng (o documento pode ser encontrado em: http://phenix.it-sudparis.eu/jvet/ site)
mostra refinamento de vetor de movimento em que um primeiro vetor de movimento em resolução de píxel inteiro é encontrado e adicionalmente refinado por uma busca com uma resolução de meio-píxel em um espaço de busca em torno do primeiro vetor de movimento.
[0013] De modo a realizar refinamento de vetor de movimento, é necessário armazenar pelo menos estas amostras na memória, que são necessárias para o bloco atual a realizar o refinamento, p.ex. as amostras que correspondem ao espaço de busca e amostras quem pode ser acessadas quando correspondência de modelo no espaço de busca for realizada.
[0014] Acesso à memória externa é um parâmetro de projeto importante nas presentes arquiteturas de hardware e/ou implementações de software. Isto é causado pelo fato de que o acesso à memória externa diminui a velocidade do processamento em comparação com o uso da memória interna. Por outro lado, memória interna no chip é limitada, por exemplo devido à implementação de tamanho de chip.
SUMÁRIO
[0015] A presente divulgação é baseada em observação que refinamento de vetor de movimento quando implementado em combinação com interpolação fracionada pode requerer aumento adicional de tamanho de memória no chip ou até acesso à memória externa. Ambas opções podem ser indesejadas.
[0016] Em vista do problema acima mencionado, a presente divulgação fornece predição de vetor de movimento que permite a levar em conta o número de acessos à memória externa e o número de amostras que são necessárias a serem acessíveis para refinamento de vetor de movimento de um vetor de movimento para um bloco de codificação.
[0017] Isto é alcançado limitando o número de amostras àquelas necessárias para a correspondência de modelo de amostra inteira e apenas habilitando aquelas posições fracionadas que são obteníveis com um filtro de interpolação predeterminado sem requerer amostras inteiras adicionais.
[0018] De acordo com um aspecto da invenção, um aparelho é fornecido para determinação de um vetor de movimento para um bloco de predição que inclui um conjunto de circuitos de processamento configurado para: obter um vetor de movimento inicial e um modelo para o bloco de predição; e determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca. O dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
[0019] Uma das vantagens de tal determinação de vetor de movimento é número limitado de amostras que necessitam ser acessíveis par realizar o refinamento de vetor de movimento para um bloco de predição enquanto ao mesmo tempo limitando o número de acessos à memória externa ou geralmente a uma memória/armazenamento/cache armazenando as imagens de referência inteiras.
[0020] Em um exemplo, a janela é definida como N colunas de amostra inteira e M linhas de amostra inteira em relação ao vetor de movimento inicial de bloco de predição, N e M sendo valores inteiros diferentes de zero. Tal definição pode fornecer um meio simples para especificar que amostras são para serem recuperadas para fins de determinação e/ou refinamento de vetor de movimento. Pode também ser facilmente configurável por exemplo dentro de um fluxo de bits ou padrão.
[0021] Em uma modalidade, o conjunto de circuitos de processamento é configurado para determinar o refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, e a janela é definida por um número máximo predefinido de iterações.
[0022] O espaço de busca pode incluir uma subjanela retangular da janela de modo que todas as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
[0023] O espaço de busca pode incluir uma subjanela de busca retangular da janela, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo na subjanela de busca retangular de modo que as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela de busca estejam localizadas dentro da dita janela para o filtro de interpolação com tamanho de derivação predefinido.
[0024] EM uma implementação, o conjunto de circuitos de processamento pode ser configurado para determinar o refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma dada direção por uma dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, em que a iteração é encerrada quando pelo menos uma amostra dentro do espaço de busca da iteração mais recente estiver fora da subjanela de busca.
[0025] Em particular, como um exemplo específico, o filtro de interpolação é um filtro unidimensional que avalia K amostras inteiras horizontais ou verticais quando a posição fracionada estiver localizada em uma respectiva linha horizontal ou vertical de amostras inteiras.
[0026] Adicionalmente, por exemplo, o espaço de busca inclui adicionalmente posições fracionadas localizadas fora da subjanela: — adjacentes no topo ou no fundo da subjanela e localizadas na linha horizontal de amostras inteiras ou — adjacentes no lado esquerdo ou no direito da subjanela e localizadas na linha vertical de amostras inteiras.
[0027] De acordo com outro aspecto da invenção, um aparelho de codificação é fornecido para codificar imagens de vídeo divididas em blocos de predição em um fluxo de bits, o aparelho de codificação compreendendo: o aparelho para determinação de um vetor de movimento para um bloco de predição como descrito acima; e um conjunto de circuitos para codificar diferença entre o bloco de predição e o preditor dado por um bloco de predição em uma posição com base no vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
[0028] De acordo com outro aspecto da invenção um aparelho de decodificação é fornecido para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos de predição, o aparelho de decodificação compreendendo: uma unidade de análise para analisar a partir do fluxo de bits um vetor de movimento inicial e uma diferença codificada entre um bloco de predição e um preditor dado por um bloco de predição em uma posição especificada por um vetor de movimento refinado; o aparelho para determinação do vetor de movimento refinado para o bloco de predição como descrito acima; bem como um conjunto de circuitos de decodificação para reconstruir o bloco de predição como uma função da diferença analisada e do preditor dado pelo bloco de predição na posição especificada pelo vetor de movimento refinado. A função pode ser ou inclui uma soma. A função pode adicionalmente compreender recorte, arredondamento, escalonamento ou operações adicionais.
[0029] De acordo com outro aspecto da invenção um método é fornecido para determinação de um vetor de movimento para um bloco de predição incluindo as etapas de: obter um vetor de movimento inicial e um modelo para o bloco de predição; determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca, em que o dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
[0030] Por exemplo, a janela é definida como N colunas de amostra inteira e M linhas de amostra inteira em relação ao vetor de movimento inicial de bloco de predição, N e M sendo valores inteiros diferentes de zero.
[0031] Em uma modalidade, o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, a janela é definida por um número máximo predefinido de iterações.
[0032] Em uma implementação exemplar, o espaço de busca inclui uma subjanela retangular da janela de modo que todas amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela estejam localizadas dentro da dita janela para o filtro de interpolação com tamanho de derivação predefinido.
[0033] O espaço de busca pode incluir uma subjanela de busca retangular da janela, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo na subjanela de busca retangular de modo que as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela de busca estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
[0034] Em uma implementação, o refinamento do vetor de movimento inicial pode ser determinado por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma dada direção por uma dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, em que a iteração é encerrada quando pelo menos uma amostra dentro do espaço de busca da iteração mais recente estiver fora da subjanela de busca.
[0035] Mais adicionalmente, por exemplo, o filtro de interpolação é um filtro unidimensional que avalia K amostras inteiras horizontais ou verticais quando a posição fracionada estiver localizada em uma respectiva linha horizontal ou vertical de amostras inteiras.
[0036] Vantajosamente, o espaço de busca inclui adicionalmente posições fracionadas localizadas fora da subjanela: adjacentes no topo ou no fundo da subjanela e localizadas na linha horizontal de amostras inteiras ou adjacentes no lado esquerdo ou no direito da subjanela e localizadas na linha vertical de amostras inteiras.
[0037] De acordo com outro aspecto da invenção um método de codificação é fornecido para codificar imagens de vídeo divididas em blocos de predição em um fluxo de bits, o método de codificação compreendendo as etapas de determinar um vetor de movimento para um bloco de predição de acordo com qualquer dos métodos descritos acima; bem como codificar diferença entre o bloco de predição e o preditor dado por um bloco de predição em uma posição com base no vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
[0038] De acordo com outro aspecto da invenção um método de decodificação é fornecido para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos de predição, o método de decodificação compreendendo: analisar a partir do fluxo de bits um vetor de movimento inicial e uma diferença codificada entre um bloco de predição e um dado preditor por um bloco de predição em uma posição especificada por um vetor de movimento refinado; determinar o vetor de movimento refinado para o bloco de predição de acordo com qualquer um dos métodos mencionados acima; e reconstruir o bloco de predição como uma soma da diferença analisada e do preditor dado pelo bloco de predição na posição especificada pelo vetor de movimento refinado.
[0039] De acordo com um aspecto da invenção uma mídia de armazenamento legível por computador não transitória é fornecida armazenando instruções que quando executadas por um processador/conjunto de circuitos de processamento realizam as etapas de acordo com qualquer um dos aspectos ou modalidade acima ou suas combinações.
[0040] Nas modalidades exemplares seguintes são descritas em mais detalhe com referência às figuras anexas e desenhos, em que:
[0041] A Figura 1 é um diagrama de bloco mostrando uma estrutura exemplar de um codificador em que a derivação de vetor de movimento e o refinamento podem ser empregados;
[0042] A Figura 2 é um diagrama de bloco mostrando uma estrutura exemplar de um decodificador em que a derivação de vetor de movimento e o refinamento podem ser empregados;
[0043] A Figura 3 é um desenho esquemático ilustrando uma correspondência de modelo exemplar adequada para bi predição;
[0044] A Figura 4 é um desenho esquemático ilustrando uma correspondência de modelo exemplar adequado para uni e bipredição;
[0045] A Figura 5 é um diagrama de bloco ilustrando estágios de derivação de vetor de movimento operando sem fornecer vetores de movimento iniciais a serem refinados no fluxo de bits;
[0046] A Figura 6 é um diagrama de bloco ilustrando um hardware exemplar para implementar uma modalidade da invenção;
[0047] A Figura 7 é um desenho esquemático ilustrando um bloco de codificação de uma janela exemplar com amostras que devem estar disponíveis a serem acessadas;
[0048] A Figura 8 é um desenho esquemático ilustrando espaço de busca iterativo;
[0049] A Figura 9 é um desenho esquemático ilustrando extensão da janela de acesso à memória na direção horizontal devido a filtagem de interpolação;
[0050] A Figura 10 é um desenho esquemático ilustrando definição de uma subjanela para posições de amostras fracionadas;
[0051] A Figura 11 é um desenho esquemático ilustrando uma definição exemplar da janela de acesso à memória;
[0052] A Figura 12 é um desenho esquemático ilustrando posições exemplares incluindo posições fracionadas que estão permitidas a formar posições de espaço de busca para refinamento de vetor de movimento;
[0053] A Figura 13 é um desenho esquemático ilustrando posições fracionadas exemplares que não são permitidas para formar posições de espaço de busca para refinamento de vetor de movimento;
[0054] A Figura 14 é um diagrama de fluxo ilustrando método para determinar que posição de um espaço de busca é permitida a ser testada por correspondência de modelo para refinamento de vetor de movimento;
[0055] A Figura 15 é um desenho esquemático ilustrando posições exemplares incluindo posições fracionadas que são permitidas para formar posições de espaço de busca para refinamento de vetor de movimento;
[0056] A Figura 16 é um diagrama de fluxo ilustrando um processo de refinamento iterativo em uma janela de acesso à memória; e
[0057] A Figura 18 é um diagrama de fluxo ilustrando um processo de refinamento iterativo em uma subjanela de busca.
DESCRIÇÃO DETALHADA
[0058] A presente divulgação refere-se a ajuste do número de amostras que são para serem acessíveis para realizar refinamento de vetor de movimento e interpolação de modo a obter posições fracionadas em uma imagem de referência.
[0059] Como mencionado acima, o acesso à memória externa é uma das considerações de projeto mais importante nas arquiteturas de software e hardware de hoje. Estimação de vetor de movimento especialmente quando incluir correspondência de modelo, por exemplo no caso de refinamento de vetor de movimento, pode ser também usada com filtragem de interpolação para obter posições fracionadas do espaço de busca. Uso de filtragem de interpolação pode requerer aumento no número de amostras que necessitam ser acessadas a partir da memória. Entretanto, isto pode levar ao aumento de memória no chip cara ou a número aumentado de acessos à memória externa, que por outro lado diminui a velocidade da implementação. Especialmente no lado de decodificador, estes problemas podem levar a aplicações mais caras ou mais lentas que não é desejável.
[0060] De modo a prevenir tal situação, a presente divulgação fornece uma restrição em acessos à memória externa. De acordo com uma modalidade da invenção, uma janela de amostras que são para serem acessíveis para o refinamento de vetor de movimento é definida em torno da posição apontada por um vetor de movimento não refinado, p.ex. pelo vetor de movimento inicial. A janela define o número máximo de amostras que necessitam ser acessadas a partir da memória de modo a realizar o refinamento de vetor de movimento. Em geral, as amostras que são para serem acessíveis incluem as amostras nas posições do espaço de busca em que a correspondência de modelo é para ser realizada e as amostras que são para serem correspondidas com o modelo para todas posições no espaço de busca. O último tipicamente excede o espaço de busca. Por razões de simplicidade a janela de acesso à memória pode ser definida como uma extensão em torno do bloco de codificação (bloco atual para o qual o vetor de movimento é para ser encontrado). Por exemplo, R amostras dos limites de esquerda e de direita e R amostras dos limites de topo e de fundo do bloco atual podem definir a janela. Em outras palavras, quando o bloco atual tem um tamanho de N x N amostras, a janela de acesso pode ter tamanho de (R +N+R)X(R+N+R), p.ex. (N+2R) x (N + 2R) amostras. Por exemplo, R pode ser igual a 4. Entretanto, o bloco atual pode ser de tamanho vertical N diferente do tamanho horizontal N e o número de amostras de extensão na direção de topo, fundo, esquerda e direita pode também diferir.
[0061] De acordo com a presente divulgação, de modo a limitar a janela de acesso à memória, as coordenadas de píxel fracionado são acessadas pelo refinamento de vetor de movimento apenas se amostras necessárias para a interpolação se situarem dentro da janela de acesso à memória para o refinamento de vetor de movimento como definido para amostras inteiras.
[0062] A Figura 1 mostra um codificador 100 que compreende uma entrada para receber amostras de imagem 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 codificados. O termo “quadro” nesta divulgação é usado como um sinônimo para imagem. Entretanto, é notado que a presente divulgação é também aplicável para campos no caso que entrelaçamento é aplicado. Em geral, uma imagem inclui m vezes n píxeis. Isto corresponde a amostras de imagem e pode compreender um ou mais componentes de cor. Para fins de simplicidade, a seguinte descrição refere a píxeis significando amostras de luminância. Entretanto, é notado que a busca do vetor de movimento da invenção pode ser aplicada a qualquer componente de cor incluindo crominância ou componentes de um espaço de busca tal como RGB ou semelhante. Por outro lado, pode ser benéfico apenas realizar estimação de vetor de movimento para um componente e para aplicar o vetor de movimento determinado a mais (ou todos) os componentes.
[0063] Os blocos de entrada a serem codificados não necessariamente tem o mesmo tamanho. Uma imagem pode incluir blocos de tamanhos diferentes e o bloco raster de imagens diferentes também pode diferir.
[0064] Em uma realização explicativa, o codificador 100 é configurado para aplicar predição, transformação, quantização, e codificação de entropia para o fluxo de vídeo. A transformação, quantização, e codificação de entropia são realizados respectivamente por uma unidade de transformada 106, uma unidade de quantização 108 e uma unidade de codificação de entropia 170 de modo a gerar como uma saída o fluxo de bits de vídeo codificado.
[0065] O fluxo de vídeo pode incluir uma pluralidade de quadros, em que cada quadro é dividido em dois blocos de um certo tamanho que são ou intra ou intercodificados. Os blocos do por exemplo primeiro quadro do fluxo de vídeo são intracodificados por meio de uma unidade de intrapredição 154. Um quadro intra é codificado usando apenas as informações dentro do mesmo quadro, de modo que possa ser independentemente decodificado 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 intercodificados por meio de uma unidade de interpredição 144: informações dos quadros codificados anteriormente (quadros de referência) são usadas para reduzir a redundância temporal, de modo que cada bloco de um quadro intercodificado seja predito a partir de um bloco em um quadro de referência. Uma unidade de seleção de modo 160 é configurada para selecionar se um bloco de um quadro é para ser processado pela unidade de intrapredição 154 ou pela unidade de interpredição 144. Esta unidade de seleção de modo 160 também controla os parâmetros de intra ou interpredição. De modo a permitir renovação das informações de imagem, blocos intracodificados podem ser fornecidos dentro de quadros intercodificados. Adicionalmente, intraquadros que contém apenas blocos intracodificados podem ser regularmente inseridos na sequência de vídeos de modo a fornecer pontos de entrada para decodificação, p.ex. pontos em que o decodificador pode começar decodificação sem ter informações a partir dos quadros codificados anteriormente.
[0066] A unidade de intraestimação 152 e a unidade de intrapredição 154 são unidades que realizam a intrapredição. Em particular, a unidade de intraestimação 152 pode derivar o modo de predição com base também no conhecimento da imagem original enquanto a unidade de intrapredição 154 fornece o preditor correspondente, p.ex. amostras preditas usando o modo de predição selecionado, para a codificação de diferença. Para realizar predição espacial ou temporal, os blocos codificados podem ser adicionalmente processados por uma unidade de quantização inversa 110, e uma unidade de transformada inversa 112. Após reconstrução do bloco uma unidade de filtragem loop 120 é aplicada para adicionalmente melhorar a qualidade da imagem decodificada. Os blocos filtrados então formam os quadros de referência que são então armazenados em um buffer de imagem decodificada 130. Tal loop de decodificação (decodificador) no lado 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 decodificador. Consequentemente, o lado codificador e decodificador operam em uma maneira correspondente. O termo “reconstrução” aqui se refere a obter o bloco reconstruído adicionando ao bloco residual decodificado o bloco de predição.
[0067] A unidade de interestimação 142 recebe como uma entrada um bloco de um quadro atual ou imagem a ser intercodificado e um ou mais quadros de referência a partir do buffer de imagem decodificada 130. Estimação de movimento é realizada pela unidade de interestimação 142 enquanto compensação de movimento é aplicada pela unidade de interpredição 144. À estimação de movimento é usada para obter um vetor de movimento e um quadro de referência com base em certa função de custo, por exemplo usando também a imagem original a ser codificada. Por exemplo, a unidade de estimação 142 pode fornecer estimação de vetor de movimento inicial. O vetor de movimento inicial pode então ser sinalizado dentro do fluxo de bits na forma de vetor diretamente ou como um índice referindo a um vetor de movimento candidato dentro de uma lista de candidatos construídos com base em uma regra predeterminada na mesma maneira que o codificador e o decodificador. À compensação de movimento então deriva um preditor do bloco atual como uma tradução de um bloco colocalizado com o bloco atual no quadro de referência para o bloco de referência no quadro de referência, p.ex. por um vetor de movimento. A unidade de interpredição 144 emite o bloco de predição para o bloco atual, em que o dito bloco de predição minimiza a função custo. Por exemplo, a função custo pode ser uma diferença entre o bloco atual a ser codificado e seu bloco de predição, p.ex. a função custo minimiza o bloco residual. A minimização do bloco residual é baseada p.ex. no cálculo de uma soma de diferenças absolutas (SAD) entre todos píxeis (amostras) do bloco atual e do bloco candidato na imagem de referência candidata. Entretanto, em geral, qualquer outra métrica de similaridade pode ser empregada, tal como erro quadrado médio (MSE) ou métrica de similaridade estrutural (SSIM).
[0068] Entretanto, função custo pode também ser o número de bits necessários para codificar tal interbloco e/ou distorção resultante a partir de tais codificações. Assim, o procedimento de otimização de distorção de taxa pode ser usado para decidir na seleção de vetor de movimento e/ou em geral nos parâmetros de codificação tal como se usar inter ou intrapredição para um bloco e com tais configurações.
[0069] A unidade de intraestimação 152 e a unidade de intrapredição 154 recebem como uma entrada um bloco de um quadro atual ou imagem a ser intracodificado e uma ou várias amostras de referência a partir de uma área já reconstruída do quadro atual. A intrapredição então descreve píxeis de um bloco atual do quadro atual em termos de uma função de amostras de referência do quadro atual. A unidade de intrapredição 154 emite um bloco de predição para o bloco atual, em que o dito bloco de predição vantajosamente minimiza a diferença entre o bloco atual a ser codificado e seu bloco de predição, p.ex., minimiza o bloco residual. A minimização do bloco residual pode ser com base p.ex. em um procedimento de otimização de distorção de taxa. Em particular, o bloco de predição é obtido como uma interpolação direcional das amostras de referência. A direção pode ser determinada pela otimização distorção de taxa e/ou calculando uma medição de similaridade como mencionado acima em conexão com interpredição.
[0070] A unidade de interestimação 142 recebe como uma entrada um bloco ou uma amostra de imagem formada mais universal de um quadro atual ou imagem para ser intercodificada e duas ou mais imagens já decodificadas
231. A interpredição então descreve uma amostra de imagem atual do quadro atual em termos de vetores de movimento para amostras de imagem de referência das imagens de referência. A unidade de interpredição 142 emite um ou mais vetores de movimento para a amostra de imagem atual, em que as ditas amostras de imagem de referência apontadas pelos vetores de movimento vantajosamente minimizam a diferença entre a amostra de imagem atual a ser codificada e suas amostras de imagem de referência, p.ex., minimiza a amostra de imagem residual. O preditor para o bloco atual é então fornecido pela unidade de interpredição 144 para a codificação de diferença.
[0071] A diferença entre o bloco atual e sua predição, p.ex. o bloco residual 105, é então transformada pela unidade de transformada 106. Os coeficientes de transformada 107 são quantizados pela unidade de quantização 108 e entropia codificada pela unidade de codificação de entropia 170. Os dados de imagem codificada gerados 171, p.ex. fluxo de bits de vídeo codificados, compreendem blocos intracodificados e blocos intercodificados e a sinalização correspondente (tal como a indicação de modo, indicação do vetor de movimento, e/ou direção intrapredição). A unidade de transformada 106 pode aplicar uma transformação linear tal como uma Transformada de Fourier ou de Cosseno Discreto (DFT/FFT ou DCT). Tal transformação no domínio de frequência espacial fornece a vantagem que os coeficientes resultantes 107 tem tipicamente maiores valores nas frequências mais baixas. Assim, após uma varredura de coeficiente eficaz (tal como zig-zag), e quantização, a sequência resultante dos valores tem tipicamente alguns valores maiores no início e se encerra com uma rodada de zeros. Isto permite adicionalmente codificação eficiente. Unidade de quantização 108 realiza a compressão com perdas efetiva por redução da resolução dos valores de coeficiente. A unidade de codificação de entropia 170 então atribui a valores de coeficiente palavras-código binário para produzir um fluxo de bits. A unidade de codificação de entropia 170 também codifica as informações de sinalização (não mostradas na Figura 1).
[0072] A Figura 2 mostra um decodificador de vídeo 200. O decodificador de vídeo 200 compreende particularmente um buffer de imagem decodificada 230, uma unidade de interpredição 244 e uma unidade de intrapredição 254, que é uma unidade de predição de bloco. O buffer de imagem decodificada 230 é configurado para armazenar pelo menos um (para unipredição) ou pelo menos dois (para bipredição) quadros de referência reconstruídos a partir do fluxo de bits de vídeo codificado, os ditos quadros de referência sendo diferentes de um quadro atual (quadro atualmente decodificado) do fluxo de bits de vídeo codificado. A unidade de intrapredição 254 é configurada para gerar um bloco de predição, que é uma estimação do bloco a ser decodificado. A unidade de intrapredição 254 é configurada para gerar esta predição com base nas amostras de referência que são obtidas a partir do bloco reconstruído 215 ou do buffer 216.
[0073] O decodificador 200 é configurado para decodificar o fluxo de bits de vídeo codificado gerado pelo codificador de vídeo 100, e preferencialmente ambos o decodificador 200 e o codificador 100 geram predições idênticas para o bloco respectivo a ser codificado/decodificado. As características do buffer de imagem decodificada 230, bloco reconstruído 215, buffer 216 e a unidade de intrapredição 254 são semelhantes às características do buffer de imagem decodificada 130, bloco reconstruído 115, buffer 116 e a unidade de intrapredição 154 da Figura 1.
[0074] O decodificador de vídeo 200 compreende adicionalmente unidades que estão também presentes no codificador de vídeo 100 como p.ex. uma unidade de quantização inversa 210, uma unidade de transformada inversa 212, e uma unidade de filtragem loop 220, que respectivamente correspondem à unidade de quantização inversa 110, a unidade de transformada inversa 112, e a unidade de filtragem loop 120 do codificador de vídeo 100.
[0075] Uma unidade de decodificação de entropia 204 é configurada para decodificar o fluxo de bits de vídeo codificado recebido e para correspondentemente obter coeficientes de transformada residual quantizada 209 e informações de sinalização. Os coeficientes de transformada residual quantizada 209 são alimentados à unidade de quantização inversa 210 e uma unidade de transformada inversa 212 para gerar um bloco residual. O bloco residual é adicionado a um bloco de predição 265 e a adição é alimentada à unidade de filtragem loop 220 para obter o vídeo decodificado. Quadros do vídeo decodificado podem ser armazenados no buffer de imagem decodificada 230 e serve como uma imagem decodificada 231 para interpredição.
[0076] Geralmente, as unidades de intrapredição 154 e 254 das Figuras 1 e 2 podem usar amostras de referência a partir de uma área já codificada para gerar sinais de predição para blocos que necessitam ser codificados ou necessitam ser decodificados.
[0077] A unidade de decodificação de entropia 204 recebe como sua entrada o fluxo de bits codificados 171. Em geral, o fluxo de bits é primeiro analisado, p.ex. os parâmetros de sinalização e os residuais são extraídos do fluxo de bits. Tipicamente, a sintaxe e semântica do fluxo de bits é definida por um padrão de modo que os codificadores e decodificadores possam trabalhar em uma maneira interoperável. Como descrito na seção de Fundamentos acima, o fluxo de bits codificado não apenas inclui os residuais de predição. Em caso de predição compensada de movimento, uma indicação de vetor de movimento é também codificada no fluxo de bits e analisada do mesmo no decodificador. À indicação de vetor de movimento pode ser dada por meio de uma imagem de referência em que o vetor de movimento é fornecido e por meio das coordenadas de vetor de movimento. Até agora, codificação completa dos vetores de movimento foi considerada. Entretanto, 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. Esta abordagem permite explorar a redundância entre vetores de movimento dos blocos vizinhos.
[0078] De modo a eficientemente codificar a imagem de referência, H.265 codec (ITU-T, H265, Series H: Audiovisual and multimedia systems: High Efficient Video Coding) fornece uma lista de imagens de referência atribuindo à lista índices respectivos de 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. Tal lista pode ser definida no padrão ou sinalizada no início do vídeo ou em um conjunto de um número de quadros. É notado que em H.265 existem duas listas de imagens de referência definidas, chamadas LO e LI. A imagem de referência é então sinalizada no fluxo de bits indicando a lista (LO ou L1) e indicando um índice em que lista associada com a imagem de referência desejada. Fornecendo duas ou mais listas pode ter vantagens para melhor compressão. Por exemplo, LO pode ser usada para tanto fatias interpreditas de modo unidirecional quanto fatias interpreditas de modo bidirecional enquanto L1 pode apenas ser usada para fatias interpreditas de modo bidirecional. Entretanto, em geral a presente divulgação não é limitada a qualquer conteúdo das listas LO e L1.
[0079] As listas LO e L1 podem ser definidas no padrão e fixadas. Entretanto, mais flexibilidade em codificação/decodificação pode ser alcançada sinalizando-as no início da sequência de vídeos. Consequentemente, 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 ter 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 particular pode ser transmitido.
[0080] Vetores de movimento do bloco atual são usualmente correlacionados com os vetores de movimento de blocos vizinhos na imagem atual ou nas imagens codificadas antes. Isto é porque os blocos vizinhos são prováveis de corresponder ao mesmo objeto movendo com movimento semelhante e o movimento do objeto não é provável de mudar bruscamente sobre o tempo. Consequentemente, usar os vetores de movimento em blocos vizinhos como preditores reduz o tamanho da diferença de vetor de movimento sinalizado. Os preditores de vetor de movimento (MVPs) são usualmente derivados dos vetores de movimento já codificados/decodificados a partir de blocos de vizinhança espacial ou a partir de blocos temporariamente vizinhos ou colocalizados na imagem de referência. Em H.264/AVC, isto é feito fazendo uma média ampla de componente dos três vetores de movimento espacialmente vizinhos. Usando esta abordagem, nenhuma sinalização do preditor é requerida.
MVPs temporais a partir de um bloco colocalizado na imagem de referência são apenas considerados no chamado modo direto temporal de H.265/AVC. Os modos diretos H.264/AVC são também usados para derivar outros dados de movimento que não os vetores de movimento. Então, eles referem-se mais ao conceito de fusão de bloco em HEVC. Em HEVC, a abordagem de derivação implícita do MVP foi substituída por uma técnica conhecida como competição de vetor de movimento, que explicita sinais cujo MVP a partir de uma lista de MVP's, é usado para derivação de vetor de movimento. A estrutura de bloco de quad- tree de codificação variável em HEVC pode resultar em um bloco tendo vários blocos vizinhos com vetores de movimento como candidatos potenciais MVP. Tomando o vizinho esquerdo como um exemplo, no pior caso um bloco de predição luma 64x64 deve ter 16 blocos de predição luma 4x4 para a esquerda quando um bloco de árvore de codificação luma 64x64 não é adicionalmente dividido e o da esquerda é dividido à profundidade máxima.
[0081] Predição de Vetor de Movimento Avançado (AMVP) foi introduzida para modificar competição de vetor de movimento para contar para tal uma estrutura de bloco flexível. Durante o desenvolvimento de HEVC, o projeto de AMVP inicial foi significativamente simplificado para fornecer uma boa troca entre eficiência de codificação e um projeto amigável de implementação. O projeto inicial de AMVP inclui cinco MVP's a partir de três classes diferentes de preditores: três vetores de movimento de vizinhos espaciais, a média dos três preditores espaciais e um vetor de movimento escalado a partir de um bloco colocalizado, temporalmente vizinho. Adicionalmente, a lista de preditores foi modificada reordenando para colocar o preditor de movimento mais provável na primeira posição e removendo candidatos redundantes para assegurar sobrecarga de sinalização mínima. O projeto final da construção de lista candidata de AMVP inclui os seguintes dois candidatos MVP: a) até dois MVPs candidatos espaciais que são derivados a partir de cinco blocos vizinhos espaciais; b) um MVPs candidato temporal derivado de dois blocos temporais, colocalizados quando ambos MVPs candidatos espaciais não estiverem disponíveis ou eles forem idênticos; e c) zero vetores de movimento quando os candidatos espacial, o temporal ou ambos não estiverem disponíveis. Detalhes na determinação de vetor de movimento podem ser encontrados no livro de V. Sze et al (Ed.), High Efficiency Video Coding (HEVC): Algorithms and
Architectures, Springer, 2014, em particular no Capítulo 5, incorporado aqui por referência.
[0082] De modo a adicionalmente melhorar estimação de vetor de movimento sem adicionalmente aumentar em sobrecarga de sinalização, pode ser benéfico adicionalmente refinar os vetores de movimento derivados no lado codificador e fornecidos no fluxo de bits. O refinamento de vetor de movimento pode ser realizado no decodificador sem assistência do codificador. O codificador em seu loop decodificador pode empregar o mesmo refinamento para obter correspondentes vetores de movimento. Refinamento de vetor de movimento é realizado em um espaço de busca que inclui posições de píxel inteiro e posições de píxel fracionado de uma imagem de referência. Por exemplo, as posições de píxel fracionado podem ser posições de meio-píxel ou quarto de píxel ou posições adicionalmente fracionadas. As posições de píxel fracionado podem ser obtidas a partir de posições inteiras (píxel total) por interpolação tal como uma interpolação bi linear.
[0083] Em uma bipredição do bloco atual, dois blocos de predição obtidos usando o primeiro vetor de movimento respectivo de lista LO e o segundo vetor de movimento de lista L1, são combinados a um único sinal de predição, que pode fornecer uma melhor adaptação ao sinal original que unipredição, resultando em menos informações residuais e possibilidade de uma compressão mais eficiente.
[0084] Uma vez no decodificador, o bloco atual não está disponível uma vez que está sendo decodificado, para fins de refinamento de vetor de movimento, um modelo é usado, que é uma estimação do bloco atual e que é construído com base nas porções de imagem já processadas (p.ex. codificadas no lado codificador e decodificadas no lado decodificador).
[0085] Primeiro, uma estimação do primeiro vetor de movimento MVO e uma estimação do segundo vetor de movimento MV1 são recebidas como entrada no decodificador 200. No lado codificador 100, as estimações de vetor de movimento MVO e MV1 podem ser obtidas por correspondência de bloco e/ou por busca em uma lista de candidatos (tais como lista de fusão) formada por vetores de movimento dos blocos vizinhos para o bloco atual (na mesma imagem ou em imagens adjacentes). MVO e MV1 são então vantajosamente sinalizados para o lado decodificador dentro do fluxo de bits. Entretanto, é notado que em geral, também o primeiro estágio de determinação no codificador poderia ser realizado por correspondência de modelo que iria fornecer a vantagem de reduzir sobrecarga de sinalização.
[0086] No lado decodificador 200, os vetores de movimento MVO e MV1 são vantajosamente obtidos com base em informações no fluxo de bits. O MVO e MV1 são ou sinalizados diretamente, ou sinalizados diferencialmente, e/ou um índice na lista de vetor de movimento (lista de fusão) é sinalizado. Entretanto, a presente divulgação não é limitada aos vetores de movimento de sinalização no fluxo de bits. Ao invés, o vetor de movimento pode ser determinado por correspondência de modelo já no primeiro estágio, correspondentemente à 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 (p.ex. distância mais curta entre posições de busca).
[0087] Uma indicação das duas imagens de referência RefPicO (ImagRefo) e RefPic1 (ImagRef1i), para as quais MVO e MV1 respectivos apontam, são fornecidas ao decodificador também. As imagens de referência são armazenadas no buffer de imagem decodificada no lado de codificador e decodificador como um resultado do processamento anterior, p.ex. codificação e decodificação respectivas. Uma destas 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. Seguindo 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 realizar o refinamento de vetor de movimento. Para realizar refinamento de vetor de movimento, a região de busca na primeira imagem de referência é definida em torno da posição candidata para a qual vetor de movimento MVO aponta. As posições de espaço de busca candidata dentro da região de busca são analisadas para encontrar um bloco mais semelhante a um bloco de modelo realizando correspondência de modelo dentro do espaço de busca e determinando uma métrica de similaridade tal como a soma das diferenças absolutas (SAD). As posições do espaço de busca denotam as posições nas quais o canto esquerdo de topo do modelo é correspondido. Como já mencionado acima, o canto esquerdo de topo é uma mera conversão e qualquer ponto do espaço de busca tal como o ponto central pode em geral ser usado para denotar a posição de correspondência.
[0088] De acordo com o documento acima mencionado JVET-D0029, o refinamento de vetor de movimento de lado decodificador (DMVR) tem uma entrada dos vetores de movimento iniciais MVO e MV1 que apontam em duas imagens de referência respectivas RefPictO (ImagRefO) e RefPict1 (ImagRef1). Estes vetores de movimento iniciais são usados para determinar os espaços de busca respectivos na RefPicto (ImagRefo) e RefPict1i (ImagRef1i). Mais adicionalmente, usando os vetores de movimento MVO e MV1, um modelo é construído com base nos blocos respectivos (de amostras) A e P apontados por MVO e MV1 como segue: Modelo = função ((Bloco A, Bloco B)).
[0089] A função pode ser operação de apara de amostra em combinação com soma ponderada sensata de amostra. O modelo é então usado para realizar correspondência de modelo nos espaços de busca determinados com base em MVO e MV1 nas respectivas imagens de referência O e 1. A função custo para determinar a melhor correspondência de modelo nos espaços de busca respectivos é SAD (Modelo, Bloco candA'), em que bloco candA' é o bloco de codificação candidato que é apontado pelo MV candidato no espaço de busca estendido em uma posição dada pelo MVO. A Figura 3 ilustra a determinação do melhor bloco A de correspondência e o vetor de movimento refinado resultante MVO'. Correspondentemente, o mesmo modelo é usado é usado para encontrar melhor bloco B' de correspondência e o vetor de movimento MV1' correspondente que aponta para bloco B' como mostrado na Figura 3. Em outras palavras, após o modelo ser construído com base no bloco A e apontado para B pelos vetores de movimento iniciais MVO e MV1, os vetores de movimento refinados MVO' e MV1' são encontrados através de busca em RefPicO(ImagRef0) e RefPic1(ImagRef1) com o modelo.
[0090] Técnicas de derivação de vetor de movimento são algumas vezes também referidas como conversão ascendente de taxa de quadro (FRUC).
Os vetores de movimento iniciais MVO e MV1 podem geralmente ser indicados no fluxo de bits para assegurar que codificador e decodificador podem usar o mesmo ponto inicial para refinamento de vetor de movimento. Alternativamente, os vetores de movimento iniciais podem ser obtidos fornecendo uma lista de candidatos iniciais incluindo um ou mais candidatos iniciais. Para cada um deles um vetor de movimento refinado é determinado e no final, o vetor de movimento refinado que minimiza a função custo é selecionado.
[0091] É adicionalmente notado que a presente invenção não é limitada à correspondência de modelo como descrito acima com referência à Figura 3. A Figura 4 ilustra uma correspondência de modelo alternativa que é também aplicável para uni predição. Detalhes podem ser encontrados no documento JVET-A1001, em particular na Seção “2.4.6. Pattern matched motion vector derivation” do documento JVET-A1001 que é intitulado “Algorithm Description of Joint Exploration Test Model 1”, de Jianle Chen et. al. e que está acessível em: http://phenix.it-sudparis.eu/jvet/. O modelo nesta abordagem de correspondência de modelo é determinado como amostras adjacentes ao bloco atual no quadro atual. Como mostrado na Figura 1, as amostras já reconstruídas adjacentes aos limites de topo e de esquerdo do bloco atual podem ser tomadas, referidas como “modelo em forma de L”.
[0092] A figura 5 ilustra outro tipo de derivação de vetor de movimento que pode também ser usada. A entrada do processo de derivação de vetor de movimento é uma flag que indica se a derivação de vetor de movimento é aplicada ou não. Implicitamente, outra entrada para o processo de derivação é o vetor de movimento de um bloco anteriormente codificado/reconstruído vizinho (temporalmente ou espacialmente). Os vetores de movimento de uma pluralidade de blocos vizinhos são usados como candidatos para a etapa de busca inicial de derivação de vetor de movimento. A saída do processo é MVO' (possivelmente também MV1', se bi predição é usada) e os índices de imagem de referência correspondentes refPictO (ImagRefO) e possivelmente refPict1 (ImagRef1) respectivamente. O estágio de refinamento de vetor de movimento então inclui a correspondência de modelo como descrito acima. Após encontrar o um (unipredição) ou mais (bipredição/predição de multiquadros) vetores de movimento refinados, o preditor do bloco atual é construído (para bi/multipredição por predição de amostra ponderada, de outra forma referindo às amostras apontadas pelo MV refinado).
[0093] A presente invenção não é limitada aos 2 métodos de correspondência de modelo descritos acima. Como um exemplo um terceiro método de correspondência de modelo que é chamada correspondência bilateral (também descrito no documento JVET-A1001), pode também ser usado para refinamento de vetor de movimento e a invenção aplica similarmente. De acordo com a correspondência bilateral, a melhor correspondência entre dois blocos ao longo da trajetória de movimento do bloco atual em duas imagens de referência diferentes é buscada. Assumindo a trajetória de movimento contínua, os vetores de movimento MVO e MV1 apontando para os dois blocos de referência devem ser proporcionais às distâncias temporais, p.ex., TDO e TD1, entre a imagem atual e as duas imagens de referência. Em correspondência bilateral uma função custo tal como SAD (Bloco candO', Bloco cand1') pode ser usada onde Bloco cand0O' é apontado por MVO e Bloco cand1' é apontado por MV1.
[0094] De acordo com uma modalidade da invenção, um aparelho é fornecido para determinação de um vetor de movimento para um bloco de predição, o aparelho incluindo um conjunto de circuitos de processamento. O conjunto de circuitos de processamento é configurado para obter um vetor de movimento inicial e um modelo para o bloco de predição e determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca. O dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
[0095] O conjunto de circuitos de processamento 600 é ilustrado na Figura 6. O conjunto de circuitos de processamento pode incluir qualquer hardware e a configuração pode ser implementada por qualquer tipo de programação ou projeto de hardware de uma combinação de ambos. Por exemplo, o conjunto de circuitos de processamento pode ser formado por um processador único tal como processador para fins gerais com o software correspondente implementando as etapas acima. Por outro lado, o conjunto de circuitos de processamento pode ser implementado por um hardware especializado tal como um ASIC (Circuito Integrado específico de aplicação, Application-Specific Integrated Circuit) ou FPGA (Arranjo de Porta Programável de Campo, Field-Programmable Gate Array) de um DSP (Processador de Sinal Digital, Digital Signal Processor) ou semelhantes.
[0096] O conjunto de circuitos de processamento pode incluir um ou mais dentre os componentes de hardware acima mencionados interconectados para realizar a derivação de vetor de movimento acima. O conjunto de circuitos de processamento 600 inclui lógica de computação que implementa duas funcionalidades: obter o vetor de movimento inicial (ou uma pluralidade de vetores de movimento iniciais se bi/multi-predição for usada) e modelo 610 e refinamento de vetor de movimento 620. Estas duas funcionalidades podem ser implementadas na mesma peça de hardware ou podem ser realizadas por unidades separadas de hardware tais como vetor de movimento inicial e uma unidade de determinação de modelo 610 e unidade de refinamento de vetor de movimento 620. O conjunto de circuitos de processamento 600 pode ser comunicativamente conectado a uma memória externa 650 em que as amostras de imagem de referência reconstruídas são armazenadas. Além disso, o conjunto de circuitos de processamento 600 pode adicionalmente incluir uma memória interna 640 que armazena temporariamente as amostras em uma janela transferida a partir da memória externa e usada para determinação de vetor de movimento para o bloco processado atualmente. O conjunto de circuitos de processamento pode ser modalizado em um único chip como um circuito integrado.
[0097] É notado que o conjunto de circuitos de processamento pode implementar funções adicionais do codificador e/ou decodificador descritos com referência às Figuras 1 e 2. A memória interna pode ser uma memória no chip tal como uma memória cache ou em linha. Memória de chip é vantajosamente implementada no chip codificador/decodificador para acelerar computações. Uma vez que o tamanho do chip é limitado, a memória no chip é usualmente menor. Por outro lado, a memória externa pode ser muito grande em tamanho, entretanto o acesso à memória externa consome mais energia e o acesso é muito mais lento. Usualmente todas as informações necessárias são recuperadas a partir da memória externa para memória no chip antes das computações serem realizadas. No pior caso acesso à memória externa (ou largura de banda que necessite ser provisionada quando projetando o barramento de memória), denota a maior quantidade possível de transferência de memória entre memória externa e no chip, enquanto decodificar um quadro ou unidade de codificação. A memória (especialmente a memória externa) pode usualmente apenas ser acessada em unidades de bloco predefinido. Em outras palavras não é geralmente possível acessar um píxel único, ao invés de uma unidade menor (p.ex. 8x8) podendo ser acessada. O tamanho de memória no chip é também uma consideração de projeto importante, porque uma maior memória no chip aumenta o custo.
[0098] Em outras palavras, o aparelho acima mencionado pode ser um circuito integrado compreendendo adicionalmente: uma memória interna incorporada dentro do circuito integrado e uma unidade de acesso à memória (interface) para trazer amostras inteiras localizadas dentro da dita janela a partir de uma memória externa para a memória interna.
[0099] O termo “bloco de predição” empregado acima refere-se ao bloco atual que é para ser predito. É um bloco dentro da imagem que pode ser obtido subdividindo a imagem em blocos dimensionamento igualmente ou diferentemente (por exemplo por particionamento hierárquico de uma unidade de árvore de codificação, CTU nas unidades menores). O bloco pode ser quadrado ou mais geralmente retangular porque são tipicamente formas também empregadas em codificadores/decodificadores atuais. Entretanto, a presente divulgação não é limitada por qualquer tamanho/forma do bloco.
[0100] O aparelho incluindo o circuito de processamento pode ser o codificador ou o decodificador ou até um aparelho incluindo tal codificador ou decodificador, por exemplo um dispositivo de gravação e/ou um dispositivo de reprodução.
[0101] Posições de amostras fracionadas são posições entre as posições de amostras de imagem real obtidas pela reconstrução da imagem de referência que foi codificada como mostrado na Figura 1. Assim, as posições fracionadas devem ser obtidas por interpolação com base nas posições inteiras mais próximas. Detalhes de uma filtragem de interpolação de exemplo que é usada por H.265 pode ser encontrada na Seção “5.3 Fractional Sample
Interpolation” do livro de Codificação de Vídeo de Alta Eficiência (HEVC) de Sze et. al., Springer, 2014.
[0102] Filtragem de interpolação usualmente aplica filtros diferentes de modo a gerar posições de pel (amostra) fracionada diferentes. Como um exemplo seguindo 1D filtros separáveis são aplicados para gerar posições de um quarto de pel e meio pel em padrão de compressão de vídeo H.265: Fase Coeficientes de filtro luma VA [-1,4,-10,58,17,-5,1)/64 a [-1,4,-11,40,40,-11,4,-11/64
[0103] Como pode ser visto a partir da tabela acima, a filtragem de interpolação requer várias amostras em torno da posição pel fracionada, correspondente às derivações de filtro (número de coeficientes na tabela). Usando os filtros de exemplo acima de modo a gerar uma posição de meio pel 4 amostras inteiras a partir da esquerda/topo e direita/fundo são requeridas. Deve ser notado que o comprimento do filtro de interpolação é diferente para posições de amostras de um quarto de pel (que é derivação 7) que as posições de amostras de meio pel (que é derivação 8).
[0104] Em algumas modalidades da invenção, o filtro de interpolação de um tamanho de derivação predefinido avalia amostras inteiras apenas dentro de uma janela dada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca. A janela pode incluir muito mais amostras que as efetivamente usadas em computações de um certo bloco de predição. Isto é devido ao fato de que a operação de busca de refinamento é usualmente implementada usando um método de busca rápida (como oposto ao método de busca de força bruta), de acordo com o qual algumas das amostras não são avaliadas dependendo da progressão gradual na operação de busca. Como um resultado o número de iterações de correspondência de modelo bem como as amostras que são usadas em computações para operação de busca de refinamento devem mudar para cada bloco de predição.
[0105] A presente divulgação configura os limites superiores (divisão territorial) para as amostras inteiras que podem ser usadas durante a operação de busca de refinamento, considerando que a filtragem de interpolação necessita ser aplicada para posições de amostras fracionadas. Isto corresponde ao termo
“amostras inteiras acessíveis para correspondência de modelo”. Cujas amostras são efetivamente acessadas dependendo do tipo de formação do espaço de busca como será exemplificado a seguir.
[0106] A figura 7 ilustra um bloco de codificação (bloco de predição) e as amostras correspondentes da janela. É notado que as amostras mostradas na Figura 7 são amostras de imagem de referência e o bloco de codificação aqui é efetivamente um bloco correspondendo em tamanho e posição ao bloco atual no quadro atual para o qual o vetor de movimento é para ser derivado na imagem de referência. Assim, de fato, o bloco de codificação na Figura 7 é de fato um bloco colocalizado para o bloco para o qual o predito é buscado. Entretanto, para razões de simplicidade, este bloco é referido como “bloco de codificação” a seguir.
[0107] Neste exemplo, vetor de movimento não refinado MVO aponta para uma posição de amostra inteira (O vetor de movimento inicial pode apontar para uma posição de amostra fracionada, posição de amostra inteira é selecionada apenas para facilidade de demonstração). A granularidade de busca de refinamento de vetor de movimento é 1 amostra inteira, significando que uma vez que o ponto de começo é uma amostra inteira, apenas pontos de amostra inteira são buscados. A busca é realizada, neste exemplo, em um espaço de busca gradualmente em desenvolvimento. Isto significa que o espaço de busca está em cada iteração avançada adicionando novas posições de busca dependendo da melhor direção em termos de função custo para as posições testadas anteriormente.
[0108] Tal abordagem é ilustrada em uma maneira simplificada na Figura 8. Na Figura 8, o vetor de movimento inicial apontou para o ponto central
180. O espaço de busca é gradualmente construído em torno na posição de vetor de movimento inicial. Na primeira etapa, quatro posições imediatamente adjacentes no topo, fundo, esquerda e direita à posição 810 apontada pelo vetor de movimento inicial bem como a posição 810 apontada pelo vetor de movimento inicial são testadas. Com base na direção que resulta em uma função custo mais baixa dentre os cinco pontos testados, posições adicionais a serem testadas são adicionadas ao espaço de busca. Neste exemplo, a função custo mais baixa pode ser vista no ponto direito e então o espaço de busca foi estendido por três pontos adicionais na direção direita horizontal na segunda etapa. Na segunda etapa a função custo mais baixa pode ser vista no ponto direito (com respeito ao ponto de custo mais baixo da primeira etapa), resultando em uma extensão adicional do espaço de busca em três pontos na direção direita horizontal. Na terceira etapa a função custo mais baixa é observada novamente no ponto direito com respeito ao ponto de custo mais baixo da etapa 2 e resulta na extensão do espaço de busca por três mais pontos na direção direita horizontal. De acordo com o exemplo na Figura 8, três mais etapas são realizadas nas direções de topo, topo e direita nesta ordem. No exemplo um padrão em forma de diamante (consistindo em 5 pontos de busca) é usado para cada iteração e o espaço de busca é estendido de modo a completar os pontos de busca faltantes em cada etapa.
[0109] Em cada iteração da determinação de espaço de busca, o espaço de busca pode crescer em uma ou mais posições de amostras inteiras. Retornando agora à Figura 7 no exemplo em que o número máximo de iterações de busca é 4. Uma vez que o número máximo de 4 iterações são possíveis, todas as amostras mostradas na esquerda necessitam ser recuperadas da memória para realizar a operação de busca, no caso de desenvolvimento gradual do espaço de busca ir para a esquerda. Similarmente, extensão de 4 amostras para o topo é necessária. Assim, o espaço de busca é estendido em ambas direções (esquerda-direita e topo-fundo) uma vez que o MV refinado pode mover em qualquer direção e as implementações de hardware requerem que todas dentre as amostras que podem ser requeridas sejam trazidas da memória externa antes da aplicação de busca de refinamento. Se o espaço de busca desenvolver na direção de fundo ou direita, extensão por 4 amostras adicionais é necessária uma vez que a correspondência de modelo com um modelo correspondente ao tamanho do bloco de codificação (bloco de predição) irá necessitar acessar algumas destas amostras. Mais adicionalmente, as amostras de canto (p.ex. topo-direito) devem ser trazidas da memória, uma vez que implementações de hardware tipicamente não podem trazer formas irregulares (acesso retangular é mais factível).
[0110] É notado que o desenvolvimento de espaço de busca iterativa descrito acima é apenas exemplar e as regras e números de pontos para estender o espaço de busca em cada iteração pode diferir, p.ex. ser especificado em uma maneira diferente.
[0111] A Figura 8 também mostra um cenário que pode ocorrer devido às regras de acesso à memória externa descritas acima. O número de amostras que são trazidas da memória externa é muito maior que as amostras que são efetivamente usadas na etapa de computação. Assumindo que o modelo aqui é apenas uma grande amostra (por razão de simplicidade), os círculos brancos representam amostras que são recuperadas da memória externa e as amostras sombreadas que são efetivamente usadas. Entretanto, tal redundância é necessária se o número de acessos à memória externa é para ser mantido baixo uma vez que quando o bloco atual é começado a ser processado, as amostras efetivamente necessárias não são conhecidas ainda.
[0112] É notado que o espaço de busca pode também ser definido em uma maneira diferente, por exemplo como uma forma estável localizada na posição apontada pelo vetor de movimento inicial. A forma pode ser qualquer forma tal como quadrado, retângulo, diamante, ou semelhante.
[0113] A Figura 9 ilustra um exemplo em que o espaço de busca pode também incluir amostras fracionadas. Nas Figura 7 e 8, a busca de vetor de movimento foi realizada em amostras inteiras resultantes nas posições indicadas por pontos grandes de linha sólida incluídos na janela de acesso. Se agora a busca é realizada em uma amostra que tem resolução de meio pel (ponto de linha sólida menor), de modo a gerar a amostra fracionada, retratada no lado direito, três mais colunas de amostras necessitam ser recuperadas da memória também, assumindo que o filtro de interpolação é simétrico e tem oito derivações. Mais adicionalmente o mesmo deve ser aplicado no lado esquerdo (extensão por 3 colunas de píxeis) devido ao fato que operação de busca é simétrica (pode mover iterativamente para a esquerda e direita) de modo que um píxel fracionado possa estar localizado no lado esquerdo da janela.
[0114] Como um resultado devido a filtragem de interpolação o número de amostras necessárias a serem recuperadas da memória é adicionalmente aumentado, indicado pela linha tracejada agora também incluída nos círculos de linha pontilhada representando as posições adicionadas devido à interpolação fracionada. Similarmente se um permite metade por posições na direção vertical a ser buscada também, a janela das amostras a ser acessada da memória necessita ser estendida na direção vertical também (não mostrado no exemplo da Figura 9), nos lados de topo e fundo.
[0115] Janela de acesso à memória é definida como retângulo que engloba todas as amostras que necessitam ser recuperadas da memória de modo a realizar a busca de vetor de movimento para um bloco de predição (bloco de codificação). A janela de acesso à memória não apenas inclui as efetivas amostras que são requeridas, mas também todas as amostras remanescentes que têm a possibilidade de serem acessadas durante a operação de busca de vetor de movimento. No exemplo da Figura 9, a busca de vetor de movimento moveu para a direita. Mas pode ter sido movida para a direção da esquerda também, que não é conhecida antecipadamente. Consequentemente, de modo a não acessar a memória externa muitas vezes, a janela de acesso à memória (ou janela de acesso) inclui todas as amostras acessíveis pelo processamento respectivo.
[0116] A Figura 10 mostra uma janela de acesso à memória para refinamento de vetor de movimento. Ponto central 1010 é a posição apontada pelo vetor de movimento de entrada não refinado (vetor de movimento inicial obtido ou do fluxo de bits ou por correspondência de modelo realizada anteriormente ou testando os candidatos como descrito acima). De modo a evitar aumento adicional do tamanho de janela devido à adição de posições fracionadas ao espaço de busca, refinamento de vetor de movimento é realizado de acordo com as seguintes regras:
[0117] A) Uma janela de acesso à memória para refinamento é definida em torno da coordenada de vetor de movimento inicial não refinado (p.ex. posição apontada pelo vetor de movimento inicial). A janela identifica o número máximo de amostras de píxel que necessitam ser acessadas da memória de modo a realizar refinamento de vetor de movimento por correspondência de modelo em um espaço de busca.
1. Neste exemplo, para fins de simplicidade, o tamanho do bloco atual (tamanho de bloco de codificação) é amostra 1x1, mas pode ser maior e tipicamente seria maior.
2. Ajanela de acesso à memória é definida como a extensão em torno do bloco de codificação, tal como 4 amostras da esquerda/direita e 4 amostras do topo/fundo mostradas na figura.
[0118] B) As coordenadas de píxel fracionado são acessadas para refinamento de MV apenas se amostras necessárias para interpolação situam-
se dentro da janela de acesso à memória.
[0119] O requerimento B assegura que a janela de acesso definida pelas amostras necessárias para refinamento de vetor de movimento em amostras inteiras não é adicionalmente estendida. As efetivas amostras fracionadas acessíveis de acordo com esta regra são dadas pelo tamanho e forma do filtro de interpolação. Consequentemente, na Figura 10, assumindo um filtro de interpolação com 6 derivações, a linha pontilhada indica uma região em que as amostras fracionadas podem estar localizadas. Entretanto, é notado que posições de píxel fracionadas adicionais podem ser permitidas como será mostrado com referência à Figura 12. Em particular, posições fracionadas que requerem filtragem apenas vertical ou apenas horizontal que não requer extensão através da janela de acesso podem ainda ser usadas. Assim, limitar as posições fracionadas para a janela de amostra fracionada mostrado na Fig. 10 pode ser muito limitante para algumas aplicações.
[0120] Em outras palavras, de acordo com uma modalidade, a janela de acesso à memória inclui todas as amostras que são acessíveis pelo refinamento de vetor de movimento realizado nas amostras inteiras e não inclui amostras que não são acessíveis pelo refinamento de vetor de movimento realizado em amostras inteiras. Assim, se amostras fracionadas são usadas para refinamento de vetor de movimento, elas são obtidas em uma maneira que não requer amostras adicionais.
[0121] No exemplo da Figura 10, isto é alcançado apenas permitindo amostras fracionadas que, para uma forma e tamanho de filtro de interpolação predefinidos, não requer amostras fora da janela de acesso. A janela de amostra fracionada pontilhada estende dentro da janela de acesso. Se T é o número de derivações de filtro de interpolação, então a borda da janela de amostra fracionada é definida pelas amostras inteiras em uma distância 1020 de floor(T/2)-1 a partir das amostras de borda de janela de acesso. Em particular, neste exemplo T-6, T/2=3 e a distância da amostra de borda da janela de acesso para a amostra de janela fracionada é T/2-1=2 amostras inteiras.
[0122] Entretanto, é notado que esta determinação da janela fracionada é um mero exemplo. Em geral, a janela pode ter uma forma e tamanho diferentes. A interpolação vertical e horizontal pode ser feita por filtros com tamanhos diferentes. Mais adicionalmente, algumas posições fracionadas podem requerer filtro em ambas direções vertical e horizontal que possam em geral ser separáveis ou não separáveis.
[0123] Alternativamente, o filtro de interpolação pode ser modificado (p.ex. número de derivações pelo menos em uma direção reduzida) para as posições fracionadas fora da janela pontilhada na Figura 10. Entretanto, para fins de implementação e por razões de qualidades de interpolação, tal solução pode ser menos atrativa.
[0124] A janela para acesso à memória pode ser definida de várias maneiras. A Figura 11 ilustra um exemplo em que a janela de acesso à memória é definida como extensões EXT na esquerda/direita ou cima/baixo do bloco de codificação (correspondente à localização do bloco de codificação dado pelo vetor de movimento inicial). As quantidades de extensão podem depender do tamanho e da forma da codificação ou bloco de predição. Na Figura 11, a extensão é de 4 amostras longas em cada direção (topo, fundo, esquerda, direita). Entretanto, é notado que a EXT pode também tomar diferentes valores para diferentes direções, dependendo do tamanho de bloco (que pode ter tamanho diferente na direção vertical e horizontal) e/ou da forma e tamanho do espaço de busca.
[0125] Por exemplo, de acordo com um exemplo, a janela é definida como N colunas de amostras inteiras e M linhas de amostras inteiras em relação ao vetor de movimento inicial de bloco de predição, pelo menos um dentre N e M sendo valores inteiros diferentes de zero (ambos sendo números inteiros, mas um deles pode ser zero). Na Figura 11, os Ne M são indicados mas têm o mesmo tamanho. Como mencionado acima, N e M podem ter um tamanho diferente. N e M são números inteiros e pelo menos um deles é diferente de zero. Tomando parâmetros N e M e a forma e tamanho de modelo, o tamanho da janela de acesso pode ser determinado. Em particular, se o modelo tem T1 linhas e T2 colunas, o tamanho da janela de acesso à memória pode ser calculado como (N+T2+N) linhas e (M+T1+M) colunas. Isto é porque a busca pode ir N amostras esquerdas ou direitas resultando em 2N amostras horizontalmente e M amostras para cima ou baixo resultando em 2M amostras verticalmente.
[0126] Por outro lado, para abordagens específicas das construções de espaço de busca como o descrito com referência às Figura 7 e 8, a janela de acesso à memória pode ser definida em termos de número máximo de iterações de refinamento (iterações de construção de espaço de busca) e tamanho de etapa de iteração (em termos de distância de amostra máxima alcançável em cada iteração), que pode ser mais tarde convertido a quantidade máxima de deslocamento na esquerda, direita, cima e baixo. Portanto a janela de acesso à memória é definida como o deslocamento máximo em cada direção. Por exemplo, as 4 iterações em que cada iteração pode avançar o espaço de busca no máximo em uma posição de amostra inteira resulta em EXT=4.
[0127] Em outras palavras, de acordo com este exemplo, o conjunto de circuitos de processamento é configurado para determinar o refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma dada direção por uma (ou mais) dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, a janela é definida por um número máximo predefinido de iterações.
[0128] É notado que em geral, a presente divulgação não é limitada a qualquer forma ou formato particular ou tipo de determinação do espaço de busca. Em outro exemplo, espaço de busca é uma subjanela retangular da janela de modo que todas as amostras inteiras acessadas para filttagem de interpolação de cada amostra fracionada na subjanela estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido. Um exemplo similar já foi discutido acima com referência à Figura
10. Na Figura 10, o espaço de busca é dado por 9x9 amostras inteiras e amostras fracionadas localizadas dentro da região formada por 5x5 amostras inteiras com a posição de vetor de movimento inicial em seu centro.
[0129] A definição da janela de acesso à memória pode ser relevante de modo a possivelmente incluir o parâmetro de sinalização correspondente no fluxo de bits (por exemplo parâmetro EXT ou parâmetros N e M). Entretanto, o tamanho de janela de acesso à memória pode também ser definido no padrão ou derivável com base nos outros parâmetros de codificação (tais como tamanho de modelo, tamanho de bloco de predição, resolução de imagem, etc.).
[0130] A Figura 12 ilustra um exemplo com posições de píxel fracionadas diferentes. Para este exemplo, é assumido que o tamanho do modelo é 1x1 amostras (para simplicidade) e filtro de interpolação de 6 derivações é usado para cada posição de meio pel. No exemplo, as coordenadas de busca que são buscadas são denotadas por números 1-6 que indicam a ordem que eles são verificados, p.ex. a ordem em que a busca de correspondência de modelo é realizada. Posições 1 e 2 são posição de meio pel (significando que elas estão localizadas no meio entre duas posições de amostras inteiras, pel é uma abreviação para píxel e o termo píxel é usado intercambiavelmente com o termo amostra neste pedido). Posições 1 e 2 são verificadas uma vez que a extensão necessária para filtragem de interpolação situa-se dentro da janela de acesso à memória (3 amostras inteiras na diagonal topo-esquerda e 3 amostras inteiras fundo-direita para posição 1; 3 amostras inteiras para a direita e 3 amostras inteiras para a esquerda da posição 2). Note que ponto de amostra fracionada 1 requer extensão tanto na direção horizontal quanto na vertical, ambas as quais situam-se dentro da janela. Posição 2 apenas requer extensão para a direita e para a esquerda.
[0131] Posições 3, 4 e 5 são posições de amostras inteiras (pel inteiro). Elas podem ser buscadas uma vez que nenhuma extensão para filtragem de interpolação for necessária. Amostra fracionada (meio pel) 6 pode também ser acessada uma vez que apenas uma extensão na direção vertical (por três posições inteiras cima e baixo respectivamente) é necessária que ainda está dentro da janela. Nenhuma extensão na direção horizontal é necessária. Ainda, na implementação acima pontos de amostra fracionada são acessados apenas se extensão de interpolação necessária está dentro da janela de acesso à memória.
[0132] Em outras palavras, de acordo com um exemplo, o filtro de interpolação é um filtro unidimensional que avalia K amostras inteiras horizontais ou verticais quando a posição fracionada estiver localizada em uma respectiva linha horizontal ou vertical das amostras inteiras.
[0133] Tais posições fracionadas unidimensionais (p.ex. posições 2 e 6 na Figura 12) localizadas em uma linha entre duas posições inteiras verticalmente adjacentes requerem uma extensão para interpolação apenas na direção horizontal ou apenas na direção vertical, p.ex. são para serem filtradas apenas por um filtro de interpolação horizontal ou vertical respectivo. De modo a ser capaz de fazer uso de tantas posições fracionadas quanto possível, em adição às posições fracionadas permitidas no exemplo da Figura 10, pode ser vantajoso adicionar posições unidimensionais adicionais tais como posição 6 mostrada na Figura 12.
[0134] Em outras palavras, o espaço de busca inclui adicionalmente posições fracionadas localizadas fora da subjanela fracionada (cf. janela pontilhada da Figura 10): — adjacentes no topo ou no fundo da subjanela e localizadas na linha horizontal de amostras inteiras ou — adjacentes no lado esquerdo ou no direito da subjanela e localizadas na linha vertical de amostras inteiras.
[0135] É notado que algumas amostras fracionadas podem requerer mais amostras inteiras em uma dada direção, horizontal ou vertical. Isto pode ser O caso se o tamanho de filtro predefinido é diferente para gerar a posição nas direções respectivas.
[0136] A Figura 13 ilustra um exemplo das posições de meio-pel fracionadas 1 e 2 que não podem ser acessadas. Elas estão localizadas fora da subjanela mostrada na Figura 10. Para este exemplo, é assumido que filtro de interpolação de derivação 6 é usado para posições de meio pel. Os pontos de busca de meio pel 1 e 2 não são permitidos a serem buscados, uma vez que filtragem de interpolação horizontal ou vertical requer amostras que se situam fora da janela. As posições de amostras inteiras necessitadas pelo filtro horizontal para posição de filtro 1 e o filtro vertical para posição de filtro 2 são indicadas por uma linha tracejada na figura 13. Como pode ser visto, círculos tracejados correspondem a posições inteiras que não estão dentro da janela de acesso à memória.
[0137] Nos exemplos acima, a janela de acesso à memória foi definida de modo que nenhuma amostra fora da janela seja acessada (até para filtragem de interpolação) durante o processo de refinamento de vetor de movimento. Em outras palavras janela de acesso à memória é a menor janela que engloba as amostras que pode necessitar ser acessada para refinamento de vetor de movimento e interpolação. Mais adicionalmente, a janela de acesso à memória tem sido projetada de acordo com as amostras necessárias para refinamento de vetor de movimento com base nas posições de amostras inteiras. Então, apenas posições fracionadas são permitidas que não requerem extensão adicional de tal janela de acesso por posições inteiras adicionais.
[0138] É notado que os exemplos acima foram fornecidos para interpolação de meio-pel. Entretanto, a presente divulgação não é limitada a isto. Em geral, qualquer posição fracionada tal como 1/4, 1/8, ou semelhantes pode ser usada, p.ex. interpolada usando o filtro de interpolação correspondente.
[0139] O conjunto de circuitos de processamento descrito com referência à Figura 6 pode ser empregado em um codificador e/ou decodificador como mostrado nas Figuras 1 e 2.
[0140] Em particular, um aparelho de codificação pode ser fornecido para codificar imagens de vídeo divididas em blocos de predição em um fluxo de bits, o aparelho de codificação compreendendo: o aparelho para determinação de um vetor de movimento para um bloco de predição como descrito acima incluindo o conjunto de circuitos de processamento; e um conjunto de circuitos de codificação para codificar diferença entre o bloco de predição e o preditor dado por um bloco de predição em uma posição especificada pelo vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
[0141] Unidades e funções adicionais do codificador descritas acima com referência à Figura 1 podem também ser fornecidas ou implementadas no conjunto de circuitos de processamento.
[0142] Correspondentemente, um aparelho de decodificação pode ser fornecido para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos de predição, o aparelho de decodificação compreendendo: uma unidade de análise para analisar a partir do fluxo de bits de um vetor de movimento inicial e uma diferença codificada entre um bloco de predição e um preditor dado por um bloco de predição em uma posição especificada por um vetor de movimento refinado; o aparelho para determinação do vetor de movimento refinado para o bloco de predição como descrito acima incluindo o conjunto de circuitos de processamento; e um conjunto de circuitos de decodificação para reconstruir o bloco de predição como uma soma da diferença analisada e do preditor dado pelo bloco de predição na posição com base no vetor de movimento refinado. Por exemplo, o preditor pode ser dado diretamente pela posição do vetor de movimento refinado. Entretanto, pode haver etapas de processamento adicionais de obtenção do vetor de movimento do bloco de predição atual que pode adicionalmente mudar o vetor de movimento (tal como filtragem, recorte, refinamento adicional ou semelhantes).
[0143] Unidades e funções adicionais do decodificador descrito acima com referência à Figura 2 podem também ser fornecidas ou implementadas no conjunto de circuitos de processamento.
[0144] Mais adicionalmente, as modalidades da invenção foram descritas a partir do ponto de vista do aparelho com o conjunto de circuitos de processamento para realizar refinamento de vetor de movimento. Entretanto, a presente divulgação não é limitada a isto mas também fornece os métodos correspondentes que incluem as etapas de processamento correspondentes àquelas para realizar as quais o conjunto de circuitos de processamento descrito acima é configurado.
[0145] Em particular, um método é fornecido para determinação de um vetor de movimento para um bloco de predição incluindo as etapas de: obter um vetor de movimento inicial e um modelo para o bloco de predição; determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca, em que o dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
[0146] A derivação corresponde aos coeficientes de filtro. O tamanho de derivação corresponde à ordem de filtro. Aqui, é assumido que o filtro é um filtro linear. Em alguns exemplos, o filtro pode ser simétrico, p.ex. tendo coeficientes simétricos. Entretanto, a presente divulgação não é limitada a filtros simétricos ou filtros lineares ou quaisquer tipos de filtros. Em geral, as posições fracionadas podem ser obtidas em qualquer modo com base nas amostras adjacentes.
[0147] Mais ainda um método de codificação é fornecido para codificar imagens de vídeo divididas em blocos de predição em um fluxo de bits, o método de codificação compreendendo as etapas de determinar um vetor de movimento para um bloco de predição de acordo com qualquer um dos métodos descritos acima; bem como codificar diferença entre o bloco de predição e o preditor dado por um bloco de predição em uma posição com base no vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
[0148] O método de codificação pode adicionalmente incluir etapas descritas com referência às funções dos blocos na Figura 1.
[0149] Além disso, um método de decodificação é fornecido para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos de predição, o método de decodificação compreendendo: analisar a partir do fluxo de bits um vetor de movimento inicial e uma diferença codificada entre um bloco de predição e um preditor dado por um bloco de predição em uma posição especificada por um vetor de movimento refinado; determinar o vetor de movimento refinado para o bloco de predição de acordo com quaisquer dos métodos mencionados acima; e reconstruir o bloco de predição como uma soma da diferença analisada e do preditor dado pelo bloco de predição na posição especificada pelo vetor de movimento refinado.
[0150] O método de decodificação pode adicionalmente incluir etapas descritas com referência às funções de blocos na Figura 2.
[0151] Entretanto, é notado que Figura 1 e 2 não são limitadas à presente divulgação. Elas meramente fornecem um exemplo não limitante de uma implementação da presente invenção dentro do codificação e/ou decodificador existente.
[0152] A Figura 14 mostra uma implementação exemplar de um método de acordo com uma modalidade. Uma função InterpolationFilterLength(C) retoma o número de amostras adicionais necessárias nas direções horizontal e vertical de modo a aplicar filtragem de interpolação. O número de amostras necessárias muda dependendo de: — Se a coordenada de busca é posição de pel inteiro, meio pel, ou um quarto de pel.
— Se filtros de interpolação horizontal, vertical ou ambos necessitam ser aplicados para gerar a amostra de coordenada de busca.
[0153] O método começa na etapa 1430. Em particular, a posição de vetor de movimento inicial é a primeira posição de espaço de busca C(x,y) a ser testada. A função InterpolationFiltrLength(C) retorna para esta posição o número de amostras nas direções horizontal e vertical de modo a aplicar filtragem de interpolação. Se a soma de C(x,y) e InterpolationFilterLength(C(x,y)) exceder o tamanho da janela de acesso definida por MAX (max x, max y), então a posição não é usada como uma parte do espaço de busca. Ao invés, a próxima coordenada de busca C(x, y) é selecionada na etapa 1440 para ser testada (por exemplo, x ou y ou ambos são incrementados, dependendo da ordem em que o espaço é realizado). Se a posição testada na etapa 1430 não requerer exceder a janela de acesso, na etapa 1410 a correspondência de modelo como uma parte do refinamento de vetor de movimento é realizada para aquela posição C(x,y). Então é testada na etapa 1420, se ainda tiverem posições de espaço de busca restantes para correspondência de modelo. Se não, o refinamento é terminado. Se sim, a próxima coordenada é selecionada na etapa 1440 e a condição de etapa 1430 é avaliada para a nova posição. Estas etapas são repetidas.
[0154] Como já descrito acima, existem possibilidades alternativas para definir as posições fracionadas permitidas (tais como a janela na Figura 10, possivelmente estendida pelas amostras fracionadas adicionais como mostrado na Figura 12). Com base nisto, uma condição mais simples pode ser formulada na etapa 1430 meramente avaliando se a posição C(x,y) pertence à janela permitida. Por exemplo, a busca é restrita aos pontos de busca inteiros e os pontos fracionados dentro de uma janela de busca fracionada encapsulada na janela de acesso à memória como a ilustrada na figura 10.
[0155] O espaço de busca pode incluir uma subjanela de busca retangular da janela, e o refinamento do vetor de movimento inicial pode ser determinado por correspondência de modelo com o dito modelo na subjanela de busca retangular tal como as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela de busca estão localizadas dentro da dita janela para filtro de interpolação com o tamanho de derivação predefinido.
[0156] Mais precisamente, as posições inteiras e fracionadas permitidas podem ser determinadas com base na distância do ponto de busca a partir do ponto associado ao vetor de movimento não refinado inicial. Especificamente, posições de busca são permitidas, que estão em uma distância P na direção x a partir do vetor de movimento não refinado inicial e em uma distância R na direção y a partir do vetor de movimento não refinado inicial. Especificamente, a janela de acesso à memória é definida com respeito ao ponto da imagem de referência apontada pelo vetor de movimento não refinado inicial. Isto é exemplificado na figura 15, em que o ponto central da janela de acesso à memória é um ponto de meio pel entre dois pontos inteiros ao longo do eixo horizontal. Na figura a janela de acesso à memória é definida como extensões na direção x (N) e na direção y (M), em que N e M são números inteiros pelo menos um dos quais é diferente de zero. De acordo com uma implementação particular uma subjanela, p.ex. subjanela para pontos de busca (ou janela de busca), é definida dentro da janela de acesso à memória, definida como extensões na direção x (P) e na direção y (R), que inclui todos os pontos de busca de pel inteiro e pel fracionado que são permitidos a serem buscados por correspondência de modelo. Na figura 15, os números P e R são iguais a 1 para fins de ilustração. Consequentemente se a distância de um ponto de busca para o ponto central for maior que P ou R, na direção x e y respectivamente, o ponto de busca não está incluído na janela de acesso à memória. Neste exemplo específico, uma vez que pontos de busca fracionada requerem acesso às amostras adicionais, a janela de acesso à memória definida por N e M encapsula ou inclui a janela secundária. P e R podem ser números reais descrevendo a distância em unidades de distância entre 2 pontos de amostra inteira na direção horizontal e vertical. Como um exemplo se P e R são definidos como P=1,5 e R=1,5, então um ponto de busca (inteiro ou fracionado) que está a uma distância 1,5 na direção x para o ponto central inicial é permitido a ser buscado pelo processo de refinamento de vetor de movimento. Adicionalmente na figura 15, as extensões nas direções esquerda-direita e direções topo-fundo são definidas a serem iguais, P e R respectivamente, que em geral pode ser desigual. Em geral todas as 4 extensões para a esquerda, topo, direita e fundo podem ser definidas independentemente.
[0157] A Figura 16 descreve uma implementação possível de um processo de refinamento iterativo em uma janela de acesso à memória. De acordo com a figura 16, a busca de refinamento é aplicada em uma maneira iterativa, significando que apenas até K pontos de busca são buscados em cada iteração. Primeiramente K pontos de busca são determinados em torno do ponto de começo inicial ou em torno do melhor ponto de busca que é selecionado com um resultado de iteração anterior (1610). Em segundo lugar se todos os K pontos de busca estão dentro da janela de acesso à memória (1620), a operação de refinamento é aplicada a K pontos de busca. Entretanto se qualquer um dos K pontos estiver fora da janela de acesso à memória, então as iterações de busca são terminadas. Em terceiro lugar a condição do número máximo de iterações de busca é verificada (1630) e iterações são terminadas se a iteração atual exceder o número máximo permitido de iterações de busca. Finalmente a busca de refinamento é aplicada a K pontos de busca (1640) e o melhor ponto dentre os K pontos de busca é selecionado de acordo com uma função custo correspondente (1650). Aplicação de 1640 e 1650 aumenta o número de iteração por 1. Após 1650 o processo é repetido usando o melhor ponto que é a saída de 1650 como entrada para 1610. De acordo com a figura 16, o número K que determina o número de pontos de busca que são buscados durante uma iteração define o número máximo de pontos de busca para cada iteração. O número K e o padrão dos pontos que são buscados para cada iteração devem ser diferentes, dependendo da estratégia de busca que é usada. Por exemplo de acordo com uma estratégia de busca de exemplo K=5 pontos de busca (centro, esquerda, direita, abaixo e acima) podem ser buscados na primeira iteração enquanto K=3 pontos (centro, abaixo-direita, abaixo-esquerda) pode ser buscado na segunda iteração. O número K é um número que é menor que o número total de pontos de busca dentro da janela de acesso à memória.
[0158] De acordo com a implementação particular descrita pela figura 16, se um único ponto de busca dentre os K pontos de busca de uma iteração estiver fora da janela de acesso à memória, as iterações de busca são terminadas. Pode haver outros pontos nos K pontos de busca que estão dentro da janela de acesso à memória, mas uma vez que as iterações são terminadas, aqueles pontos dentro da janela de acesso à memória também não são buscados. A finalidade da implementação particular é reduzir o número de iterações de busca e ao mesmo tempo garantir que os pontos de busca que caem fora da janela de acesso à memória não são buscados.
[0159] De acordo com 1620, verificar se um ponto de busca está dentro da janela de acesso à memória pode ser realizado verificando a distância do ponto de busca para o ponto de começo inicial. Portanto se o componente x da distância é maior que N ou se o componente y da distância é maior que M, o ponto de busca é determinado para estar fora da janela de acesso à memória. Em geral N e M são números inteiros, pelo menos um dos quais é maior que O.
[0160] O refinamento do vetor de movimento inicial pode ser determinado por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre melhores posições de correspondência do espaço de busca em uma iteração mais recente, em que a iteração é encerrada quando pelo menos uma amostra dentro do espaço de busca da iteração mais recente estiver fora da subjanela de busca.
[0161] A Figura 17 é um fluxograma descrevendo um possível esquema de iteração aplicável à subjanela de busca como descrito na Figura 15. O fluxograma da figura 17 é o mesmo que o fluxograma descrito na figura 16 exceto pela etapa 1720. De acordo com a etapa 1720 da figura 17, a decisão de realizar busca de refinamento nos K pontos de busca é decidida verificando se todos os K pontos estão dentro da subjanela para pontos de busca. Em outras palavras, como descrito na figura 15, se a distância de qualquer um dos K pontos de busca para o ponto central apontados pelo vetor de movimento não refinado inicial é maior que P ou R, então a condição descrita em 1720 avalia como falsa e iterações são terminadas.
[0162] A determinação de vetor de movimento com limitação de janela de memória como descrita acima pode ser implementada como uma parte de codificação e/ou decodificação de um sinal de vídeo (imagem de movimento). Entretanto, a determinação de vetor de movimento pode também ser usada para outros fins em processamento de imagem tal como detecção de movimento, análise de movimento, ou semelhantes sem limitação a serem empregados para codificação/decodificação.
[0163] A determinação de vetor de movimento pode ser implementada como um aparelho. Tal aparelho pode ser uma combinação de um software e hardware. Por exemplo, a determinação de vetor de movimento pode ser realizada por um chip tal como um processador para fins gerais, ou um processador de sinal digital (DSP), ou um arranjo de porta programável de campo (FPGA), ou semelhantes. Entretanto, a presente invenção não é limitada à implementação em um hardware programável. Pode ser implementada em um circuito integrado específico de aplicação (ASIC) ou por uma combinação dos componentes de hardware acima mencionados.
[0164] A determinação de vetor de movimento pode também ser implementada por instruções de programa armazenadas em uma mídia legível por computador. O programa, quando executado, causa o computador a realizar as etapas dos métodos descritos acima. A mídia legível por computador pode ser qualquer mídia em que o programa é armazenado tal como um DVD, CD, drive USB (flash), disco rígido, armazenamento de servidor disponível através de uma rede, etc.
[0165] O codificador e/ou decodificador pode implementar em vários dispositivos incluindo um conjunto de TV, conversor digital, PC, tablet, telefone inteligente, ou semelhante, p.ex. qualquer dispositivo de gravação, codificação, transcodificação, decodificação ou reprodução. Deve ser um software ou um app implementando as etapas de método e armazenado/rodado em um processador incluído em um dispositivo eletrônico como aqueles mencionados acima.
[0166] Resumindo, a presente divulgação refere-se a refinamento de vetor de movimento. Como uma primeira etapa, um vetor de movimento inicial e um modelo para o bloco de predição são obtidos. Então, o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo em um espaço de busca. O espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.

Claims (23)

REIVINDICAÇÕES
1. Aparelho para determinação de um vetor de movimento para um bloco que inclui um conjunto de circuitos de processamento configurado para: obter um vetor de movimento inicial e um modelo para o bloco; determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca, em que o dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
2. Aparelho, de acordo com a reivindicação 1, em que a janela é definida como uma extensão em pelo menos uma dentre: esquerda e direita; e topo e fundo do bloco.
3. Aparelho, de acordo com a reivindicação 1 ou 2, em que a janela é definida em torno de uma posição apontada pelo vetor de movimento inicial e identifica um número de amostras a serem acessadas para realizar o refinamento do vetor de movimento inicial.
4. Aparelho, de acordo com qualquer uma das reivindicações precedentes, em que a janela é definida como N colunas de amostras inteiras e M linhas de amostras inteiras relacionadas ao vetor de movimento inicial de bloco, pelo menos um dentre N e M sendo valores inteiros diferentes de zero.
5. Aparelho, de acordo com qualquer uma das reivindicações precedentes, em que o conjunto de circuitos de processamento é configurado para determinar o refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre as melhores posições de correspondência do espaço de busca em uma iteração mais recente, a janela é definida por um número máximo predefinido das iterações.
6. Aparelho, de acordo com qualquer uma das reivindicações precedentes, em que o espaço de busca inclui uma subjanela retangular da janela de modo que todas as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
7. Aparelho, de acordo com qualquer uma das reivindicações 1 a 4, em que o espaço de busca inclui uma subjanela de busca retangular da janela, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo na subjanela de busca retangular de modo que as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela de busca estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
8. Aparelho, de acordo com a reivindicação 7, em que o conjunto de circuitos de processamento é configurado para determinar o refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre as melhores posições de correspondência do espaço de busca em uma iteração mais recente, em que a iteração é encerrada quando pelo menos uma amostra dentro do espaço de busca da iteração mais recente estiver fora da subjanela de busca.
9. Aparelho, de acordo com a reivindicação 6, em que o filtro de interpolação é um filtro unidimensional que avalia K amostras inteiras horizontais ou verticais quando a posição fracionada estiver localizada em uma respectiva linha horizontal ou vertical de amostras inteiras.
10. Aparelho, de acordo com a reivindicação 7, em que o espaço de busca inclui adicionalmente posições fracionadas localizadas fora da subjanela: - adjacentes no topo ou no fundo da subjanela e localizadas na linha horizontal de amostras inteiras ou - adjacentes no lado esquerdo ou no direito da subjanela e localizadas na linha vertical de amostras inteiras.
11. Aparelho de codificação para codificar imagens de vídeo divididas em blocos em um fluxo de bits, o aparelho de codificação compreendendo: o aparelho para determinação de um vetor de movimento para um bloco conforme definido em qualquer uma das reivindicações 1 a 10; um conjunto de circuitos de codificação para codificar diferença entre o bloco e o preditor dado por um bloco em uma posição com base no vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
12. Aparelho de decodificação para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos, o aparelho de decodificação compreendendo: uma unidade de análise para analisar a partir do fluxo de bits um vetor de movimento inicial e uma diferença codificada entre um bloco e um preditor dado por um bloco em uma posição especificada por um vetor de movimento refinado; o aparelho para determinação do vetor de movimento refinado para o bloco conforme definido em qualquer uma das reivindicações 1 a 10; conjunto de circuitos de decodificação para reconstruir o bloco como uma soma da diferença analisada e do preditor dado pelo bloco na posição especificada pelo vetor de movimento refinado.
13. Método para determinação de um vetor de movimento para um bloco que inclui as etapas de: obter um vetor de movimento inicial e um modelo para o bloco; determinar um refinamento do vetor de movimento inicial por correspondência de modelo com o dito modelo em um espaço de busca, em que o dito espaço de busca está localizado em uma posição dada pelo vetor de movimento inicial e inclui uma ou mais posições de amostras fracionadas, em que cada uma dentre as posições de amostras fracionadas que pertencem ao espaço de busca é obtida por filtragem de interpolação com um filtro de um tamanho de derivação predefinido que avalia amostras inteiras apenas dentro de uma janela, a dita janela sendo formada por amostras inteiras acessíveis para a correspondência de modelo no dito espaço de busca.
14. Método, de acordo com a reivindicação 13, em que a janela é definida como N colunas de amostras inteiras e M linhas de amostras inteiras relacionadas ao vetor de movimento inicial de bloco, Ne M sendo valores inteiros diferentes de zero.
15. Método, de acordo com a reivindicação 13 ou 14, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre as melhores posições de correspondência do espaço de busca em uma iteração mais recente, a janela é definida por um número máximo predefinido das iterações.
16. Método, de acordo com qualquer uma das reivindicações 13 a 15, em que o espaço de busca inclui uma subjanela retangular da janela de modo que todas as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
17. Método, de acordo com a reivindicação 13 ou 16, em que o espaço de busca inclui uma subjanela de busca retangular da janela, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo na subjanela de busca retangular de modo que as amostras inteiras acessadas para filtragem de interpolação de cada amostra fracionada na subjanela de busca estejam localizadas dentro da dita janela para o filtro de interpolação com o tamanho de derivação predefinido.
18. Método, de acordo com a reivindicação 17, em que o refinamento do vetor de movimento inicial é determinado por correspondência de modelo com o dito modelo em um espaço de busca o qual é estendido de modo iterativo em uma direção dada por uma dentre as melhores posições de correspondência do espaço de busca em uma iteração mais recente, em que a iteração é encerrada quando pelo menos uma amostra dentro do espaço de busca da iteração mais recente estiver fora da subjanela de busca.
19. Método, de acordo com a reivindicação 16, em que o filtro de interpolação é um filtro unidimensional que avalia K amostras inteiras horizontais ou verticais quando a posição fracionada estiver localizada em uma respectiva linha horizontal ou vertical de amostras inteiras.
20. Método, de acordo com a reivindicação 19, em que o espaço de busca inclui adicionalmente posições fracionadas localizadas fora da subjanela: - adjacentes no topo ou no fundo da subjanela e localizadas na linha horizontal de amostras inteiras ou - adjacentes no lado esquerdo ou no direito da subjanela e localizadas na linha vertical de amostras inteiras.
21. Método de codificação para codificar imagens de vídeo divididas em blocos em um fluxo de bits, o método de codificação compreendendo: determinar um vetor de movimento para um bloco conforme definido em qualquer uma das reivindicações 13 a 20; codificar diferença entre o bloco e o preditor dado por um bloco em uma posição com base no vetor de movimento determinado e para gerar fluxo de bits que inclui a diferença codificada e o vetor de movimento inicial.
22. Método de decodificação para decodificar a partir de um fluxo de bits imagens de vídeo divididas em blocos, o método de decodificação compreendendo: analisar a partir do fluxo de bits um vetor de movimento inicial e uma diferença codificada entre um bloco e um preditor dado por um bloco em uma posição especificada por um vetor de movimento refinado; determinar o vetor de movimento refinado para o bloco conforme definido nas reivindicações 13 a 20; reconstruir o bloco como uma soma da diferença analisada e do preditor dado pelo bloco na posição especificada pelo vetor de movimento refinado.
23. Mídia legível por computador que armazena instruções as quais quando executadas em um processador fazem com o que processador realize o método conforme definido em qualquer uma das reivindicações 13 a 22.
BR112020006969-8A 2017-10-09 2018-05-30 janela de acesso à memória limitada para refinamento de vetor de movimento BR112020006969A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EPPCT/EP2017/075710 2017-10-09
PCT/EP2017/075710 WO2019072368A1 (en) 2017-10-09 2017-10-09 LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
PCT/EP2018/064247 WO2019072425A1 (en) 2017-10-09 2018-05-30 MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT

Publications (1)

Publication Number Publication Date
BR112020006969A2 true BR112020006969A2 (pt) 2020-10-06

Family

ID=60080793

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020006969-8A BR112020006969A2 (pt) 2017-10-09 2018-05-30 janela de acesso à memória limitada para refinamento de vetor de movimento

Country Status (11)

Country Link
US (4) US11405632B2 (pt)
EP (1) EP3688991A1 (pt)
JP (3) JP6980911B2 (pt)
KR (4) KR102416348B1 (pt)
CN (6) CN115174934A (pt)
BR (1) BR112020006969A2 (pt)
CA (1) CA3078816C (pt)
MX (1) MX2020003725A (pt)
RU (1) RU2761511C2 (pt)
SG (1) SG11202003255VA (pt)
WO (2) WO2019072368A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US10863190B2 (en) * 2018-06-14 2020-12-08 Tencent America LLC Techniques for memory bandwidth optimization in bi-predicted motion vector refinement
CN110113608B (zh) * 2019-04-30 2022-12-16 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN117319645A (zh) * 2019-08-23 2023-12-29 北京字节跳动网络技术有限公司 用于处理视频数据的方法、装置以及计算机可读存储介质
KR20220080107A (ko) 2019-10-23 2022-06-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 참조 픽처 리샘플링을 위한 시그널링
JP7395727B2 (ja) 2019-10-23 2023-12-11 北京字節跳動網絡技術有限公司 ビデオ・データを処理する方法、装置及び記憶方法
WO2021163862A1 (zh) * 2020-02-18 2021-08-26 深圳市大疆创新科技有限公司 视频编码的方法与装置
EP4352960A1 (en) * 2021-05-17 2024-04-17 Beijing Dajia Internet Information Technology Co., Ltd. Geometric partition mode with motion vector refinement
US20230007238A1 (en) * 2021-06-30 2023-01-05 Qualcomm Incorporated Using unrefined motion vectors for performing decoder-side motion vector derivation
US20230093043A1 (en) * 2021-09-22 2023-03-23 Tencent America LLC Method and apparatus for adaptive reordering for reference frames

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4322343C2 (de) * 1992-07-06 1996-10-02 Mitsubishi Electric Corp Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
CN102263947B (zh) * 2010-05-27 2016-07-06 香港科技大学 图像运动估计的方法及系统
KR101422422B1 (ko) * 2010-12-21 2014-07-23 인텔 코오퍼레이션 Dmvd 처리 향상을 위한 시스템 및 방법
WO2012125178A1 (en) * 2011-03-15 2012-09-20 Intel Corporation Low memory access motion vector derivation
RU2559839C1 (ru) * 2011-06-24 2015-08-10 Нтт Докомо, Инк. Способ и устройство для компенсации движения с предсказанием
US11330284B2 (en) * 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
MX2018002477A (es) * 2015-09-02 2018-06-15 Mediatek Inc Metodo y aparato de derivacion de movimiento de lado de decodificador para codificacion de video.
CN105939475A (zh) * 2016-06-06 2016-09-14 中国矿业大学 一种高质量边信息生成方法
CN117528107A (zh) * 2016-11-28 2024-02-06 英迪股份有限公司 图像编码方法、图像解码方法及用于传送比特流的方法

Also Published As

Publication number Publication date
SG11202003255VA (en) 2020-05-28
JP2020537424A (ja) 2020-12-17
JP2022027770A (ja) 2022-02-14
US20230239489A1 (en) 2023-07-27
CN115174932B (zh) 2024-01-02
JP7279140B2 (ja) 2023-05-22
RU2020115378A (ru) 2021-11-15
WO2019072368A1 (en) 2019-04-18
RU2761511C2 (ru) 2021-12-09
CN115243051B (zh) 2023-12-15
EP3688991A1 (en) 2020-08-05
US20200236387A1 (en) 2020-07-23
US11582477B2 (en) 2023-02-14
KR20230065353A (ko) 2023-05-11
JP2023104952A (ja) 2023-07-28
CN110651477A (zh) 2020-01-03
CN115243051A (zh) 2022-10-25
CN115174934A (zh) 2022-10-11
MX2020003725A (es) 2020-10-07
RU2020115378A3 (pt) 2021-11-15
CN115243050B (zh) 2023-12-15
CN110651477B (zh) 2022-06-10
CA3078816C (en) 2023-09-19
CN115174933A (zh) 2022-10-11
CN115243050A (zh) 2022-10-25
WO2019072425A1 (en) 2019-04-18
KR102527169B1 (ko) 2023-05-02
KR102416348B1 (ko) 2022-07-05
KR20240033137A (ko) 2024-03-12
US20220400282A1 (en) 2022-12-15
CN115174932A (zh) 2022-10-11
US11805270B2 (en) 2023-10-31
US11405632B2 (en) 2022-08-02
US20240098294A1 (en) 2024-03-21
KR20220098284A (ko) 2022-07-11
KR20200058560A (ko) 2020-05-27
CN115174933B (zh) 2023-12-15
KR102642784B1 (ko) 2024-03-05
CA3078816A1 (en) 2019-04-18
JP6980911B2 (ja) 2021-12-15

Similar Documents

Publication Publication Date Title
BR112020006969A2 (pt) janela de acesso à memória limitada para refinamento de vetor de movimento
KR102606778B1 (ko) 모션 벡터 리파인먼트 및 모션 보상을 위한 메모리 액세스 윈도우 및 패딩
BR112019027261A2 (pt) refinamento de vetor de movimento para previsão de multirreferências
CN111567047B (zh) 进行子预测块运动矢量推导的存储器访问窗口
RU2783331C2 (ru) Окно доступа к памяти и заполнение для детализации вектора движения и компенсации движения

Legal Events

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