BR122020016581B1 - Método de decodificação de vídeo, e método de codificação de vídeo - Google Patents

Método de decodificação de vídeo, e método de codificação de vídeo Download PDF

Info

Publication number
BR122020016581B1
BR122020016581B1 BR122020016581-2A BR122020016581A BR122020016581B1 BR 122020016581 B1 BR122020016581 B1 BR 122020016581B1 BR 122020016581 A BR122020016581 A BR 122020016581A BR 122020016581 B1 BR122020016581 B1 BR 122020016581B1
Authority
BR
Brazil
Prior art keywords
block
matrix
scaling
transformation
transformed
Prior art date
Application number
BR122020016581-2A
Other languages
English (en)
Inventor
Yoon-mi HONG
Woo-jin Han
Min-su CHEON
Jianle Chen
Original Assignee
Samsung Electronics Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co., Ltd. filed Critical Samsung Electronics Co., Ltd.
Publication of BR122020016581B1 publication Critical patent/BR122020016581B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

um método de codificação de vídeo, um equipamento de codificação de vídeo, um método de decodificação de vídeo e um equipamento de decodificação de vídeo, o método de codificação de vídeo incluindo produzir uma matriz de transformação rápida com base em uma matriz de transformação que é usada para transformação de frequência em um bloco de tamanho predeterminado; produzindo um bloco transformado mediante transformação do bloco de tamanho predeterminado mediante uso da matriz de transformação rápida; e realizar o escalonamento com relação ao bloco transformado para corrigir uma diferença entre a matriz de transformação usada para a transformação de frequência e a matriz de transformação rápida.

Description

