BR112021001563A2 - método e aparelho de predição inter - Google Patents

método e aparelho de predição inter Download PDF

Info

Publication number
BR112021001563A2
BR112021001563A2 BR112021001563-9A BR112021001563A BR112021001563A2 BR 112021001563 A2 BR112021001563 A2 BR 112021001563A2 BR 112021001563 A BR112021001563 A BR 112021001563A BR 112021001563 A2 BR112021001563 A2 BR 112021001563A2
Authority
BR
Brazil
Prior art keywords
sample
target sample
prediction value
recon
prediction
Prior art date
Application number
BR112021001563-9A
Other languages
English (en)
Inventor
Weiwei Xu
Haitao Yang
Yin Zhao
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Priority claimed from PCT/CN2019/107060 external-priority patent/WO2020057648A1/zh
Publication of BR112021001563A2 publication Critical patent/BR112021001563A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of 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/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/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

MÉTODO E APARELHO DE PREDIÇÃO INTER. Modalidades deste pedido referem-se ao campo de tecnologias de codificação de vídeo, e revelam um método e aparelho de predição inter, para resolver problemas na tecnologia convencional de que amostras de predição obtidas em um modo de predição inter são espacialmente descontínuas, eficiência de predição é afetada, e energia residual de predição é relativamente alta. Uma solução específica é: analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; realizar compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, em que o bloco de predição do bloco de imagem a ser processado inclui um valor de predição de uma amostra alvo; e realizar cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, em que a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.

Description

