BR112021016270A2 - Método de codificação de vídeo e codificador, decodificador, meio legível por computador - Google Patents

Método de codificação de vídeo e codificador, decodificador, meio legível por computador Download PDF

Info

Publication number
BR112021016270A2
BR112021016270A2 BR112021016270-4A BR112021016270A BR112021016270A2 BR 112021016270 A2 BR112021016270 A2 BR 112021016270A2 BR 112021016270 A BR112021016270 A BR 112021016270A BR 112021016270 A2 BR112021016270 A2 BR 112021016270A2
Authority
BR
Brazil
Prior art keywords
predictions
optical flow
cost
current block
refinement process
Prior art date
Application number
BR112021016270-4A
Other languages
English (en)
Inventor
Semih ESENLIK
Sriram Sethuraman
Jeeva Raj A
Sagar Kotecha
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 BR112021016270A2 publication Critical patent/BR112021016270A2/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/557Motion estimation characterised by stopping computation or iteration based on certain criteria, e.g. error magnitude being too large or early exit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)

Abstract

método de codificação de vídeo e codificador, decodificador, meio legível por computador. é fornecido um método de codificação de vídeo implementado em um dispositivo de decodificação ou um dispositivo de codificação, o método compreendendo: obter vetores de movimento iniciais para um bloco atual; obter primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular um primeiro custo de correspondência de acordo com as primeiras predições; determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior do que um limiar; e realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.

Description