CAMPO TÉCNICO
[0001] A presente invenção se refere a um método de codificação de vídeo, a um equipamento de codificação de vídeo, a um método de decodificação de vídeo, e a um equipamento de decodificação de vídeo, e mais especificamente, a um método e equipamento para transformar um bloco de tamanho grande, e a um método e equipamento para transformar inversamente um bloco transformado de tamanho grande.
FUNDAMENTOS DA TÉCNICA
[0002] De acordo com um padrão atual de codificação de vídeo internacional, tal como H.264 ou MPEG-4, um sinal de vídeo é dividido hierarquicamente em uma sequência, um quadro, uma fatia, um macrobloco e um bloco, em que o bloco é uma unidade de processamento mínimo. Em termos de codificação, um erro de predição remanescente do bloco é determinado por intermédio de predição de quadro intra ou de quadro inter, transformação de bloco é realizada de tal modo que energia é concentrada em um coeficiente de um decimal, e dados de imagem são compactados e gravados como um fluxo de bits codificado por intermédio de quantização, escaneamento, codificação de extensão de execução, e codificação de entropia. Em temos de decodificação, os processos são realizados na ordem oposta. Em primeiro lugar, um coeficiente de transformação de bloco de codificação de entropia é extraído a partir de um fluxo de bits. Então, um erro de predição remanescente de um bloco é reconstruído por intermédio de quantização inversa e transformação inversa, e informação de predição é usada para reconstruir os dados de vídeo do bloco. Em um processo de codificação/decodificação, um módulo de transformação se baseia em compactação de vídeo, e desempenho de transformação do módulo de transformação afeta diretamente o desempenho geral de um codec.
[0003] Transformada discreta de cosseno (DCT) é empregada como um padrão de codificação de vídeo inicial, tal como MPEG-1 ou H.261. Após DCT ter sido introduzida em 1974, DCT foi amplamente usada nos campos de codificação de imagem e vídeo. Desempenho de transformação de DCT é excelente em comparação com todas as transformadas subótimas uma vez que DCT remove uma correlação de elementos de imagem em um domínio de transformação e prepara uma base para compactação de imagem altamente eficiente. Contudo, como uma matriz DCT é expressa utilizando números de pontos flutuantes, muitos recursos de sistema são usados devido a maciças operações de pontos flutuantes. Consequentemente, um novo algoritmo DCT é exigido de modo a aperfeiçoar a eficiência de transformação enquanto realizando a transformação em um bloco de tamanho grande.
DESCRIÇÃO DETALHADA DA INVENÇÃO PROBLEMA TÉCNICO
[0004] Uma ou mais modalidades exemplares proporcionam um método de codificação de vídeo, um equipamento de codificação de vídeo, um método de decodificação de vídeo e um equipamento de decodificação de vídeo que possibilitam transformação rápida de frequência com relação a um bloco de tamanho grande. Uma ou mais modalidades exemplares também proporcionam um método de codificação de vídeo, um equipamento de codificação de vídeo, um método de decodificação de vídeo e um equipamento de decodificação de vídeo, nos quais erros de transformação que podem ser gerados ao se utilizar transformação rápida de frequência podem ser compensados por intermédio de escalonamento ou desescalonamento realizado em um processo de quantização e desquantização.
SOLUÇÃO TÉCNICA
[0005] De acordo com uma modalidade exemplar, um erro em um resultado de IDCT utilizando matriz de transformação rápida é reduzido mediante realização de escalonamento com relação a um bloco transformado.
EFEITOS VANTAJOSOS
[0006] Na transformação de imagem e na transformação inversa de imagem, de acordo com a presente invenção, uma operação baseada em número inteiro em vez de uma operação de pontos flutuantes é realizada quando um bloco grande é transformado e inversamente transformado, de modo que a complexidade de cálculo é reduzida e uma velocidade de operação é aumentada.
[0007] Além disso, um valor de erro entre transformação com base em uma operação de ponto flutuante e transformação rápida pode ser compensado mediante realização de escalonamento e desescalonamento durante a quantização ou durante a desquantização.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] As características e vantagens acima, e outras, da presente invenção se tornarão mais evidentes mediante descrição em detalhe de suas modalidades, em detalhe, com referência aos desenhos anexos nos quais: A Figura 1 é um diagrama de blocos de um equipamento de codificação de vídeo de acordo com uma modalidade da presente invenção; A Figura 2 é um gráfico de fluxo de transformada discreta de cosseno (DCT) de 4 pontos, 8 pontos, 16 pontos e 32 pontos, de acordo com uma modalidade da presente invenção; A Figura 3 é um fluxograma ilustrando um método de produzir uma matriz de escalonamento, de acordo com uma modalidade da presente invenção; As Figuras 4A-4F ilustram matrizes de escalonamento de acordo com os parâmetros de quantização para uso em transformação com relação a um bloco 16x16, de acordo com uma modalidade da presente invenção; As Figuras 5A-5F ilustram matrizes de escalonamento de acordo com os parâmetros de quantização para uso na transformação com relação a um bloco 32x32, de acordo com uma modalidade da presente invenção; As Figuras 6A-6F ilustram matrizes de desescalonamento de acordo com parâmetros de quantização aplicados a um bloco 16x16, de acordo com uma modalidade da presente invenção; As Figuras 7A-7F ilustram as matrizes de desescalonamento de acordo com os parâmetros de quantização aplicados a um bloco 32x32, de acordo com uma modalidade da presente invenção; A Figura 8 é um fluxograma de DCT de 32 pontos de acordo com outra modalidade da presente invenção; A Figura 9 é um diagrama de referência de um processo de operação de uma estrutura borboleta formando a DCT de 32 pontos da Figura 8; A Figura 10 é um fluxograma ilustrando um método de codificação de vídeo de acordo com uma modalidade da presente invenção; A Figura 11 é um diagrama de blocos de um equipamento de decodificação de vídeo de acordo com uma modalidade da presente invenção; e A Figura 12 é um fluxograma ilustrando um método de decodificação de vídeo de acordo com uma modalidade da presente invenção.
MELHOR MODO
[0009] De acordo com um aspecto da presente invenção é provido um método de codificação de vídeo compreendendo: produzir uma matriz de transformação rápida com base em uma matriz de transformação que é usada para transformação de frequência em um bloco de tamanho predeterminado; produzir um bloco transformado mediante transformação do bloco de tamanho predeterminado mediante uso da matriz de transformação rápida; e realizar escalonamento com relação ao bloco transformado para corrigir uma diferença entre a matriz de transformação usada para transformação de frequência e a matriz de transformação rápida.
[00010] De acordo com um aspecto da presente invenção, é provido um equipamento de codificação de vídeo incluindo um transformador que produz uma matriz de transformação rápida com base em uma matriz de transformação que é usada para transformação de frequência em um bloco de tamanho predeterminado e produz um bloco transformado mediante transformação do bloco de tamanho predeterminado mediante uso da matriz de transformação rápida; e um quantizador que realiza escalonamento com relação ao bloco transformado para corrigir uma diferença entre a matriz de transformação usada para transformação de frequência e a matriz de transformação rápida.
[00011] De acordo com um aspecto da presente invenção, é provido um método de decodificação de vídeo compreendendo receber um bloco transformado quantizado de um tamanho predeterminado; realizar desescalonamento com relação ao bloco transformado quantizado para corrigir uma diferença entre uma matriz de transformação inversa usada para transformação inversa de frequência no bloco transformado quantizado e uma matriz de transformação inversa rápida produzida com base na matriz de transformação inversa; e produzir um bloco inversamente transformado mediante transformação inversa de um bloco transformado desescalonado obtido mediante desescalonamento através do uso da matriz de transformação inversa.
[00012] De acordo com um aspecto da presente invenção é provido um equipamento de decodificação de vídeo incluindo um desquantizador que realiza desescalonamento com relação a um bloco transformado quantizado para corrigir uma diferença entre uma matriz de transformação inversa para transformação inversa de frequência no bloco transformado quantizado e uma matriz de transformação inversa rápida produzida com base na matriz de transformação inversa; e um transformador inverso que produz um bloco transformado inversamente por intermédio de transformação inversa de um bloco transformado desescalonado obtido por intermédio do desescalonamento utilizando a matriz de transformação inversa rápida.
MODO DA INVENÇÃO
[00013] Em seguida, as modalidades exemplares serão descritas mais completamente com referência aos desenhos anexos.
[00014] A Figura 1 é um diagrama de blocos de um equipamento de codificação de vídeo 100 de acordo com uma modalidade da presente invenção.
[00015] Com referência à Figura 1, o equipamento de codificação de vídeo 100 inclui um preditor 110 um subtrator 115, um transformador 120, um quantizador 130, e um codificador de entropia 140.
[00016] O preditor 110 divide uma imagem de entrada em blocos tendo um tamanho predeterminado, e gera um bloco de predição mediante realização de predição inter, ou predição intra, em cada bloco. Em detalhe, o preditor 110 realiza predição inter, para gerar um bloco de predição através de processos de predição e compensação de movimento, os quais geram um vetor de movimento indicando uma região similar a um bloco atual dentro de uma faixa de busca predeterminada de uma imagem de referência que é previamente codificada e então restaurada, e predição intra para gerar um bloco de predição mediante uso de dados em um bloco adjacente que é adjacente a um bloco atual.
[00017] O subtrator 115 gera um resto mediante subtração do bloco de predição do bloco atual a partir dos dados de imagem original.
[00018] O transformador 120 transforma o resto em uma região de frequência. Especificamente, nas modalidades exemplares da presente invenção, uma matriz de transformada discreta de cosseno (DCT) definida com relação a um bloco existente tendo um tamanho relativamente pequeno, tal como um bloco 4x4 ou 8x8, pode ser ampliada e pode ser aplicada a um bloco tendo um tamanho de pelo menos 16x16. Conforme descrito abaixo, o transformador 120 realiza DCT de acordo com as adições e subtrações baseadas em um número inteiro e uma operação de mudança, em vez de uma operação de pontos flutuantes. Mediante substituição de elementos de uma matriz de transformação usada para DCT existente com números racionais, desse modo reduzindo a complexidade de cálculo enquanto aumentando a velocidade de uma operação. De acordo com outra modalidade, o transformador 120 pode realizar DCT mediante uso de uma matriz de transformação rápida incluindo elementos que são obtidos pela multiplicação dos elementos de uma matriz de transformação usada para DCT por uma potência de 2 e então arredondando os elementos multiplicados, reduzindo assim a complexidade global de cálculo.
[00019] O quantizador 130 quantiza o resto transformado. Particularmente, o quantizador 130 realiza escalonamento predeterminado de modo a reduzir um valor de erro entre um resultado da transformação realizada utilizando a matriz de transformação rápida pelo transformador 120 e um resultado da transformação realizada utilizando uma matriz DCT com base em uma operação efetiva de pontos flutuantes. O escalonamento e a quantização serão descritos posteriormente em detalhe.
[00020] O codificador de entropia 140 gera um fluxo de bits mediante realização de codificação de comprimento variável nos dados de imagem quantizados.
[00021] A transformação realizada no transformador 120 da Figura 1 será descrita agora em detalhe.
[00022] O transformador 120 realiza transformação em relação à coluna e transformação em relação à linha com relação a um bloco de entrada NxN (onde N denota o número inteiro) para produzir um bloco transformado NxN. Quando o bloco de entrada NxN é introduzido, uma matriz DCT no sentido da fileira é Transform_hor, uma matriz DCT no sentido da coluna é Transform_ver, e um valor de resultado de transformação é Output, o transformador 120 realiza uma operação de matriz conforme expresso na Equação; Output=Transform_hor x Input x Transform_ver para produzir o valor de resultado de transformação Output. Na operação de matriz, uma primeira multiplicação de matriz Transform_hor x Input corresponde à execução de DCT horizontal unidimensional (ID) com relação a cada fileira do bloco de entrada NxN Input, e uma multiplicação de Transform_hor x Input by Transform_ver corresponde à execução de DCT vertical ID. A matriz DCT no sentido de fileira Transform_hor é a transposição da matriz DCT no sentido de coluna Transform_ver. Embora a descrição abaixo se concentre em uma matriz de transformação NxN e uma matriz de transformação inversa NxN que realiza transformação de frequência e transformação inversa de frequência com relação ao bloco de entrada NxN, a essência da presente invenção também pode ser aplicada aos casos de utilização de uma matriz de transformação de frequência axb (onde a e b denotam números inteiros) e uma matriz de transformada inversa de frequência axb.
[00023] Quando um elemento localizado em uma posição (i,k) (onde i e k são números inteiros), de uma matriz de transformação vertical é Aik, o (i,k)° elemento Aik da matriz de transformação vertical para transformação com relação a um bloco de entrada NxN pode ser definido como na Equação 1:
Figure img0001
[00024] Como uma matriz de transformação horizontal é a transposição da matriz de transformação vertical, um (i,k)° elemento Bik da matriz de transformação horizontal é expresso como um valor obtido utilizando uma função de cosseno, como a matriz de transformação vertical. O transformador 120 pode realizar DCT de acordo com adições, subtrações, e uma operação de mudança mediante uso de uma matriz de transformação rápida produzida mediante substituição de elementos de uma matriz de transformação usada para DCT com números racionais. De acordo com outra modalidade, o transformador 120 pode realizar DCT mediante uso de uma matriz de transformação rápida formada de elementos que são obtidos mediante multiplicação dos elementos da matriz de transformação usados para DCT por uma potência de 2 e então arredondando os elementos multiplicados.
[00025] A Figura 2 é um fluxograma de DCT de 4 pontos, 8 pontos, 16 pontos e 32 pontos, de acordo com uma modalidade da presente invenção.
[00026] Com referência à Figura 2, f0 a f31 denotam valores de entrada de DCT unidimensional (1D) e ao mesmo tempo denotam valores de saída de transformada inversa discreta de cosseno 1D (IDCT). F0 a F31 denotam valores de saída de DCT 1D e, ao mesmo tempo, denotam valores de entrada de IDCT 1D. Uma direção de processamento de dados durante DCT é da esquerda para a direita, e uma direção de processamento durante IDCT é da direita para a esquerda. Duas linhas intersectando em um ponto denotam uma adição de dois números. Um valor acima de cada linha denota uma multiplicação de acordo com um coeficiente correspondente. cθ denota cosθ, sθ denota sinθ, e '-' denota negação. Um numeral de referência 210 indicando uma linha tracejada é um fluxograma de DCT 1D de 4 pontos, o numeral de referência 220 indicando uma linha tracejada é um fluxograma de DCT 1D de 8 pontos, um numeral de referência 230 indicando uma linha tracejada é um fluxograma de DCT 1D de 16 pontos, e um numeral de referência 240 indicando uma linha tracejada é um fluxograma de DCT 1D de 32 pontos.
[00027] Conforme mostrado no fluxograma 200, cθ e sθ podem se tornar números irracionais de acordo com um valor de θ no DCT, e essa complexidade de cálculo pode aumentar. Tal processo do DCT pode aumentar a complexidade quando realizado utilizando hardware. Consequentemente, de acordo com uma modalidade exemplar, o transformador 120 produz uma matriz de transformação rápida similar à matriz DCT original mediante substituição de valores de função trigonométrica dos elementos usados para DCT com números racionais. De cardo com outra modalidade exemplar, o transformador 120 produz uma matriz de transformação rápida mediante multiplicação dos elementos usados para DCT por uma constante predeterminada, por exemplo, 2n, e arredondando os elementos multiplicados.
[00028] Em detalhes, com referência à Figura 2, quando n é 16, isto é, quando DCT 1D é realizada com relação a um bloco de entrada 16x16, DCT 1D é realizado em unidades de 16 fileiras e 16 colunas do bloco de entrada 16x16 de acordo com o fluxograma 230. Quando f=[f0, f1, f2, ..., f14, f15]T denotam 16 valores de entrada, F=[F0, F1, F2, ..., F14, F15]T denotam valores de resultado de transformação, e Original_A denotam uma matriz de transformação representando um processo de transformar os valores de entrada de acordo com o fluxograma 230, F=Original_Axf denota a DCT 1D.
[00029] Conforme descrito acima, como cosθ e sinθ podem ser números irracionais de acordo com um valor de θ, o transformador 120 substitui cosθ e sinθ incluídos nos elementos da matriz de transformação Original_A por número racionais. Por exemplo, quando N=16, o transformador 120 substitui cos 0 por a0, cos(πx(1/2)/16) por a1, cos(πx(2/2)/16) por a2, cos(πx(3/2)/16) por a3, cos(πx(4/2)/16) por a4, cos(πx(5/2)/16) por a5, cos(πx(6/2)/16) por a6, cos(πx(7/2)/16) por a7, cos(πx(8/2)/16) por a8, cos(πx(9/2)/16) por a9, cos(πx(10/2)/16) por a10, cos(πx(11/2)/16) por a11, cos(πx(12/2)/16) por a12, cos(πx(13/2)/16) por a13, cos(πx(14/2)/16) por a14, e cos(πx(15/2)/16) por a15. Similarmente, sinθ pode ser substituído por variáveis ai mediante uso de uma relação tal como sinθ=cos(90-θ). As variáveis ai podem ser números racionais, e um denominador de cada variável ai pode ter um valor de uma potência de 2 capaz de uma operação de mudança. A variável ai é limitada a um racional diádico porque se o denominador for uma potência de 2, uma operação de divisão ou semelhante necessária para transformação pode ser substituída por uma operação de mudança à direita (>>).
[00030] Por exemplo, quando N é 16, 16 variáveis ai podem ser dos seguintes valores; a1=63/64, a2= 62/64, a3= 61/64, a4 = 59/64, a5 = 56/64, a6 = 53/64, a7 = 49/64, a8 = 45/64, a9 = 40/64, a10 = 35/64, a11 = 30/64, a12 = 24/64, a13 = 18/64, a14 = 12/64, e a15 = 6/64.
[00031] Se N for 16, DCT 1D realizada com relação ao bloco de entrada 16x16 mediante uso de uma matriz A de transformação 16x16 substituta pode ser expressa como a seguinte operação, em que Xi (onde i denota um número inteiro na faixa de 0 a 15) denota um valor de entrada a ser transformado, Bi, Ci, Di, Ei e Fi denotam valores intermediários, e Yi denota um valor de resultado de transformação: { /stage 0 B0 = X0 + X15;B15 = X0 - X15;B1 = X1 + X14;B14 = X1 - X14;B2 = X2 + X13;B13 = X2 - X13;B3 = X3 + X12;B12 = X3 - X12;B4 = X4 + X11;B11 = X4 - X11;B5 = X5 + X10;B10 = X5 - X10;B6 = X6 + X9;B9 = X6 - X9;B7 = X7 + X8;B8 = X7 - X8; /stage 1 C0 = B0 + B7;C7 = B0 - B7;C1 = B1 + B6;C6 = B1 - B6;C2 = B2 + B5;C5 = B2 - B5;C3 = B3 + B4;C4 = B3 - B4;C10 = (45 * (B13 - B10)) >> 6;C13 = (45 * (B13 + B10)) >> 6;C11 = (45 * (B12 - B11)) >> 6;C12 = (45 * (B12 + B11)) >> 6; /stage 2 D0 = C0 + C3;D3 = C0 - C3;D8 = B8 + C11;D11 = B8 - C11;D12 = B15 - C12;D15 = B15 + C12;D1 = C1 + C2;D2 = C1 - C2;D9 = B9 + C10;D10 = B9 - C10;D13 = B14 - C13;D14 = B14 + C13;D5 = (45 * (C6 - C5)) >> 6;D6 = (45 * (C6 + C5)) >> 6; /stage 3 Y0 = (45 * ( D0 + D1)) >> 6;Y8 = (45 * (D0 - D1)) >> 6;Y4 = (59 * D3 + 24 * D2) >> 6;Y12 = (24 * D3 - 59 * D2) >> 6;E4 = C4 + D5;E5 = C4 - D5;E6 = C7 - D6;E7 = C7 + D6;E9 = (24 * D14 - 59 * D9) >> 6;E10 = (-59 * D13 - 24 * D10) >> 6;E13 = (24 * D13 - 59 * D10) >> 6;E14 = (59 * D14 + 24 * D9) >> 6; /stage 4 Y2 = (12 * E4 + 62 * E7) >> 6;Y10 = (53 * E5 + 35 * E6) >> 6;Y6 = (53 * E6 - 35 * E5) >> 6;Y14 = (12 * E7 - 62 * E4) * > 6;F8 = D8 + E9;F9 = D8 - E9;F10 = D11 - E10;F11 = D11 + E10;F12 = D12 + E13;F13 = D12 - E13;F14 = D15 - E14;F15 = D15 + E14; /stage 5 Y1 = (6 * F8 + 63 * F15) >> 6;Y9 = (49 * F9 + 40 * F14) >> 6;Y5 = (30 * F10 + 56 * F13) >> 6;Y13 = (61 * F11 + 18 * F12) >> 6;Y3 = (61 * F12 - 18 * F11) >> 6;Y11 = (30 * F13 - 56 * F10) >> 6;Y7 = (49 * F14 - 40 * F9) >> 6;Y15 = (6 * F15 - 63 * F8) >> 6; }
[00032] Como outro exemplo, se N for 32, como quando N é 16, uma matriz de transformação rápida A é produzida mediante substituição dos elementos constituindo uma matriz de transformação 32x32 Original_A para uso em DCT 1D com relação a um bloco 32x32 com valores baseados em 32 variáveis ai (onde i denota um número inteiro na faixa de 0 a 31). Com referência de volta à Figura 2, quando N é 32, isto é, quando DCT 1D é realizado com relação a um bloco de entrada 32x32, DCT 1D é realizada em unidades de 32 fileiras e 32 colunas do bloco de entrada 32x32 de acordo com o fluxograma 240. Quando f=[f0, f1, f2, ..., f30, f31]T denota 32 valores de entrada, F=[F0, F1, F2, ..., F30, F31]T denota valores de resultados de transformação, e Original_A denota uma matriz de transformação representando um processo de transformar os valores de entrada de acordo com o fluxograma 240, DCT 1D é expresso como F=Original_Axf. O transformador 120 produz a matriz A de transformação rápida mediante substituição de um componente cos(πx(i/2)/32) (onde i denota um número inteiro de 0 a 31) dos elementos constituindo a matriz de transformação 32x32 Original_A com 32 variáveis ai que são números racionais.
[00033] Quando N é 32, 32 variáveis ai podem ter os seguintes valores; a1 = 255/256, a2 = 254/256, a3 = 253/256, a4 = 251/256, a5 = 248/256, a6 = 244/256, a7 = 241/256, a8 = 236/256, a9 = 231/256, a10 = 225/256, a11 = 219/256, a12 = 212/256, a13 = 205/256, a14 = 197/256, a15 = 189/256, a16 = 181/256, a17 = 171/256, a18 = 162/256, a19 = 152/256, a20 = 142/256, a21 = 131/256, a22 = 120/256, a23 = 109/256, a24 = 97/256, a25 = 86/256, a26 = 74/256, a27 = 62/256, a28 = 49/256, a29 = 37/256, a30 = 25/256, and a31 = 12/256.
[00034] Quando N é 32, DCT 1D realizado em um bloco de entrada 32x32 mediante uso da matriz de transformação rápida A pode ser expresso como a seguinte operação, em que Xi (onde i denota um número inteiro na faixa de 0 a 31) denota um valor de entrada a ser transformado, Ai, Bi, Ci, Di, Ei, e Fi denotam valores intermediários, e Yi denota um valor de resultado de transformação: { /stage 0 A0 = X0 + X31;A31 = X0 - X31;A1 = X1 + X30;A30 = X1 - X30;A2 = X2 + X29;A29 = X2 - X29;A3 = X3 + X28;A28 = X3 - X28;A4 = X4 + X27;A27 = X4 - X27;A5 = X5 + X26;A26 = X5 - X26;A6 = X6 + X25;A25 = X6 - X25;A7 = X7 + X24;A24 = X7 - X24;A8 = X8 + X23;A23 = X8 - X23;A9 = X9 + X22;A22 = X9 - X22;A10 = X10 + X21;A21 = X10 - X21;A11 = X11 + X20;A20 = X11 - X20;A12 = X12 + X19;A19 = X12 - X19;A13 = X13 + X18;A18 = X13 - X18;A14 = X14 + X17;A17 = X14 - X17;A15 = X15 + X16;A16 = X15 - X16; /stage 1 B0 = A0 + A15;B15 = A0 - A15;B1 = A1 + A14;B14 = A1 - A14;B2 = A2 + A13;B13 = A2 - A13;B3 = A3 + A12;B12 = A3 - A12;B4 = A4 + A11;B11 = A4 - A11;B5 = A5 + A10;B10 = A5 - A10;B6 = A6 + A9;B9 = A6 - A9;B7 = A7 + A8;B8 = A7 - A8;B20 = ( 181*( A27 - A20 ) ) >> 8;B27 = ( 181*( A27 + A20 ) ) >> 8;B21 = ( 181*( A26 - A21 ) ) >> 8;B26 = ( 181*( A26 + A21 ) ) >> 8;B22 = ( 181*( A25 - A22 ) ) >> 8;B25 = ( 181*( A25 + A22 ) ) >> 8;B23 = ( 181*( A24 - A23 ) ) >> 8;B24 = ( 181*( A24 + A23 ) ) >> 8; /stage 2 C0 = B0 + B7;C7 = B0 - B7;C1 = B1 + B6;C6 = B1 - B6;C2 = B2 + B5;C5 = B2 - B5;C3 = B3 + B4;C4 = B3 - B4;C10 = ( 181*( B13 - B10 ) ) >> 8;C13 = ( 181*( B13 + B10 ) ) >> 8;C11 = ( 181*( B12 - B11 ) ) >> 8;C12 = ( 181*( B12 + B11 ) ) >> 8;C16 = A16 + B23;C23 = A16 - B23;C24 = A31 - B24;C31 = A31 + B24;C17 = A17 + B22;C22 = A17 - B22;C25 = A30 - B25;C30 = A30 + B25;C18 = A18 + B21;C21 = A18 - B21;C26 = A29 - B26;C29 = A29 + B26;C19 = A19 + B20;C20 = A19 - B20;C27 = A28 - B27;C28 = A28 + B27; /stage 3 D0 = C0 + C3;D3 = C0 - C3;D8 = B8 + C11;D11 = B8 - C11;D12 = B15 - C12;D15 = B15 + C12;D1 = C1 + C2;D2 = C1 - C2;D9 = B9 + C10;D10 = B9 - C10;D13 = B14 - C13;D14 = B14 + C13;D5 = ( 181*( C6 - C5 ) ) >> 8;D6 = ( 181*( C6 + C5 ) ) >> 8;D18 = ( 97*C29 - 236*C18 ) >> 8;D20 = ( - 236*C27 - 97*C20 ) >> 8;D26 = (- 236*C21 + 97*C26 ) >> 8;D28 = ( 97*C19 + 236*C28 ) >> 8;D19 = ( 97*C28 - 236*C19 ) >> 8;D21 = (- 236*C26 - 97*C21 ) >> 8;D27 = (- 236*C20 + 97*C27 ) >> 8;D29 = ( 97*C18 + 236*C29 ) >> 8; /stage 4 Y0 = ( 181*( D0 + D1 ) ) >> 8;Y16 = ( 181*( D0 - D1 ) ) >> 8;Y8 = ( 236*D3 + 97*D2 ) >> 8;Y24 = ( 97*D3 - 236*D2 ) >> 8;E4 = C4 + D5;E5 = C4 - D5;E6 = C7 - D6;E7 = C7 + D6;E9 = ( 97*D14 - 236*D9 ) >> 8;E10 =(-236*D13 - 97*D10) >> 8;E13 = (97*D13 - 236*D10 ) >> 8;E14 = ( 236*D14 + 97*D9 ) >> 8;E16 = C16 + D19;E19 = C16 - D19;E20 = C23 - D20;E23 = C23 + D20;E24 = C24 + D27;E27 = C24 - D27;E28 = C31 - D28;E31 = C31 + D28;E17 = C17 + D18;E18 = C17 - D18;E21 = C22 - D21;E22 = C22 + D21;E25 = C25 + D26;E26 = C25 - D26;E29 = C30 - D29;E30 = C30 + D29; /stage 5 Y4 = ( 49*E4 + 251*E7 ) >> 8;Y20 = ( 212*E5 + 142*E6 ) >> 8;Y12 = ( 212*E6 - 142*E5 ) >> 8;Y28 = ( 49*E7 - 251*E4 ) >> 8;F8 = D8 + E9;F9 = D8 - E9;F10 = D11 - E10;F11 = D11 + E10;F12 = D12 + E13;F13 = D12 - E13;F14 = D15 - E14;F15 = D15 + E14;F17 = ( 49*E30 - 251*E17 ) >> 8;F18 = ( - 251*E29 - 49*E18 ) >> 8;F21 = ( 212*E26 - 142*E21 ) >> 8;F22 = ( - 142*E25 - 212*E22 ) >> 8;F25 = ( 212*E25 - 142*E22 ) >> 8;F26 = ( 142*E26 + 212*E21 ) >> 8;F29 = ( 49*E29 - 251*E18 ) >> 8;F30 = ( 251*E30 + 49*E17 ) >> 8; /stage 6 Y2 = ( 25*F8 + 254*F15 ) >> 8;Y18 = ( 197*F9 + 162*F14 ) >> 8;Y10 = ( 120*F10 + 225*F13 ) >> 8;Y26 = ( 244*F11 + 74*F12 ) >> 8;Y6 = ( 244*F12 - 74*F11 ) >> 8;Y22 = ( 120*F13 - 225*F10 ) >> 8;Y14 = ( 197*F14 - 162*F9 ) >> 8;Y30 = ( 25*F15 - 254*F8 ) >> 8;G16 = E16 + F17;G17 = E16 - F17;G18 = E19 - F18;G19 = E19 + F18;G20 = E20 + F21;G21 = E20 - F21;G22 = E23 - F22;G23 = E23 + F22;G24 = E24 + F25;G25 = E24 - F25;G26 = E27 - F26;G27 = E27 + F26;G28 = E28 + F29;G29 = E28 - F29;G30 = E31 - F30;G31 = E31 + F30; /stage 7 Y1 = ( 12*G16 + 255*G31 ) >> 8;Y17 = ( 189*G17 + 171*G30 ) >> 8;Y9 = ( 109*G18 + 231*G29 ) >> 8;Y25 = ( 241*G19 + 86*G28 ) >> 8;Y5 = ( 62*G20 + 248*G27 ) >> 8;Y21 = ( 219*G21 + 131*G26 ) >> 8;Y13 = ( 152*G22 + 205*G25 ) >> 8;Y29 = ( 253*G23 + 37*G24 ) >> 8;Y3 = ( 253*G24 - 37*G23 ) >> 8;Y19 = ( 152*G25 - 205*G22 ) >> 8;Y11 = ( 219*G26 - 131*G21 ) >> 8;Y27 = ( 62*G27 - 248*G20 ) >> 8;Y7 = ( 241*G28 - 86*G19 ) >> 8;Y23 = ( 109*G29 - 231*G18 ) >> 8;Y15 = ( 189*G30 - 171*G17 ) >> 8;Y31 = ( 12*G31 - 255*G16 ) >> 8; }
[00035] Conforme descrito acima, de acordo com outra modalidade exemplar, o transformador 120 produz uma matriz de transformação rápida mediante multiplicação dos elementos usados para DCT por 2n e arredondando os elementos multiplicados. Em detalhe, a matriz de transformação rápida A é produzida mediante transformação dos valores dos elementos da matriz DCT Original_A de acordo com a Equação; A=round(Original_A*2n), representando uma operação de multiplicar a matriz de transformação Original_A para uso em DCT 1D por 2n (onde n é um número inteiro) e arredondando a matriz de transformação multiplicada Original_A.
[00036] De acordo com modalidades exemplares, como o transformador 120 realiza transformação mediante uso da matriz de transformação rápida A em vez da matriz de transformação NxN original Original_A, ocorre um erro entre um valor de resultado com base na matriz de transformação NxN original Original_A e um valor de resultado com base na matriz de transformação substituída A. Consequentemente, de acordo com uma modalidade exemplar, esse erro é minimizado mediante realização de escalonamento com relação a um bloco transformado em uma operação de quantização.
[00037] A Figura 3 é um fluxograma ilustrando um método de produzir uma matriz de escalonamento, de acordo com uma modalidade da presente invenção.
[00038] Com referência à Figura 3, na operação 310, uma matriz de erro de transformação Original_A-S®A constituindo uma diferença entre a matriz S®A que é obtida mediante multiplicação dos elementos de uma matriz S intermediária NxN, na qual cada elemento na ia fileira tem um valor de Si (onde i denota um número inteiro de 1 a N), por elementos correspondentes de uma matriz A de transformação rápida NxN, respectivamente, e a matriz de transformação NxN original Original_A é obtida. ® indica uma multiplicação de elemento por elemento ou multiplicação no sentido de elemento, na qual os elementos nos mesmos locais nas matrizes são multiplicados.
[00039] Por exemplo, uma matriz S intermediária 16x16 é definida como a seguir:
Figure img0002
[00040] Na operação 320, valores Si que possibilitam uma soma de quadrados de elementos excluindo um componente diagonal da matriz de erro de transformação Original_A-S®A seja um mínimo, são obtidos. Os valores Si podem ser determinados utilizando-se qualquer algoritmo de otimização. Por exemplo, os valores Si podem ser determinados mediante determinação de um valor inicial de S1 para ser (1/4*2(1/2)) e aplicando-se um algoritmo de otimização tal como um método Nelder-Mead Sipmlex.
[00041] Na operação 330, uma matriz de escalonamento é produzida com base em uma matriz S®ST obtida mediante multiplicação dos elementos da matriz S intermediária NxN, a qual os valores Si adquiridos foram aplicados, por elementos correspondentes de uma matriz transposta ST da matriz S intermediária NxN, respectivamente.
[00042] Quando PF denota a matriz S®ST, uma matriz de escalonamento MF pode ser calculada de acordo com a Equação MF=PF*2Am/Qstep. Aqui, Qstep denota uma etapa de quantização, e m é um número inteiro positivo.
[00043] As Figuras 4A a 4F ilustram matrizes de escalonamento MF de acordo com os parâmetros de quantização QP para uso em transformação com relação a um bloco 16x16, de acordo com uma modalidade da presente invenção. A Figura 4 ilustra um caso no qual m é 10 durante cálculo de uma matriz de escalonamento.
[00044] As matrizes de escalonamento MF conforme mostrado nas Figuras 4A a 4F são definidas com relação aos valores Qstep de 0,625, 0,6875, 0,8125, 0,875, 1, e 1,25 apenas de 6 etapas iniciais de quantização sem ter que ser definidas com relação a todas as etapas de quantização, porque quando o parâmetro de quantização QP aumenta por 6, a etapa de quantização Qstep é dobrada, e assim as matrizes de escalonamento MF podem ser definidas com relação aos valores Qstep das 6 etapas iniciais de quantização, e as matrizes de escalonamento MF de acordo com os outros parâmetros de quantização QP podem ser selecionados de acordo com um valor (QP mod 6). As matrizes de escalonamento MF das Figuras 4A-4F são apenas modalidades, e cada elemento das matrizes de escalonamento MF pode ser ajustado dentro da faixa de ±1 ou ±2.
[00045] Tal matriz de escalonamento MF pode ser obtida para um bloco 32x32 de uma maneira similar a da obtenção da matriz de escalonamento MF para o bloco 16x16. As Figuras 5A-5F ilustram matrizes de escalonamento MF de acordo com um parâmetro de quantização QP aplicado a um bloco 32x32, que são obtidos como acima. As matrizes de escalonamento MF das Figuras 5A-5F são apenas modalidades, e cada elemento das matrizes de escalonamento MF pode ser ajustado dentro da faixa de ±1 ou ±2. De acordo com uma modalidade exemplar, uma matriz de escalonamento especial MF não é aplicada a cada tamanho de bloco, porém 6 matrizes de escalonamento MF são ajustadas apenas para um bloco de tamanho predeterminado de acordo com o parâmetro de quantização QP, e então uma matriz de escalonamento para um bloco menor do que, ou maior do que o bloco de tamanho predeterminado pode ser uma matriz de escalonamento MF obtida mediante aumento ou diminuição dos elementos das 6 matrizes de escalonamento MF determinadas para o bloco de tamanho predeterminado de acordo com uma proporção entre os tamanhos do bloco de tamanho predeterminado e o bloco menor ou maior. Por exemplo, 6 matrizes de escalonamento MF são determinadas para um bloco MxM de acordo com um parâmetro de quantização, e então uma matriz de escalonamento obtida mediante multiplicação dos elementos das 6 matrizes de escalonamento MF determinadas para o bloco MxM por M/N podem ser usadas como uma matriz de escalonamento para um bloco NxN. Por exemplo, quando uma matriz de escalonamento MF é determinada para um bloco 32x32, os blocos 2x2, 4x4, 8x8 e 16x16 podem usar matrizes de escalonamento obtidas mediante aumento dos elementos da matriz de escalonamento MF determinada para o bloco 32x32 16 vezes, 8 vezes, 4 vezes e 2 vezes, respectivamente. Similarmente, quando uma matriz de escalonamento MF é determinada para um bloco 32x32, os blocos 64x64 e 128x128 podem usar matrizes de escalonamento obtidas mediante diminuição dos elementos da matriz de escalonamento MF determinada para o bloco 32x32 em 1/2 vezes e 1/4 vezes, respectivamente. Como tal, quando uma matriz de escalonamento é determinada para apenas um bloco de tamanho determinado e blocos dos outros tamanhos utilizam matrizes de escalonamento aumentadas ou diminuídas de acordo com as proporções de tamanho entre o bloco de tamanho determinado e os blocos dos outros tamanhos, a quantização ou desquantização pode ser realizada em tanto quanto o valor correspondendo a uma proporção entre os elementos das matrizes de escalonamento determinados para diferentes tamanhos de blocos para restaurar o seu valor original. Conforme descrito acima, quando uma matriz de escalonamento é determinada apenas para um bloco de tamanho predeterminado e blocos dos outros tamanhos utilizam matrizes de escalonamento aumentadas ou diminuídas, de acordo com as proporções de tamanho entre o bloco de tamanho predeterminado e os blocos dos outros tamanhos, a memória para armazenamento de uma matriz de escalonamento MF pode ser reduzida.
[00046] Conforme descrito acima, o quantizador 130 realiza escalonamento com relação a um bloco transformado mediante uso de uma matriz de escalonamento MF para uma constante de escalonamento predeterminado para reduzir um valor de erro entre um resultado da transformação realizada utilizando a matriz de transformação rápida A pelo transformador 120 e um resultado da transformação realizada utilizando a matriz DCT Original_A com base em uma operação de pontos flutuantes efetivos. Em detalhe, o quantizador 130 pode realizar escalonamento e quantização simultaneamente com relação a um bloco transformado correspondendo a um resultado da transformação no bloco NxN mediante uso da matriz de escalonamento MF e uma operação de mudança. A quantização é realizada mediante execução de uma operação de mudança de bit em um valor obtido através da multiplicação da matriz de escalonamento MF e o bloco transformado e então adicionando um deslocamento predeterminado ao valor, por intermédio de um bit q da seguinte equação: q=floor(QP/6)+m. Quando Zij denota um valor de coeficiente quantizado, Wij denota um coeficiente de transformação, e f denota um deslocamento,
Figure img0003
. ‘.MF’ denota uma operação de produto de vetor para multiplicar os elementos nos mesmos locais nas matrizes. Conforme descrito acima, a operação de produto de vetor pode ser indicada como ®.
[00047] Entretanto, em uma operação de desquantização, a desquantização é realizada mediante aplicação de uma matriz de desescalonamento e uma operação de mudança para compensar uma diferença entre uma matriz de transformação inversa NxN original Original_A-1 usada para IDCT, e uma matriz de transformação inversa A-1 rápida NxN.
[00048] De acordo com uma modalidade exemplar, uma matriz de desescalonamento V pode ser gerada com base em uma matriz PF correspondendo à matriz S®ST obtida mediante multiplicação dos elementos da matriz intermediária S e da matriz transposta ST, que também são usadas para gerar a matriz de escalonamento MF. Em detalhe, quando Qstep denota uma etapa de quantização, PF denota a matriz S®ST, e n é um número inteiro positivo, a matriz de desescalonamento V é obtida de acordo com a seguinte equação: V=Qstep*PF*2An.
[00049] Quando a matriz de desescalonamento V é obtida acima, o desescalonamento e a desquantização podem ser realizadas mediante execução de uma operação de mudança de bits em um valor obtido através da multiplicação da matriz de desescalonamento V e um coeficiente de transformação quantizado, por um bit floor(QP/6), em que floor[x] é um número inteiro máximo menor do que ou igual a x e QP denota um parâmetro de quantização. Em outras palavras, quando Zij denota um valor de coeficiente quantizado e Wij denota um coeficiente de transformação, Wij pode ser obtido mediante desquantização do coeficiente quantizado Zij por intermédio da seguinte equação: Wij=(Zij)<<floor(QP/6). Aqui, ‘.V’ denota uma operação de produto de vetor para multiplicar os elementos nos mesmos locais nas matrizes. Conforme descrito acima, a operação de produto de vetor pode ser indicada como ®.
[00050] As Figuras 6A-6F ilustram matrizes de desescalonamento V de acordo com um parâmetro QP de quantização AA aplicado a um bloco 16x16, de acordo com uma modalidade da presente invenção. As Figuras 6A-6F ilustram um caso no qual m é 10 durante cálculo de uma matriz de desescalonamento. As matrizes de desescalonamento V podem ser definidas com relação a 0,625, 0,6875, 0,8125, 0,875, 1 e 1,25, que são valores Qstep de 6 etapas de quantização sem ter que ser definidas com relação a todas as etapas de quantização Qstep como as matrizes de escalonamento MF das Figuras 4A-4F. As matrizes de desescalonamento V de acordo com outros parâmetros de quantização QP podem ser selecionadas de acordo com um valor (QP mod 6). As matrizes de desescalonamento V das Figuras 6A-6F são apenas modalidades, e cada elemento das matrizes de desescalonamento V pode ser ajustado dentro da faixa de ±1 ou ±2.
[00051] Similarmente, as matrizes de desescalonamento V de acordo com um parâmetro de quantização QP aplicado ao bloco 32x32 podem ser obtidas em um processo similar ao das matrizes de desescalonamento V aplicadas ao bloco 16x16. As Figuras 7A-7F ilustram matrizes de desescalonamento V de acordo com um parâmetro de quantização QP aplicado a um bloco 32x32, de acordo com uma modalidade da presente invenção. As matrizes de desescalonamento V das Figuras 7A-7F são apenas modalidades, e cada elemento das matrizes de desescalonamento V pode ser ajustado dentro da faixa de ±1 ou ±2. De acordo com uma modalidade exemplar, uma matriz de desescalonamento especial V não é aplicada a cada tamanho de bloco, porém 6 matrizes de desescalonamento V são determinadas apenas para um bloco de tamanho predeterminado de acordo com o parâmetro de quantização QP, e então uma matriz de desescalonamento para um bloco menor do que ou maior do que o bloco de tamanho predeterminado pode ser uma matriz de desescalonamento V obtida mediante aumento ou diminuição dos elementos das 6 matrizes de desescalonamento V determinadas para o bloco de tamanho predeterminado de acordo com uma proporção entre os tamanhos do bloco de tamanho predeterminado e o bloco maior ou menor. Por exemplo, 6 matrizes de desescalonamento V são determinadas para um bloco MxM de acordo com um parâmetro de quantização, e então uma matriz de desescalonamento obtida mediante multiplicação dos elementos das 6 matrizes de desescalonamento V determinadas para o bloco MxM por M/N podem ser usadas como uma matriz de desescalonamento para um bloco NxN. Por exemplo, quando uma matriz de desescalonamento V é determinada para um bloco 32x32, os blocos 2x2, 4x4, 8x8 e 16x16 podem utilizar matrizes de desescalonamento obtidas mediante aumento dos elementos da matriz de desescalonamento V determinada para o bloco 32x32 em 16 vezes, 8 vezes, 4 vezes e 2 vezes, respectivamente. Similarmente, quando uma matriz de desescalonamento V é ajustada para um bloco 32x32, os blocos 64x64 e 128x128 podem utilizar matrizes de desescalonamento obtidas mediante diminuição dos elementos da matriz de desescalonamento V determinada para o bloco 32x32 em 1/2 vezes e 1/4 vezes, respectivamente. Como tal, quando uma matriz de desescalonamento é determinada apenas para um bloco de tamanho predeterminado e blocos dos outros tamanhos utilizam matrizes de desescalonamento aumentadas ou diminuídas de acordo com proporções de tamanho entre o bloco de tamanho predeterminado e os blocos dos outros tamanhos, a quantização ou desquantização pode ser realizada em tanto quanto o valor correspondendo a uma proporção entre os elementos das matrizes de desescalonamento determinadas para diferentes tamanhos de blocos para restaurar o seu valor original. Conforme descrito acima, quando uma matriz de desescalonamento é determinada apenas para um bloco de tamanho determinado e blocos dos outros tamanhos utilizam matrizes de desescalonamento aumentadas ou diminuídas de acordo com as proporções de tamanho entre o bloco de tamanho predeterminado e os blocos dos outros tamanhos, a memória para armazenamento de uma matriz de desescalonamento V pode ser reduzida.
[00052] A Figura 8 é um fluxograma 800 de DCT de 32 pontos de acordo com outra modalidade da presente invenção.
[00053] Com referência à Figura 8, x0 a x31 denotam valores de entrada, e y0 a y35 denotam valores de saída de DCT. Uma direção de processamento de dados durante transformação é da esquerda para a direita, e uma direção de processamento durante transformação inversa é da direita para a esquerda. Duas linhas intersectando em um ponto denotam uma adição de dois números, e '-' denota uma negação. Um valor R(θ) acima de cada linha denota um processo de operação com base em uma estrutura borboleta conforme mostrado na Figura 9.
[00054] A Figura 9 é um diagrama de referência de um processo de operação de uma estrutura borboleta formando a DCT de 32 pontos da Figura 8.
[00055] Com referência à Figura 9, o processo de operação da estrutura borboleta produz um valor de saída [Y1, Y2] por intermédio da equação
Figure img0004
com relação a um valor de entrada [Y1, Y2].
[00056] Quando DCT é realizada de acordo com o fluxograma 800 da Figura 8, cosθ e sinθ são usados de acordo com o valor R(θ). Similarmente à transformação realizada de acordo com o fluxograma 200 da Figura 2, o transformador 120 pode realizar DCT com relação a um bloco de entrada mediante realização apenas de adições, subtrações, e uma operação de mudança utilizando a matriz de transformação rápida A, obtida mediante substituição de cosθ e sinθ de acordo com o valor de θ por racionais diádicos da matriz de transformação rápida A obtida mediante multiplicação de cada um dos elementos usados para DCT de acordo com o fluxograma 800 da Figura 8 por 2n e arredondando os elementos multiplicados.
[00057] Por exemplo, DCT 1D realizada em um bloco de entrada 32x32 mediante uso da matriz de transformação rápida A pode ser expressa como a seguinte operação, em que Xi (onde i é um número inteiro na faixa de 0 a 31) denota um valor de entrada a ser transformado, Ai, Bi, Ci, Di e Ei denotam valores intermediários, e Yi denota um valor de resultado de transformação: { /stage 0 A0 = X0 + X15;A1 = X1 + X14; A2 = X2 + X13;A3 = X3 + X12;A4 = X4 + X11;A5 = X5 + X10;A6 = X6 + X9;A7 = X7 + X8;A8 = X7 - X8;A9 = X6 - X9;A10 = X5 - X10;A11 = X4 - X11;A12 = X3 - X12;A13 = X2 - X13;A14 = X1 - X14;A15 = X0 - X15; /stage 1 B0 = A0 + A7;B7 = A0 - A7;B1 = A1 + A6;B6 = A1 - A6;B2 = A2 + A5;B5 = A2 - A5;B3 = A3 + A4;B4 = A3 - A4; B8 = (49*A8 + 40*A15) >> 6;B15 = (-40*A8 + 49*A15) >> 6;B9 = (30*A9 - 56*A14) >> 6;B14 = (56*A9 + 30*A14) >> 6;B10 = (61*A10 + 18*A13) >> 6;B13 = (-18*A10 + 61*A13) >> 6;B11 = (6*A11 - 63*A12) >> 6;B12 = (63*A11 + 6*A12) >> 6; /stage 2 CO = B0 + B3;C3 = B0 - B3;C1 = B1 + B2;C2 = B1 - B2; C4 = (6*B4 + 31*B7, 5);C7 = (-31*B4 + 6*B7, 5);C5 = (35*B5 + 53*B6) >> 6;C6 = (-53*B5 + 35*B6) >> 6; C8 = B8 + B11;C11 = B8 - B11;C9 = B9 + B10;C10 = B9 - B10; C12 = B12 + B15;C15 = B12 - B15;C13 = B13 + B14;C14 = B13 - B14; /stage 3 D0 = (45*(C0 + C1)) >> 6;D1 = (45*(-C0 + C1)) >> 6; D2 = (24*C2 + 59*C3) >> 6;D3 = (-59*C2 + 24*C3) >> 6; D4 = C4 + C5;D5 = C4 - C5;D6 = -C6 + C7;D7 = C6 + C7; D8 = C8 + C14;D14 = C8 - C14;D9 = C9 + C15;D15 = C9 - C15;D10 = C10 + C11; D11 = C10 - C11;D12 = C12 + C13;D13 = C12 - C13; /stage 4 E5 = (45*(D5 + D7)) >> 6;E7 = (45*(-D5 + D7)) >> 6; E8 = (24*D8 - 59*D9) >> 6;E9 = (59*D8 + 24*D9) >> 6; E11 = (45*(D11 + D12)) >> 6;E12 = (45*(-D11 + D12)) >> 6; E14 = (24*D14 - 59*D15) >> 6;E15 = (59*D14 + 24*D15) >> 6; /stage 5 Y0 = D0;Y8 = -D1;Y4 = D2;Y12 = D3;Y2 = D4;Y6 = E5;Y14 = D6;Y10 = -E7;Y3 = E8;Y13 = E9;Y9 = D10;Y15 = E11;Y1 = E12;Y7 = D13;Y11 = -E14;Y5 = E15; }
[00058] De acordo com outra modalidade, o quantizador 130 pode realizar escalonamento mediante multiplicação do bloco transformado por uma constante de escalonamento predeterminada. Em detalhe, o quantizador 130 pode realizar escalonamento e quantização simultaneamente com relação a um bloco transformado NxN mediante uso de uma constante de escalonamento QMat e uma operação de mudança. A quantização e o escalonamento são realizados mediante realização de uma operação de mudança de bit em um valor obtido mediante multiplicação da constante de escalonamento QMat e do bloco transformado NxN e adicionando um deslocamento predeterminado ao valor, por um bit q da seguinte equação: q=floor(QP/6)+m. Quando Zij denota um valor de coeficiente quantizado, Wij denota um coeficiente de transformação e f denota um deslocamento,
Figure img0005
[00059] A constante de escalonamento QMat pode ser selecionada com base no parâmetro de quantização QP, e é definida com relação aos valores Qstep de 0,625, 0,6875, 0,8125, 0,875, 1 e 1,25 apenas de 6 etapas iniciais de quantização sem ter que ser definida com relação a todas as etapas de quantização. Conforme descrito acima, quando o parâmetro de quantização QP aumenta por 6, a etapa de quantização Qstep é dobrada, e assim a constante de escalonamento QMat pode ser definida com relação aos valores Qstep das 6 etapas iniciais de quantização, e a constante de escalonamento QMat de acordo com outros parâmetros de quantização QP podem ser selecionadas de acordo com um valor (QP mod 6).
[00060] Por exemplo, se i=(QP mod 6), uma constante de escalonamento QMati para escalonar com relação a um bloco transformado 16x16 obtido por DCT de acordo com o fluxograma 200 ou 800 da Figura 2 ou 8 pode ser definida como a seguir: QMat0=81, QMat1=89, QMat2=105, QMat3=113, QMat4=129; QMat5=146
[00061] A constante de escalonamento QMati não é limitada a isso, e pode ser ajustada dentro da faixa de ±1 ou ±2. Em outras palavras, a constante de escalonamento QMati pode ser ajustada dentro da faixa de QMati±1 ou QMati±2.
[00062] Uma constante de escalonamento QMati para escalonamento com relação a um bloco transformado 32x32 obtido por DCT de acordo com o fluxograma 200 ou 800 da Figura 2 ou 8 pode ser definida como a seguir: QMat0=40, QMat1=44, QMat2=52, QMat3=56, QMat4=64; QMat5=72
[00063] A constante de escalonamento QMati não é limitada a isso, e pode ser ajustada dentro da faixa de ±1 ou ±2. Em outras palavras, a constante de escalonamento QMati pode ser ajustada dentro da faixa de QMati±1 ou QMati±2. Por exemplo, QMat0=40, QMat1=45, QMat2=51, QMat3=57, QMat4=64, e QMat5=72 podem ser usados como a constante de escalonamento QMati.
[00064] Entretanto, em uma operação de desquantização, a desquantização pode ser realizada mediante aplicação de uma constante de desescalonamento e uma operação de mudança para compensar uma diferença entre a matriz de transformação inversa NxN original Original_A-1 usada para IDCT, e a matriz A-1 de transformação rápida inversa NxN que é uma matriz inversa da matriz A de transformação rápida NxN.
[00065] De acordo com outra modalidade, uma constante de desescalonamento DQMat pode ser determinada de acordo com o parâmetro de quantização QP. Quando a constante de desescalonamento DQMat é obtida conforme acima, o desescalonamento e a desquantização podem ser realizados mediante execução de uma operação de mudança de bits em um valor obtido mediante multiplicação da constante de desescalonamento DQMat e um coeficiente de transformação quantizado, por intermédio de um bit floor(QP/6), em que floor[x] é um número inteiro máximo menor do que ou igual a x e QP denotam um parâmetro de quantização. Em outras palavras, quando Zij denota um valor de coeficiente quantizado e Wij denota um coeficiente de transformação, Wij pode ser obtido mediante desescalonamento e desquantização do coeficiente quantizado Zij por intermédio da seguinte equação: Wij=(Zij)*DQMat<<floor(QP/6).
[00066] A constante de desescalonamento DQMat é definida com relação aos valores Qstep de 0,625, 0,6875, 0,8125, 0,875, 1 e 1,25 apenas das 6 etapas iniciais de quantização sem ter que ser definida com relação a todas as etapas de quantização, porque quando o parâmetro de quantização QP aumenta por 6, a etapa de quantização Qstep é dobrada, e assim a constante de desescalonamento DQMat pode ser definida com relação aos valores Qstep das 6 etapas inicias de quantização, e a constante de desescalonamento DQMat de acordo com outros parâmetros de quantização QP pode ser selecionada de acordo com um valor (QP mod 6).
[00067] Por exemplo, se i=(QP mod 6), uma constante de desescalonamento DQMati para desescalonar com relação ao bloco transformado 16x16 obtido pela DCT de acordo com o fluxograma 200 ou 800 da Figura 2 ou 8 pode ser definida como a seguir: DQMat0=81, DQMat1=89, DQMat2=105, DQMat3=113, DQMat4=129; DQMat5=146
[00068] A constante de desescalonamento DQMati não é limitada a isso, e pode ser ajustado dentro de uma faixa de ±1 ou ±2. Em outras palavras, a constante de desescalonamento DQMati pode ser ajustada dentro da faixa de QMati±1 ou QMati±2.
[00069] Uma constante de desescalonamento DQMati para desescalonar com relação a um bloco transformado 32x32 obtido pela DCT de acordo com o fluxograma 200 ou 800 da FIG. 2 ou 8 pode ser definida como a seguir: DQMat0=40, DQMat1=44, DQMat2=52, DQMat3=56, DQMat4=64; DQMat5=72
[00070] A constante de desescalonamento DQMati não é limitada a isso, e pode ser ajustada dentro da faixa de ±1 ou ±2. Em outras palavras, a constante de desescalonamento DQMati pode ser ajustada dentro da faixa de QMati±1 ou QMati±2. Por exemplo, DQMat0=40, DQMat1=45, DQMat2=51, DQMat3=57, DQMat4=64, e QMat5=72 podem ser usados como a constante de desescalonamento DQMati.
[00071] A Figura 10 é um fluxograma ilustrando um método de codificação de vídeo de acordo com uma modalidade da presente invenção.
[00072] Com referência à Figura 10, na operação 1010, o transformador 120 produz uma matriz de transformação rápida com base em uma matriz de transformação NxN (onde N é um número inteiro) que é usada para DCT 1D em um bloco NxN. Conforme descrito acima, o transformador 120 produz a matriz de transformação rápida mediante uso de uma matriz de transformação rápida formada de elementos que são obtidos mediante substituição dos elementos usados para DCT com números racionais ou mediante multiplicação dos elementos da matriz de transformação usados para DCT por uma potência de 2 e então arredondando os elementos multiplicados.
[00073] Na operação 1020, o transformador 120 produz um bloco transformado NxN mediante transformação do bloco NxN utilizando a matriz de transformação rápida.
[00074] Na operação 1030, o quantizador 130 realiza escalonamento no bloco transformado NxN para corrigir uma diferença entre a matriz de transformação NxN usada para o DCT 1D e a matriz de transformação rápida. Conforme descrito acima, o quantizador 130 realiza escalonamento com relação a um bloco transformado mediante uso da matriz de escalonamento MF ou constante de escalonamento QMat para reduzir um valor de erro entre um resultado da transformação realizada utilizando a matriz de transformação rápida A pelo transformador 120 e um resultado da transformação realizada utilizando a matriz DCT Original_A com base em uma operação de pontos flutuantes efetiva.
[00075] A Figura 11 é um diagrama de blocos de um equipamento de decodificação de vídeo 1100 de acordo com uma modalidade da presente invenção.
[00076] Com referência à Figura 11, o equipamento de decodificação de vídeo 1100 inclui um decodificador de entropia 1110, um desquantizador 1120, um transformador inverso 1130, e um preditor 1140.
[00077] O decodificador de entropia 1110 extrai informação de modo de predição, informação de imagem de referência, e informação residual de um bloco atual a ser decodificado, a partir de um fluxo de bits de entrada.
[00078] O desquantizador 1120 desquantiza os coeficientes de transformação quantizados, os quais são decodificados por entropia pelo decodificador de entropia 1110. Particularmente, de acordo com uma modalidade exemplar, o desquantizador 1120 realiza o desescalonamento em um bloco transformado NxN para corrigir uma diferença entre uma matriz de transformação inversa NxN para uso em IDCT 1D com relação a um bloco transformado NxN quantizado e uma matriz de transformação inversa rápida produzida com base na matriz de transformação inversa NxN.
[00079] O transformador inverso 1130 transforma de forma inversa os coeficientes de transformação desquantizados. Consequentemente, valores residuais para cada bloco são restaurados. A transformação inversa pode ser realizada mediante execução de IDCT de N pontos mediante uso de uma matriz inversa A-1 de uma matriz A de transformação rápida NxN adquirida de acordo com as várias modalidades da presente invenção. O transformador inverso 1130 realiza IDCT mediante uso de uma matriz de transformação rápida formada de elementos que são obtidos mediante substituição dos elementos de uma matriz de transformação inversa usada para IDCT com números racionais ou mediante multiplicação dos elementos da matriz de transformação inversa por uma potência de 2 e então arredondando os elementos multiplicados.
[00080] IDCT realizada em um bloco transformado 16x16 mediante uso do fluxograma 200 da Figura 2 pode ser expressa como a seguinte operação, em que Xi (onde i é um número inteiro na faixa de 0 a 15) denota um valor de entrada, Bi, Ci, Di, Ei e Fi denotam valores intermediários, e Yi denota um valor de resultado de transformação inversa: { /stage 0 F8 = ( 6*X1 - 63*X15 ) >> 6;F9 = ( 49*X9 - 40*X7 ) >> 6;F10 = ( 30*X5 - 56*X11 ) >> 6;F11 = ( 61*X13 - 18*X3 ) >> 6;F12 = ( 61*X3 + 18*X13 ) >> 6;F13 = ( 30*X11 + 56*X5 ) >> 6;F14 = ( 49*X7 + 40*X9 ) >> 6;F15 = ( 6*X15 + 63*X1 ) >> 6; /stage 1 E4 = ( 12*X2 - 62*X14 ) >> 6;E5 = ( 53*X10 - 35*X6 ) >> 6;E6 = ( 53*X6 + 35*X10 ) >> 6;E7 = ( 12*X14 + 62*X2 ) >> 6;E8 = F8 + F9;E9 = F8 - F9;E10 = F11 - F10;E11 = F11 + F10;E12 = F12 + F13;E13 = F12 - F13;E14 = F15 - F14;E15 = F15 + F14; /stage 2 D0 = ( 45*( X0 + X8 ) ) >> 6;D1 = ( 45*( X0 - X8 ) ) >> 6;D2 = ( 24*X4 - 59*X12 ) >> 6;D3 = ( 59*X4 + 24*X12 ) >> 6;D4 = E4 + E5;D5 = E4 - E5;D6 = E7 - E6;D7 = E7 + E6;D9 = ( 24*E14 - 59*E9 ) >> 6;D10 = ( - 59*E13 - 24*E10 ) >> 6;D13 = ( 24*E13 - 59*E10 ) >> 6;D14 = ( 59*E14 + 24*E9 ) >> 6; /stage 3 C0 = D0 + D3;C3 = D0 - D3;C8 = E8 + E11;C11 = E8 - E11;C12 = E15 - E12;C15 = E15 + E12;C1 = D1 + D2;C2 = D1 - D2;C9 = D9 + D10;C10 = D9 - D10;C13 = D14 - D13;C14 = D14 + D13;C5 = ( 45*( D6 - D5 ) ) >> 6;C6 = ( 45*( D6 + D5 ) ) >> 6; /stage 4 B0 = C0 + D7;B7 = C0 - D7;B1 = C1 + C6;B6 = C1 - C6;B2 = C2 + C5;B5 = C2 - C5;B3 = C3 + D4;B4 = C3 - D4;B10 = ( 45*( C13 - C10 ) ) >> 6;B13 = ( 45*( C13 + C10 ) ) >> 6;B11 = ( 45*( C12 - C11 ) ) >> 6;B12 = ( 45*( C12 + C11 ) ) >> 6; /stage 5 Y0 = B0 + C15;Y15 = B0 - C15;Y1 = B1 + C14;Y14 = B1 - C14;Y2 = B2 + B13;Y13 = B2 - B13;Y3 = B3 + B12;Y12 = B3 - B12;Y4 = B4 + B11;Y11 = B4 - B11;Y5 = B5 + B10;Y10 = B5 - B10;Y6 = B6 + C9;Y9 = B6 - C9;Y7 = B7 + C8;Y8 = B7 - C8; }
[00081] IDCT realizado em um bloco transformado 32x32 mediante uso do fluxograma 200 da FIG. 2 pode ser expresso como a seguinte operação, em que Xi (onde i é um número inteiro na faixa de 0 a 31) denota um valor de entrada, Ai, Bi, Ci, Di, Ei e Fi denota valores intermediários, e Yi denota um valor de resultado de transformação inversa: { /stage 0 G16 = ( 12*X1 - 255*X31) >> 8;G17 = ( 189*X17 - 171*X15) >> 8;G18 = ( 109*X9 - 231*X23) >> 8;G19 = ( 241*X25 - 86*X7) >> 8;G20 = ( 62*X5 - 248*X27) >> 8;G21 = ( 219*X21 - 131*X11) >> 8;G22 = ( 152*X13 - 205*X19) >> 8;G23 = ( 253*X29 - 37*X3) >> 8;G24 = ( 253*X3 + 37*X29) >> 8;G25 = ( 152*X19 + 205*X13) >> 8;G26 = ( 219*X11 + 131*X21) >> 8;G27 = ( 62*X27 + 248*X5) >> 8;G28 = ( 241*X7 + 86*X25) >> 8;G29 = ( 109*X23 + 231*X9) >> 8;G30 = ( 189*X15 + 171*X17) >> 8;G31 = ( 12*X31 + 255*X1) >> 8; /stage 1 F8 = ( 25*X2 - 254*X30) >> 8;F9 = ( 197*X18 - 162*X14) >> 8;F10 = ( 120*X10 - 225*X22) >> 8;F11 = ( 244*X26 - 74*X6) >> 8;F12 = ( 244*X6 + 74*X26) >> 8;F13 = ( 120*X22 + 225*X10) >> 8;F14 = ( 197*X14 + 162*X18) >> 8;F15 = ( 25*X30 + 254*X2) >> 8;F16 = G16 + G17;F17 = G16 - G17;F18 = G19 - G18;F19 = G19 + G18;F20 = G20 + G21;F21 = G20 - G21;F22 = G23 - G22;F23 = G23 + G22;F24 = G24 + G25;F25 = G24 - G25;F26 = G27 - G26;F27 = G27 + G26;F28 = G28 + G29;F29 = G28 - G29;F30 = G31 - G30;F31 = G31 + G30; /stage 2 E4 = ( 49*X4 - 251*X28) >> 8;E5 = ( 212*X20 - 142*X12) >> 8;E6 = ( 212*X12 + 142*X20) >> 8;E7 = ( 49*X28 + 251*X4) >> 8;E8 = F8 + F9;E9 = F8 - F9;E10 = F11 - F10;E11 = F11 + F10;E12 = F12 + F13;E13 = F12 - F13;E14 = F15 - F14;E15 = F15 + F14;E17 = ( 49*F30 - 251*F17) >> 8;E18 = ( - 251*F29 - 49*F18) >> 8;E21 = ( 212*F26 - 142*F21) >> 8;E22 = ( - 142*F25 - 212*F22) >> 8;E25 = ( 212*F25 - 142*F22) >> 8;E26 = ( 142*F26 + 212*F21) >> 8;E29 = ( 49*F29 - 251*F18) >> 8;E30 = ( 251*F30 + 49*F17) >> 8; /stage 3 D0 = ( 181*( X0 + X16 )) >> 8;D1 = ( 181*( X0 - X16 )) >> 8;D2 = ( 97*X8 - 236*X24) >> 8;D3 = ( 236*X8 + 97*X24) >> 8;D4 = E4 + E5;D5 = E4 - E5;D6 = E7 - E6;D7 = E7 + E6;D9 = ( 97*E14 - 236*E9) >> 8;D10 = (-236*E13 - 97*E10) >> 8;D13 = ( 97*E13 - 236*E10) >> 8;D14 = (236*E14 + 97*E9) >> 8;D16 = F16 + F19;D19 = F16 - F19;D20 = F23 - F20;D23 = F23 + F20;D24 = F24 + F27;D27 = F24 - F27;D28 = F31 - F28;D31 = F31 + F28;D17 = E17 + E18;D18 = E17 - E18;D21 = E22 - E21;D22 = E22 + E21;D25 = E25 + E26;D26 = E25 - E26;D29 = E30 - E29;D30 = E30 + E29; /stage 4 C0 = D0 + D3;C3 = D0 - D3;C8 = E8 + E11;C11 = E8 - E11;C12 = E15 - E12;C15 = E15 + E12;C1 = D1 + D2;C2 = D1 - D2;C9 = D9 + D10;C10 = D9 - D10;C13 = D14 - D13;C14 = D14 + D13;C5 = ( 181*( D6 - D5 )) >> 8;C6 = ( 181*( D6 + D5 )) >> 8;C18 = ( 97*D29 - 236*D18) >> 8;C20 = (- 236*D27 - 97*D20) >> 8;C26 = (- 236*D21 + 97*D26) >> 8;C28 = ( 97*D19 + 236*D28) >> 8;C19 = ( 97*D28 - 236*D19) >> 8;C21 = (- 236*D26 - 97*D21) >> 8;C27 = (- 236*D20 + 97*D27) >> 8;C29 = ( 97*D18 + 236*D29) >> 8; /stage 5 B0 = C0 + D7;B7 = C0 - D7;B1 = C1 + C6;B6 = C1 - C6;B2 = C2 + C5;B5 = C2 - C5;B3 = C3 + D4;B4 = C3 - D4;B10 = ( 181*( C13 - C10 )) >> 8;B13 = ( 181*( C13 + C10 )) >> 8;B11 = ( 181*( C12 - C11 )) >> 8;B12 = ( 181*( C12 + C11 )) >> 8;B16 = D16 + D23;B23 = D16 - D23;B24 = D31 - D24;B31 = D31 + D24;B17 = D17 + D22;B22 = D17 - D22;B25 = D30 - D25;B30 = D30 + D25;B18 = C18 + C21;B21 = C18 - C21;B26 = C29 - C26;B29 = C29 + C26;B19 = C19 + C20;B20 = C19 - C20;B27 = C28 - C27;B28 = C28 + C27; /stage 6 A0 = B0 + C15;A15 = B0 - C15;A1 = B1 + C14;A14 = B1 - C14;A2 = B2 + B13;A13 = B2 - B13;A3 = B3 + B12;A12 = B3 - B12;A4 = B4 + B11;A11 = B4 - B11;A5 = B5 + B10;A10 = B5 - B10;A6 = B6 + C9;A9 = B6 - C9;A7 = B7 + C8;A8 = B7 - C8;A20 = ( 181*( B27 - B20 )) >> 8;A27 = ( 181*( B27 + B20 )) >> 8;A21 = ( 181*( B26 - B21 )) >> 8;A26 = ( 181*( B26 + B21 )) >> 8;A22 = ( 181*( B25 - B22 )) >> 8;A25 = ( 181*( B25 + B22 )) >> 8;A23 = ( 181*( B24 - B23 )) >> 8;A24 = ( 181*( B24 + B23 )) >> 8; /stage 7 Y0 = A0 + B31;Y31 = A0 - B31;Y1 = A1 + B30;Y30 = A1 - B30;Y2 = A2 + B29;Y29 = A2 - B29;Y3 = A3 + B28;Y28 = A3 - B28;Y4 = A4 + A27;Y27 = A4 - A27;Y5 = A5 + A26;Y26 = A5 - A26;Y6 = A6 + A25;Y25 = A6 - A25;Y7 = A7 + A24;Y24 = A7 - A24;Y8 = A8 + A23;Y23 = A8 - A23;Y9 = A9 + A22;Y22 = A9 - A22;Y10 = A10 + A21;Y21 = A10 - A21;Y11 = A11 + A20;Y20 = A11 - A20;Y12 = A12 + B19;Y19 = A12 - B19;Y13 = A13 + B18;Y18 = A13 - B18;Y14 = A14 + B17;Y17 = A14 - B17;Y15 = A15 + B16;Y16 = A15 - B16; }
[00082] IDCT realizado em um bloco transformado 16x16 mediante uso do fluxograma 800 da FIG. 8 pode ser expresso como a seguinte operação, em que Xi (onde i é um número inteiro na faixa de 0 a 15) denota um valor de entrada, Ai, Bi, Ci, Di e Ei denota valores intermediários, e Yi denota um valor de resultado de transformação inversa: { /stage 0 D0 = X0;D1 = -X8;D2 = X4;D3 = X12;D4 = X2;E5 = X6 ;D6 = X14;E7 = -X10;E8 = X3;E9 = X13;D10 = X9;E11 = X15;E12 = X1;D13 = X7;E14 = -X11;E15 = X5; /stage 1 D5 = (45*(E5 - E7)) >> 6;D7 = (45*(E5 + E7)) >> 6; D8 = (24*E8 + 59*E9) >> 6;D9 = (-59*E8 + 24*E9) >> 6; D11 = (45*(E11 - E12)) >> 6;D12 = (45*(E11 + E12)) >> 6; D14 = (24*E14 + 59*E15) >> 6;D15 = (-59*E14 + 24*E15) - > 6; /stage 2 C0 = (45*(D0 - D1)) >> 6;C1 = (45*(D0 + D1)) >> 6; C2 = (24*D2 - 59*D3) >> 6;C3 = (59*D2 + 24*D3) >> 6; C4 = D4 + D5;C5 = D4 - D5;C6 = -D6 + D7;C7 = D6 + D7; C8 = D8 + D14;C14 = D8 - D14;C9 = D9 + D15;C15 = D9 - D15;C10 = D10 + D11; C11 = D10 - D11;C12 = D12 + D13;C13 = D12 - D13; /stage 3 B0 = C0 + C3;B3 = C0 - C3;B1 = C1 + C2;B2 = C1 - C2; B4 = (6*C4 - 31*C7, 5);B7 = (31*C4 + 6* C7, 5);B5 = (35*C5 - 53*C6) >> 6;B6 = (53*C5 + 35*C6) >> 6; B8 = C8 + C11;B11 = C8 - C11;B9 = C9 + C10;B10 = C9 - C10; B12 = C12 + C15;B15 = C12 - C15;B13 = C13 + C14;B14 = C13 - C14; /stage 4 A0 = B0 + B7;A7 = B0 - B7;A1 = B1 + B6;A6 = B1 - B6;A2 = B2 + B5;A5 = B2 - B5;A3 = B3 + B4;A4 = B3 - B4; A8 = (49*B8 - 40*B15) >> 6;A15 = (40*B8 + 49*B15) >> 6;A9 = (30*B9 + 56*B14) >> 6;A14 = (-56*B9 + 30*B14) >> 6;A10 = (61*B10 - 18*B13) >> 6;A13 = (18*B10 + 61*B13) >> 6;A11 = (6*B11 + 63*B12) >> 6;A12 = (-63*B11 + 6*B12) >> 6; /stage 5 Y0 = A0 + A15;Y1 = A1 + A14;Y2 = A2 + A13;Y3 = A3 + A12;Y4 = A4 + A11;Y5 = A5 + A10;Y6 = A6 + A9;Y7 = A7 + A8;Y8 = A7 - A8;Y9 = A6 - A9;Y10 = A5 - A10;Y11 = A4 - A11;Y12 = A3 - A12;Y13 = A2 - A13;Y14 = A1 - A14;Y15 = A0 - A15; }
[00083] IDCT realizado em um bloco transformado 32x32 mediante uso do fluxograma 800 da FIG. 8 pode ser expresso como a seguinte operação, em que Xi (onde i é um número inteiro na faixa de 0 a 31) denota um valor de entrada, Ai, Bi, Ci, Di, Ei e Fi denota valores intermediários, e Yi denota um valor de resultado de transformação inversa: { /stage 0 D0= X0;E24 = X1;E12 = X2;F16 = -X3;D4 = X4; F31 = X5; E8 = X6; E26 = -X7;D2 = X8; E21 = X9; E15 = X10; F29 = X11;E5 = X12; F18 = -X13; D13 = X14; D22 = X15;D1 = -X16; D25 = X17; D10 = X18; F19 = -X19;E7 = -X20; F28 = -X21 ; E14 = -X22; E20 = -X23;D3 = X24; E27 = -X25; E9 = X26; F30 = -X27;D6 = X28; F17 = -X29 ; E11 = X30; E23 = -X31; /stage 1 E16 = (251*F16 + 49*F17) >> 8;E17 = (-49*F16 + 251*F17) >> 8;E18 = (212*F18 + 142*F19) >> 8;E19 = (-142*F18 + 212*F19) >> 8; E28 = (212*F28 + 142*F29) >> 8;E29 = (-142*F28 + 212*F29) >> 8;E30 = (251*F30 + 49*F31) >> 8;E31 = (-49*F30 + 251*F31) >> 8; /stage 2 D5 = (181*(E5 - E7)) >> 8;D7 = (181*(E5 + E7)) >> 8; D8 = (97*E8 + 236*E9) >> 8;D9 = (-236*E8 + 97*E9) >> 8; D11 = (181*(E11 - E12)) >> 8;D12 = (181*(E11 + E12)) >> 8; D14 = (97*E14 + 236*E15) >> 8;D15 = (-236*E14 + 97*E15) >> 8; D16 = E16 + E18;C18 = E16 - E18;C17 = E17 + E19;D19 = E17 - E19; D20 = (236*E20 - 97*E21) >> 8;D21 = (97*E20 + 236*E21) >> 8;D23 = (181*(E23 - E24)) >> 8;D24 = (181*(E23 + E24)) >> 8;D26 = (236*E26 - 97*E27) >> 8;D27 = (97*E26 + 236*E27) >> 8;D28 = - E28 + E30;C30 = E28 + E30;C29 = - E29 + E31;D31 = E29 + E31; /stage 3 C0 = (181*(D0 - D1)) >> 8;C1 = (181*(D0 + D1)) >> 8; C2 = (97*D2 - 236*D3) >> 8;C3 = (236*D2 + 97*D3) >> 8; C4 = D4 + D5;C5 = D4 - D5;C6 = -D6 + D7; C7 = D6 + D7; C8 = D8 + D14;C14 = D8 - D14;C9 = D9 + D15;C15 = D9 - D15;C10 = D10 + D11; C11 = D10 - D11;C12 = D12 + D13;C13 = D12 - D13; C16 = (181*(D16 - D19)) >> 8;C19 = (181*(D16 + D19)) - > 8;C20 = D20 + D26;C26 = D20 - D26;C21 = D21 + D27;C27 = D21 - D27;C22 = D22 + D23;C23 = D22 - D23;C24 = D24 + D25;C25 = D24 - D25;C28 = (181*(D28 - D31)) >> 8;C31 = (181*(D28 + D31)) >> 8; /stage 4 B0 = C0 + C3;B3 = C0 - C3;B1 = C1 + C2;B2 = C1 - C2; B4 = (49*C4 - 251*C7) >> 8;B7 = (251*C4 + 49*C7) >> 8;B5 = (142*C5 - 212*C6) >> 8;B6 = (212*C5 + 142*C6) >> 8; B8 = C8 + C11;B11 = C8 - C11;B9 = C9 + C10;B10 = C9 - C10; B12 = C12 + C15;B15 = C12 - C15;B13 = C13 + C14;B14 = C13 - C14; B16 = C16 + C28;B28 = C16 - C28;B17 = C17 + C29;B29 = C17 - C29;B18 = C18 + C30;B30 = C18 - C30;B19 = C19 + C31;B31 = C19 - C31; B20 = C20 + C23;B23 = C20 - C23;B21 = C21 + C22;B22 = C21 - C22; B24 = C24 + C27;B27 = C24 - C27;B25 = C25 + C26;B26 = C25 - C26; /stage 5 A0 = B0 + B7;A7 = B0 - B7;A1 = B1 + B6;A6 = B1 - B6;A2 = B2 + B5;A5 = B2 - B5;A3 = B3 + B4;A4 = B3 - B4; A8 = (197*B8 - 162*B15) >> 8;A15 = (162*B8 + 197*B15) >> 8;A9 = (120*B9 + 225*B14) >> 8;A14 = (-225*B9 + 120*B14) >> 8;A10 = (244*B10 - 74*B13) >> 8;A13 = (74*B10 + 244*B13) >> 8;A11 = (25*B11 + 254*B12) >> 8;A12 = (-254*B11 + 25*B12) >> 8; A16 = B16 + B23;A23 = B16 - B23;A17 = B17 + B22;A22 = B17 - B22;A18 = B18 + B21;A21 = B18 - B21;A19 = B19 + B20;A20 = B19 - B20; A24 = B24 + B31;A31 = B24 - B31;A25 = B25 + B30;A30 = B25 - B30;A26 = B26 + B29;A29 = B26 - B29;A27 = B27 + B28;A28 = B27 - B28; /stage 6 Z0 = A0 + A15;Z1 = A1 + A14;Z2 = A2 + A13;Z3 = A3 + A12;Z4 = A4 + A11;Z5 = A5 + A10;Z6 = A6 + A9;Z7 = A7 + A8;Z8 = A7 - A8;Z9 = A6 - A9;Z10 = A5 - A10;Z11 = A4 - A11;Z12 = A3 - A12;Z13 = A2 - A13;Z14 = A1 - A14;Z15 = A0 - A15; Z16 = (171*A16 + 189*A31) >> 8;Z31 = (-189*A16 + 171*A31) >> 8;Z17 = (205*A17 - 152*A30) >> 8;Z30 = (152*A17 + 205*A30) >> 8;Z18 = (131*A18 + 219*A29) >> 8;Z29 = (-219*A18 + 131*A29) >> 8;Z19 = (231*A19 - 109*A28) >> 8;Z28 = (109*A19 + 231*A28) >> 8;Z20 = (86*A20 + 241*A27) >> 8;Z27 = (-241*A20 + 86*A27) >> 8;Z21 = (248*A21 - 62*A26) >> 8;Z26 = (62*A21 + 248*A26) >> 8;Z22 = (37*A22 + 253*A25) >> 8;Z25 = (-253*A22 + 37*A25) >> 8;Z23 = (255*A23 - 12*A24) >> 8;Z24 = (12*A23 + 255*A24) >> 8; /stage 7 Y0 = Z0 + Z31;Y31 = Z0 - Z31;Y1 = Z1 + Z30;Y30 = Z1 - Z30;Y2 = Z2 + Z29;Y29 = Z2 - Z29;Y3 = Z3 + Z28;Y28 = Z3 - Z28;Y4 = Z4 + Z27;Y27 = Z4 - Z27;Y5 = Z5 + Z26;Y26 = Z5 - Z26;Y6 = Z6 + Z25;Y25 = Z6 - Z25;Y7 = Z7 + Z24;Y24 = Z7 - Z24;Y8 = Z8 + Z23;Y23 = Z8 - Z23;Y9 = Z9 + Z22;Y22 = Z9 - Z22;Y10 = Z10 + Z21;Y21 = Z10 - Z21;Y11 = Z11 + Z20;Y20 = Z11 - Z20;Y12 = Z12 + Z19;Y19 = Z12 - Z19;Y13 = Z13 + Z18;Y18 = Z13 - Z18;Y14 = Z14 + Z17;Y17 = Z14 - Z17;Y15 = Z15 + Z16;Y16 = Z15 - Z16; }
[00084] Figura 12 é um fluxograma ilustrando um método de decodificação de vídeo de acordo com uma modalidade da presente invenção.
[00085] Com referência à Figura 12, na operação 1210, o desquantizador 1120 recebe um bloco transformado NxN quantizado. Na operação 1220, o desquantizador 1120 realiza desescalonamento no bloco transformado NxN quantizado para corrigir uma diferença entre uma matriz de transformação inversa NxN para uso em IDCT 1D com relação ao bloco transformado NxN quantizado e uma matriz de transformação inversa rápida produzida com base na matriz de transformação inversa NxN. Conforme descrito acima, o desescalonamento pode ser realizado simultaneamente com desquantização, e o desescalonamento pode ser realizado com relação a um coeficiente de transformação quantizado mediante uso da matriz de desescalonamento V ou da constante de desescalonamento DQMat, que é determinada de acordo com o parâmetro de quantização QP.
[00086] Na operação 1230, o transformador inverso 1130 produz um bloco transformado inverso NxN mediante transformação inversa de um bloco transformado NxN desescalonado utilizando a matriz de transformação inversa rápida. Conforme descrito acima, a matriz de transformada inversa rápida é a matriz A-1 da matriz A de transformação rápida NxN adquirida de acordo com as várias modalidades da presente invenção, e IDCT é realizada utilizando uma matriz de transformação rápida formada de elementos que são obtidos mediante substituição dos elementos de uma matriz de transformação inversa usada para IDCT com números racionais ou mediante multiplicação dos elementos da matriz de transformação inversa por uma potência de 2 e então arredondando os elementos multiplicados.
[00087] Uma ou mais modalidades exemplares também podem ser incorporadas como códigos legíveis por computador em um meio de gravação legível por computador. O meio de gravação legível por computador é qualquer dispositivo de armazenamento de dados que possa armazenar os dados que posteriormente podem ser lidos por um sistema de computador. Exemplos do meio de gravação legível por computador incluem memória de leitura (ROM), memória de acesso aleatório (RAM), CD-ROMs, fitas magnéticas, disquetes, dispositivos óticos de armazenamento de dados, etc. O meio de gravação legível por computador também pode ser distribuído através de sistemas de computadores acoplados em rede de modo que o código legível por computador é armazenado e executado de uma forma distribuída.
[00088] Embora a presente invenção tenha sido particularmente mostrada e descrita com referência às suas modalidades exemplares, será entendido por aqueles de conhecimento comum na técnica que diversas alterações na forma e detalhes podem ser feitas nas mesmas sem se afastar da essência e escopo da presente invenção conforme definida pelas reivindicações a seguir.

