BR112021004822A2 - codificador, decodificador, método de codificação e método de decodificação - Google Patents
codificador, decodificador, método de codificação e método de decodificação Download PDFInfo
- Publication number
- BR112021004822A2 BR112021004822A2 BR112021004822-7A BR112021004822A BR112021004822A2 BR 112021004822 A2 BR112021004822 A2 BR 112021004822A2 BR 112021004822 A BR112021004822 A BR 112021004822A BR 112021004822 A2 BR112021004822 A2 BR 112021004822A2
- Authority
- BR
- Brazil
- Prior art keywords
- coefficient
- block
- flag
- value
- flags
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 392
- 241000209094 Oryza Species 0.000 claims description 99
- 235000007164 Oryza sativa Nutrition 0.000 claims description 99
- 235000009566 rice Nutrition 0.000 claims description 99
- 230000003044 adaptive effect Effects 0.000 claims description 27
- 230000033001 locomotion Effects 0.000 description 284
- 230000008569 process Effects 0.000 description 216
- 239000013598 vector Substances 0.000 description 193
- 238000012545 processing Methods 0.000 description 129
- 238000010586 diagram Methods 0.000 description 96
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 58
- 238000013139 quantization Methods 0.000 description 45
- 238000012937 correction Methods 0.000 description 33
- 241000023320 Luma <angiosperm> Species 0.000 description 30
- 230000006870 function Effects 0.000 description 30
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical group COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 30
- 239000000470 constituent Substances 0.000 description 29
- 238000009795 derivation Methods 0.000 description 28
- 238000005192 partition Methods 0.000 description 18
- 238000001914 filtration Methods 0.000 description 16
- 230000007704 transition Effects 0.000 description 14
- 230000014509 gene expression Effects 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 13
- 239000000203 mixture Substances 0.000 description 13
- 230000000694 effects Effects 0.000 description 12
- 230000005236 sound signal Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000009467 reduction Effects 0.000 description 6
- 101100537098 Mus musculus Alyref gene Proteins 0.000 description 5
- 101150095908 apex1 gene Proteins 0.000 description 5
- 230000002146 bilateral effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000003702 image correction Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 230000004907 flux Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 229910003460 diamond Inorganic materials 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 210000000887 face Anatomy 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101000713575 Homo sapiens Tubulin beta-3 chain Proteins 0.000 description 1
- 101000713585 Homo sapiens Tubulin beta-4A chain Proteins 0.000 description 1
- 102100036790 Tubulin beta-3 chain Human genes 0.000 description 1
- 102100036788 Tubulin beta-4A chain Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 210000003128 head Anatomy 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- NRNCYVBFPDDJNE-UHFFFAOYSA-N pemoline Chemical compound O1C(N)=NC(=O)C1C1=CC=CC=C1 NRNCYVBFPDDJNE-UHFFFAOYSA-N 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/1887—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
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)
- Error Detection And Correction (AREA)
Abstract
CODIFICADOR, DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTODO DE DECODIFICAÇÃO. A presente invenção refere-se a um codificador (100) que inclui um circuito e uma memória acoplada no circuito. O circuito, em operação, codifica, para cada um dos coeficientes incluídos em uma unidade estrutural transformada e quantizada de uma imagem, um valor absoluto do coeficiente em uma ordem predeterminada (S10), e codifica, para cada um dos coeficientes, um sinal que indica se o coeficiente é positivo ou negativo (S20). Na codificação, um sinal que indica paridade que é um bit menos significativo do valor absoluto é codificado, se utilizar um sinalizador na codificação de uma porção do valor absoluto outro que o bit menos significativo é determinado com base em uma primeira condição com base em uma magnitude do valor absoluto e uma segunda condição para limitar um número total de sinalizadores utilizados na unidade estrutural, e o sinalizador é codificado por CABAC que envolve atualizar uma probabilidade de ocorrência de símbolo quando é determinado que o sinalizador deve ser utilizado.
Description
Relatório Descritivo da Patente de Invenção para "CODIFICADOR, DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTODO DE DECODIFICAÇÃO".
[0001] A presente invenção refere-se à codificação de vídeo, e especificamente a sistemas, componentes, e métodos de codificação e decodificação de vídeo.
[0002] Com o avanço na tecnologia de codificação de vídeo, de H.261 e MPEG-1 para H.264/AVC (Codificação de Vídeo Avançada), MPEG-LA, H.265/HEVC (Codificação de Vídeo de Alta Eficiência) e H.266/VVC (Codec de Vídeo Versátil), permanece uma constante necessidade de prover aperfeiçoamentos e otimizações à tecnologia de codificação de vídeo para processar uma quantidade sempre crescente de dados de vídeo digital em várias aplicações.
[0003] Deve ser notado que a Literatura Não de Patente (NPL) 1 refere-se a um exemplo do padrão convencional relativo à técnica de codificação de vídeo acima descrita.
[0004] [NPL 1] H. 265 (ISO/IEC 23008-2 HEVC)/HEVC (High Efficiency Vídeo Coding)
[0005] Com relação ao método de codificação como acima descrito, propostas de novos métodos têm sido desejadas para o aperfeiçoamento em eficiência de codificação, aperfeiçoamento em qualidade de imagem, redução em quantidade de processamento, redução em escalas de circuito, seleção apropriada, etc. de um elemento tal como um filtro, um bloco, um tamanho, um vetor de movimento, uma imagem de referência, um bloco de referência, ou similares, ou uma operação.
[0006] A presente descrição provê, por exemplo, uma configuração ou um método o qual pode contribuir para pelo menos um de aperfeiçoamento em eficiência de codificação, aperfeiçoamento em qualidade de imagem, redução em quantidade de processamento, redução em escalas de circuito, aperfeiçoamento em uma velocidade de processamento, e seleção apropriada, etc. de um elemento ou uma operação. Deve ser notado que a presente descrição pode abranger possíveis configurações ou métodos os quais podem contribuir para vantagens outras que as vantagens acima.
[0007] Por exemplo, um codificador de acordo com um aspecto da presente descrição inclui um circuito; e uma memória acoplada no circuito. No codificador, o circuito, em operação, codifica, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em uma ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi transformada e quantizada, e codifica, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo, na codificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é codificado, se utilizar um sinalizador na codificação de uma porção do valor absoluto outra que o bit menos significativo é determinado com base em uma primeira condição e uma segunda condição, e o sinalizador é codificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo quando é determinado que o sinalizador deve ser utilizado, a primeira condição está baseada em uma magnitude do valor absoluto,
e a segunda condição é para limitar um número total de sinalizadores utilizados na unidade estrutural.
[0008] Algumas implementações de modalidades da presente descrição podem aperfeiçoar uma eficiência de codificação, pode simplesmente ser um processo de codificação/decodificação, pode acelerar uma velocidade de processo de codificação/decodificação, pode eficientemente selecionar componentes/operações apropriados utilizados em codificação e decodificação tal como um filtro, tamanho de bloco, vetor de movimento, imagem de referência, bloco de referência, etc.
[0009] Benefícios e vantagens adicionais de um aspecto da presente descrição ficarão aparentes da especificação e desenhos. Os benefícios e/ou vantagens podem ser individualmente obtidos pelas várias modalidades e características da especificação e desenhos, nem todos os quais precisam ser providos de modo a obter um ou mais de tais benefícios e/ou vantagens.
[0010] Deve ser notado que as modalidades gerais ou específicas podem ser implementadas como um sistema, um método, um circuito integrado, um programa de computador, um meio de armazenamento, ou qualquer sua combinação seletiva.
[0011] Uma configuração ou um método de acordo com um aspecto da presente descrição pode contribuir para, por exemplo, pelo menos um de aperfeiçoamento em eficiência de codificação, aperfeiçoamento em qualidade de imagem, redução em quantidade de processamento, redução em escalas de circuito, aperfeiçoamento em uma velocidade de processamento, e seleção apropriada, etc. de um elemento ou uma operação. Deve ser notado que a configuração ou o método de acordo com o aspecto pode contribuir vantagens outras que as vantagens acima.
[0012] Figura 1 é um diagrama de blocos que ilustra uma configuração funcional de um codificador de acordo com uma modalidade.
[0013] Figura 2 é um fluxograma que indica um exemplo de um processo de codificação geral executado pelo codificador.
[0014] Figura 3 é um diagrama conceitual que ilustra um exemplo de divisão de bloco.
[0015] Figura 4A é um diagrama conceitual que ilustra um exemplo de uma configuração de fatia.
[0016] Figura 4B é um diagrama conceitual que ilustra um exemplo de uma configuração de telas lado a lado.
[0017] Figura 5A é um gráfico que indica funções de base de transformada para vários tipos de transformada.
[0018] Figura 5B é um diagrama conceitual que ilustra transformadas que variam espacialmente (SVT) exemplares.
[0019] Figura 6A é um diagrama conceitual que ilustra um exemplo de uma forma de filtro utilizada em um filtro de loop adaptável (ALF).
[0020] Figura 6B é um diagrama conceitual que ilustra outro exemplo de uma forma de filtro utilizada em um ALF.
[0021] Figura 6C é um diagrama conceitual que ilustra outro exemplo de uma forma de filtro utilizada em um ALF.
[0022] Figura 7 é um diagrama de blocos que indica um exemplo de uma configuração específica de um filtro de loop o qual funciona como um filtro de desbloqueio (DBF).
[0023] Figura 8 é um diagrama conceitual que indica um exemplo de um filtro de desbloqueio que tem uma característica de filtragem simétrica com relação a um limite de bloco.
[0024] Figura 9 é um diagrama conceitual para ilustrar um limite de bloco sobre o qual um processo de filtro de desbloqueio é executado.
[0025] Figura 10 é um diagrama conceitual que indica exemplos de valores de Bs.
[0026] Figura 11 é um fluxograma que ilustra um exemplo de um processo executado por um processador de predição do codificador.
[0027] Figura 12 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador.
[0028] Figura 13 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador.
[0029] Figura 14 é um diagrama conceitual que ilustra sessenta e sete modos de intrapredição utilizados em intrapredição em uma modalidade.
[0030] Figura 15 é um fluxograma que ilustra um fluxo de processamento básico exemplar de interpredição.
[0031] Figura 16 é um fluxograma que ilustra um exemplo de derivação de vetores de movimento.
[0032] Figura 17 é um fluxograma que ilustra outro exemplo de derivação de vetores de movimento.
[0033] Figura 18 é um fluxograma que ilustra outro exemplo de derivação de vetores de movimento.
[0034] Figura 19 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal.
[0035] Figura 20 é um fluxograma que ilustra um exemplo de interpredição em modo de mesclagem.
[0036] Figura 21 é um diagrama conceitual para ilustrar um exemplo de um processo de derivação de vetor de movimento em modo de mesclagem.
[0037] Figura 22 é um fluxograma que ilustra um exemplo de processo de conversão ascendente de taxa de quadros (FRUC).
[0038] Figura 23 é um diagrama conceitual para ilustrar um exemplo de coincidência de padrões (coincidência bilateral) entre dois blocos ao longo de uma trajetória de movimento.
[0039] Figura 24 é um diagrama conceitual para ilustrar um exemplo de coincidência de padrões (coincidência de gabaritos) entre um gabarito em uma imagem corrente e um bloco em uma imagem de referência.
[0040] Figura 25A é um diagrama conceitual para ilustrar um exemplo de derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de uma pluralidade de blocos vizinhos.
[0041] Figura 25B é um diagrama conceitual para ilustrar um exemplo de derivar um vetor de movimento de cada sub-bloco em modo afim no qual três pontos de controle são utilizados.
[0042] Figura 26A é um diagrama conceitual para ilustrar um modo de mesclagem afim.
[0043] Figura 26B é um diagrama conceitual para ilustrar um modo de mesclagem afim no qual dois pontos de controle são utilizados.
[0044] Figura 26C é um diagrama conceitual para ilustrar um modo de mesclagem afim no qual três pontos de controle são utilizados.
[0045] Figura 27 é um fluxograma que ilustra um exemplo de um processo no modo de mesclagem afim.
[0046] Figura 28A é um diagrama conceitual para ilustrar um modo inter afim no qual dois pontos de controle são utilizados.
[0047] Figura 28B é um diagrama conceitual para ilustrar um modo inter afim no qual três pontos de controle são utilizados.
[0048] Figura 29 é um fluxograma que ilustra um exemplo de um processo no modo inter afim.
[0049] Figura 30A é um diagrama conceitual para ilustrar um modo inter afim no qual um bloco corrente tem três pontos de controle e um bloco vizinho tem dois pontos de controle.
[0050] Figura 30B é um diagrama conceitual para ilustrar um modo inter afim no qual um bloco corrente tem dois pontos de controle e um bloco vizinho tem três pontos de controle.
[0051] Figura 31A é um fluxograma que ilustra um processo de modo de mesclagem que inclui refinamento de vetor de movimento de decodificador (DMVR).
[0052] Figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo de DMVR.
[0053] Figura 32 é um fluxograma que ilustra um exemplo de geração de uma imagem de predição.
[0054] Figura 33 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[0055] Figura 34 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[0056] Figura 35 é um fluxograma que ilustra um exemplo de um processo de correção de imagem de predição executado por um processo de compensação de movimento de bloco sobreposto (OBMC).
[0057] Figura 36 é um diagrama conceitual para ilustrar um exemplo de um processo de correção de imagem de predição executado por um processo de OBMC.
[0058] Figura 37 é um diagrama conceitual para ilustrar geração de duas imagens de predição triangulares.
[0059] Figura 38 é um diagrama conceitual para ilustrar um modelo que assume movimento linear uniforme.
[0060] Figura 39 é um diagrama conceitual para ilustrar um exemplo de um método de geração de imagem de predição que utiliza um processo de correção de luminância executado por um processo de compensação de iluminação local (LIC).
[0061] Figura 40 é um diagrama de blocos que ilustra um exemplo de montagem do codificador.
[0062] Figura 41 é um diagrama de blocos que ilustra uma configuração funcional de um decodificador de acordo com uma modalidade.
[0063] Figura 42 é um fluxograma que ilustra um exemplo de um processo de decodificação geral executado pelo decodificador.
[0064] Figura 43 é um fluxograma que ilustra um exemplo de um processo executado por um processador de predição do decodificador.
[0065] Figura 44 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do decodificador.
[0066] Figura 45 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal no decodificador.
[0067] Figura 46 é um diagrama de blocos que ilustra um exemplo de montagem do decodificador.
[0068] Figura 47 é um diagrama para explicar um esboço de Quantização dependente (DQ).
[0069] Figura 48 é um diagrama que ilustra um exemplo de transição de estado de um quantizador.
[0070] Figura 49 é um diagrama que ilustra um exemplo da transição de estado do quantizador.
[0071] Figura 50 é um diagrama que ilustra um exemplo de binarização de um restante.
[0072] Figura 51 é um diagrama para explicar um método de terminar um parâmetro de Rice.
[0073] Figura 52 é um diagrama que ilustra um comprimento de código (isto é, o número de bits) de um sinal binário obtido por codificação de Golomb-Rice de um restante.
[0074] Figura 53 é um fluxograma que ilustra operações de processamento totais de um codificador de entropia de acordo com um primeiro exemplo de um primeiro aspecto.
[0075] Figura 54 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S110 ilustrada na Figura 53.
[0076] Figura 55 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S120 ilustrada na Figura 53.
[0077] Figura 56 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S130 ilustrada na Figura 53.
[0078] Figura 57 é um diagrama que ilustra a sintaxe relativa à codificação de entropia de acordo com um primeiro exemplo do primeiro aspecto.
[0079] Figura 58 é um diagrama que ilustra um exemplo específico de um sub-bloco que inclui 4×4 coeficientes.
[0080] Figura 59 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes incluídos no sub-bloco ilustrado na Figura 58, em um formato de sinalizador de acordo com o primeiro exemplo do primeiro aspecto.
[0081] Figura 60 é um fluxograma que ilustra operações de processamento totais de um codificador de entropia de acordo com um segundo exemplo do primeiro aspecto.
[0082] Figura 61 é um fluxograma que ilustra um exemplo de uma operação de processamento detalhada da Etapa S210 ilustrada na Figura 60.
[0083] Figura 62 é um fluxograma que ilustra um exemplo de uma operação de processamento detalhada da Etapa S220 ilustrada na Figura 60.
[0084] Figura 63 é um fluxograma que ilustra um exemplo de uma operação de processamento detalhada da Etapa S230 ilustrada na Figura 60.
[0085] Figura 64 é um diagrama que ilustra uma sintaxe relativa à codificação de entropia de acordo com o segundo exemplo do primeiro aspecto.
[0086] Figura 65 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes incluídos no sub-bloco ilustrado na Figura 58, em um formato de sinalizador de acordo com o segundo exemplo do primeiro aspecto.
[0087] Figura 66 é um fluxograma que ilustra operações de processamento totais de um codificador de entropia de acordo com o segundo aspecto.
[0088] Figura 67 é um fluxograma que ilustra um exemplo de uma operação de processamento detalhada da Etapa S330 ilustrada na Figura 66.
[0089] Figura 68 é um diagrama que ilustra uma sintaxe relativa à codificação de entropia de acordo com o segundo aspecto.
[0090] Figura 69 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes incluídos no sub-bloco ilustrado na Figura 58, no formato de sinalizador de acordo com o segundo aspecto.
[0091] Figura 70 é um fluxograma que ilustra operações de processamento totais de um codificador de entropia de acordo com um terceiro aspecto.
[0092] Figura 71 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S430 ilustrada na Figura 70.
[0093] Figura 72 é um fluxograma que ilustra operações de processamento executadas por um codificador de acordo com a Modalidade 2.
[0094] Figura 73 é um fluxograma que ilustra a codificação de um restante executada pelo codificador de acordo com a Modalidade 2.
[0095] Figura 74 é um fluxograma que ilustra operações de processamento executadas por um decodificador de acordo com a Modalidade 2.
[0096] Figura 75 é um fluxograma que ilustra decodificação de um restante executada pelo decodificador de acordo com a Modalidade 2.
[0097] Figura 76 é um diagrama de blocos que ilustra uma configuração geral de um sistema de provisão de conteúdo para implementar um serviço de distribuição de conteúdo.
[0098] Figura 77 é um diagrama conceitual que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0099] Figura 78 é um diagrama conceitual que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0100] Figura 79 é um diagrama conceitual que ilustra um exemplo de uma tela de display de uma webpage.
[0101] Figura 80 é um diagrama conceitual que ilustra um exemplo de uma tela de display de uma webpage.
[0102] Figura 81 é um diagrama de blocos que ilustra um exemplo de um smartphone.
[0103] Figura 82 é um diagrama de blocos que ilustra um exemplo de uma configuração de um smartphone.
[0104] Em vista do acima, um codificador de acordo com um aspecto da presente descrição inclui um circuito; e uma memória acoplada no circuito. No codificador, o circuito, em operação, codifica, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em uma ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi transformada e quantizada, e codifica, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo, na codificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é codificado, se utilizar um sinalizador na codificação de uma porção do valor absoluto outro que o bit menos significativo é determinado com base em uma primeira condição e uma segunda condição, e o sinalizador é codificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo quando é determinado que o sinalizador deve ser utilizado, a primeira condição está baseada em uma magnitude do valor absoluto, e a segunda condição é para limitar um número total de sinalizadores utilizados na unidade estrutural.
[0105] Neste modo, se ou não utilizar um sinalizador é determinado com base em não somente a primeira condição com base na magnitude de um valor absoluto de um coeficiente, mas também a segunda condição para limitar o número de sinalizadores, e assim é possível apropriadamente limitar o número de sinalizadores.
[0106] Quando um sinalizador deve ser utilizado, é possível reduzir uma quantidade de codificação de um valor absoluto de um coeficiente. Quando um sinalizador não deve ser utilizado, existe uma possibilidade de um aumento em uma quantidade de codificação de um valor absoluto de um coeficiente; isto é, uma possibilidade de um aumento em uma quantidade de codificação de um restante para indicar um valor absoluto de um coeficiente. Além disso, existem casos onda a CABAC na qual uma probabilidade de ocorrência de símbolo adaptável e variável é utilizada é aplicada na codificação de um sinalizador, e um processamento de desvio da CABAC na qual uma probabilidade de ocorrência de símbolo fixo é utilizada é aplicado na codificação de um restante. Aqui, na CABAC na qual a probabilidade de ocorrência de símbolo variável é utilizada, uma carga de processamento tende a ser mais alta do que o processamento de desvio. Consequentemente, com o codificador de acordo com um aspecto da presente descrição, o número de sinalizadores pode ser apropriadamente limitado, e assim é possível reduzir tanto uma quantidade de codificação de um seu valor absoluto quanto uma carga de processamento para codificar o valor absoluto.
[0107] Além disso, na codificação do valor absoluto, o circuito, cada vez que o sinalizador é codificado, pode contar um número total de sinalizadores codificados, e quando a segunda condição não é satisfeita, pode determinar que o sinalizador não deve ser utilizado na codificação da porção do valor absoluto outro que o bit menos significativo, mesmo quando a primeira condição é satisfeita, e a segunda condição pode ser que um número total de contagens que corresponde a um número total dos sinalizadores contados é menor do que um limite.
[0108] Neste modo, cada vez que um sinalizador é codificado, o número de sinalizadores codificados é contado. Consequentemente, é possível mais apropriadamente limitar o número de sinalizadores.
[0109] Além disso, a primeira condição pode ser uma de uma condição que o valor absoluto não é um primeiro valor e uma condição que o valor absoluto é maior do que ou igual a um segundo valor. Por exemplo, o primeiro valor pode ser 0, e o segundo valor pode ser 3.
[0110] Com isto, para um coeficiente cujo valor absoluto não é 0, por exemplo, é possível apropriadamente limitar o número de sinalizadores (por exemplo, o gt1_flag) que indica se o valor absoluto é maior do que ou igual a 3. Alternativamente, para um coeficiente cujo valor absoluto é maior do que ou igual a 3, por exemplo, é possível apropriadamente limitar o número de sinalizadores (por exemplo, o gt2_flag) que indica se ou não o valor absoluto é maior do que ou igual a 5.
[0111] Além disso, o sinalizador pode incluir sinalizadores de tipos mutuamente diferentes.
[0112] Com isto, por exemplo, é possível apropriadamente limitar o número de cada um de diferentes tipos de sinalizadores tais como os acima descritos gt1_flag e gt2_flag.
[0113] Além disso, o circuito, ainda na codificação do valor absoluto, quando o sinalizador não pode ser utilizado ou quando o valor absoluto não pode ser representado por somente pelo menos um sinalizador, pode derivar um restante que inclui um valor numérico para representar o valor absoluto, e pode codificar o restante derivado, por processamento de desvio da CABAC.
[0114] Neste modo, é possível apropriadamente codificar um valor absoluto de um coeficiente como um sinalizador ou como um grupo de dados que inclui pelo menos um sinalizador e um restante.
[0115] Além disso, o circuito: na derivação do restante, pode determinar um nível de base que indica um valor numérico o qual varia de acordo com se um número total de contagens atingiu um limite, o número total de contagens que corresponde a um número total dos sinalizadores codificados para coeficientes localizados antes de um coeficiente que corresponde ao restante dentre a pluralidade de coeficientes, e derivar o restante utilizando o nível de base determinado; e na codificação do restante, pode selecionar um método de binarização que corresponde ao restante dentre uma pluralidade de métodos de binarização diferentes uns dos outros, com base no nível de base utilizado na derivação do restante, binarizar o restante de acordo com o método de binarização selecionado, e executar codificação aritmética sobre o restante binarizado. Por exemplo, um nível de base determinado quando o número total de contagens atingiu o limite pode ser menor do que um nível de base determinado quando o número total de contagens é menor do que o limite.
[0116] Neste modo, é possível apropriadamente derivar, utilizando um nível de base, um restante que corresponde a um valor absoluto de um coeficiente. Além disso, como um método de binarização a ser utilizado em binarizar um restante é selecionado com base no nível de base, é possível apropriadamente reduzir a quantidade de codificação do restante.
[0117] Além disso, um decodificador de acordo com um aspecto da presente descrição inclui um circuito; e uma memória acoplada no circuito. No decodificador, o circuito, em operação, decodifica, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em uma ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi codificada, e decodifica, para cada um de uma pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo, na unidade estrutural, entre N coeficientes cada um tendo um valor absoluto o qual satisfaz uma condição predeterminada relativa a uma magnitude, um sinalizador é utilizado na codificação de um valor absoluto de cada um de M coeficientes, e o sinalizador não é utilizado na codificação de um valor absoluto de cada um de (N - M) coeficientes restantes, N sendo um inteiro maior do que ou igual a 2, M sendo um inteiro menor do que N, na decodificação o valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é decodificado, e quando o sinalizador é utilizado na codificação de uma porção do valor absoluto outro que o bit menos significativo, o sinalizador é decodificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo.
[0118] Com isto, mesmo quando o número de sinalizadores utilizados na codificação de uma unidade estrutural de uma imagem é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0119] Além disso, a condição predeterminada pode ser uma de uma condição que o valor absoluto do coeficiente não é um primeiro valor e uma condição que o valor absoluto do coeficiente é maior do que ou igual a um segundo valor. Por exemplo, o primeiro valor pode ser 0, e o segundo valor pode ser 3.
[0120] Com isto, para um coeficiente cujo valor absoluto não é 0, por exemplo, mesmo quando o número dos sinalizadores (por exemplo, o gt1_flag) que indica se o valor absoluto é maior do que ou igual a 3 é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem. Alternativamente, para um coeficiente cujo valor absoluto é maior do que ou igual a 3, por exemplo, mesmo quando o número dos sinalizadores (por exemplo, o gt2_flag) que indica se o valor absoluto é maior do que ou igual a 5 é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0121] Além disso, o sinalizador pode incluir sinalizadores de tipos mutuamente diferentes.
[0122] Com isto, por exemplo, mesmo quando o número de cada um dos diferentes tipos de sinalizadores tais como os acima descritos gt1_flag e gt2_flag é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0123] Além disso, o circuito, ainda na decodificação do valor absoluto, quando um restante que inclui um valor numérico para representar o valor absoluto foi codificado, pode decodificar o restante por um processamento de desvio da CABAC
[0124] Neste modo, mesmo quando um valor absoluto de um coeficiente é codificado como um sinalizador ou um grupo de dados que inclui pelo menos um sinalizador e um restante, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0125] Além disso, na decodificação do restante, o circuito pode determinar um nível de base que indica um valor numérico o qual varia de acordo com se um número total de contagens atingiu um limite, o número total de contagens que corresponde a um número total dos sinalizadores decodificados para coeficientes localizados antes de um coeficiente que corresponde ao restante entre a pluralidade dos coeficientes, executar decodificação aritmética sobre o restante em um sinal binário, selecionar um método de debinarização que corresponde ao sinal binário dentre uma pluralidade de métodos de debinarização diferentes uns dos outros, com base no nível de base determinado, e debinarizar o sinal binário de acordo com o método de debinarização selecionado. Por exemplo, a nível de base determinado quando o número total de contagens atingiu o limite é menor do que um nível de base determinado quando o número total de contagens pode ser menor do que o limite.
[0126] Neste modo, como um método de debinarização a ser utilizado na debinarização de um sinal binário é selecionado com base em um nível de base, é possível apropriadamente decodificar o restante.
[0127] Alternativamente, por exemplo, um codificador de acordo com um aspecto da presente descrição inclui um divisor, um intrapreditor, um interpreditor, um filtro de loop, um transformador, um quantizador, e um codificador de entropia.
[0128] O divisor divide uma imagem incluída em uma imagem em uma pluralidade de blocos. O intrapreditor prediz um bloco incluído na imagem, utilizando a imagem. O interpreditor prediz o bloco, utilizando uma imagem de referência diferente da imagem. O filtro de loop aplica um filtro em uma imagem reconstruída de uma imagem de predição gerada como um resultado de predição pelo intrapreditor ou o interpreditor.
[0129] O transformador transforma um erro de predição entre a imagem de predição e o bloco, para gerar um coeficiente de transformada do bloco. O quantizador quantiza o coeficiente de transformada. O codificador de entropia codifica o coeficiente de transformada o qual foi quantizado.
[0130] Além disso, por exemplo, o codificador de entropia codifica, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em uma ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi transformada e quantizada, e codifica, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo, na codificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é codificado, se utilizar um sinalizador na codificação de uma porção do valor absoluto outro que o bit menos significativo é determinado com base em uma primeira condição e uma segunda condição, e o sinalizador é codificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo quando é determinado que o sinalizador deve ser utilizado, a primeira condição está baseada em uma magnitude do valor absoluto, e a segunda condição é para limitar um número total de sinalizadores utilizados na unidade estrutural.
[0131] Alternativamente, por exemplo, o decodificador de acordo com um aspecto da presente descrição inclui um decodificador de entropia, um quantizador inverso, um transformador inverso, um intrapreditor, um interpreditor, e um filtro de loop.
[0132] O decodificador de entropia decodifica um coeficiente de transformada quantizado de um bloco incluído em uma imagem incluída em uma imagem codificada. O quantizador inverso executa quantização inversa sobre o coeficiente de transformada quantizado. O transformador inverso executa transformação inversa sobre o coeficiente de transformada, para obter um erro de predição do bloco.
[0133] O intrapreditor prediz o bloco, utilizando a imagem. O interpreditor prediz o bloco, utilizando uma imagem de referência diferente da imagem. O filtro de loop aplica um filtro a uma imagem reconstruída de uma imagem de predição gerada como um resultado de predição pelo intrapreditor ou o interpreditor.
[0134] Além disso, por exemplo, o decodificador de entropia decodifica, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em uma ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi codificada, e decodifica, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo, na unidade estrutural, entre N coeficientes cada um tendo um valor absoluto o qual satisfaz uma condição predeterminada relativa a uma magnitude, um sinalizador é utilizado na codificação de um valor absoluto de cada um de M coeficientes, e o sinalizador não é utilizado na codificação de um valor absoluto de cada um de (N - M) coeficientes restantes, N sendo um inteiro maior do que ou igual a 2, M sendo um inteiro menor do que N, na decodificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é decodificado, e quando o sinalizador é utilizado em codificação de uma porção do valor absoluto outro que o bit menos significativo, o sinalizador é decodificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo.
[0135] Mais ainda, estes aspectos gerais e específicos podem ser implementados utilizando um sistema, um aparelho, um método, um circuito integrado, um programa de computador, ou um meio de gravação legível por computador não transitório tal como uma memória somente de leitura de disco compacto (CD-ROM), ou qualquer combinação de sistemas, aparelhos, métodos, circuito integrados, programas de computador, ou meios de gravação.
[0136] Daqui em diante, as modalidades serão descritas com referência aos desenhos. Note que as modalidades abaixo descritas cada uma mostra um exemplo geral ou específico. Os valores numéricos, formas, materiais, componentes, a disposição e conexão dos componentes, etapas, a relação e ordem das etapas, etc., indicados nas modalidades seguintes são meramente exemplos, e não pretendem limitar o escopo das reivindicações.
[0137] As modalidades de um codificador e um decodificador serão abaixo descritas. As modalidades são exemplos de um codificador e um decodificador aos quais os processos e/ou configurações apresentados na descrição de aspectos da presente descrição são aplicáveis. Os processos e/ou configurações podem também ser implementados em um codificador e um decodificador diferente daqueles de acordo com as modalidades. Por exemplo, referindo aos processos e/ou configurações como aplicados nas modalidades, qualquer um dos seguintes pode ser implementado:
[0138] (1) Qualquer um dos componentes do codificador ou do decodificador de acordo com as modalidades apresentadas na descrição de aspectos da presente descrição pode ser substituído ou combinado com outro componente apresentado em qualquer lugar na descrição de aspectos da presente descrição.
[0139] (2) No codificador ou no decodificador de acordo com as modalidades, mudanças discricionárias podem ser feitas a funções ou processos executados por um ou mais componentes do codificador ou do decodificador, tal como adição, substituição, remoção, etc., das funções ou processos. Por exemplo, qualquer função ou processo pode ser substituído ou combinado com outra função ou processo apresentado em qualquer lugar na descrição de aspectos da presente descrição.
[0140] (3) Nos métodos implementados pelo codificador ou o decodificador de acordo com as modalidades, mudanças discricionárias podem ser feitas tais como adição, substituição e remoção de um ou mais dos processos incluídos no método. Por exemplo, qualquer processo no método pode ser substituído ou combinado com outro processo apresentado em qualquer lugar na descrição de aspectos da presente descrição.
[0141] (4) Um ou mais componentes incluídos no codificador ou no decodificador de acordo com as modalidades podem ser combinados com um componente apresentado em qualquer lugar na descrição de aspectos de da presente descrição, podem ser combinados com um componente que inclui uma ou mais funções apresentadas em qualquer lugar na descrição de aspectos da presente descrição, e podem ser combinados com um componente que implementa um ou mais processos implementados por um componente apresentado na descrição de aspectos da presente descrição.
[0142] (5) Um componente que inclui uma ou mais funções do codificador ou do decodificador de acordo com as modalidades, ou um componente que implementa um ou mais processos do codificador ou do decodificador de acordo com as modalidades, pode ser combinado ou substituído por um componente apresentado em qualquer lugar na descrição de aspectos da presente descrição, por um componente que inclui uma ou mais funções apresentadas em qualquer lugar na descrição de aspectos da presente descrição, ou por um componente que implementa ou mais processos apresentados em qualquer lugar na descrição de aspectos da presente descrição.
[0143] (6) Nos métodos implementados pelo codificador ou o decodificador de acordo com as modalidades, qualquer um dos processos incluídos no método pode ser substituído ou combinado por um processo apresentado em qualquer parte da descrição de aspectos da presente descrição ou por qualquer processo correspondente ou equivalente.
[0144] (7) Um ou mais processos incluídos em métodos implementados pelo codificador ou o decodificador de acordo com como as modalidades podem ser combinados com um processo apresentado em qualquer lugar na descrição de aspectos da presente descrição.
[0145] (8) A implementação dos processos e/ou configurações apresentados na descrição de aspectos da presente descrição não está limitada ao codificador ou o decodificador de acordo com as modalidades. Por exemplo, os processos e/ou configurações podem ser implementados em um dispositivo utilizado para um proposito diferente do codificador de imagem móvel ou do decodificador de imagem móvel descritos nas modalidades. Codificador
[0146] Primeiro, um codificador de acordo com uma modalidade será descrito. A Figura 1 é um diagrama de blocos que ilustra uma configuração funcional do codificador 100 de acordo com a modalidade. O codificador 100 é um codificador de vídeo o qual codifica um vídeo em unidades de um bloco.
[0147] Como ilustrado na Figura 1, o codificador 100 é um aparelho o qual codifica uma imagem em unidades de um bloco, e inclui um divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, memória de blocos 118, filtro de loop 120, memória de quadros 122, intrapreditor 124, interpreditor 126, e controlador de predição 128.
[0148] O codificador 100 está implementado como, por exemplo, um processador e memória genéricos. Neste caso, quando um programa de software armazenado na memória é executado pelo processador, o processador funciona como o divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de loop 120, intrapreditor 124, interpreditor 126, e controlador de predição 128. Alternativamente, o codificador 100 pode ser implementado como um ou mais circuitos eletrônicos dedicados que correspondem ao divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de loop 120, intrapreditor 124, interpreditor 126, e controlador de predição 128.
[0149] Daqui em diante, um fluxo geral de processos executados pelo codificador 100 está descrito, e então cada um dos elementos constituintes incluídos no codificador 100 será descrito. Fluxo Geral de Processo de Codificação
[0150] A Figura 2 é um fluxograma que indica um exemplo de um processo de codificação geral executado pelo codificador 100.
[0151] Primeiro, o divisor 102 do codificador 100 divide cada uma das imagens incluídas em uma imagem de entrada a qual é um vídeo em uma pluralidade de blocos que tem um tamanho fixo (por exemplo, 128×128 pixels) (Etapa Sa_1). O divisor 102 então seleciona um padrão de divisão para o bloco de tamanho fixo (também referido como uma forma de bloco) (Etapa Sa_2). Em outras palavras, o divisor 102 ainda divide o bloco de tamanho fixo em uma pluralidade de blocos os quais formam o padrão de divisão selecionado. O codificador 100 executa, para cada um da pluralidade de blocos, Etapas Sa_3 a Sa_9 para o bloco (que é um bloco corrente a ser codificado).
[0152] Em outras palavras, um processador de predição o qual inclui todo ou parte de intrapreditor 124, interpreditor 126, e controlador de predição 128 gera um sinal de predição (também referido como um bloco de predição) do bloco corrente a ser codificado (também referido como um bloco corrente) (Etapa Sa_3).
[0153] A seguir, o subtrator 104 gera uma diferença entre o bloco corrente e um bloco de predição como um resíduo de predição (também referido como um bloco de diferença) (Etapa Sa_4).
[0154] A seguir, o transformador 106 transforma o bloco de diferença e o quantizador 108 quantiza o resultado, para gerar uma pluralidade de coeficientes quantizados (Etapa Sa_5). Deve ser notado que o bloco que tem a pluralidade de coeficientes quantizados é também referido como um bloco de coeficiente.
[0155] A seguir, o codificador de entropia 110 codifica (especificamente, codifica em entropia) o bloco de coeficiente e um parâmetro de predição relativo à geração de um sinal de predição para gerar um sinal codificado (Etapa Sa_6). Deve ser notado que o sinal codificado é também referido como um fluxo de bits codificado, um fluxo de bits comprimido, ou um fluxo.
[0156] A seguir, o quantizador inverso 112 executa quantização inversa do bloco de coeficiente e o transformador inverso 114 executa uma transformada inversa do resultado, para restaurar uma pluralidade de resíduos de predição (isto é, um bloco de diferença) (Etapa Sa_7).
[0157] A seguir, o somador 116 adiciona o bloco de predição no bloco de diferença restaurado para reconstruir o bloco corrente como uma imagem reconstruída (também referida como um bloco reconstruído ou um bloco de imagem decodificado) (Etapa Sa_8). Neste modo, a imagem reconstruída é gerada.
[0158] Quando a imagem reconstruída é gerada, o filtro de loop 120 executa filtragem na imagem reconstruída conforme necessário (Etapa Sa_9).
[0159] O codificador 100 então determina se a codificação da imagem inteira terminou (Etapa Sa_10). Quando determinando que a codificação ainda não foi terminada (Não na Etapa Sa_10), os processos da Etapa Sa_2 são executados repetidamente.
[0160] Apesar do codificador 100 selecionar um padrão de divisão para um bloco de tamanho fixo, e codificar cada bloco de acordo com o padrão de divisão no exemplo acima descrito, deve ser notado que cada bloco pode ser codificado de acordo com um correspondente de uma pluralidade de padrões de divisão. Neste caso, o codificador 100 pode avaliar um custo para cada um de uma pluralidade de padrões de divisão, e, por exemplo, pode selecionar o sinal codificado obtenível pela codificação de acordo com o padrão de divisão o qual gera o menor custo como um sinal codificado o qual é emitido.
[0161] Como ilustrado, os processos nas Etapas Sa_1 a Sa_10 são executados sequencialmente pelo codificador 100. Alternativamente, dois ou mais dos processos podem ser executados em paralelo, os processos podem ser reordenados, etc. Divisor
[0162] O divisor 102 divide cada uma das imagens incluídas em um vídeo de entrada em uma pluralidade de blocos, e emite cada bloco para o subtrator 104. Por exemplo, o divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128×128). Outros tamanhos de bloco fixos podem ser usados. O bloco de tamanho fixo é também referido como uma unidade de árvore de codificação (CTU). O divisor 102 então divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64×64 ou menores), com base em divisão de bloco de quadtree e/ou árvore binária. Em outras palavras, o divisor 102 seleciona um padrão de divisão. O bloco de tamanho variável é também referido como uma unidade de codificação (CU), uma unidade de predição (PU), ou uma unidade de transformada (TU). Deve ser notado que, em vários tipos de exemplos de processamento, não há necessidade de diferenciar entre CU, PU, e TU; todos ou alguns dos blocos em uma imagem podem ser processados em unidades de uma CU, uma PU, ou uma TU.
[0163] A Figura 3 é um diagrama conceitual que ilustra um exemplo de divisão de bloco de acordo com uma modalidade. Na Figura 3, as linhas cheias representam limites de bloco de blocos divididos por divisão de bloco de quadtree, e as linhas tracejadas representam limites de bloco de blocos divididos por divisão de bloco de árvore binária.
[0164] Aqui, o bloco 10 é um bloco quadrado que tem 128×128 pixels (bloco de 128×128). Este bloco de 128×128 10 é primeiro dividido em quatro bloco de 64×64 quadrados (divisão de bloco de quadtree).
[0165] O bloco de 64×64 superior esquerdo é ainda verticalmente dividido em dois blocos de 32×64 retangulares, e o bloco de 32×64 esquerdo é ainda verticalmente dividido em dois blocos de 16×64 retangulares (divisão de bloco de árvore binária). Como um resultado, o bloco de 64×64 superior esquerdo é dividido em dois blocos de 16×64 11 e 12 e um bloco de 32×64 13.
[0166] O bloco de 64×64 superior direito é horizontalmente dividido em dois blocos de 64×32 retangulares 14 e 15 (divisão de bloco de árvore binária).
[0167] O bloco de 64×64 inferior esquerdo é primeiro dividido em quatro blocos de 32×32 quadrados (divisão de bloco de quadtree). O bloco superior esquerdo e o bloco inferior direito entre os quatro blocos de 32×32 são ainda divididos. O bloco de 32×32 superior esquerdo é verticalmente dividido em dois blocos de 16×32 retangulares, e o bloco de 16×32 direito é ainda horizontalmente dividido em dois blocos de 16×16 (divisão de bloco de árvore binária). O bloco de 32×32 inferior direito é horizontalmente dividido em dois blocos de 32×16 (divisão de bloco de árvore binária). Como um resultado, o bloco de 64×64 inferior esquerdo é dividido no bloco de 16×32 16, dois blocos de 16×16 17 e 18, dois blocos de 32×32 19 e 20, e dois blocos de 32×16 21 e 22.
[0168] O bloco de 64×64 inferior direito 23 não é dividido.
[0169] Como acima descrito, na Figura 3, bloco 10 é dividido em treze blocos de tamanhos variáveis 11 até 23 com base em divisão de bloco de quadtree e árvore binária recursiva. Este tipo de divisão é também referido como divisão de quadtree mais árvore binária (QTBT).
[0170] Deve ser notado que, na Figura 3, um bloco é dividido em quatro ou dois blocos (divisão de bloco de quadtree ou árvore binária), mas a divisão não está limitada a estes exemplos. Por exemplo, um bloco pode ser dividido em três blocos (divisão de bloco ternária). A divisão que inclui tal divisão de bloco ternária é também referida como divisão de árvore de múltiplos tipos (MBT). Estrutura de Imagem: Fatia/Telas Lado a Lado
[0171] Uma imagem pode ser configurada em unidades de uma ou mais fatias ou telas lado a lado de modo a decodificar a imagem em paralelo. A imagem configurada em unidades de uma ou mais fatias ou telas lado a lado pode ser configurada pelo divisor 102.
[0172] As fatias são unidades de codificação básicas incluídas em uma imagem. Uma imagem pode incluir, por exemplo, uma ou mais fatias. Além disso, uma fatia inclui uma ou mais unidades de árvore de codificação (CTU) sucessivas.
[0173] A Figura 4A é um diagrama conceitual que ilustra um exemplo de uma configuração de fatia. Por exemplo, uma imagem inclui 11×8 CTUs e é dividida em quatro fatias (fatias 1 a 4). A fatia 1 inclui dezesseis CTUs, a fatia 2 inclui vinte e uma CTUs, a fatia 3 inclui vinte e nove CTUs, e a fatia 4 inclui vinte e duas CTUs. Aqui, cada CTU na imagem pertence a uma das fatias. A forma de cada fatia é uma forma obtenível dividindo a imagem horizontalmente. Um limite de cada fatia não precisa coincidir com um final de imagem, e pode coincidir com qualquer dos limites entre as CTUs na imagem. A ordem de processamento das CTUs em uma fatia (uma ordem de codificação ou uma ordem de decodificação) é, por exemplo, uma ordem de escaneamento de varredura. Uma fatia inclui informações de cabeçalho e dados codificados. As características da fatia podem ser descritas nas informações de cabeçalho. As características incluem um endereço de CTU de uma CTU superior na fatia, um tipo de fatia, etc.
[0174] Uma tela lado a lado é uma unidade de uma região retangular incluída em uma imagem. Cada uma das telas lado a lado pode ser designada com um número referido como TileId em ordem de escaneamento de varredura.
[0175] A Figura 4B é um diagrama conceitual que indica um exemplo de uma configuração de telas lado a lado. Por exemplo, uma imagem inclui 11×8 CTUs e é dividida em quatro telas lado a lado de regiões retangulares (telas lado a lado 1 a 4). Quando telas lado a lado são utilizadas, a ordem de processamento de CTUs é mudada da ordem de processamento no caso onde nenhuma tela lado a lado é utilizada. Quando nenhuma tela lado a lado é utilizada, as CTUs em uma imagem são processadas em ordem de escaneamento de varredura. Quando telas lado a lado são utilizadas, pelo menos uma CTU em cada uma das telas lado a lado é processada em ordem de escaneamento de varredura. Por exemplo, como ilustrado na Figura 4B, a ordem de processamento das CTUs incluídas na tela lado a lado 1 é a ordem a qual começa da extremidade esquerda da primeira linha da tela lado a lado 1 na direção da extremidade direita da primeira linha da tela lado a lado 1 e então começa da extremidade esquerda da segunda linha da tela lado a lado 1 na direção da extremidade direita da segunda linha da tela lado a lado 1.
[0176] Deve ser notado que uma tela lado a lado pode incluir uma ou mais fatias, e uma fatia pode incluir uma ou mais telas lado a lado. Subtrator
[0177] O subtrator 104 subtrai um sinal de predição (amostra de predição que é inserida no controlador de predição 128 abaixo indicado) de um sinal original (amostra original) em unidades de um bloco inserido do divisor 102 e dividido pelo divisor 102. Em outras palavras, o subtrator 104 calcula erros de predição (também referidos como resíduos) de um bloco a ser codificado (daqui em diante também referido como um bloco corrente). O subtrator 104 então emite os erros de predição calculados (resíduos) para o transformador 106.
[0178] O sinal original é um sinal o qual foi inserido no codificador 100 e representa uma imagem de cada imagem incluída num vídeo (por exemplo, um sinal de luma e dois sinais de croma). Daqui em diante, um sinal que representa uma imagem é também referido como uma amostra. Transformador
[0179] O transformador 106 transforma os erros de predição em domínio espacial em coeficientes de transformada em domínio de frequência, e emite os coeficientes de transformada para o quantizador
108. Mais especificamente, o transformador 106 aplica, por exemplo, uma transformada de cosseno discreta definida (DCT) ou transformada de seno discreta (DST) a erros de predição no domínio espacial. A DCT ou DST definida pode ser pré-definida.
[0180] Deve ser notado que o transformador 106 pode adaptavelmente selecionar um tipo de transformada dentre uma pluralidade de tipos de transformada, e erros de predição de transformada em coeficientes de transformada utilizando uma função básica de transformada que corresponde ao tipo de transformada selecionado. Este tipo de transformada é também referido como transformada de núcleo múltiplo explícita (EMT) ou transformada múltipla adaptável (AMT).
[0181] Os tipos de transformada incluem, por exemplo, DCT-II, DCT-V, DCT-VIII, DST-I, e DST-VII. A Figura 5A é um gráfico que indica as funções de base de transformada para os tipos de transformada exemplares. Na Figura 5A, N indica o número de pixels de entrada. Por exemplo, a seleção de um tipo de transformada dentre a pluralidade de tipos de transformada pode depender de um tipo de predição (um de intrapredição e interpredição), e pode depender de um modo de intrapredição.
[0182] As informações que indicam se aplicar tal EMT ou AMT
(referidas como, por exemplo, um sinalizador de EMT ou um sinalizador de AMT) e informações que indicam o tipo de transformada selecionada são normalmente sinalizadas no nível de CU. Deve ser notado que a sinalização de tais informações não necessariamente precisam ser executadas no nível CU, e podem ser executadas em outro nível (por exemplo, no nível de sequência de bits, nível de imagem, nível de fatia, nível de telas lado a lado, ou nível de CTU).
[0183] Além disso, o transformador 106 pode retransformar os coeficientes de transformada (resultado de transformada). Tal retransformada é também referida como transformada secundária adaptável (AST) ou transformada secundária não separável (NSST). Por exemplo, o transformador 106 executa retransformada em unidades de um sub-bloco (por exemplo, sub-bloco de 4×4) incluído em um bloco de coeficiente de transformada que corresponde a um erro de intrapredição. As informações que indicam se aplicar NSST e as informações relativas a uma matriz de transformada para utilização em NSST são normalmente sinalizadas no nível de CU. Deve ser notado que a sinalização de tais informações não necessariamente precisa ser executada no nível CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de tela lado a lado, ou nível CTU).
[0184] O transformador 106 pode usar uma transformada separável e uma transformada não separável. Uma transformada separável é um método no qual uma transformada é executada uma pluralidade de vezes, separadamente executando uma transformada para cada um de um número de direções de acordo com o número de dimensões de entradas. Uma transformada não separável é um método de executar uma transformada coletiva na qual duas ou mais dimensões em entradas multidimensionais são coletivamente consideradas como uma única dimensão.
[0185] Em um exemplo de uma transformada não separável, quando uma entrada é um bloco de 4×4, o bloco de 4×4 é considerado como uma única rede que inclui dezesseis elementos, e a transformada aplica uma matriz de transformada de 16×16 na rede.
[0186] Em outro exemplo de uma transformada não separável, um bloco de entrada de 4×4 é considerado como uma única rede que inclui dezesseis elementos, e então uma transformada (transformada de hypercube givens) na qual uma revolução de givens é executada sobre a rede uma pluralidade de vezes pode ser executada.
[0187] Na transformada no transformador 106, os tipos de bases a serem transformados no domínio de frequência de acordo com regiões em uma CU podem ser trocados. Exemplos incluem transformadas espacialmente variáveis (SVT). Um SVT, como ilustrado na Figura 5B, as CUs são divididas em duas regiões iguais horizontalmente ou verticalmente, e somente uma das regiões é transformada no domínio de frequência. Um tipo de base de transformada pode ser ajustado para cada região. Por exemplo, DST7 e DST8 são utilizadas. Neste exemplo, somente uma destas duas regiões da CU é transformada, e a outra não é transformada. No entanto, ambas destas duas regiões podem ser transformadas. Além disso, o método de divisão não está limitado à divisão em duas regiões iguais, e pode ser mais flexível. Por exemplo, a CU pode ser dividida em quatro regiões iguais, ou as informações que indicam a divisão podem ser codificadas separadamente e ser sinalizadas no mesmo modo que a divisão de CU. Deve ser notado que a SVT é também referida como transformada sub-bloco (SBT). Quantizador
[0188] O quantizador 108 quantiza os coeficientes de transformada emitidos do transformador 106. Mais especificamente, o quantizador 108 escaneia, em ordem de escaneamento determinada, os coeficientes de transformada do bloco corrente, e quantiza os coeficientes de transformada escaneados com base em parâmetros de quantização (QP) que correspondem aos coeficientes de transformada. O quantizador 108 então emite os coeficientes de transformada quantizados (daqui em diante também referidos como coeficientes quantizados) do bloco corrente para o codificador de entropia 110 e quantizador inverso 112. A ordem de escaneamento determinada pode ser predeterminada.
[0189] Uma ordem de escaneamento determinada é uma ordem para quantizar/quantizar inverso coeficientes de transformada. Por exemplo, uma ordem de escaneamento determinada pode ser definida como uma ascendente de frequência (de baixa para alta frequência) ou ordem descendente de frequência (de alta para baixa frequência).
[0190] Um parâmetro de quantização (QP) é um parâmetro que define uma etapa de quantização (largura de quantização). Por exemplo, quando o valor do parâmetro de quantização aumenta, a etapa de quantização também aumenta. Em outras palavras, quando o valor do parâmetro de quantização aumenta, o erro de quantização aumenta.
[0191] Além disso, uma matriz de quantização pode ser utilizada para quantização. Por exemplo, diversos tipos de matrizes de quantização podem ser utilizados correspondentemente a tamanhos de transformada de frequência, tal como 4×4 e 8×8, modos de predição, tal como intrapredição e interpredição, e componentes de pixel, tal como componentes de pixel de luma e croma. Deve ser notado que quantização significa digitalizar valores amostrados em intervalos determinados correspondentemente a níveis determinados. Neste campo técnico, a quantização pode ser referida a utilizar outras expressões, tais como arredondamento e escalagem, e pode usar arredondamento e escalagem. Os intervalos e níveis determinados podem ser predeterminados.
[0192] Os métodos que utilizam matrizes de quantização incluem um método que utiliza uma matriz de quantização a qual foi ajustada diretamente no lado de codificador e um método que utiliza uma matriz de quantização a qual foi ajustada como um padrão (matriz padrão). No lado de codificador, uma matriz de quantização adequada para características de uma imagem pode ser ajustada diretamente ajustando uma matriz de quantização. Este caso, no entanto, tem uma desvantagem de aumentar uma quantidade de codificação para codificar a matriz de quantização.
[0193] Existe um método para quantizar um coeficiente de alta frequência e um coeficiente de baixa frequência sem utilizar uma matriz de quantização. Deve ser notado que este método é equivalente a um método que utiliza uma matriz de quantização (matriz plana) cujos coeficientes têm o mesmo valor.
[0194] A matriz de quantização pode ser especificada utilizando, por exemplo, um conjunto de parâmetros de sequência (SPS) ou um conjunto de parâmetros de imagem (PPS). O SPS inclui um parâmetro o qual é utilizado para uma sequência, e o PPS inclui um parâmetro o qual é utilizado para uma imagem. Cada um do SPS e do PPS pode ser simplesmente referido como um conjunto de parâmetros. Codificador de Entropia
[0195] O codificador de entropia 110 gera um sinal codificado (fluxo de bits codificado) com base em coeficientes quantizados os quais foram inseridos do quantizador 108. Mais especificamente, o codificador de entropia 110, por exemplo, binariza coeficientes quantizados, e aritmeticamente codifica o sinal binário, e emite um fluxo ou sequência de bits comprimido. Quantizador Inverso
[0196] O quantizador inverso 112 quantiza inverso coeficientes quantizados os quais foram inseridos do quantizador 108. Mais especificamente, o quantizador inverso 112 quantiza inverso, em uma ordem de escaneamento determinada, coeficientes quantizados do bloco corrente. O quantizador inverso 112 então emite os coeficientes de transformada quantizados inversos do bloco corrente para o transformador inverso 114. A ordem de escaneamento determinada pode ser predeterminada. Transformador Inverso
[0197] O transformador inverso 114 restaura erros de predição (resíduos) transformando inverso os coeficientes de transformada os quais foram inseridos do quantizador inverso 112. Mais especificamente, o transformador inverso 114 restaura os erros de predição do bloco corrente aplicando uma transformada inversa que corresponde à transforma aplicada pelo transformador 106 nos coeficientes de transformada. O transformador inverso 114 então emite os erros de predição restaurados para o somador 116.
[0198] Deve ser notado que como informações são perdidas na quantização, os erros de predição restaurados não coincidem com os erros de predição calculados pelo subtrator 104. Em outras palavras, os erros de predição restaurados normalmente incluem erros de quantização. Somador
[0199] O somador 116 reconstrói o bloco corrente adicionando erros de predição os quais foram inseridos do transformador inverso 114 e amostras de predição as quais foram inseridas do controlador de predição 128. O somador 116 então emite o bloco reconstruído para a memória de blocos 118 e o filtro de loop 120. Um bloco reconstruído é também referido como um bloco decodificado local. Memória de Blocos
[0200] A memória de blocos 118 é, por exemplo, um armazenamento para armazenar blocos em uma imagem a ser codificada (daqui em diante referida como uma imagem corrente) a qual é referida em intrapredição. Mais especificamente, a memória de blocos 118 armazena os blocos reconstruídos emitidos do somador 116. Memória de Quadros
[0201] A memória de quadros 122 é, por exemplo, um armazenamento para armazenar imagens de referência para utilização em interpredição, e é também referida como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 122 armazena blocos reconstruídos filtrados pelo filtro de loop 120. Filtro de Loop
[0202] O filtro de loop 120 aplica um filtro de loop nos blocos reconstruídos pelo somador 116, e emite os blocos reconstruídos filtrados para a memória de quadros 122. Um filtro de loop é um filtro utilizado em um loop de codificação (filtro in-loop), e inclui, por exemplo, um filtro de desbloqueio (DF ou DBF), um deslocamento adaptável de amostra (SAO), e um filtro de loop adaptável (ALF).
[0203] Em um ALF, um filtro de menor erro quadrado para remover artefatos de compressão é aplicado. Por exemplo, um filtro selecionado dentre uma pluralidade de filtros com base na direção e atividade de gradientes locais é aplicado para cada um dos sub-blocos de 2×2 no bloco corrente.
[0204] Mais especificamente, primeiro, cada sub-bloco (por exemplo, cada sub-bloco de 2×2) é categorizado em um dentre uma pluralidade de classes (por exemplo, quinze ou vinte e cinco classes). A classificação do sub-bloco está baseada em direcionalidade e atividade de gradiente. Por exemplo, o índice de classificação C (por exemplo, C = 5D + A) é derivado com base na direcionalidade de gradiente D (por exemplo, 0 a 2 ou 0 a 4) e atividade de gradiente A (por exemplo, 0 a 4). Então, com base no índice de classificação C, cada sub-bloco é categorizado em um dentre uma pluralidade de classes.
[0205] Por exemplo, a direcionalidade de gradiente D é calculada comparando os gradientes de uma pluralidade de direções (por exemplo, as direções horizontal, vertical e duas diagonais). Mais ainda, por exemplo, a atividade de gradiente A é calculada somando gradientes de uma pluralidade de direções e quantizando o resultado da adição.
[0206] O filtro a ser utilizado para cada sub-bloco é determinado dentre uma pluralidade de filtros com base no resultado de tal categorização.
[0207] A forma de filtro a ser utilizada em um ALF é, por exemplo, uma forma de filtro simétrica circular. A Figura 6A até Figura 6C ilustram exemplos de formas de filtro utilizadas em ALFs. A Figura 6A ilustra um filtro em forma de diamante de 5×5, a Figura 6B ilustra um filtro em forma de diamante de 7×7, e a Figura 6C ilustra um filtro em forma de diamante de 9×9. As informações que indicam a forma de filtro são normalmente sinalizadas no nível de imagem. Deve ser notado que a sinalização de tais informações que indicam a forma de filtro não necessariamente precisa ser executada no nível de imagem, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de CU).
[0208] O ON ou OFF do ALF é determinado, por exemplo, no nível de imagem ou nível de CU. Por exemplo, a decisão de se aplicar o ALF à luma pode ser tomada no nível da CU, e a decisão de se aplicar o ALF à croma pode ser tomada no nível da imagem. As informações que indicam ON ou OFF do ALF são normalmente sinalizadas no nível de imagem ou nível de CU. Deve ser notado que a sinalização de informações que indicam ON ou OFF do ALF não necessariamente precisam ser executadas no nível de imagem ou nível de CU, ou podem ser executadas em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, ou nível de CTU).
[0209] O coeficiente ajustado para a pluralidade de filtros selecionáveis (por exemplo, quinze ou até vinte e cinco filtros) é normalmente sinalizado no nível de imagem. Deve ser notado que a sinalização do coeficiente ajustado não necessariamente precisa ser executada no nível de imagem, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, nível de CTU, nível de CU, ou nível de sub-bloco). Filtro de Loop > Filtro de Desbloqueio
[0210] Em um filtro de desbloqueio, o filtro de loop 120 executa um processo de filtro em um limite de bloco em uma imagem reconstruída de modo a reduzir a distorção a qual ocorre no limite de bloco.
[0211] A Figura 7 é um diagrama de blocos que ilustra um exemplo de uma configuração específica do filtro de loop 120 a qual funciona como um filtro de desbloqueio.
[0212] O filtro de loop 120 inclui: um determinador de limite 1201; determinador de filtro 1203; executor de filtragem 1205; determinador de processo 1208; determinador de característica de filtro 1207; e comutadores 1202, 1204, e 1206.
[0213] O determinador de limite 1201 determina que se um pixel a ser filtrado em desbloqueio (isto é, um pixel corrente) está presente ao redor de um limite de bloco. O determinador de limite 1201 então emite o resultado de determinação para o comutador 1202 e o determinador de processamento 1208.
[0214] No caso onde o determinador de limite 1201 determinou que um pixel corrente está presente ao redor de um limite de bloco, o comutador 1202 emite uma imagem não filtrada para o comutador
1204. No caso oposto, onde o determinador de limite 1201 determinou que nenhum pixel corrente está presente ao redor de um limite de bloco, o comutador 1202 emite uma imagem não filtrada para o comutador 1206.
[0215] O determinador de filtro 1203 determina se executar filtragem de desbloqueio do pixel corrente, com base no valor de pixel de pelo menos um pixel circundante localizado ao redor do pixel corrente. O determinador de filtro 1203 então emite o resultado de determinação para o comutador 1204 e o determinador de processamento 1208.
[0216] No caso onde o determinador de filtro 1203 determinou executar filtragem de desbloqueio do pixel corrente, o comutador 1204 emite a imagem não filtrada obtida através do comutador 1202 para o executor de filtragem 1205. No caso oposto onde o determinador de filtro 1203 determinou não executar a filtragem de desbloqueio do pixel corrente, o comutador 1204 emite a imagem não filtrada obtida através do comutador 1202 para o comutador 1206.
[0217] Quando obtendo a imagem não filtrada através dos comutadores 1202 e 1204, o executor de filtragem 1205 executa, para o pixel corrente, filtragem de desbloqueio com a característica de filtro determinada pelo determinador característica de filtro 1207. O executor de filtragem 1205 então emite o pixel filtrado para o comutador 1206.
[0218] Sob controle pelo determinador de processamento 1208, o comutador 1206 seletivamente emite um pixel o qual não foi filtrado por desbloqueio e um pixel o qual foi filtrado por desbloqueio pelo executor de filtragem 1205.
[0219] O determinador de processamento 1208 controla o comutador 1206 com base nos resultados de determinações feitas pelo determinador de limite 1201 e determinador de filtro 1203. Em outras palavras, o determinador de processamento 1208 faz com que o comutador 1206 emita o pixel o qual foi filtrado por desbloqueio quando o determinador de limite 1201 determinou que o pixel corrente está presente ao redor do limite de bloco e o determinador de filtro 1203 determinou para executar filtragem de desbloqueio do pixel corrente. Além disso, outro que o caso acima, o determinador de processamento
1208 faz com que o comutador 1206 emita o pixel o qual não foi filtrado por desbloqueio. Uma imagem filtrada é emitida do comutador 1206 repetindo a saída de um pixel neste modo.
[0220] A Figura 8 é um diagrama conceitual que indica um exemplo de um filtro de desbloqueio que tem uma característica de filtragem simétrica com relação a um limite de bloco.
[0221] Em um processo de filtro de desbloqueio, um de dois filtros de desbloqueio que têm diferentes características, isto é, um filtro forte e um filtro fraco é selecionado utilizando valores de pixel e parâmetros de quantização. No caso do filtro forte, os pixels p0 a p2 e pixels q0 a q2 estão presentes através de um limite de bloco como ilustrado na Figura 8, os valores de pixel do respectivo pixel q0 a q2 são mudados para valores de pixel q'0 a q'2 executando, por exemplo, computações de acordo com as expressões abaixo. q'0 = (p1 + 2 × p0 + 2 × q0 + 2 × q1 + q2 + 4)/8 q'1 = (p0 +q0 + q1 + q2 + 2)/4 q'2 = (p0 + q0 + q1 +3 × q2 + 2 × q3 +4)/8
[0222] Deve ser notado que, nas expressões acima, p0 a p2 e q0 a q2 são os valores de pixel de respectivos pixels p0 a p2 e pixels q0 a q2. Além disso, q3 é o valor do pixel do pixel vizinho q3 localizado no lado oposto do pixel q2 com relação ao limite do bloco. Além disso, no lado direito de cada uma das expressões, coeficientes os quais são multiplicados com os respectivos valores de pixel dos pixels a serem utilizados para filtragem de desbloqueio são coeficientes de filtro.
[0223] Mais ainda, na filtragem de desbloqueio, um recorte pode ser executado de modo que os valores de pixel calculados não são ajustados sobre um valor limite. No processo de recorte, os valores de pixel calculados de acordo com as expressões acima são recortados para um valor obtido de acordo com "um valor de pixel de computação ± 2 × um valor limite" utilizando o valor limite determinado com base em um parâmetro de quantização. Neste modo, é possível impedir uma suavização excessiva.
[0224] A Figura 9 é um diagrama conceitual para ilustrar um limite de bloco no qual o processo de filtro de desbloqueio é executado. A Figura 10 é um diagrama conceitual que indica exemplos de valores de Bs.
[0225] O limite de bloco no qual o processo de filtro de desbloqueio é executado é, por exemplo, um limite entre unidades de predição (PU) que tem blocos de 8×8 pixels como ilustrado na Figura 9 ou um limite entre unidades de transformada (TU). O processo de filtro de desbloqueio pode ser executado em unidades de quatro linhas ou quatro colunas. Primeiro, os valores de intensidade de limite (Bs) são determinados como indicado na Figura 10 para o bloco P e bloco Q ilustrados na Figura 9.
[0226] De acordo com os valores de Bs na Figura 10, se executar processos de filtro de desbloqueio de limites de bloco que pertencem à mesma imagem utilizando intensidades diferentes é determinado. O processo de filtro de desbloqueio para um sinal de croma é executado quando um valor de Bs é 2. O processo de filtro de desbloqueio para um sinal de luma é executado quando um valor de Bs é 1 ou mais e uma condição determinada é satisfeita. A condição determinada pode ser predeterminada. Deve ser notado que as condições para determinar os valores de Bs não estão limitadas àquelas indicadas na Figura 10, e um valor de Bs pode ser determinado com base em outro parâmetro. Processador de Predição (Intrapreditor, Interpreditor, Controlador de Predição)
[0227] A Figura 11 é um fluxograma que ilustra um exemplo de um processo executado pelo processador de predição do codificador 100. Deve ser notado que o processador de predição inclui todos ou parte dos seguintes elementos constituintes: intrapreditor 124; interpreditor 126; e controlador de predição 128.
[0228] O processador de predição gera uma imagem de predição de um bloco corrente (Etapa Sb_1). Esta imagem de predição é também referida como um sinal de predição ou um bloco de predição. Deve ser notado que o sinal de predição é, por exemplo, um sinal de intrapredição ou um sinal de interpredição. Especificamente, o processador de predição gera a imagem de predição do bloco corrente utilizando uma imagem reconstruída a qual já foi obtida através de geração de um bloco de predição, geração de um bloco de diferença, geração de um bloco de coeficiente, restauração de um bloco de diferença, e geração de um bloco de imagem decodificado.
[0229] A imagem reconstruída pode ser, por exemplo, uma imagem em uma imagem de referência, ou uma imagem de um bloco codificado em uma imagem corrente a qual é a imagem que inclui o bloco corrente. O bloco codificado na imagem corrente é, por exemplo, um bloco vizinho do bloco corrente.
[0230] A Figura 12 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador
100.
[0231] O processador de predição gera uma imagem de predição utilizando um primeiro método (Etapa Sc_1a), gera uma imagem de predição utilizando um segundo método (Etapa Sc_1b) e gera uma imagem de predição utilizando um terceiro método (Etapa Sc_1c). O primeiro método, o segundo método, e o terceiro método podem ser métodos mutuamente diferentes para gerar uma imagem de predição. Cada um do primeiro ao terceiro métodos pode ser um método de interpredição, um método de intrapredição, ou outro método de predição. A imagem reconstruída acima descrita pode ser utilizada nestes métodos de predição.
[0232] A seguir, o processador de predição seleciona qualquer um de uma pluralidade de métodos de predição gerados nas Etapas Sc_1a, Sc_1b, e Sc_1c (Etapa Sc_2). A seleção da imagem de predição, que é a seleção de um método ou um modo para obter a imagem de predição final pode ser feita calculando um custo para cada uma das imagens de predição geradas e com base no custo. Alternativamente, a seleção da imagem de predição pode ser feita com base em um parâmetro o qual é utilizado em um processo de processamento. O codificador 100 pode transformar as informações para identificar uma imagem de predição selecionada, um método, ou um modo em um sinal codificado (também referido como um fluxo de bits codificado). As informações podem ser, por exemplo, um sinalizador ou similares. Neste modo, o decodificador é capaz de gerar uma imagem de predição de acordo com o método ou o modo selecionado com base nas informações no codificador 100. Deve ser notado que, no exemplo ilustrado na Figura 12, o processador de predição seleciona qualquer uma das imagens de predição após as imagens de predição serem geradas utilizando os respectivos métodos. No entanto, o processador de predição pode selecionar um método ou um modo com base em um parâmetro para utilização no processo de codificação acima descrito antes de gerar imagens de predição, e pode gerar uma imagem de predição de acordo com o método ou modo selecionado.
[0233] Por exemplo, o primeiro método e o segundo método podem ser intrapredição e interpredição, respectivamente, e o processador de predição pode selecionar uma imagem de predição final para um bloco corrente de imagens de predição geradas de acordo com os métodos de predição.
[0234] A Figura 13 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do codificador
100.
[0235] Primeiro, o processador de predição gera uma imagem de predição utilizando intrapredição (Etapa Sd_1a), e gera uma imagem de predição utilizando interpredição (Etapa Sd_1b). Deve ser notado que a imagem de predição gerada por intrapredição é também referida como uma imagem de intrapredição, e a imagem de predição gerada por interpredição é também referida como uma imagem de interpredição.
[0236] A seguir, o processador de predição avalia cada uma da imagem de intrapredição e da imagem de interpredição (Etapa Sd_2). Um custo pode ser utilizado na avaliação. Em outras palavras, o processador de predição calcula um custo C para cada uma da imagem de intrapredição e da imagem de interpredição. O custo C pode ser calculado de acordo com uma expressão de um modelo de otimização RD, por exemplo, C = D + λ × R. Nesta expressão, D indica uma distorção de codificação de uma imagem de predição, e é representado como, por exemplo, uma soma de diferenças absolutas entre o valor de pixel de um bloco corrente e o valor de pixel de uma imagem de predição. Além disso, R indica uma quantidade de codificação predita de uma imagem de predição, especificamente, a quantidade de codificação requerida para codificar informações de movimento para gerar uma imagem de predição, etc. Além disso, λ indica, por exemplo, um multiplicador de acordo com o método de multiplicador de Lagrange.
[0237] O processador de predição então seleciona a imagem de predição para a qual o menor custo C foi calculado entre a imagem de intrapredição e a imagem de interpredição, como a imagem de predição final para o bloco corrente (Etapa Sd_3). Em outras palavras, o método de predição ou o modo para gerar a imagem de predição para o bloco corrente é selecionado. Intrapreditor
[0238] O intrapreditor 124 gera um sinal de predição (sinal de intrapredição) executando intrapredição (também referida como predição intraquadro) do bloco corrente referindo a um bloco ou blocos na imagem corrente e armazenado na memória de blocos 118. Mais especificamente, o intrapreditor 124 gera uma de sinal de intrapredição executando intrapredição referindo a amostras (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco corrente, e então emite o sinal de intrapredição para o controlador de predição 128.
[0239] Por exemplo, o intrapreditor 124 executa intrapredição utilizando um modo dentre uma pluralidade de modos de intrapredição os quais foram definidos. Os modos de intrapredição incluem um ou mais modos de predição não direcionais e uma pluralidade de modos de predição direcionais. Os modos definidos podem ser predefinidos.
[0240] Os um ou mais modos de predição não direcionais incluem, por exemplo, o modo de predição plano e o modo de predição DC definidos no padrão H.265/codificação de vídeo de alta eficiência (HEVC).
[0241] Uma pluralidade de modos de predição direcionais inclui, por exemplo, os trinta e três modos de predição direcionais definidos no padrão H.265/HEVC. Deve ser notado que a pluralidade de modos de predição direcionais pode ainda incluir trinta e dois modos de predição direcionais além dos trinta e três modos de predição direcionais (para um total de sessenta e cinco modos de predição direcionais). A Figura 14 é um diagrama conceitual que ilustra sessenta e sete modos de intrapredição no total que podem ser utilizados em intrapredição (dois modos de predição não direcionais e sessenta e cinco modos de predição direcionais). As setas cheias representam as trinta e três direções definidas no padrão H.265/HEVC, e as setas tracejadas representam as trinta e duas direções adicionais (os dois modos de predição não direcionais não estão ilustrados na Figura 14).
[0242] Em vários tipos de exemplos de processamento, um bloco de luma pode ser referido em intrapredição de um bloco de croma. Em outras palavras, um componente de croma do bloco corrente pode ser predito com base em um componente de luma do bloco corrente. Tal intrapredição é também referida como predição de modelo linear de componentes cruzado (CCLM). O modo de intrapredição para um bloco de croma no qual tal bloco de luma é referido (também referido como, por exemplo, um modo de CCLM) pode ser adicionado como um dos modos de intrapredição para blocos de croma.
[0243] O intrapreditor 124 pode corrigir valores de pixel intrapreditos com base em gradientes de pixel de referência horizontal/vertical. A intrapredição acompanhada por este tipo de correção é também referida como uma combinação intrapredição dependente de posição (PDPC). As informações que indicam se aplicar PDPC (referidas como, por exemplo, um sinalizador de PDPC) são normalmente sinalizadas no nível da CU. Deve ser notado que a sinalização de tais informações não necessariamente precisa ser executada no nível CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, ou nível de CTU). Interpreditor
[0244] O interpreditor 126 gera um sinal de predição (sinal de interpredição) executando interpredição (também referida como predição interquadros) do bloco corrente referindo a um bloco ou blocos em uma imagem de referência, a qual é diferente da imagem corrente e está armazenado na memória de quadros 122. A interpredição é executada em unidades de um bloco corrente ou um sub-bloco corrente (por exemplo, um bloco de 4×4) no bloco corrente. Por exemplo, o interpreditor 126 executa estimativa de movimento em uma imagem de referência para o bloco corrente ou o sub-bloco corrente, e encontra um bloco ou um sub-bloco de referência o qual melhor coincide com o bloco corrente ou sub-bloco corrente. O interpreditor 126 então obtém informações de movimento (por exemplo, um vetor de movimento) o qual compensa um movimento ou uma mudança do bloco ou sub-bloco de referência para o bloco ou sub-bloco corrente. O interpreditor 126 gera um sinal de interpredição do bloco ou sub-bloco corrente executando compensação de moção (ou predição de movimento) com base nas informações de movimento. O interpreditor 126 emite o sinal de interpredição gerado para o controlador de predição 128.
[0245] As informações de movimento utilizadas em compensação do movimento podem ser sinalizadas como sinais de interpredição em várias formas. Por exemplo, um vetor de movimento pode ser sinalizado. Como outro exemplo, a diferença entre um vetor de movimento e um preditor de vetor de movimento pode ser sinalizada. Fluxo Básico de Interpredição
[0246] A Figura 15 é um fluxograma que ilustra um fluxo de processamento básico exemplar de interpredição.
[0247] Primeiro, o interpreditor 126 gera um sinal de predição (Etapas Se_1 a Se_3). A seguir, o subtrator 104 gera a diferença entre um bloco corrente e uma imagem de predição como um resíduo de predição (Etapa Se_4).
[0248] Aqui, na geração da imagem de predição, o interpreditor 126 gera a imagem de predição através de determinação de um vetor de movimento (MV) do bloco corrente (Etapas Se_1 e Se_2) e compensação de movimento (Etapa Se_3). Mais ainda, na determinação de um MV, o interpreditor 126 determina o MV através de seleção de um vetor de movimento candidato (MV candidato) (Etapa Se_1) e derivação de um MV (Etapa Se_2). A seleção do MV candidato é feita, por exemplo, selecionando pelo menos um MV candidato de uma lista de MVs candidatos. Alternativamente, na derivação de um MV, o interpreditor 126 pode ainda selecionar pelo menos um MV candidato do pelo menos um MV candidato, e determinar o pelo menos um MV candidato selecionado como o MV para o bloco corrente.
Alternativamente, o interpreditor 126 pode determinar o MV para o bloco corrente executando estimativa em uma região de imagem de referência especificada por cada um do pelo menos um candidato MV selecionado. Deve ser notado que a estimativa em uma região de imagem de referência pode ser referida como estimativa de movimento.
[0249] Além disso, apesar das Etapas Se_1 a Se_3 serem executadas pelo interpreditor 126 no exemplo acima descrito, um processo que é, por exemplo, Etapa Se_1, Etapa Se_2, ou similares pode ser executado por outro elemento constituinte incluído no codificador 100. Fluxo de Derivação de Vetor de Movimento
[0250] A Figura 16 é um fluxograma que ilustra um exemplo de derivação de vetores de movimento.
[0251] O interpreditor 126 deriva um MV de um bloco corrente em um modo para codificar informações de movimento (por exemplo, um MV). Neste caso, por exemplo, as informações de movimento são codificadas como um parâmetro de predição, e são sinalizadas. Em outras palavras, as informações de movimento codificadas são incluídas em um sinal codificado (também referido como um fluxo de bits codificado).
[0252] Alternativamente, o interpreditor 126 deriva um MV em um modo no qual as informações de movimento não são codificadas. Neste caso, nenhuma informação de movimento é incluída em um sinal codificado.
[0253] Aqui, os modos de derivação de MV podem incluir um modo inter normal, um modo de mesclagem, um modo de FRUC, um modo afim, etc. os quais serão posteriormente descritos. Os modos nos quais as informações de movimento são codificadas entre os modos incluem o modo inter normal, o modo de mesclagem, o modo afim (especificamente, um modo inter afim e um modo de mesclagem afim),
etc. Deve ser notado que as informações de movimento podem incluir não somente um MV, mas também informações de seleção de preditor de vetor de movimento as quais serão posteriormente descritas. Os modos nos quais nenhuma informação de movimento é codificada incluem o modo de FRUC, etc. O interpreditor 126 seleciona um modo para derivar um MV do bloco corrente dos modos, e deriva o MV do bloco corrente utilizando o modo selecionado.
[0254] A Figura 17 é um fluxograma que ilustra outro exemplo de derivação de vetores de movimento.
[0255] O interpreditor 126 deriva um MV de um bloco corrente em um modo no qual uma diferença de MV é codificada. Neste caso, por exemplo, a diferença de MV é codificada como um parâmetro de predição, e é sinalizada. Em outras palavras, a diferença de MV codificada é incluída em um sinal codificado. A diferença de MV é a diferença entre o MV do bloco corrente e o de preditor de MV.
[0256] Alternativamente, o interpreditor 126 deriva um MV em um modo no qual nenhuma diferença de MV é codificada. Neste caso, nenhuma diferença de MV codificada é incluída em um sinal codificado.
[0257] Aqui, como acima descrito, os modos de derivação de MV incluem o modo inter normal, o modo de mesclagem, o modo de FRUC, o modo afim, etc., aos quais serão posteriormente descritos. Os modos nos quais uma diferença de MV é codificada entre os modos incluem o modo inter normal, o modo afim (especificamente, o modo inter afim), etc. Os modos nos quais nenhuma diferença de MV é codificada incluem o modo de FRUC, o modo de mesclagem, o modo afim (especificamente, o modo de mesclagem afim), etc. O interpreditor 126 seleciona um modo para derivar um MV do bloco corrente da pluralidade de modos, e deriva o MV do bloco corrente utilizando o modo selecionado.
Fluxo de Derivação de Vetor de Movimento
[0258] A Figura 18 é um fluxograma que ilustra outro exemplo de derivação de vetores de movimento. Os modos de derivação de MV os quais são modos de interpredição incluem uma pluralidade de modos e estão aproximadamente divididos em modos nos quais uma diferença de MV é codificada e modos nos quais nenhuma diferença de vetor de movimento é codificada. Os modos nos quais nenhuma diferença de MV é codificada incluem o modo de mesclagem, o modo de FRUC, o modo afim (especificamente, o modo de mesclagem afim), etc. Estes modos serão posteriormente descritos em detalhes. Simplesmente, o modo de mesclagem é um modo para derivar um MV de um bloco corrente selecionando um vetor de movimento de um bloco circundante codificado, e o modo de FRUC é um modo para derivar um MV de um bloco corrente executando estimativa entre regiões codificadas. O modo afim é um modo para derivar, como um MV de um bloco corrente, um vetor de movimento de cada um de uma pluralidade de sub-blocos incluída no bloco corrente, assumindo transformada afim.
[0259] Mais especificamente, como ilustrado quando as informações de modo de interpredição indicam 0 (0 em Sf_1), o interpreditor 126 deriva um vetor de movimento utilizando o modo de mesclagem (Sf_2). Quando as informações de modo de interpredição indicam 1 (1 em Sf_1), o interpreditor 126 deriva um vetor de movimento utilizando o modo de FRUC (Sf_3). Quando as informações de modo de interpredição indicam 2 (2 em Sf_1), o interpreditor 126 deriva um vetor de movimento utilizando o modo afim (especificamente, o modo de mesclagem afim) (Sf_4). Quando as informações de modo de interpretação indicam 3 (3 em Sf_1), o interpreditor 126 deriva um vetor de movimento utilizando um modo no qual uma diferença de MV é codificada (por exemplo, um modo inter normal) (Sf_5).
Derivação de MV > Modo Inter Normal
[0260] O modo inter normal é um modo de interpredição para derivar um MV de um bloco corrente com base em um bloco similar à imagem do bloco corrente de uma região de imagem de referência especificada por um MV candidato. Neste modo inter normal, uma diferença de MV é codificada.
[0261] A Figura 19 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal.
[0262] Primeiro, o interpreditor 126 obtém uma pluralidade de MVs candidatos para um bloco corrente com base em informações tais como MVs de uma pluralidade de blocos codificados temporalmente ou espacialmente circundando o bloco corrente (Etapa Sg_1). Em outras palavras, o interpreditor 126 gera uma lista de MVs candidatos.
[0263] A seguir, o interpreditor 126 extrai N (um inteiro de 2 ou maior) MVs candidatos da pluralidade de MVs candidatos obtida na Etapa Sg_1, como candidatos de preditor de vetor de movimento (também referidos como candidatos de preditor de MV) de acordo com uma ordem de prioridade determinada (Etapa Sg_2). Deve ser notado que a ordem de prioridade pode ser determinada com antecedência para cada um dos N MVs candidatos.
[0264] A seguir, o interpreditor 126 seleciona um candidato de preditor de vetor de movimento dos N candidatos de preditor de vetor de movimento, como o preditor de vetor de movimento (também referido como um preditor de MV) do bloco corrente (Etapa Sg_3). Neste tempo, o interpreditor 126 codifica, em um fluxo, informações de seleção de preditor de vetor de movimento para identificar o preditor de vetor de movimento selecionado. Deve ser notado que o fluxo é um sinal codificado ou um fluxo de bits codificado como acima descrito.
[0265] A seguir, o interpreditor 126 deriva um MV de um bloco corrente referindo a uma imagem de referência codificada (Etapa Sg_4).
Neste tempo, o interpreditor 126 ainda codifica, no fluxo, o valor de diferença entre o MV derivado e o preditor de vetor de movimento como uma diferença de MV. Deve ser notado que a imagem codificada de referência é uma imagem que inclui uma pluralidade de blocos os quais foram reconstruídos após serem codificados.
[0266] Finalmente, o interpreditor 126 gera uma imagem de predição para o bloco corrente executando compensação de movimento do bloco corrente utilizando o MV derivado e a imagem codificada de referência (Etapa Sg_5). Deve ser notado que a imagem de predição é um sinal de interpredição como acima descrito.
[0267] Além disso, as informações que indicam o modo de interpredição (modo inter normal no exemplo acima) utilizadas para gerar a imagem de predição são, por exemplo, codificadas como um parâmetro de predição.
[0268] Deve ser notado que a lista de MVs candidatos pode também ser utilizada como uma lista para utilização em outro modo. Além disso, os processos relativos à lista de MVs candidatos podem ser aplicados a processos relativos à lista para utilização em outro modo. Os processos relativos à lista de MVs candidatos incluem, por exemplo, extração ou seleção de um MV candidato da lista de MVs candidatos, reordenação de MVs candidatos, ou apagamento de um MV candidato. Derivação de MV > Modo de Mesclagem
[0269] O modo de mesclagem é um modo de interpredição para selecionar um MV candidato de uma lista de MVs candidatos como um MV de um bloco corrente, por meio disto derivando o MV.
[0270] A Figura 20 é um fluxograma que ilustra um exemplo de interpredição em modo de mesclagem.
[0271] Primeiro, o interpreditor 126 obtém uma pluralidade de MVs candidatos para um bloco corrente com base em informações tais como MVs de uma pluralidade de blocos codificados temporalmente ou espacialmente circundando o bloco corrente (Etapa Sh_1). Em outras palavras, o interpreditor 126 gera uma lista de MVs candidatos.
[0272] A seguir, o interpreditor 126 seleciona um MV candidato da pluralidade de MVs candidatos obtida na Etapa Sh_1, por meio disto derivando um MV do bloco corrente (Etapa Sh_2). Neste tempo, o interpreditor 126 codifica, em um fluxo, informações de seleção de MV para identificar o MV candidato selecionado.
[0273] Finalmente, o interpreditor 126 gera uma imagem de predição para o bloco corrente executando compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência codificada (Etapa Sh_3).
[0274] Além disso, as informações que indicam o modo de interpredição (modo de mesclagem no exemplo acima) utilizadas para gerar a imagem de predição e incluídas no sinal codificado são, por exemplo, codificadas como um parâmetro de predição.
[0275] A Figura 21 é um diagrama conceitual para ilustrar um exemplo de um processo de derivação de vetor de movimento de uma imagem corrente no modo de mesclagem.
[0276] Primeiro, uma lista de MVs candidatos na qual os candidatos de preditor de MV são registrados é gerada. Exemplos de candidatos de preditor de MV incluem: preditores de MV espacialmente vizinhos, os quais são MVs de uma pluralidade de blocos codificados localizados espacialmente circundando um bloco corrente; preditores de MV temporalmente vizinhos os quais são MVs de blocos circundantes sobre os quais a posição de um bloco corrente em uma imagem de referência codificada é projetada; preditores de MV combinados os quais são MVs gerados combinando o valor MV de um preditor de MV espacialmente vizinho e o MV de um preditor de MV temporalmente vizinho; e um preditor de MV zero, o qual é um MV que tem um valor zero.
[0277] A seguir, um preditor de MV é selecionado de uma pluralidade de preditores de MV registrada em uma lista de preditores de MV, e o preditor de MV selecionado é determinado como o MV de um bloco corrente.
[0278] Mais ainda, o codificador de comprimento variável descreve e codifica, em um fluxo, merge_idx o qual é um sinal que indica qual preditor de MV foi selecionado.
[0279] Deve ser notado que os preditores de MV registrados na lista de preditores de MV descrita na Figura 21 são exemplos. O número de preditores de MV pode ser diferente do número de preditores de MV no diagrama, a lista de preditores de MV pode ser configurada de tal modo que alguns dos tipos dos preditores de MV no diagrama podem não ser incluídos, ou que um ou mais preditores de MV outros que os tipos de preditores de MV no diagrama são incluídos.
[0280] Um MV final pode ser determinado executando um processo de refinamento de vetor de movimento de decodificador (DMVR) a ser posteriormente descrito utilizando o MV do bloco corrente derivado no modo de mesclagem.
[0281] Deve ser notado que os candidatos de preditor de MV são os MVs candidatos acima descritos, e a lista de preditores de MV é a lista de MVs candidatos acima descrita. Deve ser notado que a lista de MVs candidatos pode ser referida como uma lista de candidatos. Além disso, merge_idx são informações de seleção de MV. Derivação de MV > Modo de FRUC
[0282] As informações de movimento podem ser derivadas do lado de decodificador sem serem sinalizadas do lado de codificador. Deve ser notado que, acima como descrito, o modo de mesclagem definido no padrão H.265/HEVC pode ser utilizado. Além disso, por exemplo, as informações de movimento podem ser derivadas executando estimativa de movimento no lado de decodificador. Em uma modalidade, no lado de decodificador, a estimativa de movimento é executada sem utilizar qualquer valor de pixel em um bloco corrente.
[0283] Aqui, um modo para executar estimativa de movimento no lado de decodificador é descrito. O modo para executar estimativa de movimento no lado de decodificador pode ser referido como um modo de derivação de vetor de movimento coincidido em padrão (PMMVD), ou um modo de conversão ascendente de taxa de quadros (FRUC).
[0284] Um exemplo de um processo de FRUC na forma de um gráfico de fluxo está ilustrado na Figura 22. Primeiro, uma lista de uma pluralidade de candidatos cada um tendo um preditor de vetor de movimento (MV) (isto é, uma lista de MVs candidatos) que pode também ser utilizada como uma lista de mesclagem) é gerada referindo a um vetor de movimento em um bloco codificado o qual é espacialmente ou temporalmente vizinho a um bloco corrente (Etapa Si_1). A seguir, um melhor MV candidato é selecionado da pluralidade de MVs candidatos registrados na lista de MVs candidatos (Etapa Si_2). Por exemplo, os valores de avaliação dos respectivos MVs candidatos incluídos na lista de MVs candidatos são calculados, e um MV candidato é selecionado com base nos valores de avaliação. Com base nos candidatos de vetor de movimento selecionados, um vetor de movimento para o bloco corrente é então derivado (Etapa Si_4). Mais especificamente, por exemplo, o vetor de movimento candidato selecionado (melhor MV candidato) é derivado diretamente como o vetor de movimento para o bloco corrente. Além disso, por exemplo, o vetor de movimento para o bloco corrente pode ser derivado utilizando coincidência de padrões em uma região circundante de uma posição em uma imagem de referência onde a posição em uma imagem de referência corresponde ao vetor de movimento candidato selecionado. Em outras palavras, uma estimativa utilizando a coincidência de padrões e os valores de avaliação podem ser executadas na região circundante do melhor MV candidato, e quando existe um MV que gera um melhor valor de avaliação, o melhor MV candidato pode ser atualizado para o MV que gera o melhor valor de avaliação, e o MV atualizado pode ser determinado como o MV final para o bloco corrente. Uma configuração na qual nenhum tal processo para atualizar o melhor MV candidato para o MV que tem um melhor valor de avaliação é executado é também possível.
[0285] Finalmente, o interpreditor 126 gera uma imagem de predição para o bloco corrente executando compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência codificada (Etapa Si_5).
[0286] Um processo similar pode ser executado em unidades de um sub-bloco.
[0287] Os valores de avaliação podem ser calculados de acordo com vários tipos de métodos. Por exemplo, uma comparação é feita entre uma imagem reconstruída em uma região em uma imagem de referência que corresponde a um vetor de movimento e uma imagem reconstruída em uma região determinada (a região pode ser, por exemplo, uma região em outra imagem de referência ou uma região em um bloco vizinho de uma imagem corrente, como abaixo indicado). A região determinada pode ser predeterminada.
[0288] A diferença entre os valores de pixel das duas imagens reconstruídas pode ser utilizada para um valor de avaliação dos vetores de movimento. Deve ser notado que um valor de avaliação pode ser calculado utilizando informações outras que o valor da diferença.
[0289] A seguir, um exemplo de coincidência de padrões está descrito em detalhes. Primeiro, um MV candidato incluído em uma lista de MVs candidatos (por exemplo, uma lista de mesclagem) é selecionado como um ponto de partida de estimativa pela coincidência de padrões. Por exemplo, como a coincidência de padrões, ou uma primeira coincidência de padrões ou uma segunda coincidência de padrões pode ser utilizada. A primeira coincidência de padrões e a segunda coincidência de padrões são também referidas como coincidência bilateral e coincidência de gabaritos, respectivamente. Derivação de MV > FRUC > Coincidência Bilateral
[0290] Na primeira coincidência de padrões, a coincidência de padrões é executada entre dois blocos ao longo de uma trajetória de movimento de um bloco corrente, os quais são dois blocos em duas diferentes imagens de referência. Consequentemente, na primeira coincidência de padrões, uma região em outra imagem de referência ao longo da trajetória de movimento do bloco corrente é utilizada como uma região determinada para calcular o valor de avaliação do candidato acima descrito. A região determinada pode ser predeterminada.
[0291] A Figura 23 é um diagrama conceitual para ilustrar um exemplo da primeira coincidência de padrões (coincidência bilateral) entre os dois blocos nas duas imagens de referência ao longo da trajetória de movimento. Como ilustrado na Figura 23, na primeira coincidência de padrões, dois vetores de movimento (MV0, MV1) são derivados estimando um par o qual melhor coincide entre pares nos dois blocos nas duas diferentes imagens de referência (Ref0, Ref1) os quais são dois blocos ao longo da trajetória de movimento do bloco corrente (Cur block). Mais especificamente, uma diferença entre a imagem reconstruída em uma localização especificada na primeira imagem de referência codificada (Ref0) especificada por um MV candidato e a imagem reconstruída em uma localização especificada na segunda imagem de referência codificada (Ref1) especificada por um MV simétrico obtido escalando o MV candidato em um intervalo de tempo de exibição é derivada do bloco corrente, e um valor de avaliação é calculado utilizando o valor da diferença obtida. É possível selecionar, como o MV final, o MV candidato o qual gera o melhor valor de avaliação dentre a pluralidade de MVs candidatos, e o qual é provável produzir bons resultados.
[0292] Na suposição de uma trajetória de movimento contínuo, os vetores de movimento (MV0, MV1) que especificam os dois blocos de referência são proporcionais a distâncias temporais (TD0, TD1) entre a imagem corrente (Cur Pic) e as duas imagens de referências (Ref0, Ref1). Por exemplo, quando a imagem corrente está temporalmente localizada entre as duas imagens de referência e as distâncias temporais da imagem corrente para as respectivas duas imagens de referência são iguais uma à outra, vetores de movimento bidirecionais simétricos espelhados são derivados na primeira coincidência de padrões. Derivação de MV> FRUC> Coincidência de Gabaritos
[0293] Na segunda coincidência de padrões (coincidência de gabaritos), a coincidência de padrões é executada entre um bloco em uma imagem de referência e um gabarito na imagem corrente (o gabarito é um bloco vizinho ao bloco corrente na imagem corrente (o bloco vizinho é, por exemplo, um bloco(s) vizinho(s) superior e/ou esquerdo)). Consequentemente, na segunda coincidência de padrões, o bloco vizinho ao bloco corrente na imagem corrente é utilizado como a região determinada para o calcular o valor de avaliação do candidato acima descrito.
[0294] A Figura 24 é um diagrama conceitual para ilustrar um exemplo de coincidência de padrões (coincidência de gabaritos) entre um gabarito em uma imagem corrente e um bloco em uma imagem de referência. Como ilustrado na Figura 24, na segunda coincidência de padrões, o vetor de movimento do bloco corrente (Cur block) é derivado estimando, na imagem de referência (Ref0), o bloco o qual melhor coincide com o bloco vizinho do bloco corrente na imagem corrente (Cur Pic). Mais especificamente, é possível que a diferença entre uma imagem reconstruída em uma região codificada a qual é vizinha tanto à esquerda quanto acima ou à esquerda ou acima de uma imagem reconstruída a qual está em uma região correspondente na imagem de referência codificada (Ref0) e é especificada por um MV candidato é derivada, um valor de avaliação é calculado utilizando o valor da diferença obtida, e o MV candidato que gera o melhor valor de avaliação entre uma pluralidade de MVs candidatos é selecionado como o melhor MV candidato.
[0295] Tais informações que indicam se aplicar o modo de FRUC (referido como, por exemplo, um sinalizador de FRUC) podem ser sinalizadas no nível de CU. Além disso, quando o modo de FRUC é aplicado (por exemplo, quando um sinalizador de FRUC é verdadeiro), as informações que indicam um método de coincidência de padrões aplicável (ou a primeira coincidência de padrões ou a segunda coincidência de padrões) podem ser sinalizadas no nível CU. Deve ser notado que a sinalização de tais informações não necessariamente precisa ser executada no nível CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco). Derivação de MV > Modo Afim
[0296] A seguir, o modo afim para derivar um vetor de movimento em unidades de um sub-bloco com base em vetores de movimento de uma pluralidade de blocos vizinhos está descrito. Este modo é também referido como um modo de predição de compensação de movimento afim.
[0297] A Figura 25A é um diagrama conceitual para ilustrar um exemplo de derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de uma pluralidade de blocos vizinhos. Na Figura 25A, o bloco corrente inclui dezesseis sub-blocos de 4×4. Aqui, o vetor de movimento V0 em um ponto de controle de canto superior esquerdo do bloco corrente é derivado com base em um vetor de movimento de um bloco vizinho, e do mesmo modo, o vetor de movimento V1 em um ponto de controle de canto superior direito do bloco corrente é derivado com base em um vetor de movimento de um sub-bloco vizinho. Dois vetores de movimento v0 e v1 podem ser projetados de acordo com uma expressão (1A) abaixo indicada, e vetores de movimento (vx, vy) para os respectivos sub-blocos no bloco corrente podem ser derivados.
[0298] Math. 1 (v1x − v0x ) (v1y − v0y ) vx = x− y + v0x w w (1A) (v1y − v0y ) (v1x − v0x ) vy = x− y + v0y { w w
[0299] Aqui, x e y indicam a posição horizontal e a posição vertical do sub-bloco, respectivamente, e w indica um coeficiente de ponderação determinado. O coeficiente de ponderação determinado pode ser predeterminado.
[0300] Tais informações que indicam o modo afim (por exemplo, referidas como um sinalizador a fim) podem ser sinalizadas no nível de CU. Deve ser notado que a sinalização das informações que indicam o modo afim não necessariamente precisa ser executada no nível de CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco).
[0301] Além disso, o modo afim pode incluir diversos modos para diferentes métodos para derivar vetores de movimento nos pontos de controle de canto superior esquerdo e superior direito. Por exemplo, o modo afim inclui dois modos os quais são o modo inter afim (também referido como um modo inter normal afim) e o modo de mesclagem afim. Derivação de MV > Modo Afim
[0302] A Figura 25B é um diagrama conceitual para ilustrar um exemplo de derivar um vetor de movimento de cada sub-bloco no modo afim no qual três pontos de controle são utilizados. Na Figura 25B, o bloco corrente inclui dezesseis blocos de 4×4. Aqui, um vetor de movimento V0 no ponto de controle de canto superior esquerdo, para o bloco corrente é derivado com base em um vetor de movimento de um bloco vizinho, e do mesmo modo, um vetor de movimento V1 no ponto de controle de canto superior direito para o bloco corrente é derivado com base em um vetor de movimento de um bloco vizinho, e um vetor de movimento V2 no ponto de controle de canto inferior esquerdo para o bloco corrente é derivado com base em um vetor de movimento de um bloco vizinho. Três vetores de movimento v0, v1, e v2 podem ser projetados de acordo com uma expressão (1B) abaixo indicada, e vetores de movimento (vx, vy) para os respectivos sub-blocos no bloco corrente podem ser derivados.
[0303] Math. 2 (v1x − v0x ) (v2x − v0x ) vx = x− y + v0x w h (1B) (v1y − v0y ) (v2y − v0y ) {vy = w x− h y + v0y
[0304] Aqui, x e y indicam a posição horizontal e a posição vertical do centro do sub-bloco, respectivamente, w indica a largura do bloco corrente, e h indica a altura do bloco corrente.
[0305] Modos afins nos quais diferentes números de pontos de controle (por exemplo, dois e três pontos de controle) são utilizados podem ser comutados e sinalizados no nível de CU. Deve ser notado que as informações que indicam o número de pontos de controle no modo afim utilizadas no nível CU pode ser sinalizadas em outro nível (por exemplo, nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, nível de sub-bloco).
[0306] Além disso, tal modo afim no qual três pontos de controle são utilizados pode incluir diferentes métodos para derivar vetores de movimento nos pontos de controle de canto superior esquerdo, superior direito e inferior esquerdo. Por exemplo, os modos afins incluem dois modos que os quais são o modo inter afim (também referido como o modo inter normal afim) e o modo de mesclagem afim. Derivação de MV > Modo de Mesclagem Afim
[0307] A Figura 26A, Figura 26B, e Figura 26C são diagramas conceituais para ilustrar o modo de mesclagem afim.
[0308] Como ilustrado na Figura 26A, no modo de mesclagem afim, por exemplo, preditores de vetor de movimento em respectivos pontos de controle de um bloco corrente são calculados com base em uma pluralidade de vetores de movimento que correspondem a blocos codificados de acordo com o modo afim entre o bloco codificado A (esquerda), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo), e bloco E (superior esquerdo) os quais são vizinhos do bloco corrente. Mais especificamente, o bloco codificado A (esquerdo), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo) e bloco E (superior esquerdo) são verificados na ordem listada, e o primeiro o bloco efetivo codificado de acordo com o modo afim é identificado. Os preditores de vetor de movimento nos pontos de controle do bloco corrente são calculados com base em uma pluralidade de vetores de movimento que corresponde ao bloco identificado.
[0309] Por exemplo, como ilustrado na Figura 26B, quando o bloco A o qual é vizinho à esquerda do bloco corrente foi codificado de acordo com um modo afim no qual dois pontos de controle são utilizados, os vetores de movimento v3 e v4 projetados na posição de canto superior esquerdo e na posição de canto superior direito do bloco codificado que inclui o bloco A são derivados. O preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente e o preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente são então calculados dos vetores de movimento derivados v3 e v4.
[0310] Por exemplo, como ilustrado na Figura 26C, quando o bloco
A o qual é vizinho à esquerda do bloco corrente foi codificado de acordo com um modo afim no qual três pontos de controle são utilizados, os vetores de movimento v3, v4, e v5 projetados na posição de canto superior esquerdo, na posição de canto superior direito e na posição de canto inferior esquerdo do bloco codificado que inclui o bloco A são derivados. O preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente, o preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente, e o preditor de vetor de movimento v2 no ponto de controle de canto inferior esquerdo do bloco corrente são então calculados de vetores de movimento derivados v3, v4, e v5.
[0311] Deve ser notado que este método para derivar preditores de vetor de movimento pode ser utilizado para derivar preditores de vetor de movimento dos respectivos pontos de controle do bloco corrente na Etapa Sj_1 na Figura 29 posteriormente descrita.
[0312] A Figura 27 é um fluxograma que ilustra um exemplo do modo de mesclagem afim.
[0313] No modo de mesclagem afim como ilustrado, primeiro, o interpreditor 126 deriva preditores de MV de respectivos pontos de controle de um bloco corrente (Etapa Sk_1). Os pontos de controle são um ponto de canto superior esquerdo do bloco corrente e um ponto de canto superior direito do bloco corrente como ilustrado na Figura 25A, ou um ponto de canto superior esquerdo do bloco corrente, um ponto de canto superior direito do bloco corrente, um ponto de canto inferior esquerdo do bloco corrente como ilustrado na Figura 25B.
[0314] Em outras palavras, como ilustrado na Figura 26A, o interpreditor 126 verifica o bloco codificado A (esquerdo), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo), e bloco E (superior esquerdo) na ordem listada, e identifica o primeiro bloco efetivo codificado de acordo com o modo afim.
[0315] Quando o bloco A é identificado e o bloco A tem dois pontos de controle, como ilustrado na Figura 26B, o interpreditor 126 calcula o vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente e o vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente dos vetores de movimento v3 e v4 no canto superior esquerdo e canto superior direito do bloco codificado que inclui o bloco A. Por exemplo, o interpreditor 126 calcula o vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente e o vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente projetando os vetores de movimento v3 e v4 no canto superior esquerdo e no canto superior direito do bloco codificado sobre o bloco corrente.
[0316] Alternativamente, quando bloco A é identificado e a bloco A tem três pontos de controle, como ilustrado na Figura 26C, o interpreditor 126 calcula o vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente, vetor de movimento v1 no ponto de controle de canto superior direito bloco corrente, e o vetor de movimento v2 no ponto de controle de canto inferior esquerdo do bloco corrente dos vetores de movimento v3, v4, e v5 no canto superior esquerdo, no canto superior direito, e no canto inferior esquerdo do bloco codificado que inclui bloco A. Por exemplo, o interpreditor 126 calcula o vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente, o vetor de movimento v1 no ponto de controle de canto superior direito bloco corrente, e o vetor de movimento v2 no ponto de controle de canto inferior esquerdo bloco corrente projetando os vetores de movimento v3, v4, e v5 no canto superior esquerdo, no canto superior direito, e no canto inferior esquerdo do bloco codificado sobre o bloco corrente.
[0317] A seguir, o interpreditor 126 executa compensação de movimento de cada um de uma pluralidade de sub-blocos incluída no bloco corrente. Em outras palavras, o interpreditor 126 calcula, para cada um da pluralidade de sub-blocos, um vetor de movimento do sub- bloco como um MV afim, utilizando ou (i) dois preditores de vetor de movimento v0 e v1 e a expressão (1A) acima descrita ou (ii) três preditores de vetor de movimento v0, v1, e v2 e a expressão (1B) acima descrita (Etapa Sk_2). O interpreditor 126 então executa compensação de movimento dos sub-blocos utilizando estes MVs afins e imagens de referência codificadas (Etapa Sk_3). Como um resultado, a compensação de movimento do bloco corrente é executada para gerar uma imagem de predição do bloco corrente. Derivação de MV > Modo Inter Afim
[0318] A Figura 28A é um diagrama conceitual para ilustrar um modo inter afim no qual dois pontos de controle são utilizados.
[0319] No modo inter afim, como ilustrado na Figura 28A, um vetor de movimento selecionado de vetores de movimento do bloco A, bloco B, bloco C codificados os quais são vizinhos ao bloco corrente é utilizado como preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente. Do mesmo modo, um vetor de movimento selecionado de vetores de movimento do bloco D e bloco E codificados os quais são vizinhos ao bloco corrente é utilizado como um preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente.
[0320] A Figura 28B é um diagrama conceitual para ilustrar um modo inter afim no qual três pontos de controle são utilizados.
[0321] No modo inter afim, como ilustrado na Figura 28B, um vetor de movimento selecionado de vetores de movimento do bloco A, bloco B, bloco C codificados os quais são vizinhos ao bloco corrente é utilizado como preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente. Do mesmo modo, um vetor de movimento selecionado de vetores de movimento do bloco D e bloco E codificados os quais são vizinhos ao bloco corrente é utilizado como preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente. Mais ainda, um vetor de movimento selecionado de vetores de movimento do bloco F e bloco G codificados os quais são vizinhos ao bloco corrente é utilizado como preditor de vetor de movimento v2 no ponto de controle de canto inferior esquerdo do bloco corrente.
[0322] A Figura 29 é um fluxograma que ilustra um exemplo de um modo inter afim.
[0323] No modo inter afim como ilustrado, primeiro, o interpreditor 126 deriva preditores de MV (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle de um bloco corrente (Etapa Sj_1). Os pontos de controle são um ponto de canto superior esquerdo do bloco corrente e um ponto de canto superior direito do bloco corrente como ilustrado na Figura 25A, ou um ponto de canto superior esquerdo do bloco corrente, um ponto de canto superior direito do bloco corrente, um ponto de canto inferior esquerdo do bloco corrente como ilustrado na Figura 25B.
[0324] Em outras palavras, o interpreditor 126 deriva os preditores de vetor de movimento (v0, v1) ou (v0, v1, v2) de respectivos dois ou três pontos de controle do bloco corrente selecionando os vetores de movimento de qualquer um dos blocos entre os blocos codificados na vizinhança dos respectivos pontos de controle do bloco corrente ilustrados na Figura 28A ou Figura 28B. Neste tempo, o interpreditor 126 codifica, em um fluxo, informações de seleção de preditor de vetor de movimento para identificar os dois vetores de movimento selecionados.
[0325] Por exemplo, o interpreditor 126 pode determinar, utilizando uma avaliação de custo ou similares, o bloco do qual um vetor de movimento como um preditor de vetor de movimento em um ponto de controle é selecionado dentre blocos codificados vizinhos ao bloco corrente, e pode descrever, em um fluxo de bits, um sinalizador que indica qual preditor de vetor de movimento foi selecionado.
[0326] A seguir, o interpreditor 126 executa estimativa de movimento (Etapas Sj_3 e Sj_4) enquanto atualizando um preditor de vetor de movimento selecionado ou derivado na Etapa Sj_1 (Etapa Sj_2). Em outras palavras, o interpreditor 126 calcula, como um MV afim, um vetor de movimento de cada um dos sub-blocos o qual corresponde a um preditor de vetor de movimento atualizado, utilizando ou expressão (1A) ou expressão (1B) acima descritas (Etapa Sj_3). O interpreditor 126 então executa compensação de movimento dos sub- blocos utilizando estes MVs afins e imagens de referência codificadas (Etapa Sj_4). Como um resultado, por exemplo, o interpreditor 126 determina o preditor de vetor de movimento o qual gera o menor custo como o vetor de movimento em um ponto de controle em um loop de estimativa de movimento (Etapa Sj_5). Neste tempo, o interpreditor 126 ainda codifica, no fluxo, o valor de diferença entre o MV determinado e o preditor de vetor de movimento como uma diferença de MV.
[0327] Finalmente, o interpreditor 126 gera uma imagem de predição para o bloco corrente executando compensação de movimento do bloco corrente utilizando o MV determinado e a imagem de referência codificada (Etapa Sj_6). Derivação de MV > Modo Inter Afim
[0328] Quando modos afins nos quais diferentes números de pontos de controle (por exemplo, dois e três pontos de controle) são utilizados podem ser comutados e sinalizados no nível de CU, o número de pontos de controle em um bloco codificado e o número de pontos de controle no bloco corrente podem ser diferentes um do outro. A Figura 30A e Figura 30B são diagramas conceituais para ilustrar métodos para derivar preditores de vetor de movimento em pontos de controle quando o número de pontos de controle em um bloco codificado e o número de pontos de controle em um bloco corrente são diferentes um do outro.
[0329] Por exemplo, como ilustrado na Figura 30A, quando um bloco corrente tem três pontos de controle no canto superior esquerdo, no canto superior direito, e no canto inferior esquerdo, e o bloco A qual é vizinho à esquerda do bloco corrente foi codificado de acordo com um modo afim no qual dois pontos de controle são utilizados, os vetores de movimento v3 e v4 projetados na posição de canto superior esquerdo e na posição de canto superior direito no bloco codificado que inclui bloco A são derivados. O preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente e o preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente são então calculados de vetores de movimento derivados v3 e v4. Mais ainda, o preditor de vetor de movimento v2 no ponto de controle de canto inferior esquerdo é calculado dos vetores de movimento derivados v0 e v1.
[0330] Por exemplo, como ilustrado na Figura 30B, quando um bloco corrente tem dois pontos de controle no canto superior esquerdo e no canto superior direito, e o bloco A o qual é vizinho à esquerda do bloco corrente foi codificado de acordo com o modo afim no qual três pontos de controle são utilizados, os vetores de movimento v3, v4, e v5 projetados na posição de canto superior esquerdo, na posição de canto superior direito, e na posição de canto inferior esquerdo no bloco codificado que inclui bloco A são derivados. O preditor de vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente e o preditor de vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente são então calculados de vetores de movimento derivados v3, v4, e v5.
[0331] Deve ser notado que este método para derivar preditores de vetor de movimento pode ser utilizado para derivar preditores de vetor de movimento dos respectivos pontos de controle do bloco corrente na Etapa Sj_1 na Figura 29. Derivação de MV > DMVR
[0332] A Figura 31A é um fluxograma que ilustra uma relação entre o modo de mesclagem e DMVR.
[0333] O interpreditor 126 deriva um vetor de movimento de um bloco corrente de acordo com o modo de mesclagem (Etapa Sl_1). A seguir, o interpreditor 126 determina se executar estimativa de um vetor de movimento, isto é, estimativa de movimento (Etapa Sl_2). Aqui, quando determinando não executar estimativa de movimento (Não na Etapa Sl_2), o interpreditor 126 determina o vetor de movimento derivado na Etapa Sl_1 com o vetor de movimento final para o bloco corrente (Etapa Sl_4). Em outras palavras, neste caso, o vetor de movimento do bloco corrente é determinado de acordo com o modo de mesclagem.
[0334] Quando determinando executar estimativa de movimento na Etapa Sl_1 (Sim na Etapa Sl_2), o interpreditor 126 deriva o vetor de movimento final do bloco corrente estimando uma região circundante da imagem de referência especificada pelo vetor de movimento derivado na Etapa Sl_1 (Etapa Sl_3). Em outras palavras, neste caso, o vetor de movimento do bloco corrente é determinado de acordo com o DMVR.
[0335] A Figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo de DMVR para determinar um MV.
[0336] Primeiro, (por exemplo, no modo de mesclagem) o melhor MVP o qual foi ajustado para o bloco corrente é determinado ser um MV candidato. Um pixel de referência é identificado de uma primeira imagem de referência (L0) a qual é uma imagem codificada na direção L0 de acordo com um MV candidato (L0). Do mesmo modo, um pixel de referência é identificado de uma segunda imagem de referência (L1) a qual é uma imagem codificada na direção L1 de acordo com um MV candidato (L1). Um gabarito é gerado calculando uma média destes pixels de referência.
[0337] A seguir, cada uma das regiões circundantes de MVs candidatos da primeira imagem de referência (L0) e à segunda imagem de referência (L1) são estimadas, e o MV o qual gera o menor custo é de- terminado ser o MV final. Deve ser notado que o valor de custo pode ser calculado, por exemplo, utilizando um valor de diferença entre cada um dos valores de pixel no gabarito e um correspondente dos valores de pixel na região de estimativa, os valores de MVs candidatos, etc.
[0338] Deve ser notado que os processos, configurações, e operações aqui descritos tipicamente são basicamente comuns entre o codificador e um decodificador a ser posteriormente descrito.
[0339] Exatamente os mesmos processos exemplares aqui descritos nem sempre precisam ser executados. Qualquer processo para permitir a derivação do MV final por estimativa em regiões circundantes de MVs candidatos pode ser utilizado. Compensação de Movimento > BIO/OBMC
[0340] A compensação de movimento envolve um modo para gerar uma imagem de predição, e corrigir a imagem de predição. O modo é, por exemplo, BIO e OBMC a ser posteriormente descritos.
[0341] A Figura 32 é um fluxograma que ilustra um exemplo de geração de uma imagem de predição.
[0342] O interpreditor 126 gera uma imagem de predição (Etapa Sm_1), e corrige a imagem de predição, por exemplo, de acordo com qualquer um dos modos acima descritos (Etapa Sm_2).
[0343] A Figura 33 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[0344] O interpreditor 126 determina um vetor de movimento de um bloco corrente (Etapa Sn_1). A seguir, o interpreditor 126 gera uma imagem de predição (Etapa Sn_2) e determina se executar um processo de correção (Etapa Sn_3). Aqui, quando determinando executar um processo de correção (Sim na Etapa Sn_3), o interpreditor 126 gera a imagem de predição final corrigindo a imagem de predição (Etapa Sn_4). Quando determinando não executar um processo de correção (Não na Etapa Sn_3), o interpreditor 126 emite a imagem de predição como a imagem de predição final sem corrigir a imagem de predição (Etapa Sn_5).
[0345] Além disso, a compensação de movimento envolve um modo para corrigir uma luminância de uma imagem de predição quando gerando a imagem de predição. O modo é, por exemplo, LIC a ser posteriormente descrita.
[0346] A Figura 34 é um fluxograma que ilustra outro exemplo de geração de uma imagem de predição.
[0347] O interpreditor 126 deriva um vetor de movimento de um bloco corrente (Etapa So_1). A seguir, o interpreditor 126 determina se executar um processo de correção de luminância (Etapa So_2). Aqui, quando determinando executar um processo de correção de luminância (Sim na Etapa So_2), o interpreditor 126 gera a imagem de predição enquanto executando um processo de correção de luminância (Etapa So_3). Em outras palavras, a imagem de predição é gerada utilizando LIC. Quando determinando não executar um processo de correção de luminância (Não na Etapa So_2), o interpreditor 126 gera uma imagem de predição executando compensação de movimento normal, sem executar um processo de correção de luminância (Etapa So_4). Compensação de Movimento > OBMC
[0348] Deve ser notado que um sinal de interpredição pode ser gerado utilizando informações de movimento para um bloco vizinho além de informações de movimento para o bloco corrente obtidas de estimativa de movimento. Mais especificamente, o sinal de interpredição pode ser gerado em unidades de um sub-bloco no bloco corrente executando uma adição ponderada de um sinal de predição com base em informações de movimento obtidas de estimativa de movimento (na imagem de referência) e um sinal de predição baseado em informações de movimento para um bloco vizinho (na imagem corrente). Tal interpredição (compensação de movimento) é também referida como compensação de movimento de bloco sobreposto (OBMC).
[0349] No modo de OBMC, as informações que indicam um tamanho de sub-bloco para OBMC (referido como, por exemplo, um tamanho de bloco de OBMC) podem ser sinalizadas no nível de sequência. Além disso, as informações que indicam se aplicar o modo de OBMC (referido como, por exemplo, um sinalizador de OBMC) podem ser sinalizadas no nível de CU. Deve ser notado que a sinalização de tais informações não necessariamente precisa ser executada no nível de sequência e nível de CU, e podem ser executadas em outro nível (por exemplo, no nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco).
[0350] Exemplos do modo de OBMC serão descritos em mais detalhes. As Figuras 35 e 36 são um fluxograma e um diagrama conceitual para ilustrar um esboço de um processo de correção de imagem de predição executado por um processo de OBMC.
[0351] Primeiro, como ilustrado na Figura 36, uma imagem de predição (Pred) é obtida através de compensação de movimento normal utilizando um vetor de movimento (MV) atribuído para o bloco alvo de processamento (corrente). Na Figura 36, a seta "MV" aponta para uma imagem de referência, e indica o que o bloco corrente da imagem corrente refere de modo a obter uma imagem de predição.
[0352] A seguir, uma imagem de predição (Pred_L) é obtida aplicando um vetor de movimento (MV_L) o qual já foi derivado para o bloco codificado vizinho à esquerda do bloco corrente para o bloco corrente (reutilizando o vetor de movimento para o bloco corrente). O vetor de movimento (MV_L) é indicado por uma seta "MV_L" que indica uma imagem de referência de um bloco corrente. Uma primeira correção de uma imagem de predição é executada sobrepondo duas imagens de predição Pred e Pred_L. Isto provê um efeito de mesclar o limite entre blocos vizinhos.
[0353] Do mesmo modo, uma imagem de predição (Pred_U) é obtida aplicando-se um vetor de movimento (MV_U), que já foi derivado para o bloco codificado vizinho acima do bloco para o bloco corrente (reutilizando o vetor de movimento para o bloco corrente). O vetor de movimento (MV_U) é indicado por uma seta "MV_U" que indica uma imagem de referência de um bloco corrente. Uma segunda correção de uma imagem de predição é executada por sobrepondo a imagem de predição Pred_U às imagens de predição (por exemplo, Pred e Pred_L) sobre as quais a primeira correção foi executada. Isto provê um efeito de mesclar o limite entre blocos vizinhos. A imagem de predição obtida pela segunda correção é uma qual o limite entre os blocos vizinhos foi mesclado (suavizado), e assim é a imagem de predição final do bloco corrente.
[0354] Apesar do exemplo acima ser um método de correção de duas vias utilizando blocos vizinhos esquerdo e superior, deve ser notado que o método de correção pode ser um método de correção de três ou mais vias utilizando também o bloco vizinho direito e/ou o bloco vizinho inferior.
[0355] Deve ser notado que a região na qual tal sobreposição é executada pode ser somente parte de uma região próxima de um limite de bloco ao invés da região de pixel do bloco inteiro.
[0356] Deve ser notado que o processo de correção de imagem de predição de acordo com OBMC para obter uma imagem de predição Pred de uma imagem de referência sobrepondo uma imagem de predição adicional Pred_L e Pred_U foi acima descrito. No entanto,
quando uma imagem de predição é corrigida com base em uma pluralidade de imagens de referência, um processo similar pode ser aplicado a cada uma da pluralidade de imagens de referência. Em tal caso, após as imagens de predição corrigidas serem obtidas das respectivas imagens de referência, executando correção de imagem de OBMC com base na pluralidade de imagens de referência, as imagens de predição corrigidas obtidas são ainda sobrepostas para obter a imagem de predição final.
[0357] Deve ser notado que, em OBMC, a unidade de um bloco corrente pode ser a unidade de um bloco de predição ou a unidade de um sub-bloco obtido ainda dividindo o bloco de predição.
[0358] Um exemplo de um método para determinar se aplicar um processo de OBMC é um método para utilizar um obmc_flag o qual é um sinal que indica se aplicar um processo de OBMC. Como um exemplo específico, um codificador determina se o bloco corrente pertence a uma região que tem um movimento complicado. O codificador ajusta o obmc_flag para um valor de "1" quando o bloco pertence a uma região que tem um movimento complicado e aplica um processo de OBMC quando codificando, e ajusta o obmc_flag para um valor de "0" quando o bloco não pertence a uma região com movimento complicado e codifica o bloco sem aplicar o processo de OBMC. O decodificador comuta entre aplicação e não aplicação de um processo de OBMC decodificando o obmc_flag escrito no fluxo (por exemplo, uma sequência comprimida) e decodificando o bloco alternando entre a aplicação e não aplicação no processo de OBMC de acordo com o valor do sinalizador.
[0359] O interpreditor 126 gera uma imagem de predição retangular para um bloco corrente retangular no exemplo acima. No entanto, o interpreditor 126 pode gerar uma pluralidade de imagens de predição cada uma tendo uma forma diferente de um retângulo para o bloco corrente retangular, e pode combinar a pluralidade de imagens de predição para gerar a imagem de predição retangular final. A forma diferente de um retângulo pode ser, por exemplo, um triângulo.
[0360] A Figura 37 é um diagrama conceitual para ilustrar a geração de duas imagens de predição triangulares.
[0361] O interpreditor 126 gera uma imagem de predição triangular executando compensação de movimento de uma primeira partição que tem uma forma triangular em um bloco corrente utilizando um primeiro MV da primeira partição, para gerar uma imagem de predição triangular. Do mesmo modo, o interpreditor 126 gera uma imagem de predição triangular executando compensação de movimento de uma segunda partição que tem uma forma triangular em um bloco corrente utilizando um segundo MV da segunda partição para gerar uma imagem de predição triangular. O interpreditor 126 então gera uma imagem de predição que tem a mesma forma retangular que a forma retangular do bloco corrente combinando estas imagens de predição.
[0362] Deve ser notado que, apesar da primeira partição e da segunda partição serem triângulos no exemplo ilustrado na Figura 37, a primeira partição e a segunda partição podem ser trapezoides, ou outras formas diferentes uma da outra. Mais ainda, apesar do bloco corrente inclui duas partições no exemplo ilustrado na Figura 37, o bloco corrente pode incluir três ou mais partições.
[0363] Além disso, a primeira partição e a segunda partição podem sobrepor uma à outra. Em outras palavras, a primeira partição e a segunda partição podem incluir a mesma região de pixel. Neste caso, uma imagem de predição para um bloco corrente pode ser gerada utilizando a imagem de predição na primeira partição e uma imagem de predição na segunda partição.
[0364] Além disso, apesar de um exemplo no qual uma imagem de predição é gerada para cada uma de duas partições utilizando interpredição, uma imagem de predição pode ser gerada para pelo menos uma partição utilizando intrapredição. Compensação de Movimento > BIO
[0365] A seguir, um método para derivar um vetor de movimento está descrito. Primeiro, um modo para derivar um vetor de movimento com base em um modelo que assume movimento linear uniforme será descrito. Este modo é também referido como um modo de fluxo ótico bidirecional (BIO).
[0366] A Figura 38 é um diagrama conceitual para ilustrar um modelo que assume movimento linear uniforme. Na Figura 38, (vx, vy) indica um vetor de velocidade, e τ0 e τ1 indicam distâncias temporais entre uma imagem corrente (Cur Pic) e duas imagens de referência (Ref0, Ref1). (MVx0, MVy0) indicam vetores de movimento que correspondem à imagem de referência Ref0, e (MVx1, MVy1) indicam vetores de movimento que correspondem à imagem de referência Ref1.
[0367] Aqui, sob a suposição de movimento linear uniforme exibido por vetores de velocidade (vx, vy), (MVx0, MVy0) e (MVx1, MVy1) são representados como (vxτ0, vyτ0) e (−vxτ1, −vyτ1), respectivamente, e a seguinte equação de fluxo ótico (2) pode ser usada.
[0368] MATH. 3 ∂I(k) / ∂t + vx ∂I (k) / ∂x + vy ∂I(k) / ∂y = 0. (2)
[0369] Aqui, I (k) indica um valor de luma compensado por movimento de imagem de referência k (k = 0, 1). Esta equação de fluxo ótico mostra que a soma de (i) a derivada de tempo do valor de luma, (ii) o produto da velocidade horizontal e do componente horizontal do gradiente espacial de uma imagem de referência, e (iii) o produto da velocidade vertical e do componente vertical do gradiente espacial de uma imagem de referência é igual a zero. Um vetor de movimento de cada bloco obtido de, por exemplo, de uma lista de mesclagens pode ser corrigido em unidades de um pixel, com base em uma combinação da equação de fluxo ótico e da interpolação de Hermite.
[0370] Deve ser notado que um vetor de movimento pode ser derivado no lado decodificador utilizando um método outro do que derivar um vetor de movimento com base em um modelo que assume movimento linear uniforme. Por exemplo, um vetor de movimento pode ser derivado em unidades de um sub-bloco com base em vetores de movimento de blocos vizinhos. Compensação de Movimento > LIC
[0371] A seguir, um exemplo de um modo no qual uma imagem de predição (predição) é gerada utilizando um processo de compensação de iluminação local (LIC) será descrito.
[0372] A Figura 39 é um diagrama conceitual para ilustrar um exemplo de um método de geração de imagem de predição utilizando processo de correção de luminância executado por um processo de LIC.
[0373] Primeiro, um MV é derivado de uma imagem de referência codificada, e uma imagem de referência que corresponde ao bloco corrente é obtida.
[0374] A seguir, informações que indicam como o valor de luma mudou entre a imagem de referência e a imagem corrente são extraídas para o bloco corrente. Esta extração é executada com base nos valores de pixel de luma para a região de referência vizinha esquerda codificada (região de referência circundante) e a região de referência vizinha superior codificada (região de referência circundante), e o valor de pixel de luma na posição correspondente na imagem de referência especificada pelo MV derivado. Um parâmetro de correção de luminância é calculado utilizando as informações que indicam como o valor de luma mudou.
[0375] A imagem de predição para o bloco corrente é gerada executando um processo de correção de luminância no qual o parâmetro de correção de luminância é aplicado na imagem de referência na imagem de referência especificada pelo MV.
[0376] Deve ser notado que a forma da região de referência circundante ilustrada na Figura 39 é apenas um exemplo; a região de referência circundante pode ter uma forma diferente.
[0377] Mais ainda, apesar do processo no qual uma imagem de predição é gerada de uma única imagem de referência ter aqui descrito, casos nos quais uma imagem de predição é gerada de uma pluralidade de imagens de referência podem ser descritos no mesmo modo. A imagem de predição pode ser gerada após executar um processo de correção de luminância das imagens de referência obtidas das imagens de referência no mesmo modo como acima descrito.
[0378] Um exemplo de um método para determinar se aplicar um processo de LIC é um método para utilizar um lic_flag o qual é um sinal que indica se aplicar o processo de LIC. Como um exemplo específico, o codificador determina se o bloco corrente pertence a uma região que tem uma mudança de luminância. O codificador ajuste o lic_flag para um valor de "1" quando o bloco pertence a uma região que tem uma mudança de luminância e aplica um processo de LIC quando codificando, e ajusta o lic_flag para um valor de "0" quando o bloco não pertence a uma região que tem uma mudança de luminância e codifica o bloco corrente sem aplicar um processo de LIC. O decodificador pode decodificar o lic_flag escrito no fluxo e decodificar o bloco corrente comutando entre a aplicação e não aplicação de um processo de LIC de acordo com o valor de sinalizador.
[0379] Um exemplo de um método diferente de determinar se aplicar um processo de LIC é um método de determinação de acordo com se um processo de LIC foi aplicado a um bloco circundante. Em um exemplo específico, quando o modo de mesclagem é utilizado no bloco corrente, se um processo de LIC foi aplicado na codificação do bloco codificado circundante selecionado quando derivando o MV no processo de modo de mesclagem é determinado. De acordo com o resultado, a codificação é executada comutando entre aplicação e não aplicação de um processo de LIC. Deve ser notado que, também neste exemplo, os mesmos processos são aplicados em processos no lado de decodificador.
[0380] Uma modalidade do processo de correção de luminância (LIC) descrito com referência à Figura 39 está abaixo descrita em detalhes.
[0381] Primeiro, o interpreditor 126 deriva um vetor de movimento para obter uma imagem de referência que corresponde a um bloco corrente a ser codificado de uma imagem de referência a qual é uma imagem codificada.
[0382] A seguir, o interpreditor 126 extrai informações que indicam como o valor luma da imagem de referência foi mudado para o valor luma da imagem corrente, utilizando o valor de pixel de luma de uma região de referência circundante codificada a qual é vizinha à esquerda de ou acima do bloco corrente e o valor de luma na posição correspondente na imagem de referência especificada por um vetor de movimento, e calcula um parâmetro de correção de luminância. Por exemplo, é assumido que o valor do pixel de luma de um dado pixel na região de referência circundante na imagem corrente é p0, e que o valor de pixel de luma do pixel que corresponde ao dado pixel na região de referência circundante na imagem de referência é p1. O interpreditor 126 calcula coeficientes A e B para otimizar A × p1 + B = p0 como o parâmetro de correção de luminância para uma pluralidade de pixels na região de referência circundante.
[0383] A seguir, o interpreditor 126 executa um processo de correção de luminância utilizando o parâmetro de correção de luminância para a imagem de referência na imagem de referência especificada pelo vetor de movimento, para gerar uma imagem de predição para o bloco corrente. Por exemplo, é assumido que o valor de pixel de luma na imagem de referência é p2, e que o valor de pixel de luma corrigido em luminância da imagem de predição é p3. O interpreditor 126 gera a imagem de predição após ser sujeita ao processo de correção de luminância calculando A × p2 + B = p3 para cada um dos pixels na imagem de referência.
[0384] Deve ser notado que a forma da região de referência circundante ilustrada na Figura 39 é um exemplo; uma forma diferente outra que a forma da região de referência circundante pode ser utilizada. Além disso, parte da região de referência circundante ilustrada na Figura 39 pode ser utilizada. Por exemplo, uma região que tem um número determinado de pixels extraídos de cada um de um pixel vizinho superior e um pixel vizinho esquerdo pode ser utilizada como uma região de referência circundante. O número de pixels determinado pode ser predeterminado.
[0385] Além disso, a região de referência circundante não está limitada a uma região a qual é vizinha ao bloco corrente, e pode ser uma região a qual não é vizinha ao bloco corrente. No exemplo ilustrado na Figura 39, a região de referência circundante na imagem de referência é uma região especificada por um vetor de movimento em uma imagem corrente, de uma região de referência circundante na imagem corrente. No entanto, uma região especificada por outro vetor de movimento é também possível. Por exemplo, o outro vetor de movimento pode ser um vetor de movimento em uma região de referência circundante na imagem corrente.
[0386] Apesar de operações executadas pelo codificador 100 terem si aqui descritas, deve ser notado que o decodificador 200 tipicamente executa operações similares.
[0387] Deve ser notado que o processo de LIC pode ser aplicado não somente à luma, mas também à croma. Neste tempo, um parâmetro de correção pode ser derivado individualmente para cada um de Y, Cb, e Cr, ou um parâmetro de correção comum pode ser utilizado para qualquer um de Y, Cb, e Cr.
[0388] Além disso, o processo de LIC pode ser aplicado em unidades de um sub-bloco. Por exemplo, um parâmetro de correção pode ser derivado utilizando uma região de referência circundante em um sub-bloco corrente e uma região de referência circundante em um sub-bloco de referência em uma imagem de referência especificada por um MV do sub-bloco corrente. Controlador de Predição
[0389] O controlador de predição 128 seleciona um de um sinal de intrapredição (um sinal emitido do intrapreditor 124) e um sinal de interpredição (um sinal emitido do interpreditor 126), e emite o sinal selecionado para o subtrator 104 e somador 116 como um sinal de predição.
[0390] Como ilustrado na Figura 1, em vários tipos de exemplos de codificadores, o controlador de predição 128 pode emitir um parâmetro de predição o qual é inserido no codificador de entropia 110. O codificador de entropia 110 pode gerar um fluxo de bits codificado (ou uma sequência), com base no parâmetro de predição o qual é inserido do controlador de predição 128 e coeficientes quantizados s quais são inseridos do quantizador 108. O parâmetro de predição pode ser utilizado em um decodificador. O decodificador pode receber e decodificar o fluxo de bits codificado, e executar os mesmos processos que os processos de predição executados pelo intrapreditor 124, interpreditor 126, e controlador de predição 128. O parâmetro de predição pode incluir (i) um sinal de predição de seleção (por exemplo, um vetor de movimento, um tipo de predição, ou um modo de predição utilizados pelo intrapreditor 124 ou interpreditor 126), ou (ii) um índice,
um sinalizador, ou um valor opcional o qual está baseado em um processo de predição executado em cada um do intrapreditor 124, interpreditor 126, e controlador de predição 128, ou qual indica o processo de predição. Exemplo de Montagem do Codificador
[0391] A Figura 40 é um diagrama de blocos que ilustra um exemplo de montagem do codificador 100. O codificador 100 inclui um processador a1 e uma memória a2. Por exemplo, a pluralidade de elementos constituintes no codificador 100 ilustrado na Figura 1 está montada no processador a1 e na memória a2 ilustrados na Figura 40.
[0392] O processador a1 é o circuito o qual executa processamento de informações e é acessível à memória a2. Por exemplo, o processador a1 é um circuito eletrônico dedicado ou geral o qual codifica um vídeo. O processador a1 pode ser um processador tal como uma CPU. Além disso, o processador a1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, por exemplo, o processador a1 pode assumir as funções de dois ou mais elementos constituintes dentre a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1, etc.
[0393] A memória a2 é uma memória dedicada ou geral para armazenar informações que são utilizadas pelo processador a1 para codificar um vídeo. A memória a2 pode ser um circuito eletrônico, e pode estar conectado no processador a1. Além disso, a memória a2 pode estar incluída no processador a1. Além disso, a memória a2 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, a memória a2 pode ser um disco magnético, um disco ótico, ou similares, ou pode ser representada como um armazenamento, um meio de gravação, ou similares. Além disso, a memória a2 pode ser uma memória não volátil, ou memória volátil.
[0394] Por exemplo, a memória a2 pode armazenar um vídeo a ser codificado ou um fluxo de bits que corresponda a um vídeo codificado. Além disso, a memória a2 pode armazenar um programa para fazer com que o processador a1 codifique um vídeo.
[0395] Além disso, por exemplo, a memória a2 pode assumir as funções de dois ou mais elementos constituintes para armazenar informações dentre a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1, etc. Por exemplo, a memória a2 pode assumir as funções de memória de blocos 118 e memória de quadros 122 ilustradas na Figura 1. Mais especificamente, a memória a2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[0396] Deve ser notado que, no codificador 100, toda a pluralidade de elementos constituintes indicados na Figura 1, etc. pode não ser implementada, e todos os processos acima descritos podem não ser executados. Parte dos elementos constituintes indicados na Figura 1, etc. pode ser incluída em outro dispositivo, ou parte dos processos acima descritos pode ser executada por outro dispositivo. Decodificador
[0397] A seguir, um decodificador capaz de decodificar um sinal codificado (fluxo de bits codificado) emitido, por exemplo, do codificador 100 acima descrito será descrito. A Figura 41 é um diagrama de blocos que ilustra uma configuração funcional do decodificador 200 de acordo com uma modalidade. O decodificador 200 é um decodificador de vídeo o qual decodifica um vídeo em unidades de um bloco.
[0398] Como ilustrado na Figura 41, o decodificador 200 inclui um decodificador de entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, memória de blocos 210, filtro de loop 212, memória de quadros 214, intrapreditor 216, interpreditor 218, e controlador de predição 220.
[0399] O decodificador 200 é implementado como, por exemplo, um processador e memória genéricos. Neste caso, quando um programa de software armazenado na memória é executado pelo processador, o processador funciona como o decodificador de entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, filtro de loop 212, intrapreditor 216, interpreditor 218, e controlador de predição 220. Alternativamente, o decodificador 200 pode ser implementado como um ou mais circuitos eletrônicos dedicados que correspondem ao decodificador de entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, filtro de loop 212, intrapreditor 216, interpreditor 218, e controlador de predição 220.
[0400] Daqui em diante, um fluxo de processos geral executado pelo decodificador 200 está descrito, e então cada um dos elementos constituintes incluídos no decodificador 200 será descrito. Fluxo Geral de Processo de Decodificação
[0401] A Figura 42 é um fluxograma que ilustra um exemplo de um processo de decodificação geral executado pelo decodificador 200.
[0402] Primeiro, o decodificador de entropia 202 do decodificador 200 identifica um padrão de divisão de um bloco que tem um tamanho fixo (por exemplo, 128×128 pixels) (Etapa Sp_1). Este padrão de divisão é um padrão de divisão selecionado pelo codificador 100. O decodificador 200 então executa os processos da Etapa Sp_2 até Sp_6 para cada um da pluralidade de blocos do padrão de divisão.
[0403] Em outras palavras, o decodificador de entropia 202 decodifica (especificamente, decodifica em entropia) coeficientes quantizados codificados e um parâmetro de predição de um bloco corrente a ser decodificado (também referido como um bloco corrente) (Etapa Sp_2).
[0404] A seguir, o quantizador inverso 204 executa uma quantização inversa da pluralidade de coeficientes quantizados e o transformador inverso 206 executa transformada inversa do resultado,
para restaurar uma pluralidade de resíduos de predição (isto é, um bloco de diferença) (Etapa Sp_3).
[0405] A seguir, o processador de predição que inclui todos ou parte do intrapreditor 216, interpreditor 218, e controlador de predição 220 gera um sinal de predição (também referido como um bloco de predição) do bloco corrente (Etapa Sp_4).
[0406] A seguir, o somador 208 soma o bloco de predição ao bloco de diferença para gerar uma imagem reconstruída (também referida como um bloco de imagem decodificado) do bloco corrente (Etapa Sp_5).
[0407] Quando a imagem reconstruída é gerada, o filtro de loop 212 executa filtragem da imagem reconstruída (Etapa Sp_6).
[0408] O decodificador 200 então determina se a decodificação da imagem inteira terminou (Etapa Sp_7). Quando determinando que a decodificação ainda não terminou (Não na Etapa Sp_7), o decodificador 200 repetidamente executa os processos começando com a Etapa Sp_1.
[0409] Como ilustrado, os processos das Etapas Sp_1 até Sp_7 são executados sequencialmente pelo decodificador 200. Alternativamente, dois ou mais dos processos podem ser executados em paralelo, a ordem de processamento dos dois ou mais dos processos pode ser modificada etc. Decodificador de Entropia
[0410] O decodificador de entropia 202 decodifica em entropia um fluxo de bits codificado. Mais especificamente, por exemplo, o decodificador de entropia 202 decodifica em aritmética um fluxo de bits codificado em um sinal binário. O decodificador de entropia 202 então debinariza o sinal binário. Com isto, o decodificador de entropia 202 emite coeficientes quantizados de cada bloco para o quantizador inverso 204. O decodificador de entropia 202 pode emitir um parâmetro de predição incluído em um fluxo de bits codificado (ver Figura 1) para o intrapreditor 216, interpreditor 218, e controlador de predição 220. O intrapreditor 216, interpreditor 218, e controlador de predição 220 em uma modalidade são capazes de executar os mesmos processos de predição que aqueles executados pelo intrapreditor 124, interpreditor 126, e controlador de predição 128 no lado de codificador. Quantizador Inverso
[0411] O quantizador inverso 204 quantiza inverso os coeficientes quantizados de um bloco a ser decodificado (daqui em diante referido como um bloco corrente) os quais são entradas do decodificador de entropia 202. Mais especificamente, o quantizador inverso 204 quantiza inverso os coeficientes quantizados do bloco corrente, com base em parâmetros de quantização que correspondem aos coeficientes quantizados. O quantizador inverso 204 então emite os coeficientes de transformada quantizados inversos do bloco corrente para o transformador inverso 206. Transformador Inverso
[0412] O transformador inverso 206 restaura os erros de predição transformando inverso os coeficientes de transformada os quais são entradas do quantizador inverso 204.
[0413] Por exemplo, quando as informações analisadas de um fluxo de bits codificado indicam que EMT ou AMT deve ser aplicada (por exemplo, quando um sinalizador de AMT é verdadeiro), o transformador inverso 206 transforma inverso os coeficientes de transformada do bloco corrente com base em informações que indicam o tipo de transformada analisado.
[0414] Mais ainda, por exemplo, quando as informações analisadas de um fluxo de bits codificado indicam que NSST deve ser aplicada, o transformador inverso 206 aplica uma transformada inversa secundária nos coeficientes de transformada.
Somador
[0415] O somador 208 reconstrói o bloco corrente somando os erros de predição os quais são entradas do transformador inverso 206 e amostras de predição as quais são entradas do controlador de predição
220. O somador 208 então emite o bloco reconstruído para a memória de blocos 210 e o filtro de loop 212. Memória de Blocos
[0416] A memória de blocos 210 é um armazenando para armazenar blocos em uma imagem a ser decodificada (daqui em diante referida como uma imagem corrente) e a ser referida em intrapredição. Mais especificamente, a memória de blocos 210 armazena blocos reconstruídos emitidos do somador 208. Filtro de Loop
[0417] O filtro de loop 212 aplica um filtro de loop a blocos reconstruídos pelo somador 208, e emite os blocos reconstruídos filtrados para a memória de quadros 214, dispositivo de display, etc.
[0418] Quando informações que indica ON ou OFF de um ALF analisado de um fluxo de bits codificado indicam que ALF está ON, um filtro dentre uma pluralidade de filtros é selecionado com base na direção e atividade de gradientes locais, e o filtro selecionado é aplicado no bloco reconstruído. Memória de Quadros
[0419] A memória de quadros 214 é, por exemplo, um armazenamento para armazenar imagens de referência para utilização em interpredição, e é também referida como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 214 armazena um bloco reconstruído filtrado pelo filtro de loop 212. Processador de Predição (Intrapreditor, Interpreditor, Controlador de Predição)
[0420] A Figura 43 é um fluxograma que ilustra um exemplo de um processo executado por um processador de predição do decodificador
200. Deve ser notado que o processador de predição inclui todos ou parte dos seguintes elementos constituintes: intrapreditor 216; interpreditor 218; e controlador de predição 220.
[0421] O processador de predição gera uma imagem de predição de um bloco corrente (Etapa Sq_1). Esta imagem de predição é também referida como um sinal de predição ou um bloco de predição. Deve ser notado que o sinal de predição é, por exemplo, um sinal de intrapredição ou um sinal de interpredição. Especificamente, o processador de predição gera a imagem de predição do bloco corrente utilizando uma imagem reconstruída a qual já foi obtida através de geração de um bloco de predição, geração de um bloco de diferença, geração de um bloco de coeficiente, restauração de um bloco de diferença, e geração de um bloco de imagem decodificado.
[0422] A imagem reconstruída pode ser, por exemplo, uma imagem em uma imagem de referência, ou uma imagem de um bloco decodificado em uma imagem corrente a qual é a imagem que inclui o bloco corrente. O bloco decodificado na imagem corrente é, por exemplo, um bloco vizinho do bloco corrente.
[0423] A Figura 44 é um fluxograma que ilustra outro exemplo de um processo executado pelo processador de predição do decodificador
200.
[0424] O processador de predição determina ou um método ou um modo para gerar uma imagem de predição (Etapa Sr_1). Por exemplo, o método ou modo pode ser determinado com base em, por exemplo, um parâmetro de predição, etc.
[0425] Quando determinando um primeiro método como um modo para gerar uma imagem de predição, o processador de predição gera uma imagem de predição de acordo com o primeiro método (Etapa Sr_2a). Quando determinando um segundo método como um modo para gerar uma imagem de predição, o processador de predição gera uma imagem de predição de acordo com o segundo método (Etapa Sr_2b). Quando determinando um terceiro método como um modo para gerar uma imagem de predição, o processador de predição gera uma imagem de predição de acordo com o terceiro método (Etapa Sr_2c).
[0426] O primeiro método, o segundo método e o terceiro método podem ser métodos mutuamente diferentes para gerar uma imagem de predição. Cada um do primeiro ao terceiro métodos pode ser um método de interpredição, um método de intrapredição ou outro método de predição. A imagem reconstruída acima descrita pode ser utilizada nestes métodos de predição. Intrapreditor
[0427] O intrapreditor 216 gera um sinal de predição (sinal de intrapredição) executando intrapredição referindo a um bloco ou blocos na imagem corrente armazenados na memória de blocos 210, com base no modo de intrapredição analisado do fluxo de bits codificado. Mais especificamente, o intrapreditor 216 gera um sinal de intrapredição executando intrapredição referindo a amostras (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco corrente, e então emite o sinal de intrapredição para o controlador de predição 220.
[0428] Deve ser notado que quando um modo de intrapredição no qual um bloco de luma é referido em intrapredição de um bloco de croma é selecionado, o intrapreditor 216 pode predizer o componente de croma do bloco corrente com base no componente de luma do bloco corrente.
[0429] Mais ainda, quando as informações analisadas de um fluxo de bits codificado indicam que a PDPC deve ser aplicada, o intrapreditor 216 corrige os valores de pixel intrapreditos com base em gradientes de pixel de referência horizontal/vertical. Interpreditor
[0430] O interpreditor 218 prediz o bloco corrente referindo a uma imagem de referência armazenada na memória de quadros 214. A interpredição é executada em unidades de um bloco ou um sub-bloco corrente (por exemplo, um bloco de 4×4) no bloco corrente. Por exemplo, o interpreditor 218 gera um sinal de interpredição do bloco ou do sub-bloco corrente executando compensação de movimento utilizando informações de movimento (por exemplo, um vetor de movimento) analisadas de um fluxo de bits codificado (por exemplo, um parâmetro de predição emitido do decodificador de entropia 202), e emite o sinal de interpredição para o controlador de predição 220.
[0431] Deve ser notado que quando as informações analisadas do fluxo de bits codificado indicam que o modo de OBMC dever ser aplicado, o interpreditor 218 gera o sinal de interpredição utilizando informações de movimento de um bloco vizinho além de informações de movimento do bloco corrente obtidas de estimativa de movimento.
[0432] Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam que o modo de FRUC deve ser aplicado, o interpreditor 218 deriva as informações de movimento executando estimativa de movimento de acordo com o método de coincidência de padrões (coincidência bilateral ou coincidência de gabaritos) analisado do fluxo de bits codificado. O interpreditor 218 então executa compensação de movimento (predição) utilizando as informações de movimento derivadas.
[0433] Mais ainda, quando o modo de BIO deve ser aplicado, o interpreditor 218 deriva um vetor de movimento com base em um modelo que assume movimento linear uniforme. Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam que o modo de predição de compensação de movimento afim deve ser aplicado, o interpreditor 218 deriva um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizinhos.
Derivação de MV > Modo Inter Normal
[0434] Quando as informações analisadas de um fluxo de bits codificado indicam que o modo inter normal deve ser aplicado, o interpreditor 218 deriva um MV com base nas informações analisadas do fluxo de bits codificado e executa compensação de movimento (predição) utilizando o MV.
[0435] A Figura 45 é um fluxograma que ilustra um exemplo de interpredição em modo inter normal no decodificador 200.
[0436] O interpreditor 218 do decodificador 200 executa compensação de movimento para cada bloco. O interpreditor 218 obtém uma pluralidade de MVs candidatos para um bloco corrente com base em informações tais como MVs de uma pluralidade de bloco decodificados temporalmente ou espacialmente circundando o bloco corrente (Etapa Ss_1). Em outras palavras, o interpreditor 218 gera uma lista de MVs candidatos.
[0437] A seguir, o interpreditor 218 extrai N (um inteiro de 2 ou maior) MVs candidatos da pluralidade de MVs candidatos obtida na Etapa Ss_1, como candidatos de preditor de vetor de movimento (também referidos como candidatos de preditor de MV) de acordo com uma ordem de prioridade determinada (Etapa Ss_2). Deve ser notado que a ordem de prioridade pode ser determinada com antecedência para cada um dos N candidatos de preditor de MV.
[0438] A seguir, o interpreditor 218 decodifica as informações de seleção de preditor de vetor de movimento de um fluxo de entrada (isto é, um fluxo de bits codificado), e seleciona, um candidato de preditor de MV dos N candidatos de preditor de MV utilizando as informações de seleção de preditor de vetor de movimento decodificadas, como um vetor de movimento (também referido como um preditor de MV) do bloco corrente (Etapa Ss_3).
[0439] A seguir, o interpreditor 218 decodifica uma diferença de MV do fluxo de entrada, e deriva um MV para um bloco corrente adicionando um valor de diferença a qual é diferença de MV codificada e um preditor de vetor de movimento selecionado (Etapa Ss_4).
[0440] Finalmente, o interpreditor 218 gera uma imagem de predição para o bloco corrente executando compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência decodificada (Etapa Ss_5). Controlador de Predição
[0441] O controlador de predição 220 seleciona ou o sinal de intrapredição ou o sinal de interpredição, e emite o sinal de predição selecionado para o somador 208. Como um todo, as configurações, funções, e processos do controlador de predição 220, intrapreditor 216, e interpreditor 218 no lado de decodificador podem corresponder às configurações, funções, e processos de controlador de predição 128, intrapreditor 124, e interpreditor 126 no lado de codificador. Exemplo de Montagem do Decodificador
[0442] A Figura 46 é um diagrama de blocos que ilustra um exemplo de montagem do decodificador 200. O decodificador 200 inclui processador b1 e uma memória b2. Por exemplo, a pluralidade de elementos constituintes do decodificador 200 ilustrada na Figura 41 está montada no processador b1 e na memória b2 ilustrados na Figura
46.
[0443] O processador b1 é o circuito o qual executa processamento das informações e é acessível para memória b2. Por exemplo, o processador b1 é um circuito eletrônico dedicado ou geral o qual decodifica um vídeo (isto é, um fluxo de bits codificado). O processador b1 pode ser um processador tal como uma CPU. Além disso, o processador b1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, por exemplo, o processador b1 pode assumir as funções de dois ou mais elementos constituintes dentre a pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 41, etc.
[0444] A memória b2 é uma memória dedicada ou geral para armazenar informações que são utilizadas pelo processador b1 para decodificar um fluxo de bits codificado. A memória b2 pode ser um circuito eletrônico, e pode estar conectada no processador b1. Além disso, a memória b2 pode estar incluída no processador b1. Além disso, a memória b2 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, a memória b2 pode ser um disco magnético, um disco ótico, ou similares, ou pode ser representada como um armazenamento, um meio de gravação, ou similares. Além disso, a memória b2 pode ser uma memória não volátil, ou uma memória volátil.
[0445] Por exemplo, a memória b2 pode armazenar um vídeo ou um fluxo de bits. Além disso, a memória b2 pode armazenar um programa para fazer com que o processador b1 decodifique um fluxo de bits codificado.
[0446] Além disso, por exemplo, a memória b2 pode assumir as funções de dois ou mais elementos constituintes para armazenar informações dentre a pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 41, etc. Especificamente, a memória b2 pode assumir as funções de memória de blocos 210 e memória de quadros 214 ilustradas na Figura 41. Mais especificamente, a memória b2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[0447] Deve ser notado que, no decodificador 200, todos da pluralidade de elementos constituintes ilustrados na Figura 41, etc. podem não ser implementados, e todos os processos acima descritos podem não ser executados. Parte dos elementos constituintes indicados na Figura 41, etc. pode ser incluída em outro dispositivo, ou parte dos processos acima descritos pode ser executada por outro dispositivo.
Definições de Termos
[0448] Os respectivos termos podem ser definidos como abaixo indicado como exemplos.
[0449] Uma imagem é uma rede de amostras de luma em formato monocromático ou uma rede de amostras de luma em duas redes correspondentes de amostras de croma em formato de cor 4:2:0, 4:2:2, e 4:4:4. Uma imagem pode ser ou um quadro ou um campo.
[0450] Um quadro é a composição de um campo superior e um campo inferior, onde linhas de amostras 0, 2, 4,... originam do campo superior e linhas de amostras 1, 3, 5,... originam do campo inferior.
[0451] Uma fatia é um número inteiro de unidade de árvore de codificação contidas em um segmento de fatia independente e todos os segmentos de fatia dependentes subsequentes (se existirem) que precedem o próximo segmento de fatia independente (se existir) dentro da mesma unidade de acesso.
[0452] Uma tela lado a lado é uma região retangular de blocos de árvore de codificação dentro de uma coluna de telas lado a lado específica e uma linha de telas lado a lado específica em uma imagem. Uma tela ao lado a lado pode ser uma região retangular do quadro que está destinada a ser capaz de ser decodificada e codificada independentemente, apesar de que a filtragem de loop através de bordas de telas a lado do lado poder ainda ser aplicada.
[0453] Um bloco é uma rede de amostras M × N (M colunas por N linhas), ou uma rede M × N de coeficientes de transformada. Um bloco pode ser uma região de pixels quadrada ou retangular que inclui uma matriz de Luma e duas de Croma.
[0454] Uma unidade de árvore de codificação (CTU) pode ser um bloco de árvore de codificação de amostras de luma de uma imagem que tem três redes de amostra, ou dois blocos de árvore de codificação correspondentes de amostras de croma. Alternativamente, uma CTU pode ser um bloco de árvore de codificação de amostras de uma imagem monocromática e uma imagem que é codificada utilizando três planos de cor separados e estruturas de sintaxe utilizadas para codificar as amostras.
[0455] Um superbloco pode ser um bloco quadrado de 64×64 pixels que consiste em 1 ou 2 blocos de informações de modo ou é recursivamente particionado em quatro blocos de 32×32, os quais estes próprios podem ser ainda particionados. Modalidade 2
[0456] O codificador 100 de acordo com a presente modalidade tem uma configuração equivalente à configuração descrita na Modalidade 1. Mais ainda, o quantizador 108, quantizador inverso 112, e codificador de entropia 110 do codificador 100 de acordo com a presente modalidade têm funções adicionais ou alternativa às funções descritas na Modalidade 1. Do mesmo modo, o decodificador 200 de acordo com a presente modalidade tem uma configuração equivalente à configuração descrita na Modalidade 1. Mais ainda, o quantizador inverso 204 e decodificador de entropia 202 do decodificador 200 de acordo com a presente modalidade, têm funções adicionais ou alternativas às funções descritas na Modalidade 1.
[0457] Por exemplo, o quantizador 108 de acordo com a presente modalidade executa quantização dependente (DQ), e quantizadores inversos 112 e 204 de acordo com a presente modalidade executam quantização inversa que corresponde à DQ. Além disso, o codificador de entropia 110 de acordo com a presente modalidade executa codificação aritmética sobre um coeficiente quantizado utilizando um sinalizador, e o decodificador de entropia 202 executa decodificação aritmética sobre um coeficiente quantizado sobre o qual a codificação aritmética foi executada utilizando um sinalizador.
[0458] O primeiro até o terceiro aspectos abaixo descritos são aspectos específicos dos processos executadas pelo codificador 100 e decodificador 200 de acordo com a presente modalidade. Primeiro Aspecto Esboço de Codificação de Coeficiente
[0459] O codificador de entropia 110 do codificador 100 de acordo com a presente modalidade transforma o coeficiente quantizado acima descrito para ser em um formato no qual pelo menos um sinalizador é utilizado (daqui em diante referido como um formato de sinalizador), e executa codificação aritmética no coeficiente quantizado no formato. Deve ser notado que um coeficiente quantizado é um valor obtido como um resultado de executar transformação e quantização em um resíduo de predição gerado por interpredição ou intrapredição. O coeficiente quantizado é também referido como um coeficiente de resíduo. O coeficiente quantizado é também referido simplesmente como um coeficiente na descrição abaixo.
[0460] O codificador de entropia 110 transforma um coeficiente para ser em um formato de sinalizador no qual pelo menos um de: um significant_flag (daqui em diante referido como um sig_flag); um parity_flag; um greater_flag (daqui em diante referido como um gt1_flag); um grea-ter2_flag (daqui em diante referido como um gt2_flag); e um restante é utilizado.
[0461] O sig_flag é um sinalizador que indica se um coeficiente é 0 ou não. Por exemplo, o sig_flag indica 0 quando o coeficiente é 0, e indica 1 quando o coeficiente não é 0.
[0462] O parity_flag é um sinalizador utilizado quando o coeficiente não é 0, e indica se o coeficiente é par ou ímpar. Em outras palavras, o parity_flag é um sinalizador o qual indica que o primeiro bit de um coeficiente (por exemplo, o bit menos significativo) é 0 ou 1. Por exemplo, o parity_flag indica 1 quando um coeficiente é par, e indica 0 quando um coeficiente é ímpar. Além disso, o parity_flag é utilizado juntamente com o sig_flag, e indica um valor de 1 a 2 em combinação com o sig_flag.
[0463] O gt1_flag é um sinalizador utilizado quando o coeficiente não é 0, e indica se um valor absoluto do coeficiente é maior do que ou igual a 3, por exemplo. Por exemplo, o gt1_flag indica 1 quando o valor absoluto de um coeficiente é maior do que ou igual a 3, e indica 0 quando o valor absoluto de um coeficiente não é maior do que ou igual a 3.
[0464] O gt2_flag é um sinalizador utilizado quando o valor absoluto de um coeficiente é maior do que ou igual a 3 (em outras palavras, no caso onde gt1_flag = 1), e indica se o valor absoluto do coeficiente é maior do que ou igual a 5, por exemplo. Por exemplo, o gt2_flag indica 1 quando o valor absoluto de um coeficiente é maior do que ou igual a 5, e indica 0 quando o valor absoluto de um coeficiente não é maior do que ou igual a 5.
[0465] O restante é um valor utilizado para um coeficiente de gt2_flag = 1, e indicado por (AbsLevel - 5)/2, por exemplo. Deve ser notado que AbsLevel é um valor absoluto de um coeficiente. Além disso, o número do valor após a vírgula decimal de (AbsLevel - 5)/2 pode ser truncado.
[0466] Consequentemente, o decodificador de entropia 202 AbsLevel por "AbsLevel = sig_flag + parity_flag + 2 * gt1_flag + 2 * gt2_flag + 2 * restante".
[0467] Deve ser notado que o parity_flag não é utilizado de acordo com o padrão de H.265/HEVC. Consequentemente, em decodificação de entropia, o AbsLevel é calculado por "AbsLevel = sig_flag + gt1_flag + gt2_flag + restante".
[0468] Aqui, o parity_flag pode ser utilizado na DQ acima descrita, por exemplo.
[0469] A Figura 47 é um diagrama para explicar um esboço de Quantização dependente (DQ).
[0470] O quantizador 108 do codificador 100 comuta entre e utiliza dois quantizadores diferentes um do outro. Deve ser notado que estes dois quantizadores respectivamente utilizam dois métodos de quantização diferentes um do outro, e assim pode ser dito que o quantizador 108 comuta entre e utiliza dois métodos de quantização diferentes um do outro.
[0471] Os dois quantizadores são um primeiro quantizador Q0 e um segundo quantizador Q1 como ilustrado na Figura 47. O primeiro quantizador Q0 utiliza uma largura de quantização igual a qual é determinada com base em um parâmetro de quantização, e o segundo quantizador Q1 utiliza pelo menos duas larguras de quantização diferentes uma da outra. Em um exemplo específico, como ilustrado na Figura 47, uma largura de quantização utilizada para a faixa entre um valor numérico "0" e o valor numérico "1" e a faixa entre um valor numérico "0" e o valor numérico "-1" é a metade de uma largura de quantização utilizada fora destas faixas, no segundo quantizador Q1. Por exemplo, os quantizadores inversos 112 e 204 executam quantização inversa nos valores numéricos "1", "2", e "3" incluídos em um fluxo de bits em "12", "24", e "36", respectivamente, quando o primeiro quantizador Q0 é utilizado. Entrementes, os quantizadores inversos 112 e 204 executam quantização inversa em valores numéricos "1", "2", e "3" incluídos em um fluxo de bits em "6", "18", e "30", respectivamente, quando o segundo quantizador Q1 é utilizado.
[0472] A Figura 48 e Figura 49 são diagramas que ilustram um exemplo de transição de estado do quantizador 108. Mais especificamente, a Figura 48 é um diagrama o qual visualmente ilustra transição de estado. A Figura 49 é um diagrama que ilustra a transição de estado em um formato de tabela bidimensional, e indica um estado antes da transição e um estado após a transição que é determinado por um coeficiente quantizado.
[0473] O quantizador 108 pode assumir quatro estados. Os quatro estados são estado = 0, 1, 2, e 3. No caso onde estado = 0 ou 1, o quantizador 108 executa quantização utilizando o primeiro quantizador Q0, e no caso de estado = 2 ou 3, o quantizador 108 executa quantização utilizando o segundo quantizador Q1.
[0474] No estado inicial, o estado é, por exemplo, estado = 0. Neste tempo, o quantizador 108 quantiza, utilizando o primeiro quantizador Q0, um coeficiente de pré-quantização que é o primeiro coeficiente em ordem de escaneamento, e por meio disto calcula um coeficiente quantizado. Deve ser notado que o coeficiente de pré-quantização é um coeficiente antes da quantização ser executada neste, e é o coeficiente de transformada acima descrito. Como um resultado, o quantizador 108 transiciona para o estado = 0 quando o primeiro bit de coeficiente quantizado k é 0, e transiciona para estado = 2 quando o primeiro bit do coeficiente quantizado k é 1. Consequentemente, o quantizador 108 calcula um novo coeficiente quantizado k quantizando um coeficiente de pré-quantização que é o próximo coeficiente em ordem de escaneamento, utilizando um quantizador que corresponde ao estado após a transição. Como acima descrito, o quantizador 108, cada vez que um novo coeficiente quantizado k é obtido, transiciona um estado de acordo com se o primeiro bit do novo coeficiente quantizado k é 0 ou
1.
[0475] Deve ser notado que, em DQ, apesar do quantizador 108 utilizar dois quantizadores, o quantizador 108 pode utilizar três ou mais quantizadores, e pode executar uma transição de estado diferente da transição de estado ilustrada na Figura 48 e Figura 49.
[0476] Além disso, o parity_flag acima descrito indica que o primeiro bit de coeficiente quantizado k é 0 ou 1. Consequentemente, em DQ, o quantizador 108 pode determinar um quantizador a ser utilizado para o próximo coeficiente de pré-quantização, de acordo com o parity_flag.
[0477] Mais ainda, quantizadores inversos 112 e 204 também executam transições de estado utilizando uma pluralidade de quantizadores em DQ, no mesmo modo que o quantizador 108.
[0478] A Figura 50 é um diagrama que ilustra um exemplo de binarização de um restante.
[0479] O codificador de entropia 110 codifica um restante utilizando uma codificação de Golomb-Rice. Além disso, o codificador de entropia 110 comuta o método de codificação de um restante, utilizando um parâmetro de Rice, por exemplo. Por exemplo, um parâmetro de Rice pode assumir três valores, tal como g = 0, 1, e 2. Deve ser notado que g é uma variável que indica um parâmetro de Rice. Consequentemente, o codificador de entropia 110 seleciona um método de codificação de acordo com um valor indicado por um parâmetro de Rice dentre três métodos de codificação, e codifica um restante utilizando o método de codificação selecionado. Deve ser notado que o método de codificação pode ser referido como um método de binarização.
[0480] Além disso, o codificador de entropia 110 binariza um restante utilizando um prefixo e um sufixo em codificação de Golomb- Rice. A codificação de Rice é utilizada quando utilizando o prefixo, e codificação unária e código de índice de Golomb são utilizados quando utilizando o sufixo.
[0481] Por exemplo, o codificador de entropia 110 binariza um restante utilizando um prefixo sem utilizar um sufixo quando o parâmetro de Rice é g = 0, como ilustrado na Figura 50. Entrementes, o codificador de entropia 110 binariza um restante utilizando um prefixo e um sufixo quando o parâmetro de Rice é g = 1 ou 2.
[0482] Além disso, no exemplo ilustrado na Figura 50, como o valor de um restante é menor, o método de codificação no caso de g = 0 pode binarizar o restante em um menor número de bits do que os outros métodos de codificação. Por outro lado, como o valor de um restante é maior, o método de codificação no caso de g = 2 pode binarizar o restante em um menor número de bits do que os outros métodos de codificação. Além disso, quando o valor de um restante não é pequeno ou grande, o método de codificação no caso de g = 1 pode binarizar o restante em um menor número de bits do que os outros métodos de codificação.
[0483] Deve ser notado que, no exemplo ilustrado na Figura 50, o parâmetro de Rice c assume três valores. No entanto, o parâmetro de Rice pode assumir quatro ou mais valores. Neste caso, o codificador de entropia 110 seleciona um método de codificação, de acordo com o parâmetro de Rice dentre quatro ou mais métodos de codificação (isto é, métodos de binarização), e codifica um restante utilizando o método de codificação selecionado.
[0484] Deve ser notado que o decodificador de entropia 202 pode comutar o método de decodificação (especificamente, um método de debinarização) de acordo com um parâmetro de Rice, no mesmo modo que o codificador de entropia 110.
[0485] A Figura 51 é um diagrama para descrever um método de determinar um parâmetro de Rice. Mais especificamente, a Figura 51 indica um coeficiente corrente a ser codificado (o quadrado preto indicado na Figura 51) e cinco coeficientes localizados ao redor do coeficiente corrente (os quadrados hachurados indicados na Figura 51) entre os coeficientes incluídos em um bloco (por exemplo, uma unidade de transformada).
[0486] Por exemplo, quando codificando o coeficiente corrente, o codificador de entropia 110 determina um parâmetro de Rice para o coeficiente corrente, utilizando os cinco coeficientes (daqui em diante referidos como coeficientes circundantes) localizados ao redor do coeficiente corrente. Os cinco coeficientes circundantes incluem dois coeficientes dispostos horizontalmente à direita do coeficiente corrente, dois coeficientes dispostos verticalmente sob o coeficiente corrente, e um coeficiente localizado à direita inferior do coeficiente corrente. Deve ser notado que estes cinco coeficientes circundantes são codificados antes de codificar o coeficiente corrente na codificação, e estes cinco coeficientes circundantes são decodificados antes de decodificar um coeficiente corrente a ser decodificado (o mesmo coeficiente que o coeficiente corrente a ser codificado) na decodificação.
[0487] O codificador de entropia 110 calcula um sum_minus1 por sum_minus1 = sum_abs – num_sig, para determinar um parâmetro de Rice. O sum_abs é um valor absoluto de uma soma dos cinco coeficientes circundantes. O num_sig é o número de coeficientes os quais não são 0 entre os cinco coeficientes circundantes. Deve ser notado que, o método de derivar um sum_minus1 acima descrito é meramente um exemplo, e assim outros métodos podem ser utilizados em derivar um sum_minus1. Por exemplo, o sum_minus1 pode ser derivado por sum_minus1 = sum_abs sem utilizar o num_sig, ou outro valor de deslocamento pode ser utilizando ao invés do num_sig para derivar o sum_minus1 por sum_minus1 = sum_abs – valor de deslocamento.
[0488] Através do cálculo, quando sum_minus1 < 12, o codificador de entropia 110 determina um parâmetro de Rice para ser g = 0. Além disso, quando 12 ≤ sum_minus1 < 25, o codificador de entropia 110 determina um parâmetro de Rice para ser g = 1. Além disso, quando 25 ≤ sum_minus1, o codificador de entropia 110 determina um parâmetro de Rice para ser g = 2. O codificador de entropia 110 seleciona um método de codificação que corresponde ao parâmetro de Rice determinado no modo acima descrito, e executa codificação de Golomb- Rice sobre um restante, isto é, (AbsLevel - 5)/2, utilizando o método de codificação selecionado.
[0489] A Figura 52 é um diagrama o qual indica um comprimento de código de um sinal binário obtido como um resultado de codificação de Golomb-Rice executada em um restante.
[0490] Por exemplo, o comprimento de código do sinal binário obtido como um resultado de codificação de Golomb-Rice executada e, i, restante = 0 é: 1 quando o parâmetro de Rice é g = 0; 2 quando o parâmetro de Rice é g = 1; e 3 quando o parâmetro de Rice é g = 2. Além disso, o comprimento de código do sinal binário obtido como um resultado de codificação de Golomb-Rice executada em um restante = 1 é: 2 quando o parâmetro de Rice é g = 0; 2 quando o parâmetro de Rice é g = 1; e 3 quando o parâmetro de Rice é g = 2. Além disso, o comprimento de código do sinal binário obtido como um resultado de codificação de Golomb-Rice executada em um restante = 6 é: 7 quando o parâmetro de Rice é g = 0; 5 quando o parâmetro de Rice é g = 1; e 4 quando o parâmetro de Rice é g = 2.
[0491] Aqui, quando sum_minus1 <12, os cinco coeficientes circundantes acima descritos são considerados para cada um ter um valor de uma média de aproximadamente menor do que ou igual a 3 a
4. Como um resultado, existe uma possibilidade de que o coeficiente corrente seja próximo a e maior do que os cinco coeficientes circundantes, e assim o coeficiente corrente é predito ser 5 ou 6. Consequentemente, uma vez que um gt1_flag e um gt2_flag são utilizados no formato de sinalizador do coeficiente corrente, um restante do coeficiente é predito ser um restante = 0. Por exemplo, no exemplo ilustrado na Figura 52, no caso em que o restante = 0, o codificador de entropia 110 seleciona g = 0 como um parâmetro de Rice, de modo a tornar o comprimento de código do sinal binário mais curto.
[0492] Além disso, quando 12 ≤ sum_minus1 <25, os cinco coeficientes circundantes acima descritos são considerados cada um tendo um valor em média de aproximadamente 3 a 5. Como um resultado, existe uma possibilidade de que o coeficiente corrente seja próximo a e maior do que os cinco coeficientes circundantes, e assim o coeficiente corrente é predito ser 7 ou 8. Consequentemente, como um gt1_flag e um gt2_flag são utilizados no formato de sinalizador do coeficiente corrente, um restante do coeficiente é predito ser um restante = 1. Por exemplo, no exemplo ilustrado na Figura 52, no caso onde um restante = 1, o codificador de entropia 110 seleciona g = 1 como um parâmetro de Rice, de modo a tornar o comprimento de código do sinal binário mais curto.
[0493] Além disso, quando 25 ≤ sum_minus1, os cinco coeficientes circundantes acima descritos são considerados cada um ter um valor aproximadamente maior do que ou igual a aproximadamente 7. Como um resultado, existe uma possibilidade de que o coeficiente corrente seja próximo de e maior do que os cinco coeficientes circundantes, e assim o coeficiente corrente é predito ser maior do que ou igual a 9. Consequentemente, como um gt1_flag e um gt2_flag são utilizados no formato de sinalizador do coeficiente corrente, um restante do coeficiente é predito ser um restante ≥ 2. Por exemplo, no exemplo ilustrado na Figura 52, no caso onde um restante ≥ 2, o codificador de entropia 110 seleciona g = 2 como um parâmetro de Rice, de modo a tornar o comprimento de código do sinal binário mais curto.
[0494] Deve ser notado que o decodificador de entropia 202 é também capaz de determinar um parâmetro de Rice no mesmo modo que o codificador de entropia 110. Primeiro Exemplo do Primeiro Aspecto
[0495] A Figura 53 é um fluxograma que ilustra operações de processamento gerais do codificador de entropia 110 de acordo com um primeiro exemplo do primeiro aspecto. Deve ser notado que o fluxograma da Figura 53 indica as operações de processamento do codificador de entropia 110 quando, por exemplo, a DQ acima descrita é utilizada.
[0496] O codificador de entropia 110 repete os processos da Etapa S110 até S140 para cada um dos sub-blocos, de modo que cada um dos coeficientes no sub-bloco seja codificado. Um sub-bloco é um bloco que inclui 4×4 pixels obtido dividindo ainda a unidade de transformada acima descrita, por exemplo.
[0497] Especificamente, primeiro, codificador de entropia 110 codifica, para cada um dos coeficientes em um sub-bloco, um sig_flag do coeficiente, e codifica um parity_flag do coeficiente quando o sig_flag é 1. Além disso, o codificador de entropia 110, quando o sig_flag é 1, codifica o gt1_flag do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 3 (Etapa S110).
[0498] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o coeficiente é maior do que ou igual a 3, codifica gt2_flag do coeficiente com base na determinação se o AbsLevel do coeficiente é maior do que ou igual a 5 (Etapa S120).
[0499] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, codifica restante = (AbsLevel - 5)/2 do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 5 (Etapa S130).
[0500] Então, codificador de entropia 110, para cada um dos coeficientes no sub-bloco, codifica um sinal (mais ou menos) do coeficiente quando o coeficiente não é 0 (Etapa S140). Deve ser notado que o sinal pode ser codificado como sign_flag.
[0501] O codificador de entropia 110, subsequente a executar os processos das Etapas S110 até S140 no sub-bloco, executa os processos das Etapas S110 até S140 em outros sub-blocos também.
[0502] A Figura 54 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S110 ilustrada na Figura 53.
[0503] O codificador de entropia 110 repete os processos das Etapas S111 até S117 para cada um dos coeficientes no sub-bloco.
[0504] Primeiro, o codificador de entropia 110 determina se o
AbsLevel do coeficiente corrente é AbsLevel ≠ 0 (Etapa S111). Aqui, quando determinando que o AbsLevel do coeficiente corrente não é AbsLevel ≠ 0 (Não na Etapa S111), o codificador de entropia 110 codifica um sig_flag = 0 para o coeficiente (Etapa S112b). Por outro lado, quando determinando que o AbsLevel do coeficiente corrente é AbsLevel ≠ 0 (Sim na Etapa S111), o codificador de entropia 110 codifica um sig_flag = 1 para o coeficiente (Etapa S112a).
[0505] A seguir, o codificador de entropia 110 determina se o primeiro bit (o bit menos significativo) do AbsLevel do coeficiente corrente é 1 (Etapa S113). Aqui, o codificador de entropia 110, quando determinando que o primeiro bit é 1 (Sim na Etapa S113), codifica um parity_flag = 0 para o coeficiente (Etapa S114a). Por outro lado, quando determinando que o primeiro bit não é 1 (Não na Etapa S113), o codificador de entropia 110 codifica um parity_flag = 1 para o coeficiente (Etapa S114b).
[0506] A seguir, o codificador de entropia 110 determina se o AbsLevel do coeficiente corrente é maior do que ou igual a 3 (Etapa S115). Aqui, quando determinando que o AbsLevel é maior do que ou igual a 3 (Sim na Etapa S115), o codificador de entropia 110 codifica um gt1_flag = 1 para o coeficiente (Etapa S116a). Por outro lado, quando determinando que AbsLevel não é maior do que ou igual a 3 (Não na Etapa S115), o codificador de entropia 110 codifica um gt1_flag = 0 para o coeficiente (Etapa S116b).
[0507] Então, o codificador de entropia 110 faz com que o quantizador 108 e o quantizador inverso 112 atualizem o estado de DQ de acordo com o coeficiente corrente, isto é, o parity_flag (Etapa S117).
[0508] O codificador de entropia 110, subsequente a executar os processos da Etapas S111 até S117 em um coeficiente incluído em um sub-bloco, também executa os processos das Etapas S111 até S117 no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, para cada um dos coeficientes incluídos no sub-bloco, pelo menos um sinalizador de acordo com o coeficiente entre o sig_flag, o parity_flag, e o gt1_flag é codificado.
[0509] A Figura 55 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S120 ilustrada na Figura 53.
[0510] O codificador de entropia 110 repete os processos das Etapas S121 até S123b para cada um dos coeficientes no sub-bloco.
[0511] Primeiro, o codificador de entropia 110 determina se o AbsLevel do coeficiente corrente é maior do que ou igual a 3 (Etapa S121). Aqui, quando determinando que o AbsLevel do coeficiente corrente não é maior do que ou igual a 3 (Não na Etapa S121), o codificador de entropia 110 não codifica um gt2_flag para o coeficiente. Por outro lado, quando determinando que o AbsLevel do coeficiente corrente é maior do que ou igual a 3 (Sim na Etapa S121), o codificador de entropia 110 ainda determina se o AbsLevel é maior do que ou igual a 5 (Etapa S122). Aqui, quando determinando que o AbsLevel é maior do que ou igual a 5 (Sim na Etapa S122), o codificador de entropia 110 codifica um gt2_flag = 1 para o coeficiente (Etapa S123a). Por outro lado, quando determinando que o AbsLevel não é maior do que ou igual a 5 (Não na Etapa S122), o codificador de entropia 110 codifica um gt2_flag = 0 para o coeficiente (Etapa S123b).
[0512] O codificador de entropia 110, subsequente a executar os processos das Etapas S121 até S123b em um coeficiente incluído em um sub-bloco, também executa os processos das Etapas S121 até S123b no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, o gt2_flag é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0513] A Figura 56 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S130 ilustrada na Figura 53.
[0514] O codificador de entropia 110 repete os processos das Etapas S131 até S132 para cada um dos coeficientes no sub-bloco.
[0515] Primeiro, o codificador de entropia 110 determina se o AbsLevel do coeficiente corrente é maior do que ou igual a 5 (Etapa S131). Aqui, quando determinando que o AbsLevel do coeficiente corrente não é maior do que ou igual a 5 (Não na Etapa S131), o codificador de entropia 110 não codifica um restante para o coeficiente. Por outro lado, quando determinando que o AbsLevel é maior do que ou igual a 5 (Sim na Etapa S131), o codificador de entropia 110 codifica um restante para o coeficiente (Etapa S132). Consequentemente, o codificador de entropia 110 codifica (AbsLevel - 5)/2 (Etapa S132).
[0516] O codificador de entropia 110, subsequente a executar os processos das Etapas S131 até S132 em um coeficiente incluído em um sub-bloco, também executa os processos das Etapas S131 até S132 no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, o restante é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0517] A Figura 57 é um diagrama que ilustra uma sintaxe relativa à codificação de entropia de acordo com o primeiro exemplo do primeiro aspecto. Mais especificamente, a Figura 57 ilustra uma estrutura de sintaxe de um fluxo gerado pelos processos indicados nos fluxogramas ilustrados na Figura 53 até Figura 56.
[0518] O codificador de entropia 110 codifica, para cada um da pluralidade de sub-blocos, cada um dos coeficientes incluídos no sub- bloco, de acordo com a sintaxe ilustrada na Figura 57. Deve ser notado que sig_flag[n] e parity_flag[n] na Figura 57 são um sig_flag e um parity_flag do enésimo coeficiente incluído em um sub-bloco. Além disso, abs_gt1_flag[n] e abs_gt2_flag[n] na Figura 57 são um gt1_flag e um gt2_flag do enésimo coeficiente incluído em um sub-bloco. Além disso, abs_remainder[n] e sign_flag[n] na Figura 57 são um restante e um sign_flag do enésimo coeficiente incluído em um sub-bloco.
[0519] A Figura 58 é um diagrama que ilustra um exemplo específico de um sub-bloco que inclui 4×4 coeficientes. A Figura 59 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes no sub-bloco ilustrado na Figura 58, no formato de sinalizador de acordo com o primeiro exemplo do primeiro aspecto. Deve ser notado que os coeficientes são organizados da esquerda para a direita na ordem de escaneamento na Figura 59.
[0520] O codificador de entropia 110 escaneia o sub-bloco ilustrado na Figura 58. Em outras palavras, o codificador de entropia 110 obtém cada um dos coeficientes no sub-bloco em uma ordem predeterminada (isto é, ordem de escaneamento). Por exemplo, o codificador de entropia 110 obtém cada um dos coeficientes em ordem em uma direção diagonal de um coeficiente no inferior direito para um coeficiente no superior esquerdo em um sub-bloco. No exemplo ilustrado na Figura 58, o codificador de entropia 110 obtém cada um dos coeficientes na ordem de 1, 1, 0, 2, 3, 4, 7, 5, 4, 5, 3, 6, 10, 8, 10, e 20, como ilustrado na Figura 58. Então, o codificador de entropia 110 transforma, em um formato de sinalizador, cada um dos coeficientes em ordem de obtenção dos coeficientes.
[0521] Mais especificamente, como o AbsLevel é "1" quando um coeficiente é "1", o codificador de entropia 110 codifica o sig_flag = 1, o parity_flag = 0, e o gt1_flag = 0 para o coeficiente.
[0522] Quando um coeficiente é "0", o codificador de entropia 110 codifica o sig_flag = 0 para o coeficiente. Além disso, como o AbsLevel é "4" quando a coeficiente é "4", o codificador de entropia 110 codifica o sig_flag = 1, o parity_flag = 1, o gt1_flag = 1, e o gt2_flag = 0 para o coeficiente. Além disso, como o AbsLevel é "7" quando um coeficiente é "7", o codificador de entropia 110 codifica o sig_flag = 1, o parity_flag = 0, o gt1_flag = 1, o gt2_flag = 1, e o restante = 1 para o coeficiente.
[0523] Além disso, o codificador de entropia 110 executa codificação aritmética nestes sig_flag, parity_flag, gt1_flag, gt2_flag, e restante. Para a codificação aritmética, por exemplo, uma codificação aritmética binária adaptável com base em contexto (CABAC) é utilizada. Além disso, uma probabilidade de ocorrência de símbolo variável adaptável pode ser utilizada para o sig_flag, o parity_flag, o gt1_flag, o gt1_flag, e o gt2_flag, e uma probabilidade de ocorrência de símbolo fixo pode ser utilizada para o restante. Mais especificamente, o codificador de entropia 110 executa codificação aritmética em um sig_flag, um parity_flag, um gt1_flag, e um gt2_flag, enquanto atualizando uma probabilidade de ocorrência de símbolo pela CABAC. Entrementes, quanto a um restante, o codificador de entropia 110 determina o parâmetro de Rice acima descrito para o restante, e binariza o restante utilizando um método de binarização de acordo com o parâmetro de Rice. Então, o codificador de entropia 110 executa codificação aritmética no restante binarizado, utilizando uma probabilidade de ocorrência de símbolo fixo, pelo processamento de desvio da CABAC.
[0524] Além disso, o decodificador de entropia 202 de acordo com o primeiro exemplo do primeiro aspecto sequencialmente decodifica os sinalizadores e o restante de cada um dos coeficientes codificados que inclui a sintaxe ilustrada na Figura 57. Então, o decodificador de entropia 202 decodifica, para cada um dos coeficientes codificados, o coeficiente codificado, calculando o AbsLevel como acima descrito, utilizando os sinalizadores e o restante descodificados, etc. Efeitos Vantajosos do Primeiro Exemplo do Primeiro Aspecto
[0525] Com o primeiro exemplo do primeiro aspecto como acima descrito, é possível reduzir uma quantidade de codificação do restante, utilizando cada um dos sinalizadores tal como o gt1_flag e o gt2_flag em coeficientes de codificação.
[0526] Deve ser notado que, em uma unidade de codificação ou uma unidade de transformada, em geral, um sub-bloco tem mais coeficientes os quais não são 0, já que o sub-bloco está localizado mais próximo de um lado de baixa frequência (isto é, lado superior esquerdo). No exemplo ilustrado na Figura 59, um gt1_flag, um gt2_flag, etc. são utilizados para um grande número de coeficientes incluídos em um sub- bloco. Além disso, quando um sub-bloco inclui um grande número de coeficientes que têm valores maiores do que ou igual a 3, existe uma possibilidade que uma quantidade de codificação do sub-bloco aumente devido ao gt1_flag e ao gt2_flag.
[0527] Além disso, quando uma codificação aritmética é executada em cada sinalizador enquanto uma probabilidade de ocorrência de símbolo é atualizada pela CABAC, uma carga de processamento é mais alta do que quando a codificação aritmética é executada pelo processamento de desvio. Consequentemente, quando a codificação aritmética é executada em cada sinalizador enquanto uma probabilidade de ocorrência de símbolo é atualizada pela CABAC, uma carga de processamento aumenta conforme o número dos sinalizadores é maior. Assim, o número destes sinalizadores pode ser limitado. Segundo Exemplo do Primeiro Aspecto
[0528] A Figura 60 é um fluxograma que ilustra operações de processamento gerais do codificador de entropia 110 de acordo com um segundo exemplo do primeiro aspecto.
[0529] No segundo exemplo do primeiro aspecto, ao contrário do primeiro exemplo, um número total de sinalizadores "gt1_flag" e um número total de sinalizadores "gt2_flag" são respectivamente limitados. Por exemplo, o número total de sinalizadores "gt1_flag" é limitado até n_1, e o número total de sinalizadores "gt2_flag" é limitado até n_2. Por exemplo, n_1 é um inteiro o qual satisfaz 1 ≤ n_1 ≤ 16, e n_2 é um inteiro o qual satisfaz 1 ≤ n_2 ≤ 16.
[0530] Por exemplo, como ilustrado na Figura 60, o codificador de entropia 110 repete os processos das Etapas S210 até S230 e S140 para cada um dos sub-blocos de modo que cada um dos coeficientes no sub-bloco seja codificado.
[0531] Especificamente, primeiro, o codificador de entropia 110 codifica, para cada um dos coeficientes em um sub-bloco, um sig_flag do coeficiente, e codifica um parity_flag do coeficiente quando o sig_flag é 1. Além disso, o codificador de entropia 110, quando o coeficiente é um coeficiente o qual não é 0 e está na ou antes da n_1th posição, codifica um gt1_flag do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 3 (Etapa S210). Deve ser notado que o coeficiente o qual não é 0 e está na ou antes da n_1th posição é o n_1th coeficiente ou um coeficiente localizado antes do n_1th coeficiente em ordem de escaneamento, entre os coeficientes os quais não são 0 e estão incluídos em um sub-bloco.
[0532] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o coeficiente é um coeficiente que tem o AbsLevel maior do que ou igual a 3 e está na ou antes da n_2th posição, codifica um gt2_flag do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 5 (Etapa S220). Deve ser notado que o coeficiente o qual tem o AbsLevel maior do que ou igual a 3 e está na ou antes da n_2th posição é o n_2th coeficiente ou um coeficiente localizado antes do n_2th coeficiente em ordem de escaneamento, entre os coeficientes os quais têm AbsLevel maior do que ou igual a 3 e estão incluídos em um sub-bloco.
[0533] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o AbsLevel do coeficiente é maior do que ou igual a um baseLevel, codifica restante = (AbsLevel - baseLevel)/2 (Etapa S230). O baseLevel é um valor o qual varia de acordo com o número de utilização de cada um do gt1_flag e do gt2_flag. Por exemplo, o valor inicial do baseLevel é 5. Além disso, o valor inicial é atualizado de 5 para 3 quando número n_2 dos sinalizadores "gt2_flag" são utilizados, e então é atualizado de 3 para 1 quando n_1 (por exemplo, n_1> n_2) número dos sinalizadores "gt1_flag" são utilizados.
[0534] Então, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, o codifica um sinal (mais ou menos) do coeficiente quando o coeficiente não é 0 (Etapa S140).
[0535] O codificador de entropia 110, subsequente a executar os processos das Etapas S210 até S230 e S140 no sub-bloco, executa os processos das Etapas S210 até S230 e S140 no mesmo modo nos outros sub-blocos
[0536] A Figura 61 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S210 ilustrada na Figura 60. Deve ser notado que o fluxograma ilustrado na Figura 61 inclui Etapas S111 até S117 do fluxograma ilustrado na Figura 54, e ainda inclui a Etapa S211.
[0537] Em outras palavras, o codificador de entropia 110 repete os processos das Etapas S111 até S117, e S211 para cada um dos coeficientes no sub-bloco.
[0538] Mais especificamente, o codificador de entropia 110 executa os processos das Etapas S111 até 114b no mesmo modo que no primeiro exemplo acima descrito. Subsequentemente, o codificador de entropia 110 determina se o coeficiente corrente a é um coeficiente o qual não é 0 e está na ou antes da n_1th posição (Etapa S211). Aqui, quando é determinado que o coeficiente corrente a é o coeficiente o qual não é 0 e está na ou antes da n_1th posição (Sim na Etapa S211), o codificador de entropia 110 executa os processos das Etapas S115 até S117 no mesmo modo que no primeiro exemplo acima descrito. Por outro lado, quando é determinado que o coeficiente corrente a não é o coeficiente o qual não é 0 e está na ou antes da n_1th posição (Não na Etapa S211), o codificador de entropia 110 executa o processo da Etapa S117 sem executar os processos das Etapas S115 até S116b. Em outras palavras, no primeiro exemplo, o codificador de entropia 110 utiliza o gt1_flag para todos os coeficientes os quais não são 0 no sub- bloco. No entanto, no segundo exemplo, no caso onde o gt1_flag foi utilizado n_1 vezes, o codificador de entropia 110, na codificação de um coeficiente o qual não é 0, não utiliza o gt1_flag para o coeficiente.
[0539] A Figura 62 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S220 ilustrada na Figura 60. Deve ser notado que o fluxograma ilustrado na Figura 62 inclui as Etapas S122 até S123b do fluxograma ilustrado na Figura 55, e ainda inclui a Etapa S221 ao invés da Etapa S121.
[0540] Em outras palavras, o codificador de entropia 110 repete os processos da Etapa S221 e Etapas S122 até S123b para cada um dos coeficientes no sub-bloco.
[0541] Mais especificamente, o codificador de entropia 110 determina se o coeficiente corrente a é um coeficiente o qual satisfaz AbsLevel ≥ 3 e está na ou antes da n_2th posição (Etapa S221). Aqui, quando determinando que o coeficiente a não é um coeficiente o qual satisfaz AbsLevel ≥ 3 e está na ou antes da n_2th posição (Não na Etapa S221), o codificador de entropia 110 não codifica um gt2_flag para o coeficiente a. Por outro lado, quando determinando que o coeficiente a é um coeficiente o qual satisfaz AbsLevel ≥ 3 e está na ou antes da n_2th posição (Sim na Etapa S221), o codificador de entropia 110 determina se o AbsLevel é maior do que ou igual a 5 (Etapa S122). Aqui, quando determinando que o AbsLevel é maior do que ou igual a 5 (Sim na Etapa S122), o codificador de entropia 110 codifica um gt2_flag = 1 para o coeficiente (Etapa S123a). Por outro lado, quando determinando que o AbsLevel não é maior do que ou igual a 5 (Não na Etapa S122),
o codificador de entropia 110 codifica um gt2_flag = 0 para o coeficiente (Etapa S123b).
[0542] O codificador de entropia 110, subsequente a executar os processos da Etapa S221 e Etapas S122 até S123b em um coeficiente incluído em um sub-bloco, também executa os processos da Etapa S221 e Etapas S122 até S123b no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, o gt2_flag é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0543] A Figura 63 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S230 ilustrada na Figura 60.
[0544] Primeiro, o codificador de entropia 110 ajusta o baseLevel para 5 (Etapa S231). Então, o codificador de entropia 110 repete os processos das Etapas S232 até S236 para cada um dos coeficientes no sub-bloco.
[0545] Mais especificamente, o codificador de entropia 110 determina se o número n_1 dos sinalizadores "gt1_flag" são utilizados para coeficientes localizados antes do coeficiente corrente a em ordem de escaneamento no sub-bloco (Etapa S232). Aqui, quando é determinado que número n_1 dos sinalizadores "gt1_flag" são utilizados (Sim na Etapa S232), o codificador de entropia 110 atualiza o baseLevel para 1 (Etapa S233).
[0546] Por outro lado, quando é determinado que o número n_1 dos sinalizadores "gt1_flag" não são utilizados (Não na Etapa S232), o codificador de entropia 110 ainda executa determinação referente a um número total de sinalizadores "gt2_flag". Mais especificamente, o codificador de entropia 110 determina se o número n_2 dos sinalizadores "gt2_flag" são utilizados para coeficientes localizados antes do coeficiente corrente a em ordem de escaneamento no sub- bloco (Etapa S234). Aqui, quando é determinado que o número n_2 dos sinalizadores "gt2_flag" são utilizados (Sim na Etapa S234), o codificador de entropia 110 atualiza o baseLevel para 3 (Etapa S235).
[0547] Por outro lado, quando é determinado que o número n_2 dos sinalizadores "gt2_flag" não são utilizados (Não na Etapa S234), o codificador de entropia 110 codifica o restante para o coeficiente a (Etapa S236). Além disso, o codificador de entropia 110 também codifica o restante para o coeficiente a após os processos das Etapas S233 e S235 serem executados (S236). Mais especificamente, o codificador de entropia 110 codifica (AbsLevel - baseLevel)/2. Deve ser notado que o restante é codificado quando AbsLevel ≥ baseLevel for satisfeito. Além disso, quando nenhum dos processos das Etapas S233 e S235 é executado, o baseLevel é 5. Além disso, o baseLevel é 1 quando o processo da Etapa S233 é executado, e o baseLevel é 3 quando o processo da Etapa S235 é executado. Deve ser notado que, no fluxograma ilustrado na Figura 63, n_1 e n_2 podem satisfazer a relação de n_1> n_2.
[0548] O codificador de entropia 110, subsequente a executar os processos das Etapas S232 até S236 em um coeficiente incluído em um sub-bloco, também executa os processos das Etapas S232 até S236 no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, um restante é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0549] A Figura 64 é um diagrama que ilustra a sintaxe relativa à codificação de entropia de acordo com o segundo exemplo do primeiro aspecto. Mais especificamente, a Figura 64 ilustra uma estrutura de sintaxe de um fluxo gerado pelos processos indicados nos fluxogramas ilustrados na Figura 60 até Figura 63.
[0550] O codificador de entropia 110 codifica, para cada um de uma pluralidade de sub-blocos, cada um dos coeficientes incluídos no sub- bloco, de acordo com a sintaxe ilustrada na Figura 64.
[0551] Aqui, a sintaxe ilustrada na Figura 64 ainda inclui o ajuste ou atualização de dois contadores e ajuste ou atualização do baseLevel, além da sintaxe ilustrada na Figura 57. Os dois contadores são numNonZero e numUpper3. O numNonZero é inicializado para 0, e incrementado quando o sig_flag[n] é 1. Quando o sig_flag[n] é 1 e o numNonZero é menor do que ou igual a n_1, o abs_gt1_flag[n] é codificado. O numUpper3 é inicializado para 0. Então, quando o abs_gt1_flag[n] é 1 e o numUpper3 é menor do que ou igual a n_2, o abs_gt2_flag[n] é codificado, e o numUpper3 é incrementado.
[0552] Além disso, na codificação do restante, primeiro, cada um do numNonZero e do numUpper3 é inicializado para 0, e o baseLevel é inicializado para 5. Então, quando o AbsLevel[n] não é 0, o numNon- Zero é incrementado. Mais ainda, quando AbsLevel[n] é maior do que ou igual a 3, o numUpper3 é incrementado. Deve ser notado que o Abs- Level[n] é o AbsLevel do enésimo coeficiente. Quando o AbsLevel[n] é maior do que ou igual ao baseLevel, (AbsLevel - baseLevel)/2 do enésimo coeficiente é codificado como Abs_reimander[n]. Então, quando o numNonZero é maior do que ou igual a n_1, o baseLevel é atualizado para 1. Além disso, quando o baseLevel é 5 e o numUpper3 é maior do que ou igual a n_2, o baseLevel é atualizado para 3.
[0553] A Figura 65 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes no sub-bloco ilustrado na Figura 58, no formato de sinalizador de acordo com o segundo exemplo do primeiro aspecto. Deve ser notado que os coeficientes estão dispostos da esquerda para a direita em ordem de escaneamento na Figura 65.
[0554] No exemplo ilustrado na Figura 65, n_1 = 8, e n_2 = 1. Consequentemente, o gt2_flag é utilizado para um coeficiente o qual é o primeiro em ordem de escaneamento e do qual AbsLevel ≥ 3, e não é utilizado para os outros coeficientes localizados após o coeficiente.
Além disso, o gt1_flag é utilizado para os primeiros 8 coeficientes em ordem de escaneamento cada um dos quais não é 0, e não é utilizado para os outros coeficientes localizados a seguir. Além disso, apesar de do baseLevel ser ajustado para 5 no estado inicial, o baseLevel é atualizado para 3 quando o gt2_flag torna-se indisponível, e atualizado para 1 quando o gt1_flag torna-se indisponível. Então, utilizando o baseLevel atualizado como acima descrito, o restante é calculado por (AbsLevel - baseLevel)/2 para ser codificado.
[0555] Além disso, o decodificador de entropia 202 de acordo com o segundo exemplo do primeiro aspecto sequencialmente decodifica os sinalizadores codificados e o restante de cada um dos coeficientes incluindo a sintaxe ilustrada na Figura 64. Então, o decodificador de entropia 202 decodifica, para cada um dos coeficientes codificados, o coeficiente codificado, calculando o AbsLevel como acima descrito, utilizando os sinalizadores e restante decodificados, etc. Efeitos Vantajosos do Segundo Exemplo do Primeiro Aspecto
[0556] No segundo exemplo como acima descrito, um número total de sinalizadores (por exemplo, o gt1_flag ou o gt2_flag) utilizados para os coeficientes no sub-bloco é limitado. Consequentemente, é possível reduzir a quantidade de codificação dos sinalizadores.
[0557] Mais especificamente, no exemplo ilustrado na Figura 65, um número total dos sinalizadores "gt1_flag" e um número total dos sinalizadores "gt2_flag" são limitados para 8 e 1, respectivamente. Consequentemente, após 8 sinalizadores "gt1_flag" serem utilizados, o gt1_flag não é utilizado para um coeficiente mesmo quando o coeficiente não é 0. Do mesmo modo, após um sinalizador "gt2_flag" ser utilizado, o gt2_flag não é utilizado para um coeficiente mesmo quando o AbsLevel do coeficiente é maior do que ou igual a 3. Como um resultado, no segundo exemplo, é possível reduzir cada um do número total de sinalizadores "gt1_flag" gerado e o número total de sinalizadores "gt2_flag" gerado comparado com o primeiro exemplo (por exemplo, o exemplo ilustrado na Figura 59). Consequentemente, é possível reduzir a quantidade de codificação destes sinalizadores. Além disso, quando a CABAC de probabilidade de ocorrência de símbolo variável é utilizada para codificar o gt1_flag e o gt2_flag, é possível reduzir a carga de processamento da codificação. Em outras palavras, a CABAC de probabilidade de ocorrência de símbolo variável envolve uma carga de processamento mais alta do que uma carga de processamento do processamento de desvio da CABAC. Entretanto, no segundo exemplo, é possível reduzir um número total de sinalizadores aplicados na CABAC da probabilidade de ocorrência de símbolo variável. Consequentemente, é possível ainda reduzir a carga de processamento do que o primeiro exemplo. Em outras palavras, no segundo exemplo, é possível reduzir tanto a quantidade de codificação de coeficientes quanto a carga de processamento na codificação de coeficientes.
[0558] Deve ser notado que, no segundo exemplo, na Figura 65, o número máximo dos sinalizadores "gt1_flag" utilizado é n_1 = 8, e o número máximo de sinalizadores "gt2_flag" utilizado é n_2 = 1. No entanto, o número máximo dos sinalizadores não está limitado a estes exemplos, e pode ser outros valores. Além disso, o número máximo n_1 e o número máximo n_2 podem ser valores fixos predeterminados, ou podem ser ajustados ou atualizados conforme apropriado. Em outras palavras, o codificador de entropia 110 pode adaptavelmente determinar cada um do número máximo n_1 e do número máximo n_2.
[0559] Por exemplo, na codificação de cada um dos coeficientes no sub-bloco como acima descrito, um sinalizador específico para estes coeficientes; isto é, sinalizadores de tipos específicos outros que o gt1_flag e o gt2_flag são codificados antes dos outros sinalizadores. Deve ser notado que sinalizadores de tipos específicos podem incluir,
por exemplo, pelo menos um do sig_flag e do parity_flag. O gt1_flag para cada um dos coeficientes é codificado subsequente aos sinalizadores dos tipos específicos, e o gt2_flag para cada um dos coeficientes é codificado subsequente ao gt1_flag. Em tal caso, o codificador de entropia 110 pode determinar o número máximo n_1 como um valor o qual depende de um número total M dos sinalizadores dos tipos específicos. Alternativamente, o codificador de entropia 110 pode determinar o número máximo n_1 como um valor o qual depende do número total Ma de sinalizadores cada um dos quais indica um valor específico tal como 0 ou 1, entre os sinalizadores do tipo específico. Além disso, o codificador de entropia 110 pode determinar o número máximo n_2 como um valor o qual depende do número total N de pelo menos um dos sinalizadores dos tipos específicos e o "gt1_flag". Alternativamente, o codificador de entropia 110 pode determinar o número máximo n_2 como um valor o qual depende de um número total Na de sinalizadores, cada um dos quais indica um valor específico tal como 0 ou 1, entre pelo menos um dos sinalizadores dos tipos específicos e sinalizadores gt1_flag. Deve ser notado que cada um do número total acima descrito de sinalizadores M, Ma, N, e Na pode ser um número total de sinalizadores os quais já foram codificados.
[0560] Deve ser notado que, no segundo exemplo, o método no qual o gt1_flag e o gt2_flag não são codificados quando os sinalizadores atingiram o número máximo. No entanto, a presente descrição não está limitada a estes sinalizadores. Por exemplo, mesmo quando um sinalizador é outro que o gt1_flag e o gt2_flag, se ou não codificar o sinalizador pode ser comutado utilizando um método equivalente, desde que o sinalizador seja relativo à codificação de um valor absoluto de um coeficiente e seja codificado utilizando a CABAC que envolve atualizar uma probabilidade de ocorrência de símbolo.
Segundo Aspecto
[0561] No segundo exemplo do primeiro aspecto acima descrito, o número de sinalizadores "gt1_flag" utilizados é limitado para menos do que ou igual ao número máximo n_1, e o número de sinalizadores "gt2_flag" utilizados é limitado a menos do que ou igual ao número máximo n_2. No segundo aspecto, n_2 = 0. Em outras palavras, o gt2_flag não é utilizado no segundo aspecto.
[0562] A Figura 66 é um fluxograma que ilustra operações de processamento gerais do codificador de entropia 110 de acordo com o segundo aspecto.
[0563] O codificador de entropia 110 repete os processos das Etapas S210, S330, e S140 para cada um dos sub-blocos de modo que cada um dos coeficientes no sub-bloco seja codificado.
[0564] Especificamente, primeiro, o codificador de entropia 110 codifica, para cada um dos coeficientes em um sub-bloco, um sig_flag do coeficiente, e codifica um parity_flag do coeficiente quando o sig_flag é 1. Além disso, codificador de entropia 110, quando o coeficiente é um coeficiente o qual não é 0 e está na ou antes da n_1th posição, codifica um gt1_flag do coeficiente com base na determinação se o AbsLevel do coeficiente é maior do que ou igual a 3 (Etapa S210)
[0565] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o AbsLevel do coeficiente é maior do que ou igual a um baseLevel, codifica o restante = (AbsLevel - baseLevel)/2 (Etapa S330). No segundo aspecto, o baseLevel é um valor o qual varia de acordo com o número dos sinalizadores "gt1_flag" utilizado. Por exemplo, o valor inicial do baseLevel é 3. Além disso, o baseLevel é atualizado de 3 para 1 quando o número n_1 do sinalizadores "gt1_flag" é utilizado.
[0566] Então, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, codifica um sinal (mais ou menos) do coeficiente quando o coeficiente não é 0 (Etapa S140).
[0567] O codificador de entropia 110, subsequente a executar os processos das Etapas S210, S330, e S140 no sub-bloco, executa os processos das Etapas S210, S330, e S140 no mesmo modo no outro sub-bloco. Deve ser notado que o processo da Etapa S210 é executado de acordo com o fluxograma ilustrado na Figura 61.
[0568] A Figura 67 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S330 ilustrada na Figura 66.
[0569] Primeiro, o codificador de entropia 110 ajusta o baseLevel para 3 (Etapa S235). Então, o codificador de entropia 110 repete os processos das Etapas S232, S233, e S236 para cada um dos coeficientes no sub-bloco.
[0570] Mais especificamente, o codificador de entropia 110 determina se o número n_1 dos sinalizadores "gt1_flag" são utilizados para coeficientes localizados antes do coeficiente corrente a em ordem de escaneamento no sub-bloco (Etapa S232). Aqui, quando é determinado que o número n_1 dos sinalizadores "gt1_flag" são utilizados (Sim na Etapa S232), o codificador de entropia 110 atualiza o baseLevel para 1 (Etapa S233).
[0571] Por outro lado, quando é determinado que o número n_1 dos sinalizadores "gt1_flag" não são utilizados (Não na Etapa S232), o codificador de entropia 110 codifica o restante para o coeficiente a (Etapa S236). O codificador de entropia 110 também codifica o restante para o coeficiente a após o processo da Etapa S233 ter sido executado (Etapa S236). Mais especificamente, o codificador de entropia 110 codifica (AbsLevel - baseLevel)/2. Deve ser notado que o restante é codificado quando AbsLevel ≥ baseLevel for satisfeito. Além disso, o baseLevel é 3 quando o processo da Etapa S233 não é executado, e o baseLevel é 1 quando o processo da Etapa S233 é executado.
[0572] O codificador de entropia 110, subsequente a executar os processos das Etapas S232, S233 e S236 em um coeficiente incluído um sub-bloco, também executa os processos das Etapas S232, S233 e S236 no mesmo modo no próximo coeficiente incluído no sub-bloco. Neste modo, um restante é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0573] A Figura 68 é um diagrama que ilustra a sintaxe relativa à codificação de entropia de acordo com o segundo aspecto. Mais especificamente, a Figura 68 ilustra uma estrutura de sintaxe de um fluxo gerado pelos processos indicados pelos fluxogramas ilustrados na Figura 61, Figura 66, e Figura 67.
[0574] O codificador de entropia 110 codifica, para cada um de uma pluralidade de sub-blocos, o cada um dos coeficientes incluídos no sub- bloco, de acordo com a sintaxe ilustrada na Figura 68.
[0575] Aqui, como comparado com a sintaxe ilustrada na Figura 64, a sintaxe ilustrada na Figura 68 não inclui o ajuste e atualização do numUpper3 e codificação do gt2_flag. Mais ainda, na codificação do restante, ao contrário da sintaxe ilustrada na Figura 64, o baseLevel é inicializado para 3.
[0576] A Figura 69 é um diagrama que ilustra um exemplo específico que indica cada um dos coeficientes incluídos no sub-bloco ilustrado na Figura 58, no formato de sinalizador de acordo com o segundo aspecto. Deve ser notado que os coeficientes estão dispostos da esquerda para a direita em ordem de escaneamento na Figura 69.
[0577] No exemplo ilustrado na Figura 69, n_1 = 16. Consequentemente, o gt1_flag é utilizado para os primeiros 16 coeficientes em ordem de escaneamento cada um dos quais não é 0, e não é utilizado para coeficientes localizados posteriormente. Além disso, apesar do baseLevel ser ajustado para 3 no estado inicial, o baseLevel é atualizado para 1 quando o gt1_flag torna-se indisponível.
Então, utilizando o baseLevel atualizado como acima descrito, o restante é calculado por (AbsLevel - baseLevel)/2 a ser codificada.
[0578] Além disso, o decodificador de entropia 202 de acordo com o segundo aspecto sequencialmente decodifica os sinalizadores codificados e o restante de cada um dos coeficientes incluindo a sintaxe ilustrada na Figura 68. Então, o decodificador de entropia 202 decodifica, para cada um dos coeficientes codificados, o coeficiente codificado, calculando AbsLevel como acima descrito, utilizando os sinalizadores e restante decodificados, etc. Efeitos Vantajosos do Segundo Aspecto
[0579] No segundo aspecto, o gt2_flag não é utilizado. Com isto, é possível reduzir a quantidade de codificação de sinalizadores e reduzir a carga de processamento. Além disso, no mesmo modo que no segundo exemplo do primeiro aspecto, como o número total dos sinalizadores "gt1_flag" é limitado a menos do que ou igual a n_1, é possível ainda reduzir a carga de processamento.
[0580] Mais especificamente, no exemplo ilustrado na Figura 69, o gt2_flag não é utilizado, e o número total dos sinalizadores "gt1_flag" é limitado a menos do que ou igual a 16. Consequentemente, após 16 sinalizadores "gt1_flag" serem utilizados, o gt1_flag não é utilizado para um coeficiente mesmo quando o coeficiente não é 0. Além disso, no mesmo modo que no segundo exemplo do primeiro aspecto, o número total dos sinalizadores "gt1_flag" pode ser limitado a menos do que ou igual a 8, ou pode ser limitado a um número arbitrário outro que 16 ou
8. Consequentemente, no segundo aspecto, se comparado com o segundo exemplo do primeiro aspecto (por exemplo, o exemplo ilustrado na Figura 65), é possível ainda reduzir a quantidade de codificação dos sinalizadores. Além disso, quando a CABAC de probabilidade de ocorrência de símbolo variável é utilizada para codificar o gt1_flag e o gt2_flag, é possível reduzir a carga de processamento da codificação dos sinalizadores. Em outras palavras, a CABAC de probabilidade de ocorrência de símbolo variável envolve uma carga de processamento mais alta do que uma carga de processamento do processamento de desvio da CABAC. No entanto, no segundo aspecto, é possível ainda reduzir um número total de sinalizadores para os quais a CABAC da probabilidade de ocorrência de símbolo variável é aplicada. Consequentemente, é possível ainda reduzir a carga de processamento do que o segundo exemplo do primeiro aspecto. Terceiro Aspecto
[0581] No primeiro aspecto e no segundo aspecto, um parâmetro de Rice é determinado pelo sum_minus1, e um restante é codificado no método de codificação de acordo com o parâmetro de Rice. Mais especificamente, um parâmetro de Rice é determinado comparando o sum_minus1 e um limite (por exemplo, 12, 25, ou similares).
[0582] De acordo com o terceiro aspecto, no mesmo modo que no segundo aspecto, um número total de cada um dos sinalizadores "gt1_flag" e dos sinalizadores "gt2_flag" é limitado, e o baseLevel é atualizado de acordo com o número total dos sinalizadores utilizados. Além disso, de acordo com o terceiro aspecto, o limite acima descrito a ser comparado como sum_minus1 para determinar o parâmetro de Rice é mudado de acordo com o baseLevel.
[0583] A Figura 70 é um fluxograma que ilustra operações de processamento gerais do codificador de entropia 110 de acordo com o terceiro aspecto. Deve ser notado que o fluxograma ilustrado na Figura 70 inclui a Etapa S430 ao invés da Etapa S230 do fluxograma ilustrado na Figura 60.
[0584] No terceiro aspecto, como com o segundo exemplo do primeiro aspecto, um número total de cada um dos sinalizadores "gt1_flag" e dos sinalizadores "gt2_flag" os quais são utilizados em um sub-bloco é limitado. Por exemplo, um número total dos sinalizadores "gt1_flag" é limitado até n_1, e o número total dos sinalizadores "gt2_flag" é limitado até n_2. Por exemplo, n_1 é um inteiro o qual satisfaz 1 ≤ n_1 ≤ 16, e n_2 é um inteiro o qual satisfaz 1 ≤ n_2 ≤ 16.
[0585] Por exemplo, como ilustrado na Figura 70, o codificador de entropia 110 repete os processos das Etapas S210, S220, S430, e S140 para cada um dos sub-blocos, de modo que cada um dos coeficientes no sub-bloco seja codificado.
[0586] Mais especificamente, o codificador de entropia 110 executa os processos das Etapas S210 e S220 no mesmo modo que no segundo exemplo do primeiro aspecto. Em outras palavras, primeiro, o codificador de entropia 110 codifica, para cada um dos coeficientes no sub-bloco, o sig_flag do coeficiente, e codifica o parity_flag do coeficiente quando o "sig_flag" é 1. Além disso, o codificador de entropia 110, quando o coeficiente é um coeficiente o qual não é 0 e está na ou antes da n_1th posição, codifica o gt1_flag do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 3 (Etapa S210). Então, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o coeficiente é um coeficiente o qual tem o AbsLevel maior do que ou igual a 3 e está na ou antes da n_2th posição, codifica um gt2_flag do coeficiente com base na determinação de se o AbsLevel do coeficiente é maior do que ou igual a 5 (Etapa S220).
[0587] A seguir, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, quando o AbsLevel do coeficiente é maior do que ou igual a um baseLevel, codifica o restante = (AbsLevel - baseLevel)/2 do coeficiente (Etapa S430). Neste tempo, de acordo com o terceiro aspecto, o codificador de entropia 110 determina um parâmetro de Rice o qual varia de acordo com o baseLevel, e codifica o restante acima descrito utilizando o método de codificação de acordo com o parâmetro de Rice.
[0588] Então, o codificador de entropia 110, para cada um dos coeficientes no sub-bloco, codifica um sinal (mais ou menos) do coeficiente quando o coeficiente não é 0 (Etapa S140).
[0589] O codificador de entropia 110, subsequente a executar os processos das Etapas S210, S220, S430, e S140 no sub-bloco, executa os processos das Etapas S210, S220, S430, e S140 no mesmo modo nos outros sub-blocos.
[0590] A Figura 71 é um fluxograma que ilustra um exemplo da operação de processamento detalhada da Etapa S430 ilustrada na Figura 70. Deve ser notado que o fluxograma ilustrado na Figura 71 inclui a Etapa S431 em vez da Etapa S236 do fluxograma ilustrado na Figura 63
[0591] Primeiro, o codificador de entropia 110 ajuste o baseLevel para 5 no mesmo modo que o segundo exemplo do primeiro aspecto (Etapa S231). Então, o codificador de entropia 110 repete os processos das Etapas S232 a S235 e S431 para cada um dos coeficientes no sub- bloco.
[0592] Mais especificamente, o codificador de entropia 110 executa os processos das Etapas S232 até S235 no coeficiente corrente a no mesmo modo que no segundo exemplo do primeiro aspecto.
[0593] Então, quando é determinado que número n_2 dos sinalizadores "gt2_flag" não foram utilizados para coeficientes localizados antes do coeficiente corrente a em ordem de escaneamento no sub-bloco (Não na Etapa S234), o codificador de entropia 110 codifica o restante para o coeficiente a (Etapa S431). Além disso, o codificador de entropia 110 também codifica o restante para o coeficiente a após os processos das Etapas S233 e S235 serem executados (S236). Mais especificamente, o codificador de entropia 110 codifica (AbsLevel - baseLevel)/2. Deve ser notado que o restante é codificado quando AbsLevel ≥ baseLevel é satisfeito.
[0594] O codificador de entropia 110, subsequente a executar os processos das Etapas S232 até S235 e S431 em um coeficiente incluído em um sub-bloco, também executa os processos das Etapas S232 até S235 e S431 no mesmo modo no próximo coeficiente incluído no sub- bloco. Neste modo, o restante é codificado conforme necessário para cada um dos coeficientes incluídos no sub-bloco.
[0595] Aqui, na Etapa S431, quando nenhum dos processos das Etapas S233 e S235 é executado, o baseLevel é 5. Além disso, o baseLevel é 1 quando o processo da Etapa S233 é executado, e o baseLevel é 3 quando o processo da Etapa S235 é executado. De acordo com o terceiro aspecto, o codificador de entropia 110 determina um diferente parâmetro de Rice de acordo com o baseLevel, e codifica o restante acima descrito utilizando o método de codificação de acordo com o parâmetro de Rice. O método de codificação de acordo com o parâmetro de Rice é qualquer um dos três métodos de codificação ilustrados na Figura 50, por exemplo.
[0596] Especificamente, de acordo com o terceiro aspecto, um limite para determinar um parâmetro de Rice é mudado de acordo com um valor do baseLevel.
[0597] Especificamente, 12 e 25 são utilizados como limites quando baseLevel = 5, no mesmo modo que no primeiro aspecto e no segundo aspecto. Consequentemente, quando sum_minus1 <12, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 0. Além disso, quando 12 ≤ sum_minus1 <25, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 1. Além disso, quando 25 ≤ sum_minus1, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 2. O codificador de entropia 110 seleciona um método de codificação que corresponde ao parâmetro de Rice determinado no modo acima descrito, e executa codificação de Golomb-Rice em um restante, isto é, (AbsLevel - baseLevel)/2, utilizando o método de codificação selecionado.
[0598] Além disso, quando baseLevel = 3, um thres_1 que é um valor menor do que 12 e um thres_2 que é um valor menor do que 25 são utilizados como os limites. Deve ser notado que o thres_1 e o thres_2 satisfazem a relação de thres_1 <thres_2. Consequentemente, quando sum_minus1 <thres_1, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 0. Além disso, quando thres_1 ≤ sum_minus1 <thres_2, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 1. Além disso, quando thres_2 ≤ sum_minus1, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 2. O codificador de entropia 110 seleciona um método de codificação que corresponde ao parâmetro de Rice determinado no modo acima descrito, e executa codificação de Golomb-Rice em um restante, isto é, (AbsLevel - baseLevel)/2, utilizando o método de codificação selecionado.
[0599] Além disso, quando baseLevel = 1, um thres_3 que é um valor menor do que thres_1 e um thres_4 que é um valor menor do que thres_2 são utilizados como os limites. Deve ser notado que o thres_3 e o thres_4 satisfazem a relação de thres_3 <thres_4. Consequentemente, quando sum_minus1 <thres_3, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 0. Além disso, quando thres_3 ≤ sum_minus1 <thres_4, o codificador de entropia 110 determina o parâmetro de Rice para ser g = 1. Além disso, quando thres_4 ≤ sum_minus1, o codificador de entropia 110 determina que o parâmetro de Rice para ser g = 2. O codificador de entropia 110 seleciona um método de codificação que corresponde ao parâmetro de Rice determinado no modo acima descrito, e executa codificação de Golomb-Rice em um restante, isto é, (AbsLevel - baseLevel)/2, utilizando o método de codificação selecionado.
[0600] Como um exemplo específico, os quatro limites acima descritos são thres_1 = 2, thres_2 = 12, thres_3 = 1, e thres_4 = 2.
[0601] Em tal exemplo como acima descrito, quando baseLevel = 3, o parâmetro de Rice é determinado como abaixo.
[0602] Quando sum_minus1 <2, o parâmetro de Rice é determinado para ser g = 0. Isto é porque, quando g = 0, é possível tornar o comprimento de código do restante mais curto. Mais especificamente, quando sum_minus1 <2, os cinco coeficientes circundantes os quais vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um 1 ou 2 na média. Consequentemente, o coeficiente corrente é predito ser 3 ou 4, e o restante do coeficiente de corrente é predito ser 0. Neste modo, como ilustrado na Figura 52, quando o parâmetro de Rice é g = 0, é possível tornar o comprimento de código do restante mais curto.
[0603] Quando 2 ≤ sum_minus1 <12, o parâmetro de Rice é determinado para ser g = 1. Isto é porque, quando g = 1, é possível tornar o comprimento de código do restante mais curto. Mais especificamente, quando 2 ≤ sum_minus1 <12, os cinco coeficientes circundantes os quais são vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um 3 ou 4 na média. Consequentemente, o coeficiente de corrente é predito ser 5 ou 6, e o restante do coeficiente de corrente é predito ser 1. Neste modo, como ilustrado na Figura 52, quando o parâmetro de Rice é g = 1, é possível tornar o comprimento de código do restante mais curto.
[0604] Quando 12 ≤ sum_minus1, o parâmetro de Rice é determinado para ser g = 2. Isto é porque, quando g = 2, é possível tornar o comprimento de código do restante mais curto. Mais especificamente, quando 12 ≤ sum_minus1, os cinco coeficientes circundantes os quais são vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um maior do que ou igual a 5 na média. Consequentemente, o coeficiente corrente é predito ser maior do que ou igual a 7, e o restante do coeficiente corrente é predito ser maior do que ou igual a 2. Neste modo, como ilustrado na Figura 52, quando o parâmetro de Rice é g = 2, é possível tornar o comprimento de código do restante mais curto.
[0605] Além disso, quando baseLevel = 1, o parâmetro de Rice é determinado como abaixo.
[0606] Quando sum_minus1 = 0, o parâmetro de Rice é determinado para ser g = 0. Isto é porque, quando g = 0, é possível tornar o comprimento de código do restante mais curto. Mais especificamente, quando sum_minus1 = 0, os cinco coeficientes circundantes os quais são vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um 0 ou 1 na média. Consequentemente, o coeficiente de corrente é predito ser 1 ou 2, e o restante do coeficiente de corrente é predito ser 0. Neste modo, como ilustrado na Figura 52, quando o parâmetro de Rice é g = 0, é possível tornar o comprimento de código do restante mais curto.
[0607] Quando 1 ≤ sum_minus1 <2, o parâmetro de Rice é determinado ser g = 1. Isto é porque, quando g = 1, é possível tornar o comprimento de código do restante mais curto. Mais especificamente, quando 1 ≤ sum_minus1 <2, os cinco coeficientes circundantes os quais são vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um 1 ou 2 na média. Consequentemente, o coeficiente de corrente é predito ser 3 ou 4, e o restante do coeficiente de corrente é predito ser 1. Neste modo, o como ilustrado na Figura 52, quando o parâmetro de Rice é g = 1, é possível tornar o comprimento de código do restante mais curto.
[0608] Quando 2 ≤ sum_minus1, o parâmetro de Rice é determinado ser g = 2. Isto é porque, quando g = 2, é possível tornar o comprimento do código do restante mais curto. Mais especificamente, quando 2 ≤ sum_minus1, os cinco coeficientes circundantes os quais são vizinhos do coeficiente corrente como ilustrado na Figura 51, por exemplo, são cada um maior do que ou igual a 3 na média. Consequentemente, o coeficiente corrente é predito ser maior do que ou igual a 5, e o restante do coeficiente corrente é predito ser maior do que ou igual a 2. Neste modo, como ilustrado na Figura 52, quando o parâmetro de Rice é g = 2, é possível tornar o comprimento de código do restante mais curto. Efeitos Vantajosos do Terceiro Aspecto
[0609] De acordo com o terceiro aspecto, quando comparado com o segundo exemplo do primeiro aspecto, um parâmetro de Rice apropriado é determinado, e assim existe uma possibilidade que a quantidade de codificação do restante pode ser reduzida. Deve ser notado que, apesar do parâmetro de Rice ser comutado de acordo com o baseLevel no terceiro aspecto, não é necessário limitar a condição ao baseLevel, e o parâmetro de Rice pode ser comutado se ou não o número de utilização de um sinalizador (por exemplo, o gt1_flag ou o gt2_flag) o qual é utilizado na codificação de um coeficiente atingiu o número máximo acima descrito. Deve ser notado que, quando codificando um restante, um método de binarização do restante pode ser comutado pelo baseLevel sem utilizar um parâmetro de Rice.
[0610] Deve ser notado que, apesar do limite para determinar um parâmetro de Rice ser mudado de acordo com um valor do baseLevel no terceiro aspecto, um parâmetro de Rice pode ser determinado com base em uma diferença entre o baseLevel e um valor de predição para um valor absoluto de um coeficiente corrente sem mudar um limite. Em outras palavras, no terceiro aspecto, existe o caso onde, mudando um limite de acordo com um baseLevel, os parâmetros de Rice os quais são parâmetros de Rice mutuamente diferentes são determinados para o mesmo valor numérico (por exemplo, o mesmo sum_minus1) que é comparado com o limite. No entanto, parâmetros de Rice mutuamente diferentes podem ser determinados mudando, de acordo com o baseLevel, um valor numérico (por exemplo, a diferença acima descrita) que é comparado com o limite, sem mudar o limite. É possível gerar um efeito vantajoso equivalente ao efeito vantajoso do terceiro aspecto, neste caso também. Sumário da Modalidade 2
[0611] De acordo com a presente modalidade como acima descrito, um sinalizador é utilizado na codificação de um coeficiente, e é possível apropriadamente limitar um número total dos sinalizadores.
[0612] A Figura 72 é um fluxograma que ilustra operações de processamento executadas pelo codificador 100 de acordo com a presente modalidade. Deve ser notado que o fluxograma ilustrado na Figura 72 indica as operações de processamento do segundo exemplo do primeiro aspecto ou do terceiro aspecto como acima descrito.
[0613] O codificador 100 de acordo com a presente modalidade inclui um circuito e uma memória conectada no circuito, e o circuito, em operação, executa os processos das Etapas S10 e S20.
[0614] Mais especificamente, o circuito codifica, para cada um de uma pluralidade de coeficientes incluídos em uma unidade estrutural de uma imagem a qual foi transformada e quantizada, um valor absoluto do coeficiente em ordem predeterminada (Etapa S10). A seguir, o circuito codifica, para cada um da pluralidade de coeficientes, um sinal o qual indica se o coeficiente é positivo ou negativo (Etapa S20). Aqui, na codificação do valor absoluto (Etapa S10), o circuito codifica um sinal que indica paridade que é o bit menos significativo do valor absoluto (Etapa S11a). A seguir, o circuito determina se utilizar um sinalizador para codificar o valor absoluto outro que o bit menos significativo, com base em uma primeira condição e uma segunda condição (Etapa S12a). Então, quando é determinado que um sinalizador deve ser utilizado, o circuito codifica o sinalizador por codificação aritmética binária adaptável baseada em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo (Etapa S13a). A primeira condição acima descrita é uma condição com base em uma magnitude de um valor absoluto, e a segunda condição é uma condição para limitar o número de sinalizadores utilizados na unidade estrutural. Por exemplo, o sinal acima descrito que indica paridade é um parity_flag.
[0615] Neste modo, se ou não utilizar um sinalizador é determinado com base não somente em uma primeira condição com base na magnitude de um valor absoluto de um coeficiente, mas também na segunda condição para limitar o número de sinalizadores, e assim é possível apropriadamente limitar o número de sinalizadores.
[0616] Deve ser notado que quando um sinalizador é utilizado, é possível reduzir uma quantidade de um valor absoluto de um coeficiente. Quando um sinalizador não é utilizado, existe uma possibilidade de um aumento em quantidade de codificação de um valor absoluto de um coeficiente, ou mais especificamente, uma quantidade de codificação de um restante para indicar um valor absoluto de um coeficiente. Além disso, existem casos onda a CABAC na qual uma probabilidade de ocorrência de símbolo adaptável e variável é aplicada na codificação de um sinalizador, e o processamento de desvio da CABAC, no qual uma probabilidade de ocorrência de símbolo fixo é utilizada, é aplicada na codificação do restante. Aqui, na CABAC na qual a probabilidade de ocorrência de símbolo variável é utilizada, uma carga de processamento tende a ser mais alta do que processamento de desvio. Consequentemente, com o codificador de acordo com um aspecto da presente descrição, o número de sinalizadores pode ser apropriadamente limitado, e assim é possível reduzir tanto uma quantidade de codificação de um valor absoluto quanto uma carga de processamento para codificar o valor absoluto.
[0617] Além disso, na codificação de um valor absoluto (Etapa S10),
o circuito pode contar o número de sinalizadores codificados cada vez que um sinalizador é codificado, e pode determinar que um sinalizador não deve ser utilizado na codificação de um valor absoluto outro que o bit menos significativo quando a segunda condição não é satisfeita mesmo quando a primeira condição é satisfeita. Aqui, a segunda condição é uma condição que tem um número total de contagens que correspondem ao número de sinalizadores os quais foram contados é menor do que um limite. O limite é, por exemplo, o número máximo acima descrito, e um seu exemplo específico deste é o n_1 ou n_2 acima descrito.
[0618] Por exemplo, no processo da Etapa S211 na Figura 61, o número de sinalizadores codificados "gt1_flag" é contado. Então, quando a segunda condição que o número total de contagens é menor do que um limite é satisfeita, os processos das Etapas S115 até S116b são executados. Por outro lado, quando a segunda condição não é satisfeita, os processos das Etapas S115 até S116b não são executados mesmo quando a condição de AbsLevel ≠ 0 (isto é, a primeira condição) é satisfeita. Em outras palavras, é determinado que o gt1_flag não deve ser utilizado na codificação de um valor absoluto.
[0619] Além disso, no processo da Etapa S221 na Figura 62, o número de sinalizadores codificados "gt2_flag" é contado. Então, quando a segunda condição que o número total de contagens é menor do que o limite é satisfeita, os processos das Etapas S122 até S123b são executados. Por outro lado, quando a segunda condição não é satisfeita, os processos das Etapas S122 até S123b não são executados mesmo quando a condição de AbsLevel ≥ 3 (isto é, a primeira condição) é satisfeita. Em outras palavras, é determinado que o gt2_flag não deve ser utilizado na codificação de um valor absoluto.
[0620] Neste modo, cada vez que um sinalizador é codificado, o número de sinalizadores codificados é contado. Consequentemente, é possível mais apropriadamente limitar o número de sinalizadores.
[0621] Além disso, a primeira condição pode ser uma condição que um valor absoluto não é o primeiro valor, ou uma condição que um valor absoluto é maior do que ou igual ao segundo valor. Por exemplo, o primeiro valor pode ser 0, e o segundo valor pode ser 3.
[0622] Com isto, para um coeficiente cujo valor absoluto não é 0, por exemplo, é possível apropriadamente limitar o número dos sinalizadores (por exemplo, o gt1_flag) que indica se o valor absoluto é maior do que ou igual a 3. Alternativamente, para um coeficiente cujo valor absoluto é maior do que ou igual a 3, por exemplo, é possível apropriadamente limitar o número de sinalizadores (por exemplo, o gt2_flag) que indica se ou não o valor absoluto é maior do que ou igual a 5.
[0623] Além disso, o sinalizador pode incluir tipos de sinalizadores mutuamente diferentes.
[0624] Com isto, por exemplo, é possível apropriadamente limitar o número de diferentes tipos de sinalizadores tais como os acima descritos gt1_flag e gt2_flag. Deve ser notado que sinalizadores de diferentes tipos podem também incluir, por exemplo, o sig_flag, o parity_flag, etc.
[0625] Além disso, na codificação de um valor absoluto (Etapa S10), o circuito pode derivar um restante que inclui um valor numérico para representar um valor absoluto quando um sinalizador não pode ser utilizado ou quando um valor absoluto não pode ser representado por somente pelo menos um sinalizador. Então, o circuito pode codificar o restante derivado pelo processamento de desvio da CABAC.
[0626] Neste modo, é possível apropriadamente codificar um valor absoluto de um coeficiente como um sinalizador ou como um grupo de dados que inclui pelo menos um sinalizador e um restante.
[0627] A Figura 73 é um fluxograma que ilustra a codificação de um restante executada pelo codificador 100 de acordo com a presente modalidade. Deve ser notado que o fluxograma ilustrado na Figura 73 ilustra as operações de processamento do terceiro aspecto acima descrito.
[0628] Na derivação acima descrita de um restante, o circuito determina um nível de base (isto é, o acima descrito baseLevel) o qual indica um valor numérico o qual varia de acordo com se o número total de contagens atingiu um limite. O número total de contagens corresponde ao número total de sinalizadores codificados para coeficientes localizados antes de um coeficiente que corresponde ao restante (Etapa S11b). A seguir, o circuito deriva um restante utilizando o nível de base o qual foi determinado (Etapa S12b). Além disso, o circuito seleciona um método de binarização que corresponde ao restante, dentre uma pluralidade de métodos de binarização os quais são diferentes uns dos outros, com base no nível de base utilizado na derivação do restante (Etapa S13b). A seguir, o circuito binariza o restante de acordo com o método de binarização o qual foi selecionado (Etapa S14b), e executa codificação aritmética no restante o qual foi binarizado (Etapa S15b).
[0629] Por exemplo, a Etapa S11b corresponde aos processos das Etapas S231, S233, e S235 ilustrados na Figura 71. Consequentemente, o nível de base determinado quando o número total de contagens atingiu o limite é 1 ou 3, por exemplo, e é menor do que o nível de base (por exemplo, 5) determinado quando o número total de contagens é menor do que o limite. Mais ainda, as Etapas S12b até S15b correspondem aos processos da Etapa S431 ilustrados na Figura
71.
[0630] Neste modo, é possível apropriadamente derivar, utilizando um nível de base, um restante que corresponde a um valor absoluto de um coeficiente. Além disso, como um método de binarização utilizado na binarização de um restante é selecionado com base no nível de base, é possível apropriadamente reduzir a quantidade de codificação do restante.
[0631] A Figura 74 é um fluxograma que ilustra operações de processamento executadas pelo decodificador 200 de acordo com a presente modalidade. Deve ser notado que o fluxograma ilustrado na Figura 74 indica as operações de processamento de decodificação que correspondem à codificação do segundo exemplo do primeiro aspecto ou do terceiro aspecto como acima descrito.
[0632] O decodificador 200 de acordo com a presente modalidade inclui um circuito e uma memória conectada no circuito, e o circuito executa, em operação, os processos das Etapas S30 e S40.
[0633] Mais especificamente, o circuito decodifica, para cada um da pluralidade de coeficientes incluídos em uma unidade estrutural de uma imagem a qual foi codificada, um valor absoluto do coeficiente em ordem predeterminada (Etapa S30). A seguir, o circuito decodifica, para cada um da pluralidade de coeficientes, um sinal o qual indica se o coeficiente é positivo ou negativo (Etapa S40). Aqui, na unidade estrutural, entre N (N é um inteiro maior do que ou igual a 2) coeficientes cada um tendo um valor absoluto o qual satisfaz uma condição predeterminada relativa a uma magnitude, um sinalizador é utilizado na codificação do valor absoluto de cada um de M (M é um inteiro menor do que N) coeficientes, e um sinalizador não é utilizado na codificação do valor absoluto de cada um dos (N - M) coeficientes restantes. Além disso, na decodificação do valor absoluto (Etapa S30), o circuito decodifica um sinal que indica paridade que é o bit menos significativo do valor absoluto (Etapa S31a). Então, quando um sinalizador é utilizado na codificação do valor absoluto outro que o bit menos significativo, o circuito decodifica o sinalizador por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo (Etapa S32a). Por exemplo, o sinal acima descrito que indica paridade é um parity_flag.
[0634] Com isto, mesmo quando o número de sinalizadores utilizados na codificação de uma unidade estrutural de uma imagem é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0635] Além disso, a condição predeterminada pode ser uma condição que um valor absoluto do coeficiente não é o primeiro valor, ou uma condição que um valor absoluto do coeficiente é maior do que ou igual ao segundo valor. Por exemplo, o primeiro valor pode ser 0, e o segundo valor pode ser 3.
[0636] Com isto, para um coeficiente cujo valor absoluto não é 0, por exemplo, mesmo quando o número de sinalizadores (por exemplo, o gt1_flag) que indica se o valor absoluto é maior do que ou igual a 3 é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem. Com isto, para um coeficiente cujo valor absoluto é maior do que ou igual a 3, por exemplo, mesmo quando o número de sinalizadores (por exemplo, o gt2_flag) que indica se o valor absoluto é maior do que ou igual a 5 é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0637] Além disso, o sinalizador pode incluir tipos de sinalizadores mutuamente diferentes.
[0638] Com isto, por exemplo, mesmo quando o número de cada um dos diferentes tipos de sinalizadores tais como os acima descritos gt1_flag e gt2_flag é limitado, é possível apropriadamente decodificar a unidade estrutural codificada da imagem. Deve ser notado que sinalizadores de diferentes tipos podem também inclui, por exemplo, o sig_flag, o parity_flag, etc.
[0639] Além disso, na decodificação do valor absoluto (Etapa S30),
quando um restante que inclui um valor numérico para representar o valor absoluto é codificado, o circuito pode decodificar o restante pelo processamento de desvio da CABAC.
[0640] Neste modo, mesmo quando um valor absoluto de um coeficiente é codificado como um sinalizador ou um grupo de dados que inclui pelo menos um sinalizador e um restante, é possível apropriadamente decodificar a unidade estrutural codificada da imagem.
[0641] A Figura 75 é um fluxograma que ilustra decodificar um restante executado pelo decodificador 200 de acordo com a presente modalidade. Deve ser notado que o fluxograma ilustrado na Figura 74 ilustra operações de processamento de decodificação que correspondem à codificação do terceiro aspecto acima descrito.
[0642] Na decodificação acima descrita de um restante, primeiro, o circuito determina um nível de base (isto é, o acima descrito baseLevel) o qual indica um valor numérico o qual varia de acordo com se o número total de contagens atingiu um limite. O número total de contagens corresponde ao número total de sinalizadores decodificados para coeficientes localizados antes de um coeficiente que corresponde ao restante (Etapa S31b). A seguir, o circuito executa decodificação aritmética no restante em um sinal binário (Etapa S32b). A seguir, o circuito seleciona um método de debinarização que corresponde ao sinal binário, dentre métodos de debinarização mutuamente diferentes, com base no nível de base o qual foi determinado (Etapa S33b). Então, o circuito debinariza o sinal binário de acordo com o método de debinarização o qual foi selecionado (Etapa S34b).
[0643] Por exemplo, a Etapa S31b corresponde aos processos das Etapas S231, S233, e S235 ilustrados na Figura 71. Consequentemente, o nível de base determinado quando o número total de contagens atingiu o limite é, por exemplo, 1 ou 3, e é menor do que o nível de base (por exemplo, 5) determinado quando o número total de contagens é menor do que o limite.
[0644] Neste modo, como um método de debinarização a ser utilizado na debinarização de um sinal binário é selecionado com base em um nível de base, é possível apropriadamente decodificar o restante.
[0645] Deve ser notado que, apesar de um sub-bloco ser utilizado como um exemplo de uma unidade estrutural de uma imagem de acordo com a presente modalidade, a unidade estrutural não está limitada ao sub-bloco, e a unidade estrutural pode ser qualquer unidade. Além disso, um bloco que inclui 4×4 pixels incluído em uma unidade de transformada é utilizado como um exemplo específico de um sub-bloco de acordo com a presente modalidade. No entanto, o sub-bloco não está limitado ao exemplo específico, e o sub-bloco pode ser qualquer bloco.
[0646] Além disso, de acordo com a presente modalidade, quando um valor absoluto de cada um da pluralidade de coeficientes é sequencialmente codificado, o número total de sinalizadores os quais já foram codificados é contado, e quando o número total de sinalizadores contado é menor do que um limite ou número máximo, é determinado que o sinalizador deve ser utilizado na codificação de um valor absoluto do próximo coeficiente. No entanto, a condição não está limitada ao número de sinalizadores, e pode ser determinado que um sinalizador deve ser utilizado quando o número total de contagens que inclui o número de sinalizadores é menor do que um limite, e que um sinalizador não deve ser utilizado quando o número total de contagens não é menor do que o limite. O total somente precisa ser a valor numérico o qual assume um valor maior conforme o número de sinalizadores os quais já foram codificados aumenta, e o número total de contagens pode incluir o número de outros sinalizadores.
[0647] Além disso, apesar do número dos sinalizadores "gt1_flag" e "gt2_flag" ser limitado de acordo com a presente modalidade, a definição de um sinalizador cujo número total é limitado pode ser qualquer definição. Por exemplo, apesar do gt1_flag ser utilizado para um coeficiente cujo valor absoluto não é 0 e indica se o valor absoluto é maior do que ou igual a 3, o gt1_flag pode indicar se o valor absoluto é maior do que ou igual a um valor numérico outro do que 3. Além disso, apesar do gt2_flag ser utilizado para um coeficiente que tem um valor absoluto maior do que ou igual a 3 e indica se o valor absoluto é maior do que ou igual a 5, o gt2_flag pode ser utilizado para um coeficiente que tem um valor absoluto maior do que ou igual a um valor numérico outro do que 3 e indica se o valor absoluto é maior do que ou igual a um valor numérico outro do que 5. Outros Exemplos
[0648] O codificador 100 e decodificador 200 de acordo com os exemplos acima descritos podem ser utilizados como um codificador de imagem e uma imagem decodificador, respectivamente, ou como um codificador de vídeo e um decodificador de vídeo, respectivamente.
[0649] Alternativamente, o codificador 100 e o decodificador 200 podem ser utilizados como um codificador de entropia e um decodificador de entropia, respectivamente. Em outras palavras, o codificador 100 e o decodificador 200 podem somente corresponder ao codificador de entropia 110 e ao decodificador de entropia 202. Outros elementos constituintes podem ser incluídos em outro aparelho.
[0650] Mais ainda, pelo menos parte dos exemplos acima descritos pode ser utilizada como um método de codificação, um método de decodificação, um método de codificação de entropia, um método de decodificação de entropia, ou outros métodos.
[0651] Deve ser notado que, cada um dos elementos constituintes pode estar configurado na forma de um produto de hardware exclusivo, ou pode ser realizado executando um programa de software adequado para cada um dos elementos constituintes. Cada um dos elementos constituintes pode ser realizado por meio de uma unidade de execução de programa, tal como uma CPU e um processador, lendo e executando o programa de software gravado em um meio de gravação tal como um disco rígido ou uma memória de semicondutor.
[0652] Mais especificamente, cada um do codificador 100 e decodificador 200 pode incluir um circuito de processamento e um armazenamento o qual está eletricamente conectado no circuito de processamento e acessível do circuito de processamento. Por exemplo, o circuito de processamento corresponde ao processador a1 ou b1, e o armazenamento corresponde à memória a2 ou b2.
[0653] O circuito de processamento inclui pelo menos um do hardware exclusivo e da unidade de execução de programa, e executa o processamento utilizando o armazenamento. Além disso, quando o circuito de processamento inclui a unidade de execução de programa, o armazenamento armazena um programa de software que é executado pela unidade de execução de programa.
[0654] Aqui, o software para implementar o codificador 100, decodificador 200, ou similares acima descritos inclui programas como abaixo indicados.
[0655] Por exemplo, o programa faz com que um computador execute o método de codificação abaixo. O método de codificação inclui: codificar, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi transformada e quantizada; e codificar, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo. Na codificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é codificado, se utilizar um sinalizador na codificação de uma porção do valor absoluto outro que o bit menos significativo é determinado com base em uma primeira condição e uma segunda condição, e o sinalizador é codificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo quando é determinado que o sinalizador deve ser utilizado, a primeira condição está baseada em uma magnitude do valor absoluto, e a segunda condição é para limitar um número total de sinalizadores utilizados na unidade estrutural.
[0656] Além disso, por exemplo, o programa faz com que um computador execute o método de decodificação abaixo. O método de decodificação inclui: decodificar, para cada um de uma pluralidade de coeficientes, um valor absoluto do coeficiente em ordem predeterminada, a pluralidade de coeficientes sendo incluída em uma unidade estrutural de uma imagem a qual foi codificada; e decodificar, para cada um da pluralidade de coeficientes, um sinal que indica se o coeficiente é positivo ou negativo. Na unidade estrutural, entre N coeficientes cada um tendo um valor absoluto o qual satisfaz uma condição predeterminada relativa a uma magnitude, um sinalizador é utilizado na codificação de um valor absoluto de cada um de M coeficientes, e um sinalizador não é utilizado na codificação de um valor absoluto de cada um de (N - M) coeficientes restantes, N sendo um inteiro maior do que ou igual a 2, M sendo um inteiro menor do que N, na decodificação do valor absoluto, um sinal que indica paridade que é um bit menos significativo do valor absoluto é decodificado, e quando o sinalizador é utilizado na codificação de uma porção do valor absoluto outro que o bit menos significativo, o sinalizador é decodificado por codificação aritmética binária adaptável com base em contexto (CABAC) que envolve atualizar uma probabilidade de ocorrência de símbolo.
[0657] Além disso, cada um dos elementos constituintes pode ser circuito como acima descrito. Os circuitos podem estar configurados como um único circuito como um todo ou podem ser circuitos mutuamente diferentes. Além disso, cada um dos elementos estruturais pode ser implementado como um processador de uso geral ou como um processador dedicado.
[0658] Além disso, os processos executados por um elemento constituinte específico podem ser executados por um diferente elemento constituinte. Além disso, a ordem na qual os processos são executados pode ser mudada, ou uma pluralidade de processos pode ser executada em paralelo. Além disso, um codificador/decodificador pode incluir o codificador 100 e o decodificador 200.
[0659] Além disso, os números ordinais tais como primeiro, segundo, etc. utilizados para explicação podem ser arbitrariamente substituídos. Além disso, um número ordinal pode ser recentemente adicionado para um dado dos elementos constituintes, ou similares, ou o número ordinal de um dado dos elementos constituintes, ou similares, pode ser removido.
[0660] Aspectos do codificador 100 e decodificador 200 foram descritos acima com base em uma pluralidade de exemplos. No entanto, aspectos do codificador 100 e decodificador 200 não estão limitados a estes exemplos. Os um ou mais aspectos da presente descrição podem abranger cada um dos exemplos obteníveis adicionando, às modalidades, vários tipos de modificações que uma pessoa versada na técnica chegaria e modalidades configuráveis combinando elementos constituintes em diferentes exemplos dentro do escopo dos aspectos do codificador 100 e decodificador 200.
[0661] Um ou mais dos aspectos aqui descritos podem ser executados combinando pelo menos parte dos outros aspectos na presente descrição. Além disso, um ou mais dos aspectos aqui descritos podem ser executados combinando, com outros aspectos, parte dos processos indicados em qualquer um dos fluxogramas de acordo com os aspectos, parte da configuração de qualquer dos dispositivos, parte de sintaxes, etc. Implementações e Aplicações
[0662] Como descrito em cada uma das modalidades acima, cada bloco funcional ou operacional pode tipicamente ser realizado como uma MPU (unidade de microprocessamento) e memória, por exemplo. Mais ainda, os processos executados por cada um dos blocos funcionais podem ser realizados como uma unidade de execução de programa, tal como um processador o qual lê e executa um software (um programa) gravado em um meio de gravação tal como uma ROM. O software pode ser distribuído. O software pode ser gravado em uma variedade de meios de gravação, tal como uma memória de semicondutor. Note que cada bloco funcional pode também ser realizado como hardware (circuito dedicado). Várias combinações de hardware e software podem ser usadas.
[0663] O processamento descrito em cada uma das modalidades pode ser realizado através de processamento integrado utilizando um único aparelho (sistema), e, alternativamente, pode ser realizado através de processamento descentralizado utilizando uma pluralidade de aparelhos. Mais ainda, o processador que executa o programa acima descrito pode ser um único processador ou uma pluralidade de processadores. Em outras palavras, um processamento integrado pode ser executado, e, alternativamente, um processamento descentralizado pode ser executado.
[0664] As modalidades da presente descrição não estão limitadas às modalidades exemplares acima; várias modificações podem ser feitas às modalidades exemplares, os resultados das quais estão também incluídos dentro do escopo das modalidades da presente descrição.
[0665] A seguir, exemplos de aplicação do método de codificação de imagem móvel (método de codificação de imagem) e do método de decodificação de imagem móvel (método de decodificação de imagem) descritos em cada uma das modalidades acima serão descritos, assim como vários sistemas que implementam os exemplos de aplicação. Tal sistema pode ser caracterizado como incluindo um codificador de imagem que usa o método de codificação de imagem, um decodificador de imagem que usado o método de decodificação de imagem, ou um codificador-decodificador de imagem que inclui tanto o codificador de imagem quanto o decodificador de imagem. Outras configurações de tal sistema podem ser modificadas em uma base de caso por caso. Exemplos de Utilização
[0666] A Figura 76 ilustra uma configuração geral do sistema de provisão de conteúdo ex100 adequado para implementar um serviço de distribuição de conteúdo. A área na qual o serviço de comunicação está provido é dividida em células de tamanhos desejados, e estações de base ex106, ex107, ex108, ex109, e ex110, as quais são estações sem fio fixas no exemplo ilustrado, estão localizadas em respectivas células.
[0667] No sistema de provisão de conteúdo ex100, dispositivos que incluem um computador ex111, dispositivo de jogo ex112, câmera ex113, utensílio doméstico ex114, e smartphone ex115 estão conectados à internet ex101 através do provedor de serviços de internet ex102 ou rede de comunicações ex104 e estações base ex106 até ex110. O sistema de provisão de conteúdo ex100 pode combinar e conectar qualquer combinação dos dispositivos acima. Em várias implementações, os dispositivos podem ser diretamente ou indiretamente conectados juntos através de uma rede telefônica ou comunicação de campo próximo, ao invés de através de estações base ex106 até ex110. Mais ainda, um servidor de fluxo ex103 pode estar conectado nos dispositivos que incluem o computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio doméstico ex114, e smartphone ex115 através de, por exemplo, a internet ex101. O servidor de fluxo ex103 pode também ser conectado em, por exemplo, um terminal em um hotspot em um avião ex117 através de satélite ex116.
[0668] Note que, ao invés das estações base ex106 até ex110, pontos de acesso sem fio ou hotspots podem ser utilizados. O servidor de fluxo ex103 pode ser conectado na rede de comunicações ex104 diretamente ao invés de através da internet ex101 ou provedor de serviços de internet ex102, e pode ser conectado no avião ex117 diretamente ao invés de através de satélite ex116.
[0669] A câmera ex113 é um dispositivo capaz de capturar imagens estáticas e vídeo, tal como uma câmera digital. O smartphone ex115 é um dispositivo de smartphone, telefone celular, ou telefone de serviço de telefone portátil pessoal (PHS) que pode operar sob os padrões de sistema de comunicações móveis dos sistemas 2G, 3G, 3.9G, e 4G, assim como o sistema 5G de próxima geração.
[0670] O utensílio doméstico ex114 é, por exemplo, um refrigerador ou um dispositivo incluído em um sistema de cogeração de célula de combustível doméstico.
[0671] No sistema de provisão de conteúdo ex100, um terminal que inclui uma função de captura de imagem e/ou vídeo é capaz de, por exemplo, fluxo ao vivo conectando no servidor de fluxo ex103 através da, por exemplo, estação base ex106. Quando em fluxo ao vivo, um terminal (por exemplo, o computador ex111, dispositivo de jogo ex112, câmera ex113, utensílio doméstico ex114, smartphone ex115, ou um terminal em avião ex117) pode executar o processamento de codificação descrito nas modalidades acima em conteúdo de imagem estática ou vídeo capturado por um usuário através do terminal, pode multiplexar dados de vídeo obtidos através da codificação e dados de áudio obtidos pela codificação de áudio que corresponde ao vídeo, e pode transmitir os dados obtidos para o servidor de fluxo ex103. Em outras palavras, o terminal funciona como o codificador de imagem de acordo com um aspecto da presente descrição.
[0672] O servidor de fluxo ex103 transmite em fluxo dados de conteúdo transmitidos para clientes que solicitam o fluxo. Exemplos de clientes incluem o computador ex111, dispositivo de jogo ex112, câmera ex113, utensílio doméstico ex114, smartphone ex115, e terminais dentro de avião ex117, os quais são capazes de decodificar os dados codificados acima descritos. Os dispositivos que recebem os dados em fluxo podem decodificar e reproduzir os dados recebidos. Em outras palavras, os dispositivos podem cada um funcionar como o decodificador de imagem, de acordo com um aspecto da presente descrição. Processamento Descentralizado
[0673] O servidor de fluxo ex103 pode ser realizado como uma pluralidade de servidores ou computadores entre os quais tarefas tais como o processamento, gravação, e fluxo de dados são divididas. Por exemplo, o servidor de fluxo ex103 pode ser realizado como uma rede de fornecimento de conteúdo (CDN) que transmite fluxo de conteúdo através de uma rede que conecta vários servidores de borda localizados através de todo o mundo. Em uma CDN, um servidor de borda fisicamente próximo do cliente pode ser dinamicamente atribuído para o cliente. O conteúdo é colocado em cache e transmitido em fluxo para o servidor de borda para reduzir os tempos de carga. No caso de, por exemplo, algum tipo de erro ou mudança em conectividade devido, por exemplo, a um pico no tráfego, é possível transmitir em fluxo dados estavelmente em altas velocidades, já que é possível evitar partes afetadas da rede, por exemplo, dividindo o processamento entre uma pluralidade de servidores de borda, ou comutando as funções de fluxo para um diferente servidor de borda e continuando o fluxo.
[0674] A descentralização não está limitada a apenas da divisão de processamento para fluxo; a codificação dos dados capturados pode ser dividida entre e executada pelos terminais, no lado de servidor, ou ambos. Em um exemplo, em codificação típica, o processamento é executado em dois loops. O primeiro loop é para detectar quão complicada a imagem é em uma base de quadro por quadro ou cena por cena, ou detectar a carga de codificação. O segundo loop é para processamento que mantém a qualidade de imagem e aperfeiçoa a eficiência de codificação. Por exemplo, é possível reduzir a carga de processamento dos terminais e aperfeiçoar a qualidade e eficiência de codificação do conteúdo fazendo os terminais executarem o primeiro loop da codificação e fazendo o lado de servidor que recebeu o conteúdo executar o segundo loop da codificação. Em tal caso, quando do recebimento de uma solicitação de decodificação, é possível que os dados codificados que resultam do primeiro loop executado por um terminal sejam recebidos e reproduzidos em outro terminal em aproximadamente tempo real. Isto torna possível realizar um fluxo em tempo real contínuo.
[0675] Em outro exemplo, a câmera ex113 ou similares extrai uma quantidade de característica (uma quantidade de aspectos ou características) de uma imagem, comprime dados relativos à quantidade de características como metadados e transmite os metadados comprimidos para um servidor. Por exemplo, o servidor determina a significância de um objeto com base na quantidade de características e muda a precisão de quantização consequentemente para executar uma compressão adequada para o significado (ou significância de conteúdo) da imagem. Os dados de quantidade de características são especificamente efetivos em aperfeiçoar a precisão e eficiência de predição de vetor de movimento durante a segunda passagem de compressão executada pelo servidor. Mais ainda, a codificação que tem uma carga de processamento relativamente baixa, tal como codificação de comprimento variável (VLC), pode ser manipulada pelo terminal, e a codificação que tem uma carga de processamento relativamente alta, tal como codificação aritmética binária adaptável em contexto (CABAC), pode ser manipulado pelo servidor.
[0676] Em ainda em outro exemplo, existem casos nos quais uma pluralidade de vídeos de aproximadamente a mesma cena é capturada por uma pluralidade de terminais em, por exemplo, um estádio, shopping center, ou fábrica. Em tal caso, por exemplo, a codificação pode ser descentralizada dividindo tarefas de processamento entre a pluralidade de terminais que capturou os vídeos e, se necessário, outros terminais que não capturaram os vídeos, e o servidor, em uma base por unidade. As unidades podem ser, por exemplo, grupos de imagens (GOP), imagens, ou telas lado a lado que resultam da divisão de uma imagem. Isto torna possível reduzir os tempos de carga e conseguir um fluxo que é mais próximo do tempo real.
[0677] Como os vídeos são de aproximadamente a mesma cena, o gerenciamento e/ou instruções podem ser executados pelo servidor de modo que os vídeos capturados pelos terminais possam ser referenciados cruzados. Mais ainda, o servidor pode receber dados codificados dos terminais, mudar a relação de referência entre itens de dados, ou corrigir ou substituir as próprias imagens, e então executar a codificação. Isto torna possível gerar um fluxo com qualidade e eficiência aumentadas para os itens de dados individuais.
[0678] Mais ainda, o servidor pode transmitir um fluxo de dados de vídeo após executar transcodificação para converter o formato de codificação dos dados de vídeo. Por exemplo, o servidor pode converter o formato de codificação de MPEG para VP (por exemplo, VP9), pode converter H.264 para H.265, etc.
[0679] Neste modo, a codificação pode ser executada por um terminal ou um ou mais servidores. Consequentemente, apesar do dispositivo que executa a codificação ser referido como um "servidor" ou "terminal" na descrição seguinte, alguns ou todos os processos executados pelo servidor podem ser executados pelo terminal, e do mesmo modo alguns ou todos os processos executados pelo terminal podem ser executados pelo servidor. Isto também se aplica a processos de decodificação. 3D, Múltiplos Ângulos
[0680] Tem havido um aumento em utilização de imagens ou vídeos combinados de imagens ou vídeos de diferentes cenas concorrentemente capturadas, ou da mesma cena capturada de diferentes ângulos, por uma pluralidade de terminais tais como a câmera ex113 e/ou smartphone ex115. Os vídeos capturados pelos terminais podem ser combinados com base em, por exemplo, a relação posicional relativa separadamente obtida entre os terminais, ou regiões em um vídeo que têm pontos característicos coincidentes.
[0681] Além da codificação de imagens móveis bidimensionais, o servidor pode codificar uma imagem estática com base em análise de cena de uma imagem móvel, ou automaticamente ou em um ponto no tempo especificado pelo usuário, e transmitir a imagem estática codificada para um terminal de recepção. Mais ainda, quando o servidor pode obter a relação posicional relativa entre os terminais de captura de vídeo, além de imagens móveis bidimensionais, o servidor pode gerar geometria tridimensional de uma cena com base em vídeo da mesma cena capturado de diferentes ângulos. O servidor pode separadamente codificar dados tridimensionais gerados de, por exemplo, uma nuvem de pontos e, com base em um resultado em reconhecer ou rastrear uma pessoa ou objeto utilizando dados tridimensionais, pode selecionar ou reconstruir e gerar um vídeo a ser transmitido para um terminal de recepção, de vídeos capturados por uma pluralidade de terminais.
[0682] Isto permite o usuário desfrutar uma cena livremente selecionando vídeos que correspondem aos terminais de captura de vídeo, e permite ao usuário desfrutar o conteúdo obtido extraindo um vídeo em um ponto de vista selecionado de dados tridimensionais reconstruídos de uma pluralidade de imagens ou vídeos. Mais ainda, como com vídeo, o som pode ser gravado de ângulos relativamente diferentes, e o servidor pode multiplexar o áudio de um ângulo ou espaço específico com o vídeo correspondente, e transmitir o vídeo e áudio multiplexados.
[0683] Em anos recentes, um conteúdo que é um composto do mundo real e um mundo virtual, tal como um conteúdo de realidade virtual (VR) e realidade aumentada (AR), também tornou-se popular. No caso de imagens de VR, o servidor pode criar imagens dos pontos de vista de ambos os olhos esquerdo e direito, e executar codificação que tolera referência entre as duas imagens de ponto de vista, tal como codificação de múltiplas vistas (MVC), e, alternativamente, pode codificar as imagens como fluxos separados sem referenciar. Quando as imagens são decodificadas como fluxos separados, os fluxos podem ser sincronizados quando reproduzidos, de modo a recriar um espaço tridimensional virtual de acordo com o ponto de vista do usuário.
[0684] No caso de imagens AR, o servidor pode sobrepor informações de objetos virtuais existentes em um espaço virtual sobre informações de câmeras que representam um espaço do mundo real, com base em uma posição tridimensional ou movimento da perspectiva do usuário. O decodificador pode obter ou armazenar informações de objetos virtuais e dados tridimensionais, gerar imagens bidimensionais com base no movimento na perspectiva do usuário, e então gerar dados sobrepostos conectando uniformemente as imagens. Alternativamente, o decodificador pode transmitir, para o servidor, movimento da perspectiva do usuário além de uma solicitação de informações do objeto virtual. O servidor pode gerar dados sobrepostos com base em dados tridimensionais armazenados no servidor de acordo com o movimento recebido, e codificar e transmitir em fluxo os dados sobrepostos gerados para o decodificador. Note que os dados sobrepostos tipicamente incluem, além de valores RGB, um valor α que indica a transparência, e o servidor ajusta o valor α para seções outras que o objeto gerado de dados tridimensionais para, por exemplo, 0, e pode executar a codificação enquanto estas seções são transparentes. Alternativamente, o servidor pode ajustar o fundo para um valor RGB determinado, tal como um chroma key, e gerar dados nos quais áreas outras que o objeto são ajustadas como o fundo. O valor RGB determinado pode ser predeterminado.
[0685] A decodificação de dados similarmente em fluxo pode ser executada pelo cliente (por exemplo, os terminais), do lado de servidor, ou dividida entre estes. Em um exemplo, um terminal pode transmitir uma solicitação de recepção para um servidor, o conteúdo solicitado pode ser recebido e decodificado por outro terminal, e um sinal decodificado pode ser transmitido para um dispositivo que tem um display. É possível reproduzir dados de alta qualidade de imagem descentralizando o processamento e apropriadamente selecionando o conteúdo independentemente da capacidade de processamento do próprio terminal de comunicações. Em ainda outro exemplo, enquanto uma TV, por exemplo, está recebendo dados de imagem que são grandes em tamanho, uma região da imagem, tal como uma tela lado a lado obtida dividindo a imagem, pode ser decodificada e exibida em um terminal ou terminais pessoais de um espectador ou espectadores da TV. Isto torna possibilita que os espectadores compartilhem uma vista de imagem grande assim como para cada espectador verificar sua área designada, ou inspecionar uma região em mais detalhes de perto.
[0686] Em situações nas quais uma pluralidade de conexões sem fio é possível em distâncias próximas, médias e distantes, internas ou externas, pode ser possível ininterruptamente receber um conteúdo utilizando um padrão de sistema de fluxo tal como MPEG-DASH. O usuário pode comutar entre dados em tempo real enquanto livremente selecionando um decodificador ou aparelho de display que inclui o terminal do usuário, displays dispostos internos ou externos, etc. Mais ainda, utilizando, por exemplo, informações sobre a posição do usuário, a decodificação pode ser executada enquanto comutando qual terminal manipula a decodificação e qual terminal manipula a exibição de conteúdo. Isto torna possível mapear e exibir informações, enquanto o usuário está movendo em uma rota para um destino, sobre uma parede de um prédio próximo no qual um dispositivo capaz de exibir conteúdo está embutido, ou sobre parte do solo. Mais ainda, é também possível comutar a taxa de bits dos dados recebidos com base na acessibilidade para os dados codificados em uma rede, tal como quando dados codificados são colocados em cache em um servidor rapidamente acessíveis do terminal de recepção, ou quando os dados codificados são copiados para um servidor de borda em um serviço de fornecimento de conteúdo. Codificação Escalável
[0687] A comutação de conteúdo será descrita com referência a um fluxo escalável, ilustrado na Figura 77, o qual está codificado por compressão através de implementação do método de codificação de imagem móvel descrito nas modalidades acima. O servidor pode ter uma configuração na qual o conteúdo é comutado enquanto fazendo utilização da escalabilidade temporal e/ou espacial de um fluxo, o que é conseguido por divisão em e codificação de camadas, como ilustrado na Figura 77. Note que pode existir uma pluralidade de fluxos individuais que são do mesmo conteúdo mas de diferente qualidade. Em outras palavras, determinando qual camada decodificar com base em fatores internos, tal como a capacidade de processamento no lado de decodificador, e fatores externos, tal como como largura de banda de comunicação, o lado de decodificador pode livremente comutar entre conteúdos de baixa resolução e conteúdo de alta resolução enquanto decodificando. Por exemplo, em um caso no qual o usuário deseja continuar assistindo, por exemplo, em casa em um dispositivo tal como uma TV conectada na internet, um vídeo que o usuário estava anteriormente assistindo no smartphone ex115 enquanto em movimento, o dispositivo pode simplesmente decodificar o mesmo fluxo para uma camada diferente, o que reduz a carga do lado de servidor.
[0688] Mais ainda, além da configuração acima descrita, na qual a escalabilidade é conseguida como um resultado das imagens sendo codificadas por camada, com a camada de melhoramento sendo acima da camada de base, a camada de melhoramento pode incluir metadados com base em, por exemplo, informações estatísticas sobre a imagem. O lado de decodificador pode gerar um conteúdo de alta qualidade de imagem executando formação de imagens de superresolução sobre uma imagem na camada de base com base nos metadados. A formação de imagem de superresolução pode aperfeiçoar a razão de SN, enquanto mantendo a resolução e/ou aumentando a resolução. Os metadados incluem informações para identificar um coeficiente de filtro linear ou não linear, como utilizado em processamento de superresolução, ou informações que identificam um valor de parâmetro em processamento de filtro, aprendizado de máquina, ou um método de menores quadrados utilizado no processamento de superresolução.
[0689] Alternativamente, uma configuração pode ser provida na qual uma imagem está dividida em, por exemplo, telas lado a lado de acordo com, por exemplo, o significado de um objeto na imagem. No lado de decodificador, somente uma região parcial é decodificada selecionando uma tela lado a lado para decodificar. Ainda,
armazenando um atributo do objeto (pessoa, carro, bola, etc.) e uma posição do objeto no vídeo (coordenadas em imagens idênticas) como metadados, o lado de decodificador pode identificar a posição de um objeto desejado com base nos metadados e determinar qual tela ou telas lado a lado incluir aquele objeto. Por exemplo, o como ilustrado na Figura 78, os metadados podem ser armazenados utilizando uma estrutura de armazenamento de dados diferente de dados de pixel, tal como uma mensagem de SEI (informações de melhoramento suplementares) em HEVC. Estes metadados indicam, por exemplo, a posição, tamanho, ou cor do objeto principal.
[0690] Os metadados podem ser armazenados em unidades de uma pluralidade de imagens, tal como um fluxo, sequência ou unidades de acesso randômico. O lado de decodificador pode obter, por exemplo, o tempo no qual uma pessoa específica aparece no vídeo, e ajustando as informações de tempo com informações de unidade de imagem, pode identificar uma imagem na qual o objeto está presente, e pode determinar a posição do objeto na imagem. Otimização de Webpage
[0691] A Figura 79 ilustra um exemplo de uma tela de display de uma webpage no computador ex111, por exemplo. A Figura 80 ilustra um exemplo de uma tela de display de uma webpage no smartphone ex115, por exemplo. Como ilustrado na Figura 79 e Figura 80, uma webpage pode incluir uma pluralidade de conexões de imagem que são conexões para conteúdo de imagem, e a aparência da webpage pode diferir dependendo do dispositivo utilizado para ver a webpage. Quando uma pluralidade de conexões de imagem é visível na tela, até que o usuário explicitamente selecione uma conexão de imagem, ou até que a conexão de imagem esteja no centro aproximado da tela ou a conexão de imagem inteira caiba na tela, o aparelho de display (decodificador) pode exibir, como as conexões de imagem, imagens estáticas incluídas no conteúdo ou imagens I; pode exibir um vídeo tal como um gif animado utilizando uma pluralidade de imagens estáticas ou imagens I; ou pode receber somente a camada de base, e decodificar e exibir o vídeo.
[0692] Quando uma conexão de imagem é selecionada pelo usuário, o aparelho de display executa decodificação enquanto, por exemplo, dando a prioridade mais alta para a camada de base. Note que se existirem informações no código HTML da webpage que indiquem que o conteúdo é escalável, o aparelho de display pode decodificar até a camada de melhoramento. Ainda, de modo a garantir reprodução em tempo real, antes de uma seleção ser feita ou quando a largura de banda é severamente limitada, o aparelho de display pode reduzir o retardo entre o ponto no tempo no qual a imagem dianteira é decodificada e o ponto no tempo no qual a imagem decodificada é exibida (isto é, o retardo entre o início da decodificação do conteúdo até a exibição do conteúdo) decodificando e exibindo somente imagens de referência para a frente (imagem I, imagem P, imagem B de referência para frente). Mais ainda, o aparelho de display pode propositalmente ignorar a relação de referência entre as imagens, e grosseiramente decodificar todas as imagens B e P como imagens de referência para frente, e então executar decodificação normal conforme o número de imagens recebidas ao longo do tempo aumente. Direção Autônoma
[0693] Quando transmitindo e recebendo dados de imagem estática ou vídeo, tal como informações de mapas bi ou tridimensionais para direção autônoma ou direção assistida de um automóvel, o terminal de recepção pode receber, além dos dados de imagem que pertencem a uma ou mais camadas, informações sobre, por exemplo, o clima ou construção de estradas como metadados, e associar os metadados com os dados de imagem quando decodificando. Note que os metadados podem ser atribuídos por camada e, alternativamente, podem simplesmente ser multiplexados com os dados de imagem.
[0694] Em tal caso, como o automóvel, drone, avião, etc., que contém o terminal de recepção é móvel, o terminal de recepção pode ininterruptamente receber e executar decodificação enquanto comutando entre estações base entre as estações base ex106 a ex110 transmitindo informações que indicam a posição do terminal de recepção. Mais ainda, de acordo com a seleção feita pelo usuário, a situação do usuário, e/ou a largura de banda da conexão, o terminal de recepção pode dinamicamente selecionar em qual grau os metadados são recebidos, ou em qual grau as informações do mapa, por exemplo, são atualizadas.
[0695] No sistema de provisão de conteúdo ex100, o cliente pode receber, decodificar, e reproduzir, em tempo real, informações codificadas transmitidas pelo usuário. Fluxo de Conteúdo Individual
[0696] No sistema de provisão de conteúdo ex100, além de alta qualidade de imagem, longo conteúdo distribuído por uma entidade de distribuição de vídeo, um fluxo de unidifusão ou multidifusão de baixa qualidade de imagem, e curto conteúdo de um indivíduo são também possíveis. Tal conteúdo de indivíduos é provável ainda aumentar em popularidade. O servidor pode primeiro executar um processamento de edição no conteúdo antes do processamento de codificação, de modo a refinar o conteúdo individual. Isto pode ser conseguido utilizando a seguinte configuração, por exemplo.
[0697] Em tempo real enquanto capturando um conteúdo de vídeo ou imagem, ou após o conteúdo ter sido capturado e acumulado, o servidor executa um processamento de reconhecimento com base nos dados brutos ou dados codificados, tal como processamento de erro de captura, processamento de pesquisa de cena, análise de significado, e/ou processamento de detecção de objetos. Então, com base no resultado do processamento de reconhecimento, o servidor - ou quando avisado ou automaticamente - edita o conteúdo, exemplos dos quais incluem: correção tal como foco e/ou correção de embaçamento de movimento; remoção de cenas de baixa prioridade, tal como cenas que são baixas em luminosidade comparada com outras fotos, ou fora de foco; ajuste de borda de objeto; e ajuste de tom de cor. O servidor codifica os dados editados com base no resultado da edição. É conhecido que vídeos excessivamente longos tendem a receber menos visualizações. Consequentemente, de modo a manter o conteúdo dentro de um comprimento específico que que escala com o comprimento do vídeo original, o servidor pode, além das cenas de baixa prioridade acima descritas, automaticamente recortar cenas com baixo movimento, com base em um resultado de processamento de imagem. Alternativamente, o servidor pode gerar e codificar um resumo de vídeo com base em um resultado de uma análise do significado de uma cena.
[0698] Podem existir casos nos quais um conteúdo individual pode incluir um conteúdo que infringe um direito autoral, direito moral, direitos de imagem, etc. Tal caso pode levar a uma situação desfavorável para o criador, tal como quando o conteúdo é compartilhado além do escopo pretendido pelo criador. Consequentemente, antes da codificação, o servidor pode, por exemplo, editar imagens de modo a desfocar faces de pessoas na periferia da tela ou desfocar o interior de uma casa, por exemplo. Ainda, o servidor pode estar configurado para reconhecer as faces de pessoas outras que uma pessoa registrada em imagens a serem codificadas, e quando tais faces aparecem em uma imagem, pode aplicar um filtro de mosaico, por exemplo, na face da pessoa. Alternativamente, como pré ou pós-processamento para codificação, o usuário pode especificar, por razões de direitos autorais, uma região de uma imagem que inclui uma pessoa ou uma região do fundo a ser processada. O servidor pode processar a região especificada, por exemplo, substituindo a região por uma imagem diferente, ou desfocando a região. Se a região incluir uma pessoa, a pessoa pode ser rastreada na imagem móvel, e a região de cabeça da pessoa pode ser substituída por outra imagem conforme a pessoa move.
[0699] Como existe uma demanda para visualização em tempo real de conteúdo produzido por indivíduos, o que tende a ser pequeno em tamanho de dados, o decodificador pode primeiro receber a camada de base como a prioridade mais alta, e executar decodificação e reprodução, apesar disto poder diferir dependendo da largura de banda. Quando o conteúdo é reproduzido duas ou mais vezes, tal como quando o decodificador recebe a camada de melhoramento durante a decodificação e reprodução da camada de base, e faz um loop na reprodução, o decodificador pode reproduzir um vídeo de alta qualidade de imagem incluindo a camada de melhoramento. Se o fluxo for codificado utilizando tal codificação escalável, o vídeo pode ser de baixa qualidade quando no estado não selecionado ou no início do vídeo, mas este pode oferecer uma experiência na qual a qualidade de imagem do fluxo progressivamente aumenta em um modo inteligente. Isto não está limitado para apenas codificação escalável; a mesma experiência pode ser oferecida configurando um único fluxo de um fluxo de baixa qualidade reproduzido pela primeira vez e um segundo fluxo codificado utilizando o primeiro fluxo como uma referência. Outros Exemplos de Implementação e Aplicação
[0700] A codificação e decodificação podem ser executadas por LSI (circuito de integração de grande escala) ex500 (ver Figura 76), o qual está tipicamente incluído em cada terminal. O LSI ex500 pode estar configurado como um único chip ou uma pluralidade de chips. Software para codificar e decodificar imagens móveis pode ser integrado em algum tipo de meio de gravação (tal como um CD-ROM, um disco flexível, ou um disco rígido) que seja legível pelo, por exemplo, o computador ex111, e a codificação e decodificação podem ser executadas utilizando o software. Mais ainda, quando o smartphone ex115 está equipado com uma câmera, os dados de vídeo obtidos pela câmera podem ser transmitidos. Neste caso, os dados de vídeo podem ser codificados pelo LSI ex500 incluído no smartphone ex115.
[0701] Note que o LSI ex500 pode estar configurado para fazer download e ativar uma aplicação. Em tal caso, o terminal primeiro determina se este é compatível com o esquema utilizado para codificar o conteúdo, ou se este é capaz de executar um serviço específico. Quando o terminal não é compatível com o esquema de codificação do conteúdo, ou quando o terminal não é capaz de executar um serviço específico, o terminal pode primeiro fazer download de um codec ou software de aplicação e então obter e reproduzir o conteúdo.
[0702] Além do exemplo de sistema de provisão de conteúdo ex100 que utiliza internet ex101, pelo menos o codificador de imagem móvel (codificador de imagem) ou o decodificador de imagem móvel (decodificador de imagem) descritos nas modalidades acima podem ser implementados em um sistema de transmissão digital. O mesmo processamento de codificação e processamento de decodificação pode ser aplicado para transmitir e receber ondas de rádio de transmissão sobrepostas com dados de áudio e vídeo multiplexados utilizando, por exemplo, um satélite, mesmo que isto seja voltado para multidifusão, enquanto que a unidifusão é mais fácil com o sistema de provisão de conteúdo ex100. Configuração de Hardware
[0703] A Figura 81 ilustra mais detalhes do smartphone ex115 mostrado na Figura 76. A Figura 82 ilustra um exemplo de configuração do smartphone ex115. O smartphone ex115 inclui uma antena ex450 para transmitir e receber ondas de rádio para e da estação base ex110,
uma câmera ex465 capaz de capturar vídeo e imagens estáticas, e um display ex458 que exibe dados decodificados, tal como um vídeo capturado pela câmera ex465 e um vídeo recebido pela antena ex450. O smartphone ex115 ainda inclui uma interface de usuário ex466 tal como um painel de toque, uma unidade de saída de áudio ex457 tal como um alto-falante para emitir fala ou outro áudio, uma unidade de entrada de áudio ex456 tal como um microfone para entrada de áudio, uma memória ex467 capaz de armazenar dados decodificados, tais como vídeo ou imagens estáticas capturados, áudio gravado, vídeo ou imagens estáticas recebidos, e-mail, assim como dados decodificados, e uma fenda ex464 a qual é uma interface para SIM ex468 para autorizar acesso a uma rede e vários dados. Note que uma memória externa pode ser usada ao invés da memória ex467.
[0704] O controlador principal ex460, o qual pode abrangentemente controlar o display ex458 e interface de usuário ex466, circuito de suprimento de energia ex461, controlador de entrada de interface de usuário ex462, processador de sinal de vídeo ex455, interface de câmera ex463, controlador de display ex459, modulador/demodulador ex452, multiplexador/demultiplexador ex453, processador de sinal de áudio ex454, fenda ex464, e memória ex467 estão conectados através de um barramento ex470.
[0705] Quando o usuário liga o botão de energia do circuito de suprimento de energia ex461, o smartphone ex115 é ligado para um estado operacional, e cada componente é suprido com energia de um pacote de bateria.
[0706] O smartphone ex115 executa processamento para, por exemplo, transmissão de chamada e dados, com base no controle executadas pelo controlador principal ex460, o qual inclui uma CPU, ROM, e RAM. Quando fazendo chamadas, um sinal de áudio gravado por unidade de entrada de áudio ex456 é convertido em um sinal de áudio digital pelo processador de sinal de áudio ex454, ao qual um processamento de espectro expandido é aplicado pelo modulador/demodulador ex452 e conversão digital-analógica e processamento de conversão de frequência é aplicado pelo transmissor/receptor ex451, e o sinal resultante é transmitido através da antena ex450. Os dados recebidos são amplificados, convertidos em frequência, e convertidos analógico-digital, processados em espectro expandido inverso pelo modulador/demodulador ex452, convertido em um sinal de áudio analógico pelo processador de sinal de áudio ex454, e então emitido da unidade de saída de áudio ex457. No modo de transmissão de dados, texto, imagem estática ou dados vídeo podem ser transmitidos sob controle do controlador principal ex460 através do controlador de entrada de interface do usuário ex462 com base na operação da interface de usuário ex466 do corpo principal, por exemplo.
Um processamento de transmissão e recepção similar é executado.
No modo de transmissão de dados, quando o enviando um vídeo, imagem estática, ou vídeo e áudio, o processador de sinal de vídeo ex455 codifica por compressão, através do método de codificação de imagem móvel descrito nas modalidades acima, um sinal de vídeo armazenado na memória ex467 ou um sinal de vídeo inserido da câmera ex465 e transmite os dados de vídeo codificados para o multiplexador/demultiplexador ex453. O processador de sinal de áudio ex454 codifica um sinal de áudio gravado pela unidade de entrada de áudio ex456 enquanto a câmera ex465 está capturando um vídeo ou imagem estática, e transmite os dados de áudio codificados para o multiplexador/demultiplexador ex453. O multiplexador/demultiplexador ex453 multiplexa os dados de vídeo codificados e dados de áudio codificados utilizando um esquema determinado, modula e converte os dados utilizando o modulador/demodulador (circuito de modulador/demodulador) ex452 e transmissor/receptor ex451, e transmite o resultado através da antena ex450. O esquema determinado pode ser predeterminado.
[0707] Quando um vídeo anexado a um e-mail ou chat, ou um vídeo conectado de uma webpage, é recebido, por exemplo, de modo a decodificar os dados multiplexados recebidos através da antena ex450, o multiplexador/demultiplexador ex453 demultiplexa os dados multiplexados para dividir os dados multiplexados em um fluxo de bits de dados de vídeo e um fluxo de bits de dados de áudio, supre os dados de vídeo codificados para o processador de sinal de vídeo ex455 através do barramento síncrono ex470, e supre os dados de áudio codificados para o processador de sinal de áudio ex454 através do barramento síncrono ex470. O processador de sinal de vídeo ex455 decodifica o sinal de vídeo utilizando um método de decodificação de imagem móvel que corresponde ao método de codificação de imagem móvel descrito nas modalidades acima, e o vídeo ou uma imagem estática incluído no arquivo de imagem móvel conectado é exibido no display ex458 através do controlador de display ex459. O processador de sinal de áudio ex454 decodifica o sinal de áudio e emite áudio da unidade de saída de áudio ex457. Como o fluxo em tempo real está se tornando crescentemente popular, pode existir casos nos quais a reprodução do áudio pode ser socialmente inadequada, dependendo do ambiente do usuário. Consequentemente, como um valor inicial, uma configuração na qual somente os dados de vídeo são reproduzidos, isto é, o sinal de áudio não é reproduzido, pode ser preferível; o áudio pode ser sincronizado e reproduzido somente quando uma entrada, tal como quando o usuário clica os dados de vídeo, é recebida.
[0708] Apesar do smartphone ex115 ter sido utilizado no exemplo acima, outras implementações são concebíveis: um terminal de transceptor que inclui tanto um codificador quanto um decodificador; um terminal transmissor que inclui somente um codificador; e um terminal receptor que inclui somente um decodificador. Na descrição do sistema de transmissão digital, um exemplo é dado no qual dados multiplexados obtidos como um resultado de dados de vídeo sendo multiplexados com dados de áudio são recebidos ou transmitidos. Os dados multiplexados, no entanto, podem ser dados de vídeo multiplexados com dados outros do que dados de áudio, tal como dados de texto relativos ao vídeo. Ainda, os próprios dados de vídeo ao invés de dados multiplexados podem ser recebidos ou transmitidos.
[0709] Apesar do controlador principal ex460 que inclui uma CPU ser descrito como controlando os processos de codificação ou decodificação, vários terminais frequentemente incluem GPUs. Consequentemente, uma configuração é aceitável na qual uma grande área é processada de uma vez, fazendo uso da capacidade de desempenho da GPU através de memória compartilhada pela CPU e GPU, ou memória que inclui um endereço que é gerenciado de modo a permitir uma utilização comum pela CPU e GPU. Isto torna possível encurtar o tempo de codificação, manter a natureza em tempo real do fluxo e reduzir o retardo. Especificamente, o processamento relativo à estimativa de movimento, filtragem de desbloqueio, deslocamento adaptável de amostra (SAO) e transformação/quantização pode ser efetivamente executado pela GPU ao invés da CPU em unidades de imagens, por exemplo, todos de uma vez. Aplicabilidade Industrial
[0710] A presente descrição é aplicável a, por exemplo, receptores de televisão, gravadores de vídeo digital, sistemas de navegação de carros, telefones móveis, câmeras digitais, câmeras de vídeo digitais, sistemas de teleconferência, espelhos eletrônicos, etc.
LISTA DE SÍMBOLOS DE REFERÊNCIA 100 codificador 102 divisor 104 subtrator
106 transformador 108 quantizador 110 codificador de entropia 112, 204 quantizador inverso 114, 206 transformador inverso 116, 208 somador 118, 210 memória de blocos 120, 212 filtro de loop 122, 214 memória de quadros 124, 216 intrapreditor 126, 218 interpreditor 128, 220 controlador de predição 200 decodificador 202 decodificador de entropia 1201 determinador de limite 1202, 1204, 1206 comutador 1203 determinador de filtro 1205 executor de filtragem 1207 determinador de característica de filtro 1208 determinador de processamento a1, b1 processador a2, b2 memória
Claims (22)
1. Codificador, caracterizado pelo fato de que compreende: um circuito; e uma memória acoplada no circuito, em que para cada coeficiente, de uma pluralidade de coeficientes incluída em um bloco, o circuito, em operação: determinar um nível de base relativo a Codificação Aritmética Binária Adaptável Com Base em Contexto (CABAC) para o coeficiente; e codificar um valor absoluto do coeficiente, em que na determinação do nível de base, quando um ou mais sinalizadores são utilizados na codificação do valor absoluto do coeficiente, o nível de base é determinado ser um primeiro valor, e quando um ou mais sinalizadores não são utilizados na codificação do valor absoluto do coeficiente, o nível de base é determinado ser um segundo valor, o segundo valor sendo menor do que o primeiro valor, na codificação do valor absoluto do coeficiente, quando um ou mais sinalizadores não são utilizados, um parâmetro de Rice é determinado com base no nível de base o qual é igual ao segundo valor, e o coeficiente é binarizado utilizando o parâmetro de Rice.
2. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que se utilizar um sinalizador dos um ou mais sinalizadores é determinado com base em uma primeira condição e uma segunda condição, em que a primeira condição está baseada no valor absoluto do coeficiente, e a segunda condição é para limitar um número total de sinalizadores utilizados no bloco.
3. Codificador, de acordo com a reivindicação 2, caracterizado pelo fato de que na codificação do valor absoluto, o circuito, cada vez que o sinalizador é codificado, conta um número total dos sinalizadores codificados, e quando a segunda condição não é satisfeita determina que o sinalizador não deve ser utilizado na codificação do coeficiente, mesmo quando a primeira condição é satisfeita, e a segunda condição é que um número total dos sinalizadores codificados é menor do que um limite.
4. Codificador, de acordo com a reivindicação 2, caracterizado pelo fato de que a primeira condição é uma de uma condição que o valor absoluto do coeficiente não é um terceiro valor e uma condição que o valor absoluto do coeficiente é maior do que um quarto valor, o quarto valor sendo maior do que o terceiro valor.
5. Codificador, de acordo com a reivindicação 3, caracterizado pelo fato de que o primeiro valor é zero, e o segundo valor é três.
6. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais sinalizadores incluem sinalizadores de tipos mutuamente diferentes.
7. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito, na determinação do parâmetro de Rice de um primeiro coeficiente no bloco, utiliza segundo a sexto coeficientes no bloco, o segundo até o sexto coeficientes sendo localizados ao redor do primeiro coeficiente.
8. Codificador, caracterizado pelo fato de que compreende:
uma memória; e um processador acoplado na memória e configurado para executar Codificação Aritmética Binária Adaptável Com Base em Contexto (CABAC) do padrão H.266/VVC (Codificação de Vídeo Versátil), em que a CABAC inclui: obter um nível de base que corresponde a um primeiro coeficiente quantizado em um bloco; calcular valores absolutos de segundo até sexto coeficientes quantizados no bloco, o segundo até sexto coeficientes quantizados sendo providos ao redor do primeiro coeficiente quantizado no bloco; calcular um parâmetro de Rice com base no nível de base e nos valores absolutos; e binarizar o primeiro coeficiente quantizado com base no parâmetro de Rice.
9. Codificador, de acordo com a reivindicação 8, caracterizado pelo fato de que o processador está configurado para calcular o parâmetro de Rice com base em uma diferença entre cada um dos valores absolutos e o nível de base.
10. Decodificador, caracterizado pelo fato de que compreende: um circuito; e uma memória acoplada no circuito, em que para cada coeficiente de uma pluralidade de coeficientes incluída em um bloco, o circuito, em operação: determina um nível de base relativo a Codificação Aritmética Binária Adaptável Com Base em Contexto (CABAC) para o coeficiente; e decodifica um valor absoluto do coeficiente, em que na determinação do nível de base,
quando um ou mais sinalizadores são utilizados na decodificação do valor absoluto do coeficiente, o nível de base é determinado ser um primeiro valor, e quando um ou mais sinalizadores não são utilizados na decodificação do valor absoluto do coeficiente, o nível de base é determinado ser um segundo valor, o segundo valor sendo menor do que o primeiro valor, na decodificação do valor absoluto do coeficiente, quando um ou mais sinalizadores não são utilizados, um parâmetro de Rice é determinado com base no nível de base o qual é igual ao segundo valor, e o coeficiente é debinarizado utilizando o parâmetro de Rice.
11. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de que quando cada coeficiente da pluralidade de coeficientes incluída no bloco é codificado se utilizar um sinalizador de um ou mais sinalizadores é determinado com base em uma primeira condição é uma segunda condição, em que a primeira condição está baseada no valor absoluto do coeficiente, a segunda condição é para limitar um número total de sinalizadores utilizados no bloco.
12. Decodificador, de acordo com a reivindicação 11, caracterizado pelo fato de que na decodificação do valor absoluto, o circuito, cada vez que o sinalizador é decodificado conta um número total dos sinalizadores decodificados, e quando cada coeficiente da pluralidade de coeficientes incluída no bloco é codificado, quando a segunda condição não é satisfeita determina que o sinalizador não deve ser utilizado na codificação do coeficiente,
mesmo quando a primeira condição é satisfeita, e a segunda condição é que um número total dos sinalizadores codificados é menor do que um limite.
13. Decodificador, de acordo com a reivindicação 11, caracterizado pelo fato de que a primeira condição é uma de uma condição que o valor absoluto do coeficiente não é um terceiro valor e uma condição que o valor absoluto do coeficiente é maior do que um quarto valor, o quarto valor sendo maior do que o terceiro valor.
14. Decodificador, de acordo com a reivindicação 12, caracterizado pelo fato de que o primeiro valor é zero, e o segundo valor é três.
15. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de que os um ou mais sinalizadores incluem sinalizadores de tipos mutuamente diferentes.
16. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de que o circuito, na determinação do parâmetro de Rice de um primeiro coeficiente no bloco, utiliza segundo a sexto coeficientes no bloco, o segundo até o sexto coeficientes sendo localizados ao redor do primeiro coeficiente.
17. Decodificador, caracterizado pelo fato de que compreende: uma memória; e um processador acoplado na memória e configurado para executar decodificação por Codificação Aritmética Binária Adaptável Com Base em Contexto (CABAC) do padrão H.266/VVC (Codificação de Vídeo Versátil), em que a decodificação pela CABAC inclui: obter um nível de base que corresponde a um primeiro coeficiente quantizado em um bloco; calcular valores absolutos de segundo até sexto coeficientes quantizados no bloco, o segundo até sexto coeficientes quantizados sendo providos ao redor do primeiro coeficiente quantizado no bloco; calcular um parâmetro de Rice com base no nível de base e nos valores absolutos; e debinarizar o primeiro coeficiente quantizado com base no parâmetro de Rice.
18. Decodificador, de acordo com a reivindicação 17, caracterizado pelo fato de que o processador está configurado para calcular o parâmetro de Rice com base em uma diferença entre cada um dos valores absolutos e o nível de base.
19. Método de codificação, caracterizado pelo fato de que compreende: para cada coeficiente de uma da pluralidade de coeficientes incluída em um bloco, determinar um nível de base relativo a Codificação Aritmética Binária Adaptável com Base em Contexto (CABAC) para o coeficiente; e codificar um valor absoluto do coeficiente, em que na determinação, quando um ou mais sinalizadores são utilizados na codificação, o nível de base é determinado ser um primeiro valor, e quando um ou mais sinalizadores não são utilizados na codificação, o nível de base é determinado ser um segundo valor, o segundo valor sendo menor do que o primeiro valor, na codificação do valor absoluto do coeficiente, quando um ou mais sinalizadores não são utilizados, um parâmetro de Rice é determinado com base no nível de base o qual é igual ao segundo valor, e o coeficiente é binarizado utilizando o parâmetro de Rice.
20. Método de codificação, caracterizado pelo fato de que compreende:
executar Codificação Aritmética Binária Adaptável com Base em Contexto (CABAC) do padrão H.266/VVC (Codificação de Vídeo Versátil), em que a execução da CABAC inclui: obter um nível de base que corresponde a um primeiro coeficiente quantizado em um bloco; calcular valores absolutos de segundo até sexto coeficientes quantizados no bloco, o segundo até sexto coeficientes quantizados sendo providos ao redor do primeiro coeficiente quantizado no bloco; calcular um parâmetro de Rice com base no nível de base e nos valores absolutos; e binarizar o primeiro coeficiente quantizado com base no parâmetro de Rice.
21. Método de decodificação, caracterizado pelo fato de quecompreende: para cada coeficiente de uma da pluralidade de coeficientes incluída no bloco, determinar um nível de base relativo a Codificação Aritmética Binária Adaptável com Base em Contexto (CABAC) para o coeficiente; e decodificar um valor absoluto do coeficiente, em que na determinação, quando um ou mais sinalizadores são utilizados na decodificação, o nível de base é determinado ser um primeiro valor, e quando um ou mais sinalizadores não são utilizados na decodificação, o nível de base é determinado ser um segundo valor, o segundo valor sendo menor do que o primeiro valor, na decodificação, quando um ou mais sinalizadores não são utilizados, um parâmetro de Rice é determinado com base no nível de base o qual é igual ao segundo valor, e o coeficiente é debinarizado utilizando o parâmetro de Rice.
22. Método de decodificação, caracterizado pelo fato de que compreende: decodificar por Codificação Aritmética Binária Adaptável com Base em Contexto (CABAC) do padrão H.266/VVC (Codificação de Vídeo Versátil), em que a decodificação pela CABAC inclui: obter um nível de base que corresponde a um primeiro coeficiente quantizado em um bloco; calcular valores absolutos de segundo até sexto coeficientes quantizados no bloco, o segundo até sexto coeficientes quantizados sendo providos ao redor do primeiro coeficiente quantizado no bloco; calcular um parâmetro de Rice com base no nível de base e nos valores absolutos; e debinarizar o primeiro coeficiente quantizado com base no parâmetro de Rice.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862738399P | 2018-09-28 | 2018-09-28 | |
US62/738399 | 2018-09-28 | ||
PCT/JP2019/037618 WO2020067167A1 (ja) | 2018-09-28 | 2019-09-25 | 符号化装置、復号装置、符号化方法、および復号方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021004822A2 true BR112021004822A2 (pt) | 2021-06-01 |
Family
ID=69953516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021004822-7A BR112021004822A2 (pt) | 2018-09-28 | 2019-09-25 | codificador, decodificador, método de codificação e método de decodificação |
Country Status (9)
Country | Link |
---|---|
US (4) | US11425385B2 (pt) |
EP (1) | EP3860126A4 (pt) |
JP (2) | JP7239600B2 (pt) |
KR (2) | KR102568801B1 (pt) |
CN (6) | CN118075467A (pt) |
BR (1) | BR112021004822A2 (pt) |
MX (5) | MX2021002514A (pt) |
TW (2) | TWI826541B (pt) |
WO (1) | WO2020067167A1 (pt) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118075467A (zh) * | 2018-09-28 | 2024-05-24 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、以及非暂时性的计算机可读取的记录介质 |
CN112118456B (zh) * | 2019-06-20 | 2022-03-25 | 腾讯美国有限责任公司 | 莱斯参数选择方法、装置、计算机设备及存储介质 |
WO2021040492A1 (ko) * | 2019-08-31 | 2021-03-04 | 엘지전자 주식회사 | 비디오/영상 코딩 시스템에서 변환 계수 코딩 방법 및 장치 |
US20240080480A1 (en) * | 2019-10-07 | 2024-03-07 | Lg Electronics Inc. | Entropy coding method and device in video/image coding system |
GB2596100A (en) | 2020-06-17 | 2021-12-22 | Sony Group Corp | Data encoding and decoding |
US20220215265A1 (en) * | 2021-01-04 | 2022-07-07 | Tencent America LLC | Method and apparatus for end-to-end task-oriented latent compression with deep reinforcement learning |
US11736702B2 (en) * | 2021-03-11 | 2023-08-22 | Qualcomm Incorporated | Rice parameter derivation for high bit-depth video coding |
CN118435594A (zh) * | 2021-09-30 | 2024-08-02 | 抖音视界有限公司 | 点云编解码的方法、装置和介质 |
US12026919B2 (en) * | 2021-12-22 | 2024-07-02 | Red Hat, Inc. | Content-based encoding of digital images |
US20240146902A1 (en) * | 2022-10-26 | 2024-05-02 | Tencent America LLC | Context Design for Coding and Decoding Syntax Elements in Inter Prediction Modes |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3959039B2 (ja) * | 2003-02-28 | 2007-08-15 | 株式会社エヌ・ティ・ティ・ドコモ | 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法、及び画像復号プログラム |
KR101647376B1 (ko) * | 2009-03-30 | 2016-08-10 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
EP2680580B1 (en) * | 2012-06-28 | 2016-06-01 | BlackBerry Limited | Reduced worst-case context-coded bins in video compression with parity hiding |
US10021419B2 (en) * | 2013-07-12 | 2018-07-10 | Qualcomm Incorported | Rice parameter initialization for coefficient level coding in video coding process |
US10334248B2 (en) * | 2015-05-29 | 2019-06-25 | Qualcomm Incorporated | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design |
US10616604B2 (en) * | 2015-09-01 | 2020-04-07 | Qualcomm Incorporated | Coefficient level coding in video coding |
JP2020072277A (ja) * | 2017-03-03 | 2020-05-07 | シャープ株式会社 | 動画像符号化装置及び動画像復号装置 |
US11336918B2 (en) * | 2018-09-05 | 2022-05-17 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
CN118075467A (zh) * | 2018-09-28 | 2024-05-24 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、以及非暂时性的计算机可读取的记录介质 |
-
2019
- 2019-09-25 CN CN202410305259.0A patent/CN118075467A/zh active Pending
- 2019-09-25 BR BR112021004822-7A patent/BR112021004822A2/pt unknown
- 2019-09-25 KR KR1020217008092A patent/KR102568801B1/ko active IP Right Grant
- 2019-09-25 WO PCT/JP2019/037618 patent/WO2020067167A1/ja unknown
- 2019-09-25 EP EP19867269.3A patent/EP3860126A4/en active Pending
- 2019-09-25 CN CN202410305263.7A patent/CN118075469A/zh active Pending
- 2019-09-25 CN CN202410305255.2A patent/CN118075466A/zh active Pending
- 2019-09-25 KR KR1020237027349A patent/KR20230125331A/ko not_active Application Discontinuation
- 2019-09-25 MX MX2021002514A patent/MX2021002514A/es unknown
- 2019-09-25 JP JP2020549291A patent/JP7239600B2/ja active Active
- 2019-09-25 CN CN202410305260.3A patent/CN118075468A/zh active Pending
- 2019-09-25 CN CN201980061946.XA patent/CN112753221B/zh active Active
- 2019-09-25 CN CN202410305253.3A patent/CN118075465A/zh active Pending
- 2019-09-26 TW TW108134859A patent/TWI826541B/zh active
- 2019-09-26 TW TW112147902A patent/TW202415076A/zh unknown
-
2021
- 2021-02-10 US US17/173,024 patent/US11425385B2/en active Active
- 2021-03-03 MX MX2024002564A patent/MX2024002564A/es unknown
- 2021-03-03 MX MX2024002565A patent/MX2024002565A/es unknown
- 2021-03-03 MX MX2024002563A patent/MX2024002563A/es unknown
- 2021-03-03 MX MX2024002562A patent/MX2024002562A/es unknown
-
2022
- 2022-07-14 US US17/865,119 patent/US11546598B2/en active Active
- 2022-12-06 US US18/062,335 patent/US11956434B2/en active Active
-
2023
- 2023-03-02 JP JP2023031600A patent/JP2023060080A/ja active Pending
-
2024
- 2024-02-26 US US18/587,635 patent/US20240195976A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN112753221A (zh) | 2021-05-04 |
CN118075467A (zh) | 2024-05-24 |
JP7239600B2 (ja) | 2023-03-14 |
TW202025783A (zh) | 2020-07-01 |
US20210195197A1 (en) | 2021-06-24 |
US20220368913A1 (en) | 2022-11-17 |
EP3860126A1 (en) | 2021-08-04 |
JPWO2020067167A1 (ja) | 2021-09-09 |
MX2024002562A (es) | 2024-03-20 |
CN118075465A (zh) | 2024-05-24 |
MX2024002565A (es) | 2024-03-20 |
KR20210044858A (ko) | 2021-04-23 |
KR20230125331A (ko) | 2023-08-29 |
JP2023060080A (ja) | 2023-04-27 |
US11546598B2 (en) | 2023-01-03 |
CN112753221B (zh) | 2024-04-05 |
CN118075469A (zh) | 2024-05-24 |
US20240195976A1 (en) | 2024-06-13 |
EP3860126A4 (en) | 2022-03-23 |
US20230095404A1 (en) | 2023-03-30 |
US11956434B2 (en) | 2024-04-09 |
WO2020067167A1 (ja) | 2020-04-02 |
MX2024002564A (es) | 2024-03-20 |
CN118075466A (zh) | 2024-05-24 |
MX2024002563A (es) | 2024-03-20 |
US11425385B2 (en) | 2022-08-23 |
KR102568801B1 (ko) | 2023-08-21 |
MX2021002514A (es) | 2021-04-28 |
TW202415076A (zh) | 2024-04-01 |
TWI826541B (zh) | 2023-12-21 |
CN118075468A (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11876992B2 (en) | Image decoder and decoding method | |
BR112021004822A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
BR112020026686A2 (pt) | Sistema e método para codificação de vídeo | |
BR112020022773A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
BR112021014711A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR112020025664A2 (pt) | dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação | |
US20200404272A1 (en) | Encoder, decoder, encoding method, and decoding method | |
BR112020000876A2 (pt) | dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação | |
AU2020259889A1 (en) | Encoding device, decoding device, encoding method, and decoding method | |
BR112020001579A2 (pt) | codificador, decodificador, método de codificação, método de decodificação | |
US20210037243A1 (en) | Encoder, decoder, encoding method, and decoding method | |
US10939114B2 (en) | Encoder, decoder, encoding method, and decoding method | |
BR112021009596A2 (pt) | codificador, decodificador, método de codificação, e método de decodificação | |
BR112021005443A2 (pt) | codificador, decodificador, método de codificação, e método de decodificação | |
BR112020021718A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
US20240073441A1 (en) | Encoder, decoder, encoding method, and decoding method | |
BR112021001245A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
BR112021011019A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR112021001890A2 (pt) | codificador, decodificador, método de codificação e método de decodificação | |
BR112021012769A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR122021025014A2 (pt) | Codificador, decodificador e mídia legível por computador não transitória | |
US11936893B2 (en) | Encoder, decoder, encoding method, and decoding method | |
BR122023027440A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR122023027387A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação | |
BR122023027369A2 (pt) | Codificador, decodificador, método de codificação e método de decodificação |