BR112019028035A2 - "dispositivo para determinar uma predição de um bloco corrente, decodificador e codificador de vídeo, e método para determinar uma predição de um bloco corrente - Google Patents

"dispositivo para determinar uma predição de um bloco corrente, decodificador e codificador de vídeo, e método para determinar uma predição de um bloco corrente Download PDF

Info

Publication number
BR112019028035A2
BR112019028035A2 BR112019028035-9A BR112019028035A BR112019028035A2 BR 112019028035 A2 BR112019028035 A2 BR 112019028035A2 BR 112019028035 A BR112019028035 A BR 112019028035A BR 112019028035 A2 BR112019028035 A2 BR 112019028035A2
Authority
BR
Brazil
Prior art keywords
motion vector
block
current block
prediction
list
Prior art date
Application number
BR112019028035-9A
Other languages
English (en)
Inventor
Semih ESENLIK
Zhijie ZHAO
Anand Meher KOTRA
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 BR112019028035A2 publication Critical patent/BR112019028035A2/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/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/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/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/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
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

a presente invenção refere-se a interpredição na qual é determinado se ou não um vetor de movimento de um bloco vizinho ao bloco corrente foi determinado pela coincidência de modelo (como utilizado, por exemplo, derivação e/ou refinamento de vetor de movimento baseado em decodificador). se detectado negativamente, a predição do bloco corrente é derivada de acordo com o vetor de movimento do bloco vizinho. por outro lado, se detectado positivamente, a predição do bloco corrente não está baseada no bloco vizinho.

Description