“MÉTODO E APARELHO DE PREDIÇÃO INTER” CAMPO TÉCNICO
[0001] As modalidades deste pedido referem-se ao campo de tecnologias de codificação de vídeo e, em particular, a um método e aparelho de predição inter.
FUNDAMENTOS
[0002] As tecnologias de vídeo digital podem ser amplamente usadas em vários aparelhos de vídeo digital. Um aparelho de vídeo digital pode implementar tecnologias de codificação de vídeo, por exemplo, padrões definidos em MPEG-2, MPEG-4, ITU-T H.263, codificação de vídeo avançada (AVC) ITU-T H.264/MPEG-4 Parte 10, ITU-T H.265 (também referido como codificação de vídeo de alta eficácia HEVC), e tecnologias de codificação de vídeo descritas em extensões desses padrões. O aparelho de vídeo digital envia, recebe, codifica, decodifica, e/ou armazena informações de vídeo digital de forma mais eficaz, implementando essas tecnologias de codificação de vídeo.
[0003] Atualmente, as tecnologias de predição inter e predição intra são principalmente usadas em codificação de vídeo para eliminar redundância temporal e redundância espacial em um vídeo. Na tecnologia de predição inter, apenas uma correlação temporal entre mesmos objetos em quadros adjacentes de imagens é considerada, mas uma correlação espacial não é considerada. Consequentemente, amostras de predição obtidas em um modo de predição inter existente são espacialmente descontínuas. Além disso, a eficácia de predição é afetada e a energia residual de predição é relativamente alta.
SUMÁRIO
[0004] As modalidades deste pedido fornecem um método e aparelho de predição inter, para realizar filtragem espacial em um bloco de predição codificado inter e melhorar a eficácia de codificação.
[0005] Para obter os objetivos, as seguintes soluções técnicas são usadas nas modalidades deste pedido.
[0006] De acordo com um primeiro aspecto das modalidades deste pedido, um método de predição inter é fornecido. O método inclui: analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; realizar compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, onde o bloco de predição do bloco de imagem a ser processado inclui um valor de predição de uma amostra alvo; e realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, onde a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
[0007] Com base nesta solução, o processamento de filtragem espacial é realizado no valor de predição da amostra alvo por meio do uso de uma amostra reconstruída vizinha, para melhorar a eficácia de codificação de compressão.
[0008] Com referência ao primeiro aspecto, em uma implementação possível, uma ou mais amostras de referência incluem uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
[0009] Com base nesta solução, o processamento de filtragem é realizado na amostra alvo por meio do uso da amostra de referência que tem a relação de posição espacial predefinida com a amostra alvo. Em comparação à tecnologia convencional, a eficácia de codificação é melhorada.
[0010] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula:
predQ( xP, yP )   w1* predP ( xP, yP ) + w2* recon( xN − M 1, yP ) + (( w1 + w2) / 2)  , xN > 0, and e yN = 0  w1 + w2  w3* predP( xP, yP ) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, ande yN > 0  w3 + w4  w5* predP( xP, yP) + w6 * recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, aend yN > 0 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos de amostras de referência em posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5 e w6 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
[0011] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0012] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 = R1, w3 + w4 = R2 ou w5 + w6 + w7 = R3, onde R1, R2 e R3 são, cada um, 2 elevado à potência de n, e n é um número inteiro não negativo.
[0013] Com base nesta solução, a eficácia de codificação pode ser adicionalmente melhorada.
[0014] Deve ser entendido que R1, R2 e R3 são, cada um, 2 elevado à potência de n. R1, R2 e R3 são iguais ou diferentes e isto não é limitado. Por exemplo, R1, R2 e R3 podem ser todos 8, ou R1, R2 e R3 podem ser 2, 4 e 16, respectivamente.
[0015] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and yN =0 e w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, and yN > 0 e  w4 + w5 + w6  w7 * predP( xP, yP) + w8* recon( xN − M 1, yP) + w9* recon( xN − M 2, yP) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w8 + w9 + w10 + w11  xN > 0, and yN > 0 e onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 e w11 são constantes predefinidas, e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0016] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0017] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 = S1, w4 + w5 + w6 = S2 ou w7 + w8 + w9 + w10 + w11 = S3, onde S1, S2 e S3 são, cada um, 2 elevado à potência de n e n é um número inteiro não negativo.
[0018] Com base nesta solução, a eficácia de codificação pode ser adicionalmente melhorada.
[0019] Deve ser entendido que S1, S2 e S3 são, cada um, 2 elevado à potência de n. S1, S2 e S3 são iguais ou diferentes e isto não é limitado. Por exemplo, S1, S2 e S3 podem ser todos 8, ou S1, S2 e S3 podem ser 2, 4 e 16, respectivamente.
[0020] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2 e w3 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
[0021] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0022] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 = R, onde R é 2 elevado à potência de n, e n é um número inteiro não negativo.
[0023] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4 e w5 são constantes predefinidas, e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0024] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0025] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 + w4 + w5 = S, onde S é 2 elevado à potência de n, e n é um número inteiro não negativo.
[0026] Com base nesta solução, a eficácia de codificação pode ser adicionalmente melhorada.
[0027] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, uma ou mais amostras de referência incluem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado, uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
[0028] Com base nesta solução, o processamento de filtragem é realizado na amostra alvo por meio do uso da amostra de referência que tem a relação de posição espacial predefinida com a amostra alvo. Em comparação à tecnologia convencional, a eficácia de codificação é melhorada.
[0029] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0030] Em uma implementação viável do primeiro aspecto, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p (-1, yP)
+ (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1, w2 e w3 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0031] Em uma implementação viável do primeiro aspecto, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) +w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1))) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representa valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0032] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0033] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 , ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) *recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , predH ( xP, yP ) = ( ( nTbW − 1 − ( xP − xN ) ) *recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) ) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) amostra alvo, , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos das amostras de referência em posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0034] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0035] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, uma soma de w1 e w2 é 2 elevado à potência de n, e n é um número inteiro não negativo.
[0036] Com base nesta solução, a eficácia de codificação pode ser adicionalmente melhorada.
[0037] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      onde refL ( xP, yP=) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , ) 32 >> ( ( xP << 1) >> nScale ) wL ( xP= , ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição predQ ( xP, yP ) da amostra alvo antes da atualização, representa o valor de recon ( xP, yN − 1) recon ( xN − 1, yP ) predição atualizado da amostra alvo, , e recon ( xN − 1, yN − 1) representam valores reconstruídos de amostras de referência em posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
[0038] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0039] Com referência ao primeiro aspecto e à implementação possível anterior, em outra implementação possível, a atualização do valor de predição da amostra alvo inclui: realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      onde ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) , nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xN − 1, yP ) recon ( xP, yN − 1) amostra alvo, e representam valores reconstruídos de amostras de referência em posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
[0040] Com base nesta solução, o valor de predição atualizado da amostra alvo pode ser obtido através do processamento de filtragem.
[0041] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo inclui: quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, a disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida; e realizar o cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo.
[0042] Com base nesta solução, quando o valor reconstruído da amostra de referência estiver indisponível, as amostras de referência que estão localizadas na esquerda do bloco de imagem a ser processado acima e cujos valores reconstruídos estão disponíveis podem ser pesquisados na ordem predefinida. Desta maneira, o valor de predição da amostra alvo pode ser atualizado por meio do uso dos valores reconstruídos das amostras de referência disponíveis.
[0043] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, a determinação, em uma ordem predefinida, da disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida inclui: obter as amostras de referência disponíveis em uma ordem de coordenadas (xN - 1, yN + nTbH - 1) para coordenadas (xN - 1, yN - 1) e, em seguida, de coordenadas (xN, yN - 1) para coordenadas (xN + nTbW - 1, yN - 1).
[0044] Com base nesta solução, os valores reconstruídos das amostras de referência disponíveis podem ser obtidos.
[0045] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, quando há pelo menos uma amostra de referência disponível em todas as amostras de referência, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida de coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, de coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN - 1, yN + nTbH - M), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra (x, y + 1), onde M é maior do que ou igual a 2 e menor do que ou igual a nTbH + 1. Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN + N, yN - 1), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra de referência (x - 1, y), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1.
[0046] Com base nesta solução, os valores reconstruídos das amostras de referência disponíveis podem ser obtidos.
[0047] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, uma amostra de referência disponível pode ser pesquisada na ordem predefinida partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que ou igual a 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for B, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência B. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1) estiver indisponível, uma amostra de referência disponível pode ser pesquisada na ordem predefinida partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência (xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência C.
[0048] Com base nesta solução, os valores reconstruídos das amostras de referência disponíveis podem ser obtidos.
[0049] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, uma amostra de referência disponível pode ser pesquisada para, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência C. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1)
estiver indisponível, uma amostra de referência disponível pode ser pesquisada para, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for D, o valor reconstruído da amostra de referência (xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência D.
[0050] Com base nesta solução, os valores reconstruídos das amostras de referência disponíveis podem ser obtidos.
[0051] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, se for determinado que todas as amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado estão indisponíveis, o valor reconstruído da amostra de referência é definido como 1 << (bitDepth - 1), onde bitDepth representa uma profundidade de bits de um valor de amostra da amostra de referência.
[0052] Com base nesta solução, o valor reconstruído da amostra de referência pode ser definido com base na profundidade de bits quando tanto o valor reconstruído da amostra de referência quanto um valor reconstruído de uma nova amostra de referência estão indisponíveis.
[0053] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, antes de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, o método inclui: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada no lado esquerdo do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
[0054] Com base nesta solução, antes do processamento de filtragem ser realizado na amostra alvo, o processamento de filtragem é realizado no valor reconstruído da amostra de referência. Desta maneira, a eficácia de codificação pode ser adicionalmente melhorada e uma predição residual pode ser reduzida.
[0055] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, antes de realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, o método inclui adicionalmente: atualizar inicialmente as informações de movimento por meio do uso de um primeiro algoritmo predefinido; e, correspondentemente, realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento inclui: realizar a compensação de movimento no bloco de imagem a ser processado com base em informações de movimento inicialmente atualizadas.
[0056] Com base nesta solução, as informações de movimento são atualizadas antes da compensação de movimento ser realizada no bloco atual, e a compensação de movimento é realizada com base nas informações de movimento atualizadas. Desta maneira, uma predição residual pode ser reduzida.
[0057] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, depois que o bloco de predição do bloco de imagem a ser processado é obtido, o método inclui adicionalmente: pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido; e, correspondentemente, realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo inclui: realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e em um valor de predição pré-atualizado da amostra alvo.
[0058] Com base nesta solução, o bloco de predição do bloco atual é pré-atualizado, e o cálculo de ponderação é realizado com base no valor de predição pré-atualizado e no valor reconstruído da amostra de referência. Desta maneira, uma predição residual pode ser reduzida.
[0059] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, depois de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, o método inclui adicionalmente: atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
[0060] Com base nesta solução, o valor de predição que é da amostra alvo e que passou por processamento de filtragem espacial pode ser atualizado por meio do uso de um algoritmo predefinido. Desta maneira, uma predição residual pode ser reduzida.
[0061] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, antes de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, o método inclui adicionalmente: analisar o fluxo de bits para obter um modo de predição correspondente ao bloco de imagem a ser processado; e determinar que o modo de predição é um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP). Pode ser entendido que o modo de predição de vetor de movimento avançado inter (inter AMVP) também pode ser referido como um modo de predição de movimento inter (inter MVP).
[0062] Com base nesta solução, o modo de predição correspondente ao bloco de imagem a ser processado pode ser determinado antes do processamento de filtragem.
[0063] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, antes de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, o método inclui adicionalmente: analisar o fluxo de bits para obter informações de indicação de determinação de atualização do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
[0064] Com base nesta solução, as informações de indicação de determinação de atualização do bloco de imagem a ser processado podem ser obtidas pela análise do fluxo de bits, e é determinado que o bloco de predição do bloco de imagem a ser processado deve ser atualizado.
[0065] Com referência ao primeiro aspecto e às implementações possíveis anteriores, em outra implementação possível, antes de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, o método inclui adicionalmente: obter informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
[0066] Com base nesta solução, as informações de indicação de determinação de atualização do bloco de imagem a ser processado podem ser obtidas, e é determinado, com base nas informações de indicação de determinação de atualização, que o bloco de predição do bloco de imagem a ser processado deve ser atualizado.
[0067] De acordo com um segundo aspecto das modalidades deste pedido, um aparelho de predição inter é fornecido, incluindo: um módulo de análise, configurado para analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; um módulo de compensação, configurado para realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, onde o bloco de predição do bloco de imagem a ser processado inclui um valor de predição de uma amostra alvo; e um módulo de cálculo, configurado para realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, onde a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
[0068] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, uma ou mais amostras de referência incluem uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
[0069] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ( xP, yP )   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) + (( w1 + w2) / 2)  , xN > 0, and e yN = 0  w1 + w2  w3* predP( xP, yP) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, aend yN > 0  w3 + w4  w5* predP( xP, yP) + w6* recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, and e yN > 0 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5 e w6 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0070] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 = R1, w3 + w4 = R2 ou w5 + w6 + w7 = R3, onde R1, R2 e R3 são, cada um, 2 elevado à potência de n e n é um número inteiro não negativo.
[0071] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and e yN =0 w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, and e yN > 0  w4 + w5 + w6  w7 * predP( xP, yP) + w8* recon( xN − M 1, yP) + w9* recon( xN − M 2, yP) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w8 + w9 + w10 + w11  xN > 0, and e yN > 0 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 e w11 são constantes predefinidas, e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0072] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 = S1, w4 + w5 + w6 = S2 ou w7 + w8 + w9 + w10 + w11 = S3, onde S1, S2 e S3 são, cada um, 2 elevado à potência de n e n é um número inteiro não negativo.
[0073] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2 e w3 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0074] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 = R, onde R é 2 elevado à potência de n, e n é um número inteiro não negativo.
[0075] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4 e w5 são constantes predefinidas, e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0076] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, w1 + w2 + w3 + w4 + w5 = S, onde S é 2 elevado à potência de n e n é um número inteiro não negativo.
[0077] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, uma ou mais amostras de referência incluem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado, uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado, ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
[0078] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) *
p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0079] Em uma implementação viável do segundo aspecto, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p (-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1, w2 e w3 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0080] Em uma implementação viável do segundo aspecto, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) +w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1))) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP),
coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência em posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0081] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 , ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) *recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) *recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) amostra alvo, , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos das amostras de referência em posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0082] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, uma soma de w1 e w2 é 2 elevado à potência de n e n é um número inteiro não negativo.
[0083] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula: predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      onde refL ( xP, yP=) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , ) 32 >> ( ( xP << 1) >> nScale ) , wL ( xP= ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xP, yN − 1) , recon ( xN − 1, yP ) e recon ( xN − 1, yN − 1) representam valores reconstruídos das amostras de referência em posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
[0084] Com referência ao segundo aspecto e à implementação possível anterior, em outra implementação possível, o módulo de cálculo é especificamente configurado adicionalmente para realizar o cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, onde o valor de predição atualizado da amostra alvo é obtido, de acordo com a seguinte fórmula:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      onde refL ( xP, yP=) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) , nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xN − 1, yP ) recon ( xP, yN − 1) amostra alvo, e representam valores reconstruídos das amostras de referência em posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
[0085] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para: quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, a disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida; e realizar o cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo.
[0086] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é especificamente configurado para obter o valor reconstruído da amostra de referência disponível em uma ordem de coordenadas (xN - 1, yN + nTbH - 1) para coordenadas (xN - 1, yN - 1) e, em seguida, de coordenadas (xN, yN - 1) para coordenadas (xN + nTbW - 1, yN - 1).
[0087] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, quando há pelo menos uma amostra de referência disponível em todas as amostras de referência, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN - 1, yN + nTbH - M), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra (x, y + 1), onde M é maior do que ou igual a 2 e menor do que ou igual a nTbH + 1. Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN + N, yN - 1), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra de referência (x - 1, y), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1.
[0088] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é especificamente configurado para: se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, pesquisar uma amostra de referência disponível na ordem predefinida partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que ou igual a 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for B, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência B. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1)
estiver indisponível, uma amostra de referência disponível pode ser pesquisada na ordem predefinida partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência (xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência C.
[0089] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, uma amostra de referência disponível pode ser pesquisada, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência C. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1) estiver indisponível, uma amostra de referência disponível pode ser pesquisada, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for D, o valor reconstruído da amostra de referência (xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência D.
[0090] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, se for determinado que todas as amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado estão indisponíveis, o valor reconstruído da amostra de referência é definido como 1 << (bitDepth - 1), onde bitDepth representa uma profundidade de bits de um valor de amostra da amostra de referência.
[0091] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada na esquerda do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
[0092] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para inicialmente atualizar as informações de movimento por meio do uso de um primeiro algoritmo predefinido; e, correspondentemente, o módulo de compensação é especificamente configurado para realizar a compensação de movimento no bloco de imagem a ser processado com base em informações de movimento inicialmente atualizadas.
[0093] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido; e, correspondentemente, o módulo de cálculo é especificamente configurado para realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e em um valor de predição pré-atualizado da amostra alvo.
[0094] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
[0095] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de análise é configurado adicionalmente para: analisar o fluxo de bits para obter um modo de predição correspondente ao bloco de imagem a ser processado; e determinar que o modo de predição é um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP). Pode ser entendido que o modo de predição de vetor de movimento avançado inter (inter AMVP) também pode ser referido como um modo de predição de vetor de movimento inter (inter MVP).
[0096] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de análise é configurado adicionalmente para: analisar o fluxo de bits para obter informações de indicação de determinação de atualização do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
[0097] Com referência ao segundo aspecto e às implementações possíveis anteriores, em outra implementação possível, o módulo de cálculo é configurado adicionalmente para: obter informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
[0098] De acordo com um terceiro aspecto deste pedido, um dispositivo de predição de informações de movimento é fornecido, incluindo um processador e uma memória que é acoplada ao processador. O processador é configurado para realizar o método, de acordo com o primeiro aspecto.
[0099] De acordo com um quarto aspecto deste pedido, uma mídia de armazenamento legível por computador é fornecida. A mídia de armazenamento legível por computador armazena uma instrução. Quando a instrução é rodada em um computador, o computador é habilitado a realizar o método, de acordo com o primeiro aspecto.
[0100] De acordo com um quinto aspecto deste pedido, um produto de programa de computador incluindo uma instrução é fornecido. Quando a instrução é rodada em um computador, o computador é habilitado a realizar o método, de acordo com o primeiro aspecto.
[0101] Deve ser entendido que as soluções técnicas no segundo ao quinto aspectos deste pedido são compatíveis com aquelas no primeiro aspecto deste pedido. Os efeitos benéficos obtidos em todos os aspectos e as implementações viáveis correspondentes de todos os aspectos são similares. Portanto, os detalhes não são descritos novamente.
BREVE DESCRIÇÃO DOS DESENHOS
[0102] A FIG. 1 é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo que pode ser configurado para o uso em uma modalidade deste pedido;
[0103] A FIG. 2 é um diagrama de bloco de sistema de um exemplo de um codificador de vídeo que pode ser configurado para o uso em uma modalidade deste pedido;
[0104] A FIG. 3 é um diagrama de bloco de sistema de um exemplo de um decodificador de vídeo que pode ser configurado para o uso em uma modalidade deste pedido;
[0105] A FIG. 4 é um diagrama de bloco de um exemplo de um módulo de predição inter que pode ser configurado para o uso em uma modalidade deste pedido;
[0106] A FIG. 5 é um fluxograma de uma implementação do exemplo de um modo de predição de mesclagem;
[0107] A FIG. 6 é um fluxograma de uma implementação do exemplo de um modo de predição de vetor de movimento avançado;
[0108] A FIG. 7 é um fluxograma de uma implementação do exemplo de compensação de movimento realizado por um decodificador de vídeo que pode ser configurado para o uso em uma modalidade deste pedido;
[0109] A FIG. 8 é um diagrama esquemático de um exemplo de uma unidade de codificação e um bloco de imagem vizinho associado à unidade de codificação;
[0110] A FIG. 9 é um fluxograma de uma implementação do exemplo de construção de uma lista de vetores de movimento preditos candidatos;
[0111] A FIG. 10 é um diagrama esquemático de uma implementação do exemplo de adição de um vetor de movimento candidato combinado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem;
[0112] A FIG. 11 é um diagrama esquemático de uma implementação do exemplo de adição de um vetor de movimento candidato dimensionado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem;
[0113] A FIG. 12 é um diagrama esquemático de uma implementação do exemplo de adição de um vetor de movimento zero a uma lista de vetores de movimento preditos candidatos de modo de mesclagem;
[0114] A FIG. 13 é um fluxograma esquemático de um método de predição inter, de acordo com uma modalidade deste pedido;
[0115] A FIG. 14 é um diagrama esquemático 1 de aplicação de um método de predição inter, de acordo com uma modalidade deste pedido;
[0116] A FIG. 15 é um diagrama esquemático 2 de aplicação de um método de predição inter, de acordo com uma modalidade deste pedido;
[0117] A FIG. 16 é um diagrama esquemático 3 de aplicação de um método de predição inter, de acordo com uma modalidade deste pedido;
[0118] A FIG. 17 é um diagrama esquemático 4 de aplicação de um método de predição inter, de acordo com uma modalidade deste pedido;
[0119] A FIG. 18 é um diagrama esquemático de bloco de um aparelho de predição inter, de acordo com uma modalidade deste pedido; e
[0120] A FIG. 19 é um diagrama esquemático de bloco de outro aparelho de predição inter, de acordo com uma modalidade deste pedido.
DESCRIÇÃO DAS MODALIDADES
[0121] O seguinte descreve claramente e completamente as soluções técnicas nas modalidades deste pedido com referência aos desenhos anexos nas modalidades deste pedido.
[0122] A FIG. 1 é um diagrama de bloco de um exemplo de um sistema de codificação de vídeo, de acordo com uma modalidade deste pedido. Como descrito neste relatório, o termo “codificador de vídeo” usualmente refere-se tanto a um codificador de vídeo quanto a um decodificador de vídeo. Neste pedido, o termo “codificação de vídeo” ou “codificação” pode usualmente se referir à codificação de vídeo ou decodificação de vídeo. Um codificador de vídeo 100 e um decodificador de vídeo 200 no sistema de codificação de vídeo são configurados para prever informações de movimento, por exemplo, um vetor de movimento, de um bloco de imagem codificado atual ou um sub-bloco de um bloco de imagem codificado atual, de acordo com vários exemplos do método descritos com base em qualquer um de uma pluralidade de novos modos de predição inter fornecidos neste pedido, de modo que o vetor de movimento predito se aproxima, a uma extensão maior, de um vetor de movimento obtido por meio do uso de um método de estimativa de movimento e uma diferença de vetor de movimento não precisa ser transmitida durante a codificação. Além disso, isto melhora o desempenho de codificação.
[0123] Como mostrado na FIG. 1, o sistema de codificação de vídeo inclui um aparelho de origem 10 e um aparelho de destino 20. O aparelho de origem 10 gera dados de vídeo codificados. Portanto, o aparelho de origem 10 pode ser referido como um aparelho de codificação de vídeo. O aparelho de destino 20 pode decodificar os dados de vídeo codificados gerados pelo aparelho de origem 10. Portanto, o aparelho de destino 20 pode ser referido como um aparelho de decodificação de vídeo. Em várias soluções de implementação, o aparelho de origem 10, o aparelho de destino 20 ou tanto o aparelho de origem 10 quanto o aparelho de destino 20 podem incluir um ou mais processadores e uma memória acoplada a um ou mais processadores. A memória pode incluir, mas não é limitado 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 exigido em uma forma de uma instrução ou uma estrutura de dados e que possa ser acessada por um computador, como descrito neste relatório descritivo.
[0124] O aparelho de origem 10 e o aparelho de destino 20 podem incluir vários aparelhos, incluindo um computador desktop, um aparelho de computação móvel, um computador notebook (por exemplo, laptop), um computador tablet, um conversor de televisão, um telefone portátil definido como um telefone “inteligente”, um aparelho de televisão, uma câmera, um aparelho de exibição, um reprodutor de mídia digital, um console de videogame, um computador no veículo ou semelhantes.
[0125] O aparelho de destino 20 pode receber os dados de vídeo codificados do aparelho de origem 10 através de um enlace 30. O enlace 30 pode incluir uma ou mais mídias ou aparelhos que podem transferir os dados de vídeo codificados do aparelho de origem 10 para o aparelho de destino 20.
Em um exemplo, o enlace 30 pode incluir uma ou mais mídias de comunicação que permitem que o aparelho de origem 10 transmita diretamente os dados de vídeo codificados para o aparelho de destino 20 em tempo real. Neste exemplo, o aparelho de origem 10 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 dados de vídeo modulados para o aparelho de destino 20. Uma ou mais mídias de comunicações podem incluir uma mídia de comunicações sem fio e/ou com fio, por exemplo, um espectro de frequência de rádio (radio frequency, RF) ou uma ou mais linhas de transmissão física. Uma ou mais mídias de comunicações podem constituir uma parte de uma rede com base em pacotes, e a rede com base em pacotes é, por exemplo, uma rede de área local, uma rede de área ampla, ou uma rede global (por exemplo, a internet). Uma ou mais mídias de comunicações podem incluir um roteador, um comutador, uma estação de base ou outro dispositivo que facilite a comunicação do aparelho de origem 10 para o aparelho de destino 20.
[0126] Em outro exemplo, os dados codificados podem ser emitidos para um aparelho de armazenamento 40 através de uma interface de saída
140. Similarmente, os dados codificados podem ser acessados do aparelho de armazenamento 40 através de uma interface de entrada 240. O aparelho de armazenamento 40 pode incluir qualquer uma de uma pluralidade de mídias de armazenamento de dados distribuídos ou mídia de armazenamento de dados acessível localmente, por exemplo, uma unidade de disco rígido, um disco Blu- ray, um disco de vídeo digital (digital video disc, DVD), uma memória somente de leitura de disco compacto (compact disc read-only memory, CD-ROM), uma memória flash, uma memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital apropriada configurada para armazenar os dados de vídeo codificados.
[0127] Em outro exemplo, o aparelho de armazenamento 40 pode corresponder a um servidor de arquivos ou outro aparelho de armazenamento intermediário capaz de armazenar o vídeo codificado gerado pelo aparelho de origem 10. O aparelho de destino 20 pode acessar os dados de vídeo armazenado do aparelho de armazenamento 40 através de transmissão de streaming ou downloading. O servidor de arquivos pode ser qualquer tipo de servidor que possa armazenar os dados de vídeo codificados e transmitir os dados de vídeo codificados para o aparelho de destino 20. Em um exemplo, o servidor de arquivos inclui um servidor de rede (por exemplo, usado para um local na rede de Internet), um servidor de protocolo de transferência de arquivos (file transfer protocol, FTP), um aparelho de armazenamento acoplado à rede (network-attached storage, NAS) ou uma unidade de disco local. O aparelho de destino 20 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão (incluindo uma conexão de internet). A conexão de dados padrão pode incluir um canal sem fio (por exemplo, uma conexão de fidelidade sem fio (wireless-fidelity, Wi-Fi)), uma conexão com fio (por exemplo, uma linha de assinante digital (digital subscriber line, DSL), ou um modem à cabo), ou uma combinação de um canal sem fio e uma conexão com fio, onde a combinação é adequada para acessar os dados de vídeo codificados armazenados no servidor de arquivos. Os dados de vídeo codificados podem ser transmitidos do aparelho de armazenamento 40 através da transmissão de streaming, transmissão de downloading ou uma combinação dos mesmos.
[0128] Uma tecnologia de predição de vetor de movimento neste pedido é aplicável à codificação de vídeo para suportar uma pluralidade de aplicações de multimídia, por exemplo, transmissão de televisão pelo ar, transmissão de televisão à cabo, transmissão de televisão por satélite, transmissão de streaming de vídeo (por exemplo, através da internet), codificação de dados de vídeo armazenados em uma mídia de armazenamento de dados, decodificação de dados de vídeo armazenados em uma mídia de armazenamento de dados ou outra aplicação. Em alguns exemplos, o sistema de codificação de vídeo pode ser configurado para suportar a transmissão de vídeo unidirecional ou bidirecional, para suportar aplicações, tais como transmissão de streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou videotelefonia.
[0129] O sistema de codificação de vídeo descrito na FIG. 1 é meramente um exemplo, e as tecnologias deste pedido são aplicáveis às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre um aparelho de codificação e um aparelho de decodificação. Em outro exemplo, os dados são recuperados de uma memória local, transmitido através de uma rede ou semelhantes. O aparelho de codificação de vídeo pode codificar dados e armazenar os dados em uma memória, e/ou o aparelho de decodificação de vídeo pode recuperar dados da memória e decodificar os dados. Em muitos exemplos, a codificação e a decodificação são realizadas por aparelhos que não se comunicam entre si, mas simplesmente codificam dados e armazenam os dados em uma memória e/ou recuperam dados da memória e decodificam os dados.
[0130] No exemplo na FIG. 1, o aparelho de origem 10 inclui uma fonte de vídeo 120, um codificador de vídeo 100 e a interface de saída 140. Em alguns exemplos, a interface de saída 140 pode incluir um modulador/demodulador (um modem) e/ou um transmissor. A fonte de vídeo 120 pode incluir um aparelho de captura de vídeo (por exemplo, uma câmera de vídeo), um arquivo de vídeo incluindo dados de vídeo previamente capturados, uma interface de alimentação de vídeo para receber dados de vídeo de um provedor de conteúdo de vídeo, e/ou um sistema gráfico de computador para gerar dados de vídeo ou uma combinação das fontes de dados de vídeo anteriores.
[0131] O codificador de vídeo 100 pode codificar dados de vídeo da fonte de vídeo 120. Em alguns exemplos, o aparelho de origem 10 transmite diretamente os dados de vídeo codificados para o aparelho de destino 20 através da interface de saída 140. Em outros exemplos, os dados de vídeo codificados podem ser armazenados adicionalmente no aparelho de armazenamento 40, de modo que o aparelho de destino 20 acesse subsequentemente os dados de vídeo codificados para decodificação e/ou reprodução.
[0132] No exemplo na FIG. 1, o aparelho de destino 20 inclui a interface de entrada 240, um decodificador de vídeo 200 e um aparelho de exibição 220. Em alguns exemplos, a interface de entrada 240 inclui um receptor e/ou um modem. A interface de entrada 240 pode receber os dados de vídeo codificados através do enlace 30 e/ou do aparelho de armazenamento
40. O aparelho de exibição 220 pode ser integrado com o aparelho de destino 20 ou pode estar localizado fora do aparelho de destino 20. Geralmente, o aparelho de exibição 220 exibe os dados de vídeo decodificados. O aparelho de exibição 220 pode incluir uma pluralidade de tipos de aparelhos de exibição, por exemplo, uma tela de cristal líquido (liquid crystal display, LCD), uma tela de plasma, uma tela de diodo orgânico emissor de luz (organic light-emitting diode, OLED) ou outro tipo de aparelho de exibição.
[0133] Em alguns aspectos, embora não mostrado na FIG. 1, o codificador de vídeo 100 e o decodificador de vídeo 200 podem ser integrados com um codificador de áudio e um decodificar de áudio, respectivamente, e podem incluir uma unidade multiplexadora-demultiplexadora apropriada ou outro hardware e software, para codificar tanto áudio quanto um vídeo nos mesmos dados atuais ou transmissão de dados separados. Em alguns exemplos, se aplicável, a unidade demultiplexadora (MUX-DEMUX) pode condescender com o protocolo multiplexador H.223 da união de telecomunicações internacional (international telecommunication union, ITU) ou outro protocolo, tal como o protocolo de datagrama do usuário (user datagram protocol, UDP).
[0134] O codificador de vídeo 100 e o decodificador de vídeo 200, cada um, podem ser implementados como qualquer um de uma pluralidade de circuitos, por exemplo, um ou mais microprocessadores, processadores de sinal digital (digital signal processor, DSP), circuitos integrados específicos da aplicação (application-specific integrated circuit, ASIC), arranjos de portas programáveis em campo (field programmable gate array, FPGA), lógica discreta, hardware ou qualquer combinação dos mesmos. Se este pedido for implementado parcialmente por meio do uso de software, o aparelho pode armazenar uma instrução para o software em uma mídia de armazenamento legível por computador não volátil apropriada, e pode usar um ou mais processadores para executar a instrução em hardware, para implementar as tecnologias neste pedido. Qualquer um dos conteúdos anteriores (incluindo hardware, software, uma combinação de hardware e software e semelhantes) podem ser considerados como um ou mais processadores. O codificador de vídeo 100 e o decodificador de vídeo 200, cada um, podem ser incluídos em um ou mais codificadores ou decodificadores. Tanto o codificador quanto o decodificador podem ser integrados como uma parte de um codificador/decodificador (codec) combinado em um aparelho correspondente.
[0135] Neste pedido, o codificador de vídeo 100 pode ser geralmente referido como um aparelho que “sinaliza” ou “envia” algumas informações para outro aparelho, tal como o decodificador de vídeo 200. O termo “sinal” ou “envio” pode geralmente se referir à transmissão de um elemento de sintaxe e/ou outros dados usados para decodificar dados de vídeo compactados. A transmissão pode ser realizada em tempo real ou quase em tempo real. Alternativamente, a comunicação pode ser realizada depois de um período de tempo, por exemplo, realizada quando um elemento de sintaxe em um fluxo de bits codificado é armazenado em uma mídia de armazenamento legível por computador durante a codificação. Em seguida, o aparelho de decodificação pode recuperar o elemento de sintaxe a qualquer momento depois do elemento de sintaxe ser armazenado na mídia.
[0136] JCT-VC desenvolveu o padrão de codificação de vídeo de alta eficácia H.265 (high efficiency video coding, HEVC). A padronização HEVC é fundamentada em um modelo evoluído de um aparelho de decodificação de vídeo, onde o modelo é referido como um modelo de teste HEVC (HEVC model, HM). Um documento padrão H.265 mais recente está disponível em http://www.itu.int/rec/T-REC-H.265. Uma versão mais recente do documento padrão é H.265 (12/16), e o documento padrão é integralmente incorporado neste relatório à título de referência. Em HM, é considerado que o aparelho de decodificação de vídeo tem várias capacidades adicionais em relação a um algoritmo existente em ITU-TH.264/AVC. Por exemplo, H.264 fornece nove modos de codificação predição intra, enquanto HM pode fornecer até 35 modos de codificação de predição intra.
[0137] JVET se empenha em desenvolver o padrão H.266. Um processo de padronização H.266 é fundamentado em um modelo evoluído do aparelho de decodificação de vídeo, onde o modelo é referido como um modelo de teste H.266. As descrições de algoritmo H.266 estão disponíveis em http://phenix.int-evry.fr/jvet, e as descrições de algoritmo mais recentes são incluídas em JVET-F1001-v2. Um documento das descrições de algoritmo é integralmente incorporado neste relatório à título de referência. Além disso, o software de referência para um modelo de teste JEM está disponível em https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/ e também integralmente incorporado neste relatório à título de referência.
[0138] Geralmente, como descrito em um modelo de teste HM, um quadro ou imagem de vídeo pode ser dividido em uma sequência de três blocos ou unidades de codificação maiores (largest coding unit, LCU) incluindo tanto amostras luma quanto amostras croma. A LCU também é referida como uma unidade de árvore de codificação (coding tree unit, CTU). Um bloco de árvore tem uma função similar àquela de um macrobloco no padrão H.264. Uma fatia inclui vários blocos de árvore consecutivos em uma ordem de decodificação. O quadro ou imagem de vídeo pode ser particionado em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação com base em um quadtree. Por exemplo, um bloco de árvore servindo como um nó raiz do quadtree pode ser dividido em quatro nós filhos, e cada nó filho também pode servir como um nó precursor e ser dividido em quatro outros nós filhos. Um nó filho final não divisível que serve como um nó folha da quadtree inclui um nó de decodificação, por exemplo, um bloco de vídeo decodificado. Uma quantidade máxima de vezes que o bloco de árvore pode ser dividido e um tamanho mínimo do nó de decodificação pode ser definido em dados de sintaxe associados a um fluxo de bits decodificado.
[0139] Uma unidade de codificação inclui um nó de decodificação, uma unidade de predição (prediction unit, PU) e uma unidade de transformada (transform unit, TU) associada ao nó de decodificação. Um tamanho da CU corresponde a um tamanho do nó de decodificação, e um formato da CU precisa ser um quadrado. O tamanho da CU pode variar de 8 × 8 pixels a um máximo de 64 × 64 pixels ou pode ser um tamanho de bloco de árvore maior. Cada CU pode incluir uma ou mais PUs e uma ou mais TUs. Por exemplo, dados de sintaxe associados a CU podem descrever o particionamento de uma CU em uma ou mais PUs. Os modos de particionamento podem variar quando a CU é codificada com base em um modo de salto ou direto, codificada com base em um modo de predição intra, ou codificada com base em um modo de predição inter. A PU obtida através do particionamento pode não ter um formato quadrado. Por exemplo, os dados de sintaxe associados a CU podem descrever alternativamente o particionamento de uma CU em uma ou mais TUs com base no quadtree. A TU pode ter ou não um formato quadrado.
[0140] O padrão HEVC permite a transformada com base em TU. As TUs podem ser diferentes para CUs diferentes. Um tamanho de uma TU é usualmente definido com base em um tamanho de uma PU dentro de uma determinada CU definida para uma LCU particionada. Entretanto, um caso nem sempre pode ser assim. O tamanho da TU é usualmente o mesmo que ou menor do que o tamanho da PU. Em algumas implementações viáveis, uma estrutura quadtree referida como um “quadtree residual” (residual quadtree, RQT) pode ser usada para particionar uma amostra residual correspondente a CU em unidades menores. Um nó folha do RQT pode ser referido como uma TU. Uma diferença de pixel associada a TU pode ser transformada para gerar um coeficiente de transformada e o coeficiente de transformada pode ser quantizado.
[0141] Geralmente, a PU inclui dados relacionados a um processo de predição. Por exemplo, quando a PU é codificada com base em um modo de predição intra, a PU pode incluir dados que descrevem o modo de predição intra correspondente a PU. Em outra implementação viável, quando a PU é codificada com base em um modo de predição inter, a PU pode incluir dados definindo um vetor de movimento da PU. Por exemplo, os dados definindo o vetor de movimento da PU podem descrever um componente horizontal do vetor de movimento, um componente de vertical do vetor de movimento, resolução (por exemplo, 1/4 de precisão de amostra ou 1/8 de precisão de amostra) do vetor de movimento, uma imagem de referência para a qual o vetor de movimento aponta, e/ou uma lista de imagens de referência (por exemplo, uma lista 0, uma lista 1 ou uma lista C) do vetor de movimento.
[0142] Geralmente, processos de transformada e quantização são usados para a TU. Uma determinada CU incluindo uma ou mais PUs pode também incluir uma ou mais TUs. Depois da predição, o codificador de vídeo 100 pode calcular um valor residual correspondente a PU. O valor residual inclui uma diferença de pixel. A diferença de pixel pode ser transformada em um coeficiente de transformada, e o coeficiente de transformada é quantizado e sobre varredura TU para gerar um coeficiente de transformada serializado para a decodificação de entropia. Neste pedido, o termo “bloco de vídeo” é usualmente usado para indicar um nó de decodificação de uma CU. Em algumas aplicações específicas, neste pedido, o termo “bloco de vídeo” também pode ser usado para indicar um bloco de árvore, tal como uma LCU ou uma CU, incluindo um nó de decodificação, uma PU e uma TU.
[0143] Uma sequência de vídeos usualmente inclui uma série de quadros ou imagens de vídeo. Por exemplo, um grupo de imagens (group of picture, GOP) inclui uma série de imagens de vídeo, ou uma ou mais imagens de vídeo. O GOP pode incluir dados de sintaxe em informações de cabeçalho do GOP, em informações de cabeçalho de uma ou mais das imagens, ou em outro lugar, e os dados de sintaxe descrevem uma quantidade de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia descrevendo um modo de codificação para a imagem correspondente. O codificador de vídeo 100 usualmente realiza uma operação em um bloco de vídeo em uma fatia de vídeo, para codificar os dados de vídeo. O bloco de vídeo pode corresponder ao nó de decodificação na CU. Um tamanho do bloco de vídeo pode ser fixo ou variável e pode variar com um padrão de decodificação especificado.
[0144] Em uma implementação viável, HM suporta a predição para PUs com uma variedade de tamanhos. Assumindo que um tamanho de uma determinada CU é 2N × 2N, HM suporta a predição intra para uma PU com um tamanho de 2N × 2N ou N × N, e predição inter para uma PU simétrica com um tamanho de 2N × 2N, 2N × N, N × 2N ou N × N. HM também suporta particionamento assimétrico para predição inter para tamanhos de PU de 2N × nU, 2N × nD, nL × 2N ou nR × 2N. No particionamento assimétrico, a CU não é particionada em uma direção, e é particionada em duas partes em outra direção, onde uma parte representa 25 % da CU e a outra parte representa 75 % da CU. A parte que representa 25 % da CU é indicada por um indicador incluindo “n” seguido por “U (Up)”, “D (Down)”, “L (Left)” ou “R (Right)”. Portanto, por exemplo, “2N × nU” refere-se a uma CU 2N × 2N horizontalmente particionada, com uma PU 2N × 0,5N na parte superior e uma PU 2N × 1,5N na parte inferior.
[0145] Neste pedido, “N × N” e “N multiplicado por N” são usados permutavelmente para indicar um tamanho de pixel de um bloco de vídeo em uma dimensão vertical e uma dimensão horizontal, por exemplo, 16 × 16 pixels ou 16 multiplicado por 16 pixels. Geralmente, um bloco de 16 × 16 tem 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Similarmente, um bloco N × N tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N é um valor inteiro não negativo. Os pixels em um bloco podem ser organizados em linhas e colunas. Além disso,
em um bloco, uma quantidade de pixels em uma direção horizontal e uma quantidade de pixels em uma direção vertical podem não ser necessariamente as mesmas. Por exemplo, um bloco pode incluir N × M pixels, onde M não é necessariamente igual a N.
[0146] Depois da decodificação de intra ou predição inter ser realizado na PU da CU, o codificador de vídeo 100 pode calcular dados residuais da TU na CU. A PU pode incluir dados de pixel em um domínio espacial (também referido como um domínio de pixel). A TU pode incluir um coeficiente em um domínio de transformada depois da transformada (por exemplo, transformada discreta de cosseno (discrete cosine transfrom, DCT), transformada inteira, transformada de wavelet ou transformadas conceitualmente similares) ser aplicada aos dados residuais de vídeo. Os dados residuais podem corresponder a uma diferença de pixel entre pixels de uma imagem não codificada e um valor de predição correspondente a PU. O codificador de vídeo 100 pode gerar uma TU incluindo dados residuais da CU e, em seguida, transformar a TU para gerar um coeficiente de transformada da CU.
[0147] Depois de realizar qualquer transformada para gerar coeficientes de transformada, o codificador de vídeo 100 pode quantizar os coeficientes de transformada. A quantização refere-se a, por exemplo, um processo de quantizar os coeficientes, para reduzir uma quantidade de dados usados para representar os coeficientes e implementar compressão adicional. O processo de quantização pode reduzir uma profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, durante a quantização, um valor de n bits pode ser reduzido a um valor de m bits através de arredondamento, onde n é maior do que m.
[0148] O modelo JEM melhora adicionalmente uma estrutura de codificação de imagem de vídeo. Especificamente, uma estrutura de codificação de bloco referida como uma estrutura “quadtree mais árvore binária” (QTBT) é introduzida. Sem usar conceitos, tais como CU, PU e TU em HEVC, a estrutura QTBT suporta um formato de divisão de CU mais flexível. Uma CU pode ter um formato quadrado ou em um formato retangular. A divisão de quadtree é realizada primeira em uma CTU, e a divisão de árvore binária é realizada adicionalmente em um nó folha do quadtree. Além disso, existem dois modos de divisão em divisão de árvore binária: particionamento horizontal simétrico e particionamento vertical simétrico. Um nó folha de uma árvore binária é referido como uma CU. A CU no modelo JEM não pode ser dividido adicionalmente durante a predição e transformada. Em outras palavras, a CU, a PU e a TU no modelo JEM têm um mesmo tamanho de bloco. No modelo JEM existente, um tamanho máximo da CTU é 256 × 256 luma pixels.
[0149] Em algumas implementações viáveis, o codificador de vídeo 100 pode varrer o coeficiente de transformada quantizado em uma ordem de varredura predefinida para gerar um vetor serializado que pode ser codificado por entropia. Em outras implementações viáveis, o codificador de vídeo 100 pode realizar a varredura adaptativa. Depois de varrer o coeficiente de transformada quantizado para gerar um vetor unidimensional, o codificador de vídeo 100 pode realizar a codificação de entropia no vetor unidimensional por meio do uso de codificação de comprimento variável com base em contexto (código de comprimento variável adaptativo com base em contexto, CAVLC), codificação aritmética adaptativa com base em contexto (context-based adaptive binary arithmetic coding, CABAC), codificação aritmética binária adaptativa de contexto com base em sintaxe (syntax-based adaptive binary arithmetic coding, SBAC), codificação de entropia de particionamento de intervalo de probabilidade (probability interval partitioning entropy, PIPE) ou outro método de codificação de entropia. O codificador de vídeo 100 pode realizar adicionalmente a codificação de entropia no elemento de sintaxe associado aos dados de vídeo codificados, para o decodificador de vídeo 200 decodificar os dados de vídeo.
[0150] Para realizar CABAC, o codificador de vídeo 100 pode atribuir um contexto em um modelo de contexto a um símbolo a ser transmitido. O contexto pode ser relacionado se um valor adjacente do símbolo não for zero. Para realizar CAVLC, o codificador de vídeo 100 pode selecionar um código de comprimento variável do símbolo a ser transmitido. Uma palavra código na codificação de comprimento variável (código de comprimento variável, VLC) pode ser construída, de modo que um código mais curto corresponde a um símbolo mais provável e um código mais largo corresponde a um símbolo menos provável. Desta maneira, em comparação ao uso de palavras código de comprimento igual para todos os símbolos a serem transmitidos, usando o VLC pode reduzir uma taxa de bits. Uma probabilidade em CABAC pode ser determinada com base no contexto atribuído ao símbolo.
[0151] Nesta modalidade deste pedido, o codificador de vídeo pode realizar predição inter para reduzir a redundância temporal entre imagens. Como descrito acima, uma CU pode ter uma ou mais unidades de predição PUs, dependendo de diferentes padrões de codificação de compressão de vídeo. Em outras palavras, uma pluralidade de PUs pode pertencer a uma CU, ou uma PU e uma CU têm um mesmo tamanho. Neste relatório descritivo, quando uma CU e uma PU têm um mesmo tamanho, um modo de particionamento correspondente a CU é que a CU não é particionada, ou a CU é particionada em uma PU, e a PU é uniformemente usada para descrição. Quando o codificador de vídeo realiza a predição inter, o codificador de vídeo pode sinalizar as informações de movimento da PU para o decodificador de vídeo. Por exemplo, as informações de movimento da PU podem incluir um índice de imagem de referência, um vetor de movimento e um indicador de direção de predição. O vetor de movimento pode indicar um deslocamento entre um bloco de imagem (também referido como um bloco de vídeo, um bloco de pixel, um conjunto de pixels ou semelhantes) da PU e um bloco de referência da PU. O bloco de referência da PU pode ser uma parte de uma imagem de referência similar ao bloco de imagem da PU. O bloco de referência pode estar localizado em uma imagem de referência indicada pelo índice de imagem de referência e pelo indicador de direção de predição.
[0152] Para reduzir uma quantidade de bits de codificação necessários para representar as informações de movimento da PU, o codificador de vídeo pode gerar uma lista de vetores de movimento (Motion Vector, MV) preditos candidatos para cada PU com base em um modo de predição de mesclagem ou um modo de predição de vetor de movimento avançado. Cada vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos para a PU pode indicar informações de movimento. As informações de movimento indicadas por alguns vetores de movimento preditos candidatos na lista de vetores de movimento preditos candidatos podem ser baseadas em informações de movimento de outras PUs. Se um vetor de movimento predito candidato indicar informações de movimento de um de um vetor de movimento predito candidato especificado espacial na posição ou um vetor de movimento predito candidato especificado temporal na posição, o vetor de movimento predito candidato pode ser referido como um vetor de movimento predito candidato “original” neste pedido. Por exemplo, em um modo de mesclagem, também referido como o modo de predição de mesclagem neste relatório descritivo, podem ser cinco vetores de movimento preditos candidatos originais espaciais nas posições e um vetor de movimento predito candidato original temporal na posição. Em alguns exemplos, o codificador de vídeo pode gerar vetores de movimento predito candidato adicionais combinando alguns vetores de movimento de diferentes vetores de movimento preditos candidatos originais, modificando um vetor de movimento predito candidato original ou inserindo apenas um vetor de movimento zero como um vetor de movimento predito candidato. Os vetores de movimento predito candidato adicionais não são considerados como vetores de movimento predito candidato originais e podem ser referidos como vetores de movimento predito candidato gerados artificialmente neste pedido.
[0153] As tecnologias neste pedido usualmente incluem uma tecnologia para gerar uma lista de vetores de movimento preditos candidatos no codificador de vídeo e uma tecnologia para gerar a mesma lista de vetores de movimento preditos candidatos no decodificador de vídeo. O codificador de vídeo e o decodificador de vídeo podem gerar a mesma lista de vetores de movimento preditos candidatos implementando uma mesma tecnologia para construir a lista de vetores de movimento preditos candidatos. Por exemplo, o codificador de vídeo e o decodificador de vídeo podem construir a lista com uma mesma quantidade de vetores de movimento preditos candidatos (por exemplo, cinco vetores de movimento preditos candidatos). O codificador de vídeo e o decodificador de vídeo podem considerar primeiro vetores de movimento preditos candidatos espaciais (por exemplo, blocos adjacentes em uma mesma imagem) e, em seguida, considerar vetores de movimento preditos candidatos temporais (por exemplo, vetores de movimento preditos candidatos em diferentes imagens) e, finalmente, podem considerar vetores de movimento preditos candidatos gerados artificialmente, até que uma quantidade exigida de vetores de movimento preditos candidatos são adicionadas à lista., de acordo com as tecnologias neste pedido, durante a construção da lista de vetores de movimento preditos candidatos, uma operação de poda pode ser realizada em alguns tipos de vetores de movimento preditos candidatos, para remover um vetor de movimento predito candidato repetido da lista de vetores de movimento preditos candidatos, mas pode não ser realizada em outros tipos de vetores de movimento preditos candidatos, para reduzir a complexidade de decodificador. Por exemplo, para um conjunto de vetores de movimento preditos candidatos espaciais e para um vetor de movimento predito candidato temporal, a operação de poda pode ser realizada para remover um vetor de movimento predito candidato com as mesmas informações de movimento da lista de vetores de movimento preditos candidatos. Entretanto, um vetor de movimento predito candidato gerado artificialmente pode ser adicionado à lista de vetores de movimento preditos candidatos sem ser podado.
[0154] Depois de gerar a lista de vetores de movimento preditos candidatos para a PU da CU, o codificador de vídeo pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos e emitir um índice de vetor de movimento predito candidato em um fluxo de bits. O vetor de movimento predito candidato selecionado pode ser um vetor de movimento predito candidato para gerar um vetor de movimento que mais se aproxima de um valor de predição de uma PU alvo que está sendo decodificada. O índice de vetor de movimento predito candidato pode indicar uma posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode gerar adicionalmente um bloco de imagem de predição da PU com base em um bloco de referência indicado pelas informações de movimento da PU. As informações de movimento da PU podem ser determinadas com base em informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. Por exemplo, no modo de mesclagem, as informações de movimento da PU podem ser as mesmas que as informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. No modo AMVP, as informações de movimento da PU podem ser determinadas com base em uma diferença de vetor de movimento para a PU e nas informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. O codificador de vídeo pode gerar um ou mais blocos de imagem residuais da CU com base no bloco de imagem de predição da PU da CU e um bloco de imagem original da CU. Em seguida, o codificador de vídeo pode codificar um ou mais blocos de imagem residuais e emitir um ou mais blocos de imagem residuais no fluxo de bits.
[0155] O fluxo de bits pode incluir dados que identificam o vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. O decodificador de vídeo pode determinar as informações de movimento da PU com base nas informações de movimento indicadas pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. O decodificador de vídeo pode identificar um ou mais bloco de referência da PU com base nas informações de movimento da PU. Depois de identificar um ou mais blocos de referência da PU, o decodificador de vídeo pode gerar o bloco de imagem de predição da PU com base em um ou mais blocos de referência da PU. O decodificador de vídeo pode reconstruir o bloco de imagem da CU com base no bloco de imagem de predição da PU da CU e um ou mais blocos de imagem residuais da CU.
[0156] Para facilidade de explicação, neste pedido, uma posição ou um bloco de imagem pode ser descrito como uma posição ou um bloco de imagem tendo várias relações espaciais com uma CU ou uma PU. A descrição pode ser explicada como a seguir: A posição ou o bloco de imagem tem várias relações espaciais com um bloco de imagem associado a CU ou a PU. Além disso, neste pedido, uma PU atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma PU atual e também pode ser referida como um bloco de imagem atual a ser processado. Neste pedido, uma CU atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma CU atual. Neste pedido, uma imagem atualmente sendo decodificada pelo decodificador de vídeo pode ser referida como uma imagem atual. Deve ser entendido que este pedido também é aplicável a um caso em que uma PU e uma CU têm um mesmo tamanho ou uma PU é uma CU. A PU é usada uniformemente para descrição.
[0157] Como descrito brevemente acima, o codificador de vídeo 100 pode gerar o bloco de imagem de predição e as informações de movimento da PU da CU através de predição inter. Em muitos exemplos, as informações de movimento de uma determinada PU podem ser iguais ou similares às informações de movimento de uma ou mais PUs vizinhas (isto é, uma PU cujo bloco de imagem é espacialmente ou temporariamente adjacente a um bloco de imagem da PU determinada). Pelo fato de que a PU vizinha frequentemente tem informações de movimento similares, o codificador de vídeo 100 pode codificar as informações de movimento da PU determinada com base nas informações de movimento da PU vizinha. A codificação das informações de movimento da PU determinada com base nas informações de movimento da PU vizinha pode reduzir uma quantidade de bits de codificação no fluxo de bits que é exigida para indicar as informações de movimento da PU determinada.
[0158] O codificador de vídeo 100 pode codificar as informações de movimento da PU determinada com base nas informações de movimento da PU vizinha de várias maneiras. Por exemplo, o codificador de vídeo 100 pode indicar que as informações de movimento da PU determinada são iguais às informações de movimento da PU vizinha. Neste pedido, o modo de mesclagem pode ser usado para indicar que as informações de movimento da PU determinada são iguais ou podem ser derivadas das informações de movimento da PU vizinha. Em outra implementação viável, o codificador de vídeo 100 pode calcular uma diferença de vetor de movimento (Motion Vector Difference, MVD) para a PU determinada. A MVD indica uma diferença entre um vetor de movimento da PU determinada e um vetor de movimento da PU vizinha. O codificador de vídeo 100 pode incluir a MVD em vez do vetor de movimento da PU determinada nas informações de movimento da PU determinada. No fluxo de bits, uma quantidade de bits de codificação exigida para representar a MVD é menor do que uma quantidade de bits de codificação exigida para representar o vetor de movimento da PU determinada. Neste pedido, o modo de predição de vetor de movimento avançado pode ser usado para indicar que as informações de movimento da PU determinada são sinalizadas para o lado do decodificador por meio do uso da MVD e um valor de índice que é usado para identificar um vetor de movimento candidato.
[0159] Para sinalizar, com base no modo de mesclagem ou no modo AMVP, as informações de movimento da PU determinada para o lado do decodificador, o codificador de vídeo 100 pode gerar uma lista de vetores de movimento preditos candidatos para a PU determinada. A lista de vetores de movimento preditos candidatos pode incluir um ou mais vetores de movimento preditos candidatos. Cada um dos vetores de movimento preditos candidatos na lista de vetores de movimento preditos candidatos para a PU determinada pode indicar informações de movimento. As informações de movimento indicadas por cada vetor de movimento predito candidato pode incluir um vetor de movimento, um índice de imagem de referência e um indicador de direção de predição. Os vetores de movimento preditos candidatos na lista de vetores de movimento preditos candidatos podem incluir um vetor de movimento predito candidato “original”. Cada um dos vetores de movimento preditos candidatos indica informações de movimento em um dos vetores de movimento preditos candidatos especificados nas posições dentro de uma PU diferente da PU determinada.
[0160] Depois de gerar a lista de vetores de movimento preditos candidatos para a PU, o codificador de vídeo 100 pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos que é usado para a PU. Por exemplo, o codificador de vídeo pode comparar cada vetor de movimento predito candidato com uma PU que está sendo decodificada e pode selecionar um vetor de movimento predito candidato com custos de distorção de taxa exigidos. O codificador de vídeo 100 pode emitir um índice de vetor de movimento predito candidato para a PU. O índice de vetor de movimento predito candidato pode identificar uma posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos.
[0161] Além disso, o codificador de vídeo 100 pode gerar um bloco de imagem de predição da PU com base em um bloco de referência indicado pelas informações de movimento da PU. As informações de movimento da PU podem ser determinadas com base em informações de movimento indicadas pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. Por exemplo, no modo de mesclagem, as informações de movimento da PU podem ser iguais às informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. No modo AMVP, as informações de movimento da PU podem ser determinadas com base na diferença de vetor de movimento para a PU e nas informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. Como descrito acima, o codificador de vídeo 100 pode processar o bloco de imagem de predição da PU.
[0162] Quando o decodificador de vídeo 200 recebe o fluxo de bits, o decodificador de vídeo 200 pode gerar uma lista de vetores de movimento preditos candidatos para cada PU da CU. A lista de vetores de movimento preditos candidatos gerada pelo decodificador de vídeo 200 para a PU pode ser igual à lista de vetores de movimento preditos candidatos gerada pelo codificador de vídeo 100 para a PU. Um elemento de sintaxe obtido pela análise do fluxo de bits pode indicar a posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. Depois de gerar a lista de vetores de movimento preditos candidatos para a PU, o decodificador de vídeo 200 pode gerar o bloco de imagem de predição da PU com base em um ou mais blocos de referência indicados pelas informações de movimento da PU. O decodificador de vídeo 200 pode determinar as informações de movimento da PU com base nas informações de movimento indicadas pelo vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos para a PU. O decodificador de vídeo 200 pode reconstruir o bloco de imagem da CU com base no bloco de imagem de predição da PU e no bloco de imagem residual da CU.
[0163] Deve ser entendido que, em uma implementação viável, no lado do decodificador, construir a lista de vetores de movimento preditos candidatos e analisar o fluxo de bits para obter a posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos são independentes um do outro e podem ser realizados em qualquer ordem ou em paralelo.
[0164] Em outra implementação viável, no lado do decodificador, a posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos é primeiramente obtida pela análise do fluxo de bits e, em seguida, a lista de vetores de movimento preditos candidatos é construída com base na posição obtida através da análise. Nesta implementação, não é necessário construir todas as listas de vetores de movimento preditos candidatos e apenas uma lista de vetores de movimento preditos candidatos na posição obtida através de análise precisa ser construído, para ser específico, desde que o vetor de movimento predito candidato na posição possa ser determinado. Por exemplo, quando é obtido,
pela análise do fluxo de bits, pelo fato de que o vetor de movimento predito candidato selecionado é um vetor de movimento predito candidato cujo índice é 3 na lista de vetores de movimento preditos candidatos, apenas uma lista de vetores de movimento preditos candidatos incluindo um vetor de movimento predito candidato cujo índice é 0 para o vetor de movimento predito candidato cujo índice é 3 precisa ser construído e o vetor de movimento predito candidato cujo índice é 3 pode ser determinado. Isto pode reduzir a complexidade e melhorar a eficácia de decodificação.
[0165] A FIG. 2 é um diagrama de bloco de um exemplo de um codificador de vídeo 100, de acordo com uma modalidade deste pedido. O codificador de vídeo 100 é configurado para emitir um vídeo para uma entidade de pós-processamento 41. A entidade de pós-processamento 41 representa um exemplo de uma entidade de vídeo que pode processar dados de vídeo codificados do codificador de vídeo 100. Por exemplo, a entidade de vídeo é um elemento de rede ciente de mídia (MANE) ou um aparelho de emenda/um aparelho de edição. Em alguns casos, a entidade de pós-processamento 41 pode ser um exemplo de uma entidade de rede. Em alguns sistemas de codificação de vídeo, a entidade de pós-processamento 41 e o codificador de vídeo 100 podem ser componentes de aparelhos separados. Em outros casos, as funções da entidade de pós-processamento 41 podem ser realizadas por um mesmo aparelho incluindo o codificador de vídeo 100. Em um exemplo, a entidade de pós-processamento 41 é um exemplo do aparelho de armazenamento 40 na FIG. 1.
[0166] No exemplo na FIG. 2, o codificador de vídeo 100 inclui uma unidade de processamento de predição 108, uma unidade de filtro 106, um buffer de imagem decodificada (decoded picture buffer, DPB) 107, um somador 112, um transformador 101, um quantizador 102 e um codificador de entropia
103. A unidade de processamento de predição 108 inclui um preditor inter 110 e um preditor intra 109. Para reconstruir um bloco de imagem, o codificador de vídeo 100 inclui adicionalmente um quantizador inverso 104, um transformador inverso 105 e um somador 111. A unidade de filtro 106 é destinada para representar um ou mais filtros loop, por exemplo, um filtro de desbloqueio, um filtro loop adaptativo (adaptive loop filter, ALF) e um filtro de deslocamento adaptativo de amostra (sample adaptive offset, SAO). Embora a unidade de filtro 106 seja mostrada como um filtro no loop na FIG. 2, em outra implementação, a unidade de filtro 106 pode ser implementada como um filtro de pós-loop. Em um exemplo, o codificador de vídeo 100 pode incluir adicionalmente uma memória de dados de vídeo e uma unidade de particionamento (que não é mostrada na figura).
[0167] A memória de dados de vídeo pode armazenar dados de vídeo para serem codificados por um componente do codificador de vídeo 100. Os dados de vídeo armazenados na memória de dados de vídeo podem ser obtidos de uma fonte de vídeo 120. O DPB 107 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência usados pelo codificador de vídeo 100 para codificar dados de vídeo em um modo de codificação intra ou um modo de codificação inter. A memória de dados de vídeo e o DPB 107 podem incluir qualquer um de uma pluralidade de tipos de aparelhos de memória, por exemplo, uma memória de acesso aleatório dinâmica (dinamic random access memory, DRAM) incluindo uma memória de acesso aleatório dinâmica síncrona (synchronous dinamic random access memory, SDRAM), uma RAM magnética (magnetic random access memory, MRAM), uma RAM resistiva (resistive random access memory, RRAM) ou outro tipo de aparelho de memória. A memória de dados de vídeo e o DPB 107 podem ser fornecidos por um mesmo aparelho de memória ou aparelhos de memória separados. Em vários exemplos, a memória de dados de vídeo pode ser integrada em um chip junto com outros componentes do codificador de vídeo 100 ou pode ser disposta fora do chip em relação a estes componentes.
[0168] Como mostrado na FIG. 2, o codificador de vídeo 100 recebe dados de vídeo e armazena os dados de vídeo na memória de dados de vídeo. A unidade de particionamento particiona os dados de vídeo em vários blocos de imagem e pode particionar adicionalmente estes blocos de imagem em blocos menores, por exemplo, particionar estes blocos de imagem com base em uma estrutura quadtree ou uma árvore binária estrutura. O particionamento pode incluir adicionalmente particionamento em fatias (slice), peças (tile) ou outras unidades maiores. O codificador de vídeo 100 é usualmente um componente que codifica um bloco de imagem em uma fatia de vídeo a ser codificada. A fatia pode ser particionada em uma pluralidade de blocos de imagem (e pode ser particionada em um conjunto de blocos de imagem que é referido como uma peça). A unidade de processamento de predição 108 pode selecionar um de uma pluralidade de possíveis modos de codificação usados para um bloco de imagem atual, por exemplo, selecionar um de uma pluralidade de modos de codificação intra ou um de uma pluralidade de modos de codificação inter. A unidade de processamento de predição 108 pode fornecer um bloco codificado intra ou codificado inter obtido para o somador 112 para gerar um bloco residual, e fornecer um bloco codificado intra ou codificado inter obtido para o somador 111 para reconstruir um bloco codificado que é usado como uma imagem de referência.
[0169] O preditor intra 109 na unidade de processamento de predição 108 pode realizar a codificação de predição intra em um bloco atual a ser codificado em relação a um ou mais blocos vizinhos que estão em um mesmo quadro ou fatia como o bloco de imagem atual, para remover a redundância espacial. O preditor inter 110 na unidade de processamento de predição 108 pode realizar a codificação de predição inter no bloco de imagem atual em relação a um ou mais blocos de predição em uma ou mais imagens de referência, para remover a redundância temporal.
[0170] Especificamente, o preditor inter 110 pode ser configurado para determinar um modo de predição inter usado para codificar o bloco de imagem atual. Por exemplo, o preditor inter 110 pode calcular os valores de distorção de taxa para vários modos de predição inter em um conjunto de modos de predição inter candidato através da análise de distorção de taxa e selecionar um modo de predição inter com uma característica de distorção de taxa ideal para o conjunto de modos de predição inter candidato. A análise de distorção de taxa é usualmente usada para determinar uma quantidade de distorção (ou um erro) entre um bloco codificado e um bloco não codificado original a partir do qual o bloco codificado é gerado através de codificação e uma taxa de bits (isto é, uma quantidade de bits) usada para gerar o bloco codificado. Por exemplo, o preditor inter 110 pode determinar que um modo de predição inter, no conjunto de modos de predição inter candidato, usado para codificar o bloco de imagem atual em um custo de distorção de taxa de bits mínimo é um modo de predição inter usado para realizar a predição inter no bloco de imagem atual.
[0171] O preditor inter 110 é configurado para: prever informações de movimento (por exemplo, um vetor de movimento) de um ou mais sub- blocos do bloco de imagem atual com base no modo de predição inter determinado, e obter ou gerar um bloco de predição do bloco de imagem atual com base nas informações de movimento (por exemplo, o vetor de movimento) de um ou mais sub-blocos do bloco de imagem atual. O preditor inter 110 pode localizar, em uma das listas de imagem de referência, um bloco de predição apontado pelo vetor de movimento. O preditor inter 110 pode gerar adicionalmente um elemento de sintaxe associado a um bloco de imagem e uma fatia de vídeo, de modo que um decodificador de vídeo 200 use o elemento de sintaxe para decodificar o bloco de imagem na fatia de vídeo. Alternativamente, em um exemplo, o preditor inter 110 realiza um processo de compensação de movimento com base em informações de movimento de cada sub-bloco, para gerar um bloco de predição de cada sub-bloco e obter um bloco de predição do bloco de imagem atual. Deve ser entendido que o preditor inter 110 neste relatório realiza um processo de estimativa de movimento e o processo de compensação de movimento.
[0172] Especificamente, depois de selecionar o modo de predição inter para o bloco de imagem atual, o preditor inter 110 pode fornecer o codificador de entropia 103 com informações que indicam o modo de predição inter selecionado para o bloco de imagem atual, de modo que o codificador de entropia 103 codifique as informações que indicam o modo de predição inter selecionado.
[0173] O preditor intra 109 pode realizar predição intra no bloco de imagem atual. É claro que o preditor intra 109 pode determinar um modo de predição intra usado para codificar o bloco atual. Por exemplo, o preditor intra 109 pode calcular valores de distorção de taxa para vários modos de predição intra a serem testados através da análise da distorção de taxa, e selecionar um modo de predição intra com uma característica distorção de taxa ideal dos modos a serem testados. Em qualquer caso, depois de selecionar o modo de predição intra para o bloco de imagem, o preditor intra 109 pode fornecer o codificador de entropia 103 com informações que indicam o modo de predição intra selecionado para o bloco de imagem atual, de modo que o codificador de entropia 103 codifique as informações que indicam o modo de predição intra selecionado.
[0174] Depois que a unidade de processamento de predição 108 gera o bloco de predição do bloco de imagem atual através de predição inter e predição intra, o codificador de vídeo 100 obtém um bloco de imagem residual para subtrair o bloco de predição do bloco de imagem atual a ser codificado. O somador 112 representa um ou mais componentes que realizam a operação de subtração. Os dados residuais de vídeo no bloco residual podem ser incluídos em uma ou mais TUs e são aplicados ao transformador 101. O transformador 101 transforma os dados residuais de vídeo em um coeficiente de transformada residual através de transformada, tal como transformada discreta de cosseno (DCT) ou transformada conceitualmente similar. O transformador 101 pode transformar os dados residuais de vídeo de um domínio de valor de pixel para um domínio de transformada, por exemplo, um domínio de frequência.
[0175] O transformador 101 pode enviar o coeficiente de transformada obtido para o quantizador 102. O quantizador 102 quantifica o coeficiente de transformada para reduzir adicionalmente a taxa de bits. Em alguns exemplos, o quantizador 102 pode varrer adicionalmente uma matriz incluindo um coeficiente de transformada quantizado. Alternativamente, o codificador de entropia 103 pode realizar varredura.
[0176] Depois da quantização, o codificador de entropia 103 realiza a codificação de entropia no coeficiente de transformada quantizado. Por exemplo, o codificador de entropia 103 pode realizar codificação de comprimento variável adaptativo ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativo ao contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outro método ou tecnologia de codificação de entropia. Depois de realizar a codificação de entropia, o codificador de entropia 103 pode transmitir um fluxo de bits codificado para o decodificador de vídeo 200, ou arquivar um fluxo de bits codificado para transmissão subsequente ou para recuperação subsequente pelo decodificador de vídeo 200. O codificador de entropia 103 pode realizar adicionalmente a codificação de entropia em um elemento de sintaxe do bloco de imagem atual a ser codificado.
[0177] O quantizador inverso 104 e o transformador inverso 105, respectivamente, realizam a quantização inversa e a transformada inversa,
para reconstruir o bloco residual no domínio de pixel, por exemplo, para ser subsequentemente usado como um bloco de referência de uma imagem de referência. O somador 111 adiciona um bloco residual reconstruído ao bloco de predição gerado pelo preditor inter 110 ou pelo preditor intra 109, para gerar um bloco de imagem reconstruído. A unidade de filtro 106 é aplicável ao bloco de imagem reconstruído para reduzir a distorção, por exemplo, um artefato de bloco (artefatos de bloco). Em seguida, o bloco de imagem reconstruído é usado como um bloco de referência e armazenado no buffer de imagem decodificada 107 e pode ser usado pelo preditor inter 110 como um bloco de referência para realizar predição inter em um bloco em um quadro ou imagem de vídeo subsequente.
[0178] Deve ser entendido que outras variantes estruturais do codificador de vídeo 100 podem ser usadas para codificar um vídeo atual. Por exemplo, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 100 pode diretamente quantizar um sinal residual, o processamento pelo transformador 101 não é exigido e, correspondentemente, o processamento pelo transformador inverso 105 também não é exigido. Alternativamente, para alguns blocos de imagem ou quadros de imagem, o codificador de vídeo 100 não gera dados residuais e, correspondentemente, o processamento pelo transformador 101, pelo quantizador 102, pelo quantizador inverso 104 e pelo transformador inverso 105 não é exigido. Alternativamente, o codificador de vídeo 100 pode diretamente armazenar o bloco de imagem reconstruído como o bloco de referência e o processamento pela unidade de filtro 106 não é exigido. Alternativamente, o quantizador 102 e o quantizador inverso 104 no codificador de vídeo 100 podem ser combinados.
[0179] A FIG. 3 é um diagrama de bloco de um exemplo de um decodificador de vídeo 200, de acordo com uma modalidade deste pedido. No exemplo na FIG. 3, o decodificador de vídeo 200 inclui um decodificador de entropia 203, uma unidade de processamento de predição 208, um quantizador inverso 204, um transformador inverso 205, um somador 211, uma unidade de filtro 206 e um DPB 207. A unidade de processamento de predição 208 pode incluir um preditor inter 210 e um preditor intra 209. Em alguns exemplos, o decodificador de vídeo 200 pode realizar um processo de decodificação que é aproximadamente inverso ao processo de codificação descrito com referência ao codificador de vídeo 100 na FIG. 2.
[0180] Durante a decodificação, o decodificador de vídeo 200 recebe, do codificador de vídeo 100, um fluxo de bits de vídeo codificado que representa um bloco de imagem em uma fatia de vídeo codificada e um elemento de sintaxe associado. O decodificador de vídeo 200 pode receber dados de vídeo de uma entidade de rede 42 e, opcionalmente, pode armazenar adicionalmente os dados de vídeo em uma memória de dados de vídeo (que não é mostrada na figura). A memória de dados de vídeo pode armazenar dados de vídeo, por exemplo, o fluxo de bits de vídeo codificado, que é para ser decodificado por um componente do decodificador de vídeo 200. Os dados de vídeo armazenados na memória de dados de vídeo podem ser obtidos a partir de, por exemplo, uma fonte de vídeo local, tal como o aparelho de armazenamento 40 ou uma câmera através de comunicação de rede com fio ou sem fio dos dados de vídeo ou acessando uma mídia de armazenamento de dados físicos. A memória de dados de vídeo pode ser usada como um buffer de imagem decodificada (CPB) para armazenar dados de vídeo codificados do fluxo de bits de vídeo codificado. Portanto, embora a memória de dados de vídeo não seja mostrada na FIG. 3, a memória de dados de vídeo e o DPB 207 podem ser uma mesma memória ou podem ser memórias que estão dispostas separadamente. A memória de dados de vídeo e o DPB 207, cada um, podem incluir qualquer um de uma pluralidade de tipos de aparelhos de memória, por exemplo, uma memória de acesso aleatório dinâmica (DRAM) incluindo uma DRAM síncrona (SDRAM), uma RAM magnética (MRAM), uma RAM resistiva (RRAM) ou outro tipo de aparelho de memória. Em vários exemplos, a memória de dados de vídeo pode ser integrada em um chip junto com outros componentes do decodificador de vídeo 200 ou pode estar disposta fora do chip em relação a estes componentes.
[0181] A entidade de rede 42 pode ser, por exemplo, um servidor, um MANE, um editor/divisor de vídeo ou outro aparelho configurado para implementar uma ou mais das tecnologias descritas acima. A entidade de rede 42 pode ou não pode incluir um codificador de vídeo, por exemplo, o codificador de vídeo 100. Antes da entidade de rede 42 enviar o fluxo de bits de vídeo codificado para o decodificador de vídeo 200, a entidade de rede 42 pode implementar uma parte das tecnologias descritas neste pedido. Em alguns sistemas de decodificação de vídeo, a entidade de rede 42 e o decodificador de vídeo 200 podem ser componentes de aparelhos separados. Em outros casos, as funções da entidade de rede 42 podem ser realizadas por um mesmo aparelho incluindo o decodificador de vídeo 200. Em alguns casos, a entidade de rede 42 pode ser um exemplo do aparelho de armazenamento 40 na FIG. 1.
[0182] O decodificador de entropia 203 no decodificador de vídeo 200 realiza a decodificação de entropia no fluxo de bits para gerar um coeficiente quantizado e alguns elementos de sintaxe. O decodificador de entropia 203 encaminha os elementos de sintaxe para a unidade de processamento de predição 208. O decodificador de vídeo 200 pode receber elementos de sintaxe em um nível de fatia de vídeo e/ou um nível de bloco de imagem.
[0183] Quando a fatia de vídeo é decodificada em uma fatia decodificada intra (I), o preditor intra 209 na unidade de processamento de predição 208 pode gerar um bloco de predição de um bloco de imagem na fatia de vídeo atual com base em um modo de predição intra sinalizado e dados de um bloco previamente decodificado de um quadro ou imagem atual. Quando a fatia de vídeo é decodificada em uma fatia decodificada inter (isto é, B ou P), o preditor inter 210 na unidade de processamento de predição 208 pode determinar, com base nos elementos de sintaxe recebidos do decodificador de entropia 203, um modo de predição inter usado para decodificar um bloco de imagem atual na fatia de vídeo atual, e decodificar (por exemplo, realizar a predição inter) o bloco de imagem atual com base no modo de predição inter determinado. Especificamente, o preditor inter 210 pode determinar se um novo modo de predição inter é usado para prever o bloco de imagem atual na fatia de vídeo atual. Se o elemento de sintaxe indicar que um novo modo de predição inter é usado para prever o bloco de imagem atual, informações de movimento do bloco de imagem atual na fatia de vídeo atual ou informações de movimento de um sub-bloco do bloco de imagem atual são preditas com base no novo modo de predição inter (por exemplo, um novo modo de predição inter especificado por meio do uso de um elemento de sintaxe ou um novo modo de predição inter padrão), e um bloco de predição do bloco de imagem atual ou um bloco de predição do sub-bloco do bloco de imagem atual é obtido ou gerado, em um processo de compensação de movimento, por meio do uso das informações de movimento que são do bloco de imagem atual ou do sub-bloco do bloco de imagem atual e que são preditas. As informações de movimento neste relatório podem incluir informações de imagem de referência e um vetor de movimento. As informações de imagem de referência podem incluir, mas não são limitadas às informações unipredição/bipredição, um número de listas de imagens de referência e um índice de imagem de referência correspondente a uma lista de imagens de referência. Para predição inter, o bloco de predição pode ser gerado de uma das imagens de referência em uma das listas de imagens de referência. O decodificador de vídeo 200 pode construir as listas de imagens de referência, isto é, uma lista 0 e uma lista 1, com base em imagens de referência armazenadas no DPB 207. Um índice de quadro de referência de uma imagem atual pode ser incluído em um ou tanto em uma lista de quadros de referência 0 quanto uma lista de quadros de referência 1. Em alguns exemplos, o codificador de vídeo 100 pode sinalizar se um novo modo de predição inter é usado para decodificar um elemento de sintaxe específico de um bloco específico, ou sinalizar se um novo modo de predição inter é usado e que o novo modo de predição inter é usado para decodificar um elemento de sintaxe específico de um bloco específico. Deve ser entendido que o preditor inter 210 neste relatório realiza o processo de compensação de movimento.
[0184] O quantizador inverso 204 realiza a quantização inversa, isto é, desquantiza um coeficiente de transformada quantizado fornecido no fluxo de bits e decodificado pelo decodificador de entropia 203. Um processo de quantização inverso pode incluir: determinar um grau de quantização a ser aplicado por meio do uso de um parâmetro de quantização calculado pelo codificador de vídeo 100 para cada bloco de imagem na fatia de vídeo, e determinar um grau de quantização inversa a ser aplicado de uma mesma maneira. O transformador inverso 205 realiza transformada inversa, por exemplo, DCT inversa, transformada inteira inversa ou um processo de transformada inversa conceitualmente similar, no coeficiente de transformada para gerar um bloco residual de domínio de pixel.
[0185] Depois do preditor inter 210 gerar o bloco de predição para o bloco de imagem atual ou para o sub-bloco do bloco de imagem atual, o decodificador de vídeo 200 adiciona o bloco residual do transformador inverso 205 e o bloco de predição correspondente gerado pelo preditor inter 210, para obter um bloco reconstruído, isto é, um bloco de imagem decodificado. O somador 211 representa um componente que realiza a operação de soma. Quando necessário, um filtro loop (em um loop de decodificação ou depois de um loop de decodificação) pode ser usado adicionalmente para suavizar transições de pixel ou melhorar a qualidade de vídeo de outra maneira. A unidade de filtro 206 pode representar um ou mais filtros loop, por exemplo, um filtro de desbloqueio, um filtro loop adaptativo (ALF) e um filtro de deslocamento adaptativo de amostra (SAO). Embora a unidade de filtro 206 seja mostrada como um filtro no loop na FIG. 2, em outra implementação, a unidade de filtro 206 pode ser implementada como um filtro de pós-loop. Em um exemplo, a unidade de filtro 206 é aplicável a um bloco reconstruído para reduzir a distorção de bloco e o resultado é emitido como um vídeo atual decodificado. Além disso, um bloco de imagem decodificado em um determinado quadro ou imagem pode ser armazenado adicionalmente no DPB 207 e o DPB 207 armazena uma imagem de referência usada para a compensação de movimento subsequente. O DPB 207 pode ser uma parte de uma memória e pode armazenar adicionalmente um vídeo decodificado para apresentação subsequente em um aparelho de exibição (por exemplo, o aparelho de exibição 220 na FIG. 1). Alternativamente, o DPB 207 pode ser separado de tal memória.
[0186] Deve ser entendido que outras variantes estruturais do decodificador de vídeo 200 podem ser usadas para decodificar o fluxo de bits de vídeo codificado. Por exemplo, o decodificador de vídeo 200 pode gerar um vídeo atual de saída e o processamento pela unidade de filtro 206 não é exigido. Alternativamente, para alguns blocos de imagem ou quadros de imagem, o decodificador de entropia 203 no decodificador de vídeo 200 não obtém um coeficiente quantizado através de decodificação e, correspondentemente, o processamento pelo quantizador inverso 204 e pelo transformador inverso 205 não é exigido.
[0187] Como descrito acima, as tecnologias neste pedido referem- se, por exemplo, à decodificação inter. Deve ser entendido que as tecnologias neste pedido podem ser realizadas por qualquer um codec de vídeo descrito neste pedido, e o decodificador de vídeo inclui (por exemplo) o codificador de vídeo 100 e o decodificador de vídeo 200 mostrados e descritos na FIG. 1 a
FIG. 3. Para ser específico, em uma implementação viável, o preditor inter 110 descrito na FIG. 2 pode realizar uma tecnologia particular descrita abaixo quando a predição inter é realizada durante a codificação de um bloco de dados de vídeo. Em outra implementação viável, o preditor inter 210 descrito na FIG. 3 pode realizar uma tecnologia particular descrita abaixo quando a predição inter é realizada durante a decodificação de um bloco de dados de vídeo. Portanto, uma referência a um “codificador de vídeo” ou “decodificador de vídeo” geral pode incluir o codificador de vídeo 100, o decodificador de vídeo 200 ou outra unidade de codificação de vídeo ou unidade de decodificação.
[0188] Deve ser entendido que, no codificador 100 e no decodificador 200 neste pedido, um resultado de processamento de uma etapa pode ser processado adicionalmente e, em seguida, emitido para uma próxima etapa. Por exemplo, depois de uma etapa, tal como filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como recorte ou deslocamento, são realizados em um resultado de processamento da etapa correspondente.
[0189] Por exemplo, um valor de um vetor de movimento é restrito a estar dentro de uma faixa de profundidade de bits específica. Assumindo que uma profundidade de bits permitida de um vetor de movimento é bitDepth, o valor do vetor de movimento varia de -2^(bitDepth - 1) para 2^(bitDepth - 1) - 1, onde o símbolo “^” representa exponenciação. Se bitDepth for 16, o valor varia de -32768 a 32767. Se bitDepth for 18, o valor varia de -131072 a 131071. O valor do vetor de movimento pode ser restrito em uma das duas maneiras seguintes:
[0190] Maneira 1: Um extravasamento de bits mais significantes do vetor de movimento é removido: = ( vx + 2bitDepth ) % 2bitDepth ux ( ux ≥ 2bitDepth −1 ) ? (ux − 2bitDepth ) : ux vx = = ( vy + 2bitDepth ) % 2bitDepth uy ( uy ≥ 2bit Depth −1 ) ? (uy − 2bit Depth ) : uy vy =
[0191] Por exemplo, um valor de vx é -32769, e 32767 é derivado,
de acordo com as fórmulas anteriores. Um valor é armazenado em um computador em uma representação de complemento de dois, uma representação de complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), e o processamento realizado pelo computador para o extravasamento é descartando um bit mais significante. Portanto, um valor de vx é 0111,1111,1111,1111, isto é, 32767. Este valor é compatível com o resultado derivado através do processamento, de acordo com as fórmulas.
[0192] Maneira 2: O recorte é realizado no vetor de movimento, e as seguintes fórmulas são usadas: Clip3(−2bitDepth −1 , 2bitDepth −1 − 1, vx) vx = Clip3(−2bitDepth −1 , 2bitDepth −1 − 1, vy ) vy =
[0193] Nas fórmulas anteriores, Clip3 é definido como o recorte de um valor de z para uma faixa [x, y].  x; z < x  Clip3 ( x, y= , z )  y; z > y  z; otherwise  de outro modo
[0194] A FIG. 4 é um diagrama esquemático de bloco de um módulo de predição inter 121, de acordo com uma modalidade deste pedido. Por exemplo, o módulo de predição inter 121 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento. Um relacionamento entre uma PU e uma CU varia com um padrão de codificação de compressão de vídeo. O módulo de predição inter 121 pode particionar uma CU atual em PUs com base em uma pluralidade de modos de particionamento. Por exemplo, o módulo de predição inter 121 pode particionar a CU atual em PUs com base em modos de particionamento 2N × 2N, 2N × N, N × 2N, e N × N. Em outra modalidade, a CU atual é uma PU atual. Isto não é limitado.
[0195] O módulo de predição inter 121 pode realizar a estimativa de movimento inteiro (Integer Motion Estimation, IME) e, em seguida, a estimativa de movimento de fração (Fraction Motion Estimation, FME) em cada PU. Quando o módulo de predição inter 121 realiza IME na PU, o módulo de predição inter 121 pode pesquisar uma ou mais imagens de referência para um bloco de referência da PU. Depois da descoberta do bloco de referência da PU, o módulo de predição inter 121 pode gerar um vetor de movimento que indica,
com precisão inteira, um deslocamento espacial entre a PU e o bloco de referência da PU. Quando o módulo de predição inter 121 realiza FME na PU, o módulo de predição inter 121 pode melhorar o vetor de movimento gerado para realizar IME na PU. O vetor de movimento gerado para realizar FME na PU pode ter precisão sub-inteira (por exemplo, 1/2 precisão de amostra ou 1/4 de precisão de amostra). Depois de gerar o vetor de movimento para a PU, o módulo de predição inter 121 pode gerar um bloco de imagem de predição da PU por meio do uso do vetor de movimento da PU.
[0196] Em algumas implementações viáveis em que o módulo de predição inter 121 sinaliza informações de movimento da PU para um lado do decodificador com base em um modo AMVP, o módulo de predição inter 121 pode gerar uma lista de vetores de movimento preditos candidatos para a PU. A lista de vetores de movimento preditos candidatos pode incluir um ou mais vetores de movimento preditos candidatos originais e um ou mais vetores de movimento preditos candidatos adicionais derivado de um ou mais vetores de movimento preditos candidatos originais. Depois de gerar a lista de vetores de movimento preditos candidatos para a PU, o módulo de predição inter 121 pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos e gerar uma diferença de vetor de movimento (MVD) para a PU. A MVD para a PU pode indicar uma diferença entre um vetor de movimento indicada pelo vetor de movimento predito candidato selecionado e o vetor de movimento gerado para a PU através de IME e FME. Nestas implementações viáveis, o módulo de predição inter 121 pode emitir um índice de vetor de movimento predito candidato usado para identificar uma posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos. O módulo de predição inter 121 pode emitir adicionalmente a MVD para a PU. O seguinte descreve em detalhes uma implementação viável do modo de predição de vetor de movimento avançado (AMVP) na FIG. 6 nesta modalidade deste pedido.
[0197] Além de realizar IME e FME na PU para gerar as informações de movimento da PU, o módulo de predição inter 121 pode realizar adicionalmente uma operação de mesclagem (Merge) em cada PU. Quando o módulo de predição inter 121 realiza a operação de mesclagem na PU, o módulo de predição inter 121 pode gerar uma lista de vetores de movimento preditos candidatos para a PU. A lista de vetores de movimento preditos candidatos para a PU pode incluir um ou mais vetores de movimento preditos candidatos originais e um ou mais vetores de movimento preditos candidatos adicionais derivados de um ou mais vetores de movimento preditos candidatos originais. Os vetores de movimento preditos candidatos originais na lista de vetores de movimento preditos candidatos podem incluir um ou mais vetores de movimento preditos candidatos espaciais e vetores de movimento preditos candidatos temporais. O vetor de movimento predito candidato espacial pode indicar informações de movimento de outra PU de uma imagem atual. O vetor de movimento predito candidato temporal pode ser baseado em informações de movimento de uma PU correspondente de uma imagem diferente da imagem atual. O vetor de movimento predito candidato temporal também pode ser referido como predição de vetor de movimento temporal (TMVP).
[0198] Depois de gerar a lista de vetores de movimento preditos candidatos, o módulo de predição inter 121 pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos. Em seguida, o módulo de predição inter 121 pode gerar um bloco de imagem de predição da PU com base em um bloco de referência indicado pelas informações de movimento da PU. Em um modo de mesclagem, as informações de movimento da PU podem ser iguais às informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. A FIG. 5 descrita abaixo é um fluxograma de um exemplo do modo de mesclagem.
[0199] Depois de gerar o bloco de imagem de predição da PU através de IME e FME e gerar o bloco de imagem de predição da PU através da operação de mesclagem, o módulo de predição inter 121 pode selecionar o bloco de imagem de predição gerado através da operação FME ou o bloco de imagem de predição gerado através da operação de mesclagem. Em algumas implementações viáveis, o módulo de predição inter 121 pode selecionar o bloco de imagem de predição da PU analisando os custos de distorção de taxa do bloco de imagem de predição gerado através da operação FME e o bloco de imagem de predição gerado através da operação de mesclagem.
[0200] Depois do módulo de predição inter 121 ter selecionado um bloco de imagem de predição de uma PU gerado pelo particionamento da CU atual com base em cada modo de particionamento (em algumas implementações, depois de uma unidade de árvore de codificação CTU ser dividida em CUs, uma CU não é dividida adicionalmente em PUs menores e, neste caso, uma PU é equivalente a uma CU), o módulo de predição inter 121 pode selecionar um modo de particionamento para a CU atual. Em algumas implementações, o módulo de predição inter 121 pode selecionar o modo de particionamento para a CU atual analisando um custo de distorção de taxa do bloco de imagem de predição selecionado da PU gerada pelo particionamento da CU atual com base em cada modo de particionamento. O módulo de predição inter 121 pode emitir um bloco de imagem de predição associado a uma PU que pertence ao modo de particionamento selecionado para um módulo de geração residual 102. O módulo de predição inter 121 pode emitir, para um módulo de codificação de entropia, um elemento de sintaxe indicando informações de movimento da PU que pertencem ao modo de particionamento selecionado.
[0201] No diagrama esquemático na FIG. 4, o módulo de predição inter 121 inclui módulos IME 180A a 180N (coletivamente referidos como um “módulo IME 180”), módulos FME 182A a 182N (coletivamente referidos como um “módulo FME 182”), módulos de mesclagem 184A a 184N (coletivamente referidos como um “módulo de mesclagem 184”), módulos de tomada de decisão no modo PU 186A a 186N (coletivamente referidos como um “módulo de tomada de decisão no modo PU 186”) e um módulo de tomada de decisão no modo CU 188 (e pode realizar adicionalmente um processo de tomada de decisão no modo CTU para CU).
[0202] O módulo IME 180, o módulo FME 182 e o módulo de mesclagem 184 podem realizar, respectivamente, uma operação IME, uma operação FME e uma operação de mesclagem na PU da CU atual. No diagrama esquemático na FIG. 4, o módulo de predição inter 121 é descrito como incluindo um módulo IME 180 separado, um módulo FME 182 separado e um módulo de mesclagem 184 separado para cada PU em cada modo de particionamento para a CU. Em outra implementação viável, o módulo de predição inter 121 não inclui um módulo IME 180 separado, um módulo FME 182 separado ou um módulo de mesclagem 184 separado para cada PU em cada modo de particionamento para a CU.
[0203] Como ilustrado no diagrama esquemático na FIG. 4, o módulo IME 180A, o módulo FME 182A e o módulo de mesclagem 184A podem realizar, respectivamente, uma operação IME, uma operação FME e uma operação de mesclagem em uma PU gerada pelo particionamento da CU com base no modo de particionamento 2N × 2N. O módulo de tomada de decisão no modo PU 186A pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180A, pelo módulo FME 182A e pelo módulo de mesclagem 184A.
[0204] O módulo IME 180B, o módulo FME 182B e o módulo de mesclagem 184B podem realizar, respectivamente, uma operação IME, uma operação FME e uma operação de mesclagem na PU esquerda gerada pelo particionamento da CU com base no modo de particionamento N × 2N. O módulo de tomada de decisão no modo PU 186B pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180B, pelo módulo FME 182B e pelo módulo de mesclagem 184B.
[0205] O módulo IME 180C, o módulo FME 182C e o módulo de mesclagem 184C podem realizar, respectivamente, uma operação IME, uma operação FME e uma operação de mesclagem na PU direita gerada pelo particionamento da CU com base no modo de particionamento N × 2N. O módulo de tomada de decisão no modo PU 186C pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180C, pelo módulo FME 182C e pelo módulo de mesclagem 184C.
[0206] O módulo IME 180N, o módulo FME 182N e o módulo de mesclagem 184N podem realizar, respectivamente, uma operação IME, uma operação FME e uma operação de mesclagem na PU inferior direita gerada pelo particionamento da CU com base no modo de particionamento N × N. O módulo de tomada de decisão no modo PU 186N pode selecionar um dos blocos de imagem de predição gerados pelo módulo IME 180N, pelo módulo FME 182N e pelo módulo de mesclagem 184N.
[0207] O módulo de tomada de decisão no modo PU 186 pode selecionar um bloco de imagem de predição analisando os custos de distorção de taxa de uma pluralidade de possíveis blocos de imagem de predição e selecionar um bloco de imagem de predição que fornece um custo de distorção de taxa ideal em um determinado cenário de decodificação. Por exemplo, para uma aplicação com largura de banda limitada, o módulo de tomada de decisão no modo PU 186 pode preferir selecionar um bloco de imagem de predição para o qual uma relação de compressão é aumentada e, para outra aplicação, o módulo de tomada de decisão no modo PU 186 pode preferir selecionar um bloco de imagem de predição para o qual a qualidade de um vídeo reconstruído é melhorada. Depois de o módulo de tomada de decisão no modo PU 186 selecionar os blocos de imagem de predição para as PUs na CU atual, o módulo de tomada de decisão no modo CU 188 seleciona o modo de particionamento para a CU atual e emite o bloco de imagem de predição e informações de movimento da PU que pertencem ao modo de particionamento selecionado.
[0208] A FIG. 5 é um fluxograma de uma implementação de um modo de mesclagem, de acordo com uma modalidade deste pedido. Um codificador de vídeo (por exemplo, o codificador de vídeo 100) pode realizar uma operação de mesclagem 201. A operação de mesclagem 201 pode incluir: S202: Gerar uma lista de candidatos para uma unidade de predição atual. S204: Gerar um bloco de vídeo de predição associado a um candidato na lista de candidatos. S206: Selecionar um candidato da lista de candidatos. S208: Emitir o candidato. O candidato é um vetor de movimento candidato ou informações de movimento candidatas.
[0209] Em outra implementação viável, o codificador de vídeo pode realizar uma operação de mesclagem diferente da operação de mesclagem
201. Por exemplo, em outra implementação viável, o codificador de vídeo pode realizar uma operação de mesclagem. Neste caso, o codificador de vídeo realiza mais ou menos etapas do que as etapas da operação de mesclagem 201 ou etapas diferentes das etapas da operação de mesclagem 201. Em outra implementação viável, o codificador de vídeo pode realizar as etapas da operação de mesclagem 201 em diferentes ordens ou em paralelo. O codificador pode realizar adicionalmente a operação de mesclagem 201 em uma PU codificada com base em um modo de salto (skip).
[0210] Depois do codificador de vídeo iniciar a operação de mesclagem 201, o codificador de vídeo pode gerar uma lista de vetores de movimento preditos candidatos para a PU atual (S202). O codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual por meio do uso de uma das tecnologias do exemplo descrito abaixo com referência a FIG. 8 a FIG. 12.
[0211] Como descrito acima, a lista de vetores de movimento preditos candidatos para a PU atual pode incluir um vetor de movimento predito candidato temporal. O vetor de movimento predito candidato temporal pode indicar informações de movimento de uma PU correspondente temporal (colocalizada). A PU colocalizada pode estar espacialmente localizada em uma mesma posição como a PU atual de um quadro de imagem, mas em uma imagem de referência em vez de uma imagem atual. Neste pedido, a imagem de referência incluindo a PU correspondente temporal pode ser referida como uma imagem de referência associada. Neste pedido, um índice de imagem de referência da imagem de referência associada pode ser referido como um índice de imagem de referência associado. Como descrito acima, a imagem atual pode estar associada a uma ou mais listas de imagens de referência (por exemplo, uma lista 0 e uma lista 1). O índice de imagem de referência pode indicar a imagem de referência indicando uma posição da imagem de referência em uma lista de imagens de referência. Em algumas implementações viáveis, a imagem atual pode estar associada a uma lista de imagens de referência combinada.
[0212] Em alguns codificadores de vídeo, o índice de imagem de referência associado é um índice de imagem de referência de uma PU que cobre uma posição de fonte de índice de referência associada a PU atual. Nestes codificadores de vídeo, a posição de fonte de índice de referência associada com a PU atual é adjacente a PU atual na esquerda da PU atual ou acima da PU atual. Neste pedido, se um bloco de imagem associado a uma PU incluir uma posição específica, a PU pode “cobrir” a posição específica. Nestes codificadores de vídeo, o codificador de vídeo pode usar um índice de imagem de referência 0 se a posição de fonte de índice de referência estiver indisponível.
[0213] Entretanto, em alguns exemplos, a posição de fonte de índice de referência associada a PU atual está dentro de uma CU atual. Nestes exemplos, uma PU que cobre a posição de fonte de índice de referência associada a PU atual pode ser considerada para ser disponível se a PU estiver acima ou na esquerda da CU atual. Neste caso, o codificador de vídeo pode precisar acessar informações de movimento de outra PU da CU atual para determinar a imagem de referência incluindo a PU colocalizada. Portanto, estes codificadores de vídeo podem usar informações de movimento (isto é, um índice de imagem de referência) de uma PU que pertence a CU atual, para gerar o vetor de movimento predito candidato temporal para a PU atual. Em outras palavras, estes codificadores de vídeo podem usar as informações de movimento da PU que pertencem a CU atual, para gerar o vetor de movimento predito candidato temporal. Portanto, o codificador de vídeo pode ser incapaz de gerar, em paralelo, as listas de vetores de movimento preditos candidatos para a PU atual e a PU que cobre a posição de fonte de índice de referência associada a PU atual.
[0214] De acordo com as tecnologias neste pedido, o codificador de vídeo pode explicitamente definir o índice de imagem de referência associado sem fazer referência a um índice de imagem de referência de qualquer outra PU. Desta maneira, o codificador de vídeo pode gerar, em paralelo, as listas de vetores de movimento preditos candidatos para a PU atual e outra PU da CU atual. Pelo fato de que o codificador de vídeo explicitamente define o índice de imagem de referência associado, o índice de imagem de referência associado não é baseado em informações de movimento de qualquer outra PU da CU atual. Em algumas implementações viáveis em que o codificador de vídeo explicitamente define o índice de imagem de referência associado, o codificador de vídeo pode sempre definir o índice de imagem de referência associado a um índice de imagem de referência fixo, predefinido e pré-ajustado (por exemplo, 0). Desta maneira, o codificador de vídeo pode gerar um vetor de movimento predito candidato temporal com base em informações de movimento de uma PU colocalizada em um quadro de referência indicado pelo índice de imagem de referência predefinido, onde o vetor de movimento predito candidato temporal pode estar incluído em uma lista de vetores de movimento preditos candidatos para a CU atual.
[0215] Em uma implementação viável em que o codificador de vídeo explicitamente define o índice de imagem de referência associado, o codificador de vídeo pode explicitamente sinalizar o índice de imagem de referência associado em uma estrutura de sintaxe (por exemplo, um cabeçalho de imagem, um cabeçalho de fatia, um APS ou outra estrutura de sintaxe). Nesta implementação viável, o codificador de vídeo pode sinalizar um índice de imagem de referência associado de cada LCU (isto é, uma CTU), CU, PU, TU ou outro tipo de sub-bloco para um lado do decodificador. Por exemplo, o codificador de vídeo pode sinalizar que um índice de imagem de referência associado de cada PU da CU é igual a “1”.
[0216] Em algumas implementações viáveis, o índice de imagem de referência associado pode ser definido implicitamente em vez de explicitamente. Nestas implementações viáveis, o codificador de vídeo pode gerar cada vetor de movimento predito candidato temporal na lista de vetores de movimento preditos candidatos para a PU da CU atual por meio do uso de informações de movimento de uma PU em uma imagem de referência indicada por um índice de imagem de referência de uma PU que cobre posições fora da CU atual, mesmo se estas posições não estiverem estritamente adjacentes a PU atual.
[0217] Depois de gerar a lista de vetores de movimento preditos candidatos para a PU atual, o codificador de vídeo pode gerar um bloco de imagem de predição associado a um vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos (S204). O codificador de vídeo pode determinar informações de movimento da PU atual com base em informações de movimento de um vetor de movimento predito candidato indicado e, em seguida, gerar um bloco de imagem de predição com base em um ou mais blocos de referência indicados pelas informações de movimento da PU atual, para gerar um bloco de imagem de predição associado ao vetor de movimento predito candidato. Em seguida, o codificador de vídeo pode selecionar um vetor de movimento predito candidato da lista de vetores de movimento preditos candidatos (S206). O codificador de vídeo pode selecionar o vetor de movimento predito candidato de várias maneiras. Por exemplo, o codificador de vídeo pode selecionar um vetor de movimento predito candidato analisando um custo de distorção de taxa de cada um dos blocos de imagem de predição associados aos vetores de movimento preditos candidatos.
[0218] Depois de selecionar o vetor de movimento predito candidato, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato (S208). O índice de vetor de movimento predito candidato pode indicar uma posição do vetor de movimento predito candidato selecionado na lista de vetores de movimento preditos candidatos. Em algumas implementações viáveis, o índice de vetor de movimento predito candidato pode ser representado como “merge_idx”.
[0219] A FIG. 6 é um fluxograma de uma implementação de um modo de predição de vetor de movimento avançado (AMVP), de acordo com uma modalidade deste pedido. Um codificador de vídeo (por exemplo, o codificador de vídeo 100) pode realizar uma operação 210 AMVP. A operação 210 AMVP pode incluir: S211: Gerar um ou mais vetores de movimento para uma unidade de predição atual. S212: Gerar um bloco de vídeo de predição para a unidade de predição atual. S213: Gerar uma lista de candidatos para a unidade de predição atual. S214: Gerar uma diferença de vetor de movimento. S215: Selecionar um candidato da lista de candidatos. S216: Emitir um índice de imagem de referência, um índice de candidato e uma diferença de vetor de movimento que são usados para o candidato selecionado. O candidato é um vetor de movimento candidato ou informações de movimento candidatas.
[0220] Depois do codificador de vídeo iniciar a operação 210 AMVP, o codificador de vídeo pode gerar um ou mais vetores de movimento para a PU atual (S211). O codificador de vídeo pode realizar a estimativa de movimento inteira e a estimativa de movimento de fração para gerar o vetor de movimento para a PU atual. Como descrito acima, uma imagem atual pode estar associada a duas listas de imagens de referência (uma lista 0 e uma lista 1). Se a PU atual for predita unidirecionalmente, o codificador de vídeo pode gerar um vetor de movimento de lista 0 ou um vetor de movimento de lista 1 para a PU atual. O vetor de movimento de lista 0 pode indicar um deslocamento espacial entre um bloco de imagem correspondente para a PU atual e um bloco de referência em uma imagem de referência na lista 0. O vetor de movimento de lista 1 pode indicar um deslocamento espacial entre o bloco de imagem correspondente a PU atual e um bloco de referência em uma imagem de referência na lista 1. Se a PU atual for predita bidirecionalmente, o codificador de vídeo pode gerar um vetor de movimento de lista 0 e um vetor de movimento de lista 1 para a PU atual.
[0221] Depois de gerar um ou mais vetores de movimento para a PU atual, o codificador de vídeo pode gerar o bloco de imagem de predição para a PU atual (S212). O codificador de vídeo pode gerar o bloco de imagem de predição para a PU atual com base em um ou mais blocos de referência indicados por um ou mais vetores de movimento da PU atual.
[0222] Além disso, o codificador de vídeo pode gerar uma lista de vetores de movimento preditos candidatos para a PU atual (S213). O codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o codificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual por meio do uso de uma ou mais das implementações viáveis descritas abaixo com referência a FIG. 8 a FIG. 12. Em algumas implementações viáveis, quando o codificador de vídeo gera a lista de vetores de movimento preditos candidatos na operação 210 AMVP, a lista de vetores de movimento preditos candidatos pode estar limitada a dois vetores de movimento preditos candidatos. Ao contrário, quando o codificador de vídeo gera a lista de vetores de movimento preditos candidatos em uma operação de mesclagem, a lista de vetores de movimento preditos candidatos pode incluir mais vetores de movimento preditos candidatos (por exemplo, cinco vetores de movimento preditos candidatos).
[0223] Depois de gerar a lista de vetores de movimento preditos candidatos para a PU atual, o codificador de vídeo pode gerar uma ou mais diferenças de vetor de movimento (MVD) para cada vetor de movimento predito candidato na lista de vetores de movimento preditos candidatos (S214). O codificador de vídeo pode determinar uma diferença entre um vetor de movimento indicada por um vetor de movimento predito candidato e um vetor de movimento correspondente da PU atual, para gerar uma diferença de vetor de movimento para o vetor de movimento predito candidato.
[0224] Se a PU atual for predita unidirecionalmente, o codificador de vídeo pode gerar uma única MVD para cada vetor de movimento predito candidato. Se a PU atual for predita direcionalmente, o codificador de vídeo pode gerar duas MVDs para cada vetor de movimento predito candidato. Uma primeira MVD pode indicar uma diferença entre um vetor de movimento indicada pelo vetor de movimento predito candidato e pelo vetor de movimento de lista 0 da PU atual. Uma segunda MVD pode indicar uma diferença entre um vetor de movimento indicada pelo vetor de movimento predito candidato e pelo vetor de movimento de lista 1 da PU atual.
[0225] O codificador de vídeo pode selecionar um ou mais vetores de movimento preditos candidatos da lista de vetores de movimento preditos candidatos (S215). O codificador de vídeo pode selecionar um ou mais vetores de movimento preditos candidatos de várias maneiras. Por exemplo, o codificador de vídeo pode selecionar um vetor de movimento predito candidato que corresponde, com um erro mínimo, a um vetor de movimento associado a um vetor de movimento a ser codificado. Isto pode reduzir uma quantidade de bits exigida para representar uma diferença de vetor de movimento para o vetor de movimento predito candidato.
[0226] Depois de selecionar um ou mais vetores de movimento preditos candidatos, o codificador de vídeo pode emitir um ou mais índices de imagem de referência para a PU atual, um ou mais índices de vetor de movimento preditos candidatos para a PU atual, e uma ou mais diferenças de vetor de movimento para um ou mais vetores de movimento preditos candidatos selecionados (S216).
[0227] Em um exemplo em que a imagem atual é associada a duas listas de imagens de referência (a lista 0 e a lista 1) e a PU atual é predita unidirecionalmente, o codificador de vídeo pode emitir um índice de imagem de referência (“ref_idx_10”) para a lista 0 ou um índice de imagem de referência (“ref_idx_11”) para a lista 1. O codificador de vídeo pode emitir adicionalmente um índice de vetor de movimento predito candidato (“mvp_10_flag”) que indica uma posição de um vetor de movimento predito candidato selecionado para o vetor de movimento de lista 0 da PU atual na lista de vetores de movimento preditos candidatos. Alternativamente, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato (“mvp_11_flag”) que indica uma posição de um vetor de movimento predito candidato selecionado para o vetor de movimento de lista 1 da PU atual na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode emitir adicionalmente uma MVD para o vetor de movimento de lista 0 ou o vetor de movimento de lista 1 da PU atual.
[0228] Em um exemplo em que a imagem atual é associada a duas listas de imagens de referência (a lista 0 e a lista 1) e a PU atual é predita bidirecionalmente, o codificador de vídeo pode emitir um índice de imagem de referência (“ref_idx_10”) para a lista 0 e um índice de imagem de referência (“ref_idx_11”) para a lista 1. O codificador de vídeo pode emitir adicionalmente um índice de vetor de movimento predito candidato (“mvp_10_flag”) que indica uma posição de um vetor de movimento predito candidato selecionado para o vetor de movimento de lista 0 da PU atual na lista de vetores de movimento preditos candidatos. Além disso, o codificador de vídeo pode emitir um índice de vetor de movimento predito candidato (“mvp_11_flag”) que indica uma posição de um vetor de movimento predito candidato selecionado para o vetor de movimento de lista 1 da PU atual na lista de vetores de movimento preditos candidatos. O codificador de vídeo pode emitir adicionalmente uma MVD para o vetor de movimento de lista 0 da PU atual e uma MVD para o vetor de movimento de lista 1 da PU atual.
[0229] A FIG. 7 é um fluxograma de uma implementação de compensação de movimento realizada por um decodificador de vídeo (por exemplo, o decodificador de vídeo 30), de acordo com uma modalidade deste pedido.
[0230] Quando o decodificador de vídeo realiza uma operação de compensação de movimento 220, o decodificador de vídeo pode receber uma indicação usada para um vetor de movimento predito candidato selecionado de uma PU atual (S222). Por exemplo, o decodificador de vídeo pode receber um índice de vetor de movimento predito candidato indicando uma posição do vetor de movimento predito candidato selecionado em uma lista de vetores de movimento preditos candidatos para a PU atual.
[0231] Se as informações de movimento da PU atual forem codificadas com base em um modo AMVP e a PU atual for predita bidirecionalmente, o decodificador de vídeo pode receber um primeiro índice de vetor de movimento predito candidato e um segundo índice de vetor de movimento predito candidato. O primeiro índice de vetor de movimento predito candidato indica uma posição de um vetor de movimento predito candidato selecionado para um vetor de movimento de lista 0 da PU atual na lista de vetores de movimento preditos candidatos. O segundo índice de vetor de movimento predito candidato indica uma posição de um vetor de movimento predito candidato selecionado para um vetor de movimento de lista 1 da PU atual na lista de vetores de movimento preditos candidatos. Em algumas implementações viáveis, um único elemento de sintaxe pode ser usado para identificar os dois índices de vetor de movimento preditos candidatos.
[0232] Além disso, o decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual (S224). O decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual de várias maneiras. Por exemplo, o decodificador de vídeo pode gerar a lista de vetores de movimento preditos candidatos para a PU atual por meio do uso de tecnologias descritas abaixo com referência a FIG. 8 a FIG. 12. Quando o decodificador de vídeo gera um vetor de movimento predito candidato temporal para a lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode explícita ou implicitamente definir um índice de imagem de referência que identifica uma imagem de referência incluindo uma PU colocalizada, como descrito acima com referência a FIG. 5.
[0233] Depois de gerar a lista de vetores de movimento preditos candidatos para a PU atual, o decodificador de vídeo pode determinar as informações de movimento da PU atual com base em informações de movimento indicadas por um ou mais vetores de movimento preditos candidatos selecionados na lista de vetores de movimento preditos candidatos para a PU atual (S225). Por exemplo, se as informações de movimento da PU atual forem codificadas com base em um modo de mesclagem, as informações de movimento da PU atual podem ser iguais às informações de movimento indicadas pelo vetor de movimento predito candidato selecionado. Se as informações de movimento da PU atual forem codificadas com base no modo AMVP, o decodificador de vídeo pode reconstruir um ou mais vetores de movimento da PU atual por meio do uso de um ou mais vetores de movimento indicados por um ou mais vetores de movimento preditos candidatos selecionados e uma ou mais MVDs indicadas em um fluxo de bits. Um índice de imagem de referência e um indicador de direção de predição da PU atual podem ser iguais a um ou mais índices de imagem de referência e indicadores de direção de predição de um ou mais vetores de movimento preditos candidatos selecionados. Depois de determinar as informações de movimento da PU atual, o decodificador de vídeo pode gerar um bloco de imagem de predição para a PU atual com base em um ou mais blocos de referência indicados pelas informações de movimento da PU atual (S226).
[0234] A FIG. 8 é um diagrama esquemático de um exemplo de uma unidade de codificação (CU) e um bloco de imagem vizinho associado à unidade de codificação (CU), de acordo com uma modalidade deste pedido. A FIG. 8 é um diagrama esquemático para descrever uma CU 250 e vetores de movimento preditos candidatos do exemplo nas posições 252A a 252E associadas a CU 250. Neste pedido, os vetores de movimento preditos candidatos nas posições 252A a 252E podem ser coletivamente referidos como um vetor de movimento predito candidato na posição 252. O vetor de movimento predito candidato na posição 252 representa um vetor de movimento predito candidato espacial que está em uma mesma imagem que a CU 250. O vetor de movimento predito candidato na posição 252A está localizado na esquerda da CU 250. O vetor de movimento predito candidato na posição 252B está localizado acima da CU 250. O vetor de movimento predito candidato na posição 252C está localizado na parte superior direita da CU 250. O vetor de movimento predito candidato na posição 252D está localizado na parte inferior esquerda da CU 250. O vetor de movimento predito candidato na posição 252E está localizado na parte superior esquerda da CU 250. A FIG. 8 mostra uma implementação esquemática de uma maneira em que um módulo de predição inter 121 e um módulo de compensação de movimento pode gerar as listas de vetores de movimento preditos candidatos. No seguinte, a implementação é explicada com base no módulo de predição inter 121. Entretanto, deve ser entendido que o módulo de compensação de movimento pode implementar uma mesma tecnologia e, portanto, gerar uma mesma lista de vetores de movimento preditos candidatos.
[0235] A FIG. 9 é um fluxograma de uma implementação de construção de uma lista de vetores de movimento preditos candidatos, de acordo com uma modalidade deste pedido. Uma tecnologia na FIG. 9 é descrita com base em uma lista incluindo cinco vetores de movimento preditos candidatos, mas as tecnologias descritas neste relatório descritivo podem ser alternativamente usadas com uma lista tendo outro tamanho. Os cinco vetores de movimento preditos candidatos, cada um, podem ter um índice (por exemplo, 0 a 4). A tecnologia na FIG. 9 é descrita com base em um codec de vídeo geral. O codec de vídeo geral pode ser, por exemplo, um codificador de vídeo (por exemplo, o codificador de vídeo 100) ou um decodificador de vídeo (por exemplo, o decodificador de vídeo 30).
[0236] Para reconstruir uma lista de vetores de movimento preditos candidatos, de acordo com a implementação da FIG. 9, o decodificador de vídeo primeiro considera quatro vetores de movimento preditos candidatos espaciais (902). Os quatro vetores de movimento preditos candidatos espaciais podem incluir vetores de movimento preditos candidatos nas posições 252A, 252B, 252C e 252D. Os quatro vetores de movimento preditos candidatos espaciais podem corresponder às informações de movimento de quatro PUs que estão localizadas em uma mesma imagem como uma CU atual (por exemplo, uma CU 250). O decodificador de vídeo pode considerar os quatro vetores de movimento preditos candidatos espaciais na lista em uma ordem especificada. Por exemplo, o vetor de movimento predito candidato na posição 252A pode ser considerado primeiro. Se o vetor de movimento predito candidato na posição 252A estiver disponível, um índice 0 pode ser atribuído ao vetor de movimento predito candidato na posição 252A. Se o vetor de movimento predito candidato na posição 252A estiver indisponível, o decodificador de vídeo pode pular a adição do vetor de movimento predito candidato na posição 252A à lista de vetores de movimento preditos candidatos. Um vetor de movimento predito candidato na posição pode estar indisponível por vários motivos. Por exemplo, se o vetor de movimento predito candidato na posição não estiver dentro de uma imagem atual, o vetor de movimento predito candidato na posição pode estar indisponível. Em outra implementação viável, se o vetor de movimento predito candidato na posição sofrer predição intra, o vetor de movimento predito candidato na posição pode estar indisponível. Em outra implementação viável, se o vetor de movimento predito candidato na posição estiver em uma fatia diferente de uma fatia correspondente a CU atual, o vetor de movimento predito candidato na posição pode estar indisponível.
[0237] Depois de considerar o vetor de movimento predito candidato na posição 252A, o decodificador de vídeo pode considerar o vetor de movimento predito candidato na posição 252B. Se o vetor de movimento predito candidato na posição 252B estiver disponível e for diferente do vetor de movimento predito candidato na posição 252A, o decodificador de vídeo pode adicionar o vetor de movimento predito candidato na posição 252B à lista de vetores de movimento preditos candidatos. Neste contexto específico, o termo “igual” ou “diferente” significa que as informações de movimento associadas aos vetores de movimento preditos candidatos nas posições são iguais ou diferentes. Portanto, se dois vetores de movimento preditos candidatos nas posições têm as mesmas informações de movimento, os dois vetores de movimento preditos candidatos nas posições são considerados iguais; ou se dois vetores de movimento preditos candidatos nas posições têm diferentes informações de movimento, os dois vetores de movimento preditos candidatos nas posições são considerados diferentes. Se o vetor de movimento predito candidato na posição 252A estiver indisponível, o decodificador de vídeo pode atribuir o índice 0 ao vetor de movimento predito candidato na posição 252B. Se o vetor de movimento predito candidato na posição 252A estiver disponível, o decodificador de vídeo pode atribuir um índice 1 ao vetor de movimento predito candidato na posição 252B. Se o vetor de movimento predito candidato na posição 252B estiver indisponível ou for o mesmo que o vetor de movimento predito candidato na posição 252A, o decodificador de vídeo pula a adição do vetor de movimento predito candidato na posição 252B à lista de vetores de movimento preditos candidatos.
[0238] Similarmente, o decodificador de vídeo considera o vetor de movimento predito candidato na posição 252C para determinar se deve adicionar o vetor de movimento predito candidato na posição 252C à lista. Se o vetor de movimento predito candidato na posição 252C estiver disponível e for diferente dos vetores de movimento preditos candidatos nas posições 252B e 252A, o decodificador de vídeo pode atribuir um próximo índice disponível ao vetor de movimento predito candidato na posição 252C. Se o vetor de movimento predito candidato na posição 252C estiver indisponível ou for o mesmo que pelo menos um dos vetores de movimento preditos candidatos nas posições 252A e 252B, o decodificador de vídeo pula a adição do vetor de movimento predito candidato na posição 252C à lista de vetores de movimento preditos candidatos. Em seguida, o decodificador de vídeo considera o vetor de movimento predito candidato na posição 252D. Se o vetor de movimento predito candidato na posição 252D estiver disponível e for diferente dos vetores de movimento preditos candidatos nas posições 252A, 252B e 252C, o decodificador de vídeo pode atribuir um próximo índice disponível ao vetor de movimento predito candidato na posição 252D. Se o vetor de movimento predito candidato na posição 252D estiver indisponível ou é for o mesmo que pelo menos um dos vetores de movimento preditos candidatos nas posições 252A, 252B e 252C, o decodificador de vídeo pula a adição do vetor de movimento predito candidato na posição 252D à lista de vetores de movimento preditos candidatos. Na implementação anterior, um exemplo em que os vetores de movimento preditos candidatos 252A a 252D são considerados para determinar se devem adicionar os vetores de movimento preditos candidatos 252A a 252D à lista de vetores de movimento preditos candidatos é geralmente descrito. Entretanto, em algumas implementações, todos os vetores de movimento preditos candidatos 252A a 252D podem ser adicionados primeiramente à lista de vetores de movimento preditos candidatos e, em seguida, um vetor de movimento predito candidato repetido é removido da lista de vetores de movimento preditos candidatos.
[0239] Depois que o decodificador de vídeo considera os primeiros quatro vetores de movimento preditos candidatos espaciais, a lista de vetores de movimento preditos candidatos pode incluir quatro vetores de movimento preditos candidatos espaciais ou a lista pode incluir menos do que quatro vetores de movimento preditos candidatos espaciais. Se a lista incluir quatro vetores de movimento preditos candidatos espaciais (904, sim), o decodificador de vídeo considera um vetor de movimento predito candidato temporal (906). O vetor de movimento predito candidato temporal pode corresponder às informações de movimento de uma PU colocalizada de uma imagem diferente da imagem atual. Se o vetor de movimento predito candidato temporal estiver disponível e for diferente dos primeiros quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo atribui um índice 4 ao vetor de movimento predito candidato temporal. Se o vetor de movimento predito candidato temporal estiver indisponível ou for o mesmo que um dos primeiros quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo pula a adição do vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos. Portanto, depois do decodificador de vídeo considerar o vetor de movimento predito candidato temporal (906), a lista de vetores de movimento preditos candidatos pode incluir cinco vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 902 e o vetor de movimento predito candidato temporal considerado em 906) ou pode incluir quatro vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 902). Se a lista de vetores de movimento preditos candidatos incluir cinco vetores de movimento preditos candidatos (908, sim), o decodificador de vídeo conclui a construção da lista.
[0240] Se a lista de vetores de movimento preditos candidatos incluir quatro vetores de movimento preditos candidatos (908, não), o decodificador de vídeo pode considerar um quinto vetor de movimento predito candidato espacial (910). O quinto vetor de movimento predito candidato espacial pode (por exemplo) corresponder a um vetor de movimento predito candidato na posição 252E. Se o vetor de movimento predito candidato na posição 252E estiver disponível e for diferente dos vetores de movimento preditos candidatos nas posições 252A, 252B, 252C e 252D, o decodificador de vídeo pode adicionar o quinto vetor de movimento predito candidato espacial à lista de vetores de movimento preditos candidatos e atribui o índice 4 ao quinto vetor de movimento predito candidato espacial. Se o vetor de movimento predito candidato na posição 252E estiver indisponível ou for o mesmo que um dos vetores de movimento preditos candidatos nas posições 252A, 252B, 252C e 252D, o decodificador de vídeo pode pular a adição do vetor de movimento predito candidato na posição 252E à lista de vetores de movimento preditos candidatos. Portanto, depois que o quinto vetor de movimento predito candidato espacial é considerado (910), a lista pode incluir cinco vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 902 e o quinto vetor de movimento predito candidato espacial considerado em 910) ou pode incluir quatro vetores de movimento preditos candidatos (os primeiros quatro vetores de movimento preditos candidatos espaciais considerados em 902).
[0241] Se a lista de vetores de movimento preditos candidatos incluir cinco vetores de movimento preditos candidatos (912, sim), o decodificador de vídeo conclui a geração da lista de vetores de movimento preditos candidatos.
Se a lista de vetores de movimento preditos candidatos incluir quatro vetores de movimento preditos candidatos (912, não), o decodificador de vídeo adiciona um vetor de movimento predito candidato gerado artificialmente (914) até que a lista inclua cinco vetores de movimento preditos candidatos (916, sim).
[0242] Se a lista incluir menos do que quatro vetores de movimento preditos candidatos espaciais (904, não) depois do decodificador de vídeo considerar os primeiros quatro vetores de movimento preditos candidatos espaciais, o decodificador de vídeo pode considerar um quinto vetor de movimento predito candidato espacial (918). O quinto vetor de movimento predito candidato espacial pode (por exemplo) corresponder a um vetor de movimento predito candidato na posição 252E. Se o vetor de movimento predito candidato na posição 252E estiver disponível e for diferente dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode adicionar o quinto vetor de movimento predito candidato espacial à lista de vetores de movimento preditos candidatos e atribuir um próximo índice disponível ao quinto vetor de movimento predito candidato espacial. Se o vetor de movimento predito candidato na posição 252E estiver indisponível ou é for o mesmo que um dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode pular a adição do vetor de movimento predito candidato na posição 252E à lista de vetores de movimento preditos candidatos. Em seguida, o decodificador de vídeo pode considerar um vetor de movimento predito candidato temporal (920). Se o vetor de movimento predito candidato temporal estiver disponível e for diferente dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode adicionar o vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos e atribuir um próximo índice disponível ao vetor de movimento predito candidato temporal. Se o vetor de movimento predito candidato temporal estiver indisponível ou for o mesmo que um dos vetores de movimento preditos candidatos existentes na lista de vetores de movimento preditos candidatos, o decodificador de vídeo pode pular a adição do vetor de movimento predito candidato temporal à lista de vetores de movimento preditos candidatos.
[0243] Se a lista de vetores de movimento preditos candidatos incluir cinco vetores de movimento preditos candidatos (922, sim) depois que o quinto vetor de movimento predito candidato espacial (em 918) e o vetor de movimento predito candidato temporal (em 920) são considerados, o decodificador de vídeo conclui a geração da lista de vetores de movimento preditos candidatos. Se a lista de vetores de movimento preditos candidatos incluir menos do que cinco vetores de movimento preditos candidatos (922, não), o decodificador de vídeo adiciona um vetor de movimento predito candidato gerado artificialmente (914) até que a lista inclua cinco vetores de movimento preditos candidatos (916, sim).
[0244] De acordo com as tecnologias neste pedido, um vetor de movimento predito candidato de mesclagem adicional pode ser gerado artificialmente depois de um vetor de movimento predito candidato espacial e um vetor de movimento predito candidato temporal, de modo que um tamanho de uma lista de vetores de movimento preditos candidatos de mesclagem seja fixa e a lista de vetores de movimento preditos candidatos de mesclagem inclui uma quantidade especificada (por exemplo, cinco na implementação anterior viável na FIG. 9) dos vetores de movimento preditos candidatos de mesclagem. O vetor de movimento predito candidato de mesclagem adicional pode incluir exemplos de um vetor de movimento predito candidato de mesclagem bi- preditivo combinado (um vetor de movimento predito candidato 1), um vetor de movimento predito candidato de mesclagem bi-preditivo dimensionado (um vetor de movimento predito candidato 2) e uma mesclagem de vetor zero/vetor de movimento predito candidato AMVP (um vetor de movimento predito candidato 3).
[0245] A FIG. 10 é um diagrama esquemático de um exemplo de adição de um vetor de movimento candidato combinado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem, de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato de mesclagem bi-preditivo combinado pode ser gerado pela combinação de vetores de movimento preditos candidatos de mesclagem originais. Especificamente, dois vetores de movimento preditos candidatos originais (que têm mvL0 e refIdxL0 ou mvL1 e refIdxL1) podem ser usados para gerar o vetor de movimento predito candidato de mesclagem bi-preditivo. Na FIG. 10, dois vetores de movimento preditos candidatos estão incluídos em uma lista de vetores de movimento preditos candidatos de mesclagem original. Um tipo de predição de um vetor de movimento predito candidato é uni-predição por meio do uso de uma lista 0 e um tipo de predição do outro vetor de movimento predito candidato é uni-predição por meio do uso de uma lista 1. Nesta implementação viável, mvL0_A e ref0 são obtidos da lista 0, e mvL1_B e ref0 são obtidos da lista 1. Em seguida, um vetor de movimento predito candidato de mesclagem bi-preditivo (que tem mvL0_A e ref0 na lista 0 e mvL1_B e ref0 na lista 1) pode ser gerado e é verificado se o vetor de movimento predito candidato de mesclagem bi-preditivo é diferente de um vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos. Se o vetor de movimento predito candidato de mesclagem bi- preditivo for diferente do vetor de movimento predito candidato existente, um decodificador de vídeo pode adicionar o vetor de movimento predito candidato de mesclagem bi-preditivo à lista de vetores de movimento preditos candidatos.
[0246] A FIG. 11 é um diagrama esquemático de um exemplo de adição de um vetor de movimento candidato dimensionado a uma lista de vetores de movimento preditos candidatos de modo de mesclagem, de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato de mesclagem bi-preditivo dimensionado pode ser gerado escalando um vetor de movimento predito candidato de mesclagem original. Especificamente, um vetor de movimento predito candidato original (que tem mvLX e refIdxLX) pode ser usado para gerar o vetor de movimento predito candidato de mesclagem bi- preditivo. Em uma implementação viável na FIG. 11, dois vetores de movimento preditos candidatos estão incluídos em uma lista de vetores de movimento preditos candidatos de mesclagem original. Um tipo de predição de um vetor de movimento predito candidato é uni-predição por meio do uso de uma lista 0 e um tipo de predição do outro vetor de movimento predito candidato é uni-predição por meio do uso de uma lista 1. Nesta implementação viável, mvL0_A e ref0 podem ser obtidos da lista 0 e ref0 pode ser copiado para a lista 1 e é denotado como um índice de referência ref0'. Em seguida, mvL0'_A pode ser calculado escalando mvL0_A tendo ref0 e ref0'. A escala pode depender de uma distância POC (Contagem de Ordem de Imagem). Em seguida, um vetor de movimento predito candidato de mesclagem bi-preditivo (que tem mvL0_A e ref0 na lista 0 e mvL0’_A e ref0' na lista 1) pode ser gerado e é verificado se o vetor de movimento predito candidato de mesclagem bi- preditivo é repetido. Se o vetor de movimento predito candidato de mesclagem bi-preditivo não for repetido, o vetor de movimento predito candidato de mesclagem bi-preditivo pode ser adicionado à lista de vetores de movimento preditos candidatos de mesclagem.
[0247] A FIG. 12 é um diagrama esquemático de um exemplo de adição de um vetor de movimento zero a uma lista de vetores de movimento preditos candidatos de modo de mesclagem, de acordo com uma modalidade deste pedido. Um vetor de movimento predito candidato de mesclagem de vetor zero pode ser gerado pela combinação de um vetor zero e um índice de referência que podem ser referenciados. Se o vetor de movimento predito candidato de mesclagem de vetor zero não for repetido, o vetor de movimento predito candidato de mesclagem de vetor zero pode ser adicionado a uma lista de vetores de movimento preditos candidatos de mesclagem. As informações de movimento de cada vetor de movimento predito candidato de mesclagem gerado podem ser comparadas às informações de movimento de um vetor de movimento predito candidato na lista anterior.
[0248] Em uma implementação viável, se um novo vetor de movimento predito candidato gerado for diferente de um vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos, o vetor de movimento predito candidato gerado é adicionado à lista de vetores de movimento preditos candidatos de mesclagem. Um processo de determinação para determinar se o vetor de movimento predito candidato é diferente do vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos é, algumas vezes, referido como poda (pruning). Através da poda, cada novo vetor de movimento predito candidato gerado pode ser comparado ao vetor de movimento predito candidato existente na lista. Em algumas implementações viáveis, uma operação de poda pode incluir: comparar um ou mais novos vetores de movimento preditos candidatos ao vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos, e pular a adição de um novo vetor de movimento predito candidato que é o mesmo que o vetor de movimento predito candidato existente na lista de vetores de movimento preditos candidatos. Em algumas outras implementações viáveis, uma operação de poda pode incluir: adicionar um ou mais novos vetores de movimento preditos candidatos à lista de vetores de movimento preditos candidatos e, em seguida, remover um vetor de movimento predito candidato repetido da lista.
[0249] O seguinte descreve várias implementações de predição inter. Um primeiro algoritmo predefinido e um segundo algoritmo predefinido neste pedido podem incluir uma ou mais das implementações de predição inter.
[0250] A predição imagem inter usa uma correlação temporal entre imagens para derivar uma predição compensada por movimento (motion- compensated prediction, MCP) paras amostras de bloco de imagem.
[0251] Para esta MCP com base em bloco, uma imagem de vídeo é dividida em blocos retangulares. Assumindo que o movimento homogêneo ocorre dentro de um bloco e os objetos em movimento são maiores do que um bloco, para cada bloco, um bloco correspondente em uma imagem previamente decodificada pode ser encontrado e serve como um valor de predição. Usando um modelo de movimento de translação, uma posição do bloco na imagem previamente decodificada é indicada por um vetor de movimento (Δx, Δy), onde Δx especifica um deslocamento horizontal em relação à posição do bloco atual, e Δy especifica um deslocamento vertical em relação à posição do bloco atual. O vetor de movimento (Δx, Δy) pode ter precisão de amostra parcial para capturar com mais precisão o movimento de um objeto subjacente. Quando o vetor de movimento correspondente tem a precisão de amostra parcial, a interpolação é aplicada em uma imagem de referência para derivar um sinal de predição. A imagem previamente decodificada é referida como uma imagem de referência e indicada por um índice de referência Δt correspondente a uma lista de imagens de referência. Estes parâmetros de modelo de movimento de translação, isto é, o vetor de movimento e o índice de referência, são referidos adicionalmente como dados de movimento. Dois tipos de predição imagem inter são permitidos nos padrões de codificação de vídeo modernos, isto é, uni- predição e bi-predição.
[0252] Em caso de bi-predição, dois conjuntos de dados de movimento (Δx0, Δy0, Δt0 e Δx1, Δy1, Δt1) são usados para gerar dois MCPs (possivelmente de diferentes imagens) que são, em seguida, combinado para obter um MCP final. Por padrão, isto é feito pela media, mas em caso de predição ponderada, diferentes pesos podem ser aplicados a cada MCP, por exemplo, para compensar os desvanecimentos da cena. As imagens de referência que podem ser usada na bi-predição são armazenadas em duas listas separadas, isto é, uma lista 0 e uma lista 1. Para limitar uma largura de banda de memória em uma fatia que permite a bi-predição, o padrão HEVC restringe uma PU com blocos de predição luma 4 × 8 ou 8 × 4 usando apenas uni-predição. Os dados de movimento são derivados em um codificador por meio do uso de um processo de estimativa de movimento. A estimativa de movimento não é especificada dentro de padrões de vídeo, de modo que diferentes codificadores possam utilizar diferentes compensações entre complexidade e qualidade durante as implementações dos codificadores.
[0253] Os dados de movimento de um bloco são correlacionados a um bloco vizinho. Para explorar esta correlação, os dados de movimento não são diretamente codificados em um fluxo de bits, mas codificados de forma preditiva com base em dados de movimento vizinhos. Em HEVC, dois conceitos são usados para isto. A codificação preditiva de um vetor de movimento foi aprimorada em HEVC pela introdução de uma nova ferramenta chamada predição de vetor de movimento avançada (advanced motion vector prediction, AMVP), onde um melhor valor de predição para cada bloco de movimento é sinalizado para um decodificador. Além disso, uma nova tecnologia chamada mesclagem de blocos de predição inter é usada para derivar todos os dados de movimento de um bloco de blocos vizinhos. Desta maneira, um modo direto e um modo de salto em H.264/AVC são substituídos.
[0254] Predição de vetor de movimento avançada
[0255] Como descrito nos padrões de codificação de vídeo anteriores, um vetor de movimento HEVC é codificado como uma diferença para um valor de predição do vetor de movimento (motion vector prediction value, MVP) com base em um componente horizontal (x) e um componente vertical (y). Dois componentes de diferença de vetor de movimento (MVD) são calculados, de acordo com as equações (1,1) e (1,2). MVDX = Δx - MVPX(1,1) MVDY = Δy - MVPY(1,2)
[0256] Um vetor de movimento de um bloco atual é usualmente correlacionado a um vetor de movimento de um bloco vizinho em uma imagem atual ou um imagem codificada anteriormente. Isto acontece pelo fato de que o bloco vizinho é provavelmente corresponde a um mesmo objeto de movimento com movimentos similares e o movimento do objeto não deve mudar abruptamente com o passar do tempo. Portanto, usando o vetor de movimento do bloco vizinho como um valor de predição reduz uma diferença de vetor de movimento sinalizada. Um MVP é usualmente derivado de um vetor de movimento já decodificado de um bloco vizinho espacial ou um bloco vizinho temporal em uma imagem colocalizada. Em alguns casos, um vetor de movimento zero pode ser alternativamente usado como um MVP. Em H.264/AVC, isto é implementado executando um uma media de componentes de três vetores de movimento vizinhos espaciais. Usando este método, nenhuma sinalização do valor de predição é exigida. Um MVP temporal da imagem colocalizada é considerado apenas no chamado modo direto temporal em H.264/AVC. O modo direto H.264/AVC também é usado para derivar outros dados de movimento além do vetor de movimento.
[0257] Em HEVC, o método para derivar implicitamente o MVP foi substituído por uma tecnologia conhecida como a competição de vetor de movimento. A tecnologia explicitamente sinaliza que MVP de uma lista de MVPs é usado para a derivação de vetor de movimento. Uma estrutura de bloco quadtree de codificação variável em HEVC pode fazer com que um bloco tendo vários blocos vizinhos com vetores de movimento sirva como candidatos MVP potenciais. O projeto inicial de predição de vetor de movimento avançada (Advanced Motion Vector Prediction, AMVP) incluiu cinco MVPs das três diferentes classes de valores de predição: três vetores de movimento de vizinhos espaciais, uma mediana dos três valores de predição espaciais, e um vetor de movimento dimensionado de um bloco vizinho colocalizado temporariamente. Além disso, uma lista de valores de predição foi modificada reordenando para colocar o valor de predição de movimento mais provável na primeira posição e removendo um candidato redundante para assegurar uma sobrecarga de sinalização mínima. Em seguida, simplificações significantes do projeto AMVP são desenvolvidas, tais como remover o valor de predição mediano, reduz uma quantidade de candidatos na lista de cinco para dois, fixar uma ordem de candidato na lista e reduz uma quantidade de verificações de redundância. Um projeto final da construção da lista de candidatos AMVP inclui os seguintes dois candidatos MVP: a. até dois candidatos MVPs espaciais derivados de cinco blocos vizinhos espaciais; b. um candidato MVP temporal derivado de dois blocos temporais colocalizados quando ambos os candidatos MVPs espaciais estão indisponíveis ou são idênticos; e c. um vetor de movimento zero quando os candidatos espaciais, o candidato temporal ou tanto os candidatos espaciais quanto o candidato temporal estão indisponíveis.
[0258] Como já mencionado, dois candidatos MVP espaciais A e B são derivados dos cinco blocos vizinhos espaciais. As posições dos blocos candidatos espaciais são as mesmas tanto para AMVP quanto para a mesclagem de bloco de predição inter. Para um candidato A, os dados de movimento de dois blocos A0 e A1 no canto esquerdo inferior são levados em consideração em um método de duas passagens. Em uma primeira passagem, é verificado se qualquer um dos blocos candidatos inclui um índice de referência que é igual a um índice de referência do bloco atual. Um primeiro vetor de movimento que é encontrado é usado como o candidato A. Quando todos os índices de referência de A0 e A1 apontam para uma imagem de referência diferente do índice de referência do bloco atual, um vetor de movimento associado não pode ser usado como está. Portanto, em uma segunda passagem, o vetor de movimento precisa ser dimensionado com base em uma distância temporal entre uma imagem de referência candidata e uma imagem atual de referência. A equação (1,3) mostra como um vetor de movimento candidato mvcand é dimensionado com base em um fator de escala. ScaleFactor é calculado com base em uma distância temporal entre a imagem atual e uma imagem de referência de um bloco candidato td e uma distância temporal entre a imagem atual e uma imagem de referência do bloco atual tb. A distância temporal é expressa em termos de uma diferença entre valores de contagem de ordem de imagem (picture order count, POC) que define uma ordem de exibição de imagens. Uma operação de escala é basicamente igual a um esquema que é usado para o modo direto temporal em H.264/AVC. Esta fatoração permite o pré-cálculo de ScaleFactor em um nível de fatia pelo fato de que esta fatoração depende apenas de uma estrutura de lista de imagens de referência sinalizada em um cabeçalho de fatia. Deve ser observado que a escala MV é realizada apenas quando tanto a imagem atual de referência quanto a imagem de referência candidata são imagens de referência de curto prazo. Um parâmetro td é definido como uma diferença POC entre uma imagem colocalizada e uma imagem de referência para um bloco candidato colocalizado. mv = sign(mvcand • ScaleFactor) ((|mvcand • ScaleFactor| + 27) >> 8)(1,3) ScaleFactor = clip (-212, 212 - 1, (tb • tx + 25) >> 6)(1,4) td 214 + 2 (1,5) tx = td
[0259] Para um candidato B, candidatos B0 a B2 são sequencialmente verificados em uma mesma maneira que uma maneira em que A0 e A1 são verificados na primeira passagem. Entretanto, a segunda passagem é realizada apenas quando os blocos A0 e A1 não incluem quaisquer informações de movimento, em outras palavras, quando os blocos A0 e A1 estão indisponíveis ou codificados através de predição imagem intra. Em seguida, se o candidato A for encontrado, o candidato A é definido igual ao candidato B não dimensionado, e o candidato B é definido igual a uma segunda variante não dimensionada ou dimensionada do candidato B. Na segunda passagem, a pesquisa é realizada para derivar um MV não dimensionado e um MV dimensionado dos candidatos B0 a B2. No geral, este projeto permite processar A0 e A1 independentemente de B0, B1 e B2. A derivação de B deve estar ciente da disponibilidade tanto de A0 quanto A1, para realizar a pesquisa para derivar um MV dimensionado ou um MV não dimensionado adicional de B0 a B2. Esta dependência é aceitável, uma vez que reduz significantemente uma operação de escala de vetor de movimento complexa para o candidato B. Reduzir uma escala de quantidade de vetor de movimento representa uma redução significante de complexidade em um processo de derivação de valor de predição de vetor de movimento.
[0260] Em HEVC, os blocos na parte inferior direita e no centro do bloco atual foram determinados para serem os blocos mais adequados para fornecer um bom valor de predição de vetor de movimento temporal (temporal motion vector prediction, TMVP). Entre estes candidatos, C0 representa um bloco vizinho inferior direito e C1 representa um bloco central. Novamente neste relatório, os dados de movimento de C0 são considerados primeiros. Se os dados de movimento de C0 estiverem indisponíveis, os dados de movimento de um bloco candidato colocalizado no centro é usado para derivar um candidato C MVP temporal. Os dados de movimento de C0 também são considerados para serem indisponíveis quando uma PU associada pertence a uma CTU que está além de uma linha CTU atual. Isto minimiza um requisito de largura de banda de memória para armazenar os dados de movimento colocalizados. Ao contrário de candidatos MVP espaciais cujos vetores de movimento podem se referir a uma mesma imagem de referência, a escala de vetor de movimento é obrigatória para o TMVP. Portanto, uma operação de escala igual a do MVP é usada.
[0261] Embora o modo direito temporal em H.264/AVC sempre se refira a uma primeira imagem de referência em uma segunda lista de imagens de referência, isto é, a lista 1, e é permitido apenas em uma fatia bipreditiva, HEVC fornece uma possibilidade de indicar, para cada imagem, que a imagem de referência é considerada como uma imagem colocalizada. Isto é implementado sinalizando uma lista de imagens de referência colocalizada e um índice de imagem de referência em um cabeçalho de fatia e exigindo que estes elementos de sintaxe em todas as fatias em uma imagem especifiquem uma mesma imagem de referência.
[0262] Pelo fato de que o candidato MVP temporal introduz uma dependência adicional, o uso do candidato MVP temporal pode precisar ser desativado devido à robustez de erro. Em H.264/AVC, existe uma possibilidade de desativar o modo direto temporal para a fatia bipreditiva no cabeçalho de fatia (direct_spatial_mv_pred_flag). A sintaxe HEVC estende essa sinalização, permitindo desabilitar o TMVP em um nível de sequência ou um nível de imagem (sps/fatia_temporal_mvp_enabled_flag). Embora um sinalizador seja sinalizado no cabeçalho de fatia, é um requisito da conformidade de fluxo de bits que um valor do sinalizador seja o mesmo para todas as fatias em uma imagem. Pelo fato de que a sinalização de um sinalizador de nível de imagem depende de um sinalizador SPS, a sinalização do sinalizador de nível de imagem em um PPS pode introduzir uma dependência de análise entre um SPS e o PPS. Outra vantagem desta sinalização de cabeçalho de fatia é como a seguir: Se apenas um valor deste sinalizador no PPS for desejado para ser alterado sem mudar outro parâmetro, não há necessidade de transmitir um segundo PPS.
[0263] Em geral, a sinalização dos dados de movimento em HEVC é similar à sinalização dos dados de movimento em H.264/AVC. Um elemento de sintaxe de predição imagem inter, inter_pred_idc, sinaliza se uma lista de referência 0, uma lista de referência 1 ou tanto uma lista de referência 0 quanto uma lista de referência 1 são usadas. Para cada MCP obtido de uma lista de imagens de referência, uma imagem de referência correspondente (Δt) é sinalizada por um índice para a lista de imagens de referência, ref_idx_l0/1, e um MV (Δx, Δy) é representado por um índice para o MVP, mvp_l0/1_flag, e uma MVD do MVP. Um sinalizador introduzido novamente no cabeçalho de fatia, mvd_l1_zero_flag, indica se uma MVD para a segunda lista de imagens de referência é igual a zero e, portanto, não é sinalizada em um fluxo de bits. Quando o vetor de movimento é totalmente reconstruído, uma operação de recorte final garante que um valor de cada componente do vetor de movimento final sempre esteja dentro de uma faixa de -215 a 215 - 1, inclusive.
[0264] Mesclagem de Bloch (Bloch) de Predição imagem inter
[0265] Uma lista AMVP inclui apenas um vetor de movimento para uma lista de referência, enquanto um candidato de mesclagem inclui todos os dados de movimento incluindo informações sobre se uma ou duas listas de imagens de referência são usadas, bem como um índice de referência e um vetor de movimento para cada lista. No geral, uma lista de candidatos de mesclagem é construída com base nos seguintes candidatos: a. até quatro candidatos de mesclagem espaciais derivado de cinco blocos vizinhos espaciais; b. um candidato de mesclagem temporal derivado de dois blocos colocalizados temporais; e c. candidatos de mesclagem adicionais incluindo um candidato bi-preditivo combinado e um candidato de vetor de movimento zero.
[0266] Um primeiro candidato na lista de candidatos de mesclagem é um vizinho espacial. A1, B1, B0, A0 e B2 são verificados sequencialmente, e até quatro candidatos podem ser inseridos na lista de mesclagem nesta ordem.
[0267] Em vez de apenas verificar se um bloco vizinho está disponível e inclui informações de movimento, algumas verificações de redundância adicionais são realizadas antes de todos os dados de movimento do bloco vizinho serem usados como um candidato de mesclagem. Estas verificações de redundância podem ser divididas em duas categorias para dois diferentes propósitos: a. evitar ter um candidato com dados de movimento redundantes na lista; e b. impedir a mesclagem de duas partições que podem ser expressas por outros meios que podem criar sintaxe redundante.
[0268] Quando N representa uma quantidade de candidatos de mesclagem espaciais, uma verificação de redundância completa consiste de N • ( N − 1) 2 comparações de dados de movimento. No caso de cinco candidatos de mesclagem espaciais potenciais, 10 comparações de dados de movimento precisam ser realizadas para assegurar que todos os candidatos na lista de mesclagem tenham diferentes dados de movimento. Durante o desenvolvimento de HEVC, as verificações para dados de movimento redundantes foram reduzidas a um subconjunto, de modo que a eficácia de codificação seja mantida enquanto a lógica de comparação é significantemente reduzida. No projeto final, não mais do que duas comparações são realizadas por candidato, e há um total de cinco comparações. Dada a ordem de {A1, B1, B0, A0, B2}, B0 verifica apenas B1, A0 apenas A1 e B2 apenas A1 e B1. Em uma modalidade em que uma verificação de redundância de particionamento é realizada, uma PU inferior de uma partição 2N × N é mesclada com uma PU superior que seleciona o candidato B1. Neste caso, uma CU tem duas PUs com os mesmos dados de movimento. A CU pode ser igualmente sinalizada como uma CU2N × 2N. No geral, esta verificação aplica-se a todos as segundas PUs de partições retangulares e assimétricas: 2N × N, 2N × nU, 2N × nD, N × 2N, nR × 2N e nL × 2N. Deve ser observado que para os candidatos de mesclagem espaciais, apenas uma verificação de redundância é realizada e os dados de movimento são copiados dos blocos candidatos como estão. Portanto, nenhuma escala de vetor de movimento é exigida neste relatório.
[0269] Um vetor de movimento de um candidato de mesclagem temporal é derivado de uma mesma maneira que uma maneira de derivação de um TMVP. Pelo fato de que um candidato de mesclagem inclui todos os dados de movimento e o TMVP é apenas um vetor de movimento, a derivação de todos os dados de movimento dependem apenas de um tipo de fatia. Para uma fatia bi-preditiva, um TMVP é derivado para cada lista de imagens de referência. Dependendo da disponibilidade do TMVP para cada lista, um tipo de predição é definido como bi-predição ou para uma lista para a qual o TMVP está disponível. Todos os índices de imagem de referência associados são definidos como iguais a zero. Portanto, para uma fatia uni-preditiva, apenas um TMVP para uma lista 0 é derivado junto com o índice de imagem de referência igual a zero.
[0270] Quando pelo menos um TMVP está disponível e o candidato de mesclagem temporal é adicionado à lista, nenhuma verificação de redundância é realizada. Isto torna a construção da lista de mesclagem independente de uma imagem colocalizada e, portanto, melhora a resiliência a erros. Quando um caso em que o candidato de mesclagem temporal é redundante e, portanto, não incluído na lista de candidatos de mesclagem é considerado, e a imagem colocalizada é perdida, um decodificador não pode derivar o candidato temporal e, portanto, não verifica se o candidato temporal é redundante. Isto afeta a indexação de todos os candidatos subsequentes.
[0271] Para fins de análise de robustez, a lista de candidatos de mesclagem tem um comprimento fixo. Depois da adição de candidatos de mesclagem espaciais e temporais, a lista pode ainda não atingir o comprimento fixo. Para compensar uma perde de eficácia de codificação que vem junto com a sinalização de índice de lista adaptativa sem comprimento, um candidato adicional é gerado. Dependendo do tipo de fatia, até dois tipos de candidatos podem ser usados para preencher completamente a lista: a. Um candidato bi- preditivo combinado; e b. Um candidato de vetor de movimento zero.
[0272] Na fatia bipreditiva, um candidato adicional pode ser gerado com base em um candidato existente, combinando dados de movimento de lista de imagens de referência 0 de um candidato e dados de movimento de lista de imagens de referência 1 de outro candidato. Isto é implementado copiando Δx0, Δy0 e Δt0 de um candidato, tal como um primeiro candidato e copiando Δx1, Δy1 e Δt1 de outro candidato, tal como um segundo candidato. Diferentes combinações são predefinidas e apresentadas na tabela 1.1. Tabela 1.1 Ordem de combinação 0 1 2 3 4 5 6 7 8 9 10 11 Δx0, Δy0 e Δt0 de um candidato 0 1 0 2 1 2 0 3 1 3 2 3 Δx1, Δy1 e Δt1 de um candidato 1 0 2 0 2 1 3 0 3 1 3 2
[0273] Quando a lista ainda não está completa depois do candidato bi-preditivo combinado ser adicionado ou não está complexa para uma fatia uni-preditiva, um vetor de movimento zero candidato é calculado para completar a lista. Todos os vetores de movimento zero candidatos têm um vetor de movimento de deslocamento zero para uma fatia uni-preditiva e dois vetores de movimento de deslocamento zero para uma fatia bi-preditiva. Um índice de referência é definido como igual a zero e é incrementado em um para cada candidato adicional até que uma quantidade máxima de índices de referência seja alcançada. Neste caso, se ainda houver outros candidatos ausentes, um índice de referência igual a zero é usado para criar estes candidatos. Para todos os candidatos adicionais, nenhuma verificação de redundância é realizada pelo fato de que a omissão destas verificações não introduz uma perda de eficácia de codificação.
[0274] Para cada PU codificada com base em um modo de predição imagem inter, merge_flag indica que a mesclagem do bloco é usada para derivar os dados de movimento, e merge_idx é usado adicionalmente para determinar um candidato que está na lista de mesclagem e que fornece todos os dados de movimento exigidos para um MCP. Além desta sinalização de nível de PU, uma quantidade de candidatos na lista de mesclagem é sinalizada em um cabeçalho de fatia. Pelo fato de que um valor padrão é 5, é representado como uma diferença para cinco (five_minus_max_num_merge_cand). Desta maneira, 5 é sinalizado com uma palavra-código curta para 0. Se apenas um candidato for usado, 5 é sinalizado com uma palavra-código mais longa para 4. Em relação ao impacto em um processo de construção de lista de candidatos de mesclagem, o processo geral permanece o mesmo, embora o processo termine depois que a lista inclui uma quantidade máxima de candidatos de mesclagem. No projeto inicial, um valor máximo para a codificação de um índice de mesclagem é determinado por uma quantidade de candidatos espaciais e temporais disponíveis na lista. Por exemplo, quando apenas dois candidatos estão disponíveis, o índice pode ser codificado de forma mais eficiente como um sinalizador. Entretanto, para analisar o índice de mesclagem, toda a lista de candidatos de mesclagem deve ser construída para saber uma quantidade real de candidatos. Assumindo que um bloco vizinho está indisponível devido a um erro de transmissão, o índice de mesclagem não pode ser mais analisado.
[0275] Uma aplicação crucial do conceito de mesclagem do bloco em HEVC é sua combinação com um modo de salto. Nos padrões de codificação de vídeo anteriores, o modo de salto é usado para indicar para um bloco que os dados de movimento são inferidos em vez de explicitamente sinalizados e que uma predição residual é zero. Em outras palavras, nenhum coeficiente de transformada é enviado. Em HEVC, no início de cada CU em uma fatia de predição imagem inter, skip_flag é sinalizado que envolve o seguinte: a. A CU inclui apenas uma PU (tipo de partição 2N × 2N). b. O modo de mesclagem é usado para derivar os dados de movimento (merge_flag igual a 1). c. Nenhum dado residual está presente em um fluxo de bits.
[0276] Um nível de estimativa de mesclagem paralela que indica uma região é introduzido em HEVC. Uma lista de candidatos de mesclagem pode ser derivada independentemente, verificando se um bloco candidato está localizado na região de estimativa de mesclagem (MER). Um bloco candidato na mesma MER não é incluído na lista de candidatos de mesclagem. Portanto, os dados de movimento do bloco candidato não precisam estar disponíveis durante a construção da lista. Quando este nível é, por exemplo, 32, todas as unidades de predição em uma região 32 × 32, pode ser usado para construir a lista de candidatos de mesclagem em paralelo, pelo fato de que todos os candidatos de mesclagem na mesma MER 32 × 32 não são inseridos na lista. Todos os candidatos de mesclagem potenciais para uma primeira PU 0 estão disponíveis pelo fato de que todos os candidatos de mesclagem potenciais estão for a de uma primeira MER 32 × 32. Para uma segunda MER, a lista de candidatos de mesclagem para PUs 2 a 6 não pode incluir os dados de movimento destas PUs quando a estimativa de mesclagem dentro da MER deve ser independente. Portanto, por exemplo, quando uma PU 5 é visualizada, um candidato de mesclagem não está disponível e, portanto, não é inserido na lista de candidatos de mesclagem. Neste caso, a lista de mesclagem para a PU5 inclui apenas um candidato temporal (se disponível) e um candidato MV zero. Para permitir que um codificador troque o paralelismo e a eficácia de codificação, o nível de estimativa de mesclagem paralela é adaptativo e sinalizado como log2_parallel_merge_level_minus2 em um conjunto de parâmetros de imagem.
[0277] Predição de vetor de movimento com base em sub-CU
[0278] Durante o desenvolvimento de uma nova tecnologia de codificação de vídeo, com QTBT, cada CU pode ter no máximo um conjunto de parâmetros de movimento para cada direção de predição. Dois métodos de precisão de vetor de movimento predição de nível de sub-CU são considerados em um codificador pela partição de uma CU grande em sub-CUs e derivando informações de movimento para todas as sub-CUs da CU grande. Um método de predição de vetor de movimento temporal alternativo (alternative temporal motion vector prediction, ATMVP) permite que cada CU busque uma pluralidade de conjuntos de informações de movimento de uma pluralidade de blocos menor do que a CU atual em uma imagem de referência colocalizada. Em um método de predição de vetor de movimento temporal-espacial (spatial- temporal motion vector prediction, STMVP), um vetor de movimento de uma sub-CU é derivado recursivamente por meio do uso de um valor de predição de vetor de movimento temporal e um vetor de movimento espacial vizinho.
[0279] Para preservar um campo de movimento mais preciso para a predição de movimento de sub-CU, a compressão de movimento para um quadro de referência é atualmente desativada.
[0280] Predição de vetor de movimento temporal alternativa
[0281] Em um método de predição de vetor de movimento temporal alternativa (alternative temporal motion vector predição, ATMVP), a predição de vetor de movimento temporal (temporal motion vector prediction, TMVP) para um vetor de movimento é modificada pela busca de uma pluralidade de conjuntos de informações de movimento (incluindo os vetores de movimento e índices de referência) de blocos menores do que uma CU atual. Uma sub-CU é um bloco N × N quadrado (onde N é definido como 4 por padrão).
[0282] O ATMVP prevê um vetor de movimento da sub-CU na CU em duas etapas. Uma primeira etapa é identificar um bloco correspondente em uma imagem de referência por meio do uso de um vetor temporal. A imagem de referência é chamada de uma imagem de origem de movimento. Uma segunda etapa é para particionar a CU atual em sub-CUs e obter um vetor de movimento e um índice de referência de cada sub-CU do bloco correspondente à sub-CU.
[0283] Na primeira etapa, a imagem de referência e o bloco correspondente são determinados com base em informações de movimento de um bloco vizinho espacial da CU atual. Para evitar que um processo de varredura repetitivo para um bloco vizinho, um primeiro candidato de mesclagem em uma lista de candidatos de mesclagem para a CU atual é usado. Um primeiro vetor de movimento disponível e um índice de referência associado ao primeiro vetor de movimento disponível são definidos como um vetor temporal e um índice da imagem de origem de movimento. Desta maneira, em comparação com o TMVP, no ATMVP, o bloco correspondente pode ser identificado com mais precisão. No TMVP, o bloco correspondente (às vezes chamado de bloco colocalizado) está sempre localizado em uma posição inferior direita ou central em relação a CU atual.
[0284] Na segunda etapa, o bloco correspondente da sub-CU é identificado pelo vetor temporal na imagem de origem de movimento pela adição do vetor temporal às coordenadas da CU atual. Para cada sub-CU, as informações de movimento de um bloco correspondente (a menor grade de movimento cobrindo uma amostra central) da sub-CU são usadas para derivar informações de movimento para a sub-CU. Depois que as informações de movimento de um bloco N × N correspondente são identificadas, as informações de movimento são convertidas em um vetor de movimento e em um índice de referência da sub-CU atual de uma mesma que o TMVP em HEVC, e a escala de movimento e outros procedimentos se aplicam. Por exemplo, um decodificador verifica se uma condição de baixo atraso (isto é, POCs de todas as imagens de referência de uma imagem atual são menores do que uma POC da imagem atual) é satisfeita e, possivelmente, usa um vetor de movimento MVx (um vetor de movimento correspondente a uma lista de imagens de referência X) para prever um vetor de movimento MVy (com X sendo igual a 0 ou 1 e Y sendo igual a 1 - X) para cada sub-CU.
[0285] Predição de vetor de movimento espacial-temporal
[0286] Neste método, um vetor de movimento de uma sub-CU é derivado recursivamente, seguindo uma ordem de varredura raster. É considerado que uma CU 8 × 8 inclui quatro sub-CUs 4 × 4 A, B, C e D. Os blocos 4 × 4 vizinhos em um quadro atual são rotulados como a, b, c e d.
[0287] A derivação de movimento para a sub-CU A inicia identificando dois vizinhos espaciais da sub-CU A. Um primeiro vizinho é um bloco N × N acima da sub-CU A (isto é, o bloco c). Se o bloco c estiver indisponível ou for codificado intra, outros blocos N × N acima da sub-CU A são verificados (da esquerda para direita, iniciando no bloco c). Um segundo vizinho é um bloco na esquerda da sub-CU A (isto é, o bloco b). Se o bloco b estiver indisponível ou for codificado intra, outros blocos na esquerda da sub- CU A são verificados (de cima para baixo, iniciando no bloco b). As informações de movimento obtidas de um bloco vizinho para cada lista são dimensionadas para um primeiro quadro de referência para uma determinada lista. Em seguida, um valor de predição de vetor de movimento temporal (temporal motion vector prediction, TMVP) do sub-bloco A é derivado seguindo o mesmo procedimento da derivação TMVP como especificado em HEVC. As informações de movimento de um bloco colocalizado na posição D são buscadas e dimensionadas consequentemente. Finalmente, depois que as informações de movimento são recuperadas e dimensionadas, todos os vetores de movimento disponíveis (até 3) são calculados separadamente para cada lista de referência. Um vetor de movimento médio é atribuído como um vetor de movimento de uma sub-CU atual.
[0288] Combinado com modo de mesclagem
[0289] Como um candidato de mesclagem adicional, um modo de sub-CU é habilitado e nenhum elemento de sintaxe adicional é exigido para sinalizar o modo. Dois candidatos de mesclagem adicionais são adicionados a uma lista de candidatos de mesclagem para cada CU para representar um modo ATMVP e um modo STMVP. Se um parâmetro de parâmetros de sequência indicar que ATMVP e STMVP estão habilitados, até sete candidatos de mesclagem são usados. A lógica de codificação dos candidatos de mesclagem adicionais é a mesma que a lógica de codificação de um candidato de mesclagem em HM. Isto significa que para cada CU em uma fatia P ou B, mais duas verificações RD precisam ser realizadas nos dois candidatos de mesclagem adicionais.
[0290] Predição de compensação de movimento afim
[0291] Um campo de movimento afim de um bloco é descrito por meio do uso de dois vetores de movimento de ponto de controle.
[0292] Um campo de vetor de movimento (motion vector field, MVF) de um bloco é descrito, de acordo com a seguinte equação:
 ( v − v ) ( v1 y − v0 y ) y + v  vx = 1 x 0 x x − 0x  W W   v = ( v1 y − v0 y ) x + ( v1x − v0 x ) y + v  x W W 0y  (1,6) onde (v0x, v0y) representa um vetor de movimento de um ponto de controle do canto superior esquerdo e (v1x, v1y) representa um vetor de movimento de um ponto de controle do canto superior direito.
[0293] Para simplificar adicionalmente a predição de compensação de movimento, a predição de transformada afim com base no sub-bloco é aplicada. Um tamanho de sub-bloco M  N é derivado, de acordo com a Equação (1,7), onde MvPre representa a precisão de vetor de movimento parcial (por exemplo, 1/16), e (v2x, v2y) representa um vetor de movimento de um ponto de controle inferior esquerdo calculado, de acordo com a Equação (1,6).     M = clip3  4, w, w × Mvpre      ( max abs ( v1x − v0 x ) , abs ( v1 y − v0 y ) )       h × Mvpre  N = clip3  4, h,      ( ) max abs ( v2 x − v0 x ) , abs ( v2 y − v0 y )   (1,7)
[0294] Depois do tamanho de sub-bloco M × N ser derivado, de acordo com a Equação (1,7), M e N devem ser ajustados a jusante se necessário para fazer M e N serem divisores de w e h, respectivamente.
[0295] Para derivar um vetor de movimento de cada sub-bloco M × N, um vetor de movimento de uma amostra central do sub-bloco é calculado, de acordo com a Equação (1,6), e arredondado para a precisão parcial de 1/16.
[0296] Modo inter afim
[0297] Para uma CU cuja largura e altura são ambas maiores do que 8, o modo AF_INTER pode ser aplicado. Um sinalizador afim em um nível CU é sinalizado em um fluxo de bits para indicar se o modo AF_INTER for usado. Neste modo, uma lista de candidatos com um par de vetores de movimento = { ( v0 , v1 ) v0 v A , vB , vC } , v1 {vD , vE }} {= é construída por meio do uso de um bloco vizinho. v0 é selecionado de um vetor de movimento de um bloco A, B ou C.
Um vetor de movimento de um bloco vizinho é dimensionado, de acordo com uma lista de referência e uma relação entre um POC de uma referência para o bloco vizinho, um POC de uma referência para uma CU atual e um POC da CU atual. Um método usado para selecionar v1 de blocos vizinhos D e E é similar.
Se uma quantidade de listas de candidatos forem menores do que 2, a lista é preenchida por um par de vetores de movimento compostos pela duplicação de cada candidato AMVP. Quando uma quantidade de listas de candidatos é maior do que 2, os candidatos são armazenados primeiro, de acordo com a consistência de vetores de movimento vizinhos (similar de dois vetores de movimento em um candidato de par) e apenas os primeiros dois candidatos são mantidos. Uma verificação de custo RD é usada para determinar que o candidato de partes de vetores de movimento é selecionado como predição de vetor de movimento de ponto de controle (control point motion vector prediction, CPMVP) da CU atual, e um índice indicando uma posição da CPMVP na lista de candidatos é sinalizado no fluxo de bits. Uma diferença entre um CPMV e aCPMVP é sinalizada no fluxo de bits.
[0298] Modo de mesclagem afim
[0299] Quando uma CU é aplicada no modo AF_MERGE, um primeiro bloco codificado com base no modo afim é obtido a partir de um bloco vizinho reconstruído válido. Uma ordem de seleção para os blocos candidatos é esquerda, cima, superior direita, inferior esquerda para superior esquerda. Se um bloco vizinho A inferior esquerdo for codificado com base no modo afim, vetores de movimento superior esquerdo, superior direito e inferior esquerdo v2 , v3 e v4 da CU incluindo o bloco A são derivados. Além disso, um vetor de movimento superior esquerdo v0 da CU atual é calculado, de acordo com v2 , v3 e v4 . Em seguida, um vetor de movimento superior direito v1 da CU atual é calculado.
[0300] Para identificar se a CU atual é codificada com base no AF_MERGE, quando há pelo menos um bloco vizinho que é codificado com base no modo afim, um sinalizador afim é sinalizado em um fluxo de bits.
[0301] Derivação de vetor de movimento de correspondência padrão
[0302] Um modo de derivação de vetor de movimento de correspondência padrão (pattern matched motion vector derivation, PMMVD) é fundamentado nas tecnologias de aumento de taxa de quadro (Frame-Rate Up Conversion, FRUC). Neste modo, as informações de movimento de um bloco não são sinalizadas, mas derivadas em um lado do decodificador.
[0303] Quando um sinalizador de mesclagem de uma CU é verdadeiro, um sinalizador FRUC da CU é sinalizado. Quando um sinalizador FRUC é falso, um índice de mesclagem é sinalizado, e um modo de mesclagem regular é usado. Quando um sinalizador FRUC é verdadeiro, um sinalizador de modo FRUC adicional é sinalizado para indicar que o método (correspondência bilateral ou correspondência de modelo) deve ser usado para derivar as informações de movimento do bloco.
[0304] Em um lado do codificador, uma decisão se deve usar um modo de mesclagem FRUC para uma CU é fundamentada na seleção de custo RD como feito para um candidato de mesclagem normal. Isto é, os dois modos de correspondências (correspondência bilateral e correspondência de modelo) são ambos verificados para uma CU por meio do uso da seleção de custo RD. Um modo levando ao custo mínimo é comparado adicionalmente aos outros modos CU. Se um modo de correspondência FRUC for o modo mais eficiente, o sinalizador FRUC é definido como verdadeiro para a CU e o modo de correspondência relacionado é usado.
[0305] Um processo de derivação de movimento no modo de mesclagem FRUC inclui duas etapas. Uma pesquisa de movimento de nível CU é realizada primeiro, em seguida, seguida por distinção de movimento de nível de sub-CU. Em um nível CU, um vetor de movimento inicial é derivado para toda a CU com base em correspondência bilateral ou correspondência de modelo. Primeiramente, uma lista de candidatos MV é gerada, e um candidato que leva ao custo de correspondência mínimo é selecionado como um ponto de partida para a distinção de nível CU adicional. Em seguida, uma pesquisa local com base em correspondência bilateral ou correspondência de modelo em torno do ponto de partida é realizada e um MV que leva ao custo de correspondência mínimo é usado como um MV de toda a CU. Subsequentemente, as informações de movimento são refinadas adicionalmente em um nível de sub-CU por meio do uso do vetor de movimento CU derivado como um ponto de partida.
[0306] Por exemplo, o seguinte processo de derivação é realizado para a derivação de informações de movimento de uma CU W  H. Em um primeiro estágio, um MV de toda a CU W  H é derivado. Em um segundo estágio, a CU é particionada adicionalmente em sub-CUs M  M. Um valor de M é calculado, de acordo com a Equação (1,8), D representa uma profundidade de particionamento predefinida e é definido como 3 por padrão em JEM. Em seguida, um MV de cada sub-CU é derivado.   W H  M = max 4, min  D , D    2 2  (1,8)
[0307] A correspondência bilateral é usada para derivar as informações de movimento da CU atual, encontrando a correspondência mais próxima entre dois blocos ao longo de uma trajetória de movimento da CU atual em duas imagens de referência diferentes. Supondo uma trajetória de movimento contínuo, os vetores de movimento MV0 e MV1 apontando para dois blocos de referência devem ser proporcionais às distâncias temporais, isto é, TD0 e TD1, entre uma imagem atual e as duas imagens de referência. Quando a imagem atual está temporariamente entre as duas imagens de referência e as distâncias temporais entre a imagem atual e as duas imagens de referência são as mesmas, a correspondência bilateral torna-se um MV bidirecional com base em espelho.
[0308] Em um modo de mesclagem de correspondência bilateral, a bi-predição é sempre aplicada pelo fato de que as informações de movimento de uma CU são derivadas com base na correspondência mais próxima entre dois blocos ao longo de uma trajetória de movimento da CU atual em duas imagens de referência diferentes. Não existe tal limitação para um modo de mesclagem de correspondência de modelo. No modo de mesclagem de correspondência de modelo, um codificador pode selecionar a uni-predição da lista 0, uni-predição da lista 1 ou bi-predição para uma CU. A seleção é fundamentada em um custo de correspondência de modelo como a seguir: Se costBi <= factor * min (cost0, cost1), a bi-predição é usada; De outro modo, se cost0 <= cost1, a uni-predição da lista 0 é usada;
De outro modo, a uni-predição da lista 1 é usada.
[0309] cost0 representa uma SAD da correspondência de modelo de lista 0, cost1 representa uma SAD da correspondência de modelo de lista 1, e costBi representa uma SAD de correspondência de modelo de bi-predição. Um valor do fator é igual a 1,25, que significa que um processo de seleção é tende a ser bi-predição. A seleção de uma direção de predição inter é apenas aplicada a um processo de correspondência de modelo de nível CU.
[0310] A correspondência de modelo é usada para derivar as informações de movimento da CU atual, encontrando a correspondência mais próxima entre um modelo (blocos vizinhos superior e/ou esquerdo da CU atual) na imagem atual e um bloco (com um tamanho igual ao modelo) na imagem de referência. Exceto o modo de mesclagem FRUC anterior, a correspondência de modelo também é aplicada a um modo AMVP. Um novo candidato é derivado por meio do uso de um método de correspondência de modelo. Se o novo candidato derivado através da correspondência de modelo for diferente de um primeiro candidato AMVP existente, o novo candidato é inserido bem no início da lista de candidatos AMVP e, em seguida, um tamanho da lista é definido como 2 (isto significa que um segundo candidato AMVP existente é removido). Quando a correspondência de modelo é aplicada ao modo AMVP, apenas uma pesquisa de nível CU é aplicada.
[0311] Os candidatos MV definidos em um nível CU incluem: a. um candidato AMVP original selecionado se o modo AMVP for usado para a CU atual; b. todos os candidatos de mesclagem; c. vários MVs em um campo MV interpolado; e d. vetores de movimento superior e esquerdo vizinhos.
[0312] Deve ser observado que o campo MV interpolado mencionado acima é gerado antes de toda uma imagem ser codificada com base em ME unilateral. Em seguida, um campo de movimento pode ser usado mais tarde como um candidato MV de nível CU ou nível sub-CU. Primeiramente, um campo de movimento de cada imagem de referência em duas listas de referência é percorrido a um nível de bloco 4 × 4. Para cada bloco 4 × 4, se o movimento associado ao bloco passa através de um bloco 4 × 4 na imagem atual, e o bloco não foi atribuído a qualquer movimento interpolado, o movimento de um bloco de referência é dimensionado para a imagem atual com base nas distâncias temporais TD 0 e TD 1 (de uma mesma maneira que da escala MV em TMVP em HEVC), e o movimento dimensionado é atribuído ao bloco no quadro atual. Se nenhum MV dimensionado for atribuído a um bloco 4 × 4, os movimentos de bloco são marcados como indisponíveis no campo de movimento interpolado.
[0313] Quando a correspondência bilateral é usada, cada MV válido de um candidato de mesclagem é usado como uma entrada para gerar um par MV com a suposição da correspondência bilateral. Por exemplo, um MV válido de um candidato de mesclagem é (MVa, refa) em uma lista de referência A. Em seguida, uma imagem de referência refb de seu MV bilateral emparelhado é encontrada na outra lista de referência B. Desta maneira, refa e refb são temporariamente localizados em diferentes lados da imagem atual. Se tal refb estiver indisponível na lista de referência B, refb é determinado como uma referência diferentes de refa, e uma distância temporal entre refb e a imagem atual é mínima na lista B. Depois de refb ser determinado, MVb é derivado escalando MVa com base em distâncias temporais entre a imagem atual e refa e entre a imagem atual e refb.
[0314] Quatro MVs do campo MV interpolado também são adicionados à lista de candidatos de nível CU. Mais especificamente, os MVs interpolados nas posições (0, 0), (W/2, 0), (0, H/2) e (W/2, H/2) da CU atual são adicionados.
[0315] Quando FRUC é aplicado ao modo AMVP, o candidato AMVP original também é adicionado a um conjunto de candidatos MV de nível CU.
[0316] No nível CU, até 15 MVs de CUs AMVP e até 13 MVs de CUs de mesclagem são adicionados às listas de candidatos.
[0317] Os candidatos MV definidos em um nível de sub-CU incluem: a. um MV determinado de uma pesquisa de nível CU; b. MVs vizinhos superior, esquerdo, superior esquerdo e superior direto MVs; c. uma versão dimensionada de um MV colocalizado de uma imagem de referência; d. até quatro candidatos ATMVP; e e. até quatro candidatos STMVP.
[0318] O MV dimensionado da imagem de referência é derivado como a seguir: Todas as imagens de referência em ambas as listas são percorridas, e um MV em uma posição colocalizada de uma sub-CU na imagem de referência é dimensionado para uma referência de uma partida de
MV de nível CU.
[0319] Os candidatos ATMVP e STMVP são limitados aos quatro primeiros.
[0320] No sub-nível CU, até 17 MVs são adicionados às listas de candidatos.
[0321] Distinção de vetor de movimento
[0322] Um vetor de movimento pode ser refinado por meio do uso de diferentes métodos combinação com diferentes modos de predição inter.
[0323] Distinção MV em FRUC
[0324] Distinção MV é um padrão com base em pesquisa MV com um critério de um custo de correspondência bilateral ou um custo de correspondência de modelo. No desenvolvimento atual, dois padrões de pesquisa são suportados, uma pesquisa de diamante com polarização central irrestrita (unrestricted center-biased diamond search, UCBDS) e uma pesquisa cruzada adaptativa usada para distinção MV em um nível CU e um nível de sub-CU, respectivamente. Para a distinção MV tanto do nível CU quanto do sub-nível CU, um MV é pesquisado diretamente na precisão MV de um quarto de amostra luma, e este é seguido por distinção MV de um oitavo de amostra luma. Uma faixa de pesquisa de distinção MV para uma etapa CU e uma sub- CU é definida igual a 8 amostras luma.
[0325] Distinção de vetor de movimento do lado do decodificador
[0326] Em uma operação de bi-predição, para a predição de uma região de bloco, dois blocos de predição, formados usando um MV de lista 0 e um MV de lista 1, respectivamente, são combinados para formar um único sinal de predição. Em um método de distinção de vetor de movimento do lado do decodificador (decoder-side motion vector refinement, DMVR), os dois vetores de movimento de bi-predição são refinados adicionalmente por meio do uso de um processo de correspondência de modelo bilateral. A correspondência de modelo bilateral é aplicada em um decodificador, para realizar uma pesquisa com base em distorção entre um modelo bilateral e uma amostra reconstruída em uma imagem de referência, e para obter um MV refinado sem enviar as informações de movimento adicionais.
[0327] Em DMVR, um modelo bilateral é gerado como uma combinação ponderada (isto é, média) dos dois blocos de predição, de um MV
0 de lista 0 inicial e um MV 1 de lista 1, respectivamente. Uma operação de correspondência de modelo inclui o cálculo de uma medida de custo entre o modelo gerado e uma região de amostra (em torno de um bloco de predição inicial) na imagem de referência. Para cada uma das duas imagens de referência, um MV que fornece o custo de modelo mínimo é considerado como um MV atualizado para a lista substituir um MV original. No desenvolvimento atual, nove candidatos MV são pesquisados para cada lista. Os nove candidatos MV incluem um MV original e oito MVs circundantes com um deslocamento de amostra luma para o MV original em uma direção horizontal e uma direção vertical ou tanto em uma direção horizontal quanto em uma direção vertical. Finalmente, dois novos MVs, isto é, um MV 0' e um MV 1', são usados para gerar um resultado de bi-predição final. Uma soma de diferenças absolutas (sum of absolute differences, SAD) é usada como medida de custo.
[0328] DMVR é aplicado para um modo de mesclagem de bi- predição com um MV de uma imagem de referência no passado e outro MV de uma imagem de referência no futuro, sem o envio de elementos de sintaxe adicionais.
[0329] Precisão de armazenamento de dados de movimento
[0330] Redução de armazenamento de dados de movimento
[0331] O uso de TMVP em AMVP bem como em um modo de mesclagem exige o armazenamento de dados de movimento (incluindo um vetor de movimento, um índice de referência e um modo de codificação) em uma imagem colocalizada de referência. Considerando uma granularidade da representação de movimento, um tamanho de memória necessário para armazenar os dados de movimento é significante. HEVC emprega a redução de armazenamento de dados de movimento (motion data storage reduction, MDSR) para reduzir tamanhos de um buffer de dados de movimento e uma largura de banda de acesso à memória associada por dados de movimento de subamostragem na imagem de referência. Embora as informações sejam armazenadas em uma base de bloco 4 × 4 em H.264/AVC, um bloco 16 × 16 é usado em HEVC. Em caso de subamostragem uma grade 4 × 4, as informações de um bloco 4 × 4 superior esquerdo são armazenadas. Devido a esta subamostragem, MDSR impacta na qualidade de predição temporal.
[0332] Além disso, existe uma correlação estreita entre uma posição de um MV usado na imagem colocalizada e uma posição de um MV armazenado por meio do uso de MDSR. Durante o processo de padronização de HEVC, verifica-se que armazenar os dados de movimento do bloco superior esquerdo dentro da região 16×16 junto com os candidatos TMVP inferior direito e central fornece o melhor equilíbrio entre a eficácia de codificação e a redução de largura de banda de memória.
[0333] Maior precisão de armazenamento de vetor de movimento
[0334] Em HEVC, a precisão de vetor de movimento é de um quarto de pel (um quarto de amostra luma e um oitavo de amostra croma para um vídeo 4:2:0). No desenvolvimento atual, a precisão para o armazenamento de vetor de movimento interno e um candidato de mesclagem aumenta para 1/16 de pel. A maior precisão de vetor de movimento (1/16 de pel) é usada na predição inter de compensação de movimento para uma CU codificada com base em um modo de skip/mesclagem. Para uma CU codificada com base em um modo AMVP normal, o movimento de pel inteiro ou um quarto de pel é usado.
[0335] Resolução de diferença de vetor de movimento adaptativa
[0336] Em HEVC, uma diferença de vetor de movimento (motion vector difference, MVD) é sinalizada em uma unidade de um quarto de amostra luma quando use_integer_mv_flag é igual a 0 em um cabeçalho de fatia. No desenvolvimento atual, uma resolução de vetor de movimento localmente adaptativa (locally adaptive motion vector resolution, LAMVR) é introduzida. A MVD pode ser codificada em uma unidade de um quarto de amostra luma, amostra luma inteira ou quatro amostras luma. A resolução MVD é controlada em um nível de unidade de codificação (coding unit, CU), e um sinalizador de resolução MVD é condicionalmente sinalizado para cada CU que tem pelo menos um componente MVD diferente de zero.
[0337] Para uma CU que tem pelo menos um componente MVD diferente de zero, um primeiro sinalizador é sinalizado para indicar se a precisão MV de um quarto de amostra luma é usada para a CU. Quando o primeiro sinalizador (que é igual a 1) indica que a precisão MV de um quarto de amostra luma não é usada, outro sinalizador é sinalizado para indicar se a precisão MV da amostra luma inteiro ou a precisão MV de quatro amostras luma é usada.
[0338] Quando um primeiro sinalizador de resolução MVD de uma CU é zero, ou não codificado para uma CU (isto significa que todos os MVDs para a CU são zero), uma resolução MV de um quarto de amostra luma é usada para a CU. Quando a precisão MV da amostra luma inteira ou precisão MV de quatro amostras luma é usada para uma CU, uma MVP em uma lista de candidatos AMVP para a CU é arredondada para a precisão correspondente.
[0339] Em um codificador, uma verificação RD de nível CU é usada para determinar que a resolução MVD deve ser usada para uma CU. Isto é, a verificação RD de nível CU é realizada três vezes para cada resolução MVD.
[0340] Módulo de interpolação de amostra parcial
[0341] Quando um vetor de movimento aponta para uma posição de amostra parcial, a interpolação compensada de movimento é necessária. Para a filtragem de interpolação de luma, um filtro de interpolação com base em DCT separável de 8 derivações é usado para 2/4 de precisão de amostra, e um filtro de interpolação com base em DCT separável de 7 derivações é usado para 1/4 de amostra de precisão, como mostrado na tabela 1.2 Tabela 1.2 Posição Coeficientes de filtro 1/4 {-1, 4, -10, 58, 17, -5, 1} 2/4 {-1, 4, -11, 40, 40, -11, 4, -1} 3/4 {1, -5, 17, 58, -10, 4, -1}
[0342] Similarmente, um filtro de interpolação com base em DCT separável de 4 variações é usado para um filtro de interpolação croma, como mostrado na tabela 1.3. Tabela 1.3 Posição Coeficientes de filtro 1/8 {-2, 58, 10, -2} 2/8 {-4, 54, 16, -2} 3/8 {-6, 46, 28, -4} 4/8 {-4, 36, 36, -4} 5/8 {-4, 28, 46, -6} 6/8 {-2, 16, 54, -4} 7/8 {-2, 10, 58, -2}
[0343] Para interpolação vertical para 4:2:2 e interpolação horizontal e vertical para canais de croma 4:4:4, posições ímpares na tabela 1.3 não são usadas, resultando na 1/4ésima interpolação croma.
[0344] Para bi-predição, uma profundidade de bits de uma saída de um filtro de interpolação é mantida com a precisão de 14 bits, independentemente de uma profundidade de bits de origem, antes de do cálculo da média de dois sinais de predição. Um processo de média real é realizado implicitamente com um processo de redução de profundidade de bits como a seguir: predSamples [ x, y ] = ( predSamplesL0 [ x, y ] + predSamplesL1[ x, y ] + offset ) >> shift (1,9) shift= 15 − BitDepth (1,10) offset = 1 << ( shift − 1) (1,11)
[0345] Para reduzir a complexidade, a interpolação bi-linear em vez da interpolação HEVC regular de 8 derivações é usada tanto para a correspondência bilateral quanto para a correspondência de modelo.
[0346] O cálculo de um custo de correspondência é um bit diferente em diferentes etapas. Quando um candidato é selecionado de um candidato definido em um nível CU, o custo de correspondência é uma SAD da correspondência bilateral ou correspondência de modelo. Depois de um MV inicial ser determinado, um custo de correspondência C da correspondência bilateral em uma pesquisa de nível de sub-CU é calculado como a seguir: ( C= SAD + w ⋅ MVx − MVxs + MVy − MVys ) (1,12)
[0347] w representa um fator de ponderação que é empiricamente definido como 4, e MV e MV indicam um MV atual e o MV inicial, s respectivamente. Uma SAD ainda é usada como um custo de correspondência da correspondência de modelo em uma pesquisa de nível de sub-CU.
[0348] Em um modo FRUC, um MV é derivado por meio do uso de apenas uma amostra luma. O vetor de movimento derivado deve ser usado tanto para luma quanto para croma para predição inter de MC. Depois do MV ser determinado, o MC final é realizado por meio do uso de um filtro de interpolação de 8 derivações para luma e um filtro de interpolação de 4 derivações para croma.
[0349] Módulo de compensação de movimento
[0350] Compensação de movimento de bloco sobreposto
[0351] A compensação de movimento de bloco sobreposto (Overlapped Block Motion Compensation, OBMC) é realizada para todos os limites do bloco de compensação de movimento (motion compensation, MC) exceto os limites direito e inferior de uma CU no desenvolvimento atual. Além disso, a compensação de movimento de bloco é aplicada tanto para componentes luma quanto para croma. Um bloco MC corresponde a um bloco de codificação. Quando uma CU é codificada com base em um modo de sub- CU (incluindo mesclagem sub-CU, afim e modos FRUC), cada sub-bloco da CU é um bloco MC. Para processar um limite CU de uma forma uniforme, OBMC é realizada em um nível de sub-bloco para todos os limites de bloco MC, onde um tamanho de sub-bloco é definido como igual a 4 × 4.
[0352] Quando OBMC se aplica a um sub-bloco atual, além de um vetor de movimento atual, se os vetores de movimento de quatro sub-blocos vizinhos conectados estiverem disponíveis e não forem idênticos ao vetor de movimento atual, os vetores de movimento dos quatro sub-blocos vizinhos conectados também são usados para derivar um bloco de predição para o sub- bloco atual. Uma pluralidade destes blocos de predição com base em uma pluralidade de vetores de movimento é combinada para gerar um sinal de predição final do sub-bloco atual.
[0353] Um bloco de predição com base em um vetor de movimento de um sub-bloco vizinho é denotado como PN, onde N representa um índice de um sub-bloco vizinho superior, inferior, esquerdo ou direito e um bloco de predição com base no vetor de movimento do sub-bloco atual é denotado como PC. Quando PN é fundamentado nas informações de movimento de um sub- bloco vizinho que inclui as mesmas informações de movimento que as do sub- bloco atual, OBMC não é realizada a partir de PN. De outro modo, a cada amostra de PN é adicionada a uma mesma amostra em PC. Isto é, quatro linhas/colunas de PN são adicionados a PC. Os fatores de ponderação {1/4, 1/8, 1/16, 1/32} são usados para PN e os fatores de ponderação {3/4, 7/8, 15/16, 31/32} são usados para PC. Uma exceção é um pequeno bloco MC (isto é, quando uma altura ou largura de um bloco de codificação é igual a 4 ou uma
CU é codificada com base no modo de sub-CU), e para tal bloco, apenas duas linhas/colunas de PN são adicionadas a PC. Neste caso, os fatores de ponderação {1/4, 1/8} são usados para PN, e os fatores de ponderação {3/4, 7/8} são usados para PC. Para PN gerada com base em um vetor de movimento de um sub-bloco vizinho verticalmente (horizontalmente), as amostras em uma mesma linha (coluna) de PN são adicionadas a PC com um mesmo fator de ponderação.
[0354] No desenvolvimento atual, para uma CU com um tamanho menor do que ou igual a 256 amostras luma, um sinalizador de nível CU é sinalizado para indicar se OBMC é aplicada ou não a CU atual. Para uma CU com um tamanho maior do que 256 amostras luma ou uma CU não codificada com base em um modo AMVP, OBMC é aplicada por padrão. Em um codificador, quando OBMC é aplicada a uma CU, o impacto da OBMC é levado em consideração em um estágio de estimativa de movimento. Um sinal de predição formado através de OBMC por meio do uso das informações de movimento de um bloco vizinho superior e um bloco vizinho esquerdo é usado para compensar limites superior e esquerdo de um sinal original da CU atual, e, em seguida, o processamento de estimativa de movimento normal é aplicado.
[0355] Ferramentas de otimização
[0356] Compensação de iluminação local
[0357] A compensação de iluminação local (Local Illumination Compensation, LIC) é fundamentada em um modelo linear para alterações de iluminação, usando um fator de escala a e um deslocamento b. A compensação de iluminação local é habilitada ou desabilitada adaptativamente para cada unidade de codificação (coding unit, CU) do modo codificado inter.
[0358] Quando LIC é aplicada a uma CU, um método de erro quadrático mínimo é utilizado para derivar os parâmetros a e b por meio do uso de uma amostra vizinha de uma CU atual e uma amostra de referência correspondente. Uma amostra vizinha subexperimentada (subamostragem 2:1) da CU e uma amostra correspondente (identificada pelas informações de movimento da CU atual ou sub-CU) em uma imagem de referência são usadas. Os parâmetros LIC são derivados e aplicados a cada direção de predição separadamente.
[0359] Quando uma CU é codificada com base em um modo de mesclagem, um sinalizador LIC é copiado de um bloco vizinho de uma maneira similar à cópia de informações de movimento no modo de mesclagem. De outro modo, um sinalizador LIC é sinalizado para a CU para indicar se LIC é aplicada ou não.
[0360] Quando LIC é habilitada para uma imagem, uma verificação RD de nível CU adicional é necessária para determinar se LIC é aplicada ou não a uma CU. Quando LIC é habilitada para uma CU, uma soma média removida da diferença absoluta (mean-removed sum of absolut difference, MR- SAD) e uma soma média removida da diferença transformada de Hadamard absoluta (mean-removed sum of absolute Hadamard-transformed difference, MR-SATD) são usadas, em vez de SAD e SATD, para uma pesquisa de movimento de pel inteiro e uma pesquisa de movimento de parcial, respectivamente.
[0361] Fluxo óptico bi-direcional
[0362] O fluxo óptico bi-direcional (Bi-directional Optical flow, BIO) é a distinção de movimento em forma de amostra realizada na parte superior da compensação de movimento em forma de bloco para bi-predição. A distinção de movimento de nível de amostra não usa sinalização. (k )
[0363] Seja I um valor luma de uma referência k (onde k = 0, 1) (k ) (k ) depois do bloco compensação de movimento, e ∂I / ∂x e ∂I / ∂y representa (k ) um componente horizontal e um componente de vertical o gradiente I , respectivamente. Assumindo que o fluxo óptico é válido, um campo de vetor de movimento ( v , v ) é determinado, de acordo com a Equação (1,13): x y ∂I ( k ) / ∂t + vx ∂I ( k ) / ∂x + v y ∂I ( k ) / ∂y = 0 (1,13)
[0364] A combinação desta equação de fluxo óptico com interpolação de Hermit para uma trajetória de movimento de cada amostra resulta em um polinômio de terceira ordem exclusivo que corresponde tanto a (k ) (k ) um valor de função I (k ) quanto a derivados ∂I / ∂x e ∂I / ∂y nas extremidades. Um valor deste polinômio em t = 0 é um valor de predição BIO: ( ( ) ( pred BIO= 1/ 2 ⋅ I ( 0) + I (1) + vx / 2 ⋅ τ 1∂I (1) / ∂x − τ 0 ∂I ( 0) / ∂x + v y / 2 ⋅ τ 1∂I (1) / ∂y − τ 0 ∂I ( 0) / ∂y )) (1,14)
[0365] Neste relatório, τ 0 e τ 1 denotam as distâncias de um quadro de referência. As distâncias τ 0 e τ 1 são calculadas com base em POCs para Ref0 e Ref1: τ 0 = POC (atual) - POC (Ref0), τ 1 = POC (Ref1) - POC (atual). Se ambas as predições vêm de uma mesma direção de tempo (tanto do passado quanto do futuro), os sinais são diferentes (isto é, τ 0 ⋅τ 1 < 0 ). Neste caso, BIO é aplicado apenas se as predições não forem do mesmo momento (isto é, τ 0 ≠ τ 1 ), ambas as regiões referenciadas têm os vetores de movimento diferentes de zero ( MVx0 , MVy0 , MVx1 , MVy1 ≠ 0 ), e os vetores de movimento de blocos são proporcionais às distâncias temporais ( MVx0 / MVx1 = MVy0 / MVy1 = −τ 0 / τ 1 ).
[0366] O campo de vetor de movimento (v , v ) x y é determinado minimizando uma diferença Δ entre valores nos pontos A e B (interseção de uma trajetória de movimento e planos de quadro de referência). O modelo usa apenas um primeiro termo linear de uma expansão local de Taylor para ∆: ∆= (I ( 0) ( ) ( − I 0( ) + vx τ 1∂I ( ) / ∂x + τ 0 ∂I ( ) / ∂x + v y τ 1∂I ( ) / ∂y + τ 0 ∂I ( ) / ∂y 1 1 0 1 0 )) (1,15)
[0367] Todos os valores na Equação (1,15) dependem de uma localização de amostra ( i , j ) , que foi omitida da notação até agora. Assumindo ' ' que o movimento é compatível em uma região circundante local, ∆ é minimizado dentro de uma janela quadrada (2M + 1) × (2M + 1)) Ω centrada em um ponto predito atual ( i, j ) , onde M é igual a 2: ( vx , v y ) arg min = vx , v y ∑ ∆ 2 i ' , j '  i ' , j ∈Ω   (1,16)
[0368] Para este problema de otimização, o desenvolvimento atual usa um método simplificado fazendo a minimização primeiro em uma direção vertical e, em seguida, em uma direção horizontal. O seguinte é obtido:  s3  vx = ( s1 + r ) > m ? clip3  −thBIO, thBIO, − :0  ( s1 + r )  (1,17)  s −v s / 2 v y = ( s5 + r ) > m ? clip3  −thBIO, thBIO, − 6 x 2  : 0  ( s5 + r )  (1,18)
onde ∑ (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) 2 1 0 =s1 1 0 i ' , j ∈Ω   =s3 ∑ ( I ( ) − I ( ) ) (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) i ' , j ∈Ω 1 0 1 1 0 0   =s2 ∑ (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) i ' , j ∈Ω 1 1 0 0 1 1 0 0   ∑ (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) 2 1 0 =s5 1 0 i ' , j ∈Ω   =s6 ∑ ( I ( ) − I ( ) ) (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) i ' , j ∈Ω 1 0 1 1 0 0   (1,19)
[0369] Para evitar a divisão por zero ou um valor muito pequeno, os parâmetros de regularização r e m são introduzidos nas Equações (1,17) e (1,18). r 500 ⋅ 4d −8 (1,20) = m 700 ⋅ 4d −8 (1,21) =
[0370] Neste relatório d representa uma profundidade de bits de uma amostra de vídeo.
[0371] Para manter o acesso à memória para BIO igual ao acesso à memória para compensação de movimento bi-preditiva regular, todas as ( ) ( ) ( ) k k k predições e valores de gradiente I , ∂I / ∂x, ∂I / ∂y são calculados apenas para posições dentro de um bloco atual. Na Equação (1,19), a janela quadrática (2M + 1) × (2M + 1) Ω centrada no ponto de predição atual em um limite de um bloco de predição necessita acessar uma posição fora do bloco. ( ) ( ) ( ) k k k No desenvolvimento atual, os valores de I , ∂I / ∂x, ∂I / ∂y fora do bloco são definidos como iguais ao valor mais próximo disponível dentro do bloco. Por exemplo, isto pode ser implementado como preenchimento.
[0372] Com BIO, é possível que um campo de movimento seja refinado para cada amostra. Entretanto, para reduzir a complexidade computacional, um projeto com base no bloco de BIO pode ser usado. A distinção de movimento é calculada com base em um bloco 4 × 4. No BIO com base no bloco, os valores de sn na Equação (1,19) de todas as amostras em um bloco 4 × 4 são agregados e, em seguida, os valores agregados de sn são usados para derivar um deslocamento de vetor de movimento BIO para o bloco 4 × 4. A seguinte fórmula é usada para a derivação BIO com base no bloco: ∑ (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) 2 =s1,bk ∑ 1 1 0 0 ( x , y )∈bk i ' , j ∈Ω( x , y )   =s3,bk ∑ ∑ ( I ( ) − I ( ) ) (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) 1 0 1 1 0 0 ( x , y )∈bk i ' , j ∈Ω   =s2,bk ∑ ∑ (τ ∂I ( ) / ∂x + τ ∂I ( ) / ∂x ) (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) 1 1 0 0 1 1 0 0 ( x , y )∈bk i ' , j ∈Ω   ∑ ∑ (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) 2 1 0 =s5,bk 1 0 ( ) x , y ∈bk i ' , j ∈Ω   =s6,bk ∑ ∑ ( I ( ) − I ( ) ) (τ ∂I ( ) / ∂y + τ ∂I ( ) / ∂y ) 1 0 1 1 0 0 ( x , y )∈bk i ' , j ∈Ω   (1,22)
[0373] bk denota um conjunto de amostras que pertence a um késimo bloco 4 × 4 do bloco de predição. sn nas Equações (1,17) e (1,18) é substituído por ((sn, bk) >> 4) para derivar um deslocamento de vetor de movimento associado.
[0374] Em alguns casos, o regimento MV de BIO pode não ser confiável devido ao ruído ou movimento irregular. Portanto, em BIO, uma magnitude do regimento MV é recortada para um thBIO limite. O limite é determinado com base em se as imagens de referência de uma imagem atual forem todas de uma direção. Se todas as imagens de referência da imagem 14 − d atual forem de uma direção, um valor do limite é definido como 12 × 2 ; de 13− d outro modo, o valor é definido como 12 × 2 .
[0375] Um gradiente para BIO é calculado no mesmo momento com a interpolação de compensação de movimento por meio do uso de uma operação compatível com um processo de compensação de movimento HEVC (uma FIR 2D separável). Uma entrada da FIR 2D separável é a mesma amostra de quadro de referência que um processo de compensação de movimento e uma posição parcial (fracX, fracY), de acordo com uma parte parcial de um vetor de movimento de bloco. Em caso de um sinal de gradiente horizontal ∂I / ∂x , primeiramente, a interpolação vertical é realizada por meio do uso de BIOfilterS correspondente à posição parcial fracY com mudança de escala d - 8 e, em seguida, um filtro de gradiente BIOfilterG é aplicado em uma direção horizontal correspondente à posição parcial fracX com mudança de escala em 18 - d.
Em caso de um gradiente vertical ∂I / ∂y , primeiramente, um filtro de gradiente é aplicado verticalmente por meio do uso de BIOfilterG correspondente à posição parcial fracY com mudança de escala d - 8 e, em seguida, o deslocamento de sinal é realizado por meio do uso de BIOfilterS em uma direção horizontal correspondente à posição parcial fracX com mudança de escala em 18 - d.
Os comprimentos de filtros de interpolação para o cálculo de gradiente BIOfilterG e o deslocamento de sinal BIOfilterS são menores (6 variações) para manter a complexidade apropriada.
A Tabela 1.4 mostra um filtro usado para o cálculo de gradiente em diferentes posições parciais de um vetor de movimento de bloco em BIO.
A Tabela 1.5 mostra um filtro de interpolação para a geração de sinal de predição em BIO.
Tabela 1.4 Posição de pel parcial Filtro de interpolação para gradiente (BIOfilterG) 0 {8, -39, -3, 46, -17, 5} 1/16 {8, -32, -13, 50, -18, 5} 1/8 {7, -27, -20, 54, -19, 5} 3/16 {6, -21, -29, 57, -18, 5} 1/4 {4, -17, -36, 60, -15, 4} 5/16 {3, -9, -44, 61, -15, 4} 3/8 {1, -4, -48, 61, -13, 3} 7/16 {0, 1, -54, 60, -9, 2} 1/2 {-1, 4, -57, 57, -4, 1} Tabela 1.5 Posição de pel parcial Filtro de interpolação para o sinal de predição (BIOfilterS) 0 {0, 0, 64, 0, 0, 0} 1/16 {1, -3, 64, 4, -2, 0} 1/8 {1, -6, 62, 9, -3, 1} 3/16 {2, -8, 60, 14, -5, 1} 1/4 {2, -9, 57, 19, -7, 2} 5/16 {3, -10, 53, 24, -8, 2} 3/8 {3, -11, 50, 29, -9, 2} 7/16 {3, -11, 44, 35, -10, 3}
Posição de pel parcial Filtro de interpolação para o sinal de predição (BIOfilterS) 1/2 {3, -10, 35, 44, -11, 3}
[0376] No desenvolvimento atual, BIO é aplicado a todos os blocos bi-preditivos quando duas predições são de diferentes imagens de referência. Quando LIC é habilitada para uma CU, BIO é desabilitado. OBMC é aplicada a um bloco depois de um processo MC normal. Para reduzir a complexidade computacional, BIO não é aplicado em um processo OBMC. Isto significa que BIO é apenas aplicado no processo MC em um bloco quando um MV do bloco é usado, mas não é aplicado no processo MC quando um MV de um bloco vizinho é usado no processo OBMC.
[0377] Módulo de predição de amostra ponderada
[0378] Como uma ferramenta opcional, uma ferramenta de predição ponderada (weighted prediction, WP) é fornecida em HEVC. Um princípio de WP é substituir um sinal de predição inter P para um sinal de predição ponderada linear P' (com um peso w e um deslocamento o): uni-predição: P' = w × P + o(1,23) bi-predição: P' = (w0 × P0 + o0 + w1 × P1 + o1)/2(1,24)
[0379] Um peso aplicável e um deslocamento aplicável são selecionados por um codificador e são transportados dentro de um fluxo de bits. Os sufixos L0 e L1 definem uma lista 0 e uma lista 1 de listas de imagens de referência, respectivamente. Para um filtro de interpolação, uma profundidade de bits é mantida para a precisão de 14 bits antes que os sinais de predição sejam calculados.
[0380] Em um caso de bi-predição com pelo menos uma imagem de referência disponível em cada uma da lista L0 e L1, a seguinte fórmula é aplicada à sinalização explícita de um parâmetro de predição ponderado refere- se a um canal luma. Uma fórmula correspondente é aplicada a um canal croma e a um caso de uni-predição. predSamples [ x ][ y ] =   predSamplesL0 [ x ][ y ] * w0 + predSamplesL1[ x ][ y ] * w1 +   Clip3  0, (1 << bitDepth ) − 1,   >> ( log 2WD + 1)    ( ( o0 + o1 + 1) << log 2WD )       (1,25) onde
=log 2WD luma _ log 2 _ weight _ denom + 14 − bitDepth , w0 = LumaWeightL0 [ refIdxL0] w1 = LumaWeightL1[ refIdxL1] , , o0 = luma _ offset _ l 0 [ refIdxL0] * highPrecisionScaleFactor , o1 = luma _ offset _ l1[ refIdxL1 ] * highPrecisionScaleFactor , highPrecisionScaleFactor= (1 << ( bitDepth − 8 ) ) .
[0381] Um filtro de predição de limite (Boundary prediction filters) é um método de codificação intra usado para ajustar adicionalmente as amostras de predição em uma coluna à esquerda e uma linha superior. Em HEVC, depois de um bloco de predição intra ser gerado para um modo intra vertical ou horizontal, as amostras de predição na parte da coluna à esquerda e da linha superior são ajustadas adicionalmente, respectivamente. Este método pode ser estendido adicionalmente a vários modos intra diagonais, e as amostras de limite até as quatro colunas ou linhas são ajustadas adicionalmente por meio do uso de um filtro de 2 variações (para modos intra 2 e 34) ou um filtro de 3 variações (para modos intra 3 a 6 e 30 a 33).
[0382] No padrão HEVC e padrões anteriores, os quadros de referência são classificados em dois grupos: um quadro de referência para frente e um quadro de referência para trás e são, respectivamente, colocados em duas listas de quadros de referência (lista de imagens de referência). As duas listas de quadros de referência são usualmente chamadas de uma lista 0 e uma lista 1. Uma direção de predição inter é usada para indicar que a direção predição na predição direta, predição indireta ou bi-predição é usada para um bloco atual, e uma lista de quadros de referência diferente, isto é, a lista 0, a lista 1 ou tanto a lista 0 quanto a lista 1, são selecionadas com base na direção de predição. Um quadro de referência na lista de quadros de referência selecionada é indicado por um índice de quadro de referência. Um vetor de movimento é usado para indicar um deslocamento de posição de um bloco de referência de um bloco de predição do bloco atual no quadro de referência selecionado, em relação ao bloco atual em um quadro atual. Em seguida, um bloco final de predição é gerado com base na direção de predição por meio do uso de um bloco de predição obtido de um quadro de referência na lista 0, na lista 1 ou tanto na lista 0 quanto na lista 1. Quando a direção de predição é uni- predição, o bloco de predição obtido do quadro de referência na lista 0 ou na lista 1 é diretamente usado. Quando a direção de predição é bi-predição, os blocos de predição obtidos dos quadros de referência tanto na lista 0 quanto na lista 1 são sintetizados através da média ponderada para obter o bloco final de predição.
[0383] Para resolver os problemas na tecnologia convencional em que as amostras de predição obtidas com base em um modo de predição inter são espacialmente descontínuas, a eficácia de predição é afetada e a energia residual de predição é relativamente alta, as modalidades deste pedido fornecem um método de predição inter, para filtrar uma amostra de predição por meio do uso de uma amostra reconstruída vizinha depois da amostra de predição ser gerada e melhorar a eficácia de codificação.
[0384] A FIG. 13 é um fluxograma esquemático de um método de predição inter, de acordo com uma modalidade deste pedido. Como mostrado na FIG. 13, o método inclui as etapas S1301 a S1307.
[0385] S1301: Analisar um fluxo de bits para obter as informações de movimento de um bloco de imagem a ser processado.
[0386] O bloco de imagem a ser processado pode ser referido como um bloco atual ou uma CU atual.
[0387] Pode ser entendido que a etapa S1301 pode ser realizada pelo decodificador de vídeo 200 na FIG. 1.
[0388] Por exemplo, nesta modalidade deste pedido, uma tecnologia de compensação de movimento com base no bloco pode ser usada para pesquisar blocos codificados para um bloco de correspondência ideal de um bloco de codificação atual, de modo que um resíduo entre um bloco de predição e o bloco atual seja o menor possível; e usada para calcular um deslocamento MV do bloco atual.
[0389] Por exemplo, o bloco de imagem a ser processado pode ser qualquer bloco em uma imagem e um tamanho do bloco de imagem a ser processado pode ser 2 x 2, 4 x 4, 8 x 8, 16 x 16, 32 x 32, 64 x 64 ou 128 x 128. Isto não é limitado nesta modalidade deste pedido.
[0390] Por exemplo, se o bloco de imagem a ser processado (o bloco atual) for codificado em um lado do codificador com base em um modo de mesclagem (merge), um candidato espacial e um candidato temporal do bloco atual podem ser adicionados a uma lista de candidatos de informações de movimento de mesclagem para o bloco atual. Um método é mesmo que um método em HEVC. Por exemplo, qualquer uma das tecnologias descritas na FIG. 8 a FIG. 12 podem ser usadas como um método específico para a obtenção de uma lista de candidatos de informações de movimento de mesclagem.
[0391] Por exemplo, se um modo de mesclagem for usado para o bloco atual, as informações de movimento do bloco atual são determinadas com base em um índice de mesclagem transportado no fluxo de bits. Se um modo MVP inter for usado para o bloco atual, as informações de movimento do bloco atual são determinadas com base em uma direção de predição inter, um índice de quadro de referência, um índice de valor de predição de vetor de movimento e um valor residual de vetor de movimento que são transmitidos no fluxo de bits.
[0392] A etapa S1301 pode ser realizada por meio do uso de um método em HEVC ou VTM ou pode ser realizada por meio do uso de outro método para gerar uma lista de candidatos de predição de vetor de movimento. Isto não é limitado nesta modalidade deste pedido.
[0393] S1302: (Opcionalmente) Determinar a atualização de um bloco de predição do bloco de imagem a ser processado.
[0394] Pode ser entendido que a etapa S1302 pode ser realizada pelo decodificador de vídeo 200 na FIG. 1.
[0395] O bloco de predição do bloco de imagem a ser processado é um bloco de predição do bloco atual e pode ser obtido com base em um ou mais blocos codificados.
[0396] Por exemplo, se a atualização do bloco de predição do bloco de imagem a ser processado pode ser determinada com base em um indicador de determinação de atualização do bloco de imagem a ser processado. Em outras palavras, se a realização da filtragem espacial no bloco de imagem a ser processado pude ser determinada com base no indicador de determinação de atualização do bloco de imagem a ser processado.
[0397] Em uma implementação viável, o fluxo de bits pode ser analisado para obter as informações de indicação de determinação de atualização do bloco de imagem a ser processado, onde as informações de indicação de determinação de atualização são usadas para indicar se deve atualizar o bloco de predição do bloco de imagem a ser processado; e é determinado adicionalmente, com base nas informações de indicação de determinação de atualização do bloco de imagem a ser processado, que o bloco de predição do bloco de imagem a ser processado deve ser atualizado.
[0398] Em outra implementação viável, as informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado podem ser obtidas, onde as informações de indicação de determinação de atualização predefinidas são usadas para indicar se deve atualizar o bloco de predição do bloco de imagem a ser processado; e é determinado adicionalmente, com base nas informações de indicação de determinação de atualização predefinidas que o bloco de predição do bloco de imagem a ser processado deve ser atualizado.
[0399] Por exemplo, se o indicador de determinação de atualização for verdadeiro, pode ser determinado que o bloco de predição do bloco de imagem a ser processado deve ser atualizado. Em outras palavras, é determinado que a filtragem espacial deve ser realizada no bloco de predição do bloco de imagem a ser processado. Se o indicador de determinação de atualização for falso, é determinado que o bloco de predição do bloco de imagem a ser processado não precisa ser atualizado. Uma forma específica do indicador de determinação de atualização não é limitada nesta modalidade deste pedido. Neste relatório, pelo fato de que o indicador de determinação de atualização é verdadeiro ou falso, é meramente usado como um exemplo para descrição.
[0400] S1303: (Opcionalmente) Determinar um modo de predição correspondente ao bloco de imagem a ser processado.
[0401] Pode ser entendido que a etapa S1303 pode ser realizada pelo decodificador de vídeo 200 na FIG. 1.
[0402] Por exemplo, o modo de predição correspondente ao bloco de imagem a ser processado pode ser um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP). Isto não é limitado nesta modalidade deste pedido. Pode ser entendido que o modo de predição correspondente ao bloco de imagem a ser processado pode ser apenas o modo de mesclagem, apenas o modo AMVP inter ou uma combinação do modo de mesclagem e do modo AMVP inter.
[0403] Deve ser observado que o modo de predição de vetor de movimento avançado inter (inter AMVP) também pode ser referido como um modo de predição de vetor de movimento inter (inter MVP).
[0404] Por exemplo, um método para a determinação do modo de predição correspondente ao bloco de imagem a ser processado pode ser: analisar o fluxo de bits para obter o modo de predição correspondente ao bloco de imagem a ser processado e determinar que o modo de predição correspondente ao bloco de imagem a ser processado é o modo de mesclagem e/ou o modo AMVP inter.
[0405] Pode ser entendido que, nesta modalidade deste pedido, um método de filtragem espacial pode ser realizado em um bloco codificado inter que foi codificado com base no modo de mesclagem e/ou no modo AMVP inter. Em outras palavras, o processamento de filtragem pode ser realizado, em um lado do decodificador durante a decodificação, em um bloco que foi codificado com base no modo de mesclagem e/ou no modo AMVP inter.
[0406] S1304: Realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter o bloco de predição do bloco de imagem a ser processado.
[0407] O bloco de predição da imagem a ser processada inclui um valor de predição de uma amostra alvo.
[0408] Pode ser entendido que a etapa S1304 pode ser realizada pelo decodificador de vídeo 200 na FIG. 1.
[0409] Por exemplo, durante a compensação de movimento, uma imagem parcial atual é predita e compensada com base em uma imagem de referência. Isto pode reduzir a redundância das informações de uma sequência de quadros.
[0410] Por exemplo, quando a compensação de movimento é realizada com base nas informações de movimento, o bloco de predição do bloco de imagem a ser processado pode ser obtido de um quadro de referência com base em uma direção de quadro de referência, um número de sequência de quadros de referência e um vetor de movimento. A direção de quadro de referência pode ser a predição direta, predição indireta ou bi-predição. Isto não é limitado nesta modalidade deste pedido.
[0411] Por exemplo, quando a direção de quadro de referência é a predição direta, uma imagem de referência pode ser selecionada de um conjunto de imagens de referência direito para uma unidade de codificação (CU) atual para obter um bloco de referência. Quando a direção de quadro de referência é a predição indireta, uma imagem de referência pode ser selecionada de um conjunto de imagens de referência indireto para uma unidade de codificação (CU) atual para obter um bloco de referência. Quando a direção de quadro de referência é bi-predição, uma imagem de referência pode ser selecionada de cada uma de um conjunto de imagens de referência direto e um conjunto de imagens de referência indireto para uma unidade de codificação (CU) atual para obter um bloco de referência.
[0412] Deve ser observado que, na etapa S1304, um método para realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento pode ser um método em HEVC ou VTM ou pode ser outro método para obter o bloco de predição do bloco de imagem a ser processado. Isto não é limitado nesta modalidade deste pedido.
[0413] S1306: Realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo.
[0414] A amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
[0415] Pode ser entendido que a etapa S1306 pode ser realizada pelo decodificador de vídeo 200 na FIG. 1.
[0416] Por exemplo, a amostra alvo é uma amostra no bloco de predição do bloco de imagem a ser processado e o valor de predição da amostra alvo pode ser determinado com base em um valor de amostra de uma amostra no bloco de referência.
[0417] Por exemplo, a amostra de referência pode ser uma amostra reconstruída que é espacialmente adjacente a CU atual (o bloco de imagem a ser processado). Especificamente, a amostra de referência pode ser uma amostra reconstruída em um bloco exceto o bloco CU atual na imagem. Por exemplo, a amostra de referência pode ser uma amostra reconstruída em um bloco CU acima ou na esquerda da CU atual. Isto não é limitado nesta modalidade deste pedido.
[0418] Pode ser entendido que, na etapa S1306, a filtragem espacial é realizada em uma amostra de predição da amostra alvo por meio do uso da amostra reconstruída que é espacialmente adjacente a CU atual. Especificamente, cálculo de ponderação é realizado na amostra de predição da amostra alvo no bloco atual e um valor de amostra da amostra reconstruída que é espacialmente adjacente a CU atual, para obter uma amostra de predição atualizada da amostra alvo.
[0419] Em uma implementação viável, uma ou mais amostras de referência podem incluir uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
[0420] Por exemplo, como mostrado na FIG. 14, um canto superior esquerdo da imagem é usado como uma origem de um sistema de coordenadas, uma direção de eixo X do sistema de coordenadas se estende para a direita ao longo de um lado superior da imagem e uma direção de eixo Y do sistema de coordenadas se estende a jusante ao longo de um lado esquerdo da imagem. Se as coordenadas da amostra alvo no bloco de imagem a ser processado (a CU atual) forem ( xP, yP ) , e as coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado forem ( xN , yN ) , uma amostra de referência da amostra alvo pode ser uma amostra reconstruída em um bloco acima ou na esquerda do bloco de imagem a ser processado. Se a amostra de referência for uma amostra reconstruída em um bloco acima do bloco de imagem a ser processado, pelo fato de que a amostra de referência é uma amostra reconstruída em um bloco exceto o bloco de imagem a ser processado, uma coordenada vertical da amostra de referência é um valor obtido para subtrair uma relação de posição predefinida N de uma coordenada vertical de um lado superior do bloco de imagem a ser processado, e uma coordenada horizontal da amostra de referência é a mesma que uma coordenada horizontal da amostra alvo no bloco de imagem a ser processado. Para ser específico, as coordenadas da amostra de referência são
( xP, yN − N ) . Se a amostra de referência for uma amostra reconstruída em um bloco na esquerda do bloco de imagem a ser processado, pelo fato de que a amostra de referência é uma amostra reconstruída em um bloco exceto o bloco de imagem a ser processado, uma coordenada horizontal da amostra de referência é um valor obtido para subtrair uma relação de posição predefinida M de uma coordenada horizontal à esquerda do bloco de imagem a ser processado, e uma coordenada vertical da amostra de referência é a mesma que uma coordenada vertical da amostra alvo no bloco de imagem a ser processado. Para ser específico, as coordenadas da amostra de referência são ( xN-M , yP ) . As relações de posição espacial específicas (valores específicos de M e N) entre a amostra de referência e a amostra alvo não são limitadas nesta modalidade deste pedido.
[0421] Em uma implementação viável, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula: predQ( xP, yP )   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) + (( w1 + w2) / 2)  , xN > 0, and yN =0 e  w1 + w2  w3* predP( xP, yP) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, and yN > 0 e  w3 + w4  w5* predP( xP, yP) + w6* recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, and yN > 0 e onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos de amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5 e w6 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0422] O seguinte descreve métodos específicos para calcular o valor de predição atualizado da amostra alvo com base em diferentes casos das coordenadas ( xN , yN ) da amostra superior esquerda do bloco de imagem a ser processado.
[0423] Em um primeiro caso, se xN for maior do que 0, yN é igual a 0 e a amostra de referência na posição ( xN − M 1, yP ) foi codificada e reconstruída, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) predQ ( xP, yP ) = w1 + w2
[0424] Por exemplo, como mostrado na FIG. 15, pelo fato de que um tamanho do bloco de imagem a ser processado é 16 x 16 é usado como um exemplo para descrição. Se o bloco de imagem a ser processado for uma CU 1, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 1) é (16,0 ) , e coordenadas da amostra alvo ( xP, yP ) no bloco de imagem a ser processado são (18,3) . Pelo fato de que a coordenada horizontal xN da amostra superior esquerda da CU atual (a CU 1) é maior do que 0 e a coordenada vertical yN da amostra superior esquerda da CU atual (a CU 1) é igual a 0, pode ser determinado que a CU atual está localizada no lado superior da imagem. Quando a filtragem espacial é realizada na amostra alvo na CU atual, pelo fato de que a CU atual está localizada no lado superior da imagem, e não há amostra reconstruída acima da CU atual, a amostra de referência é uma amostra reconstruída na esquerda da CU atual. A amostra de referência tem uma mesma coordenada vertical que a amostra alvo, e pode ser denotada como (16 − M 1,3) , onde M1 representa uma relação de posição espacial predefinida entre a amostra de referência e a amostra alvo. Neste relatório, pelo fato de que M1 é igual a 1 é usado como um exemplo para descrição. Quando M1 é igual a 1, a amostra de referência da amostra alvo (18,3) pode ser (15,3) . Do mesmo modo, qualquer amostra de referência da amostra alvo ( xP, yP ) pode ser ( xN -1, yP ) .
[0425] Se a amostra de referência na posição ( xN -1, yP ) for codificada e reconstruída, o cálculo de ponderação pode ser realizado no valor recon ( xN − 1, yP ) reconstruído da amostra de referência e no valor de predição predP ( xP, yP ) da amostra alvo, para obter o valor de predição atualizado predQ ( xP, yP ) da amostra alvo.
[0426] Em um segundo caso, se xN for igual a 0, yN é maior do que 0, e a amostra de referência na posição ( xP, yN -M 2 ) foi codificada e reconstruída, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: w3* predP ( xP, yP ) + w4* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w3 + w4
[0427] Por exemplo, como mostrado na FIG. 15, se o bloco de imagem a ser processado for uma CU 2, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 2) é ( 0,32 ) , e coordenadas da amostra alvo ( xP, yP ) são (8,35) . Pelo fato de que a coordenada horizontal xN da amostra superior esquerda da CU atual (a CU 2) é igual a 0, e a coordenada vertical yN da amostra superior esquerda da CU atual (a CU 2) é maior do que 0, pode ser determinado que a CU atual está localizada no lado esquerdo da imagem. Quando a filtragem espacial é realizada na amostra alvo na CU atual, pelo fato de que a CU atual está localizada no lado esquerdo da imagem, e não há amostra reconstruída na esquerda da CU atual, a amostra de referência é uma amostra reconstruída acima da CU atual. A amostra de referência tem uma mesma coordenada horizontal que a amostra alvo e pode ser denotada como (8,32 − M 2 ) , onde M2 representa uma relação de posição espacial predefinida entre a amostra de referência e a amostra alvo. Neste relatório, pelo fato de que M2 é igual a 1 é usado como um exemplo para descrição. Quando M2 é igual a 1, a amostra de referência da amostra alvo (8,35) pode ser (8,31) . Do mesmo modo, qualquer amostra de referência da amostra alvo ( xP, yP ) pode ser ( xP, yN -M 2 ) .
[0428] Se a amostra de referência na posição ( xP, yN -M 2 ) for codificada e reconstruída, o cálculo de ponderação pode ser realizado no valor recon ( xP, yN -M 2 ) reconstruído da amostra de referência e no valor de predP ( xP, yP ) predição da amostra alvo, para obter o valor de predição predQ ( xP, yP ) atualizado da amostra alvo.
[0429] Em um terceiro caso, se xN for maior do que 0, yN é maior do que 0 e as amostras de referência nas posições ( xN − M 1, yP ) e ( xP, yN -M 2 ) foram codificadas e reconstruídas, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: w5* predP ( xP, yP ) + w6* recon ( xN − M 1, yP ) + w7 * recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w5 + w6 + w7
[0430] Por exemplo, como mostrado na FIG. 15, se o bloco de imagem a ser processado for uma CU 3, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 3) é ( 48,32 ) , e coordenadas da amostra alvo ( xP, yP ) são ( 56,33) . Pelo fato de que a coordenada horizontal xN da amostra superior esquerda da CU atual (a CU 3) é maior do que 0, e a coordenada vertical yN da amostra superior esquerda da CU atual (a CU 3) é maior do que 0, pode ser determinado que a CU atual não está localizada em uma borda da imagem. Quando a filtragem espacial é realizada na amostra alvo na CU atual, as amostras de referência podem ser uma amostra reconstruída acima da CU atual e uma amostra reconstruída na esquerda da CU atual. Quando a amostra de referência é uma amostra reconstruída na esquerda da CU atual, a amostra reconstruída tem uma mesma coordenada vertical que a amostra alvo e pode ser ( xN − M 1,33) ; e quando a amostra de referência é uma amostra reconstruída acima da CU atual, a amostra reconstruída tem uma mesma coordenada horizontal que a amostra alvo e pode ser ( 56, yN− M 2 ) , onde M1 e M2, cada um, representam uma relação de posição espacial predefinida entre cada um das amostras de referência e da amostra alvo. Neste relatório, pelo fato de que tanto M1 quanto
M2 são iguais a 1 é usado como um exemplo para descrição. Quando tanto M1 quanto M2 são iguais a 1, as amostras de referência da amostra alvo ( 56,33) podem ser ( 47,33) e ( 56,31) . Do mesmo modo, quaisquer amostras de referência da amostra alvo ( xP, yP ) podem ser ( xN − M 1, yP ) e ( xP, yN -M 2 ) .
[0431] Se as amostras de referência nas posições ( xN − M 1, yP ) e ( xP, yN -M 2 ) forem codificadas e reconstruídas, o cálculo de ponderação pode recon ( xN − M 1, yP ) ser realizado nos valores reconstruídos e recon ( xP, yN -M 2 ) das amostras de referência e no valor de predição predP ( xP, yP ) da amostra alvo, para obter o valor de predição atualizado predQ ( xP, yP ) da amostra alvo.
[0432] Deve ser observado que valores dos coeficientes de ponderação w1, w2, w3, w4, w5 e w6 e valores de M1 e M2 não são limitados nesta modalidade deste pedido e pelo fato de que tanto M1 quanto M2 são iguais a 1 é meramente usado como um exemplo.
[0433] Por exemplo, um conjunto de coeficientes de ponderação (w1, w2), (w3, w4) ou (w5, w6, w7) pode ser uma combinação de valores de w1 + w2, w3 + w4 ou w5 + w6 + w7, onde w1 + w2, w3 + w4 ou w5 + w6 + w7 é igual a 2 elevado à potência de um número inteiro. Desta maneira, uma operação de divisão não é mais realizada. Por exemplo, uma combinação de valores, tal como (6, 2), (5, 3), (4, 4), (6, 1, 1) ou (5, 2, 1) pode ser usada. Isto não é limitado nesta modalidade deste pedido e a combinação de valores enumerada neste relatório é meramente usada como um exemplo para descrição.
[0434] Em outra implementação viável, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são
( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos de amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2 e w3 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0435] Por exemplo, um conjunto de coeficientes de ponderação (w1, w2, w3) pode ser uma combinação de valores de w1 + w2 + w3, onde w1 + w2 + w3 é igual a 2 elevado à potência de um número inteiro. Desta maneira, uma operação de divisão não é mais realizada. Por exemplo, uma combinação de valores, tal como (6, 1, 1) ou (5, 2, 1) pode ser usada. Isto não é limitado nesta modalidade deste pedido e a combinação de valores enumerada neste relatório é meramente usada como um exemplo para descrição.
[0436] Deve ser observado que uma diferença entre esta implementação e a implementação anterior reside em que uma amostra na esquerda do bloco de imagem a ser processado e uma amostra acima do bloco de imagem a ser processado não são consideradas nesta implementação. Quando esta implementação é usada para atualizar o valor de predição da amostra alvo, e os valores reconstruídos das amostras de referência estão indisponíveis, um método nas seguintes etapas S13061 e S13062 pode ser usado para obter uma nova amostra de referência e atualizar o valor de predição da amostra alvo com base na nova amostra de referência.
[0437] Em outra implementação viável, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula:
predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and e yN = 0 w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, and e yN > 0  w4 + w5 + w6  w7 * predP( xP, yP) + w8* recon( xN − M 1, yP) + w9* recon( xN − M 2, yP) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w 8 + w 9 + w10 + w 11  xN > 0, and e yN > 0 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos de amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 e w11 são constantes predefinidas e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0438] O seguinte descreve especificamente métodos para calcular o valor de predição atualizado da amostra alvo com base em diferentes casos das coordenadas ( xN , yN ) da amostra superior esquerda do bloco de imagem a ser processado.
[0439] Em um primeiro caso, se xN for maior do que 0, yN é igual a 0 e as amostras de referência nas posições ( xN − M 1, yP ) e ( xN − M 2, yP ) foram codificadas e reconstruídas, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula:
w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) predQ ( xP, yP ) = w1 + w2 + w3
[0440] Pode ser entendido que, uma diferença entre este caso nesta implementação e o primeiro caso na primeira implementação reside em que existem duas amostras de referência nesta implementação. Se o bloco de imagem a ser processado for uma CU 1, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 1) é (16,0 ) , e coordenadas da amostra alvo ( xP, yP ) no bloco de imagem a ser processado são (18,3) . As amostras de referência são amostras reconstruídas na esquerda da CU atual. As amostras de referência, cada uma, têm uma mesma coordenada vertical que a amostra alvo e pode ser denotada como (16 − M 1,3) e (16 − M 2,3) , onde M1 e M2, cada um, representa uma relação de posição espacial predefinida entre cada um das amostras de referência e da amostra alvo. Neste relatório, pelo fato de que M1 é igual a 1 e M2 é igual a 2 é usado como um exemplo para descrição. Quando M1 é igual a 1 e M2 é igual a 2, as amostras de referência da amostra alvo (18,3) podem ser (15,3) e (14,3) . Do mesmo modo, quaisquer amostras de referência da amostra alvo ( xP, yP ) podem ser ( xN -1, yP ) e ( xN-2, yP ) .
[0441] Se as amostras de referência nas posições ( xN -1, yP ) e ( xN-2, yP ) forem codificadas e reconstruídas, o cálculo de ponderação pode ser recon ( xN − 1, yP ) recon ( xN − 2, yP ) realizado nos valores reconstruídos e das predP ( xP, yP ) amostras de referência e no valor de predição da amostra alvo, predQ ( xP, yP ) para obter o valor de predição atualizado da amostra alvo.
[0442] Em um segundo caso, se xN for igual a 0, yN é maior do que 0, e as amostras de referência nas posições ( xP, yN − M 3) e ( xP, yN − M 4 ) foram codificadas e reconstruídas, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: w4* predP ( xP, yP ) + w5* recon ( xP, yN − M 3) + w6* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w4 + w5 + w6
[0443] Por exemplo, uma diferença entre este caso nesta implementação e o segundo caso na primeira implementação reside em que existem duas amostras de referência nesta implementação. Se o bloco de imagem a ser processado for uma CU 2, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 2) é ( 0,32 ) , e coordenadas da amostra alvo ( xP, yP ) são (8,35) . As amostras de referência são amostras reconstruídas acima da CU atual. As amostras de referência, cada uma, têm uma mesma coordenada horizontal que a amostra alvo e podem ser denotadas como (8,32 − M 3) e (8,32 − M 4 ) , onde M3 e M4, cada um, representa uma relação de posição espacial predefinida entre cada um das amostras de referência e da amostra alvo. Neste relatório, pelo fato de que M3 é igual a 1 e M4 é igual a 2 é usado como um exemplo para descrição. Quando M3 é igual a 1 e M4 é igual a 2, as amostras de referência da amostra alvo (8,35) podem ser (8,31) e (8,30 ) . Do mesmo modo, quaisquer amostras de referência da amostra alvo ( xP, yP ) podem ser ( xP, yN-1) e ( xP, yN − 2 ) .
[0444] Se as amostras de referência nas posições ( xP, yN-1) e ( xP, yN − 2 ) forem codificadas e reconstruídas, o cálculo de ponderação pode recon ( xP, yN -1) recon ( xP, yN − 2 ) ser realizado nos valores reconstruídos e predP ( xP, yP ) das amostras de referência e no valor de predição da amostra predQ ( xP, yP ) alvo, para obter o valor de predição atualizado da amostra alvo.
[0445] Em um terceiro caso, se xN for maior do que 0, yN é maior do que 0 e as amostras de referência nas posições ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) foram codificadas e reconstruídas, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: w7 * predP ( xP, yP ) + w8* recon ( xN − M 1, yP ) + w9* recon ( xN − M 2, yP ) + w10* recon ( xP, yN − M 3) + w11* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w7 + w8 + w9 + w10 + w11
[0446] Por exemplo, uma diferença entre este caso nesta implementação e o terceiro caso na primeira implementação reside em que existem duas amostras reconstruídas como amostras de referência acima da CU atual e existem duas amostras reconstruídas como amostras de referência na esquerda da CU atual nesta implementação. Se o bloco de imagem a ser processado for uma CU 3, uma amostra superior esquerda ( xN , yN ) do bloco de imagem a ser processado (a CU 3) é ( 48,32 ) , e coordenadas da amostra alvo ( xP, yP ) são ( 56,33) . Quando as amostras de referência são amostras reconstruídas na esquerda da CU atual, as amostras reconstruídas, cada uma, têm uma mesma coordenada vertical que a amostra alvo, e podem ser ( 48 − M 1,33) e ( 48 − M 2,33) ; e quando as amostras de referência são amostras reconstruídas acima da CU atual, as amostras reconstruídas, cada uma, têm uma mesma coordenada horizontal que a amostra alvo, e podem ser ( 56,32 − M 3) e ( 56,32 − M 4 ) , onde M1, M2, M3 e M4, cada um, representa uma relação de posição espacial predefinida entre cada um das amostras de referência e da amostra alvo. Neste relatório, pelo fato de que tanto M1 quanto M3 são iguais a 1 e tanto M2 quanto M4 são iguais a 2 são usados como um exemplo para descrição. Quando tanto M1 quanto M3 são iguais a 1 e tanto M2 quanto M4 são iguais a 2, as amostras de referência da amostra alvo ( 56,33) podem ser ( 47,33) , ( 46,33) , ( 56,31) e ( 56,30 ) . Do mesmo modo, quaisquer amostras de referência da amostra alvo ( xP, yP ) podem ser ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) .
[0447] Se as amostras de referência nas posições ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) forem codificadas e reconstruídas, o cálculo de ponderação pode ser realizado nos valores recon ( xN − M 1, yP ) recon ( xN − M 2, yP ) recon ( xP, yN − M 3) reconstruídos , , e recon ( xP, yN − M 4 ) das amostras de referência e no valor de predição predP ( xP, yP ) da amostra alvo, para obter o valor de predição atualizado predQ ( xP, yP ) da amostra alvo.
[0448] Deve ser observado que os valores dos coeficientes de ponderação w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 e w11 e valores de M1, M2, M3 e M4 não são limitados nesta modalidade deste pedido. Pelo fato de que tanto M1 quanto M3 são iguais a 1 e tanto M2 quanto M4 são iguais a 2 são meramente usados como um exemplo para descrição. Pode ser entendido que, na aplicação real, os valores de M1 e M3 podem ser iguais ou diferentes, valores de M2 e M4 podem ser iguais ou diferentes, valores de M1 e M2 podem ser diferentes e valores de M3 e M4 podem ser diferentes.
[0449] Por exemplo, um conjunto de coeficientes de ponderação (w1, w2, w3), (w4, w5, w6) ou (w7, w8, w9, w10, w11) pode ser uma combinação de valores de w1 + w2 + w3, w4 + w5 + w6 ou w7 + w8 + w9 + w10 + w11, onde w1 + w2 + w3, w4 + w5 + w6 ou w7 + w8 + w9 + w10 + w11 é igual a 2 elevado à potência de um número inteiro. Desta maneira, uma operação de divisão não é mais realizada. Por exemplo, uma combinação de valores, tal como (6, 1, 1), (5, 2, 1) ou (3, 2, 1, 1, 1) pode ser usado. Isto não é limitado nesta modalidade deste pedido e a combinação de valores enumerada neste relatório é meramente usada como um exemplo para descrição.
[0450] Em outra implementação, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos de amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4 e w5 são constantes predefinidas e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0451] Por exemplo, um conjunto de coeficientes de ponderação (w1, w2, w3, w4, w5) pode ser uma combinação de valores de w1 + w2 + w3 + w4 + w5, onde w1 + w2 + w3 + w4 + w5 é igual a 2 elevado à potência de um número inteiro. Desta maneira, uma operação de divisão não é realizada. Por exemplo, uma combinação de valores, tal como (3, 2, 1, 1, 1) pode ser usada. Isto não é limitado nesta modalidade deste pedido e a combinação de valores enumerada neste relatório é meramente usada como um exemplo para descrição. Deve ser observado que uma diferença entre esta implementação e a implementação anterior reside em que uma amostra na esquerda do bloco de imagem a ser processado e uma amostra acima do bloco de imagem a ser processado não são consideradas nesta implementação. Quando esta implementação é usada para atualizar o valor de predição da amostra alvo e os valores reconstruídos das amostras de referência estão indisponíveis, um método nas seguintes etapas S13061 e S13062 podem ser usados para obter uma amostra de referência disponível e atualizar o valor de predição da amostra alvo com base na amostra de referência disponível.
[0452] Em uma implementação viável, uma ou mais amostras de referência incluem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado, uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
[0453] Em outra implementação viável, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde coordenadas do pixel alvo são ( xP, yP ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado do pixel alvo e w1 e w2 são constantes predefinidas.
[0454] Especificamente, um segundo valor de amostra de predição predP1 ( xP, yP ) pode ser obtido primeiro com base em uma amostra espacial vizinha e um modo de predição intra planar (PLANAR). Pode ser entendido que, no modo PLANAR, os dois filtros lineares em uma direção horizontal e uma direção vertical são usados e um valor médio obtido por dois filtros lineares é usado como um valor de predição de uma amostra no bloco atual.
[0455] Por exemplo, o segundo valor de amostra de predição predP1 ( xP, yP ) pode ser obtido com base no modo PLANAR: predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + nTbW * nTbH ) >> ( Log 2 ( nTbW ) + Log 2 ( nTbH ) + 1), ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) * recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) << Log 2 ( nTb W ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) * recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) << Log 2 ( nTb H ) , onde, como mostrado na FIG. 16, coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , recon ( xP, yN − 1) , recon ( xN − 1, yN + nTbH ) , recon ( xN − 1, yP ) e recon ( xN + nTbW , yN − 1) representam valores reconstruídos de amostras de referência nas posições de coordenada, ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) e ( xN + nTbW , yN − 1) , respectivamente, e nTbW e nTbH representam uma largura e uma altura da CU atual (o bloco de imagem a ser processado).
[0456] Em outra implementação viável, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0457] Em outra implementação viável, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) +w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1))) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0458] Deve ser observado que um algoritmo de modo planar (PLANAR) usado para gerar o segundo valor de amostra de predição predP1 ( xP, yP ) não é limitado a um algoritmo em VTM e um algoritmo PLANAR em HEVC ou H.264 pode ser alternativamente usado. Isto não é limitado nesta modalidade deste pedido.
[0459] Deve ser observado que os valores dos coeficientes de ponderação w1 e w2 não são limitados nesta modalidade deste pedido. Por exemplo, um conjunto de coeficientes de ponderação (w1, w2) pode ser uma combinação de valores de w1 + w2, onde w1 + w2 é igual a 2 elevado à potência de um número inteiro. Desta maneira, uma operação de divisão não é mais realizada. Por exemplo, uma combinação de valores, tal como (6, 2), (5, 3) ou (4, 4) pode ser usada. Isto não é limitado nesta modalidade deste pedido e a combinação de valores enumerada neste relatório é meramente usada como um exemplo para descrição.
[0460] Em outra implementação viável, o valor de predição da amostra alvo pode ser atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 , ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) *recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) * recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) amostra alvo, , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos de amostras de referência nas posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0461] Em outra implementação viável, um bloco de predição inter pode ser processado por meio do uso de uma tecnologia de processamento de combinação de predição intra dependente de posição (Position-dependent intra prediction combination process) que é usada na predição intra, e o valor de predQ ( xP, yP ) predição atualizado da amostra alvo pode ser obtido por meio do uso de um método do modo DC na tecnologia de processamento de combinação de predição intra em VTM. Pode ser entendido que quando o modo DC é usado, um valor de predição do bloco atual pode ser obtido com base em um valor médio de amostras de referência na esquerda e acima do bloco atual.
predQ ( xP, yP )
[0462] Por exemplo, o valor de predição atualizado da amostra alvo pode ser obtido, de acordo com a seguinte fórmula: predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      onde ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale ) wL ( xP= , ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , como mostrado na FIG. 16, coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da recon ( xP, yN − 1) recon ( xN − 1, yP ) recon ( xN − 1, yN − 1) amostra alvo, , e representam valores reconstruídos de amostras de referência nas posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
[0463] Deve ser observado que o valor de predição atualizado predQ ( xP, yP ) da amostra alvo pode ser obtido por meio do uso não de apenas da tecnologia de processamento de combinação de predição intra em VTM, mas também de um algoritmo em JEM.
[0464] Em uma implementação viável, um bloco de predição inter pode ser processado por meio do uso de uma tecnologia de processamento de combinação de predição intra dependente de posição que é usada na predição predQ ( xP, yP ) intra, e o valor de predição atualizado da amostra alvo pode ser obtido por meio do uso de um método do modo PLANAR na tecnologia de processamento de combinação de predição intra em VTM. A seguinte fórmula é usada:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      onde ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) , nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , como mostrado na FIG. 16, coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da predQ ( xP, yP ) amostra alvo antes da atualização, representa o valor de recon ( xN − 1, yP ) recon ( xP, yN − 1) predição atualizado da amostra alvo, e representam valores reconstruídos de amostras de referência nas posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
[0465] Deve ser observado que o valor de predição atualizado predQ ( xP, yP ) da amostra alvo pode ser obtido por meio do uso não de apenas um algoritmo em VTM, mas também um algoritmo em JEM.
[0466] Em uma implementação viável, o processamento de filtragem pode ser realizado em uma amostra de predição inter por meio do uso de uma tecnologia de filtragem de limite de predição intra. Para detalhes da tecnologia de filtragem de limite, consultar um método em HEVC. Os detalhes não são descritos neste relatório.
[0467] Deve ser observado que quando o valor de predição da amostra alvo é atualizado em qualquer uma das maneiras anteriores, se o valor reconstruído da amostra de referência estiver indisponível, a etapa S1306 pode incluir adicionalmente as seguintes etapas S13061 e S13062.
[0468] S13061: Quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, a disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida.
[0469] Pode ser entendido que um caso em que o valor reconstruído da amostra de referência está indisponível pode incluir o seguinte: Quando o bloco de imagem a ser processado está localizado em um lado superior da imagem, não há o valor reconstruído de uma amostra de referência na posição de coordenada ( xP, yN − M ) ; ou quando o bloco de imagem a ser processado está localizado em um lado esquerdo da imagem, não há o valor reconstruído de uma amostra de referência na posição de coordenada ( xN − N , yP ) ; ou um valor de reconfiguração não pode ser obtido para a amostra de referência. Um caso específico em que o valor reconstruído da amostra de referência está indisponível não é limitado nesta modalidade deste pedido e o caso neste relatório é meramente usado como um exemplo para descrição.
[0470] Em uma implementação, como mostrado na FIG. 17, a ordem predefinida pode ser uma ordem das coordenadas (xN - 1, yN + nTbH - 1) para coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para coordenadas (xN + nTbW -1, yN - 1). Por exemplo, todas as amostras podem ser deslocadas na ordem das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1), para a pesquisa de uma amostra de referência disponível das amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado. Deve ser observado que uma ordem específica predefinida não é limitada nesta modalidade deste pedido e a ordem predefinida neste relatório é meramente usada como um exemplo para descrição.
[0471] Por exemplo, quando há pelo menos uma amostra de referência disponível em todas as amostras de referência, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN - 1, yN + nTbH - M), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra (x, y + 1), onde M é maior do que ou igual a 2 e menor do que ou igual a nTbH + 1. Se o valor reconstruído da amostra de referência (x, y) estiver indisponível em um conjunto incluindo uma amostra de referência (xN + N, yN - 1), o valor reconstruído da amostra de referência (x, y) é definido como um valor reconstruído de uma amostra de referência (x - 1, y), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1.
[0472] Por exemplo, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, uma amostra de referência disponível pode ser pesquisada na ordem predefinida partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que ou igual a 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for B, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência B. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1) estiver indisponível, uma amostra de referência disponível pode ser pesquisada na ordem predefinida partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência
(xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência C.
[0473] Por exemplo, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 3) estiver indisponível, a disponibilidade das amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado pode ser determinada em uma ordem das coordenadas (xN - 1, yN + nTbH - 3) para as coordenadas (xN - 1, yN - 1) até que a quantidade predefinida de amostras de referência disponíveis seja obtida, e o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 3) pode ser definido como um valor reconstruído da amostra de referência disponível. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + 3, yN - 1) estiver indisponível, uma amostra disponível é pesquisada de uma ordem das coordenadas (xN + 3, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1), e o valor reconstruído da amostra de referência (xN + 3, yN - 1) pode ser definido como um valor reconstruído da amostra de referência disponível.
[0474] Por exemplo, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 1) estiver indisponível, uma amostra disponível é pesquisada na ordem predefinida das coordenadas (xN - 1, yN + nTbH - 1) para as coordenadas (xN - 1, yN - 1) e, em seguida, das coordenadas (xN, yN - 1) para as coordenadas (xN + nTbW - 1, yN - 1). Uma vez que uma amostra disponível é encontrada, a pesquisa termina. Se a amostra disponível for (x, y), o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 1) é definido como um valor reconstruído da amostra (x, y). Se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - M) estiver indisponível, uma amostra de referência disponível pode ser pesquisada, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN - 1, yN + nTbH - M), onde M é maior do que 1 e menor do que ou igual a nTbH + 1. Se a amostra de referência disponível for C, o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - M) pode ser definido como um valor reconstruído da amostra de referência C. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + N, yN - 1) estiver indisponível, uma amostra de referência disponível pode ser pesquisada, em uma ordem reversa à ordem predefinida, partindo das coordenadas (xN + N, yN - 1), onde N é maior do que ou igual a 0 e menor do que ou igual a nTbW - 1. Se a amostra de referência disponível for
D, o valor reconstruído da amostra de referência (xN + N, yN - 1) pode ser definido como um valor reconstruído da amostra de referência D.
[0475] Por exemplo, se um valor reconstruído de uma amostra de referência (xN - 1, yN + nTbH - 3) estiver indisponível, a disponibilidade das amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado pode ser determinada em uma ordem das coordenadas (xN - 1, yN + nTbH - 3) para as coordenadas (xN - 1, yN + nTbH - 1) até que a quantidade predefinida de amostras de referência disponíveis seja obtida, e o valor reconstruído da amostra de referência (xN - 1, yN + nTbH - 3) pode ser definido como um valor reconstruído da amostra de referência disponível. Se um valor reconstruído de uma amostra de referência com coordenadas (xN + 3, yN - 1) estiver indisponível, uma amostra disponível é pesquisada de uma ordem das coordenadas (xN + 3, yN - 1) para as coordenadas (xN, yN - 1), e o valor reconstruído da amostra de referência (xN + 3, yN - 1) pode ser definido como um valor reconstruído da amostra de referência disponível.
[0476] Deve ser observado que a nova amostra de referência pode ser a primeira amostra de referência disponível encontrada na ordem predefinida ou pode ser qualquer amostra de referência disponível encontrada na ordem predefinida. Isto não é limitado nesta modalidade deste pedido.
[0477] Pode ser entendido que, de acordo com o método, quando uma amostra de referência está indisponível, uma amostra de referência disponível pode ser pesquisada das amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado na ordem predefinida e um valor reconstruído da amostra de referência disponível é usado como um valor reconstruído da amostra de referência indisponível.
[0478] S13062: Realizar o cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo.
[0479] Por exemplo, o valor de predição da amostra alvo pode ser atualizado com base em um valor reconstruído de uma nova amostra de referência por meio do uso de qualquer uma das implementações anteriores.
[0480] Deve ser observado que, se o valor reconstruído da amostra de referência estiver indisponível e é determinado, na etapa S13061, que todas as amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado estão indisponíveis, o valor reconstruído da amostra de referência pode ser definido como 1 << (bitDepth - 1), onde bitDepth representa uma profundidade de bits de um valor de amostra da amostra de referência. Por exemplo, quando o bloco de imagem a ser processado está localizado em um canto esquerdo superior da imagem, e coordenadas em um canto superior esquerdo do bloco de imagem a ser processado são (0, 0), todas as amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado estão indisponíveis. Neste caso, o valor reconstruído da amostra de referência correspondente à amostra alvo no bloco de imagem a ser processado pode ser definido como 1 << (bitDepth - 1).
[0481] Na pluralidade de implementações anteriores, a filtragem espacial é realizada em uma amostra de predição inter em um processo de geração da amostra de predição inter. Em comparação à tecnologia convencional, a eficácia de codificação é melhorada.
[0482] Em uma implementação viável, antes de etapa S1306, o método pode incluir adicionalmente a etapa S1305.
[0483] S1305: (Opcionalmente) Realizar o processamento de filtragem em uma amostra de referência.
[0484] Pode ser entendido que a etapa S1305 pode ser realizada pela unidade de filtro 206 no decodificador de vídeo na FIG. 3.
[0485] Por exemplo, realizar o processamento de filtragem em uma amostra de referência pode incluir: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar o cálculo de ponderação em um valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada na esquerda do bloco de imagem a ser processado, realizar o cálculo de ponderação em um valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
[0486] Pode ser entendido que, depois do processamento de filtragem ser realizado na amostra de referência na etapa S1305, quando a etapa S1306 é realizada, o cálculo de ponderação pode ser realizado em um valor reconstruído atualizado da amostra de referência depois do processamento de filtragem e do valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo.
[0487] Deve ser observado que, para um método específico para realizar o processamento de filtragem na amostra de referência, a referência pode ser feita a um método de filtragem na etapa S1306. Os detalhes não são descritos neste relatório.
[0488] Pode ser entendido que o processamento de filtragem é realizado na amostra de referência para atualizar o valor reconstruído da amostra de referência, e o processamento de filtragem é realizado na amostra alvo com base no valor reconstruído atualizado da amostra de referência. Isto pode melhorar adicionalmente a eficácia de codificação e reduzir uma predição residual.
[0489] Em uma implementação viável, antes da etapa S1306 ou depois da etapa S1306, a etapa S1307 pode ser incluída adicionalmente.
[0490] S1307: (Opcionalmente) Continuar a realizar a predição inter com base nas informações de movimento e informações de fluxo de bits por meio do uso de uma tecnologia de codificação inter exceto este método.
[0491] Pode ser entendido que a etapa S1307 pode ser realizada pelo preditor inter 210 no decodificador de vídeo na FIG. 3.
[0492] Por exemplo, as tecnologias em HEVC ou VTM podem ser usadas, incluindo mas não limitadas a um método de fluxo óptico bi-direcional, um método de distinção de vetor de movimento do lado do decodificador, uma tecnologia de compensação de iluminação local (LIC), predição ponderada geral (GBI), compensação de movimento de bloco sobreposto (OBMC) e uma tecnologia de compensação de vetor de movimento do lado decodificador (DMVD). Um método em HEVC ou VTM ou outro método para gerar uma lista de candidatos de predição de vetor de movimento pode ser usado. Isto não é limitado nesta modalidade deste pedido.
[0493] Deve ser observado que uma ordem de realização de etapas S1301 a S1307 no método anterior não é limitada nesta modalidade deste pedido. Por exemplo, a etapa S1305 pode ser realizada antes da etapa S1307 ou pode ser realizada depois da etapa S1307. Isto não é limitado nesta modalidade deste pedido.
[0494] Em uma implementação viável, antes de realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, o método pode incluir adicionalmente: atualizar inicialmente as informações de movimento por meio do uso de um primeiro algoritmo predefinido; e, correspondentemente, realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento inclui: realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento inicialmente atualizadas.
[0495] Em outra implementação viável, depois que o bloco de predição do bloco de imagem a ser processado é obtido, o método pode incluir adicionalmente: pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido; e, correspondentemente, realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo inclui: realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e em um valor de predição pré-atualizado da amostra alvo.
[0496] Em outra implementação viável, depois de realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, o método inclui adicionalmente: atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
[0497] Deve ser entendido adicionalmente que, depois que o valor de predição atualizado da amostra alvo é obtido, o método pode incluir adicionalmente: adicionar um imagem de predição inter final e uma imagem residual, para obter uma imagem reconstruída do bloco atual. Especificamente, se o bloco atual tiver um resíduo, informações residuais são adicionadas à imagem de predição para obter a imagem reconstruída do bloco atual. Se o bloco atual não tiver resíduo, a imagem de predição é a imagem reconstruída do bloco atual. No processo anterior, um mesmo método como em HEVC ou VTM, ou outro método de reconstrução de compensação de movimento ou imagem pode ser usado. Isto não é limitado.
[0498] De acordo com o método de predição inter fornecido nesta modalidade deste pedido, o fluxo de bits é analisado para obter as informações de movimento do bloco de imagem a ser processado; a compensação de movimento é realizada no bloco de imagem a ser processado com base nas informações de movimento, para obter o bloco de predição do bloco de imagem a ser processado; e o cálculo de ponderação é realizado em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, onde a amostra de referência tem a relação de posição espacial predefinida com a amostra alvo. Nesta modalidade deste pedido, depois que o valor de predição da amostra alvo no bloco de imagem a ser processado é obtido, o processamento de filtragem é realizado no valor de predição da amostra alvo por meio do uso de uma amostra reconstruída vizinha. Desta maneira, a eficácia de compressão de codificação pode ser melhorada e uma PSNR BDrate diminui em 0,5 %. Em comparação à tecnologia convencional, a filtragem espacial realizada em uma amostra de predição inter em um processo de geração da amostra de predição inter melhora a eficácia de codificação.
[0499] Uma modalidade deste pedido fornece um aparelho de predição inter. O aparelho pode ser um decodificador de vídeo. Especificamente, o aparelho de predição inter é configurado para realizar as etapas realizadas pelo aparelho de decodificação no método de predição inter anterior. O aparelho de predição inter fornecido nesta modalidade deste pedido pode incluir módulos correspondentes às etapas correspondentes.
[0500] Nesta modalidade deste pedido, o aparelho de predição inter pode ser dividido em módulos funcionais com base nos exemplos do método anterior. Por exemplo, os módulos funcionais podem ser obtidos através de divisão com base em funções correspondentes, ou duas ou mais funções podem ser integradas em um módulo de processamento. O módulo integrado pode ser implementado em uma forma de hardware ou pode ser implementado em uma forma de um modulo de software funcional. Nesta modalidade deste pedido, a divisão nos módulos é um exemplo, é meramente divisão de função lógica e pode ser outra divisão em uma implementação real.
[0501] Quando os módulos funcionais são obtidos através de divisão com base nas funções correspondentes, a FIG. 18 é um diagrama estrutural esquemático possível de um aparelho de predição inter 1800 na modalidade anterior. Como mostrado na FIG. 18, o aparelho de predição inter 1800 pode incluir um módulo de análise 1801, um módulo de compensação 1802 e um módulo de cálculo 1803. Especificamente, as funções dos módulos são como a seguir:
[0502] O módulo de análise 1801 é configurado para analisar um fluxo de bits para obter as informações de movimento de um bloco de imagem a ser processado.
[0503] O módulo de compensação 1802 é configurado para realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, onde o bloco de predição do bloco de imagem a ser processado compreende um valor de predição de uma amostra alvo.
[0504] O módulo de cálculo 1803 é configurado para realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, onde a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
[0505] Em uma implementação viável, uma ou mais amostras de referência incluem uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
[0506] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) + (( w1 + w2) / 2)  , xN > 0, and yN =0 e  w1 + w2  w3* predP( xP, yP) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, and yN > 0 e  w3 + w4  w5* predP( xP, yP) + w6* recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, and yN > 0 e onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa um valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5 e w6 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0507] Em uma implementação viável, w1 + w2 = R, w3 + w4 = R, ou w5 + w6 + w7 = R, onde R é 2 elevado à potência de n e n é um número inteiro não negativo.
[0508] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and yN =0 e w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, and yN > 0 e  w 4 + w5 + w 6  w7 * predP( xP, yP) + w8* recon( xN − M 1, yP) + w9* recon( xN − M 2, yP) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w8 + w9 + w10 + w11  xN > 0, and yN > 0 e onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa um valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10 e w11 são constantes predefinidas e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0509] Em uma implementação viável, w1 + w2 + w3 = S, w4 + w5 + w6 = S ou w7 + w8 + w9 + w10 + w11 = S, onde S é 2 elevado à potência de n e n é um número inteiro não negativo.
[0510] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa um valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2 e w3 são constantes predefinidas e M1 e M2 são números inteiros positivos predefinidos.
[0511] Em uma implementação viável, w1 + w2 + w3 = R, onde R é 2 elevado à potência de n e n é um número inteiro não negativo.
[0512] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 onde coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são
( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa um valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4 e w5 são constantes predefinidas e M1, M2, M3 e M4 são números inteiros positivos predefinidos.
[0513] Em uma implementação viável, w1 + w2 + w3 + w4 + w5 = S, onde S é 2 elevado à potência de n e n é um número inteiro não negativo.
[0514] Em uma implementação viável, uma ou mais amostras de referência incluem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado, uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
[0515] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa um valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, - 1), respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0516] Em uma implementação viável, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa um valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0517] Em uma implementação viável, o valor de predição da amostra alvo é atualizado, de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) +w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1))) onde predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa um valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP) e p(nTbW, -1) representa valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP) e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0518] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) onde predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 , ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) *recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) *recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa um valor de predição atualizado da recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) amostra alvo, , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
[0519] Em uma implementação viável, uma soma de w1 e w2 é 2 elevado à potência de n e n é um número inteiro não negativo.
[0520] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula:
predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      onde refL ( xP, yP=) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , ) 32 >> ( ( xP << 1) >> nScale ) wL ( xP= , ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição predQ ( xP, yP ) da amostra alvo antes da atualização, representa um valor de recon ( xP, yN − 1) recon ( xN − 1, yP ) predição atualizado da amostra alvo, , e recon ( xN − 1, yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
[0521] Em uma implementação viável, o módulo de cálculo 1803 atualiza o valor de predição da amostra alvo, de acordo com a seguinte fórmula:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      onde refL ( xP, yP=) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) , nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) ,
predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa um valor de predição atualizado da recon ( xN − 1, yP ) recon ( xP, yN − 1) amostra alvo, e representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
[0522] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para: quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, a disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida; e realizar o cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo.
[0523] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e nos valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada na esquerda do bloco de imagem a ser processado, realizar o cálculo de ponderação no valor reconstruído da amostra de referência e nos valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
[0524] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para inicialmente atualizar as informações de movimento por meio do uso de um primeiro algoritmo predefinido. Correspondentemente, o módulo de compensação 1802 é especificamente configurado para realizar a compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento inicialmente atualizadas.
[0525] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido. Correspondentemente, o módulo de cálculo 1803 é especificamente configurado para realizar o cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e em um valor de predição pré-atualizado da amostra alvo.
[0526] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
[0527] Em uma implementação viável, o módulo de análise 1801 é configurado adicionalmente para: analisar o fluxo de bits para obter um modo de predição correspondente ao bloco de imagem a ser processado; e determinar que o modo de predição é um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP).
[0528] Em uma implementação viável, o módulo de análise 1801 é configurado adicionalmente para: analisar o fluxo de bits para obter as informações de indicação de determinação de atualização do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar para atualizar o bloco de predição do bloco de imagem a ser processado.
[0529] Em uma implementação viável, o módulo de cálculo 1803 é configurado adicionalmente para: obter as informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar para atualizar o bloco de predição do bloco de imagem a ser processado.
[0530] A FIG. 19 é um diagrama estrutural esquemático de bloco de um dispositivo de predição inter 1900, de acordo com uma modalidade deste pedido. Especificamente, o aparelho inclui um processador 1901 e uma memória 1902 que estão acoplados ao processador. O processador 1901 é configurado para realizar a modalidade e as implementações viáveis mostradas na FIG. 13.
[0531] O processador 1901 pode ser uma unidade de processamento central (Central Processing Unit, CPU), um processador de uso geral, um processador de sinal digital (Digital Signal Processor, DSP), um ASIC, um FPGA ou outro dispositivo lógico programável, um dispositivo lógico transistor, um componente de hardware ou qualquer combinação dos mesmos. O processador 1901 pode implementar ou executar vários blocos lógicos, módulos e circuitos do exemplo descritos com referência ao conteúdo revelado neste pedido. O processador pode ser alternativamente uma combinação de processadores implementando uma função computacional, por exemplo, uma combinação de um ou mais microprocessadores ou uma combinação de um DSP e um microprocessador.
[0532] Todos os conteúdos relacionados de cada cenário na modalidade do método anterior podem ser citados em descrições de função de módulos funcionais correspondentes. Os detalhes não são descritos neste relatório novamente.
[0533] Embora os aspectos específicos deste pedido sejam descritos com referência ao codificador de vídeo 100 e ao decodificador de vídeo 200, deve ser entendido que as tecnologias deste pedido podem ser usadas por várias outras unidades de codificação e/ou decodificação de vídeo, processadores, unidades de processamento e unidades de codificação com base em hardware e semelhantes, por exemplo, codificadores/decodificadores (CODEC). Além disso, deve ser entendido que as etapas mostradas e descritas na FIG. 13 são meramente fornecidas como implementações viáveis. Em outras palavras, as etapas mostradas nas implementações viáveis na FIG. 13 não são necessariamente realizadas na ordem mostrada na FIG. 13 e menos etapas adicionais ou alternativas podem ser realizadas.
[0534] Além disso, deve ser entendido que dependendo das implementações viáveis, ações específicas ou eventos em qualquer um dos métodos descritos neste relatório descritivo podem ser realizados em diferentes sequências, uma ação ou evento pode ser adicionado, ou as ações ou eventos podem ser combinados ou omitidos (por exemplo, nem todas as ações ou eventos descritos são necessários para implementar o método). Além disso, em uma implementação viável particular, as ações ou eventos podem (por exemplo) sofrer o processamento multi-threading ou processamento de interrupção, ou podem ser processados por uma pluralidade de processadores simultaneamente em vez de sequencialmente. Além disso, embora os aspectos específicos deste pedido sejam descritos como sendo realizados por um único módulo ou unidade para o propósito de clareza, deve ser entendido que as tecnologias deste pedido podem ser realizadas por uma combinação de unidades ou módulos associados ao decodificador de vídeo.
[0535] Em uma ou mais implementações viáveis, as funções descritas podem ser implementadas por meio do uso de hardware, software, firmware ou qualquer combinação dos mesmos. Se as funções forem implementadas por meio do uso de software, as funções podem ser armazenadas em uma mídia legível por computador como uma ou mais instruções ou código ou a ser transmitida através de uma mídia legível por computador, e ser realizada 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 ou uma mídia de comunicações. A mídia de armazenamento legível por computador corresponde a uma mídia tangível, tal como uma mídia de armazenamento de dados. A mídia de comunicações inclui qualquer mídia que facilita a transmissão de um programa de computador (por exemplo) de uma localização para outra localização, de acordo com um protocolo de comunicações.
[0536] Desta maneira, a mídia legível por computador pode corresponder a, por exemplo, (1) uma mídia de armazenamento legível por computador tangível não transitória, ou (2) uma mídia de comunicações pode ser qualquer mídia disponí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.
[0537] Por meio de uma implementação viável em vez de uma limitação, a mídia de armazenamento legível por computador pode incluir uma RAM, uma ROM, uma EEPROM, um CD-ROM ou outro aparelho de armazenamento de disco óptico, 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 exigido em uma forma de uma instrução ou uma estrutura de dados e que possa ser acessada por um computador. Do mesmo modo, qualquer conexão pode ser apropriadamente referida como uma mídia legível por computador. Por exemplo, se uma instrução for transmitida de um website, servidor ou outra fonte remota através de um cabo coaxial, um cabo de fibra óptica, um par trançado, uma linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas são incluídos em uma definição da mídia.
[0538] Entretanto, deve ser entendido que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados pode não incluir uma conexão, uma portadora, um sinal ou outra mídia transitória, mas alternativamente significa mídia de armazenamento tangível não transitória. Um disco magnético e um disco óptico usados neste relatório descritivo incluem um disco compacto (CD), um disco a laser, um disco óptico, um disco versátil digital (DVD), um disquete e um disco Blu-ray. O disco magnético usualmente reproduz dados magneticamente, e o disco óptico reproduz dados opticamente através de um laser. Uma combinação do disco magnético e do disco óptico anteriores deve estar também incluída em um escopo da mídia legível por computador.
[0539] Uma 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 de portas programáveis em campo (FPGA) ou outros circuitos equivalente integrados ou lógica discreta. Portanto, o termo “processador” usado neste relatório descritivo pode ser qualquer uma das estruturas anteriores ou outra estrutura que é usada para implementar as tecnologias descritas neste relatório descritivo. Além disso, em alguns aspectos, as funções descritas neste relatório descritivo podem ser fornecidas dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou podem ser integralmente incorporados em um codec combinado. Além disso, as tecnologias podem ser todas implementadas em um ou mais circuitos ou elementos lógicos.
[0540] As tecnologias neste pedido podem ser implementadas em vários aparelhos ou dispositivos, incluindo um telefone móvel sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos neste pedido para enfatizar aspectos funcionais de um aparelho configurado para realizar as tecnologias reveladas, mas não são necessariamente implementados por diferentes unidades de hardware. Mais precisamente, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por unidades de hardware interoperáveis (incluindo um ou mais processadores descritos acima) em combinação com um conjunto de softwares e/ou firmwares apropriados.
[0541] As descrições anteriores são meramente implementações específicas deste pedido, mas não se destinam a limitar o escopo de proteção deste pedido. Qualquer variação ou substituição prontamente identificada por um técnico no assunto dentro do escopo técnico revelado neste pedido deve estar dentro do 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 (60)

REIVINDICAÇÕES
1. Método de predição inter, compreendendo: analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; realizar compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, em que o bloco de predição do bloco de imagem a ser processado compreende um valor de predição de uma amostra alvo; e realizar cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, em que a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
2. Método, de acordo com a reivindicação 1, em que a uma ou mais amostras de referência compreendem uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
3. Método, de acordo com a reivindicação 2, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) + (( w1 + w2) / 2)  e yN = , xN > 0, and 0  w1 + w2  w3* predP( xP, yP) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, aend yN > 0  w3 + w4  w5* predP( xP, yP) + w6* recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, and e yN > 0 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são
( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5, e w6 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
4. Método, de acordo com a reivindicação 3, em que w1 + w2 = R1, w3 + w4 = R2, ou w5 + w6 + w7 = R3, em que R1, R2, e R3 são, cada um, 2 elevado à potência de n, e n é um número inteiro não negativo.
5. Método, de acordo com a reivindicação 2, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and e yN = 0 w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, and e yN > 0  w 4 + w5 + w 6  w7 * predP( xP, yP) + w8* recon( xN − M 1, yP) + w9* recon( xN − M 2, yP) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w8 + w9 + w10 + w11  xN > 0, and e yN > 0 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes predQ ( xP, yP ) da atualização, representa o valor de predição atualizado da recon ( xN − M 1, yP ) recon ( xN − M 2, yP ) recon ( xP, yN − M 3) amostra alvo, , , , e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) , e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, e w11 são constantes predefinidas, e M1, M2, M3, e M4 são números inteiros positivos predefinidos.
6. Método, de acordo com a reivindicação 5, em que w1 + w2 + w3 = S1, w4 + w5 + w6 = S2, ou w7 + w8 + w9 + w10 + w11 = S3, em que S1, S2, e S3 são, cada um, 2 elevado à potência de n, e n é um número inteiro não negativo.
7. Método, de acordo com a reivindicação 2, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, e w3 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
8. Método, de acordo com a reivindicação 7, em que w1 + w2 + w3 = R, em que R é 2 elevado à potência de n, e n é um número inteiro não negativo.
9. Método, de acordo com a reivindicação 2, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) , e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) , e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, e w5 são constantes predefinidas, e M1, M2, M3, e M4 são números inteiros positivos predefinidos.
10. Método, de acordo com a reivindicação 9, em que w1 + w2 + w3 + w4 + w5 = S, em que S é 2 elevado à potência de n, e n é um número inteiro não negativo.
11. Método, de acordo com a reivindicação 1, em que a uma ou mais amostras de referência compreendem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado,
uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado, ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
12. Método, de acordo com a reivindicação 11, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) em que predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW * nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP+1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado; ou o valor de predição da amostra alvo é atualizado de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) em que predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) *p (-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1, w2, e w3 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado; ou o valor de predição da amostra alvo é atualizado de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1))) em que predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1, w2, e w3 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
13. Método, de acordo com a reivindicação 11, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* predP1( xP, yP ) predQ ( xP, yP ) = w1 + w2 em que predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 ,
( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) * recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) *recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da amostra recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) alvo, , , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) , ( xN − 1, yP ) , e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
14. Método, de acordo com a reivindicação 12 ou 13, em que uma soma de w1 e w2 é 2 elevado à potência de n, e n é um número inteiro não negativo.
15. Método, de acordo com a reivindicação 11, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      em que ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale ) wL ( xP= , ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são
( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da predQ ( xP, yP ) amostra alvo antes da atualização, representa o valor de predição recon ( xP, yN − 1) recon ( xN − 1, yP ) atualizado da amostra alvo, , , e recon ( xN − 1, yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) , e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
16. Método, de acordo com a reivindicação 11, em que a atualização do valor de predição da amostra alvo compreende: realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      em que ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) nScale , ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da amostra recon ( xN − 1, yP ) recon ( xP, yN − 1) alvo, e representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
17. Método, de acordo com qualquer uma das reivindicações 1 a 16, em que a realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo compreende: quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida; e realizar cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo.
18. Método, de acordo com qualquer uma das reivindicações 1 a 17, antes da realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo no bloco de imagem a ser processado, compreende: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada na esquerda do bloco de imagem a ser processado, realizar cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
19. Método, de acordo com qualquer uma das reivindicações 1 a 18, antes da realização de compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, compreende adicionalmente:
atualizar inicialmente as informações de movimento por meio do uso de um primeiro algoritmo predefinido; e correspondentemente, a realização de compensação de movimento no bloco de imagem a ser processado com base em informações de movimento compreende: realizar compensação de movimento no bloco de imagem a ser processado com base em informações de movimento inicialmente atualizadas.
20. Método, de acordo com qualquer uma das reivindicações 1 a 19, em que depois que o bloco de predição do bloco de imagem a ser processado é obtido, o método compreende adicionalmente: pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido; e correspondentemente, a realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo compreende: realizar cálculo de ponderação no um ou mais valores reconstruídos da uma ou mais amostras de referência e em um valor de predição pré- atualizado da amostra alvo.
21. Método, de acordo com qualquer uma das reivindicações 1 a 19, depois da realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, compreende adicionalmente: atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
22. Método, de acordo com qualquer uma das reivindicações 1 a 21, antes da realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, compreende adicionalmente: analisar o fluxo de bits para obter um modo de predição correspondente ao bloco de imagem a ser processado; e determinar que o modo de predição é um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP).
23. Método, de acordo com qualquer uma das reivindicações 1 a 22, antes da realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, compreendendo adicionalmente: analisar o fluxo de bits para obter informações de indicação de determinação de atualização do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
24. Método, de acordo com qualquer uma das reivindicações 1 a 22, antes da realização de cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, compreendendo adicionalmente: obter informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
25. Método de predição, compreendendo: obter um primeiro valor de predição de uma amostra alvo através de predição inter; obter um segundo valor de predição da amostra alvo através de predição intra; e realizar cálculo de ponderação no primeiro valor de predição e no segundo valor de predição, para obter um valor de predição atualizado da amostra alvo, em que um coeficiente de ponderação do primeiro valor de predição é diferente de um coeficiente de ponderação do segundo valor de predição.
26. Método, de acordo com a reivindicação 25, em que o segundo valor de predição é obtido com base em uma amostra espacial vizinha por meio do uso de um modo de predição intra planar (PLANAR).
27. Método, de acordo com a reivindicação 25, em que a obtenção de um primeiro valor de predição de uma amostra alvo através de predição inter compreende:
analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; e realizar compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, em que o bloco de predição do bloco de imagem a ser processado compreende o primeiro valor de predição da amostra alvo.
28. Método, de acordo com qualquer uma das reivindicações 25 a 27, em que o valor de predição atualizado predQ(xP, yP) é obtido com base em w1 * predP(xP, yP) e w2 * predP1(xP, yP), em que (xP, yP) representa coordenadas da amostra alvo, predP(xP, yP) representa o primeiro valor de predição, predP1(xP, yP) representa o segundo valor de predição, w1 representa o coeficiente de ponderação do primeiro valor de predição, w2 representa o coeficiente de ponderação do segundo valor de predição, w1 e w2 são constantes predefinidas, e w1 é diferente de w2.
29. Método, de acordo com a reivindicação 28, em que um conjunto de coeficientes de ponderação (w1, w2) é (6, 2) ou (5, 3).
30. Método, de acordo com a reivindicação 28, em que uma soma de w1 e w2 é 2 elevado à potência de n, e n é um número inteiro não negativo.
31. Aparelho de predição inter, compreendendo: um módulo de análise, configurado para analisar um fluxo de bits para obter informações de movimento de um bloco de imagem a ser processado; um módulo de compensação, configurado para realizar compensação de movimento no bloco de imagem a ser processado com base nas informações de movimento, para obter um bloco de predição do bloco de imagem a ser processado, em que o bloco de predição do bloco de imagem a ser processado compreende um valor de predição de uma amostra alvo; e um módulo de cálculo, configurado para realizar cálculo de ponderação em um ou mais valores reconstruídos de uma ou mais amostras de referência e no valor de predição da amostra alvo, para atualizar o valor de predição da amostra alvo, em que a amostra de referência tem uma relação de posição espacial predefinida com a amostra alvo.
32. Aparelho, de acordo com a reivindicação 31, em que a uma ou mais amostras de referência compreendem uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e tem uma diferença de coordenada vertical predefinida para a amostra alvo, ou uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e tem uma diferença de coordenada horizontal predefinida para a amostra alvo.
33. Aparelho, de acordo com a reivindicação 32, em que o módulo de cálculo é especificamente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ( xP, yP )   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) + (( w1 + w2) / 2)  , xN > 0, and e yN = 0  w1 + w2  w3* predP( xP, yP ) + w4* recon( xP, yN − M 2) + (( w3 + w4) / 2) =  = , xN 0, aend yN > 0  w3 + w4  w5* predP( xP, yP) + w6* recon( xN − M 1, yP) + w7 * recon( xP, yN − M 2) + (( w5 + w6 + w7) / 2)  , w5 + w6 + w7   xN > 0, and e yN > 0 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes predQ ( xP, yP ) da atualização, representa o valor de predição atualizado da recon ( xN − M 1, yP ) recon ( xP, yN − M 2 ) amostra alvo, e representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, w3, w4, w5, e w6 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
34. Aparelho, de acordo com a reivindicação 33, em que w1 + w2 = R1, w3 + w4 = R2, ou w5 + w6 + w7 = R3, em que R1, R2, e R3 são, cada um, 2 elevado à potência de n, e n é um número inteiro não negativo.
35. Aparelho, de acordo com a reivindicação 32, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ( xP, yP)   w1* predP( xP, yP) + w2* recon( xN − M 1, yP) +   w3* recon( xN − M 2, yP) + (( w1 + w2 + w3) / 2)  , xN > 0, and e yN = 0 w1 + w2 + w3   w4* predP( xP, yP) + w5* recon( xP, yN − M 3) +  w6* recon( xP, yN − M 4) + (( w4 + w5 + w6) / 2) =  = , xN 0, ande yN > 0  w 4 + w5 + w6  w7 * predP ( xP, yP ) + w8* recon( xN − M 1, yP ) + w9* recon( xN − M 2, yP ) +   w10* recon( xP, yN − M 3) + w11* recon( xP, yN − M 4) +  (( w7 + w8 + w9 + w10 + w11) / 2)  ,  w7 + w8 + w9 + w10 + w11  xN > 0, and e yN > 0 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) , e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) , e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, e w11 são constantes predefinidas, e M1, M2, M3, e M4 são números inteiros positivos predefinidos.
36. Aparelho, de acordo com a reivindicação 35, em que w1 + w2 + w3 = S1, w4 + w5 + w6 = S2, ou w7 + w8 + w9 + w10 + w11 = S3, em que S1, S2, e S3 são, cada um, 2 elevado à potência de n, e n é um número inteiro não negativo.
37. Aparelho, de acordo com a reivindicação 32, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xP, yN − M 2 ) predQ ( xP, yP ) = w1 + w2 + w3 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) e recon ( xP, yN − M 2 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) e ( xP, yN − M 2 ) , respectivamente, w1, w2, e w3 são constantes predefinidas, e M1 e M2 são números inteiros positivos predefinidos.
38. Aparelho, de acordo com a reivindicação 37, em que w1 + w2 + w3 = R, em que R é 2 elevado à potência de n, e n é um número inteiro não negativo.
39. Aparelho, de acordo com a reivindicação 32, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* recon ( xN − M 1, yP ) + w3* recon ( xN − M 2, yP ) + w4* recon ( xP, yN − M 3) + w5* recon ( xP, yN − M 4 ) predQ ( xP, yP ) = w1 + w2 + w3 + w4 + w5 em que coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da atualização, predQ ( xP, yP ) representa o valor de predição atualizado da amostra alvo, recon ( xN − M 1, yP ) , recon ( xN − M 2, yP ) , recon ( xP, yN − M 3) , e recon ( xP, yN − M 4 ) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − M 1, yP ) , ( xN − M 2, yP ) , ( xP, yN − M 3) , e ( xP, yN − M 4 ) , respectivamente, w1, w2, w3, w4, e w5 são constantes predefinidas, e M1, M2, M3, e M4 são números inteiros positivos predefinidos.
40. Aparelho, de acordo com a reivindicação 39, em que w1 + w2 + w3 + w4 + w5 = S, em que S é 2 elevado à potência de n, e n é um número inteiro não negativo.
41. Aparelho, de acordo com a reivindicação 31, em que a uma ou mais amostras de referência compreendem uma ou mais dentre as seguintes amostras: uma amostra reconstruída que tem uma mesma coordenada horizontal que a amostra alvo e que é adjacente a um lado superior do bloco de imagem a ser processado, uma amostra reconstruída que tem uma mesma coordenada vertical que a amostra alvo e que é adjacente a um lado esquerdo do bloco de imagem a ser processado, uma amostra reconstruída superior direita do bloco de imagem a ser processado, uma amostra reconstruída inferior esquerda do bloco de imagem a ser processado, ou uma amostra reconstruída superior esquerda do bloco de imagem a ser processado.
42. Aparelho, de acordo com a reivindicação 41, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predP1(xP, yP) + ((w1 + w2)/2))/(w1 + w2) em que predP1(xP, yP) = (predV(xP, yP) + predH(xP, yP) + nTbW *
nTbH) >> (Log2(nTbW) + Log2(nTbH) + 1), predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP+1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado; ou o valor de predição da amostra alvo é atualizado de acordo com a seguinte fórmula: predQ(xP, yP) = (w1 * predP(xP, yP) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + ((w1 + w2 + w3)/2))/(w1 + w2 + w3) em que predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH) + nTbH/2) >> Log2(nTbH), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1) + nTbW/2) >> Log2(nTbW), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado; ou o valor de predição da amostra alvo é atualizado de acordo com a seguinte fórmula: predQ(xP, yP) = (((w1 * predP(xP, yP)) << (Log2(nTbW) + Log2(nTbH) + 1)) + w2 * predV(xP, yP) + w3 * predH(xP, yP) + (((w1 + w2 + w3)/2) << (Log2(nTbW) + Log2(nTbH) + 1)))/(((w1 + w2 + w3) << (Log2(nTbW) + Log2(nTbH) + 1)))
em que predV(xP, yP) = ((nTbH - 1 - yP) * p(xP, -1) + (yP + 1) * p(-1, nTbH)) << Log2(nTbW), predH(xP, yP) = ((nTbW - 1 - xP) * p(-1, yP) + (xP + 1) * p(nTbW, -1)) << Log2(nTbH), coordenadas da amostra alvo são (xP, yP), coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são (0, 0), predP(xP, yP) representa o valor de predição da amostra alvo antes da atualização, predQ(xP, yP) representa o valor de predição atualizado da amostra alvo, p(xP, -1), p(-1, nTbH), p(-1, yP), e p(nTbW, -1) representam valores reconstruídos das amostras de referência nas posições de coordenada (xP, -1), (-1, nTbH), (-1, yP), e (nTbW, -1), respectivamente, w1, w2, e w3 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
43. Aparelho, de acordo com a reivindicação 41, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: w1* predP ( xP, yP ) + w2* predP1( xP, yP ) predQ ( xP, yP ) = w1 + w2 em que predP1 = ( xP, yP ) ( predV ( xP, yP ) + predH ( xP, yP ) + 1) >> 1 , ( ) predV ( xP, yP ) = ( nTbH − 1 − ( yP − yN ) ) *recon ( xP, yN − 1) + ( yP − yN + 1) * recon ( xN − 1, yN + nTbH ) + ( nTbH >> 1) >> Log 2 ( nTbH ) , ( ) predH ( xP, yP ) = ( nTbW − 1 − ( xP − xN ) ) *recon ( xN − 1, yP ) + ( xP − xN + 1) * recon ( xN + nTbW , yN − 1) + ( nTbW >> 1) >> Log 2 ( nTbW ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da amostra recon ( xP, yN − 1) recon ( xN − 1, yN + nTbH ) recon ( xN − 1, yP ) alvo, , , , e recon ( xN + nTbW , yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN − 1) , ( xN − 1, yN + nTbH ) ,
( xN − 1, yP ) , e ( xN + nTbW , yN − 1) , respectivamente, w1 e w2 são constantes predefinidas, e nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado.
44. Aparelho, de acordo com a reivindicação 42 ou 43, em que uma soma de w1 e w2 é 2 elevado à potência de n, e n é um número inteiro não negativo.
45. Aparelho, de acordo com a reivindicação 41, em que o módulo de cálculo é especificamente configurado adicionalmente para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula: predQ ( xP, yP ) =   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) − p ( xN − 1, yN − 1) * wTL ( xP, yP ) +   clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) + wTL ( xP, yP ) ) * predP ( xP, yP ) + 32      em que ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale ) wL ( xP= , ( xP, yP ) wTL= ( ( wL ( xP ) >> 4 ) + ( wT ( yP ) >> 4 ) ) , =nScale ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da predQ ( xP, yP ) amostra alvo antes da atualização, representa o valor de predição recon ( xP, yN − 1) recon ( xN − 1, yP ) atualizado da amostra alvo, , , e recon ( xN − 1, yN − 1) representam valores reconstruídos das amostras de referência nas posições de coordenada ( xP, yN− 1) , ( xN − 1, yP ) , e ( xN − 1, yN − 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado e clip1Cmp representa uma operação de recorte.
46. Aparelho, de acordo com a reivindicação 41, em que o módulo de cálculo é especificamente adicionalmente configurado para realizar cálculo de ponderação com base no valor de predição da amostra alvo antes da atualização e no valor reconstruído da amostra de referência, para obter um valor de predição atualizado da amostra alvo, em que o valor de predição atualizado da amostra alvo é obtido de acordo com a seguinte fórmula:   refL ( xP, yP )*wL ( xP ) + refT ( xP, yP ) * wT ( yP ) +   predQ ( xP, yP ) = clip1Cmp    >> 6    ( 64 − wL ( xP ) − wT ( yP ) ) * predP ( xP, yP ) + 32      em que ) recon ( xN − 1, yP ) , refT ( xP, yP=) recon ( xP, yN − 1) , wT ( yP=) 32 >> ( ( yP << 1) >> nScale ) , refL ( xP, yP= ) 32 >> ( ( xP << 1) >> nScale wL ( xP= = ) nScale , ( ( Log 2 ( nTbW ) + Log 2 ( nTbH ) − 2 ) >> 2 ) , coordenadas da amostra alvo são ( xP, yP ) , coordenadas de uma amostra superior esquerda do bloco de imagem a ser processado são ( xN , yN ) , predP ( xP, yP ) representa o valor de predição da amostra alvo antes da predQ ( xP, yP ) atualização, representa o valor de predição atualizado da amostra recon ( xN − 1, yP ) recon ( xP, yN − 1) alvo, e representam valores reconstruídos das amostras de referência nas posições de coordenada ( xN − 1, yP ) e ( xP, yN− 1) , respectivamente, nTbW e nTbH representam uma largura e uma altura do bloco de imagem a ser processado, e clip1Cmp representa uma operação de recorte.
47. Aparelho, de acordo com qualquer uma das reivindicações 31 a 46, em que o módulo de cálculo é adicionalmente configurado para: quando o valor reconstruído da amostra de referência estiver indisponível, determinar, em uma ordem predefinida, disponibilidade de amostras adjacentes ao lado superior e ao lado esquerdo do bloco de imagem a ser processado até que uma quantidade predefinida de amostras de referência disponíveis seja obtida; e realizar cálculo de ponderação em um valor reconstruído da amostra de referência disponível e no valor de predição da amostra alvo.
48. Aparelho, de acordo com qualquer uma das reivindicações 31 a
47, em que o módulo de cálculo é adicionalmente configurado para: quando a amostra de referência estiver localizada acima do bloco de imagem a ser processado, realizar cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha esquerda e de uma amostra vizinha direita da amostra de referência; quando a amostra de referência estiver localizada na esquerda do bloco de imagem a ser processado, realizar cálculo de ponderação no valor reconstruído da amostra de referência e em valores reconstruídos de uma amostra vizinha superior e de uma amostra vizinha inferior da amostra de referência; e atualizar o valor reconstruído da amostra de referência por meio do uso de um resultado do cálculo de ponderação.
49. Aparelho, de acordo com qualquer uma das reivindicações 31 a 48, em que o módulo de cálculo é adicionalmente configurado para inicialmente atualizar as informações de movimento por meio do uso de um primeiro algoritmo predefinido; e correspondentemente, o módulo de compensação é especificamente configurado para: realizar compensação de movimento no bloco de imagem a ser processado com base em informações de movimento inicialmente atualizadas.
50. Aparelho, de acordo com qualquer uma das reivindicações 31 a 49, em que o módulo de cálculo é adicionalmente configurado para pré-atualizar o bloco de predição por meio do uso de um segundo algoritmo predefinido; e correspondentemente, o módulo de cálculo é especificamente configurado para: realizar cálculo de ponderação no um ou mais valores reconstruídos da uma ou mais amostras de referência e em um valor de predição pré- atualizado da amostra alvo.
51. Aparelho, de acordo com qualquer uma das reivindicações 31 a 49, em que o módulo de cálculo é adicionalmente configurado para atualizar o valor de predição da amostra alvo por meio do uso de um segundo algoritmo predefinido.
52. Aparelho, de acordo com qualquer uma das reivindicações 31 a 51, em que o módulo de análise é adicionalmente configurado para:
analisar o fluxo de bits para obter um modo de predição correspondente ao bloco de imagem a ser processado; e determinar que o modo de predição é um modo de mesclagem (merge) e/ou um modo de predição de vetor de movimento avançado inter (inter AMVP).
53. Aparelho, de acordo com qualquer uma das reivindicações 31 a 52, em que o módulo de análise é adicionalmente configurado para: analisar o fluxo de bits para obter informações de indicação de determinação de atualização do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
54. Aparelho, de acordo com qualquer uma das reivindicações 31 a 52, em que o módulo de cálculo é adicionalmente configurado para: obter informações de indicação de determinação de atualização predefinidas do bloco de imagem a ser processado; e determinar que as informações de indicação de determinação de atualização são usadas para indicar a atualização do bloco de predição do bloco de imagem a ser processado.
55. Aparelho, de acordo com qualquer uma das reivindicações 31 a 54, em que um coeficiente de ponderação do um ou mais valores reconstruídos da uma ou mais amostras de referência é diferente de um coeficiente de ponderação do valor de predição da amostra alvo.
56. Aparelho, de acordo com qualquer uma das reivindicações 31 a 55, em que o um ou mais valores reconstruídos da uma ou mais amostras de referência são obtidos com base em uma amostra espacial vizinha por meio do uso de um modo de predição intra planar (PLANAR).
57. Aparelho, de acordo com qualquer uma das reivindicações 31 a 56, em que o valor de predição atualizado predQ(xP, yP) é obtido com base em w1 * predP(xP, yP) e w2 * predP1(xP, yP), em que (xP, yP) representa coordenadas da amostra alvo, predP(xP, yP) representa o valor de predição da amostra alvo, predP1(xP, yP) representa o um ou mais valores reconstruídos da uma ou mais amostras de referência, w1 representa o coeficiente de ponderação do um ou mais valores reconstruídos da uma ou mais amostras de referência, w2 representa o coeficiente de ponderação do valor de predição da amostra alvo, w1 e w2 são constantes predefinidas, e w1 é diferente de w2.
58. Aparelho, de acordo com a reivindicação 57, em que um conjunto de coeficientes de ponderação (w1, w2) é (6, 2) ou (5, 3).
59. Aparelho, de acordo com a reivindicação 57, em que uma soma de w1 e w2 é 2 elevado à potência de n, e n é 2 ou 3.
60. Mídia de armazenamento de computador, em que a mídia de armazenamento de computador armazena código de programa de computador, e quando o código de programa de computador é rodado em um processador, o processador é habilitado a realizar o método de predição inter conforme definido em qualquer uma das reivindicações 1 a 30.
BR112021001563-9A 2018-09-21 2019-09-20 método e aparelho de predição inter BR112021001563A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CN201811109950.2 2018-09-21
CN201811109950 2018-09-21
CNPCT/CN2018/109233 2018-10-01
PCT/CN2018/109233 WO2020056798A1 (zh) 2018-09-21 2018-10-01 一种视频编解码的方法与装置
CN201811303754.9 2018-11-02
CN201811303754.9A CN110944172B (zh) 2018-09-21 2018-11-02 一种帧间预测方法和装置
PCT/CN2019/107060 WO2020057648A1 (zh) 2018-09-21 2019-09-20 一种帧间预测方法和装置

Publications (1)

Publication Number Publication Date
BR112021001563A2 true BR112021001563A2 (pt) 2021-04-20

Family

ID=69888156

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021001563-9A BR112021001563A2 (pt) 2018-09-21 2019-09-20 método e aparelho de predição inter

Country Status (12)

Country Link
US (2) US11647207B2 (pt)
EP (1) EP3849197A4 (pt)
JP (2) JP7259009B2 (pt)
KR (2) KR20230175341A (pt)
CN (4) CN118573857A (pt)
AU (2) AU2019343426B2 (pt)
BR (1) BR112021001563A2 (pt)
CA (2) CA3200616A1 (pt)
MX (1) MX2021002868A (pt)
PH (1) PH12021550058A1 (pt)
SG (1) SG11202100063YA (pt)
WO (1) WO2020056798A1 (pt)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11277628B2 (en) * 2018-09-24 2022-03-15 Qualcomm Incorporated Restrictions for the worst-case bandwidth reduction in video coding
KR20210069715A (ko) * 2018-10-10 2021-06-11 인터디지털 브이씨 홀딩스 인코포레이티드 비디오 인코딩 및 디코딩의 아핀 모드 시그널링
WO2020084507A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Harmonized local illumination compensation and modified inter prediction coding
WO2020147747A1 (en) * 2019-01-15 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Weighted prediction in video coding
KR20200115322A (ko) * 2019-03-26 2020-10-07 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법 및 장치
CN114286100A (zh) * 2020-09-28 2022-04-05 华为技术有限公司 帧间预测方法及装置
CN116867553A (zh) 2020-10-29 2023-10-10 瑞典爱立信有限公司 多会话远程游戏渲染
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11917165B2 (en) * 2021-08-16 2024-02-27 Tencent America LLC MMVD signaling improvement
WO2023132509A1 (ko) * 2022-01-04 2023-07-13 현대자동차주식회사 공간적 상관성을 이용하는 디코더측 움직임벡터 유도를 위한 방법
US20230300364A1 (en) * 2022-03-15 2023-09-21 Tencent America LLC Temporal based subblock type motion vector predictor
WO2024010362A1 (ko) * 2022-07-06 2024-01-11 주식회사 케이티 영상 부호화/복호화 방법 및 비트스트림을 저장하는 기록 매체
WO2024012559A1 (en) * 2022-07-14 2024-01-18 Zhejiang Dahua Technology Co., Ltd. Methods, systems, and storage mediums for video encoding and decoding
WO2024051725A1 (en) * 2022-09-06 2024-03-14 Mediatek Inc. Method and apparatus for video coding
US20240236300A9 (en) * 2022-10-20 2024-07-11 Tencent America LLC Local illumination compensation for bi-prediction

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5052891B2 (ja) * 2003-08-26 2012-10-17 トムソン ライセンシング ハイブリッド・イントラ・インター符号化ブロックを符号化する方法及び装置
WO2008004940A1 (en) * 2006-07-07 2008-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Video data management
CN100534188C (zh) * 2007-06-08 2009-08-26 北京中星微电子有限公司 一种图像压缩方法和装置
US8582652B2 (en) * 2007-10-30 2013-11-12 General Instrument Corporation Method and apparatus for selecting a coding mode
CN101163249B (zh) * 2007-11-20 2010-07-21 北京工业大学 直流模式预测方法
EP2081386A1 (en) * 2008-01-18 2009-07-22 Panasonic Corporation High precision edge prediction for intracoding
CN101222646B (zh) * 2008-01-30 2010-06-02 上海广电(集团)有限公司中央研究院 一种适用于avs编码的帧内预测装置及预测方法
CN101877785A (zh) * 2009-04-29 2010-11-03 祝志怡 一种基于混合预测的视频编码方法
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
CN102595124B (zh) 2011-01-14 2014-07-16 华为技术有限公司 图像编码解码方法、处理图像数据方法及其设备
CN102238391B (zh) 2011-05-25 2016-12-07 深圳市云宙多媒体技术有限公司 一种预测编码方法、装置
US20130107949A1 (en) * 2011-10-26 2013-05-02 Intellectual Discovery Co., Ltd. Scalable video coding method and apparatus using intra prediction mode
WO2013131929A1 (en) 2012-03-05 2013-09-12 Thomson Licensing Method and apparatus for performing super-resolution
CN103581690A (zh) * 2012-08-09 2014-02-12 联发科技(新加坡)私人有限公司 视频译码方法、视频译码器、视频编码方法和视频编码器
US9998727B2 (en) * 2012-09-19 2018-06-12 Qualcomm Incorporated Advanced inter-view residual prediction in multiview or 3-dimensional video coding
CN104104961B (zh) * 2013-04-10 2018-09-21 华为技术有限公司 一种视频编码方法、解码方法和装置
CN103220488B (zh) 2013-04-18 2016-09-07 北京大学 一种视频帧率上转换装置及方法
KR20180041211A (ko) * 2015-09-10 2018-04-23 엘지전자 주식회사 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
KR102604239B1 (ko) 2015-10-13 2023-11-20 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
US10531111B2 (en) 2015-11-06 2020-01-07 Microsoft Technology Licensing, Llc Flexible reference picture management for video encoding and decoding
CN116962687A (zh) * 2016-11-29 2023-10-27 成均馆大学校产学协力团 影像编码/解码方法、装置以及对比特流进行存储的记录介质
CN117041537A (zh) * 2017-06-21 2023-11-10 Lg 电子株式会社 在图像编译系统中根据帧内预测用于解码图像的方法和设备
CN108495135B (zh) 2018-03-14 2020-11-10 宁波大学 一种屏幕内容视频编码的快速编码方法

Also Published As

Publication number Publication date
CN118573856A (zh) 2024-08-30
KR20210024165A (ko) 2021-03-04
KR102616711B1 (ko) 2023-12-20
JP7551798B2 (ja) 2024-09-17
CA3106125C (en) 2024-01-23
JP7259009B2 (ja) 2023-04-17
EP3849197A1 (en) 2021-07-14
AU2023222943A1 (en) 2023-09-21
EP3849197A4 (en) 2021-11-03
CN110944172A (zh) 2020-03-31
CN112655218B (zh) 2022-04-29
PH12021550058A1 (en) 2021-09-27
WO2020056798A1 (zh) 2020-03-26
US20230164328A1 (en) 2023-05-25
JP2023065381A (ja) 2023-05-12
CN110944172B (zh) 2024-04-12
CA3200616A1 (en) 2020-03-26
MX2021002868A (es) 2021-05-28
CN118573857A (zh) 2024-08-30
JP2022500894A (ja) 2022-01-04
US11647207B2 (en) 2023-05-09
SG11202100063YA (en) 2021-02-25
US20210185328A1 (en) 2021-06-17
CN112655218A (zh) 2021-04-13
CA3106125A1 (en) 2020-03-26
KR20230175341A (ko) 2023-12-29
AU2019343426B2 (en) 2023-06-01
AU2019343426A1 (en) 2021-02-04

Similar Documents

Publication Publication Date Title
BR112021001563A2 (pt) método e aparelho de predição inter
CN110036638B (zh) 解码视频数据的方法、装置、设备及存储媒体
RU2705428C2 (ru) Вывод информации движения для подблоков при видеокодировании
BR112020021263A2 (pt) limitação da derivação mvp com base na derivação do vetor de movimento do lado do decodificador
BR112019026775A2 (pt) projeto eficaz para largura de banda de memória para fluxo óptico bidirecional (bio)
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
KR20200058445A (ko) Fruc 를 위한 저 복잡도 설계
BR112019017252A2 (pt) derivando informação de vetor de movimento em um decodificador de vídeo
BR112020014522A2 (pt) Derivação aprimorada de vetor de movimento no lado de decodificador
BR112019025566A2 (pt) Predição de vetor de movimento
TW201703531A (zh) 判定用於視訊寫碼之照明補償狀態之系統及方法
BR112021003965A2 (pt) método e aparelho de obtenção de vetor de movimento, dispositivo de computador, e meio de armazenamento
CN112437299B (zh) 一种帧间预测方法、装置及存储介质
RU2785725C2 (ru) Устройство и способ внешнего предсказания
WO2020057648A1 (zh) 一种帧间预测方法和装置
BR112017020632B1 (pt) Métodos e dispositivo para processar dados de vídeo e memória legível por computador
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo