BR112021011307A2 - Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória - Google Patents

Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória Download PDF

Info

Publication number
BR112021011307A2
BR112021011307A2 BR112021011307-0A BR112021011307A BR112021011307A2 BR 112021011307 A2 BR112021011307 A2 BR 112021011307A2 BR 112021011307 A BR112021011307 A BR 112021011307A BR 112021011307 A2 BR112021011307 A2 BR 112021011307A2
Authority
BR
Brazil
Prior art keywords
block
image
prediction
height
width
Prior art date
Application number
BR112021011307-0A
Other languages
English (en)
Inventor
Huanbang Chen
Haitao Yang
Jianle Chen
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.
Priority claimed from PCT/CN2019/122735 external-priority patent/WO2020119525A1/zh
Publication of BR112021011307A2 publication Critical patent/BR112021011307A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória. este pedido revela um método e aparelho de predição inter. o método inclui: determinar uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; realizar separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem. o aparelho inclui um módulo de determinação, um módulo de predição, e um módulo de combinação. neste pedido, complexidade de implementação de predição inter pode ser reduzida, e eficácia de processamento pode ser melhorada.

Description

“MÉTODO E APARELHO DE PREDIÇÃO INTER, FLUXO DE BITS E MÍDIA DE ARMAZENAMENTO NÃO TRANSITÓRIA”
[0001] Este pedido reivindica prioridade ao Pedido de Patente Chinês No. 201811530481.1, depositado em 13 de dezembro de 2018 e intitulado “VIDEO ENCODER, VIDEO DECODER, AND CORRESPONDING METHOD”, o qual é integralmente incorporado neste documento à título de referência em sua totalidade. Além disso, este pedido reivindica prioridade ao Pedido de Patente Chinês No. 201910325612.0, depositado em 22 de abril de 2019 e intitulado “INTER PREDICTION METHOD AND APPARATUS”, o qual é integralmente incorporado neste documento à título de referência em sua totalidade.
CAMPO TÉCNICO
[0002] Este pedido refere-se ao campo de codificação e decodificação de vídeo e, em particular, a um método e aparelho predição inter.
FUNDAMENTOS
[0003] A predição inter é implementar a compressão de imagem por meio do uso de uma correlação entre quadros de imagem de vídeo, isto é, uma correlação de tempo, e é amplamente aplicada à codificação ou decodificação de compressão em cenários, tais como uma televisão comum, uma televisão de videoconferência, um telefone de vídeo e uma televisão de alta definição.
Uma imagem é processada através de predição inter tanto em um lado de decodificador quanto em um lado de decodificador.
[0004] Quando a predição inter é realizada em uma imagem, a imagem é dividida primeiro em uma pluralidade de blocos de imagem com base nas alturas e larguras dos blocos de imagem correspondentes à imagem e, em seguida, a predição inter é realizada em cada bloco de imagem obtido através de divisão. Quando as larguras e as alturas dos blocos de imagem correspondentes à imagem são relativamente grandes, uma área de cada bloco de imagem obtido através de divisão é relativamente grande.
Consequentemente, quando a predição inter é realizada em cada bloco de imagem obtido através de divisão, a complexidade de implementação da predição inter é relativamente alta.
SUMÁRIO
[0005] As modalidades deste pedido fornecem um método e aparelho de predição inter, para reduzir a complexidade de implementação da predição inter e melhorar a eficácia do processamento.
[0006] De acordo com um primeiro aspecto, este pedido fornece um método de predição inter. No método, uma pluralidade de primeiros blocos de imagem é determinada em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado. Predição de fluxo óptico bidirecional é realizada separadamente na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem. Um preditor do bloco de imagem a ser processado é obtido com a combinação dos preditores da pluralidade dos primeiros blocos de imagem. A pluralidade de primeiros blocos de imagem é determinada no bloco de imagem a ser processado com base na largura de divisão de imagem pré-ajustada, na altura de divisão de imagem pré-ajustada e na largura e na altura do bloco de imagem a ser processado. Portanto, um tamanho do primeiro bloco de imagem é restringido pela largura de divisão de imagem pré-ajustada e pela altura de divisão de imagem pré-ajustada e uma área de cada primeiro bloco de imagem determinado não é muito grande, de modo que menos recursos de hardware, tais como recursos de memória podem ser consumidos, reduzindo, desse modo, a complexidade de implementação da predição inter e melhorando a eficácia do processamento.
[0007] Em uma implementação possível, a largura e a altura do bloco de imagem a ser processado são, respectivamente, iguais a uma largura e uma altura do primeiro bloco de imagem, isto é, o bloco de imagem a ser processado inclui apenas um primeiro bloco de imagem. Correspondentemente, quando o bloco de imagem a ser processado é determinado como o primeiro bloco de imagem com base na largura de divisão de imagem pré-ajustada, na altura de divisão de imagem pré-ajustada e na largura e na altura do bloco de imagem a ser processado, predição de fluxo óptico bidirecional é realizada no bloco de imagem a ser processado que é usado como uma unidade de processamento, para obter o preditor do bloco de imagem a ser processado.
[0008] Em uma implementação possível, a largura de divisão de imagem pré-ajustada é comparada à largura do bloco de imagem a ser processado para determinar larguras do primeiro bloco de imagem. A altura de divisão de imagem pré-ajustada é comparada à altura do bloco de imagem a ser processado para determinar alturas do primeiro bloco de imagem. A pluralidade de primeiros blocos de imagem é determinada no bloco de imagem a ser processado com base nas larguras e nas alturas do primeiro bloco de imagem. Desta maneira, a largura do primeiro bloco de imagem é restringida pela largura de divisão de imagem pré-ajustada, a altura do primeiro bloco de imagem é restringida pela altura de divisão de imagem pré-ajustada e uma área de cada primeiro bloco de imagem determinado não é muito grande, de modo que menos recursos de hardware, tais como recursos de memória, possam ser consumidos, reduzindo, desse modo, a complexidade de implementação da predição inter e melhorando a eficácia do processamento.
[0009] Em uma implementação possível, a largura do primeiro bloco de imagem é um valor menor na largura de divisão de imagem pré-ajustada e na largura do bloco de imagem a ser processado e a altura do primeiro bloco de imagem é um valor menor na altura de divisão de imagem pré-ajustada e na altura do bloco de imagem a ser processado. Portanto, uma área de um primeiro bloco de imagem determinado pode ser reduzida, a complexidade de implementação de predição inter pode ser reduzida ao máximo e a eficácia do processamento pode ser melhorada.
[0010] Em uma implementação possível, um primeiro bloco de predição do primeiro bloco de imagem é obtido com base nas informações de movimento do bloco de imagem a ser processado. Uma operação de gradiente é realizada no primeiro bloco de predição para obter uma primeira matriz de gradiente do primeiro bloco de imagem. Um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem é calculado com base no primeiro bloco de predição e na primeira matriz de gradiente. O preditor do primeiro bloco de imagem é obtido com base no valor de refinamento de informações de movimento de cada unidade de processamento básico. Pelo fato de que o preditor do primeiro bloco de imagem é obtido com base no valor de refinamento de informações de movimento de cada unidade de processamento básico, o preditor do primeiro bloco de imagem pode ser mais preciso.
[0011] Em uma implementação possível, a primeira expansão é realizada em uma largura e uma altura do primeiro bloco de predição com base em um valor de amostra de uma localização de extremidade de bloco do primeiro bloco de predição, de modo que uma largura e uma altura de um primeiro bloco de predição obtido depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e/ou a primeira expansão é realizada em uma largura e uma altura da primeira matriz de gradiente com base em um gradiente de uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem. Correspondentemente, o valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem é calculado com base no primeiro bloco de predição obtido depois da primeira expansão e/ou na primeira matriz de gradiente obtida depois da primeira expansão. A primeira expansão é realizada na largura e na altura do primeiro bloco de predição, de modo que a largura e a altura do primeiro bloco de predição obtido depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem. Desta maneira, quando a predição bidirecional é realizada em um bloco de imagem em uma imagem de referência para obter um primeiro bloco de predição, um tamanho do primeiro bloco de predição obtido pode ser reduzido e, correspondentemente, um tamanho do bloco de imagem também é reduzido, de modo a reduzir uma quantidade de dados para a predição bidirecional, consumindo, desse modo, menos recursos de hardware.
[0012] Em uma implementação possível, a filtragem de interpolação é realizada nos valores de amostra de uma região de extremidade de bloco do primeiro bloco de predição ou o valor de amostra da localização de extremidade de bloco do primeiro bloco de predição é replicado, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição.
Correspondentemente, uma operação de gradiente é realizada em um primeiro bloco de predição obtido depois da segunda expansão. O valor de amostra da localização de extremidade de bloco do primeiro bloco de predição é replicado, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição. Portanto, uma implementação é simples e a complexidade da operação é baixa.
[0013] Em uma implementação possível, o primeiro bloco de predição inclui um bloco de predição forward e um bloco de predição backward e, a primeira matriz de gradiente inclui uma matriz de gradiente horizontal posterior, uma matriz de gradiente vertical posterior, uma matriz de gradiente horizontal anterior e uma matriz de gradiente vertical anterior.
[0014] Em uma implementação possível, a largura de divisão de imagem pré-ajustada é 64, 32 ou 16, e a altura de divisão de imagem pré- ajustada é 64, 32 ou 16. Desta maneira, um tamanho do primeiro bloco de imagem determinado pode ser reduzido sob restrições da largura de divisão de imagem pré-ajustada e da altura de divisão de imagem pré-ajustada.
[0015] Em uma implementação possível, a unidade de processamento básico é uma matriz de amostra 4x4.
[0016] De acordo com um segundo aspecto, este pedido fornece um aparelho de predição inter, incluindo um módulo de determinação, um módulo de predição e um módulo de combinação. O módulo de determinação determina uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado. O módulo de predição realiza separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem. O módulo de combinação obtém um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem. O módulo de determinação determina a pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base na largura de divisão de imagem pré-ajustada, na altura de divisão de imagem pré-ajustada e na largura e a altura do bloco de imagem a ser processado.
Portanto, um tamanho do primeiro bloco de imagem é restringido pela largura de divisão de imagem pré-ajustada e pela altura de divisão de imagem pré- ajustada, e uma área de cada primeiro bloco de imagem determinado não é muito grande, de modo que menos recursos de hardware, tais como recursos de memória podem ser consumidos, a complexidade de implementação de predição inter pode ser reduzida e a eficácia do processamento pode ser melhorada.
[0017] Em uma implementação possível, o módulo de determinação, o módulo de predição e o módulo de combinação, podem ser configurados adicionalmente para realizar as operações do método em qualquer implementação possível do primeiro aspecto. Os detalhes não são descritos neste relatório novamente.
[0018] De acordo com um terceiro aspecto, uma modalidade deste pedido fornece um aparelho de predição inter. O aparelho inclui um processador e uma memória, e o processador é conectado à memória. A memória armazena um ou mais programas, um ou mais programas são executados pelo processador e um ou mais programas incluem uma instrução para realizar o método no primeiro aspecto ou qualquer implementação possível do primeiro aspecto.
[0019] De acordo com um quarto aspecto, este pedido fornece uma mídia de armazenamento legível por computador não volátil, configurada para armazenar um programa de computador. O programa de computador é carregado por um processador para executar uma instrução para o método no primeiro aspecto ou qualquer implementação possível do primeiro aspecto.
[0020] De acordo com um quinto aspecto, este pedido fornece um chip. O chip inclui um circuito lógico programável e/ou uma instrução de programa. Quando o chip é executado, o método no primeiro aspecto ou qualquer implementação possível do primeiro aspecto é implementado.
[0021] De acordo com um sexto aspecto, uma modalidade deste pedido fornece um método de predição inter, incluindo: obter informações de movimento de um bloco de imagem a ser processado, onde o bloco de imagem a ser processado inclui uma pluralidade de unidades de dados de tubulação virtuais e a unidade de dados de tubulação virtual inclui pelo menos uma unidade de processamento básico; obter uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento; calcular uma matriz de gradiente de predição horizontal e uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor; e calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical.
[0022] Em uma implementação viável do sexto aspecto, a obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento inclui: obter uma matriz de predição inicial de cada unidade de dados de tubulação virtual com base nas informações de movimento, onde um tamanho da matriz de predição inicial é igual a um tamanho da unidade de dados de tubulação virtual; e usar a matriz de predição inicial como a matriz de preditor.
[0023] Em uma implementação viável do sexto aspecto, depois da obtenção de uma matriz de predição inicial de cada unidade de dados de tubulação virtual, o método inclui adicionalmente: realizar a expansão da amostra em uma extremidade da matriz de predição inicial para obter uma matriz de predição expandida, onde um tamanho da matriz de predição expandida é maior que o tamanho da matriz de predição inicial; e, correspondentemente, o uso da matriz de predição inicial como a matriz de preditor inclui: usar a matriz de predição expandida como a matriz de preditor.
[0024] Em uma implementação viável do sexto aspecto, a realização da expansão da amostra em uma extremidade da matriz de predição inicial inclui: obter um valor de amostra de uma amostra fora da matriz de predição inicial com base em uma interpolação de um valor de amostra de um amostra na matriz de predição inicial; ou usar um valor de amostra de uma amostra na extremidade da matriz de predição inicial como um valor de amostra de uma amostra que está fora da matriz de predição inicial e que é vizinha da extremidade.
[0025] Em uma implementação viável do sexto aspecto, a unidade de dados de tubulação virtual inclui uma pluralidade de unidades de compensação de movimento e a obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento inclui: obter uma matriz de valor de compensação de cada unidade de compensação de movimento com base nas informações de movimento; e combinar as matrizes de valor de compensação da pluralidade de unidades de compensação de movimento para obter a matriz de preditor.
[0026] Em uma implementação viável do sexto aspecto, o cálculo de uma matriz de gradiente de predição horizontal e uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor inclui: realizar, separadamente, o cálculo de gradiente horizontal e o cálculo de gradiente vertical na matriz de preditor para obter a matriz de gradiente de predição horizontal e a matriz de gradiente de predição vertical.
[0027] Em uma implementação viável do sexto aspecto, antes de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal, e na matriz de gradiente de predição vertical, o método inclui adicionalmente: realizar a expansão da amostra em uma extremidade da matriz de preditor para obter uma matriz de predição de preenchimento, onde a matriz de predição de preenchimento tem um tamanho pré-ajustado; e realizar separadamente a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical para obter uma matriz de gradiente horizontal de preenchimento e uma matriz de gradiente vertical de preenchimento, onde a matriz de gradiente horizontal de preenchimento e a matriz de gradiente vertical de preenchimento têm o tamanho pré-ajustado; e, correspondentemente, o cálculo de um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical inclui: calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de predição de preenchimento, na matriz de gradiente horizontal de preenchimento e na matriz de gradiente vertical de preenchimento.
[0028] Em uma implementação viável do sexto aspecto, antes de realizar a expansão da amostra em uma extremidade da matriz de preditor, o método inclui adicionalmente: determinar que um tamanho da matriz de preditor é menor que o tamanho pré-ajustado.
[0029] Em uma implementação viável do sexto aspecto, antes de realizar a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical, o método inclui adicionalmente: determinar que um tamanho da matriz de gradiente de predição horizontal e/ou um tamanho da matriz de gradiente de predição vertical são/é menor que o tamanho pré-ajustado.
[0030] Em uma implementação viável do sexto aspecto, depois de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual, o método inclui adicionalmente: obter um preditor de cada unidade de processamento básico com base na matriz de preditor da unidade de dados de tubulação virtual e no valor de refinamento de informações de movimento de cada unidade de processamento básico na unidade de dados de tubulação virtual.
[0031] Em uma implementação viável do sexto aspecto, o método é usado para a predição bidirecional; correspondentemente, as informações de movimento incluem as primeiras informações de movimento da lista de quadros de referência e as segundas informações de movimento da lista de quadros de referência; a matriz de preditor inclui uma primeira matriz de preditor e uma segunda matriz de preditor, a primeira matriz de preditor é obtida com base nas primeiras informações de movimento da lista de quadros de referência e a segunda matriz de preditor é obtida com base nas segundas informações de movimento da lista de quadros de referência; a matriz de gradiente de predição horizontal inclui uma primeira matriz de gradiente de predição horizontal e uma segunda matriz de gradiente de predição horizontal, a primeira matriz de gradiente de predição horizontal é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição horizontal é calculada com base na segunda matriz de preditor; a matriz de gradiente de predição vertical inclui uma primeira matriz de gradiente de predição vertical e uma segunda matriz de gradiente de predição vertical, a primeira matriz de gradiente de predição vertical é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição vertical é calculada com base na segunda matriz de preditor; e o valor de refinamento de informações de movimento inclui um primeiro valor de refinamento de informações de movimento da lista de quadros de referência e um segundo valor de refinamento de informações de movimento da lista de quadros de referência, o primeiro valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na primeira matriz de preditor, na primeira matriz de gradiente de predição horizontal e na primeira matriz de gradiente de predição vertical, e o segundo valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na segunda matriz de preditor, na segunda matriz de gradiente de predição horizontal e na segunda matriz de gradiente de predição vertical.
[0032] Em uma implementação viável do sexto aspecto, antes de realizar a expansão da amostra em uma extremidade da matriz de predição inicial, o método inclui adicionalmente: determinar que uma localização de domínio de tempo de um quadro de imagem em que o bloco de imagem a ser processado está localizado, está localizada entre um primeiro quadro de referência indicado pelas primeiras informações de movimento da lista de quadros de referência e um segundo quadro de referência indicado pelas segundas informações de movimento da lista de quadros de referência.
[0033] Em uma implementação viável do sexto aspecto, depois da obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual, o método inclui adicionalmente: determinar que uma diferença entre a primeira matriz de preditor e a segunda matriz de preditor é menor que um primeiro limite.
[0034] Em uma implementação viável do sexto aspecto, o valor de refinamento de informações de movimento da unidade de processamento básico corresponde a uma matriz de preditor básica na matriz de preditor; e antes de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical, o método inclui adicionalmente: determinar que uma diferença entre uma primeira matriz de preditor básica e uma segunda matriz de preditor básica é menor que um segundo limite.
[0035] Em uma implementação viável do sexto aspecto, um tamanho da unidade de processamento básico é 4x4.
[0036] Em uma implementação viável do sexto aspecto, uma largura da unidade de dados de tubulação virtual é W, uma altura da unidade de dados de tubulação virtual é H e o tamanho da matriz de predição expandida é (W + n + 2) x (H + n + 2). Correspondentemente, o tamanho da matriz de gradiente de predição horizontal é (W + n) x (H + n) e o tamanho da matriz de gradiente de predição vertical é (W + n) x (H + n), onde W e H são números inteiros positivos e n é um número par.
[0037] Em uma implementação viável do sexto aspecto, n é 0, 2 ou -
2.
[0038] Em uma implementação viável do sexto aspecto, antes de obter as informações de movimento de um bloco de imagem a ser processado, o método inclui adicionalmente: determinar que o bloco de imagem a ser processado inclui a pluralidade de unidades de dados de tubulação virtual.
[0039] De acordo com um sétimo aspecto, uma modalidade deste pedido fornece um aparelho de predição inter, incluindo: um módulo de obtenção, configurado para obter as informações de movimento de um bloco de imagem a ser processado, onde o bloco de imagem a ser processado inclui uma pluralidade de unidades de dados de tubulação virtual e a unidade de dados de tubulação virtual inclui pelo menos uma unidade de processamento básico; um módulo de compensação, configurado para obter uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento; um módulo de cálculo, configurado para calcular uma matriz de gradiente de predição horizontal e uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor; e um módulo de distinção, configurado para calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical.
[0040] Em uma implementação viável do sétimo aspecto, o módulo de compensação é especificamente configurado para: obter uma matriz de predição inicial de cada unidade de dados de tubulação virtual com base nas informações de movimento, onde um tamanho da matriz de predição inicial é igual a um tamanho da unidade de dados de tubulação virtual; e usar a matriz de predição inicial como a matriz de preditor.
[0041] Em uma implementação viável do sétimo aspecto, o módulo de compensação é especificamente configurado para: realizar a expansão da amostra em uma extremidade da matriz de predição inicial para obter uma matriz de predição expandida, onde um tamanho da matriz de predição expandida é maior que o tamanho da matriz de predição inicial; e usar a matriz de predição expandida como a matriz de preditor.
[0042] Em uma implementação viável do sétimo aspecto, o módulo de compensação é especificamente configurado para: obter um valor de amostra de uma amostra fora da matriz de predição inicial com base em uma interpolação de um valor de amostra de uma amostra na matriz de predição inicial; ou usar um valor de amostra de uma amostra na extremidade da matriz de predição inicial como um valor de amostra de uma amostra que está fora da matriz de predição inicial e que é vizinho da extremidade.
[0043] Em uma implementação viável do sétimo aspecto, a unidade de dados de tubulação virtual inclui uma pluralidade de unidades de compensação de movimento e o módulo de compensação é especificamente configurado para: obter uma matriz de valor de compensação de cada unidade de compensação de movimento com base nas informações de movimento; e combinar as matrizes de valor de compensação da pluralidade de unidades de compensação de movimento para obter a matriz de preditor.
[0044] Em uma implementação viável do sétimo aspecto, o módulo de cálculo é especificamente configurado para realizar, separadamente, o cálculo de gradiente horizontal e o cálculo de gradiente vertical na matriz de preditor para obter a matriz de gradiente de predição horizontal e a matriz de gradiente de predição vertical.
[0045] Em uma implementação viável do sétimo aspecto, o aparelho inclui adicionalmente um módulo de preenchimento, configurado para: realizar a expansão da amostra em uma extremidade da matriz de preditor para obter uma matriz de predição de preenchimento, onde a matriz de predição de preenchimento tem um tamanho pré-ajustado; realizar, separadamente, a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical para obter uma matriz de gradiente horizontal de preenchimento e uma matriz de gradiente vertical de preenchimento, onde a matriz de gradiente horizontal de preenchimento e a matriz de gradiente vertical de preenchimento têm o tamanho pré-ajustado; e calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de predição de preenchimento, na matriz de gradiente horizontal de preenchimento e na matriz de gradiente vertical de preenchimento.
[0046] Em uma implementação viável do sétimo aspecto, o aparelho inclui adicionalmente um módulo de determinação, configurado para determinar que um tamanho da matriz de preditor é menor que o tamanho pré-ajustado.
[0047] Em uma implementação viável do sétimo aspecto, o módulo de determinação é configurado adicionalmente para determinar que um tamanho da matriz de gradiente de predição horizontal e/ou um tamanho da matriz de gradiente de predição vertical são/é menor que o tamanho pré-
ajustado.
[0048] Em uma implementação viável do sétimo aspecto, o módulo de distinção é configurado adicionalmente para obter um preditor de cada unidade de processamento básico com base na matriz de preditor da unidade de dados de tubulação virtual e no valor de refinamento de informações de movimento de cada unidade de processamento básico na unidade de dados de tubulação virtual.
[0049] Em uma implementação viável do sétimo aspecto, o aparelho é usado para a predição bidirecional; correspondentemente, as informações de movimento incluem as primeiras informações de movimento da lista de quadros de referência e as segundas informações de movimento da lista de quadros de referência; a matriz de preditor inclui uma primeira matriz de preditor e uma segunda matriz de preditor, a primeira matriz de preditor é obtida com base nas primeiras informações de movimento da lista de quadros de referência e a segunda matriz de preditor é obtida com base nas segundas informações de movimento da lista de quadros de referência; a matriz de gradiente de predição horizontal inclui uma primeira matriz de gradiente de predição horizontal e uma segunda matriz de gradiente de predição horizontal, a primeira matriz de gradiente de predição horizontal é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição horizontal é calculada com base na segunda matriz de preditor; a matriz de gradiente de predição vertical inclui uma primeira matriz de gradiente de predição vertical e uma segunda matriz de gradiente de predição vertical, a primeira matriz de gradiente de predição vertical é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição vertical é calculada com base na segunda matriz de preditor; e o valor de refinamento de informações de movimento inclui um primeiro valor de refinamento de informações de movimento da lista de quadros de referência e um segundo valor de refinamento de informações de movimento da lista de quadros de referência, o primeiro valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na primeira matriz de preditor, na primeira matriz de gradiente de predição horizontal e na primeira matriz de gradiente de predição vertical, e o segundo valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na segunda matriz de preditor, na segunda matriz de gradiente de predição horizontal e na segunda matriz de gradiente de predição vertical.
[0050] Em uma implementação viável do sétimo aspecto, o módulo de determinação é configurado adicionalmente para determinar que uma localização de domínio de tempo de um quadro de imagem em que o bloco de imagem a ser processado está localizado, está localizada entre um primeiro quadro de referência indicado pelas primeiras informações de movimento da lista de quadros de referência e um segundo quadro de referência indicado pelas segundas informações de movimento da lista de quadros de referência.
[0051] Em uma implementação viável do sétimo aspecto, o módulo de determinação é configurado adicionalmente para determinar que uma diferença entre a primeira matriz de preditor e a segunda matriz de preditor é menor que um primeiro limite.
[0052] Em uma implementação viável do sétimo aspecto, o módulo de determinação é configurado adicionalmente para determinar que uma diferença entre a primeira matriz de preditor básica e a segunda matriz de preditor básica é menor que um segundo limite.
[0053] Em uma implementação viável do sétimo aspecto, um tamanho da unidade de processamento básico é 4x4.
[0054] Em uma implementação viável do sétimo aspecto, uma largura da unidade de dados de tubulação virtual é W, uma altura da unidade de dados de tubulação virtual é H e o tamanho da matriz de predição expandida é (W + n + 2) x (H + n + 2). Correspondentemente, o tamanho da matriz de gradiente de predição horizontal é (W + n) x (H + n) e o tamanho da matriz de gradiente de predição vertical é (W + n) x (H + n), onde W e H são números inteiros positivos e n é um número par.
[0055] Em uma implementação viável do sétimo aspecto, n é 0, 2 ou -2.
[0056] Em uma implementação viável do sétimo aspecto, o módulo de determinação é configurado adicionalmente para determinar que o bloco de imagem a ser processado inclui a pluralidade de unidades de dados de tubulação virtual.
[0057] De acordo com um oitavo aspecto, uma modalidade deste pedido fornece um dispositivo de codificação, incluindo uma memória não volátil e um processador que são acoplados um ao outro. O processador chama o código de programa armazenado na memória, para realizar algumas ou todas as etapas do método no primeiro aspecto ou algumas ou todas as etapas do método no sexto aspecto.
[0058] De acordo com um nono aspecto, uma modalidade deste pedido fornece um dispositivo de decodificação, incluindo uma memória não volátil e um processador que são acoplados um ao outro. O processador chama o código de programa armazenado na memória, para realizar algumas ou todas as etapas do método no primeiro aspecto ou algumas ou todas as etapas do método no sexto aspecto.
[0059] De acordo com um décimo aspecto, uma modalidade deste pedido fornece uma mídia de armazenamento legível por computador. A mídia de armazenamento legível por computador armazena o código de programa e o código de programa inclui uma instrução usada para realizar algumas ou todas as etapas do método no primeiro aspecto ou algumas ou todas as etapas do método no sexto aspecto.
[0060] De acordo com um décimo primeiro aspecto, uma modalidade deste pedido fornece um produto de programa de computador. Quando o produto de programa de computador é executado em um computador, o computador é habilitado para realizar algumas ou todas as etapas do método no primeiro aspecto ou algumas ou todas as etapas do método no sexto aspecto.
BREVE DESCRIÇÃO DOS DESENHOS
[0061] Para descrever as soluções técnicas nas modalidades deste pedido ou nos fundamentos mais claramente, o seguinte descreve os desenhos anexos para descrever as modalidades deste pedido ou os fundamentos.
[0062] A FIG. 1A é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo 10, de acordo com uma modalidade deste pedido;
[0063] A FIG. 1B é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo 40, de acordo com uma modalidade deste pedido;
[0064] A FIG. 2 é um diagrama de bloco de uma estrutura de exemplo de um codificador 20, de acordo com uma modalidade deste pedido;
[0065] A FIG. 3 é um diagrama de bloco de uma estrutura de exemplo de um decodificador 30, de acordo com uma modalidade deste pedido;
[0066] A FIG. 4 é um diagrama de bloco de um exemplo de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade deste pedido;
[0067] A FIG. 5 é um diagrama de bloco de outro exemplo de um aparelho de codificação ou um aparelho de decodificação, de acordo com uma modalidade deste pedido;
[0068] A FIG. 6 é um diagrama esquemático de uma localização de candidato de informações de movimento, de acordo com uma modalidade deste pedido;
[0069] A FIG. 7 é um diagrama esquemático em que as informações de movimento são usadas para a predição inter, de acordo com uma modalidade deste pedido;
[0070] A FIG. 8 é um diagrama esquemático da predição ponderada bidirecional, de acordo com uma modalidade deste pedido;
[0071] A FIG. 9 é um diagrama esquemático do preenchimento de limite de CU, de acordo com uma modalidade deste pedido;
[0072] A FIG. 10 é um diagrama esquemático da divisão de VPDU, de acordo com uma modalidade deste pedido;
[0073] A FIG. 11 é um diagrama esquemático da divisão de VPDU inválida, de acordo com uma modalidade deste pedido;
[0074] A FIG. 12 é um fluxograma de um método de predição inter, de acordo com uma modalidade deste pedido;
[0075] A FIG. 13 é outro diagrama esquemático em que as informações de movimento são usadas para a predição inter, de acordo com uma modalidade deste pedido;
[0076] A FIG. 14 é um fluxograma de outro método de predição inter, de acordo com uma modalidade deste pedido;
[0077] A FIG. 15 é outro diagrama esquemático em que as informações de movimento são usadas para a predição inter, de acordo com uma modalidade deste pedido;
[0078] A FIG. 16A e FIG. 16B são um fluxograma de outro método de predição inter, de acordo com uma modalidade deste pedido;
[0079] A FIG. 17 é um fluxograma de um método, de acordo com uma modalidade deste pedido;
[0080] A FIG. 18 é um diagrama de bloco estrutural de um aparelho de predição inter, de acordo com uma modalidade deste pedido; e
[0081] A FIG. 19 é um diagrama de bloco estrutural de outro aparelho de predição inter, de acordo com uma modalidade deste pedido.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0082] O seguinte descreve as modalidades deste pedido com referência aos desenhos anexos nas modalidades deste pedido. Na seguinte descrição, a referência será feita aos desenhos anexos que fazem parte desta revelação e mostram, através da ilustração, aspectos específicos das modalidades da presente invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. Deve ser entendido que as modalidades da presente invenção podem ser usadas em outros aspectos e podem incluir alterações estruturais ou lógicas não representadas nos desenhos anexos. Portanto, a seguinte descrição detalhada não deve ser interpretada como uma limitação e o escopo da presente invenção é definido pelas reivindicações anexas. Por exemplo, deve ser entendido que o conteúdo revelado com referência a um método descrito também pode ser aplicado a um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se um ou mais etapas do método específicas forem descritas, um dispositivo correspondente pode incluir uma ou mais unidades, tais como unidades de função para realizar uma ou mais etapas do método descritas (por exemplo, uma unidade que realiza uma ou mais etapas ou uma pluralidade de unidades, cada uma das quais realiza uma ou mais da pluralidade de etapas), mesmo se tais ou mais units não forem explicitamente descritas ou ilustradas nos desenhos anexos. Além disso, por exemplo, se um aparelho específico for descrito com base em uma ou mais unidades, tais como unidades de função, um método correspondente pode incluir uma etapa para realizar a funcionalidade de uma ou mais unidades (por exemplo, uma etapa para realizar a funcionalidade de uma ou mais unidades ou uma pluralidade de etapas, cada uma das quais é usado para realizar a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tais ou mais etapas não forem explicitamente descritas ou ilustradas nos desenhos anexos. Além disso, deve ser entendido que as características das várias modalidades e/ou aspectos de exemplo descritas neste relatório descritivo podem ser combinadas entre si, a menos que especificamente observado de outro modo.
[0083] As soluções técnicas nas modalidades deste pedido podem não ser aplicadas apenas a um padrão de codificação de vídeo existente (por exemplo, um padrão, tal como H.264 ou codificação de vídeo de alta eficácia (high efficiency video coding, HEVC)), mas também podem ser aplicadas a um futuro padrão de codificação de vídeo (por exemplo, um padrão H.266). Os termos usados nas modalidades deste pedido são apenas usados para explicar as modalidades específicas deste pedido e não são destinadas a limitar este pedido. O seguinte descreve primeiro brevemente alguns conceitos relacionados nas modalidades deste pedido.
[0084] A codificação de vídeo usualmente processa uma sequência de imagens que formam um vídeo ou uma sequência de vídeos. No campo da codificação de vídeo, os termos “fotografia (picture)”, “quadro (frame)” e “imagem (image)” podem ser usados como sinônimos. A codificação de vídeo usada neste relatório descritivo indica a codificação de vídeo ou a decodificação de vídeo. A codificação de vídeo é realizada em um lado de origem e usualmente inclui processar (por exemplo, através de compressão) uma imagem de vídeo original para reduzir uma quantidade de dados necessária para representar a imagem de vídeo (para armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é realizada em um lado de destino e usualmente inclui o processamento inverso em relação a um codificador para reconstruir uma imagem de vídeo. A “codificação” de uma imagem de vídeo nas modalidades deve ser entendida como “codificação” ou “decodificação” relacionada a uma sequência de vídeos. Uma combinação de codificação e decodificação também é referida como codificação (codificação e decodificação).
[0085] Uma sequência de vídeos inclui uma série de imagens (picture), uma imagem é dividida adicionalmente em fatias (slice) e uma fatia é dividida adicionalmente em blocos (block). A codificação de vídeo é realizada por bloco. Em alguns novos padrões de codificação de vídeo, um conceito de “bloco” é expandido adicionalmente. Por exemplo, um macrobloco (macroblock, MB) é introduzido no padrão H.264. O macrobloco pode ser dividido adicionalmente em uma pluralidade de blocos de predição (partição) que podem ser usados para a codificação preditiva. No padrão HEVC, os conceitos básicos, tais como uma unidade de codificação (coding unit, CU), uma unidade de predição (prediction unit, PU) e uma unidade de transformada (transform unit, TU) são usados, uma pluralidade de unidades de bloco é funcionalmente obtida através de divisão e uma nova estrutura com base em árvore é usada para descrição. Por exemplo, uma CU pode ser dividida em CUs menores com base em uma quadtree e a CU menor pode ser dividida adicionalmente, para gerar uma estrutura de quadtree. A CU é uma unidade básica para a divisão e codificação de uma imagem codificada. Uma PU e uma TU, também têm estruturas de árvore similares. A PU pode corresponder a um bloco de predição e é uma unidade básica para a codificação preditiva. A CU é dividida adicionalmente em uma pluralidade de PUs com base em um padrão de separação. A TU pode corresponder a um bloco de transformada e é uma unidade básica para transformar um residual de predição. Entretanto, a CU, a PU e a TU, cada uma, são conceitualmente blocos (ou blocos de imagem) em essência.
[0086] Por exemplo, em HEVC, uma unidade de árvore de codificação (coding tree unit, CTU) é dividida em uma pluralidade de CUs por meio do uso de uma estrutura de quadtree denotada como uma árvore de codificação. É determinado se uma região de imagem foi codificada através de predição inter-imagem (temporal) ou intraimagem (espacial) em um nível de CU. Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs com base em um tipo de divisão de PU. Um mesmo processo de predição é aplicado dentro de uma PU e as informações relacionadas são transmitidas para um decodificador com base na PU. Depois de obter um bloco residual aplicando o processo de predição com base no tipo de divisão de PU, a CU pode ser particionada em uma unidade de transformada (transform unit, TU) com base em outra estrutura de quadtree similar à árvore de codificação usada para a CU. No mais recente das tecnologias de compressão de vídeo, um quadro é particionado através de quadtree mais árvore binária (Quad-tree e binary tree, QTBT) para particionar um bloco de codificação. Em uma estrutura de bloco de QTBT, uma CU pode ser quadrada ou retangular.
[0087] Neste relatório descritivo, para a facilidade e entendimento da descrição, um bloco de imagem a ser codificado em uma imagem codificada atual pode ser referido como um bloco atual. Por exemplo, durante a codificação, o bloco atual é um bloco que está sendo codificado e, durante a decodificação, o bloco atual é um bloco que está sendo decodificado. Um bloco de imagem decodificado, em uma imagem de referência, usada para prever o bloco atual, é referido como um bloco de referência. Em outras palavras, o bloco de referência é um bloco que fornece um sinal de referência para o bloco atual, e o sinal de referência representa um valor de amostra no bloco de imagem.
Um bloco que fornece um sinal de predição para o bloco atual na imagem de referência pode ser referido como um bloco de predição e o sinal de predição representa um valor de amostra, um valor de amostragem ou um sinal de amostragem no bloco de predição. Por exemplo, depois de percorrer uma pluralidade de blocos de referência, um bloco de referência ideal é encontrado e, o bloco de referência ideal fornece a predição para o bloco atual e este bloco é referido como um bloco de predição.
[0088] Em um caso de codificação de vídeo sem perdas, uma imagem de vídeo original pode ser reconstruída, isto é, uma imagem de vídeo reconstruída tem a mesma qualidade que a imagem de vídeo original (assumindo que nenhuma perda de transmissão ou outra perda de dados ocorra durante o armazenamento ou transmissão). Em um caso de codificação de vídeo com perdas, a compressão adicional é realizada através da quantização e semelhantes, para reduzir uma quantidade de dados necessária para representar uma imagem de vídeo e, uma imagem de vídeo não pode ser completamente reconstruída em um lado de decodificador, isto é, a qualidade de uma imagem de vídeo reconstruída é pior do que a imagem de vídeo original.
[0089] Os vários padrões de codificação de vídeo H.261 se referem à “codificação de vídeo híbrida com perdas” (isto é, predição espacial e temporal em um domínio de amostra é combinada com a codificação de transformada 2D para aplicar a quantização em um domínio de transformada).
Cada imagem em uma sequência de vídeos é usualmente particionada em um conjunto de blocos não sobrepostos e a codificação é usualmente realizada em um nível de bloco. Para especificidade, em um lado de decodificador, um vídeo é usualmente processado, isto é, codificado, em um nível de bloco (bloco de vídeo). Por exemplo, um bloco de predição é gerado através de predição espacial (intraimagem) e predição temporal (inter-imagem), o bloco de predição é subtraído de um bloco atual (um bloco que está sendo processado ou a ser processado) para obter um bloco residual e o bloco residual é transformado em domínio de transformada e quantizado para reduzir uma quantidade de dados que deve ser transmitida (comprimida). Em um lado de decodificador, o processamento inverso em relação ao codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação.
Além disso, o codificador duplica um loop de processamento do decodificador,
de modo que o codificador e o decodificador gerem a mesma predição (por exemplo, predição intra e predição inter) e/ou reconstrução para o processamento, isto é, a codificação de um bloco subsequente.
[0090] O seguinte descreve uma arquitetura de sistema à qual as modalidades deste pedido são aplicadas. A FIG. 1A é um diagrama esquemático de bloco de um sistema de codificação de vídeo 10 ao qual uma modalidade deste pedido é aplicada. Como mostrado na FIG. 1A, o sistema de codificação de vídeo 10 pode incluir um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera os dados de vídeo codificados e, portanto, o dispositivo de origem 12 pode ser referido como um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de origem 12 e, portanto, o dispositivo de destino 14 pode ser referido como um aparelho de decodificação de vídeo. Em várias soluções de implementação, o aparelho de origem 12, o aparelho de destino 14 ou, tanto o aparelho de origem 12 quanto o aparelho de destino 14, podem incluir um ou mais processadores e uma memória acoplada a um ou mais processadores. A memória pode incluir, mas não é limitada a uma RAM, uma ROM, uma EEPROM, uma memória flash ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado em uma forma de uma instrução ou uma estrutura de dados acessível a um computador, como descrito neste relatório descritivo. O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir vários aparelhos, incluindo um computador de área de trabalho, um aparelho de computação móvel, um computador notebook (por exemplo, um laptop), um computador tablet, um conversor de televisão, um monofone, tal como um telefone “inteligente”, uma televisão, uma câmera, um aparelho de exibição, um reprodutor de mídia digital, um console de videogame, um computador montado no veículo, um dispositivo de comunicações sem fio ou semelhantes.
[0091] Embora a FIG. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades do dispositivo também podem incluir tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 ou tanto uma função do dispositivo de origem 12 quanto uma função do dispositivo de destino 14, isto é, o dispositivo de origem 12 ou a função correspondente e o dispositivo de destino 14 ou a função correspondente. Em tais modalidades, o dispositivo de origem 12 ou a função correspondente e o dispositivo de destino 14 ou a função correspondente podem ser implementados por meio do uso de hardware e/ou software igual, hardware e/ou software separados ou qualquer combinação dos mesmos.
[0092] Uma conexão de comunicação pode ser implementada entre o dispositivo de origem 12 e o dispositivo de destino 14 através de um enlace 13, e o dispositivo de destino 14 pode receber os dados de vídeo codificados a partir do dispositivo de origem 12 através do enlace 13. O enlace 13 pode incluir uma ou mais mídias ou aparelhos capazes de mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14.
Em um exemplo, o enlace 13 podem incluir uma ou mais mídias de comunicação que permitem que o dispositivo de origem 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados, de acordo com um padrão de comunicações (por exemplo, um protocolo de comunicações sem fio) e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. Uma ou mais mídias de comunicações podem incluir uma mídia de comunicação sem fio e/ou uma mídia de comunicação com fio, por exemplo, um espectro de frequência de rádio (RF) ou um ou mais cabos de transmissão físicos. Uma ou mais mídias de comunicação podem ser uma parte de uma rede com base em pacote e, a rede com base em pacote é, por exemplo, uma rede de área local, uma rede de área com fio ou uma rede global (por exemplo, a internet). Uma ou mais mídias de comunicação podem incluir um roteador, um comutador, uma estação base ou outro dispositivo que facilite a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 14.
[0093] O dispositivo de origem 12 inclui um codificador 20 e, adicional ou opcionalmente, o dispositivo de origem 12 pode incluir adicionalmente uma fonte de imagem 16, um pré-processador de imagem 18 e uma interface de comunicações 22. Em uma forma de implementação específica, o codificador 20, a fonte de imagem 16, o pré-processador de imagem 18 e a interface de comunicações 22 podem ser componentes de hardware no dispositivo de origem 12 ou podem ser programas de software no dispositivo de origem 12. As descrições são separadamente fornecidas a seguir:
[0094] A fonte de imagem 16 pode incluir ou pode ser qualquer tipo de dispositivo de captura de imagem configurado para capturar uma imagem do mundo real e semelhantes, e/ou qualquer tipo de dispositivo para gerar uma imagem ou comentário (para codificação de conteúdo de tela, algum texto em uma tela também é considerado como uma parte de uma imagem ou imagem a ser codificada), por exemplo, uma unidade de processamento gráfico de computador configurado para gerar uma imagem animada por computador ou qualquer tipo de dispositivo configurado para obter e/ou fornecer uma imagem do mundo real ou uma imagem animada por computador (por exemplo, o conteúdo de tela ou uma imagem de realidade virtual (virtual reality, VR)), e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (augmented reality, AR)). A fonte de imagem 16 pode ser uma câmera configurada para capturar uma imagem ou uma memória configurada para armazenar uma imagem. A fonte de imagem 16 pode incluir adicionalmente qualquer tipo de interface (interna ou externa) através da qual uma imagem previamente capturada ou gerada é armazenada e/ou uma imagem é obtida ou recebida. Quando a fonte de imagem 16 é uma câmera, a fonte de imagem 16 pode ser, por exemplo, uma câmera local ou uma câmera integrada, integrada no dispositivo de origem. Quando a fonte de imagem 16 é uma memória, a fonte de imagem 16 pode ser, por exemplo, uma memória local ou uma memória integrada, integrada no dispositivo de origem. Quando a fonte de imagem 16 inclui uma interface, a interface pode ser, por exemplo, uma interface externa para receber uma imagem a partir de uma fonte de vídeo externa. A fonte de vídeo externa é, por exemplo, um dispositivo de captura de imagem externo, tal como uma câmera, uma memória externa ou um dispositivo de geração de imagem externo. O dispositivo de geração de imagem externo é, por exemplo, um processador gráfico de computador externo, um computador ou um servidor. A interface pode ser qualquer tipo de interface, de acordo com qualquer protocolo de interface patenteado ou padronizado, por exemplo, uma interface com fio ou sem fio ou uma interface óptica.
[0095] Uma imagem pode ser considerada como um arranjo bidimensional ou matriz de amostras (elemento de imagem). A amostra no arranjo também pode ser referida como um ponto de amostragem. Uma quantidade de pontos de amostragem nas direções horizontal e vertical (ou eixos) do arranjo ou da imagem define um tamanho e/ou uma resolução da imagem. Para a representação de cor, três componentes de cor são geralmente usados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RBG ou espaço de cor, uma imagem inclui os arranjos de amostra vermelho, verde e azul correspondentes. Entretanto, na codificação de vídeo, cada amostra é usualmente representada em um formato de luminância/crominância ou espaço de cor, por exemplo, uma imagem no formato YCbCr inclui um componente de luminância indicado por Y (às vezes indicado por L) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (luma, para abreviação) Y indica luminância ou intensidade de nível de cinza (por exemplo, os dois são iguais em uma imagem em escala de cinza) e os dois componentes de crominância (croma, para abreviação) Cb e Cr representam a crominância ou componentes de informações de cor. Consequentemente, a imagem no formato YCbCr inclui um arranjo de amostra de luminância de valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr).
Uma imagem no formato RGB pode ser convertida ou transformada em uma imagem no formato YCbCr e vice-versa. Este processo também é referido como transformação ou conversão de cor. Se uma imagem for monocromática, a imagem pode incluir apenas um arranjo de amostra de luminância. Nesta modalidade deste pedido, uma imagem transmitida pela fonte de imagem 16 para um pré-processador de imagem 18 também pode ser referida como os dados de imagem originais 17.
[0096] O pré-processador de imagem 18 é configurado para receber os dados de imagem originais 17 e realizar o pré-processamento nos dados de imagem originais 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processados 19. Por exemplo, o pré-processamento realizado pelo pré-processador de imagem 18 pode incluir corte, conversão de formato de cor (por exemplo, de RGB para YUV), correção de cor ou redução de ruído.
[0097] O codificador 20 (também referido como um codificador de vídeo 20) é configurado para receber os dados de imagem pré-processados 19 e processar os dados de imagem pré-processados 19 por meio do uso de um modo de predição relacionado (tal como um modo de predição em cada modalidade deste relatório descritivo), para fornecer os dados de imagem codificados 21 (os detalhes estruturais do codificador 20 são descritos adicionalmente abaixo com base na FIG. 2, FIG. 4 ou FIG. 5). Em algumas modalidades, o codificador 20 pode ser configurado para realizar cada modalidade descrita abaixo, para implementar a aplicação do lado de codificador do método de predição inter descrito neste pedido.
[0098] A interface de comunicações 22 pode ser configurada para receber os dados de imagem codificados 21 e transmitir os dados de imagem codificados 21 para o dispositivo de destino 14 ou qualquer outro dispositivo (por exemplo, uma memória) através do enlace 13 para o armazenamento ou reconstrução direta. Qualquer outro dispositivo pode ser qualquer dispositivo usado para decodificação ou armazenamento. A interface de comunicações 22 pode ser, por exemplo, configurada para encapsular os dados de imagem codificados 21 em um formato apropriado, por exemplo, um pacote de dados, para transmissão através do enlace 13.
[0099] O dispositivo de destino 14 inclui um decodificador 30 e, adicional ou opcionalmente, o dispositivo de destino 14 pode incluir adicionalmente uma interface de comunicações 28, um pós-processador de imagem 32 e um dispositivo de exibição 34. As descrições são separadamente fornecidas a seguir:
[0100] A interface de comunicações 28 pode ser configurada para receber os dados de imagem codificados 21 a partir do dispositivo de origem 12 ou qualquer outra fonte. Qualquer outra fonte é, por exemplo, um dispositivo de armazenamento e o dispositivo de armazenamento é, por exemplo, um dispositivo de armazenamento de dados de imagem codificados. A interface de comunicações 28 pode ser configurada para transmitir ou receber os dados de imagem codificados 21 através do enlace 13 entre o dispositivo de origem 12 e o dispositivo de destino 14 ou através de qualquer tipo de rede. O enlace 13 é, por exemplo, uma conexão com fio ou sem fio direta e qualquer tipo de rede é, por exemplo, uma rede com fio ou sem fio ou qualquer combinação das mesmas ou, qualquer tipo de rede privada ou pública ou qualquer combinação das mesmas. A interface de comunicações 28 pode ser, por exemplo, configurada para desencapsular o pacote de dados transmitido através da interface de comunicações 22, para obter os dados de imagem codificados 21.
[0101] Tanto a interface de comunicações 22 quanto a interface de comunicações 28 podem ser configuradas como interfaces de comunicações unidirecionais ou interfaces de comunicações bidirecionais, e podem ser, por exemplo, configuradas para enviar e receber uma mensagem para estabelecer uma conexão e, confirmar e trocar quaisquer outras informações relacionadas a um enlace de comunicações e/ou transmissão dados, tal como dados de imagem codificados transmissão.
[0102] O decodificador 30 (também referido como o decodificador 30) é configurado para receber os dados de imagem codificados 21 e fornecer os dados de imagem decodificados 31 ou uma imagem decodificada 31 (os detalhes estruturais do decodificador 30 são descritos adicionalmente abaixo com base na FIG. 3, FIG. 4 ou FIG. 5). Em algumas modalidades, o decodificador 30 pode ser configurado para realizar cada modalidade descrita abaixo, para implementar a aplicação do lado de decodificador do método de predição inter descrito neste pedido.
[0103] O pós-processador de imagem 32 é configurado para pós- processar os dados de imagem decodificados 31 (também referido como dados de imagem reconstruídos), para obter os dados de imagem pós-processados
33. O pós-processamento realizado pelo pós-processador de imagem 32 pode incluir a conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, corte, reamostragem ou qualquer outro processamento. O pós- processador de imagem 32 pode ser configurado adicionalmente para transmitir os dados de imagem pós-processados 33 para o dispositivo de exibição 34.
[0104] O dispositivo de exibição 34 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem para um usuário, um observador ou semelhantes. O dispositivo de exibição 34 pode ser ou pode incluir qualquer tipo de tela configurada para apresentar uma imagem reconstruída, por exemplo, uma tela ou monitor integrada ou externa. Por exemplo, a tela pode incluir uma tela e cristal líquido (liquid crystal display, LCD), uma tela de diodo orgânico emissor de luz (organic light-emitting diode, OLED), uma tela de plasma, um projetor, uma tela de micro LED, uma tela de cristal líquido em silício (liquid crystal on silicon, LCoS), um processador de luz digital (digital light processor, DLP) ou qualquer tipo de outra tela.
[0105] Embora a FIG. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades do dispositivo também podem incluir tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 ou tanto uma função do dispositivo de origem 12 quanto uma função do dispositivo de destino 14, isto é, o dispositivo de origem 12 ou a função correspondente e o dispositivo de destino 14 ou a função correspondente. Em tais modalidades, o dispositivo de origem 12 ou a função correspondente e o dispositivo de destino 14 ou a função correspondente podem ser implementados por meio do uso de hardware e/ou software igual, hardware e/ou software separado ou qualquer combinação dos mesmos.
[0106] Com base nas descrições, um técnico no assunto entende facilmente que a existência e divisão (exata) de funções de diferentes unidades ou funções/uma função do dispositivo de origem 12 e/ou do dispositivo de destino 14 mostrado na FIG. 1A pode variar com um dispositivo e aplicação reais. O dispositivo de origem 12 e o dispositivo de destino 14, cada um, pode incluir qualquer um de vários dispositivos, incluindo qualquer tipo de dispositivo portátil ou estacionário, por exemplo, um computador notebook ou laptop, um telefone móvel, um telefone inteligente, um computador tablet ou um tablet, um câmera de vídeo, um computador de área de trabalho, um conversor de televisão, um televisão, uma câmera, um dispositivo montado no veículo, um dispositivo de exibição, um reprodutor de mídia digital, um console de videogame, um dispositivo de transmissão de transmissão de vídeo (tal como um servidor de serviço de conteúdo ou um servidor de distribuição de conteúdo), um dispositivo receptor de transmissão ou um dispositivo transmissor de transmissão e pode ou não usar qualquer tipo de sistema operacional.
[0107] O codificador 20 e o decodificador 30, cada um, podem ser implementados como qualquer um de vários circuitos apropriados, por exemplo, um ou mais microprocessadores, um processador de sinal digital (digital signal processor, DSP), um circuito integrado específico da aplicação (application- specific integrated circuit, ASIC), um arranjo de portas programável em campo (field-programmable gate array, FPGA), lógica discreta, hardware ou qualquer combinação dos mesmos. Se a tecnologia for parcialmente implementada em software, o dispositivo pode armazenar uma instrução de software em uma mídia de armazenamento legível por computador não transitória apropriada e pode executar a instrução no hardware por meio do uso de um ou mais processadores para realizar as tecnologias nesta revelação. Qualquer um do conteúdo anterior (incluindo hardware, software, uma combinação de hardware e software e semelhantes) pode ser considerado como um ou mais processadores.
[0108] Em alguns casos, o sistema de codificação de vídeo 10 mostrado na FIG. 1A é meramente um exemplo e as tecnologias neste pedido podem ser aplicadas a uma configuração de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não precisa incluir qualquer comunicação de dados entre um dispositivo de codificação e um dispositivo de decodificação. Em outros exemplos, os dados podem ser recuperados a partir de uma memória local, transmitidos através de uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar dados e armazenar os dados em uma memória e/ou um dispositivo de decodificação de vídeo pode recuperar os dados a partir da memória e decodificar os dados. Em alguns exemplos, a codificação e a decodificação são realizadas pelos dispositivos que não se comunicam entre si, mas apenas codificam os dados para uma memória e/ou recuperam os dados a partir da memória e decodificam os dados.
[0109] A FIG. 1B é um diagrama ilustrativo de um exemplo de um sistema de codificação de vídeo 40 incluindo o codificador 20 na FIG. 2 e/ou o decodificador 30 na FIG. 3, de acordo com uma modalidade de exemplo. O sistema de codificação de vídeo 40 pode implementar uma combinação de várias tecnologias nas modalidades deste pedido. Na implementação ilustrada, o sistema de codificação de vídeo 40 pode incluir um dispositivo de geração de imagem 41, o codificador 20, o decodificador 30 (e/ou um codificador de vídeo/decodificador implementado por um circuito lógico 47 de uma unidade de processamento 46), uma antena 42, um ou mais processadores 43, uma ou mais memórias 44 e/ou um dispositivo de exibição 45.
[0110] Como mostrado na FIG. 1B, o dispositivo de geração de imagem 41, a antena 42, a unidade de processamento 46, o circuito lógico 47, o codificador 20, o decodificador 30, o processador 43, a memória 44 e/ou o dispositivo de exibição 45 podem se comunicar entre si. Como descrito, embora o sistema de codificação de vídeo 40 seja ilustrado tanto com o codificador 20 quanto com o decodificador 30, o sistema de codificação de vídeo 40 pode incluir apenas o codificador 20 ou apenas o decodificador 30 em diferentes exemplos.
[0111] Em alguns exemplos, a antena 42 pode ser configurada para transmitir ou receber um fluxo de bits codificado de dados de vídeo. Além disso, em alguns exemplos, o dispositivo de exibição 45 pode ser configurado para apresentar os dados de vídeo. Em alguns exemplos, o circuito lógico 47 pode ser implementado pela unidade de processamento 46. A unidade de processamento 46 pode incluir a lógica do circuito integrado específico da aplicação (application-specific integrated circuit, ASIC), uma unidade de processamento gráfico, um processador de uso geral ou semelhantes. O sistema de codificação de vídeo 40 também pode incluir o processador opcional
43. O processador opcional 43 pode similarmente incluir a lógica do circuito integrado específico da aplicação (application-specific integrated circuit, ASIC), uma unidade de processamento gráfico, um processador de uso geral ou semelhantes. Em alguns exemplos, o circuito lógico 47 pode ser implementado por hardware, tal como o hardware dedicado de codificação de vídeo e, o processador 43 pode ser implementado pelo software universal, um sistema operacional ou semelhantes. Além disso, a memória 44 pode ser qualquer tipo de memória, por exemplo, uma memória volátil (por exemplo, uma memória de acesso aleatório estática (Static Random Access Memory, SRAM) ou uma memória de acesso aleatório dinâmica (Dinamic Random Access Memory, DRAM)) ou uma memória não volátil (por exemplo, uma memória flash). Em um exemplo não limitativo, a memória 44 pode ser implementada por uma memória cache. Em alguns exemplos, o circuito lógico 47 pode acessar a memória 44 (por exemplo, para implementar um buffer de imagem). Em outros exemplos, o circuito lógico 47 e/ou a unidade de processamento 46 pode incluir uma memória (por exemplo, um cache) para implementar um buffer de imagem ou semelhantes.
[0112] Em alguns exemplos, o codificador 20 implementado pelo circuito lógico pode incluir um buffer de imagem (por exemplo, implementado pela unidade de processamento 46 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implementada pela unidade de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o codificador 20 implementado pelo circuito lógico 47, para implementar vários módulos que são descritos com referência à FIG. 2 e/ou qualquer outro sistema de codificador ou subsistema descrito neste relatório descritivo. O circuito lógico pode ser configurado para realizar várias operações descritas neste relatório descritivo.
[0113] Em alguns exemplos, o decodificador 30 pode ser similarmente implementado pelo circuito lógico 47, para implementar vários módulos que são descritos com referência ao decodificador 30 na FIG. 3 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório descritivo. Em alguns exemplos, o decodificador 30 implementado pelo circuito lógico pode incluir um buffer de imagem (por exemplo, implementado pela unidade de processamento 46 ou pela memória 44) e uma unidade de processamento gráfico (por exemplo, implementada pela unidade de processamento 46). A unidade de processamento gráfico pode ser acoplada comunicativamente ao buffer de imagem. A unidade de processamento gráfico pode incluir o decodificador 30 implementado pelo circuito lógico 47, para implementar vários módulos que são descritos com referência à FIG. 3 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório descritivo.
[0114] Em alguns exemplos, a antena 42 pode ser configurada para receber um fluxo de bits codificado de dados de vídeo. Como descrito, o fluxo de bits codificado pode incluir dados, um indicador, um valor de índice, dados de seleção de modo ou semelhantes, que estão relacionados à codificação de quadro de vídeo descrita neste relatório descritivo, por exemplo, dados relacionados ao particionamento de codificação (por exemplo, um coeficiente de transformada ou um coeficiente de transformada quantizado, um indicador opcional (como descrito), e/ou dados definindo o particionamento de codificação). O sistema de codificação de vídeo 40 pode incluir adicionalmente o decodificador 30 que é acoplado à antena 42 e que é configurado para decodificar o fluxo de bits codificado. O dispositivo de exibição 45 é configurado para apresentar um quadro de vídeo.
[0115] Deve ser entendido que, para os exemplos descritos com referência ao codificador 20 nesta modalidade deste pedido, o decodificador 30 pode ser configurado para realizar um processo inverso. Para um elemento de sintaxe de sinalização, o decodificador 30 pode ser configurado para receber e analisar o elemento de sintaxe e decodificar os dados de vídeo relacionados consequentemente. Em alguns exemplos, o codificador 20 pode codificar com entropia um elemento de sintaxe em um fluxo de bits de vídeo codificado. Em tais exemplos, o decodificador 30 pode analisar o elemento de sintaxe e decodificar os dados de vídeo relacionados consequentemente.
[0116] Deve ser observado que o método descrito nesta modalidade deste pedido é principalmente usado em um processo de predição inter. Este processo existe tanto no codificador 20 quanto no decodificador 30. O codificador 20 e o decodificador 30 nesta modalidade deste pedido, cada um, podem ser, por exemplo, um codificador/decodificador correspondente em um protocolo de padrão de vídeo, tal como H.263, H.264, HEVV, MPEG-2, MPEG- 4, VP8 ou, VP9 ou um protocolo padrão de vídeo da próxima geração (tal como H.266).
[0117] A FIG. 2 é um diagrama esquemático/conceitual de bloco de um exemplo de um codificador 20 configurado para implementar uma modalidade deste pedido. No exemplo da FIG. 2, o codificador 20 inclui 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, uma unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, um buffer 216, uma unidade de filtro loop 220, um buffer de imagem decodificada (decoded picture buffer, DPB) 230, uma unidade de predição de processamento 260 e uma unidade de codificação de entropia 270. A unidade de predição de processamento 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de seleção de modo 262. A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostradas na figura). O codificador 20 mostrado na FIG. 2 também pode ser referido como um codificador de vídeo híbrido ou um codificador de vídeo com base no codec de vídeo híbrido.
[0118] Por exemplo, a unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de predição de processamento 260 e a unidade de codificação de entropia 270 formam um caminho de sinal posterior do codificador 20 e, 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 loop 220, o buffer de imagem decodificada (decoded picture buffer, DPB) 230, a unidade de predição de processamento 260 e semelhantes, formam um caminho de sinal anterior do codificador. O caminho de sinal anterior do codificador corresponde a um caminho de sinal de um decodificador (consultar um decodificador 30 na FIG.
3).
[0119] O codificador 20 recebe uma imagem 201 ou um bloco de imagem 203 da imagem 201 por meio do uso de uma entrada 202 ou semelhantes, por exemplo, uma imagem em uma sequência de imagens que formam um vídeo ou uma sequência de vídeos. O bloco de imagem 203 também pode ser referido como um bloco de imagem atual ou um bloco de imagem a ser codificado, e a imagem 201 pode ser referida como uma imagem atual ou uma imagem a ser codificada (especialmente quando a imagem atual é distinguida a partir de outra imagem na codificação de vídeo, outras imagens, por exemplo, em uma mesma sequência de vídeos, também incluem a imagem previamente codificada e/ou decodificada na sequência de vídeos da imagem atual).
[0120] A modalidade do codificador 20 pode incluir uma unidade de particionamento (não mostrada na FIG. 2), configurada para particionar a imagem 201 em uma pluralidade de blocos não sobrepostos, tais como os blocos 203. A unidade de particionamento pode ser configurada para usar um mesmo tamanho de bloco para todas as imagens na sequência de vídeos e um mapa de bits definindo o tamanho de bloco, ou pode ser configurada para: alterar um tamanho de bloco entre as imagens, subconjuntos, grupos de imagem e partição de cada imagem nos blocos correspondentes.
[0121] Em um exemplo, a unidade de predição de processamento 260 do codificador 20 pode ser configurada para realizar qualquer combinação das tecnologias de particionamento descritas acima.
[0122] Como a imagem 201, o bloco de imagem 203 também é ou também pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de amostra, embora um tamanho do bloco de imagem 203 seja menor que o da imagem 201. Em outras palavras, o bloco de imagem 203 pode incluir, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luminância em um caso de uma imagem monocromática 201), três arranjos de amostra (por exemplo, um arranjo de luminância e dois arranjos de crominância em um caso de uma imagem colorida) ou qualquer outra quantidade e/ou tipo de arranjos com base em um formato de cor usado. Uma quantidade de amostras nas direções horizontal e vertical (ou eixos) do bloco de imagem 203 define o tamanho do bloco de imagem 203.
[0123] O codificador 20 mostrado na FIG. 2 é configurado para codificar a imagem 201, bloco por bloco, por exemplo, realizar a codificação e predição em cada bloco de imagem 203.
[0124] A unidade de cálculo residual 204 é configurada para calcular um bloco residual 205 com base no bloco de imagem 203 e um bloco de predição 265 (os detalhes adicionais sobre bloco de predição 265 são fornecidos abaixo), por exemplo, obter o bloco residual 205 em um domínio de amostra subtraindo um valor de amostra do bloco de predição 265 de um valor de amostra do bloco de imagem 203, amostra por amostra.
[0125] A unidade de processamento de transformada 206 é configurada para aplicar a transformada, tal como transformada de cosseno discreta (discrete cosine transform, DCT) ou transformada de seno discreta (discrete sine transform, DST) a um valor de amostra do bloco residual 205, para obter um coeficiente de transformada 207 em um domínio de transformada. O coeficiente de transformada 207 também pode ser referido como um coeficiente de transformada residual e indica o bloco residual 205 no domínio de transformada.
[0126] A unidade de processamento de transformada 206 pode ser configurada para aplicar a aproximação inteira de DCT/DST, por exemplo, a transformada especificada em HEVC/H.265. Esta aproximação inteira é usualmente dimensionada proporcionalmente por um fator comparado à transformada DCT ortogonal. Para manter a norma de um bloco residual obtida através da transformada posterior e transformada inversa, um fator de escala adicional é aplicado como uma parte do processo de transformada. O fator de escala é usualmente selecionado com base em algumas condições de restrição, por exemplo, é uma potência de 2, uma profundidade de bits de um coeficiente de transformada ou uma compensação entre a precisão e os custos de implementação que são usados para uma operação de deslocamento. Por exemplo, um fator de escala específico é especificado para a transformada inversa em um lado de decodificador 30 por meio do uso da unidade de processamento de transformada inversa 212 (e, correspondentemente, para a transformada inversa de um lado de codificador 20 por meio do uso da unidade de processamento de transformada inversa 212 ou semelhantes) e,
correspondentemente, um fator de escala correspondente pode ser especificado para a transformada posterior em um lado de codificador 20 por meio do uso da unidade de processamento de transformada 206.
[0127] A unidade de quantização 208 é configurada para quantizar o coeficiente de transformada 207 aplicando a quantização escalar, quantização vetorial ou semelhantes, para obter um coeficiente de transformada quantizado
209. O coeficiente de transformada quantizado 209 também pode ser referido como um coeficiente residual quantizado 209. O processo de quantização pode reduzir uma profundidade de bits relacionada 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 que m. Um grau de quantização pode ser modificado ajustando um parâmetro de quantização (quantization parameter, QP). Por exemplo, para a quantização de escala, diferentes escalas podem ser aplicadas para obter a quantização mais grossa ou mais fina. Uma menor etapa de quantização corresponde à quantização mais fina e uma maior etapa de quantização corresponde à quantização mais grossa. Uma etapa de quantização apropriada pode ser indicada por um parâmetro de quantização (quantization parameter, QP). Por exemplo, o parâmetro de quantização pode ser um índice para um conjunto predefinido de etapas de quantização apropriadas. Por exemplo, um menor parâmetro de quantização pode corresponder à quantização mais fina (uma menor etapa de quantização) e um maior parâmetro de quantização pode corresponder à quantização mais grossa (uma maior etapa de quantização) ou vice-versa. A quantização pode incluir a divisão por uma etapa de quantização e a quantização correspondente ou quantização inversa realizada pela unidade de quantização inversa 210 ou semelhantes, ou pode incluir a multiplicação por uma etapa de quantização.
Nas modalidades, de acordo com alguns padrões, tais como HEVC, um parâmetro de quantização pode ser usado para determinar uma etapa de quantização. Geralmente, a etapa de quantização pode ser calculada com base no parâmetro de quantização através da aproximação de ponto fixo de uma equação incluindo divisão. Os fatores de escala adicionais podem ser introduzidos para quantização e desquantização, para rearmazenar a norma que é de um bloco residual e que pode ser modificada por causa de uma escala usada na aproximação de ponto fixo da equação usada para a etapa de quantização e para o parâmetro de quantização. Em uma implementação de exemplo, uma escala de transformada inversa pode ser combinada com uma escala de desquantização. Alternativamente, uma tabela de quantização personalizada pode ser usada e sinalizada a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas e uma maior etapa de quantização indica uma perda maior.
[0128] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da quantização aplicada pela unidade de quantização 208 a um coeficiente quantizado para obter um coeficiente desquantizado 211, por exemplo, aplicar, com base ou por meio do uso de uma mesma etapa de quantização que a unidade de quantização 208, um esquema de quantização inversa do esquema de quantização aplicado pela unidade de quantização 208. O coeficiente desquantizado 211 também pode ser referido como um coeficiente residual desquantizado 211 e corresponder ao coeficiente de transformada 207, embora uma perda causada pela quantização seja usualmente diferente a partir do coeficiente de transformada.
[0129] 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, transformada de cosseno discreta inversa (discrete cosine transform, DCT) ou transformada de seno discreta inversa (discrete sine transform, DST), para obter um bloco de transformada inversa 213 em um domínio de amostra. O bloco de transformada inversa 213 também pode ser referido como um bloco desquantizado de transformada inversa 213 ou um bloco residual de transformada inversa 213.
[0130] A unidade de reconstrução 214 (por exemplo, um somador 214) é configurado para adicionar o bloco de transformada inversa 213 (isto é, um 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 um valor de amostra do bloco residual reconstruído 213 e um valor de amostra do bloco de predição 265.
[0131] Opcionalmente, a unidade de buffer 216 (ou o “buffer” 216, para abreviação), tal como um buffer de linha 216, é configurada para bufferizar ou armazenar o bloco reconstruído 215 e um valor de amostra correspondente para predição intra e semelhantes. Em outras modalidades, um codificador pode ser configurado para usar um bloco reconstruído não filtrado e/ou um valor de amostra correspondente que são/é armazenado na unidade de buffer 216 para qualquer tipo de estimativa e/ou predição, tal como predição intra.
[0132] Por exemplo, a modalidade do codificador 20 pode ser configurada, de modo que a unidade de buffer 216 não seja apenas configurada para armazenar o bloco reconstruído 215 para a predição intra, mas também configurada para armazenar o bloco filtrado 221 da unidade de filtro loop 220 (não mostrada na FIG. 2) e/ou a unidade de buffer 216 e a unidade de buffer de imagem decodificada 230 formam um buffer. Outras modalidades podem ser usadas para utilizar um bloco filtrado 221 e/ou um bloco ou uma amostra do buffer de imagem decodificada 230 (não mostrada na FIG. 2) como uma entrada ou uma base para a predição intra.
[0133] A unidade de filtro loop 220 (ou o “filtro loop” 220, para abreviação) é configurada para realizar a filtragem no bloco reconstruído 215 para obter o bloco filtrado 221, de modo a realizar suavemente a transformação de amostra ou melhora a qualidade de vídeo. A unidade de filtro loop 220 é destinada a representar um ou mais filtros loop, por exemplo, um filtro de desbloqueio, um filtro de deslocamento adaptativo à amostra (sample-adaptive offset, SAO) ou outro filtro, tal como um filtro bilateral, um filtro loop adaptativo (adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro cooperativo. Embora a unidade de filtro loop 220 seja mostrada na FIG. 2 como um filtro no loop, a unidade de filtro loop 220 pode ser implementada como um filtro de pós-loop em outras configurações. O bloco filtrado 221 também pode ser referido como um bloco reconstruído filtrado 221. O buffer de imagem decodificada 230 pode armazenar o bloco de codificação reconstruído depois da unidade de filtro loop 220 realizar uma operação de filtragem no bloco de codificação reconstruído.
[0134] A modalidade do codificador 20 (correspondentemente, a unidade de filtro loop 220) pode ser usada para emitir um parâmetro de filtro loop (por exemplo, informações de deslocamento adaptativas à amostra), por exemplo, emitir diretamente um parâmetro de filtro loop ou emitir um parâmetro de filtro loop depois da unidade de codificação de entropia 270 ou qualquer outra unidade de codificação de entropia realizar a codificação de entropia, de modo que o decodificador 30 possa receber e aplicar um mesmo parâmetro de filtro loop para a decodificação e semelhantes.
[0135] O buffer de imagem decodificada (decoded picture buffer, DPB) 230 pode ser uma memória de imagem de referência que armazena dados de imagem de referência para o codificador de vídeo 20 para codificar os dados de vídeo. O DPB 230 pode ser qualquer uma de uma pluralidade de memórias, por exemplo, uma memória de acesso aleatório dinâmica (dinamic random access memory, DRAM) (incluindo uma DRAM síncrona (synchronous DRAM, SDRAM), uma RAM magneto resistiva (magnetoresistive RAM, MRAM) ou uma RAM resistiva (resistive RAM, RRAM)) ou outro tipo de memória. O
DPB 230 e o buffer 216 podem ser fornecidos por uma mesma memória ou memórias separadas. Em um exemplo, o buffer de imagem decodificada (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco filtrado
221. O buffer de imagem decodificada 230 pode ser configurado adicionalmente para armazenar outros blocos filtrados anteriores, tais como blocos reconstruídos e filtrados 221 anteriores de uma mesma imagem atual ou imagens diferentes, tais como imagens reconstruídas anteriores e pode fornecer uma reconstrução anterior completa, isto é, imagem decodificada (e um bloco de referência correspondente e uma amostra correspondente) e/ou uma imagem atual parcialmente reconstruída (e um bloco de referência correspondente e uma amostra correspondente) para a predição inter e semelhantes. Em um exemplo, se o bloco reconstruído 215 for reconstruído sem filtragem no loop, o buffer de imagem decodificada (decoded picture buffer, DPB) 230 é configurado para armazenar o bloco reconstruído 215.
[0136] A unidade de predição de processamento 260 também é referida como um bloco unidade de predição de processamento 260 e é configurada para: receber ou obter o bloco 203 (o bloco atual 203 da imagem atual 201) e os dados de imagem reconstruídos, por exemplo, uma amostra de referência de uma mesma imagem (atual) no buffer 216 e/ou dados de imagem de referência 231 de uma ou mais imagens decodificadas anteriores no buffer de imagem decodificada 230 e processar tais dados para a predição, isto é, fornecer um bloco de predição 265 que pode ser um bloco de predição inter 245 ou um bloco de predição intra 255.
[0137] A unidade de seleção de modo 262 pode ser configurada para selecionar um modo de predição (por exemplo, um modo de intra ou predição inter) e/ou um bloco de predição correspondente 245 ou 255 como o bloco de predição 265, para calcular o bloco residual 205 e reconstruir o bloco reconstruído 215.
[0138] A modalidade da unidade de seleção de modo 262 pode ser usada para selecionar um modo de predição (por exemplo, a partir dos modos de predição suportados pela unidade de predição de processamento 260). O modo de predição fornece uma melhor correspondência ou um residual mínimo (o residual mínimo significa melhor compressão na transmissão ou armazenamento) ou, fornece as sobrecargas de sinalização mínimas (as sobrecargas de sinalização mínimas significam melhor compressão na transmissão ou armazenamento) ou considera ou equilibra os dois. A unidade de seleção de modo 262 pode ser configurada para determinar um modo de predição com base na otimização de distorção de taxa (rate distortion optimization, RDO), isto é, selecionar um modo de predição que forneça a otimização de distorção de taxa mínima ou selecionar um modo de predição em que a distorção de taxa relacionada pelo menos atende a um critério de seleção do modo de predição selection.
[0139] O processamento de predição (por exemplo, por meio do uso da unidade de predição de processamento 260) e a seleção de modo (por exemplo, por meio do uso da unidade de seleção de modo 262) realizados por um exemplo do codificador 20 são descritos em detalhes abaixo.
[0140] Como descrito acima, o codificador 20 é configurado para determinar ou selecionar um modo de predição melhor ou ideal a partir de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode incluir, por exemplo, um modo de predição intra e/ou um modo de predição inter.
[0141] O conjunto de modos de predição intra pode incluir 35 modos de predição intra diferentes, por exemplo, modos não direcionais, tais como um modo DC (ou meio) e um modo planar ou, modos direcionais definidos em H.265 ou pode incluir 67 modos de predição intra diferentes, por exemplo, modo não direcional, tal como um modo DC (ou meio) e um modo planar ou modos direcionais de desenvolvimento definido em H.266.
[0142] Em uma implementação possível, um conjunto de modos de predição inter depende de uma imagem de referência disponível (por exemplo, pelo menos uma parte da imagem decodificada armazenada no DBP 230) e outros parâmetros de predição inter, por exemplo, dependem se toda a imagem de referência for usada ou apenas uma parte da imagem de referência for usada, por exemplo, uma região de janela de pesquisa em torno de uma região de um bloco atual é pesquisada para um melhor bloco de referência correspondido e/ou dependem se a interpolação de amostra, tal como metade da amostra e/ou um quarto da interpolação de amostra for aplicado. O conjunto de modos de predição inter pode incluir, por exemplo, um modo de predição de vetor de movimento avançado (Advanced Motion Vector Prediction, AMVP) e um modo de mesclagem (merge). Durante a implementação específica, o conjunto de modos de predição inter pode incluir um modo AMVP com base no ponto de controle e um modo de mesclagem com base no ponto de controle que são melhorados nesta modalidade deste pedido. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação das tecnologias de predição inter descritas abaixo.
[0143] Além dos modos de predição anteriores, um modo de salto e/ou um modo direto também pode ser aplicado nesta modalidade deste pedido.
[0144] A unidade de predição de processamento 260 pode ser configurada adicionalmente para: particionar o bloco de imagem 203 em menores partições de bloco ou sub-blocos, por exemplo, usando iterativamente o particionamento de quadtree (quad-tree, QT), particionamento de árvore binária (binary-tree, BT), particionamento de árvore tripla (triple-tree, TT) ou qualquer combinação dos mesmos e, realizar a predição e semelhantes, em cada uma das partições de bloco ou de sub-blocos. A seleção de modo inclui selecionar uma estrutura de árvore do bloco de imagem particionado 203 e selecionar um modo de predição aplicado a cada uma das partições de bloco ou de sub-blocos.
[0145] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (motion estimation, ME) (não mostrada na FIG. 2) e uma unidade de compensação de movimento (motion compensation, MC) (não mostrada na FIG. 2). A unidade de estimativa de movimento é configurada para receber ou obter o bloco de imagem 203 (o bloco de imagem atual 203 da imagem atual 201) e a imagem decodificada 31, ou pelo menos um ou mais blocos reconstruídos anteriores, por exemplo, um ou mais outros blocos reconstruídos diferentes da imagem decodificada anterior 231, para realizar a estimativa de movimento. Por exemplo, uma sequência de vídeos pode incluir a imagem atual e a imagem decodificada anterior 31. Em outras palavras, a imagem atual e a imagem decodificada anterior 31 pode ser uma parte de uma sequência de imagens que forma a sequência de vídeos ou forma a sequência de imagens.
[0146] Por exemplo, o codificador 20 pode ser configurado para: selecionar um bloco de referência a partir de uma pluralidade de blocos de referência de uma mesma imagem ou imagens diferentes em uma pluralidade de outras imagens e fornecer uma imagem de referência e/ou um deslocamento (um deslocamento espacial) entre uma localização (coordenadas X-Y) do bloco de referência e uma localização do bloco atual como um parâmetro de predição inter para a unidade de estimativa de movimento (não mostrada na FIG. 2). Este deslocamento também é referido como um vetor de movimento (motion vector, MV).
[0147] A unidade de compensação de movimento é configurada para: obter um parâmetro de predição inter e realizar a predição inter com base ou por meio do uso do parâmetro de predição inter para obter o bloco de predição inter 245. A compensação de movimento realizada pela unidade de compensação de movimento (não mostrada na FIG. 2) pode incluir buscar ou gerar o bloco de predição com base em um vetor de movimento/bloco determinado através da estimativa de movimento (possivelmente para realizar interpolação na precisão da sub-amostra). Durante a filtragem de interpolação, uma amostra adicional pode ser gerada a partir das amostras conhecidas, aumentando potencialmente, desse modo, uma quantidade de blocos de predição de candidato que podem ser usados para codificar um bloco de imagem. Uma vez que um vetor de movimento usado para uma PU de um bloco de imagem atual é recebido, a unidade de compensação de movimento 246 pode localizar um bloco de predição para o qual o vetor de movimento aponta em uma lista de imagem de referência. A unidade de compensação de movimento 246 pode gerar adicionalmente um elemento de sintaxe associado a um bloco e uma fatia de vídeo, de modo que o decodificador de vídeo 30 use o elemento de sintaxe ao decodificar um bloco de imagem da fatia de vídeo.
[0148] Especificamente, a unidade de predição inter 244 pode transmitir um elemento de sintaxe para a unidade de codificação de entropia 270 e o elemento de sintaxe inclui o parâmetro de predição inter (tal como informações de indicação para selecionar um modo de predição inter usado para a predição do bloco atual depois de uma pluralidade de modos de predição inter serem percorridos). Em um cenário de aplicação possível, se houver apenas um modo de predição inter, o parâmetro de predição inter pode ser alternativamente não transportado no elemento de sintaxe. Neste caso, o decodificador 30 pode diretamente realizar a decodificação em um modo de predição padrão. Pode ser entendido que a unidade de predição inter 244 pode ser configurada para realizar qualquer combinação das tecnologias de predição inter.
[0149] A unidade de predição intra 254 é configurada para obter, por exemplo, receber um bloco de imagem 203 (um bloco de imagem atual) da mesma imagem e um ou mais blocos reconstruídos anteriores, tais como blocos vizinhos reconstruídos, para realizar a intraestimativa. Por exemplo, o codificador 20 pode ser configurado para selecionar um modo de predição intra a partir de uma pluralidade de modos de predição intra (predeterminados).
[0150] A modalidade do codificador 20 pode ser configurada para selecionar um modo de predição intra com base em um critério de otimização, por exemplo, com base em um residual mínimo (por exemplo, um modo de predição intra fornecendo o bloco de predição 255 que é muito similar ao bloco de imagem atual 203) ou distorção de taxa mínima.
[0151] A unidade de predição intra 254 é configurada adicionalmente para determinar o bloco de predição intra 255 com base em um parâmetro de predição intra do modo de predição intra selecionado. Em qualquer caso, depois de selecionar o modo de predição intra usado para um bloco, a unidade de predição intra 254 é configurada adicionalmente para fornecer o parâmetro de predição intra para a unidade de codificação de entropia 270, isto é, fornecer informações para indicar o modo de predição intra selecionado usado para um bloco. Em um exemplo, a unidade de predição intra 254 pode ser configurada para realizar qualquer combinação das seguintes tecnologias de predição intra.
[0152] Especificamente, a unidade de predição intra 254 pode transmitir um elemento de sintaxe para a unidade de codificação de entropia 270 e o elemento de sintaxe inclui o parâmetro de predição intra (tal como informações de indicação para selecionar um modo de predição intra usado para predição do bloco atual depois de uma pluralidade de modos de predição intra serem percorridos). Em um cenário de aplicação possível, se houver apenas um modo de predição intra, o parâmetro de predição intra pode ser alternativamente não transportado no elemento de sintaxe. Neste caso, o decodificador 30 pode diretamente realizar a decodificação em um modo de predição padrão.
[0153] A unidade de codificação de entropia 270 é configurada para aplicar um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (variable length coding, VLC), um esquema de VLC adaptativo ao contexto (context adaptive VLC, CAVLC), um contexto de codificação aritmética, um contexto de codificação aritmética binária adaptativo ao contexto (context adaptive binary arithmetic coding, CABAC), um contexto de codificação aritmética binária adaptativo ao contexto com base em sintaxe (syntax-based context-adaptive binary arithmetic coding, SBAC), um contexto de codificação de entropia de particionamento de intervalo de probabilidade (probability interval partitioning entropy, PIPE) ou outro método ou tecnologia de codificação de entropia) a um ou mais (ou nenhum) do coeficiente residual quantizado 209, do parâmetro de predição inter, do parâmetro de predição intra e/ou do parâmetro de filtro loop, para obter os dados de imagem codificados 21 que podem ser emitidos por meio do uso de uma saída 272, por exemplo, em uma forma de um fluxo de bits codificado. O fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30 ou pode ser arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. A unidade de codificação de entropia 270 pode ser configurada adicionalmente para realizar a codificação de entropia em outro elemento de sintaxe da fatia de vídeo atual que está sendo codificado.
[0154] Outra variante estrutural do codificador de vídeo 20 pode ser configurada para codificar um fluxo de vídeo. Por exemplo, o codificador 20 não baseado em transformada pode diretamente quantizar um sinal residual sem a unidade de processamento de transformada 206 para alguns blocos ou quadros. Em outra implementação, o codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 que são combinadas em uma unidade.
[0155] Especificamente, nesta modalidade deste pedido, o codificador 20 pode ser configurado para implementar um método de predição inter descrito na seguinte modalidade.
[0156] Deve ser entendido que outra variante estrutural do codificador de vídeo 20 pode ser configurada para codificar um fluxo de vídeo.
Por exemplo, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 20 pode diretamente quantizar o sinal residual sem a necessidade de a unidade de processamento de transformada 206 realizar o processamento e, correspondentemente, sem a necessidade de a unidade de processamento de transformada inversa 212 realizar o processamento.
Alternativamente, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 20 não gera os dados residuais e, correspondentemente, não há a necessidade de a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 realizarem o processamento.
Alternativamente, o codificador de vídeo 20 pode diretamente armazenar um bloco de imagem reconstruído como um bloco de referência sem a necessidade de o filtro 220 realizar o processamento. Alternativamente, a unidade de quantização 208 e a unidade de quantização inversa 210 no codificador de vídeo 20 podem ser combinadas juntas. O filtro loop 220 é opcional e, em um caso de codificação de compressão sem perdas, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 são opcionais. Deve ser entendido que, em diferentes cenários de aplicação, a unidade de predição inter 244 e unidade de predição intra 254 podem ser usadas seletivamente.
[0157] A FIG. 3 é um diagrama de bloco esquemático/conceitual de um exemplo de um decodificador 30 configurado para implementar uma modalidade deste pedido. O decodificador de vídeo 30 é configurado para receber os dados de imagem codificados (por exemplo, um fluxo de bits codificado) 21 codificado pelo codificador 20 ou semelhantes, para obter uma imagem decodificada 231. Em um processo de decodificação, o decodificador de vídeo 30 recebe os dados de vídeo a partir do codificador de vídeo 20, por exemplo, um fluxo de bits de vídeo codificado que indica um bloco de imagem de uma fatia de vídeo codificada e um elemento de sintaxe associado.
[0158] No exemplo da FIG. 3, o decodificador 30 inclui 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 buffer 316, um filtro loop 320, um buffer de imagem decodificada 330 e uma unidade de predição de processamento 360. A unidade de predição de processamento 360 pode incluir uma unidade de predição inter 344, uma unidade de predição intra 354 e uma unidade de seleção de modo 362. Em alguns exemplos, o decodificador de vídeo 30 pode realizar a decodificação transversal geralmente reversa à codificação transversal descrita com referência ao codificador de vídeo 20 na FIG. 2.
[0159] A unidade de decodificação de entropia 304 é configurada para realizar a decodificação de entropia nos dados de imagem codificados 21, para obter um coeficiente quantizado 309, um parâmetro de codificação decodificado (não mostrado na FIG. 3) e/ou semelhantes, por exemplo, qualquer um ou todos de um parâmetro de predição inter, um parâmetro de predição intra, um parâmetro de filtro loop e/ou outro elemento de sintaxe (decodificado). A unidade de decodificação de entropia 304 é configurada adicionalmente para encaminhar o parâmetro de predição inter, o parâmetro de predição intra e/ou o outro elemento de sintaxe para a unidade de predição de processamento 360. O decodificador de vídeo 30 pode receber um elemento de sintaxe em um nível de fatia de vídeo e/ou um elemento de sintaxe em um nível de bloco de vídeo.
[0160] A unidade de quantização inversa 310 pode ter uma mesma função que a unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ter uma mesma função que a unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ter uma mesma função que a unidade de reconstrução 214, o buffer 316 pode ter uma mesma função mesmo como o buffer 216, o filtro loop 320 pode ter uma mesma função que o filtro loop 220 e o buffer de imagem decodificada 330 pode ter uma mesma função que o buffer de imagem decodificada 230.
[0161] A unidade de predição de processamento 360 pode incluir a unidade de predição inter 344 e a unidade de predição intra 354. A unidade de predição inter 344 pode ter uma função similar àquela da unidade de predição inter 244 e a unidade de predição intra 354 pode ter uma função similar àquela da unidade de predição intra 254. A unidade de predição de processamento 360 é usualmente configurada para realizar a bloco de predição e/ou obter um bloco de predição 365 a partir dos dados codificados 21 e receber ou obter (explícita ou implicitamente) um parâmetro e/ou informações relacionadas à predição sobre um modo de predição selecionado, por exemplo, a partir da unidade de decodificação de entropia 304.
[0162] Quando uma fatia de vídeo é codificada como uma fatia de intracodificada (I), a unidade de predição intra 354 da unidade de predição de processamento 360 é configurada para gerar o bloco de predição 365 usado para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e dados a partir de um bloco decodificado anterior de um quadro ou imagem atual. Quando um quadro de vídeo é codificado como uma fatia inter-codificada (isto é, B ou P), a unidade de predição inter 344 (por exemplo, uma unidade de compensação de movimento) da unidade de predição de processamento 360 é configurada para gerar o bloco de predição 365 usado para um bloco de vídeo da fatia de vídeo atual com base em um vetor de movimento e outro elemento de sintaxe recebido a partir da unidade de decodificação de entropia 304. Para a predição inter, um bloco de predição pode ser gerado a partir de uma das imagens de referência em uma lista de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência: uma lista 0 e uma lista 1 por meio do uso de uma tecnologia de construção padrão com base em uma imagem de referência armazenada no DPB 330.
[0163] A unidade de predição de processamento 360 é configurada para: determinar informações de predição usadas para o bloco de vídeo da fatia de vídeo atual analisando o vetor de movimento e o outro elemento de sintaxe e usar as informações de predição para gerar o bloco de predição usado para o bloco de vídeo atual que está sendo decodificado. Por exemplo, a unidade de predição de processamento 360 determina, por meio do uso de alguns elementos de sintaxe recebidos, um modo de predição (por exemplo, intra ou predição inter) usado para codificar um bloco de vídeo de uma fatia de vídeo, um tipo de fatia de predição inter (por exemplo, uma fatia B, uma fatia P ou uma fatia GPB), informações de construção de uma ou mais das imagens em uma lista de imagem de referência usada para uma fatia, um vetor de movimento de cada bloco de vídeo inter-codificado usado para uma fatia, um estado de predição inter de cada bloco de vídeo inter-codificado usado para uma fatia e outras informações, para decodificar o bloco de vídeo da fatia de vídeo atual.
Em outro exemplo desta revelação, o elemento de sintaxe recebido pelo decodificador de vídeo 30 a partir do fluxo de bits inclui os elementos de sintaxe em um ou mais de um conjunto de parâmetros adaptativos (adaptive parameter set, APS), um conjunto de parâmetros de sequência (sequence parameter set, SPS), um conjunto de parâmetros de imagem (picture parameter set, PPS) ou um cabeçalho de fatia.
[0164] A unidade de quantização inversa 310 pode ser configurada para realizar a quantização inversa (isto é, desquantização) em um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pela unidade de decodificação de entropia 304. O processo de quantização inversa pode incluir: usar um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo, para determinar um grau de quantização que deve ser aplicado e determinar um grau de quantização inversa que deve ser aplicado.
[0165] A unidade de processamento de transformada inversa 312 é configurada para aplicar a transformada inversa (por exemplo, DCT inversa, transformada inteira inversa ou um processo de transformada inversa conceitualmente similar) ao coeficiente de transformada, para gerar um bloco residual em um domínio de amostra.
[0166] A unidade de reconstrução 314 (por exemplo, o somador 314) é configurada para adicionar um bloco de transformada inversa 313 (isto é, um bloco residual reconstruído 313) ao bloco de predição 365, para obter um bloco reconstruído 315 em um domínio de amostra, por exemplo, adicionando um valor de amostra do bloco residual reconstruído 313 a um valor de amostra do bloco de predição 365.
[0167] A unidade de filtro loop 320 (em um loop de codificação ou depois de um loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, de modo a suavizar a realização da transformação de amostra ou melhorar a qualidade de vídeo. Em um exemplo, a unidade de filtro loop 320 pode ser configurada para realizar qualquer combinação das seguintes tecnologias de filtragem. A unidade de filtro loop 320 é destinada a representar um ou mais filtros loop, por exemplo, um filtro de desbloqueio, um filtro de deslocamento adaptativo à amostra (sample-adaptive offset, SAO) ou outro filtro, tal como um filtro bilateral, um filtro loop adaptativo
(adaptive loop filter, ALF), um filtro de nitidez ou suavização ou um filtro colaborativo. Embora a unidade de filtro loop 320 seja mostrada na FIG. 3 como um filtro no loop, a unidade de filtro loop 320 pode ser implementada como um filtro de pós-loop em outras configurações.
[0168] O bloco de vídeo decodificado 321 em um determinado quadro ou imagem é, em seguida, armazenado no buffer de imagem decodificada 330 que armazena uma imagem de referência usada para compensação de movimento subsequente.
[0169] O decodificador 30 é configurado para emitir a imagem decodificada 31 por meio do uso de uma saída 332 e semelhantes, para apresentar a imagem decodificada 31 para o usuário ou fornecer a imagem decodificada 31 para o usuário para visualização.
[0170] Outra variação do decodificador de vídeo 30 pode ser configurada para decodificar um fluxo de bits comprimido. Por exemplo, o decodificador 30 pode gerar um fluxo de vídeo emitido sem a unidade de filtro loop 320. Por exemplo, o decodificador 30 não baseado em transformada pode diretamente desquantizar um sinal residual sem a unidade de processamento de transformada inversa 312 para alguns 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 que são combinadas em uma unidade.
[0171] Especificamente, nesta modalidade da presente invenção, o decodificador 30 é configurado para implementar um método de predição inter descrito na seguinte modalidade.
[0172] Deve ser entendido que outra variante estrutural do decodificador de vídeo 30 pode ser configurada para decodificar o fluxo de bits de vídeo codificado. Por exemplo, o decodificador de vídeo 30 pode gerar um fluxo de vídeo emitido sem a necessidade de o filtro 320 realizar o processamento. Alternativamente, para alguns blocos de imagem ou quadros de imagem, a unidade de decodificação de entropia 304 do decodificador de vídeo 30 não obtém um coeficiente quantizado através da decodificação e, correspondentemente, não há a necessidade de a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 realizarem o processamento. O filtro loop 320 é opcional e, em um caso de compressão sem perdas, a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 são opcionais. Deve ser entendido que, em diferentes cenários de aplicação, a unidade de predição inter e a unidade de predição intra podem ser usadas seletivamente.
[0173] Deve ser entendido que, no codificador 20 e no decodificador 30 nesta aplicação, um resultado de processamento para um procedimento pode ser emitido para um próximo procedimento depois de ser processado adicionalmente. Por exemplo, depois de um procedimento, tal como a filtragem de interpolação, a derivação de vetor de movimento ou a filtragem loop, uma operação, tal como corte ou mudança de deslocamento é realizada adicionalmente em um resultado de processamento de um procedimento correspondente.
[0174] Por exemplo, um vetor de movimento de um ponto de controle de um bloco de imagem atual ou um vetor de movimento de um sub-bloco de um bloco de imagem atual que é derivado de um vetor de movimento de um bloco de codificação afim vizinho pode ser processado adicionalmente. Isto não é limitado neste pedido. Por exemplo, um valor de um vetor de movimento é restringido a estar dentro de uma faixa de largura de bits específica. Assumindo que uma largura de bits permitida do vetor de movimento seja bitDepth, o valor do vetor de movimento varia entre -2^(bitDepth-1) a 2^(bitDepth-1)-1, onde o símbolo “^” representa exponenciação. Se bitDepth for 16, o valor varia entre - 32768 a 32767. Se bitDepth for 18, o valor varia entre -131072 a 131071. Para outro exemplo, um valor de um vetor de movimento (por exemplo, vetores de movimento MVs de quatro sub-blocos 4x4 em um bloco de imagem 8x8) é restrita, de modo que uma diferença máxima entre as partes inteiras dos MVs dos quatro sub-blocos 4x4 não exceda N amostras, por exemplo, não exceda uma amostra.
[0175] As seguintes duas maneiras podem ser usadas para restringir um valor de um vetor de movimento para estar dentro de uma faixa de largura de bits específica:
[0176] Maneira 1: Um bit de estouro mais significante do vetor de movimento é removido: ux=(vx + 2bitDepth) % 2bitDepth vx=(ux ≥ 2bitDepth-1) ? (ux − 2bitDepth) : ux uy=(vy + 2bitDepth) % 2bitDepth vy=(uy ≥ 2bitDepth-1) ? (uy − 2bitDepth) : uy
[0177] Neste relatório, vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco do bloco de imagem, vy é um componente vertical do vetor de movimento do bloco de imagem ou do sub-bloco do bloco de imagem, ux e uy são valores intermediários e bitDepth representa uma largura de bits.
[0178] Por exemplo, um valor de vx é -32769 e é 32767 obtido, de acordo com as fórmulas anteriores. Um valor é armazenado em um computador em uma forma de um código suplementar binário, um código suplementar binário de -32769 é 1,0111,1111,1111,1111 (17 bits) e o computador descarta um bit mais significante quando o estouro ocorre. Portanto, o valor de vx é 0111,1111,1111,1111, isto é, 32767, que é compatível com o resultado obtido, de acordo com as fórmulas.
[0179] Maneira 2: O corte é realizado no vetor de movimento, como mostrado nas seguintes fórmulas:
vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
[0180] Neste relatório, vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco do bloco de imagem, vy é um componente vertical do vetor de movimento do bloco de imagem ou o sub-bloco do bloco de imagem, x, y e z correspondem aos três valores de entrada de um processo de corte MV Clip3 e Clip3 representa o corte de um valor de z para uma faixa [x, y]. x ; z<x Clip3(x, y, z) = �y ; z>y z ; de outro modo
[0181] A FIG. 4 é um diagrama estrutural esquemático de um dispositivo de codificação de vídeo 400 (por exemplo, um dispositivo de codificação de vídeo 400 ou um dispositivo de decodificação de vídeo 400), de acordo com uma modalidade deste pedido. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades descritas neste relatório descritivo. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador de vídeo (por exemplo, o decodificador 30 na FIG. 1A) ou um codificador de vídeo (por exemplo, o codificador 20 na FIG. 1A).
Em outra modalidade, o dispositivo de codificação de vídeo 400 pode ser um ou mais componentes do decodificador 30 na FIG. 1A ou do codificador 20 na FIG. 1A.
[0182] O dispositivo de codificação de vídeo 400 inclui: uma porta de ingresso 410 e uma unidade receptora (Rx) 420 que são configuradas para receber os dados; um processador, uma unidade lógica ou uma unidade de processamento central (CPU) 430 que são configurados para processar os dados; uma unidade transmissora (Tx) 440 e uma porta de egresso 450 que são configuradas para transmitir os dados; e uma memória 460 configurada para armazenar os dados. O dispositivo de codificação de vídeo 400 pode incluir adicionalmente um componente óptico para elétrico e um componente elétrico para ópticos (EO) acoplados à porta de ingresso 410, à unidade receptora 420, à unidade transmissora 440 e à porta de egresso 450 para a saída ou entrada de um sinal óptico ou um sinal elétrico.
[0183] 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, um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 se comunica com a porta de ingresso 410, a unidade receptora 420, a unidade transmissora 440, a porta de egresso 450 e a memória
460. O processador 430 inclui um módulo de codificação 470 (por exemplo, um módulo de codificação 470 ou um módulo de decodificação 470). O módulo de codificação/decodificação 470 implementa as modalidades reveladas neste relatório descritivo, para implementar um método de bloco de predição de croma fornecido nas modalidades deste pedido. Por exemplo, o módulo de codificação/decodificação 470 realiza, processa ou fornece várias operações de codificação. Portanto, o módulo de codificação/decodificação 470 substancialmente expande as funções do dispositivo de codificação de vídeo 400 e afeta a comutação do dispositivo de codificação de vídeo 400 entre diferentes estados. Alternativamente, o módulo de codificação/decodificação 470 é implementado como uma instrução armazenada na memória 460 e executada pelo processador 430.
[0184] A memória 460 inclui 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 estouro, para armazenar programas quando estes programas são selecionados para execução e, para armazenar instruções e dados que são lidos durante execução do programa. A memória 460 pode ser volátil e/ou não volátil, e pode ser uma memória somente de leitura (ROM), uma memória de acesso aleatório (RAM), uma memória endereçável de conteúdo ternário (ternary content-addressable memory, TCAM), e/ou uma memória de acesso aleatório estática (SRAM).
[0185] A FIG. 5 é um diagrama de bloco simplificado de um aparelho 500 que pode ser usado como ou tanto como o dispositivo de origem 12 quanto como o dispositivo de destino 14 na FIG. 1A, de acordo com uma modalidade de exemplo. O aparelho 500 pode implementar as tecnologias deste pedido.
Em outras palavras, a FIG. 5 é um diagrama esquemático de bloco de uma implementação de um dispositivo de codificação ou um dispositivo de decodificação (um dispositivo de codificação 500, para abreviação), de acordo com uma modalidade deste pedido. O dispositivo de codificação 500 pode incluir um processador 510, uma memória 530 e um sistema de barramento
550. O processador e a memória são conectados através do sistema de barramento. A memória é configurada para armazenar uma instrução. O processador é configurado para executar a instrução armazenada na memória.
A memória do dispositivo de codificação armazena o código de programa e o processador do dispositivo de codificação pode invocar o código de programa armazenado na memória, para realizar o método de codificação ou decodificação de vídeo descrito neste pedido. Para evitar repetição, os detalhes não são descritos neste relatório.
[0186] Nesta modalidade deste pedido, o processador 510 pode ser uma unidade de processamento central (central processing unit, “CPU”, para abreviação). Alternativamente, o processador 510 pode ser outro processador de uso geral, um processador de sinal digital (DSP), um circuito integrado específico da aplicação (ASIC), um arranjo de portas programáveis em campo (FPGA) ou outro dispositivo lógico programável, uma porta discreta ou dispositivo lógico de transistor, um componente de hardware discreto ou semelhantes. O processador de uso geral pode ser um microprocessador, qualquer processador convencional ou semelhantes.
[0187] A memória 530 pode incluir uma memória somente de leitura (ROM) ou uma memória de acesso aleatório (RAM). Qualquer outro tipo de dispositivo de armazenamento apropriado pode ser usado como a memória
530. A memória 530 pode incluir código e dados 531 acessados pelo processador 510 através do barramento 550. A memória 530 pode incluir adicionalmente um sistema operacional 533 e um programa de aplicativo 535.
O programa de aplicativo 535 inclui pelo menos um programa que permite que o processador 510 realize o método de codificação ou decodificação de vídeo (em particular, o método de predição inter descrito neste pedido) descrito neste pedido. Por exemplo, o programa de aplicativo 535 pode incluir aplicativos de 1 a N e inclui adicionalmente um aplicativo de codificação ou decodificação de vídeo (um aplicativo de codificação de vídeo, para abreviação) para realizar o método de codificação ou decodificação de vídeo descrito neste pedido.
[0188] Além de um barramento de dados, o sistema de barramento 550 pode incluir adicionalmente um barramento de força, um barramento de controle, um barramento de sinal de estado e semelhantes. Entretanto, para descrição clara, vários tipos de barramentos na figura são marcados como o sistema de barramento 550.
[0189] Opcionalmente, o dispositivo de codificação 500 pode incluir adicionalmente um ou mais dispositivos de saída, por exemplo, uma tela 570.
Em um exemplo, a tela 570 pode ser uma tela sensível ao toque que combine uma tela e um elemento sensível ao toque que é operável para detectar uma entrada de toque. A tela 570 pode ser conectada ao processador 510 através do barramento 550.
[0190] O seguinte descreve em detalhes as soluções nas modalidades deste pedido.
[0191] A codificação de vídeo principalmente inclui processos, tais como predição intra (Intra-Prediction), predição inter (Inter-Prediction),
transformada (Transform), quantização (Quantization), codificação de entropia (entropy encode) e filtragem no loop (in-loop filtering) (principalmente a filtragem de desbloqueio, de-blocking filtering). Depois de uma imagem ser particionada em blocos de codificação, a predição intra ou predição inter é realizada. Em seguida, depois de um residual ser obtido, a transformada e a quantização são realizadas. Finalmente, a codificação de entropia é realizada e um fluxo de bits é emitido. Neste relatório, um bloco de codificação é um arranjo MxN incluindo as amostras (M pode ser igual a N ou pode não ser igual a N). Além disso, um valor de amostra de cada localização de amostra é conhecido.
[0192] A predição intra é prever um valor de amostra de uma amostra em um bloco de codificação atual por meio do uso de um valor de amostra de uma amostra em uma região reconstruída em uma imagem atual.
[0193] A predição inter é pesquisar uma imagem reconstruída para um bloco de referência correspondente para um bloco de codificação atual em uma imagem atual, para obter as informações de movimento do bloco de codificação atual e, em seguida, calcular as informações de predição ou um preditor (as informações e o valor não são distinguidos no seguinte) de um valor de amostra de uma amostra no bloco de codificação atual com base nas informações de movimento. Um processo de cálculo de informações de movimento é referido como estimativa de movimento (motion estimation, ME), e um processo de cálculo de um preditor de um valor de amostra de uma amostra em um bloco de codificação atual é referido como compensação de movimento (motion compensation, MC).
[0194] Deve ser observado que as informações de movimento do bloco de codificação atual incluem informações de indicação de direção de predição (geralmente predição forward, predição backward ou predição bidirecional), um ou dois vetores de movimento (motion vector, MV) apontam para um bloco de referência e as informações de indicação (geralmente marcadas como um índice de referência, Reference Index) de uma imagem em que o bloco de referência está localizado.
[0195] A predição forward é selecionar uma imagem de referência a partir de um conjunto de imagens de referência posteriores para um bloco de codificação atual, para obter um bloco de referência. A predição backward é selecionar uma imagem de referência a partir de um conjunto de imagens de referência anteriores para um bloco de codificação atual, para obter um bloco de referência. A predição bidirecional é selecionar uma imagem de referência a partir de um conjunto de imagens de referência posteriores e uma imagem de referência a partir de um conjunto de imagens de referência anteriores, para obter um bloco de referência. Quando a predição bidirecional é realizada, há dois blocos de referência para um bloco de codificação atual. Cada bloco de referência precisa ser indicado por meio do uso de um vetor de movimento e um índice de quadro de referência. Em seguida, um preditor de um valor de amostra de uma amostra no bloco atual é determinado com base nos valores de amostra, de amostras nos dois blocos de referência.
[0196] Durante a estimativa de movimento, uma pluralidade de blocos de referência precisa ser experimentada para o bloco de codificação atual na imagem de referência e um bloco de referência específico finalmente usado para a predição é determinado através da otimização de distorção de taxa (rate-distortion optimization, RDO) ou outros métodos.
[0197] Depois que as informações de predição são obtidas através de predição intra ou predição inter, as informações residuais são obtidas subtraindo as informações de predição correspondentes do valor de amostra da amostra no bloco de codificação atual. Em seguida, as informações residuais são transformadas por meio do uso de um método de transformada de cosseno discreta (discrete cosine transformation, DCT) ou semelhantes, e um fluxo de bits é obtido através de quantização e codificação de entropia. Depois de um sinal de predição ser combinado com um sinal residual reconstruído, a filtragem precisa ser realizada para obter um sinal reconstruído. O sinal reconstruído é usado como um sinal de referência para a codificação subsequente.
[0198] A decodificação é um processo inverso da codificação. Por exemplo, as informações residuais são primeiro obtidas através de decodificação de entropia, quantização inversa e transformada inversa e um fluxo de bits é decodificado para determinar se a predição intra ou a predição inter é realizada em um bloco de codificação atual. Se a predição intra for realizada, as informações de predição são construídas com base em um valor de amostra de uma amostra em uma região reconstruída em torno do bloco de codificação atual por meio do uso do método de predição intra. Se a predição inter for realizada, as informações de movimento precisam ser obtidas através de análise, um bloco de referência é determinado em uma imagem reconstruída com base nas informações de movimento obtido através de análise e o valor de amostra da amostra no bloco é usado como as informações de predição. Este processo é referido como a compensação de movimento (motion compensation, MC). As informações reconstruídas podem ser obtidas pela combinação das informações de predição e das informações residuais e realizam uma operação de filtragem.
[0199] Em HEVC, dois modos de predição inter são usados: um modo de predição de vetor de movimento avançado (Advanced Motion Vector Prediction, AMVP) e um modo de mesclagem (Merge).
[0200] No modo AMVP, uma lista de vetores de movimento de candidato é construída com base nas informações de movimento de um bloco de codificação vizinho espacialmente ou um bloco de codificação vizinho temporalmente de um bloco de codificação atual. Em seguida, um vetor de movimento ideal é determinado na lista de vetores de movimento de candidato e é usado como um preditor de vetor de movimento (motion vector prediction,
MVP) do bloco de codificação atual. Um custo de distorção de taxa é calculado, de acordo com uma fórmula J=SAD + λ, onde J é o custo de distorção de taxa, RD Cost, SAD é uma soma de diferenças absolutas (Sum of Absolut Differences, SAD) entre um valor de amostra original e um valor de amostra prognosticado obtida através de estimativa de movimento por meio do uso do preditor de vetor de movimento de candidato, R é uma taxa de bits e λ é um multiplicador de Lagrange. Um lado de decodificador transfere um valor de índice do preditor de vetor de movimento selecionado na lista de vetores de movimento de candidato e um valor de índice de um quadro de referência para um lado de decodificador. Além disso, a pesquisa de movimento é realizada em uma vizinhança centrada no MVP, para obter um vetor de movimento real do bloco de codificação atual. O lado de decodificador transfere uma diferença (diferença de vetor de movimento) entre o MVP e o vetor de movimento real para o lado de decodificador.
[0201] No modo de mesclagem, uma lista de informações de movimento de candidato é construída com base nas informações de movimento de um bloco de codificação vizinho espacialmente ou um bloco de codificação vizinho temporalmente de um bloco de codificação atual. Em seguida, as informações de movimento ideais são determinadas na lista de informações de movimento de candidato com base em um custo de distorção de taxa e são usadas como informações de movimento do bloco de codificação atual. Em seguida, um valor de índice (denotado como um índice de mesclagem abaixo) de uma localização das informações de movimento ideais na lista de informações de movimento de candidato é transferido para um lado de decodificador. As informações de movimento e as informações de movimento de candidato temporais do bloco de codificação atual são mostradas na FIG. 6.
As informações de movimento de candidatos espaciais são de cinco blocos vizinhos espacialmente (A0, A1, B0, B1 e B2). Se um bloco vizinho não estiver disponível ou um modo de predição inter for usado, as informações de movimento do bloco vizinho não são adicionadas à lista de informações de movimento de candidato. As informações de movimento de candidato temporais do bloco de codificação atual são obtidas pela escala um MV de um bloco em uma localização correspondente em um quadro de referência com base em contagens de ordem de imagem (picture order count, POC) do quadro de referência e um quadro atual. Se um bloco em uma localização T no quadro de referência estiver disponível, é primeiramente determinado. Se o bloco não estiver disponível, um bloco em uma localização C é selecionado.
[0202] Na predição inter em HEVC, todas as amostras em um bloco de codificação têm as mesmas informações de movimento e, em seguida, a compensação de movimento é realizada com base nas informações de movimento, para obter os preditores das amostras no bloco de codificação.
[0203] Uma sequência de vídeos inclui uma quantidade de imagens específicas, que são usualmente referidas como quadros (Frame). As imagens vizinhas são usualmente similares, isto é, existem muitas redundâncias. A compensação de movimento é realizada para aumentar uma razão de compressão eliminando uma redundância entre quadros vizinhos. A compensação de movimento é um método para descrever uma diferença entre quadros vizinhos (“vizinho” neste relatório indica que dois quadros são vizinhos em termos de uma relação de codificação, mas não são necessariamente vizinhos em termos de uma sequência de reprodução) e é uma parte de um processo de predição inter. Antes da compensação de movimento ser realizada, as informações de movimento de um bloco de codificação foram obtidas através de estimativa de movimento ou decodificação de fluxo de bits. As informações de movimento principalmente incluem: (1) uma direção de predição do bloco de codificação, incluindo predição forward, predição backward e predição bidirecional, onde a predição forward indica que o bloco de codificação é prognosticado por meio do uso de um quadro codificado anterior, a predição backward indica que o bloco de codificação é prognosticado por meio do uso de um quadro codificado subsequente e a predição bidirecional indica que o bloco de codificação é prognosticado por meio do uso de quadros codificado tanto posteriores quanto anteriores; (2) um índice de quadro de referência do bloco de codificação, que indica um quadro em que um bloco de referência do bloco de codificação atual está localizado; e (3) um vetor de movimento MV do bloco de codificação, que indica um deslocamento de movimento do bloco de codificação em relação ao bloco de referência, onde o MV inclui um componente horizontal (denotado como 𝑀𝑀𝑀𝑀𝑥𝑥 ) e um componente vertical (denotado como 𝑀𝑀𝑀𝑀𝑦𝑦 ) que, respectivamente, indicam um deslocamento de movimento do bloco de codificação em relação ao bloco de referência em uma direção horizontal e um deslocamento de movimento do bloco de codificação em relação ao bloco de referência em uma direção vertical.
Quando a predição forward ou a predição backward é realizada no bloco de codificação, existe apenas um MV.
Quando a predição bidirecional é realizada no bloco de codificação, existem dois MVs.
A FIG. 7 mostra as descrições das informações de movimento anteriores.
Na FIG. 7 e nas descrições anteriores sobre as informações de movimento e as informações de predição, 0 indica “posterior” e
1 indica “anterior”. Por exemplo, Ref0 representa um quadro de referência posterior, Ref1 representa um quadro de referência anterior, MV0 representa um vetor de movimento posterior e MV1 representa um vetor de movimento anterior.
A, B e C, respectivamente, representam um bloco de referência posterior, um bloco de codificação atual e um bloco de referência anterior,
respectivamente.
Cur indica um quadro de codificação atual e uma linha tracejada indica uma trilha de movimento de B.
A compensação de movimento é um processo de descoberta de um bloco de referência com base nas informações de movimento e o processamento do bloco de referência para obter um bloco de predição de um bloco de codificação.
[0204] Um processo de compensação de movimento básico de predição forward é o seguinte: Como mostrado na FIG. 7, um bloco de codificação atual é um bloco B e uma largura e uma altura de B são, respectivamente, W e H. Neste caso, é aprendido, com base nas informações de movimento, que um quadro de referência posterior do bloco de codificação atual B é um quadro Ref0 e um vetor de movimento posterior do bloco de codificação atual B é MV0=(𝑀𝑀𝑀𝑀0𝑥𝑥 , 𝑀𝑀𝑀𝑀0𝑦𝑦 ). Quando o bloco de codificação B no quadro Cur é codificado, um mesmo ponto de coordenada é encontrado primeiro no quadro Ref0 com base em coordenadas (i, j) do canto superior esquerdo de B no quadro Cur e um bloco B' em Ref0 pode ser obtido com base na largura e na altura do bloco B. Em seguida, o bloco B' é movido para um bloco A com base no MV0 de B'. Finalmente, o processamento de interpolação é realizado no bloco A para obter um bloco de predição do bloco de codificação atual B. Um valor de amostra de cada amostra no bloco de predição do bloco de codificação atual B é referido como um preditor de uma amostra correspondente no bloco B. Um processo de compensação de movimento de predição backward é o mesmo que o da predição forward e uma diferença reside apenas em uma direção de referência. Deve ser observado que os blocos de predição obtidos através de compensação de movimento de predição backward e compensação de movimento de predição forward são, respectivamente, referidos como um bloco de predição forward e um bloco de predição backward. Quando a predição bidirecional não é realizada no bloco de codificação, o bloco de predição forward obtido e o bloco de predição backward obtido são os blocos de predição do bloco de codificação atual.
[0205] Para a predição bidirecional, um bloco de predição forward e um bloco de predição backward são obtidos, respectivamente, durante a compensação de movimento de predição forward e compensação de movimento de predição backward com base nas informações de movimento e, em seguida, um bloco de predição do bloco de codificação B é obtido através de predição ponderada e fluxo óptico bidirecional (Bi-directional optical flow, BIO ou BDOF) em valores de amostra em uma mesmo localização no bloco de predição forward e no bloco de predição backward.
[0206] No método de predição ponderada, quando o preditor do bloco de codificação atual é calculado, apenas as somas ponderadas precisam ser sequencialmente realizadas no valor de amostra do bloco de predição forward e no valor de amostra isotrópico do bloco de predição backward, isto é, 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗) = 𝜔𝜔0 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗) + 𝜔𝜔1 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗) (1)
[0207] Na fórmula (1), 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗), 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗) e 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(𝑖𝑖, 𝑗𝑗) são, respectivamente, preditores do bloco de predição, o bloco de predição forward e o bloco de predição backward do bloco de codificação atual nas coordenadas (𝑖𝑖, 𝑗𝑗), e 𝜔𝜔0 e 𝜔𝜔1 (0 ≤ 𝜔𝜔0 ≤1, 0 ≤𝜔𝜔1 ≤1, e 𝜔𝜔0 + 𝜔𝜔1 =1) são coeficientes de ponderação e os valores de 𝜔𝜔0 e 𝜔𝜔1 podem variar com um codificador.
Geralmente, 𝜔𝜔0 e 𝜔𝜔1 são ambos 1/2.
[0208] A FIG. 8 mostra um exemplo de obtenção de um bloco de predição de um bloco de codificação atual através da soma ponderada. Na FIG.
8, PredB, PredA e PredC são, respectivamente, um bloco de predição, um bloco de predição forward e um bloco de predição backward de um bloco de codificação atual e têm um tamanho de 4x4. Um valor de um bloco pequeno no bloco de predição é um preditor de um ponto e um sistema de coordenadas é estabelecido para PredB, PredA e PredC com um canto superior esquerdo como origem. Por exemplo, um preditor de PredB nas coordenadas (0,0) é: PredB(0,0) = 𝜔𝜔0 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(0,0) + 𝜔𝜔1 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(0,0) = 𝜔𝜔0 𝑎𝑎0,0 + 𝜔𝜔1 𝑐𝑐0,0
[0209] Um preditor de PredB nas coordenadas (0,1) é: PredB(0,1) = 𝜔𝜔0 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(0,1) + 𝜔𝜔1 𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃(0,1)
= 𝜔𝜔0 𝑎𝑎0,1 + 𝜔𝜔1 𝑐𝑐0,1
[0210] Outros pontos são sequencialmente calculados e os detalhes não são descritos.
[0211] Pode ser aprendido que a tecnologia de predição ponderada de predição bidirecional é simples em cálculo, mas tal método de compensação de movimento com base em bloco é muito grosseiro, o que atinge um efeito de predição deficiente especialmente para uma imagem com a textura complexa e atinge baixa eficácia de compressão.
[0212] Em BIO, a compensação de movimento de predição bidirecional é realizada em uma CU atual para obter um bloco de predição forward e um bloco de predição backward, em seguida, um vetor de movimento refinado de cada sub-bloco 4x4 na CU atual é derivado com base em um preditor forward e um preditor backward e, finalmente, a compensação é realizada novamente em cada amostra no bloco de codificação atual, para finalmente obter um bloco de predição da CU atual.
[0213] O vetor de movimento refinado �𝑣𝑣𝑥𝑥 , 𝑣𝑣𝑦𝑦 � de cada sub-bloco 4x4 é obtido aplicando BIO a uma janela 6x6 Ω em torno do sub-bloco para minimizar os preditores de L0 e L1. Especificamente, �𝑣𝑣𝑥𝑥 , 𝑣𝑣𝑦𝑦 � é derivado, de acordo com uma fórmula. ′ ′ 𝑣𝑣𝑥𝑥 = 𝑆𝑆1 > 0? 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐3 �−𝑡𝑡ℎ𝐵𝐵𝐵𝐵𝐵𝐵 , 𝑡𝑡ℎ𝐵𝐵𝐵𝐵𝐵𝐵 , −�(𝑆𝑆3 ∙ 23 ) ≫ ⌊log 2 𝑆𝑆1 ⌋�� : 0 ′ 𝑣𝑣𝑦𝑦 = 𝑆𝑆5 > 0? 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐3 �−𝑡𝑡ℎ𝐵𝐵𝐵𝐵𝐵𝐵 ′ , 𝑡𝑡ℎ𝐵𝐵𝐵𝐵𝐵𝐵 , − ��𝑆𝑆6 ∙ 23 ( 2) − ��𝑣𝑣𝑥𝑥 𝑆𝑆2,𝑚𝑚 � ≪ 12 + 𝑣𝑣𝑥𝑥 𝑆𝑆2,𝑠𝑠 �⁄2� ≫ ⌊log 2 𝑆𝑆5 ⌋�� : 0
[0214] Neste relatório, ⌊∙⌋ é uma função floor (floor(A) representa um ' número inteiro máximo não maior que A); thBIO = 213− BD , e é um limite para evitar a transferência incorreta causada por um vetor de movimento refinado excessivamente grande; 𝑆𝑆2,𝑚𝑚 = 𝑆𝑆2 ≫ 12 e 𝑆𝑆2,𝑠𝑠 = 𝑆𝑆2 &(212 − 1); BD é uma largura de bits de amostra atual; a operação ? indica que, se S1 > 0 , ' vx = clip3(−thBIO ' , −thBIO , −(( S3 • 23 ) >> log 2 S5  )) vx = 0 ; e, de outro modo, e & é uma operação de bits AND.
[0215] 𝑆𝑆1 , 𝑆𝑆2 , 𝑆𝑆3 , 𝑆𝑆5 e 𝑆𝑆6 são calculados, de acordo com a seguinte fórmula: 𝑆𝑆1 = � 𝜓𝜓𝑥𝑥 (𝑖𝑖, 𝑗𝑗) ∙ 𝜓𝜓𝑥𝑥 (𝑖𝑖, 𝑗𝑗) (𝑖𝑖,𝑗𝑗)∈Ω 𝑆𝑆3 = � 𝜃𝜃(𝑖𝑖, 𝑗𝑗) ∙ 𝜓𝜓𝑥𝑥 (𝑖𝑖, 𝑗𝑗) (𝑖𝑖,𝑗𝑗)∈Ω 𝑆𝑆2 = � 𝜓𝜓𝑥𝑥 (𝑖𝑖, 𝑗𝑗) ∙ 𝜓𝜓𝑦𝑦 (𝑖𝑖, 𝑗𝑗) (3) (𝑖𝑖,𝑗𝑗)∈Ω 𝑆𝑆5 = � 𝜓𝜓𝑦𝑦 (𝑖𝑖, 𝑗𝑗) ∙ 𝜓𝜓𝑦𝑦 (𝑖𝑖, 𝑗𝑗) (𝑖𝑖,𝑗𝑗)∈Ω 𝑆𝑆6 = � 𝜃𝜃(𝑖𝑖, 𝑗𝑗) ∙ 𝜓𝜓𝑦𝑦 (𝑖𝑖, 𝑗𝑗) (𝑖𝑖,𝑗𝑗)∈Ω
[0216] Na fórmula, 𝜕𝜕𝐼𝐼 (1) 𝜕𝜕𝐼𝐼 (0) 𝜓𝜓𝑥𝑥 (𝑖𝑖, 𝑗𝑗) = � (𝑖𝑖, 𝑗𝑗) + (𝑖𝑖, 𝑗𝑗)� ≫ 3 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 𝜕𝜕𝐼𝐼 (1) 𝜕𝜕𝐼𝐼 (0) (4) 𝜓𝜓𝑦𝑦 (𝑖𝑖, 𝑗𝑗) = � (𝑖𝑖, 𝑗𝑗) + (𝑖𝑖, 𝑗𝑗)� ≫ 3 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 𝜃𝜃(𝑖𝑖, 𝑗𝑗) = �𝐼𝐼 (1) (𝑖𝑖, 𝑗𝑗) ≫ 6� − �𝐼𝐼 (0) (𝑖𝑖, 𝑗𝑗) ≫ 6�
[0217] Neste relatório, 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗) é um preditor de uma localização de amostra (𝑖𝑖, 𝑗𝑗) na CU atual (k é igual a 0 ou 1, 0 indica “posterior” e 1 indica 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) “anterior”, que são os mesmos abaixo) e (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são, 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 respectivamente, um gradiente horizontal e um gradiente vertical de uma localização de amostra (𝑖𝑖, 𝑗𝑗), e são obtidos, de acordo com a seguinte fórmula: 𝜕𝜕𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗) = �𝐼𝐼 (𝑘𝑘) (𝑖𝑖 + 1, 𝑗𝑗) − 𝐼𝐼 (𝑘𝑘) (𝑖𝑖 − 1, 𝑗𝑗)� ≫ 4 (5) 𝜕𝜕𝜕𝜕
𝜕𝜕𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗) = �𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗 + 1) − 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗 − 1)� ≫ 4 𝜕𝜕𝜕𝜕
[0218] Depois que o vetor de movimento refinado é obtido, de acordo com a fórmula (2), um preditor final de cada amostra no bloco atual é determinado, de acordo com a seguinte fórmula:  ∂I(1) ∂I(0) ∂I(1) ∂I(0)  b = rnd (( v (x ( i , j ) − ( i , j ))) / 2) + rnd (( v(y (i , j ) − (i, j ))) / 2)  ∂x ∂ x ∂y ∂ y  pred ( I (0) (i,j ) + I (1) (i,j ) + b + ooffset ) >> shift  = BIO (i , j ) (6)
[0219] 𝑠𝑠ℎ𝑖𝑖𝑖𝑖𝑖𝑖 e 𝜊𝜊𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜𝑜 são 15 − 𝐵𝐵𝐵𝐵 e 1 ≪ (14 − 𝐵𝐵𝐵𝐵) + 2 ∙ (1 ≪ 13) e 𝑟𝑟𝑟𝑟𝑟𝑟(. ) é uma função de arredondamento (rounding off).
[0220] O vetor de movimento refinado do sub-bloco 4x4 precisa ser calculado por meio do uso dos preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑥𝑥, 𝑦𝑦), e os 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) gradientes horizontal e vertical posterior e anterior (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) da região 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 6x6 em que o sub-bloco 4x4 está localizado, e o gradiente da região 6x6 precisa ser calculado por meio do uso de um preditor de uma região 8x8. Portanto, quando os preditores forward e backward são obtidos por meio do uso de um filtro de interpolação, a expansão precisa ser realizada em torno de duas linhas e duas colunas, respectivamente, para obter um bloco de amostra de predição com um tamanho de (W + 4)*(H + 4), de modo a calcular um gradiente de (W + 2)*(H + 2), onde W é uma largura da CU atual e H é uma altura da CU atual.
[0221] Para reduzir a complexidade de BIO, o processamento especial é realizado em um limite de uma CU na técnica anterior.
[0222] Primeiramente, um preditor de uma região W*H é obtido por meio do uso de um filtro de 8 torneiras e a expansão é realizada em torno de apenas uma linha e uma coluna. Um preditor de uma região expandida é obtido por meio do uso de um filtro bilinear, de modo a obter um valor de amostra prognosticado de uma região (W + 2)*(H + 2).
[0223] Em seguida, um gradiente da região W*H pode ser calculado com base no valor de amostra prognosticado da região (W + 2)*(H + 2) e da fórmula (5).
[0224] Finalmente, de acordo com um método de preenchimento, a expansão é realizada no gradiente da região W*H em torno de obter um gradiente da região (W + 2)*(H + 2) e a expansão é realizada no preditor da região W*H em torno de obter um preditor da região (W + 2)*(H + 2). O preenchimento é mostrado na FIG. 9, isto é, um valor de amostra de uma extremidade é atribuído a uma região expandida.
[0225] Um processo de implementação específico de BIO é o seguinte:
[0226] Etapa 1: Determinar as informações de movimento de uma CU atual.
[0227] As informações de movimento da CU atual podem ser determinadas por meio do uso de um modo de mesclagem, um modo AMVP (consultar as descrições nos fundamentos) ou outro modo. Isto não é limitado neste relatório.
[0228] Deve ser observado que outro método para determinar as informações de movimento também pode ser aplicado a este pedido. Os detalhes não são descritos neste relatório.
[0229] Etapa 2: Determinar se a CU atual atende a uma condição de uso de BIO.
[0230] Se a predição bidirecional for realizada na CU atual e uma relação entre um número de quadro de referência posterior POC_L0, um número de quadro de referência anterior POC_L1 e um número de quadro atual POC_Cur atende a seguinte fórmula, a CU atual atende à condição de uso de BIO: (POC_L0 - POC_Cur) * (POC_L1 - POC_Cur) < 0
[0231] Deve ser observado que, se BIO for usado, também pode ser determinado através da determinação se um tamanho da CU atual é maior que um limite pré-ajustado. Por exemplo, BIO pode ser usado apenas quando uma altura H da CU atual é maior que ou igual a 8 e uma largura W da CU atual é maior que ou igual a 8.
[0232] Deve ser observado que outra condição de uso de BIO também pode ser aplicada a este pedido. Os detalhes não são descritos neste relatório.
[0233] Se a CU atual atender à condição de uso de BIO, a etapa 3 é realizada e, de outro modo, a compensação de movimento é realizada de outra maneira.
[0234] Etapa 3: Calcular os preditores forward e backward da CU atual.
[0235] A compensação de movimento é realizada por meio do uso das informações de movimento, para obter os preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), onde i=-1..cuW e j=-1..cuH (uma matriz de predição de (cuW + 2)*(cuH + 2) é obtida).
[0236] Em 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), i=0..cuW-1, e j=0..cuH-1, que são obtidos realizando a interpolação por meio do uso de um filtro de interpolação de 8 torneiras, e um preditor de outra localização (a expansão por uma linha e uma coluna é realizada) é obtida realizando a interpolação por meio do uso de um filtro de interpolação bilinear.
[0237] Deve ser observado que o preditor da região expandida também pode ser obtido por meio do uso de outro método, por exemplo, por meio do uso de um filtro de interpolação de 8 torneiras ou diretamente usando uma amostra de referência em uma localização de amostra inteira. Isto não é limitado neste relatório.
[0238] Deve ser observado que uma SAD entre os preditores forward e backward é calculada, para determinar se a SAD é menor que um limite
TH_CU, e se a SAD for menor que o limite TH_CU, BIO não é realizado ou, de outro modo, BIO é realizado. Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório.
[0239] Uma fórmula para calcular a SAD é a seguinte: 𝑆𝑆𝑆𝑆𝑆𝑆 = � � 𝑎𝑎𝑎𝑎𝑎𝑎(𝐼𝐼 (1) (𝑖𝑖, 𝑗𝑗) − 𝐼𝐼 (0) (𝑖𝑖, 𝑗𝑗)) (7) 𝑗𝑗=0..𝑐𝑐𝑐𝑐𝑐𝑐−1 𝑖𝑖=0..cuW−1
[0240] O limite TH_CU pode ser definido (1<<(BD - 8 + shift))*cuW*cuH e o deslocamento pode ser definido como Max(2, 14-BD).
[0241] Etapa 4: Calcular os gradientes horizontal e vertical com base nos preditores forward e backward da CU atual. 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘)
[0242] Os gradientes horizontal e vertical (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 calculados com base nos preditores forward e backward, de acordo com a fórmula (4), onde i=0..cuW-1 e j=0..cuH-1 (uma matriz de predição de cuW*cuH é obtida).
[0243] Etapa 5: Realizar o preenchimento nos preditores forward e backward da CU atual e nos gradientes horizontal e vertical.
[0244] O preenchimento é realizado por meio do uso do método na 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) FIG. 9, para obter 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗), onde i=-1..cuW e j=-1..cuH (a 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 matriz de predição de (cuW + 2)*(cuH + 2), uma matriz de gradiente horizontal e uma matriz de gradiente vertical são obtidas).
[0245] Etapa 6: Derivar um vetor de movimento refinado de cada sub-bloco 4x4 e, em seguida, realizar a ponderação.
[0246] Para cada sub-bloco 4x4, vx e vy são obtidos, de acordo com a fórmula (2). Finalmente, a ponderação é realizada, de acordo com a fórmula (6) para obter um preditor de cada sub-bloco 4x4.
[0247] Deve ser observado que uma SAD entre os preditores forward e backward de cada sub-bloco 4x4 pode ser calculada para determinar se a SAD é menor que um limite TH_SCU. Se a SAD for menor que o limite TH_SCU,
a média ponderada é diretamente realizada ou, de outro modo, vx e vy são obtidos, de acordo com a fórmula (2) e, em seguida, a ponderação é realizada, de acordo com a fórmula (6). Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório. TU_SCU pode ser definido 1<<(BD-3 + shift).
[0248] Uma unidade de dados de tubulação virtual (VPDUs, Virtual pipeline data units) é uma unidade de processamento de luma MxM/croma NxN não sobreposta. Para um decodificador de hardware, as VPDUs consecutivas são processadas simultaneamente em diferentes níveis de tubulação.
Diferentes VPDUs são processadas simultaneamente em diferentes níveis de tubulação.
[0249] Um princípio de divisão de VPDU é o seguinte:
[0250] (1) Se a VPDU incluir uma ou mais CUs, a CU é completamente incluída na VPDU.
[0251] (2) Se a CU incluir uma ou mais VPDUs, a VPDU é completamente incluída na CU.
[0252] Na técnica anterior, um tamanho de uma VPDU é 64x64.
Como mostrado na FIG. 10, uma linha tracejada representa um limite de uma VPDU e uma linha sólida representa um limite de uma CU. A FIG. 11 mostra a divisão de CU inválida.
[0253] Quando a CU inclui uma pluralidade de VPDUs, o decodificador de hardware divide as VPDUs em VPDUs consecutivas para o processamento. Por exemplo, se um tamanho da CU for 128x128 e um tamanho da VPDU for 64x64, quatro VPDUs consecutivas são processadas.
[0254] Um problema técnico a ser resolvido neste pedido é que quando a compensação de movimento é realizada em uma CU através de BIO, uma maneira de processar uma amostra de limite da CU é diferente de uma maneira de processar uma amostra interna da CU. Se houver um limite de divisão de VPDU na CU, durante a predição de BIO, para garantir que um resultado do processamento de VPDU seja compatível com a do processamento de CU, o limite precisa ser processado em uma maneira da amostra interna da CU e, consequentemente, a complexidade de implementação é aumentada.
[0255] Com referência à FIG. 12, uma modalidade deste pedido fornece um método de predição inter. O método pode ser aplicado para a unidade de predição inter 244 no codificador mostrado na FIG. 2 ou para a unidade de predição inter 344 no decodificador mostrado na FIG. 3. O método pode ser um método de predição inter bidirecional e inclui as seguintes etapas.
[0256] Etapa 101: Selecionar uma largura menor em uma largura Width de divisão de imagem pré-ajustada e uma largura cuW de um bloco de imagem a ser processado, onde a largura menor é denotada como blkW e é usada como uma largura de um primeiro bloco de imagem e selecionar uma altura menor em uma altura Height de divisão de imagem pré-ajustada e uma altura cuH do bloco de imagem a ser processado, onde a altura menor é denotada como blkH e é usada como uma altura do primeiro bloco de imagem.
[0257] Quando o método nesta modalidade é aplicado a um codificador, ao codificar uma imagem, o codificador divide a imagem em blocos de imagem a serem processados. Nesta etapa, o bloco de imagem a ser processado é obtido e, em seguida, a largura menor blkW=min (Width, cuW) é selecionada e a largura menor blkW é usada como a largura do primeiro bloco de imagem e, a altura menor blkH=min (Height, cuH) é selecionada e a altura menor blkH é usada como a altura do primeiro bloco de imagem.
[0258] Quando o método nesta modalidade é aplicado a um decodificador, o decodificador recebe um fluxo de bits de vídeo de um codificador e o fluxo de bits de vídeo inclui um bloco de imagem a ser processado. Nesta etapa, o bloco de imagem a ser processado é extraído do fluxo de bits de vídeo e, em seguida, a largura menor blkW=min (Width, cuW) é selecionada e a largura menor blkW é usada como a largura do primeiro bloco de imagem e, a altura menor blkH=min (Height, cuH) é selecionada e a altura menor blkH é usada como a altura do primeiro bloco de imagem.
[0259] A largura Width de divisão de imagem pré-ajustada e a altura Height e divisão de imagem pré-ajustada podem ser, respectivamente, iguais a uma largura e uma altura de uma VPDU. Alternativamente, a largura Width de divisão de imagem pré-ajustada é um valor, tal como 64, 32 ou 16 e, a altura Height de divisão de imagem pré-ajustada é um valor, tal como 64, 32 ou 16.
Por exemplo, Width=64 e Height=64 ou, Width=32 e Height=32 ou, Width=16 e Height=16 ou, Width=64 e Height=32 ou, Width=32 e Height=64 ou, Width=64 e Height=16 ou, Width=16 e Height=64 ou, Width=32 e Height=16 ou Width=16 e Height=32.
[0260] Etapa 102: Determinar uma pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base na largura blkW e na altura blkH do primeiro bloco de imagem.
[0261] Deve ser entendido que, em uma implementação viável, a largura e a altura do bloco de imagem a ser processado são, respectivamente, as mesmas que a largura e a altura do primeiro bloco de imagem, isto é, o bloco de imagem a ser processado inclui apenas um primeiro bloco de imagem. Obter um preditor do primeiro bloco de imagem é obter um preditor do bloco de imagem a ser processado.
[0262] Um preditor de qualquer primeiro bloco de imagem é obtido, de acordo com as operações nas seguintes etapas 103 a 107.
[0263] Etapa 103: Obter um primeiro bloco de predição do primeiro bloco de imagem com base nas informações de movimento do bloco de imagem a ser processado, onde uma largura do primeiro bloco de predição é maior que a largura do primeiro bloco de imagem e uma altura do primeiro bloco de predição é maior que a altura do primeiro bloco de imagem.
[0264] As informações de movimento do bloco de imagem a ser processado incluem as informações de movimento do primeiro bloco de imagem e, as informações de movimento do primeiro bloco de imagem incluem informações, tais como uma imagem de referência e um vetor de movimento.
Nesta modalidade, uma maneira de predição bidirecional com base em fluxo óptico (isto é, a tecnologia de BIO ou BDOF relacionada anterior) é usada para a predição inter. Portanto, as informações de movimento do primeiro bloco de imagem incluem informações, tais como uma imagem de referência posterior, uma imagem de referência anterior, um vetor de movimento posterior e um vetor de movimento anterior.
[0265] Quando o método nesta modalidade é aplicado a um codificador, o codificador pode determinar as informações de movimento de um bloco de imagem a ser processado em um modo de mesclagem, um modo AMVP ou outro modo e, as informações de movimento do bloco de imagem a ser processado incluem as informações de movimento de cada primeiro bloco de imagem no bloco de imagem a ser processado. Nesta etapa, as informações de movimento do bloco de imagem a ser processado que é determinado pelo codificador são obtidas e as informações de movimento do primeiro bloco de imagem são obtidas a partir das informações de movimento do bloco de imagem a ser processado.
[0266] Quando o método nesta modalidade é aplicado a um decodificador, um fluxo de bits de vídeo recebido pelo decodificador a partir de um codificador inclui informações de movimento de um bloco de imagem a ser processado e, as informações de movimento do bloco de imagem a ser processado incluem as informações de movimento de cada primeiro bloco de imagem no bloco de imagem a ser processado. Nesta etapa, as informações de movimento do bloco de imagem a ser processado são extraídas do fluxo de bits de vídeo e as informações de movimento do primeiro bloco de imagem são obtidas a partir das informações de movimento do bloco de imagem a ser processado.
[0267] O primeiro bloco de predição do primeiro bloco de imagem inclui um primeiro bloco de predição forward e um primeiro bloco de predição backward. Nesta etapa, o primeiro bloco de predição forward e o primeiro bloco de predição backward do primeiro bloco de imagem pode ser obtido nas seguintes etapas de (1) a (8). As etapas de (1) a (8) podem ser as seguintes:
[0268] (1): Determinar uma primeira região posterior em uma imagem de referência posterior com base em uma primeira localização do primeiro bloco de imagem no bloco de imagem a ser processado e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região posterior é blkW + 2 e uma altura da primeira região posterior é blkH + 2.
[0269] Por exemplo, com referência à FIG. 13, as informações de movimento de um primeiro bloco de imagem B incluem uma imagem de referência posterior Ref0, uma imagem de referência anterior Ref1, um vetor de movimento posterior MV0 e um vetor de movimento anterior MV1. Uma segunda região posterior B11 é determinada na imagem de referência posterior Ref0 com base em uma primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região posterior B11 é blkW e uma altura da segunda região posterior B11 é blkH. Uma terceira região posterior B12 é determinada com base no vetor de movimento posterior MV0 e uma localização da segunda região posterior B11, onde uma largura da terceira região posterior B12 é blkW e uma altura da terceira região posterior B12 é blkH. Uma primeira região posterior A1 incluindo a terceira região posterior B12 é determinada, onde uma largura da primeira região posterior A1 é blkW + 2, uma altura da primeira região posterior A1 é blkH + 2 e um centro da terceira região posterior
B12 coincide com um centro da primeira região posterior A1.
[0270] (2): Determinar se uma localização do canto da primeira região posterior coincide com uma localização de amostra na imagem de referência posterior na imagem de referência posterior; e se a localização de canto da primeira região posterior coincide com a localização de amostra na imagem de referência posterior, obter um bloco de imagem na primeira região posterior a partir da imagem de referência posterior para servir como o primeiro bloco de predição forward do primeiro bloco de imagem; ou se a localização de canto da primeira região posterior não coincidir com a localização de amostra na imagem de referência posterior, realizar a etapa (3).
[0271] Por exemplo, com referência à FIG. 13, um canto superior esquerdo da primeira região posterior A1 é usado como um exemplo.
Assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior A1 seja (15, 16) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência posterior Ref0 e a localização de amostra na imagem de referência posterior Ref0 é (15, 16). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior A1 seja (15,3, 16,2) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência posterior Ref0, isto é, não há amostra em uma localização (15,3, 16,2) na imagem de referência posterior Ref0.
[0272] (3): Determinar uma amostra mais próxima da localização de canto da primeira região posterior na imagem de referência posterior e determinar uma quarta região posterior por meio do uso da amostra como um canto, onde uma largura da quarta região posterior é blkW + 2 e uma altura da quarta região posterior é blkH + 2.
[0273] Para qualquer localização de canto da primeira região posterior, é considerado que uma localização de canto superior esquerdo da primeira região posterior é usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência posterior e uma quarta região posterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da quarta região posterior é blkW + 2 e uma altura da quarta região posterior é blkH + 2.
[0274] Por exemplo, com referência à FIG. 13, uma localização de canto de um canto superior esquerdo da primeira região posterior A1 é (15,3, 16,2) e uma localização de uma amostra mais próxima da localização de canto (15,3, 16,2) é determinada como (15, 16) na imagem de referência posterior Ref0. Uma quarta região posterior A2 é determinada por meio do uso da amostra na localização (15, 16) como um canto superior esquerdo. Uma largura da quarta região posterior A2 é blkW + 2 e uma altura da quarta região posterior A2 é blkH + 2.
[0275] (4): Determinar uma quinta região posterior incluindo a quarta região posterior, onde um centro da quarta região posterior coincide com um centro da quinta região posterior, uma largura da quinta região posterior é blkW + n + 1 e uma altura da quinta região posterior é blkH + n + 1; e obter um bloco de imagem na quinta região posterior a partir da imagem de referência posterior e realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o primeiro bloco de predição forward do primeiro bloco de imagem, onde uma largura do primeiro bloco de predição forward é blkW + 2, uma altura do primeiro bloco de predição forward é blkH + 2 e n é uma quantidade de torneiras do filtro de interpolação.
[0276] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 13, uma quinta região posterior A3 incluindo a quarta região posterior A2 é determinada. Um centro da quarta região posterior A2 coincide com um centro da quinta região posterior A3, uma largura da quinta região posterior A3 é blkW + 9 e uma altura da quinta região posterior A3 é blkH + 9. Um bloco de imagem na quinta região posterior A3 é obtido a partir da imagem de referência posterior Ref0 e a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um primeiro bloco de predição forward do primeiro bloco de imagem B. Uma largura do primeiro bloco de predição forward é blkW + 2 e uma altura do primeiro bloco de predição forward é blkH + 2.
[0277] (5): Determinar uma primeira região anterior em uma imagem de referência anterior com base na primeira localização e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região anterior é blkW + 2 e uma altura da primeira região anterior é blkH + 2.
[0278] Por exemplo, com referência à FIG. 13, uma segunda região anterior C11 é determinada na imagem de referência anterior Ref1 com base na primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região anterior C11 é blkW e uma altura da segunda região anterior C11 é blkH. Uma terceira região anterior C12 é determinada com base no vetor de movimento anterior MV1 e uma localização da segunda região anterior C11, onde uma largura da terceira região anterior C12 é blkW e uma altura da terceira região anterior C12 é blkH. Uma primeira região anterior D1 incluindo a terceira região anterior C12 é determinada, onde uma largura da primeira região anterior D1 é blkW + 2, uma altura da primeira região anterior D1 é blkH + 2 e um centro da terceira região anterior C12 pode coincidir com o centro da primeira região anterior D1.
[0279] (6): Determinar se uma localização de canto da primeira região anterior coincide com uma localização de amostra na imagem de referência anterior na imagem de referência anterior; e se a localização de canto da primeira região anterior coincidir com a localização de amostra na imagem de referência anterior, obter um bloco de imagem na primeira região anterior a partir da imagem de referência anterior para servir como o primeiro bloco de predição backward do primeiro bloco de imagem; ou se a localização de canto da primeira região anterior não coincidir com a localização de amostra na imagem de referência anterior, realizar a etapa (7).
[0280] Por exemplo, com referência à FIG. 13, um canto superior esquerdo da primeira região anterior A1 é usado como um exemplo. Assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior D1 seja (5, 6) na imagem de referência anterior Ref1, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência anterior Ref0 e a localização de amostra na imagem de referência anterior Ref0 é (5, 6). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior D1 seja (5,3, 6,2) na imagem de referência anterior Ref0, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência anterior Ref0, isto é, não há amostra em uma localização (5,3, 6,2) na imagem de referência anterior Ref0.
[0281] (7): Determinar uma amostra mais próxima da localização de canto da primeira região anterior na imagem de referência anterior e, determinar uma quarta região anterior por meio do uso da amostra como um canto, onde uma largura da quarta região anterior é blkW + 2 e uma altura da quarta região anterior é blkH + 2.
[0282] Para qualquer localização de canto da primeira região anterior, é considerado que uma localização de canto superior esquerdo da primeira região anterior seja usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência anterior e uma quarta região anterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da quarta região anterior é blkW + 2 e uma altura da quarta região anterior é blkH + 2.
[0283] Por exemplo, com referência à FIG. 13, uma localização de canto de um canto superior esquerdo da primeira região anterior D1 é (5,3, 6,2) e uma localização de uma amostra mais próxima da localização de canto (5,3, 6,2) é determinada como (5, 6) na imagem de referência anterior Ref1. Uma quarta região anterior D2 é determinada por meio do uso da amostra na localização (5, 6) como um canto superior esquerdo. Uma largura da quarta região anterior D2 é blkW + 2 e uma altura da quarta região anterior D2 é blkH + 2.
[0284] (8): Determinar uma quinta região anterior incluindo a quarta região anterior, onde um centro da quarta região anterior coincide com um centro da quinta região anterior, uma largura da quinta região anterior é blkW + n + 1 e uma altura da quinta região anterior é blkH + n + 1; e, obter um bloco de imagem na quinta região anterior a partir da imagem de referência anterior e, realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o primeiro bloco de predição backward do primeiro bloco de imagem, onde uma largura do primeiro bloco de predição backward é blkW + 2 e uma altura do primeiro bloco de predição backward é blkH + 2.
[0285] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 13, uma quinta região anterior D3 incluindo a quarta região anterior D2 é determinada. Um centro da quarta região anterior D2 coincide com um centro da quinta região anterior D3, uma largura da quinta região anterior D3 é blkW + 9 e uma altura da quinta região anterior D3 é blkH + 9. Um bloco de imagem na quinta região anterior D3 é obtido a partir da imagem de referência anterior Ref1 e a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um primeiro bloco de predição backward do primeiro bloco de imagem B.
Uma largura do primeiro bloco de predição backward é blkW + 2 e uma altura do primeiro bloco de predição backward é blkH + 2.
[0286] Uma quantidade n de torneiras do filtro de interpolação pode ser um valor, tal como 6, 8 ou 10.
[0287] Quando esta etapa é realizada, pode ser determinado adicionalmente, com base nas informações de movimento do bloco de imagem a ser processado, se a predição inter for realizada através de BIO e quando for determinado que a predição inter é realizada através de BIO, esta etapa é realizada. O processo de determinação pode ser o seguinte:
[0288] É determinado se um número de quadro do bloco de imagem a ser processado, um número de quadro da imagem de referência posterior e um número de quadro da imagem de referência anterior atendem a uma condição de uso de BIO pré-ajustada. Se a condição de uso de BIO pré- ajustada for atendida, é determinado que a predição inter é realizada através de BIO e esta etapa é realizada. Se a condição de uso de BIO pré-ajustada não for atendida, é determinado que a predição inter é realizada em uma maneira exceto BIO. Um processo de implementação da outra maneira não é descrito em detalhes neste relatório.
[0289] A condição de uso de BIO pré-ajustada pode ser uma condição mostrada na seguinte primeira fórmula.
[0290] A primeira fórmula é (POC_L0-POC_Cur) * (POC_L1- POC_Cur) < 0.
[0291] Na primeira fórmula, POC_L0 é o número de quadro da imagem de referência posterior, POC_Cur é o número de quadro do bloco de imagem a ser processado, POC_L1 é o número de quadro da imagem de referência anterior e * é uma operação de multiplicação.
[0292] Nesta etapa, pode ser determinado adicionalmente, com base no primeiro bloco de predição forward e no primeiro bloco de predição backward do primeiro bloco de imagem, se a predição inter é realizada através de BIO e quando for determinado que a predição inter é realizada através de BIO, a etapa 104 é realizada. O processo de determinação pode ser o seguinte:
[0293] Uma SAD é calculada com base no primeiro bloco de predição forward e no primeiro bloco de predição backward do primeiro bloco de imagem, de acordo com a seguinte segunda fórmula. Se a SAD exceder um limite pré- ajustado TH_CU, é determinado que a predição inter é realizada através de BIO e a etapa 104 é realizada. Se a SAD não exceder o limite pré-ajustado TH_CU, é determinado que a predição inter é realizada em uma maneira exceto BIO.
Um processo de implementação da outra maneira não é descrito em detalhes neste relatório.
[0294] A segunda fórmula é SAD ∑ ∑ 1…cuH - 1 i=0、 j=0、 1…cuW - 1 abs(I(1) (i,j) − I(0) (i,j)) .
[0295] Na segunda fórmula, I(1) (i,j) é um preditor de uma amostra na iésima linha e na jésima coluna do primeiro bloco de predição backward e, I(0) (i,j) é um preditor de uma amostra na iésima linha e na jésima coluna do primeiro bloco de predição forward.
[0296] TH_CU=(1<<(BD-8 + shift))*blkW*blkH, shift=Max(2, 14-BD), onde BD indica uma largura de bits de amostra atual, abs() indica uma operação de obtenção de um valor absoluto e << indica um operação deslocamento para a esquerda.
[0297] Etapa 104: Realizar uma operação de gradiente no primeiro bloco de predição do primeiro bloco de imagem para obter uma primeira matriz de gradiente do primeiro bloco de imagem, onde uma largura da primeira matriz de gradiente é blkW e uma altura da primeira matriz de gradiente é blkH.
[0298] A primeira matriz de gradiente inclui uma primeira matriz de gradiente horizontal posterior, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior.
[0299] Nesta etapa, um gradiente horizontal e um gradiente vertical são calculados com base em um preditor de cada amostra incluída no primeiro bloco de predição, de acordo com a seguinte terceira fórmula: Cada gradiente horizontal calculado corresponde a um número de linhas e a um número de colunas e cada gradiente vertical calculado corresponde a um número de linhas e um número de colunas. Uma primeira matriz de gradiente horizontal do primeiro bloco de imagem é formada pelos gradientes horizontais calculados com base nos números de linhas e nos números de coluna correspondentes aos gradientes horizontais calculados e, uma primeira matriz de gradiente vertical do primeiro bloco de imagem é formada pelos gradientes verticais calculados com base nos números de linhas e nos números de colunas correspondentes aos gradientes verticais calculados.
[0300] Quando um gradiente de uma linha ou uma coluna em uma matriz de gradiente é calculado, os preditores de duas amostras são obtidos a partir do primeiro bloco de predição com base no número de linhas e no número colunas e, um gradiente horizontal ou um gradiente vertical é calculado com base nos preditores das duas amostras, de acordo com a seguinte terceira fórmula. O gradiente horizontal separadamente corresponde ao número de linhas e ao número colunas ou, o gradiente vertical separadamente corresponde ao número de linhas e ao número colunas.
[0301] O primeiro bloco de predição inclui o primeiro bloco de predição forward e o primeiro bloco de predição backward. Um gradiente horizontal posterior e um gradiente vertical posterior são calculados com base no primeiro bloco de predição forward, de acordo com a seguinte terceira fórmula. Cada gradiente horizontal posterior calculado corresponde a um número de linhas e a um número colunas e, cada gradiente vertical posterior calculado corresponde a um número de linhas e a um número colunas. Uma primeira matriz de gradiente horizontal posterior do primeiro bloco de imagem é formada pelo gradiente horizontal posterior calculado com base nos números de linhas e nos números de colunas correspondentes ao gradiente horizontal posterior calculado e, uma primeira matriz de gradiente vertical posterior do primeiro bloco de imagem é formada pelo gradiente vertical posterior calculado com base nos números de linhas e nos números de colunas correspondentes ao gradiente vertical posterior calculado.
[0302] Um gradiente horizontal anterior e um gradiente vertical anterior são calculados com base no primeiro bloco de predição backward, de acordo com a seguinte terceira fórmula. Cada gradiente horizontal anterior calculado corresponde a um número de linhas e a um número colunas e, cada gradiente vertical anterior calculado corresponde a um número de linhas e a um número colunas. Uma primeira matriz de gradiente horizontal anterior do primeiro bloco de imagem é formada pelo gradiente horizontal anterior calculado com base nos números de linhas e nos números de colunas correspondentes ao gradiente horizontal anterior calculado e, uma primeira matriz de gradiente vertical anterior do primeiro bloco de imagem é formada pelo gradiente vertical anterior calculado com base nos números de linhas e nos números de colunas correspondentes ao gradiente vertical anterior calculado.
[0303] A terceira fórmula é  ∂I(k)  ∂x = (i, j ) ( I ( k ) (i + 1,j ) − I ( k ) (i − 1,j )) >> 4   (k)  ∂I= (i, j ) ( I ( k ) (i,j + 1) − I ( k ) (i,j -1)) >> 4   ∂y .
[0304] Na terceira fórmula, um valor de k pode ser 0 ou 1, onde 0
∂I(k) (i, j ) indica “posterior” e 1 indica “anterior”; ∂x é um gradiente horizontal da ∂I(k) (i, j ) iésima linha e da jésima coluna, onde quando k=0, ∂x é um gradiente ∂I(k) (i, j ) horizontal posterior da iésima linha e da jésima coluna, e quando k=1, ∂x é um gradiente horizontal anterior da iésima linha e da jésima coluna; e >> é uma operação de deslocamento para a direita.
[0305] I ( k ) (i + 1,j ) é um preditor de uma amostra na (i + 1)ésima linha e na jésima coluna do primeiro bloco de predição, onde quando k=0, I ( k ) (i + 1,j ) é um preditor de uma amostra na (i + 1)ésima linha e na jésima coluna do primeiro bloco de predição forward, e quando k=1, I ( k ) (i + 1,j ) é um preditor de uma amostra na (i + 1)ésima linha e na jésima coluna do primeiro bloco de predição backward; e I ( k ) (i − 1,j ) é um preditor de uma amostra na (i- 1)ésima linha e na jésima coluna do primeiro bloco de predição, onde quando k=0, I ( k ) (i − 1,j ) é um preditor de uma amostra na (i-1)ésima linha e na jésima coluna do primeiro bloco de predição forward, e quando k=1, I ( k ) (i − 1,j ) é um preditor de uma amostra na (i-1)ésima linha e na jésima coluna do primeiro bloco de predição backward.
[0306] I ( k ) (i,j + 1) é um preditor de uma amostra na iésima linha e na (j + 1)ésima coluna do primeiro bloco de predição, onde quando k=0, I ( k ) (i,j + 1) é um preditor de uma amostra na iésima linha e na (j + 1)ésima coluna do primeiro bloco de predição forward, e quando k=1, I ( k ) (i,j + 1) é um preditor de uma amostra na iésima linha e na (j + 1)ésima coluna no primeiro bloco de predição backward; e I ( k ) (i,j − 1) é um preditor de uma amostra na iésima linha e na (j-1)ésima coluna do primeiro bloco de predição, onde quando k=0, I ( k ) (i,j − 1) é um preditor de uma amostra na iésima linha e na (j-1)ésima coluna do primeiro bloco de predição forward, e quando k=1, I ( k ) (i,j − 1) é um preditor valor de uma amostra na iésima linha e na (j-1)ésima coluna no primeiro bloco de predição backward.
[0307] Deve ser observado que, para um primeiro bloco de predição com uma largura de blkW + 2 e uma altura de blkH + 2, uma primeira matriz de gradiente com uma largura de blkW e uma altura de blkH pode ser obtida com base no primeiro bloco de predição, de acordo com a terceira fórmula anterior.
A primeira matriz de gradiente inclui uma primeira matriz de gradiente horizontal com uma largura de blkW e uma altura de blkH e uma primeira matriz de gradiente vertical com uma largura de blkW e uma altura de blkH. Isto é, para um primeiro bloco de predição forward com uma largura de blkW + 2 e uma altura de blkH + 2, uma primeira matriz de gradiente horizontal posterior com uma largura de blkW e uma altura de blkH e uma primeira matriz de gradiente vertical posterior com uma largura de blkW e uma altura de blkH pode ser obtida com base no primeiro bloco de predição forward, de acordo com a terceira fórmula anterior. Para um primeiro bloco de predição backward com uma largura de blkW + 2 e uma altura de blkH + 2, uma primeira matriz de gradiente horizontal anterior com uma largura de blkW e uma altura de blkH e uma primeira matriz de gradiente vertical anterior com uma largura de blkW e uma altura de blkH pode ser obtida com base no primeiro bloco de predição backward, de acordo com a terceira fórmula anterior.
[0308] Etapa 105: Realizar a primeira expansão na largura e na altura da primeira matriz de gradiente com base em um gradiente em uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem.
[0309] A largura e a altura da primeira matriz de gradiente obtida depois da primeira expansão são, respectivamente, iguais à largura e à altura do primeiro bloco de predição. A largura do primeiro bloco de predição é blkW + 2 e a altura do primeiro bloco de predição é blkH + 2. A largura da primeira matriz de gradiente também é blkW + 2 e a altura da primeira matriz de gradiente também é blkH + 2.
[0310] Nesta etapa, a primeira expansão é separadamente realizada em uma largura e uma altura da primeira matriz de gradiente horizontal posterior, uma largura e uma altura da primeira matriz de gradiente vertical posterior, uma largura e uma altura da primeira matriz de gradiente horizontal anterior e uma largura e uma altura da primeira matriz de gradiente vertical anterior, de modo que as larguras de uma primeira matriz de gradiente horizontal posterior, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior obtidas depois da primeira expansão sejam todas blkW + 2 e, as alturas da primeira matriz de gradiente horizontal posterior, da primeira matriz de gradiente vertical posterior, da primeira matriz de gradiente horizontal anterior e da primeira matriz de gradiente vertical anterior obtidas depois da primeira expansão sejam todas blkH + 2.
[0311] Nesta etapa, a primeira matriz de gradiente inclui quatro extremidades. Para os gradientes na extremidade da matriz esquerda da primeira matriz de gradiente, uma coluna de gradientes é obtida para realizar a expansão na esquerda da primeira matriz de gradiente com base nos gradientes na extremidade da matriz esquerda. Para os gradientes na extremidade da matriz direita da primeira matriz de gradiente, uma coluna de gradientes é obtida para realizar a expansão na direita da primeira matriz de gradiente com base nos gradientes na localização direita da extremidade de matriz. Para os gradientes na extremidade da matriz superior da primeira matriz de gradiente, uma linha de gradientes é obtida para realizar a expansão na parte superior da primeira matriz de gradiente com base nos gradientes na extremidade da matriz superior. Para os gradientes na extremidade da matriz inferior da primeira matriz de gradiente, uma linha de gradientes é obtida para realizar a expansão na parte inferior da primeira matriz de gradiente com base nos gradientes na extremidade da matriz inferior. Portanto, a largura e a altura da primeira matriz de gradiente obtida depois da primeira expansão são, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem.
[0312] Etapa 106: Calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente.
[0313] Uma largura da unidade de processamento básico pode ser M e uma altura da unidade de processamento básico também pode ser M, isto é, a unidade de processamento básico é um bloco de imagem incluindo amostras M*M. Um valor de M pode ser um valor, tal como 2, 3 ou 4.
[0314] O valor de refinamento de informações de movimento da unidade de processamento básico inclui um valor de distinção horizontal de informações de movimento e um valor de distinção vertical de informações de movimento.
[0315] Esta etapa pode ser implementada por 1061 a 1064 e 1061 a 1064 pode ser o seguinte:
[0316] 1061: Dividir o primeiro bloco de imagem para obter cada unidade de processamento básico incluída no primeiro bloco de imagem, onde cada unidade de processamento básico é um bloco de imagem com um tamanho de M*M.
[0317] 1062: Determinar um bloco de predição básico de qualquer unidade de processamento básico no primeiro bloco de predição com base em uma localização da unidade de processamento básico, onde uma largura do bloco de predição básico é M + 2 e uma altura do bloco de predição básico é M + 2.
[0318] Assumindo que a unidade de processamento básico cubra as 1as até Mésimas linhas e as 1as até as Mésimas colunas do primeiro bloco de imagem, um bloco de imagem que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas do primeiro bloco de predição é usado como o bloco de predição básico da unidade de processamento básico.
[0319] O bloco de predição básico da unidade de processamento básico inclui um bloco de predição básico forward e um bloco de predição básico backward. Para especificidade, um bloco de imagem que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas no primeiro bloco de predição forward é usado como o bloco de predição forward da unidade de processamento básico e, um bloco de imagem que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas no primeiro bloco de predição backward é usado como o bloco de predição básico backward da unidade de processamento básico.
[0320] 1063: Determinar uma matriz de gradiente básica da unidade de processamento básico na primeira matriz de gradiente com base na localização da unidade de processamento básico, onde uma largura da matriz de gradiente básica é M + 2 e uma altura da matriz de gradiente básica é M +
2.
[0321] Assumindo que a unidade de processamento básico cubra as 1as até as Mésimas linhas e as 1as até as Mésimas colunas do primeiro bloco de imagem, uma matriz que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas na primeira matriz de gradiente é usada como a matriz de gradiente básica da unidade de processamento básico.
[0322] A matriz de gradiente básica da unidade de processamento básico inclui uma matriz de gradiente básica horizontal posterior, uma matriz de gradiente básica vertical posterior, uma matriz de gradiente básica horizontal anterior e uma matriz de gradiente básica vertical anterior. Para especificidade, uma matriz que cobre as 0ésima até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas na primeira matriz de gradiente horizontal posterior é usada como a matriz de gradiente básica horizontal posterior da unidade de processamento básico, uma matriz que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas na primeira matriz de gradiente vertical posterior é usada como uma matriz de gradiente básica vertical posterior da unidade de processamento básico, uma matriz que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas na primeira matriz de gradiente horizontal anterior é usada como uma matriz de gradiente básica horizontal anterior da unidade de processamento básico e uma matriz que cobre as 0ésimas até as (M + 1)ésimas linhas e as 0ésimas até as (M + 1)ésimas colunas na primeira matriz de gradiente vertical anterior é usada como uma matriz de gradiente básica vertical anterior da unidade de processamento básico.
[0323] 1064. Calcular um valor de refinamento de informações de movimento da unidade de processamento básico com base no bloco de predição básico e na matriz de gradiente básica da unidade de processamento básico.
[0324] Em 1064, um valor de distinção horizontal de informações de movimento e um valor de distinção vertical de informações de movimento da unidade de processamento básico são calculados, de acordo com a seguinte quarta fórmula e quinta fórmula com base no bloco de predição básico forward, no bloco de predição básico backward, na matriz de gradiente básica horizontal posterior, na matriz de gradiente básica vertical posterior, na matriz de gradiente básica horizontal anterior e na matriz de gradiente básica vertical anterior da unidade de processamento básico.
[0325] A quarta fórmula é  ∂I(1) ∂I(0) ψ x (i, j ) ( ∂x (i, j ) + ∂x (i, j )) >> 3 =   ∂I(1) ∂I(0) ψ y (i, j ) ( ∂y (i, j ) + ∂y (i, j )) >> 3 =  θ (i, j ) ( I (1) (i,j ) >> 6) − ( I (0) (i,j ) >> 6) =  = S1 ∑ ψ x (i, j ) •ψ x (i, j )  ( i , j )∈Ω  = S3 ∑ θ (i, j ) •ψ x (i, j )  ( i , j )∈Ω S  2 (i∑ = ψ x (i, j ) •ψ y (i, j ) , j )∈Ω  = S5 ∑ ψ y (i, j ) •ψ y (i, j )  ( i , j )∈Ω S =  6 ∑ θ (i, j ) •ψ y (i, j )  ( i , j )∈Ω .
[0326] A quinta fórmula é v=  x ' S1 > 0? clip3(−thBIO ' , thBIO , −(( S3 • 23 ) >> log 2 S5  )) : 0  ' ' . v=  y S5 > 0? clip3(−thBIO , thBIO , −(( S6 • 23 ) − ((vx S 2,m ) << 12 + vx S 2,S ) / 2 >>  log 2 S5  )) : 0
[0327] Na quarta fórmula anterior, (i, j ) ∈Ω indica que i=0, 1, ..., e M + 1, e j=0, 1, ..., e M + 1. Na quinta fórmula anterior, vx é o valor de distinção horizontal de informações de movimento da unidade de processamento básico; vy é o valor de distinção vertical de informações de movimento da unidade de ' 13− BD processamento básico; thBIO = 2 ; ⌊∙⌋ é uma função floor (floor(A) representa um número inteiro máximo não maior que A); e 𝑆𝑆2,𝑚𝑚 = 𝑆𝑆2 ≫ 12, e 𝑆𝑆2,𝑠𝑠 = 𝑆𝑆2 &(212 − 1).
[0328] O valor de refinamento de informações de movimento de cada unidade de processamento básico incluída no primeiro bloco de imagem pode ser obtido repetidamente realizando 1062 a 1064.
[0329] Etapa 107: Obter um preditor do primeiro bloco de imagem com base no valor de refinamento de informações de movimento de cada unidade de processamento básico incluída no primeiro bloco de imagem.
[0330] O preditor do primeiro bloco de imagem inclui um preditor de cada amostra em cada unidade de processamento básico no primeiro bloco de imagem.
[0331] Um preditor de cada amostra incluída em qualquer unidade de processamento básico incluída no primeiro bloco de imagem é calculado, de acordo com a seguinte sexta fórmula com base em um bloco de predição básico forward, um bloco de predição básico backward, uma matriz de gradiente básica horizontal posterior, uma matriz de gradiente básica vertical posterior, uma matriz de gradiente básica horizontal anterior e uma matriz de gradiente básica vertical anterior da unidade de processamento básico.
[0332] A sexta fórmula é:  ∂I(1) ∂I(0) ∂I(1) ∂I(0) b= rnd ((v( x ∂x (i, j ) − ∂x (i, j ))) / 2) + rnd ((v(y ∂y (i, j ) − ∂y (i, j ))) / 2)   pred ( I (0) (i,j ) + I (1) (i,j ) + b + ooffset ) >> shift  = BIO (i , j ) .
[0333] Na sexta fórmula, pred BIO (i, j ) é um preditor de uma amostra na iésima linha e na jésima coluna na unidade de processamento básico, shift=15- ooffset BD, =1 ≪ (14 − 𝐵𝐵𝐵𝐵) + 2 ∙ (1 ≪ 13) e rnd() é o arredondamento.
[0334] Um preditor de cada primeiro bloco de imagem no bloco de imagem a ser processado é obtido repetidamente realizando 103 a 107.
[0335] Etapa 108: obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem incluídos no bloco de imagem a ser processado.
[0336] O método de predição inter mostrado na FIG. 12 pode ser resumido como as etapas 1 a 6 e as etapas 1 a 6 podem ser as seguintes:
[0337] Etapa 1: Determinar as informações de movimento de uma CU atual.
[0338] As informações de movimento da CU atual podem ser determinadas por meio do uso de um modo de mesclagem, um modo AMVP (consultar as descrições nos fundamentos) ou outro modo. Isto não é limitado neste relatório.
[0339] Deve ser observado que outro método para determinar as informações de movimento também pode ser aplicado a este pedido. Os detalhes não são descritos neste relatório.
[0340] Etapa 2: Determinar se a CU atual atende a uma condição de uso de BIO.
[0341] Se a predição bidirecional for realizada na CU atual e uma relação entre um número de quadro de referência posterior POC_L0, um número de quadro de referência anterior POC_L1 e um número de quadro atual POC_Cur atende a seguinte fórmula, a CU atual atende à condição de uso de BIO: (POC_L0 - POC_Cur) * (POC_L1 - POC_Cur) < 0
[0342] Deve ser observado que, se BIO for usada, pode também ser determinada através da determinação de um tamanho da CU atual é maior que um limite pré-ajustado. Por exemplo, BIO pode ser usada apenas quando uma altura H da CU atual é maior que ou igual a 8 e uma largura W da CU atual é maior que ou igual a 8.
[0343] Deve ser observado que outra condição de uso de BIO também pode ser aplicada a este pedido. Os detalhes não são descritos neste relatório.
[0344] Se a CU atual atender à condição de uso de BIO, a etapa 3 é realizada ou, de outro modo, a compensação de movimento é realizada de outra maneira.
[0345] Um tamanho de VPDU é obtido: VPDU_X e VPDU_Y, e os parâmetros blkW e blkH são definidos.
blkW = Min(cuW, VPDU_X) blkH = Min (cuH, VPDU_Y)
[0346] A função Min indica que um valor mínimo é selecionado.
[0347] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 64x64, blkW é 64 e blkH é 64.
[0348] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 128x32, blkW é 128 e blkH é 32.
[0349] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 32x128, blkW é 32 e blkH é 128.
[0350] Opcionalmente, se um tamanho de uma unidade de predição inter de processamento máxima for menor que o tamanho de VPDU, blkW e blkH podem ser definidos, de acordo com as seguintes fórmulas: blkW = Min(cuW, MAX_MC_X) blkH = Min (cuH, MAX_MC_Y)
[0351] Por exemplo, se o tamanho da CU for 128x128 e o tamanho da unidade de predição inter de processamento máxima for 32x32, blkW é 32 e blkH é 32.
[0352] Cada CU é dividida com base em blkW e blkH para executar BIO.
[0353] Etapa 3: Calcular os preditores forward e backward da CU atual.
[0354] A compensação de movimento é realizada por meio do uso das informações de movimento, para obter os preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), onde i=-1..blkW e j=-1..blkH (uma matriz de predição de (blkW + 2)*(blkH + 2) é obtida).
[0355] Em 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), i=0..blkW-1 e j=0..blkH, que são obtidos realizando a interpolação por meio do uso de um filtro de interpolação de 8 torneiras, e um preditor de outra localização (a expansão de uma linha e uma coluna é realizada) é obtido realizando a interpolação por meio do uso de um filtro de interpolação bilinear.
[0356] Deve ser entendido que o preditor pode ser obtido por meio do uso da VPDU como uma unidade de obtenção de preditor mínima ou o preditor pode ser obtido por meio do uso de um bloco menor que a VPDU como uma unidade de obtenção de preditor mínima. Isto não é limitado.
[0357] Deve ser observado que o preditor da região expandida também pode ser obtido por meio do uso de outro método, por exemplo, por meio do uso de um filtro de interpolação de 8 torneiras ou diretamente usando uma amostra de referência em uma localização de amostra inteira. Isto não é limitado neste relatório.
[0358] Deve ser observado que uma SAD entre os preditores forward e backward é calculada, para determinar se a SAD é menor que um limite TH_CU, e se a SAD for menor que o limite TH_CU, BIO não é realizada ou, de outro modo, BIO é realizada. Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório.
[0359] Uma fórmula para calcular a SAD é a seguinte: 𝑆𝑆𝑆𝑆𝑆𝑆 = � � 𝑎𝑎𝑎𝑎𝑎𝑎(𝐼𝐼 (1) (𝑖𝑖, 𝑗𝑗) − 𝐼𝐼 (0) (𝑖𝑖, 𝑗𝑗)) (8) 𝑗𝑗=0..blkW−1 𝑖𝑖=0..blkH−1
[0360] O limite TH_CU pode ser definido como (1<<(BD - 8 + shift))* blkW*blkH e o deslocamento pode ser definido como Max(2, 14-BD).
[0361] Etapa 4: Calcular os gradientes horizontal e vertical com base nos preditores forward e backward da CU atual. 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘)
[0362] Os gradientes horizontal e vertical (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 calculados com base nos preditores forward e backward, de acordo com a fórmula (4), onde i=0..blkW-1 e j=0..blkH-1 (uma matriz de gradiente de blkW*blkH é obtida).
[0363] Etapa 5: Realizar o preenchimento nos preditores forward e backward da CU atual e os gradientes horizontal e vertical.
[0364] O preenchimento é realizado por meio do uso do método 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) mostrado na FIG. 9, para obter 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗), onde i=-1..blkW e 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 j=-1..blkH (a matriz de predição de (blkW + 2)*(blkH + 2), uma matriz de gradiente horizontal e uma matriz de gradiente vertical são obtidas).
[0365] Etapa 6: Derivar um vetor de movimento refinado de cada sub-bloco 4x4 e, em seguida, realizar a ponderação.
[0366] Para cada sub-bloco 4x4, vx e vy são obtidos, de acordo com a fórmula (2). Finalmente, a ponderação é realizada, de acordo com a fórmula (6) para obter um preditor de cada sub-bloco 4x4.
[0367] Deve ser observado que uma SAD entre os preditores forward e backward de cada sub-bloco 4x4 podem ser calculados para determinar se a SAD é menor que o limite TH_SCU. Se a SAD for menor que o limite TH_SCU, a média ponderada é diretamente realizada ou, de outro modo, vx e vy são obtidos, de acordo com a fórmula (2) e, em seguida, a ponderação é realizada, de acordo com a fórmula (6). Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório. TU_SCU pode ser definido como 1<<(BD-3 + shift).
[0368] Nesta modalidade deste pedido, uma largura menor é selecionada na largura Width de divisão de imagem pré-ajustada e a largura cuW do bloco de imagem a ser processado e é denotada como blkW, uma altura menor é selecionada na altura Height de divisão de imagem pré-ajustada e a altura cuH do bloco de imagem a ser processado e é denotada como blkH e, o primeiro bloco de imagem incluído no bloco de imagem a ser processado é determinado com base em blkW e blkH. Portanto, uma área de cada primeiro bloco de imagem determinado não é muito grande, de modo que menos recursos de hardware, tais como os recursos de espaço de memória são consumidos quando o processamento de predição inter é realizado em cada primeiro bloco de imagem, reduzindo, desse modo, a complexidade da implementação e melhorando a eficácia do processamento de predição inter.
[0369] Com referência à FIG. 14, uma modalidade deste pedido fornece um método de predição inter. O método pode ser aplicado para a unidade de predição inter 244 no codificador mostrado na FIG. 2 ou a unidade de predição inter 344 no decodificador mostrado na FIG. 3. O método pode ser um método de predição inter bidirecional e inclui as seguintes etapas.
[0370] As etapas 201 e 202 são as mesmas que as etapas 101 e 102, respectivamente, e os detalhes não são descritos neste relatório novamente.
[0371] Etapa 203: Obter um primeiro bloco de predição do primeiro bloco de imagem com base nas informações de movimento do bloco de imagem a ser processado, onde uma largura do primeiro bloco de predição é igual à largura do primeiro bloco de imagem e uma altura do primeiro bloco de predição é igual à altura do primeiro bloco de imagem.
[0372] As informações de movimento do primeiro bloco de imagem incluem as informações, tais como uma imagem de referência e um vetor de movimento. Nesta modalidade, uma maneira de predição bidirecional com base no fluxo óptico é usada para a predição inter. Portanto, as informações de movimento do primeiro bloco de imagem incluem as informações, tais como uma imagem de referência posterior, uma imagem de referência anterior, um vetor de movimento posterior e um vetor de movimento anterior.
[0373] Quando o método nesta modalidade é aplicado a um codificador, o codificador pode determinar as informações de movimento de um bloco de imagem a ser processado em um modo de mesclagem, um modo
AMVP ou outro modo, e as informações de movimento do bloco de imagem a ser processado incluem as informações de movimento de cada primeiro bloco de imagem no bloco de imagem a ser processado. Nesta etapa, as informações de movimento do bloco de imagem a ser processado que é determinado pelo codificador são obtidas e as informações de movimento do primeiro bloco de imagem são obtidas a partir das informações de movimento do bloco de imagem a ser processado.
[0374] Quando o método nesta modalidade é aplicado a um decodificador, um fluxo de bits de vídeo recebido pelo decodificador a partir de um codificador inclui informações de movimento de um bloco de imagem a ser processado e as informações de movimento do bloco de imagem a ser processado incluem as informações de movimento de cada primeiro bloco de imagem no bloco de imagem a ser processado. Nesta etapa, as informações de movimento do bloco de imagem a ser processado são extraídas a partir do fluxo de bits de vídeo e as informações de movimento do primeiro bloco de imagem são obtidas a partir das informações de movimento do bloco de imagem a ser processado.
[0375] O primeiro bloco de predição do primeiro bloco de imagem inclui um primeiro bloco de predição forward e um primeiro bloco de predição backward. Nesta etapa, o primeiro bloco de predição forward e o primeiro bloco de predição backward do primeiro bloco de imagem pode ser obtido nas seguintes etapas de (1) a (8). As etapas de (1) a (8) podem ser as seguintes:
[0376] (1): Determinar uma primeira região posterior em uma imagem de referência posterior com base em uma primeira localização do primeiro bloco de imagem e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região posterior é blkW e uma altura da primeira região posterior é blkH.
[0377] Por exemplo, com referência à FIG. 15, as informações de movimento de um primeiro bloco de imagem B incluem uma imagem de referência posterior Ref0, uma imagem de referência anterior Ref1, um vetor de movimento posterior MV0 e um vetor de movimento anterior MV1. Uma segunda região posterior B11 é determinada na imagem de referência posterior Ref0 com base em uma primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região posterior B11 é blkW e uma altura da segunda região posterior B11 é blkH. Uma primeira região posterior B12 é determinada com base no vetor de movimento posterior MV0 e uma localização da segunda região posterior B11, onde uma largura da primeira região posterior B12 é blkW e uma altura da primeira região posterior B12 é blkH.
[0378] (2): Determinar se uma localização de canto da primeira região posterior coincide com uma localização de amostra na imagem de referência posterior na imagem de referência posterior; e se a localização de canto da primeira região posterior coincidir com a localização de amostra na imagem de referência posterior, obter um bloco de imagem na primeira região posterior a partir da imagem de referência posterior para servir como o primeiro bloco de predição forward do primeiro bloco de imagem; ou se a localização de canto da primeira região posterior não coincidir com a localização de amostra na imagem de referência posterior, realizar a etapa (3).
[0379] Por exemplo, com referência à FIG. 15, um canto superior esquerdo da primeira região posterior B12 é usado como um exemplo.
Assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior B12 seja (15, 16) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência posterior Ref0 e a localização de amostra na imagem de referência posterior Ref0 é (15, 16). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior B12 seja (15,3, 16,2) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência posterior Ref0, isto é, não há amostra em uma localização (15,3, 16,2) na imagem de referência posterior Ref0.
[0380] (3): Determinar uma amostra mais próxima da localização de canto da primeira região posterior na imagem de referência posterior e, determinar uma terceira região posterior por meio do uso da amostra como um canto, onde uma largura da terceira região posterior é blkW e uma altura da terceira região posterior é blkH.
[0381] Para qualquer localização de canto da primeira região posterior, é considerado que uma localização de canto superior esquerdo da primeira região posterior é usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência posterior e uma terceira região posterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da terceira região posterior é blkW e uma altura da terceira região posterior é blkH.
[0382] Por exemplo, com referência à FIG. 15, uma localização de canto de um canto superior esquerdo da primeira região posterior B12 é (15,3, 16,2) e uma localização de uma amostra mais próxima da localização de canto (15,3, 16,2) é determinada como (15, 16) na imagem de referência posterior Ref0. Uma terceira região posterior A1 é determinada por meio do uso da amostra na localização (15, 16) como um canto superior esquerdo. Uma largura da terceira região posterior A1 é blkW e uma altura da terceira região posterior A1 é blkH.
[0383] (4): Determinar uma quarta região posterior incluindo a terceira região posterior, onde um centro da terceira região posterior coincide com um centro da quarta região posterior, uma largura da quarta região posterior é blkW + n-1 e uma altura da quarta região posterior é blkH + n-1; e,
obter um bloco de imagem na quarta região posterior a partir da imagem de referência posterior e, realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o primeiro bloco de predição forward do primeiro bloco de imagem, onde uma largura do primeiro bloco de predição forward é blkW, uma altura do primeiro bloco de predição forward é blkH e n é uma quantidade de torneiras do filtro de interpolação.
[0384] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 15, uma quarta região posterior A2 incluindo a terceira região posterior A1 é determinada. Um centro da terceira região posterior A1 coincide com um centro da quarta região posterior A2 e, uma largura da quarta região posterior A2 é blkW + 7 e uma altura da quarta região posterior A2 é blkH + 7. Um bloco de imagem na quarta região posterior A2 é obtido a partir da imagem de referência posterior Ref0 e a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um primeiro bloco de predição forward do primeiro bloco de imagem B. Uma largura do primeiro bloco de predição forward é blkW e uma altura do primeiro bloco de predição forward é blkH.
[0385] (5): Determinar uma primeira região anterior em uma imagem de referência anterior com base na primeira localização e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região anterior é blkW e uma altura da primeira região anterior é blkH.
[0386] Por exemplo, com referência à FIG. 15, uma segunda região anterior C11 é determinada na imagem de referência anterior Ref1 com base na primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região anterior C11 é blkW e uma altura da segunda região anterior C11 é blkH. Uma primeira região anterior C12 é determinada com base no vetor de movimento anterior MV1 e uma localização da segunda região anterior C12, onde uma largura da primeira região anterior C12 é blkW e uma altura da primeira região anterior C12 é blkH.
[0387] (6): Determinar se uma localização de canto da primeira região anterior coincide com uma localização de amostra na imagem de referência anterior na imagem de referência anterior; e se a localização de canto da primeira região anterior coincidir com a localização de amostra na imagem de referência anterior, obter um bloco de imagem na primeira região anterior a partir da imagem de referência anterior para servir como o primeiro bloco de predição backward do primeiro bloco de imagem; ou se a localização de canto da primeira região anterior não coincidir com a localização de amostra na imagem de referência anterior, realizar a etapa (7).
[0388] Por exemplo, com referência à FIG. 15, um canto superior esquerdo da primeira região anterior C12 é usado como um exemplo.
Assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior C12 seja (5, 6) na imagem de referência anterior Ref1, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência anterior Ref1 e a localização de amostra na imagem de referência anterior Ref1 é (5, 6). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior C12 seja (5,3, 6,2) na imagem de referência anterior Ref1, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência anterior Ref0, isto é, não há amostra em uma localização (5,3, 6,2) na imagem de referência anterior Ref0.
[0389] (7): Determinar uma amostra mais próxima da localização de canto da primeira região anterior na imagem de referência anterior e, determinar uma terceira região anterior por meio do uso da amostra como um canto, onde uma largura da terceira região anterior é blkW e uma altura da terceira região anterior é blkH.
[0390] Para qualquer localização de canto da primeira região anterior, é considerado que uma localização de canto superior esquerdo da primeira região anterior é usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência anterior e uma terceira região anterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da terceira região anterior é blkW e uma altura da terceira região anterior é blkH.
[0391] Por exemplo, com referência à FIG. 15, uma localização de canto de um canto superior esquerdo da primeira região anterior C12 é (5,3, 6,2) e uma localização de uma amostra mais próxima da localização de canto (5,3, 6,2) é determinada como (5, 6) na imagem de referência anterior Ref1.
Uma terceira região anterior D1 é determinada por meio do uso da amostra na localização (5, 6) como um canto superior esquerdo. Uma largura da terceira região anterior D1 é blkW e uma altura da terceira região anterior D1 é blkH.
[0392] (8): Determinar uma quarta região anterior incluindo a terceira região anterior, onde um centro da terceira região anterior coincide com um centro da quarta região anterior, uma largura da quarta região anterior é blkW + n-1 e uma altura da quarta região anterior é blkH + n-1; e, obter um bloco de imagem na quarta região anterior a partir da imagem de referência anterior e, realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o primeiro bloco de predição backward do primeiro bloco de imagem, onde uma largura do primeiro bloco de predição backward é blkW e uma altura do primeiro bloco de predição backward é blkH.
[0393] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 15, uma quarta região anterior D2 incluindo a terceira região anterior D1 é determinada. Um centro da terceira região anterior D1 coincide com um centro da quarta região anterior D2, uma largura da quarta região anterior D2 é blkW + 7 e uma altura da quarta região anterior D2 é blkH + 7. Um bloco de imagem na quarta região anterior D2 é obtido a partir da imagem de referência anterior Ref1 e a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um primeiro bloco de predição backward do primeiro bloco de imagem B. Uma largura do primeiro bloco de predição backward é blkW e uma altura do primeiro bloco de predição backward é blkH.
[0394] Quando esta etapa é realizada, pode ser determinado adicionalmente, com base nas informações de movimento do bloco de imagem a ser processado, se a predição inter é realizada através de BIO e, quando é determinado que a predição inter é realizada através de BIO, esta etapa é a realizada. Para o processo de determinação, consultar o conteúdo relacionado na etapa 103 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0395] Nesta etapa, pode ser determinado adicionalmente, com base no primeiro bloco de predição forward e no primeiro bloco de predição backward do primeiro bloco de imagem, se a predição inter é realizada através de BIO e, quando é determinado que a predição inter é realizada através de BIO, a etapa 204 é realizada. Para o processo de determinação, consultar o conteúdo relacionado na etapa 103 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0396] Etapa 204: Realizar uma operação de gradiente no primeiro bloco de predição do primeiro bloco de imagem para obter uma primeira matriz de gradiente do primeiro bloco de imagem, onde uma largura da primeira matriz de gradiente é blkW-2 e uma altura da primeira matriz de gradiente é blkH-2.
[0397] A primeira matriz de gradiente inclui uma primeira matriz de gradiente horizontal posterior, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior.
[0398] Uma largura da primeira matriz de gradiente horizontal posterior, uma largura da primeira matriz de gradiente vertical posterior, uma largura da primeira matriz de gradiente horizontal anterior e uma largura da primeira matriz de gradiente vertical anterior, todas podem ser blkW-2 e, uma altura da primeira matriz de gradiente horizontal posterior, uma altura da primeira matriz de gradiente vertical posterior, uma altura da primeira matriz de gradiente horizontal anterior e uma altura da primeira matriz de gradiente vertical anterior, todas podem ser blkH-2.
[0399] Nesta etapa, para um processo de implementação detalhado para realizar a operação de gradiente no primeiro bloco de predição do primeiro bloco de imagem, consultar o conteúdo relacionado em etapa 104 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0400] Etapa 205: Realizar a primeira expansão na largura e na altura da primeira matriz de gradiente com base em um gradiente em uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem.
[0401] A largura e a altura da primeira matriz de gradiente obtida depois da primeira expansão são, respectivamente, iguais à largura blkW + 2 e à altura blkH + 2 do primeiro bloco de predição.
[0402] Nesta etapa, a primeira expansão é realizada separadamente em uma largura e uma altura da primeira matriz de gradiente horizontal posterior, uma largura e uma altura da primeira matriz de gradiente vertical posterior, uma largura e uma altura da primeira matriz de gradiente horizontal anterior e, uma largura e uma altura da primeira matriz de gradiente vertical anterior, de modo que as larguras de uma primeira matriz de gradiente horizontal posterior expandida, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior obtidas depois da primeira expansão são todas blkW + 2 e, as alturas da primeira matriz de gradiente horizontal posterior, a primeira matriz de gradiente vertical posterior, a primeira matriz de gradiente horizontal anterior e a primeira matriz de gradiente vertical anterior obtidas depois da primeira expansão são todas blkH + 2.
[0403] Para uma maneira para realizar a primeira expansão na primeira matriz de gradiente, consultar o conteúdo relacionado na etapa 205 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0404] Etapa 206: Replicar um valor de amostra em uma localização de extremidade de bloco do primeiro bloco de predição, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição, onde uma largura e uma altura de um primeiro bloco de predição obtido depois da segunda expansão são blkW + 2 e blkH + 2.
[0405] Nesta etapa, um valor de amostra na localização de extremidade de bloco do primeiro bloco de predição forward é replicado e um valor de amostra em uma localização de extremidade de bloco do primeiro bloco de predição backward é replicado, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição forward e, realizar a segunda expansão na largura e na altura do primeiro bloco de predição backward. Isto é, nesta etapa, uma largura e uma altura de um primeiro bloco de predição forward obtidas depois da segunda expansão são, respectivamente, blkW + 2 e blkH + 2, e uma largura e uma altura de um primeiro bloco de predição backward obtido depois da segunda expansão são, respectivamente, blkW + 2 e blkH + 2.
[0406] Nesta etapa, a filtragem de interpolação pode ser realizada adicionalmente em valores de amostra de uma região de extremidade de bloco do primeiro bloco de predição, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição.
[0407] Opcionalmente, na etapa 203, é considerado que um bloco de imagem com uma largura de blkW e uma altura de blkH na imagem de referência é diretamente usado como o primeiro bloco de predição do primeiro bloco de imagem, isto é, com referência à FIG. 15, um bloco de imagem na primeira região posterior B12 é usado como o primeiro bloco de predição forward no diagrama de referência posterior Ref0 e, um bloco de imagem na primeira região anterior C12 é usado como o primeiro bloco de predição backward no diagrama de referência anterior Ref1. Neste caso, o primeiro bloco de predição é um bloco de imagem na imagem de referência. Neste caso, um círculo de amostras em torno do primeiro bloco de predição e mais próximo do primeiro bloco de predição é selecionado a partir da imagem de referência, e o círculo de amostras selecionado e o primeiro bloco de predição formam um primeiro bloco de predição com uma largura de blkW + 2 e uma altura de blkH + 2 obtido depois da segunda expansão.
[0408] Opcionalmente, na etapa 203, o primeiro bloco de predição do primeiro bloco de imagem é obtido por meio do uso de um filtro de interpolação. Neste caso, o primeiro bloco de predição não é um bloco de imagem na imagem de referência. Para uma amostra em qualquer extremidade do primeiro bloco de predição (para facilidade da descrição, a extremidade é referida como uma primeira extremidade), uma segunda localização de cada amostra incluída em uma segunda extremidade é obtida com base em uma primeira localização de cada amostra na primeira extremidade na imagem de referência. A segunda extremidade está localizada fora do primeiro bloco de predição e uma distância entre a segunda extremidade e a primeira extremidade é uma amostra. A segunda extremidade inclui blkW + 2 amostras ou blkH + 2 amostras. Para cada amostra na segunda extremidade, uma segunda localização da amostra na imagem de referência está localizada entre duas amostras vizinhas ou entre quatro amostras vizinhas e a filtragem de interpolação é realizada nas duas amostras vizinhas ou nas quatro amostras vizinhas por meio do uso de um filtro de interpolação, para obter a amostra.
Uma segunda extremidade correspondente para cada extremidade do primeiro bloco de predição é obtida na maneira anterior e cada segunda extremidade obtida e o primeiro bloco de predição formam um primeiro bloco de predição com uma largura de blkW + 2 e uma altura de blkH + 2 obtidas depois da segunda expansão.
[0409] A etapa 206 pode alternativamente ser realizada antes da etapa 204. Desta maneira, quando o primeiro bloco de predição obtido depois que a segunda expansão é obtida, uma operação de gradiente pode ser realizada no primeiro bloco de predição obtido depois da segunda expansão, para obter a primeira matriz de gradiente do primeiro bloco de imagem. Pelo fato de que a largura do primeiro bloco de predição obtido depois da segunda expansão é blkW + 2 e a altura do primeiro bloco de predição obtido depois da segunda expansão é blkH + 2, uma largura da primeira matriz de gradiente obtida é blkW e uma altura da primeira matriz de gradiente obtida é blkH. Em seguida, a primeira expansão é realizada na largura e na altura da primeira matriz de gradiente com base em um gradiente em uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura da primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem.
[0410] As etapas 207 a 209 são as mesmas que as etapas 106 a 108, respectivamente, e os detalhes não são descritos neste relatório novamente.
[0411] O método de predição inter mostrado na FIG. 16A e FIG. 16B pode ser resumido como as etapas de 1 a 6 e as etapas de 1 a 6 podem ser as seguintes:
[0412] Etapa 1: Determinar as informações de movimento de uma CU atual.
[0413] As informações de movimento da CU atual podem ser determinadas por meio do uso de um modo de mesclagem, um modo AMVP (consultar as descrições nos fundamentos) ou outro modo. Isto não é limitado neste relatório.
[0414] Deve ser observado que outro método para determinar as informações de movimento também pode ser aplicado a este pedido. Os detalhes não são descritos neste relatório.
[0415] Etapa 2: Determinar se a CU atual atende a uma condição de uso de BIO.
[0416] Se a predição bidirecional for realizada na CU atual e uma relação entre um número de quadro de referência posterior POC_L0, um número de quadro de referência anterior POC_L1 e um número de quadro atual número POC_Cur atenderem a seguinte fórmula, a CU atual atende à condição de uso de BIO: (POC_L0 - POC_Cur) * (POC_L1 - POC_Cur) < 0
[0417] Deve ser observado que, se BIO for usada também pode ser determinado pela determinação de um tamanho da CU atual é maior que um limite pré-ajustado. Por exemplo, BIO pode ser usada apenas quando uma altura H da CU atual é maior que ou igual a 8 e uma largura W da CU atual é maior que ou igual a 8.
[0418] Deve ser observado que outra condição de uso de BIO também pode ser aplicada a este pedido. Os detalhes não são descritos neste relatório.
[0419] Se a CU atual atender às condições de uso de BIO, a etapa 3 é realizada ou, de outro modo, a compensação de movimento é realizada de outra maneira.
[0420] Um tamanho de VPDU é obtido: VPDU_X, e VPDU_Y, e os parâmetros blkW e blkH são definidos.
blkW = Min(cuW, VPDU_X) blkH = Min (cuH, VPDU_Y)
[0421] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 64x64, blkW é 64 e blkH é 64.
[0422] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 128x32, blkW é 128 e blkH é 32.
[0423] Por exemplo, se o tamanho da CU for 128x128 e o tamanho de VPDU for 32x128, blkW é 32 e blkH é 128.
[0424] Opcionalmente, se um tamanho de uma unidade de predição inter de processamento máxima for menor que o tamanho de VPDU, blkW e blkH podem ser definidos, de acordo com as seguintes fórmulas: blkW = Min(cuW, MAX_MC_X) blkH = Min (cuH, MAX_MC_Y)
[0425] Por exemplo, se o tamanho da CU for 128x128 e o tamanho da unidade de predição inter de processamento máxima for 32x32, blkW é 32 e blkH é 32.
[0426] Cada CU é dividida com base em blkW e blkH para executar BIO.
[0427] Etapa 3: Calcular os preditores forward e backward da CU atual.
[0428] A compensação de movimento é realizada por meio do uso das informações de movimento, para obter os preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), onde i=0..blkW-1 e j=0..blkH-1 (uma matriz de predição de blkW*blkH é obtida).
[0429] Deve ser entendido que o preditor pode ser obtido por meio do uso da VPDU como uma unidade de obtenção de preditor mínima ou o preditor pode ser obtido por meio do uso de um bloco menor que a VPDU como uma unidade de obtenção de preditor mínima. Isto não é limitado.
[0430] Etapa 4: Calcular os gradientes horizontal e vertical com base nos preditores forward e backward da CU atual. 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘)
[0431] Os gradientes horizontal e vertical (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 calculados com base nos preditores forward e backward, de acordo com a fórmula (4), onde i=1..blkW-2 e j=1..blkH-2 (uma matriz de gradiente de (blkW- 2)*(blkH-2) é obtida).
[0432] Etapa 5: Realizar o preenchimento nos preditores forward e backward da CU atual e nos gradientes horizontal e vertical.
[0433] O preenchimento é realizado por meio do uso do método 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) mostrado na FIG. 9, para obter 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗), onde i=-1..blkW e 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 j=-1..blkH (o preenchimento é realizado na matriz de (blkW-2)*(blkH-2) em torno de duas linhas e duas colunas, para obter uma matriz de predição de (blkW + 2)*(blkH + 2), uma matriz de gradiente horizontal e uma matriz de gradiente vertical).
[0434] Etapa 6: Derivar um vetor de movimento refinado de cada sub-bloco 4x4 e, em seguida, realizar a ponderação.
[0435] Para cada sub-bloco 4x4, vx e vy são obtidos, de acordo com a fórmula (2). Finalmente, a ponderação é realizada, de acordo com a fórmula (6) para obter um preditor de cada sub-bloco 4x4.
[0436] Nesta modalidade deste pedido, uma largura menor é selecionada na largura Width de divisão de imagem pré-ajustada e na largura cuW do bloco de imagem a ser processado e, é denotada como blkW, uma altura menor é selecionada na altura Height de divisão de imagem pré-ajustada e na altura cuH do bloco de imagem a ser processado e, é denotada como blkH,
e o primeiro bloco de imagem incluído no bloco de imagem a ser processado é determinado com base em blkW e blkH. Portanto, uma área de cada primeiro bloco de imagem determinado não é muito grande, de modo que menos espaço de memória seja consumido quando o processamento de predição inter é realizado em cada primeiro bloco de imagem. Além disso, o primeiro bloco de predição do primeiro bloco de imagem é obtido com base nas informações de movimento do primeiro bloco de imagem. A largura do primeiro bloco de predição é igual à largura do primeiro bloco de imagem e, a altura do primeiro bloco de predição é igual à altura do primeiro bloco de imagem. Portanto, o primeiro bloco de predição pode ser relativamente pequeno, de modo que menos recursos de hardware, tais como os recursos de CPU e os recursos de memória são consumidos para obter o primeiro bloco de predição, reduzindo, desse modo, a complexidade da implementação e melhorando a eficácia do processamento.
[0437] Com referência à FIG. 16A e FIG. 16B, uma modalidade deste pedido fornece um método de predição inter. O método pode ser aplicado para a unidade de predição inter 244 no codificador mostrado na FIG. 2 ou a unidade de predição inter 344 no decodificador mostrado na FIG. 3. O método pode ser um método de predição inter bidirecional e inclui as seguintes etapas.
[0438] Etapa 301: Comparar uma largura cuW de um primeiro bloco de imagem com uma largura Width de divisão de imagem pré-ajustada e comparar uma altura cuH do primeiro bloco de imagem com uma altura Height de divisão de imagem pré-ajustada; e quando cuW é maior que ou igual a Width e/ou quando cuH é maior que ou igual a Height, realizar a etapa 302, ou quando cuW é menor que Width e cuH é menor que Height, realizar a etapa 305.
[0439] Quando o método nesta modalidade é aplicado a um codificador, ao codificar uma imagem, o codificador divide a imagem em primeiros blocos de imagem. Antes desta etapa, o primeiro bloco de imagem é obtido a partir do codificador.
[0440] Quando o método nesta modalidade é aplicado a um decodificador, o decodificador recebe um fluxo de bits de vídeo a partir de um codificador e o fluxo de bits de vídeo inclui um primeiro bloco de imagem. Antes desta etapa, o primeiro bloco de imagem é extraído a partir do fluxo de bits de vídeo.
[0441] Quando esta etapa é realizada, pode ser determinado adicionalmente, com base nas informações de movimento do primeiro bloco de imagem, se a predição inter é realizada através de BIO e, quando é determinado que predição inter é realizada através de BIO, esta etapa é realizada. Para um processo de implementação detalhado, consultar o conteúdo relacionado na etapa 103 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0442] Etapa 302: Obter um segundo bloco de predição do primeiro bloco de imagem com base nas informações de movimento do primeiro bloco de imagem, onde uma largura do segundo bloco de predição é cuW + 4 e uma altura do segundo bloco de predição é cuH + 4.
[0443] As informações de movimento do primeiro bloco de imagem incluem informações, tais como uma imagem de referência e um vetor de movimento. Nesta modalidade, uma maneira de predição bidirecional com base em fluxo óptico é usada para a predição inter. Portanto, as informações de movimento do primeiro bloco de imagem incluem informações, tais como uma imagem de referência posterior, uma imagem de referência anterior, um vetor de movimento posterior e um vetor de movimento anterior.
[0444] Quando o método nesta modalidade é aplicado a um codificador, o codificador pode determinar as informações de movimento de um primeiro bloco de imagem em um modo de mesclagem, um modo AMVP ou outro modo. Nesta etapa, as informações de movimento do primeiro bloco de imagem que é determinado pelo codificador são obtidas.
[0445] Quando o método nesta modalidade é aplicado a um decodificador, um fluxo de bits de vídeo recebido pelo decodificador a partir de um codificador inclui as informações de movimento de um primeiro bloco de imagem. Nesta etapa, as informações de movimento do primeiro bloco de imagem são extraídas a partir do fluxo de bits de vídeo.
[0446] O segundo bloco de predição do primeiro bloco de imagem inclui um segundo bloco de predição forward e um segundo bloco de predição backward. Nesta etapa, o segundo bloco de predição forward e o segundo bloco de predição backward do primeiro bloco de imagem podem ser obtidos nas seguintes etapas de (1) a (8). As etapas de (1) a (8) podem ser as seguintes:
[0447] (1): Determinar uma primeira região posterior em uma imagem de referência posterior com base em uma primeira localização do primeiro bloco de imagem no bloco de imagem a ser processado e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região posterior é blkW + 4 e uma altura da primeira região posterior é blkH + 4.
[0448] Por exemplo, com referência à FIG. 13, as informações de movimento de s primeiro bloco de imagem B inclui uma imagem de referência posterior Ref0, uma imagem de referência anterior Ref1, um vetor de movimento posterior MV0 e um vetor de movimento anterior MV1. Uma segunda região posterior B11 é determinada na imagem de referência posterior Ref0 com base em uma primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região posterior B11 é blkW e uma altura da segunda região posterior B11 é blkH. Uma terceira região posterior B12 é determinada com base no vetor de movimento posterior MV0 e uma localização da segunda região posterior B11, onde uma largura da terceira região posterior B12 é blkW e uma altura da terceira região posterior B12 é blkH. Uma primeira região posterior A1 incluindo a terceira região posterior B12 é determinada, onde uma largura da primeira região posterior A1 é blkW + 4, uma altura da primeira região posterior A1 é blkH + 4 e um centro da terceira região posterior B12 coincide com um centro da primeira região posterior A1.
[0449] (2): Determinar se uma localização de canto da primeira região posterior coincide com uma localização de amostra na imagem de referência posterior na imagem de referência posterior; e se a localização de canto da primeira região posterior coincidir com a localização de amostra na imagem de referência posterior, obter um bloco de imagem na primeira região posterior a partir da imagem de referência posterior para servir como o segundo bloco de predição forward do primeiro bloco de imagem; ou se a localização de canto da primeira região posterior não coincidir com a localização de amostra na imagem de referência posterior, realizar a etapa (3).
[0450] Por exemplo, com referência à FIG. 13, um canto superior esquerdo da primeira região posterior A1 é usado como um exemplo.
Assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior A1 seja (15, 16) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência posterior Ref0 e a localização de amostra na imagem de referência posterior Ref0 é (15, 16). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região posterior A1 seja (15,3, 16,2) na imagem de referência posterior Ref0, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência posterior Ref0, isto é, não há amostra em uma localização (15,3, 16,2) na imagem de referência posterior Ref0.
[0451] (3): Determinar uma amostra mais próxima da localização de canto da primeira região posterior na imagem de referência posterior e determinar uma quarta região posterior por meio do uso da amostra como um canto, onde uma largura da quarta região posterior é blkW + 4 e uma altura da quarta região posterior é blkH + 4.
[0452] Para qualquer localização de canto da primeira região posterior, é considerado que uma localização de canto superior esquerdo da primeira região posterior é usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência posterior e uma quarta região posterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da quarta região posterior é blkW + 4 e uma altura da quarta região posterior é blkH + 4.
[0453] Por exemplo, com referência à FIG. 13, uma localização de canto de um canto superior esquerdo da primeira região posterior A1 é (15,3, 16,2) e uma localização de uma amostra mais próxima da localização de canto (15,3, 16,2) é determinada como (15, 16) na imagem de referência posterior Ref0. Uma quarta região posterior A2 é determinada por meio do uso da amostra na localização (15, 16) como um canto superior esquerdo. Uma largura da quarta região posterior A2 é blkW + 4 e uma altura da quarta região posterior A2 é blkH + 4.
[0454] (4): Determinar uma quinta região posterior incluindo a quarta região posterior, onde um centro da quarta região posterior coincide com um centro da quinta região posterior, uma largura da quinta região posterior é blkW + n + 3 e uma altura da quinta região posterior é blkH + n + 3; e, obter um bloco de imagem na quinta região posterior a partir da imagem de referência posterior e, realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o segundo bloco de predição forward do primeiro bloco de imagem, onde uma largura do segundo bloco de predição forward é blkW + 4, uma altura do segundo bloco de predição forward é blkH + 4 e n é uma quantidade de torneiras do filtro de interpolação.
[0455] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 13, uma quinta região posterior A3 incluindo a quarta região posterior A2 é determinada. Um centro da quarta região posterior A2 coincide com um centro da quinta região posterior A3 e, uma largura da quinta região posterior A3 é blkW + 11 e, uma altura da quinta região posterior A3 é blkH + 11. Um bloco de imagem na quinta região posterior A3 é obtido a partir da imagem de referência posterior Ref0 e a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um segundo bloco de predição forward do primeiro bloco de imagem B. Uma largura do segundo bloco de predição forward é blkW + 4 e uma altura do segundo bloco de predição forward é blkH + 4.
[0456] (5): Determinar uma primeira região anterior em uma imagem de referência anterior com base na primeira localização e nas informações de movimento do primeiro bloco de imagem, onde uma largura da primeira região anterior é blkW + 4 e uma altura da primeira região anterior é blkH + 4.
[0457] Por exemplo, com referência à FIG. 13, uma segunda região anterior C11 é determinada na imagem de referência anterior Ref1 com base na primeira localização do primeiro bloco de imagem B, onde uma largura da segunda região anterior C11 é blkW e uma altura da segunda região anterior C11 é blkH. Uma terceira região anterior C12 é determinada com base no vetor de movimento anterior MV1 e uma localização da segunda região anterior C11, onde uma largura da terceira região anterior C12 é blkW e uma altura da terceira região anterior C12 é blkH. Uma primeira região anterior D1 incluindo a terceira região anterior C12 é determinada, onde uma largura da primeira região anterior D1 é blkW + 4, uma altura da primeira região anterior D1 é blkH + 4 e um centro da terceira região anterior C12 pode coincidir com um centro da primeira região anterior D1.
[0458] (6): Determinar se uma localização de canto da primeira região anterior coincide com uma localização de amostra na imagem de referência anterior na imagem de referência anterior; e se a localização de canto da primeira região anterior coincidir com a localização de amostra na imagem de referência anterior, obter um bloco de imagem na primeira região a partir da imagem de referência anterior para servir como o segundo bloco de predição backward do primeiro bloco de imagem; ou se a localização de canto da primeira região anterior não coincidir com a localização de amostra na imagem de referência anterior, realizar a etapa (7).
[0459] Por exemplo, com referência à FIG. 13, um canto superior esquerdo da primeira região anterior A1 é usado como um exemplo. Assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior A1 seja (5, 6) na imagem de referência anterior Ref0, a localização de canto do canto superior esquerdo coincide com uma localização de amostra na imagem de referência anterior Ref0 e a localização de amostra na imagem de referência anterior Ref0 (5, 6). Para outro exemplo, assumindo que uma localização de canto do canto superior esquerdo da primeira região anterior D1 seja (5,3, 6,2) na imagem de referência anterior Ref0, a localização de canto do canto superior esquerdo coincide com nenhuma localização de amostra na imagem de referência anterior Ref0, isto é, não há amostra em uma localização (5,3, 6,2) na imagem de referência anterior Ref0.
[0460] (7): Determinar uma amostra mais próxima da localização de canto da primeira região anterior na imagem de referência anterior e, determinar uma quarta região anterior por meio do uso da amostra como um canto, onde uma largura da quarta região anterior é blkW + 4 e uma altura da quarta região anterior é blkH + 4.
[0461] Para qualquer localização de canto da primeira região anterior, é considerado que uma localização de canto superior esquerdo da primeira região anterior é usada como um exemplo. Uma amostra mais próxima da localização de canto superior esquerdo é determinada na imagem de referência anterior e uma quarta região anterior é determinada por meio do uso da amostra como um canto superior esquerdo. Uma largura da quarta região anterior é blkW + 4 e uma altura da quarta região anterior é blkH + 4.
[0462] Por exemplo, com referência à FIG. 13, uma localização de canto de um canto superior esquerdo da primeira região anterior D1 é (5,3, 6,2) e uma localização de uma amostra mais próxima da localização de canto (5,3, 6,2) é determinada como (5, 6) na imagem de referência anterior Ref1. Uma quarta região anterior D2 é determinada por meio do uso da amostra na localização (5, 6) como um canto superior esquerdo. Uma largura da quarta região anterior D2 é blkW + 4 e uma altura da quarta região anterior D2 é blkH + 4.
[0463] (8): Determinar uma quinta região anterior incluindo a quarta região anterior, onde um centro da quarta região anterior coincide com um centro da quinta região anterior, uma largura da quinta região anterior é blkW + n + 3 e uma altura da quinta região anterior é blkH + n + 3; e obter um bloco de imagem na quinta região anterior a partir da imagem de referência anterior e, realizar a filtragem de interpolação no bloco de imagem por meio do uso de um filtro de interpolação, para obter o segundo bloco de predição backward do primeiro bloco de imagem, onde uma largura do segundo bloco de predição backward é blkW + 4 e uma altura do segundo bloco de predição backward é blkH + 4.
[0464] Por exemplo, um filtro de interpolação de 8 torneiras é usado como um exemplo. Com referência à FIG. 13, uma quinta região anterior D3 incluindo a quarta região anterior D2 é determinada. Um centro da quarta região anterior D2 coincide com um centro da quinta região anterior D3, uma largura da quinta região anterior D3 é blkW + 11 e uma altura da quinta região anterior D3 é blkH + 11. Um bloco de imagem na quinta região anterior D3 é obtido a partir da imagem de referência anterior Ref1 e, a filtragem de interpolação é realizada no bloco de imagem por meio do uso de um filtro de interpolação, para obter um segundo bloco de predição backward do primeiro bloco de imagem B.
Uma largura do segundo bloco de predição backward é blkW + 4, uma altura do segundo bloco de predição backward é blkH + 4 e n é uma quantidade de torneiras do filtro de interpolação.
[0465] Etapa 303: Realizar uma operação de gradiente no segundo bloco de predição do primeiro bloco de imagem para obter uma primeira matriz de gradiente do primeiro bloco de imagem, onde uma largura da primeira matriz de gradiente é cuW + 2 e uma altura da primeira matriz de gradiente é cuH + 2.
[0466] A primeira matriz de gradiente inclui uma primeira matriz de gradiente horizontal posterior, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior.
[0467] Nesta etapa, para um processo de implementação detalhado de realização da operação de gradiente no segundo bloco de predição do primeiro bloco de imagem para obter a primeira matriz de gradiente, consultar o processo de obtenção detalhado da primeira matriz de gradiente na etapa 104 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0468] O primeiro bloco de predição inclui um segundo bloco de predição forward e um segundo bloco de predição backward. Uma segunda matriz de gradiente horizontal posterior com uma largura de cuW + 2 e uma altura de cuH + 2 e, uma segunda matriz de gradiente vertical posterior com uma largura de cuW + 2 e uma altura de cuH + 2, podem ser obtidas com base no segundo bloco de predição forward. Uma segunda matriz de gradiente horizontal anterior com uma largura de cuW + 2 e uma altura de cuH + 2 e, uma segunda matriz de gradiente vertical anterior com uma largura de cuW + 2 e uma altura de cuH + 2 podem ser obtidas com base no segundo bloco de predição backward.
[0469] Etapa 304: Determinar um primeiro bloco de predição do primeiro bloco de imagem no segundo bloco de predição, onde uma largura do primeiro bloco de predição é cuW + 2 e uma altura do primeiro bloco de predição é cuH + 2;
[0470] Um centro do primeiro bloco de predição coincide com um centro do segundo bloco de predição.
[0471] O primeiro bloco de predição inclui um primeiro bloco de predição forward e um primeiro bloco de predição backward.
[0472] Nesta etapa, o primeiro bloco de predição forward com uma largura de cuW + 2 e uma altura de cuH + 2 do primeiro bloco de imagem é determinado no segundo bloco de predição forward e, o primeiro bloco de predição backward com uma largura de cuW + 2 e uma altura de cuH + 2 do primeiro bloco de imagem é determinado no segundo bloco de predição backward.
[0473] Etapa 305: Obter o primeiro bloco de predição do primeiro bloco de imagem com base nas informações de movimento do primeiro bloco de imagem, onde a largura do primeiro bloco de predição é cuW + 2 e a altura do primeiro bloco de predição é cuH + 2.
[0474] Nesta etapa, para um processo de obtenção detalhado do primeiro bloco de predição, consultar o conteúdo relacionado na etapa 103 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0475] Etapa 306: Realizar uma operação de gradiente no primeiro bloco de predição do primeiro bloco de imagem para obter uma primeira matriz de gradiente do primeiro bloco de imagem, onde uma largura da primeira matriz de gradiente é cuW e uma altura da primeira matriz de gradiente é cuH.
[0476] A primeira matriz de gradiente inclui uma primeira matriz de gradiente horizontal posterior, uma primeira matriz de gradiente vertical posterior, uma primeira matriz de gradiente horizontal anterior e uma primeira matriz de gradiente vertical anterior.
[0477] Para um processo de implementação detalhado desta etapa, consultar o conteúdo relacionado na etapa 104 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0478] Etapa 307: Realizar a primeira expansão na largura e na altura da primeira matriz de gradiente com base em um gradiente em uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem.
[0479] Para um processo de implementação detalhado desta etapa, consultar o conteúdo relacionado na etapa 105 na modalidade mostrada na FIG. 12. Os detalhes não são descritos neste relatório novamente.
[0480] As etapas 308 a 310 são as mesmas que as etapas 106 a 108, respectivamente, e os detalhes não são descritos neste relatório novamente.
[0481] O método de predição inter mostrado na FIG. 15 pode ser resumido como as etapas de 1 a 6 e as etapas de 1 a 6 podem ser as seguintes:
[0482] Etapa 1: Determinar as informações de movimento de uma CU atual.
[0483] As informações de movimento da CU atual podem ser determinadas por meio do uso de um modo de mesclagem, um modo AMVP (consultar as descrições nos fundamentos) ou outro modo. Isto não é limitado neste relatório.
[0484] Deve ser observado que outro método para determinar as informações de movimento também pode ser aplicado a este pedido. Os detalhes não são descritos neste relatório.
[0485] Etapa 2: Determinar se a CU atual atender a uma condição de uso de BIO.
[0486] Se a predição bidirecional for realizada na CU atual e uma relação entre um número de quadro de referência posterior POC_L0, um número de quadro de referência anterior POC_L1 e um número de quadro atual POC_Cur atenderem a seguinte fórmula, a CU atual atende à condição de uso de BIO: (POC_L0 - POC_Cur) * (POC_L1 - POC_Cur) < 0
[0487] Deve ser observado que outra condição de uso de BIO também pode ser aplicada a este pedido. Os detalhes não são descritos neste relatório.
[0488] Se a CU atual atender à condição de uso de BIO, a etapa 3 é realizada ou, de outro modo, a compensação de movimento é realizada de outra maneira.
[0489] Etapa 3: Calcular os preditores forward e backward da CU atual.
[0490] Se cuW for maior ou igual a VPDU_X ou cuH for maior ou igual a VPDU_Y, a compensação de movimento é realizada por meio do uso das informações de movimento, para obter os preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), onde i=--2..cuW + 1 e j=-2..cuH + 1 (uma matriz de predição de (cuW + 4)*(cuH + 4) é obtida por meio do uso de um mesmo filtro de interpolação).
[0491] Se cuW for menor que VPDU_X ou cuH for menor que VPDU_Y, a compensação de movimento é realizada por meio do uso das informações de movimento, para obter os preditores forward e backward 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), onde i=-1..cuW e j=-1..cuH (uma matriz de predição de (cuW + 2)*(cuH + 2) é obtida).
[0492] Em 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), i=0..cuW-1 e j=0..cuH-1, que são obtidos pela realização da interpolação por meio do uso de um filtro de interpolação de 8 torneiras e um preditor de outra localização (a expansão por uma linha e uma coluna é realizada) é obtido pela realização de interpolação por meio do uso de um filtro de interpolação bilinear.
[0493] Deve ser entendido que o preditor pode ser obtido por meio do uso da VPDU como uma unidade de obtenção de preditor mínima ou o preditor pode ser obtido por meio do uso de um bloco menor que a VPDU como uma unidade de obtenção de preditor mínima. Isto não é limitado.
[0494] Deve ser observado que o preditor da região expandida também pode ser obtido por meio do uso de outro método, por exemplo, por meio do uso de um filtro de interpolação de 8 torneiras ou diretamente usando uma amostra de referência em uma localização de amostra inteira. Isto não é limitado neste relatório.
[0495] Deve ser observado que uma SAD entre os preditores forward e backward é calculada, para determinar se a SAD é menor que um limite TH_CU e, se a SAD for menor que o limite TH_CU, BIO não é realizada ou, de outro modo, BIO é realizada. Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório.
[0496] Uma fórmula para calcular a SAD é a seguinte: 𝑆𝑆𝑆𝑆𝑆𝑆 = � � 𝑎𝑎𝑎𝑎𝑎𝑎(𝐼𝐼 (1) (𝑖𝑖, 𝑗𝑗) − 𝐼𝐼 (0) (𝑖𝑖, 𝑗𝑗)) (9) 𝑗𝑗=0..𝑐𝑐𝑐𝑐𝑐𝑐−1 𝑖𝑖=0..cuW−1
[0497] O limite TH_CU pode ser definido como (1<<(BD - 8 + shift))* cuW*cuH e o deslocamento pode ser definido como Max(2, 14-BD).
[0498] Etapa 4: Calcular os gradientes horizontal e vertical com base nos preditores forward e backward da CU atual.
[0499] Se cuW for maior ou igual a VPDU_X ou cuH for maior ou 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) igual a VPDU_Y, os gradientes horizontal e vertical (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 calculados, de acordo com a fórmula (4), onde i=-1..cuW e j=-1..cuH (uma matriz de gradiente de (cuW + 2)*(cuH + 2) é obtida).
[0500] Se cuW for menor que VPDU_X ou cuH for menor que 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) VPDU_Y, os gradientes horizontal e vertical (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗) são calculados 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 com base nos preditores forward e backward, de acordo com a fórmula (4), onde i=0..cuW-1 e j=0..cuH-1 (uma matriz de gradiente of cuW*cuH é obtida).
[0501] Etapa 5: Se cuW for menor que VPDU_X e cuH for menor que VPDU_Y, realizar o preenchimento nos preditores forward e backward da CU atual e nos gradientes horizontal e vertical.
[0502] O preenchimento é realizado por meio do uso do método na 𝜕𝜕𝐼𝐼 (𝑘𝑘) 𝜕𝜕𝐼𝐼 (𝑘𝑘) FIG. 9, para obter 𝐼𝐼 (𝑘𝑘) (𝑖𝑖, 𝑗𝑗), (𝑖𝑖, 𝑗𝑗) e (𝑖𝑖, 𝑗𝑗), onde i=-1..cuW e j=-1..cuH (a 𝜕𝜕𝜕𝜕 𝜕𝜕𝜕𝜕 matriz de predição de (cuW + 2)*(cuH + 2), uma matriz de gradiente horizontal e uma matriz de gradiente vertical são obtidas).
[0503] Etapa 6: Derivar um vetor de movimento refinado de cada sub-bloco 4x4 e, em seguida, realizar a ponderação.
[0504] Para cada sub-bloco 4x4, vx e vy são obtidos, de acordo com a fórmula (2). Finalmente, a ponderação é realizada, de acordo com a fórmula (6) para obter um preditor de cada sub-bloco 4x4.
[0505] Deve ser observado que uma SAD entre os preditores forward e backward de cada sub-bloco 4x4 pode ser calculada para determinar se a SAD é menor que um limite TH_SCU. Se a SAD for menor que o limite TH_SCU, a média ponderada é diretamente realizada ou, de outro modo, vx e vy são obtidos, de acordo com a fórmula (2) e, em seguida, a ponderação é realizada, de acordo com a fórmula (6). Outro método de determinação também pode ser aplicado a este pedido e os detalhes não são descritos neste relatório. TU_SCU pode ser definido como 1<<(BD-3 + shift).
[0506] Nesta modalidade deste pedido, a predição de BIO é realizada em um limite da VPDU e um limite da CU em uma mesma maneira.
Quando a CU inclui uma pluralidade de VPDUs, a complexidade da implementação da compensação de movimento predição é reduzida.
[0507] Nesta modalidade deste pedido, quando cuW é maior que ou igual a Width e/ou cuH é maior que ou igual a Height, o segundo bloco de predição do primeiro bloco de imagem é obtido com base nas informações de movimento do primeiro bloco de imagem. Pelo fato de que a largura do segundo bloco de predição é cuW + 4 e a altura do segundo bloco de predição é cuH + 4, a operação de gradiente é realizada no segundo bloco de predição do primeiro bloco de imagem para obter a primeira matriz de gradiente com a largura de cuW + 2 e a altura de cuH + 2, de modo que o processamento de expansão possa ser omitido da extremidade da primeira matriz de gradiente, melhorando, desse modo, a eficácia da predição inter.
[0508] A FIG. 17 é um fluxograma esquemático de um método, de acordo com uma modalidade deste pedido. Como mostrado na figura, um método de predição inter é fornecido e inclui as seguintes etapas.
[0509] S1201: Obter as informações de movimento de um bloco de imagem a ser processado, onde o bloco de imagem a ser processado inclui uma pluralidade de unidades de dados de tubulação virtual e, a unidade de dados de tubulação virtual inclui pelo menos uma unidade de processamento básico.
[0510] S1202: Obter uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento.
[0511] S1203: Calcular uma matriz de gradiente de predição horizontal e uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor.
[0512] S1204: Calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical.
[0513] Em uma implementação viável, a obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento inclui: obter uma matriz de predição inicial de cada unidade de dados de tubulação virtual com base nas informações de movimento, onde um tamanho da matriz de predição inicial é igual a um tamanho da unidade de dados de tubulação virtual; e, usar a matriz de predição inicial como a matriz de preditor.
[0514] Em uma implementação viável, depois da obtenção de uma matriz de predição inicial de cada unidade de dados de tubulação virtual, o método inclui adicionalmente: realizar a expansão da amostra em uma extremidade da matriz de predição inicial para obter uma matriz de predição expandida, onde um tamanho da matriz de predição expandida é maior que o tamanho da matriz de predição inicial; e, correspondentemente, o uso da matriz de predição inicial como a matriz de preditor inclui: usar a matriz de predição expandida como a matriz de preditor.
[0515] Em uma implementação viável, para realizar a expansão da amostra em uma extremidade da matriz de predição inicial inclui: obter um valor de amostra de uma amostra fora da matriz de predição inicial com base em uma interpolação de um valor de amostra de uma amostra na matriz de predição inicial; ou usar um valor de amostra de uma amostra na extremidade da matriz de predição inicial como um valor de amostra de uma amostra que está fora da matriz de predição inicial e que é vizinha da extremidade.
[0516] Em uma implementação viável, a unidade de dados de tubulação virtual inclui uma pluralidade de unidades de compensação de movimento e, a obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento inclui: obter uma matriz de valor de compensação de cada unidade de compensação de movimento com base nas informações de movimento; e combinar as matrizes de valor de compensação da pluralidade de unidades de compensação de movimento para obter a matriz de preditor.
[0517] Em uma implementação viável, o cálculo de uma matriz de gradiente de predição horizontal e de uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor inclui: realizar, separadamente, o cálculo de gradiente horizontal e o cálculo de gradiente vertical na matriz de preditor para obter a matriz de gradiente de predição horizontal e a matriz de gradiente de predição vertical.
[0518] Em uma implementação viável, antes de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical, o método inclui adicionalmente: realizar a expansão da amostra em uma extremidade da matriz de preditor para obter uma matriz de predição de preenchimento, onde a matriz de predição de preenchimento tem um tamanho pré-ajustado; e, realizar, separadamente, a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical para obter uma matriz de gradiente horizontal de preenchimento e uma matriz de gradiente vertical de preenchimento, onde a matriz de gradiente horizontal de preenchimento e a matriz de gradiente vertical de preenchimento, cada um, têm o tamanho pré- ajustado; e, correspondentemente, o cálculo de um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical inclui: calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de predição de preenchimento, na matriz de gradiente horizontal de preenchimento e na matriz de gradiente vertical de preenchimento.
[0519] Em uma implementação viável, antes de realizar a expansão da amostra em uma extremidade da matriz de preditor, o método inclui adicionalmente: determinar que um tamanho da matriz de preditor é menor que o tamanho pré-ajustado.
[0520] Em uma implementação viável, antes de realizar a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical, o método inclui adicionalmente: determinar que um tamanho da matriz de gradiente de predição horizontal e/ou um tamanho da matriz de gradiente de predição vertical são/é menor que o tamanho pré-ajustado.
[0521] Em uma implementação viável, depois de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual, o método inclui adicionalmente: obter um preditor de cada unidade de processamento básico com base na matriz de preditor da unidade de dados de tubulação virtual e no valor de refinamento de informações de movimento de cada unidade de processamento básico na unidade de dados de tubulação virtual.
[0522] Em uma implementação viável, o método é usado para a predição bidirecional; correspondentemente, as informações de movimento incluem as primeiras informações de movimento da lista de quadros de referência e as segundas informações de movimento da lista de quadros de referência; a matriz de preditor inclui uma primeira matriz de preditor e uma segunda matriz de preditor, a primeira matriz de preditor é obtida com base nas primeiras informações de movimento da lista de quadros de referência e a segunda matriz de preditor é obtida com base nas segundas informações de movimento da lista de quadros de referência; a matriz de gradiente de predição horizontal inclui uma primeira matriz de gradiente de predição horizontal e uma segunda matriz de gradiente de predição horizontal, a primeira matriz de gradiente de predição horizontal é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição horizontal é calculada com base na segunda matriz de preditor; a matriz de gradiente de predição vertical inclui uma primeira matriz de gradiente de predição vertical e uma segunda matriz de gradiente de predição vertical, a primeira matriz de gradiente de predição vertical é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição vertical é calculada com base na segunda matriz de preditor; e o valor de refinamento de informações de movimento inclui um primeiro valor de refinamento de informações de movimento da lista de quadros de referência e um segundo valor de refinamento de informações de movimento da lista de quadros de referência, o primeiro valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na primeira matriz de preditor, na primeira matriz de gradiente de predição horizontal e na primeira matriz de gradiente de predição vertical e, o segundo valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na segunda matriz de preditor, na segunda matriz de gradiente de predição horizontal e na segunda matriz de gradiente de predição vertical.
[0523] Em uma implementação viável, antes de realizar a expansão da amostra em uma extremidade da matriz de predição inicial, o método inclui adicionalmente: determinar que uma localização de domínio de tempo de um quadro de imagem em que o bloco de imagem a ser processado está localizado, está localizada entre um primeiro quadro de referência indicado pelas primeiras informações de movimento da lista de quadros de referência e um segundo quadro de referência indicado pelas segundas informações de movimento da lista de quadros de referência.
[0524] Em uma implementação viável, depois da obtenção de uma matriz de preditor de cada unidade de dados de tubulação virtual, o método inclui adicionalmente: determinar que uma diferença entre a primeira matriz de preditor e a segunda matriz de preditor é menor que um primeiro limite.
[0525] Em uma implementação viável, o valor de refinamento de informações de movimento da unidade de processamento básico corresponde a uma matriz de preditor básica na matriz de preditor; e antes de calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical, o método inclui adicionalmente: determinar que uma diferença entre a primeira matriz de preditor básica e a segunda matriz de preditor básica é menor que um segundo limite.
[0526] Em uma implementação viável, um tamanho da unidade de processamento básico é 4x4.
[0527] Em uma implementação viável, uma largura da unidade de dados de tubulação virtual é W, uma altura da unidade de dados de tubulação virtual é H e o tamanho da matriz de predição expandida é (W + n + 2) x (H + n + 2). Correspondentemente, o tamanho da matriz de gradiente de predição horizontal é (W + n) x (H + n) e o tamanho da matriz de gradiente de predição vertical é (W + n) x (H + n), onde W e H são números inteiros positivos e n é um número par.
[0528] Em uma implementação viável, n é 0, 2 ou -2.
[0529] Em uma implementação viável, antes de obter as informações de movimento de um bloco de imagem a ser processado, o método inclui adicionalmente: determinar que o bloco de imagem a ser processado inclui a pluralidade de unidades de dados de tubulação virtual.
[0530] A FIG. 18 é um fluxograma esquemático de um método, de acordo com uma modalidade deste pedido. Como mostrado na figura, um aparelho de predição inter é fornecido e inclui: um módulo de obtenção 1301, configurado para obter as informações de movimento de um bloco de imagem a ser processado, onde o bloco de imagem a ser processado inclui uma pluralidade de unidades de dados de tubulação virtual e a unidade de dados de tubulação virtual inclui pelo menos uma unidade de processamento básico; um módulo de compensação 1302, configurado para obter uma matriz de preditor de cada unidade de dados de tubulação virtual com base nas informações de movimento; um módulo de cálculo 1303, configurado para calcular uma matriz de gradiente de predição horizontal e uma matriz de gradiente de predição vertical de cada unidade de dados de tubulação virtual com base em cada matriz de preditor; e um módulo de distinção 1304, configurado para calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de preditor, na matriz de gradiente de predição horizontal e na matriz de gradiente de predição vertical.
[0531] Em uma implementação viável, o módulo de compensação 1302 é especificamente configurado para: obter uma matriz de predição inicial de cada unidade de dados de tubulação virtual com base nas informações de movimento, onde um tamanho da matriz de predição inicial é igual a um tamanho da unidade de dados de tubulação virtual; e, usar a matriz de predição inicial como a matriz de preditor.
[0532] Em uma implementação viável, o módulo de compensação 1302 é especificamente configurado para: realizar a expansão da amostra em uma extremidade da matriz de predição inicial para obter uma matriz de predição expandida, onde um tamanho da matriz de predição expandida é maior que o tamanho da matriz de predição inicial; e, usar a matriz de predição expandida como a matriz de preditor.
[0533] Em uma implementação viável, o módulo de compensação 1302 é especificamente configurado para: obter um valor de amostra de uma amostra fora da matriz de predição inicial com base em uma interpolação de um valor de amostra de uma amostra na matriz de predição inicial; ou, usar um valor de amostra de uma amostra na extremidade da matriz de predição inicial como um valor de amostra de uma amostra que está fora da matriz de predição inicial e que é vizinha da extremidade.
[0534] Em uma implementação viável, a unidade de dados de tubulação virtual inclui uma pluralidade de unidades de compensação de movimento e o módulo de compensação é especificamente configurado para: obter uma matriz de valor de compensação de cada unidade de compensação de movimento com base nas informações de movimento; e, combinar as matrizes de valor de compensação da pluralidade de unidades de compensação de movimento para obter a matriz de preditor.
[0535] Em uma implementação viável, o módulo de cálculo 1303 é especificamente configurado para realizar, separadamente, o cálculo de gradiente horizontal e o cálculo de gradiente vertical na matriz de preditor para obter a matriz de gradiente de predição horizontal e a matriz de gradiente de predição vertical.
[0536] Em uma implementação viável, o aparelho inclui adicionalmente um módulo de preenchimento 1305, configurado para: realizar a expansão da amostra em uma extremidade da matriz de preditor para obter uma matriz de predição de preenchimento, onde a matriz de predição de preenchimento tem um tamanho pré-ajustado; realizar, separadamente, a expansão de gradiente em uma extremidade da matriz de gradiente de predição horizontal e uma extremidade da matriz de gradiente de predição vertical para obter uma matriz de gradiente horizontal de preenchimento e uma matriz de gradiente vertical de preenchimento, onde a matriz de gradiente horizontal de preenchimento e a matriz de gradiente vertical de preenchimento têm o tamanho pré-ajustado; e, calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico em cada unidade de dados de tubulação virtual com base na matriz de predição de preenchimento, na matriz de gradiente horizontal de preenchimento e na matriz de gradiente vertical de preenchimento.
[0537] Em uma implementação viável, o aparelho inclui adicionalmente um módulo de determinação 1306, configurado para determinar que um tamanho da matriz de preditor é menor que o tamanho pré-ajustado.
[0538] Em uma implementação viável, o módulo de determinação 1306 é configurado adicionalmente para determinar que um tamanho da matriz de gradiente de predição horizontal e/ou um tamanho da matriz de gradiente de predição vertical são/é menor que o tamanho pré-ajustado.
[0539] Em uma implementação viável do sétimo aspecto, o módulo de distinção 1304 é configurado adicionalmente para obter um preditor de cada unidade de processamento básico com base na matriz de preditor da unidade de dados de tubulação virtual e no valor de refinamento de informações de movimento de cada unidade de processamento básico na unidade de dados de tubulação virtual.
[0540] Em uma implementação viável, o aparelho é usado para predição bidirecional; correspondentemente, as informações de movimento incluem as primeiras informações de movimento da lista de quadros de referência e as segundas informações de movimento da lista de quadros de referência; a matriz de preditor inclui uma primeira matriz de preditor e uma segunda matriz de preditor, a primeira matriz de preditor é obtida com base nas primeiras informações de movimento da lista de quadros de referência e a segunda matriz de preditor é obtida com base nas segundas informações de movimento da lista de quadros de referência; a matriz de gradiente de predição horizontal inclui uma primeira matriz de gradiente de predição horizontal e uma segunda matriz de gradiente de predição horizontal, a primeira matriz de gradiente de predição horizontal é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição horizontal é calculada com base na segunda matriz de preditor; a matriz de gradiente de predição vertical inclui uma primeira matriz de gradiente de predição vertical e uma segunda matriz de gradiente de predição vertical, a primeira matriz de gradiente de predição vertical é calculada com base na primeira matriz de preditor e a segunda matriz de gradiente de predição vertical é calculada com base na segunda matriz de preditor; e, o valor de refinamento de informações de movimento inclui um primeiro valor de refinamento de informações de movimento da lista de quadros de referência e um segundo valor de refinamento de informações de movimento da lista de quadros de referência, o primeiro valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na primeira matriz de preditor, na primeira matriz de gradiente de predição horizontal e na primeira matriz de gradiente de predição vertical e, o segundo valor de refinamento de informações de movimento da lista de quadros de referência é calculado com base na primeira matriz de preditor, na segunda matriz de gradiente de predição horizontal e na segunda matriz de gradiente de predição vertical.
[0541] Em uma implementação viável, o módulo de determinação 1306 é configurado adicionalmente para determinar que uma localização de domínio de tempo de um quadro de imagem em que o bloco de imagem a ser processado está localizado, está localizada entre um primeiro quadro de referência indicado pelas primeiras informações de movimento da lista de quadros de referência e um segundo quadro de referência indicado pelas segundas informações de movimento da lista de quadros de referência.
[0542] Em uma implementação viável do sétimo aspecto, o módulo de determinação 1306 é configurado adicionalmente para determinar que uma diferença entre a primeira matriz de preditor e a segunda matriz de preditor é menor que um primeiro limite.
[0543] Em uma implementação viável, o módulo de determinação 1306 é configurado adicionalmente para determinar que uma diferença entre a primeira matriz de preditor básica e a segunda matriz de preditor básica é menor que um segundo limite.
[0544] Em uma implementação viável, um tamanho da unidade de processamento básico é 4x4.
[0545] Em uma implementação viável, uma largura da unidade de dados de tubulação virtual é W, uma altura da unidade de dados de tubulação virtual é H e o tamanho da matriz de predição expandida é (W + n + 2) x (H + n + 2). Correspondentemente, o tamanho da matriz de gradiente de predição horizontal é (W + n) x (H + n) e o tamanho da matriz de gradiente de predição vertical é (W + n)(H + n), onde W e H são números inteiros positivos e n é um número par.
[0546] Em uma implementação viável, n é 0, 2 ou -2.
[0547] Em uma implementação viável, o módulo de determinação 1306 é configurado adicionalmente para determinar que o bloco de imagem a ser processado inclui a pluralidade de unidades de dados de tubulação virtual.
[0548] A FIG. 19 é um fluxograma esquemático de um método, de acordo com uma modalidade deste pedido. Como mostrado na figura, um aparelho de predição inter 1400 é fornecido e inclui: um módulo de determinação 1401, configurado para determinar uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; um módulo de predição 1402, configurado para realizar separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e um módulo de combinação 1403, configurado para obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem.
[0549] Em uma implementação viável, o módulo de determinação 1401 é configurado para: comparar a largura de divisão de imagem pré-ajustada com a largura do bloco de imagem a ser processado para determinar larguras dos primeiros blocos de imagem; comparar a altura de divisão de imagem pré-ajustada com a altura do bloco de imagem a ser processado para determinar alturas do primeiro bloco de imagem; e determinar a pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base nas larguras e nas alturas do primeiro bloco de imagem.
[0550] Em uma implementação viável, a largura do primeiro bloco de imagem é um valor menor na largura de divisão de imagem pré-ajustada e na largura do bloco de imagem a ser processado e, a altura do primeiro bloco de imagem é um valor menor na altura de divisão de imagem pré-ajustada e na altura do bloco de imagem a ser processado.
[0551] Em uma implementação viável, o módulo de predição 1402 é configurado para: obter um primeiro bloco de predição do primeiro bloco de imagem com base nas informações de movimento do bloco de imagem a ser processado; realizar uma operação de gradiente no primeiro bloco de predição para obter uma primeira matriz de gradiente do primeiro bloco de imagem; calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente; e obter o preditor do primeiro bloco de imagem com base no valor de refinamento de informações de movimento de cada unidade de processamento básico.
[0552] Em uma implementação viável, o aparelho 1400 inclui adicionalmente um primeiro módulo de expansão 1404.
[0553] O primeiro módulo de expansão é configurado para: realizar a primeira expansão em uma largura e uma altura do primeiro bloco de predição com base em um valor de amostra de uma localização de extremidade de bloco do primeiro bloco de predição, de modo que uma largura e uma altura de um primeiro bloco de predição obtido depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e/ou realizar a primeira expansão em uma largura e uma altura da primeira matriz de gradiente com base em um gradiente de uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam, respectivamente, duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e
[0554] Correspondentemente, o módulo de predição 1402 é configurado para calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição obtido depois da primeira expansão e/ou na primeira matriz de gradiente obtida depois da primeira expansão.
[0555] Em uma implementação viável, o aparelho inclui adicionalmente um segundo módulo de expansão 1405.
[0556] O segundo módulo de expansão é configurado para: realizar a filtragem de interpolação em valores de amostra de uma região de extremidade de bloco do primeiro bloco de predição ou replicar o valor de amostra da localização de extremidade de bloco do primeiro bloco de predição, para realizar a segunda expansão na largura e na altura do primeiro bloco de predição.
[0557] Correspondentemente, o módulo de predição 1402 é configurado para realizar uma operação de gradiente em um primeiro bloco de predição obtido depois da segunda expansão.
[0558] Em uma implementação viável, o primeiro bloco de predição inclui um bloco de predição forward e um bloco de predição backward e, a primeira matriz de gradiente compreende uma matriz de gradiente horizontal posterior, uma matriz de gradiente vertical posterior, uma matriz de gradiente horizontal anterior e uma matriz de gradiente vertical anterior.
[0559] Em uma implementação viável, a largura de divisão de imagem pré-ajustada é 64, 32 ou 16, e a altura de divisão de imagem pré- ajustada é 64, 32 ou 16.
[0560] Em uma implementação viável, a unidade de processamento básico é uma matriz de amostra 4x4.
[0561] Nesta modalidade deste pedido, o módulo de determinação determina a pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base na largura de divisão de imagem pré-ajustada, na altura de divisão de imagem pré-ajustada e na largura e na altura do bloco de imagem a ser processado. Portanto, um tamanho do primeiro bloco de imagem é restringido pela largura de divisão de imagem pré-ajustada e pela altura de divisão de imagem pré-ajustada e uma área de cada primeiro bloco de imagem determinado não é tão grande, de modo que menos recursos de hardware, tais como os recursos de memória podem ser consumidos, a complexidade de implementação de predição inter pode ser reduzida e a eficácia do processamento pode ser melhorada.
[0562] Um técnico no assunto pode entender que as funções descritas com referência aos vários blocos lógicos, módulos e etapas de algoritmo ilustrativos revelados e descritos neste relatório descritivo podem ser implementadas por hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas por software, as funções descritas com referência aos blocos lógicos, módulos e etapas ilustrativos podem ser armazenadas ou transmitidas através de uma mídia legível por computador como uma ou mais instruções ou códigos e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir uma mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como uma mídia de armazenamento de dados ou pode incluir qualquer mídia de comunicações que facilite a transmissão de um programa de computador a partir de um lugar para outro (por exemplo, de acordo com um protocolo de comunicações). Portanto, a mídia legível por computador pode geralmente corresponder a (1) uma mídia de armazenamento legível por computador tangível não transitória ou (2) uma mídia de comunicações, tal como um sinal ou uma portadora. A mídia de armazenamento de dados pode ser qualquer mídia utilizável que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementar as tecnologias descritas neste pedido. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0563] A título de exemplo, em vez de limitação, tal mídia de armazenamento legível por computador pode incluir uma RAM, uma ROM, uma EEPROM, um CD-ROM ou outro aparelho de disco de armazenamento compacto, um aparelho de armazenamento de disco magnético ou outro aparelho de armazenamento magnético, uma memória flash ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado em uma forma de uma instrução ou uma estrutura de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente referida como uma mídia legível por computador. Por exemplo, se uma instrução for transmitida a partir de um website, um servidor ou outra fonte remota através de um cabo coaxial, uma fibra óptica, um par trançado, uma linha de assinante digital (DSL) ou uma tecnologia sem fio, tal como infravermelho, rádio ou micro-ondas, o cabo coaxial, a fibra óptica, o par trançado, a DSL ou a tecnologia sem fio, tal como infravermelho, rádio ou micro- ondas é incluída em uma definição da mídia. Entretanto, deve ser entendido que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem nenhuma conexão, portadora, sinal ou qualquer outra mídia transitória, mas são realmente direcionadas para uma mídia de armazenamento tangível não transitória. Um disquete e um disco usados neste relatório descritivo incluem um disco compacto (CD), um disco a laser, um disco óptico, um disco versátil digital (DVD) e um disco Blu-ray. O disquete usualmente reproduz os dados magneticamente e o disco reproduz os dados opticamente por meio do uso de um laser. As combinações dos itens anteriores também estão no escopo da mídia legível por computador.
[0564] A instrução pode ser executada por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSP), microprocessadores de uso geral, circuitos integrados específicos da aplicação
(ASIC), arranjos programáveis em campo (FPGA) ou outros circuitos lógicos equivalentes integrados ou discretos. Portanto, o termo “processador” usado neste relatório descritivo pode ser qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para implementar as tecnologias descritas neste relatório descritivo. Além disso, em alguns aspectos, as funções descritas com referência aos blocos, módulos e etapas ilustrativos descritos neste relatório descritivo podem ser fornecidas dentro de módulos de hardware e/ou software dedicados configurados para a codificação e decodificação ou podem ser incorporados em um codec combinada. Além disso, as tecnologias podem ser todas implementadas em um ou mais circuitos ou elementos lógicos.
[0565] As tecnologias neste pedido podem ser implementadas em vários aparelhos ou dispositivos que incluem um monofone sem fio, um circuito integrado (IC), ou um conjunto IC (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos neste pedido para enfatizar os aspectos funcionais dos aparelhos configurados para implementar as tecnologias reveladas, que não são necessariamente implementadas por diferentes unidades de hardware. Na verdade, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec em combinação com software e/ou firmware apropriado ou podem ser fornecidas pelas unidades de hardware interoperáveis (incluindo um ou mais processadores descritos acima).
[0566] Nas modalidades anteriores, as descrições em cada modalidade têm os respectivos focos. Para uma parte que não é descrita em detalhes em uma modalidade, consultar as descrições relacionadas em outras modalidades.
[0567] As descrições anteriores são meramente exemplos de implementações específicas deste pedido, que não são destinadas a limitar o escopo de proteção deste pedido. Qualquer variação ou substituição prontamente percebida por um técnico no assunto no escopo técnico revelado neste pedido deve estar no escopo de proteção deste pedido.
Portanto, o escopo de proteção deste pedido deve estar sujeito ao escopo de proteção das reivindicações.

Claims (22)

REIVINDICAÇÕES
1. Método de predição inter, CARACTERIZADO pelo fato de que compreende: determinar (202) uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; realizar separadamente (208) predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e obter (209) um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade dos primeiros blocos de imagem.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a determinação de uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado compreende: comparar a largura de divisão de imagem pré-ajustada com a largura do bloco de imagem a ser processado para determinar larguras dos primeiros blocos de imagem; comparar a altura de divisão de imagem pré-ajustada com a altura do bloco de imagem a ser processado para determinar alturas dos primeiros blocos de imagem; e determinar a pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base nas larguras e nas alturas dos primeiros blocos de imagem.
3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que a largura do primeiro bloco de imagem é um valor menor na largura de divisão de imagem pré-ajustada e na largura do bloco de imagem a ser processado e a altura do primeiro bloco de imagem é um valor menor na altura de divisão de imagem pré-ajustada e na altura do bloco de imagem a ser processado.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que a realização, separadamente, de predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem compreende: obter um primeiro bloco de predição do primeiro bloco de imagem com base em informações de movimento do bloco de imagem a ser processado; realizar uma operação de gradiente no primeiro bloco de predição para obter uma primeira matriz de gradiente do primeiro bloco de imagem; calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente; e obter o preditor do primeiro bloco de imagem com base no valor de refinamento de informações de movimento de cada unidade de processamento básico.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que antes do cálculo de um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente, o método compreende adicionalmente: realizar primeira expansão em uma largura e uma altura do primeiro bloco de predição com base em um valor de amostra de uma localização de extremidade de bloco do primeiro bloco de predição, de modo que uma largura e uma altura de um primeiro bloco de predição obtido depois da primeira expansão sejam respectivamente duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e/ou realizar primeira expansão em uma largura e uma altura da primeira matriz de gradiente com base em um gradiente de uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam respectivamente duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e correspondentemente, o cálculo de um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente compreende: calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição obtido depois da primeira expansão e/ou na primeira matriz de gradiente obtida depois da primeira expansão.
6. Método, de acordo com a reivindicação 4 ou 5, CARACTERIZADO pelo fato de que antes da realização de uma operação de gradiente no primeiro bloco de predição, o método compreende adicionalmente: realizar filtragem de interpolação em valores de amostra de uma região de extremidade de bloco do primeiro bloco de predição, ou replicar o valor de amostra da localização de extremidade de bloco do primeiro bloco de predição, para realizar segunda expansão na largura e na altura do primeiro bloco de predição; e correspondentemente, a realização de uma operação de gradiente no primeiro bloco de predição compreende: realizar uma operação de gradiente em um primeiro bloco de predição obtido depois da segunda expansão.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6,
CARACTERIZADO pelo fato de que o primeiro bloco de predição compreende um bloco de predição forward e um bloco de predição backward, e a primeira matriz de gradiente compreende uma matriz de gradiente horizontal posterior, uma matriz de gradiente vertical posterior, uma matriz de gradiente horizontal anterior, e uma matriz de gradiente vertical anterior.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, CARACTERIZADO pelo fato de que a largura de divisão de imagem pré- ajustada é 64, 32, ou 16, e a altura de divisão de imagem pré-ajustada é 64, 32, ou 16.
9. Método, de acordo com qualquer uma das reivindicações 1 a 8, CARACTERIZADO pelo fato de que a unidade de processamento básico é uma matriz de amostra 4x4.
10. Aparelho de predição inter, CARACTERIZADO pelo fato de que compreende: um módulo de determinação, configurado para determinar uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; um módulo de predição, configurado para realizar separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e um módulo de combinação, configurado para obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem.
11. Aparelho, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o módulo de determinação é configurado para: comparar a largura de divisão de imagem pré-ajustada com a largura do bloco de imagem a ser processado para determinar larguras dos primeiros blocos de imagem; comparar a altura de divisão de imagem pré-ajustada com a altura do bloco de imagem a ser processado para determinar alturas dos primeiros blocos de imagem; e determinar a pluralidade de primeiros blocos de imagem no bloco de imagem a ser processado com base nas larguras e nas alturas dos primeiros blocos de imagem.
12. Aparelho, de acordo com a reivindicação 10 ou 11, CARACTERIZADO pelo fato de que a largura do primeiro bloco de imagem é um valor menor na largura de divisão de imagem pré-ajustada e na largura do bloco de imagem a ser processado e a altura do primeiro bloco de imagem é um valor menor na altura de divisão de imagem pré-ajustada e na altura do bloco de imagem a ser processado.
13. Aparelho, de acordo com qualquer uma das reivindicações 10 a 12, CARACTERIZADO pelo fato de que o módulo de predição é configurado para: obter um primeiro bloco de predição do primeiro bloco de imagem com base em informações de movimento do bloco de imagem a ser processado; realizar uma operação de gradiente no primeiro bloco de predição para obter uma primeira matriz de gradiente do primeiro bloco de imagem; calcular um valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição e na primeira matriz de gradiente; e obter o preditor do primeiro bloco de imagem com base no valor de refinamento de informações de movimento de cada unidade de processamento básico.
14. Aparelho, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o aparelho compreende adicionalmente um primeiro módulo de expansão, em que o primeiro módulo de expansão é configurado para: realizar primeira expansão em uma largura e uma altura do primeiro bloco de predição com base em um valor de amostra de uma localização de extremidade de bloco do primeiro bloco de predição, de modo que uma largura e uma altura de um primeiro bloco de predição obtido depois da primeira expansão sejam respectivamente duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e/ou realizar primeira expansão em uma largura e uma altura da primeira matriz de gradiente com base em um gradiente de uma localização de extremidade de matriz da primeira matriz de gradiente, de modo que uma largura e uma altura de uma primeira matriz de gradiente obtida depois da primeira expansão sejam respectivamente duas amostras maiores que a largura e a altura do primeiro bloco de imagem; e correspondentemente, o módulo de predição é configurado para calcular o valor de refinamento de informações de movimento de cada unidade de processamento básico no primeiro bloco de imagem com base no primeiro bloco de predição obtido depois da primeira expansão e/ou na primeira matriz de gradiente obtida depois da primeira expansão.
15. Aparelho, de acordo com a reivindicação 13 ou 14, CARACTERIZADO pelo fato de que o aparelho compreende adicionalmente um segundo módulo de expansão, em que o segundo módulo de expansão é configurado para: realizar filtragem de interpolação em valores de amostra de uma região de extremidade de bloco do primeiro bloco de predição, ou replicar o valor de amostra da localização de extremidade de bloco do primeiro bloco de predição, para realizar segunda expansão na largura e na altura do primeiro bloco de predição; e correspondentemente, o módulo de predição é configurado para realizar uma operação de gradiente em um primeiro bloco de predição obtido depois da segunda expansão.
16. Aparelho, de acordo com qualquer uma das reivindicações 10 a 15, CARACTERIZADO pelo fato de que o primeiro bloco de predição compreende um bloco de predição forward e um bloco de predição backward, e a primeira matriz de gradiente compreende uma matriz de gradiente horizontal posterior, uma matriz de gradiente vertical posterior, uma matriz de gradiente horizontal anterior, e uma matriz de gradiente vertical anterior.
17. Aparelho, de acordo com qualquer uma das reivindicações 10 a 16, CARACTERIZADO pelo fato de que a largura de divisão de imagem pré- ajustada é 64, 32, ou 16, e a altura de divisão de imagem pré-ajustada é 64, 32, ou 16.
18. Aparelho, de acordo com qualquer uma das reivindicações 10 a 17, CARACTERIZADO pelo fato de que a unidade de processamento básico é uma matriz de amostra 4x4.
19. Dispositivo de predição inter, CARACTERIZADO pelo fato de que compreende uma memória não volátil e um processador que são acoplados um ao outro, em que o processador invoca código de programa armazenado na memória, para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
20. Mídia de armazenamento não transitória compreendendo um fluxo de bits que é codificado por meio do uso de um método de predição inter, CARACTERIZADA pelo fato de que o método de predição compreende: determinar uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; realizar separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem.
21. Fluxo de bits de um vídeo, CARACTERIZADO pelo fato de que compreende: uma sequência codificada de quadros de um vídeo, em que a sequência de quadros é codificada no fluxo de bits com base em uma pluralidade de processos compreendendo: determinar uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; realizar separadamente predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e obter um preditor do bloco de imagem a ser processado com uma combinação dos preditores da pluralidade de primeiros blocos de imagem.
22. Método de predição inter, CARACTERIZADO pelo fato de que compreende: determinar (202) uma pluralidade de primeiros blocos de imagem em um bloco de imagem a ser processado com base em uma largura de divisão de imagem pré-ajustada, em uma altura de divisão de imagem pré-ajustada, e em uma largura e uma altura do bloco de imagem a ser processado; realizar separadamente (208) predição de fluxo óptico bidirecional na pluralidade de primeiros blocos de imagem para obter um preditor de cada primeiro bloco de imagem; e emitir uma combinação dos preditores da pluralidade de primeiros blocos de imagem, em que a combinação dos preditores da pluralidade de primeiros blocos de imagem forma um preditor do bloco de imagem a ser processado.
BR112021011307-0A 2018-12-13 2019-12-03 Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória BR112021011307A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811530481 2018-12-13
CN201811530481.1 2018-12-13
CN201910325612.0 2019-04-22
CN201910325612.0A CN111327907B (zh) 2018-12-13 2019-04-22 一种帧间预测的方法、装置、设备及存储介质
PCT/CN2019/122735 WO2020119525A1 (zh) 2018-12-13 2019-12-03 一种帧间预测的方法及装置

Publications (1)

Publication Number Publication Date
BR112021011307A2 true BR112021011307A2 (pt) 2021-08-31

Family

ID=71170893

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021011307-0A BR112021011307A2 (pt) 2018-12-13 2019-12-03 Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória

Country Status (10)

Country Link
US (1) US20210306644A1 (pt)
EP (1) EP3890325A4 (pt)
JP (2) JP7384908B2 (pt)
KR (1) KR20210096282A (pt)
CN (4) CN111327907B (pt)
AU (2) AU2019397944B2 (pt)
BR (1) BR112021011307A2 (pt)
CA (1) CA3122618A1 (pt)
MX (1) MX2021006787A (pt)
SG (1) SG11202105848YA (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113228681A (zh) * 2018-12-21 2021-08-06 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
CN112004091B (zh) * 2020-07-31 2021-08-03 浙江大华技术股份有限公司 帧间预测方法及其相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8767823B2 (en) * 2011-03-30 2014-07-01 Industrial Technology Research Institute Method and apparatus for frame memory compression
MX2021012481A (es) * 2016-03-16 2022-05-30 Hfi Innovation Inc Metodo y aparato de procesamiento de datos de video con tama?o restringido de bloque en codificacion de video.
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
CN116866585A (zh) * 2017-05-17 2023-10-10 株式会社Kt 对图像解码和编码的方法以及存储压缩视频数据的装置

Also Published As

Publication number Publication date
SG11202105848YA (en) 2021-07-29
JP2024014927A (ja) 2024-02-01
JP2022513814A (ja) 2022-02-09
CN111327907A (zh) 2020-06-23
US20210306644A1 (en) 2021-09-30
EP3890325A4 (en) 2022-04-20
AU2019397944A1 (en) 2021-06-24
CA3122618A1 (en) 2020-06-18
AU2019397944B2 (en) 2023-11-23
EP3890325A1 (en) 2021-10-06
JP7384908B2 (ja) 2023-11-21
MX2021006787A (es) 2021-07-15
KR20210096282A (ko) 2021-08-04
CN112088534B (zh) 2022-02-15
CN112088534A (zh) 2020-12-15
CN111327907B (zh) 2022-11-22
CN115834903A (zh) 2023-03-21
CN115834904A (zh) 2023-03-21
AU2024200854A1 (en) 2024-02-29

Similar Documents

Publication Publication Date Title
US11765343B2 (en) Inter prediction method and apparatus
CN115243039A (zh) 一种视频图像预测方法及装置
CN111698515B (zh) 帧间预测的方法及相关装置
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
US11516464B2 (en) Method for obtaining candidate motion vector list, apparatus, encoder, and decoder
US20210360275A1 (en) Inter prediction method and apparatus
WO2020232845A1 (zh) 一种帧间预测的方法和装置
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
AU2020261145B2 (en) Picture prediction method and apparatus, and computer-readable storage medium
JP2024014927A (ja) インター予測方法および装置
CN111416977A (zh) 视频编码器、视频解码器及相应方法
CN111432219B (zh) 一种帧间预测方法及装置
EP3910955A1 (en) Inter-frame prediction method and device
RU2787885C2 (ru) Способ и оборудование взаимного прогнозирования, поток битов и энергонезависимый носитель хранения
WO2020119525A1 (zh) 一种帧间预测的方法及装置
WO2020114291A1 (en) Video encoder, video decoder, and corresponding method
CN111726630A (zh) 基于三角预测单元模式的处理方法及装置
CN118075484A (zh) 基于三角预测单元模式的处理方法及装置
CN118118688A (zh) 基于三角预测单元模式的处理方法及装置