Relatório Descritivo da Patente de Invenção para "DISPOSI- TIVO PARA DETERMINAR UMA PREDIÇÃO DE UM BLOCO COR- RENTE, DECODIFICADOR E CODIFICADOR DE VÍDEO, E MÉTODO PARA DETERMINAR UMA PREDIÇÃO DE UM BLOCO CORRENTE".
[0001] A presente invenção refere-se à derivação de vetores de movimento no decodificador e especificamente a métodos e dispositi- vos para derivação de vetor de movimento os quais podem ser utiliza- dos em codificação e decodificação de imagem.
FUNDAMENTOS
[0002] Os codecs de vídeo híbridos correntes empregam codifica- ção preditiva. Uma imagem de sequência de vídeo é subdividida em blocos de pixels e estes blocos são então codificados. Ao invés de co- dificar um bloco pixel por pixel, o bloco inteiro é predito utilizando pixels já codificados na proximidade espacial ou temporal do bloco. O codificador ainda processa somente as diferenças entre o bloco e sua predição. O processamento adicional tipicamente inclui uma transfor- mação dos pixels de bloco em coeficientes em um domínio de trans- formação. Os coeficientes podem então ser ainda comprimidos meio de quantização e ainda compactados por codificação de entropia para formar um fluxo de bits. O fluxo de bits ainda inclui quaisquer informa- ções de sinalização as quais permitem o decodificador decodificar o vídeo codificado. Por exemplo, a sinalização pode incluir ajustes refe- rentes a ajustes de codificador tal como o tamanho da imagem de en- trada, taxa de quadros, indicação de etapa de quantização, predição aplicada aos blocos das imagens, ou similares.
[0003] A predição temporal explora a correlação temporal entre imagens, também referidas como quadros, de um vídeo. A predição temporal também é denominada interpredição, já que esta é uma pre- dição que utiliza as dependências entre (inter) diferentes quadros de vídeo. Consequentemente, um bloco sendo codificado, também refe- rido como um bloco corrente, é predito de (uma ou) mais imagem(ns)
previamente codificada referida como uma imagem de referência. À imagem de referência não é necessariamente uma imagem que pre- cede a imagem corrente na qual o bloco corrente está localizado na ordem de exibição da sequência do vídeo. O codificador pode codificar as imagens em uma ordem de codificação diferente da ordem de exi- bição. Como uma predição do bloco corrente, um bloco co-localizado na imagem de referência pode ser determinado. O bloco co-localizado é um bloco o qual está localizado na imagem de referência sobre a mesma posição que o bloco corrente na imagem corrente. Tal predi- ção é precisa para regiões de imagem sem movimento, isto é, regiões de imagem sem movimento de uma imagem para outra.
[0004] De modo a obter um preditor o qual leva em conta o movi- mento, isto é, um preditor compensado em movimento, uma estimativa de movimento é tipicamente empregada quando determinando a pre- dição do bloco corrente. Consequentemente, o bloco corrente é predito por um bloco na imagem de referência, o qual está localizado em uma distância dada por um vetor de movimento da posição do bloco co- localizado. De modo a permitir um decodificador determinar a mesma predição do bloco corrente, o vetor de movimento pode ser sinalizado no fluxo de bits. De modo a ainda reduzir o excesso de sinalização causado pela sinalização do vetor de movimento para cada um dos blocos, o próprio vetor de movimento pode ser estimado. A estimativa de vetor de movimento pode ser executada com base nos vetores de movimento dos blocos vizinhos em domínio espacial e/ou temporal.
[0005] A predição do bloco corrente pode ser computada utilizando uma imagem de referência ou ponderando predições obtidas de duas ou mais imagens de referência. A imagem de referência pode ser uma imagem adjacente, isto é, uma imagem imediatamente precedente e/ou a imagem imediatamente seguinte à imagem corrente na ordem de exibição já que as imagens adjacentes são mais prováveis serem similares à imagem corrente. No entanto, em geral, a imagem de refe- rência pode ser também qualquer outra imagem precedente ou seguin- te à imagem corrente na ordem de exibição e precedendo a imagem corrente no fluxo de bits (ordem de decodificação). Isto pode prover vantagens, por exemplo, no caso de oclusões e/ou movimento não |i- near no conteúdo de vídeo. A imagem de referência pode assim ser também sinalizada no fluxo de bits.
[0006] Um modo especial da interpredição é uma assim denomi- nada bipredição, na qual duas imagens de referência são utilizadas na geração da predição do bloco corrente. Especificamente, duas predi- ções determinadas nas respectivas duas imagens de referência são combinadas em um sinal de predição do bloco corrente. A bipredição pode resultar em uma predição mais precisa do bloco corrente do que a unipredição, isto é, uma predição somente utilizada uma única ima- gem de referência. A predição mais precisa leva a menores diferenças entre os pixels do bloco corrente e da predição (referida também como "resíduo"), que pode ser codificada com mais eficientemente, isto é, comprimida para um fluxo de bits mais curto.
[0007] De modo a prover uma estimativa de movimento mais pre- cisa, a resolução da imagem de referência pode ser melhorada inter- polando amostras entre os pixels. Uma interpolação de pixels fracioná- ria pode ser executada pela média ponderada dos pixels mais próxi- mos. No caso de resolução de meio pixel, por exemplo, uma interpola- ção bilinear é tipicamente utilizada. Outros pixels fracionários são cal- culados como uma média dos pixels mais próximos ponderados pelo inverso da distância entre os respectivos pixels mais próximos para o pixel sendo predito.
[0008] A estimativa de vetor de movimento é uma tarefa computa- cionalmente complexa na qual uma similaridade é calculada entre o bloco corrente e os blocos de predição correspondentes apontados por vetores de movimento candidatos na imagem de referência. De modo a reduzir a complexidade, o número de vetores de movimento candida- tos é usualmente reduzido limitando os vetores de movimento candida- tos a um certo espaço de pesquisa. O espaço de pesquisa pode ser, por exemplo, definido por um número e/ou posições de pixels que cir- cundam a posição na imagem de referência que corresponde à posi- ção do bloco corrente na imagem corrente. Por outro lado, os vetores de movimento candidatos podem ser definidos por uma lista de veto- res de movimento candidatos formada por vetores de movimento de blocos vizinhos.
[0009] Os vetores de movimento são usualmente pelo menos par- cialmente determinados em decodificador e sinalizados para o decodi- ficador dentro do fluxo de bits codificado. No entanto, os vetores de movimento podem também ser derivados no decodificador. Em tal ca- so, o bloco corrente não está disponível no decodificador e não pode ser utilizado para calcular a similaridade dos blocos para os quais os vetores de movimento candidato apontam na imagem de referência. Portanto, ao invés do bloco corrente, um gabarito é utilizado o qual é calculado de pixels dos blocos já decodificados. Por exemplo, pixels já descodificados adjacentes ao bloco corrente podem ser utilizados. Tal estimativa de movimento provê uma vantagem de reduzir a sinaliza- ção: o vetor de movimento é derivado no mesmo modo tanto no codifi- cador quanto no decodificador e assim, nenhuma sinalização é neces- sária. Por outro lado, a precisão de tal estimativa de movimento pode ser menor.
[0010] De modo a prover um compromisso entre a precisão e o excesso de sinalização, a estimativa de vetor de movimento pode ser dividida em duas etapas: derivação de vetor de movimento e refina- mento do vetor de movimento. Por exemplo, uma derivação de vetor de movimento pode incluir a seleção de um vetor de movimento da lista de candidatos. Tal vetor de movimento selecionado pode ser ain- da refinado, por exemplo, por uma pesquisa dentro de um espaço de pesquisa. A pesquisa no espaço de pesquisa está baseada em calcu- lar função de custo para cada vetor de movimento candidato, isto é, para cada posição candidata do bloco para o qual o vetor de movimen- to candidato aponta.
[0011] Documento JVET-D0029: Decoder-Side Motion Vector Re- finement 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 no qual um primeiro vetor de movimento em resolução de pixel inteiro é encontrado e ainda refinado por uma pesquisa com uma resolução de meio pixel em um espaço de pesquisa ao redor do primeiro vetor de movimento.
SUMÁRIO
[0012] Partindo das propostas acima descritas, o objetivo da pre- sente descrição é prover uma possibilidade melhorada de decodifica- ção paralela de unidades de processamento e/ou aumentar resiliência de erros da decodificação.
[0013] De modo a conseguir isto, os vetores de movimento de vi- zinhos a um bloco corrente os quais foram derivados utilizando coinci- dência de modelo não são utilizados para predizer o vetor de movi- mento do bloco corrente.
[0014] Em outras palavras, os vetores de movimento de vizinhos os quais foram derivados utilizando uma imagem de referência não são utilizados para predizer o vetor de movimento do bloco corrente.
[0015] Isto pode ser derivação e substituição utilizando coincidên- cia de modelo. Nas modalidades abaixo, referência é feita à aplicação de "coincidência de modelo". No entanto, em geral, qualquer proposta que utilize imagem de referência pode ser considerada também.
[0016] De acordo com um aspecto da invenção, um dispositivo es- tá provido para determinar uma predição de um bloco corrente, para reconstrução do bloco corrente, o dispositivo compreendendo: uma unidade de predição para detectar se ou não um vetor de movimento de um bloco adjacente ao bloco corrente foi determinado pela coinci- dência de modelo, e configurada para: se detectado negativamente, derivar a predição do bloco corrente de acordo com o bloco adjacente, e, se detectado positivamente, não derivar a predição do bloco corren- te de acordo com o bloco adjacente.
[0017] Vantajosamente, para reconstrução do bloco corrente, a unidade de predição compreende: uma unidade de determinação de lista de candidatos de vetor de movimento formar uma lista de vetores de movimento candidatos para o bloco corrente que inclui: detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, se detectado negativamente, incluir o vetor de movimento do bloco adjacente como um candidato na lista, se detectado positivamente, não incluir o vetor de movimento do bloco adjacente como um candidato na lista; e uma unidade de determina- ção de vetor de movimento para selecionar uma estimativa de um ve- tor de movimento da lista e determinar o vetor de movimento do bloco corrente de acordo com a estimativa.
[0018] Por exemplo, o dispositivo da unidade de determinação de lista de candidatos de vetor de movimento está configurado para, se detectado positivamente, incluir um vetor de movimento de substitui- ção como um candidato na lista.
[0019] De acordo com um exemplo, o vetor de movimento de substituição é um vetor de movimento de um bloco vizinho ao bloco corrente e diferente do bloco adjacente.
[0020] O dispositivo pode ainda compreender uma unidade de re- finamento de vetor de movimento para aplicar um refinamento da es-
timativa selecionada do vetor de movimento; a unidade de determina- ção de lista de candidatos de vetor de movimento está configurado pa- ra, se detectado positivamente, incluir na lista uma estimativa do vetor de movimento do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento; e a unidade de determinação de vetor de movimento está ainda configurada para determinar o vetor de mo- vimento do bloco adjacente de acordo com a estimativa do vetor de movimento do bloco adjacente após o refinamento.
[0021] A unidade de determinação de lista de candidatos de vetor de movimento pode estar configurada para formar a lista para o bloco corrente enquanto a unidade de refinamento de vetor de movimento aplica um refinamento no bloco adjacente.
[0022] Por exemplo, a unidade de determinação de lista de candi- datos de vetor de movimento está configurada para, se detectado posi- tivamente, se o bloco adjacente estiver localizado na mesma imagem que o bloco corrente, incluir na lista uma estimativa do vetor de movi- mento do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento; e se o bloco adjacente estiver localizado em uma imagem outra que o bloco corrente, incluir na lista o vetor de mo- vimento do bloco adjacente após aplicar ao bloco adjacente o refina- mento.
[0023] Alternativamente, a unidade de determinação de lista de candidatos de vetor de movimento está ainda configurada para verifi- car se um vetor de movimento a ser incluído na lista já está incluído na lista, e não incluindo-o na lista se afirmativo, e a dita verificação não é executada quando incluindo na lista um vetor de movimento de um bloco adjacente a ser processado pelo menos parcialmente em parale- lo com o processamento do bloco corrente.
[0024] O dispositivo pode também servir para determinar intrapre- dição de um bloco corrente, para reconstrução do bloco corrente. Em tal caso, a unidade de predição vantajosamente compreende: uma unidade de determinação de amostras de referência para determinar um conjunto de amostras de referência para o bloco corrente que in- clui: detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, se detectado negativa- mente, incluir uma ou mais amostras do bloco adjacente no conjunto de amostras de referência, e, se detectado positivamente, não incluir qualquer amostra do bloco adjacente no conjunto de amostras de refe- rência. A unidade de predição ainda inclui uma unidade de intrapredi- ção para prover a predição do bloco corrente de acordo com amostras do conjunto de amostras de referência.
[0025] De acordo com uma modalidade exemplar, a unidade de predição está configurada para, para reconstrução do bloco corrente detectar se ou não um vetor de movimento de um bloco circundante, o qual está localizado dentro de uma região retangular predeterminada definida com relação à posição do bloco corrente, foi determinado pela coincidência de modelo.
[0026] De acordo com um aspecto da invenção, um decodificador de vídeo para decodificar uma pluralidade de imagens de um fluxo de bits, compreende: um analisador de fluxo de bits para analisar o fluxo de bits que inclui informações de controle, o dispositivo de acordo com qualquer das modalidades exemplares acima descritas, e uma unidade de reconstrução para reconstruir o bloco corrente com base na predi- ção do bloco corrente.
[0027] De acordo com um aspecto da invenção, um codificador de vídeo para codificar uma pluralidade de imagens em um fluxo de bits, compreende: o dispositivo de acordo com qualquer das modalidades e exemplos acima descritos, um formador de fluxo de bits para incluir no fluxo de bits informações de controle, e uma unidade de reconstrução para reconstruir o bloco corrente com base na predição do bloco cor-
rente e armazenar o bloco reconstruído em uma memória.
[0028] O codificador de vídeo ou decodificador pode incluir um si- nalizador que indica se ou não a unidade de predição deve detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, e/ou um indicador de substituição que indica, se detectado positivamente, como a predição para o presente bloco foi determinado.
[0029] Por exemplo, as informações de controle estão incluídas em um conjunto de parâmetros de sequência e/ou em um cabeçalho de fatia.
[0030] De acordo com outro aspecto da invenção, um método está provido para determinar uma predição de um bloco corrente, o método compreendendo as etapas de detectar se ou não um vetor de movi- mento de um bloco adjacente foi determinado pela coincidência de modelo, se detectado negativamente, derivar a predição do bloco cor- rente de acordo com o bloco adjacente, e, se detectado positivamente, não derivar a predição do bloco corrente de acordo com o bloco adja- cente.
[0031] O método pode ainda compreender para reconstrução do bloco corrente as etapas de detectar se ou não um vetor de movimen- to de um bloco adjacente ao bloco corrente foi determinado pela coin- cidência de modelo incluindo as etapas de, se detectado negativamen- te, derivar a predição do bloco corrente de acordo com o bloco adja- cente; e, se detectado positivamente, não derivar a predição do bloco corrente de acordo com o bloco adjacente.
[0032] O método pode ainda compreender as etapas de formar uma lista de vetores de movimento candidatos para o bloco corrente que inclui: detectar se ou não um vetor de movimento de um bloco ad- jacente foi determinado pela coincidência de modelo; se detectado ne- gativamente, incluir o vetor de movimento do bloco adjacente como um candidato na lista; e, se detectado positivamente, não incluir o vetor de movimento do bloco adjacente como um candidato na lista. Mais ain- da, pode existir uma etapa de selecionar uma estimativa de um vetor de movimento da lista e determinar o vetor de movimento do bloco cor- rente de acordo com a estimativa.
[0033] A etapa de formar uma lista de vetores de movimento can- didatos pode compreender, se detectado positivamente, incluir um ve- tor de movimento de substituição como um candidato na lista. O vetor de movimento de substituição é, por exemplo, um vetor de movimento de um bloco vizinho ao bloco corrente e diferente do bloco adjacente. De acordo com outro exemplo, este é um vetor de movimento de um bloco adjacente a um bloco vizinho do bloco corrente mas não adja- cente ao bloco corrente.
[0034] O método da presente invenção pode compreender as eta- pas de aplicar um refinamento da estimativa selecionada do vetor de movimento; se detectado positivamente, inclui na lista uma estimativa do vetor de movimento do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento; e determinar o vetor de movi- mento do bloco adjacente de acordo com a estimativa do vetor de mo- vimento do bloco adjacente após o refinamento.
[0035] A lista para o bloco corrente pode ser formada enquanto a unidade de refinamento de vetor de movimento aplica um refinamento no bloco adjacente.
[0036] De acordo com uma modalidade exemplar, se detectado positivamente que o bloco adjacente utilizou imagem de referência (coincidência de modelo) para a determinação de seu vetor de movi- mento, se o bloco adjacente estiver localizado na mesma imagem que o bloco corrente, incluir na lista uma estimativa do vetor de movimento do bloco adjacente obtido pela coincidência de modelo antes de apli- car o refinamento; e se o bloco adjacente estiver localizado em uma imagem outra que o bloco corrente, incluir na lista o vetor de movimen- to do bloco adjacente após aplicar ao bloco adjacente o refinamento.
[0037] De acordo com uma proposta alternativa o método da pre- sente invenção inclui verificar se um vetor de movimento a ser incluído na lista já está incluído na lista, e não o incluindo na lista se afirmativo; em que a dita verificação não é executada quando incluindo na lista um vetor de movimento de um bloco adjacente a ser processado pelo menos parcialmente em paralelo com o processamento do bloco cor- rente.
[0038] De acordo com uma modalidade, a predição de um bloco corrente inclui uma etapa de intrapredição e uma etapa adicional de determinar um conjunto de amostras de referência para o bloco cor- rente que inclui: detectar se ou não um vetor de movimento de um blo- co adjacente foi determinado pela coincidência de modelo; se detecta- do negativamente, incluir uma ou mais amostras do bloco adjacente no conjunto de amostras de referência; e, se detectado positivamente, não incluir qualquer amostra do bloco adjacente no conjunto de amos- tras de referência. A etapa de intrapredizer o bloco corrente então in- clui prover a predição do bloco corrente de acordo com amostras do conjunto de amostras de referência.
[0039] O método da presente invenção pode incluir detectar se ou não um vetor de movimento de um bloco circundante, o qual está loca- lizado dentro de uma região retangular predeterminada definida com relação à posição do bloco corrente, foi determinado pela coincidência de modelo.
[0040] Mais ainda, um método para decodificar uma pluralidade de imagens de um fluxo de bits pode ser provido, que compreende as etapas de analisar o fluxo de bits que inclui informações de controle, executar a determinação de predição para um bloco corrente como acima descrito, e reconstruir o bloco corrente com base na predição do bloco corrente.
[0041] Mais ainda, um método para codificar uma pluralidade de imagens em um fluxo de bits está provido, que compreende: determi- nação de predição para um bloco corrente como acima descrito um formador de fluxo de bits para incluir no fluxo de bits informações de controle, e reconstruir o bloco corrente com base na predição do bloco corrente e armazenar o bloco reconstruído em uma memória.
[0042] As informações de controle incluem vantajosamente um sinalizador que indica se ou não a unidade de predição deve detectar se ou não um vetor de movimento de um bloco adjacente foi determi- nado pela coincidência de modelo, e/ou um indicador de substituição que indica, se detectado positivamente, como a predição para o pre- sente bloco foi determinado.
[0043] As informações de controle podem estar incluídas em um conjunto de parâmetros de sequência e/ou em um cabeçalho de fatia.
[0044] Mais ainda, um circuito integrado está provido que incorpo- ra um dispositivo como acima descrito.
[0045] Mais ainda, um programa está provido, armazenado em um meio legível por computador, o qual, quando executado em um pro- cessador, executa as etapas de um método como acima descrito.
BREVE DESCRIÇÃO DOS DESENHOS
[0046] A seguir modalidades exemplares estão descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais:
[0047] Figura 1 é um diagrama de blocos que mostra uma estrutu- ra exemplar de um codificador de vídeo.
[0048] Figura 2 é um diagrama de blocos que mostra uma estrutu- ra exemplar de um decodificador de vídeo.
[0049] Figura 3 é um diagrama de blocos que mostra uma estrutu- ra exemplar de um dispositivo para determinar uma predição para um bloco de imagens.
[0050] Figura 4 é um desenho esquemático de um bloco corrente e blocos vizinhos exemplares os quais podem ser utilizados para gera- ção de lista de candidatos.
[0051] Figura 5 é um desenho esquemático que ilustra o proces- samento de decodificador e possibilidade de paralelização se refina- mento de vetor de movimento for aplicado.
[0052] Figura 6 é um diagrama de blocos que ilustra uma unidade de interpredição de acordo com uma modalidade.
[0053] Figura 7 é um desenho esquemático que ilustra o proces- samento de decodificador e possibilidade de paralelização se refina- mento de vetor de movimento for aplicado.
[0054] Figura 8 é um fluxograma que ilustra o um método para res- tringir a determinação de vetor de movimento com base na determina- ção de vetor de movimento dos blocos vizinhos.
[0055] Figura 9 é um desenho esquemático que ilustra um bloco corrente exemplar e seus vizinhos.
[0056] Figura 10 é um desenho esquemático que ilustra o um blo- co corrente exemplar e seu vizinho com um bloco adjacente ao vizi- nho.
[0057] Figura 11 é um desenho esquemático que ilustra o proces- samento de decodificador e possibilidade de pular a verificação de pa- ralelização é aplicada.
[0058] Figura 12 é um desenho esquemático que ilustra o um blo- co corrente exemplar e seus vizinhos para predizer o vetor de movi- mento do bloco corrente.
[0059] Figura 13 é um desenho esquemático que ilustra um bloco corrente exemplar e seus vizinhos para intrapredição do bloco corren- te.
[0060] Figura 14 é um desenho esquemático que ilustra uma regi- ão exemplar para limitar a determinação de vetor de movimento de um bloco corrente.
[0061] Figura 15 é um desenho esquemático que ilustra uma regi- ão exemplar para limitar a determinação de vetor de movimento de um bloco corrente.
[0062] Figura 16 é um desenho esquemático que ilustra os erros que podem ocorrer na recepção de uma sequência de vídeo.
[0063] Figura 17 é um desenho esquemático que ilustra os erros que podem ocorrer na recepção de uma sequência de vídeo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0064] A presente descrição refere-se à determinação de uma predição para um bloco corrente e especificamente à interpredição. Esta pode ser empregada em estimativa de movimento aplicada du- rante codificação e decodificação de vídeo. A seguir, um codificador e decodificador exemplares os quais podem implementar a estimativa de movimento empregando a construção do espaço de pesquisa da pre- sente descrição estão descritos a seguir.
[0065] A Figura 1 mostra um codificador 100 o qual compreende uma entrada para receber blocos de entrada de quadros ou imagens de um fluxo de vídeo e uma saída para gerar um fluxo de bits de vídeo codificado. O termo "quadro" nesta descrição é utilizado como um si- nônimo para imagem. No entanto, é notado que a presente descrição é também aplicável a campos no caso de entrelaçamento ser aplicado. Em geral, uma imagem inclui m tempos n pixels. Isto corresponde a amostras de imagem e pode compreender um ou mais componentes de cor. Para o bem de simplicidade, a seguinte descrição refere-se a pixels significando amostras de luminância. No entanto, é notado que a pesquisa de vetor de movimento da invenção pode ser aplicada a qualquer componente de cor que inclui crominância ou componentes de um espaço de pesquisa tal como RGB ou similares. Por outro lado, pode ser benéfica para executar somente estimativa de vetor de mo-
vimento para um componente e para aplicar o vetor de movimento de- terminado a mais (ou todos) componentes.
[0066] Os blocos de entrada a serem codificados não necessaria- mente têm o mesmo tamanho. Uma imagem pode incluir blocos de diferentes tamanhos e o rastreio de bloco de diferentes imagens pode também diferir.
[0067] Em uma realização explicativa, o codificador 100 está adap- tado para aplicar predição, transformação, quantização, e codificação de entropia ao fluxo de vídeo. A transformação, quantização, e codifi- cação de entropia são executadas respectivamente por uma unidade de transformada 101, uma unidade de quantização 102 e uma unidade de codificação de entropia 103 de modo a gerar como uma saída o fluxo de bits de vídeo codificado.
[0068] O fluxo de vídeo pode incluir uma pluralidade de quadros, em que cada quadro está dividido em blocos de um certo tamanho que são ou intra ou intercodificados. Os blocos de, por exemplo, o primeiro quadro do fluxo de vídeo são intracodificados por meio de uma unida- de de intrapredição 109. Um intraquadro é codificado utilizando so- mente as informações dentro do mesmo quadro, de modo que este pode ser independentemente decodificado e este pode prover um pon- to de entrada no fluxo de bits para acesso randômico. Blocos de outros quadros do fluxo de vídeo podem ser intercodificados por meio de uma unidade de interpredição 110: informações de quadros anteriormente codificados (quadros de referência) são utilizadas para reduzir a re- dundância temporal, de modo que cada bloco de um quadro intercodi- ficado é predito de um bloco em um quadro de referência. Uma unida- de de seleção de modo 108 está adaptada para selecionar se um blo- co de um quadro deve ser processado pela unidade de intrapredição 109 ou a unidade de interpredição 110. Este bloco também controla os parâmetros de intra ou interpredição. De modo a permitir renovação das informações de imagem, bloco intracodificado pode ser provido dentro de quadros intercodificados. Mais ainda, intraquadros os quais contêm somente blocos intracodificados podem ser regularmente inse- ridos na sequência de vídeo de modo a prover pontos de entrada para decodificação, isto é, pontos onde o decodificador pode iniciar a deco- dificação sem ter informações dos quadros anteriormente codificados.
[0069] A unidade de intrapredição 109 é uma unidade de predição de blocos. Para executar uma predição espacial ou temporal, os blo- cos codificados podem ser ainda processados por uma unidade de quantização inversa 104, e uma unidade de transformada inversa 105. Após reconstrução do bloco uma unidade de filtragem de loop 106 é aplicada para ainda aperfeiçoar a qualidade da imagem decodificada. Os blocos filtrados então formam os quadros de referência que são então armazenados em um armazenamento temporário de quadros
107. Tal loop de decodificação (decodificador) em decodificador provê a vantagem de produzir quadros de referência os quais são os mes- mos que as imagens de referência reconstruídas no lado de decodifi- cador. Consequentemente, o lado de codificador e decodificador ope- ram em um modo correspondente. O termo "reconstrução" aqui refere- se a obter o bloco reconstruído adicionando ao bloco residual decodifi- cado o bloco de predição.
[0070] A unidade de interpredição 110 recebe como uma entrada um bloco de um quadro ou imagem corrente a ser intercodificado e um ou diversos quadros ou imagens de referência do armazenamento temporário de quadros 107. Uma estimativa de movimento e compen- sação de movimento são aplicadas pela unidade de interpredição 110. A estimativa de movimento é utilizada para obter um vetor de movi- mento e um quadro de referência com base em uma cera função de custo. A compensação de movimento então descreve um bloco corren- te do quadro corrente em termos da translação de um bloco de refe-
rência do quadro de referência para o quadro corrente, isto é, por um vetor de movimento. A unidade de interpredição 110 emite o bloco de predição para o bloco corrente, em que o dito bloco de predição mini- miza a função de custo. Por exemplo, a função de custo pode ser uma diferença entre o bloco corrente a ser codificado e seu bloco de predi- ção, isto é, a função de custo minimiza o bloco residual. A minimização do bloco residual está baseada, por exemplo, em calcular uma soma de diferenças absolutas (SAD) entre todos os pixels (amostras) do blo- co corrente e do bloco candidato na imagem de referência candidata. No entanto, em geral, qualquer outra métrica de similaridade pode ser empregada, tal como erro quadrático médio (MSE) ou métrica de simi- laridade estrutural (SSIM).
[0071] No entanto, a função de custo pode também ser o número de bits necessários para codificar tal interbloco e/ou distorção que re- sulta de tal codificação. Assim, o procedimento de otimização de dis- torção de taxa pode ser utilizado para decidir sobre a seleção de vetor de movimento e/ou em geral sobre os parâmetros de codificação tal como se utilizar inter ou intrapredição para um bloco e com quais ajus- tes.
[0072] A unidade de intrapredição 109 recebe como uma entrada um bloco de um quadro ou imagem corrente a ser intracodificado e uma ou diversas amostras de referência de uma área já reconstruída do quadro corrente. A intrapredição então descreve pixels de um bloco corrente do quadro corrente em termos de uma função ou amostras de referência do quadro corrente. A unidade de intrapredição 109 emite um bloco de predição para o bloco corrente, em que o dito bloco de predição vantajosamente minimiza a diferença entre o bloco corrente a ser codificado e seu bloco de predição, isto é, este minimiza o bloco residual. A minimização do bloco residual pode estar baseada, por exemplo, em um procedimento de otimização de distorção de taxa.
Especificamente, 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 de distorção de taxa e/ou calculando uma medida de similaridade como acima mencionado em conexão com a interpredi- ção.
[0073] A diferença entre o bloco corrente e sua predição, isto é, o bloco residual, é então transformada pela unidade de transformada
101. Os coeficientes de transformação são quantizados pela unidade de quantização 102 e codificados em entropia pela unidade de codifi- cação de entropia 103. O fluxo de bits de vídeo codificado assim gera- do compreende 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 de intrapredição). A unidade de transformada 101 pode aplicar uma transformação linear tal como uma Transformação de Fourier ou Cosseno Discreta (DFT). Tal transforma- ção para o domínio de frequência espacial provê a vantagem que os coeficientes resultantes têm tipicamente valores mais altos nas fre- quências mais baixas. Assim, após um escaneamento de coeficiente efetivo (tal como ziguezague), e quantização, a sequência de valores resultante tem tipicamente alguns valores maiores no início e termina com uma carreira de zeros. Isto permite uma codificação eficiente adi- cional. A unidade de quantização 102 executa a compressão com per- das real reduzindo a resolução dos valores de coeficiente. A unidade de codificação de entropia 103 então atribui a valores de coeficiente palavras de código binárias para produzir um fluxo de bits. O codifica- dor de entropia também codifica as informações de sinalização (não mostrado na Figura 1).
[0074] A Figura 2 mostra um decodificador de vídeo 200. O deco- dificador de vídeo 200 compreende especificamente um armazena- mento temporário de imagem de referência 207 e uma unidade de in-
trapredição 209, a qual é uma unidade de predição de blocos. O arma- zenamento temporário de imagem de referência 207 está adaptado para armazenar pelo menos um quadro de referência reconstruído do fluxo de bits de vídeo codificado, o dito quadro de referência sendo diferente de um quadro corrente (quadro correntemente decodificado) do fluxo de bits de vídeo codificado. A unidade de intrapredição 209 está configurada para gerar um bloco de predição, o qual é uma esti- mativa do bloco a ser decodificado. A unidade de intrapredição 209 está configurada para gerar esta predição com base em amostras de referência que são obtidas do armazenamento temporário de imagem de referência 207.
[0075] O decodificador 200 está adaptado para decodificar o fluxo de bits de vídeo codificado gerado pelo codificador de vídeo 100, e de preferência tanto o decodificador 200 quanto o codificador 100 geram predições idênticas para o respectivo bloco a ser codificado / decodifi- cado. As características do armazenamento temporário de imagem de referência 207 e a unidade de intrapredição 209 são similares às ca- racterísticas do armazenamento temporário de imagem de referência 107 e da unidade de intrapredição 109 da Figura 1.
[0076] O decodificador de vídeo 200 compreende unidades adicio- nais que estão também presentes no codificador de vídeo 100 como, por exemplo, uma unidade de quantização inversa 204, uma unidade de transformada inversa 205, e uma unidade de filtragem de loop 206, as quais respectivamente correspondem à unidade de quantização inversa 104, a unidade de transformada inversa 105, e a unidade de filtragem de loop 106 do codificador de vídeo 100.
[0077] Uma unidade de decodificação de entropia 203 está adap- tada para decodificar o fluxo de bits de vídeo codificado recebido e correspondentemente obter coeficientes de transformada residual quantizados e informações de sinalização. Os coeficientes de trans-
formada residual quantizados são alimentados para a unidade de quantização inversa 204 e uma unidade de transformada inversa 205 para gerar um bloco residual. O bloco residual é adicionado a um blo- co de predição e a adição é alimentada para a unidade de filtragem de loop 206 para obter o vídeo decodificado. Quadros do vídeo decodifi- cado podem ser armazenados no armazenamento temporário de ima- gem de referência 207 e servem como um quadro de referência para interpredição.
[0078] Geralmente, as unidades de intrapredição 109 e 209 das Figuras 1 e 2 podem utilizar amostras de referência de uma área já codificada para gerar sinais de predição para blocos que precisam ser codificados ou precisam ser decodificados.
[0079] A unidade de decodificação de entropia 203 recebe como sua entrada o fluxo de bits codificado. Em geral, o fluxo de bits é pri- meiramente analisado, isto é, os parâmetros de sinalização e os resí- duos são extraídos do fluxo de bits. Tipicamente, a sintaxe e semânti- ca do fluxo de bits são definidas por um padrão de modo que os codifi- cadores e decodificadores possam funcionar em um modo interoperá- vel. Como descrito na seção de Histórico acima, o fluxo de bits codifi- cado não somente inclui os resíduos de predição. No caso de predição compensada em movimento, uma indicação de vetor de movimento é também codificada no fluxo de bits e analisada do mesmo no decodifi- cador. A indicação de vetor de movimento pode ser dada por meio de uma imagem de referência na qual o vetor de movimento está provido e por meio das coordenadas de vetor de movimento. De modo a efici- entemente codificar a imagem de referência, o codec H.265 (ITU-T, H265, Series H: Audiovisual and multimedia systems: High Efficient Video Coding) provê uma lista de imagens de referência atribuindo a Índices de lista respectivos quadros de referência. O quadro de refe- rê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 um conjunto de um número de quadros. É notado que em H.265 existem duas listas de imagens de referência definidas, denominadas LO e L1. A imagem de referência é então sinalizada no fluxo de bits, indicando a lista (LO ou L1) e indi- cando um índice naquela lista associado com a imagem de referência desejada. Prover duas ou mais listas pode ter vantagens para uma melhor compressão. Por exemplo, LO pode ser utilizado para tanto fa- tias unidirecionalmente interpreditas e fatias bidirecionalmente inter- preditas, enquanto L1 pode somente ser utilizado para fatias bidirecio- nalmente interpreditas. No entanto, em geral, a presente descrição não está limitada a qualquer conteúdo das listas LO e L1.
[0080] O vetor de movimento pode ser sinalizado diretamente pe- las coordenadas na imagem de referência. Alternativamente, como também especificado em H.265, uma lista de vetores de movimento candidatos pode ser construída e um índice associado na lista com o vetor de movimento específico pode ser transmitido.
[0081] Os vetores de movimento do bloco corrente estão usual- mente correlacionados com os vetores de movimento de blocos vizi- nhos na imagem corrente ou nas imagens anteriormente codificadas. Isto é porque blocos vizinhos são prováveis corresponder ao mesmo objeto móvel com movimento similar e o movimento do objeto não é provável mudar abruptamente ao longo do tempo. Consequentemente, utilizando os vetores de movimento em blocos vizinhos como predito- res reduz o tamanho da diferença de vetor de movimento sinalizada. As MVPs são usualmente derivadas de vetores de movimento já de- codificados de blocos vizinhos espaciais ou de blocos temporalmente vizinhos na imagem co-localizada. Em H.264/AVC, isto é feito fazendo uma mediana no sentido de componente de três vetores de movimento espacialmente vizinhos. Utilizando esta proposta, nenhuma sinalização do preditor é requerida. MVPs temporais de uma imagem co-localizada são somente consideradas no assim denominado modo direto tempo- ral de H.264/AVC. Os modos diretos de H.264/AVC são também utili- zados para derivar outros dados de movimento do que os vetores de movimento. Com isto, estes referem-se mais ao conceito de mescla- gem de blocos em HEVC. Em HEVC, a proposta de implicitamente de- rivar o MVP foi substituída por uma técnica conhecida como competi- ção de vetor de movimento, a qual explicitamente sinaliza qual MVP de uma lista de MVPs é utilizada para derivação de vetor de movimen- to. A estrutura de bloco de quadtree de codificação variável em HEVC pode resultar em um bloco tendo diversos blocos vizinhos com vetores de movimento como candidatos de MVP potenciais. Tomando o vizi- nho esquerdo como um exemplo, no pior caso, um bloco de predição de luma 64x64 poderia ter 16 blocos de predição de luma 84 para a esquerda quando um bloco de árvore de codificação de luma 64x64 não é ainda dividido e o esquerdo está dividido para a profundidade máxima.
[0082] A Predição de Vetor de Movimento Avançada (AMVP) foi introduzida para modificar a competição de vetor de movimento para levar em conta tal estrutura de bloco flexível. Durante o desenvolvi- mento de HEVC, o projeto de AMVP inicial foi significativamente sim- plificado para prover um bom compromisso entre eficiência de codifi- cação e um projeto amigável de implementação. O projeto inicial de AMVP incluía cinco MVPs de três diferentes classes de preditores: três vetores de movimento de vizinhos espaciais, a mediana dos três predi- tores espaciais e um vetor de movimento escalado de um bloco co- localizado temporalmente vizinho. Mais ainda, 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 um excesso de sinalização mínimo. O projeto final da construção de lista de candidatos de AMVP inclui os seguintes dois candidatos de MVP: a) até dois MVPs candidatos que são derivados de cinco blocos vizinhos espaciais; b) um MVP candidato temporal de- rivado de dois blocos temporais, co-localizados quando ambos os MVPs candidatos espaciais não estão disponíveis ou estes são idênti- cos; e c) zero vetores de movimento quando os candidatos espaciais, temporais ou ambos não estão disponíveis. Detalhes sobre determina- ção de vetor de movimento podem ser encontradas no livro por V. Sze et al (Ed.), High Efficiency Video Coding (HEVC): Algorithms and Ar- chitectures, Springer, 2014, especificamente no Capítulo 5, aqui incor- porado por referência. Os blocos utilizados para gerar a lista de candi- datos estão mostrados na Figura 4: o bloco co-localizado (zero) C1, o vizinho temporal C1 e os vizinhos espaciais AO, A1, BO, B1, B2, adja- centes ao bloco corrente.
[0083] De modo a ainda aperfeiçoar a estimativa de vetor de mo- vimento sem aumento adicional em excesso de sinalização, pode ser benéfico ainda refinar o vetor de movimento derivado em decodificador e provido no fluxo de bits. O refinamento de vetor de movimento pode ser executado no decodificador sem assistência do codificador. O codi- ficador em seu loop de decodificador pode empregar o mesmo refina- mento para obter imagens de referência correspondentes. O refina- mento é executado determinando um modelo, determinando um espa- ço de pesquisa e encontrando no espaço de pesquisa uma porção de imagem de referência que melhor coincide com o modelo. A melhor posição de porção de coincidência determina o melhor vetor de movi- mento o qual é então utilizado para obter o preditor do bloco corrente, isto é, o bloco corrente sendo reconstruído.
[0084] Quando o refinamento de vetor de movimento é aplicado no lado de decodificador, também o loop de decodificador em decodifica- dor precisa implementar o refinamento de vetor de movimento de mo-
do a gerar as mesmas imagens de referência que serão geradas e uti- lizadas no lado de decodificador. O estágio de derivação de vetor de movimento que precede o refinamento de vetor de movimento usual- mente requer conhecimento dos vetores de movimento dos blocos que circundam espacialmente o bloco corrente sendo decodificado, especi- ficamente em casos onde a lista de candidatos de vetor de movimento é utilizada para selecionar a estimativa do vetor de movimento a ser ainda refinada. A lista de candidatos de vetor de movimento para o bloco corrente é criada com base nos vetores de movimento dos blo- cos já decodificados e adjacentes espacialmente ou temporalmente ao bloco corrente. Essa dependência da determinação de vetor de movi- mento sobre a disponibilidade de vetores de movimento dos blocos vizinhos torna a paralelização da codificação e/ou da decodificação mais difícil. Mais ainda, tal dependência também reduz a resiliência de erros do fluxo codificado. Especificamente, de modo a executar o refi- namento de vetor de movimento, é necessário ter imagens de referên- cia decodificadas corretamente para o propósito de coincidência de modelo. Se a imagem de referência incluir erros, estes são ainda pro- pagados. É notado que a coincidência de modelo é tipicamente utiliza- da refinamento de vetor de movimento. No entanto, a presente descri- ção é também aplicável a casos nos quais a coincidência de modelo é aplicada à determinação de vetor de movimento.
[0085] A Figura 3 mostra um exemplo de uma estrutura das unida- des de interpredição mostradas nas Figuras 1 e 2. Primeiramente, da- dos de movimento são determinados 310. Isto pode ser executado como acima descrito por AMVP 315, selecionando vetores de movi- mento de uma lista de vetores de movimento candidatos. Logo que os vetores de movimento são determinados, a interpolação fracionária 320 pode acontecer (especialmente se o vetor ou vetores de movimen- to apontam para uma posição de pixel fracionário) e os preditores dos respectivos vetores de movimento são determinados (330: direção O e 335: direção 1). Com base na determinação dos preditores nas res- pectivas direções (isto é, imagens de referência), um modelo é forma- do para coincidência executada durante o bloco de refinamento de ve- tor de movimento de decodificador 340. Os vetores de movimento refi- nados são então ponderados 350 para obter 360 uma predição com- pensada em movimento do bloco corrente.
[0086] A Figura 5 ilustra o processamento do decodificador, quan- do o refinamento de vetor de movimento é aplicado. Especificamente, as unidades de processamento PU1, PU2, PU3 etc. são analisadas por uma máquina de análise uma após a outra, como mostrado no to- po da Figura 5. A máquina de análise pode corresponder ao decodifi- cador de entropia 203 da Figura 2. Cada unidade de processamento analisada a ser processada pela interpredição para reconstruir a textu- ra do bloco de imagem é provida para o bloco de interpredição 210, o qual está ilustrado pelas setas verticais. Quando observando a unida- de de processamento PU?2 (coluna direita de setas), pode ser visto que durante a aplicação do refinamento, um processamento paralelo de PU1 e PU?2 torna-se quase impossível. De modo a construir a lista de mesclagem (em geral, uma lista de vetores de movimento candidatos com base nos blocos já decodificados), os vetores de movimento dos blocos vizinhos tais como o PU1, devem ser conhecidos. Como o refi- namento de vetor de movimento pode estar baseado em coincidência de modelo o que é computacionalmente complexo, e os vetores de movimento são conhecidos somente após o refinamento, o PU2 não pode iniciar a derivação de vetor de movimento até que todos os blo- cos dos quais os vetores de movimento são utilizados na lista de mes- clagem foram processados (PU1 na Figura 5). Especificamente, para PU1 a construção de lista de mesclagem, seleção do vetor de movi- mento inicial, por exemplo, utilizando um índice de lista de mesclagem extraído do fluxo de bits, assim como refinamento, devem ser execu- tados antes do(s) vetor(es) de movimento refinado é/são passados para o processamento de PU2 para gerar a lista de mesclagem. De acordo com a Figura 5, a reconstrução de textura já está completa du- rante a coincidência de modelo aqui executada na etapa de refinamen- to. Consequentemente, após o refinamento, o vetor de movimento de PU1 pode ser passado para o processamento de PU?2. A filtragem não muda o vetor de movimento e é meramente aplicada à PU1 reconstru- ída de modo a aperfeiçoar ainda sua qualidade. A filtragem pode ser, por exemplo, uma filtragem de desbloqueio ou qualquer filtragem adaptável.
[0087] Como pode ser visto neste exemplo, o processamento de diferentes unidades de processamento é quase sequencial. Mais ain- da, o refinamento de vetor de movimento requer para sua operação um espaço de pesquisa formado de amostras ou amostras fracionárias da imagem de referência. Assim, se a imagem de referência estiver faltando ou decodificada com artefatos, isto pode ter uma influência em termos de qualidade sobre a decodificação do bloco corrente. As- sim, a decodificação mostrada na Figura 5 que ilustra o processamen- to de decodificador de interpredição fazendo uso de refinamento de vetor de movimento não permite uma paralelização eficiente para dife- rentes PUs e introduz algumas degradações adicionais causadas por imagem de referência faltante ou erradamente decodificada.
[0088] Em outras palavras, os processos de derivação e refina- mento de vetor de movimento em decodificador podem causar 1) pro- blemas de resiliência de erros e problemas de paralelização. Certos casos de utilização requerem que a propagação de erros em direção espacial e temporal precisa ser controlável (possa ser confinada den- tro de uma região conhecida ou possa ser recuperável tomando certas medidas). Os métodos da técnica anterior têm o problema que, se existir um erro na transmissão, o erro de reconstrução propaga incon- trolavelmente nas direções temporal e espacial.
[0089] Observando o problema de processamento paralelo em de- codificador, as ferramentas de derivação e refinamento de MV em de- codificador são computacionalmente intensas já que estas requerem operações de coincidência de modelo dentro de um grande espaço de ponto de candidato. Portanto é necessário ser capaz de fazer as ope- rações de derivação e refinamento em paralelo para PUs vizinhas para aumentar o rendimento.
[0090] O termo PU (unidade de processamento) aqui refere-se a uma unidade de imagem tal como bloco o qual é processado pela in- terpredição. As PUs de uma imagem podem também ter diferentes tamanhos.
[0091] Os codecs correntes tal como o H.265/HEVC, proveem, al- gumas características de resiliência tal como desabilitar predição de vetor de movimento para certos casos de utilização. Por exemplo, o vetor de movimento de um bloco temporalmente co-localizado não é utilizado para predição de MV, se um sinalizador no fluxo de bits assim indicar. Mais ainda, uma estimativa de mesclagem paralela para deci- são de codificador é habilitada. Section 5.2.2.5 "Merge Estimation Re- gions for Parallel Merge Mode Estimation" of the book "High Efficiency Video Coding (HEVC), Vivienne Sze, Madhukar Budagavi, Gary J. Sul- livan", Springer, 2014 explica a técnica em detalhes. Especificamente, uma janela (região de estimativa de movimento, MER) é definida, onde os blocos que caem na região não são permitidos herdar informações de movimento uns dos outros. Em outras palavras, se dois blocos (blocos corrente e o vizinho) estão na mesma MER, as informações de movimento de bloco vizinho não são incluídas na lista de mesclagem do bloco corrente, de modo a aperfeiçoar capacidade de processa- mento paralelo.
[0092] De modo a aperfeiçoar a possibilidade de paralelização e, ao mesmo tempo, prover uma resiliência de erros mais alta, de acordo com a presente descrição, a coincidência de modelo é somente apli- cada para determinar os vetores de movimento de um bloco corrente, se o bloco vizinho não obteve o vetor de movimento por coincidência de modelo.
[0093] Consequentemente, como os blocos os quais utilizam coin- cidência de modelo, não são ainda utilizados para decodificar blocos adjacentes, os blocos adjacentes podem ser decodificados durante o processamento dos blocos decodificados utilizando a coincidência de modelo. Mais ainda, como os blocos adjacentes não utilizam blocos reconstruídos por coincidência de modelo, estes podem ser decodifi- cados mesmo se a imagem de referência necessária para coincidência de modelo estiver faltando ou danificada.
[0094] A invenção pode também limitar a predição de blocos vizi- nhos espaciais, se o bloco vizinho aplicar derivação ou refinamento de movimento com base em coincidência de modelo. Esta pode limitar a predição de um bloco vizinho temporal, somente se o bloco aplicar de- rivação ou refinamento e estas duas técnicas podem ser aplicadas jun- tas. O HEVC correntemente provê duas diferentes propostas para au- xiliar na resiliência de erros e a paralelização, como acima menciona- do. Este completamente desabilita a predição ou herança de informa- ções de movimento dentro de uma janela pré-definida. Como um resul- tado esta negocia ganho de codificação com capacidade de proces- samento paralelo.
[0095] Em algumas modalidades, as informações de movimento de um bloco vizinho são substituídas por uma versão não ótima para ser utilizada pelo bloco corrente para predição (possivelmente se estes estiverem localizados dentro da mesma janela). Como a predição não é completamente desabilitada, a perda de codificação é muito menor.
A invenção corrente se aplica a blocos vizinhos que aplicam derivação ou refinamento de movimento. Se um bloco vizinho não utilizar o pro- cesso de derivação ou refinamento, as informações de movimento po- dem ser herdadas (ou utilizadas como preditor) pelo bloco corrente.
[0096] Um dispositivo exemplar de acordo com uma modalidade para determinar uma predição de um bloco de corrente, para recons- trução do bloco de corrente, compreende: uma unidade de predição para detectar se ou não um vetor de movimento de um bloco adjacen- te ao bloco corrente foi determinado pela coincidência de modelo. Se detectado negativamente, derivar a predição do bloco corrente de acordo com o bloco adjacente. Por outro lado, se detectado positiva- mente, não derivará a predição do bloco corrente de acordo com bloco adjacente.
[0097] Isto está ilustrado na Figura 6, na qual a unidade de inter- predição como 210 da Figura 2 ainda implementa a detecção se utilizar um bloco vizinho para predição. Isto pode ser conseguido pela unidade de decisão de bloco 660 adicionada ao dispositivo de interpredição 600 que corresponde ao dispositivo de interpredição 300 da Figura 3. Exemplo 1: Vetor de Substituição
[0098] De acordo com o primeiro exemplo, a invenção pode ser aplicada à determinação de vetores de movimento com base em uma lista de candidatos formadas dos vetores de movimento de blocos vizi- nhos. Assim, o dispositivo acima mencionado para determinar predi- ção de um bloco de corrente está ainda configurado para determinar um vetor de movimento para determinar interpredição de um bloco de corrente. Para o propósito de reconstrução do bloco de corrente, a unidade de predição compreende uma unidade de determinação de lista de vetores de movimento 615A, 615B, para formar uma lista de vetores de movimento candidatos para o bloco de corrente, a forma- ção da lista incluindo:
- Detectar, pela unidade de decisão de bloco 660, se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, - se detectado negativamente, incluir o vetor de movimento do bloco adjacente como um candidato na lista, - se detectado positivamente, não incluir o vetor de movi- mento do bloco adjacente como um candidato na lista.
[0099] O dispositivo pode ainda compreender uma unidade de de- terminação de vetor de movimento 620A, 620B para selecionar uma estimativa de um vetor de movimento da lista e determinar o vetor de movimento do bloco corrente de acordo com a estimativa.
[00100] Especificamente, a unidade de determinação de lista 615A, 615B pode estar configurada para, se detectado positivamente, incluir um vetor de movimento de substituição como um candidato na lista.
[00101] “Como pode ser visto na Figura 6, a derivação de vetor de movimento inclui um bloco de mesclagem de blocos de predição inte- rimagens assim como predição de vetor de movimento avançada. No entanto, a presente descrição é também aplicável se somente uma destas propostas / blocos for provido, ou se qualquer outra proposta de derivação de vetor de movimento for utilizada, o que está baseado em duas etapas, a saber geração de lista de vetores de movimento e seleção de um vetor de movimento da lista. A unidade de decisão de bloco 660 recebe como sua entrada as informações 605 do tipo / modo de predição do bloco vizinho (anteriormente decodificado e espacial- mente ou temporalmente imediatamente ou diagonalmente adjacente). Com base neste, esta determina se ou não o vetor de movimento do bloco corrente será utilizado para interpretar a lista de MV (615A e/ou 615B).
[00102] A unidade de AMVP recebe em sua entrada 602 informa- ções referentes à diferença entre predição de vetor de movimento e o vetor de movimento, como determinada pelo codificador e sinalizada no fluxo de bits. A lista de MV 615B é gerada de acordo com a decisão da unidade de decisão de bloco 660 e a seleção de candidato 620B é executada selecionando a predição de vetor de movimento da lista. Similarmente, a Mesclagem de Bloco de Predição Interimagens (IPBM) inclui uma geração da lista de mesclagem 615A de acordo com o con- trole pela unidade de decisão do bloco 660 e uma seleção 615A do melhor candidato da lista de mesclagem. A interpolação 320 pode, mas em geral não precisa ser executada. A predição é então calculada ou com base em um único vetor de movimento (em tal caso, somente uma das duas unidades 330 e 335 é utilizada) ou com base em 2 MVs nas unidades 330 e 335, respectivamente. É notado que, em geral, somente uma das unidades 330 e 335 pode ser implementada, se ne- nhuma bipredição for suportada. Estes blocos 320-360 funcionam co- mo aqueles descritos com referência à Figura 3.
[00103] A Figura7 ilustra um exemplo, no qual uma unidade de re- finamento de vetor de movimento 340 para aplicar um refinamento da estimativa selecionada do vetor de movimento está também incluída no dispositivo. Mais ainda, a unidade de determinação de lista de can- didatos de vetor de movimento 615 está configurada para, se detecta- do positivamente, incluir na lista uma estimativa do vetor de movimen- to do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento e a unidade de determinação de vetor de movi- mento 310 está ainda configurada para determinar o vetor de movi- mento do bloco adjacente de acordo com a estimativa do vetor de mo- vimento do bloco adjacente após o refinamento. Em outras palavras, neste exemplo, a versão não refinada do vetor de movimento, em ter- mos gerais é a estimativa de vetor de movimento antes da coincidên- cia de modelo, está armazenada em uma memória para utilização adi- cional pelo processo de reconstrução de uma unidade de processa-
mento seguinte. As versões refinadas dos vetores de movimento são utilizadas para o processo de reconstrução de amostra do bloco de codificação corrente, possivelmente seguidas por um processo de fil- tragem.
[00104] A Figura7 mostra a análise das unidades de processamen- to similar ao exemplo da Figura 4. No entanto, quando processando PU1, o vetor de movimento não refinado o qual é selecionado para PU1 adjacente a PU2 é emitido para o processo de processamento de PU?2. Especificamente PU?2 utiliza o vetor de movimento não refinado de PU1 para formar a sua lista de candidatos de vetor de movimento. Ao mesmo tampo, o processamento de PU1 continua por refinamento de vetor de movimento, reconstrução da textura (predição do bloco corrente com base no vetor de movimento refinado) e filtragem. É no- tado que um estágio de filtragem pode ser omitido. Como pode ser vis- to, a lista de candidatos de vetor de movimento de PU2 pode agora ser formada e a seleção e refinamento de vetor de movimento feita en- quanto PU1 é ainda processado. Consequentemente, a paralelização sobre o nível de processo de interpredição é possível para as unida- des de processamento vizinhas. Ao mesmo tempo, como o vetor de movimento selecionado para PU1 antes do refinamento não depende de disponibilidade/exatidão da imagem de referência. Assim a propa- gação de erros de PU1 para PU2 não acontece, levando a uma resili- ência de erro aumentada.
[00105] Em outras palavras, na Figura 7, a PU1 utiliza a saída do processo de derivação/refinamento para processos de reconstrução de textura e filtragem. A PU2 (a qual é uma vizinha de PU1) não utiliza a saída da derivação/refinamento (de PU1) para predição de MV. Ao in- vés esta utiliza uma versão não ótima (a qual pode ser obtida antes do processo de derivação/refinamento estar completo) para predição de MV.
[00106] É notado que uma das vantagens providas pelo Exemplo 1 é que a paralelização é habilitada. No entanto, nem cada codifica- dor/decodificador deve necessariamente fazer uso de paralelização. É outra vantagem que o codificador/decodificador pode selecionar se ou não a paralelização será executada. Quando a paralelização é execu- tada, a unidade de determinação de lista de vetor de movimento está configurada para formar a lista para o bloco corrente enquanto a uni- dade de refinamento de vetor de movimento aplica um refinamento no bloco adjacente.
[00107] A parte acima do primeiro exemplo não distingue entre o tipo de vizinhança, especificamente se os blocos vizinhos são imedia- tamente adjacentes ao bloco corrente dentro do domínio temporal ou espacial. Pode prover algumas vantagens adicionais para fazer essa distinção. Especificamente, vetores de movimento dos vizinhos tempo- ralmente precedentes (na ordem de decodificação) estão tipicamente disponíveis quando a lista de vetores de movimento é formada para o bloco corrente. Consequentemente, se apenas a vantagem da parale- lização for visada, pode ser benéfico incluir os blocos temporalmente vizinhos na lista de vetores de movimento, mesmo que estes foram obtidos aplicando a coincidência de modelo e mais especificamente em termos deste exemplo, se estes foram refinados.
[00108] Assim, correspondentemente, a unidade de determinação de lista de vetor de movimento pode estar configurada para, se detec- tado positivamente, - se o bloco adjacente estiver localizado na mesma imagem que o bloco corrente, incluir na lista uma estimativa do vetor de movi- mento do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento, e - se o bloco adjacente estiver localizado em uma imagem outra que o bloco corrente, incluir na lista o vetor de movimento do bloco adjacente após aplicar ao bloco adjacente o refinamento.
[00109] “Como a imagem de referência temporal é reconstruída an- tes da imagem corrente, referir aos vetores de movimento refinados na imagem de referência temporal não retardaria a reconstrução da ima- gem corrente. Cada unidade de processamento que aplica refinamento de vetor de movimento armazena dois candidatos para predição poste- rior, a saber: vetor de movimento não refinado para ser utilizado por vizinhos espaciais para predição de vetor de movimento por posterior (em ordem de decodificação) unidades de processamento e um vetor de movimento refinado a ser utilizado se predição de movimento tem- poral pelos blocos posteriores assim como por compensação de mo- vimento e possivelmente filtragem da unidade de processamento cor- rente. Como acima mencionado, a utilização da substituição ao invés de executar coincidência de modelo pode ligeiramente diminuir a efici- ência de codificação.
[00110] A Figura8 ilustra um método exemplar que ilustra a propos- ta acima descrita. Especificamente, na etapa S810, é determinado se o bloco corrente e um de seus vizinhos estão localizados dentro da mesma janela. A janela pode ser, por exemplo, uma janela espacial. Neste exemplo, a janela pode ser a imagem inteira. Consequentemen- te, pode ser testado se os blocos corrente e vizinho estão dentro da mesma janela. Se não ("não" na etapa S810), então o vetor de movi- mento refinado é utilizado pelo bloco corrente para predição de vetor de movimento, por exemplo, o vetor de movimento refinado do bloco vizinho é incluído na lista de vetores de movimento candidatos na eta- pa S850.
[00111] De outro modo, se o bloco vizinho e o bloco corrente estive- rem localizados dentro da janela, na etapa S820 é testado se ou não o bloco vizinho aplica refinamento ou derivação de vetor de movimento utilizando coincidência de modelo. Se "não", isto é, se o bloco vizinho não tem um vetor de movimento determinado pela coincidência de modelo, então a etapa S850 segue, significando que o refinamento é executado para o bloco corrente. Por outro lado, se o bloco vizinho aplicar refinamento ou derivação de vetor de movimento com coinci- dência de modelo, é ainda testado na etapa S830 se o bloco corrente e um de seus vizinhos pertencem à mesma imagem. Consequente- mente, se o bloco corrente e o bloco vizinho não estão dentro da mesma imagem ("não" na etapa S830), então o vetor de movimento refinado é utilizado pelo bloco corrente para predição de vetor de mo- vimento, por exemplo, o vetor de movimento refinado do bloco tempo- ralmente vizinho é incluído na lista de vetores de movimento candida- tos na etapa S850. Se, por outro lado, na etapa S830 a resposta for "sim", na etapa S840, um vetor de movimento de substituição é utiliza- do pelo bloco corrente para predição de vetor de movimento.
[00112] No exemplo acima, como as etapas S810 e S830 parecem testar a mesma condição. No entanto, no exemplo seguinte, possibili- dades de janela espacial adicionais estão discutidas para a etapa 810. Mais ainda, é notado que o teste na etapa S830 pode também testar uma janela temporal, isto é, testar se o bloco vizinho na ordem de de- codificação está localizado a menos do que k imagens na ordem de decodificação da imagem corrente na qual o bloco corrente está locali- zado. É notado que a decodificação é em geral considerada ser a mesma que uma ordem de codificação. Em outras palavras, a ordem de decodificação é dada pela ordem de codificação definida pelo lado de codificador e pela estrutura de fluxo de bits gerada. Assim, quando referindo à ordem de decodificação neste exemplo, referência poderia ser feita à ordem de codificação ao invés.
[00113] No exemplo acima da Figura 7, o vetor de movimento de substituição foi determinado pelo vetor de movimento não refinado. No entanto, a presente descrição não está limitada a tal proposta. Ao in-
vés, a substituição pode ser definida em qualquer modo.
[00114] Noentanto, o vetor de movimento de substituição não é ne- cessariamente um vetor de movimento do bloco vizinho antes do refi- namento. Por exemplo, em uma modalidade exemplar, o vetor de mo- vimento de substituição é um vetor de movimento de um bloco vizinho ao bloco de corrente e diferente do bloco adjacente.
[00115] A Figura 10 ilustra uma PU corrente a qual tem uma PU vi- zinha referida como A1 e A1 tem uma PU vizinha referida como X1. Se o bloco vizinho A1 aplicar derivação / refinamento de vetor de movi- mento (coincidência de modelo) então uma lista de vetores de movi- mento candidatos é construída para PU A1 utilizando os vizinhos es- paciais e/ou temporais de A1 (por exemplo, X1). Um vetor de movi- mento candidato para a PU corrente é então selecionado ou computa- do da lista de candidatos construída para o bloco vizinho A1. O candi- dato selecionado ou computado A1 MV replacement pode diferir do vetor de movimento o qual será emitido da determinação de vetor de movimento para A1. Aqui, seleção significa seleção de uma lista de possíveis candidatos. A computação dos vetores de movimento obtém um vetor de movimento em outro modo, por exemplo, calculando a média de vetores de movimento de mais do que um candidato ou cal- culando um vetor de movimento em qualquer outro modo com base em MVs candidatos ou sem referir a candidatos. Vantajosamente, A1l MV replacement não foi obtido por coincidência de modelo. No entanto, é notado que, como X1 não é um vizinho direto da PU corren- te, de acordo com uma implementação, o Al MV replacement pode também ser determinado utilizando coincidência de modelo, já que A1l MV replacement está provavelmente disponível quando decodifi- cando a PU corrente, de modo que um processamento paralelo da PU corrente e, por exemplo, A1, é ainda possível.
[00116] De acordo com um exemplo, X1 é um bloco adjacente de
A1 no seu lado esquerdo, mas X1 não está adjacente à unidade de pro- cessamento corrente. Apesar de tudo, qualquer outro bloco na proximi- dade de A1 ou na vizinhança temporal de A1 pode ser utilizado. O vetor de movimento de X1 pode ser utilizado como A1 MV replacement.
[00117] Em geral, uma lista de candidatos (conjunto) da PU corren- te é formada listando na mesma os vetores de movimento de algumas PUs vizinhas. Se uma PU espacialmente e/ou temporalmente vizinha, da qual o vetor de movimento deve ser incluído na lista de candidatos da PU corrente for determinada por coincidência de modelo, então um vetor de substituição é incluído no conjunto de candidatos da PU cor- rente ao invés. Este vetor de substituição, de acordo com um exemplo, é um vetor de movimento da lista de candidatos daquela PU espacial- mente e/ou temporalmente vizinha. O vetor de substituição pode em geral ser um vetor de movimento já refinado ou um vetor de movimen- to determinado sem coincidência de modelo (por exemplo, por predi- ção de vetor de movimento com base em sinalização de fluxo de bits).
[00118] A Figura 9 mostra outra modalidade exemplar do vetor de movimento de substituição. De acordo com esta modalidade exemplar, quando construindo a lista de candidatos para a PU corrente, um vetor de movimento de um bloco vizinho a ser incluído na lista de candidatos mas é determinado utilizando coincidência de modelo é substituído por um vetor de movimento do vetor de movimento candidato seguinte a ser incluído na lista. Por exemplo, a Figura 9 mostra a PU corrente com vizinhos AO até Am + 1 no lado esquerdo e vizinhos B-1 até Bn + 1 no topo.
[00119] “Como pode ser visto na Figura 9, em geral (em qualquer dos exemplos aqui descritos), as PUs a serem processadas podem ter diferentes tamanhos. Consequentemente, a PU corrente pode ter di- versos vizinhos espaciais e também diversos temporais, e mesmo pelo menos vizinhos co-localizados (em imagens anteriormente decodifica-
das).
[00120] Mais ainda, de acordo com uma implementação a qual po- de também pode ser aplicável a qualquer um dos exemplos e modali- dades aqui descritos, a construção de lista de candidatos para cada PU é executada em um modo pré-definido, por exemplo definido em um padrão. Por exemplo, a lista de candidatos pode ser construída incluindo na mesma vetores de movimento dos vizinhos das PU's cor- rentes de acordo com uma ordem pré-definida. A lista de candidatos pode ter um tamanho fixo. Tal regra para criar a lista de candidatos permite que o codificador e decodificador funcionar em um modo com- patível. Por exemplo, a ordem pré-definida pode ser vetores de movi- mento AO até Am + 1 seguidos pelos vetores de movimento de B-1 até Bn + 1 seguidos por vetores de movimento CO até Cp em uma imagem anteriormente decodificada (diretamente adjacente). Aqui, m é o nú- mero de vizinhos do lado esquerdo, n é o número de vizinhos superio- res e p é o número de vizinhos temporais. No entanto, é notado que o modo no qual a lista de candidatos é construída não é necessariamen- te inteiramente definido no padrão. Este pode ser pelo menos parcial- mente determinado pela sinalização relativa a sequência de vídeo den- tro do fluxo de bits. Mais ainda, de acordo com a regra pré-definida, o vetor de movimento de todos os vizinhos mostrados na Figura 9 e/ou os vizinhos temporais não são necessariamente incluídos na lista. A regra pode definir somente diversos dos vizinhos e pode mas não ne- cessariamente incluir vizinhos temporais. Mais ainda, é notado que a lista não precisa incluir diretamente os vetores de movimento dos blo- cos vizinhos. Esta pode também incluir vetores de movimento compu- tados dos vetores de movimento dos blocos vizinhos (por exemplo, uma média de dois vetores de movimento de vizinhos mutuamente ad- jacentes ou similares).
[00121] Nesta modalidade exemplar, a lista de candidatos é cons-
truída para a PU corrente. Se um vetor de movimento de Am + 1 deve ser incluído na lista (de acordo com a regra pré-definida), mas foi de- terminado por coincidência de modelo então ao invés do vetor de mo- vimento de Am + 1, o vetor de movimento da PU seguinte a Am + 1 na lista de candidatos da PU corrente é utilizado como uma substituição para o vetor de movimento de Am + 1. Neste exemplo (ver a sequên- cia dos blocos acima mencionada) o vetor de substituição seria B-1. Como acima mencionado, a regra pré-definida pode definir uma dife- rente ordenação tal como Am + 1 até AO, B-1 até Bn + 1, CO. Em tal caso, o próximo bloco seguinte a Am + 1 seria Am de modo que o ve- tor de movimento de Am + 1 seria substituído pelo vetor de movimento de Am na lista de candidatos para a PU corrente.
[00122] É notado que no caso de todos os blocos vizinhos utiliza- rem coincidência de modelo para derivar seus respectivos vetores de movimento e assim, o vetor de movimento do bloco corrente não pode ser determinado tomando um vetor de movimento de outro vizinho, então, de acordo com uma modalidade, o bloco corrente não deverá aplicar coincidência de modelo para a derivação ou refinamento de vetor de movimento. Alternativamente, em tal caso, um conjunto pré- definido de candidatos de MV pode ser utilizado para construir a lista de candidatos de preditor de MV. Tal conjunto pré-definido poderia in- cluir MVs que são zero nos eixos geométricos x e y. Similarmente, se não existir vizinho do bloco vizinho o qual possa ser utilizado para de- terminar o vetor de movimento, o bloco corrente será predito diferen- temente. Como um exemplo este poderia ser predito utilizando intra- predição em vez de interpredição.
[00123] Nas implementações exemplares acima, um vetor de mo- vimento candidato de uma unidade de processamento corrente deter- minado por coincidência de modelo é substituído por um vetor de substituição na lista de candidatos. Diversos exemplos para prover o vetor de substituição foram mostrados acima, o que permite um pro- cessamento paralelo das unidades de processamento vizinhas e/ou aumentar a resiliência a erros. Exemplo 2: Limitação de Região
[00124] “De acordo com um segundo exemplo, o qual é combinável com o primeiro exemplo e/ou com qualquer um dos exemplos seguin- tes, um bloco quo qual está dentro de uma região grande de N x M amostras não pode utilizar candidatos de vetor de movimento refinado (ou, em geral, candidatos de vetor de movimento determinados pela aplicação de coincidência de modelo) de um bloco vizinho o qual está também localizado dentro da mesma região. Por outro lado, o bloco pode utilizar candidatos de vetor de movimento refinado de blocos cir- cundantes ou mesmo vizinhos os quais estão localizados dentro da mesma região.
[00125] Em outras palavras, a unidade de predição pode ser confi- gurada para, para reconstrução do bloco corrente, detectar ou não um vetor de movimento de um bloco circundante, o qual está localizado dentro de uma região predeterminada definida com relação à posição do bloco corrente, foi determinado pela coincidência de modelo. A re- gião pode ser retangular ou mesmo quadrada. No entanto, a presente descrição não está limitada por meio disto e a região pode ter qualquer outra forma.
[00126] Esta proposta está na Figura 8, etapa S810, na qual é de- terminado se ou não o bloco vizinho e o bloco corrente estão localiza- dos dentro da mesma janela. Esta janela pode ser a região de Nx M amostras.
[00127] As Figuras 14 e 15 mostram exemplos das regiões de acordo com o segundo exemplo.
[00128] Especificamente, a Figura 14 mostra uma região retangular de N x M amostras. Vetores de movimento de blocos localizados den-
tro desta região não podem ser utilizado para derivar vetores de mo- vimento de blocos localizados dentro da mesma região especialmente se a derivação incluir coincidência de modelo. Por outro lado, os veto- res de movimento de blocos localizados fora da região tal como o blo- co BO podem ser utilizados para derivar vetores de movimento do blo- co na região, mesmo se o bloco na região e o bloco BO são vizinhos. Esta proposta permite um processamento paralelo dos blocos os quais estão dentro da mesma região. A região para um bloco corrente pode vantajosamente ser definida relativamente à localização do bloco cor- rente. No exemplo da Figura 14, a definição de "dentro da região" sig- nifica que o bloco inteiro (corrente e/ou vizinho), isto é, todas as suas amostras, estão localizadas na região. No entanto, isto é somente uma convenção o que não tem qualquer consequência efetiva sobre a ope- ração deste exemplo.
[00129] A Figura 15 mostra outro exemplo, no qual a posição dentro da região é determinada somente pela localização da amostra superior esquerda do bloco vizinho ou corrente. A linha tracejada, como no exemplo anterior, mostra a grande região de N x M amostras (grade virtual T). Agora, o bloco X o qual é um bloco retangular que sobrepõe com a região mas não completamente localizado dentro da região é também considerado cair dentro da região já que o seu canto superior esquerdo está localizado dentro da região.
[00130] É também notado que em geral a região não precisa ser determinada com relação à posição superior esquerda de um bloco mas pode ser determinada com relação a qualquer posição do bloco tal como a posição central.
[00131] Em resumo, um bloco corrente que está dentro da região N x M não pode utilizar vetores de movimento de blocos localizados na mesma região e processados por derivação e/ou refinamento com ba- se em coincidência de modelo. Ao invés, o bloco pode utilizar, por exemplo, um vetor de movimento de substituição, como acima descrito no Exemplo 1. Por exemplo, o vetor de substituição é um vetor de mo- vimento do bloco vizinho dentro da região antes do refinamento, ou é um vetor de movimento de um vizinho (não adjacente ao bloco corren- te) ao bloco vizinho, ou é um vetor de movimento de outro bloco vizi- nho.
[00132] O bloco corrente dentro da região N x M pode utilizar veto- res de movimento de blocos localizados fora da região independente- mente de como estes são terminados. Esta regra se aplica indepen- dentemente de como o termo dentro / fora da região é definido (se to- dos os pixels do bloco ou somente o ponto de referência tal como o pixel superior esquerdo do bloco precisa estar dentro da região). Exemplo 3: Pulando as verificações
[00133] De acordo com um terceiro exemplo, o vetor de movimento de um bloco vizinho determinado por coincidência de modelo está ain- da incluído na lista de candidatos do bloco corrente.
[00134] A construção de uma lista de candidatos tal como lista de mesclagem ou lista AMVP pode incluir verificar as informações de mo- vimento de múltiplos blocos vizinhos e adicioná-las na lista de candida- tos após a verificação de redundância ser executada (os processos de construção de lista de mesclagem e de construção da lista AMVP (Preditor de Vetor de Movimento Avançado) (como descrito no padrão HEVC / H.265 e, por exemplo, no livro acima mencionado por V. Sze et al, Seção 5.2.1 e 5.2.2 aqui incorporado por referência) referem-se à construção de 2 listas de preditores de vetor de movimento que são herdados por blocos vizinhos temporais e espaciais. A seleção dos blocos vizinhos para herdar os vetores de movimento é diferente (dife- rentes algoritmos são empregados) para as duas listas. Mais ainda, uma vez que o preditor de vetor de movimento é selecionado, nenhu- ma diferença de vetor de movimento adicional é sinalizada no fluxo de bits, e a lista de mesclagem é utilizada. Por outro lado, a diferença de MV é sinalizada para o candidato de AMVP.
[00135] A verificação de redundância que é mencionada no pará- grafo acima refere-se a identificar informações de movimento que são as mesmas para 2 blocos vizinhos. Em outras palavras, durante os processos de construção de lista de mesclagem ou AMVP, antes de um vetor de movimento ser adicionado à lista, este é comparado com os candidatos já existentes (com todos estes ou com um subconjunto selecionado) na lista e é deixado fora da lista se existir um candidato idêntico já na lista (ou no subconjunto selecionado). A operação de verificação de redundância poderia incluir comparar 2 vetores de mo- vimento ou todas as informações de movimento (índice de imagem de referência, modo de predição (uni ou bipredição, e vetores de movi- mento que apontam para as imagens de referência que são utiliza- das)).
[00136] No entanto, de modo a permitir um processamento paralelo das unidades de processamento vizinhas, os vetores de movimento refinados não são verificados para redundância na construção da lista de candidatos de vetor de movimento. Esta proposta tem a vantagem que a lista de candidatos (tal como lista de mesclagem ou lista de AMVP) pode ser construída sem conhecer o valor real dos vetores de movimento refinados ou derivados. A reconstrução de vetor de movi- mento real ainda precisa esperar pelo processo de derivação e/ou refi- namento.
[00137] —“Consequentemente, a unidade de determinação de lista de candidatos de vetor de movimento está ainda configurada para verifi- car se um vetor de movimento a ser incluído na lista já está incluído na lista, e não incluí-lo na lista se afirmativo, e a dita verificação não é executado quando incluindo na lista um vetor de movimento de um bloco adjacente a ser processado pelo menos parcialmente em parale-
lo com o processamento do bloco corrente.
[00138] Isto está ilustrado na Figura 11. Na Figura 11, um vetor de movimento da unidade de processamento PU1 é determinado incluin- do derivação e refinamento. Então, o vetor de movimento refinado é inserido na lista de candidatos de vetor de movimento. Neste exemplo, o processo de verificação de redundância é pulado. Assim, a lista de candidatos de um bloco corrente pode ser construída antes do proces- so de refinamento do vetor de movimento ser completado em um bloco vizinho. Uma vez que o processo de refinamento é completado, o vetor de movimento refinado de PU1 é incluído na lista de candidatos pré- construídos da PU2. Em outras palavras, a construção de lista de can- didatos não precisa esperar pelo vetor de movimento de PU1, mas po- de ser completada com os candidatos de vetor de movimento de ou- tros blocos. O vetor de movimento de PU1 é então adicionado antes da etapa de seleção de vetor de movimento para PU2 ser executada. A reconstrução da textura e filtragem de PU1 (bloco vizinho) podem ser executadas em paralelo com o processamento de PU2 (bloco cor- rente), especificamente com a construção de lista de candidatos, sele- ção do vetor de movimento / derivação e refinamento.
[00139] No exemplo acima, a lista de mesclagem de PU2 pode ser construída antes da derivação ou refinamento de vetor de movimento de PU1 ser completo, já que os valores reais dos vetores de movimen- to de PU1 não são mais necessários para o processo de construção de lista de mesclagem. Portanto, PU1 pode continuar com a seleção do candidato de preditor da lista de mesclagem. Nesta etapa se o can- didato de preditor for herdado de PU1 (o qual aplica derivação ou refi- namento de MV), PU1 e PU2 ainda não podem ser processados em paralelo, já que os valores reais de vetores de movimento de PU1 não estão disponíveis e é requerido para os processos de derivação / refi- namento de MV e reconstrução de textura. No entanto, se o candidato de preditor for herdado de PU3 (a qual não aplica derivação / refina- mento de MV), então PU1 e PU3 podem ser processados em paralelo, já que os valores reais dos vetores de movimento de PU3 já são co- nhecidos e disponíveis neste ponto no tempo. Um implementador de decodificador pode facilitar o método inventado para acelerar o pro- cesso de decodificação em um modo oportunista, isto é, empregando a reconstrução de PU paralela sempre que possível. Exemplo 4: Predição de Vetor de Movimento Limitada
[00140] Nos exemplos acima, os vetores de movimento de blocos vizinhos obtidos por derivação e refinamento de vetor de movimento aplicando coincidência de modelo não foram utilizados como candida- tos de vetor de movimento para o bloco corrente. No entanto, a pre- sente descrição não está limitada a exemplos nos quais os vetores de movimento para o bloco corrente são determinados selecionando-os de uma lista de candidatos e/ou ainda refinando-os.
[00141] De acordo com um quarto exemplo, o vetor de movimento de um bloco corrente é predito utilizando o vetor de movimento de um bloco adjacente ao bloco de corrente (de preferência diretamente es- pacialmente adjacente, mas em geral, blocos temporalmente adjacen- tes podem ser utilizados também). A diferença para a predição pode ser sinalizada no fluxo de bits. Alternativamente, um processo de refi- namento de vetor de movimento baseado em decodificador pode ser executado no vetor de movimento predito.
[00142] A Figura 12 ilustra um bloco corrente com um bloco vizinho esquerdo 1, do qual o vetor de movimento foi determinado por deriva- ção e/ou refinamento de vetor de movimento com base em coincidên- cia de modelo e com um vizinho superior 2 do qual o vetor de movi- mento não foi determinado por derivação e/ou refinamento de vetor de movimento com base em coincidência de modelo. De acordo com o quarto exemplo, se o bloco corrente aplicar coincidência de modelo para determinar o vetor de movimento, então este não utiliza o vetor de movimento de um bloco vizinho para predição de vetor de movi- mento se o vetor de movimento do bloco vizinho foi determinado com base em coincidência de modelo. Assim, na Figura 12, o vetor de mo- vimento do bloco vizinho 1 não pode ser utilizado para predição de ve- tor de movimento do vetor de movimento do bloco de corrente. Por ou- tro lado, se o bloco corrente não aplicar coincidência de modelo para sua determinação de vetor de movimento, este pode utilizar o vetor de movimento de um bloco vizinho 1, por exemplo, para predição de vetor de movimento (isto é, calculando o vetor de movimento de bloco cor- rente como uma soma de uma predição determinada com base no ve- tor de movimento do bloco vizinho ou mais blocos vizinhos e uma dife- rença sinalizada no fluxo de bits).
[00143] Em qualquer caso, o vetor de movimento do bloco corrente pode ser predito com base no bloco vizinho 2 se coincidência de mo- delo não for aplicada para determinar o vetor de movimento do bloco vizinho 2. É notado que a predição de vetor de movimento para o blo- co corrente pode ser executada tomando como uma predição direta- mente um vetor de movimento de um bloco vizinho. No entanto, a pre- dição de vetor de movimento pode também ser executada com base em um vetor de movimento de um bloco vizinho, por exemplo, calcu- lando a média de vetores de movimento de diversos blocos vizinhos espaciais e/ou temporais. Exemplo 5: Intrapredição Limitada
[00144] De acordo com um quinto exemplo, a unidade de predição compreende uma unidade de determinação de amostras de referência para determinar um conjunto de amostras de referência para o bloco corrente que inclui: - detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo,
- se detectado negativamente, incluir uma ou mais amos- tras do bloco adjacente no conjunto de amostras de referência, e - se detectado positivamente, não incluir qualquer amostra do bloco adjacente no conjunto de amostras de referência.
[00145] Mais ainda, a unidade de predição inclui uma unidade de intrapredição para prover a predição do bloco corrente de acordo com amostras do conjunto de amostras de referência.
[00146] Isto está ilustrado na Figura 13, na qual o bloco corrente está circundado por um bloco vizinho esquerdo 1 do qual o vetor de movimento foi determinado aplicando coincidência de modelo e um bloco vizinho superior 2 do qual o vetor de movimento não foi determi- nado ou não foi determinado aplicando a coincidência de modelo. O bloco corrente é um intrabloco, isto é, sua predição deve ser determi- nada por intrapredição com base em amostras de referência (pixels) dos blocos circundantes na mesma imagem. Como o bloco vizinho 1 aplica derivação e/ou refinamento de vetor de movimento, a intrapredi- ção do bloco corrente não utilizará amostras do bloco vizinho 1. Como o bloco vizinho 2 não aplica derivação e/ou refinamento de vetor de movimento, a intrapredição do bloco corrente pode utilizar amostras reconstruídas do bloco vizinho 2 para a intrapredição.
[00147] “Como já acima mencionado, mesmo se as Figuras 12 e 13 mostrarem somente um bloco vizinho esquerdo e um superior, em ge- ral podem existir mais blocos vizinhos como mostrado na Figura 9. Em geral, na quinta modalidade, amostras de referência de blocos os quais utilizaram coincidência de modelo para derivar seu(s) vetor(es) de movimento não são utilizadas para intrapredição do bloco corrente. Exemplo 6: Sinalização
[00148] De modo a permitir o codificador e o decodificador opera- rem no modo compatível, uma sinalização de controle pode ser intro- duzida no fluxo de bits a qual específica se e como o processamento paralelo e/ou resiliência são controlados como acima descrito.
[00149] “Como já descrito com referência às Figuras 1 e 2, um de- codificador de vídeo para decodificar uma pluralidade de imagens de um fluxo de bits pode compreender um analisador de fluxo de bits para analisar o fluxo de bits incluindo informações de controle, a unidade de predição como descrita nos exemplos acimas e uma unidade de re- construção para reconstruir o bloco corrente com base na predição do bloco corrente.
[00150] Mais ainda, um codificador de vídeo para codificar uma plu- ralidade de imagens em um fluxo de bits pode compreender a unidade de predição como descrito nos exemplos acima, um formador de fluxo de bits para incluir no fluxo de bits informações de controle, e uma uni- dade de reconstrução para reconstruir o bloco corrente com base na predição do bloco corrente e armazenar o bloco reconstruído em uma memória.
[00151] O codificador ou decodificador de vídeo pode operar com as informações de controle as quais incluem: um sinalizador que indica se ou não a unidade de predição deve detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, e/ou um indicador de substituição que indica, se detectado positivamente, como a predição para o bloco presente é determinada.
[00152] — Especificamente, o sinalizador de controle pode indicar se ou não a restrição de acordo com a presente descrição não deve ser aplicada. Se o sinalizador indicar que esta não deve ser aplicada, en- tão nenhuma verificação é executada e os vetores de movimento de um bloco corrente podem sempre ser derivados dos vetores de movi- mento dos blocos vizinhos, independentemente de como os vetores de movimento dos próprios blocos vizinhos foram derivados. De outro modo, uma das modalidades e exemplos acima aplica-se. Qual das modalidades e exemplos é aplicada pode ser definido em um padrão.
[00153] Além disso, é possível selecionar a aplicação de uma das modalidades e exemplos acima descritos, por exemplo, uma sinaliza- ção de controle pode ser provida, a qual indica, como o vetor de subs- tituição deve ser determinado (vetor de movimento não refinado do vizinho, vetor de movimento de um vizinho do vizinho ou uma cópia de um vetor de movimento de outro vizinho ou qualquer outra coisa). Al- ternativamente ou além disso, a sinalização de controle pode especifi- car se um ou mais do vetor de substituição (exemplo 1), limitação de região (exemplo 2), pulo de verificações (exemplo 3), predição de vetor de movimento limitado (exemplo 4) ou intrapredição limitada (exemplo 5) deve ser aplicado. O tamanho da região pode ser sinalizado tam- bém.
[00154] Por exemplo, as informações de controle estão incluídas em um conjunto de parâmetros de sequência e/ou em um cabeçalho de fatia.
[00155] — Aqui, o termo "conjunto de parâmetros de sequência" refe- re-se em geral a qualquer campo de informações de controle que é reconhecido pelo codificador e decodificador como aplicável a uma pluralidade de imagens que formam uma sequência. Especificamente, no caso de HEVC, este pode ser o Conjunto de Parâmetros de Se- quência (SPS) ou o Conjunto de Parâmetros de Imagem (PPS). No entanto, a presente descrição não está limitada a HEVC e em geral, qualquer sinalização comum aplicável a mais de uma imagem pode ser utilizada. Isto pode controlar as informações utilizadas para o vídeo inteiro ou para um subconjunto de imagens de vídeo.
[00156] Mais ainda, o termo "cabeçalho de fatia" aqui refere-se às informações de controle associadas com uma fatia de vídeo (imagem). HEVOC utiliza fatias de imagem as quais podem incluir a imagem inteira ou uma porção de uma imagem a qual pode ser analisada indepen- dentemente de outras fatias. Analisar aqui inclui decodificação de en-
tropia. Em alguns casos, a fatia é também independentemente decodi- ficável, isto é, não utiliza informações de outras fatias para a decodifi- cação que utiliza intrapredição. No entanto, em geral, as informações de controle podem ser providas em associação com qualquer porção de imagem à qual uma sinalização relativa está provida.
[00157] É notado que a sinalização de controle pode ser aplicada em ambos os níveis. Por exemplo, um sinalizador sobre se ou não uti- lizar a limitação de modo nenhum pode ser sinalizado por fatia, en- quanto que a modalidade específica / exemplo / tamanho da região podem ser sinalizados por pluralidade de imagens.
[00158] A determinação do vetor de movimento que inclui o refina- mento do vetor de movimento como acima descrito pode ser imple- mentada como uma parte da codificação e/ou decodificação de um sinal de vídeo (imagem em movimento). No entanto, a determinação de vetor de movimento também pode ser utilizada para outros propósi- tos em processamento de imagens tal como detecção de movimento, análise de movimento ou similares.
[00159] As Figuras 16 e 17 ilustram cenários nos quais a presente invenção como acima descrita pode prover vantagens relativas a uma melhor resiliência de erros. De acordo com a Figura 16, uma fatia é perdida a qual é necessária para reconstruir uma porção de uma ima- gem de referência para a qual um bloco corrente em uma fatia corren- te aponta. Em tais casos, se os vizinhos do bloco corrente também provavelmente apontarão para a porção de fatia perdida. Se a porção de fatia estiver oculta, pode existir uma degradação de qualidade da imagem. Se esta for retransmitida, pode existir um retardo de decodifi- cador mais alto. De acordo com algumas modalidades exemplares da invenção, os vetores de movimento de vizinhos que utilizam a imagem de referência para determinar o vetor de movimento não são utilizados para o bloco corrente. Consequentemente, não existirá propagação de erros ou atrasos resultantes da perda de fatia.
[00160] Na Figura 17, não somente a imagem de referência está corrompida mas também o vetor de movimento dos blocos vizinhos a serem utilizados na lista de candidatos do bloco corrente ou utilizados para predição do vetor de movimento do bloco corrente. Se um quadro de referência for perdido, amostras de pixels no bloco corrente não podem ser reconstruídas. Além disso, vetores de movimento do bloco corrente na fatia corrente não podem ser reconstruídos neste exemplo. Todos os vetores de movimento na fatia corrente e nas fatias seguin- tes estão corrompidos. Como os blocos seguintes em ordem de deco- dificação podem utilizar os MVs perdidos em predição de MV (mescla- gem, AMVP, etc.), o decodificador não tem um meio fácil para recupe- ração. O codificador não tem um meio para controlar a propagação de erros (os blocos de codificação que precedem o bloco corrente em or- dem de codificação podem todos estar corrompidos).
[00161] De acordo com a invenção, como acima descrito, se uma das imagens de referência na Figura 17 for perdida, apesar dos pixels do bloco corrente estarem corrompidos (devido ao fato que as amos- tras de referência estão perdidas), os vetores de movimento que são utilizados pelo bloco são garantidos serem reconstruído corretamente. Ser capaz de reconstruir os vetores de movimento corretamente (que é o benefício provido pelos métodos inventados) provê os seguintes 2 benefícios: * O decodificador pode empregar algoritmos de ocultação de erros. Como as imagens consecutivas em uma sequência de vídeo são altamente correlacionadas, um decodificador inteligente pode sim- plesmente substituir uma imagem perdida por uma imagem de refe- rência disponível, escalar os vetores de movimento consequentemente e obter uma predição bastante boa para o bloco corrente. Este simples método de ocultação de erros é tornado possível devido ao fato que o vetor de movimento do bloco corrente foi capaz de ser reconstruído corretamente.
e Como o vetor de movimento do bloco corrente é provável ser utilizado como preditor de vetor de movimento pelos blocos de co- dificação seguintes (dentro da vizinhança espacial ou temporal), ser capaz de reconstruir o vetor de movimento do bloco corrente garante que os vetores de movimento dos blocos de codificação seguintes são também reconstruídos corretamente. Como um resultado, um bloco de codificação seguinte que tem todas as suas imagens de referência disponíveis (não perdidas) pode agora ser reconstruído perfeitamente já que sua imagem de referência e vetores de movimento estão todos corretos. Se a invenção não for aplicada, uma imagem de referência perdida faz com que tanto o bloco de codificação corrente quanto os seguintes tenham vetores de movimento errados e o erro propaga através de toda a sequência de vídeo (como um resultado, apenas um quadro perdido pode fazer com que toda a sequência de vídeo seja corrompida).
[00162] Resumindo, a presente descrição refere-se à interpretação na qual é determinado se ou não um vetor de movimento de um bloco vizinho ao bloco de corrente foi determinado pela coincidência de mo- delo (como utilizado, por exemplo, em derivação e/ou refinamento de vetor de movimento baseado em decodificador). Se detectado negati- vamente, a predição do bloco corrente é derivada de acordo com o vetor de movimento do bloco vizinho. Por outro lado, se detectado po- sitivamente, a predição do bloco corrente não está baseada no bloco vizinho.
[00163] A determinação do vetor de movimento pode ser implemen- tada como um dispositivo. Tal dispositivo pode ser uma combinação de um software e hardware. Por exemplo, a determinação de vetor de movimento pode ser executada por um chip tal como um processador de uso geral, ou um processador de sinal digital (DSP) ou uma rede de portas programáveis no campo (FPGA), ou similares. No entanto, a presente invenção não está limitada à implementação em um hardwa- re programável. Esta pode ser implementada em um circuito integrado de aplicação específica (ASIC), ou por uma combinação de software e um ou mais dos componentes de hardware acima mencionados. Em um exemplo, o dispositivo compreende um processador e uma memó- ria que carrega um programa, e o programa, quando executado pelo processador, instrui o processador para executar as etapas dos méto- dos acima descritos.
[00164] A determinação do vetor de movimento pode também ser implementada por instruções de programa armazenadas em um meio legível por computador. O programa, quando executado, faz com que o computador execute as etapas de detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, se detectado negativamente, derivar a predição do bloco corrente de acordo com o bloco adjacente, e detectado positivamente, não derivar a predição do bloco corrente de acordo com bloco adja- cente. O meio legível por computador pode ser qualquer meio sobre o qual o programa está armazenado tal como uma unidade de DVD, CD, USB (flash), disco rígido, armazenamento de servidor disponível atra- vés de uma rede, etc.
[00165] O codificador e/ou decodificador podem ser implementados em vários dispositivos, incluindo um dispositivo de TV, decodificador, PC, tablet, smartphone, ou similares. Este pode ser um software, apli- cativo que implementa as etapas de método.
[00166] Apesar da invenção ter sido acima descrita principalmente dentro da estrutura de codificação de vídeo de imagem em movimento, as técnicas propostas podem ser aplicadas também para codificação (isto é, codificação ou decodificação) de qualquer conjunto de imagens que compreenda duas ou mais imagens.
O conjunto de imagens pode compreender, por exemplo, um conjunto de imagens estáticas obtidas em um aplicativo de imagens médicas, por exemplo, uma sequência de imagens de escaneamento de tomografia computadorizada (TC). Nas reivindicações anexas, o termo "vídeo" pode, portanto, significar uma sequência de filme ou qualquer outro conjunto de imagens que compreenda duas ou mais imagens.

Claims (15)

REIVINDICAÇÕES
1. Dispositivo para determinar uma predição de um bloco corrente, para reconstrução do bloco corrente, o dispositivo caracteri- zado pelo fato de que compreende: uma unidade de predição configurada para detectar se ou não um vetor de movimento de um bloco adjacente ao bloco corrente foi determinado por coincidência de modelo, e configurada para: - se detectado negativamente, derivar a predição do bloco corrente de acordo com o bloco adjacente, - se detectado positivamente, não derivar a predição do bloco corrente de acordo com o bloco adjacente.
2. Dispositivo de acordo com a reivindicação 1, caracteri- zado pelo fato de ser configurado para determinar um vetor de movi- mento para determinar interpredição de um bloco corrente, para re- construção do bloco corrente, a unidade de predição compreendendo: uma unidade de determinação de lista de candidatos de ve- tor de movimento (615) configurada para formar uma lista de vetores de movimento candidatos para o bloco corrente: - detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, - se detectado negativamente, incluir o vetor de movimento do bloco adjacente como um candidato na lista, - se detectado positivamente, não incluir o vetor de movi- mento do bloco adjacente como um candidato na lista, e a unidade de determinação de vetor de movimento (310, 620) configurada para selecionar uma estimativa de um vetor de mo- vimento da lista e determinar o vetor de movimento do bloco corrente de acordo com a estimativa.
3. Dispositivo de acordo com a reivindicação 2, caracteri- zado pelo fato de que a unidade de determinação de lista de candida-
tos de vetor de movimento (615) está configurada para, se detectado positivamente, incluir um vetor de movimento de substituição como um candidato na lista.
4. Dispositivo de acordo com a reivindicação 3, caracteri- zado pelo fato de que o vetor de movimento de substituição é um vetor de movimento de um bloco vizinho ao bloco corrente e diferente do bloco adjacente.
5. Dispositivo de acordo com a reivindicação 2 ou 3, carac- terizado pelo fato de que ainda compreende: uma unidade de refinamento de vetor de movimento (340) configurada para aplicar um refinamento da estimativa selecionada do vetor de movimento, a unidade de determinação de lista de candidatos de vetor de movimento (615) está configurada para, se detectado positivamen- te, incluir na lista uma estimativa do vetor de movimento do bloco ad- jacente obtido pela coincidência de modelo antes de aplicar o refina- mento, a unidade de determinação de vetor de movimento (310, 620) está ainda configurada para determinar o vetor de movimento do bloco adjacente de acordo com a estimativa do vetor de movimento do bloco adjacente após o refinamento.
6. Dispositivo de acordo com a reivindicação 5, caracteriza- do pelo fato de que a unidade de determinação de lista de candidatos de vetor de movimento (615) está configurada para formar a lista para o bloco corrente enquanto a unidade de refinamento de vetor de mo- vimento (340) aplica um refinamento no bloco adjacente.
7. Dispositivo de acordo com a reivindicação 5 ou 6, carac- terizado pelo fato de que a unidade de determinação de lista de candidatos de vetor de movimento (615) está configurada para, se detectado positivamen-
te, - se o bloco adjacente estiver localizado na mesma imagem que o bloco corrente, inclui na lista uma estimativa do vetor de movi- mento do bloco adjacente obtido pela coincidência de modelo antes de aplicar o refinamento, e - se o bloco adjacente estiver localizado em uma imagem outra que o bloco corrente, inclui na lista o vetor de movimento do blo- co adjacente após aplicar o refinamento ao bloco adjacente.
8. Dispositivo de acordo com qualquer uma das reivindica- ções 2 a 7, caracterizado pelo fato de que a unidade de determinação de lista de candidatos de vetor de movimento (615) está ainda configurada para verificar se um vetor de movimento a ser incluído na lista já está incluído na lista, e não in- cluindo-o na lista se afirmativo, e a dita verificação não é executada quando incluindo na lista um vetor de movimento de um bloco adjacente a ser processado pelo menos parcialmente em paralelo com o processamento do bloco cor- rente.
9. Dispositivo de acordo com a reivindicação 1, caracteri- zado pelo fato de determinar intrapredição de um bloco corrente, para reconstrução do bloco corrente, a unidade de predição compreenden- do: uma unidade de determinação de amostras de referência para determinar um conjunto de amostras de referência para o bloco corrente que inclui: - detectar se ou não um vetor de movimento de um bloco adjacente foi determinado pela coincidência de modelo, - se detectado negativamente, incluir uma ou mais amos- tras do bloco adjacente no conjunto de amostras de referência, - se detectado positivamente, não incluir qualquer amostra do bloco adjacente no conjunto de amostras de referência, em que uma unidade de intrapredição (109, 209) para prover a pre- dição do bloco corrente de acordo com amostras do conjunto de amos- tras de referência.
10. Dispositivo de acordo com qualquer uma das reivindica- ções 1 a 9, caracterizado pelo fato de que a unidade de predição está configurada para, para reconstrução do bloco corrente: detectar se ou não um vetor de movimento de um bloco cir- cundante, o qual está localizado dentro de uma região retangular pre- determinada definida com relação à posição do bloco corrente, foi de- terminado pela coincidência de modelo.
11. Decodificador de vídeo (200) para decodificar uma plu- ralidade de imagens de um fluxo de bits, caracterizado pelo fato de que compreende: um analisador de fluxo de bits para analisar o fluxo de bits que inclui informações de controle, o dispositivo como definido em qualquer uma das reivindi- cações 1a 10,e uma unidade de reconstrução para reconstruir o bloco cor- rente com base na predição do bloco corrente.
12. Codificador de vídeo (100) para codificar uma pluralida- de de imagens em um fluxo de bits, caracterizado pelo fato de que compreende: o dispositivo como definido em qualquer uma das reivindi- cações 1 a 10, um formador de fluxo de bits para incluir no fluxo de bits in- formações de controle, uma unidade de reconstrução para reconstruir o bloco cor- rente com base na predição do bloco corrente e armazenar o bloco reconstruído em uma memória.
13. Codificador (100) ou decodificador (200) de vídeo de acordo com a reivindicação 11 ou 12, caracterizado pelo fato de que as informações de controle incluem: um sinalizador que indica se ou não a unidade de predição deve detectar se ou não um vetor de movimento de um bloco adjacen- te foi determinado pela coincidência de modelo, e/ou um indicador de substituição que indica, se detectado posi- tivamente, como a predição para o presente bloco é determinada.
14. Codificador (100) ou decodificador (200) de vídeo de acordo com a reivindicação 13, caracterizado pelo fato de que as in- formações de controle estão incluídas em um conjunto de parâmetros de sequência e/ou em um cabeçalho de fatia.
15. Método para determinar uma predição de um bloco cor- rente, caracterizado pelo fato de que compreende: detectar se ou não um vetor de movimento de um bloco ad- jacente foi determinado pela coincidência de modelo, se detectado negativamente, derivar a predição do bloco corrente de acordo com o bloco adjacente, se detectado positivamente, não derivar a predição do blo- co corrente de acordo com o bloco adjacente.
BR112019028035-9A 2017-06-30 2017-06-30 "dispositivo para determinar uma predição de um bloco corrente, decodificador e codificador de vídeo, e método para determinar uma predição de um bloco corrente BR112019028035A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2017/066340 WO2019001739A1 (en) 2017-06-30 2017-06-30 ERROR RESILIENCE AND PARALLEL PROCESSING FOR MOTION VECTOR CALCULATION DECODER SIDE

Publications (1)

Publication Number Publication Date
BR112019028035A2 true BR112019028035A2 (pt) 2020-07-07

Family

ID=59258245

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019028035-9A BR112019028035A2 (pt) 2017-06-30 2017-06-30 "dispositivo para determinar uma predição de um bloco corrente, decodificador e codificador de vídeo, e método para determinar uma predição de um bloco corrente

Country Status (14)

Country Link
US (1) US20200137413A1 (pt)
EP (2) EP3635955B1 (pt)
JP (1) JP2020526114A (pt)
KR (1) KR102376069B1 (pt)
CN (1) CN110832862B (pt)
AU (1) AU2017421657B2 (pt)
BR (1) BR112019028035A2 (pt)
CA (1) CA3068596C (pt)
ES (1) ES2982369T3 (pt)
IL (1) IL271784B2 (pt)
PL (1) PL3635955T3 (pt)
SG (1) SG11201913273XA (pt)
WO (1) WO2019001739A1 (pt)
ZA (1) ZA202000130B (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118075455A (zh) * 2017-09-29 2024-05-24 Lx 半导体科技有限公司 图像编码/解码方法、存储介质及图像数据的发送方法
WO2019231724A1 (en) * 2018-05-28 2019-12-05 Interdigital Vc Holdings, Inc. Data dependency in coding/decoding
WO2020060177A1 (ko) * 2018-09-18 2020-03-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN111726555B (zh) * 2020-06-04 2021-11-23 上海顺久电子科技有限公司 一种显示设备及运动估计方法、视频处理方法
CN111901590B (zh) * 2020-06-29 2023-04-18 北京大学 一种用于帧间预测的细化运动矢量存储方法及装置
US11895321B2 (en) 2021-03-29 2024-02-06 Qualcomm Incorporated Template matching based advanced motion vector predictor (AMVP) candidate list construction with non-adjacent candidates and AMVP index signaling
CN117426096A (zh) * 2021-05-13 2024-01-19 抖音视界有限公司 用于视频处理的方法、设备和介质
WO2023020590A1 (en) * 2021-08-19 2023-02-23 Mediatek Inc. Method and apparatus for hardware-friendly template matching in video coding system
CN118476221A (zh) * 2021-10-28 2024-08-09 抖音视界有限公司 用于视频处理的方法、装置和介质
WO2023116778A1 (en) * 2021-12-22 2023-06-29 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024210904A1 (en) * 2023-04-07 2024-10-10 Google Llc Template matching using available peripheral pixels

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080240242A1 (en) * 2007-03-27 2008-10-02 Nokia Corporation Method and system for motion vector predictions
CN101415122B (zh) * 2007-10-15 2011-11-16 华为技术有限公司 一种帧间预测编解码方法及装置
EP2321970A1 (en) * 2008-09-04 2011-05-18 Thomson Licensing Methods and apparatus for prediction refinement using implicit motion prediction
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
KR101752418B1 (ko) * 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
WO2012083487A1 (en) * 2010-12-21 2012-06-28 Intel Corporation System and method for enhanced dmvd processing
WO2012122927A1 (en) * 2011-03-14 2012-09-20 Mediatek Inc. Method and apparatus for derivation of motion vector candidate and motion vector prediction candidate
CN107071470B (zh) * 2011-06-27 2020-02-07 三星电子株式会社 对图像进行解码的方法
JP5747816B2 (ja) * 2011-12-28 2015-07-15 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、送信装置、送信方法及び送信プログラム
CN108377393A (zh) * 2012-03-22 2018-08-07 联发科技股份有限公司 编码视频数据的方法以及装置
CN103024378B (zh) * 2012-12-06 2016-04-13 浙江大学 一种视频编解码中运动信息导出方法及装置
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
US10200711B2 (en) * 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding

Also Published As

Publication number Publication date
ES2982369T3 (es) 2024-10-15
EP3635955A1 (en) 2020-04-15
AU2017421657B2 (en) 2022-12-15
KR20200020917A (ko) 2020-02-26
KR102376069B1 (ko) 2022-03-17
PL3635955T3 (pl) 2024-08-26
WO2019001739A1 (en) 2019-01-03
NZ760682A (en) 2021-09-24
IL271784A (en) 2020-02-27
EP4300967A3 (en) 2024-04-10
CN110832862B (zh) 2022-06-14
IL271784B2 (en) 2023-10-01
CA3068596C (en) 2022-06-21
CA3068596A1 (en) 2019-01-03
ZA202000130B (en) 2021-02-24
JP2020526114A (ja) 2020-08-27
EP3635955B1 (en) 2024-05-08
US20200137413A1 (en) 2020-04-30
EP4300967A2 (en) 2024-01-03
SG11201913273XA (en) 2020-01-30
IL271784B1 (en) 2023-06-01
CN110832862A (zh) 2020-02-21
AU2017421657A1 (en) 2020-01-30

Similar Documents

Publication Publication Date Title
BR112019028035A2 (pt) "dispositivo para determinar uma predição de um bloco corrente, decodificador e codificador de vídeo, e método para determinar uma predição de um bloco corrente
US10499060B2 (en) Video encoding and decoding with improved error resilience
BR112019027261A2 (pt) refinamento de vetor de movimento para previsão de multirreferências
US11057546B2 (en) Video encoding and decoding
BR112020026830A2 (pt) Janela de acesso à memória e preenchimento para refinamento de vetor de movimento e compensação de movimento
KR102699933B1 (ko) 패딩을 위한 화면내-예측 모드 선택을 위한 장치
BR112019028012A2 (pt) dispositivo e método para determinar um vetor de movimento, codificador e decodificador de vídeo para codificar e decodificar uma pluralidade de fotos
US20210227207A1 (en) Generation and usage of combined affine merge candidate
CN111201795A (zh) 存储访问窗口和用于运动矢量修正的填充
BR112020026988A2 (pt) Método e aparelho de refinamento exato de subpixel baseado em superfície de erro para refinamento de vetor de movimento do lado do decodificador
JP7571105B2 (ja) 動きベクトル精密化および動き補償のためのメモリアクセスウィンドウおよびパディング
NZ760682B2 (en) Error resilience and parallel processing for decoder side motion vector derivation

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06W Patent application suspended after preliminary examination (for patents with searches from other patent authorities) chapter 6.23 patent gazette]