MÉTODO DE CODIFICAÇÃO DE VÍDEO E CODIFICADOR, DECODIFICADOR, MEIO LEGÍVEL POR COMPUTADOR CAMPO TÉCNICO
[001] A presente invenção se refere ao campo do processamento de imagem e, mais particularmente, ao refinamento de fluxo ótico.
ANTECEDENTES
[002] codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicações de vídeo digital, por exemplo, transmissão de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real, como chat de vídeo, videoconferência, DVD e discos Blu-ray, sistemas de aquisição e edição de conteúdo de vídeo, e filmadoras de aplicações de segurança.
[003] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outra forma comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente comprimidos antes de serem comunicados pelas redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque os recursos de memória podem ser limitados. Dispositivos de compressão de vídeo muitas vezes usam software e / ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessária para representar imagens de vídeo digital. Os dados comprimidos são então recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas aprimoradas de compressão e descompressão que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade da imagem são desejáveis.
[004] Recentemente, codificação de interpredição foi aprimorada pelo refinamento de fluxo ótico bipreditivo. Esta técnica pode melhorar a precisão da interpredição de um bloco atual de uma imagem a ser codificada. No entanto, o refinamento de fluxo ótico bipreditivo é relativamente caro em termos de carga computacional. Assim, um meio-termo entre interpredição precisa e carga computacional deve ser encontrado. A presente invenção aborda este problema.
SUMÁRIO
[005] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes.
[006] O precedente e outros objetivos são alcançados pelo objeto das reivindicações independentes. Outras formas de implementação são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[007] É fornecido um método de codificação de vídeo implementado em um dispositivo de decodificação ou um dispositivo de codificação, o método compreendendo: obter vetores de movimento iniciais para um bloco atual (por exemplo, um bloco de codificação ou um bloco de predição ou um sub-bloco); obter primeiras predições (dois valores de predição para interbipredição) para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular um primeiro custo de correspondência (por exemplo, consistindo de ou compreendendo alguma medida de similaridade (ou dissimilaridade (“dis-similarity”)); consulte também a descrição detalhada abaixo) de acordo com as primeiras predições; determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior do que um limiar; realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
[008] Assim, de acordo com o desempenho da invenção de refinamento de fluxo ótico, em particular, o refinamento de fluxo ótico bidirecional é realizado em uma base condicional. O refinamento de fluxo ótico relativamente caro é realizado apenas sob certas circunstâncias que permitem uma melhoria desejável adequada de precisão de todo o processo de interpredição. Se for determinado que o refinamento de fluxo ótico provavelmente não resulta em uma melhoria da precisão da interpredição que vale a carga computacional relativamente alta necessária para realizar o refinamento de fluxo ótico, o refinamento de fluxo ótico pode ser suprimido. O tempo de decodificação pode, portanto, ser reduzido significativamente. Os vetores de movimento iniciais podem ser sinalizados em um fluxo de bits. Alternativamente,
predições de vetor de movimento e componentes de diferença de vetor de movimento podem ser fornecidos para os vetores de movimento iniciais.
[009] Por exemplo, a pelo menos uma condição predefinida compreende a condição de que o bloco atual pode ser predito por refinamento de vetor de movimento de lado de decodificador. Esta condição particular compreendida em pelo menos uma condição predefinida pode ser verificada em primeiro lugar a fim de evitar esforços computacionais desnecessários.
[0010] De acordo com uma modalidade particular, é determinado que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que todas as pelo menos uma das condições predefinidas são satisfeitas. A pelo menos uma condição predefinida pode compreender uma ou mais condições adicionais, em princípio. Por exemplo, pelo menos uma condição predefinida pode compreender uma condição em que uma bandeira (“flag”) particular é definida (para 1, por exemplo), a fim de que o processo de refinamento ótico seja realizado. Se as condições não forem atendidas, nenhum refinamento de fluxo ótico pode ser realizado de acordo com uma modalidade particular, a fim de reduzir as demandas computacionais.
[0011] As primeiras predições para o valor de amostra no bloco atual podem ser obtidas com base em um primeiro filtro de interpolação a fim de atingir alguma precisão de subpixel. Em particular, o primeiro filtro de interpolação pode ser um filtro de interpolação bilinear relativamente simples que permite o processamento de filtro rápido.
[0012] O método inventivo de codificação de vídeo implementado em um dispositivo de decodificação ou um dispositivo de codificação pode compreender algum refinamento de vetor de movimento diferente do refinamento de fluxo ótico. Assim, o método pode compreender obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência; obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado, realizar o refinamento de fluxo ótico com base nas segundas predições (representando predições já refinadas). A precisão geral do processo de interpredição pode ser aumentada pelo emprego dos vetores de movimento refinados.
[0013] É notado que as primeiras predições, bem como o primeiro custo de correspondência, já foram calculadas para o refinamento de vetor de movimento. Portanto, nenhum cálculo extra é necessário para decidir sobre um término / supressão antecipada do processo de refinamento de fluxo ótico, mas os resultados dos cálculos anteriores envolvidos no processo de refinamento de vetor de movimento podem ser reutilizados.
[0014] Em cada uma das modalidades descritas acima do método inventivo, a obtenção das primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais pode compreender obter um número de pares de candidatos com base nos vetores de movimento iniciais e obter primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos e o cálculo de um primeiro custo de correspondência de acordo com as primeiras predições pode compreender determinar um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
[0015] No decurso do refinamento de vetor de movimento, um número de pares de candidatos para os vetores de movimento refinados pode ser obtido, os pares incluindo um par dos vetores de movimento iniciais. Por exemplo, os pares de candidatos para os vetores de movimento refinados compreendem um par de vetores de movimento iniciais (MV0, MV1) e pares (MV0 + (0,1), MV1 + (0, -1)), (MV0 + (1,0), MV1 + (-1,0)), (MV0 + (0, -1), MV1 + (0,1)), (MV0 + (-1,0), MV1 + (1,0)), onde (1, -1) denota um vetor que tem um deslocamento de 1 na direção horizontal (ou x) e um deslocamento de -1 na direção vertical (ou y). Para cada um dos pares, um custo de correspondência correspondente a esse par pode ser determinado e o acima mencionado o primeiro custo de correspondência pode ser determinado como o menor dos custos de correspondência determinados para os pares de candidatos para os vetores de movimento refinados. De acordo com exemplos particulares, pode ser o custo de correspondência correspondente ao par de vetores de movimento iniciais (MV0, MV1) ou (MV0’ = MV0 + (0,1), MV1' = MV1 + (0, -1)) com os vetores de movimento refinados MV0’ e MV1'.
[0016] O emprego desse tipo de primeiro custo de correspondência pode ser vantajoso em termos de codificação geral.
[0017] As segundas predições acima mencionadas para o valor de amostra no bloco atual podem ser obtidas de acordo com um segundo filtro de interpolação. Este segundo filtro de interpolação pode ser um filtro de interpolação de 6 derivações ou 8 derivações, que é relativamente caro, mas vantajoso em termos de precisão de subpixel.
[0018] Os vetores de movimento refinados acima mencionados podem ser obtidos de acordo com um segundo custo de correspondência, a fim de controlar a adequação dos vetores de movimento refinados para a interpredição. Quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar, pode ser determinado que o processo de refinamento de fluxo ótico deve ser realizado. Caso contrário, pode ser determinado que não vale a pena realizar nenhum processamento de refinamento de fluxo ótico.
[0019] De acordo com outra modalidade, apenas quando for determinado que o processo de refinamento de fluxo ótico não deve ser realizado, a interpredição final é obtida por uma soma ponderada das segundas predições. A soma ponderada das segundas predições fornece alguma precisão que pode ser considerada suficiente nos casos em que não é considerado apropriado para realizar o processo de refinamento de fluxo ótico relativamente caro.
[0020] Em geral, o valor de limiar ou o outro valor de limiar pode ser um valor que é calculado com base na profundidade de bit das primeiras predições. Além disso, o valor de limiar pode ser obtido de acordo com o número de amostras preditas que são usadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições. Além disso, o valor de limiar pode ser obtido de acordo com o tamanho (largura e altura em termos do número de pixels) do bloco atual. Por exemplo, o limiar pode ser thr = nCbW x nCbH x K, onde K é um valor maior que zero, nCbW e nCbH são a largura e a altura do bloco atual. Por exemplo, K = 2.
[0021] Além disso, o segundo custo de correspondência acima mencionado pode ser um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento e um modelo predefinido para a forma do custo de correspondência perto da posição de custo de correspondência mínimo. O modelo predefinido neste contexto pode ser um modelo de combinação linear. O uso de um modelo predefinido para a forma do custo de correspondência próximo à posição de custo de correspondência mínimo pode melhorar a precisão do processo de interpredição.
[0022] O método de acordo com todas as modalidades descritas acima pode compreender ainda o passo de geração de um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
[0023] Além disso, é fornecido um codificador ou decodificador compreendendo algum conjunto de circuitos de processamento para realizar o método de acordo com qualquer uma das modalidades descritas acima. Além disso, é fornecido um produto de programa de computador compreendendo um código de programa para realizar o método de acordo com qualquer uma das modalidades descritas acima.
[0024] Todas as variantes descritas acima do método de codificação de vídeo podem ser implementadas em um decodificador ou codificador. Assim, é fornecido um decodificador ou codificador, compreendendo:
um ou mais processadores e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das modalidades descritas acima.
[0025] Todas as variantes acima descritas do método de codificação de vídeo podem ser implementadas em um dispositivo para uso em um codificador de imagem e / ou um decodificador de imagem a fim de atender à necessidade acima mencionada. Assim, é fornecido um dispositivo para uso em um codificador de imagem e / ou um decodificador de imagem, o dispositivo compreendendo uma unidade de vetor de movimento inicial configurada para obter vetores de movimento iniciais para um bloco atual (por exemplo, um bloco de codificação ou um bloco de predição ou um sub-bloco); uma primeira unidade de predição configurada para obter primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; uma primeira unidade de cálculo de custo de correspondência configurada para calcular um primeiro custo de correspondência (por exemplo, uma medida de similaridade ou dissimilaridade) de acordo com as primeiras predições; uma unidade de determinação de processo de refinamento de fluxo ótico configurada para determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual a ou maior do que um limiar; e uma unidade de desempenho de processo de refinamento de fluxo ótico configurada para realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
[0026] Este dispositivo, conforme descrito acima e com suas variantes descritas abaixo, oferece as mesmas vantagens que os métodos descritos acima.
[0027] A pelo menos uma condição predefinida pode compreender a condição de que o bloco atual pode ser predito pelo refinamento de vetor de movimento de lado de decodificador.
[0028] A unidade de determinação de processo de refinamento de fluxo ótico pode ser configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que todas as pelo menos uma das condições predefinidas são atendidas.
[0029] O dispositivo pode compreender um primeiro filtro de interpolação (por exemplo, um filtro de interpolação bilinear) e a primeira unidade de predição pode ser configurada para obter as primeiras predições para o valor de amostra no bloco atual por meio do primeiro filtro de interpolação.
[0030] O dispositivo pode ainda compreender uma unidade de vetor de movimento refinado configurada para obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência; uma segunda unidade de predição configurada para obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados; e a unidade de desempenho de processo de refinamento de fluxo ótico pode ser configurada para realizar o refinamento de fluxo ótico com base nas segundas predições, quando for determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico deve ser realizado.
[0031] Nas modalidades descritas acima do dispositivo, a primeira unidade de predição pode ser configurada para obter as primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais obtendo um número de pares de candidatos com base nos vetores de movimento iniciais e obter primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos. Além disso, a primeira unidade de cálculo de custo de correspondência pode ser configurada para calcular o primeiro custo de correspondência de acordo com as primeiras predições determinando um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
[0032] De acordo com uma modalidade, o dispositivo pode compreender ainda um segundo filtro de interpolação (por exemplo, um filtro de interpolação de 6 derivações ou 8 derivações relativamente caro de precisão de subpixel relativamente alta) e a segunda unidade de predição pode ser configurada para obter as segundas predições para o valor de amostra no bloco atual por meio do segundo filtro de interpolação.
[0033] De acordo com outra modalidade, o dispositivo compreende ainda uma segunda unidade de cálculo de custo de correspondência configurada para calcular um segundo custo de correspondência e em que a unidade de vetor de movimento refinado é configurada para obter os vetores de movimento refinados de acordo com o segundo custo de correspondência. Neste caso, a unidade de determinação de processo de refinamento de fluxo ótico pode ser configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar.
[0034] O dispositivo pode compreender ainda uma unidade de predição de soma ponderada configurada para obter a interpredição final por uma soma ponderada das segundas predições apenas quando for determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico não deve ser realizado.
[0035] Além disso, o dispositivo pode compreender uma unidade de cálculo de limiar configurada para calcular o valor de limiar ou o outro limiar com base na profundidade de bit das primeiras predições. Além disso, o dispositivo pode compreender ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o número de amostras preditas que são usadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições pela primeira unidade de cálculo de custo de correspondência. Além disso, o dispositivo pode compreender ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o tamanho do bloco atual. Por exemplo, o limiar pode ser thr = nCbW x nCbH x K, onde K é um valor maior que zero, nCbW e nCbH são a largura e a altura do bloco atual. Por exemplo, K = 2.
[0036] De acordo com modalidades particulares, a segunda unidade de cálculo de custo de correspondência é configurada para calcular o segundo custo de correspondência como um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento realizado pela unidade de vetor de movimento refinado e um modelo predefinido (por exemplo, um modelo de combinação linear) para a forma do custo de correspondência perto da posição de custo de correspondência mínimo.
[0037] O dispositivo de acordo com qualquer uma das modalidades descritas acima pode compreender ainda uma unidade de geração de bloco de interpredição configurada para gerar um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
[0038] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0039] Nas seguintes modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais: a Figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção; a Figura 1B é um diagrama de blocos mostrando outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção; a Figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção; a Figura 3 é um diagrama de blocos mostrando um exemplo de estrutura de um decodificador de vídeo configurado para implementar modalidades da invenção; a Figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou um aparelho de decodificação; a Figura 5 é um diagrama de blocos ilustrando outro exemplo de um aparelho de codificação ou um aparelho de decodificação; a Figura 6 é um fluxograma ilustrando uma modalidade do processo de refinamento ótico; a Figura 7 é um fluxograma ilustrando outra modalidade do processo de refinamento ótico; a Figura 8 é um fluxograma ilustrando outra modalidade do processo de refinamento ótico; a Figura 9 é um fluxograma ilustrando outra modalidade do processo de refinamento ótico; a Figura 10 é um fluxograma ilustrando um método de codificação de vídeo implementado em um dispositivo de decodificação ou um dispositivo de codificação de acordo com uma modalidade da presente invenção; a Figura 11 ilustra um dispositivo para uso em um codificador de imagem e / ou um decodificador de imagem de acordo com uma modalidade da presente invenção.
[0040] No seguinte, sinais de referência idênticos se referem a características idênticas ou pelo menos funcionalmente equivalentes, se não for explicitamente especificado de outra forma.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0041] Na seguinte descrição, é feita referência às figuras anexas, que fazem parte da divulgação e que mostram, a título de ilustração, aspectos específicos das modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0042] Por exemplo, entende-se que uma divulgação em conexão com um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de passos de método específicos são descritos, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar o descrito ou a pluralidade de passos de método (por exemplo, uma unidade realizando o ou a pluralidade de passos, ou uma pluralidade de unidades, cada uma realizando uma ou mais da pluralidade de passos), mesmo se tais uma ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico é descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir um passo para realizar a funcionalidade de uma ou pluralidade de unidades (por exemplo, um passo realizando a funcionalidade da uma ou pluralidade de unidades, ou uma pluralidade de passos, cada uma realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal um ou a pluralidade de passos não forem explicitamente descritos ou ilustrados nas figuras. Além disso, entende-se que as características das várias modalidades exemplares e / ou aspectos descritos neste documento podem ser combinadas umas com as outras, a menos que especificamente indicado de outra forma.
[0043] A codificação de vídeo normalmente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeo. Em vez do termo “imagem” (“picture”), o termo “quadro” ou “imagem” (“image”) pode ser usado como sinônimos no campo da codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes: codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de fonte, normalmente compreendendo o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e / ou transmissão mais eficiente). A decodificação de vídeo é realizada no lado de destino e normalmente compreende o processamento inverso em comparação com o codificador para reconstruir as imagens de vídeo. As modalidades que se referem à "codificação" de imagens de vídeo (ou imagens em geral) devem ser entendidas como relacionadas à "codificação" ou "decodificação" de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é conhecida como CODEC (Codificação e Decodificação).
[0044] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, ou seja, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, ou seja, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparada à qualidade das imagens de vídeo originais.
[0045] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (ou seja, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente particionada em um conjunto de blocos não sobrepostos e a codificação é normalmente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é normalmente processado, ou seja, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando predição espacial (intraimagem) e / ou predição temporal (interimagem) para gerar um bloco de predição, subtrair o bloco de predição do bloco atual (bloco atualmente processado / a ser processado) para obter um bloco residual, transformar o bloco residual e quantizar o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto no decodificador, o processamento inverso em comparação com o codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador de modo que ambos irão gerar predições idênticas (por exemplo, intra e interpredições) e / ou reconstruções para processamento, ou seja, codificação dos blocos subsequentes.
[0046] Nas seguintes modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas Figuras 1 a 3.
[0047] A Figura 1A é um diagrama de blocos esquemático ilustrando um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10 abreviado) que pode utilizar técnicas do presente pedido. O codificador de vídeo 20 (ou codificador 20 abreviado) e o decodificador de vídeo 30 (ou decodificador 30 abreviado) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas de acordo com vários exemplos descritos no presente pedido.
[0048] Como mostrado na Figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 13.
[0049] O dispositivo de origem 12 compreende um codificador 20 e pode, adicionalmente, isto é,
opcionalmente, compreender uma origem de imagem 16, um pré- processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18, e uma interface de comunicação ou unidade de comunicação 22.
[0050] A origem de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e / ou qualquer tipo de um dispositivo de geração de imagem, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer tipo de outro dispositivo para obter e / ou fornecer uma imagem do mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e / ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A origem de imagem pode ser qualquer tipo de memória ou armazenamento armazenando qualquer uma das imagens acima mencionadas.
[0051] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser referidos como imagem bruta ou dados de imagem brutos 17.
[0052] O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados
19. Pré-processamento realizado pelo pré-processador 18 pode, por exemplo, compreender corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor, ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser componente opcional.
[0053] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 2).
[0054] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0055] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30) e pode, adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós-processamento 32) e um dispositivo de exibição 34.
[0056] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos), por exemplo, diretamente a partir do dispositivo de origem 12 ou a partir de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0057] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 através de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com ou sem fio, ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação delas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0058] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e / ou processar os dados de imagem codificados usando qualquer tipo de codificação ou processamento de transmissão para transmissão através de um enlace de comunicação ou rede de comunicação.
[0059] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação ou processamento e / ou desempacotamento de transmissão correspondente para obter os dados de imagem codificados 21.
[0060] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na Figura 1A apontando a partir do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e pode ser configurado, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar qualquer outra informação relacionada ao enlace de comunicação e / ou transmissão de dados, por exemplo, transmissão de dados de imagem codificada.
[0061] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 3 ou Figura 5).
[0062] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, corte, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0063] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de tela para representar a imagem reconstruída, por exemplo, uma tela ou monitor integrado ou externo. As telas podem, por exemplo, compreender uma tela de cristal líquido (LCD), telas de diodos emissores de luz orgânica (OLED), telas de plasma, projetores, telas de microLED, um cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de tela.
[0064] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou a funcionalidade correspondente e o dispositivo de destino 14 ou a funcionalidade correspondente podem ser implementados usando o mesmo hardware e / ou software ou por hardware e / ou software separado ou qualquer combinação dos mesmos.
[0065] Como será evidente para a pessoa versada com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e / ou dispositivo de destino 14, como mostrado na Figura 1A, podem variar dependendo do dispositivo e aplicação reais.
[0066] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos, o codificador 20 e o decodificador 30 podem ser implementados por meio de conjunto de circuitos de processamento como mostrado na Figura 1B, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação dos mesmos. O codificador 20 pode ser implementado através do conjunto de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da Figura 2 e / ou qualquer outro sistema de codificador ou subsistema aqui descrito. O decodificador 30 pode ser implementado através do conjunto de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da Figura 3 e / ou qualquer outro sistema ou subsistema decodificador aqui descrito. O conjunto de circuitos de processamento pode ser configurado para realizar as várias operações, conforme discutido mais tarde. Conforme mostrado na Figura 5, se as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Qualquer de codificador de vídeo 20 e decodificador de vídeo 30 podem ser integrados como parte de um codificador / decodificador combinado (CODEC) em um único dispositivo, por exemplo, como mostrado na Figura 1B.
[0067] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores notebooks ou laptops, telefones móveis, telefones inteligentes, tablets ou computadores tablets, câmeras, computadores de mesa, decodificadores, televisores, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão contínua de vídeo (como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de difusão, dispositivo transmissor de difusão, ou semelhantes e podem usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0068] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na Figura 1A é apenas um exemplo e as técnicas do presente pedido podem ser aplicadas a definições de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e de decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos por uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados para a memória e / ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e / ou recuperam e decodificam dados a partir da memória.
[0069] Por conveniência de descrição, as modalidades da invenção são descritas neste documento, por exemplo, por referência à Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em codificação de vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo (VCEG) ITU-T e Grupo de Especialistas de Imagem em Movimento (MPEG) ISO / IEC. Uma pessoa versada na técnica entenderá que as modalidades da invenção não estão limitadas a HEVC ou VVC. Codificador e Método de Codificação
[0070] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da Figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, uma unidade de filtro de loop 220, um buffer de imagens decodificadas (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de interpredição 244, uma unidade de intrapredição 254 e uma unidade de particionamento
262. Unidade de interpredição 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). Um codificador de vídeo 20, como mostrado na Figura 2, também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0071] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de seleção de modo 260 podem ser referidas como formando um percurso de sinal direto do codificador 20, enquanto a unidade de quantização inversa
210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro de loop 220, o buffer de imagens decodificadas (DPB) 230, a unidade de interpredição 244 e a unidade de intrapredição 254 podem ser referidos como formando um percurso de sinal inverso do codificador de vídeo 20, em que o percurso de sinal inverso do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (ver o decodificador de vídeo 30 na Figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro de loop 220, o buffer de imagens decodificadas (DPB) 230, a unidade de interpredição 244 e a unidade de intrapredição 254 também são referidas para formar o “decodificador embutido” do codificador de vídeo 20. Imagem e particionamento de Imagens (figuras e blocos)
[0072] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagem formando um vídeo ou sequência de vídeo. A imagem recebida ou dados de imagem também podem ser uma imagem pré- processada 19 (ou dados de imagem pré-processados 19). Por razões de simplicidade, a seguinte descrição refere-se à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e / ou decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também inclui a imagem atual).
[0073] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional de amostras com valores de intensidade.
Uma amostra na matriz também pode ser referida como pixel (forma abreviada de elemento de imagem) ou pel.
O número de amostras em direção horizontal e vertical (ou eixo) da matriz ou imagem define o tamanho e / ou resolução da imagem.
Para a representação da cor, normalmente três componentes de cor são empregados, ou seja, a imagem pode ser representada ou incluir três matrizes de amostra.
No formato ou espaço de cor RBG, uma imagem compreende uma matriz de amostra vermelha, verde e azul correspondente.
No entanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato ou espaço de cor de luminância e crominância, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes também L é usado no lugar) e dois componentes de crominância indicados por Cb e Cr.
O componente de luminância (ou luma para abreviar) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma para abreviar) Cb e Cr representam a cromaticidade ou componentes de informações de cor.
Consequentemente, uma imagem no formato YCbCr compreende uma matriz de amostra de luminância de valores de amostra de luminância (Y) e duas matrizes de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores.
Se uma imagem for monocromática, a imagem pode compreender apenas uma matriz de amostra de luminância.
Consequentemente, uma imagem pode ser, por exemplo, uma matriz de amostras de luma em formato monocromático ou uma matriz de amostras de luma e duas matrizes correspondentes de amostras de croma em formato de cor 4: 2: 0, 4: 2: 2 e 4: 4: 4.
[0074] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na Figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (normalmente não sobrepostos). Esses blocos também podem ser referidos como blocos raiz, macroblocos (H.264 / AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265 / HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente definindo o tamanho do bloco, ou para alterar o tamanho do bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0075] Em outras modalidades, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0076] Como a imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado como uma matriz bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, uma matriz de amostra (por exemplo,
uma matriz de luma no caso de uma imagem monocromática 17, ou uma matriz de luma ou croma no caso de uma imagem colorida) ou três matrizes de amostra (por exemplo, uma matriz de luma e duas de croma no caso de uma imagem colorida 17) ou qualquer outro número e / ou tipo de matrizes dependendo do formato de cor aplicado. O número de amostras em direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho de bloco
203. Por conseguinte, um bloco pode, por exemplo, compreender uma matriz MxN (coluna M por linha N) de amostras, ou uma matriz MxN de coeficientes de transformada.
[0077] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas para codificar a imagem 17 bloco a bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
[0078] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e / ou codificar a imagem usando fatias (também chamadas de fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (normalmente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0079] As modalidades do codificador de vídeo 20, como mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e / ou codificar a imagem usando grupos de peças (também referidos como grupos de peças de vídeo) e / ou fatias / peças (também referidos como peças de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de peças (normalmente não sobrepostos), e cada grupo de peças pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais peças, em que cada peça, por exemplo, pode ter forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários. Cálculo Residual
[0080] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) com base no bloco de imagem 203 e um bloco de predição 265 (detalhes adicionais sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo valores de amostra do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra. Transformada
[0081] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0082] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT / DST, como as transformadas especificadas para H.265 / HEVC. Comparado a uma transforma de DCT ortogonal, tais aproximações inteiras são tipicamente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformadas direta e inversa, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são normalmente escolhidos com base em certas restrições, como fatores de escalonamento sendo uma potência de dois para operações de desvio, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Fatores de escalonamento específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escalonamento correspondentes para a transformação direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados em conformidade.
[0083] As modalidades do codificador de vídeo 20 (respectivamente, unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação. Quantização
[0084] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0085] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, onde n é maior do que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, escalamento diferente pode ser aplicado para alcançar uma quantização mais fina ou mais grosseira. Tamanhos de passo de quantização menores correspondem a quantização mais fina, enquanto tamanhos de passo de quantização maiores correspondem a quantização mais grosseira. O tamanho de passo de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode, por exemplo, ser um índice para um conjunto predefinido de tamanhos de passos de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de passos de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de passos de quantização grandes) ou vice-versa. A quantização pode incluir a divisão por um tamanho de passo de quantização e uma desquantização correspondente e / ou a desquantização inversa, por exemplo, por unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de passo de quantização. As modalidades de acordo com alguns padrões,
por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de passo de quantização. Geralmente, o tamanho de passo de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escalonamento adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa do escalamento usado na aproximação de ponto fixo da equação para o tamanho de passo de quantização e parâmetro de quantização. Em uma implementação de exemplo, o dimensionamento da transformada inversa e a desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos dos passos de quantização.
[0086] As modalidades do codificador de vídeo 20 (respectivamente, unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[0087] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de passo de quantização como a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora normalmente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207. Transformada Inversa
[0088] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST) ou outras transformadas inversas, para obter um bloco residual 213 (ou coeficientes desquantizados correspondentes 213) no domínio da amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213. Reconstrução
[0089] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando - amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição 265. Filtragem
[0090] A unidade de filtro de loop 220 (ou "filtro de loop" para abreviar 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro de loop é, por exemplo, configurada para suavizar as transições de pixel, ou de outra forma melhorar a qualidade de vídeo. A unidade de filtro de loop 220 pode compreender um ou mais filtros de loop, como um filtro de deblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de loop adaptativo (ALF), um filtro de nitidez, filtros de suavização, ou filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro de loop 220 seja mostrada na Figura 2 como sendo um filtro de loop, em outras configurações, a unidade de filtro de loop 220 pode ser implementada como um filtro pós-loop. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado
221.
[0091] As modalidades do codificador de vídeo 20 (respectivamente, unidade de filtro de loop 220) podem ser configuradas para emitir parâmetros de filtro de loop (tais como informações de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro de loop ou respectivos filtros de loop para decodificação. Buffer de imagens decodificadas
[0092] O buffer de imagens decodificadas (DPB) 230 pode ser uma memória que armazena imagens de referência, ou em dados de imagem de referência geral, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagens decodificadas (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados
221. O buffer de imagens decodificadas 230 pode ser adicionalmente configurado para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens previamente reconstruídas, e podem fornecer imagens completas previamente reconstruídas, ou seja, imagens decodificadas (e blocos de referência e amostras correspondentes) e / ou uma imagem atual parcialmente reconstruída (e blocos de referência e amostras correspondentes), por exemplo, para interpredição. O buffer de imagens decodificadas (DPB) 230 pode também ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro de loop 220 ou qualquer outra versão processada adicional dos blocos reconstruídos ou amostras. Seleção de modo (particionamento e predição)
[0093] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de interpredição 244 e unidade de intrapredição 254 e é configurada para receber ou obter dados de imagem original, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras reconstruídas filtradas e / ou não filtradas ou blocos da mesma imagem (atual) e / ou de uma ou uma pluralidade de figuras previamente decodificadas, por exemplo, do buffer de imagens decodificadas 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo, interpredição ou intrapredição, para obter um bloco de predição 265 ou preditor 265.
[0094] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo nenhum particionamento) e um modo de predição (por exemplo, um modo intra ou interpredição) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído
215.
[0095] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor combinação ou em outras palavras o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e predição com base na otimização de distorção de taxa (RDO), ou seja, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como "melhor", "mínimo", "ótimo" etc., neste contexto, não se referem necessariamente a um "melhor" geral, "mínimo", "ótimo", etc., mas também podem referir-se ao cumprimento de um critério de terminação ou seleção como um valor excedendo ou caindo abaixo de uma fronteira ou outras restrições levando potencialmente a uma "seleção subótima", mas reduzindo a complexidade e o tempo de processamento.
[0096] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em partições de bloco menores ou sub-blocos (que novamente formam blocos), por exemplo, iterativamente usando particionamento de árvore quádrupla (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub- blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e o os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0097] A seguir, o particionamento (por exemplo, por unidade de particionamento 260) e processamento de predição (por unidade de interpredição 244 e unidade de intrapredição 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes. Particionamento
[0098] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, blocos menores de tamanho quadrado ou retangular. Esses blocos menores (que também podem ser chamados de sub-blocos) podem ser posteriormente particionados em partições ainda menores. Isso também é referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja encerrado, por exemplo, porque um critério de encerramento é atendido, por exemplo, uma profundidade máxima da árvore ou tamanho mínimo do bloco é alcançado. Os blocos que não são particionados posteriormente também são chamados de blocos-folha ou nós- folha da árvore. Uma árvore que usa particionamento em duas partições é chamada de árvore binária (BT), uma árvore que usa particionamento em três partições é chamada de árvore ternária (TT), e uma árvore que usa particionamento em quatro partições é chamada de árvore quádrupla (QT).
[0099] Como mencionado antes, o termo "bloco", conforme usado neste documento, pode ser uma porção, em particular uma porção quadrada ou retangular, de uma imagem. Com referência, por exemplo, a HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), uma unidade de predição (PU), e uma unidade de transformada (TU) e / ou aos blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformada (TB) ou bloco de predição (PB).
[00100] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três matrizes de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três matrizes de amostra ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores e estruturas de sintaxe separados usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[00101] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando uma estrutura de árvore quádrupla denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição interimagem (temporal) ou intraimagem (espacial) é feita no nível de CU. Cada CU pode ser dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base na PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de árvore quádrupla semelhante à árvore de codificação para a CU.
[00102] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), um particionamento de árvore quádrupla e árvore binária (QTBT) combinado é, por exemplo, usado para particionar um bloco de codificação. Na estrutura de bloco de QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de árvore quádrupla. Os nós folhas de árvore quádrupla são posteriormente particionados por uma estrutura de árvore binária ou ternária (ou tripla). Os nós folhas de árvore de particionamento são chamados de unidades de codificação (CUs), e essa segmentação é usada para processamento de predição e transformada sem qualquer particionamento adicional. Isso significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, múltiplas partições, por exemplo, partição de árvore tripla, podem ser usadas em conjunto com a estrutura de bloco de QTBT.
[00103] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento aqui descritas.
[00104] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de previsão ideal a partir de um conjunto de modos de predição (por exemplo, predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de intrapredição e / ou modos de interpredição. Intrapredição
[00105] O conjunto de modos de intrapredição pode compreender 35 modos de intrapredição diferentes, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 modos de intrapredição, por exemplo, modos não direcionais, como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC.
[00106] A unidade de intrapredição 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de intrapredição 265 de acordo com um modo de intrapredição do conjunto de modos de intrapredição.
[00107] A unidade de intrapredição 254 (ou, em geral, a unidade de seleção de modo 260) é adicionalmente configurada para emitir parâmetros de intrapredição (ou em informações gerais indicativas do modo de intrapredição selecionado para o bloco) para a unidade de codificação de entropia 270 em forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação. Interpredição
[00108] O conjunto de (ou possíveis) modos de interpredição depende das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de interpredição, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de busca em torno da área do bloco atual, da imagem de referência é usada para pesquisar o melhor bloco de referência correspondente, e / ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de meio / semi-pel, e / ou interpolação de um quarto de pel, ou não.
[00109] Adicional aos modos de predição acima, o modo de salto e / ou o modo direto podem ser aplicados.
[00110] A unidade de interpredição 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de um ou uma pluralidade de outras / diferentes imagens previamente decodificadas 231, para estimativa de movimento. Por exemplo, uma sequência de vídeo pode compreender a imagem atual e as imagens previamente decodificadas 231, ou em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem fazer parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
[00111] O codificador 20 pode, por exemplo, ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência das mesmas ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e / ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de interpredição para a unidade de estimativa de movimento. Este deslocamento também é chamado de vetor de movimento (MV).
[00112] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de interpredição e realizar a interpredição com base em ou usando o parâmetro de interpredição para obter um bloco de interpredição 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento / de bloco determinado pela estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando assim potencialmente o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[00113] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Além ou como uma alternativa para fatias e respectivos elementos de sintaxe, grupos de peças e / ou peças e respectivos elementos de sintaxe podem ser gerados ou usados. Codificação de Entropia
[00114] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de VLC adaptativo de contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de interpredição, parâmetros de intrapredição, parâmetros de filtro de loop e / ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[00115] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade. Decodificador e método de decodificação
[00116] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas desse presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificado pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada (e / ou grupos de peças ou peças) e elementos de sintaxe associados.
[00117] No exemplo da Figura 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro de loop 320, uma buffer de imagens decodificadas (DBP) 330, uma unidade de aplicação de modo 360, uma unidade de interpredição 344 e uma unidade de intrapredição 354. A unidade de interpredição 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 100 da Figura 2.
[00118] Conforme explicado no que diz respeito ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro de loop 220, o buffer de imagens decodificadas (DPB) 230, a unidade de interpredição 344 e a unidade de intrapredição 354 também são referidos como formando o "decodificador embutido" do codificador de vídeo 20. Por conseguinte, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro de loop 320 pode ser idêntico em função ao filtro de loop 220 e o buffer de imagens decodificadas 330 pode ser idêntico em função ao buffer de imagens decodificadas 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30. Decodificação de entropia
[00119] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou em dados de imagem codificados em geral 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e
/ ou parâmetros de codificação decodificados (não mostrado na Figura 3), por exemplo, qualquer um ou todos os parâmetros de interpredição (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de intrapredição (por exemplo, modo de intrapredição ou índice), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro de loop e / ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos de decodificação ou esquemas correspondentes aos esquemas de codificação, conforme descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada adicionalmente para fornecer parâmetros de interpredição, parâmetro de intrapredição e / ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e / ou nível de bloco de vídeo. Além ou como uma alternativa às fatias e respectivos elementos de sintaxe, grupos de peças e / ou peças e respectivos elementos de sintaxe podem ser recebidos e / ou usados. Quantização Inversa
[00120] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou em informações gerais relacionadas à quantização inversa) e coeficientes quantizados a partir dos dados de imagem codificados 21 (por exemplo, por análise e / ou decodificação, por exemplo, por unidade de decodificação de entropia 304) e aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou bloco ou grupos de peças) para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado. Transformada Inversa
[00121] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformação aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa, ou um processo de transformada inversa conceitualmente semelhante. A unidade de processamento de transformada inversa 312 pode ainda ser configurada para receber parâmetros de transformada ou informações correspondentes a partir dos dados de imagem codificados 21 (por exemplo, por análise e / ou decodificação, por exemplo, por unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311. Reconstrução
[00122] A unidade de reconstrução 314 (por exemplo,
adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313, ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365. Filtragem
[00123] A unidade de filtro de loop 320 (ou no loop de codificação ou após o loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou, de outra forma, melhorar a qualidade do vídeo. A unidade de filtro de loop 320 pode compreender um ou mais filtros de loop, como um filtro de deblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro de loop adaptativo (ALF), um filtro de nitidez, uns filtros de suavização ou uns filtros colaborativos, ou qualquer combinação dos mesmos. Embora a unidade de filtro de loop 320 seja mostrada na Figura 3 como sendo um filtro em loop, em outras configurações, a unidade de filtro de loop 320 pode ser implementada como um filtro pós-loop. Buffer de imagens decodificadas
[00124] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados em buffer de imagens decodificadas 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e / ou para exibição de saída, respectivamente.
[00125] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização a um usuário. Predição
[00126] A unidade de interpredição 344 pode ser idêntica à unidade de interpredição 244 (em particular à unidade de compensação de movimento) e a unidade de intrapredição 354 pode ser idêntica à unidade de interpredição 254 em função, e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e / ou predição ou respectivas informações recebidas dos dados de imagem codificados 21 (por exemplo, por análise e / ou decodificação, por exemplo, por unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (intra ou interpredição) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[00127] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 354 da unidade de aplicação de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados a partir de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia intercodificada (isto é, B ou P), a unidade de interpredição 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos a partir da unidade de decodificação de entropia 304. Para interpredição, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de peças (por exemplo, grupos de peças de vídeo) e / ou peças (por exemplo, blocos de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de peças I, P ou B e / ou peças.
[00128] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual por analisar os vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado inter da fatia, status de interpredição para cada bloco de vídeo codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de peças (por exemplo, grupos de peças de vídeo) e / ou blocos (por exemplo, peças de vídeo), além ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando I, grupos de peças e / ou peças P ou B.
[00129] As modalidades do decodificador de vídeo 30, como mostrado na Figura 3, podem ser configuradas para particionar e / ou decodificar a imagem usando fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[00130] As modalidades do decodificador de vídeo 30, conforme mostrado na Figura 3, podem ser configuradas para particionar e / ou decodificar a imagem usando grupos de peças (também referidos como grupos de peças de vídeo) e / ou peças (também referidas como peças de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de peças (tipicamente não sobrepostos), e cada grupo de peças pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais peças, em que cada peça, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários.
[00131] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de loop
320. Por exemplo, um decodificador não baseado em transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[00132] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de um passo atual pode ser adicionalmente processado e, em seguida, enviado para o próximo passo. Por exemplo, após a filtragem de interpolação, derivação de vetor de movimento ou filtragem de loop, uma operação adicional, como Corte ou desvio, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem de loop.
[00133] Deve ser notado que operações adicionais podem ser aplicadas aos vetores de movimento derivados de bloco atual (incluindo, mas não limitado a vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afins, planos, ATMVP, vetores de movimento temporais e assim por diante). Por exemplo, o valor de vetor de movimento é restrito a um intervalo predefinido de acordo com seu bit de representação. Se o bit de representação de vetor de movimento for bitDepth, então o intervalo é -2 ^ (bitDepth-1) ~ 2 ^ (bitDepth-1) -1, onde “^” significa exponenciação. Por exemplo, se bitDepth for definido igual a 16, o intervalo será -32768 ~ 32767; se bitDepth for definido igual a 18, o intervalo é -131072 ~
131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito de tal forma que a diferença máxima entre as partes inteiras dos quatro MVs do sub-bloco 4x4 não é mais do que N pixels, como no máximo 1 pixel. Aqui fornece dois métodos para restringir o vetor de movimento de acordo com bitDepth.
[00134] Método 1: remover o MSB (bit mais significativo) de sobrefluxo por meio das seguintes operações: ux = (mvx + 2bitDepth)% 2bitDepth (1) mvx = (ux > = 2bitDepth-1)? (ux - 2bitDepth): ux (2) uy = (mvy + 2bitDepth)% 2bitDepth (3) mvy = (uy > = 2bitDepth-1)? (uy - 2bitDepth): uy (4) onde mvx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, mvy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco, e ux e uy indicam um valor intermediário.
[00135] Por exemplo, se o valor de mvx for -32769, após a aplicação da fórmula (1) e (2), o valor resultante será 32767. Em sistema de computador, os números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits). Então, o MSB é descartado, então o complemento de dois resultantes é 0111,1111,1111,1111 (o número decimal é 32767), que é o mesmo que a saída por aplicar a fórmula (1) e (2). ux = (mvpx + mvdx +2bitDepth)% 2bitDepth (5) mvx = (ux > = 2bitDepth-1)? (ux - 2bitDepth): ux (6) uy = (mvpy + mvdy +2bitDepth)% 2bitDepth (7) mvy = (uy > = 2bitDepth-1)? (uy - 2bitDepth): uy (8)
[00136] As operações podem ser aplicadas durante a soma do mvp e mvd, conforme mostrado na fórmula (5) a (8).
[00137] Método 2: remover o MSB de sobrefluxo por cortar o valor: vx = Clip3 (-2bitDepth-1, 2bitDepth-1 -1, vx) vy = Clip3 (-2bitDepth-1, 2bitDepth-1 -1, vy) onde vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, vy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco; x, y e z, respectivamente, correspondem a três valor de entrada do processo de corte de MV, e a definição de função Clip3 é como segue: x ; z < x Clip3 (x, y, z) = y ; z > y z ; de outro modo
[00138] A Figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da divulgação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades divulgadas conforme descrito aqui. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, como o decodificador de vídeo 30 da Figura 1A ou um codificador, como o codificador de vídeo 20 da Figura 1A.
[00139] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo
400 também pode compreender componentes óticos para elétricos (OE) e componentes elétricos para óticos (EO) acoplados às portas de ingresso 410, as unidades receptoras 420, as unidades transmissoras 440, e as portas de egresso 450 para egresso ou ingresso de sinais óticos ou elétricos.
[00140] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, as unidades receptoras 420, as unidades transmissoras 440, portas de egresso 450, e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades divulgadas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador
430.
[00141] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e / ou não volátil, e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternário (TCAM) e / ou memória de acesso aleatório estática (SRAM).
[00142] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1A de acordo com uma modalidade exemplar.
[00143] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou dispositivos múltiplos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações divulgadas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[00144] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir ainda um sistema operacional 508 e programas de aplicação 510, os programas de aplicação 510 incluindo pelo menos um programa que permite ao processador 502 executar os métodos descritos aqui. Por exemplo, os programas de aplicação 510 podem incluir aplicações de 1 a N, que incluem ainda uma aplicação de codificação de vídeo que executa os métodos descritos aqui.
[00145] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como uma tela 518. A tela 518 pode ser, em um exemplo, uma tela sensível ao toque que combina uma tela com um elemento sensível ao toque que é operável para detectar entradas de toque. A tela 518 pode ser acoplada ao processador 502 por meio do barramento 512.
[00146] Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado aos outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória, ou várias unidades, como múltiplos cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações. Refinamento de vetor de movimento (MVR)
[00147] Os vetores de movimento são geralmente determinados pelo menos parcialmente no lado de codificador e sinalizados para o decodificador dentro do fluxo de bits codificado. No entanto, os vetores de movimento também podem ser refinados no decodificador (e também no codificador) a partir dos vetores de movimento iniciais indicados no fluxo de bits. Em tal caso, por exemplo, a similaridade entre os remendos (“patches”) de pixels já decodificados apontados pelos vetores de movimento iniciais pode ser usada para melhorar a precisão dos vetores de movimento iniciais. Tal refinamento de movimento fornece uma vantagem de reduzir a sobrecarga de sinalização: a precisão do movimento inicial é melhorada da mesma forma tanto no codificador quanto no decodificador e, portanto, nenhuma sinalização adicional para o refinamento é necessária.
[00148] É notado que os vetores de movimento iniciais antes do refinamento podem não ser os melhores vetores de movimento que resultam na melhor predição. Como os vetores de movimento iniciais são sinalizados no fluxo de bits, pode não ser possível representar o vetor de movimento inicial com uma precisão muito alta (o que aumentaria a taxa de bits), portanto, o processo de refinamento de vetor de movimento é utilizado para melhorar o vetor de movimento inicial. Os vetores de movimento iniciais podem ser, por exemplo, os vetores de movimento usados na predição de um bloco vizinho de um bloco atual. Neste caso, basta sinalizar uma indicação no fluxo de bits, indicando os vetores de movimento de qual bloco vizinho é utilizado pelo bloco atual. Esse mecanismo de predição é muito eficiente na redução do número de bits para representar os vetores de movimento iniciais. No entanto, a precisão dos vetores de movimento iniciais pode ser baixa, uma vez que, em geral, não se espera que os vetores de movimento de dois blocos vizinhos sejam idênticos.
[00149] A fim de melhorar ainda mais a precisão dos vetores de movimento sem aumento adicional na sobrecarga de sinalização, pode ser benéfico refinar ainda mais os vetores de movimento derivados no lado de codificador e fornecidos (sinalizados) no fluxo de bits. O refinamento de vetor de movimento pode ser realizado no decodificador sem assistência do codificador. O codificador em seu loop de decodificador pode empregar o mesmo refinamento para obter vetores de movimento refinados correspondentes que estariam disponíveis no decodificador. O refinamento para um bloco atual que está sendo reconstruído em uma imagem atual é realizado determinando um modelo de amostras reconstruídas, determinar um espaço de busca em torno da informação de movimento inicial para o bloco atual e encontrar no espaço de busca uma porção de imagem de referência que melhor corresponda ao modelo. A porção de melhor correspondência determina os vetores de movimento refinados para o bloco atual, que é então usado para obter as amostras interpreditas para o bloco atual, isto é, o bloco atual sendo reconstruído.
[00150] O refinamento de vetor de movimento é uma parte da Unidade de Interpredição (244) na Figura 2 e 344 na Figura 3.
[00151] O refinamento de vetor de movimento pode ser realizado de acordo com os seguintes passos: normalmente, uns vetores de movimento iniciais podem ser determinados com base em uma indicação no fluxo de bits. Por exemplo, um índice pode ser sinalizado no fluxo de bits que indica uma posição em uma lista de vetores de movimento candidatos. Em outro exemplo, um índice de preditor de vetor de movimento e valor de diferença de vetor de movimento podem ser sinalizados no fluxo de bits. Os vetores de movimento que são determinados com base em uma indicação no fluxo de bits são definidos como vetores de movimento iniciais. No caso de bipredição, onde a interpredição para o bloco atual é obtida como uma combinação ponderada do bloco predito de amostras que são determinadas de acordo com dois vetores de movimento, deixe o vetor de movimento inicial em uma primeira imagem de referência na lista L0 ser denotado como MV0; e o vetor de movimento inicial na segunda imagem de referência na lista L1 ser denotado como MV1.
[00152] Usando os vetores de movimento iniciais, pares de vetores de movimento (MV) candidatos de refinamento são determinados. Pelo menos, dois pares de candidatos de refinamento precisam ser determinados. Normalmente, os pares de vetores de movimento candidatos de refinamento são determinados com base no par de vetores de movimento iniciais (MV0, MV1). Além disso, os pares de MVs candidatos são determinados pela adição de pequenas diferenças de vetores de movimento a MV0 e MV1. Por exemplo, os pares de MVs candidatos podem incluir o seguinte: • (MV0, MV1) • (MV0 + (0,1), MV1 + (0, -1)) • (MV0 + (1,0), MV1 + (-1,0)) • (MV0 + (0, -1), MV1 + (0,1)) • (MV0 + (-1,0), MV1 + (1,0)) •… onde (1, -1) denota um vetor que tem um deslocamento de 1 na direção horizontal (ou x) e um deslocamento de -1 na direção vertical (ou y).
[00153] Note que a lista acima de pares de candidatos é apenas exemplo para explicação e a invenção não está limitada a uma lista específica de candidatos.
[00154] Os pares de vetores de movimento (MV) candidatos de refinamento formam o espaço de busca do processo de refinamento de vetor de movimento.
[00155] Em uma bipredição do bloco atual, dois blocos de predição obtidos usando o respectivo primeiro vetor de movimento da lista L0 e o segundo vetor de movimento da lista L1 são combinados a um único sinal de predição, que pode fornecer uma melhor adaptação ao sinal original do que unipredição, resultando em menos informação residual e possivelmente uma compressão mais eficiente.
[00156] No refinamento de vetor de movimento, os dois blocos de predição obtidos usando o respectivo primeiro vetor de movimento e o segundo vetor de movimento de um par de MVs candidatos são comparados com base em uma métrica de similaridade para cada um dos pares de MVs candidatos de refinamento. Um par de MVs candidatos que resulta na maior similaridade é normalmente selecionado como os vetores de movimento refinados. Denotado como MV0’ e MV1', vetor de movimento refinado em uma primeira imagem de referência na lista L0 e vetor de movimento refinado em uma segunda imagem de referência na lista L1, respectivamente. Em outras palavras, as predições são obtidas correspondendo à lista L0 do vetor de movimento e lista L1 do vetor de movimento do par de vetores de movimento candidatos, que são então comparadas com base em uma métrica de similaridade. O par de vetores de movimento candidatos que tem a maior similaridade associada é selecionado como par de MVs refinados.
[00157] Normalmente, a saída do processo de refinamento são MVs refinados. Os MVs refinados podem ser iguais aos MVs iniciais ou podem ser diferentes dos MVs iniciais, dependendo de qual par de MVs candidatos atinge a maior similaridade, o par de MVs candidatos formado pelos MVs iniciais também está entre os candidatos de par de MVs. Em outras palavras, se o par de MVs candidatos mais alto que atinge a maior similaridade for formado pelos MVs iniciais, os MVs refinados e os MVs iniciais são iguais entre si.
[00158] Em vez de selecionar a posição que maximiza uma métrica de similaridade, outro método é selecionar uma posição que minimiza uma métrica de similaridade. A medida de comparação de dissimilaridade pode ser SAD (Soma de diferenças absolutas), MRSAD (soma removida média de diferenças absolutas, SSE (Soma de Erro Quadrado) etc. A SAD entre dois blocos de predição pode ser obtida usando um par de MVs candidatos (CMV0, CMV1), a SAD pode ser calculada da seguinte forma: SAD(CMV0, CMV1) '!" !" = abs(predSamplesL0 x y (%& $% & − predSamplesL1 x y ) onde nCbH e nCbW são a altura e a largura dos blocos de predição, a função abs (a) especifica o valor absoluto do argumento a, predSAmplesL0 e predSAmplesL1 são amostras de bloco de predição obtidas de acordo com o par de MVs candidatos que é denotado por (CMV0, CMV1).
[00159] Alternativamente, as medidas de comparação de dissimilaridade podem ser obtidas avaliando apenas um subconjunto de amostras em um bloco de predição, a fim de reduzir o número de cálculos. Um exemplo está abaixo, onde linhas de amostras são alternativamente incluídas no cálculo de SAD (cada segunda linha é avaliada) SAD(CMV0, CMV1) = ∑(%&'!" ∑$% & abs(predSamplesL0 x 2 ∗ y − /.!" predSamplesL1 x 2 ∗ y ) .
[00160] Um exemplo de refinamento de vetor de movimento é explicado no documento JVET-M1001-v3, "Versatile
Video Coding (Draft 4)" de JVET (de ITU-T SG 16 WP 3 e ISO / IEC JTC 1 / SC 29 / WG 11) que está disponível ao público em http://phenix.it-sudparis.eu/jvet/”. A seção “8.4.3 Decoder side motion vector refinement process” no documento exemplifica o refinamento de vetor de movimento.
[00161] A fim de reduzir os requisitos de memória internos para refinamento, em algumas modalidades, o processo de refinamento de vetor de movimento pode ser realizado independentemente em blocos de amostras de luma obtidas por particionamento de blocos codificados de amostras que excedem uma certa largura predeterminada ou altura predeterminada em amostras de luma em sub-blocos de amostras que são menores ou iguais à largura predeterminada e altura predeterminada em luma. O par de MVs refinados para cada sub-bloco dentro de um bloco codificado particionado pode ser diferente. A interpredição para ambas luma e croma é então realizada para cada sub-bloco usando o par de MVs refinados desse sub-bloco.
[00162] Cada MV do par de MVs iniciais pode ter uma precisão de pixel fracionária. Em outras palavras, o MV indica um deslocamento entre um bloco atual de amostras e uma região de referência reamostrada e esse deslocamento pode apontar para uma posição fracionária nas direções horizontal e vertical a partir da grade inteira de amostras de referência reconstruídas. Normalmente, uma interpolação bidimensional dos valores de grade de amostra de inteiro de referência reconstruída é realizada para obter os valores de amostra no local de deslocamento de amostra fracionária. O processo de obtenção de amostras preditas a partir das imagens de referência reconstruídas usando um par de MVs candidatos pode ser por meio de um dos seguintes métodos: • Arredondar a parte fracionária do par de MVs iniciais para o local inteiro mais próximo e obter os valores de grade inteiros das imagens de referência reconstruídas. • Realizar uma interpolação bilinear separável de 2 derivações (por exemplo, bilinear) para obter os valores de amostra preditos com a precisão de pixel fracionária indicada pelo par de MVs iniciais. • Realizar uma interpolação separável de derivação mais alta (por exemplo, 8-derivações ou 6-derivações) para obter os valores de amostra preditos na precisão de pixel fracionária indicada pelo par de MVs iniciais.
[00163] Embora os pares de MVs candidatos possam ter deslocamento de subpixel arbitrário em relação ao par de MVs iniciais, em algumas modalidades, por uma questão de simplicidade de busca, os pares de MVs candidatos são escolhidos com distâncias de pixel inteiras em relação ao par de MVs iniciais. Em tais casos, as amostras preditas em todo o par de MVs candidatos podem ser obtidas realizando uma predição para um bloco de amostras em torno do par de MVs iniciais para cobrir todas as posições de refinamento em torno do par de MVs iniciais.
[00164] Em algumas modalidades, uma vez que o valor de custo de dissimilaridade em todos os pares de MV candidatos a uma distância inteira do par de MVs iniciais foi avaliado, pares de MV candidatos adicionais em deslocamentos de distância de subpixel a partir da posição de valor de melhor custo são adicionados. Amostras preditas são obtidas para cada uma dessas posições usando um dos métodos descritos anteriormente e os custos de dissimilaridade são avaliados e comparados para obter a posição de menor dissimilaridade. Em certas outras modalidades, para evitar este processo de predição computacionalmente caro para cada posição de distância de subpixel em torno da posição de distância inteira de melhor custo, os valores de custo de distância inteira avaliados são lembrados e uma superfície de erro paramétrica é ajustada na vizinhança da melhor posição de distância inteira. O mínimo dessa superfície de erro é então calculado analiticamente e usado como a posição com o mínimo de dissimilaridade. Em tais casos, o valor de custo de dissimilaridade é dito ser derivado a partir dos valores de custo de distância inteira computados.
[00165] A aplicação do refinamento de vetor de movimento para um dado bloco codificado de amostras pode ser condicionada a certas propriedades de codificação do bloco codificado de amostras. Alguns exemplos de tais propriedades de codificação podem ser: • A distância em número de imagens (quando amostradas em uma taxa de quadros uniforme) a partir da imagem atual para as duas imagens de referência usadas para bipredição do bloco codificado de amostras é iguais e cai em lados opostos da imagem atual. • A dissimilaridade inicial entre os dois blocos preditos obtidos usando o par de MVs iniciais é menor do que um limiar por amostra predeterminado. Refinamento de fluxo ótico bipreditivo (BPOF)
[00166] O refinamento de fluxo ótico bipreditivo é um processo de melhorar a precisão da bipredição de um bloco, sem sinalização explicitamente adicional no fluxo de bits que não seja sinalizado para bipredição. É uma parte da Unidade de Interpredição (244) na Figura 2 e 344 na Figura
3.
[00167] Na bipredição, 2 interpredições são obtidas de acordo com dois vetores de movimento, então as predições são combinadas pela aplicação de média ponderada. A predição combinada pode resultar em uma energia residual reduzida conforme o ruído de quantização nos dois remendos de referência é cancelado, fornecendo assim mais eficiência de codificação do que a unipredição. A combinação ponderada na bipredição pode ser realizada por uma equação: Bipredição = Predição1 * W1 + Predição2 * W2 + K, onde W1 e W2 são fatores de ponderação que podem ser sinalizados em um fluxo de bits ou podem ser predefinidos no lado de codificador ou no lado de decodificador. K é um fator aditivo que também pode ser sinalizado em um fluxo de bits ou ser predefinido no lado de codificador ou no lado de decodificador. Como exemplo, a bipredição pode ser obtida usando Bipredição = (Predição1 + Predição2) / 2, onde W1 e W2 são definidos como ½ e K é definido como 0.
[00168] O objetivo do refinamento de fluxo ótico é melhorar a precisão da bipredição. Fluxo ótico é o padrão de movimento aparente de objetos de imagem entre dois quadros consecutivos. Fluxo ótico é causado pelo movimento do objeto ou da câmera. O processo de refinamento de fluxo ótico melhora a precisão da bipredição pela aplicação da equação de fluxo ótico (resolução da equação de fluxo ótico).
[00169] Em um exemplo, um pixel I (x, y, t) está localizado em um primeiro quadro (x e y correspondendo às coordenadas espaciais, t correspondendo à dimensão de tempo). O objeto representado pelo pixel se move pela distância (dx, dy) no próximo quadro obtido após o tempo dt. Uma vez que esses pixels são iguais e a intensidade não muda, a equação de fluxo ótico é dada por: I (x, y, t) = I (x + dx, y + dy, t + dt).
[00170] I (x, y, t) especifica a intensidade (valor de amostra) de um pixel nas coordenadas de (x, y, t).
[00171] Em outro exemplo, pequenos deslocamentos e termos de ordem superior em uma expansão de série de Taylor são ignorados, as equações de fluxo ótico também podem ser + 34 + 35 /0 /0 /0 escritas como: /1 /4 /5 = 0 /0 /0 /4 /5 Onde e são os gradientes de amostra espacial /0 /1 horizontal e vertical na posição (x, y) e é a derivada temporal parcial em (x, y).
[00172] O refinamento de fluxo ótico utiliza o princípio acima para melhorar a qualidade da bipredição.
[00173] A implementação do refinamento de fluxo ótico normalmente inclui os passos de:
1. Calcular gradientes de amostra;
2. Calcular diferença entre a primeira e a segunda predição;
3. Calcular deslocamento de pixels ou grupo de pixels que minimiza o erro ∆ entre os dois remendos de referência 97 (&) 97 (") 97 (&) 97 (") obtidos usando a equação de fluxo ótico ∆ = (7 − 7 ) + 34 (8& (&) (") + 8" ) + 35 (8& + 8" ) 9: 9: 9; 9; onde I(0) corresponde ao valor de amostra na primeira predição, I(1) é o valor de amostra na segunda predição, e ∂I(0) / ∂x e ∂I(0) / ∂y são os gradientes em direções –x e –
y. 8" e 8& denotam as distâncias às imagens de referência, onde a primeira predição e a segunda predição são obtidas. O vetor de movimento (vx, vy) é obtido pelo processo de minimização. Algumas abordagens minimizam a soma dos erros quadrados, enquanto algumas abordagens minimizam a soma do erro absoluto.
4. Empregar uma implementação da equação de fluxo ótico, como abaixo: ( ( ) ( predBIO = 1 2 ⋅ I + I + vx 2 ⋅ τ1∂I (1) ∂x − τ0∂I (0) ∂x + vy 2 ⋅ τ1∂I (1) ∂y − τ0∂I (0) ∂y (0) (1) ) onde predBIO especifica a predição modificada que é a saída do processo de refinamento de fluxo ótico.
[00174] Os gradientes de amostra podem ser obtidos pela seguinte fórmula: • ∂I (x, y, t) / ∂x = I (x + 1, y, t) - I (x - 1, y, t) • ∂I (x, y, t) / ∂y = I (x, y + 1, t) - I (x, y - 1, t)
[00175] Em algumas modalidades, a fim de simplificar a complexidade de estimar o deslocamento para cada pixel, o deslocamento é estimado para um grupo de pixels. Em alguns exemplos, para computar a bipredição melhorada para um bloco de amostras de luma 4x4, os deslocamentos são estimados usando valores de amostra de um bloco de amostras de luma 8x8 com o bloco 4x4 de amostras em seu centro.
[00176] A entrada do processo de refinamento de fluxo ótico são as amostras de predição a partir de duas imagens de referência e a saída do refinamento de fluxo ótico é a predição combinada (predBIO) que é calculada de acordo com a equação de fluxo ótico.
[00177] Um exemplo de refinamento de fluxo ótico é explicado na seção 8.4.7.4 “Bidirectional otical flow prediction process” do documento JVET-M1001, Versatile Video
Coding (Draft 4).
[00178] Os termos refinamento de fluxo ótico, refinamento de fluxo ótico bipreditivo e refinamento de fluxo ótico bidirecional são usados indistintamente na divulgação, uma vez que os termos são equivalentes em natureza.
[00179] Em um exemplo, o refinamento de vetor de movimento e o refinamento de fluxo ótico são aplicados consecutivamente da seguinte forma: Passo 0, obter um vetor de movimento inicial como em 1010 na Figura 8. Passo 1, o refinamento de vetor de movimento é aplicado 1020 e os vetores de movimento refinados 1030 são obtidos. Passo 2, predições são obtidas de acordo com os vetores de movimento de refinamento 1040. As predições obtidas são I(0) e I(1), que são a entrada do processo de refinamento de fluxo ótico. Passo 3, processo de refinamento de fluxo ótico é aplicado às predições, para obter a predição modificada. A predição modificada é obtida de acordo com a equação baixa ótica e denotada como predBIO.
[00180] No entanto, o processo de refinamento de fluxo ótico é computacionalmente intensivo. O tempo de decodificação é aumentado pela aplicação de refinamento de fluxo ótico.
[00181] Em uma modalidade da presente invenção, um método para decidir se deve aplicar refinamento de fluxo ótico ou não é divulgado, esta decisão pode ser feita de acordo com cálculos realizados durante um processo de refinamento de vetor de movimento.
[00182] Mais especificamente, um resultado de cálculos realizados durante o processo de refinamento de vetor de movimento é usado para determinar se deve ser aplicado o refinamento de fluxo ótico ou não.
[00183] O objetivo da invenção é pular a aplicação de refinamento de fluxo ótico de acordo com uma condição especificada, de modo que o tempo médio de decodificação seja reduzido (pulando os cálculos necessários).
[00184] De acordo com uma primeira modalidade exemplar, os seguintes passos são aplicados a fim de obter a predição para um bloco de codificação atual: Passo 0: obter vetores de movimento iniciais com base em uma informação de indicação em um fluxo de bits. Passo 1: obter uma primeira predição com base nos vetores de movimento iniciais e um filtro de interpolação de M- derivações. Passo 2: obter um custo de correspondência de acordo com as primeiras predições. Passo 3: obter um vetor de movimento refinado de acordo com os vetores de movimento iniciais e o custo de correspondência. Passo 4: obter uma segunda predição de acordo com o vetor de movimento refinado e um filtro de interpolação de K- derivações. Passo 5: determinar se deve realizar um processo de refinamento de fluxo ótico de acordo com o custo de correspondência. Em um exemplo, o custo de correspondência é comparado com um limiar e o processo de refinamento de fluxo ótico é realizado quando um valor do custo de correspondência é maior ou igual ao limiar. O Passo 5 também pode ser realizado antes do Passo 3 ou Passo 4.
Passo 6: quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado, o refinamento de fluxo ótico é aplicado com a segunda predição como entrada e a segunda predição modificada como saída. Se determinado negativamente, o refinamento de fluxo ótico não é aplicado na segunda predição. Em outras palavras, quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e de acordo com o processo de refinamento de fluxo ótico. Caso contrário, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e sem aplicação do processo de refinamento de fluxo ótico.
[00185] A explicação detalhada dos passos é a seguinte: no Passo 0, dois vetores de movimento iniciais são obtidos como entrada. Os vetores de movimento iniciais podem ser determinados com base em uma informação de indicação no fluxo de bits. Por exemplo, um índice pode ser sinalizado no fluxo de bits, o índice indica uma posição em uma lista de vetores de movimento candidatos. Em outro exemplo, um índice de preditor de vetor de movimento e valor de diferença de vetor de movimento podem ser sinalizados no fluxo de bits. O vetor de movimento que é determinado com base em uma informação de indicação no fluxo de bits é definido como os vetores de movimento iniciais; em outro exemplo, as indicações de imagem de referência podem ser obtidas a partir do fluxo de bits, os vetores de movimento iniciais são obtidos com base nas indicações de imagem de referência. As indicações de imagem de referência são usadas para determinar as imagens de referência que são apontadas pelos vetores de movimento iniciais; o Passo 1, o Passo 2 e o Passo 3 correspondem a um processo de refinamento de vetor de movimento, conforme explicado nos exemplos acima.
Os vetores de movimento iniciais são refinados de acordo com o refinamento de vetor de movimento.
Em um exemplo, o custo de correspondência é a medida de similaridade usada no refinamento de vetor de movimento; de acordo com o passo 1, as primeiras predições são obtidas correspondendo aos vetores de movimento iniciais.
Em um exemplo, existem pelo menos 2 pares de vetores de movimento candidatos no processo de refinamento de vetor de movimento, um dos quais é tipicamente o par formado pelos vetores de movimento iniciais (MV0, MV1). Em outras palavras, o conjunto de vetores de movimento candidatos normalmente inclui mais de um par, em que um dos pares são geralmente (MV0, MV1). O outro par de vetores de movimento candidatos é determinado com base em (MV0, MV1), adicionando pequenas perturbações aos vetores de movimento (como explicado nos exemplos acima); no Passo 1, as primeiras predições correspondentes a cada par de vetores de movimento candidatos são obtidas com base em um filtro de interpolação de M-derivações.
Como exemplo, uma predição correspondente a MV0 pode ser obtida localizando um bloco retangular em uma imagem de referência (uma imagem que já está codificada no codificador ou decodificada no decodificador), em que o bloco é apontado por MV0. Posteriormente, um filtro de interpolação é vantajosamente aplicado às amostras dentro do bloco apontado por MV0. A fim de fornecer uma estimativa de movimento mais precisa, a resolução da imagem de referência pode ser aumentada interpolando amostras entre pixels.
A interpolação de pixel fracionária pode ser realizada pela média ponderada dos pixels mais próximos.
Aqui, o filtro de M-derivações pode ser tipicamente um filtro de 2, 4, 6 ou 8 derivações (não limitado a essas opções), o que significa que o filtro tem M coeficientes de multiplicação.
A predição correspondente a MV1 pode ser obtida de forma semelhante, localizando um bloco retangular em uma imagem de referência igual ou diferente.
O tamanho do retângulo é proporcional ao tamanho do bloco de codificação atual; no passo 2, o custo de correspondência associado a cada par de vetores de movimento candidatos é determinado de acordo com as primeiras predições; de acordo com o passo 2, pelo menos um custo de correspondência (por exemplo, medida de similaridade) é obtido correspondendo a um dos pares de vetores de movimento (MV) candidatos de refinamento.
Quanto maior a similaridade entre dois blocos de predição, o custo de correspondência é menor; o referido custo de correspondência é usado no refinamento dos vetores de movimento iniciais no passo 3. O vetor de movimento refinado é selecionado de acordo com o referido custo de correspondência; no Passo 4, uma segunda predição é obtida de acordo com o vetor de movimento refinado e um filtro de interpolação de K-derivações.
No caso de 2 vetores de movimento refinados (MV0’ e MV1'), que é o caso da bipredição, duas segundas predições são obtidas;
a segunda predição é obtida pela aplicação de um segundo filtro de interpolação (filtro de K-derivações), que pode ou não ser idêntico ao primeiro filtro de interpolação (filtro de M-derivações). A segunda predição é obtida de forma semelhante à primeira predição, com a aplicação do segundo filtro de interpolação e de acordo com o bloco apontado por MV0’ e MV1' na imagem de referência; no passo 5, o referido custo de correspondência é usado para determinar se deve realizar um processo de refinamento de fluxo ótico ou não, de acordo com o seguinte: quando um valor do custo de correspondência é menor do que um limiar predefinido, o refinamento de fluxo ótico não é aplicado.
Quando um valor do custo de correspondência é maior ou igual ao limiar, o processo de refinamento de fluxo ótico é realizado.
Se o processo de refinamento de fluxo ótico for realizado, as amostras de predição final são modificadas; no passo 6, de acordo com a saída do passo 5, se o custo de correspondência for maior do que r igual ao referido limiar, o processo de refinamento de fluxo ótico é aplicado às segundas predições, as segundas predições são obtidas de acordo com MV0' e MV1’ (vetores de movimento refinados). A predição final para o bloco de codificação atual é obtida realizando um processo de refinamento de fluxo ótico sobre as segundas predições, as segundas predições são apontadas por MV0' e MV1'. Se o custo de correspondência for menor do que o referido limiar, a predição final é obtida de acordo com as segundas predições apontadas por MV0' e MV1', sem a aplicação de refinamento de fluxo ótico, o que significa que, passo 6 não é realizado.
[00186] Em uma implementação, o custo de correspondência no passo 2 é um custo de correspondência correspondente ao par de vetores de movimento iniciais (que é um dos pares de vetores de movimento (MV) candidatos de refinamento). O custo de correspondência pode corresponder ao par MV0, MV1.
[00187] Em outra implementação, o referido custo de correspondência no passo 2 é um custo de correspondência igual ao menor custo de correspondência entre os pares de vetores de movimento (MV) candidatos de refinamento. Em outras palavras, um custo de correspondência é obtido correspondendo a cada par de vetores de movimento candidatos de refinamento, e o referido custo de correspondência é igual ao menor custo de correspondência entre eles. Em um exemplo, o referido custo de correspondência é um custo de correspondência correspondente ao par de vetores de movimento refinados MV0’ e MV1', (uma vez que o par de vetores de movimento refinados (MV0’, MV1') é selecionado, uma vez que tem o menor custo de correspondência.
[00188] Como exemplo, os pares de MV podem ser construídos da seguinte maneira.
[00189] Os pares de MVs candidatos são determinados pela adição de pequenas diferenças de vetores de movimento a MV0 e MV1. Por exemplo, os pares de MVs candidatos podem incluir o seguinte: (MV0, MV1) (MV0 + (0,1), MV1 + (0, -1)) (MV0 + (1,0), MV1 + (-1,0)) MV0 e MV1 são vetores de movimento iniciais, vetores de movimento refinados MV0’ e MV1' em toda a aplicação.
[00190] De acordo com outra implementação, quando o processo de refinamento de fluxo ótico não é realizado, a predição final é obtida de acordo com a seguinte fórmula: Bipredição = Predição1 * W1 + Predição2 * W2 + K, onde W1 e W2 são fatores de ponderação, W1 e W2 podem ser sinalizados em um fluxo de bits, ou W1 e W2 podem ser predefinidos no lado de codificador ou no lado de decodificador. K é um fator aditivo que também pode ser sinalizado em um fluxo de bits ou ser predefinido no lado de codificador ou no lado de decodificador. Em um exemplo, a bipredição pode ser obtida usando Bipredição = (Predição1 + Predição2) / 2, onde W1 e W2 são definidos como ½ e K é definido como 0. Predição1 e predição2 são as segundas predições que são obtidas por filtragem de interpolação de K-derivações, Predição1 corresponde ao primeiro MV refinado (MV0’) e Predição2 corresponde ao segundo MV refinado (MV1’).
[00191] A equação acima atinge uma combinação ponderada das duas predições e o resultado é a predição final para o bloco.
[00192] O limiar pode ser um valor predefinido, um valor do limiar pode depender do tamanho do bloco de predição. Por exemplo, o limiar pode ser thr = nCbW x nCbH x K, onde K é um valor maior que zero, nCbW e nCbH são a largura e a altura do bloco de predição.
[00193] A primeira modalidade é ainda exemplificada pelo fluxograma da Figura 6.
[00194] Em uma implementação, o filtro de M- derivações é um filtro de 2 derivações (por exemplo, filtro bilinear) com uma das derivações igual a zero. Nesta aplicação, o filtro de M-derivações emprega 2 coeficientes multiplicadores, um valor de um coeficiente é sempre igual a zero. Qual coeficiente tem um valor igual a zero é determinado com base em um ponto de amostra fracionário, que o ponto de amostra fracionário é apontado pelo vetor de movimento. Nesse caso, um valor do primeiro coeficiente multiplicador, ou um valor do segundo coeficiente multiplicador pode ser zero, dependendo do componente fracionário do vetor de movimento.
[00195] Esse filtro (com 2 derivações, uma das quais é zero, pode ser exemplificado de acordo com a seguinte tabela: coeficientes de filtro de Posição de amostra interpolação fracionária p fbL[p] [0] fbL[p] [1] 1 16 0 2 16 0 3 16 0 4 16 0 5 16 0 6 16 0 7 16 0 8 0 16 9 0 16 10 0 16 11 0 16 12 0 16 13 0 16 14 0 16
[00196] A posição de amostra fracionária (p) pode ser obtida de acordo com os componentes do vetor de movimento inicial ou refinado. Por exemplo, se o componente –x do vetor de movimento é fornecido por MV0x, então a posição de amostra fracionária pode ser obtida como p = MV0x% 16, onde “%” é a operação de módulo. Em geral, p = MV0x% K, onde K representa o número de posições de amostra fracionárias entre duas posições de amostra. O filtro de interpolação exemplificado acima também pode ser chamado de filtro de 1-derivação, já que apenas uma das derivações de filtro é diferente de zero em um tempo.
[00197] Em uma implementação, um valor do K é igual a
8. Em outros exemplos, um valor do M é menor que 8.
[00198] Em uma implementação, um valor do M e um valor do K são ambos iguais a 8.
[00199] O vetor de movimento inicial é obtido em 710, que é a entrada da unidade de vetor de movimento de refinamento. Um espaço de busca é construído em torno de vetor de movimento inicial pela unidade de vetor de movimento refinamento (740). Em um exemplo, o espaço de busca consiste em pares de vetores de movimento candidatos, primeiro vetor de movimento do par correspondente à primeira imagem de referência e o segundo vetor de movimento do par correspondente à segunda imagem de referência. As primeiras predições correspondentes a cada um dos pares de vetores de movimento candidatos são obtidas no passo 710, por aplicação de Filtro de interpolação de M-derivações. Como parte de refinamento de vetor de movimento, um custo de correspondência é calculado correspondente a um dos pares de vetores de movimento no espaço de busca (720). O referido custo de correspondência é usado como parte de dois processos, o primeiro processo é refinamento de vetor de movimento (740), onde o custo de correspondência é usado para decidir qual o par de vetor de movimento é selecionado como par de vetores de movimento refinados (750). O segundo processo é a decisão de se o refinamento de fluxo ótico (770) é aplicado ou não. Após o vetor de movimento refinado ser obtido, segunda predição para o bloco atual é obtido por (760). Se o custo de correspondência for maior do que ou igual a um limiar, o refinamento de fluxo ótico é aplicado e a predição em 760 é modificada por 770 para obter a predição modificada (780). Predição modificada é tipicamente diferente em valores de amostra a partir da segunda predição no passo 760.
[00200] Em um exemplo, o processo de refinamento de vetor de movimento é realizado mais de uma vez para refinar ainda mais o vetor de movimento. Neste exemplo, os vetores de movimento iniciais são primeiro refinados pelo processo de refinamento de vetor de movimento, para obter o primeiro vetor de movimento refinado. Posteriormente, o refinamento de vetor de movimento é realizado mais uma vez; neste caso, o primeiro vetor de movimento refinado é considerado como os vetores de movimento iniciais para o segundo refinamento de vetor de movimento.
[00201] De acordo com uma segunda modalidade exemplar, os passos que seguem são aplicados a fim de obter a predição para um bloco de codificação atual: Passo 0: obter vetores de movimento iniciais com base em uma informação de indicação em um fluxo de bits.
Passo 1: obter uma primeira predição com base em vetores de movimento iniciais e um filtro de interpolação de M- derivações. Passo 2: obter N custos de correspondência de acordo com as primeiras predições. Passo 3: obter um vetor de movimento refinado de acordo com os vetores de movimento iniciais e os N custos de correspondência, com base em uma primeira função. Passo 4: obter uma segunda predição de acordo com o vetor de movimento refinado e um filtro de interpolação de K- derivações. Passo 5: determinar se deve ser realizado um processo de refinamento de fluxo ótico de acordo com os N custos de correspondência. Um custo derivado é obtido de acordo com os N custos de correspondência e uma segunda função. Em um exemplo, o custo derivado é comparado com um limiar e o processo de refinamento de fluxo ótico é realizado quando um valor do custo derivado é maior ou igual ao limiar. O Passo 5 também pode ser realizado antes do Passo 3 ou Passo 4. Passo 6: modificar pelo menos uma amostra da predição do bloco de codificação atual com aplicação de refinamento de fluxo ótico, quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado.
[00202] Quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado, o refinamento de fluxo ótico é aplicado com a segunda predição como entrada e segunda predição modificada como saída. Se determinado negativamente, o refinamento de fluxo ótico não é aplicado sobre a segunda predição. Em outras palavras, quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e de acordo com o processo de refinamento de fluxo ótico. Caso contrário, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e sem aplicação do processo de refinamento de fluxo ótico.
[00203] A explicação detalhada dos passos é a seguinte: no Passo 0, dois vetores de movimento iniciais são obtidos como entrada. O vetor de movimento inicial pode ser determinado com base em uma informação de indicação no fluxo de bits. Por exemplo, um índice pode ser sinalizado no fluxo de bits, o índice indica uma posição em uma lista de vetores de movimento candidatos. Em outro exemplo, um índice de preditor de vetor de movimento e valor de diferença de vetor de movimento podem ser sinalizados no fluxo de bits. O vetor de movimento que é determinado com base em uma informação de indicação no fluxo de bits é definido como os vetores de movimento iniciais; em outro exemplo, as indicações de imagem de referência podem ser obtidas a partir do fluxo de bits, os vetores de movimento iniciais são obtidos com base nas indicações de imagem de referência. As indicações de imagem de referência são usadas para determinar as imagens de referência que são apontadas pelos vetores de movimento iniciais; o Passo 1, o Passo 2 e o Passo 3 correspondem a um processo de refinamento de vetor de movimento, conforme explicado nos exemplos acima. Os vetores de movimento iniciais são refinados de acordo com o refinamento de vetor de movimento. Em um exemplo, o custo de correspondência é a medida de similaridade usada no refinamento de vetor de movimento; de acordo com o passo 1, as primeiras predições são obtidas correspondendo aos vetores de movimento iniciais.
Em um exemplo, existem pelo menos 2 pares de vetores de movimento candidatos no processo de refinamento de vetor de movimento, um dos quais é tipicamente o par formado pelos vetores de movimento iniciais (MV0, MV1). E o outro par de vetores de movimento candidatos é determinado com base em (MV0, MV1), adicionando pequenas perturbações aos vetores de movimento (como explicado no exemplo acima); no Passo 1, as primeiras predições correspondentes a cada par de vetores de movimento candidatos são obtidas com base em um filtro de interpolação de M-derivações; no passo 2, N custos de correspondência associados a N pares de vetores de movimento candidatos são determinados de acordo com as primeiras predições; de acordo com o passo 2, os N custos de correspondência (medida de similaridade) são obtidos correspondendo a N dos pares de vetores de movimento (MV) candidatos de refinamento.
Quanto maior for a similaridade entre dois blocos de predição, menor será o custo de correspondência; os referidos N custos de correspondência são usados no refinamento dos vetores de movimento iniciais no passo 3; o vetor de movimento refinado é determinado de acordo com uma primeira função e os N custos de correspondência; em um exemplo, o vetor de movimento refinado pode ser obtido de acordo com a seguinte função: - se (sad [3] + sad [5]) for igual a (sad [4] << 1), dmvOffset [0] é definido igual a 0,
- Caso contrário, aplica-se o seguinte: dmvOffset [0] = ((sad [3] - sad [5]) << 3) / (sad [3] + sad [5] - (sad [4] << 1)) - se (sad [1] + sad [7]) for igual a (sad [4] << 1), dmvOffset [1] é definido igual a 0, - Caso contrário, aplica-se o seguinte: dmvOffset [1] = ((sad [1] - sad [7]) << 3) / (sad [1] + sad [7] - (sad [4] << 1)) onde dmvOffset [0] e dmvOffset [1] especificam a diferença entre o vetor de movimento inicial e o vetor de movimento refinado. Em um exemplo, dmvOffset [0] e dmvOffset
[1] especificam o componente -x -y e da diferença entre os vetores de movimento iniciais e refinados. sad [0] à sad [7] são os N custos de correspondência, correspondentes a N pares de vetores de movimento candidatos. O vetor de movimento refinado é obtido pela adição do dmvOffset para os vetores de movimento iniciais; pode haver outras funções que podem ser usadas para determinar o vetor de movimento refinado de acordo com N custos de correspondência. A primeira função na invenção não está limitada à equação acima; no Passo 4, uma segunda predição é obtida de acordo com o vetor de movimento refinado e um filtro de interpolação de K-derivações. No caso de 2 vetores de movimento refinados (MV0’ e MV1'), que é o caso da bipredição, duas segundas predições são obtidas; a segunda predição é obtida pela aplicação de um segundo filtro de interpolação (filtro de K-derivações), que pode ou não ser idêntico ao primeiro filtro de interpolação (filtro de M-derivações). A segunda predição é obtida de forma semelhante à primeira predição, com a aplicação do segundo filtro de interpolação e de acordo com o bloco apontado por MV0’ e MV1' na imagem de referência; no passo 5, um custo derivado é obtido de acordo com uma segunda função e os referidos N custos de correspondência. O custo derivado é usado para determinar se deve realizar um processo de refinamento de fluxo ótico ou não. Quando um valor do referido custo derivado é menor do que um limiar predefinido, o processo de refinamento de fluxo ótico não é realizado. Quando um valor de custo derivado é maior do que ou igual ao limiar, o processo de refinamento de fluxo ótico é realizado. Se o processo de refinamento de fluxo ótico é realizado, as amostras de predição final são modificadas; no passo 6, de acordo com a saída do passo 5, se o custo derivado for maior do que o referido limiar, o processo de refinamento de fluxo ótico é aplicado às segundas predições, as segundas predições são obtidas de acordo com MV0’ e MV1' (vetores de movimento refinados). A predição final para o bloco de codificação atual é obtida realizando o processo de refinamento de fluxo ótico nas segundas predições, as segundas predições são apontadas por MV0’ e MV1'. Se o custo de correspondência for menor que o referido limiar, a predição final é obtida de acordo com as segundas predições apontadas por MV0’ e MV1', sem a aplicação de refinamento de fluxo ótico, ou seja, o Passo 6 não é realizado.
[00204] De acordo com outra implementação, quando o processo de refinamento de fluxo ótico não é realizado, a predição final é obtida de acordo com a seguinte fórmula: Bipredição = Predição1 * W1 + Predição2 * W2 + K, onde W1 e W2 são fatores de ponderação, W1 e W2 podem ser sinalizados em um fluxo de bits ou podem ser predefinidos no lado de codificador ou no lado de decodificador. K é um fator aditivo que também pode ser sinalizado em um fluxo de bits ou ser predefinido no lado de codificador ou no lado de decodificador. Em um exemplo, a bipredição pode ser obtida usando Bipredição = (Predição1 + Predição2) / 2, onde W1 e W2 são definidos como ½ e K é definido como 0. Predição1 e predição2 são as segundas predições que são obtidas por filtragem de interpolação de K-derivações, Predição1 corresponde ao primeiro MV refinado (MV0’) e Predição2 corresponde ao segundo MV refinado (MV1’).
[00205] A equação acima atinge uma combinação ponderada das duas predições, e o resultado é a predição final para o bloco.
[00206] O limiar pode ser um valor predefinido, um valor do limiar depende do tamanho do bloco de predição. Por exemplo, o limiar pode ser thr = nCbW x nCbH x K, onde K é um valor maior que zero, nCbW e nCbH são a largura e a altura do bloco de predição.
[00207] A segunda modalidade é ainda exemplificada pelo fluxograma da Figura 7.
[00208] Em uma implementação, o filtro de M- derivações é um filtro de 2-derivações (por exemplo, filtro bilinear) com uma das derivações igual a zero. Nesta implementação, o filtro de M-derivações emprega 2 coeficientes multiplicadores, um valor de um coeficiente é sempre igual a zero. O coeficiente que é igual a zero é determinado com base no ponto de amostra fracionário que é apontado pelo vetor de movimento. Neste caso, um valor do primeiro coeficiente multiplicador, ou um valor do segundo coeficiente multiplicador pode ser zero, dependendo do componente fracionário do vetor de movimento.
[00209] Esse filtro (com 2 derivações, uma das quais é zero, pode ser exemplificado de acordo com a seguinte tabela: coeficientes de filtro de Posição de amostra interpolação fracionária p fbL[p] [0] fbL[p] [1] 1 16 0 2 16 0 3 16 0 4 16 0 5 16 0 6 16 0 7 16 0 8 0 16 9 0 16 10 0 16 11 0 16 12 0 16 13 0 16 14 0 16 15 0 16
[00210] A posição de amostra fracionária (p) pode ser obtida de acordo com os componentes do vetor de movimento inicial ou refinado. Por exemplo, se o componente -x do vetor de movimento é dado por MV0x, em seguida, a posição de amostra fracionária pode ser obtida como p = MV0x% 16, onde
“%” representa a operação de módulo. Em geral p = MV0x%K, em que K representa o número de posições de amostra fracionárias entre duas posições de amostra. O filtro de interpolação exemplificado acima também pode ser chamado um filtro de 1- derivação, uma vez que apenas uma das derivações de filtro é diferente de zero em um tempo.
[00211] Outro exemplo de filtro de interpolação bilinear pode ser o seguinte, caso em que ambos os coeficientes de filtro são diferentes de zero: coeficientes de filtro de Posição de amostra interpolação fracionária p fbL[p] [0] fbL[p] [1] 1 15 1 2 14 2 3 13 3 4 12 4 5 11 5 6 10 6 7 9 7 8 8 8 9 7 9 10 6 10 11 5 11 12 4 12 13 3 13 14 2 14 15 1 15
[00212] Em uma implementação, um valor do K é igual a
8. Em outros exemplos, um valor do M é menor que 8.
[00213] Em uma implementação, um valor do M e um valor do K são ambos iguais a 8.
[00214] Em uma modalidade, a segunda função pode ser uma função para combinar linearmente os N custos de correspondência de acordo com dmvOffset, onde o dmvOffset foi obtido no passo 3. Uma combinação linear de x e y seria qualquer expressão da forma ax + by, onde a e b são constantes. Em um exemplo, as constantes a e b podem ser determinadas com base em dmvOffset. Exemplos para a segunda função são fornecidos abaixo.
[00215] Em uma implementação, a segunda função pode ser: • Sad [1] * A + Sad [2] * B + Sad [3] * C + Sad [4] * D, em que A, B, C e D são maiores do que ou iguais a zero. Em um exemplo, A, B, C e D pode ser números que estão entre 0 e 1, e que adicionam a 1 (isto é, A + B + C + D = 1). Em outro exemplo, A, B, C e D podem ser números maiores do que ou iguais a 0 e que adicionam a um número fixo previamente definido P, P pode ser igual a 1,2, 4, 8, 16, etc. • A, B, C e D podem ser números fixos predefinidos. • A, B, C e D podem ser derivados de acordo com dmvOffset
[0] e dmvOffset [1]. Em um exemplo, A = dmvOffset [0], B = P1 - dmvOffset [0], C = dmvOffset [1], D = P2 - dmvOffset
[1]. Onde P1 e P2 podem ser iguais a 1, 4, 8,16, etc. •A equação acima é dada como exemplo. A equação representa a combinação linear de 4 custos de correspondência para obter o custo derivado. Na equação, o dmvOffset é usado, que pode ser obtido no passo 3. dmvOffset representa a diferença entre o vetor de movimento refinado e o vetor de movimento inicial. Em uma implementação específica, o dmvOffset é definido como a diferença entre MV0 e MV0’. Mais especificamente, o dmvOffset [0] pode ser a diferença entre o componente –x de MV0 e MV0’, enquanto o dmvOffset [1] pode ser a diferença entre o componente –y de MV0 e MV0'.
[00216] Em outra implementação, a segunda função pode ser: • Sad [1] * A + Sad [2] * B + Sad [3] * C, onde A, B e C são maiores ou iguais a zero. Em um exemplo, A, B e C podem ser números que estão entre 0 e 1, e que somam 1 (ou seja, A + B + C = 1). Em outro exemplo, A, B e C podem ser números maiores ou iguais a 0 e que somam um número fixo predefinido P, P pode ser igual a 1, 2, 4, 8, 16 etc. • A, B e C podem ser números fixos predefinidos. • A, B e C podem ser derivados de acordo com dmvOffset
[0] e dmvOffset [1]. Em um exemplo, A = P - dmvOffset [0] - dmvOffset [1], B = dmvOffset [0], C = dmvOffset [1]. Onde P pode ser igual a 1, 4, 8, 16, etc. •A equação acima é dada como exemplo. A equação representa a combinação linear de 3 custos de correspondência para obter o custo derivado. Na equação, o dmvOffset é usado, que pode ser obtido no passo 3. dmvOffset representa a diferença entre o vetor de movimento refinado e o vetor de movimento inicial. Em um exemplo, o dmvOffset é definido como a diferença entre MV0 e MV0’. Mais especificamente, o dmvOffset [0] pode ser a diferença entre o componente –x de MV0 e MV0’, enquanto o dmvOffset [1] pode ser a diferença entre o componente –y de MV0 e MV0'.
[00217] Em outra implementação, a segunda função para obter o custo derivado pode ser: • Usar 5 valores de custo de dissimilaridade avaliados
(por exemplo, valores de SAD) no par de MVs refinados e pares de MV candidatos que estão a uma distância inteira do par de MVs refinados, uma função de superfície de erro paramétrica E (x, y) = A * (x - x0)2 + B * (y - y0)2 + C É ajustado onde (x0, y0) corresponde à posição em que a dissimilaridade entre os dois remendos de referência é minimizada, C é o valor do custo em (x0, y0), e A, B são coeficientes de modelo. Essas 5 incógnitas podem ser resolvidas de maneira exata se 5 valores de custo estiverem disponíveis. Em outras palavras, a equação para E (x, y) pressupõe que a forma dos custos de correspondência em função das posições espaciais perto da posição de custo de correspondência mínimo é parabólica.
[00218] Em uma modalidade, os pares de MVs de candidatos para a esquerda, topo, direita e fundo do par de MVs refinados a uma distância pixel inteira são utilizados. Neste caso, tendo em conta os valores avaliados de E (x, y) em (x, y) de posições (0,0), (-1,0), (0, -1), (1,0), e (0,1) e a equação paramétrica para E (x, y), as 5 incógnitas A, B, C, x0, y0 podem ser resolvidas da seguinte forma: A = (E (-1,0) + E (1,0) - 2 * E (0,0)) / 2 B = (E (0, -1) + E (0,1) - 2 * E (0,0)) / 2 x0 = (E (-1,0) - E (1,0)) / (2 * (E (-1,0) + E (1,0) - 2 * E (0,0))) y0 = (E (0, -1) - E (0,1)) / (2 * (E (0, -1) + E (0,1) - 2 * E (0,0)))
H C=<=>?3=@ABC1 = D(0,0) − − EF(!",&)!F(",&)G (F(&,!")!F(&,"))H I∗(F(!",&)JF(",&)!.∗F(&,&)) I∗(F(&,!")JF(&,")!.∗F(&,&))
[00219] Por outro lado, se os valores de custo em mais de 5 posições estiverem disponíveis, as 5 incógnitas podem ser resolvidas usando mínimos quadrados ou abordagem semelhante. O valor obtido de C torna-se então o custo derivado.
[00220] Em uma implementação, a segunda função pode <=>?3=@ABC1 = KL< 0 − − ser a seguinte: (MNO " !MNO . )H (MNO Q !MNO R )H P∗(MNO " JMNO . !.∗MNO & ) P∗(MNO Q JMNO R !.∗MNO & ) Onde K é um escalar maior que 0 e sad [0] a sad [4] são os N custos de correspondência.
[00221] Em um exemplo, o processo de refinamento de vetor de movimento é realizado mais de uma vez para refinar ainda mais o vetor de movimento. Neste exemplo, os vetores de movimento iniciais são primeiro refinados pelo processo de refinamento de vetor de movimento, para obter o primeiro vetor de movimento refinado. Posteriormente, o refinamento de vetor de movimento é realizado mais uma vez; neste caso, o primeiro vetor de movimento refinado é considerado como os vetores de movimento iniciais para o segundo refinamento de vetor de movimento.
[00222] O vetor de movimento inicial é obtido em 925, que é a entrada da unidade de vetor de movimento de refinamento. Um espaço de busca é construído em torno de vetor de movimento inicial pela unidade de vetor de movimento refinamento (930). Em um exemplo, o espaço de busca consiste em pares de vetores de movimento candidatos, primeiro vetor de movimento do par correspondente à primeira imagem de referência e o segundo vetor de movimento do par correspondente à segunda imagem de referência. As primeiras predições correspondentes a cada um dos pares de vetores de movimento candidatos são obtidas no passo 910, por aplicação de filtro de interpolação de M-derivações. Como parte do refinamento de vetor de movimento, um custo de correspondência é calculado correspondente a N pares de vetores de movimento no espaço de busca (915). Os referidos N custos de correspondência são usados como parte de dois processos, o primeiro processo é refinamento de vetor de movimento (930), onde os custos de correspondência são usados para calcular o par de vetores de movimento refinados (935) de acordo com uma função que recebe os N custos de correspondência como entrada. O segundo processo é a decisão de se o refinamento de fluxo ótico (950) é aplicado ou não, em que a decisão é tomada por 945. Depois do vetor de movimento refinado ser obtido, segunda predição para o bloco atual é obtido por (940). Se o custo de correspondência for maior do que um limiar, o refinamento de fluxo ótico é aplicado e a predição em 940 é modificada por 950 para obter a predição modificada (955-960). Predição modificada é tipicamente diferente em valores de amostra a partir da segunda predição no passo 940. Se o custo de correspondência é menor do que um limiar, o refinamento de fluxo ótico não é aplicado e a segunda predição é definida como saída (a predição final do bloco atual).
[00223] De acordo com uma terceira modalidade exemplar da presente invenção, os seguintes passos são aplicados a fim de obter a predição para um bloco de codificação atual: Passo 0: obter o par de vetores de movimento iniciais com base em uma informação de indicação em um fluxo de bits. Passo 1: obter um primeiro conjunto de amostras preditas com base no par de MVs iniciais e um filtro de interpolação de M-derivações.
Passo 2: obter um primeiro custo de correspondência correspondente ao par de MVs iniciais usando o primeiro conjunto de amostras preditas.
Passo 3: determinar se o bloco de codificação atual é elegível para realizar o refinamento de vetor de movimento.
Passo 4: se o bloco de codificação atual for determinado como elegível para realizar MVR no passo 3. Passo 4a: obter um par de MVs refinados e um custo de correspondência correspondente ao par de MVs refinados de acordo com o par de MVs iniciais e o custo de correspondência usando um processo de refinamento de vetor de movimento.
Passo 4b: obter um segundo conjunto de amostras preditas de acordo com o par de MVs refinados e um filtro de interpolação de K-derivações.
Passo 4c: determinar se deve realizar um processo de refinamento de fluxo ótico de acordo com o segundo custo de correspondência.
Em um exemplo, o custo de correspondência é comparado com um limiar e o processo de refinamento de fluxo ótico é realizado quando um valor do custo de correspondência é maior ou igual ao limiar.
Passo 5: Caso contrário (se o bloco de codificação atual for determinado como não elegível para realizar MVR no passo 3). Passo 5a: obter um segundo conjunto de amostras preditas de acordo com o par de MVs iniciais e um filtro de interpolação de K-derivações.
Passo 5b: determinar se deve ser realizado um processo de refinamento de fluxo ótico de acordo com o primeiro custo de correspondência.
Em um exemplo, o custo de correspondência é comparado com um limiar e o processo de refinamento de fluxo ótico é realizado quando um valor do custo de correspondência é maior ou igual ao limiar. Passo 6: quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado (no passo 4c ou no passo 5b), o refinamento de fluxo ótico é aplicado com a segunda predição como entrada e a segunda predição modificada como saída. Se determinado negativamente, o refinamento de fluxo ótico não é aplicado na segunda predição. Em outras palavras, quando for determinado que o processo de refinamento de fluxo ótico precisa ser realizado, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e de acordo com o processo de refinamento de fluxo ótico. Caso contrário, a predição final do bloco de codificação atual é obtida de acordo com a segunda predição e sem aplicação do processo de refinamento de fluxo ótico.
[00224] Esta modalidade é ainda ilustrada no fluxograma na Figura 9. O bloco 1110 recebe um par de MVs iniciais para um bloco de codificação atual para predição nas referências L0 e L1. O bloco 1110 corresponde ao passo 1, em que um primeiro conjunto de amostras preditas é obtido usando o par de MVs iniciais e as amostras de referência reconstruídas das imagens L0 e L1. O bloco 1120 corresponde ao passo 2, em que um primeiro custo de correspondência (ou métrica de dissimilaridade, como SAD) é avaliado entre o primeiro conjunto de bloco predito de amostras correspondentes ao par de MVs iniciais (conforme descrito nos Antecedentes, seção de MVR). O bloco 1130 corresponde ao passo 3, em que as condições de elegibilidade do bloco de codificação atual para realizar MVR são verificadas. O bloco
1140 corresponde ao passo 4a, em que se o bloco de codificação atual for considerado elegível para realizar MVR, um par de MVs refinados é obtido realizando MVR (conforme descrito nos Antecedentes, seção de MVR) e um segundo custo de correspondência (ou métrica de dissimilaridade) correspondente ao par de MVs refinados é obtido.
O bloco 1150 corresponde ao passo 4b, em que um segundo conjunto de amostras preditas é obtido usando um filtro de interpolação de K-derivações (nas direções horizontal e vertical) usando o par de MVs refinados.
O bloco 1160 corresponde ao passo 4c, em que é verificado se o segundo custo de correspondência é menor do que um limiar predeterminado abaixo do qual o refinamento e bipredição com base no fluxo ótico bipreditivo são ignorados.
O bloco 1180 corresponde ao passo 5a, em que o bloco de codificação atual ignora MVR e obtém um segundo conjunto de amostras preditas usando um filtro de interpolação de K-derivações usando o par de MVs iniciais.
O bloco 1185 corresponde ao passo 5b, em que é verificado se o primeiro custo de correspondência é menor do que o limiar predeterminado abaixo do qual BPOF é ignorado.
Os blocos 1170 e 1195 correspondem a uma parte do passo 6, em que se a verificação no passo 4c ou passo 5b indica que o segundo ou primeiro custo de correspondência, respectivamente, é menor do que o limiar predeterminado abaixo do qual BPOF é ignorado, uma média ponderada de bipredição sem BPOF é realizada usando o segundo conjunto de amostras preditas.
O bloco 1175 corresponde a uma parte do passo 6, em que se a verificação no passo 4c ou passo 5b indica que o segundo ou primeiro custo de correspondência não é inferior ao limiar predeterminado abaixo do qual BPOF é ignorado, o fluxo ótico estimado é obtido e a bipredição final é obtida usando o segundo conjunto de amostras preditas, gradientes do segundo conjunto de amostras preditas, e o fluxo ótico estimado.
[00225] Deve ser notado que usando o primeiro ou o segundo custo de correspondência que são calculados em um sub-bloco de amostras dentro de uma unidade de codificação atual, conforme exigido pelo processo de refinamento de vetor de movimento para determinar o término antecipado do processo de refinamento baseado no fluxo ótico bipreditivo, a decisão de ignorar ou realizar BPOF pode variar a partir de um sub- bloco de MVR para outro dentro de uma unidade de codificação. O BPOF deve ser aplicado ou ignorado para todas as unidades de aplicação de BPOF (por exemplo, nível de pixel, ou nível de bloco 4x4 de amostras) dentro de um sub-bloco com base na determinação realizada no passo 4c ou passo 5.
[00226] Em certas modalidades, é possível realizar o término antecipado adicional para cada unidade de aplicação de BPOF dentro de um sub-bloco obtendo custos de correspondência parciais a cada unidade de aplicação de BPOF dentro de um sub-bloco de MVR.
[00227] O valor de limiar predeterminado é normalmente escolhido como um valor de limiar por amostra que depende da profundidade de bit da primeira predição ou primeiro conjunto de amostras preditas. Por exemplo, se o primeiro valor de amostra de predição obtido usando uma interpolação bilinear (2-derivações) for restringido a estar na profundidade de bit b, o limiar por amostra é calculado para ser k * 2(b - 10), e o número de amostras para as quais o custo de correspondência é calculado é N, então o valor de limiar predeterminado contra o qual o custo de correspondência para o sub-bloco atual é comparado deve ser k * N * 2(10-b). Os valores de amostra para k são 2 (para uma profundidade de bit de 10), N é 8x16 = 128 e b é 8. Uma vez que o custo de correspondência em um determinado par de MVs candidatos pode ser calculado com um conjunto decimado das primeiras amostras preditas, o valor de N deve ser usado em conformidade. Por exemplo, se linhas alternadas de um bloco de 8x16 de amostras preditas forem usadas, N deve ser calculado como 8x8 = 64.
[00228] De acordo com as modalidades da invenção, um método de término antecipado é fornecido a fim de ignorar condicionalmente uma aplicação do processo de refinamento de fluxo ótico, a aplicação do processo de refinamento de fluxo ótico é considerada computacionalmente intensiva. Como resultado, o tempo médio de decodificação é reduzido.
[00229] Além disso, a condição para ignorar condicionalmente a aplicação do fluxo ótico é determinada com base em parâmetros que são calculados por outro processo (calcular os custos de correspondência no curso de um processo de refinamento de vetor de movimento). Uma vez que os valores já calculados são usados, nenhum cálculo adicional precisa ser realizado.
[00230] Em particular, é fornecido um método de codificação de vídeo implementado em um dispositivo de decodificação ou um dispositivo de codificação, conforme ilustrado na Figura 10. O método compreende os seguintes passos que podem ser realizados na ordem dada. Um vetor de movimento inicial é obtido para um bloco atual 1210. O bloco atual pode ser um bloco de codificação atual. As primeiras predições para um valor de amostra no bloco atual são obtidas com base nos vetores de movimento iniciais 1220. Um custo de correspondência é calculado de acordo com as primeiras predições 1230.
[00231] Após o primeiro custo de correspondência ser obtido, é determinado se um processo de refinamento de fluxo ótico deve ser realizado ou não 1240, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o custo de correspondência calculado (por exemplo, em termos de medida de similaridade; consulte a descrição acima) é igual ou maior do que um limiar predefinido. Um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual é realizado 1250, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado. Quando é determinado que o processo de refinamento de fluxo ótico não deve ser realizado, os custos computacionais podem ser salvos ignorando o processo de refinamento de fluxo ótico.
[00232] Este método pode ser implementado nos aparelhos descritos acima com referência às Figuras 1a a 5.
[00233] Em particular, o método pode ser implementado no contexto de um processo de refinamento de vetor de movimento de lado de decodificador. As entradas de tal processo são: uma localização de luma (xsb, YSB) especificando a amostra superior esquerda do sub-bloco de codificação atual em relação à amostra de luma superior esquerda da imagem atual; uma variável sbWidth especificando a largura do sub-
bloco de codificação atual em amostras de luma; uma variável sbHeight especificando a altura do sub- bloco de codificação atual em amostras de luma; os vetores de movimento de luma em 1/16 de precisão de amostra fracionária mvL0 e mvL1; as matrizes de amostras de imagem de referência de luma selecionadas refPicL0L e refPicL1L.
[00234] As saídas deste processo são: os vetores de movimento de luma de delta dMvL0 e dMvL e uma variável dmvrSad especificando a soma mínima das diferenças absolutas das primeiras predições (consulte cálculo de SAD descrito acima).
[00235] O vetor de movimento de luma de delta dMvL0 pode ser derivado por dMvL0 [0] + = 16 * intOffX e dMvL0 [1] + = 16 * intOffY, onde intOffX e intOffY são os deslocamentos de amostra inteiros na direção x e y, respectivamente. Além disso, o vetor de movimento de luma de delta dMvL pode ser calculado como dMvL1 [0] = −dMvL0 [0] e dMvL1 [1] = −dMvL0
[1].
[00236] Os primeiros valores de amostra de luma de predição são derivados por interpolação bilinear de amostra fracionária. No processo de decodificação de blocos interpreditos, um processo de predição de amostra de fluxo ótico bidirecional pode ou não ser aplicado. Se não for aplicado, um processo de predição de amostra ponderada é aplicado às segundas predições refinadas obtidas com base em vetores de movimento refinados. Se o processo de predição de amostra de fluxo ótico bidirecional for aplicado, ele recebe as segundas predições obtidas com base em vetores de movimento refinados como nas predições finais de entrada e saída.
[00237] Uma bandeira pode ser usada para sinalizar se o processo de predição de amostra de fluxo ótico bidirecional pode ou não ser aplicado. Por exemplo, pode ser considerada uma condição necessária para que o processo de predição de amostra de fluxo ótico bidirecional seja realizado que a bandeira é TRUE. No entanto, esta condição necessária pode não ser uma condição suficiente para que o processo de predição de amostra de fluxo ótico bidirecional seja realizado. Uma condição suficiente pode ser que tanto a bandeira seja TRUE quanto o custo de correspondência descrito acima seja igual ou maior do que um limiar predefinido. Por exemplo, o custo de correspondência pode ser determinado com base na variável dmvrSad especificando a soma mínima das diferenças absolutas das primeiras predições.
[00238] Por outro lado, pode ser considerada uma condição suficiente para não realizar o processo de predição de amostra de fluxo ótico, mas realizar o processo de predição de amostra ponderada se a bandeira for FALSE.
[00239] Além disso, é fornecido um dispositivo 1300 para uso em um codificador de imagem e / ou um decodificador de imagem como ilustrado na Figura 11. O dispositivo 1300, de acordo com esta modalidade exemplar, compreende uma unidade de vetor de movimento inicial 1310 que é configurada para obter vetores de movimento iniciais para um bloco atual. Além disso, o dispositivo 1300 compreende uma unidade de predição 1320 que é configurada para obter primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais. Além disso, o dispositivo 1300 compreende uma unidade de cálculo de custo de correspondência 1330 que é configurada para calcular um custo de correspondência de acordo com as primeiras predições.
[00240] O dispositivo 1300 compreende uma unidade de determinação de processo de refinamento de fluxo ótico 1340 que é configurada para determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o custo de correspondência é igual ou maior que um limiar. Além disso, o dispositivo 1300 compreende uma unidade de desempenho de processo de refinamento de fluxo ótico 1350 que é configurada para realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado. Operadores matemáticos
[00241] Os operadores matemáticos usados neste pedido são semelhantes aos usados na linguagem de programação C. No entanto, os resultados das operações de divisão de inteiro e deslocamento aritmético são definidos com mais precisão, e operações adicionais são definidas, como exponenciação e divisão de valor real. As convenções de numeração e contagem geralmente começam em 0, por exemplo, "o primeiro" é equivalente ao 0-ésimo, "o segundo" é equivalente ao 1º, etc. Operadores aritméticos
[00242] Os seguintes operadores aritméticos são definidos da seguinte maneira: + Adição
Subtração (como um operador de dois - argumentos) ou negação (como um operador de prefixo unário) Multiplicação, incluindo multiplicação de * matriz Exponenciação. Especifica x elevado a y. Em S5 outros contextos, essa notação é usada para sobrescrito, não pretendendo ser interpretado como exponenciação.
Divisão de inteiro com truncamento do resultado em direção a zero. Por exemplo, 7/4 / e −7 / −4 são truncados para 1 e −7 / 4 e 7 / −4 são truncados para −1.
Usado para denotar divisão em equações ÷ matemáticas onde nenhum truncamento ou arredondamento é pretendido.
Usado para denotar divisão em equações x y matemáticas onde nenhum truncamento ou arredondamento é pretendido.
y A soma de f (i) com i levando todos os valores f( i ) i = x inteiros de x até e incluindo y.
Módulo. Restante de x dividido por y, x%y definido apenas para inteiros x e y com x > = 0 e y > 0. Operadores lógicos
[00243] Os seguintes operadores lógicos são definidos da seguinte maneira:
x && y Booleano lógico "e" de x e y x || y Booleano lógico "ou" de x e y ! Booleano lógico "não" x ? y: z Se x for TRUE ou diferente de 0, avalia o valor de y; caso contrário, avalia o valor de z. Operadores relacionais
[00244] Os seguintes operadores relacionais são definidos da seguinte maneira: > Maior que >= Maior ou igual a < Menor que <= Menor ou igual a == Igual a != Diferente de
[00245] Quando um operador relacional é aplicado a um elemento ou variável de sintaxe ao qual foi atribuído o valor "na" (não aplicável), o valor "na" é tratado como um valor distinto para o elemento ou variável de sintaxe. O valor "na" não é considerado igual a nenhum outro valor. Operadores por bit
[00246] Os seguintes operadores por bit são definidos da seguinte maneira: & "e" Por Bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. | "ou" Por Bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. ^ "ou exclusivo" Por Bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação de inteiro de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits mais significativos (MSBs) como resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento. x << y Deslocamento aritmético para a esquerda de uma representação de inteiro de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits menos significativos (LSBs) como resultado do deslocamento para a esquerda têm um valor igual a 0. Operadores de atribuição
[00247] Os seguintes operadores aritméticos são definidos da seguinte maneira: = Operador de atribuição + + Incremento, ou seja, x + + é equivalente a x = x + 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de incremento. - - Decremento, ou seja, x - - é equivalente a x = x - 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de decremento. + = Incremento pela quantidade especificada, ou seja, x + = 3 é equivalente a x = x + 3 e x + = (−3) é equivalente a x = x + (−3). - = Decremento pela quantidade especificada, ou seja, x - = 3 é equivalente a x = x – 3, e x - = (−3) é equivalente a x = x - (−3). Notação de faixa
[00248] A seguinte notação é usada para especificar uma faixa de valores: x = y..z x assume valores inteiros começando de y a z, inclusive, com x, y e z sendo números inteiros e z sendo maior que y. Funções matemáticas
[00249] As seguintes funções matemáticas são definidas: Abs (x) = T −x ; x ; x >= 0 x < 0 Asin (x) a função seno inversa trigonométrica, operando em um argumento x que está na faixa de −1,0 a 1,0, inclusive, com um valor de saída na faixa de −π ÷ 2 a π ÷ 2, inclusive, em unidades de radianos Atan (x) a função tangente inversa trigonométrica, operando em um argumento x, com um valor de saída na faixa ⎧ Atan Y x Z de −π ÷ 2 a π ÷ 2, inclusive, em unidades de radianos y ⎪ ; x > 0 ⎪ Atan Y x Z + π y ; Atan Y x Z − π x < 0 && y >= 0 ⎨ Atan2 (y, x) = y ; x < 0 && y < 0 ⎪ +2 ⎪ π − ; ⎩ x = = 0 && y >= 0 π ; de outro modo 2 Ceil (x) o menor inteiro maior ou igual a x.
Clip1Y (x) = Clip3 (0, (1 << BitDepthY) - 1, x) Clip1C (x) = Clip3 (0, (1 << BitDepthC) - 1, x) x ; z < x Clip3 (x, y, z) = y ; z > y z ; de outro modo Cos (x) a função trigonométrica cosseno operando em um argumento x em unidades de radianos.
c + d ; b − a >= d / 2 Floor (x) o maior inteiro menor ou igual a x.
GetCurrMsb (a, b, c, d) = c − d ; a−b > d / 2 c ; de outro modo Ln (x) o logaritmo natural de x (o logaritmo de base e, onde e é o logaritmo natural constante de base 2,718 281
828...). Log2 (x) o logaritmo de base 2 de x. Log10 (x) o logaritmo de base 10 de x. Min (x, y) = T y ; x x ; x <= y Max (x, y) = T y ; x > y x ; x >= y < y Round (x) = Sinal (x) * Floor (Abs (x) + 0,5) 1 ; x > 0 −1 ; Sign (x) = 0 ; x = = 0 x < 0 Sin (x) a função seno trigonométrica operando em um argumento x em unidades de radianos Sqrt (x) = √x Swap (x, y) = (y, x) Tan (x) a função tangente trigonométrica operando em um argumento x em unidades de radianos Ordem de precedência de operação
[00250] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: - As operações de precedência superior são avaliadas antes de qualquer operação de precedência inferior.
- As operações com a mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[00251] A tabela abaixo especifica a precedência das operações a partir da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[00252] Para os operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste Relatório Descritivo é a mesma usada na linguagem de programação C. Tabela: precedência de operação da mais alta (no topo da tabela) para a mais baixa (na parte inferior da tabela) operações (com operandos x, y e z) "x ++", "x −-" "!x", "−x" (como um operador de prefixo unário) xy "x * y", "x / y", "x ÷ y", " ", "x % y" "x + y", "x - y" (como um operador de dois argumentos), " y  f( i ) " i=x "x << y", "x >> y" "x < y", "x <= y", "x > y", "x > = y" "x = = y", "x ! = y" "x e y" "x | y" "x && y" "x || y" "x ? y: z" "x..y" "x = y", "x + = y", "x - = y" Descrição de texto das operações lógicas
[00253] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condição 0) declaração 0 else if (condição 1) declaração 1 ... else / * observação informativa sobre a condição restante * / declaração n pode ser descrito da seguinte maneira: ... como segue /... aplica-se o seguinte: - Se a condição 0, declaração 0 - Caso contrário, se a condição 1, declaração 1 -... - Caso contrário (observação informativa sobre a condição restante), declaração n
[00254] Cada declaração "Se... Caso contrário, se... Caso contrário,..." no texto é introduzida com "... como segue" ou "... o seguinte se aplica" imediatamente seguido por” Se...". A última condição de "Se... Caso contrário, se... Caso contrário,..." é sempre um "Caso contrário,...". As declarações intercaladas "Se... Caso contrário, se... Caso contrário,..." podem ser identificadas correspondendo “... como segue" ou "... o seguinte se aplica" com a terminação "Caso contrário,...".
[00255] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condição 0a && condição 0b) declaração 0 else if (condição 1a | | condição 1b) declaração 1 ... Else declaração n pode ser descrito da seguinte maneira: ... como segue /... aplica-se o seguinte: - Se todas as seguintes condições forem verdadeiras, declaração 0: - condição 0a - condição 0b - Caso contrário, se uma ou mais das seguintes condições forem verdadeiras, declaração 1: - condição 1a - condição 1b -... - Caso contrário, declaração n
[00256] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: if (condição 0) declaração 0 if (condição 1) declaração 1 pode ser descrito da seguinte maneira: Quando a condição 0, declaração 0 Quando a condição 1, declaração 1
[00257] Embora as modalidades da invenção tenham sido descritas principalmente com base na codificação de vídeo, deve ser notado que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e correspondentemente o sistema 10) e as outras modalidades aqui descritas também podem ser configuradas para processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como na codificação de vídeo. Em geral, apenas as unidades de interpredição 244 (codificador) e 344 (decodificador) podem não estar disponíveis no caso da codificação de processamento de imagem ser limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e do decodificador de vídeo 30 podem igualmente ser usadas para processamento de imagens estáticas, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, intrapredição 254 / 354 e / ou filtragem de loop 220, 320 e codificação de entropia 270 e decodificação de entropia 304.
[00258] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções aqui descritas, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em um meio legível por computador ou transmitidas por meio de comunicação como uma ou mais instruções ou código, e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível, como meio de armazenamento de dados ou meio de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e / ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[00259] A título de exemplo, e não limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco ótico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro- ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são direcionados para meios de armazenamento tangíveis não transitórios. Disco (disk) e disco (disc), conforme usados aqui, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados oticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo do meio legível por computador.
[00260] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador", conforme usado neste documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e / ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00261] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um handset sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware.
Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e / ou firmware adequados.

Claims (90)

REIVINDICAÇÕES
1. Método de codificação de vídeo implementado em um dispositivo de decodificação ou dispositivo de codificação, caracterizado pelo fato de que compreende: obter (1210) vetores de movimento iniciais para um bloco atual; obter (1220) primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular (1230) um primeiro custo de correspondência de acordo com as primeiras predições; determinar (1240) se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior do que um limiar; realizar (1250) um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a pelo menos uma condição predefinida compreende a condição de que o bloco atual pode ser predito por refinamento de vetor de movimento de lado de decodificador.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que é determinado que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que todas as pelo menos uma das condições predefinidas são atendidas.
4. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que as primeiras predições para o valor de amostra no bloco atual são obtidas a partir de um primeiro filtro de interpolação.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o primeiro filtro de interpolação é um filtro de interpolação bilinear.
6. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende ainda: obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência; obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados; e a realização de um processo de refinamento de fluxo ótico compreendendo realizar o refinamento de fluxo ótico com base nas segundas predições.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que a obtenção das primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais compreende: obter um número de pares de candidatos com base nos vetores de movimento iniciais; obter primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos; e em que o cálculo de um primeiro custo de correspondência de acordo com as primeiras predições compreende determinar um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições, e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
8. Método, de acordo com a reivindicação 6 ou 7, caracterizado pelo fato de que as segundas predições para o valor de amostra no bloco atual são obtidas de acordo com um segundo filtro de interpolação.
9. Método, de acordo com qualquer uma das reivindicações 6 a 8, caracterizado pelo fato de que o segundo filtro de interpolação é um filtro de interpolação de 6 derivações ou 8 derivações.
10. Método, de acordo com qualquer uma das reivindicações 6 a 9, caracterizado pelo fato de que os vetores de movimento refinados são obtidos de acordo com um segundo custo de correspondência.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que, quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar, é determinado que o processo de refinamento de fluxo ótico deve ser realizado.
12. Método, de acordo com qualquer uma das reivindicações 6 a 11, caracterizado pelo fato de que, somente quando for determinado que o processo de refinamento de fluxo ótico não deve ser realizado, a interpredição final é obtida por uma soma ponderada das segundas predições.
13. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar ou o outro valor de limiar é um valor que é computado com base na profundidade de bit das primeiras predições.
14. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar é obtido de acordo com o número de amostras preditas que são utilizadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições.
15. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar é obtido de acordo com o tamanho do bloco atual.
16. Método, de acordo com qualquer uma das reivindicações 9 a 15, caracterizado pelo fato de que o segundo custo de correspondência é um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento e um modelo predefinido para a forma do custo de correspondência próximo da posição de custo de correspondência mínimo.
17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que o modelo predefinido é um modelo de combinação linear.
18. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o primeiro custo de correspondência é uma medida de similaridade.
19. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o bloco atual é um bloco de codificação ou um sub-bloco.
20. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende ainda gerar um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
21. Codificador (20), caracterizado pelo fato de que compreende conjunto de circuitos de processamento para a realização do método conforme definido em qualquer uma das reivindicações 1 a 20.
22. Decodificador (30), caracterizado pelo fato de que compreende conjunto de circuitos de processamento para a realização do método conforme definido em qualquer uma das reivindicações 1 a 20.
23. Produto de programa de computador, caracterizado pelo fato de que compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 20.
24. Decodificador ou codificador, caracterizado pelo fato de que compreende: um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 20.
25. Dispositivo (1300) para uso em um codificador de imagem e / ou um decodificador de imagem caracterizado pelo fato de que o dispositivo compreende uma unidade de vetor de movimento inicial (1310) configurada para obter vetores de movimento iniciais para um bloco atual; uma primeira unidade de predição (1320) configurada para obter primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; uma primeira unidade de cálculo de custo de correspondência (1330) configurada para calcular um primeiro custo de correspondência de acordo com as primeiras predições; uma unidade de determinação de processo de refinamento de fluxo ótico (1340) configurada para determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior que um limiar; uma unidade de desempenho de processo de refinamento de fluxo ótico (1350) configurada para realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
26. Dispositivo, de acordo com a reivindicação 25, caracterizado pelo fato de que a pelo menos uma condição predefinida compreende a condição de que o bloco atual pode ser predito por refinamento de vetor de movimento de lado de decodificador.
27. Dispositivo, de acordo com a reivindicação 25 ou 26, caracterizado pelo fato de que a unidade de determinação de processo de refinamento de fluxo ótico é configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que todas as pelo menos uma das condições predefinidas são atendidas.
28. Dispositivo, de acordo com qualquer uma das reivindicações 24 a 27, caracterizado pelo fato de que compreende ainda um primeiro filtro de interpolação, e em que a primeira unidade de predição é configurada para obter as primeiras predições para o valor de amostra no bloco atual por meio do primeiro filtro de interpolação.
29. Dispositivo, de acordo com a reivindicação 28, caracterizado pelo fato de que o primeiro filtro de interpolação é um filtro de interpolação bilinear.
30. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 29, caracterizado pelo fato de que compreende ainda: uma unidade de vetor de movimento refinado configurada para obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência; uma segunda unidade de predição configurada para obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados; e em que a unidade de desempenho de processo de refinamento de fluxo ótico é configurada para realizar o refinamento de fluxo ótico com base nas segundas predições, quando for determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico deve ser realizado.
31. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 30, caracterizado pelo fato de que, a primeira unidade de predição é configurada para obter as primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais obtendo um número de pares de candidatos com base nos vetores de movimento iniciais e obter as primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos; e a primeira unidade de cálculo de custo de correspondência é configurada para calcular o primeiro custo de correspondência de acordo com as primeiras predições determinando um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
32. Dispositivo, de acordo com a reivindicação 30 ou 31, caracterizado pelo fato de que compreende ainda um segundo filtro de interpolação e em que a segunda unidade de predição é configurada para obter as segundas predições para o valor de amostra no bloco atual por meio do segundo filtro de interpolação.
33. Dispositivo, de acordo com a reivindicação 32, caracterizado pelo fato de que o segundo filtro de interpolação é um filtro de interpolação de 6 derivações ou 8 derivações.
34. Dispositivo, de acordo com qualquer uma das reivindicações 30 a 33, caracterizado pelo fato de que compreende ainda uma segunda unidade de cálculo de custo de correspondência configurada para calcular um segundo custo de correspondência e em que a unidade de vetor de movimento refinado é configurada para obter os vetores de movimento refinados de acordo com o segundo custo de correspondência.
35. Dispositivo, de acordo com a reivindicação 34, caracterizado pelo fato de que a unidade de determinação de processo de refinamento de fluxo ótico é configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar.
36. Dispositivo, de acordo com qualquer uma das reivindicações 30 a 35, caracterizado pelo fato de que compreende ainda uma unidade de predição de soma ponderada configurada para obter a interpredição final por uma soma ponderada das segundas predições apenas quando é determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico não deve ser realizado.
37. Dispositivo, de acordo com qualquer uma das reivindicações 30 a 36, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o valor de limiar ou o outro limiar com base na profundidade de bit das primeiras predições.
38. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 37, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o número de amostras preditas que são usadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições pela primeira unidade de cálculo de custo de correspondência.
39. Dispositivo, de acordo com qualquer uma das reivindicações 30 a 38, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o tamanho do bloco atual.
40. Dispositivo, de acordo com qualquer uma das reivindicações 30 a 39, caracterizado pelo fato de que a segunda unidade de cálculo de custo de correspondência é configurada para calcular o segundo custo de correspondência como um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento realizado pela unidade de vetor de movimento refinado e um modelo predefinido para a forma do custo de correspondência próximo à posição de custo de correspondência mínimo.
41. Dispositivo, de acordo com a reivindicação 40, caracterizado pelo fato de que o modelo predefinido é um modelo de combinação linear.
42. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 41, caracterizado pelo fato de que o primeiro custo de correspondência é uma medida de similaridade.
43. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 42, caracterizado pelo fato de que o bloco atual é um bloco de codificação ou um sub-bloco.
44. Dispositivo, de acordo com qualquer uma das reivindicações 25 a 43, caracterizado pelo fato de que compreende ainda uma unidade de geração de bloco de interpredição configurada para gerar um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
45. Método de codificação de vídeo implementado em um dispositivo de decodificação ou dispositivo de codificação, caracterizado pelo fato de que compreende: obter (1210) vetores de movimento iniciais para um bloco atual; obter (1220) primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular (1230) um primeiro custo de correspondência de acordo com as primeiras predições;
determinar (1240) se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é menor que um limiar; realizar (1250) um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
46. Método, de acordo com a reivindicação 45, caracterizado pelo fato de que a pelo menos uma condição predefinida compreende a condição de que o bloco atual pode ser predito por refinamento de vetor de movimento de lado de decodificador.
47. Método, de acordo com a reivindicação 45 ou 46, caracterizado pelo fato de que é determinado que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que o primeiro custo de correspondência calculado não é menor que um limiar.
48. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que as primeiras predições para o valor de amostra no bloco atual são obtidas com base em um primeiro filtro de interpolação.
49. Método, de acordo com a reivindicação 48, caracterizado pelo fato de que o primeiro filtro de interpolação é um filtro de interpolação bilinear.
50. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende ainda: obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência;
obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados; e a realização de um processo de refinamento de fluxo ótico compreendendo realizar o refinamento de fluxo ótico com base nas segundas predições.
51. Método, de acordo com qualquer uma das reivindicações 45 a 50, caracterizado pelo fato de que a obtenção das primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais compreende: obter um número de pares de candidatos com base nos vetores de movimento iniciais; obter primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos; e em que o cálculo de um primeiro custo de correspondência de acordo com as primeiras predições compreende determinar um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições, e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
52. Método, de acordo com a reivindicação 50 ou 51, caracterizado pelo fato de que as segundas predições para o valor de amostra no bloco atual são obtidas de acordo com um segundo filtro de interpolação.
53. Método, de acordo com qualquer uma das reivindicações 50 a 52, caracterizado pelo fato de que o segundo filtro de interpolação é um filtro de interpolação de 6 derivações ou 8 derivações.
54. Método, de acordo com qualquer uma das reivindicações 50 a 53, caracterizado pelo fato de que os vetores de movimento refinados são obtidos de acordo com um segundo custo de correspondência.
55. Método, de acordo com a reivindicação 54, caracterizado pelo fato de que, quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar, é determinado que o processo de refinamento de fluxo ótico deve ser realizado.
56. Método, de acordo com qualquer uma das reivindicações 50 a 55, caracterizado pelo fato de que, apenas quando for determinado que o processo de refinamento de fluxo ótico não deve ser realizado, a interpredição final é obtida por uma soma ponderada das segundas predições.
57. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar ou o outro valor de limiar é um valor que é computado com base na profundidade de bit das primeiras predições.
58. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar é obtido de acordo com o número de amostras preditas que são utilizadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições.
59. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o valor de limiar é obtido de acordo com o tamanho do bloco atual.
60. Método, de acordo com qualquer uma das reivindicações 54 a 59, caracterizado pelo fato de que o segundo custo de correspondência é um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento e um modelo predefinido para a forma do custo de correspondência próximo da posição de custo de correspondência mínimo.
61. Método, de acordo com a reivindicação 60, caracterizado pelo fato de que o modelo predefinido é um modelo de combinação linear.
62. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o primeiro custo de correspondência é uma medida de similaridade.
63. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o bloco atual é um bloco de codificação ou um sub-bloco.
64. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende ainda gerar um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
65. Codificador (20) caracterizado pelo fato de que compreende conjunto de circuitos de processamento para realizar o método de acordo com qualquer uma das reivindicações 44 a 64.
66. Decodificador (30) caracterizado pelo fato de que compreende conjunto de circuitos de processamento para realizar o método de acordo com qualquer uma das reivindicações 44 a 64.
67. Produto de programa de computador caracterizado pelo fato de que compreende um código de programa para realizar o método de acordo com qualquer uma das reivindicações 44 a
64.
68. Decodificador ou codificador caracterizado pelo fato de que compreende:
um ou mais processadores; e um meio de armazenamento legível por computador não transitório acoplado aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer uma das reivindicações 44 a 64.
69. Dispositivo (1300) para uso em um codificador de imagem e / ou um decodificador de imagem caracterizado pelo fato de que o dispositivo compreende uma unidade de vetor de movimento inicial (1310) configurada para obter vetores de movimento iniciais para um bloco atual; uma primeira unidade de predição (1320) configurada para obter primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; uma primeira unidade de cálculo de custo de correspondência (1330) configurada para calcular um primeiro custo de correspondência de acordo com as primeiras predições; uma unidade de determinação de processo de refinamento de fluxo ótico (1340) configurada para determinar se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior que um limiar; uma unidade de desempenho de processo de refinamento de fluxo ótico (1350) configurada para realizar um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
70. Dispositivo, de acordo com a reivindicação 69, caracterizado pelo fato de que a pelo menos uma condição predefinida compreende a condição de que o bloco atual pode ser predito por refinamento de vetor de movimento de lado de decodificador.
71. Dispositivo, de acordo com a reivindicação 69 ou 70, caracterizado pelo fato de que a unidade de determinação de processo de refinamento de fluxo ótico é configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado, quando for determinado que todas as pelo menos uma das condições predefinidas são atendidas.
72. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 71, caracterizado pelo fato de que compreende ainda um primeiro filtro de interpolação e em que a primeira unidade de predição é configurada para obter as primeiras predições para o valor de amostra no bloco atual por meio do primeiro filtro de interpolação.
73. Dispositivo, de acordo com a reivindicação 72, caracterizado pelo fato de que o primeiro filtro de interpolação é um filtro de interpolação bilinear.
74. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 73, caracterizado pelo fato de que compreende ainda: uma unidade de vetor de movimento refinado configurada para obter vetores de movimento refinados com base nos vetores de movimento iniciais e no primeiro custo de correspondência;
uma segunda unidade de predição configurada para obter segundas predições para o valor de amostra no bloco atual de acordo com os vetores de movimento refinados; e em que a unidade de desempenho de processo de refinamento de fluxo ótico é configurada para realizar o refinamento de fluxo ótico com base nas segundas predições, quando for determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico deve ser realizado.
75. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 74, caracterizado pelo fato de que a primeira unidade de predição é configurada para obter as primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais obtendo um número de pares de candidatos com base nos vetores de movimento iniciais e obter as primeiras predições para um valor de amostra no bloco atual com base em pelo menos um dos pares de candidatos; e a primeira unidade de cálculo de custo de correspondência é configurada para calcular o primeiro custo de correspondência de acordo com as primeiras predições determinando um custo de correspondência para cada um dos pares de candidatos com base nas primeiras predições e determinar o menor custo de correspondência dos custos de correspondência determinados como o primeiro custo de correspondência.
76. Dispositivo, de acordo com a reivindicação 74 ou 75, caracterizado pelo fato de que compreende ainda um segundo filtro de interpolação e em que a segunda unidade de predição é configurada para obter as segundas predições para o valor de amostra no bloco atual por meio do segundo filtro de interpolação.
77. Dispositivo, de acordo com a reivindicação 76, caracterizado pelo fato de que o segundo filtro de interpolação é um filtro de interpolação de 6 derivações ou 8 derivações.
78. Dispositivo, de acordo com qualquer uma das reivindicações 74 a 77, caracterizado pelo fato de que compreende ainda uma segunda unidade de cálculo de custo de correspondência configurada para calcular um segundo custo de correspondência e em que a unidade de vetor de movimento refinado é configurada para obter os vetores de movimento refinados de acordo com o segundo custo de correspondência.
79. Dispositivo, de acordo com a reivindicação 78, caracterizado pelo fato de que a unidade de determinação de processo de refinamento de fluxo ótico é configurada para determinar que o processo de refinamento de fluxo ótico deve ser realizado quando um valor do segundo custo de correspondência é maior ou igual a outro valor de limiar.
80. Dispositivo, de acordo com qualquer uma das reivindicações 74 a 79, caracterizado pelo fato de que compreende ainda uma unidade de predição de soma ponderada configurada para obter a interpredição final por uma soma ponderada das segundas predições apenas quando é determinado pela unidade de determinação de processo de refinamento de fluxo ótico que o processo de refinamento de fluxo ótico não deve ser realizado.
81. Dispositivo, de acordo com qualquer uma das reivindicações 74 a 80, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o valor de limiar ou o outro limiar com base na profundidade de bit das primeiras predições.
82. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 81, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o número de amostras preditas que são usadas para calcular o primeiro custo de correspondência de acordo com as primeiras predições pela primeira unidade de cálculo de custo de correspondência.
83. Dispositivo, de acordo com qualquer uma das reivindicações 74 a 82, caracterizado pelo fato de que compreende ainda uma unidade de cálculo de limiar configurada para calcular o limiar de acordo com o tamanho do bloco atual.
84. Dispositivo, de acordo com qualquer uma das reivindicações 74 a 83, caracterizado pelo fato de que a segunda unidade de cálculo de custo de correspondência é configurada para calcular o segundo custo de correspondência como um custo derivado obtido usando custos de correspondência avaliados durante o refinamento de vetor de movimento realizado pela unidade de vetor de movimento refinado e um modelo predefinido para a forma do custo de correspondência próximo à posição de custo de correspondência mínimo.
85. Dispositivo, de acordo com a reivindicação 84, caracterizado pelo fato de que o modelo predefinido é um modelo de combinação linear.
86. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 85, caracterizado pelo fato de que o primeiro custo de correspondência é uma medida de similaridade.
87. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 86, caracterizado pelo fato de que o bloco atual é um bloco de codificação ou um sub-bloco.
88. Dispositivo, de acordo com qualquer uma das reivindicações 69 a 87, caracterizado pelo fato de que compreende ainda uma unidade de geração de bloco de interpredição configurada para gerar um bloco de interpredição compreendendo a interpredição final para o valor de amostra no bloco atual.
89. Meio legível por computador não transitório para armazenar sequência de bits de um vídeo, caracterizado pelo fato de que compreende: uma sequência de bits armazenada no meio legível por computador não transitório, a sequência de bits compreendendo uma sequência codificada de quadros de um vídeo, em que a sequência de quadros é codificada na sequência de bits com base em uma pluralidade de operações compreendendo: obter (1210) vetores de movimento iniciais para um bloco atual; obter (1220) primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular (1230) um primeiro custo de correspondência de acordo com as primeiras predições; determinar (1240) se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior do que um limiar; realizar (1250) um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
90. Sequência de bits de um vídeo, caracterizada pelo fato de que compreende: uma sequência codificada de quadros de um vídeo, em que a sequência de quadros é codificada para a sequência de bits com base em uma pluralidade de operações compreendendo: obter (1210) vetores de movimento iniciais para um bloco atual; obter (1220) primeiras predições para um valor de amostra no bloco atual com base nos vetores de movimento iniciais; calcular (1230) um primeiro custo de correspondência de acordo com as primeiras predições; determinar (1240) se um processo de refinamento de fluxo ótico deve ser realizado ou não, de acordo com pelo menos uma condição predefinida, a pelo menos uma condição predefinida compreendendo uma condição de se o primeiro custo de correspondência calculado é igual ou maior do que um limiar; realizar (1250) um processo de refinamento de fluxo ótico para obter uma interpredição final para o valor de amostra no bloco atual, quando for determinado que o processo de refinamento de fluxo ótico deve ser realizado.
BR112021016270-4A 2019-02-22 2020-02-21 Método de codificação de vídeo e codificador, decodificador, meio legível por computador BR112021016270A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN201931007114 2019-02-22
IN201931007114 2019-02-22
PCT/CN2020/076178 WO2020169083A1 (en) 2019-02-22 2020-02-21 Early termination for optical flow refinement

Publications (1)

Publication Number Publication Date
BR112021016270A2 true BR112021016270A2 (pt) 2021-10-13

Family

ID=72144773

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021016270-4A BR112021016270A2 (pt) 2019-02-22 2020-02-21 Método de codificação de vídeo e codificador, decodificador, meio legível por computador

Country Status (18)

Country Link
US (1) US11985320B2 (pt)
EP (2) EP3912352B1 (pt)
JP (1) JP7271697B2 (pt)
KR (2) KR20240000638A (pt)
CN (3) CN118200560A (pt)
AU (1) AU2020226553A1 (pt)
BR (1) BR112021016270A2 (pt)
CA (1) CA3128112A1 (pt)
DK (1) DK3912352T3 (pt)
ES (1) ES2965083T3 (pt)
FI (1) FI3912352T3 (pt)
HU (1) HUE063469T2 (pt)
MX (1) MX2021009931A (pt)
PL (1) PL3912352T3 (pt)
PT (1) PT3912352T (pt)
SG (1) SG11202107970QA (pt)
WO (1) WO2020169083A1 (pt)
ZA (1) ZA202106944B (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118200560A (zh) 2019-02-22 2024-06-14 华为技术有限公司 光流修正的提前终止
WO2023277755A1 (en) * 2021-06-30 2023-01-05 Telefonaktiebolaget Lm Ericsson (Publ) Selective subblock-based motion refinement
CN117546466A (zh) * 2021-06-30 2024-02-09 瑞典爱立信有限公司 重叠解码器侧运动细化
WO2023028965A1 (en) * 2021-09-02 2023-03-09 Nvidia Corporation Hardware codec accelerators for high-performance video encoding
US20230186487A1 (en) * 2021-12-13 2023-06-15 Qualcomm Incorporated Vectorized bilinear shift for replacing grid sampling in optical flow estimation
TW202408242A (zh) * 2022-04-06 2024-02-16 聯發科技股份有限公司 隱式多通道解碼器端運動向量細化

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040076333A1 (en) * 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
US9350631B2 (en) 2013-09-30 2016-05-24 Broadcom Corporation Identifying flows causing undesirable network events
US9705808B2 (en) 2014-03-21 2017-07-11 Cisco Technology, Inc. Flow aware buffer management for data center switches
US10127644B2 (en) * 2015-04-10 2018-11-13 Apple Inc. Generating synthetic video frames using optical flow
WO2017034089A1 (ko) 2015-08-23 2017-03-02 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
MX2018002477A (es) * 2015-09-02 2018-06-15 Mediatek Inc Metodo y aparato de derivacion de movimiento de lado de decodificador para codificacion de video.
WO2017036399A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques
EP3398331A4 (en) * 2016-02-05 2019-04-10 Mediatek Inc. METHOD AND APPARATUS FOR MOTION COMPENSATION BASED ON BIDIRECTIONAL OPTICAL FLUSH TECHNOLOGIES FOR VIDEO CODING
US10084716B2 (en) 2016-03-20 2018-09-25 Mellanox Technologies Tlv Ltd. Flexible application of congestion control measures
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
WO2018173895A1 (ja) * 2017-03-21 2018-09-27 シャープ株式会社 予測画像生成装置、動画像復号装置、および動画像符号化装置
WO2019001741A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
JP7168593B2 (ja) * 2017-07-03 2022-11-09 ヴィド スケール インコーポレイテッド 双方向オプティカルフローに基づいた動き補償予測
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
CN113170171B (zh) * 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
CN118200560A (zh) 2019-02-22 2024-06-14 华为技术有限公司 光流修正的提前终止

Also Published As

Publication number Publication date
EP3912352A1 (en) 2021-11-24
ZA202106944B (en) 2022-09-28
MX2021009931A (es) 2021-09-21
CN113383550A (zh) 2021-09-10
PL3912352T3 (pl) 2024-02-26
KR20210113384A (ko) 2021-09-15
JP2022521748A (ja) 2022-04-12
HUE063469T2 (hu) 2024-01-28
EP3912352B1 (en) 2023-09-06
FI3912352T3 (fi) 2023-11-30
PT3912352T (pt) 2023-11-21
CN114845102A (zh) 2022-08-02
WO2020169083A1 (en) 2020-08-27
EP4243418A3 (en) 2023-10-25
ES2965083T3 (es) 2024-04-10
SG11202107970QA (en) 2021-08-30
KR102616714B1 (ko) 2023-12-20
JP7271697B2 (ja) 2023-05-11
EP3912352A4 (en) 2022-04-20
EP4243418A2 (en) 2023-09-13
JP2023099561A (ja) 2023-07-13
US11985320B2 (en) 2024-05-14
AU2020226553A1 (en) 2021-08-19
CN114845102B (zh) 2023-07-07
DK3912352T3 (da) 2023-11-20
US20210392334A1 (en) 2021-12-16
CN118200560A (zh) 2024-06-14
KR20240000638A (ko) 2024-01-02
CA3128112A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
BR112021000935A2 (pt) codificador, decodificador e métodos correspondentes usando buffer dedicado de ibc e atualização de valor padrão para componente luma e croma
BR112021016270A2 (pt) Método de codificação de vídeo e codificador, decodificador, meio legível por computador
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
WO2020177696A1 (en) Use of extended samples during search in decoder-side motion refinement
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021016560A2 (pt) Método e aparelho para predição intra usando modelo linear
US11889109B2 (en) Optical flow based video inter prediction
US20220116624A1 (en) Device and method for computing position of integer grid reference sample for block level boundary sample gradient computation
BR122023020161A2 (pt) Processo de codificação para modo de partição geométrica
BR112021009922A2 (pt) Método de construir uma lista de mesclagens candidata para modo de cópia de intrabloco, codificador, decodificador, produto de programa de computador e dispositivo de decodificação de dados de vídeo
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
BR112021011723A2 (pt) Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits
CN113615194A (zh) 使用抽取预测块的dmvr
BR112021013565A2 (pt) Codificador, decodificador, meio legível por computador não transitório e método de codificação de vídeo de um bloco de uma imagem
BR112021007509A2 (pt) lista de mesclagem separada para candidatos de mesclagem de sub-bloco e harmonização de técnicas intra-inter para codificação de vídeo
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
BR112021011307A2 (pt) Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes