BR112015020968B1 - Graduação de vetor de movimento espacial para codificação de vídeo escalonável - Google Patents

Graduação de vetor de movimento espacial para codificação de vídeo escalonável Download PDF

Info

Publication number
BR112015020968B1
BR112015020968B1 BR112015020968-8A BR112015020968A BR112015020968B1 BR 112015020968 B1 BR112015020968 B1 BR 112015020968B1 BR 112015020968 A BR112015020968 A BR 112015020968A BR 112015020968 B1 BR112015020968 B1 BR 112015020968B1
Authority
BR
Brazil
Prior art keywords
grading
video
value
factor
scaling
Prior art date
Application number
BR112015020968-8A
Other languages
English (en)
Other versions
BR112015020968A2 (pt
Inventor
Vadim SEREGIN
Jianle Chen
Krishnakanth RAPAKA
Liwei GUO
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112015020968A2 publication Critical patent/BR112015020968A2/pt
Publication of BR112015020968B1 publication Critical patent/BR112015020968B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

GRADUAÇÃO DE VETOR DE MOVIMENTO ESPACIAL PARA CODIFICAÇÃO DE VÍDEO ESCALONÁVEL. Em uma implementação, um aparelho é provido para a codificação ou decodificação de informação de vídeo. O aparelho compreende uma unidade de memória configurada para armazenar informação de vídeo associada com uma camada de base e/ou uma camada de melhoramento. O aparelho adicionalmente compreende um processador operativamente acoplado à unidade de memória. Em uma modalidade, o processador está configurado para determinar um fator de graduação (430) com base nos valores de dimensão espacial associados com as camadas de base e de melhoramento de tal modo que o fator de graduação é condicionado dentro de uma faixa predeterminada. O processador também está configurado para espacialmente graduar um elemento associado (440) com a camada de base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal.

Description

FUNDAMENTOS Campo
[0001] Esta descrição refere-se com o campo da codificação de vídeo e compressão. Em particular, ela está relacionada com codificação de vídeo de alta eficiência (HEVC) e suas extensões, por exemplo, codificação de vídeo escalonável (SVC), vídeo multivista e codificação 3D (MVC, 3DV), etc. Em algumas modalidades, a divulgação refere-se à graduação de vetor de movimento espacial para SVC.
Descrição da Técnica Relacionada
[0002] Capacidades de vídeo digital podem ser incorporados em uma ampla faixa de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou laptop computadores, tablets, leitores de livros eletrônicos, digitais câmeras, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, videogames, telefones celulares de rádio ou satélite, chamados "telefones inteligentes", aparelhos de vídeo, dispositivos de teleconferência de vídeo, e outros semelhantes. Dispositivos de vídeo digitais implementam as técnicas de codificação de vídeo, tais como os descritos nos padrões definidos pela MPEG-2, MPEG-4, ITU-T H.263, a ITU-T H.264 / MPEG-4, Parte 10, Codificação de Vídeo Digital (AVC), padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em fase de desenvolvimento, e extensões de tais normas. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da implementação de tais técnicas de codificação de vídeo.
[0003] Técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou eliminar a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que podem igualmente ser referidos como blocos em árvore, unidades de codificação (CU) e/ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem pode usar a predição espacial em relação a amostras de referência em blocos vizinhos da mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser encaminhadas para quadros de referência.
[0004] Predição espacial ou temporal resulta em um bloco preditivo para um bloco de ser codificada. Dados residuais representam as diferenças entre o bloco de pixel original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco de predição, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo intracodificado e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio da transformada, resultando em coeficientes de transformada residuais, que podem então ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
[0005] Em algumas situações, é desejável para os vetores de movimento espacialmente escaláveis a partir de camadas tendo uma escalabilidade espacial diferente do que a camada sendo codificada ou decodificada. Em outras situações é desejável mapear a posição de um bloco de vídeo a partir da camada para uma posição equivalente na camada a ser codificada ou decodificada. No entanto, escalonemtno espacial e mapeamento de posição intercamada geralmente requerem um aumento dos custos de transformada, devido a operações de divisão arbitrárias realizadas para determinar um parâmetro de escala apropriada.
SUMÁRIO DA DESCRIÇÃO
[0006] De um modo geral, esta divulgação descreve técnicas relacionadas com a codificação de vídeo escalável (SVC). As técnicas descritas abaixo proveem um mecanismo para indicar se a predição de sintaxe intercamada (incluindo informação de movimento) é permitida para codecs de camada base específicos (por exemplo, HEVC, etc.).
[0007] Em uma modalidade, é provido um aparelho para a codificação ou decodificação de informação de vídeo. O aparelho compreende uma unidade de memória configurada para armazenar informação de vídeo associada com uma camada base e/ou uma camada de melhoramento. O aparelho adicionalmente compreende um processador operativamente acoplado à unidade de memória. Em uma modalidade, o processador está configurado para executar graduação de vetor de movimento espacial de informação de vídeo. Por exemplo, o processador pode ser configurado para executar graduação de vetor de movimento espacial dentro de uma estrutura de codificação de vídeo escalonável.
[0008] Na modalidade, um aparelho para a codificação de informação de vídeo é provido. O aparelho inclui uma unidade de memória e um processador. A unidade de memória é configurada para armazenar informação de vídeo associada com uma camada base, uma camada de melhoramento, ou ambas as coisas. O processador está operativamente acoplado à unidade de memória e configurado para: determinar um fator de graduação com base nos valores de dimensão espacial associadas com as camadas de base e de melhoramento tal que o fator de graduação é condicionado dentro de uma faixa predeterminada; e espacialmente graduar um elemento associado com a camada base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal ou função.
[0009] Em uma outra modalidade, um método de decodificação de informações de vídeo inclui, com um processador acoplado a uma unidade de memória configurada para armazenar informação de vídeo associada com uma camada base, uma camada de melhoramento, ou ambas, que determina um fator de graduação com base nos valores de dimensão espacial associadas com as camadas de base e de melhoramento de tal modo que o fator de graduação é condicionado dentro de uma faixa predeterminada. O método também inclui espacialmente graduar um elemento associado com a camada base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal. O método também inclui decodificar a informação de vídeo através do elemento espacialmente graduado.
[0010] Em uma outra modalidade, um método de codificação de informações de vídeo inclui, com um processador acoplado a uma unidade de memória configurada para armazenar informação de vídeo associada com uma camada base, uma camada de melhoramento, ou ambas, que determina um fator de graduação com base nos valores de dimensão espacial associadas com as camadas de base e de melhoramento de tal modo que o fator de graduação é condicionado dentro de uma faixa predeterminada. O método também inclui espacialmente graduar um elemento associado com a camada base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal. O método também inclui a codificação da informação de vídeo utilizando o elemento espacialmente graduado.
[0011] Em uma outra modalidade, um meio legível por computador não transitório inclui instruções que, quando executadas fazem com que um aparelho determine um fator de graduação com base nos valores de dimensão espacial associadas com as camadas de base e de melhoramento de tal modo que o fator de graduação é condicionado dentro de uma faixa predeterminada. As instruções também fazem com que o aparelho espacialmente escale um elemento associado com a camada base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal. As instruções também fazem com que o aparelho codifique a informação de vídeo utilizando o elemento espacialmente graduado.
[0012] Em outra modalidade, um aparelho está configurado para codificar informação de vídeo. O aparelho inclui meios para determinar um fator de graduação com base nos valores de dimensão espacial associadas com as camadas de base e de melhoramento de tal modo que o fator de graduação é condicionado dentro de uma faixa predeterminada. O aparelho inclui também meios para espacialmente graduar um elemento associado com a camada base ou camada de melhoramento usando o fator de graduação e um processo de graduação de vetor de movimento temporal. O aparelho também inclui meios para codificação da informação de vídeo através do elemento espacialmente graduado.
[0013] Os detalhes de um ou mais exemplos são apresentados nos desenhos acompanhantes e na descrição abaixo, os quais não se destinam a limitar o âmbito total dos conceitos inventivos aqui descritos. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0014] Ao longo dos desenhos, números de referência podem ser reutilizados para indicar a correspondência entre os elementos referenciados. Os desenhos são providos para ilustrar modalidades exemplares aqui descritas e não se destinam a limitar o âmbito da divulgação.
[0015] A figura 1 é um diagrama de blocos que ilustra um exemplo de codificação de vídeo e um sistema de decodificação que pode utilizar técnicas de acordo com os aspectos descritos na presente divulgação.
[0016] A figura 2 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos na presente divulgação.
[0017] A figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos na presente divulgação.
[0018] A figura 4 é um fluxograma que ilustra uma modalidade de um método de realizar a graduação espacial utilizando uma função de graduação temporal, de acordo com aspectos da presente divulgação.
DESCRIÇÃO DETALHADA DE MODALIDADES ESPECÍFICAS
[0019] As técnicas descritas nesta divulgação geralmente referem-se à codificação de vídeo escalável (SVC) e codificação de vídeo multivista / 3D. Por exemplo, as técnicas podem estar relacionadas com, e usadas com ou dentro de uma extensão de codificação de vídeo escalonável de Codificação de Vídeo de Alta Eficiência (HEVC) (SVC, por vezes referido como SHVC). Em uma extensão SVC, pode haver várias camadas de informações de vídeo. A camada no nível muito inferior pode servir como uma camada base (BL), e a camada no nível muito superior (ou camada mais alta) podem servir como uma camada reforçada (EL). A "camada reforçada" é às vezes referida como uma "camada de melhoramento", e estes termos podem ser usados alternadamente. A camada base é por vezes referida como uma "camada de referência", (RL) e estes termos podem também ser utilizados indiferentemente. Todas as camadas entre a camada base e a camada superior podem servir como uma ou ambas ELs ou camadas de referência (RLs). Por exemplo, uma camada no meio pode ser uma EL para as camadas abaixo dela, tal como a camada base ou quaisquer camadas de melhoramento seguintes, e ao mesmo tempo servem como uma RL para as camadas de melhoramento acima dela. Cada camada entre a camada base e a camada de topo (ou a camada mais alta) é pode ser usada como uma referência para predição de intercamada de uma camada superior e pode utilizar uma camada inferior como referência para predição de intercamada.
[0020] Para simplificar, exemplos são apresentados em termos de apenas duas camadas: uma BL e uma El; no entanto, deve ser bem entendido que as ideias e modalidades abaixo descritas são aplicáveis aos casos com múltiplas camadas, como bem. Além disso, para facilidade de explicação, os termos "quadros" ou "blocos" são frequentemente utilizados. No entanto, estes termos não pretendem ser limitativos. Por exemplo, as técnicas descritas a seguir podem ser utilizadas com qualquer um de uma variedade de unidades de vídeo, incluindo mas não se limitando a, blocos de pixels (por exemplo, Cu, PU, TU, macroblocos, etc.), fatias, imagens, etc.
CODIFICAÇÃO DE VÍDEO
[0021] Padrões de codificação de vídeo incluem ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 ou ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO / IEC MPEG-4 AVC), incluindo sua Codificação de Vídeo Escalável (SVC) e extensões de Codificação de Vídeo Multivista (MVC). O mais recente projeto comum de SVC e MVC está descrito em "Codificação de vídeo avançada para serviços audiovisuais genéricos", H.264 Recomendação ITU-T, Março de 2010.
[0022] Além disso, há um novo padrão de codificação de vídeo, Codificação de vídeo de alta eficiência (HEVC), sendo desenvolvido pela foi desenvolvido pela Joint Collaboration Team on Video Coding (JCT-VC) do ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Um recente projeto de especificação de texto de Codificação de Vídeo de Alta Eficiência (HEVC) está disponível a partir de http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- L1003-v13.zip. Outro Projeto de Trabalho recente (WD) de HEVC, e referido como HEVC WD9, está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC- K1003-vl3.zip. Outro projeto de trabalho de HEVC, referido como HEVC WD8 (ou WD8) está disponível em http://phenix.int- evry.fr/jct/docenduser/documents/10Stockholm/wg11/JCTVC- J1003-v8.zip. Outro Projeto de Trabalho da HEVC, e referido como HEVC WD7 a seguir, está disponível a partir de http://phenix.int- eyry.fr/doc_end_user/documcnts/9_Geneva/wg11/JCTVC-l1003- v5.zip. Todos estes documentos são aqui incorporados por referência na sua totalidade.
[0023] Em SVC, a informação de vídeo pode ser provida como múltiplas camadas. A camada em nível muito inferior pode apenas servir como uma camada base (BL) e a camada em nível muito alto pode servir como uma camada de melhoramento (EL). Todas as camadas entre as camadas superior e inferior podem servir como ambas as camadas de melhoramento e as camadas de base. Por exemplo, uma camada no meio pode ser uma EL para as camadas abaixo dela, e ao mesmo tempo como uma CB para as camadas acima dela. Para simplificar a descrição, pode-se assumir que existem duas camadas, uma BL e uma EL, para ilustrar as técnicas descritas abaixo. No entanto, todas as técnicas aqui descritas são aplicáveis aos casos com múltiplas camadas (mais de duas), também.
[0024] Codificação de vídeo escalável (SVC) pode ser usada para prover qualidade (também referida como sinal/ruído (SNR)) escalabilidade, escalabilidade espacial e/ou escalabilidade temporal. Por exemplo, em uma modalidade, uma camada de referência (por exemplo, uma camada base) inclui informação de vídeo suficiente para apresentar um vídeo a um nível de primeira qualidade e a camada de melhoramento inclui informação de vídeo adicional em relação à camada de referência de tal modo que a camada de referência e a camada de melhoramento juntas incluem informação de vídeo suficiente para exibir o vídeo em um segundo nível de qualidade superior ao do primeiro nível (por exemplo, menos ruído, maior resolução, melhor taxa de quadros, etc.). Uma camada reforçada pode ter resolução espacial diferente de uma camada base. Por exemplo, a relação de aspecto espacial entre EL e BL pode ser 1,0, 1,5, 2,0 ou outras proporções diferentes. Em outras palavras, o aspecto espacial da EL pode ser igual a 1,0, 1,5, ou 2,0 vezes o aspecto espacial da BL. Em alguns exemplos, o fator de graduação da EL pode ser maior do que o da BL. Por exemplo, um tamanho de imagens na EL pode ser maior do que um tamanho de imagens na BL. Desta forma, pode ser possível, embora não uma limitação, que a resolução espacial da EL seja maior do que a resolução espacial da BL.
[0025] Na extensão SVC para H.264, a predição de um bloco atual pode ser realizada utilizando as diferentes camadas que são providas para o SVC. Tal predição pode ser referida como predição de intercamada. Métodos de predição de intercamada podem ser utilizados em VPC, a fim de reduzir a redundância intercamada. Alguns exemplos de predição de intercamada podem incluir intrapredição de intercamada, predição de movimento intercamada, e predição residual intercamada. Intrapredição de intercamada utiliza a reconstrução de blocos colocalizados na camada base para predizer o bloco atual na camada de melhoramento. Predição de movimento intercamada utiliza informação de movimento (incluindo vetores de movimento) da camada base para predizer o movimento na camada de melhoramento. Predição residual intercamada usa o resíduo da camada base para predizer o resíduo da camada de melhoramento.
[0026] Em algumas modalidades de predição de movimento intercamada, os dados de movimento (incluindo vetores de movimento) da camada base (por exemplo, para o bloco colocalizado) podem ser utilizados para predizer o bloco atual na camada de melhoramento. Por exemplo, enquanto a codificação de um aparelho de vídeo, em uma camada de melhoramento, codificadores de vídeo podem utilizar a informação a partir de uma camada de referência para se obter os dados de compensação de movimento adicionais que podem ser utilizados para identificar hipóteses adicionais. Como essas hipóteses adicionais são implicitamente derivadas de dados já existentes em um fluxo de bits de dados de vídeo, o desempenho adicional na codificação de vídeo pode ser obtido com pouco ou nenhum custo adicional no tamanho do fluxo de bits. Em outro exemplo, a informação de movimento a partir de unidades de vídeo espacialmente vizinhas pode ser utilizada para localizar hipótese adicional. A hipótese derivada pode então ser calculada a média, ou outra forma combinada com a hipótese explicitamente codificada para gerar uma melhor predição de um valor de uma unidade de vídeo. Em determinadas situações, tal como quando a resolução espacial da camada base (ou referência) é diferente da resolução espacial da camada do bloco atual, a informação de movimento da camada base é espacialmente escalada antes de ser usada para codificar ou decodificar o bloco atual. Do mesmo modo, a posição de um bloco em uma camada base (ou referência) pode ser determinada por mapeamento de posição intercamada, tal como descrito abaixo, quando a camada tem uma resolução espacial diferente da camada do bloco atual.
GRADUAÇÃO DE VETOR DE MOVIMENTO ESPACIAL
[0027] Um vetor de movimento (MV) a partir de uma camada base pode ser utilizado como um candidato MV em pelo menos modos AMVP ou de fusão. Uma vez que a camada base e camadas de melhoramento podem potencialmente ter diferentes resoluções, o MV da camada base pode ter de ser graduado de acordo com a diferença de resolução antes de ser utilizado como candidatos de predição de MV intercamada. Nem uma modalidade, tal dimensionamento é expresso por:
Figure img0001
onde el indica camada de melhoramento, bl indica camada base, W indica a largura e H indica altura.
[0028] As fórmulas acima são providas para fins ilustrativos, e fórmulas semelhantes podem ser usadas. Por exemplo, fórmulas semelhantes podem ser usadas onde, por exemplo, desvio de arredondamento é adicionado.
MAPEAMENTO DE POSIÇÃO INTERCAMADA
[0029] Mapeamento de posição entre uma imagem de camada base e imagem de camada de melhoramento é realizado para a predição de textura intercamada e/ou de sintaxe. Por exemplo, na predição de textura intercamada, para um pixel na posição (x, y) da camada de melhoramento (que pode ser referido como PEL (x, y)), uma posição correspondente (blx, Bly) pode ser derivada. Portanto, um valor de pixel em (Blx, Bly) da camada base, que pode ser referida como PBL (Blx, Bly), pode ser utilizado para predizer o valor de PEL (x, y). O mapeamento de posição pode ser expresso como:
Figure img0002
[0030] As fórmulas acima são utilizadas para fins ilustrativos, fórmulas semelhantes podem ser utilizadas onde, por exemplo, o desvio de arredondamento pode ser adicionado. Se a imagem de camada base e imagem de camada de melhoramento tem de corte diferente, parâmetros de corte podem ser integrados na fórmula. No entanto, uma desvantagem da utilização das fórmulas anteriores é que uma operação de divisão é necessária por razões de aspecto de escalabilidade de camada de melhoramento e de base arbitrária. Tal uma operação de divisão é computacionalmente dispendiosa e requer extensos recursos computacionais e/ou requisitos de memória e largura de banda maiores, como discutido em maior detalhe abaixo.
[0031] Tem sido proposto que a função de graduação do Preditor de Vetor de Movimento Temporal (TMVP) disponível no padrão HEVC pode ser utilizada para dimensionamento de MV de camada base. O parâmetro de entrada para esta função é a variável graduada, calculado como iScaleBase = (1 << 8)
Figure img0003
que é equivalente a iScaleBase = 256 x elW/blW (onde elP e blW correspondem às larguras da imagem de camada base e imagem de camada de melhoramento, respectivamente). A expressão x << y refere-se a um desvio para a esquerda da representação binária do número x por y bits, que é equivalente a divisão do número x de 2y. Do mesmo modo, a expressão x >> y refere-se a um desvio para a direita da representação binária do número x por y bits, que é equivalente a multiplicação do número x por 2y. Para nenhuma graduação, por exemplo, quando os tamanhos de imagem da camada base e camada de melhoramento são iguais, o parâmetro de entrada iScaleBase é igual 256. Para escalabilidade de 2x (por exemplo, quando a largura da imagem de camada de melhoramento é duas vezes a largura da imagem de camada base), o parâmetro de entrada iScaleBase é igual a 512, e para o parâmetro de entrada 1,5x iScaleBase é igual a 384. Este parâmetro de entrada pode ser calculado uma vez por sequência. No entanto, como mencionado acima, a divisão é necessária com um divisor arbitrário, que pode aumentar o custo e/ou diminuir a eficiência do processo de codificação e decodificação.
[0032] Vários aspectos dos novos sistemas, aparelhos, e métodos são descritos mais completamente a seguir com referência aos desenhos anexos. Esta divulgação pode, no entanto, ser realizada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta divulgação. Em vez disso, estes aspectos são providos para que esta divulgação seja minuciosa e completa, e irão transmitir totalmente o âmbito da descrição dos versados na técnica. Com base nos ensinamentos aqui apresentados um versado na técnica deveria apreciar que o âmbito da descrição destina-se a cobrir qualquer aspecto dos novos sistemas, aparelhos e métodos aqui descritos, se implementados independentemente de, ou em combinação com qualquer outro aspecto da invenção. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado utilizando qualquer número dos aspectos aqui enunciados. Além disso, o âmbito da invenção destina-se a cobrir tais um aparelho ou método que são praticados usando outra estrutura, funcionalidade, ou estrutura e funcionalidade em adição a outros diferentes dos vários aspectos da invenção aqui estabelecidos. Deve ser entendido que qualquer aspecto aqui descrito pode ser concretizado por um ou mais elementos de uma reivindicação.
[0033] Embora os aspectos particulares sejam aqui descritos, muitas variações e permutações destes aspectos caem dentro do âmbito da divulgação. Embora alguns benefícios e vantagens dos aspectos preferidos sejam mencionados, o âmbito da divulgação não se destina a ser limitado aos benefícios particulares, utilizações ou objetivos. Em vez disso, os aspectos da presente descrição destinam-se a ser amplamente aplicáveis a diferentes tecnologias sem fio, configurações do sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título de exemplo nas figuras e na descrição seguinte dos aspectos preferidos. A descrição detalhada e os desenhos são meramente ilustrativos da divulgação em vez de limitar, o âmbito da descrição que está sendo definido pelas reivindicações anexas e seus equivalentes.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0034] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar 10 que pode utilizar as técnicas de acordo com os aspectos descritos na presente divulgação. Tal como utilizado aqui descrito, o termo "codificador de vídeo" refere-se genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" podem referir-se genericamente a codificação de vídeo e decodificação de vídeo.
[0035] Como mostrado na figura 1, sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados, gerados pelo dispositivo de origem 12. Dispositivo de origem 12 pode prover os dados de vídeo para o dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir uma grande variedade de dispositivos, incluindo computadores desktop, notebook (por exemplo, laptop) computadores, tablets, set-top boxes, aparelhos de telefone, como os chamados telefones "inteligentes", os chamados pads "inteligentes", televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de jogos de vídeo, computadores no carro, dispositivos de streaming de vídeo, ou semelhantes. Dispositivo de origem 12 e dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0036] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados por meio legível por computador 16. Meio legível por computador 16 pode compreender um tipo de meio ou dispositivo capaz de mover os dados codificados de vídeo a partir do dispositivo de origem 12 para o dispositivo de destino 14. Por exemplo, meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14, em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender um meio de comunicação com ou sem fio, tal como um espectro de rádio frequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base e outros equipamentos que podem ser úteis para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0037] Em algumas modalidades, os dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento, interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou outros meios de armazenamento digital para armazenar dados de vídeo. O dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através de streaming ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados codificados de vídeo e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Exemplos de servidores de arquivos incluem um servidor web (por exemplo, para um site), um servidor FTP, dispositivos d armazenamento anexados à rede (NAS), ou uma unidade de disco local. Dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio de uma conexão de dados padrão, incluindo acesso à Internet. Isto pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, um modem por cabo, etc.), ou uma combinação de ambos, que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de download, ou uma combinação dos mesmos.
[0038] As técnicas desta divulgação podem aplicar aplicativos ou configurações, além dos aplicativos ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a um de uma variedade de aplicativos multimídia, como transmissões de televisão através do ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de streaming vídeo por Internet, tais como streaming adaptativo dinâmico através de HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em algumas modalidades, o sistema 10 pode ser configurado para suportar um modo ou transmissão de vídeo de duas vias para suportar aplicações tais como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou telefonia de vídeo.
[0039] Na figura 1, dispositivo de origem 12 inclui fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30, e dispositivo de exibição 32. O codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para codificar um fluxo de bits, incluindo dados de vídeo em conformidade com vários padrões ou extensões padrão. Em outras modalidades, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, dispositivo de origem 12 pode receber dados de vídeo de uma fonte externa de vídeo 18, como uma câmara externa. Da mesma forma, o dispositivo de destino 14 pode interagir com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0040] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. A fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em algumas modalidades, se a fonte de vídeo 18 é uma câmera de vídeo, dispositivo de origem 12 e dispositivo de destino 14 pode formar os chamados telefones celulares com câmera ou vídeo. O vídeo capturado, pré-capturado, ou gerado pelo computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode ser produzida pela interface de saída 22 para um meio legível por computador 16.
[0041] O meio legível por computador 16 pode incluir meios transitórios, tais como uma transmissão de rede sem fio ou transmissão de rede com fio, ou mídia de armazenamento (por exemplo, mídia de armazenamento não transitória), tais como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray, ou outra mídia legível por computador. Um servidor de rede (não mostrado) pode receber dados codificados de vídeo a partir do dispositivo de origem 12 e prover os dados de vídeo codificados para o dispositivo de destino 14 (por exemplo, por meio de transmissão de rede). Um dispositivo de computação de uma unidade de produção de meio, tal como uma unidade de estampagem de disco, pode receber dados codificados de vídeo a partir do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de várias formas.
[0042] A interface de entrada 28 do dispositivo de destino 14 pode receber informação a partir de meio legível por computador 16. A informação do meio legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que pode ser usada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 mostra os dados de vídeo decodificados para um usuário, e pode incluir qualquer um de uma variedade de dispositivos de exibição, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, um diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0043] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em fase de desenvolvimento, e pode estar de acordo com o modelo de teste HEVC (HM). Alternativamente, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com outros padrões proprietários ou industriais, como o padrão ITU-T H.264, alternativamente conhecido como MPEG-4 Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais normas. As técnicas desta divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrado na figura 1, em alguns aspectos, codificador de vídeo 20 e decodificador de vídeo 30 podem cada um ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223, ou outros protocolos, como o Protocolo de Datagrama de Usuário (UDP).
[0044] O codificador de vídeo 20 e decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de conjunto de circuitos de codificador adequado, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASIC), Arranjos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer suas combinações. Quando as técnicas são parcialmente implementadas em software, um dispositivo pode armazenar instruções de software em um meio legível por computador não transitório e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta divulgação. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo, incluindo o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0045] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização de HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o modelo de teste HEVC (HM). O HM presume vários recursos adicionais de dispositivos de codificação de vídeo em relação aos dispositivos existentes de acordo com, por exemplo, ITU-T H.264 / AVC. Por exemplo, enquanto H.264 oferece nove modos de codificação de intrapredição, o HM pode prover até trinta e três modos de codificação de intrapredição.
[0046] De um modo geral, o modelo de trabalho do HM descreve que um quadro de vídeo ou imagem pode ser dividido em uma sequência de blocos em árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras de luminância e crominância. Sintaxe de dados dentro de um fluxo de bits pode definir um tamanho para a LCU, que é uma unidade de codificação maior em termos de número de pixels. Uma fatia inclui um número de blocos em árvore consecutivos em ordem de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada bloco em árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Em geral, uma estrutura de dados inclui um nó quadtree por CU, com um nó de raiz correspondente ao bloco em árvore. Se uma CU é dividida em quatro sub-CUs, o nó correspondente A CU inclui quatro nós de folhas, cada um dos quais corresponde a uma das sub-CUs.
[0047] Cada nó da estrutura de dados quadtree podem prover dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um flag de divisão, que indica se a CU correspondente ao nó é dividida em sub- CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender do fato de a CU ser dividida em sub-CUs. Se uma CU não é adicionalmente dividida, ela é referida como uma folha-CU. Nesta divulgação, quatro sub-CUs de uma folha-CU também serão referidas como folha-CUs mesmo se não houver divisão explícita da folha-CU original. Por exemplo, se um tamanho de 16x16 de CU não é adicionalmente dividida, as quatro sub-CUs de 8x8 irão também ser referidas como folha-CUs embora a CU 16x16 nunca tenha sido dividida.
[0048] Uma CU tem um efeito semelhante ao de um macrobloco da norma H.264, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um bloco em árvore pode ser dividido em quatro nós filho (também referidos como sub-CUs), e cada nó filho por sua vez pode ser um nó pai e ser dividido em mais quatro nós filho. Um nó filho não dividido definitivo, referido como um nó de folha do quadtree, compreende um nó de codificação, também referido como uma folha-CU. Sintaxe de dados associada com um fluxo de bits codificado pode definir um número máximo de vezes que um bloco em árvore pode ser dividido, referido como uma profundidade de CU máxima, e pode também definir um tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits pode também definir uma unidade de codificação menor (SCU). Esta descrição usa o termo "bloco" para se referir a qualquer uma de uma CU, PU, ou TU, no contexto de HEVC, ou estruturas de dados semelhantes no contexto de outras normas (por exemplo, macroblocos e sub-blocos do mesmo em H.264 / AVC).
[0049] Uma CU inclui um nó de codificação e unidades de predição (PUs) e as unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho de codificação e o nó deve ter uma forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco em árvore com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Sintaxe dados associados a uma CU pode descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Modos de particionamento podem ser diferentes entre se a CU é pulada ou modo direto codificado, codificada por modo de intrapredição, ou codificada por modo interpredição. PUs podem ser particionadas para ser não quadradas. Sintaxe de dados associada com uma CU também pode descrever, por exemplo, particionamento da CU em uma ou mais TUs de acordo com uma quadtree. A TU pode ser quadrada ou não quadrada (por exemplo, retangular) em forma.
[0050] O padrão HEVC permite transformadas de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente graduadas com base no tamanho de PU dentro de uma determinada CU definida para uma LCU particionada, embora isso possa não ser sempre o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura quadtree conhecida como "árvore quad residual" (RQT). Os nós folha da RQT podem ser referidas como unidades de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0051] Uma folha-CU pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondente a toda ou a uma porção da CU correspondente, e pode incluir dados para obter uma amostra de referência para a PU. Além disso, uma PU inclui dados referentes à predição. Por exemplo, quando a PU é codificada por intramodo, os dados para a PU podem ser incluídos em um quadtree residual (RQT), que pode incluir dados que descrevem um modo de intrapredição para uma TU correspondente a PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, uma componente horizontal do vetor de movimento, uma componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, um quarto de precisão de pixel ou um oitavo de precisão de pixel), uma imagem de referência para a qual o vetor de movimento aponta, e/ou uma lista de imagem de referência (por exemplo, lista 0, Lista 1, ou Lista C) para o vetor de movimento.
[0052] Uma folha-CU tendo uma ou mais PUs pode também incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando uma RQT (também referida como uma estrutura quadtree de TU), como discutido acima. Por exemplo, um flag de divisão pode indicar se uma folha-CU é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser adicionalmente dividida em mais sub-TUs. Quando uma TU não é adicionalmente dividida, ela pode ser referida como uma folha-TU. Geralmente, para intracodificação, todas as folha-TUs pertencentes a uma folha-CU compartilham o mesmo modo de intrapredição. Isto é, o mesmo modo de intrapredição é geralmente aplicado para calcular os valores previstos para todas as TUs de uma folha-CU. Para a intracodificação, um codificador de vídeo pode calcular um valor residual para cada folha-TU utilizando o modo de intrapredição, tal como uma diferença entre a parte da CU correspondente à TU e o bloco original. Uma TU não está necessariamente limitada ao tamanho de uma PU. Assim, a TU pode ser maior ou menor do que uma PU. Para a intracodificação, uma PU pode ser colocada com uma folha- TU correspondente para a mesmo CU. Em alguns exemplos, a dimensão máxima de uma folha-TU pode corresponder ao tamanho da folha-CU correspondente.
[0053] Além disso, TUs de folha-CU podem também ser associadas com as respectivas estruturas de dados quadtree, referidas como Quadtrees residuais (RQTs). Isto é, uma folha-CU pode incluir um quadtree indicando a forma como a folha-CU é dividida em TUs. O nó raiz de uma quadtree TU geralmente corresponde a uma folha-CU, enquanto o nó raiz de uma quadtree CU corresponde geralmente a um bloco em árvore (ou LCU). TUs da RQT que não são divididas são referidas como folha-TUs. Em geral, esta divulgação usa os termos CU e TU para se referir a folha-CU e folha-TU, respectivamente, salvo indicação em contrário.
[0054] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve uma série de quadros incluídos no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. Codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias individuais de vídeo a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variados, e podem ser diferentes em tamanho de acordo com um padrão de codificação especificado.
[0055] A título de exemplo, o HM suporta predição em vários tamanhos de PU. Partindo do princípio de que o tamanho de uma CU particular é 2Nx2N, o HM suporta intrapredição em tamanhos de PU de 2Nx2N ou NxN, e interpredição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. O HM também suporta particionamento assimétrico para interpredição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em particionamento assimétrico, uma direção de uma CU não é particionada, enquanto que a outra direção é particionada em 25% e 75%. A porção da CU que corresponde a 25% da partição é indicada por um "n" seguida da indicação de "Para cima", "Para abaixo", "Esquerda" ou "Direita". Assim, por exemplo, "2NxnU" refere-se a uma CU 2Nx2N que é particionada horizontalmente com uma PU 2Nx0.5N na parte superior e uma PU de 2Nx1.5N na parte inferior.
[0056] Nesta divulgação, "NxN" e "N por N" pode ser utilizado indiferentemente para designar as dimensões de pixels de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (Y = 16) e 16 elementos de imagem na direção horizontal (X = 16). Do mesmo modo, um bloco de NxN geralmente tem N pixels na direção vertical e N pixels na direção horizontal, no qual n representa um valor inteiro positivo. Os pixels de um bloco podem ser dispostos em filas e colunas. Além disso, os blocos não necessariamente têm o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que m não é necessariamente igual a N.
[0057] Na sequência de codificação intrapreditivo ou interpreditivo usando a PU de uma CU, codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. A PU pode compreender dados de sintaxe que descrevem um método ou modo de gerar dados de pixel preditivos no domínio espacial (também referido como o domínio do pixel) e as TUs podem compreender coeficientes no domínio da transformada após a aplicação de uma transformada, por exemplo, uma transformada de seno discreta (DST), uma transformada de cosseno discreta (DCT), uma transformada e inteiro, uma transformada Wavelet, ou uma transformada conceitualmente similar aos dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre pixels da imagem codificada e valores de predição correspondentes as Pus. Codificador de vídeo 20 pode formar as TUs incluindo os dados residuais na CU, e, em seguida, transformar as TUs para produzir coeficientes de transformada para a CU.
[0058] Na sequência de eventuais transformadas para produzir coeficientes de transformada, codificador de vídeo 20 pode executar quantização dos coeficientes de transformada. Quantização é um termo amplo que destina-se a ter o seu mais amplo significado comum. Em uma modalidade, quantização refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante quantização, em que n é maior do que m.
[0059] Após a quantização, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional da matriz bidimensional incluindo coeficientes de transformada quantizados. A verificação pode ser concebida para colocar coeficientes de energia mais elevada (e, portanto, menor frequência) na frente da matriz e para colocar de coeficientes de energia mais baixa (e, portanto, frequência mais elevada) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer coeficientes de transformada quantizados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, codificador de vídeo 20 pode executar uma varredura adaptativa. Após a varredura de coeficientes de transformada quantizados, para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa de contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados com os dados de vídeo codificados para uso de decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0060] Para executar CABAC, codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto para um símbolo a ser transmitido. O contexto pode referir-se, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras código em VLC podem ser construídas tal que códigos relativamente curtos correspondem a símbolos mais prováveis, enquanto os códigos mais longos correspondem a símbolos menos prováveis. Deste modo, a utilização de VLC pode conseguir uma economia de bit ao, por exemplo, usar as palavras código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0061] Codificador de vídeo 20 pode ainda enviar dados de sintaxe, tais como dados baseados em blocos de sintaxe, dados de sintaxe baseados em quadro, e dados de sintaxe baseados em GOP, para decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia, ou um cabeçalho de GOP. Os dados de sintaxe GOP podem descrever um número de quadros no respectivo GOP, e os dados de sintaxe de quadro podem indicar um modo de codificação / predição utilizado para codificar a estrutura correspondente.
CODIFICADOR DE VÍDEO
[0062] A figura 2 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos na presente divulgação. Codificador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação, incluindo mas não se limitando aos métodos de realização de graduação espacial utilizando uma função de graduação temporal descrita em maior detalhe abaixo, com relação à figura 4. Como um exemplo, a unidade de predição de intercamada 66 (quando provida) pode ser configurada para realizar qualquer uma ou todas as técnicas descritas nesta divulgação. No entanto, aspectos desta divulgação não são tão limitados. Em alguns exemplos, as técnicas descritas nesta divulgação podem ser compartilhadas entre as várias componentes do codificador de vídeo 20. Em alguns exemplos, além de ou em vez de, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta divulgação.
[0063] Codificador de vídeo 20 pode executar predição intra e intercamada (por vezes designada como codificação intra, ou intercamada) de blocos de vídeo dentro de fatias de vídeo. Intracodificação confia na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um determinado quadro de vídeo ou imagem. Intercodificação se baseia na predição temporal, para reduzir ou eliminar a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Codificação de intercamada baseia-se na predição com base em vídeo dentro de uma camada (s) diferente dentro da mesma sequência de codificação de vídeo. Intramodo (modo I) pode se referir a qualquer um dos vários modos espaciais baseados em codificação. Intermodos, tais como predição unidirecional (modo P) ou bipredição (modo B), pode se referir a qualquer um dos vários modos de codificação temporais.
[0064] Como mostrado na figura 2, codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 2, codificador de vídeo 20 inclui o modo de seleção de unidade 40, memória de quadro de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54, e unidade de codificação de entropia 56. Unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimação de movimento 42, unidade de intrapredição 46, unidade de predição de intercamada 66, e a unidade de partição 48.
[0065] Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 inclui também a unidade de quantização inversa 58, unidade de transformada inversa 60, e somador 62. Um filtro de desbloqueio (não mostrado na figura 2) também pode ser incluído para filtrar fronteiras de bloco para remover artefatos de desbloqueio de vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtra a saída do somador 62. Os filtros adicionais (em loop ou pós loop) podem também ser usados em adição ao filtro de desbloqueio. Tais filtros não são mostrados por questões de brevidade, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro de loop).
[0066] Durante o processo de codificação, codificador de vídeo 20 recebe um quadro de vídeo ou uma fatia de ser codificada. O quadro ou fatia pode ser dividido em vários blocos de vídeo. Unidade de estimação de movimento 42 e unidade de compensação de movimento 44 executam a codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos de um ou mais quadros de referência para prover uma predição temporal. Unidade de intrapredição 46 pode alternativamente executar codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para prover uma predição espacial. Codificador de vídeo 20 pode executar múltiplas passagens de codificação, por exemplo, para selecionar um modo de codificação apropriada para cada bloco de dados de vídeo.
[0067] Além disso, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode, inicialmente, particionar um quadro ou fatia em LCUs, e cada partição das LCUs em sub-CUs com base na análise de taxa de distorção (por exemplo, optimização de taxa de distorção, etc.). Unidade de seleção de modo 40 pode produzir ainda uma estrutura de dados quadtree indicativa de particionamento de uma LCU em sub-CUs. CUs de nó de folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0068] Unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra, inter, ou modo de predição de intercamada, por exemplo, com base em resultados de erro, e prover o intra, inter bloco codificado de intercamada para o somador 50 para gerar dados de bloco residuais e para somador 62 para reconstruir o bloco codificado para o uso como um quadro de referência. Unidade de seleção de modo 40 também provê elementos de sintaxe, tais como vetores de movimento, indicadores intramodo, informações de partição, e outras informações de sintaxe, para a unidade de codificação de entropia 56.
[0069] Unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. Estimação de movimento, realizada pela unidade de estimação de movimento 42, é o processo de geração de vetores de movimento, que calculam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o desvio de uma PU de um bloco de vídeo dentro de um quadro de vídeo atual ou imagem em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual a ser codificado dentro do quadro atual (ou outra unidade de codificação). Um bloco preditivo é um bloco que é encontrado para corresponder de perto o bloco a ser codificado, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma de diferença quadrática (SSD), ou outras métricas de diferença. Em alguns exemplos, codificador de vídeo 20 pode calcular valores para posições de pixel subinteiros de imagens de referência armazenadas na memória de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores das posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições de pixels fracionários do quadro de referência. Por conseguinte, a unidade de estimação de movimento 42 pode executar uma busca de movimento relativa para as posições de pixel completa e posições de pixel fracionada e emitir um vetor de movimento com uma precisão de pixel fracionada.
[0070] Unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagem de referência (Lista 0) ou uma segunda lista de imagem de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de referência 64. Unidade de estimação de movimento 42 envia o vetor de movimento calculado para unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0071] A compensação do movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição para o qual vetor de movimento aponta em uma das listas de imagem de referência. Somador 50 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual a ser codificado, formando os valores de diferença de pixels, como discutido abaixo. Em algumas modalidades, a unidade de estimação de movimento 42 pode executar a estimação de movimento em relação às componentes de luminância, e a unidade de compensação de movimento 44 pode utilizar os vetores de movimento calculados com base nas componentes de luminância para ambas as componentes de crominância e componentes de luminância. Unidade de seleção de modo 40 pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso de decodificador de vídeo 30 na codificação dos blocos de vídeo da fatia de vídeo.
[0072] A unidade de intrapredição 46 pode intrapredizer ou calcular um bloco atual, como uma alternativa para a interpredição realizada pela unidade de estimação de movimento 42 e a unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco atual utilizando diversos modos de intrapredição, por exemplo, durante a passagem de codificação separada, e unidade de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) podem selecionar um modo de intrapredição para utilizar a partir dos modos testados.
[0073] Por exemplo, unidade de intrapredição 46 pode calcular os valores de taxa de distorção usando uma análise de taxa de distorção para os vários modos de intrapredição testados, e selecionar o modo de intrapredição tendo as melhores características de taxa de distorção entre os modos testados. Análise da taxa de distorção geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) utilizada para produzir o bloco codificado. Unidade de intrapredição 46 pode calcular as razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição apresenta o melhor valor da taxa de distorção para o bloco.
[0074] Depois de selecionar um modo de intrapredição para um bloco, unidade de intrapredição 46 pode prover informações indicativas do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação indicando o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, quais podem incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavras código), definições de contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição, e uma tabela de índice de modo de intrapredição modificada para a utilização de cada um dos contextos.
[0075] O codificador de vídeo 20 pode incluir uma unidade de predição de intercamada 66. A unidade de predição de intercamada 66 está configurada para predizer um bloco atual (por exemplo, um bloco atual na EL) utilizando uma ou mais diferentes camadas que estão disponíveis em SVC (por exemplo, uma base ou camada de referência). Tal predição pode ser referida como predição de intercamada. Unidade de predição de intercamada 66 utiliza métodos de predição para reduzir a redundância de intercamada, melhorando assim a eficiência de codificação e reduzindo os requisitos de recursos computacionais. Alguns exemplos de predição de intercamada incluem, intrapredição de intercamada, predição de movimento intercamada, e predição residual intercamada. Intrapredição de intercamada utiliza a reconstrução de blocos colocalizados na camada base para predizer o bloco atual na camada de melhoramento. Predição de movimento intercamada utiliza informação de movimento da camada base para predizer o movimento na camada de melhoramento. Predição residual intercamada utiliza o resíduo da camada base para predizer o resíduo da camada de melhoramento. Quando as camadas de base e de melhoramento têm diferentes resoluções espaciais, graduação de vetor de movimento espacial e/ou mapeamento de posição intercamada, utilizando uma função de graduação temporal pode ser realizado pela unidade de predição de intercamada 66, como descrito em maior detalhe abaixo.
[0076] O codificador de vídeo 20 forma um bloco de vídeo residual, subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original que está sendo codificado. Somador 50 representa o componente ou componentes que executam esta operação de subtração. Unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente semelhante no bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficientes de transformada residuais. Unidade de processamento de transformada 52 pode executar outras transformadas que são conceitualmente semelhantes a DCT. Por exemplo, as transformadas de seno discretas (DST), transformadas wavelet, transformada de inteiros, transforma de sub-band ou outros tipos de transformadas também podem ser usados.
[0077] Unidade de processamento de transformada 52 pode aplicar a transformada no bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual a partir de um domínio de valores de pixel para um domínio da transformada, tal como um domínio de frequência. Unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em alguns exemplos, uma unidade de quantização 54 pode, em seguida, executar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, unidade de codificação de entropia 56 pode executar a varredura.
[0078] Após a quantização, unidade de codificação de entropia 56 codifica por entropia coeficientes de transformada quantizados. Por exemplo, unidade de codificação de entropia 56 pode realizar a codificação de comprimento variável adaptativa de contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outra técnica de codificação de entropia. No caso de codificação de entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.
[0079] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel (por exemplo, para utilização posterior como um bloco de referência). A unidade de compensação de movimento 44 pode calcular um bloco de referência, adicionando o bloco residual a um bloco preditivo de um dos quadros da memória de quadro de referência 64. Unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso na estimação de movimento. Somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo seguinte.
DECODIFICADOR DE VÍDEO
[0080] A figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar as técnicas de acordo com os aspectos descritos na presente divulgação. O decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas desta divulgação, incluindo mas não se limitando aos métodos de realização de graduação espacial utilizando uma função de graduação temporal, descrita em maior detalhe abaixo, com relação à figura 4. Como um exemplo, unidade de predição de intercamada 75 pode ser configurada para realizar qualquer uma ou todas as técnicas descritas nesta divulgação. No entanto, aspectos desta divulgação não são tão limitados. Em alguns exemplos, as técnicas descritas nesta divulgação podem ser compartilhadas entre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, além de ou em vez de, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta divulgação.
[0081] No exemplo da figura 3, decodificador de vídeo 30 inclui uma unidade de entropia 70, unidade de compensação de movimento 72, unidade de intrapredição 74, unidade de predição de intercamada 75, unidade de quantização inversa 76, unidade de transformada inversa 78, memória de quadro de referência 82 e somador 80. Em algumas modalidades, a unidade de compensação de movimento 72 e/ou a unidade de intrapredição 74 pode ser configurada para realizar a predição de intercamada, em cujo caso a unidade de predição de intercamada 75 pode ser omitida. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação recíproca geralmente à passagem de codificação descrita em relação ao codificador de vídeo 20 (figura 2). Unidade de compensação de movimento 72 pode gerar dados de predição baseados em vetores de movimento recebidos da unidade de decodificação de entropia 70, enquanto unidade de intrapredição 74 pode gerar dados de predição com base em indicadores de modo intrapredição recebidos de unidade de decodificação de entropia 70.
[0082] Durante o processo de decodificação, decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados a partir de codificador de vídeo 20. unidade de decodificação de entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo intrapredição e outros elementos de sintaxe. Unidade de decodificação de entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe para unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloqueio de vídeo.
[0083] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados a partir de blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (por exemplo, B, P ou GPB), unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. Decodificador de vídeo 30 pode construir as listas de quadro de referência, lista 0 e lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas na memória de referência 92. Unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia vídeo atual ao analisar os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual que está sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza algum dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, status de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0084] Unidade de compensação de movimento 72 pode também executar a interpolação com base em filtros de interpolação. Unidade de compensação de movimento 72 pode usar filtros de interpolação como os utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para os pixels subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20, a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0085] O decodificador de vídeo 30 pode também incluir uma unidade de predição de intercamada 75. A unidade de predição de intercamada 75 está configurada para predizer um bloco atual (por exemplo, um bloco atual na EL) utilizando uma ou mais diferentes camadas que estão disponíveis em SVC (por exemplo, uma camada base ou referência). Tal predição pode ser referida como predição de intercamada. Unidade de predição de intercamada 75 utiliza métodos de predição para reduzir a redundância de intercamada, melhorando assim a eficiência de codificação e reduzindo os requisitos de recursos computacionais. Alguns exemplos de predição de intercamada incluem, intrapredição de intercamada, predição de movimento intercamada, e predição residual intercamada. Intrapredição de intercamada utiliza a reconstrução de blocos colocalizado na camada base para predizer o bloco atual na camada de melhoramento. Predição de movimento intercamada utiliza informação de movimento da camada base para predizer o movimento na camada de melhoramento. Predição residual intercamada utiliza o resíduo da camada base para predizer o resíduo da camada de melhoramento. Quando as camadas de base e de melhoramento têm diferentes resoluções espaciais, graduação de vetor de movimento espacial e/ou mapeamento de posição intercamada podem ser realizados pela unidade de predição de intercamada 75 utilizando uma função de graduação temporal, como é descrito em maior detalhe abaixo.
[0086] unidade de quantização inversa 76 quantifica inversamente, por exemplo, de-quantifica, coeficientes de transformada quantizados providos no fluxo de bits e decodificados pela unidade de decodificação de entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa, que deve ser aplicado.
[0087] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada de inteiro inversa, ou um processo de transformada inverso conceitualmente semelhante, aos coeficientes de transformada, a fim de produzir blocos residuais no domínio do pixel.
[0088] Depois da unidade de compensação de movimento 72 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. Somador 90 representa o componente ou componentes que executam esta operação de soma. Se desejado, um filtro de desbloqueio pode também ser aplicado para filtrar os blocos decodificados, a fim de remover artefatos de desbloqueio. Outros filtros de loop (quer no loop de codificação ou depois do loop de codificação) também podem ser usados para suavizar as transições de pixel, ou de outra forma melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 92, que armazena imagens de referência utilizadas para a compensação de movimento subsequente. Memória de quadro de referência 82 também armazena vídeo decodificado para a apresentação posterior em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1.
GRADUAÇÃO DE VETOR DE MOVIMENTO
[0089] Como discutido acima, em algumas modalidades, um vetor de movimento é graduado como parte de um processo de codificação ou decodificação. Por exemplo, os vetores de movimento a partir de uma camada tendo uma resolução espacial diferente da camada do bloco atual podem ser graduados antes de serem usados para codificar ou decodificar o bloco atual. Em uma modalidade, um processador é configurado para implementar um método de graduação de vetor de movimento. A primeira etapa do método pode ser para alterar o parâmetro de entrada iScaleBase, discutido acima, para:
Figure img0004
Um iScaleBase determinado usando uma razão dos valores de altura de camada de melhoramento e de base proporciona vantagens sobre o uso de uma razão entre os valores de largura da camada base e de melhoramento, porque o valor da altura é geralmente menor do que a largura.
[0090] Como outra modalidade do método para o cálculo dos parâmetros de entrada, um desvio pode ser adicionado à equação da seguinte forma:
Figure img0005
onde o desvio pode ser blW/2, o que corresponde a um valor de desvio de arredondamento de 0,5, uma outra modalidade que proporciona um desvio de arredondamento, o parâmetro de entrada pode ser:
Figure img0006
[0091] Como discutido acima, estes parâmetros de entrada podem ser usados como a entrada para uma função de graduação temporal TMVP que já existe sob o padrão HEVC para executar graduação espacial. Usar a função de graduação temporal TMVP existente para executar graduação espacial provê a vantagem de permitir a graduação espacial sem introduzir uma nova função de graduação específica para o padrão HEVC ou suas extensões (tais como a extensão SHVC).
RAZÃO DE ESCALABILIDADE PARA DIREÇÕES HORIZONTAL E VERTICAL
[0092] Se for desejado que a razão de escalabilidade não deva ser a mesma em direções horizontais e verticais, então, os métodos descritos acima podem ser estendidos através da introdução de dois parâmetros de escala iScaleBaseX e iScaleBaseY para as direções horizontal e vertical, respectivamente. Em uma modalidade:
Figure img0007
em que o fator graduado, N, pode ser um número inteiro, tal como 256. Em outro exemplo, um desvio pode ser adicionado ao numerador de cada parâmetro de escala.
[0093] Nesta modalidade, a função de graduação TMVP terá dois parâmetros de entrada, iScaleBaseY e iScaleBaseX, e o método de graduação TMVP pode ser aplicado para cada componente de vetor de movimento de forma independente. Por exemplo, a função TMVP pode ser chamada duas vezes; pela primeira vez usando iScaleBaseX como uma entrada, e pela segunda vez usando iScaleBaseY como uma entrada.
[0094] Além disso, todos os métodos e as técnicas descritas a seguir em termos de uma razão de escalabilidade semelhante podem ser aplicados a razões de escalabilidade horizontal e vertical de forma independente. Por exemplo, métodos semelhantes podem ser executados para o mapeamento das posições descritas abaixo, onde (por exemplo, uma para a direção horizontal e uma para direção vertical) podem ser introduzidos dois parâmetros de graduação. Para o cálculo dos parâmetros horizontais, elP e blW são usados, e para o cálculo de parâmetros verticais, elH e blH são utilizados.
REDUÇÃO DA FAIXA DE DADOS PARA A DIVISÃO
[0095] Em algumas modalidades, para reduzir computação, largura de banda, e/ou custos de memória, a operação de divisão do parâmetro iScaleBase é limitada, restringindo o divisor dentro de uma determinada (por exemplo, predeterminada) faixa. Ao fazer isso, a operação de divisão pode ser implementada com uma tabela de consulta de tamanho menor.
[0096] Os valores de largura ou altura da camada base e das camadas de melhoramento são reduzidos de tal modo que a largura da camada base será na faixa de (0, blMax), onde blMax é os valores possíveis de largura máxima da camada base e que podem ser ligados ao tamanho da tabela de consulta. Quanto menor este valor, menor a tabela de consulta que pode ser utilizada. Um limite ideal entre o tamanho e a precisão da tabela de consulta pode ser encontrado alterando o valor blMax.
[0097] Para um dado número blMax, o número de desvios (ou o divisor de potência de 2) é calculado para a largura ou a altura da camada base, para tornar o valor na faixa de (0, blMax). Em uma modalidade, o número de mudanças é referido como N, e o divisor correspondente da camada base é 2N. A potência de dois pode ser utilizada para simplificar a implementação, como operações de divisão por dois podem ser realizada por desvio de bits. No entanto, em outras modalidades, o valor pode ser qualquer número menor do que a largura ou a altura da camada base.
[0098] Em seguida, a camada base e camada de melhoramento são desviadas para direita por N para manter a mesma relação de escalabilidade. O cálculo dos parâmetros de entrada final pode ser expresso como: iScaleBase = ( ( elW >> N ) « 8 ) / ( blW » N ).
[0099] Uma fórmula de variante pode ser utilizada para reduzir o erro de arredondamento: iScaleBase = ( ( elW << 8 ) >> N ) / ( blW >> N ), onde (blW >> N) está na faixa (0, blMax), tendo limite superior, e desvio para esquerda por 8 é usado para normalizar o parâmetro de entrada da função de graduação TMVP (por exemplo, escala de 1 corresponde a 256).
[00100] Além disso, o desvio de arredondamento pode ser adicionado com a fórmula acima. Por exemplo, o desvio pode ser adicionado como: iScaleBase = ( ( ( elW >> N ) + offset ) ) << 8 ) / ( blW >> N ), onde o desvio pode ser (blW >> (N + 1)), que corresponde a valor de desvio de arredondamento de 0,5. Outra variante de desvio de arredondamento pode ser (blW >> (N + 1)) - 1, em que o arredondamento para zero é usado.
[00101] A variante que se segue pode ser usada para reduzir o erro de arredondamento para uma faixa de dados reduzida de elW: iScaleBase = (( ( elW << 8 ) >> N ) + offset)) / (blW >> N). Do mesmo modo o desvio pode ser definido para (blW >> (N + 1)), correspondendo a valor de desvio de arredondamento de 0,5, ou (blW >> (N + 1))1, correspondente ao arredondamento para zero. A variável blW e elW em todas as equações acima pode ser substituída por blH e elH.
IMPLEMENTAÇÃO C++
[00102] Um exemplo de uma implementação C++ é como se segue: Int blMax = 128; Int N = θ; Int. biWidth = iBWidth; while( biWidth > biMax ) { biWidth >>= 1; N++; } assert( ( iBWidth >> N ) < biMax ); iScaleBase = ( ( iEWidth >> N ) << 8 ) / ( iBWidth >> N ); onde iBWidth é a largura da camada base, iEWidth é a largura da camada de melhoramento. Embora esta modalidade omita desvio de arredondamento, desvio de arredondamento pode ser incluído, como discutido acima.
EVITANDO OPERAÇÃO DE DIVISÃO
[00103] Para a conversão mais fácil de uma operação de divisão para uma função de acesso à tabela de busca, o cálculo do parâmetro de entrada pode ser implementado como segue:
Figure img0008
Em outra modalidade, é adicionado um desvio:
Figure img0009
onde o desvio pode ser definido como blW/2 ou
Figure img0010
como discutido acima. Em outra modalidade:
Figure img0011
onde K é o valor constante predefinido (por exemplo, um valor exemplar de K é 16). Com esta expressão, a divisao
Figure img0012
pode ser facilmente substituída por uma tabela de consulta.
[00104] Os métodos descritos acima podem ser aplicados com os métodos desta seção "Evitando Operação de Divisão", como bem. Por exemplo, em uma modalidade, blW é deslocado para a direita por N bits de tal forma que o valor deslocado de (blW>>N) está em uma faixa predefinida (0, blMax). O valor de (2AK/(blW>>n)) é armazenado em uma tabela de consulta para (blW>> N) na faixa de (0, blMax).
[00105] O cálculo pode ser realizado como:
Figure img0013
Em outra modalidade:
Figure img0014
onde o desvio pode ser definido para (blW>>(N + 1) ou ((blW>>(N + 1) - 1) como mencionado acima.
[00106] A variável blW e elW em todas as equações acima pode ser substituída por blH e elH, como mencionado acima.
MELHORIA DO MAPEAMENTO DE POSIÇÃO INTERCAMADA
[00107] A simplificação da operação de divisão pode ser aplicada a outros elementos, onde a divisão de acordo com a relação de aspecto de escalabilidade é utilizada. Por exemplo, pode ser também necessário dividir pela largura ou a altura da camada base para localizar a posição do pixel colocalizado na imagem de camada base. Neste caso, a mesma técnica ou métodos discutidos acima e usados para graduar um vetor de movimento, podem ser aplicados para calcular a posição de um pixel colocalizado ou bloco colocalizado na camada base.
[00108] Conforme mencionado acima, as coordenadas x e y de um pixel (ou bloco) em uma camada base (Blx, Bly) podem ser expressas como:
Figure img0015
Onde X e Y correspondem às coordenadas do pixel na camada de melhoramento, e blW, elW, blH, e elH correspondem às larguras e alturas da camada base e de melhoramento, respectivamente. A equação acima pode ser modificada como se segue:
Figure img0016
[00109] Todos os métodos mencionados acima podem ser aplicados para a equação acima, para reduzir o custo da operação de divisão por elW. Além disso, qualquer um dos desvios descritos acima, pode ser aplicado para definir o desvio 1, acima.
IMPLEMENTAÇÃO DE TABELA DE BUSCA
[00110] Em uma outra modalidade, a operação de divisão é removida substituindo-a por uma tabela de consulta que se baseia no intervalo de valores reduzidos de larguras e/ou alturas de camada base e camada de melhoramento.
[00111] Em uma modalidade, os valores da largura e/ou a altura da camada base e camada de melhoramento são reduzidos para assegurar que eles vão cair dentro de uma faixa de (0, blMax) e (0, elMAX), respectivamente. blMax é o valor de largura e/ou altura da camada base máxima possível é elMAX é valor de altura e/ou largura de camada de melhoramento máxima possível. Ambos blMax e ELMAX podem ser conectados a ou relacionados com o tamanho da tabela de consulta. O menor destes valores, a menor tabela de consulta que pode ser utilizada.
[00112] Esta abordagem provê uma troca entre complexidade de computação e precisão de escala. Um limite ideal entre o tamanho da tabela de consulta e a precisão pode ser encontrada alterando valores blMax e elMAX.
[00113] Para um dado número blMax, o número de desvios (ou o divisor de potência de 2) pode ser calculado para a largura e/ou altura da camada base e de melhoramento para fazer o valor na faixa de (0, blMax) e/ou (0, elMAX) respectivamente. Por exemplo, o número de mudanças pode ser representado como Nb, e o divisor correspondente da camada base será de 2Nb. As mesmas técnicas e métodos podem ser aplicados a uma camada de melhoramento, também. A potência de 2 pode ser escolhida devido ao funcionamento fácil, uma vez que a divisão pode ser realizada por desvios; No entanto, em outras modalidades pode ser qualquer número menor do que a largura ou a altura da camada base.
[00114] A camada base e camadas de melhoramento são posteriormente desviadas para direita por Nb e Ne para manter a mesma proporção de escalabilidade. O cálculo dos parâmetros de entrada final pode ser expresso como: iScaleBase = LookllpTable[ ( iEWidth >> Ne ) ][ ( iBWidth >> Nb )].
[00115] A função LookupTable pode ser implementada de várias maneiras com base na precisão de arredondamento, custo de taxa de distorção, etc. Além disso, as variáveis iEWidth e IbWidth em todas as equações acima podem ser substituídas por iEHeight e iBHeight.
[00116] A figura 4 ilustra uma modalidade de um método de realizar a graduação espacial utilizando uma função de graduação temporal que pode ser realizada pelo codificador de vídeo 20 da figura 2 ou o decodificador de vídeo 30 da figura 3. O método 400 pode ser realizado por qualquer uma ou mais da unidade de estimação de movimento 42, unidade de compensação de movimento 44, unidade de intrapredição 46 e unidade de predição intercamada 66 do codificador de vídeo 20 da figura 2. Em uma outra modalidade, o processo 400 pode ser realizado por qualquer uma ou mais da unidade de compensação de movimento 72, a unidade de intrapredição 74 e da unidade de predição intercamada 75 do decodificador da figura 3.
[00117] O método 400 começa no bloco 410. No bloco 420, valores de dimensão espaciais da camada base (BL) e camada de melhoramento (EL) são determinados. Por exemplo, a largura da imagem de camada base e a largura da imagem de camada de melhoramento podem ser determinadas no bloco 420. Em uma outra modalidade, a altura da imagem de camada base e a altura da imagem de camada de melhoramento são determinadas no bloco 420. Em uma outra modalidade, a dimensão é a mesma dimensão em ambas BL e EL.
[00118] No bloco 430, um fator de graduação é determinado com base nos valores de dimensão espacial de BL e EL de modo que o fator de graduação seja condicionado dentro de uma faixa predeterminada. Por exemplo, o valor de dimensão de BL pode ser obrigado a estar dentro da faixa de (0, blMax), como discutido acima, e o valor de dimensão de EL pode ser obrigado a estar dentro da faixa de (0, elMAX), como discutido acima. Em uma modalidade, o fator de graduação é limitado pela multiplicação da proporção dos valores de dimensão EL e BL por um primeiro valor e dividindo o produto por um segundo valor. Em uma modalidade, o segundo valor é uma potência de 2, de tal modo que a divisão pode ser realizada por uma operação de desvio para a direita. O fator de graduação é limitado de tal modo que ele pode ser usado com um processo de graduação de vetor de movimento preexistente ou função, tais como o processo de graduação de TMVP fornecido pela especificação HEVC. Em uma modalidade, o fator de graduação é limitado pelo uso de uma função de corte.
[00119] No bloco 440 um elemento associado tanto com a EL ou BL é espacialmente graduado usando uma função de graduação temporal e fator de graduação. Por exemplo, em uma modalidade, o elemento corresponde a um vetor de movimento associado a um bloco de vídeo na BL. Em uma outra modalidade, o elemento corresponde à localização espacial (ou posição) de um bloco de pixels ou vídeo na BL. O método 400 prossegue para o bloco 450 e termina.
[00120] Embora a descrição anterior tenha descrito modalidades particulares, muitas variações são possíveis. Por exemplo, como mencionado acima, as técnicas acima podem ser aplicadas à codificação de vídeo 3D. Em algumas modalidades de vídeo 3D, uma camada de referência (por exemplo, uma camada base) inclui informação de vídeo suficiente para exibir uma primeira vista de um vídeo e a camada de melhoramento inclui informação de vídeo adicional em relação à camada de referência de tal modo que a camada de referência e a camada de melhoramento juntas incluem informação de vídeo suficiente para mostrar um segundo modo de exibição de vídeo. Estas duas vistas podem ser usadas para gerar uma imagem estereoscópica. Como discutido acima, a informação de movimento a partir da camada de referência pode ser utilizada para identificar hipótese implícita adicional quando da codificação ou decodificação de um aparelho de vídeo na camada de melhoramento, de acordo com aspectos da presente descrição. Isto pode prover uma maior eficiência de codificação para um fluxo de bits de vídeo 3D.
[00121] Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos, ou deixados de fora (por exemplo, nem todos atos descritos ou eventos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento multisequenciado, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[00122] Sinais e informação aqui divulgados podem ser representados utilizando qualquer uma de uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos, e chips que podem ser referenciados em toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos magnéticos ou partículas, campos ópticos ou partículas, ou qualquer combinação dos mesmos.
[00123] Os vários blocos ilustrativos, módulos, circuitos e etapas de algoritmo descritos lógicos em ligação com as modalidades aqui divulgadas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes ilustrativos, blocos, módulos, circuitos, e etapas foram descritos acima, geralmente em termos da sua funcionalidade. Se essa funcionalidade é implementada como hardware ou software depende da aplicação particular e restrições de projeto impostas ao sistema global. Os versados na técnica podem implementar a funcionalidade descrita em diferentes maneiras para cada aplicação em particular, mas tais decisões de execução não devem ser interpretadas como causa de afastamento do âmbito da presente invenção.
[00124] As técnicas aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer uma de uma variedade de dispositivos, tais como computadores de finalidade geral, aparelhos telefônicos de dispositivo de comunicação sem fio, ou dispositivos de circuitos integrados que têm múltiplas utilizações incluindo a aplicação em aparelhos telefônicos de dispositivos de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implementadas em conjunto em um dispositivo de lógica integrada ou separadamente, como dispositivos lógicos discretos, mas interoperáveis. Se implementadas em software, as técnicas podem ser realizadas, pelo menos em parte por um meio de armazenamento de dados legível por computador, compreendendo código de programa incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, tal como memória de acesso aleatório (RAM), tais como memória dinâmica de acesso aleatório síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável apagável eletricamente (EEPROM), memória flash, mídia de armazenamento de dados magnéticos ou ópticos, e assim por diante. As técnicas adicionalmente, ou alternativamente, podem ser realizadas, pelo menos em parte por um meio de comunicação legível por computador que porta ou comunica o código do programa sob a forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, tais como sinais ou ondas propagados.
[00125] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores para fins gerais, um circuito integrado de aplicação específica (ASIC), Arranjos de porta programável em campo (FPGAs), ou outro equivalente integrado ou conjunto de circuitos de lógica discreta. Um tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nesta divulgação. Um processador de uso geral pode ser um microprocessador; mas, em alternativa, o processador pode ser qualquer processador convencional, controlador, microcontrolador, ou máquina de estados convencional. Um processador pode também ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP, ou qualquer outro tipo de configuração. Por conseguinte, o termo "processador" tal como aqui utilizado pode referir-se a qualquer estrutura acima, qualquer combinação da estrutura anterior, ou qualquer outra estrutura ou aparelho adequado para execução das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de software dedicados ou módulos de hardware configurados para codificação e decodificação, ou incorporada em um codificador - decodificador de vídeo combinado (codec).
[00126] Diversas modalidades da invenção foram descritas. Estas e outras modalidades estão dentro do âmbito das reivindicações seguintes.

Claims (11)

1. Método para decodificar informações de vídeo, o método caracterizado pelo fato de que compreende: com um processador acoplado a uma unidade de memória configurada para armazenar informações de vídeo associadas com uma camada base, BL, uma camada de reforço, EL, em que a BL compreende uma ou mais imagens BL tendo um valor de largura BL e um valor de altura BL, e a EL compreende uma ou mais imagens EL tendo um valor de largura EL e um valor de altura EL: determinar um primeiro fator de graduação baseado em uma relação de uma soma do (a) valor de largura de EL multiplicado por 256 e (b) um valor de deslocamento, pelo valor de largura de BL; determinar um segundo fator de graduação baseado em uma relação de uma soma do (a) valor de altura de EL multiplicado por 256 e (b) um valor de deslocamento, pelo valor de altura de BL, em que o primeiro fator de graduação é diferente do segundo fator de graduação; graduar espacialmente uma componente horizontal de um elemento associado com a camada base usando o primeiro fator de graduação determinado como uma entrada para uma função de graduação, em que a função de graduação é configurada para graduar de forma temporal vetores de movimento para gerar preditores de vetor de movimento temporal; graduar espacialmente uma componente vertical do elemento associado com a BL utilizando o segundo fator de graduação determinado como uma entrada para a função de graduação; e decodificar a informação de vídeo utilizando as componentes horizontal e vertical espacialmente graduadas do elemento.
2. Método para codificar informações de vídeo, o método caracterizado pelo fato de que: com um processador acoplado a uma unidade de memória configurada para armazenar informações de vídeo associadas com uma camada base, BL, uma camada de reforço, EL, em que a BL compreende uma ou mais imagens BL tendo um valor de largura BL e um valor de altura BL, e a EL compreende uma ou mais imagens EL tendo um valor de largura EL e um valor de altura EL: determinar um primeiro fator de graduação baseado em uma relação de uma soma do (a) valor de largura de EL multiplicado por 256 e (b) um valor de deslocamento, pelo valor de largura de BL; determinar um segundo fator de graduação baseado em uma relação de uma soma do (a) valor de altura de EL multiplicado por 256 e (b) um valor de deslocamento, pelo valor de altura de BL, em que o primeiro fator de graduação é diferente do segundo fator de graduação; graduar espacialmente uma componente horizontal de um elemento associado com a camada base usando o primeiro fator de graduação determinado como uma entrada para uma função de graduação, em que a função de graduação é configurada para graduar de forma temporal vetores de movimento para gerar preditores de vetor de movimento temporal; graduar espacialmente uma componente vertical do elemento associado com a BL utilizando o segundo fator de graduação determinado como uma entrada para a função de graduação; e codificar a informação de vídeo utilizando as componentes vertical e horizontal espacialmente graduadas do elemento.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o valor de deslocamento é uma metade do valor de largura BL; ou em que o valor de deslocamento é um menor do que uma metade do valor de largura BL.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o valor de largura de EL e o valor de largura de BL estão dentro de uma faixa de 0 a um valor máximo de dimensão da largura da BL.
5. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o elemento compreende um vetor de movimento; ou em que o elemento compreende uma posição espacial de um pixel ou bloco de vídeo.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que determinar o primeiro e o segundo fatores de graduação compreende determinar os primeiro e segundo fatores de graduação sem realizar uma operação de divisão; e/ou em que determinar os primeiro e segundo fatores de graduação compreende determinar os primeiros e segundo fatores de graduação, utilizando uma tabela de consulta para cada operação de divisão associada com os primeiro e segundo fatores de graduação.
7. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o valor de altura de BL, e o valor altura de EL estão dentro de uma faixa de 0 a um valor máximo de dimensão da largura da BL.
8. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 7.
9. Aparelho configurado para decodificar informação de vídeo, o aparelho caracterizado pelo fato de que compreende: meios para determinar um primeiro fator de graduação com base em uma relação de uma soma de (a) um valor de largura de camada de reforço, EL, multiplicado por 256 e (b) um valor de deslocamento, por um valor de largura de camada base, BL; meios para determinar um segundo fator de graduação baseado em uma relação de uma soma de (a) um valor de altura de EL multiplicado por 256 e (b) um valor de deslocamento, para um valor de altura de BL, em que o primeiro fator de graduação é diferente do segundo fator de graduação; meios para graduar espacialmente uma componente horizontal de um elemento associado com a camada base usando o primeiro fator de graduação determinado como uma entrada para uma função de graduação, em que a função de graduação é configurada para graduar de forma temporal vetores de movimento para gerar preditores de vetor de movimento temporal; meios para graduar espacialmente uma componente vertical do elemento associado com a BL utilizando o segundo fator de graduação determinado como uma entrada para a função de graduação; e meios para decodificar a informação de vídeo utilizando as componentes vertical e horizontal espacialmente graduadas do elemento.
10. Aparelho configurado para codificar informação de vídeo, o aparelho caracterizado pelo fato de que compreende: meios para determinar um primeiro fator de graduação com base em uma relação de uma soma de (a) um valor de largura de camada de reforço, EL, multiplicado por 256 e (b) um valor de deslocamento, para um valor de largura de camada base, BL; meios para determinar um segundo fator de graduação baseado em uma relação de soma de (a) um valor de altura de EL multiplicado por 256 e (b) um valor de deslocamento, para um valor de altura de BL, em que o primeiro fator de graduação é diferente do segundo fator de graduação; meios para graduar espacialmente uma componente horizontal de um elemento associado com a camada base usando o primeiro fator de graduação determinado como uma entrada para uma função de graduação, em que a função de graduação é configurada para graduar de forma temporal vetores de movimento para gerar preditores de vetor de movimento temporal; meios para graduar espacialmente uma componente vertical do elemento associado com a BL utilizando o segundo fator de graduação determinado como uma entrada para a função de graduação; e meios para codificar a informação de vídeo utilizando as componentes vertical e horizontal espacialmente graduadas do elemento.
11. Aparelho, de acordo com a reivindicação 9 ou 10, caracterizado pelo fato de que o aparelho é um dispositivo selecionado dentre o grupo que consiste em uma televisão digital, um sistema de broadcast direto digital, um sistema de broadcast sem fio, um assistente digital pessoal, PDA, um computador laptop, um computador desktop, um computador do tipo tablete, um leitor de e-book, uma câmera digital, um dispositivo de gravação digital, um reprodutor de mídia digital, um dispositivo de jogos de vídeo, um console de jogo de vídeo, um telefone celular, um telefone de rádio via satélite, um telefone inteligente, um dispositivo de teleconferência de vídeo e um dispositivo de fluxo contínuo de vídeo.
BR112015020968-8A 2013-03-01 2014-02-27 Graduação de vetor de movimento espacial para codificação de vídeo escalonável BR112015020968B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361771742P 2013-03-01 2013-03-01
US61/771,742 2013-03-01
US201361774516P 2013-03-07 2013-03-07
US61/774,516 2013-03-07
US14/191,311 2014-02-26
US14/191,311 US9743097B2 (en) 2013-03-01 2014-02-26 Spatial motion vector scaling for scalable video coding
PCT/US2014/019083 WO2014134334A2 (en) 2013-03-01 2014-02-27 Spatial motion vector scaling for scalable video coding

Publications (2)

Publication Number Publication Date
BR112015020968A2 BR112015020968A2 (pt) 2017-07-18
BR112015020968B1 true BR112015020968B1 (pt) 2023-02-28

Family

ID=51420941

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015020968-8A BR112015020968B1 (pt) 2013-03-01 2014-02-27 Graduação de vetor de movimento espacial para codificação de vídeo escalonável

Country Status (10)

Country Link
US (1) US9743097B2 (pt)
EP (1) EP2962463B1 (pt)
JP (1) JP6466349B2 (pt)
KR (1) KR102276276B1 (pt)
CN (1) CN105103553B (pt)
BR (1) BR112015020968B1 (pt)
ES (1) ES2769837T3 (pt)
HU (1) HUE046809T2 (pt)
TW (1) TWI543590B (pt)
WO (1) WO2014134334A2 (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9743097B2 (en) * 2013-03-01 2017-08-22 Qualcomm Incorporated Spatial motion vector scaling for scalable video coding
GB2512829B (en) * 2013-04-05 2015-05-27 Canon Kk Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme
KR20170059718A (ko) * 2015-11-23 2017-05-31 삼성전자주식회사 디코딩 장치 및 그 방법
CN106850123B (zh) * 2015-11-30 2020-02-21 上海诺基亚贝尔股份有限公司 在无线通信系统中用于层映射和解层映射的方法和装置
CN116260974B (zh) * 2023-05-04 2023-08-08 杭州雄迈集成电路技术股份有限公司 一种视频缩放方法和系统、计算机可读存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100392379B1 (ko) * 1997-07-09 2003-11-28 주식회사 팬택앤큐리텔 아래층과현재층의모드를이용한신축형이진영상부호화/복호화방법및장치
US6647061B1 (en) * 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7929610B2 (en) 2001-03-26 2011-04-19 Sharp Kabushiki Kaisha Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
KR100783396B1 (ko) * 2001-04-19 2007-12-10 엘지전자 주식회사 부호기의 서브밴드 분할을 이용한 시공간 스케일러빌러티방법
KR100587561B1 (ko) * 2004-04-08 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 구현하는 방법 및 장치
DE102004059993B4 (de) * 2004-10-15 2006-08-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Erzeugen einer codierten Videosequenz unter Verwendung einer Zwischen-Schicht-Bewegungsdaten-Prädiktion sowie Computerprogramm und computerlesbares Medium
WO2006087319A2 (en) * 2005-02-18 2006-08-24 Thomson Licensing Method for deriving coding information for high resolution pictures from low resoluton pictures and coding and decoding devices implementing said method
US7995656B2 (en) * 2005-03-10 2011-08-09 Qualcomm Incorporated Scalable video coding with two layer encoding and single layer decoding
US7961963B2 (en) * 2005-03-18 2011-06-14 Sharp Laboratories Of America, Inc. Methods and systems for extended spatial scalability with picture-level adaptation
JP2008536451A (ja) * 2005-04-14 2008-09-04 トムソン ライセンシング 空間スケーラブルビデオ符号化及び復号化向けスライス適応型動きベクトル符号化のための方法及び装置
US8867618B2 (en) 2005-07-22 2014-10-21 Thomson Licensing Method and apparatus for weighted prediction for scalable video coding
US9113147B2 (en) * 2005-09-27 2015-08-18 Qualcomm Incorporated Scalability techniques based on content information
JP5587552B2 (ja) * 2005-10-19 2014-09-10 トムソン ライセンシング スケーラブル映像符号化を用いた多視点映像符号化
EP1969853A1 (en) * 2006-01-05 2008-09-17 Thomson Licensing Inter-layer motion prediction method
US8422555B2 (en) 2006-07-11 2013-04-16 Nokia Corporation Scalable video coding
KR101233627B1 (ko) 2008-12-23 2013-02-14 한국전자통신연구원 스케일러블 부호화 장치 및 방법
EP2375751A1 (en) 2010-04-12 2011-10-12 Panasonic Corporation Complexity reduction of edge-detection based spatial interpolation
US9729873B2 (en) 2012-01-24 2017-08-08 Qualcomm Incorporated Video coding using parallel motion estimation
US9253487B2 (en) * 2012-05-31 2016-02-02 Qualcomm Incorporated Reference index for enhancement layer in scalable video coding
US20140192880A1 (en) * 2013-01-04 2014-07-10 Zhipin Deng Inter layer motion data inheritance
US9743097B2 (en) * 2013-03-01 2017-08-22 Qualcomm Incorporated Spatial motion vector scaling for scalable video coding
EP2974313B1 (en) 2013-03-12 2018-07-11 HFI Innovation Inc. Inter-layer motion vector scaling for scalable video coding

Also Published As

Publication number Publication date
CN105103553B (zh) 2018-08-28
KR102276276B1 (ko) 2021-07-12
EP2962463B1 (en) 2019-10-30
US20140247879A1 (en) 2014-09-04
JP2016513441A (ja) 2016-05-12
TWI543590B (zh) 2016-07-21
JP6466349B2 (ja) 2019-02-06
BR112015020968A2 (pt) 2017-07-18
HUE046809T2 (hu) 2020-03-30
CN105103553A (zh) 2015-11-25
EP2962463A2 (en) 2016-01-06
TW201448573A (zh) 2014-12-16
WO2014134334A3 (en) 2015-01-08
ES2769837T3 (es) 2020-06-29
WO2014134334A2 (en) 2014-09-04
US9743097B2 (en) 2017-08-22
KR20150122764A (ko) 2015-11-02

Similar Documents

Publication Publication Date Title
BR112015031009B1 (pt) Método e equipamento para codificar informações de vídeo, e, memória legível por computador
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
JP6333942B2 (ja) ビデオ情報のスケーラブルコード化のための装置及び方法
EP3005702B1 (en) Resampling using scaling factor
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112015032150B1 (pt) Intra-predição a partir de bloco preditivo
BR112016014227B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
KR20150137098A (ko) 고레벨 신택스 전용 스케일러블 비디오 코딩에 대한 계층간 레퍼런스 픽처 제한
KR20160022345A (ko) 인터-컴포넌트 필터링
US9584808B2 (en) Device and method for scalable coding of video information
BR112016008237B1 (pt) Aparelho e método para codificar informações de vídeo, aparelho para decodificar informações de vídeo e memória legível por computador
WO2014055833A1 (en) Inter-view predicted motion vector for 3d video
KR20150052248A (ko) 스케일러블 비디오 코딩에서 다운샘플링 위상 정보의 시그널링
JP6430394B2 (ja) 高効率ビデオコード化に基づくビデオ情報のスケーラブルコード化のための機器及び方法
CA2914714C (en) Signaling of view id bit depth in parameter sets
BR112015025639B1 (pt) Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas
BR112016029691B1 (pt) Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento
BR112014030605B1 (pt) Sinalização de dados para imagens de referência de longo prazo para codificação de vídeo
BR112015007116B1 (pt) Aparelho configurado para decodificar e codificar dados de vídeo, método de decodificação e codificação de dados de vídeo, e, memória legível por computador
BR112015008574B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador
BR112016006677B1 (pt) Tipo de dependência inter-vista em mv-hevc
BR112016021475B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
BR112015020968B1 (pt) Graduação de vetor de movimento espacial para codificação de vídeo escalonável
EP2941882B1 (en) Inter-layer reference picture generation for hls-only scalable video coding

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 27/02/2014, OBSERVADAS AS CONDICOES LEGAIS