Claims (2)

1. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender: receber um fluxo de bits incluindo informações do bloco transformado quantizado; decodificar por entropia a partir da informação do bloco transformado quantizado, um bloco transformado quantizado; determinar uma constante de escalonamento para escalonamento de coeficientes transformados incluídos no bloco transformado quantizado com base em um parâmetro de quantização; escalonar os coeficientes transformados usando a constante de escalonamento; e transformar inversamente o bloco transformado que inclui os coeficientes transformados escalonados, em que i denota um resto após o parâmetro de quantização ser dividido por 6, a constante de escalonamento para i = 0 ser 40, a constante de escalonamento para i = 1 ser 45, a constante de escalonamento para i = 2 ser 51, a constante de escalonamento para i = 3 ser 57, a constante de escalonamento para i = 4 ser 64 e a constante de escalonamento para i = 5 ser 72.
2. MÉTODO DE CODIFICAÇÃO DE VÍDEO, caracterizado por compreender: obter um bloco transformado mediante transformação de um bloco residual indicando diferenças entre um bloco atual e um bloco previsto do bloco atual; determinar uma constante de escalonamento para quantização de coeficientes transformados incluídos no bloco transformado com base em um parâmetro de quantização; quantizar os coeficientes transformados no bloco transformado com base na constante de escalonamento; codificar por entropia o bloco transformado quantizado; e enviar um fluxo de bits incluindo informações do bloco transformado quantizado indicando o bloco transformado quantizado, em que i denota um resto após o parâmetro de quantização ser dividido por 6, a constante de escalonamento para i = 0 ser 40, a constante de escalonamento para i = 1 ser 45, a constante de escalonamento para i = 2 ser 51, a constante de escalonamento para i = 3 ser 57, a constante de escalonamento para i = 4 ser 64 e a constante de escalonamento para i = 5 ser 72.
BR122020016581-2A 2010-09-28 2011-09-28 Método de decodificação de vídeo, e método de codificação de vídeo BR122020016581B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US38712810P 2010-09-28 2010-09-28
US61/387,128 2010-09-28
PCT/KR2011/007165 WO2012044076A2 (ko) 2010-09-28 2011-09-28 비디오의 부호화 방법 및 장치, 복호화 방법 및 장치
BR112013007023A BR112013007023A2 (pt) 2010-09-28 2011-09-28 método de codificação de vídeo e método de decodificação de vídeo

Publications (1)

Publication Number Publication Date
BR122020016581B1 true BR122020016581B1 (pt) 2022-03-03

Family

ID=45893663

Family Applications (2)

Application Number Title Priority Date Filing Date
BR122020016581-2A BR122020016581B1 (pt) 2010-09-28 2011-09-28 Método de decodificação de vídeo, e método de codificação de vídeo
BR112013007023A BR112013007023A2 (pt) 2010-09-28 2011-09-28 método de codificação de vídeo e método de decodificação de vídeo

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR112013007023A BR112013007023A2 (pt) 2010-09-28 2011-09-28 método de codificação de vídeo e método de decodificação de vídeo

Country Status (8)

Country Link
US (5) US9350997B2 (pt)
EP (2) EP2624556A4 (pt)
JP (2) JP5620587B2 (pt)
KR (4) KR101982819B1 (pt)
CN (3) CN105263028A (pt)
AU (1) AU2011308204A1 (pt)
BR (2) BR122020016581B1 (pt)
WO (1) WO2012044076A2 (pt)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
DK3300370T3 (da) 2012-02-29 2019-05-20 Sony Corp Anordning og fremgangsmåde til billedbehandling
US10194158B2 (en) * 2012-09-04 2019-01-29 Qualcomm Incorporated Transform basis adjustment in scalable video coding
US9554152B2 (en) * 2013-07-12 2017-01-24 Qualcomm Incorporated Concurrent processing of horizontal and vertical transforms
JP2018533284A (ja) * 2015-09-21 2018-11-08 エルジー エレクトロニクス インコーポレイティド 係数誘導予測を用いてビデオ信号を処理する方法及び装置
EP3355579A4 (en) * 2015-11-24 2018-08-01 Samsung Electronics Co., Ltd. Method for encoding/decoding image and device therefor
CN108293122A (zh) * 2015-11-24 2018-07-17 三星电子株式会社 对图像进行编码/解码的方法及其设备
US10305717B2 (en) 2016-02-26 2019-05-28 VertoCOMM, Inc. Devices and methods using the hermetic transform for transmitting and receiving signals using multi-channel signaling
JP2019101264A (ja) * 2017-12-04 2019-06-24 シャープ株式会社 外部制御装置、音声対話型制御システム、制御方法、およびプログラム
CN112740688A (zh) * 2018-09-17 2021-04-30 韩国电子通信研究院 图像编码/解码方法和设备以及存储比特流的记录介质
CN111225206B (zh) * 2018-11-23 2021-10-26 华为技术有限公司 视频解码方法和视频解码器
WO2020251279A1 (ko) * 2019-06-11 2020-12-17 엘지전자 주식회사 스케일링 리스트 데이터의 시그널링 기반 비디오 또는 영상 코딩
WO2020251275A1 (ko) * 2019-06-11 2020-12-17 엘지전자 주식회사 스케일링 리스트 기반 비디오 또는 영상 코딩
MX2022001595A (es) 2019-08-06 2022-03-11 Op Solutions Llc Método de señalización implícita de gestión de resolución adaptativa basada en el tipo de trama.
CN114467305A (zh) * 2019-08-06 2022-05-10 Op方案有限责任公司 自适应分辨率管理预测重缩放
AU2020326881A1 (en) 2019-08-06 2022-03-24 Op Solutions, Llc Block-based adaptive resolution management
WO2021026324A1 (en) * 2019-08-06 2021-02-11 Op Solutions Adaptive resolution management prediction rescaling
CN114902671A (zh) 2019-11-08 2022-08-12 Op方案有限责任公司 用于自适应裁剪的方法和系统
KR20220098017A (ko) 2020-01-10 2022-07-08 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
JP7458489B2 (ja) * 2020-01-10 2024-03-29 エルジー エレクトロニクス インコーポレイティド 変換に基づく画像コーディング方法及びその装置
US20210329267A1 (en) * 2020-04-17 2021-10-21 Qualcomm Incorporated Parallelized rate-distortion optimized quantization using deep learning
WO2022220545A1 (ko) * 2021-04-12 2022-10-20 엘지전자 주식회사 저주파 비분리 변환 설계 방법 및 장치
CN117597934A (zh) * 2021-06-16 2024-02-23 Lg电子株式会社 用于设计低频不可分离变换的方法和装置
CN116366867A (zh) * 2021-12-28 2023-06-30 中国电信股份有限公司 数据变换与恢复方法、装置、系统、电子设备及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539836A (en) * 1991-12-20 1996-07-23 Alaris Inc. Method and apparatus for the realization of two-dimensional discrete cosine transform for an 8*8 image fragment
EP0735772A3 (en) * 1995-03-27 1998-04-01 Hewlett-Packard Company Method for selecting JPEG quantization tables for low bandwidth applications
US6134270A (en) * 1997-06-13 2000-10-17 Sun Microsystems, Inc. Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
US7185037B2 (en) * 2001-08-23 2007-02-27 Texas Instruments Incorporated Video block transform
US7082450B2 (en) * 2001-08-30 2006-07-25 Nokia Corporation Implementation of a transform and of a subsequent quantization
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US7242713B2 (en) 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
CN1306818C (zh) * 2003-06-27 2007-03-21 中国科学院计算技术研究所 一种用于编码处理的8输入/输出的整数变换/反变换方法
US7298925B2 (en) * 2003-09-30 2007-11-20 International Business Machines Corporation Efficient scaling in transform domain
US20050074062A1 (en) * 2003-10-06 2005-04-07 Sung Chih-Ta Star Fast DCT method and apparatus for digital video compression
US7756351B2 (en) * 2003-12-19 2010-07-13 Stmicroelectronics, Inc. Low power, high performance transform coprocessor for video compression
US7487193B2 (en) * 2004-05-14 2009-02-03 Microsoft Corporation Fast video codec transform implementations
US7606427B2 (en) * 2004-07-08 2009-10-20 Qualcomm Incorporated Efficient rate control techniques for video encoding
CN1286322C (zh) * 2004-08-06 2006-11-22 联合信源数字音视频技术(北京)有限公司 一种低复杂度整数4×4离散余弦变换量化实现方法
US7489826B2 (en) * 2004-10-07 2009-02-10 Infoprint Solutions Company, Llc Compensating for errors in performance sensitive transformations
US7558815B2 (en) * 2004-10-08 2009-07-07 Infoprint Solutions Company Llc Processing of performance sensitive transforms
KR100744807B1 (ko) 2005-07-25 2007-08-01 매그나칩 반도체 유한회사 Cmos 이미지센서 및 그 제조방법
KR100712531B1 (ko) 2005-09-10 2007-04-27 삼성전자주식회사 Mpeg-2 데이터를 h.264 데이터로변환부호화하는 장치 및 방법
US7689052B2 (en) * 2005-10-07 2010-03-30 Microsoft Corporation Multimedia signal processing using fixed-point approximations of linear transforms
US8548265B2 (en) * 2006-01-05 2013-10-01 Fastvdo, Llc Fast multiplierless integer invertible transforms
KR100809686B1 (ko) * 2006-02-23 2008-03-06 삼성전자주식회사 이산 여현 변환을 이용한 영상 리사이징 방법 및 장치
US8849884B2 (en) * 2006-03-29 2014-09-30 Qualcom Incorporate Transform design with scaled and non-scaled interfaces
US8059721B2 (en) * 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
EP1850597A1 (en) * 2006-04-24 2007-10-31 Universität Dortmund Method and circuit for performing a cordic based Loeffler discrete cosine transformation (DCT), particularly for signal processing
CN101083768B (zh) * 2006-06-02 2010-04-14 三星电子株式会社 处理视频数据的编码器和编码方法及解码器和解码方法
US8606023B2 (en) * 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
KR100899658B1 (ko) * 2007-04-16 2009-05-27 경희대학교 산학협력단 고속 동작을 위한 mpeg2/h.264 디지털 비디오트랜스코딩 시스템 및 방법
US8417045B2 (en) * 2010-07-29 2013-04-09 Infoprint Solutions Company Llc Mechanism for processing order-16 discrete cosine transforms
US20120230395A1 (en) * 2011-03-11 2012-09-13 Louis Joseph Kerofsky Video decoder with reduced dynamic range transform with quantization matricies
US9560347B2 (en) * 2011-08-23 2017-01-31 Hfi Innovation Inc. Method and system of transform block processing according to quantization matrix in video coding

Also Published As

Publication number Publication date
BR112013007023A2 (pt) 2017-07-25
US20190394490A1 (en) 2019-12-26
CN103125116A (zh) 2013-05-29
EP2985700A3 (en) 2016-08-17
US20160255372A1 (en) 2016-09-01
KR20120032458A (ko) 2012-04-05
KR20190058423A (ko) 2019-05-29
US20180041775A1 (en) 2018-02-08
WO2012044076A3 (ko) 2012-06-14
US10038918B2 (en) 2018-07-31
WO2012044076A2 (ko) 2012-04-05
JP2013542665A (ja) 2013-11-21
CN105263028A (zh) 2016-01-20
JP2014233095A (ja) 2014-12-11
US20130188730A1 (en) 2013-07-25
EP2624556A2 (en) 2013-08-07
CN105512093A (zh) 2016-04-20
KR20200028373A (ko) 2020-03-16
KR101982819B1 (ko) 2019-05-28
KR102087990B1 (ko) 2020-03-11
US9350997B2 (en) 2016-05-24
AU2011308204A1 (en) 2013-04-11
JP5620587B2 (ja) 2014-11-05
KR20200105773A (ko) 2020-09-09
US20180310026A1 (en) 2018-10-25
EP2624556A4 (en) 2016-08-24
US10743026B2 (en) 2020-08-11
US9788013B2 (en) 2017-10-10
US10455252B2 (en) 2019-10-22
EP2985700A2 (en) 2016-02-17
KR102149828B1 (ko) 2020-08-31

Similar Documents

Publication Publication Date Title
KR102149828B1 (ko) 비디오의 부호화 방법 및 장치, 복호화 방법 및 장치
CA2633897C (en) Transforms with common factors
EP2624561A2 (en) Method and device for the transformation and method and device for the reverse transformation of images
JP2010220225A (ja) 映像符号化のための低複雑性単一化変換
KR101480412B1 (ko) 영상의 변환 방법 및 장치, 역변환 방법 및 장치
KR20120098499A (ko) 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치
AU2016234944B2 (en) Video encoding method and device and decoding method and device
KR20110118598A (ko) 영상의 변환 방법 및 장치, 역변환 방법 및 장치
AU2015221483A1 (en) Video encoding method and device and decoding method and device
JP5662887B2 (ja) 符号化装置、復号装置及びプログラム
Wu et al. Additive vector decoding of transform coded images
JP2010233208A (ja) 高速サブピクセル動き推定

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 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 28/09/2011, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.